From: marko.makela Date: February 8 2011 10:56am Subject: bzr commit into mysql-5.1-innodb branch (marko.makela:3704) Bug#55284 List-Archive: http://lists.mysql.com/commits/130697 X-Bug: 55284 Message-Id: <201102081106.p18B6m13028570@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1381003334==" --===============1381003334== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjEtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6 emh2OHVjZXYycXEKCiAzNzA0IE1hcmtvIE3DpGtlbMOkCTIwMTEtMDItMDgKICAgICAgSW1wbGVt ZW50IFVOSVZfQkxPQl9ERUJVRy4gQW4gZWFybHkgdmVyc2lvbiBvZiB0aGlzIGNhdWdodCBCdWcg IzU1Mjg0LgogICAgICAKICAgICAgVGhpcyBvcHRpb24gaXMga25vd24gdG8gYmUgYnJva2VuIHdo ZW4gdGFibGVzcGFjZXMgY29udGFpbiBvZmYtcGFnZQogICAgICBjb2x1bW5zIGFmdGVyIGNyYXNo IHJlY292ZXJ5LiBJdCBoYXMgb25seSBiZWVuIHRlc3RlZCB3aGVuIGNyZWF0aW5nCiAgICAgIHRo ZSBkYXRhIGZpbGVzIGZyb20gdGhlIHNjcmF0Y2guCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdf dDogQSBtYXAgZnJvbSBwYWdlX25vOmhlYXBfbm86ZmllbGRfbm8gdG8gZmlyc3RfYmxvYl9wYWdl X25vLgogICAgICBUaGlzIG1hcCBpcyBpbnN0YW50aWF0ZWQgZm9yIGV2ZXJ5IGNsdXN0ZXJlZCBp bmRleCBpbiBpbmRleC0+YmxvYnMuCiAgICAgIEl0IGlzIHByb3RlY3RlZCBieSBpbmRleC0+Ymxv YnNfbXV0ZXguCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfbXNnX2lzc3VlKCk6IElzc3VlIGEg ZGlhZ25vc3RpYyBtZXNzYWdlLgogICAgICBJbnZva2VkIHdoZW4gYnRyX2Jsb2JfZGJnX21zZyBp cyBzZXQuCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfcmJ0X2luc2VydCgpOiBJbnNlcnQgYSBi dHJfYmxvYl9kYmdfdCBpbnRvIGluZGV4LT5ibG9icy4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2Ri Z19yYnRfZGVsZXRlKCk6IFJlbW92ZSBhIGJ0cl9ibG9iX2RiZ190IGZyb20gaW5kZXgtPmJsb2Jz LgogICAgICAKICAgICAgYnRyX2Jsb2JfZGJnX2NtcCgpOiBDb21wYXJhdG9yIGZvciBidHJfYmxv Yl9kYmdfdC4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2RiZ19hZGRfYmxvYigpOiBBZGQgYSBCTE9C IHJlZmVyZW5jZSB0byB0aGUgbWFwLgogICAgICAKICAgICAgYnRyX2Jsb2JfZGJnX2FkZF9yZWMo KTogQWRkIGFsbCBCTE9CIHJlZmVyZW5jZXMgZnJvbSBhIHJlY29yZCB0byB0aGUgbWFwLgogICAg ICAKICAgICAgYnRyX2Jsb2JfZGJnX3ByaW50KCk6IERpc3BsYXkgdGhlIG1hcCBvZiBCTE9CIHJl ZmVyZW5jZXMgaW4gYW4gaW5kZXguCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfcmVtb3ZlX3Jl YygpOiBSZW1vdmUgYWxsIEJMT0IgcmVmZXJlbmNlcyBvZiBhIHJlY29yZCBmcm9tCiAgICAgIHRo ZSBtYXAuCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfaXNfZW1wdHkoKTogQ2hlY2sgdGhhdCBu byBCTE9CIHJlZmVyZW5jZXMgZXhpc3QgdG8gb3IKICAgICAgZnJvbSBhIHBhZ2UuIERpc293bmVk IHJlZmVyZW5jZXMgZnJvbSBkZWxldGUtbWFya2VkIHJlY29yZHMgYXJlCiAgICAgIHRvbGVyYXRl ZC4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2RiZ19vcCgpOiBQZXJmb3JtIGFuIG9wZXJhdGlvbiBv biBhbGwgQkxPQiByZWZlcmVuY2VzIG9uIGEKICAgICAgQi10cmVlIHBhZ2UuCiAgICAgIAogICAg ICBidHJfYmxvYl9kYmdfYWRkKCk6IEFkZCBhbGwgQkxPQiByZWZlcmVuY2VzIGZyb20gYSBCLXRy ZWUgcGFnZSB0byB0aGUKICAgICAgbWFwLgogICAgICAKICAgICAgYnRyX2Jsb2JfZGJnX3JlbW92 ZSgpOiBSZW1vdmUgYWxsIEJMT0IgcmVmZXJlbmNlcyBmcm9tIGEgQi10cmVlIHBhZ2UKICAgICAg ZnJvbSB0aGUgbWFwLgogICAgICAKICAgICAgYnRyX2Jsb2JfZGJnX3Jlc3RvcmUoKTogUmVzdG9y ZSB0aGUgQkxPQiByZWZlcmVuY2VzIGFmdGVyIGEgZmFpbGVkCiAgICAgIHBhZ2UgcmVvcmdhbml6 ZS4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKCk6IE1vZGlmeSB0 aGUgJ2RlbGV0ZWQnIGZsYWcgaW4gdGhlIEJMT0IKICAgICAgcmVmZXJlbmNlcyBvZiBhIHJlY29y ZC4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2RiZ19vd25lcigpOiBPd24gb3IgZGlzb3duIGEgQkxP QiByZWZlcmVuY2UuCiAgICAgIAogICAgICBidHJfcGFnZV9jcmVhdGUoKSwgYnRyX3BhZ2VfZnJl ZV9sb3coKTogQXNzZXJ0IHRoYXQgbm8gQkxPQiByZWZlcmVuY2VzIGV4aXN0LgogICAgICAKICAg ICAgYnRyX2NyZWF0ZSgpOiBDcmVhdGUgaW5kZXgtPmJsb2JzIGZvciBjbHVzdGVyZWQgaW5kZXhl cy4KICAgICAgCiAgICAgIGJ0cl9wYWdlX3Jlb3JnYW5pemVfbG93KCk6IEludm9rZSBidHJfYmxv Yl9kYmdfcmVtb3ZlKCkgYmVmb3JlIGNvcHlpbmcKICAgICAgdGhlIHJlY29yZHMuIEludm9rZSBi dHJfYmxvYl9kYmdfcmVzdG9yZSgpIGlmIHRoZSBvcGVyYXRpb24gZmFpbHMuCiAgICAgIAogICAg ICBidHJfcGFnZV9lbXB0eSgpLCBidHJfbGlmdF9wYWdlX3VwKCksIGJ0cl9jb21wcmVzcygpLCBi dHJfZGlzY2FyZF9wYWdlKCk6CiAgICAgIEludm9rZSBidHJfYmxvYl9kYmdfcmVtb3ZlKCkuCiAg ICAgIAogICAgICBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoKTogSW52b2tlIGJ0cl9i bG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKCkuCiAgICAgIAogICAgICBPdGhlciBjYXNlcyBvZiBt b2RpZnlpbmcgdGhlIGRlbGV0ZSBtYXJrIGFyZSBlaXRoZXIgaW4gdGhlIHNlY29uZGFyeQogICAg ICBpbmRleCBvciBkdXJpbmcgY3Jhc2ggcmVjb3ZlcnksIHdoaWNoIHdlIGRvIG5vdCBwcm9taXNl IHRvIHN1cHBvcnQuCiAgICAgIAogICAgICBidHJfY3VyX3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJu X2ZpZWxkKCk6IEludm9rZSBidHJfYmxvYl9kYmdfb3duZXIoKS4KICAgICAgCiAgICAgIGJ0cl9z dG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoKTogSW52b2tlIGJ0cl9ibG9iX2RiZ19hZGRfYmxv YigpLgogICAgICAKICAgICAgYnRyX2ZyZWVfZXh0ZXJuYWxseV9zdG9yZWRfZmllbGQoKTogSW52 b2tlIGJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHkoKQogICAgICBvbiB0aGUgZmlyc3QgQkxPQiBw YWdlLgogICAgICAKICAgICAgcGFnZV9jdXJfaW5zZXJ0X3JlY19sb3coKSwgcGFnZV9jdXJfaW5z ZXJ0X3JlY196aXAoKSwKICAgICAgcGFnZV9jb3B5X3JlY19saXN0X2VuZF90b19jcmVhdGVkX3Bh Z2UoKTogSW52b2tlIGJ0cl9ibG9iX2RiZ19hZGRfcmVjKCkuCiAgICAgIAogICAgICBwYWdlX2N1 cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygpLCBwYWdlX2NvcHlfcmVjX2xpc3RfZW5kKCksCiAgICAg IHBhZ2VfY29weV9yZWNfbGlzdF9zdGFydCgpOiBBZnRlciBmYWlsdXJlLCBpbnZva2UKICAgICAg YnRyX2Jsb2JfZGJnX3JlbW92ZSgpIGFuZCBidHJfYmxvYl9kYmdfYWRkKCkuCiAgICAgIAogICAg ICBwYWdlX2N1cl9kZWxldGVfcmVjKCk6IEludm9rZSBidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygp LgogICAgICAKICAgICAgcGFnZV9kZWxldGVfcmVjX2xpc3RfZW5kKCk6IEludm9rZSBidHJfYmxv Yl9kYmdfb3AoYnRyX2Jsb2JfZGJnX3JlbW92ZV9yZWMpLgogICAgICAKICAgICAgcGFnZV96aXBf cmVvcmdhbml6ZSgpOiBJbnZva2UgYnRyX2Jsb2JfZGJnX3JlbW92ZSgpIGJlZm9yZSBjb3B5aW5n IHRoZSByZWNvcmRzLgogICAgICAKICAgICAgcGFnZV96aXBfY29weV9yZWNzKCk6IEludm9rZSBi dHJfYmxvYl9kYmdfYWRkKCkuCiAgICAgIAogICAgICByb3dfdXBkX3JlY19pbl9wbGFjZSgpOiBJ bnZva2UgYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoKSBhbmQKICAgICAgYnRyX2Jsb2JfZGJnX3Ji dF9pbnNlcnQoKS4KICAgICAgCiAgICAgIGlubm9iYXNlX3N0YXJ0X29yX2NyZWF0ZV9mb3JfbXlz cWwoKTogV2FybiB3aGVuIFVOSVZfQkxPQl9ERUJVRyBpcyBlbmFibGVkLgogICAgICAKICAgICAg cmI6Ly81NTAgYXBwcm92ZWQgYnkgSmltbXkgWWFuZwoKICAgIG1vZGlmaWVkOgogICAgICBzdG9y YWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBidHIuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVn aW4vYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vZGljdC9kaWN0MG1l bS5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBidHIuaAogICAgICBz dG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwdHlwZXMuaAogICAgICBzdG9yYWdlL2lu bm9kYl9wbHVnaW4vaW5jbHVkZS9kaWN0MG1lbS5oCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdp bi9pbmNsdWRlL3BhZ2UwemlwLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUv dW5pdi5pCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9wYWdlL3BhZ2UwY3VyLmMKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL3BhZ2UvcGFnZTBwYWdlLmMKICAgICAgc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3BhZ2UvcGFnZTB6aXAuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93 L3JvdzB1cGQuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vc3J2L3NydjBzdGFydC5jCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBidHIuYycKLS0t IGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwYnRyLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4enpodjh1Y2V2MnFxCisrKyBiL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9idHIvYnRyMGJ0ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTQyLDYgKzQyLDU2MCBAQCBDcmVh dGVkIDYvMi8xOTk0IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgImlidWYwaWJ1Zi5oIgogI2luY2x1 ZGUgInRyeDB0cnguaCIKIAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworIyBpbmNsdWRlICJzcnYw c3J2LmgiCisjIGluY2x1ZGUgInV0MHJidC5oIgorCisvKiogVFJVRSB3aGVuIG1lc3NhZ2VzIGFi b3V0IGluZGV4LT5ibG9icyBtb2RpZmljYXRpb24gYXJlIGVuYWJsZWQuICovCitzdGF0aWMgaWJv b2wgYnRyX2Jsb2JfZGJnX21zZzsKKworLyoqIElzc3VlIGEgbWVzc2FnZSBhYm91dCBhbiBvcGVy YXRpb24gb24gaW5kZXgtPmJsb2JzLgorQHBhcmFtIG9wCW9wZXJhdGlvbgorQHBhcmFtIGIJdGhl IGVudHJ5IGJlaW5nIHN1YmplY3RlZCB0byB0aGUgb3BlcmF0aW9uCitAcGFyYW0gY3R4CXRoZSBj b250ZXh0IG9mIHRoZSBvcGVyYXRpb24gKi8KKyNkZWZpbmUgYnRyX2Jsb2JfZGJnX21zZ19pc3N1 ZShvcCwgYiwgY3R4KQkJCVwKKwlmcHJpbnRmKHN0ZGVyciwgb3AgIiAldToldToldS0+JXUgJXMo JXUsJXUsJXUpXG4iLAlcCisJCShiKS0+cmVmX3BhZ2Vfbm8sIChiKS0+cmVmX2hlYXBfbm8sCQlc CisJCShiKS0+cmVmX2ZpZWxkX25vLCAoYiktPmJsb2JfcGFnZV9ubywgY3R4LAlcCisJCShiKS0+ b3duZXIsIChiKS0+YWx3YXlzX293bmVyLCAoYiktPmRlbCkKKworLyoqIEluc2VydCB0byBpbmRl eC0+YmxvYnMgYSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uLgorQHBhcmFtIGluZGV4 CXRoZSBpbmRleCB0cmVlCitAcGFyYW0gYgl0aGUgcmVmZXJlbmNlCitAcGFyYW0gY3R4CWNvbnRl eHQgKGZvciBsb2dnaW5nKSAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yYnRf aW5zZXJ0KAorLyo9PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KgkJaW5kZXgs CS8qITwgaW4vb3V0OiBpbmRleCB0cmVlICovCisJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWIsCS8q ITwgaW46IHRoZSByZWZlcmVuY2UgKi8KKwljb25zdCBjaGFyKgkJY3R4KQkvKiE8IGluOiBjb250 ZXh0IChmb3IgbG9nZ2luZykgKi8KK3sKKwlpZiAoYnRyX2Jsb2JfZGJnX21zZykgeworCQlidHJf YmxvYl9kYmdfbXNnX2lzc3VlKCJpbnNlcnQiLCBiLCBjdHgpOworCX0KKwltdXRleF9lbnRlcigm aW5kZXgtPmJsb2JzX211dGV4KTsKKwlyYnRfaW5zZXJ0KGluZGV4LT5ibG9icywgYiwgYik7CisJ bXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKworLyoqIFJlbW92ZSBmcm9tIGlu ZGV4LT5ibG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5k ZXgJdGhlIGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29u dGV4dCAoZm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3Ji dF9kZWxldGUoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRl eCwJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJ LyohPCBpbjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNv bnRleHQgKGZvciBsb2dnaW5nKSAqLworeworCWlmIChidHJfYmxvYl9kYmdfbXNnKSB7CisJCWJ0 cl9ibG9iX2RiZ19tc2dfaXNzdWUoImRlbGV0ZSIsIGIsIGN0eCk7CisJfQorCW11dGV4X2VudGVy KCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCXV0X2EocmJ0X2RlbGV0ZShpbmRleC0+YmxvYnMsIGIp KTsKKwltdXRleF9leGl0KCZpbmRleC0+YmxvYnNfbXV0ZXgpOworfQorCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitD b21wYXJhdG9yIGZvciBpdGVtcyAoYnRyX2Jsb2JfZGJnX3QpIGluIGluZGV4LT5ibG9icy4KK1Ro ZSBrZXkgaW4gaW5kZXgtPmJsb2JzIGlzIChyZWZfcGFnZV9ubywgcmVmX2hlYXBfbm8sIHJlZl9m aWVsZF9ubykuCitAcmV0dXJuIG5lZ2F0aXZlLCAwIG9yIHBvc2l0aXZlIGlmICphPCpiLCAqYT0q YiwgKmE+KmIgKi8KK3N0YXRpYworaW50CitidHJfYmxvYl9kYmdfY21wKAorLyo9PT09PT09PT09 PT09Ki8KKwljb25zdCB2b2lkKglhLAkvKiE8IGluOiBmaXJzdCBidHJfYmxvYl9kYmdfdCB0byBj b21wYXJlICovCisJY29uc3Qgdm9pZCoJYikJLyohPCBpbjogc2Vjb25kIGJ0cl9ibG9iX2RiZ190 IHRvIGNvbXBhcmUgKi8KK3sKKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYWEJPSBhOworCWNvbnN0 IGJ0cl9ibG9iX2RiZ190KgliYgk9IGI7CisKKwl1dF9hZChhYSAhPSBOVUxMKTsKKwl1dF9hZChi YiAhPSBOVUxMKTsKKworCWlmIChhYS0+cmVmX3BhZ2Vfbm8gIT0gYmItPnJlZl9wYWdlX25vKSB7 CisJCXJldHVybihhYS0+cmVmX3BhZ2Vfbm8gPCBiYi0+cmVmX3BhZ2Vfbm8gPyAtMSA6IDEpOwor CX0KKwlpZiAoYWEtPnJlZl9oZWFwX25vICE9IGJiLT5yZWZfaGVhcF9ubykgeworCQlyZXR1cm4o YWEtPnJlZl9oZWFwX25vIDwgYmItPnJlZl9oZWFwX25vID8gLTEgOiAxKTsKKwl9CisJaWYgKGFh LT5yZWZfZmllbGRfbm8gIT0gYmItPnJlZl9maWVsZF9ubykgeworCQlyZXR1cm4oYWEtPnJlZl9m aWVsZF9ubyA8IGJiLT5yZWZfZmllbGRfbm8gPyAtMSA6IDEpOworCX0KKwlyZXR1cm4oMCk7Cit9 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKK0FkZCBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8g dGhlIGluZGV4LT5ibG9icyBtYXAuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJn X2FkZF9ibG9iKAorLyo9PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkv KiE8IGluOiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8 IGluOiBvZmYtcGFnZSBjb2x1bW4gbnVtYmVyICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46 IHN0YXJ0IHBhZ2Ugb2YgdGhlIGNvbHVtbiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8 IGluL291dDogaW5kZXggdHJlZSAqLworCWNvbnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRl eHQgKGZvciBsb2dnaW5nKSAqLworeworCWJ0cl9ibG9iX2RiZ190CWI7CisJY29uc3QgcGFnZV90 KglwYWdlCT0gcGFnZV9hbGlnbihyZWMpOworCisJdXRfYShpbmRleC0+YmxvYnMpOworCisJYi5i bG9iX3BhZ2Vfbm8gPSBwYWdlX25vOworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25v KHBhZ2UpOworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIu cmVmX2ZpZWxkX25vID0gZmllbGRfbm87CisJdXRfYShiLnJlZl9maWVsZF9ubyA+PSBpbmRleC0+ bl91bmlxKTsKKwliLmFsd2F5c19vd25lciA9IGIub3duZXIgPSBUUlVFOworCWIuZGVsID0gRkFM U0U7CisJdXRfYSghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkp KTsKKwlidHJfYmxvYl9kYmdfcmJ0X2luc2VydChpbmRleCwgJmIsIGN0eCk7Cit9CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0FkZCB0byBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29s dW1ucyBmcm9tIGEgcmVjb3JkLgorQHJldHVybiBudW1iZXIgb2YgcmVmZXJlbmNlcyBhZGRlZCAq LworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfYWRkX3JlYygKKy8qPT09PT09PT09 PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3Rf aW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZz ZXRzLC8qITwgaW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRl eHQgKGZvciBsb2dnaW5nKSAqLworeworCXVsaW50CQljb3VudAk9IDA7CisJdWxpbnQJCWk7CisJ YnRyX2Jsb2JfZGJnX3QJYjsKKwlpYm9vbAkJZGVsOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRh dGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9m ZnNldHMpKSB7CisJCXJldHVybigwKTsKKwl9CisKKwliLnJlZl9wYWdlX25vID0gcGFnZV9nZXRf cGFnZV9ubyhwYWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRf aGVhcF9ubyhyZWMpOworCWRlbCA9IChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHJlY19vZmZz X2NvbXAob2Zmc2V0cykpICE9IDApOworCisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25fZmll bGRzKG9mZnNldHMpOyBpKyspIHsKKwkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywg aSkpIHsKKwkJCXVsaW50CQlsZW47CisJCQljb25zdCBieXRlKglmaWVsZF9yZWYgPSByZWNfZ2V0 X250aF9maWVsZCgKKwkJCQlyZWMsIG9mZnNldHMsIGksICZsZW4pOworCisJCQl1dF9hKGxlbiAh PSBVTklWX1NRTF9OVUxMKTsKKwkJCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJ WkUpOworCQkJZmllbGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisK KwkJCWlmICghbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJICAgIEJUUl9F WFRFUk5fRklFTERfUkVGX1NJWkUpKSB7CisJCQkJLyogdGhlIGNvbHVtbiBoYXMgbm90IGJlZW4g c3RvcmVkIHlldCAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQliLnJlZl9maWVsZF9ubyA9 IGk7CisJCQliLmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVm ICsgQlRSX0VYVEVSTl9QQUdFX05PKTsKKwkJCXV0X2EoYi5yZWZfZmllbGRfbm8gPj0gaW5kZXgt Pm5fdW5pcSk7CisJCQliLmFsd2F5c19vd25lciA9IGIub3duZXIKKwkJCQk9ICEoZmllbGRfcmVm W0JUUl9FWFRFUk5fTEVOXQorCQkJCSAgICAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRyk7CisJCQli LmRlbCA9IGRlbDsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCBjdHgp OworCQkJY291bnQrKzsKKwkJfQorCX0KKworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKK0Rpc3BsYXkgdGhlIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVu Y3Rpb24gaXMgdG8gYmUgY2FsbGVkIGZyb20gYSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4g YSBicmVha3BvaW50IG9uIHV0X2RiZ19hc3NlcnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZf SU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdfcHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJ Y29uc3QgZGljdF9pbmRleF90KglpbmRleCkJLyohPCBpbjogaW5kZXggdHJlZSAqLworeworCWNv bnN0IGliX3JidF9ub2RlX3QqCW5vZGU7CisKKwlpZiAoIWluZGV4LT5ibG9icykgeworCQlyZXR1 cm47CisJfQorCisJLyogV2UgaW50ZW50aW9uYWxseSBkbyBub3QgYWNxdWlyZSBpbmRleC0+Ymxv YnNfbXV0ZXggaGVyZS4KKwlUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZGVi dWdnZXIsIGFuZCB0aGUgY2FsbGVyCisJc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleC0+ YmxvYnNfbXV0ZXggaXMgaGVsZC4gKi8KKworCWZvciAobm9kZSA9IHJidF9maXJzdChpbmRleC0+ YmxvYnMpOworCSAgICAgbm9kZSAhPSBOVUxMOyBub2RlID0gcmJ0X25leHQoaW5kZXgtPmJsb2Jz LCBub2RlKSkgeworCQljb25zdCBidHJfYmxvYl9kYmdfdCoJYgorCQkJPSByYnRfdmFsdWUoYnRy X2Jsb2JfZGJnX3QsIG5vZGUpOworCQlmcHJpbnRmKHN0ZGVyciwgIiV1OiV1OiV1LT4ldSVzJXMl c1xuIiwKKwkJCWItPnJlZl9wYWdlX25vLCBiLT5yZWZfaGVhcF9ubywgYi0+cmVmX2ZpZWxkX25v LAorCQkJYi0+YmxvYl9wYWdlX25vLAorCQkJYi0+b3duZXIgPyAiIiA6ICIoZGlzb3duZWQpIiwK KwkJCWItPmFsd2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwKKwkJCWItPmRlbCA/ ICIoZGVsZXRlZCkiIDogIiIpOworCX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVtb3ZlIGZyb20gaW5k ZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJvbSBhIHJlY29y ZC4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4K K3VsaW50CitidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09PT09PT09PT0q LworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwg aW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworeworCXVsaW50CQlpOworCXVsaW50CQljb3VudAk9IDA7CisJYnRyX2Jsb2Jf ZGJnX3QJYjsKKworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMp KTsKKworCWlmICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgeworCQlyZXR1cm4oMCk7 CisJfQorCisJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMp KTsKKwliLnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKworCWZvciAo aSA9IDA7IGkgPCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmIChyZWNf b2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKSB7CisJCQl1bGludAkJbGVuOworCQkJY29uc3Qg Ynl0ZSoJZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCisJCQkJcmVjLCBvZmZzZXRzLCBp LCAmbGVuKTsKKworCQkJdXRfYShsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hKGxlbiA+ PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKKwkJCWZpZWxkX3JlZiArPSBsZW4gLSBCVFJf RVhURVJOX0ZJRUxEX1JFRl9TSVpFOworCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJCQliLmJs b2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VYVEVS Tl9QQUdFX05PKTsKKworCQkJc3dpdGNoIChiLmJsb2JfcGFnZV9ubykgeworCQkJY2FzZSAwOgor CQkJCS8qIFRoZSBjb2x1bW4gaGFzIG5vdCBiZWVuIHN0b3JlZCB5ZXQuCisJCQkJVGhlIEJMT0Ig cG9pbnRlciBtdXN0IGJlIGFsbCB6ZXJvLgorCQkJCVRoZXJlIGNhbm5vdCBiZSBhIEJMT0Igc3Rh cnRpbmcgYXQKKwkJCQlwYWdlIDAsIGJlY2F1c2UgcGFnZSAwIGlzIHJlc2VydmVkIGZvcgorCQkJ CXRoZSB0YWJsZXNwYWNlIGhlYWRlci4gKi8KKwkJCQl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBm aWVsZF9yZWZfemVybywKKwkJCQkJICAgICBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJ CQkJLyogZmFsbCB0aHJvdWdoICovCisJCQljYXNlIEZJTF9OVUxMOgorCQkJCS8qIHRoZSBjb2x1 bW4gaGFzIGJlZW4gZnJlZWQgYWxyZWFkeSAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQli dHJfYmxvYl9kYmdfcmJ0X2RlbGV0ZShpbmRleCwgJmIsIGN0eCk7CisJCQljb3VudCsrOworCQl9 CisJfQorCisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hlY2sgdGhhdCB0aGVy ZSBhcmUgbm8gcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gb3IgdG8KK3RoZSBn aXZlbiBwYWdlLiBJbnZva2VkIHdoZW4gZnJlZWluZyBvciBjbGVhcmluZyBhIHBhZ2UuCitAcmV0 dXJuIFRSVUUgd2hlbiBubyBvcnBoYW4gcmVmZXJlbmNlcyBleGlzdCAqLworVU5JVl9JTlRFUk4K K2lib29sCitidHJfYmxvYl9kYmdfaXNfZW1wdHkoCisvKj09PT09PT09PT09PT09PT09PSovCisJ ZGljdF9pbmRleF90KglpbmRleCwJCS8qITwgaW46IGluZGV4ICovCisJdWxpbnQJCXBhZ2Vfbm8p CS8qITwgaW46IHBhZ2UgbnVtYmVyICovCit7CisJY29uc3QgaWJfcmJ0X25vZGVfdCoJbm9kZTsK KwlpYm9vbAkJCXN1Y2Nlc3MJPSBUUlVFOworCisJaWYgKCFpbmRleC0+YmxvYnMpIHsKKwkJcmV0 dXJuKHN1Y2Nlc3MpOworCX0KKworCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOwor CisJZm9yIChub2RlID0gcmJ0X2ZpcnN0KGluZGV4LT5ibG9icyk7CisJICAgICBub2RlICE9IE5V TEw7IG5vZGUgPSByYnRfbmV4dChpbmRleC0+YmxvYnMsIG5vZGUpKSB7CisJCWNvbnN0IGJ0cl9i bG9iX2RiZ190KgliCisJCQk9IHJidF92YWx1ZShidHJfYmxvYl9kYmdfdCwgbm9kZSk7CisKKwkJ aWYgKGItPnJlZl9wYWdlX25vICE9IHBhZ2Vfbm8gJiYgYi0+YmxvYl9wYWdlX25vICE9IHBhZ2Vf bm8pIHsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiSW5ub0RC OiBvcnBoYW4gQkxPQiByZWYlcyVzJXMgJXU6JXU6JXUtPiV1XG4iLAorCQkJYi0+b3duZXIgPyAi IiA6ICIoZGlzb3duZWQpIiwKKwkJCWItPmFsd2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3du ZWQpIiwKKwkJCWItPmRlbCA/ICIoZGVsZXRlZCkiIDogIiIsCisJCQliLT5yZWZfcGFnZV9ubywg Yi0+cmVmX2hlYXBfbm8sIGItPnJlZl9maWVsZF9ubywKKwkJCWItPmJsb2JfcGFnZV9ubyk7CisK KwkJaWYgKGItPmJsb2JfcGFnZV9ubyAhPSBwYWdlX25vIHx8IGItPm93bmVyIHx8ICFiLT5kZWwp IHsKKwkJCXN1Y2Nlc3MgPSBGQUxTRTsKKwkJfQorCX0KKworCW11dGV4X2V4aXQoJmluZGV4LT5i bG9ic19tdXRleCk7CisJcmV0dXJuKHN1Y2Nlc3MpOworfQorCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb3VudCBh bmQgcHJvY2VzcyBhbGwgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIG9uIGEgcGFnZS4K K0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcHJvY2Vzc2VkICovCitVTklWX0lOVEVSTgor dWxpbnQKK2J0cl9ibG9iX2RiZ19vcCgKKy8qPT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3Qq CQlwYWdlLAkvKiE8IGluOiBCLXRyZWUgbGVhZiBwYWdlICovCisJY29uc3QgcmVjX3QqCQlyZWMs CS8qITwgaW46IHJlY29yZCB0byBzdGFydCBmcm9tCisJCQkJCShOVUxMIHRvIHByb2Nlc3MgdGhl IHdob2xlIHBhZ2UpICovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRl eCAqLworCWNvbnN0IGNoYXIqCQljdHgsCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAq LworCWNvbnN0IGJ0cl9ibG9iX2RiZ19vcF9mCW9wKQkvKiE8IGluOiBvcGVyYXRpb24gb24gcmVj b3JkcyAqLworeworCXVsaW50CQljb3VudAk9IDA7CisJbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7 CisJdWxpbnQJCW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKKwl1bGludCoJCW9mZnNl dHMJPSBvZmZzZXRzXzsKKwlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKKworCXV0X2EoZmlsX3Bh Z2VfZ2V0X3R5cGUocGFnZSkgPT0gRklMX1BBR0VfSU5ERVgpOworCXV0X2EoIXJlYyB8fCBwYWdl X2FsaWduKHJlYykgPT0gcGFnZSk7CisKKwlpZiAoIWluZGV4LT5ibG9icyB8fCAhcGFnZV9pc19s ZWFmKHBhZ2UpCisJICAgIHx8ICFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQlyZXR1 cm4oMCk7CisJfQorCisJaWYgKHJlYyA9PSBOVUxMKSB7CisJCXJlYyA9IHBhZ2VfZ2V0X2luZmlt dW1fcmVjKHBhZ2UpOworCX0KKworCWRvIHsKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhy ZWMsIGluZGV4LCBvZmZzZXRzLAorCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQlj b3VudCArPSBvcChyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpOworCQlyZWMgPSBwYWdlX3JlY19n ZXRfbmV4dF9jb25zdChyZWMpOworCX0gd2hpbGUgKCFwYWdlX3JlY19pc19zdXByZW11bShyZWMp KTsKKworCWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7CisJCW1lbV9oZWFwX2ZyZWUoaGVh cCk7CisJfQorCisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5kIGFk ZCB0byBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJv bSByZWNvcmRzIG9uIGEgcGFnZS4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgYWRkZWQg Ki8KK1VOSVZfSU5URVJOCit1bGludAorYnRyX2Jsb2JfZGJnX2FkZCgKKy8qPT09PT09PT09PT09 PSovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiByZXdyaXR0ZW4gcGFnZSAqLworCWRp Y3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNoYXIqCWN0 eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJYnRyX2Jsb2JfZGJnX2Fz c2VydF9lbXB0eShpbmRleCwgcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisKKwlyZXR1cm4oYnRy X2Jsb2JfZGJnX29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsIGJ0cl9ibG9iX2RiZ19hZGRfcmVj KSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMg YW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRzIG9uIGEgcGFn ZS4KK1VzZWQgd2hlbiByZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUgY29weWluZyB0aGUgcmVj b3Jkcy4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRF Uk4KK3VsaW50CitidHJfYmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09PT09PT09PT09Ki8KKwlj b25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGItdHJlZSBwYWdlICovCisJZGljdF9pbmRleF90 KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGlu OiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KK3sKKwl1bGludAljb3VudDsKKworCWNvdW50ID0g YnRyX2Jsb2JfZGJnX29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsCisJCQkJYnRyX2Jsb2JfZGJn X3JlbW92ZV9yZWMpOworCisJLyogQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIGV4aXN0LiAqLwor CWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkp OworCisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVzdG9yZSBpbiBpbmRleC0+ YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworVXNlZCB3aGVuIHBhZ2Ug cmVvcmdhbml6ZSBmYWlscyBkdWUgdG8gY29tcHJlc3NlZCBwYWdlIG92ZXJmbG93LiAqLworVU5J Vl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yZXN0b3JlKAorLyo9PT09PT09PT09PT09PT09 PSovCisJY29uc3QgcGFnZV90KglucGFnZSwJLyohPCBpbjogcGFnZSB0aGF0IGZhaWxlZCB0byBj b21wcmVzcyAgKi8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGNvcHkgb2Ygb3JpZ2lu YWwgcGFnZSAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLwor CWNvbnN0IGNoYXIqCWN0eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJ dWxpbnQJcmVtb3ZlZDsKKwl1bGludAlhZGRlZDsKKworCXV0X2EocGFnZV9nZXRfcGFnZV9ubyhu cGFnZSkgPT0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisJdXRfYShwYWdlX2dldF9zcGFjZV9p ZChucGFnZSkgPT0gcGFnZV9nZXRfc3BhY2VfaWQocGFnZSkpOworCisJcmVtb3ZlZCA9IGJ0cl9i bG9iX2RiZ19yZW1vdmUobnBhZ2UsIGluZGV4LCBjdHgpOworCWFkZGVkID0gYnRyX2Jsb2JfZGJn X2FkZChwYWdlLCBpbmRleCwgY3R4KTsKKwl1dF9hKGFkZGVkID09IHJlbW92ZWQpOworfQorCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCitNb2RpZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5J Vl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29y ZCAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25z dCB1bGludCoJCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJ aWJvb2wJCQlkZWwpCS8qITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCit7CisJ Y29uc3QgaWJfcmJ0X25vZGVfdCoJbm9kZTsKKwlidHJfYmxvYl9kYmdfdAkJYjsKKwlidHJfYmxv Yl9kYmdfdCoJCWM7CisJdWxpbnQJCQlpOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVj LCBpbmRleCwgb2Zmc2V0cykpOworCXV0X2EoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwor CXV0X2EoZGVsID09ICEhZGVsKTsvKiBtdXN0IGJlIEZBTFNFPT0wIG9yIFRSVUU9PTEgKi8KKwor CWlmICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSB8fCAhaW5kZXgtPmJsb2JzKSB7CisK KwkJcmV0dXJuOworCX0KKworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2Vf YWxpZ24ocmVjKSk7CisJYi5yZWZfaGVhcF9ubyA9IHBhZ2VfcmVjX2dldF9oZWFwX25vKHJlYyk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgewor CQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJdWxpbnQJCWxlbjsK KwkJCWNvbnN0IGJ5dGUqCWZpZWxkX3JlZiA9IHJlY19nZXRfbnRoX2ZpZWxkKAorCQkJCXJlYywg b2Zmc2V0cywgaSwgJmxlbik7CisKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJ dXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYgKz0g bGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfZmllbGRfbm8gPSBp OworCQkJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiAr IEJUUl9FWFRFUk5fUEFHRV9OTyk7CisKKwkJCXN3aXRjaCAoYi5ibG9iX3BhZ2Vfbm8pIHsKKwkJ CWNhc2UgMDoKKwkJCQl1dF9hKG1lbWNtcChmaWVsZF9yZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJ CQkgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJCS8qIHBhZ2UgbnVtYmVyIDAg aXMgZm9yIHRoZQorCQkJCXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXAgKi8KKwkJCWNhc2UgRklMX05V TEw6CisJCQkJLyogdGhlIGNvbHVtbiBoYXMgYmVlbiBmcmVlZCBhbHJlYWR5ICovCisJCQkJdXRf ZXJyb3I7CisJCQl9CisKKwkJCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCQkJ bm9kZSA9IHJidF9sb29rdXAoaW5kZXgtPmJsb2JzLCAmYik7CisJCQl1dF9hKG5vZGUpOworCisJ CQljID0gcmJ0X3ZhbHVlKGJ0cl9ibG9iX2RiZ190LCBub2RlKTsKKwkJCS8qIFRoZSBmbGFnIHNo b3VsZCBiZSBtb2RpZmllZC4gKi8KKwkJCWMtPmRlbCA9IGRlbDsKKwkJCWlmIChidHJfYmxvYl9k YmdfbXNnKSB7CisJCQkJYiA9ICpjOworCQkJCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRl eCk7CisJCQkJYnRyX2Jsb2JfZGJnX21zZ19pc3N1ZSgiZGVsX21rIiwgJmIsICIiKTsKKwkJCX0g ZWxzZSB7CisJCQkJbXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKKwkJCX0KKwkJfQor CX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYW4gb2ZmLXBhZ2Ug Y29sdW1uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19vd25lcigKKy8qPT09 PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJ ZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50 KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRleCkgKi8KKwl1bGludAkJ CWksCS8qITwgaW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJCW93bikJLyohPCBpbjog VFJVRT1vd25lZCwgRkFMU0U9ZGlzb3duZWQgKi8KK3sKKwljb25zdCBpYl9yYnRfbm9kZV90Kglu b2RlOworCWJ0cl9ibG9iX2RiZ190CQliOworCWNvbnN0IGJ5dGUqCQlmaWVsZF9yZWY7CisJdWxp bnQJCQlsZW47CisKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRz KSk7CisJdXRfYShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKTsKKworCWZpZWxkX3Jl ZiA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJdXRfYShsZW4g IT0gVU5JVl9TUUxfTlVMTCk7CisJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0la RSk7CisJZmllbGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwli LnJlZl9wYWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlX2FsaWduKHJlYykpOworCWIucmVm X2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2ZpZWxkX25vID0g aTsKKwliLm93bmVyID0gIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9P V05FUl9GTEFHKTsKKwliLmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoZmllbGRfcmVm ICsgQlRSX0VYVEVSTl9QQUdFX05PKTsKKworCXV0X2EoYi5vd25lciA9PSBvd24pOworCisJbXV0 ZXhfZW50ZXIoJmluZGV4LT5ibG9ic19tdXRleCk7CisJbm9kZSA9IHJidF9sb29rdXAoaW5kZXgt PmJsb2JzLCAmYik7CisJLyogcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoKSBp bnZva2VzCisJYnRyX2N1cl91bm1hcmtfZXh0ZXJuX2ZpZWxkcygpIGFsc28gZm9yIHRoZSBuZXds eSBpbnNlcnRlZAorCXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBhbGwgemVybyBieXRlcyB1bnRpbCB0 aGUgY29sdW1ucyBhcmUgc3RvcmVkLgorCVRoZSBub2RlIGxvb2t1cCBtdXN0IGZhaWwgaWYgYW5k IG9ubHkgaWYgdGhhdCBpcyB0aGUgY2FzZS4gKi8KKwl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBm aWVsZF9yZWZfemVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkKKwkgICAgID09ICFub2Rl KTsKKworCWlmIChub2RlKSB7CisJCWJ0cl9ibG9iX2RiZ190KgljID0gcmJ0X3ZhbHVlKGJ0cl9i bG9iX2RiZ190LCBub2RlKTsKKwkJLyogU29tZSBjb2RlIHNldHMgb3duZXJzaGlwIGZyb20gVFJV RSB0byBUUlVFLgorCQlXZSBkbyBub3QgYWxsb3cgY2hhbmdpbmcgb3duZXJzaGlwIGZyb20gRkFM U0UgdG8gRkFMU0UuICovCisJCXV0X2Eob3duIHx8IGMtPm93bmVyKTsKKworCQljLT5vd25lciA9 IG93bjsKKwkJaWYgKCFvd24pIHsKKwkJCWMtPmFsd2F5c19vd25lciA9IEZBTFNFOworCQl9CisJ fQorCisJbXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKyNlbmRpZiAvKiBVTklW X0JMT0JfREVCVUcgKi8KKwogLyoKIExhdGNoaW5nIHN0cmF0ZWd5IG9mIHRoZSBJbm5vREIgQi10 cmVlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjk2LDYgKzg1 MCw3IEBAIGJ0cl9wYWdlX2NyZWF0ZSgKIAlwYWdlX3QqCQlwYWdlID0gYnVmX2Jsb2NrX2dldF9m cmFtZShibG9jayk7CiAKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJf TUVNT19QQUdFX1hfRklYKSk7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwgYnVm X2Jsb2NrX2dldF9wYWdlX25vKGJsb2NrKSk7CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdl X3ppcCkpIHsKIAkJcGFnZV9jcmVhdGVfemlwKGJsb2NrLCBpbmRleCwgbGV2ZWwsIG10cik7CkBA IC00ODksNiArMTA0NCw3IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCW1vZGlmeSBjbG9jayAqLwog CiAJYnVmX2Jsb2NrX21vZGlmeV9jbG9ja19pbmMoYmxvY2spOworCWJ0cl9ibG9iX2RiZ19hc3Nl cnRfZW1wdHkoaW5kZXgsIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jaykpOwogCiAJaWYgKGRp Y3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpIHsKIApAQCAtNzczLDYgKzEzMjksMTMgQEAgYnRyX2Ny ZWF0ZSgKIAkJYmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2UsIHppcF9zaXplLCBwYWdlX25vLAog CQkJCSAgICAgUldfWF9MQVRDSCwgbXRyKTsKIAl9IGVsc2UgeworI2lmZGVmIFVOSVZfQkxPQl9E RUJVRworCQlpZiAoKHR5cGUgJiBESUNUX0NMVVNURVJFRCkgJiYgIWluZGV4LT5ibG9icykgewor CQkJbXV0ZXhfY3JlYXRlKCZpbmRleC0+YmxvYnNfbXV0ZXgsIFNZTkNfQU5ZX0xBVENIKTsKKwkJ CWluZGV4LT5ibG9icyA9IHJidF9jcmVhdGUoc2l6ZW9mKGJ0cl9ibG9iX2RiZ190KSwKKwkJCQkJ CSAgYnRyX2Jsb2JfZGJnX2NtcCk7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8K IAkJYmxvY2sgPSBmc2VnX2NyZWF0ZShzcGFjZSwgMCwKIAkJCQkgICAgUEFHRV9IRUFERVIgKyBQ QUdFX0JUUl9TRUdfVE9QLCBtdHIpOwogCX0KQEAgLTk5Niw2ICsxNTU5LDcgQEAgYnRyX3BhZ2Vf cmVvcmdhbml6ZV9sb3coCiAKIAlibG9jay0+Y2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCA9IFRS VUU7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShw YWdlLCBpbmRleCwgImJ0cl9wYWdlX3Jlb3JnYW5pemUiKTsKIAogCS8qIFJlY3JlYXRlIHRoZSBw YWdlOiBub3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFnZSAocG9zc2libGUKIAlzZWdtZW50IGhl YWRlcnMsIG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMgcHJlc2VydmVkIGludGFjdCAqLwpAQCAt MTAyNCw2ICsxNTg4LDggQEAgYnRyX3BhZ2VfcmVvcmdhbml6ZV9sb3coCiAJICAgICghcGFnZV96 aXBfY29tcHJlc3MocGFnZV96aXAsIHBhZ2UsIGluZGV4LCBOVUxMKSkpIHsKIAogCQkvKiBSZXN0 b3JlIHRoZSBvbGQgcGFnZSBhbmQgZXhpdC4gKi8KKwkJYnRyX2Jsb2JfZGJnX3Jlc3RvcmUocGFn ZSwgdGVtcF9wYWdlLCBpbmRleCwKKwkJCQkgICAgICJidHJfcGFnZV9yZW9yZ2FuaXplX2NvbXBy ZXNzX2ZhaWwiKTsKIAogI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfWklQ X0RFQlVHCiAJCS8qIENoZWNrIHRoYXQgdGhlIGJ5dGVzIHRoYXQgd2Ugc2tpcCBhcmUgaWRlbnRp Y2FsLiAqLwpAQCAtMTE1Nyw2ICsxNzIzLDcgQEAgYnRyX3BhZ2VfZW1wdHkoCiAjZW5kaWYgLyog VU5JVl9aSVBfREVCVUcgKi8KIAogCWJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoYmxv Y2spOworCWJ0cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJidHJfcGFnZV9lbXB0eSIp OwogCiAJLyogUmVjcmVhdGUgdGhlIHBhZ2U6IG5vdGUgdGhhdCBnbG9iYWwgZGF0YSBvbiBwYWdl IChwb3NzaWJsZQogCXNlZ21lbnQgaGVhZGVycywgbmV4dCBwYWdlLWZpZWxkLCBldGMuKSBpcyBw cmVzZXJ2ZWQgaW50YWN0ICovCkBAIC0yNDk3LDYgKzMwNjQsNyBAQCBidHJfbGlmdF9wYWdlX3Vw KAogCQkJCQkJICAgICAgIGluZGV4KTsKIAl9CiAKKwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2Us IGluZGV4LCAiYnRyX2xpZnRfcGFnZV91cCIpOwogCWxvY2tfdXBkYXRlX2NvcHlfYW5kX2Rpc2Nh cmQoZmF0aGVyX2Jsb2NrLCBibG9jayk7CiAKIAkvKiBHbyB1cHdhcmQgdG8gcm9vdCBwYWdlLCBk ZWNyZW1lbnRpbmcgbGV2ZWxzIGJ5IG9uZS4gKi8KQEAgLTI3NTgsNiArMzMyNiw3IEBAIGVycl9l eGl0OgogCQlsb2NrX3VwZGF0ZV9tZXJnZV9yaWdodChtZXJnZV9ibG9jaywgb3JpZ19zdWNjLCBi bG9jayk7CiAJfQogCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9jb21w cmVzcyIpOwogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAKIAlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1 c3QoaW5kZXgpICYmIHBhZ2VfaXNfbGVhZihtZXJnZV9wYWdlKSkgewpAQCAtMjk4OCw2ICszNTU3 LDggQEAgYnRyX2Rpc2NhcmRfcGFnZSgKIAkJCQkgICAgYmxvY2spOwogCX0KIAorCWJ0cl9ibG9i X2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJidHJfZGlzY2FyZF9wYWdlIik7CisKIAkvKiBGcmVl IHRoZSBmaWxlIHBhZ2UgKi8KIAlidHJfcGFnZV9mcmVlKGluZGV4LCBibG9jaywgbXRyKTsKIAoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jJwot LS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBjdXIuYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6emh2OHVjZXYycXEKKysrIGIvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTAyMDgxMDU2MjMtcXM4b2w2d3pjamxsZDNybQpAQCAtMjU3Miw2ICsyNTcyLDcgQEAg YnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogCiAJcGFnZV96aXAgPSBidWZfYmxvY2tf Z2V0X3BhZ2VfemlwKGJsb2NrKTsKIAorCWJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKHJl YywgaW5kZXgsIG9mZnNldHMsIHZhbCk7CiAJYnRyX3JlY19zZXRfZGVsZXRlZF9mbGFnKHJlYywg cGFnZV96aXAsIHZhbCk7CiAKIAl0cnggPSB0aHJfZ2V0X3RyeCh0aHIpOwpAQCAtMzU5NSw2ICsz NTk2LDggQEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgKIAl9IGVsc2Ug ewogCQltYWNoX3dyaXRlX3RvXzEoZGF0YSArIGxvY2FsX2xlbiArIEJUUl9FWFRFUk5fTEVOLCBi eXRlX3ZhbCk7CiAJfQorCisJYnRyX2Jsb2JfZGJnX293bmVyKHJlYywgaW5kZXgsIG9mZnNldHMs IGksIHZhbCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNDA5NCw2ICs0MDk3LDExIEBAIGJ0 cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCQl9CiAKIAkJCQlpZiAocHJl dl9wYWdlX25vID09IEZJTF9OVUxMKSB7CisJCQkJCWJ0cl9ibG9iX2RiZ19hZGRfYmxvYigKKwkJ CQkJCXJlYywgYmlnX3JlY192ZWMtPmZpZWxkc1tpXQorCQkJCQkJLmZpZWxkX25vLCBwYWdlX25v LCBpbmRleCwKKwkJCQkJCSJzdG9yZSIpOworCiAJCQkJCW1hY2hfd3JpdGVfdG9fNChmaWVsZF9y ZWYKIAkJCQkJCQkrIEJUUl9FWFRFUk5fU1BBQ0VfSUQsCiAJCQkJCQkJc3BhY2VfaWQpOwpAQCAt NDE2OSw2ICs0MTc3LDExIEBAIG5leHRfemlwX3BhZ2U6CiAJCQkJCQkgTUxPR180QllURVMsICZt dHIpOwogCiAJCQkJaWYgKHByZXZfcGFnZV9ubyA9PSBGSUxfTlVMTCkgeworCQkJCQlidHJfYmxv Yl9kYmdfYWRkX2Jsb2IoCisJCQkJCQlyZWMsIGJpZ19yZWNfdmVjLT5maWVsZHNbaV0KKwkJCQkJ CS5maWVsZF9ubywgcGFnZV9ubywgaW5kZXgsCisJCQkJCQkic3RvcmUiKTsKKwogCQkJCQltbG9n X3dyaXRlX3VsaW50KGZpZWxkX3JlZgogCQkJCQkJCSArIEJUUl9FWFRFUk5fU1BBQ0VfSUQsCiAJ CQkJCQkJIHNwYWNlX2lkLApAQCAtNDMzNyw2ICs0MzUwLDM3IEBAIGJ0cl9mcmVlX2V4dGVybmFs bHlfc3RvcmVkX2ZpZWxkKAogCQlyZWNfemlwX3NpemUgPSAwOwogCX0KIAorI2lmZGVmIFVOSVZf QkxPQl9ERUJVRworCWlmICghKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJO X09XTkVSX0ZMQUcpCisJICAgICYmICEoKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJf RVhURVJOX0lOSEVSSVRFRF9GTEFHKQorCQkgJiYgKHJiX2N0eCA9PSBSQl9OT1JNQUwgfHwgcmJf Y3R4ID09IFJCX1JFQ09WRVJZKSkpIHsKKwkJLyogVGhpcyBvZmYtcGFnZSBjb2x1bW4gd2lsbCBi ZSBmcmVlZC4KKwkJQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIHJlbWFpbi4gKi8KKworCQlidHJf YmxvYl9kYmdfdAliOworCisJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJ CWZpZWxkX3JlZiArIEJUUl9FWFRFUk5fUEFHRV9OTyk7CisKKwkJaWYgKHJlYykgeworCQkJLyog UmVtb3ZlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgcmVjb3JkIHRvIHRoZQorCQkJQkxPQi4gSWYg dGhlIEJMT0Igd2VyZSBub3QgZnJlZWQsIHRoZQorCQkJcmVmZXJlbmNlIHdvdWxkIGJlIHJlbW92 ZWQgd2hlbiB0aGUgcmVjb3JkIGlzCisJCQlyZW1vdmVkLiBGcmVlaW5nIHRoZSBCTE9CIHdpbGwg b3ZlcndyaXRlIHRoZQorCQkJQlRSX0VYVEVSTl9QQUdFX05PIGluIHRoZSBmaWVsZF9yZWYgb2Yg dGhlCisJCQlyZWNvcmQgd2l0aCBGSUxfTlVMTCwgd2hpY2ggd291bGQgbWFrZSB0aGUKKwkJCWJ0 cl9ibG9iX2RiZyBpbmZvcm1hdGlvbiBpbmNvbnNpc3RlbnQgd2l0aCB0aGUKKwkJCXJlY29yZC4g Ki8KKwkJCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24ocmVjKSk7 CisJCQliLnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKwkJCWIucmVm X2ZpZWxkX25vID0gaTsKKwkJCWJ0cl9ibG9iX2RiZ19yYnRfZGVsZXRlKGluZGV4LCAmYiwgImZy ZWUiKTsKKwkJfQorCisJCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIGIuYmxvYl9w YWdlX25vKTsKKwl9CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCisKIAlmb3IgKDs7KSB7 CiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJCWJ1Zl9ibG9ja190KglyZWNfYmxvY2s7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2RpY3QvZGljdDBtZW0uYycKLS0t IGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2RpY3QvZGljdDBtZW0uYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6emh2OHVjZXYycXEKKysrIGIvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2RpY3QvZGljdDBtZW0uYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNqbGxkM3JtCkBAIC0zNiw2ICszNiw5IEBAIENy ZWF0ZWQgMS84LzE5OTYgSGVpa2tpIFR1dXJpCiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAjIGlu Y2x1ZGUgImxvY2swbG9jay5oIgogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLworI2lmZGVm IFVOSVZfQkxPQl9ERUJVRworIyBpbmNsdWRlICJ1dDByYnQuaCIKKyNlbmRpZiAvKiBVTklWX0JM T0JfREVCVUcgKi8KIAogI2RlZmluZQlESUNUX0hFQVBfU0laRQkJMTAwCS8qITwgaW5pdGlhbCBt ZW1vcnkgaGVhcCBzaXplIHdoZW4KIAkJCQkJY3JlYXRpbmcgYSB0YWJsZSBvciBpbmRleCBvYmpl Y3QgKi8KQEAgLTMxNiw2ICszMTksMTIgQEAgZGljdF9tZW1faW5kZXhfZnJlZSgKIHsKIAl1dF9h ZChpbmRleCk7CiAJdXRfYWQoaW5kZXgtPm1hZ2ljX24gPT0gRElDVF9JTkRFWF9NQUdJQ19OKTsK KyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKwlpZiAoaW5kZXgtPmJsb2JzKSB7CisJCW11dGV4X2Zy ZWUoJmluZGV4LT5ibG9ic19tdXRleCk7CisJCXJidF9mcmVlKGluZGV4LT5ibG9icyk7CisJfQor I2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJVRyAqLwogCiAJbWVtX2hlYXBfZnJlZShpbmRleC0+aGVh cCk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUv YnRyMGJ0ci5oJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwYnRyLmgJ cmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4enpodjh1Y2V2 MnFxCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNqbGxkM3JtCkBA IC04MSw2ICs4MSw5MSBAQCBVTklRVUUgZGVmaW5pdGlvbiBvbiBzZWNvbmRhcnkgaW5kZXhlcyB3 CiB0aGUgaW5zZXJ0IGJ1ZmZlciB0byBzcGVlZCB1cCBpbnNlcnRzICovCiAjZGVmaW5lIEJUUl9J R05PUkVfU0VDX1VOSVFVRQkyMDQ4CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVk ZSAidXQwcmJ0LmgiCisvKiogQW4gaW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVwaW5nIHRyYWNr IG9mIG9mZi1wYWdlIGNvbHVtbiByZWZlcmVuY2VzICovCitzdHJ1Y3QgYnRyX2Jsb2JfZGJnX3N0 cnVjdAoreworCXVuc2lnbmVkCWJsb2JfcGFnZV9ubzozMjsJLyohPCBmaXJzdCBCTE9CIHBhZ2Ug bnVtYmVyICovCisJdW5zaWduZWQJcmVmX3BhZ2Vfbm86MzI7CQkvKiE8IHJlZmVycmluZyBwYWdl IG51bWJlciAqLworCXVuc2lnbmVkCXJlZl9oZWFwX25vOjE2OwkJLyohPCByZWZlcnJpbmcgaGVh cCBudW1iZXIgKi8KKwl1bnNpZ25lZAlyZWZfZmllbGRfbm86MTA7CS8qITwgcmVmZXJyaW5nIGZp ZWxkIG51bWJlciAqLworCXVuc2lnbmVkCW93bmVyOjE7CQkvKiE8IFRSVUUgaWYgQkxPQiBvd25l ciAqLworCXVuc2lnbmVkCWFsd2F5c19vd25lcjoxOwkJLyohPCBUUlVFIGlmIGFsd2F5cworCQkJ CQkJaGFzIGJlZW4gdGhlIEJMT0Igb3duZXI7CisJCQkJCQlyZXNldCB0byBUUlVFIG9uIEItdHJl ZQorCQkJCQkJcGFnZSBzcGxpdHMgYW5kIG1lcmdlcyAqLworCXVuc2lnbmVkCWRlbDoxOwkJCS8q ITwgVFJVRSBpZiBjdXJyZW50bHkKKwkJCQkJCWRlbGV0ZS1tYXJrZWQgKi8KK307CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0FkZCBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGluZGV4 LT5ibG9icyBtYXAuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9ibG9i KAorLyo9PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBj bHVzdGVyZWQgaW5kZXggcmVjb3JkICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBudW1i ZXIgb2Ygb2ZmLXBhZ2UgY29sdW1uICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0 IHBhZ2Ugb2YgdGhlIGNvbHVtbiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291 dDogaW5kZXggdHJlZSAqLworCWNvbnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZv ciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rp c3BsYXkgdGhlIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24g aXMgdG8gYmUgY2FsbGVkIGZyb20gYSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVh a3BvaW50IG9uIHV0X2RiZ19hc3NlcnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJO Cit2b2lkCitidHJfYmxvYl9kYmdfcHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3Qg ZGljdF9pbmRleF90KglpbmRleCkJLyohPCBpbjogaW5kZXggdHJlZSAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHJlZmVy ZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBmcm9tIG9yIHRvCit0aGUgZ2l2ZW4gcGFnZS4gSW52 b2tlZCB3aGVuIGZyZWVpbmcgb3IgY2xlYXJpbmcgYSBwYWdlLgorQHJldHVybiBUUlVFIHdoZW4g bm8gb3JwaGFuIHJlZmVyZW5jZXMgZXhpc3QgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnRyX2Js b2JfZGJnX2lzX2VtcHR5KAorLyo9PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCQkvKiE8IGluOiBpbmRleCAqLworCXVsaW50CQlwYWdlX25vKQkvKiE8IGluOiBwYWdl IG51bWJlciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkp OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCitNb2RpZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAq LworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9 PT09PT09PT09PT09PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46 IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8K Kwljb25zdCB1bGludCoJCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgp ICovCisJaWJvb2wJCQlkZWwpCS8qITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICov CisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25l cnNoaXAgb2YgYW4gb2ZmLXBhZ2UgY29sdW1uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9i bG9iX2RiZ19vd25lcigKKy8qPT09PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJ LyohPCBpbjogcmVjb3JkICovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBp bmRleCAqLworCWNvbnN0IHVsaW50KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVj LCBpbmRleCkgKi8KKwl1bGludAkJCWksCS8qITwgaW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlp Ym9vbAkJCW93bikJLyohPCBpbjogVFJVRT1vd25lZCwgRkFMU0U9ZGlzb3duZWQgKi8KKwlfX2F0 dHJpYnV0ZV9fKChub25udWxsKSk7CisvKiogQXNzZXJ0IHRoYXQgdGhlcmUgYXJlIG5vIEJMT0Ig cmVmZXJlbmNlcyB0byBvciBmcm9tIHRoZSBnaXZlbiBwYWdlLiAqLworIyBkZWZpbmUgYnRyX2Js b2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwgcGFnZV9ubykJXAorCXV0X2EoYnRyX2Jsb2JfZGJn X2lzX2VtcHR5KGluZGV4LCBwYWdlX25vKSkKKyNlbHNlIC8qIFVOSVZfQkxPQl9ERUJVRyAqLwor IyBkZWZpbmUgYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKHJlYywgZmllbGRfbm8sIHBhZ2UsIGluZGV4 LCBjdHgpCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFn KHJlYywgaW5kZXgsIG9mZnNldHMsIGRlbCkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9k Ymdfb3duZXIocmVjLCBpbmRleCwgb2Zmc2V0cywgaSwgdmFsKQkoKHZvaWQpIDApCisjIGRlZmlu ZSBidHJfYmxvYl9kYmdfYXNzZXJ0X2VtcHR5KGluZGV4LCBwYWdlX25vKQkJKCh2b2lkKSAwKQor I2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIHRoZSByb290 IG5vZGUgb2YgYSB0cmVlIGFuZCB4LWxhdGNoZXMgaXQuCiBAcmV0dXJuCXJvb3QgcGFnZSwgeC1s YXRjaGVkICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1 ZGUvYnRyMHR5cGVzLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjB0 eXBlcy5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6 aHY4dWNldjJxcQorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwdHlwZXMu aAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNq bGxkM3JtCkBAIC0zOCw2ICszOCwxMzEgQEAgdHlwZWRlZiBzdHJ1Y3QgYnRyX2N1cl9zdHJ1Y3QJ CWJ0cl9jdXJfdAogLyoqIEItdHJlZSBzZWFyY2ggaW5mb3JtYXRpb24gZm9yIHRoZSBhZGFwdGl2 ZSBoYXNoIGluZGV4ICovCiB0eXBlZGVmIHN0cnVjdCBidHJfc2VhcmNoX3N0cnVjdAlidHJfc2Vh cmNoX3Q7CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVkZSAiYnVmMHR5cGVzLmgi CisvKiogQW4gaW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVwaW5nIHRyYWNrIG9mIG9mZi1wYWdl IGNvbHVtbiByZWZlcmVuY2VzICovCit0eXBlZGVmIHN0cnVjdCBidHJfYmxvYl9kYmdfc3RydWN0 IGJ0cl9ibG9iX2RiZ190OworCisvKiogSW5zZXJ0IHRvIGluZGV4LT5ibG9icyBhIHJlZmVyZW5j ZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhlIGluZGV4IHRyZWUKK0Bw YXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpICov CitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoCisvKj09PT09PT09 PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4 IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBpbjogdGhlIHJlZmVyZW5j ZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAq LworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqIFJlbW92ZSBmcm9tIGluZGV4LT5i bG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhl IGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAo Zm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9kZWxl dGUoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyoh PCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBp bjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQg KGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgorQWRkIHRvIGluZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5z IGZyb20gYSByZWNvcmQuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIGFkZGVkICovCitV TklWX0lOVEVSTgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGRfcmVjKAorLyo9PT09PT09PT09PT09 PT09PSovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJZGljdF9pbmRl eF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgdWxpbnQqCW9mZnNldHMs LyohPCBpbjogb2Zmc2V0cyAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyohPCBpbjogY29udGV4dCAo Zm9yIGxvZ2dpbmcpICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgor UmVtb3ZlIGZyb20gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVt bnMgZnJvbSBhIHJlY29yZC4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAq LworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygKKy8qPT09PT09 PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLwor CWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50 KglvZmZzZXRzLC8qITwgaW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46 IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKK0NvdW50IGFuZCBhZGQgdG8gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRv IG9mZi1wYWdlIGNvbHVtbnMKK2Zyb20gcmVjb3JkcyBvbiBhIHBhZ2UuCitAcmV0dXJuIG51bWJl ciBvZiByZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lOVEVSTgordWxpbnQKK2J0cl9ibG9iX2Ri Z19hZGQoCisvKj09PT09PT09PT09PT0qLworCWNvbnN0IHBhZ2VfdCoJcGFnZSwJLyohPCBpbjog cmV3cml0dGVuIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5k ZXggKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAq LworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NvdW50IGFuZCByZW1v dmUgZnJvbSBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucwor ZnJvbSByZWNvcmRzIG9uIGEgcGFnZS4KK1VzZWQgd2hlbiByZW9yZ2FuaXppbmcgYSBwYWdlLCBi ZWZvcmUgY29weWluZyB0aGUgcmVjb3Jkcy4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMg cmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfcmVtb3ZlKAorLyo9 PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGItdHJlZSBw YWdlICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29u c3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwlfX2F0dHJp YnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitSZXN0b3JlIGluIGluZGV4LT5ibG9icyBh bnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zCitVc2VkIHdoZW4gcGFnZSByZW9yZ2Fu aXplIGZhaWxzIGR1ZSB0byBjb21wcmVzc2VkIHBhZ2Ugb3ZlcmZsb3cuICovCitVTklWX0lOVEVS Tgordm9pZAorYnRyX2Jsb2JfZGJnX3Jlc3RvcmUoCisvKj09PT09PT09PT09PT09PT09Ki8KKwlj b25zdCBwYWdlX3QqCW5wYWdlLAkvKiE8IGluOiBwYWdlIHRoYXQgZmFpbGVkIHRvIGNvbXByZXNz ICovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBjb3B5IG9mIG9yaWdpbmFsIHBhZ2Ug Ki8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCBj aGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwpKTsKKworLyoqIE9wZXJhdGlvbiB0aGF0IHByb2Nlc3NlcyB0aGUgQkxPQiBy ZWZlcmVuY2VzIG9mIGFuIGluZGV4IHJlY29yZAorQHBhcmFtW2luXQlyZWMJcmVjb3JkIG9uIGlu ZGV4IHBhZ2UKK0BwYXJhbVtpbi9vdXRdCWluZGV4CXRoZSBpbmRleCB0cmVlIG9mIHRoZSByZWNv cmQKK0BwYXJhbVtpbl0Jb2Zmc2V0cwlyZWNfZ2V0X29mZnNldHMocmVjLGluZGV4KQorQHBhcmFt W2luXQljdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpCitAcmV0dXJuCQkJbnVtYmVyIG9mIEJMT0Ig cmVmZXJlbmNlcyBwcm9jZXNzZWQgKi8KK3R5cGVkZWYgdWxpbnQgKCpidHJfYmxvYl9kYmdfb3Bf ZikKKyhjb25zdCByZWNfdCogcmVjLGRpY3RfaW5kZXhfdCogaW5kZXgsY29uc3QgdWxpbnQqIG9m ZnNldHMsY29uc3QgY2hhciogY3R4KTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5kIHByb2Nlc3Mg YWxsIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBvbiBhIHBhZ2UuCitAcmV0dXJuIG51 bWJlciBvZiByZWZlcmVuY2VzIHByb2Nlc3NlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJf YmxvYl9kYmdfb3AoCisvKj09PT09PT09PT09PSovCisJY29uc3QgcGFnZV90KgkJcGFnZSwJLyoh PCBpbjogQi10cmVlIGxlYWYgcGFnZSAqLworCWNvbnN0IHJlY190KgkJcmVjLAkvKiE8IGluOiBy ZWNvcmQgdG8gc3RhcnQgZnJvbQorCQkJCQkoTlVMTCB0byBwcm9jZXNzIHRoZSB3aG9sZSBwYWdl KSAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25z dCBjaGFyKgkJY3R4LAkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwljb25zdCBi dHJfYmxvYl9kYmdfb3BfZglvcCkJLyohPCBpbjogb3BlcmF0aW9uIG9uIHJlY29yZHMgKi8KKwlf X2F0dHJpYnV0ZV9fKChub25udWxsKDEsMyw0LDUpKSk7CisjZWxzZSAvKiBVTklWX0JMT0JfREVC VUcgKi8KKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hZGRfcmVjKHJlYywgaW5kZXgsIG9mZnNldHMs IGN0eCkJCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hZGQocGFnZSwgaW5kZXgs IGN0eCkJCQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYyhyZWMs IGluZGV4LCBvZmZzZXRzLCBjdHgpCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19y ZW1vdmUocGFnZSwgaW5kZXgsIGN0eCkJCQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9k YmdfcmVzdG9yZShucGFnZSwgcGFnZSwgaW5kZXgsIGN0eCkJCSgodm9pZCkgMCkKKyMgZGVmaW5l IGJ0cl9ibG9iX2RiZ19vcChwYWdlLCByZWMsIGluZGV4LCBjdHgsIG9wKQkJKCh2b2lkKSAwKQor I2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworCiAvKiogVGhlIHNpemUgb2YgYSByZWZlcmVu Y2UgdG8gZGF0YSBzdG9yZWQgb24gYSBkaWZmZXJlbnQgcGFnZS4KIFRoZSByZWZlcmVuY2UgaXMg c3RvcmVkIGF0IHRoZSBlbmQgb2YgdGhlIHByZWZpeCBvZiB0aGUgZmllbGQKIGluIHRoZSBpbmRl eCByZWNvcmQuICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lu Y2x1ZGUvZGljdDBtZW0uaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZGlj dDBtZW0uaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6 emh2OHVjZXYycXEKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZGljdDBtZW0u aAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNq bGxkM3JtCkBAIC0zNDAsNiArMzQwLDEzIEBAIHN0cnVjdCBkaWN0X2luZGV4X3N0cnVjdHsKIAkJ CQlpbmRleCwgb3IgMCBpZiB0aGUgaW5kZXggZXhpc3RlZAogCQkJCXdoZW4gSW5ub0RCIHdhcyBz dGFydGVkIHVwICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisjaWZkZWYgVU5JVl9C TE9CX0RFQlVHCisJbXV0ZXhfdAkJYmxvYnNfbXV0ZXg7CisJCQkJLyohPCBtdXRleCBwcm90ZWN0 aW5nIGJsb2JzICovCisJdm9pZCoJCWJsb2JzOwkvKiE8IG1hcCBvZiAocGFnZV9ubyxoZWFwX25v LGZpZWxkX25vKQorCQkJCXRvIGZpcnN0X2Jsb2JfcGFnZV9ubzsgcHJvdGVjdGVkIGJ5CisJCQkJ YmxvYnNfbXV0ZXg7IEBzZWUgYnRyX2Jsb2JfZGJnX3QgKi8KKyNlbmRpZiAvKiBVTklWX0JMT0Jf REVCVUcgKi8KICNpZmRlZiBVTklWX0RFQlVHCiAJdWxpbnQJCW1hZ2ljX247LyohPCBtYWdpYyBu dW1iZXIgKi8KIC8qKiBWYWx1ZSBvZiBkaWN0X2luZGV4X3N0cnVjdDo6bWFnaWNfbiAqLwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3BhZ2UwemlwLmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6dmFz aWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4enpodjh1Y2V2MnFxCisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTAyMDgxMDU2MjMtcXM4b2w2d3pjamxsZDNybQpAQCAtNDIwLDcg KzQyMCw3IEBAIHBhZ2VfemlwX2NvcHlfcmVjcygKIAljb25zdCBwYWdlX3QqCQlzcmMsCQkvKiE8 IGluOiBwYWdlICovCiAJZGljdF9pbmRleF90KgkJaW5kZXgsCQkvKiE8IGluOiBpbmRleCBvZiB0 aGUgQi10cmVlICovCiAJbXRyX3QqCQkJbXRyKQkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAq LwotCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwyLDMsNCkpKTsKKwlfX2F0dHJpYnV0ZV9fKChu b25udWxsKSk7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3Vu aXYuaScKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdW5pdi5pCXJldmlkOnZh c2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysg Yi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTAyMDgxMDU2MjMtcXM4b2w2d3pjamxsZDNybQpAQCAtMTk0LDYgKzE5 NCw4IEBAIHRoaXMgd2lsbCBicmVhayByZWRvIGxvZyBmaWxlIGNvbXBhdGliaWwKIGRlYnVnZ2lu ZyByZWRvIGxvZyBhcHBsaWNhdGlvbiBwcm9ibGVtcy4gKi8KICNkZWZpbmUgVU5JVl9NRU1fREVC VUcJCQkJLyogZGV0ZWN0IG1lbW9yeSBsZWFrcyBldGMgKi8KICNkZWZpbmUgVU5JVl9JQlVGX0RF QlVHCQkJCS8qIGRlYnVnIHRoZSBpbnNlcnQgYnVmZmVyICovCisjZGVmaW5lIFVOSVZfQkxPQl9E RUJVRwkJCQkvKiB0cmFjayBCTE9CIG93bmVyc2hpcDsKK2Fzc3VtZXMgdGhhdCBubyBCTE9CcyBz dXJ2aXZlIHNlcnZlciByZXN0YXJ0ICovCiAjZGVmaW5lIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwkJ CS8qIGRlYnVnIHRoZSBpbnNlcnQgYnVmZmVyOwogdGhpcyBsaW1pdHMgdGhlIGRhdGFiYXNlIHRv IElCVUZfQ09VTlRfTl9TUEFDRVMgYW5kIElCVUZfQ09VTlRfTl9QQUdFUywKIGFuZCB0aGUgaW5z ZXJ0IGJ1ZmZlciBtdXN0IGJlIGVtcHR5IHdoZW4gdGhlIGRhdGFiYXNlIGlzIHN0YXJ0ZWQgKi8K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMGN1ci5j JwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMGN1ci5jCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9z dG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMGN1ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTExNDksNiArMTE0 OSw4IEBAIHVzZV9oZWFwOgogCQkJCQkgICAgICBjdXJyZW50X3JlYywgaW5kZXgsIG10cik7CiAJ fQogCisJYnRyX2Jsb2JfZGJnX2FkZF9yZWMoaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsICJp bnNlcnQiKTsKKwogCXJldHVybihpbnNlcnRfcmVjKTsKIH0KIApAQCAtMTE5NSwxMCArMTE5Nywx MiBAQCBwYWdlX2N1cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygKIAl9CiAKIAkvKiBPdXQgb2Ygc3Bh Y2U6IHJlc3RvcmUgdGhlIHBhZ2UgKi8KKwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4 LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJaWYgKCFwYWdlX3ppcF9kZWNvbXByZXNzKHBhZ2Vfemlw LCBwYWdlLCBGQUxTRSkpIHsKIAkJdXRfZXJyb3I7IC8qIE1lbW9yeSBjb3JydXB0ZWQ/ICovCiAJ fQogCXV0X2FkKHBhZ2VfdmFsaWRhdGUocGFnZSwgaW5kZXgpKTsKKwlidHJfYmxvYl9kYmdfYWRk KHBhZ2UsIGluZGV4LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJcmV0dXJuKE5VTEwpOwogfQogCkBA IC0xNDkwLDYgKzE0OTQsOCBAQCB1c2VfaGVhcDoKIAogCXBhZ2VfemlwX3dyaXRlX3JlYyhwYWdl X3ppcCwgaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsIDEpOwogCisJYnRyX2Jsb2JfZGJnX2Fk ZF9yZWMoaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsICJpbnNlcnRfemlwX29rIik7CisKIAkv KiA5LiBXcml0ZSBsb2cgcmVjb3JkIG9mIHRoZSBpbnNlcnQgKi8KIAlpZiAoVU5JVl9MSUtFTFko bXRyICE9IE5VTEwpKSB7CiAJCXBhZ2VfY3VyX2luc2VydF9yZWNfd3JpdGVfbG9nKGluc2VydF9y ZWMsIHJlY19zaXplLApAQCAtMTY5Nyw2ICsxNzAzLDkgQEAgcGFnZV9jb3B5X3JlY19saXN0X2Vu ZF90b19jcmVhdGVkX3BhZ2UoCiAKIAkJaGVhcF90b3AgKz0gcmVjX3NpemU7CiAKKwkJcmVjX29m ZnNfbWFrZV92YWxpZChpbnNlcnRfcmVjLCBpbmRleCwgb2Zmc2V0cyk7CisJCWJ0cl9ibG9iX2Ri Z19hZGRfcmVjKGluc2VydF9yZWMsIGluZGV4LCBvZmZzZXRzLCAiY29weV9lbmQiKTsKKwogCQlw YWdlX2N1cl9pbnNlcnRfcmVjX3dyaXRlX2xvZyhpbnNlcnRfcmVjLCByZWNfc2l6ZSwgcHJldl9y ZWMsCiAJCQkJCSAgICAgIGluZGV4LCBtdHIpOwogCQlwcmV2X3JlYyA9IGluc2VydF9yZWM7CkBA IC0xOTQ0LDYgKzE5NTMsNyBAQCBwYWdlX2N1cl9kZWxldGVfcmVjKAogCXBhZ2VfZGlyX3Nsb3Rf c2V0X25fb3duZWQoY3VyX2Rpcl9zbG90LCBwYWdlX3ppcCwgY3VyX25fb3duZWQgLSAxKTsKIAog CS8qIDYuIEZyZWUgdGhlIG1lbW9yeSBvY2N1cGllZCBieSB0aGUgcmVjb3JkICovCisJYnRyX2Js b2JfZGJnX3JlbW92ZV9yZWMoY3VycmVudF9yZWMsIGluZGV4LCBvZmZzZXRzLCAiZGVsZXRlIik7 CiAJcGFnZV9tZW1fZnJlZShwYWdlLCBwYWdlX3ppcCwgY3VycmVudF9yZWMsIGluZGV4LCBvZmZz ZXRzKTsKIAogCS8qIDcuIE5vdyB3ZSBoYXZlIGRlY3JlbWVudGVkIHRoZSBudW1iZXIgb2Ygb3du ZWQgcmVjb3JkcyBvZiB0aGUgc2xvdC4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9k Yl9wbHVnaW4vcGFnZS9wYWdlMHBhZ2UuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Bh Z2UvcGFnZTBwYWdlLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwNzE0NDUz Ny1iN2Z4enpodjh1Y2V2MnFxCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9wYWdlL3BhZ2Uw cGFnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTA1NjIzLXFzOG9s Nnd6Y2psbGQzcm0KQEAgLTY4NSwxMiArNjg1LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmQo CiAJCQlpZiAoVU5JVl9VTkxJS0VMWQogCQkJICAgICghcGFnZV96aXBfcmVvcmdhbml6ZShuZXdf YmxvY2ssIGluZGV4LCBtdHIpKSkgewogCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZShuZXdfcGFn ZSwgaW5kZXgsCisJCQkJCQkgICAgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsKIAkJCQlpZiAoVU5J Vl9VTkxJS0VMWQogCQkJCSAgICAoIXBhZ2VfemlwX2RlY29tcHJlc3MobmV3X3BhZ2VfemlwLAog CQkJCQkJCSAgbmV3X3BhZ2UsIEZBTFNFKSkpIHsKIAkJCQkJdXRfZXJyb3I7CiAJCQkJfQogCQkJ CXV0X2FkKHBhZ2VfdmFsaWRhdGUobmV3X3BhZ2UsIGluZGV4KSk7CisJCQkJYnRyX2Jsb2JfZGJn X2FkZChuZXdfcGFnZSwgaW5kZXgsCisJCQkJCQkgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsKIAkJ CQlyZXR1cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9yZ2Fu aXplZDoKQEAgLTgwMywxMiArODA3LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9zdGFydCgKIAkJ CWlmIChVTklWX1VOTElLRUxZCiAJCQkgICAgKCFwYWdlX3ppcF9yZW9yZ2FuaXplKG5ld19ibG9j aywgaW5kZXgsIG10cikpKSB7CiAKKwkJCQlidHJfYmxvYl9kYmdfcmVtb3ZlKG5ld19wYWdlLCBp bmRleCwKKwkJCQkJCSAgICAiY29weV9zdGFydF9yZW9yZ19mYWlsIik7CiAJCQkJaWYgKFVOSVZf VU5MSUtFTFkKIAkJCQkgICAgKCFwYWdlX3ppcF9kZWNvbXByZXNzKG5ld19wYWdlX3ppcCwKIAkJ CQkJCQkgIG5ld19wYWdlLCBGQUxTRSkpKSB7CiAJCQkJCXV0X2Vycm9yOwogCQkJCX0KIAkJCQl1 dF9hZChwYWdlX3ZhbGlkYXRlKG5ld19wYWdlLCBpbmRleCkpOworCQkJCWJ0cl9ibG9iX2RiZ19h ZGQobmV3X3BhZ2UsIGluZGV4LAorCQkJCQkJICJjb3B5X3N0YXJ0X3Jlb3JnX2ZhaWwiKTsKIAkJ CQlyZXR1cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9yZ2Fu aXplZDoKQEAgLTEwODAsNiArMTA4OCw5IEBAIHBhZ2VfZGVsZXRlX3JlY19saXN0X2VuZCgKIAkv KiBSZW1vdmUgdGhlIHJlY29yZCBjaGFpbiBzZWdtZW50IGZyb20gdGhlIHJlY29yZCBjaGFpbiAq LwogCXBhZ2VfcmVjX3NldF9uZXh0KHByZXZfcmVjLCBwYWdlX2dldF9zdXByZW11bV9yZWMocGFn ZSkpOwogCisJYnRyX2Jsb2JfZGJnX29wKHBhZ2UsIHJlYywgaW5kZXgsICJkZWxldGVfZW5kIiwK KwkJCWJ0cl9ibG9iX2RiZ19yZW1vdmVfcmVjKTsKKwogCS8qIENhdGVuYXRlIHRoZSBkZWxldGVk IGNoYWluIHNlZ21lbnQgdG8gdGhlIHBhZ2UgZnJlZSBsaXN0ICovCiAKIAlwYWdlX3JlY19zZXRf bmV4dChsYXN0X3JlYywgcGFnZV9oZWFkZXJfZ2V0X3B0cihwYWdlLCBQQUdFX0ZSRUUpKTsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMHppcC5jJwot LS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMHppcC5jCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9y YWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMHppcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTQ0NTEsNiArNDQ1MSw4 IEBAIHBhZ2VfemlwX3Jlb3JnYW5pemUoCiAJLyogQ29weSB0aGUgb2xkIHBhZ2UgdG8gdGVtcG9y YXJ5IHNwYWNlICovCiAJYnVmX2ZyYW1lX2NvcHkodGVtcF9wYWdlLCBwYWdlKTsKIAorCWJ0cl9i bG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJ6aXBfcmVvcmciKTsKKwogCS8qIFJlY3JlYXRl IHRoZSBwYWdlOiBub3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFnZSAocG9zc2libGUKIAlzZWdt ZW50IGhlYWRlcnMsIG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMgcHJlc2VydmVkIGludGFjdCAq LwogCkBAIC00NTA5LDcgKzQ1MTEsNyBAQCBwYWdlX3ppcF9jb3B5X3JlY3MoCiAJbXRyX3QqCQkJ bXRyKQkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAqLwogewogCXV0X2FkKG10cl9tZW1vX2Nv bnRhaW5zX3BhZ2UobXRyLCBwYWdlLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7Ci0JdXRfYWQobXRy X21lbW9fY29udGFpbnNfcGFnZShtdHIsIChwYWdlX3QqKSBzcmMsIE1UUl9NRU1PX1BBR0VfWF9G SVgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgc3JjLCBNVFJfTUVNT19Q QUdFX1hfRklYKSk7CiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwogI2lmZGVm IFVOSVZfWklQX0RFQlVHCiAJLyogVGhlIEItdHJlZSBvcGVyYXRpb25zIHRoYXQgY2FsbCB0aGlz IGZ1bmN0aW9uIG1heSBzZXQKQEAgLTQ1NzksNiArNDU4MSw3IEBAIHBhZ2VfemlwX2NvcHlfcmVj cygKICNpZmRlZiBVTklWX1pJUF9ERUJVRwogCXV0X2EocGFnZV96aXBfdmFsaWRhdGUocGFnZV96 aXAsIHBhZ2UpKTsKICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLworCWJ0cl9ibG9iX2RiZ19h ZGQocGFnZSwgaW5kZXgsICJwYWdlX3ppcF9jb3B5X3JlY3MiKTsKIAogCXBhZ2VfemlwX2NvbXBy ZXNzX3dyaXRlX2xvZyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgsIG10cik7CiB9Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9yYWdlL2lubm9kYl9w bHVnaW4vcm93L3JvdzB1cGQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIw ODEwNTYyMy1xczhvbDZ3emNqbGxkM3JtCkBAIC00OTgsMTQgKzQ5OCw0OSBAQCByb3dfdXBkX3Jl Y19pbl9wbGFjZSgKIAluX2ZpZWxkcyA9IHVwZF9nZXRfbl9maWVsZHModXBkYXRlKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBuX2ZpZWxkczsgaSsrKSB7CisjaWZkZWYgVU5JVl9CTE9CX0RFQlVHCisJ CWJ0cl9ibG9iX2RiZ190CWI7CisJCWNvbnN0IGJ5dGUqCWZpZWxkX3JlZgk9IE5VTEw7CisjZW5k aWYgLyogVU5JVl9CTE9CX0RFQlVHICovCisKIAkJdXBkX2ZpZWxkID0gdXBkX2dldF9udGhfZmll bGQodXBkYXRlLCBpKTsKIAkJbmV3X3ZhbCA9ICYodXBkX2ZpZWxkLT5uZXdfdmFsKTsKIAkJdXRf YWQoIWRmaWVsZF9pc19leHQobmV3X3ZhbCkgPT0KIAkJICAgICAgIXJlY19vZmZzX250aF9leHRl cm4ob2Zmc2V0cywgdXBkX2ZpZWxkLT5maWVsZF9ubykpOworI2lmZGVmIFVOSVZfQkxPQl9ERUJV RworCQlpZiAoZGZpZWxkX2lzX2V4dChuZXdfdmFsKSkgeworCQkJdWxpbnQJbGVuOworCQkJZmll bGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKKwkJCXV0 X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVM RF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYgKz0gbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZf U0laRTsKKworCQkJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihy ZWMpKTsKKwkJCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCQkJ Yi5yZWZfZmllbGRfbm8gPSBpOworCQkJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80 KAorCQkJCWZpZWxkX3JlZiArIEJUUl9FWFRFUk5fUEFHRV9OTyk7CisJCQl1dF9hKGIucmVmX2Zp ZWxkX25vID49IGluZGV4LT5uX3VuaXEpOworCQkJYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoaW5k ZXgsICZiLCAidXBkX2luX3BsYWNlIik7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcg Ki8KIAogCQlyZWNfc2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIHVwZF9maWVsZC0+ZmllbGRf bm8sCiAJCQkJICBkZmllbGRfZ2V0X2RhdGEobmV3X3ZhbCksCiAJCQkJICBkZmllbGRfZ2V0X2xl bihuZXdfdmFsKSk7CisKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKwkJaWYgKGRmaWVsZF9pc19l eHQobmV3X3ZhbCkpIHsKKwkJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJ CQlmaWVsZF9yZWYgKyBCVFJfRVhURVJOX1BBR0VfTk8pOworCQkJYi5hbHdheXNfb3duZXIgPSBi Lm93bmVyID0gIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dCisJCQkJCQkgICAgICYgQlRSX0VY VEVSTl9PV05FUl9GTEFHKTsKKwkJCWIuZGVsID0gcmVjX2dldF9kZWxldGVkX2ZsYWcoCisJCQkJ cmVjLCByZWNfb2Zmc19jb21wKG9mZnNldHMpKTsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNl cnQoaW5kZXgsICZiLCAidXBkX2luX3BsYWNlIik7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0Jf REVCVUcgKi8KIAl9CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vc3J2L3NydjBzdGFydC5jJwotLS0g YS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vc3J2L3NydjBzdGFydC5jCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9yYWdl L2lubm9kYl9wbHVnaW4vc3J2L3NydjBzdGFydC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTEwNjEsNiArMTA2MSwxMiBA QCBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQpCiAJCSk7CiAjZW5kaWYK IAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCWZwcmludGYoc3RkZXJyLAorCQkiSW5ub0RCOiAh ISEhISEhISBVTklWX0JMT0JfREVCVUcgc3dpdGNoZWQgb24gISEhISEhISEhXG4iCisJCSJJbm5v REI6IFNlcnZlciByZXN0YXJ0IG1heSBmYWlsIHdpdGggVU5JVl9CTE9CX0RFQlVHXG4iKTsKKyNl bmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KKwogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwogCWZw cmludGYoc3RkZXJyLAogCQkiSW5ub0RCOiAhISEhISEhISBVTklWX1NZTkNfREVCVUcgc3dpdGNo ZWQgb24gISEhISEhISEhXG4iKTsKCg== --===============1381003334== 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/5.1-innodb/ # testament_sha1: c2e18acf671c021cc09623535ae61bcd8794b1bc # timestamp: 2011-02-08 12:56:33 +0200 # base_revision_id: vasil.dimov@stripped\ # b7fxzzhv8ucev2qq # # Begin bundle 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 AA== --===============1381003334==--