From: marko.makela Date: October 19 2010 6:08am Subject: bzr push into mysql-5.1-innodb branch (marko.makela:3637 to 3639) Bug#56680 List-Archive: http://lists.mysql.com/commits/121048 X-Bug: 56680 Message-Id: <201010190608.o9J61B8Z005788@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1590106423==" --===============1590106423== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM2MzkgTWFya28gTcOka2Vsw6QJMjAxMC0xMC0xOQogICAgICBCdWcgIzU2NjgwIHdyb25nIElu bm9EQiByZXN1bHRzIGZyb20gYSBjYXNlLWluc2Vuc2l0aXZlIGNvdmVyaW5nIGluZGV4CiAgICAg IAogICAgICByb3dfc2VhcmNoX2Zvcl9teXNxbCgpOiBXaGVuIGEgc2Vjb25kYXJ5IGluZGV4IHJl Y29yZCBtaWdodCBub3QgYmUKICAgICAgdmlzaWJsZSBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlv bidzIHJlYWQgdmlldyBhbmQgd2UgY29uc3VsdCB0aGUKICAgICAgY2x1c3RlcmVkIGluZGV4IGFu ZCBvcHRpb25hbGx5IHNvbWUgdW5kbyBsb2cgcmVjb3JkcywgcmV0dXJuIHRoZQogICAgICByZWxl dmFudCBjb2x1bW5zIG9mIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHRvIE15U1FMIGluc3Rl YWQgb2YgdGhlCiAgICAgIHNlY29uZGFyeSBpbmRleCByZWNvcmQuCiAgICAgIAogICAgICBpYnVm X2luc2VydF90b19pbmRleF9wYWdlX2xvdygpOiBOZXcgZnVuY3Rpb24sIHJlZmFjdG9yZWQgZnJv bQogICAgICBpYnVmX2luc2VydF90b19pbmRleF9wYWdlKCkuCiAgICAgIAogICAgICBpYnVmX2lu c2VydF90b19pbmRleF9wYWdlKCk6IFdoZW4gd2UgYXJlIGluc2VydGluZyBhIHJlY29yZCBpbiBw bGFjZQogICAgICBvZiBhIGRlbGV0ZS1tYXJrZWQgcmVjb3JkIGFuZCBzb21lIGZpZWxkcyBvZiB0 aGUgcmVjb3JkIGRpZmZlciwgdXBkYXRlCiAgICAgIHRoYXQgcmVjb3JkIGp1c3QgbGlrZSByb3df aW5zX3NlY19pbmRleF9lbnRyeV9ieV9tb2RpZnkoKSB3b3VsZCBkby4KICAgICAgCiAgICAgIGJ0 cl9jdXJfdXBkYXRlX2FsbG9jX3ppcCgpOiBNYWtlIHRoZSBmdW5jdGlvbiBwdWJsaWMuCiAgICAg IAogICAgICBteXNxbF9yb3dfdGVtcGxfdDogQWRkIGNsdXN0X3JlY19maWVsZF9uby4KICAgICAg CiAgICAgIHJvd19zZWxfc3RvcmVfbXlzcWxfcmVjKCksIHJvd19zZWxfcHVzaF9jYWNoZV9yb3df Zm9yX215c3FsKCk6IEFkZCB0aGUKICAgICAgZmxhZyByZWNfY2x1c3QsIGZvciByZXR1cm5pbmcg ZGF0YSBhdCBjbHVzdF9yZWNfZmllbGRfbm8gaW5zdGVhZCBvZgogICAgICByZWNfZmllbGRfbm8u IFJlc3VycmVjdCB0aGUgZGVidWcgYXNzZXJ0aW9uIHRoYXQgdGhlIHJlY29yZCBub3QgYmUKICAg ICAgbWFya2VkIGZvciBkZWxldGlvbi4gKEJ1ZyAjNTU2MjYpCiAgICAgIAogICAgICBbVU5JVl9E RUJVRyB8fCBVTklWX0lCVUZfREVCVUddIGlidWZfZGVidWcsIGJ1Zl9wYWdlX2dldF9nZW4oKSwK ICAgICAgYnVmX2ZsdXNoX3BhZ2VfdHJ5KCk6CiAgICAgIEltcGxlbWVudCBpbm5vZGJfY2hhbmdl X2J1ZmZlcmluZ19kZWJ1Zz0xIGZvciBldmljdGluZyBwYWdlcyBmcm9tIHRoZQogICAgICBidWZm ZXIgcG9vbCwgc28gdGhhdCBjaGFuZ2UgYnVmZmVyaW5nIHdpbGwgYmUgYXR0ZW1wdGVkIG1vcmUK ICAgICAgZnJlcXVlbnRseS4KCiAgICBhZGRlZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5v ZGJfcGx1Z2luL3IvaW5ub2RiX2J1ZzU2NjgwLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRl L2lubm9kYl9wbHVnaW4vdC9pbm5vZGJfYnVnNTY2ODAudGVzdAogICAgbW9kaWZpZWQ6CiAgICAg IHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL2J0ci9idHIwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwYnVm LmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwZmx1LmMKICAgICAgc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9pYnVmL2lidWYwaWJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNs dWRlL2J0cjBjdXIuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idWYwZmx1 LmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvaWJ1ZjBpYnVmLmgKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MG15c3FsLmgKICAgICAgc3RvcmFnZS9p bm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHVwZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdp bi9yb3cvcm93MG15c3FsLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwc2Vs LmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMKIDM2MzggTWFya28g TcOka2Vsw6QJMjAxMC0xMC0xOQogICAgICBCdWcgIzU2NjgwIHdyb25nIElubm9EQiByZXN1bHRz IGZyb20gYSBjYXNlLWluc2Vuc2l0aXZlIGNvdmVyaW5nIGluZGV4CiAgICAgIAogICAgICByb3df c2VhcmNoX2Zvcl9teXNxbCgpOiBXaGVuIGEgc2Vjb25kYXJ5IGluZGV4IHJlY29yZCBtaWdodCBu b3QgYmUKICAgICAgdmlzaWJsZSBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbidzIHJlYWQgdmll dyBhbmQgd2UgY29uc3VsdCB0aGUKICAgICAgY2x1c3RlcmVkIGluZGV4IGFuZCBvcHRpb25hbGx5 IHNvbWUgdW5kbyBsb2cgcmVjb3JkcywgcmV0dXJuIHRoZQogICAgICByZWxldmFudCBjb2x1bW5z IG9mIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHRvIE15U1FMIGluc3RlYWQgb2YgdGhlCiAg ICAgIHNlY29uZGFyeSBpbmRleCByZWNvcmQuCiAgICAgIAogICAgICBSRUNfSU5GT19ERUxFVEVE X0ZMQUc6IE1vdmUgdGhlIGRlZmluaXRpb24gZnJvbSByZW0wcmVjLmljIHRvIHJlbTByZWMuaC4K ICAgICAgCiAgICAgIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93KCk6IE5ldyBmdW5jdGlv biwgcmVmYWN0b3JlZCBmcm9tCiAgICAgIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2UoKS4KICAg ICAgCiAgICAgIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2UoKTogV2hlbiB3ZSBhcmUgaW5zZXJ0 aW5nIGEgcmVjb3JkIGluIHBsYWNlCiAgICAgIG9mIGEgZGVsZXRlLW1hcmtlZCByZWNvcmQgYW5k IHNvbWUgZmllbGRzIG9mIHRoZSByZWNvcmQgZGlmZmVyLCB1cGRhdGUKICAgICAgdGhhdCByZWNv cmQganVzdCBsaWtlIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeSgpIHdvdWxkIGRv LgogICAgICAKICAgICAgbXlzcWxfcm93X3RlbXBsX3Q6IEFkZCBjbHVzdF9yZWNfZmllbGRfbm8u CiAgICAgIAogICAgICByb3dfc2VsX3N0b3JlX215c3FsX3JlYygpLCByb3dfc2VsX3B1c2hfY2Fj aGVfcm93X2Zvcl9teXNxbCgpOiBBZGQgdGhlCiAgICAgIGZsYWcgcmVjX2NsdXN0LCBmb3IgcmV0 dXJuaW5nIGRhdGEgYXQgY2x1c3RfcmVjX2ZpZWxkX25vIGluc3RlYWQgb2YKICAgICAgcmVjX2Zp ZWxkX25vLiBSZXN1cnJlY3QgdGhlIGRlYnVnIGFzc2VydGlvbiB0aGF0IHRoZSByZWNvcmQgbm90 IGJlCiAgICAgIG1hcmtlZCBmb3IgZGVsZXRpb24uIChCdWcgIzU1NjI2KQogICAgICAKICAgICAg YnVmX0xSVV9mcmVlX2Jsb2NrKCk6IFJlZmFjdG9yZWQgZnJvbQogICAgICBidWZfTFJVX3NlYXJj aF9hbmRfZnJlZV9ibG9jaygpLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlCiAgICAgIGlubm9kYl9j aGFuZ2VfYnVmZmVyaW5nX2RlYnVnIGRpYWdub3N0aWNzLgogICAgICAKICAgICAgW1VOSVZfREVC VUcgfHwgVU5JVl9JQlVGX0RFQlVHXSBpYnVmX2RlYnVnLCBidWZfcGFnZV9nZXRfZ2VuKCksCiAg ICAgIGJ1Zl9mbHVzaF9wYWdlX3RyeSgpOgogICAgICBJbXBsZW1lbnQgaW5ub2RiX2NoYW5nZV9i dWZmZXJpbmdfZGVidWc9MSBmb3IgZXZpY3RpbmcgcGFnZXMgZnJvbSB0aGUKICAgICAgYnVmZmVy IHBvb2wsIHNvIHRoYXQgY2hhbmdlIGJ1ZmZlcmluZyB3aWxsIGJlIGF0dGVtcHRlZCBtb3JlCiAg ICAgIGZyZXF1ZW50bHkuCgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri L3IvaW5ub2RiX2J1ZzU2NjgwLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90 L2lubm9kYl9idWc1NjY4MC50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9idWYvYnVmMGJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9o YW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVm LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBmbHUuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9pYnVmMGlidWYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv cm93MHVwZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmMKIDM2MzcgVmFzaWwgRGltb3YJMjAxMC0xMC0xOAogICAgICBGaXggQnVnIzU3MjUy IGRpc2FibGluZyBpbm5vYmFzZV9zdGF0c19vbl9tZXRhZGF0YSBkaXNhYmxlcyBBTkFMWVpFCiAg ICAgIAogICAgICBUaGlzIGlzIGEgbWVyZ2UgZnJvbSA1LjEvYnVpbHRpbiB0byA1LjEvcGx1Z2lu IG9mOgogICAgICAKICAgICAgICAtLS0tLS0tLS0tLS0tLQogICAgICAgIHJldmlzaW9uLWlkOiB2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTA0ODExLW53cWhnOXZhdjE3a2w1czEKICAg ICAgICBjb21taXR0ZXI6IFZhc2lsIERpbW92IDx2YXNpbC5kaW1vdkBvcmFjbGUuY29tPgogICAg ICAgIHRpbWVzdGFtcDogTW9uIDIwMTAtMTAtMTggMTM6NDg6MTEgKzAzMDAKICAgICAgICBtZXNz YWdlOgogICAgICAgICAgRml4IEJ1ZyM1NzI1MiBkaXNhYmxpbmcgaW5ub2Jhc2Vfc3RhdHNfb25f bWV0YWRhdGEgZGlzYWJsZXMgQU5BTFlaRQogICAgICAgICAgCiAgICAgICAgICBJbiBvcmRlciB0 byBmaXggdGhpcyBidWcgd2UgbmVlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIGhhX2lubm9iYXNl OjppbmZvKCkKICAgICAgICAgIGhhcyBiZWVuIGNhbGxlZCBmcm9tIDo6YW5hbHl6ZSgpIG9yIG5v dC4gUmVuYW1lIDo6aW5mbygpIHRvIDo6aW5mb19sb3coKQogICAgICAgICAgYW5kIGFkZCBhIGJv b2xlYW4gcGFyYW1ldGVyIHRoYXQgdGVsbHMgd2hldGhlciB0aGUgY2FsbCBpcyBmcm9tIDo6YW5h bHl6ZSgpCiAgICAgICAgICBvciBub3QuIENyZWF0ZSBhIG5ldyBzaW1wbGUgOjppbmZvKCkgdGhh dCBqdXN0IGNhbGxzCiAgICAgICAgICA6OmluZm9fbG93KGZhbHNlID0+IG5vdCBjYWxsZWQgZnJv bSBhbmFseXplKS4gRnJvbSA6OmFuYWx5emUoKSBpbnN0ZWFkIG9mCiAgICAgICAgICA6OmluZm8o KSBjYWxsIDo6aW5mb19sb3codHJ1ZSA9PiBjYWxsZWQgZnJvbSBhbmFseXplKS4KICAgICAgICAg IAogICAgICAgICAgQXBwcm92ZWQgYnk6CUppbW15IChyYjovLzQ4NykKICAgICAgICAtLS0tLS0t LS0tLS0tLQoKICAgIGFkZGVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4v ci9pbm5vZGJfYnVnNTcyNTIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3Bs dWdpbi90L2lubm9kYl9idWc1NzI1Mi50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9p bm5vZGJfcGx1Z2luL0NoYW5nZUxvZwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxl ci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRsZXIvaGFfaW5u b2RiLmgKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1 ZzU2NjgwLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVn NTY2ODAucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9z dWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnNTY2ODAucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTAsMCArMSwxMDIg QEAKK1NFVCBHTE9CQUwgdHhfaXNvbGF0aW9uPSdSRVBFQVRBQkxFLVJFQUQnOworQ1JFQVRFIFRB QkxFIGJ1ZzU2NjgwKAorYSBJTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksCitiIENIQVIo MSksCitjIElOVCwKK0lOREVYKGIpKQorRU5HSU5FPUlubm9EQjsKK0lOU0VSVCBJTlRPIGJ1ZzU2 NjgwIFZBTFVFUygwLCd4JywxKTsKK0JFR0lOOworU0VMRUNUIGIgRlJPTSBidWc1NjY4MDsKK2IK K3gKK0JFR0lOOworVVBEQVRFIGJ1ZzU2NjgwIFNFVCBiPSdYJzsKK1NFTEVDVCBiIEZST00gYnVn NTY2ODA7CitiCit4CitTRUxFQ1QgKiBGUk9NIGJ1ZzU2NjgwOworYQliCWMKKzEJeAkxCitST0xM QkFDSzsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODA7CitiCit4CitTRVQgR0xPQkFMIHR4X2lzb2xh dGlvbj0nUkVBRC1VTkNPTU1JVFRFRCc7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxi LGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9N IGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2 ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lO U0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElO VE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1 NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNF TEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAs YixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJP TSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2 NjgwOworQkVHSU47CitTRUxFQ1QgYiBGUk9NIGJ1ZzU2NjgwIExJTUlUIDI7CitiCit4Cit4CitC RUdJTjsKK0RFTEVURSBGUk9NIGJ1ZzU2NjgwIFdIRVJFIGE9MTsKK0lOU0VSVCBJTlRPIGJ1ZzU2 NjgwIFZBTFVFUygxLCdYJywxKTsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMzsKK2IK K1gKK3gKK3gKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKK2IKK3gKK3gKK0NIRUNL IFRBQkxFIGJ1ZzU2NjgwOworVGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3QuYnVnNTY2 ODAJY2hlY2sJc3RhdHVzCU9LCitST0xMQkFDSzsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElN SVQgMjsKK2IKK3gKK3gKK0NIRUNLIFRBQkxFIGJ1ZzU2NjgwOworVGFibGUJT3AJTXNnX3R5cGUJ TXNnX3RleHQKK3Rlc3QuYnVnNTY2ODAJY2hlY2sJc3RhdHVzCU9LCitTRUxFQ1QgYiBGUk9NIGJ1 ZzU2NjgwIExJTUlUIDI7CitiCit4Cit4CitDUkVBVEUgVEFCTEUgYnVnNTY2ODBfMigKK2EgSU5U IEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLAorYiBWQVJDSEFSKDIpIENIQVJTRVQgbGF0aW4x IENPTExBVEUgbGF0aW4xX2dlcm1hbjJfY2ksCitjIElOVCwKK0lOREVYKGIpKQorRU5HSU5FPUlu bm9EQjsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwXzIgU0VMRUNUIDAsX2xhdGluMSAweGRmLGMgRlJP TSBidWc1NjY4MDsKK0JFR0lOOworU0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQg MjsKK0hFWChiKQorREYKK0RGCitERUxFVEUgRlJPTSBidWc1NjY4MF8yIFdIRVJFIGE9MTsKK0lO U0VSVCBJTlRPIGJ1ZzU2NjgwXzIgVkFMVUVTKDEsJ1NTJywxKTsKK1NFTEVDVCBIRVgoYikgRlJP TSBidWc1NjY4MF8yIExJTUlUIDM7CitIRVgoYikKKzUzNTMKK0RGCitERgorQ0hFQ0sgVEFCTEUg YnVnNTY2ODBfMjsKK1RhYmxlCU9wCU1zZ190eXBlCU1zZ190ZXh0Cit0ZXN0LmJ1ZzU2NjgwXzIJ Y2hlY2sJc3RhdHVzCU9LCitERUxFVEUgRlJPTSBidWc1NjY4MF8yIFdIRVJFIGE9MTsKK0lOU0VS VCBJTlRPIGJ1ZzU2NjgwXzIgVkFMVUVTKDEsX2xhdGluMSAweGRmLDEpOworU0VMRUNUIEhFWChi KSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMzsKK0hFWChiKQorREYKK0RGCitERgorQ0hFQ0sgVEFC TEUgYnVnNTY2ODBfMjsKK1RhYmxlCU9wCU1zZ190eXBlCU1zZ190ZXh0Cit0ZXN0LmJ1ZzU2Njgw XzIJY2hlY2sJc3RhdHVzCU9LCitEUk9QIFRBQkxFIGJ1ZzU2NjgwXzI7CitEUk9QIFRBQkxFIGJ1 ZzU2NjgwOwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2Ri X2J1ZzU2NjgwLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1 ZzU2NjgwLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1 aXRlL2lubm9kYi90L2lubm9kYl9idWc1NjY4MC50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTAsMCArMSwxMzAgQEAK KyMKKyMgQnVnICM1NjY4MCBJbm5vREIgbWF5IHJldHVybiB3cm9uZyByZXN1bHRzIGZyb20gYSBj YXNlLWluc2Vuc2l0aXZlIGluZGV4CisjCistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX2lubm9kYi5p bmMKKworLS0gZGlzYWJsZV9xdWVyeV9sb2cKK1NFVCBAdHhfaXNvbGF0aW9uX29yaWcgPSBAQHR4 X2lzb2xhdGlvbjsKKyMgVGhlIGZsYWcgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWcgaXMg b25seSBhdmFpbGFibGUgaW4gZGVidWcgYnVpbGRzLgorIyBJdCBpbnN0cnVjdHMgSW5ub0RCIHRv IHRyeSB0byBldmljdCBwYWdlcyBmcm9tIHRoZSBidWZmZXIgcG9vbCB3aGVuCisjIGNoYW5nZSBi dWZmZXJpbmcgaXMgcG9zc2libGUsIHNvIHRoYXQgdGhlIGNoYW5nZSBidWZmZXIgd2lsbCBiZSB1 c2VkCisjIHdoZW5ldmVyIHBvc3NpYmxlLgorLS0gZXJyb3IgMCxFUl9VTktOT1dOX1NZU1RFTV9W QVJJQUJMRQorU0VUIEBpbm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1Z19vcmlnID0gQEBpbm5v ZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZzsKKy0tIGVycm9yIDAsRVJfVU5LTk9XTl9TWVNURU1f VkFSSUFCTEUKK1NFVCBHTE9CQUwgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWcgPSAxOwor LS0gZW5hYmxlX3F1ZXJ5X2xvZworU0VUIEdMT0JBTCB0eF9pc29sYXRpb249J1JFUEVBVEFCTEUt UkVBRCc7CisKK0NSRUFURSBUQUJMRSBidWc1NjY4MCgKKyAgICAgICBhIElOVCBBVVRPX0lOQ1JF TUVOVCBQUklNQVJZIEtFWSwKKyAgICAgICBiIENIQVIoMSksCisgICAgICAgYyBJTlQsCisgICAg ICAgSU5ERVgoYikpCitFTkdJTkU9SW5ub0RCOworCitJTlNFUlQgSU5UTyBidWc1NjY4MCBWQUxV RVMoMCwneCcsMSk7CitCRUdJTjsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODA7CisKK2Nvbm5lY3Qg KGNvbjEsbG9jYWxob3N0LHJvb3QsLCk7Citjb25uZWN0aW9uIGNvbjE7CitCRUdJTjsKK1VQREFU RSBidWc1NjY4MCBTRVQgYj0nWCc7CisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKyMgVGhpcyBzaG91 bGQgcmV0dXJuIHRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZSAneCcsIGJ1dCB3b3VsZCByZXR1cm4g J1gnCisjIGR1ZSB0byBhIGJ1ZyBpbiByb3dfc2VhcmNoX2Zvcl9teXNxbCgpLgorU0VMRUNUIGIg RlJPTSBidWc1NjY4MDsKKyMgVGhpcyB3b3VsZCBhbHdheXMgcmV0dXJuIHRoZSBsYXN0IGNvbW1p dHRlZCB2YWx1ZSAneCcuCitTRUxFQ1QgKiBGUk9NIGJ1ZzU2NjgwOworCitjb25uZWN0aW9uIGNv bjE7CitST0xMQkFDSzsKK2Rpc2Nvbm5lY3QgY29uMTsKKworY29ubmVjdGlvbiBkZWZhdWx0Owor CitTRUxFQ1QgYiBGUk9NIGJ1ZzU2NjgwOworCisjIEZvciB0aGUgcmVzdCBvZiB0aGlzIHRlc3Qs IHVzZSB0aGUgUkVBRCBVTkNPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwKKyMgdG8gc2VlIHdoYXQg ZXhpc3RzIGluIHRoZSBzZWNvbmRhcnkgaW5kZXguCitTRVQgR0xPQkFMIHR4X2lzb2xhdGlvbj0n UkVBRC1VTkNPTU1JVFRFRCc7CisKKyMgQ3JlYXRlIGVub3VnaCByb3dzIGZvciB0aGUgdGFibGUs IHNvIHRoYXQgdGhlIGluc2VydCBidWZmZXIgd2lsbCBiZQorIyB1c2VkIGZvciBtb2RpZnlpbmcg dGhlIHNlY29uZGFyeSBpbmRleCBwYWdlLiBUaGVyZSBtdXN0IGJlIG11bHRpcGxlCisjIGluZGV4 IHBhZ2VzLCBiZWNhdXNlIGNoYW5nZXMgdG8gdGhlIHJvb3QgcGFnZSBhcmUgbmV2ZXIgYnVmZmVy ZWQuCisKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOwor SU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQg SU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1 ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAg U0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1Qg MCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBG Uk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVn NTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsK K0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJU IElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CisKK0JFR0lOOworU0VM RUNUIGIgRlJPTSBidWc1NjY4MCBMSU1JVCAyOworCitjb25uZWN0IChjb24xLGxvY2FsaG9zdCxy b290LCwpOworY29ubmVjdGlvbiBjb24xOworQkVHSU47CitERUxFVEUgRlJPTSBidWc1NjY4MCBX SEVSRSBhPTE7CisjIFRoaXMgc2hvdWxkIGJlIGJ1ZmZlcmVkLCBpZiBpbm5vZGJfY2hhbmdlX2J1 ZmZlcmluZ19kZWJ1ZyA9IDEgaXMgaW4gZWZmZWN0LgorSU5TRVJUIElOVE8gYnVnNTY2ODAgVkFM VUVTKDEsJ1gnLDEpOworCisjIFRoaXMgc2hvdWxkIGZvcmNlIGFuIGluc2VydCBidWZmZXIgbWVy Z2UsIGFuZCByZXR1cm4gJ1gnIGluIHRoZSBmaXJzdCByb3cuCitTRUxFQ1QgYiBGUk9NIGJ1ZzU2 NjgwIExJTUlUIDM7CisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKK1NFTEVDVCBiIEZST00gYnVnNTY2 ODAgTElNSVQgMjsKK0NIRUNLIFRBQkxFIGJ1ZzU2NjgwOworCitjb25uZWN0aW9uIGNvbjE7CitS T0xMQkFDSzsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKK0NIRUNLIFRBQkxFIGJ1 ZzU2NjgwOworCitjb25uZWN0aW9uIGRlZmF1bHQ7CitkaXNjb25uZWN0IGNvbjE7CisKK1NFTEVD VCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKKworQ1JFQVRFIFRBQkxFIGJ1ZzU2NjgwXzIoCisg ICAgICAgYSBJTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksCisgICAgICAgYiBWQVJDSEFS KDIpIENIQVJTRVQgbGF0aW4xIENPTExBVEUgbGF0aW4xX2dlcm1hbjJfY2ksCisgICAgICAgYyBJ TlQsCisgICAgICAgSU5ERVgoYikpCitFTkdJTkU9SW5ub0RCOworCitJTlNFUlQgSU5UTyBidWc1 NjY4MF8yIFNFTEVDVCAwLF9sYXRpbjEgMHhkZixjIEZST00gYnVnNTY2ODA7CisKK0JFR0lOOwor U0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMjsKK0RFTEVURSBGUk9NIGJ1ZzU2 NjgwXzIgV0hFUkUgYT0xOworIyBUaGlzIHNob3VsZCBiZSBidWZmZXJlZCwgaWYgaW5ub2RiX2No YW5nZV9idWZmZXJpbmdfZGVidWcgPSAxIGlzIGluIGVmZmVjdC4KK0lOU0VSVCBJTlRPIGJ1ZzU2 NjgwXzIgVkFMVUVTKDEsJ1NTJywxKTsKKworIyBUaGlzIHNob3VsZCBmb3JjZSBhbiBpbnNlcnQg YnVmZmVyIG1lcmdlLCBhbmQgcmV0dXJuICdTUycgaW4gdGhlIGZpcnN0IHJvdy4KK1NFTEVDVCBI RVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlUIDM7CitDSEVDSyBUQUJMRSBidWc1NjY4MF8yOwor CitERUxFVEUgRlJPTSBidWc1NjY4MF8yIFdIRVJFIGE9MTsKKyMgVGhpcyBzaG91bGQgYmUgYnVm ZmVyZWQsIGlmIGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnID0gMSBpcyBpbiBlZmZlY3Qu CitJTlNFUlQgSU5UTyBidWc1NjY4MF8yIFZBTFVFUygxLF9sYXRpbjEgMHhkZiwxKTsKKworIyBU aGlzIHNob3VsZCBmb3JjZSBhbiBpbnNlcnQgYnVmZmVyIG1lcmdlLCBhbmQgcmV0dXJuIDB4ZGYg aW4gdGhlIGZpcnN0IHJvdy4KK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlUIDM7 CitDSEVDSyBUQUJMRSBidWc1NjY4MF8yOworCitEUk9QIFRBQkxFIGJ1ZzU2NjgwXzI7CitEUk9Q IFRBQkxFIGJ1ZzU2NjgwOworCistLSBkaXNhYmxlX3F1ZXJ5X2xvZworU0VUIEdMT0JBTCB0eF9p c29sYXRpb24gPSBAdHhfaXNvbGF0aW9uX29yaWc7CistLSBlcnJvciAwLCBFUl9VTktOT1dOX1NZ U1RFTV9WQVJJQUJMRQorU0VUIEdMT0JBTCBpbm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZyA9 IEBpbm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1Z19vcmlnOwoKPT09IGFkZGVkIGZpbGUgJ215 c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi9yL2lubm9kYl9idWc1NjY4MC5yZXN1bHQnCi0t LSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi9yL2lubm9kYl9idWc1NjY4MC5yZXN1 bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9k Yl9wbHVnaW4vci9pbm5vZGJfYnVnNTY2ODAucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTAsMCArMSwxMDkgQEAK K1NFVCBHTE9CQUwgdHhfaXNvbGF0aW9uPSdSRVBFQVRBQkxFLVJFQUQnOworU0VUIEdMT0JBTCBp bm5vZGJfZmlsZV9mb3JtYXQ9QmFycmFjdWRhOworU0VUIEdMT0JBTCBpbm5vZGJfZmlsZV9wZXJf dGFibGU9b247CitDUkVBVEUgVEFCTEUgYnVnNTY2ODAoCithIElOVCBBVVRPX0lOQ1JFTUVOVCBQ UklNQVJZIEtFWSwKK2IgQ0hBUigxKSwKK2MgSU5ULAorSU5ERVgoYikpCitFTkdJTkU9SW5ub0RC OworSU5TRVJUIElOVE8gYnVnNTY2ODAgVkFMVUVTKDAsJ3gnLDEpOworQkVHSU47CitTRUxFQ1Qg YiBGUk9NIGJ1ZzU2NjgwOworYgoreAorQkVHSU47CitVUERBVEUgYnVnNTY2ODAgU0VUIGI9J1gn OworU0VMRUNUIGIgRlJPTSBidWc1NjY4MDsKK2IKK3gKK1NFTEVDVCAqIEZST00gYnVnNTY2ODA7 CithCWIJYworMQl4CTEKK1JPTExCQUNLOworU0VMRUNUIGIgRlJPTSBidWc1NjY4MDsKK2IKK3gK K1NFVCBHTE9CQUwgdHhfaXNvbGF0aW9uPSdSRUFELVVOQ09NTUlUVEVEJzsKK0lOU0VSVCBJTlRP IGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2 ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxF Q1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIs YyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00g YnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4 MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5T RVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5U TyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2 NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VM RUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitCRUdJTjsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAg TElNSVQgMjsKK2IKK3gKK3gKK0JFR0lOOworREVMRVRFIEZST00gYnVnNTY2ODAgV0hFUkUgYT0x OworSU5TRVJUIElOVE8gYnVnNTY2ODAgVkFMVUVTKDEsJ1gnLDEpOworU0VMRUNUIGIgRlJPTSBi dWc1NjY4MCBMSU1JVCAzOworYgorWAoreAoreAorU0VMRUNUIGIgRlJPTSBidWc1NjY4MCBMSU1J VCAyOworYgoreAoreAorQ0hFQ0sgVEFCTEUgYnVnNTY2ODA7CitUYWJsZQlPcAlNc2dfdHlwZQlN c2dfdGV4dAordGVzdC5idWc1NjY4MAljaGVjawlzdGF0dXMJT0sKK1JPTExCQUNLOworU0VMRUNU IGIgRlJPTSBidWc1NjY4MCBMSU1JVCAyOworYgoreAoreAorQ0hFQ0sgVEFCTEUgYnVnNTY2ODA7 CitUYWJsZQlPcAlNc2dfdHlwZQlNc2dfdGV4dAordGVzdC5idWc1NjY4MAljaGVjawlzdGF0dXMJ T0sKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKK2IKK3gKK3gKK0NSRUFURSBUQUJM RSBidWc1NjY4MF8yKAorYSBJTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksCitiIFZBUkNI QVIoMikgQ0hBUlNFVCBsYXRpbjEgQ09MTEFURSBsYXRpbjFfZ2VybWFuMl9jaSwKK2MgSU5ULAor SU5ERVgoYikpCitFTkdJTkU9SW5ub0RCOworSU5TRVJUIElOVE8gYnVnNTY2ODBfMiBTRUxFQ1Qg MCxfbGF0aW4xIDB4ZGYsYyBGUk9NIGJ1ZzU2NjgwOworQkVHSU47CitTRUxFQ1QgSEVYKGIpIEZS T00gYnVnNTY2ODBfMiBMSU1JVCAyOworSEVYKGIpCitERgorREYKK0RFTEVURSBGUk9NIGJ1ZzU2 NjgwXzIgV0hFUkUgYT0xOworSU5TRVJUIElOVE8gYnVnNTY2ODBfMiBWQUxVRVMoMSwnU1MnLDEp OworU0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMzsKK0hFWChiKQorNTM1Mwor REYKK0RGCitDSEVDSyBUQUJMRSBidWc1NjY4MF8yOworVGFibGUJT3AJTXNnX3R5cGUJTXNnX3Rl eHQKK3Rlc3QuYnVnNTY2ODBfMgljaGVjawlzdGF0dXMJT0sKK0FMVEVSIFRBQkxFIGJ1ZzU2Njgw XzIgUk9XX0ZPUk1BVD1DT01QUkVTU0VEIEtFWV9CTE9DS19TSVpFPTE7CitTRUxFQ1QgSEVYKGIp IEZST00gYnVnNTY2ODBfMiBMSU1JVCAyOworSEVYKGIpCis1MzUzCitERgorREVMRVRFIEZST00g YnVnNTY2ODBfMiBXSEVSRSBhPTE7CitJTlNFUlQgSU5UTyBidWc1NjY4MF8yIFZBTFVFUygxLF9s YXRpbjEgMHhkZiwxKTsKK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlUIDM7CitI RVgoYikKK0RGCitERgorREYKK0NIRUNLIFRBQkxFIGJ1ZzU2NjgwXzI7CitUYWJsZQlPcAlNc2df dHlwZQlNc2dfdGV4dAordGVzdC5idWc1NjY4MF8yCWNoZWNrCXN0YXR1cwlPSworRFJPUCBUQUJM RSBidWc1NjY4MF8yOworRFJPUCBUQUJMRSBidWc1NjY4MDsKCj09PSBhZGRlZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGJfYnVnNTY2ODAudGVzdCcKLS0tIGEv bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiX2J1ZzU2NjgwLnRlc3QJMTk3 MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVn aW4vdC9pbm5vZGJfYnVnNTY2ODAudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEwMTAxOTA2MDQxNS1iajN1NmV3azAyMm1rNG5yCkBAIC0wLDAgKzEsMTQyIEBACisjCisjIEJ1 ZyAjNTY2ODAgSW5ub0RCIG1heSByZXR1cm4gd3JvbmcgcmVzdWx0cyBmcm9tIGEgY2FzZS1pbnNl bnNpdGl2ZSBpbmRleAorIworLS0gc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGJfcGx1Z2luLmlu YworCistLSBkaXNhYmxlX3F1ZXJ5X2xvZworU0VUIEB0eF9pc29sYXRpb25fb3JpZyA9IEBAdHhf aXNvbGF0aW9uOworU0VUIEBpbm5vZGJfZmlsZV9wZXJfdGFibGVfb3JpZyA9IEBAaW5ub2RiX2Zp bGVfcGVyX3RhYmxlOworU0VUIEBpbm5vZGJfZmlsZV9mb3JtYXRfb3JpZyA9IEBAaW5ub2RiX2Zp bGVfZm9ybWF0OworU0VUIEBpbm5vZGJfZmlsZV9mb3JtYXRfY2hlY2tfb3JpZyA9IEBAaW5ub2Ri X2ZpbGVfZm9ybWF0X2NoZWNrOworIyBUaGUgZmxhZyBpbm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19k ZWJ1ZyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBkZWJ1ZyBidWlsZHMuCisjIEl0IGluc3RydWN0cyBJ bm5vREIgdG8gdHJ5IHRvIGV2aWN0IHBhZ2VzIGZyb20gdGhlIGJ1ZmZlciBwb29sIHdoZW4KKyMg Y2hhbmdlIGJ1ZmZlcmluZyBpcyBwb3NzaWJsZSwgc28gdGhhdCB0aGUgY2hhbmdlIGJ1ZmZlciB3 aWxsIGJlIHVzZWQKKyMgd2hlbmV2ZXIgcG9zc2libGUuCistLSBlcnJvciAwLEVSX1VOS05PV05f U1lTVEVNX1ZBUklBQkxFCitTRVQgQGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnX29yaWcg PSBAQGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnOworLS0gZXJyb3IgMCxFUl9VTktOT1dO X1NZU1RFTV9WQVJJQUJMRQorU0VUIEdMT0JBTCBpbm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1 ZyA9IDE7CistLSBlbmFibGVfcXVlcnlfbG9nCitTRVQgR0xPQkFMIHR4X2lzb2xhdGlvbj0nUkVQ RUFUQUJMRS1SRUFEJzsKK1NFVCBHTE9CQUwgaW5ub2RiX2ZpbGVfZm9ybWF0PUJhcnJhY3VkYTsK K1NFVCBHTE9CQUwgaW5ub2RiX2ZpbGVfcGVyX3RhYmxlPW9uOworCitDUkVBVEUgVEFCTEUgYnVn NTY2ODAoCisgICAgICAgYSBJTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksCisgICAgICAg YiBDSEFSKDEpLAorICAgICAgIGMgSU5ULAorICAgICAgIElOREVYKGIpKQorRU5HSU5FPUlubm9E QjsKKworSU5TRVJUIElOVE8gYnVnNTY2ODAgVkFMVUVTKDAsJ3gnLDEpOworQkVHSU47CitTRUxF Q1QgYiBGUk9NIGJ1ZzU2NjgwOworCitjb25uZWN0IChjb24xLGxvY2FsaG9zdCxyb290LCwpOwor Y29ubmVjdGlvbiBjb24xOworQkVHSU47CitVUERBVEUgYnVnNTY2ODAgU0VUIGI9J1gnOworCitj b25uZWN0aW9uIGRlZmF1bHQ7CisjIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgbGFzdCBjb21taXR0 ZWQgdmFsdWUgJ3gnLCBidXQgd291bGQgcmV0dXJuICdYJworIyBkdWUgdG8gYSBidWcgaW4gcm93 X3NlYXJjaF9mb3JfbXlzcWwoKS4KK1NFTEVDVCBiIEZST00gYnVnNTY2ODA7CisjIFRoaXMgd291 bGQgYWx3YXlzIHJldHVybiB0aGUgbGFzdCBjb21taXR0ZWQgdmFsdWUgJ3gnLgorU0VMRUNUICog RlJPTSBidWc1NjY4MDsKKworY29ubmVjdGlvbiBjb24xOworUk9MTEJBQ0s7CitkaXNjb25uZWN0 IGNvbjE7CisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKworU0VMRUNUIGIgRlJPTSBidWc1NjY4MDsK KworIyBGb3IgdGhlIHJlc3Qgb2YgdGhpcyB0ZXN0LCB1c2UgdGhlIFJFQUQgVU5DT01NSVRURUQg aXNvbGF0aW9uIGxldmVsCisjIHRvIHNlZSB3aGF0IGV4aXN0cyBpbiB0aGUgc2Vjb25kYXJ5IGlu ZGV4LgorU0VUIEdMT0JBTCB0eF9pc29sYXRpb249J1JFQUQtVU5DT01NSVRURUQnOworCisjIENy ZWF0ZSBlbm91Z2ggcm93cyBmb3IgdGhlIHRhYmxlLCBzbyB0aGF0IHRoZSBpbnNlcnQgYnVmZmVy IHdpbGwgYmUKKyMgdXNlZCBmb3IgbW9kaWZ5aW5nIHRoZSBzZWNvbmRhcnkgaW5kZXggcGFnZS4g VGhlcmUgbXVzdCBiZSBtdWx0aXBsZQorIyBpbmRleCBwYWdlcywgYmVjYXVzZSBjaGFuZ2VzIHRv IHRoZSByb290IHBhZ2UgYXJlIG5ldmVyIGJ1ZmZlcmVkLgorCitJTlNFUlQgSU5UTyBidWc1NjY4 MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVD VCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixj IEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBi dWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2Njgw OworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNF UlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRP IGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2 ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxF Q1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIs YyBGUk9NIGJ1ZzU2NjgwOworCitCRUdJTjsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQg MjsKKworY29ubmVjdCAoY29uMSxsb2NhbGhvc3Qscm9vdCwsKTsKK2Nvbm5lY3Rpb24gY29uMTsK K0JFR0lOOworREVMRVRFIEZST00gYnVnNTY2ODAgV0hFUkUgYT0xOworIyBUaGlzIHNob3VsZCBi ZSBidWZmZXJlZCwgaWYgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWcgPSAxIGlzIGluIGVm ZmVjdC4KK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFZBTFVFUygxLCdYJywxKTsKKworIyBUaGlzIHNo b3VsZCBmb3JjZSBhbiBpbnNlcnQgYnVmZmVyIG1lcmdlLCBhbmQgcmV0dXJuICdYJyBpbiB0aGUg Zmlyc3Qgcm93LgorU0VMRUNUIGIgRlJPTSBidWc1NjY4MCBMSU1JVCAzOworCitjb25uZWN0aW9u IGRlZmF1bHQ7CitTRUxFQ1QgYiBGUk9NIGJ1ZzU2NjgwIExJTUlUIDI7CitDSEVDSyBUQUJMRSBi dWc1NjY4MDsKKworY29ubmVjdGlvbiBjb24xOworUk9MTEJBQ0s7CitTRUxFQ1QgYiBGUk9NIGJ1 ZzU2NjgwIExJTUlUIDI7CitDSEVDSyBUQUJMRSBidWc1NjY4MDsKKworY29ubmVjdGlvbiBkZWZh dWx0OworZGlzY29ubmVjdCBjb24xOworCitTRUxFQ1QgYiBGUk9NIGJ1ZzU2NjgwIExJTUlUIDI7 CisKK0NSRUFURSBUQUJMRSBidWc1NjY4MF8yKAorICAgICAgIGEgSU5UIEFVVE9fSU5DUkVNRU5U IFBSSU1BUlkgS0VZLAorICAgICAgIGIgVkFSQ0hBUigyKSBDSEFSU0VUIGxhdGluMSBDT0xMQVRF IGxhdGluMV9nZXJtYW4yX2NpLAorICAgICAgIGMgSU5ULAorICAgICAgIElOREVYKGIpKQorRU5H SU5FPUlubm9EQjsKKworSU5TRVJUIElOVE8gYnVnNTY2ODBfMiBTRUxFQ1QgMCxfbGF0aW4xIDB4 ZGYsYyBGUk9NIGJ1ZzU2NjgwOworCitCRUdJTjsKK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4 MF8yIExJTUlUIDI7CitERUxFVEUgRlJPTSBidWc1NjY4MF8yIFdIRVJFIGE9MTsKKyMgVGhpcyBz aG91bGQgYmUgYnVmZmVyZWQsIGlmIGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnID0gMSBp cyBpbiBlZmZlY3QuCitJTlNFUlQgSU5UTyBidWc1NjY4MF8yIFZBTFVFUygxLCdTUycsMSk7CisK KyMgVGhpcyBzaG91bGQgZm9yY2UgYW4gaW5zZXJ0IGJ1ZmZlciBtZXJnZSwgYW5kIHJldHVybiAn U1MnIGluIHRoZSBmaXJzdCByb3cuCitTRUxFQ1QgSEVYKGIpIEZST00gYnVnNTY2ODBfMiBMSU1J VCAzOworQ0hFQ0sgVEFCTEUgYnVnNTY2ODBfMjsKKworIyBUZXN0IHRoaXMgd2l0aCBjb21wcmVz c2VkIHRhYmxlcy4KK0FMVEVSIFRBQkxFIGJ1ZzU2NjgwXzIgUk9XX0ZPUk1BVD1DT01QUkVTU0VE IEtFWV9CTE9DS19TSVpFPTE7CisKK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlU IDI7CitERUxFVEUgRlJPTSBidWc1NjY4MF8yIFdIRVJFIGE9MTsKKyMgVGhpcyBzaG91bGQgYmUg YnVmZmVyZWQsIGlmIGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnID0gMSBpcyBpbiBlZmZl Y3QuCitJTlNFUlQgSU5UTyBidWc1NjY4MF8yIFZBTFVFUygxLF9sYXRpbjEgMHhkZiwxKTsKKwor IyBUaGlzIHNob3VsZCBmb3JjZSBhbiBpbnNlcnQgYnVmZmVyIG1lcmdlLCBhbmQgcmV0dXJuIDB4 ZGYgaW4gdGhlIGZpcnN0IHJvdy4KK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlU IDM7CitDSEVDSyBUQUJMRSBidWc1NjY4MF8yOworCitEUk9QIFRBQkxFIGJ1ZzU2NjgwXzI7CitE Uk9QIFRBQkxFIGJ1ZzU2NjgwOworCistLSBkaXNhYmxlX3F1ZXJ5X2xvZworU0VUIEdMT0JBTCB0 eF9pc29sYXRpb24gPSBAdHhfaXNvbGF0aW9uX29yaWc7CitTRVQgR0xPQkFMIGlubm9kYl9maWxl X3Blcl90YWJsZSA9IEBpbm5vZGJfZmlsZV9wZXJfdGFibGVfb3JpZzsKK1NFVCBHTE9CQUwgaW5u b2RiX2ZpbGVfZm9ybWF0ID0gQGlubm9kYl9maWxlX2Zvcm1hdF9vcmlnOworU0VUIEdMT0JBTCBp bm5vZGJfZmlsZV9mb3JtYXRfY2hlY2sgPSBAaW5ub2RiX2ZpbGVfZm9ybWF0X2NoZWNrX29yaWc7 CistLSBlcnJvciAwLCBFUl9VTktOT1dOX1NZU1RFTV9WQVJJQUJMRQorU0VUIEdMT0JBTCBpbm5v ZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZyA9IEBpbm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1 Z19vcmlnOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYu YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdl L2lubm9iYXNlL2J1Zi9idWYwYnVmLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDEwMTkwNjA0MTUtYmozdTZld2swMjJtazRucgpAQCAtMTI3MCw2ICsxMjcwLDMwIEBAIGxvb3A6 CiAJCWJ1Zl9hd2VfbWFwX3BhZ2VfdG9fZnJhbWUoYmxvY2ssIFRSVUUpOwogCX0KIAorI2lmIGRl ZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfSUJVRl9ERUJVRworCWlmIChtb2RlID09 IEJVRl9HRVRfSUZfSU5fUE9PTCAmJiBpYnVmX2RlYnVnKSB7CisJCS8qIFRyeSB0byBldmljdCB0 aGUgYmxvY2sgZnJvbSB0aGUgYnVmZmVyIHBvb2wsIHRvIHVzZSB0aGUKKwkJaW5zZXJ0IGJ1ZmZl ciBhcyBtdWNoIGFzIHBvc3NpYmxlLiAqLworCisJCWlmIChidWZfTFJVX2ZyZWVfYmxvY2soYmxv Y2spKSB7CisJCQltdXRleF9leGl0KCZidWZfcG9vbC0+bXV0ZXgpOworCQkJbXV0ZXhfZXhpdCgm YmxvY2stPm11dGV4KTsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJpbm5vZGJfY2hhbmdlX2J1 ZmZlcmluZ19kZWJ1ZyBldmljdCAldSAldVxuIiwKKwkJCQkodW5zaWduZWQpIHNwYWNlLCAodW5z aWduZWQpIG9mZnNldCk7CisJCQlyZXR1cm4oTlVMTCk7CisJCX0gZWxzZSBpZiAoYnVmX2ZsdXNo X3BhZ2VfdHJ5KGJsb2NrKSkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJImlubm9kYl9jaGFu Z2VfYnVmZmVyaW5nX2RlYnVnIGZsdXNoICV1ICV1XG4iLAorCQkJCSh1bnNpZ25lZCkgc3BhY2Us ICh1bnNpZ25lZCkgb2Zmc2V0KTsKKwkJCWd1ZXNzID0gYmxvY2stPmZyYW1lOworCQkJZ290byBs b29wOworCQl9CisKKwkJLyogRmFpbGVkIHRvIGV2aWN0IHRoZSBwYWdlOyBjaGFuZ2UgaXQgZGly ZWN0bHkgKi8KKwl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVCVUcgKi8K KwogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwogCWJ1Zl9ibG9ja19idWZfZml4X2luY19kZWJ1Zyhi bG9jaywgZmlsZSwgbGluZSk7CiAjZWxzZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvYnVmL2J1ZjBmbHUuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5j CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZp amU1cAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkwNjA0MTUtYmozdTZld2swMjJtazRucgpAQCAtNzIzLDYg KzcyMyw4MiBAQCBidWZfZmx1c2hfdHJ5X3BhZ2UoCiAJcmV0dXJuKDApOwogfQogCisjIGlmIGRl ZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfSUJVRl9ERUJVRworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKK1dyaXRlcyBhIGZsdXNoYWJsZSBwYWdlIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGJ1ZmZl ciBwb29sIHRvIGEgZmlsZS4KK05PVEU6IGJ1Zl9wb29sX211dGV4IGFuZCBibG9jay0+bXV0ZXgg bXVzdCBiZSBoZWxkIHVwb24gZW50ZXJpbmcgdGhpcworZnVuY3Rpb24sIGFuZCB0aGV5IHdpbGwg YmUgcmVsZWFzZWQgYnkgdGhpcyBmdW5jdGlvbiBhZnRlciBmbHVzaGluZy4KK1RoaXMgaXMgbG9v c2VseSBiYXNlZCBvbiBidWZfZmx1c2hfYmF0Y2goKSBhbmQgYnVmX2ZsdXNoX3RyeV9wYWdlKCku ICovCisKK2lib29sCitidWZfZmx1c2hfcGFnZV90cnkoCisvKj09PT09PT09PT09PT09PSovCisJ CQkJCS8qIG91dDogVFJVRSBpZiBmbHVzaGVkIGFuZAorCQkJCQltdXRleGVzIHJlbGVhc2VkICov CisJYnVmX2Jsb2NrX3QqCWJsb2NrKQkJLyohPCBpbi9vdXQ6IGJ1ZmZlciBjb250cm9sIGJsb2Nr ICovCit7CisJdXRfYWQobXV0ZXhfb3duKCZidWZfcG9vbC0+bXV0ZXgpKTsKKwl1dF9hZChibG9j ay0+c3RhdGUgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSk7CisJdXRfYWQobXV0ZXhfb3duKCZibG9j ay0+bXV0ZXgpKTsKKworCWlmICghYnVmX2ZsdXNoX3JlYWR5X2Zvcl9mbHVzaChibG9jaywgQlVG X0ZMVVNIX0xSVSkpIHsKKwkJcmV0dXJuKEZBTFNFKTsKKwl9CisKKwlpZiAoYnVmX3Bvb2wtPm5f Zmx1c2hbQlVGX0ZMVVNIX0xSVV0gPiAwCisJICAgIHx8IGJ1Zl9wb29sLT5pbml0X2ZsdXNoW0JV Rl9GTFVTSF9MUlVdKSB7CisJCS8qIFRoZXJlIGlzIGFscmVhZHkgYSBmbHVzaCBiYXRjaCBvZiB0 aGUgc2FtZSB0eXBlIHJ1bm5pbmcgKi8KKwkJcmV0dXJuKEZBTFNFKTsKKwl9CisKKwlidWZfcG9v bC0+aW5pdF9mbHVzaFtCVUZfRkxVU0hfTFJVXSA9IFRSVUU7CisKKwlibG9jay0+aW9fZml4ID0g QlVGX0lPX1dSSVRFOworCWJsb2NrLT5mbHVzaF90eXBlID0gQlVGX0ZMVVNIX0xSVTsKKworCWlm IChidWZfcG9vbC0+bl9mbHVzaFtCVUZfRkxVU0hfTFJVXSsrID09IDApIHsKKworCQlvc19ldmVu dF9yZXNldChidWZfcG9vbC0+bm9fZmx1c2hbQlVGX0ZMVVNIX0xSVV0pOworCX0KKworCS8qIFZF UlkgSU1QT1JUQU5UOgorCUJlY2F1c2UgYW55IHRocmVhZCBtYXkgY2FsbCB0aGUgTFJVIGZsdXNo LCBldmVuIHdoZW4gb3duaW5nCisJbG9ja3Mgb24gcGFnZXMsIHRvIGF2b2lkIGRlYWRsb2Nrcywg d2UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGUKKwlzLWxvY2sgaXMgYWNxdWlyZWQgb24gdGhlIHBh Z2Ugd2l0aG91dCB3YWl0aW5nOiB0aGlzIGlzCisJYWNjb21wbGlzaGVkIGJlY2F1c2UgYnVmX2Zs dXNoX3JlYWR5X2Zvcl9mbHVzaCgpIG11c3QgaG9sZCwKKwlhbmQgdGhhdCByZXF1aXJlcyB0aGUg cGFnZSBub3QgdG8gYmUgYnVmZmVyZml4ZWQuICovCisKKwlyd19sb2NrX3NfbG9ja19nZW4oJmJs b2NrLT5sb2NrLCBCVUZfSU9fV1JJVEUpOworCisJLyogTm90ZSB0aGF0IHRoZSBzLWxhdGNoIGlz IGFjcXVpcmVkIGJlZm9yZSByZWxlYXNpbmcgdGhlCisJYnVmX3Bvb2wgbXV0ZXg6IHRoaXMgZW5z dXJlcyB0aGF0IHRoZSBsYXRjaCBpcyBhY3F1aXJlZAorCWltbWVkaWF0ZWx5LiAqLworCisJbXV0 ZXhfZXhpdCgmYmxvY2stPm11dGV4KTsKKwltdXRleF9leGl0KCZidWZfcG9vbC0+bXV0ZXgpOwor CisJLyogRXZlbiB0aG91Z2ggYmxvY2sgaXMgbm90IHByb3RlY3RlZCBieSBhbnkgbXV0ZXggYXQg dGhpcworCXBvaW50LCBpdCBpcyBzYWZlIHRvIGFjY2VzcyBibG9jaywgYmVjYXVzZSBpdCBpcyBp b19maXhlZCBhbmQKKwlvbGRlc3RfbW9kaWZpY2F0aW9uICE9IDAuICBUaHVzLCBpdCBjYW5ub3Qg YmUgcmVsb2NhdGVkIGluIHRoZQorCWJ1ZmZlciBwb29sIG9yIHJlbW92ZWQgZnJvbSBmbHVzaF9s aXN0IG9yIExSVV9saXN0LiAqLworCisJYnVmX2ZsdXNoX3dyaXRlX2Jsb2NrX2xvdyhibG9jayk7 CisKKwltdXRleF9lbnRlcigmYnVmX3Bvb2wtPm11dGV4KTsKKwlidWZfcG9vbC0+aW5pdF9mbHVz aFtCVUZfRkxVU0hfTFJVXSA9IEZBTFNFOworCisJaWYgKGJ1Zl9wb29sLT5uX2ZsdXNoW0JVRl9G TFVTSF9MUlVdID09IDApIHsKKwkJLyogVGhlIHJ1bm5pbmcgZmx1c2ggYmF0Y2ggaGFzIGVuZGVk ICovCisJCW9zX2V2ZW50X3NldChidWZfcG9vbC0+bm9fZmx1c2hbQlVGX0ZMVVNIX0xSVV0pOwor CX0KKworCW11dGV4X2V4aXQoJmJ1Zl9wb29sLT5tdXRleCk7CisJYnVmX2ZsdXNoX2J1ZmZlcmVk X3dyaXRlcygpOworCisJcmV0dXJuKFRSVUUpOworfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwg VU5JVl9JQlVGX0RFQlVHICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIEZsdXNoZXMgdG8gZGlzayBhbGwgZmx1c2hh YmxlIHBhZ2VzIHdpdGhpbiB0aGUgZmx1c2ggYXJlYS4gKi8KIHN0YXRpYwoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUuYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9idWYvYnVmMGxydS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDEwMTgx MTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1 LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkwNjA0MTUtYmozdTZld2sw MjJtazRucgpAQCAtMzIxLDYgKzMyMSw2MCBAQCBidWZfTFJVX2dldF9yZWNlbnRfbGltaXQodm9p ZCkKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKK1RyeSB0byBwdXQgYSBibG9jayBmcm9tIHRoZSBMUlUg bGlzdCB0byB0aGUgZnJlZSBsaXN0LiAqLworCitpYm9vbAorYnVmX0xSVV9mcmVlX2Jsb2NrKAor Lyo9PT09PT09PT09PT09PT0qLworCQkJCS8qIG91dDogVFJVRSBpZiBmcmVlZCAqLworCWJ1Zl9i bG9ja190KglibG9jaykJLyogaW4vb3V0OiBibG9jayB0byBiZSBmcmVlZCAqLworeworCWlmICgh YnVmX2ZsdXNoX3JlYWR5X2Zvcl9yZXBsYWNlKGJsb2NrKSkgeworCQlyZXR1cm4oRkFMU0UpOwor CX0KKworI2lmZGVmIFVOSVZfREVCVUcKKwlpZiAoYnVmX2RlYnVnX3ByaW50cykgeworCQlmcHJp bnRmKHN0ZGVyciwKKwkJCSJQdXR0aW5nIHNwYWNlICVsdSBwYWdlICVsdSIKKwkJCSIgdG8gZnJl ZSBsaXN0XG4iLAorCQkJKHVsb25nKSBibG9jay0+c3BhY2UsCisJCQkodWxvbmcpIGJsb2NrLT5v ZmZzZXQpOworCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisKKwlidWZfTFJVX2Jsb2NrX3Jl bW92ZV9oYXNoZWRfcGFnZShibG9jayk7CisKKwltdXRleF9leGl0KCYoYnVmX3Bvb2wtPm11dGV4 KSk7CisJbXV0ZXhfZXhpdCgmYmxvY2stPm11dGV4KTsKKworCS8qIFJlbW92ZSBwb3NzaWJsZSBh ZGFwdGl2ZSBoYXNoIGluZGV4IGJ1aWx0IG9uIHRoZQorCXBhZ2U7IGluIHRoZSBjYXNlIG9mIEFX RSB0aGUgYmxvY2sgbWF5IG5vdCBoYXZlIGEKKwlmcmFtZSBhdCBhbGwgKi8KKworCWlmIChibG9j ay0+ZnJhbWUpIHsKKwkJLyogVGhlIHBhZ2Ugd2FzIGRlY2xhcmVkIHVuaW5pdGlhbGl6ZWQKKwkJ YnkgYnVmX0xSVV9ibG9ja19yZW1vdmVfaGFzaGVkX3BhZ2UoKS4KKwkJV2UgbmVlZCB0byBmbGFn IHRoZSBjb250ZW50cyBvZiB0aGUKKwkJcGFnZSB2YWxpZCAod2hpY2ggaXQgc3RpbGwgaXMpIGlu CisJCW9yZGVyIHRvIGF2b2lkIGJvZ3VzIFZhbGdyaW5kCisJCXdhcm5pbmdzLiAqLworCQlVTklW X01FTV9WQUxJRChibG9jay0+ZnJhbWUsIFVOSVZfUEFHRV9TSVpFKTsKKwkJYnRyX3NlYXJjaF9k cm9wX3BhZ2VfaGFzaF9pbmRleChibG9jay0+ZnJhbWUpOworCQlVTklWX01FTV9JTlZBTElEKGJs b2NrLT5mcmFtZSwgVU5JVl9QQUdFX1NJWkUpOworCX0KKworCXV0X2EoYmxvY2stPmJ1Zl9maXhf Y291bnQgPT0gMCk7CisKKwltdXRleF9lbnRlcigmKGJ1Zl9wb29sLT5tdXRleCkpOworCW11dGV4 X2VudGVyKCZibG9jay0+bXV0ZXgpOworCisJYnVmX0xSVV9ibG9ja19mcmVlX2hhc2hlZF9wYWdl KGJsb2NrKTsKKworCXJldHVybihUUlVFKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIExvb2sgZm9y IGEgcmVwbGFjZWFibGUgYmxvY2sgZnJvbSB0aGUgZW5kIG9mIHRoZSBMUlUgbGlzdCBhbmQgcHV0 IGl0IHRvCiB0aGUgZnJlZSBsaXN0IGlmIGZvdW5kLiAqLwogCkBAIC0zNDgsNTQgKzQwMiwxMyBA QCBidWZfTFJVX3NlYXJjaF9hbmRfZnJlZV9ibG9jaygKIAkJdXRfYShibG9jay0+aW5fTFJVX2xp c3QpOwogCiAJCW11dGV4X2VudGVyKCZibG9jay0+bXV0ZXgpOworCQlmcmVlZCA9IGJ1Zl9MUlVf ZnJlZV9ibG9jayhibG9jayk7CisJCW11dGV4X2V4aXQoJmJsb2NrLT5tdXRleCk7CiAKLQkJaWYg KGJ1Zl9mbHVzaF9yZWFkeV9mb3JfcmVwbGFjZShibG9jaykpIHsKLQotI2lmZGVmIFVOSVZfREVC VUcKLQkJCWlmIChidWZfZGVidWdfcHJpbnRzKSB7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJ CSJQdXR0aW5nIHNwYWNlICVsdSBwYWdlICVsdSIKLQkJCQkJIiB0byBmcmVlIGxpc3RcbiIsCi0J CQkJCSh1bG9uZykgYmxvY2stPnNwYWNlLAotCQkJCQkodWxvbmcpIGJsb2NrLT5vZmZzZXQpOwot CQkJfQotI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KLQotCQkJYnVmX0xSVV9ibG9ja19yZW1vdmVf aGFzaGVkX3BhZ2UoYmxvY2spOwotCi0JCQltdXRleF9leGl0KCYoYnVmX3Bvb2wtPm11dGV4KSk7 Ci0JCQltdXRleF9leGl0KCZibG9jay0+bXV0ZXgpOwotCi0JCQkvKiBSZW1vdmUgcG9zc2libGUg YWRhcHRpdmUgaGFzaCBpbmRleCBidWlsdCBvbiB0aGUKLQkJCXBhZ2U7IGluIHRoZSBjYXNlIG9m IEFXRSB0aGUgYmxvY2sgbWF5IG5vdCBoYXZlIGEKLQkJCWZyYW1lIGF0IGFsbCAqLwotCi0JCQlp ZiAoYmxvY2stPmZyYW1lKSB7Ci0JCQkJLyogVGhlIHBhZ2Ugd2FzIGRlY2xhcmVkIHVuaW5pdGlh bGl6ZWQKLQkJCQlieSBidWZfTFJVX2Jsb2NrX3JlbW92ZV9oYXNoZWRfcGFnZSgpLgotCQkJCVdl IG5lZWQgdG8gZmxhZyB0aGUgY29udGVudHMgb2YgdGhlCi0JCQkJcGFnZSB2YWxpZCAod2hpY2gg aXQgc3RpbGwgaXMpIGluCi0JCQkJb3JkZXIgdG8gYXZvaWQgYm9ndXMgVmFsZ3JpbmQKLQkJCQl3 YXJuaW5ncy4gKi8KLQkJCQlVTklWX01FTV9WQUxJRChibG9jay0+ZnJhbWUsIFVOSVZfUEFHRV9T SVpFKTsKLQkJCQlidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX2luZGV4KGJsb2NrLT5mcmFtZSk7 Ci0JCQkJVU5JVl9NRU1fSU5WQUxJRChibG9jay0+ZnJhbWUsIFVOSVZfUEFHRV9TSVpFKTsKLQkJ CX0KLQotCQkJdXRfYShibG9jay0+YnVmX2ZpeF9jb3VudCA9PSAwKTsKLQotCQkJbXV0ZXhfZW50 ZXIoJihidWZfcG9vbC0+bXV0ZXgpKTsKLQkJCW11dGV4X2VudGVyKCZibG9jay0+bXV0ZXgpOwot Ci0JCQlidWZfTFJVX2Jsb2NrX2ZyZWVfaGFzaGVkX3BhZ2UoYmxvY2spOwotCQkJZnJlZWQgPSBU UlVFOwotCQkJbXV0ZXhfZXhpdCgmYmxvY2stPm11dGV4KTsKLQorCQlpZiAoZnJlZWQpIHsKIAkJ CWJyZWFrOwogCQl9CiAKLQkJbXV0ZXhfZXhpdCgmYmxvY2stPm11dGV4KTsKLQogCQlibG9jayA9 IFVUX0xJU1RfR0VUX1BSRVYoTFJVLCBibG9jayk7CiAJCWRpc3RhbmNlKys7CiAKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTc5LDYgKzc5LDcgQEAgZXh0ZXJu ICJDIiB7CiAjaW5jbHVkZSAiLi4vc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwY3JlYS5o IgogI2luY2x1ZGUgIi4uL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgiCiAjaW5j bHVkZSAiLi4vc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaCIKKyNpbmNsdWRlICIu Li9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmgiCiAjaW5jbHVkZSAiLi4vc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2ZzcDBmc3AuaCIKICNpbmNsdWRlICIuLi9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgiCiAjaW5jbHVkZSAiLi4vc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2ZpbDBmaWwuaCIKQEAgLTM3MjMsMTcgKzM3MjQsMTggQEAgaW5jbHVkZV9maWVs ZDoKIAkJbl9yZXF1ZXN0ZWRfZmllbGRzKys7CiAKIAkJdGVtcGwtPmNvbF9ubyA9IGk7CisJCXRl bXBsLT5jbHVzdF9yZWNfZmllbGRfbm8gPSBkaWN0X2NvbF9nZXRfY2x1c3RfcG9zX25vbmlubGlu ZSgKKwkJCSZpbmRleC0+dGFibGUtPmNvbHNbaV0sIGNsdXN0X2luZGV4KTsKKwkJdXRfYWQodGVt cGwtPmNsdXN0X3JlY19maWVsZF9ubyAhPSBVTElOVF9VTkRFRklORUQpOwogCiAJCWlmIChpbmRl eCA9PSBjbHVzdF9pbmRleCkgewotCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IGRpY3RfY29sX2dl dF9jbHVzdF9wb3Nfbm9uaW5saW5lKAotCQkJCSZpbmRleC0+dGFibGUtPmNvbHNbaV0sIGluZGV4 KTsKKwkJCXRlbXBsLT5yZWNfZmllbGRfbm8gPSB0ZW1wbC0+Y2x1c3RfcmVjX2ZpZWxkX25vOwog CQl9IGVsc2UgewogCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IGRpY3RfaW5kZXhfZ2V0X250aF9j b2xfcG9zKAogCQkJCQkJCQlpbmRleCwgaSk7Ci0JCX0KLQotCQlpZiAodGVtcGwtPnJlY19maWVs ZF9ubyA9PSBVTElOVF9VTkRFRklORUQpIHsKLQkJCXByZWJ1aWx0LT5uZWVkX3RvX2FjY2Vzc19j bHVzdGVyZWQgPSBUUlVFOworCQkJaWYgKHRlbXBsLT5yZWNfZmllbGRfbm8gPT0gVUxJTlRfVU5E RUZJTkVEKSB7CisJCQkJcHJlYnVpbHQtPm5lZWRfdG9fYWNjZXNzX2NsdXN0ZXJlZCA9IFRSVUU7 CisJCQl9CiAJCX0KIAogCQlpZiAoZmllbGQtPm51bGxfcHRyKSB7CkBAIC0zNzg1LDkgKzM3ODcs NyBAQCBza2lwX2ZpZWxkOgogCQlmb3IgKGkgPSAwOyBpIDwgbl9yZXF1ZXN0ZWRfZmllbGRzOyBp KyspIHsKIAkJCXRlbXBsID0gcHJlYnVpbHQtPm15c3FsX3RlbXBsYXRlICsgaTsKIAotCQkJdGVt cGwtPnJlY19maWVsZF9ubyA9IGRpY3RfY29sX2dldF9jbHVzdF9wb3Nfbm9uaW5saW5lKAotCQkJ CSZpbmRleC0+dGFibGUtPmNvbHNbdGVtcGwtPmNvbF9ub10sCi0JCQkJY2x1c3RfaW5kZXgpOwor CQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IHRlbXBsLT5jbHVzdF9yZWNfZmllbGRfbm87CiAJCX0K IAl9CiB9CkBAIC04OTkwLDYgKzg5OTAsMTMgQEAgc3RhdGljIE1ZU1FMX1NZU1ZBUl9MT05HKGF1 dG9pbmNfbG9ja19tbwogICBBVVRPSU5DX09MRF9TVFlMRV9MT0NLSU5HLAkvKiBNaW5pbXVtIHZh bHVlICovCiAgIEFVVE9JTkNfTk9fTE9DS0lORywgMCk7CS8qIE1heGltdW0gdmFsdWUgKi8KIAor I2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfSUJVRl9ERUJVRworc3RhdGlj IE1ZU1FMX1NZU1ZBUl9VSU5UKGNoYW5nZV9idWZmZXJpbmdfZGVidWcsIGlidWZfZGVidWcsCisg IFBMVUdJTl9WQVJfUlFDTURBUkcsCisgICJEZWJ1ZyBmbGFncyBmb3IgSW5ub0RCIGNoYW5nZSBi dWZmZXJpbmcgKDA9bm9uZSkiLAorICBOVUxMLCBOVUxMLCAwLCAwLCAxLCAwKTsKKyNlbmRpZiAv KiBVTklWX0RFQlVHIHx8IFVOSVZfSUJVRl9ERUJVRyAqLworCiBzdGF0aWMgc3RydWN0IHN0X215 c3FsX3N5c192YXIqIGlubm9iYXNlX3N5c3RlbV92YXJpYWJsZXNbXT0gewogICBNWVNRTF9TWVNW QVIoYWRkaXRpb25hbF9tZW1fcG9vbF9zaXplKSwKICAgTVlTUUxfU1lTVkFSKGF1dG9leHRlbmRf aW5jcmVtZW50KSwKQEAgLTkwMzEsNiArOTAzOCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RfbXlzcWxf c3lzX3ZhciogaW5ub2Jhc2UKICAgTVlTUUxfU1lTVkFSKHRocmVhZF9jb25jdXJyZW5jeSksCiAg IE1ZU1FMX1NZU1ZBUih0aHJlYWRfc2xlZXBfZGVsYXkpLAogICBNWVNRTF9TWVNWQVIoYXV0b2lu Y19sb2NrX21vZGUpLAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfSUJV Rl9ERUJVRworICBNWVNRTF9TWVNWQVIoY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZyksCisjZW5kaWYg LyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVCVUcgKi8KICAgTlVMTAogfTsKIAoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9iYXNl L2lidWYvaWJ1ZjBpYnVmLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkw NjA0MTUtYmozdTZld2swMjJtazRucgpAQCAtMjIsNiArMjIsNyBAQCBDcmVhdGVkIDcvMTkvMTk5 NyBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJidHIwY3VyLmgiCiAjaW5jbHVkZSAiYnRyMHBjdXIu aCIKICNpbmNsdWRlICJidHIwYnRyLmgiCisjaW5jbHVkZSAicm93MHVwZC5oIgogI2luY2x1ZGUg InN5bmMwc3luYy5oIgogI2luY2x1ZGUgImRpY3QwYm9vdC5oIgogI2luY2x1ZGUgImZ1dDBsc3Qu aCIKQEAgLTEzNyw2ICsxMzgsMTEgQEAgYWNjZXNzIG9yZGVyIHJ1bGVzLiAqLwogLyogQnVmZmVy IHBvb2wgc2l6ZSBwZXIgdGhlIG1heGltdW0gaW5zZXJ0IGJ1ZmZlciBzaXplICovCiAjZGVmaW5l IElCVUZfUE9PTF9TSVpFX1BFUl9NQVhfU0laRQkyCiAKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcg fHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKy8qIEZsYWcgdG8gY29udHJvbCBpbnNlcnQgYnVm ZmVyIGRlYnVnZ2luZy4gKi8KK3VpbnQJaWJ1Zl9kZWJ1ZzsKKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfSUJVRl9ERUJVRyAqLworCiAvKiBUaGUgaW5zZXJ0IGJ1ZmZlciBjb250cm9sIHN0 cnVjdHVyZSAqLwogaWJ1Zl90KglpYnVmCQkJPSBOVUxMOwogCkBAIC0yODI0LDYgKzI4MzAsNzIg QEAgRHVyaW5nIG1lcmdlLCBpbnNlcnRzIHRvIGFuIGluZGV4IHBhZ2UgYQogZnJvbSB0aGUgaW5z ZXJ0IGJ1ZmZlci4gKi8KIHN0YXRpYwogdm9pZAoraWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZV9s b3coCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwlkdHVwbGVfdCoJZW50cnksCS8q IGluOiBidWZmZXJlZCBlbnRyeSB0byBpbnNlcnQgKi8KKwlwYWdlX3QqCQlwYWdlLAkvKiBpbjog aW5kZXggcGFnZSB3aGVyZSB0aGUgYnVmZmVyZWQgZW50cnkKKwkJCQlzaG91bGQgYmUgcGxhY2Vk ICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyogaW46IHJlY29yZCBkZXNjcmlwdG9yICovCisJ bXRyX3QqCQltdHIsCS8qIGluOiBtdHIgKi8KKwlwYWdlX2N1cl90KglwYWdlX2N1cikvKiBpbjog Y3Vyc29yIHBvc2l0aW9uZWQgb24gdGhlIHJlY29yZAorCQkJCWFmdGVyIHdoaWNoIHRvIGluc2Vy dCB0aGUgYnVmZmVyZWQgZW50cnkgKi8KK3sKKwl1bGludAlzcGFjZTsKKwl1bGludAlwYWdlX25v OworCXBhZ2VfdCoJYml0bWFwX3BhZ2U7CisJdWxpbnQJb2xkX2JpdHM7CisKKwlpZiAoVU5JVl9M SUtFTFkKKwkgICAgKHBhZ2VfY3VyX3R1cGxlX2luc2VydChwYWdlX2N1ciwgZW50cnksIGluZGV4 LCBtdHIpICE9IE5VTEwpKSB7CisJCXJldHVybjsKKwl9CisKKwkvKiBJZiB0aGUgcmVjb3JkIGRp ZCBub3QgZml0LCByZW9yZ2FuaXplICovCisKKwlidHJfcGFnZV9yZW9yZ2FuaXplKHBhZ2UsIGlu ZGV4LCBtdHIpOworCisJcGFnZV9jdXJfc2VhcmNoKHBhZ2UsIGluZGV4LCBlbnRyeSwgUEFHRV9D VVJfTEUsIHBhZ2VfY3VyKTsKKworCS8qIFRoaXMgdGltZSB0aGUgcmVjb3JkIG11c3QgZml0ICov CisKKwlpZiAoVU5JVl9MSUtFTFkKKwkgICAgKHBhZ2VfY3VyX3R1cGxlX2luc2VydChwYWdlX2N1 ciwgZW50cnksIGluZGV4LCBtdHIpICE9IE5VTEwpKSB7CisJCXJldHVybjsKKwl9CisKKwl1dF9w cmludF90aW1lc3RhbXAoc3RkZXJyKTsKKworCWZwcmludGYoc3RkZXJyLAorCQkiICBJbm5vREI6 IEVycm9yOiBJbnNlcnQgYnVmZmVyIGluc2VydCBmYWlsczsiCisJCSIgcGFnZSBmcmVlICVsdSwg ZHR1cGxlIHNpemUgJWx1XG4iLAorCQkodWxvbmcpIHBhZ2VfZ2V0X21heF9pbnNlcnRfc2l6ZShw YWdlLCAxKSwKKwkJKHVsb25nKSByZWNfZ2V0X2NvbnZlcnRlZF9zaXplKGluZGV4LCBlbnRyeSkp OworCWZwdXRzKCJJbm5vREI6IENhbm5vdCBpbnNlcnQgaW5kZXggcmVjb3JkICIsIHN0ZGVycik7 CisJZHR1cGxlX3ByaW50KHN0ZGVyciwgZW50cnkpOworCWZwdXRzKCJcbklubm9EQjogVGhlIHRh YmxlIHdoZXJlIHRoaXMgaW5kZXggcmVjb3JkIGJlbG9uZ3NcbiIKKwkgICAgICAiSW5ub0RCOiBp cyBub3cgcHJvYmFibHkgY29ycnVwdC4gUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvblxuIgorCSAg ICAgICJJbm5vREI6IHRoYXQgdGFibGUuXG4iLCBzdGRlcnIpOworCisJc3BhY2UgPSBidWZfZnJh bWVfZ2V0X3NwYWNlX2lkKHBhZ2UpOworCXBhZ2Vfbm8gPSBidWZfZnJhbWVfZ2V0X3BhZ2Vfbm8o cGFnZSk7CisKKwliaXRtYXBfcGFnZSA9IGlidWZfYml0bWFwX2dldF9tYXBfcGFnZShzcGFjZSwg cGFnZV9ubywgbXRyKTsKKwlvbGRfYml0cyA9IGlidWZfYml0bWFwX3BhZ2VfZ2V0X2JpdHMoYml0 bWFwX3BhZ2UsIHBhZ2Vfbm8sCisJCQkJCSAgICAgSUJVRl9CSVRNQVBfRlJFRSwgbXRyKTsKKwor CWZwcmludGYoc3RkZXJyLAorCQkiSW5ub0RCOiBzcGFjZSAlbHUsIHBhZ2UgJWx1LCBiaXRtYXAg Yml0cyAlbHVcbiIsCisJCSh1bG9uZykgc3BhY2UsICh1bG9uZykgcGFnZV9ubywgKHVsb25nKSBv bGRfYml0cyk7CisKKwlmcHV0cygiSW5ub0RCOiBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0 IgorCSAgICAgICIgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tXG4iLCBzdGRlcnIpOworfQorCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCitEdXJpbmcgbWVyZ2UsIGluc2VydHMgdG8gYW4gaW5kZXggcGFnZSBh IHNlY29uZGFyeSBpbmRleCBlbnRyeSBleHRyYWN0ZWQKK2Zyb20gdGhlIGluc2VydCBidWZmZXIu ICovCitzdGF0aWMKK3ZvaWQKIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2UoCiAvKj09PT09PT09 PT09PT09PT09PT09PT0qLwogCWR0dXBsZV90KgllbnRyeSwJLyogaW46IGJ1ZmZlcmVkIGVudHJ5 IHRvIGluc2VydCAqLwpAQCAtMjgzNSwxMSArMjkwNywxMCBAQCBpYnVmX2luc2VydF90b19pbmRl eF9wYWdlKAogCXBhZ2VfY3VyX3QJcGFnZV9jdXI7CiAJdWxpbnQJCWxvd19tYXRjaDsKIAlyZWNf dCoJCXJlYzsKLQlwYWdlX3QqCQliaXRtYXBfcGFnZTsKLQl1bGludAkJb2xkX2JpdHM7CiAKIAl1 dF9hZChpYnVmX2luc2lkZSgpKTsKIAl1dF9hZChkdHVwbGVfY2hlY2tfdHlwZWQoZW50cnkpKTsK Kwl1dF9hZCghYnVmX2Jsb2NrX2FsaWduKHBhZ2UpLT5pc19oYXNoZWQpOwogCiAJaWYgKFVOSVZf VU5MSUtFTFkoZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkKIAkJCSAgIT0gKGlib29s KSEhcGFnZV9pc19jb21wKHBhZ2UpKSkgewpAQCAtMjg3Nyw2MSArMjk0OCw3OSBAQCBkdW1wOgog CWxvd19tYXRjaCA9IHBhZ2VfY3VyX3NlYXJjaChwYWdlLCBpbmRleCwgZW50cnksCiAJCQkJICAg IFBBR0VfQ1VSX0xFLCAmcGFnZV9jdXIpOwogCi0JaWYgKGxvd19tYXRjaCA9PSBkdHVwbGVfZ2V0 X25fZmllbGRzKGVudHJ5KSkgewotCQlyZWMgPSBwYWdlX2N1cl9nZXRfcmVjKCZwYWdlX2N1cik7 Ci0KLQkJYnRyX2N1cl9kZWxfdW5tYXJrX2Zvcl9pYnVmKHJlYywgbXRyKTsKLQl9IGVsc2Ugewot CQlyZWMgPSBwYWdlX2N1cl90dXBsZV9pbnNlcnQoJnBhZ2VfY3VyLCBlbnRyeSwgaW5kZXgsIG10 cik7Ci0KLQkJaWYgKHJlYyA9PSBOVUxMKSB7Ci0JCQkvKiBJZiB0aGUgcmVjb3JkIGRpZCBub3Qg Zml0LCByZW9yZ2FuaXplICovCi0KLQkJCWJ0cl9wYWdlX3Jlb3JnYW5pemUocGFnZSwgaW5kZXgs IG10cik7Ci0KLQkJCXBhZ2VfY3VyX3NlYXJjaChwYWdlLCBpbmRleCwgZW50cnksCi0JCQkJCVBB R0VfQ1VSX0xFLCAmcGFnZV9jdXIpOwotCi0JCQkvKiBUaGlzIHRpbWUgdGhlIHJlY29yZCBtdXN0 IGZpdCAqLwotCQkJaWYgKFVOSVZfVU5MSUtFTFkoIXBhZ2VfY3VyX3R1cGxlX2luc2VydCgKLQkJ CQkJCSAgJnBhZ2VfY3VyLCBlbnRyeSwgaW5kZXgsCi0JCQkJCQkgIG10cikpKSB7Ci0KLQkJCQl1 dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKLQotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQki ICBJbm5vREI6IEVycm9yOiBJbnNlcnQgYnVmZmVyIGluc2VydCIKLQkJCQkJIiBmYWlsczsgcGFn ZSBmcmVlICVsdSwiCi0JCQkJCSIgZHR1cGxlIHNpemUgJWx1XG4iLAotCQkJCQkodWxvbmcpIHBh Z2VfZ2V0X21heF9pbnNlcnRfc2l6ZSgKLQkJCQkJCXBhZ2UsIDEpLAotCQkJCQkodWxvbmcpIHJl Y19nZXRfY29udmVydGVkX3NpemUoCi0JCQkJCQlpbmRleCwgZW50cnkpKTsKLQkJCQlmcHV0cygi SW5ub0RCOiBDYW5ub3QgaW5zZXJ0IGluZGV4IHJlY29yZCAiLAotCQkJCSAgICAgIHN0ZGVycik7 Ci0JCQkJZHR1cGxlX3ByaW50KHN0ZGVyciwgZW50cnkpOwotCQkJCWZwdXRzKCJcbklubm9EQjog VGhlIHRhYmxlIHdoZXJlIgotCQkJCSAgICAgICIgdGhpcyBpbmRleCByZWNvcmQgYmVsb25nc1xu IgotCQkJCSAgICAgICJJbm5vREI6IGlzIG5vdyBwcm9iYWJseSBjb3JydXB0LiIKLQkJCQkgICAg ICAiIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUgb25cbiIKLQkJCQkgICAgICAiSW5ub0RCOiB0aGF0 IHRhYmxlLlxuIiwgc3RkZXJyKTsKLQotCQkJCWJpdG1hcF9wYWdlID0gaWJ1Zl9iaXRtYXBfZ2V0 X21hcF9wYWdlKAotCQkJCQlidWZfZnJhbWVfZ2V0X3NwYWNlX2lkKHBhZ2UpLAotCQkJCQlidWZf ZnJhbWVfZ2V0X3BhZ2Vfbm8ocGFnZSksCi0JCQkJCW10cik7Ci0JCQkJb2xkX2JpdHMgPSBpYnVm X2JpdG1hcF9wYWdlX2dldF9iaXRzKAotCQkJCQliaXRtYXBfcGFnZSwKLQkJCQkJYnVmX2ZyYW1l X2dldF9wYWdlX25vKHBhZ2UpLAotCQkJCQlJQlVGX0JJVE1BUF9GUkVFLCBtdHIpOworCWlmIChV TklWX1VOTElLRUxZKGxvd19tYXRjaCA9PSBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KSkpIHsK KwkJbWVtX2hlYXBfdCoJaGVhcDsKKwkJdXBkX3QqCQl1cGRhdGU7CisJCXVsaW50KgkJb2Zmc2V0 czsKIAotCQkJCWZwcmludGYoc3RkZXJyLCAiSW5ub0RCOiBCaXRtYXAgYml0cyAlbHVcbiIsCi0J CQkJCSh1bG9uZykgb2xkX2JpdHMpOworCQlyZWMgPSBwYWdlX2N1cl9nZXRfcmVjKCZwYWdlX2N1 cik7CiAKLQkJCQlmcHV0cygiSW5ub0RCOiBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0Igot CQkJCSAgICAgICIgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tXG4iLCBzdGRlcnIpOwotCQkJfQor CQkvKiBUaGlzIGlzIGJhc2VkIG9uCisJCXJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlm eShCVFJfTU9ESUZZX0xFQUYpLiAqLworCQl1dF9hZChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMs IHBhZ2VfaXNfY29tcChwYWdlKSkpOworCisJCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7 CisKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBOVUxMLCBVTElOVF9V TkRFRklORUQsCisJCQkJCSAgJmhlYXApOworCQl1cGRhdGUgPSByb3dfdXBkX2J1aWxkX3NlY19y ZWNfZGlmZmVyZW5jZV9iaW5hcnkoCisJCQlpbmRleCwgZW50cnksIHJlYywgTlVMTCwgaGVhcCk7 CisKKwkJaWYgKHVwZGF0ZS0+bl9maWVsZHMgPT0gMCkgeworCQkJLyogVGhlIHJlY29yZHMgb25s eSBkaWZmZXIgaW4gdGhlIGRlbGV0ZS1tYXJrLgorCQkJQ2xlYXIgdGhlIGRlbGV0ZS1tYXJrLCBs aWtlIHdlIGRpZCBiZWZvcmUKKwkJCUJ1ZyAjNTY2ODAgd2FzIGZpeGVkLiAqLworCQkJYnRyX2N1 cl9kZWxfdW5tYXJrX2Zvcl9pYnVmKHJlYywgbXRyKTsKK3VwZGF0ZWRfaW5fcGxhY2U6CisJCQlt ZW1faGVhcF9mcmVlKGhlYXApOworCQkJcmV0dXJuOwogCQl9CisKKwkJLyogQ29weSB0aGUgaW5m byBiaXRzLiBDbGVhciB0aGUgZGVsZXRlLW1hcmsuICovCisJCXVwZGF0ZS0+aW5mb19iaXRzID0g cmVjX2dldF9pbmZvX2JpdHMocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpOworCQl1cGRhdGUtPmlu Zm9fYml0cyAmPSB+UkVDX0lORk9fREVMRVRFRF9GTEFHOworCisJCS8qIFdlIGNhbm5vdCBpbnZv a2UgYnRyX2N1cl9vcHRpbWlzdGljX3VwZGF0ZSgpIGhlcmUsCisJCWJlY2F1c2Ugd2UgZG8gbm90 IGhhdmUgYSBidHJfY3VyX3Qgb3IgcXVlX3Rocl90LAorCQlhcyB0aGUgaW5zZXJ0IGJ1ZmZlciBt ZXJnZSBvY2N1cnMgYXQgYSB2ZXJ5IGxvdyBsZXZlbC4gKi8KKwkJaWYgKCFyb3dfdXBkX2NoYW5n ZXNfZmllbGRfc2l6ZV9vcl9leHRlcm5hbChpbmRleCwgb2Zmc2V0cywKKwkJCQkJCQkgICAgdXBk YXRlKSkgeworCQkJLyogVGhpcyBpcyB0aGUgZWFzeSBjYXNlLiBEbyBzb21ldGhpbmcgc2ltaWxh cgorCQkJdG8gYnRyX2N1cl91cGRhdGVfaW5fcGxhY2UoKS4gKi8KKwkJCXJvd191cGRfcmVjX2lu X3BsYWNlKHJlYywgb2Zmc2V0cywgdXBkYXRlKTsKKwkJCWdvdG8gdXBkYXRlZF9pbl9wbGFjZTsK KwkJfQorCisJCS8qIEEgY29sbGF0aW9uIG1heSBpZGVudGlmeSB2YWx1ZXMgdGhhdCBkaWZmZXIg aW4KKwkJc3RvcmFnZSBsZW5ndGguCisJCVNvbWUgZXhhbXBsZXMgKDEgb3IgMiBieXRlcyk6CisJ CXV0ZjhfdHVya2lzaF9jaTogSSA9IFUrMDEzMSBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJ CisJCXV0ZjhfZ2VuZXJhbF9jaTogUyA9IFUrMDBERiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAg UworCQl1dGY4X2dlbmVyYWxfY2k6IEEgPSBVKzAwRTQgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lU SCBESUFFUkVTSVMKKworCQlsYXRpbjFfZ2VybWFuMl9jaTogU1MgPSBVKzAwREYgTEFUSU4gU01B TEwgTEVUVEVSIFNIQVJQIFMKKworCQlFeGFtcGxlcyBvZiBhIGNoYXJhY3RlciAoMy1ieXRlIFVU Ri04IHNlcXVlbmNlKQorCQlpZGVudGlmaWVkIHdpdGggMiBvciA0IGNoYXJhY3RlcnMgKDEtYnl0 ZSBVVEYtOCBzZXF1ZW5jZXMpOgorCisJCXV0ZjhfdW5pY29kZV9jaTogJ0lJJyA9IFUrMjE3MSBT TUFMTCBST01BTiBOVU1FUkFMIFRXTworCQl1dGY4X3VuaWNvZGVfY2k6ICcoMTApJyA9IFUrMjQ3 RCBQQVJFTlRIRVNJWkVEIE5VTUJFUiBURU4KKwkJKi8KKworCQkvKiBEZWxldGUgdGhlIGRpZmZl cmVudC1sZW5ndGggcmVjb3JkLCBhbmQgaW5zZXJ0IHRoZQorCQlidWZmZXJlZCBvbmUuICovCisK KwkJbG9ja19yZWNfc3RvcmVfb25fcGFnZV9pbmZpbXVtKHBhZ2UsIHJlYyk7CisJCXBhZ2VfY3Vy X2RlbGV0ZV9yZWMoJnBhZ2VfY3VyLCBpbmRleCwgb2Zmc2V0cywgbXRyKTsKKwkJcGFnZV9jdXJf bW92ZV90b19wcmV2KCZwYWdlX2N1cik7CisJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisKKwkJaWJ1 Zl9pbnNlcnRfdG9faW5kZXhfcGFnZV9sb3coZW50cnksIHBhZ2UsIGluZGV4LCBtdHIsCisJCQkJ CSAgICAgICZwYWdlX2N1cik7CisJCWxvY2tfcmVjX3Jlc3RvcmVfZnJvbV9wYWdlX2luZmltdW0o cmVjLCBwYWdlKTsKKwl9IGVsc2UgeworCQlpYnVmX2luc2VydF90b19pbmRleF9wYWdlX2xvdyhl bnRyeSwgcGFnZSwgaW5kZXgsIG10ciwKKwkJCQkJICAgICAgJnBhZ2VfY3VyKTsKIAl9CiB9CiAK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTM4LDYgKzM4LDIwIEBAIGJ1Zl9m bHVzaF9pbml0X2Zvcl93cml0aW5nKAogCWR1bGludAluZXdlc3RfbHNuLAkvKiBpbjogbmV3ZXN0 IG1vZGlmaWNhdGlvbiBsc24gdG8gdGhlIHBhZ2UgKi8KIAl1bGludAlzcGFjZSwJCS8qIGluOiBz cGFjZSBpZCAqLwogCXVsaW50CXBhZ2Vfbm8pOwkvKiBpbjogcGFnZSBudW1iZXIgKi8KKyMgaWYg ZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9JQlVGX0RFQlVHCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorV3JpdGVzIGEgZmx1c2hhYmxlIHBhZ2UgYXN5bmNocm9ub3VzbHkgZnJvbSB0aGUgYnVm ZmVyIHBvb2wgdG8gYSBmaWxlLgorTk9URTogYnVmX3Bvb2xfbXV0ZXggYW5kIGJsb2NrLT5tdXRl eCBtdXN0IGJlIGhlbGQgdXBvbiBlbnRlcmluZyB0aGlzCitmdW5jdGlvbiwgYW5kIHRoZXkgd2ls bCBiZSByZWxlYXNlZCBieSB0aGlzIGZ1bmN0aW9uIGFmdGVyIGZsdXNoaW5nLgorVGhpcyBpcyBs b29zZWx5IGJhc2VkIG9uIGJ1Zl9mbHVzaF9iYXRjaCgpIGFuZCBidWZfZmx1c2hfdHJ5X3BhZ2Uo KS4gKi8KKworaWJvb2wKK2J1Zl9mbHVzaF9wYWdlX3RyeSgKKy8qPT09PT09PT09PT09PT09Ki8K KwkJCQkJLyogb3V0OiBUUlVFIGlmIGZsdXNoZWQgYW5kCisJCQkJCW11dGV4ZXMgcmVsZWFzZWQg Ki8KKwlidWZfYmxvY2tfdCoJYmxvY2spOwkJLyohPCBpbi9vdXQ6IGJ1ZmZlciBjb250cm9sIGJs b2NrICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVCVUcgKi8KIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogVGhpcyB1dGlsaXR5IGZsdXNoZXMgZGlydHkgYmxvY2tzIGZyb20gdGhlIGVu ZCBvZiB0aGUgTFJVIGxpc3Qgb3IgZmx1c2hfbGlzdC4KIE5PVEUgMTogaW4gdGhlIGNhc2Ugb2Yg YW4gTFJVIGZsdXNoIHRoZSBjYWxsaW5nIHRocmVhZCBtYXkgb3duIGxhdGNoZXMgdG8KCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvYnVmMGxydS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAx MDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTY2LDYgKzY2LDE0IEBAIGJ1Zl9MUlVfZ2V0 X3JlY2VudF9saW1pdCh2b2lkKTsKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCQkJ Lyogb3V0OiB0aGUgbGltaXQ7IHplcm8gaWYgY291bGQgbm90IGRldGVybWluZSBpdCAqLwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKK1RyeSB0byBwdXQgYSBibG9jayBmcm9tIHRoZSBMUlUgbGlzdCB0byB0aGUg ZnJlZSBsaXN0LiAqLworCitpYm9vbAorYnVmX0xSVV9mcmVlX2Jsb2NrKAorLyo9PT09PT09PT09 PT09PT0qLworCQkJCS8qIG91dDogVFJVRSBpZiBmcmVlZCAqLworCWJ1Zl9ibG9ja190KglibG9j ayk7CS8qIGluL291dDogYmxvY2sgdG8gYmUgZnJlZWQgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBMb29r IGZvciBhIHJlcGxhY2VhYmxlIGJsb2NrIGZyb20gdGhlIGVuZCBvZiB0aGUgTFJVIGxpc3QgYW5k IHB1dCBpdCB0bwogdGhlIGZyZWUgbGlzdCBpZiBmb3VuZC4gKi8KIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaCcKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2lidWYwaWJ1Zi5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20t MjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvaWJ1ZjBpYnVmLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkw NjA0MTUtYmozdTZld2swMjJtazRucgpAQCAtMTgsNiArMTgsMTEgQEAgQ3JlYXRlZCA3LzE5LzE5 OTcgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAiaWJ1ZjB0eXBlcy5oIgogI2luY2x1ZGUgImZzcDBm c3AuaCIKIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfSUJVRl9ERUJV RworLyogRmxhZyB0byBjb250cm9sIGluc2VydCBidWZmZXIgZGVidWdnaW5nLiAqLworZXh0ZXJu IHVpbnQJCWlidWZfZGVidWc7CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVC VUcgKi8KKwogZXh0ZXJuIGlidWZfdCoJaWJ1ZjsKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvcmVtMHJlYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5 MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTE5LDYgKzE5LDkgQEAgaWYgYW5kIG9ubHkgaWYg dGhlIHJlY29yZCBpcyB0aGUgZmlyc3QgdQogQi10cmVlIHBhZ2UgdGhhdCBpcyB0aGUgbGVmdG1v c3QgcGFnZSBvbiBpdHMgbGV2ZWwKIChQQUdFX0xFVkVMIGlzIG5vbnplcm8gYW5kIEZJTF9QQUdF X1BSRVYgaXMgRklMX05VTEwpLiAqLwogI2RlZmluZSBSRUNfSU5GT19NSU5fUkVDX0ZMQUcJMHgx MFVMCisvKiBUaGUgZGVsZXRlZCBmbGFnIGluIGluZm8gYml0cyAqLworI2RlZmluZSBSRUNfSU5G T19ERUxFVEVEX0ZMQUcJMHgyMFVMCS8qIHdoZW4gYml0IGlzIHNldCB0byAxLCBpdCBtZWFucyB0 aGUKKwkJCQkJcmVjb3JkIGhhcyBiZWVuIGRlbGV0ZSBtYXJrZWQgKi8KIAogLyogTnVtYmVyIG9m IGV4dHJhIGJ5dGVzIGluIGFuIG9sZC1zdHlsZSByZWNvcmQsCiBpbiBhZGRpdGlvbiB0byB0aGUg ZGF0YSBhbmQgdGhlIG9mZnNldHMgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvcmVtMHJlYy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Jl bTByZWMuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODExMjAxNi13emo0 NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0 bnIKQEAgLTk4LDkgKzk4LDYgQEAgYW5kIHRoZSBzaGlmdCBuZWVkZWQgdG8gb2J0YWluIGVhY2gg Yml0LQogI2RlZmluZQlSRUNfSU5GT19CSVRTX01BU0sJMHhGMFVMCiAjZGVmaW5lIFJFQ19JTkZP X0JJVFNfU0hJRlQJMAogCi0vKiBUaGUgZGVsZXRlZCBmbGFnIGluIGluZm8gYml0cyAqLwotI2Rl ZmluZSBSRUNfSU5GT19ERUxFVEVEX0ZMQUcJMHgyMFVMCS8qIHdoZW4gYml0IGlzIHNldCB0byAx LCBpdCBtZWFucyB0aGUKLQkJCQkJcmVjb3JkIGhhcyBiZWVuIGRlbGV0ZSBtYXJrZWQgKi8KIC8q IFRoZSBmb2xsb3dpbmcgbWFza3MgYXJlIHVzZWQgdG8gZmlsdGVyIHRoZSBTUUwgbnVsbCBiaXQg ZnJvbQogb25lLWJ5dGUgYW5kIHR3by1ieXRlIG9mZnNldHMgKi8KIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaCcKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20t MjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkw NjA0MTUtYmozdTZld2swMjJtazRucgpAQCAtNDg1LDYgKzQ4NSwxMCBAQCBzdHJ1Y3QgbXlzcWxf cm93X3RlbXBsX3N0cnVjdCB7CiAJCQkJCUlubm9iYXNlIHJlY29yZCBpbiB0aGUgY3VycmVudCBp bmRleDsKIAkJCQkJbm90IGRlZmluZWQgaWYgdGVtcGxhdGVfdHlwZSBpcwogCQkJCQlST1dfTVlT UUxfV0hPTEVfUk9XICovCisJdWxpbnQJY2x1c3RfcmVjX2ZpZWxkX25vOwkvKiBmaWVsZCBudW1i ZXIgb2YgdGhlIGNvbHVtbiBpbiBhbgorCQkJCQlJbm5vYmFzZSByZWNvcmQgaW4gdGhlIGNsdXN0 ZXJlZCBpbmRleDsKKwkJCQkJbm90IGRlZmluZWQgaWYgdGVtcGxhdGVfdHlwZSBpcworCQkJCQlS T1dfTVlTUUxfV0hPTEVfUk9XICovCiAJdWxpbnQJbXlzcWxfY29sX29mZnNldDsJLyogb2Zmc2V0 IG9mIHRoZSBjb2x1bW4gaW4gdGhlIE15U1FMCiAJCQkJCXJvdyBmb3JtYXQgKi8KIAl1bGludAlt eXNxbF9jb2xfbGVuOwkJLyogbGVuZ3RoIG9mIHRoZSBjb2x1bW4gaW4gdGhlIE15U1FMCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaCcKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTAxMDE4MTEyMDE2LXd6ajQ1OWpjZHZ2aWplNXAKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3JvdzB1cGQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEw MTAxOTA2MDQxNS1iajN1NmV3azAyMm1rNG5yCkBAIC0xMjksOSArMTI5LDExIEBAIHJvd191cGRf Y2hhbmdlc19maWVsZF9zaXplX29yX2V4dGVybmFsKAogCWNvbnN0IHVsaW50KglvZmZzZXRzLC8q IGluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCkgKi8KIAl1cGRfdCoJCXVwZGF0ZSk7Lyog aW46IHVwZGF0ZSB2ZWN0b3IgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVJlcGxhY2VzIHRoZSBuZXcgY29sdW1uIHZh bHVlcyBzdG9yZWQgaW4gdGhlIHVwZGF0ZSB2ZWN0b3IgdG8gdGhlIHJlY29yZAotZ2l2ZW4uIE5v IGZpZWxkIHNpemUgY2hhbmdlcyBhcmUgYWxsb3dlZC4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9u bHkgZm9yCi1hIGNsdXN0ZXJlZCBpbmRleCAqLworUmVwbGFjZXMgdGhlIG5ldyBjb2x1bW4gdmFs dWVzIHN0b3JlZCBpbiB0aGUgdXBkYXRlIHZlY3RvciB0byB0aGUKK3JlY29yZCBnaXZlbi4gTm8g ZmllbGQgc2l6ZSBjaGFuZ2VzIGFyZSBhbGxvd2VkLiBUaGlzIGZ1bmN0aW9uIGlzCit1c3VhbGx5 IGludm9rZWQgb24gYSBjbHVzdGVyZWQgaW5kZXguIFRoZSBvbmx5IHVzZSBjYXNlIGZvciBhCitz ZWNvbmRhcnkgaW5kZXggaXMgcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KCkgb3Ig aXRzCitjb3VudGVycGFydCBpbiBpYnVmX2luc2VydF90b19pbmRleF9wYWdlKCkuICovCiAKIHZv aWQKIHJvd191cGRfcmVjX2luX3BsYWNlKAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzBteXNxbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlz cWwuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTEyMDE2LXd6ajQ1OWpj ZHZ2aWplNXAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15c3FsLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkwNjA0MTUtYmozdTZld2swMjJtazRucgpAQCAt NDAwLDcgKzQwMCw3IEBAIHJvd19teXNxbF9jb252ZXJ0X3Jvd190b19pbm5vYmFzZSgKIAkJCQkJ cm93IGlzIHVzZWQsIGFzIHJvdyBtYXkgY29udGFpbgogCQkJCQlwb2ludGVycyB0byB0aGlzIHJl Y29yZCEgKi8KIHsKLQlteXNxbF9yb3dfdGVtcGxfdCoJdGVtcGw7CisJY29uc3QgbXlzcWxfcm93 X3RlbXBsX3QqdGVtcGw7CiAJZGZpZWxkX3QqCQlkZmllbGQ7CiAJdWxpbnQJCQlpOwogCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0y MDEwMTAxODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBzZWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MDQxNS1i ajN1NmV3azAyMm1rNG5yCkBAIC0yNjAxLDIwICsyNjAxLDIxIEBAIHJvd19zZWxfc3RvcmVfbXlz cWxfcmVjKAogCXJvd19wcmVidWlsdF90KglwcmVidWlsdCwJLyogaW46IHByZWJ1aWx0IHN0cnVj dCAqLwogCXJlY190KgkJcmVjLAkJLyogaW46IElubm9iYXNlIHJlY29yZCBpbiB0aGUgaW5kZXgK IAkJCQkJd2hpY2ggd2FzIGRlc2NyaWJlZCBpbiBwcmVidWlsdCdzCi0JCQkJCXRlbXBsYXRlICov CisJCQkJCXRlbXBsYXRlLCBvciBpbiB0aGUgY2x1c3RlcmVkIGluZGV4OworCQkJCQltdXN0IGJl IHByb3RlY3RlZCBieSBhIHBhZ2UgbGF0Y2ggKi8KKwlpYm9vbAkJcmVjX2NsdXN0LAkvKiBpbjog VFJVRSBpZiByZWMgaXMgaW4gdGhlIGNsdXN0ZXJlZAorCQkJCQlpbmRleCBpbnN0ZWFkIG9mIHBy ZWJ1aWx0LT5pbmRleCAqLwogCWNvbnN0IHVsaW50KglvZmZzZXRzKQkvKiBpbjogYXJyYXkgcmV0 dXJuZWQgYnkKLQkJCQkJcmVjX2dldF9vZmZzZXRzKCkgKi8KKwkJCQkJcmVjX2dldF9vZmZzZXRz KHJlYykgKi8KIHsKLQlteXNxbF9yb3dfdGVtcGxfdCoJdGVtcGw7CiAJbWVtX2hlYXBfdCoJCWV4 dGVybl9maWVsZF9oZWFwCT0gTlVMTDsKIAltZW1faGVhcF90KgkJaGVhcDsKLQlieXRlKgkJCWRh dGE7Ci0JdWxpbnQJCQlsZW47CiAJdWxpbnQJCQlpOwogCiAJdXRfYWQocHJlYnVpbHQtPm15c3Fs X3RlbXBsYXRlKTsKIAl1dF9hZChwcmVidWlsdC0+ZGVmYXVsdF9yZWMpOwogCXV0X2FkKHJlY19v ZmZzX3ZhbGlkYXRlKHJlYywgTlVMTCwgb2Zmc2V0cykpOworCXV0X2FkKCFyZWNfZ2V0X2RlbGV0 ZWRfZmxhZyhyZWMsIHJlY19vZmZzX2NvbXAob2Zmc2V0cykpKTsKIAogCWlmIChVTklWX0xJS0VM WV9OVUxMKHByZWJ1aWx0LT5ibG9iX2hlYXApKSB7CiAJCW1lbV9oZWFwX2ZyZWUocHJlYnVpbHQt PmJsb2JfaGVhcCk7CkBAIC0yNjIzLDEwICsyNjI0LDE1IEBAIHJvd19zZWxfc3RvcmVfbXlzcWxf cmVjKAogCiAJZm9yIChpID0gMDsgaSA8IHByZWJ1aWx0LT5uX3RlbXBsYXRlOyBpKyspIHsKIAot CQl0ZW1wbCA9IHByZWJ1aWx0LT5teXNxbF90ZW1wbGF0ZSArIGk7CisJCWNvbnN0IG15c3FsX3Jv d190ZW1wbF90KnRlbXBsID0gcHJlYnVpbHQtPm15c3FsX3RlbXBsYXRlICsgaTsKKwkJYnl0ZSoJ CQlkYXRhOworCQl1bGludAkJCWxlbjsKKwkJdWxpbnQJCQlmaWVsZF9ubzsKIAotCQlpZiAoVU5J Vl9VTkxJS0VMWShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsCi0JCQkJCQkgICAgICB0ZW1w bC0+cmVjX2ZpZWxkX25vKSkpIHsKKwkJZmllbGRfbm8gPSByZWNfY2x1c3QKKwkJCT8gdGVtcGwt PmNsdXN0X3JlY19maWVsZF9ubyA6IHRlbXBsLT5yZWNfZmllbGRfbm87CisKKwkJaWYgKFVOSVZf VU5MSUtFTFkocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBmaWVsZF9ubykpKSB7CiAKIAkJ CS8qIENvcHkgYW4gZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQgdG8gdGhlIHRlbXBvcmFyeQogCQkJ aGVhcCAqLwpAQCAtMjY1MiwxNSArMjY1OCwxMyBAQCByb3dfc2VsX3N0b3JlX215c3FsX3JlYygK IAkJCWNhdXNlcyBhbiBhc3NlcnQgKi8KIAogCQkJZGF0YSA9IGJ0cl9yZWNfY29weV9leHRlcm5h bGx5X3N0b3JlZF9maWVsZCgKLQkJCQlyZWMsIG9mZnNldHMsIHRlbXBsLT5yZWNfZmllbGRfbm8s Ci0JCQkJJmxlbiwgaGVhcCk7CisJCQkJcmVjLCBvZmZzZXRzLCBmaWVsZF9ubywgJmxlbiwgaGVh cCk7CiAKIAkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOwogCQl9IGVsc2UgewogCQkJLyog RmllbGQgaXMgc3RvcmVkIGluIHRoZSByb3cuICovCiAKLQkJCWRhdGEgPSByZWNfZ2V0X250aF9m aWVsZChyZWMsIG9mZnNldHMsCi0JCQkJCQkgdGVtcGwtPnJlY19maWVsZF9ubywgJmxlbik7CisJ CQlkYXRhID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLCBmaWVsZF9ubywgJmxlbik7 CiAKIAkJCWlmIChVTklWX1VOTElLRUxZKHRlbXBsLT50eXBlID09IERBVEFfQkxPQikKIAkJCSAg ICAmJiBsZW4gIT0gVU5JVl9TUUxfTlVMTCkgewpAQCAtMzAxOSw3ICszMDIzLDcgQEAgcm93X3Nl bF9wb3BfY2FjaGVkX3Jvd19mb3JfbXlzcWwoCiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0KQkv KiBpbjogcHJlYnVpbHQgc3RydWN0ICovCiB7CiAJdWxpbnQJCQlpOwotCW15c3FsX3Jvd190ZW1w bF90Kgl0ZW1wbDsKKwljb25zdCBteXNxbF9yb3dfdGVtcGxfdCp0ZW1wbDsKIAlieXRlKgkJCWNh Y2hlZF9yZWM7CiAJdXRfYWQocHJlYnVpbHQtPm5fZmV0Y2hfY2FjaGVkID4gMCk7CiAJdXRfYWQo cHJlYnVpbHQtPm15c3FsX3ByZWZpeF9sZW4gPD0gcHJlYnVpbHQtPm15c3FsX3Jvd19sZW4pOwpA QCAtMzA3NSwxNCArMzA3OSwxOSBAQCB2b2lkCiByb3dfc2VsX3B1c2hfY2FjaGVfcm93X2Zvcl9t eXNxbCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXJvd19wcmVidWlsdF90 KglwcmVidWlsdCwJLyogaW46IHByZWJ1aWx0IHN0cnVjdCAqLwotCXJlY190KgkJcmVjLAkJLyog aW46IHJlY29yZCB0byBwdXNoICovCi0JY29uc3QgdWxpbnQqCW9mZnNldHMpCS8qIGluOiByZWNf Z2V0X29mZnNldHMoKSAqLworCXJlY190KgkJcmVjLAkJLyogaW46IElubm9iYXNlIHJlY29yZCBp biB0aGUgaW5kZXgKKwkJCQkJd2hpY2ggd2FzIGRlc2NyaWJlZCBpbiBwcmVidWlsdCdzCisJCQkJ CXRlbXBsYXRlLCBvciBpbiB0aGUgY2x1c3RlcmVkIGluZGV4ICovCisJaWJvb2wJCXJlY19jbHVz dCwJLyogaW46IFRSVUUgaWYgcmVjIGlzIGluIHRoZSBjbHVzdGVyZWQKKwkJCQkJaW5kZXggaW5z dGVhZCBvZiBwcmVidWlsdC0+aW5kZXggKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cykJLyogaW46 IHJlY19nZXRfb2Zmc2V0cyhyZWMpICovCiB7CiAJYnl0ZSoJYnVmOwogCXVsaW50CWk7CiAKIAl1 dF9hZChwcmVidWlsdC0+bl9mZXRjaF9jYWNoZWQgPCBNWVNRTF9GRVRDSF9DQUNIRV9TSVpFKTsK IAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIE5VTEwsIG9mZnNldHMpKTsKKwl1dF9hZCgh cmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCByZWNfb2Zmc19jb21wKG9mZnNldHMpKSk7CiAJdXRf YSghcHJlYnVpbHQtPnRlbXBsX2NvbnRhaW5zX2Jsb2IpOwogCiAJaWYgKHByZWJ1aWx0LT5mZXRj aF9jYWNoZVswXSA9PSBOVUxMKSB7CkBAIC0zMTExLDcgKzMxMjAsNyBAQCByb3dfc2VsX3B1c2hf Y2FjaGVfcm93X2Zvcl9teXNxbCgKIAlpZiAoVU5JVl9VTkxJS0VMWSghcm93X3NlbF9zdG9yZV9t eXNxbF9yZWMoCiAJCQkJICBwcmVidWlsdC0+ZmV0Y2hfY2FjaGVbCiAJCQkJCSAgcHJlYnVpbHQt Pm5fZmV0Y2hfY2FjaGVkXSwKLQkJCQkgIHByZWJ1aWx0LCByZWMsIG9mZnNldHMpKSkgeworCQkJ CSAgcHJlYnVpbHQsIHJlYywgcmVjX2NsdXN0LCBvZmZzZXRzKSkpIHsKIAkJdXRfZXJyb3I7CiAJ fQogCkBAIC0zNTAwLDcgKzM1MDksOCBAQCByb3dfc2VhcmNoX2Zvcl9teXNxbCgKIAkJCQkJCQkg cmVjLCBvZmZzZXRzKSk7CiAjZW5kaWYKIAkJCQlpZiAoIXJvd19zZWxfc3RvcmVfbXlzcWxfcmVj KGJ1ZiwgcHJlYnVpbHQsCi0JCQkJCQkJICAgICByZWMsIG9mZnNldHMpKSB7CisJCQkJCQkJICAg ICByZWMsIEZBTFNFLAorCQkJCQkJCSAgICAgb2Zmc2V0cykpIHsKIAkJCQkJZXJyID0gREJfVE9P X0JJR19SRUNPUkQ7CiAKIAkJCQkJLyogV2UgbGV0IHRoZSBtYWluIGxvb3AgdG8gZG8gdGhlCkBA IC00MjMzLDE5ICs0MjQzLDggQEAgcmVxdWlyZXNfY2x1c3RfcmVjOgogCQkJZ290byBuZXh0X3Jl YzsKIAkJfQogCi0JCWlmIChwcmVidWlsdC0+bmVlZF90b19hY2Nlc3NfY2x1c3RlcmVkKSB7Ci0K LQkJCXJlc3VsdF9yZWMgPSBjbHVzdF9yZWM7Ci0KLQkJCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRl KHJlc3VsdF9yZWMsIGNsdXN0X2luZGV4LAotCQkJCQkJb2Zmc2V0cykpOwotCQl9IGVsc2Ugewot CQkJLyogV2UgdXNlZCAnb2Zmc2V0cycgZm9yIHRoZSBjbHVzdCByZWMsIHJlY2FsY3VsYXRlCi0J CQl0aGVtIGZvciAncmVjJyAqLwotCQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGlu ZGV4LCBvZmZzZXRzLAotCQkJCQkJICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKLQkJCXJlc3Vs dF9yZWMgPSByZWM7Ci0JCX0KKwkJcmVzdWx0X3JlYyA9IGNsdXN0X3JlYzsKKwkJdXRfYWQocmVj X29mZnNfdmFsaWRhdGUocmVzdWx0X3JlYywgY2x1c3RfaW5kZXgsIG9mZnNldHMpKTsKIAl9IGVs c2UgewogCQlyZXN1bHRfcmVjID0gcmVjOwogCX0KQEAgLTQyNTYsNiArNDI1NSw3IEBAIHJlcXVp cmVzX2NsdXN0X3JlYzoKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZXN1bHRfcmVjLAogCQkJ CXJlc3VsdF9yZWMgIT0gcmVjID8gY2x1c3RfaW5kZXggOiBpbmRleCwKIAkJCQlvZmZzZXRzKSk7 CisJdXRfYWQoIXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlc3VsdF9yZWMsIGNvbXApKTsKIAogCWlm ICgobWF0Y2hfbW9kZSA9PSBST1dfU0VMX0VYQUNUCiAJICAgICB8fCBwcmVidWlsdC0+bl9yb3dz X2ZldGNoZWQgPj0gTVlTUUxfRkVUQ0hfQ0FDSEVfVEhSRVNIT0xEKQpAQCAtNDI3Niw3ICs0Mjc2 LDcgQEAgcmVxdWlyZXNfY2x1c3RfcmVjOgogCQljdXJzb3IuICovCiAKIAkJcm93X3NlbF9wdXNo X2NhY2hlX3Jvd19mb3JfbXlzcWwocHJlYnVpbHQsIHJlc3VsdF9yZWMsCi0JCQkJCQkgb2Zmc2V0 cyk7CisJCQkJCQkgcmVzdWx0X3JlYyAhPSByZWMsIG9mZnNldHMpOwogCQlpZiAocHJlYnVpbHQt Pm5fZmV0Y2hfY2FjaGVkID09IE1ZU1FMX0ZFVENIX0NBQ0hFX1NJWkUpIHsKIAogCQkJZ290byBn b3Rfcm93OwpAQCAtNDI4NCwxNSArNDI4NCwzMSBAQCByZXF1aXJlc19jbHVzdF9yZWM6CiAKIAkJ Z290byBuZXh0X3JlYzsKIAl9IGVsc2UgewotCQlpZiAocHJlYnVpbHQtPnRlbXBsYXRlX3R5cGUg PT0gUk9XX01ZU1FMX0RVTU1ZX1RFTVBMQVRFKSB7CisJCWlmIChVTklWX1VOTElLRUxZCisJCSAg ICAocHJlYnVpbHQtPnRlbXBsYXRlX3R5cGUgPT0gUk9XX01ZU1FMX0RVTU1ZX1RFTVBMQVRFKSkg eworCQkJLyogQ0hFQ0sgVEFCTEU6IGZldGNoIHRoZSByb3cgKi8KKworCQkJaWYgKHJlc3VsdF9y ZWMgIT0gcmVjCisJCQkgICAgJiYgIXByZWJ1aWx0LT5uZWVkX3RvX2FjY2Vzc19jbHVzdGVyZWQp IHsKKwkJCQkvKiBXZSB1c2VkICdvZmZzZXRzJyBmb3IgdGhlIGNsdXN0CisJCQkJcmVjLCByZWNh bGN1bGF0ZSB0aGVtIGZvciAncmVjJyAqLworCQkJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMo cmVjLCBpbmRleCwgb2Zmc2V0cywKKwkJCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwKKwkJCQkJCQkg ICZoZWFwKTsKKwkJCQlyZXN1bHRfcmVjID0gcmVjOworCQkJfQorCiAJCQltZW1jcHkoYnVmICsg NCwgcmVzdWx0X3JlYwogCQkJICAgICAgIC0gcmVjX29mZnNfZXh0cmFfc2l6ZShvZmZzZXRzKSwK IAkJCSAgICAgICByZWNfb2Zmc19zaXplKG9mZnNldHMpKTsKIAkJCW1hY2hfd3JpdGVfdG9fNChi dWYsCiAJCQkJCXJlY19vZmZzX2V4dHJhX3NpemUob2Zmc2V0cykgKyA0KTsKIAkJfSBlbHNlIHsK LQkJCWlmICghcm93X3NlbF9zdG9yZV9teXNxbF9yZWMoYnVmLCBwcmVidWlsdCwKLQkJCQkJCSAg ICAgcmVzdWx0X3JlYywgb2Zmc2V0cykpIHsKKwkJCS8qIFJldHVybmluZyBhIHJvdyB0byBNeVNR TCAqLworCisJCQlpZiAoIXJvd19zZWxfc3RvcmVfbXlzcWxfcmVjKGJ1ZiwgcHJlYnVpbHQsIHJl c3VsdF9yZWMsCisJCQkJCQkgICAgIHJlc3VsdF9yZWMgIT0gcmVjLAorCQkJCQkJICAgICBvZmZz ZXRzKSkgewogCQkJCWVyciA9IERCX1RPT19CSUdfUkVDT1JEOwogCiAJCQkJZ290byBsb2NrX3dh aXRfb3JfZXJyb3I7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6dmFzaWwu ZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEwMTAxOTA2MDQxNS1iajN1NmV3azAyMm1rNG5yCkBAIC00MzAsOSArNDMwLDExIEBAIHJv d191cGRfY2hhbmdlc19maWVsZF9zaXplX29yX2V4dGVybmFsKAogfQogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1SZXBs YWNlcyB0aGUgbmV3IGNvbHVtbiB2YWx1ZXMgc3RvcmVkIGluIHRoZSB1cGRhdGUgdmVjdG9yIHRv IHRoZSByZWNvcmQKLWdpdmVuLiBObyBmaWVsZCBzaXplIGNoYW5nZXMgYXJlIGFsbG93ZWQuIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCBvbmx5IGZvcgotYSBjbHVzdGVyZWQgaW5kZXggKi8KK1JlcGxh Y2VzIHRoZSBuZXcgY29sdW1uIHZhbHVlcyBzdG9yZWQgaW4gdGhlIHVwZGF0ZSB2ZWN0b3IgdG8g dGhlCityZWNvcmQgZ2l2ZW4uIE5vIGZpZWxkIHNpemUgY2hhbmdlcyBhcmUgYWxsb3dlZC4gVGhp cyBmdW5jdGlvbiBpcwordXN1YWxseSBpbnZva2VkIG9uIGEgY2x1c3RlcmVkIGluZGV4LiBUaGUg b25seSB1c2UgY2FzZSBmb3IgYQorc2Vjb25kYXJ5IGluZGV4IGlzIHJvd19pbnNfc2VjX2luZGV4 X2VudHJ5X2J5X21vZGlmeSgpIG9yIGl0cworY291bnRlcnBhcnQgaW4gaWJ1Zl9pbnNlcnRfdG9f aW5kZXhfcGFnZSgpLiAqLwogCiB2b2lkCiByb3dfdXBkX3JlY19pbl9wbGFjZSgKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vQ2hhbmdlTG9nJwotLS0gYS9zdG9yYWdl L2lubm9kYl9wbHVnaW4vQ2hhbmdlTG9nCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAx MDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4v Q2hhbmdlTG9nCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYwNDE1LWJq M3U2ZXdrMDIybWs0bnIKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0xOQlUaGUgSW5ub0RCIFRl YW0KKworCSogYnRyL2J0cjBjdXIuYywgYnVmL2J1ZjBidWYuYywgYnVmL2J1ZjBmbHUuYywgaGFu ZGxlci9oYV9pbm5vZGIuY2MsCisJaWJ1Zi9pYnVmMGlidWYuYywgaW5jbHVkZS9idHIwY3VyLmgs IGluY2x1ZGUvYnVmMGZsdS5oLAorCWluY2x1ZGUvaWJ1ZjBpYnVmLmgsIGluY2x1ZGUvcm93MG15 c3FsLmgsCisJcm93L3JvdzBteXNxbC5jLCByb3cvcm93MHNlbC5jLAorCWlubm9kYl9idWc1NjY4 MC50ZXN0LCBpbm5vZGJfYnVnNTY2ODAucmVzdWx0OgorCUZpeCBCdWcgIzU2NjgwIElubm9EQiBt YXkgcmV0dXJuIHdyb25nIHJlc3VsdHMgZnJvbSBhCisJY2FzZS1pbnNlbnNpdGl2ZSBjb3Zlcmlu ZyBpbmRleAorCiAyMDEwLTEwLTE4CVRoZSBJbm5vREIgVGVhbQogCiAJKiBoYW5kbGVyL2hhX2lu bm9kYi5jYywgaGFuZGxlci9oYV9pbm5vZGIuaCwgaW5ub2RiX2J1ZzU3MjUyLnJlc3VsdCwKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBjdXIuYycKLS0t IGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDEwMTAxODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTE2MjYsNyArMTYyNiw3IEBAIGZ1 bmNfZXhpdDoKIFNlZSBpZiB0aGVyZSBpcyBlbm91Z2ggcGxhY2UgaW4gdGhlIHBhZ2UgbW9kaWZp Y2F0aW9uIGxvZyB0byBsb2cKIGFuIHVwZGF0ZS1pbi1wbGFjZS4KIEByZXR1cm4JVFJVRSBpZiBl bm91Z2ggcGxhY2UgKi8KLXN0YXRpYworVU5JVl9JTlRFUk4KIGlib29sCiBidHJfY3VyX3VwZGF0 ZV9hbGxvY196aXAoCiAvKj09PT09PT09PT09PT09PT09PT09PSovCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9idWYvYnVmMGJ1Zi5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAx MDEwMTgxMTIwMTYtd3pqNDU5amNkdnZpamU1cAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4v YnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MDQx NS1iajN1NmV3azAyMm1rNG5yCkBAIC0yMjg2LDYgKzIyODYsMzAgQEAgd2FpdF91bnRpbF91bmZp eGVkOgogCWJ5dGVzLiAqLwogCVVOSVZfTUVNX0FTU0VSVF9SVygmYmxvY2stPnBhZ2UsIHNpemVv ZiBibG9jay0+cGFnZSk7CiAjZW5kaWYKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5l ZCBVTklWX0lCVUZfREVCVUcKKwlpZiAobW9kZSA9PSBCVUZfR0VUX0lGX0lOX1BPT0wgJiYgaWJ1 Zl9kZWJ1ZykgeworCQkvKiBUcnkgdG8gZXZpY3QgdGhlIGJsb2NrIGZyb20gdGhlIGJ1ZmZlciBw b29sLCB0byB1c2UgdGhlCisJCWluc2VydCBidWZmZXIgYXMgbXVjaCBhcyBwb3NzaWJsZS4gKi8K KworCQlpZiAoYnVmX0xSVV9mcmVlX2Jsb2NrKCZibG9jay0+cGFnZSwgVFJVRSwgTlVMTCkKKwkJ ICAgID09IEJVRl9MUlVfRlJFRUQpIHsKKwkJCWJ1Zl9wb29sX211dGV4X2V4aXQoKTsKKwkJCW11 dGV4X2V4aXQoJmJsb2NrLT5tdXRleCk7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiaW5ub2Ri X2NoYW5nZV9idWZmZXJpbmdfZGVidWcgZXZpY3QgJXUgJXVcbiIsCisJCQkJKHVuc2lnbmVkKSBz cGFjZSwgKHVuc2lnbmVkKSBvZmZzZXQpOworCQkJcmV0dXJuKE5VTEwpOworCQl9IGVsc2UgaWYg KGJ1Zl9mbHVzaF9wYWdlX3RyeShibG9jaykpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJp bm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZyBmbHVzaCAldSAldVxuIiwKKwkJCQkodW5zaWdu ZWQpIHNwYWNlLCAodW5zaWduZWQpIG9mZnNldCk7CisJCQlndWVzcyA9IGJsb2NrOworCQkJZ290 byBsb29wOworCQl9CisKKwkJLyogRmFpbGVkIHRvIGV2aWN0IHRoZSBwYWdlOyBjaGFuZ2UgaXQg ZGlyZWN0bHkgKi8KKwl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVCVUcg Ki8KIAogCWJ1Zl9ibG9ja19idWZfZml4X2luYyhibG9jaywgZmlsZSwgbGluZSk7CiAKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVmL2J1ZjBmbHUuYycKLS0tIGEv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwZmx1LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3Jh Y2xlLmNvbS0yMDEwMTAxODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9idWYvYnVmMGZsdS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTEwMzksNiArMTAzOSw4MiBAQCBidWZf Zmx1c2hfd3JpdGVfYmxvY2tfbG93KAogCX0KIH0KIAorIyBpZiBkZWZpbmVkIFVOSVZfREVCVUcg fHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1dyaXRlcyBhIGZs dXNoYWJsZSBwYWdlIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGJ1ZmZlciBwb29sIHRvIGEgZmls ZS4KK05PVEU6IGJ1Zl9wb29sX211dGV4IGFuZCBibG9jay0+bXV0ZXggbXVzdCBiZSBoZWxkIHVw b24gZW50ZXJpbmcgdGhpcworZnVuY3Rpb24sIGFuZCB0aGV5IHdpbGwgYmUgcmVsZWFzZWQgYnkg dGhpcyBmdW5jdGlvbiBhZnRlciBmbHVzaGluZy4KK1RoaXMgaXMgbG9vc2VseSBiYXNlZCBvbiBi dWZfZmx1c2hfYmF0Y2goKSBhbmQgYnVmX2ZsdXNoX3BhZ2UoKS4KK0ByZXR1cm4gVFJVRSBpZiB0 aGUgcGFnZSB3YXMgZmx1c2hlZCBhbmQgdGhlIG11dGV4ZXMgcmVsZWFzZWQgKi8KK1VOSVZfSU5U RVJOCitpYm9vbAorYnVmX2ZsdXNoX3BhZ2VfdHJ5KAorLyo9PT09PT09PT09PT09PT0qLworCWJ1 Zl9ibG9ja190KglibG9jaykJCS8qITwgaW4vb3V0OiBidWZmZXIgY29udHJvbCBibG9jayAqLwor eworCXV0X2FkKGJ1Zl9wb29sX211dGV4X293bigpKTsKKwl1dF9hZChidWZfYmxvY2tfZ2V0X3N0 YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKTsKKwl1dF9hZChtdXRleF9vd24oJmJs b2NrLT5tdXRleCkpOworCisJaWYgKCFidWZfZmx1c2hfcmVhZHlfZm9yX2ZsdXNoKCZibG9jay0+ cGFnZSwgQlVGX0ZMVVNIX0xSVSkpIHsKKwkJcmV0dXJuKEZBTFNFKTsKKwl9CisKKwlpZiAoYnVm X3Bvb2wtPm5fZmx1c2hbQlVGX0ZMVVNIX0xSVV0gPiAwCisJICAgIHx8IGJ1Zl9wb29sLT5pbml0 X2ZsdXNoW0JVRl9GTFVTSF9MUlVdKSB7CisJCS8qIFRoZXJlIGlzIGFscmVhZHkgYSBmbHVzaCBi YXRjaCBvZiB0aGUgc2FtZSB0eXBlIHJ1bm5pbmcgKi8KKwkJcmV0dXJuKEZBTFNFKTsKKwl9CisK KwlidWZfcG9vbC0+aW5pdF9mbHVzaFtCVUZfRkxVU0hfTFJVXSA9IFRSVUU7CisKKwlidWZfcGFn ZV9zZXRfaW9fZml4KCZibG9jay0+cGFnZSwgQlVGX0lPX1dSSVRFKTsKKworCWJ1Zl9wYWdlX3Nl dF9mbHVzaF90eXBlKCZibG9jay0+cGFnZSwgQlVGX0ZMVVNIX0xSVSk7CisKKwlpZiAoYnVmX3Bv b2wtPm5fZmx1c2hbQlVGX0ZMVVNIX0xSVV0rKyA9PSAwKSB7CisKKwkJb3NfZXZlbnRfcmVzZXQo YnVmX3Bvb2wtPm5vX2ZsdXNoW0JVRl9GTFVTSF9MUlVdKTsKKwl9CisKKwkvKiBWRVJZIElNUE9S VEFOVDoKKwlCZWNhdXNlIGFueSB0aHJlYWQgbWF5IGNhbGwgdGhlIExSVSBmbHVzaCwgZXZlbiB3 aGVuIG93bmluZworCWxvY2tzIG9uIHBhZ2VzLCB0byBhdm9pZCBkZWFkbG9ja3MsIHdlIG11c3Qg bWFrZSBzdXJlIHRoYXQgdGhlCisJcy1sb2NrIGlzIGFjcXVpcmVkIG9uIHRoZSBwYWdlIHdpdGhv dXQgd2FpdGluZzogdGhpcyBpcworCWFjY29tcGxpc2hlZCBiZWNhdXNlIGJ1Zl9mbHVzaF9yZWFk eV9mb3JfZmx1c2goKSBtdXN0IGhvbGQsCisJYW5kIHRoYXQgcmVxdWlyZXMgdGhlIHBhZ2Ugbm90 IHRvIGJlIGJ1ZmZlcmZpeGVkLiAqLworCisJcndfbG9ja19zX2xvY2tfZ2VuKCZibG9jay0+bG9j aywgQlVGX0lPX1dSSVRFKTsKKworCS8qIE5vdGUgdGhhdCB0aGUgcy1sYXRjaCBpcyBhY3F1aXJl ZCBiZWZvcmUgcmVsZWFzaW5nIHRoZQorCWJ1Zl9wb29sIG11dGV4OiB0aGlzIGVuc3VyZXMgdGhh dCB0aGUgbGF0Y2ggaXMgYWNxdWlyZWQKKwlpbW1lZGlhdGVseS4gKi8KKworCW11dGV4X2V4aXQo JmJsb2NrLT5tdXRleCk7CisJYnVmX3Bvb2xfbXV0ZXhfZXhpdCgpOworCisJLyogRXZlbiB0aG91 Z2ggYmxvY2sgaXMgbm90IHByb3RlY3RlZCBieSBhbnkgbXV0ZXggYXQgdGhpcworCXBvaW50LCBp dCBpcyBzYWZlIHRvIGFjY2VzcyBibG9jaywgYmVjYXVzZSBpdCBpcyBpb19maXhlZCBhbmQKKwlv bGRlc3RfbW9kaWZpY2F0aW9uICE9IDAuICBUaHVzLCBpdCBjYW5ub3QgYmUgcmVsb2NhdGVkIGlu IHRoZQorCWJ1ZmZlciBwb29sIG9yIHJlbW92ZWQgZnJvbSBmbHVzaF9saXN0IG9yIExSVV9saXN0 LiAqLworCisJYnVmX2ZsdXNoX3dyaXRlX2Jsb2NrX2xvdygmYmxvY2stPnBhZ2UpOworCisJYnVm X3Bvb2xfbXV0ZXhfZW50ZXIoKTsKKwlidWZfcG9vbC0+aW5pdF9mbHVzaFtCVUZfRkxVU0hfTFJV XSA9IEZBTFNFOworCisJaWYgKGJ1Zl9wb29sLT5uX2ZsdXNoW0JVRl9GTFVTSF9MUlVdID09IDAp IHsKKwkJLyogVGhlIHJ1bm5pbmcgZmx1c2ggYmF0Y2ggaGFzIGVuZGVkICovCisJCW9zX2V2ZW50 X3NldChidWZfcG9vbC0+bm9fZmx1c2hbQlVGX0ZMVVNIX0xSVV0pOworCX0KKworCWJ1Zl9wb29s X211dGV4X2V4aXQoKTsKKwlidWZfZmx1c2hfYnVmZmVyZWRfd3JpdGVzKCk7CisKKwlyZXR1cm4o VFJVRSk7Cit9CisjIGVuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9JQlVGX0RFQlVHICovCisK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIFdyaXRlcyBhIGZsdXNoYWJsZSBwYWdlIGFzeW5jaHJvbm91c2x5 IGZyb20gdGhlIGJ1ZmZlciBwb29sIHRvIGEgZmlsZS4KIE5PVEU6IGluIHNpbXVsYXRlZCBhaW8g d2UgbXVzdCBjYWxsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hh bmRsZXIvaGFfaW5ub2RiLmNjJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9o YV9pbm5vZGIuY2MJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODExMjAxNi13 emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lu bm9kYi5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MDQxNS1iajN1 NmV3azAyMm1rNG5yCkBAIC00NDMyLDE3ICs0NDMyLDE4IEBAIGluY2x1ZGVfZmllbGQ6CiAJCW5f cmVxdWVzdGVkX2ZpZWxkcysrOwogCiAJCXRlbXBsLT5jb2xfbm8gPSBpOworCQl0ZW1wbC0+Y2x1 c3RfcmVjX2ZpZWxkX25vID0gZGljdF9jb2xfZ2V0X2NsdXN0X3BvcygKKwkJCSZpbmRleC0+dGFi bGUtPmNvbHNbaV0sIGNsdXN0X2luZGV4KTsKKwkJdXRfYWQodGVtcGwtPmNsdXN0X3JlY19maWVs ZF9ubyAhPSBVTElOVF9VTkRFRklORUQpOwogCiAJCWlmIChpbmRleCA9PSBjbHVzdF9pbmRleCkg ewotCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IGRpY3RfY29sX2dldF9jbHVzdF9wb3MoCi0JCQkJ JmluZGV4LT50YWJsZS0+Y29sc1tpXSwgaW5kZXgpOworCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9 IHRlbXBsLT5jbHVzdF9yZWNfZmllbGRfbm87CiAJCX0gZWxzZSB7CiAJCQl0ZW1wbC0+cmVjX2Zp ZWxkX25vID0gZGljdF9pbmRleF9nZXRfbnRoX2NvbF9wb3MoCiAJCQkJCQkJCWluZGV4LCBpKTsK LQkJfQotCi0JCWlmICh0ZW1wbC0+cmVjX2ZpZWxkX25vID09IFVMSU5UX1VOREVGSU5FRCkgewot CQkJcHJlYnVpbHQtPm5lZWRfdG9fYWNjZXNzX2NsdXN0ZXJlZCA9IFRSVUU7CisJCQlpZiAodGVt cGwtPnJlY19maWVsZF9ubyA9PSBVTElOVF9VTkRFRklORUQpIHsKKwkJCQlwcmVidWlsdC0+bmVl ZF90b19hY2Nlc3NfY2x1c3RlcmVkID0gVFJVRTsKKwkJCX0KIAkJfQogCiAJCWlmIChmaWVsZC0+ bnVsbF9wdHIpIHsKQEAgLTQ0OTQsOSArNDQ5NSw3IEBAIHNraXBfZmllbGQ6CiAJCWZvciAoaSA9 IDA7IGkgPCBuX3JlcXVlc3RlZF9maWVsZHM7IGkrKykgewogCQkJdGVtcGwgPSBwcmVidWlsdC0+ bXlzcWxfdGVtcGxhdGUgKyBpOwogCi0JCQl0ZW1wbC0+cmVjX2ZpZWxkX25vID0gZGljdF9jb2xf Z2V0X2NsdXN0X3BvcygKLQkJCQkmaW5kZXgtPnRhYmxlLT5jb2xzW3RlbXBsLT5jb2xfbm9dLAot CQkJCWNsdXN0X2luZGV4KTsKKwkJCXRlbXBsLT5yZWNfZmllbGRfbm8gPSB0ZW1wbC0+Y2x1c3Rf cmVjX2ZpZWxkX25vOwogCQl9CiAJfQogfQpAQCAtMTA5NDUsNiArMTA5NDQsMTMgQEAgc3RhdGlj IE1ZU1FMX1NZU1ZBUl9TVFIoY2hhbmdlX2J1ZmZlcmluZwogICBpbm5vZGJfY2hhbmdlX2J1ZmZl cmluZ192YWxpZGF0ZSwKICAgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfdXBkYXRlLCAiaW5zZXJ0 cyIpOyAKIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfSUJVRl9ERUJV Rworc3RhdGljIE1ZU1FMX1NZU1ZBUl9VSU5UKGNoYW5nZV9idWZmZXJpbmdfZGVidWcsIGlidWZf ZGVidWcsCisgIFBMVUdJTl9WQVJfUlFDTURBUkcsCisgICJEZWJ1ZyBmbGFncyBmb3IgSW5ub0RC IGNoYW5nZSBidWZmZXJpbmcgKDA9bm9uZSkiLAorICBOVUxMLCBOVUxMLCAwLCAwLCAxLCAwKTsK KyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfSUJVRl9ERUJVRyAqLworCiBzdGF0aWMgTVlT UUxfU1lTVkFSX1VMT05HKHJlYWRfYWhlYWRfdGhyZXNob2xkLCBzcnZfcmVhZF9haGVhZF90aHJl c2hvbGQsCiAgIFBMVUdJTl9WQVJfUlFDTURBUkcsCiAgICJOdW1iZXIgb2YgcGFnZXMgdGhhdCBt dXN0IGJlIGFjY2Vzc2VkIHNlcXVlbnRpYWxseSBmb3IgSW5ub0RCIHRvICIKQEAgLTExMDA1LDYg KzExMDExLDkgQEAgc3RhdGljIHN0cnVjdCBzdF9teXNxbF9zeXNfdmFyKiBpbm5vYmFzZQogICBN WVNRTF9TWVNWQVIodmVyc2lvbiksCiAgIE1ZU1FMX1NZU1ZBUih1c2Vfc3lzX21hbGxvYyksCiAg IE1ZU1FMX1NZU1ZBUihjaGFuZ2VfYnVmZmVyaW5nKSwKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcg fHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKyAgTVlTUUxfU1lTVkFSKGNoYW5nZV9idWZmZXJp bmdfZGVidWcpLAorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9JQlVGX0RFQlVHICovCiAg IE1ZU1FMX1NZU1ZBUihyZWFkX2FoZWFkX3RocmVzaG9sZCksCiAgIE1ZU1FMX1NZU1ZBUihpb19j YXBhY2l0eSksCiAgIE5VTEwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVn aW4vaWJ1Zi9pYnVmMGlidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lidWYvaWJ1 ZjBpYnVmLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODExMjAxNi13emo0 NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1Zi5j CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYwNDE1LWJqM3U2ZXdrMDIy bWs0bnIKQEAgLTQ5LDYgKzQ5LDcgQEAgQ3JlYXRlZCA3LzE5LzE5OTcgSGVpa2tpIFR1dXJpCiAj aW5jbHVkZSAiYnRyMGN1ci5oIgogI2luY2x1ZGUgImJ0cjBwY3VyLmgiCiAjaW5jbHVkZSAiYnRy MGJ0ci5oIgorI2luY2x1ZGUgInJvdzB1cGQuaCIKICNpbmNsdWRlICJzeW5jMHN5bmMuaCIKICNp bmNsdWRlICJkaWN0MGJvb3QuaCIKICNpbmNsdWRlICJmdXQwbHN0LmgiCkBAIC0xNzAsNiArMTcx LDExIEBAIGFjY2VzcyBvcmRlciBydWxlcy4gKi8KIC8qKiBPcGVyYXRpb25zIHRoYXQgY2FuIGN1 cnJlbnRseSBiZSBidWZmZXJlZC4gKi8KIFVOSVZfSU5URVJOIGlidWZfdXNlX3QJaWJ1Zl91c2UJ CT0gSUJVRl9VU0VfSU5TRVJUOwogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQg VU5JVl9JQlVGX0RFQlVHCisvKiogRmxhZyB0byBjb250cm9sIGluc2VydCBidWZmZXIgZGVidWdn aW5nLiAqLworVU5JVl9JTlRFUk4gdWludAlpYnVmX2RlYnVnOworI2VuZGlmIC8qIFVOSVZfREVC VUcgfHwgVU5JVl9JQlVGX0RFQlVHICovCisKIC8qKiBUaGUgaW5zZXJ0IGJ1ZmZlciBjb250cm9s IHN0cnVjdHVyZSAqLwogVU5JVl9JTlRFUk4gaWJ1Zl90KglpYnVmCQkJPSBOVUxMOwogCkBAIC0y ODgxLDkgKzI4ODcsODAgQEAgRHVyaW5nIG1lcmdlLCBpbnNlcnRzIHRvIGFuIGluZGV4IHBhZ2Ug YQogZnJvbSB0aGUgaW5zZXJ0IGJ1ZmZlci4gKi8KIHN0YXRpYwogdm9pZAoraWJ1Zl9pbnNlcnRf dG9faW5kZXhfcGFnZV9sb3coCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwljb25z dCBkdHVwbGVfdCoJZW50cnksCS8qITwgaW46IGJ1ZmZlcmVkIGVudHJ5IHRvIGluc2VydCAqLwor CWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6IGluZGV4IHBhZ2Ugd2hlcmUgdGhlIGJ1 ZmZlcmVkCisJCQkJZW50cnkgc2hvdWxkIGJlIHBsYWNlZCAqLworCWRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IHJlY29yZCBkZXNjcmlwdG9yICovCisJbXRyX3QqCQltdHIsCS8qITwgaW4v b3V0OiBtdHIgKi8KKwlwYWdlX2N1cl90KglwYWdlX2N1cikvKiE8IGluL291dDogY3Vyc29yIHBv c2l0aW9uZWQgb24gdGhlIHJlY29yZAorCQkJCWFmdGVyIHdoaWNoIHRvIGluc2VydCB0aGUgYnVm ZmVyZWQgZW50cnkgKi8KK3sKKwljb25zdCBwYWdlX3QqCXBhZ2U7CisJdWxpbnQJCXNwYWNlOwor CXVsaW50CQlwYWdlX25vOworCXVsaW50CQl6aXBfc2l6ZTsKKwljb25zdCBwYWdlX3QqCWJpdG1h cF9wYWdlOworCXVsaW50CQlvbGRfYml0czsKKworCWlmIChVTklWX0xJS0VMWQorCSAgICAocGFn ZV9jdXJfdHVwbGVfaW5zZXJ0KHBhZ2VfY3VyLCBlbnRyeSwgaW5kZXgsIDAsIG10cikgIT0gTlVM TCkpIHsKKwkJcmV0dXJuOworCX0KKworCS8qIElmIHRoZSByZWNvcmQgZGlkIG5vdCBmaXQsIHJl b3JnYW5pemUgKi8KKworCWJ0cl9wYWdlX3Jlb3JnYW5pemUoYmxvY2ssIGluZGV4LCBtdHIpOwor CXBhZ2VfY3VyX3NlYXJjaChibG9jaywgaW5kZXgsIGVudHJ5LCBQQUdFX0NVUl9MRSwgcGFnZV9j dXIpOworCisJLyogVGhpcyB0aW1lIHRoZSByZWNvcmQgbXVzdCBmaXQgKi8KKworCWlmIChVTklW X0xJS0VMWQorCSAgICAocGFnZV9jdXJfdHVwbGVfaW5zZXJ0KHBhZ2VfY3VyLCBlbnRyeSwgaW5k ZXgsIDAsIG10cikgIT0gTlVMTCkpIHsKKwkJcmV0dXJuOworCX0KKworCXBhZ2UgPSBidWZfYmxv Y2tfZ2V0X2ZyYW1lKGJsb2NrKTsKKworCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOworCisJ ZnByaW50ZihzdGRlcnIsCisJCSIgIElubm9EQjogRXJyb3I6IEluc2VydCBidWZmZXIgaW5zZXJ0 IGZhaWxzOyIKKwkJIiBwYWdlIGZyZWUgJWx1LCBkdHVwbGUgc2l6ZSAlbHVcbiIsCisJCSh1bG9u ZykgcGFnZV9nZXRfbWF4X2luc2VydF9zaXplKHBhZ2UsIDEpLAorCQkodWxvbmcpIHJlY19nZXRf Y29udmVydGVkX3NpemUoaW5kZXgsIGVudHJ5LCAwKSk7CisJZnB1dHMoIklubm9EQjogQ2Fubm90 IGluc2VydCBpbmRleCByZWNvcmQgIiwgc3RkZXJyKTsKKwlkdHVwbGVfcHJpbnQoc3RkZXJyLCBl bnRyeSk7CisJZnB1dHMoIlxuSW5ub0RCOiBUaGUgdGFibGUgd2hlcmUgdGhpcyBpbmRleCByZWNv cmQgYmVsb25nc1xuIgorCSAgICAgICJJbm5vREI6IGlzIG5vdyBwcm9iYWJseSBjb3JydXB0LiBQ bGVhc2UgcnVuIENIRUNLIFRBQkxFIG9uXG4iCisJICAgICAgIklubm9EQjogdGhhdCB0YWJsZS5c biIsIHN0ZGVycik7CisKKwlzcGFjZSA9IHBhZ2VfZ2V0X3NwYWNlX2lkKHBhZ2UpOworCXppcF9z aXplID0gYnVmX2Jsb2NrX2dldF96aXBfc2l6ZShibG9jayk7CisJcGFnZV9ubyA9IHBhZ2VfZ2V0 X3BhZ2Vfbm8ocGFnZSk7CisKKwliaXRtYXBfcGFnZSA9IGlidWZfYml0bWFwX2dldF9tYXBfcGFn ZShzcGFjZSwgcGFnZV9ubywgemlwX3NpemUsIG10cik7CisJb2xkX2JpdHMgPSBpYnVmX2JpdG1h cF9wYWdlX2dldF9iaXRzKGJpdG1hcF9wYWdlLCBwYWdlX25vLCB6aXBfc2l6ZSwKKwkJCQkJICAg ICBJQlVGX0JJVE1BUF9GUkVFLCBtdHIpOworCisJZnByaW50ZihzdGRlcnIsCisJCSJJbm5vREI6 IHNwYWNlICVsdSwgcGFnZSAlbHUsIHppcF9zaXplICVsdSwgYml0bWFwIGJpdHMgJWx1XG4iLAor CQkodWxvbmcpIHNwYWNlLCAodWxvbmcpIHBhZ2Vfbm8sCisJCSh1bG9uZykgemlwX3NpemUsICh1 bG9uZykgb2xkX2JpdHMpOworCisJZnB1dHMoIklubm9EQjogU3VibWl0IGEgZGV0YWlsZWQgYnVn IHJlcG9ydCIKKwkgICAgICAiIHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbVxuIiwgc3RkZXJyKTsK K30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorRHVyaW5nIG1lcmdlLCBpbnNlcnRzIHRvIGFuIGluZGV4 IHBhZ2UgYSBzZWNvbmRhcnkgaW5kZXggZW50cnkgZXh0cmFjdGVkCitmcm9tIHRoZSBpbnNlcnQg YnVmZmVyLiAqLworc3RhdGljCit2b2lkCiBpYnVmX2luc2VydF90b19pbmRleF9wYWdlKAogLyo9 PT09PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVwbGVfdCoJZW50cnksCS8qITwgaW46IGJ1ZmZl cmVkIGVudHJ5IHRvIGluc2VydCAqLworCWNvbnN0IGR0dXBsZV90KgllbnRyeSwJLyohPCBpbjog YnVmZmVyZWQgZW50cnkgdG8gaW5zZXJ0ICovCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGlu L291dDogaW5kZXggcGFnZSB3aGVyZSB0aGUgYnVmZmVyZWQgZW50cnkKIAkJCQlzaG91bGQgYmUg cGxhY2VkICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0 b3IgKi8KQEAgLTI4OTMsMTEgKzI5NzAsMTAgQEAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgK IAl1bGludAkJbG93X21hdGNoOwogCXBhZ2VfdCoJCXBhZ2UJCT0gYnVmX2Jsb2NrX2dldF9mcmFt ZShibG9jayk7CiAJcmVjX3QqCQlyZWM7Ci0JcGFnZV90KgkJYml0bWFwX3BhZ2U7Ci0JdWxpbnQJ CW9sZF9iaXRzOwogCiAJdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNr X3R5cGVkKGVudHJ5KSk7CisJdXRfYWQoIWJ1Zl9ibG9ja19hbGlnbihwYWdlKS0+aXNfaGFzaGVk KTsKIAogCWlmIChVTklWX1VOTElLRUxZKGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUp CiAJCQkgICE9IChpYm9vbCkhIXBhZ2VfaXNfY29tcChwYWdlKSkpIHsKQEAgLTI5MzUsNzEgKzMw MTEsODYgQEAgZHVtcDoKIAlsb3dfbWF0Y2ggPSBwYWdlX2N1cl9zZWFyY2goYmxvY2ssIGluZGV4 LCBlbnRyeSwKIAkJCQkgICAgUEFHRV9DVVJfTEUsICZwYWdlX2N1cik7CiAKLQlpZiAobG93X21h dGNoID09IGR0dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpKSB7CisJaWYgKFVOSVZfVU5MSUtFTFko bG93X21hdGNoID09IGR0dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpKSkgeworCQltZW1faGVhcF90 KgloZWFwOworCQl1cGRfdCoJCXVwZGF0ZTsKKwkJdWxpbnQqCQlvZmZzZXRzOwogCQlwYWdlX3pp cF9kZXNfdCoJcGFnZV96aXA7CiAKIAkJcmVjID0gcGFnZV9jdXJfZ2V0X3JlYygmcGFnZV9jdXIp OwotCQlwYWdlX3ppcCA9IGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spOwogCi0JCWJ0cl9j dXJfZGVsX3VubWFya19mb3JfaWJ1ZihyZWMsIHBhZ2VfemlwLCBtdHIpOwotCX0gZWxzZSB7Ci0J CXJlYyA9IHBhZ2VfY3VyX3R1cGxlX2luc2VydCgmcGFnZV9jdXIsIGVudHJ5LCBpbmRleCwgMCwg bXRyKTsKKwkJLyogVGhpcyBpcyBiYXNlZCBvbgorCQlyb3dfaW5zX3NlY19pbmRleF9lbnRyeV9i eV9tb2RpZnkoQlRSX01PRElGWV9MRUFGKS4gKi8KKwkJdXRfYWQocmVjX2dldF9kZWxldGVkX2Zs YWcocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpKTsKKworCQloZWFwID0gbWVtX2hlYXBfY3JlYXRl KDEwMjQpOworCisJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgTlVMTCwg VUxJTlRfVU5ERUZJTkVELAorCQkJCQkgICZoZWFwKTsKKwkJdXBkYXRlID0gcm93X3VwZF9idWls ZF9zZWNfcmVjX2RpZmZlcmVuY2VfYmluYXJ5KAorCQkJaW5kZXgsIGVudHJ5LCByZWMsIE5VTEws IGhlYXApOworCisJCXBhZ2VfemlwID0gYnVmX2Jsb2NrX2dldF9wYWdlX3ppcChibG9jayk7CiAK LQkJaWYgKFVOSVZfTElLRUxZKHJlYyAhPSBOVUxMKSkgeworCQlpZiAodXBkYXRlLT5uX2ZpZWxk cyA9PSAwKSB7CisJCQkvKiBUaGUgcmVjb3JkcyBvbmx5IGRpZmZlciBpbiB0aGUgZGVsZXRlLW1h cmsuCisJCQlDbGVhciB0aGUgZGVsZXRlLW1hcmssIGxpa2Ugd2UgZGlkIGJlZm9yZQorCQkJQnVn ICM1NjY4MCB3YXMgZml4ZWQuICovCisJCQlidHJfY3VyX2RlbF91bm1hcmtfZm9yX2lidWYocmVj LCBwYWdlX3ppcCwgbXRyKTsKK3VwZGF0ZWRfaW5fcGxhY2U6CisJCQltZW1faGVhcF9mcmVlKGhl YXApOwogCQkJcmV0dXJuOwogCQl9CiAKLQkJLyogSWYgdGhlIHJlY29yZCBkaWQgbm90IGZpdCwg cmVvcmdhbml6ZSAqLwotCi0JCWJ0cl9wYWdlX3Jlb3JnYW5pemUoYmxvY2ssIGluZGV4LCBtdHIp OwotCQlwYWdlX2N1cl9zZWFyY2goYmxvY2ssIGluZGV4LCBlbnRyeSwgUEFHRV9DVVJfTEUsICZw YWdlX2N1cik7Ci0KLQkJLyogVGhpcyB0aW1lIHRoZSByZWNvcmQgbXVzdCBmaXQgKi8KLQkJaWYg KFVOSVZfVU5MSUtFTFkKLQkJICAgICghcGFnZV9jdXJfdHVwbGVfaW5zZXJ0KCZwYWdlX2N1ciwg ZW50cnksIGluZGV4LAotCQkJCQkgICAgMCwgbXRyKSkpIHsKLQkJCXVsaW50CXNwYWNlOwotCQkJ dWxpbnQJcGFnZV9ubzsKLQkJCXVsaW50CXppcF9zaXplOwotCi0JCQl1dF9wcmludF90aW1lc3Rh bXAoc3RkZXJyKTsKLQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJIiAgSW5ub0RCOiBFcnJvcjog SW5zZXJ0IGJ1ZmZlciBpbnNlcnQiCi0JCQkJIiBmYWlsczsgcGFnZSBmcmVlICVsdSwiCi0JCQkJ IiBkdHVwbGUgc2l6ZSAlbHVcbiIsCi0JCQkJKHVsb25nKSBwYWdlX2dldF9tYXhfaW5zZXJ0X3Np emUoCi0JCQkJCXBhZ2UsIDEpLAotCQkJCSh1bG9uZykgcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZSgK LQkJCQkJaW5kZXgsIGVudHJ5LCAwKSk7Ci0JCQlmcHV0cygiSW5ub0RCOiBDYW5ub3QgaW5zZXJ0 IGluZGV4IHJlY29yZCAiLAotCQkJICAgICAgc3RkZXJyKTsKLQkJCWR0dXBsZV9wcmludChzdGRl cnIsIGVudHJ5KTsKLQkJCWZwdXRzKCJcbklubm9EQjogVGhlIHRhYmxlIHdoZXJlIgotCQkJICAg ICAgIiB0aGlzIGluZGV4IHJlY29yZCBiZWxvbmdzXG4iCi0JCQkgICAgICAiSW5ub0RCOiBpcyBu b3cgcHJvYmFibHkgY29ycnVwdC4iCi0JCQkgICAgICAiIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUg b25cbiIKLQkJCSAgICAgICJJbm5vREI6IHRoYXQgdGFibGUuXG4iLCBzdGRlcnIpOwotCi0JCQlz cGFjZSA9IHBhZ2VfZ2V0X3NwYWNlX2lkKHBhZ2UpOwotCQkJemlwX3NpemUgPSBidWZfYmxvY2tf Z2V0X3ppcF9zaXplKGJsb2NrKTsKLQkJCXBhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2Up OwotCi0JCQliaXRtYXBfcGFnZSA9IGlidWZfYml0bWFwX2dldF9tYXBfcGFnZSgKLQkJCQlzcGFj ZSwgcGFnZV9ubywgemlwX3NpemUsIG10cik7Ci0JCQlvbGRfYml0cyA9IGlidWZfYml0bWFwX3Bh Z2VfZ2V0X2JpdHMoCi0JCQkJYml0bWFwX3BhZ2UsIHBhZ2Vfbm8sIHppcF9zaXplLAotCQkJCUlC VUZfQklUTUFQX0ZSRUUsIG10cik7Ci0KLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCSJJbm5vREI6 IHNwYWNlICVsdSwgcGFnZSAlbHUsIgotCQkJCSIgemlwX3NpemUgJWx1LCBiaXRtYXAgYml0cyAl bHVcbiIsCi0JCQkJKHVsb25nKSBzcGFjZSwgKHVsb25nKSBwYWdlX25vLAotCQkJCSh1bG9uZykg emlwX3NpemUsICh1bG9uZykgb2xkX2JpdHMpOwotCi0JCQlmcHV0cygiSW5ub0RCOiBTdWJtaXQg YSBkZXRhaWxlZCBidWcgcmVwb3J0IgotCQkJICAgICAgIiB0byBodHRwOi8vYnVncy5teXNxbC5j b21cbiIsIHN0ZGVycik7Ci0JCX0KKwkJLyogQ29weSB0aGUgaW5mbyBiaXRzLiBDbGVhciB0aGUg ZGVsZXRlLW1hcmsuICovCisJCXVwZGF0ZS0+aW5mb19iaXRzID0gcmVjX2dldF9pbmZvX2JpdHMo cmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpOworCQl1cGRhdGUtPmluZm9fYml0cyAmPSB+UkVDX0lO Rk9fREVMRVRFRF9GTEFHOworCisJCS8qIFdlIGNhbm5vdCBpbnZva2UgYnRyX2N1cl9vcHRpbWlz dGljX3VwZGF0ZSgpIGhlcmUsCisJCWJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgYSBidHJfY3VyX3Qg b3IgcXVlX3Rocl90LAorCQlhcyB0aGUgaW5zZXJ0IGJ1ZmZlciBtZXJnZSBvY2N1cnMgYXQgYSB2 ZXJ5IGxvdyBsZXZlbC4gKi8KKwkJaWYgKCFyb3dfdXBkX2NoYW5nZXNfZmllbGRfc2l6ZV9vcl9l eHRlcm5hbChpbmRleCwgb2Zmc2V0cywKKwkJCQkJCQkgICAgdXBkYXRlKQorCQkgICAgJiYgKCFw YWdlX3ppcCB8fCBidHJfY3VyX3VwZGF0ZV9hbGxvY196aXAoCisJCQkJcGFnZV96aXAsIGJsb2Nr LCBpbmRleCwKKwkJCQlyZWNfb2Zmc19zaXplKG9mZnNldHMpLCBGQUxTRSwgbXRyKSkpIHsKKwkJ CS8qIFRoaXMgaXMgdGhlIGVhc3kgY2FzZS4gRG8gc29tZXRoaW5nIHNpbWlsYXIKKwkJCXRvIGJ0 cl9jdXJfdXBkYXRlX2luX3BsYWNlKCkuICovCisJCQlyb3dfdXBkX3JlY19pbl9wbGFjZShyZWMs IGluZGV4LCBvZmZzZXRzLAorCQkJCQkgICAgIHVwZGF0ZSwgcGFnZV96aXApOworCQkJZ290byB1 cGRhdGVkX2luX3BsYWNlOworCQl9CisKKwkJLyogQSBjb2xsYXRpb24gbWF5IGlkZW50aWZ5IHZh bHVlcyB0aGF0IGRpZmZlciBpbgorCQlzdG9yYWdlIGxlbmd0aC4KKwkJU29tZSBleGFtcGxlcyAo MSBvciAyIGJ5dGVzKToKKwkJdXRmOF90dXJraXNoX2NpOiBJID0gVSswMTMxIExBVElOIFNNQUxM IExFVFRFUiBET1RMRVNTIEkKKwkJdXRmOF9nZW5lcmFsX2NpOiBTID0gVSswMERGIExBVElOIFNN QUxMIExFVFRFUiBTSEFSUCBTCisJCXV0ZjhfZ2VuZXJhbF9jaTogQSA9IFUrMDBFNCBMQVRJTiBT TUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworCisJCWxhdGluMV9nZXJtYW4yX2NpOiBTUyA9 IFUrMDBERiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworCisJCUV4YW1wbGVzIG9mIGEgY2hh cmFjdGVyICgzLWJ5dGUgVVRGLTggc2VxdWVuY2UpCisJCWlkZW50aWZpZWQgd2l0aCAyIG9yIDQg Y2hhcmFjdGVycyAoMS1ieXRlIFVURi04IHNlcXVlbmNlcyk6CisKKwkJdXRmOF91bmljb2RlX2Np OiAnSUknID0gVSsyMTcxIFNNQUxMIFJPTUFOIE5VTUVSQUwgVFdPCisJCXV0ZjhfdW5pY29kZV9j aTogJygxMCknID0gVSsyNDdEIFBBUkVOVEhFU0laRUQgTlVNQkVSIFRFTgorCQkqLworCisJCS8q IERlbGV0ZSB0aGUgZGlmZmVyZW50LWxlbmd0aCByZWNvcmQsIGFuZCBpbnNlcnQgdGhlCisJCWJ1 ZmZlcmVkIG9uZS4gKi8KKworCQlsb2NrX3JlY19zdG9yZV9vbl9wYWdlX2luZmltdW0oYmxvY2ss IHJlYyk7CisJCXBhZ2VfY3VyX2RlbGV0ZV9yZWMoJnBhZ2VfY3VyLCBpbmRleCwgb2Zmc2V0cywg bXRyKTsKKwkJcGFnZV9jdXJfbW92ZV90b19wcmV2KCZwYWdlX2N1cik7CisJCW1lbV9oZWFwX2Zy ZWUoaGVhcCk7CisKKwkJaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZV9sb3coZW50cnksIGJsb2Nr LCBpbmRleCwgbXRyLAorCQkJCQkgICAgICAmcGFnZV9jdXIpOworCQlsb2NrX3JlY19yZXN0b3Jl X2Zyb21fcGFnZV9pbmZpbXVtKGJsb2NrLCByZWMsIGJsb2NrKTsKKwl9IGVsc2UgeworCQlpYnVm X2luc2VydF90b19pbmRleF9wYWdlX2xvdyhlbnRyeSwgYmxvY2ssIGluZGV4LCBtdHIsCisJCQkJ CSAgICAgICZwYWdlX2N1cik7CiAJfQogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5oJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVn aW4vaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAx ODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNs dWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MDQx NS1iajN1NmV3azAyMm1rNG5yCkBAIC0yNDIsNiArMjQyLDIyIEBAIGJ0cl9jdXJfcGVzc2ltaXN0 aWNfaW5zZXJ0KAogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSB0aHJlYWQgb3IgTlVM TCAqLwogCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1NlZSBpZiB0 aGVyZSBpcyBlbm91Z2ggcGxhY2UgaW4gdGhlIHBhZ2UgbW9kaWZpY2F0aW9uIGxvZyB0byBsb2cK K2FuIHVwZGF0ZS1pbi1wbGFjZS4KK0ByZXR1cm4JVFJVRSBpZiBlbm91Z2ggcGxhY2UgKi8KK1VO SVZfSU5URVJOCitpYm9vbAorYnRyX2N1cl91cGRhdGVfYWxsb2NfemlwKAorLyo9PT09PT09PT09 PT09PT09PT09PT0qLworCXBhZ2VfemlwX2Rlc190KglwYWdlX3ppcCwvKiE8IGluL291dDogY29t cHJlc3NlZCBwYWdlICovCisJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluL291dDogYnVmZmVy IHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiB0aGUgaW5kZXggY29ycmVz cG9uZGluZyB0byB0aGUgYmxvY2sgKi8KKwl1bGludAkJbGVuZ3RoLAkvKiE8IGluOiBzaXplIG5l ZWRlZCAqLworCWlib29sCQljcmVhdGUsCS8qITwgaW46IFRSVUU9ZGVsZXRlLWFuZC1pbnNlcnQs CisJCQkJRkFMU0U9dXBkYXRlLWluLXBsYWNlICovCisJbXRyX3QqCQltdHIpCS8qITwgaW46IG1p bmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9y ZXN1bHQpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogVXBkYXRlcyBhIHJlY29yZCB3aGVuIHRoZSB1cGRhdGUgY2F1 c2VzIG5vIHNpemUgY2hhbmdlcyBpbiBpdHMgZmllbGRzLgogQHJldHVybglEQl9TVUNDRVNTIG9y IGVycm9yIG51bWJlciAqLwogVU5JVl9JTlRFUk4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idWYwZmx1LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9pbmNsdWRlL2J1ZjBmbHUuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAx MDE4MTEyMDE2LXd6ajQ1OWpjZHZ2aWplNXAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lu Y2x1ZGUvYnVmMGZsdS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYw NDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTc1LDYgKzc1LDIwIEBAIGJ1Zl9mbHVzaF9pbml0X2Zv cl93cml0aW5nKAogCWliX3VpbnQ2NF90CW5ld2VzdF9sc24pOwkvKiE8IGluOiBuZXdlc3QgbW9k aWZpY2F0aW9uIGxzbgogCQkJCQl0byB0aGUgcGFnZSAqLwogI2lmbmRlZiBVTklWX0hPVEJBQ0tV UAorIyBpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKK1dyaXRlcyBhIGZsdXNoYWJsZSBwYWdlIGFzeW5jaHJvbm91c2x5IGZy b20gdGhlIGJ1ZmZlciBwb29sIHRvIGEgZmlsZS4KK05PVEU6IGJ1Zl9wb29sX211dGV4IGFuZCBi bG9jay0+bXV0ZXggbXVzdCBiZSBoZWxkIHVwb24gZW50ZXJpbmcgdGhpcworZnVuY3Rpb24sIGFu ZCB0aGV5IHdpbGwgYmUgcmVsZWFzZWQgYnkgdGhpcyBmdW5jdGlvbiBhZnRlciBmbHVzaGluZy4K K1RoaXMgaXMgbG9vc2VseSBiYXNlZCBvbiBidWZfZmx1c2hfYmF0Y2goKSBhbmQgYnVmX2ZsdXNo X3BhZ2UoKS4KK0ByZXR1cm4gVFJVRSBpZiB0aGUgcGFnZSB3YXMgZmx1c2hlZCBhbmQgdGhlIG11 dGV4ZXMgcmVsZWFzZWQgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnVmX2ZsdXNoX3BhZ2VfdHJ5 KAorLyo9PT09PT09PT09PT09PT0qLworCWJ1Zl9ibG9ja190KglibG9jaykJCS8qITwgaW4vb3V0 OiBidWZmZXIgY29udHJvbCBibG9jayAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5f dW51c2VkX3Jlc3VsdCkpOworIyBlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfSUJVRl9ERUJV RyAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBUaGlzIHV0aWxpdHkgZmx1c2hlcyBkaXJ0eSBibG9ja3Mg ZnJvbSB0aGUgZW5kIG9mIHRoZSBMUlUgbGlzdCBvciBmbHVzaF9saXN0LgogTk9URSAxOiBpbiB0 aGUgY2FzZSBvZiBhbiBMUlUgZmx1c2ggdGhlIGNhbGxpbmcgdGhyZWFkIG1heSBvd24gbGF0Y2hl cyB0bwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2li dWYwaWJ1Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9pYnVmMGlidWYu aAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTEyMDE2LXd6ajQ1OWpjZHZ2 aWplNXAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvaWJ1ZjBpYnVmLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkwNjA0MTUtYmozdTZld2swMjJtazRu cgpAQCAtNDgsNiArNDgsMTEgQEAgdHlwZWRlZiBlbnVtIHsKIC8qKiBPcGVyYXRpb25zIHRoYXQg Y2FuIGN1cnJlbnRseSBiZSBidWZmZXJlZC4gKi8KIGV4dGVybiBpYnVmX3VzZV90CWlidWZfdXNl OwogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9JQlVGX0RFQlVHCisv KiogRmxhZyB0byBjb250cm9sIGluc2VydCBidWZmZXIgZGVidWdnaW5nLiAqLworZXh0ZXJuIHVp bnQJCWlidWZfZGVidWc7CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVCVUcg Ki8KKwogLyoqIFRoZSBpbnNlcnQgYnVmZmVyIGNvbnRyb2wgc3RydWN0dXJlICovCiBleHRlcm4g aWJ1Zl90KgkJaWJ1ZjsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdp bi9pbmNsdWRlL3JvdzBteXNxbC5oJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVk ZS9yb3cwbXlzcWwuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTEyMDE2 LXd6ajQ1OWpjZHZ2aWplNXAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93 MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkwNjA0MTUtYmoz dTZld2swMjJtazRucgpAQCAtNTI3LDYgKzUyNywxMCBAQCBzdHJ1Y3QgbXlzcWxfcm93X3RlbXBs X3N0cnVjdCB7CiAJCQkJCUlubm9iYXNlIHJlY29yZCBpbiB0aGUgY3VycmVudCBpbmRleDsKIAkJ CQkJbm90IGRlZmluZWQgaWYgdGVtcGxhdGVfdHlwZSBpcwogCQkJCQlST1dfTVlTUUxfV0hPTEVf Uk9XICovCisJdWxpbnQJY2x1c3RfcmVjX2ZpZWxkX25vOwkvKiE8IGZpZWxkIG51bWJlciBvZiB0 aGUgY29sdW1uIGluIGFuCisJCQkJCUlubm9iYXNlIHJlY29yZCBpbiB0aGUgY2x1c3RlcmVkIGlu ZGV4OworCQkJCQlub3QgZGVmaW5lZCBpZiB0ZW1wbGF0ZV90eXBlIGlzCisJCQkJCVJPV19NWVNR TF9XSE9MRV9ST1cgKi8KIAl1bGludAlteXNxbF9jb2xfb2Zmc2V0OwkvKiE8IG9mZnNldCBvZiB0 aGUgY29sdW1uIGluIHRoZSBNeVNRTAogCQkJCQlyb3cgZm9ybWF0ICovCiAJdWxpbnQJbXlzcWxf Y29sX2xlbjsJCS8qITwgbGVuZ3RoIG9mIHRoZSBjb2x1bW4gaW4gdGhlIE15U1FMCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MHVwZC5oJwotLS0g YS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmgJcmV2aWQ6dmFzaWwuZGlt b3ZAb3JhY2xlLmNvbS0yMDEwMTAxODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3Jh Z2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzB1cGQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEwMTAxOTA2MDQxNS1iajN1NmV3azAyMm1rNG5yCkBAIC0xNjcsOCArMTY3LDEx IEBAIHJvd191cGRfY2hhbmdlc19maWVsZF9zaXplX29yX2V4dGVybmFsKAogCWNvbnN0IHVwZF90 Kgl1cGRhdGUpOy8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgKi8KICNlbmRpZiAvKiAhVU5JVl9IT1RC QUNLVVAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLVJlcGxhY2VzIHRoZSBuZXcgY29sdW1uIHZhbHVlcyBzdG9yZWQg aW4gdGhlIHVwZGF0ZSB2ZWN0b3IgdG8gdGhlIHJlY29yZAotZ2l2ZW4uIE5vIGZpZWxkIHNpemUg Y2hhbmdlcyBhcmUgYWxsb3dlZC4gKi8KK1JlcGxhY2VzIHRoZSBuZXcgY29sdW1uIHZhbHVlcyBz dG9yZWQgaW4gdGhlIHVwZGF0ZSB2ZWN0b3IgdG8gdGhlCityZWNvcmQgZ2l2ZW4uIE5vIGZpZWxk IHNpemUgY2hhbmdlcyBhcmUgYWxsb3dlZC4gVGhpcyBmdW5jdGlvbiBpcwordXN1YWxseSBpbnZv a2VkIG9uIGEgY2x1c3RlcmVkIGluZGV4LiBUaGUgb25seSB1c2UgY2FzZSBmb3IgYQorc2Vjb25k YXJ5IGluZGV4IGlzIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeSgpIG9yIGl0cwor Y291bnRlcnBhcnQgaW4gaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgpLiAqLwogVU5JVl9JTlRF Uk4KIHZvaWQKIHJvd191cGRfcmVjX2luX3BsYWNlKAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MG15c3FsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9yb3cvcm93MG15c3FsLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAx ODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cv cm93MG15c3FsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkwNjA0MTUt YmozdTZld2swMjJtazRucgpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHJvd19teXNxbF9jb252ZXJ0X3Jv d190b19pbm5vYmFzZSgKIAkJCQkJcm93IGlzIHVzZWQsIGFzIHJvdyBtYXkgY29udGFpbgogCQkJ CQlwb2ludGVycyB0byB0aGlzIHJlY29yZCEgKi8KIHsKLQlteXNxbF9yb3dfdGVtcGxfdCoJdGVt cGw7CisJY29uc3QgbXlzcWxfcm93X3RlbXBsX3QqdGVtcGw7CiAJZGZpZWxkX3QqCQlkZmllbGQ7 CiAJdWxpbnQJCQlpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L3Jvdy9yb3cwc2VsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHNlbC5j CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMDEwMTgxMTIwMTYtd3pqNDU5amNkdnZp amU1cAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBzZWwuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MDQxNS1iajN1NmV3azAyMm1rNG5yCkBAIC0y Njc1LDIxICsyNjc1LDIyIEBAIHJvd19zZWxfc3RvcmVfbXlzcWxfcmVjKAogCXJvd19wcmVidWls dF90KglwcmVidWlsdCwJLyohPCBpbjogcHJlYnVpbHQgc3RydWN0ICovCiAJY29uc3QgcmVjX3Qq CXJlYywJCS8qITwgaW46IElubm9iYXNlIHJlY29yZCBpbiB0aGUgaW5kZXgKIAkJCQkJd2hpY2gg d2FzIGRlc2NyaWJlZCBpbiBwcmVidWlsdCdzCi0JCQkJCXRlbXBsYXRlOyBtdXN0IGJlIHByb3Rl Y3RlZCBieQotCQkJCQlhIHBhZ2UgbGF0Y2ggKi8KKwkJCQkJdGVtcGxhdGUsIG9yIGluIHRoZSBj bHVzdGVyZWQgaW5kZXg7CisJCQkJCW11c3QgYmUgcHJvdGVjdGVkIGJ5IGEgcGFnZSBsYXRjaCAq LworCWlib29sCQlyZWNfY2x1c3QsCS8qITwgaW46IFRSVUUgaWYgcmVjIGlzIGluIHRoZQorCQkJ CQljbHVzdGVyZWQgaW5kZXggaW5zdGVhZCBvZgorCQkJCQlwcmVidWlsdC0+aW5kZXggKi8KIAlj b25zdCB1bGludCoJb2Zmc2V0cykJLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkKLQkJCQkJcmVj X2dldF9vZmZzZXRzKCkgKi8KKwkJCQkJcmVjX2dldF9vZmZzZXRzKHJlYykgKi8KIHsKLQlteXNx bF9yb3dfdGVtcGxfdCoJdGVtcGw7Ci0JbWVtX2hlYXBfdCoJCWV4dGVybl9maWVsZF9oZWFwCT0g TlVMTDsKLQltZW1faGVhcF90KgkJaGVhcDsKLQljb25zdCBieXRlKgkJZGF0YTsKLQl1bGludAkJ CWxlbjsKLQl1bGludAkJCWk7CisJbWVtX2hlYXBfdCoJZXh0ZXJuX2ZpZWxkX2hlYXAJPSBOVUxM OworCW1lbV9oZWFwX3QqCWhlYXA7CisJdWxpbnQJCWk7CiAKIAl1dF9hZChwcmVidWlsdC0+bXlz cWxfdGVtcGxhdGUpOwogCXV0X2FkKHByZWJ1aWx0LT5kZWZhdWx0X3JlYyk7CiAJdXRfYWQocmVj X29mZnNfdmFsaWRhdGUocmVjLCBOVUxMLCBvZmZzZXRzKSk7CisJdXRfYWQoIXJlY19nZXRfZGVs ZXRlZF9mbGFnKHJlYywgcmVjX29mZnNfY29tcChvZmZzZXRzKSkpOwogCiAJaWYgKFVOSVZfTElL RUxZX05VTEwocHJlYnVpbHQtPmJsb2JfaGVhcCkpIHsKIAkJbWVtX2hlYXBfZnJlZShwcmVidWls dC0+YmxvYl9oZWFwKTsKQEAgLTI2OTgsMTAgKzI2OTksMTUgQEAgcm93X3NlbF9zdG9yZV9teXNx bF9yZWMoCiAKIAlmb3IgKGkgPSAwOyBpIDwgcHJlYnVpbHQtPm5fdGVtcGxhdGU7IGkrKykgewog Ci0JCXRlbXBsID0gcHJlYnVpbHQtPm15c3FsX3RlbXBsYXRlICsgaTsKKwkJY29uc3QgbXlzcWxf cm93X3RlbXBsX3QqdGVtcGwgPSBwcmVidWlsdC0+bXlzcWxfdGVtcGxhdGUgKyBpOworCQljb25z dCBieXRlKgkJZGF0YTsKKwkJdWxpbnQJCQlsZW47CisJCXVsaW50CQkJZmllbGRfbm87CisKKwkJ ZmllbGRfbm8gPSByZWNfY2x1c3QKKwkJCT8gdGVtcGwtPmNsdXN0X3JlY19maWVsZF9ubyA6IHRl bXBsLT5yZWNfZmllbGRfbm87CiAKLQkJaWYgKFVOSVZfVU5MSUtFTFkocmVjX29mZnNfbnRoX2V4 dGVybihvZmZzZXRzLAotCQkJCQkJICAgICAgdGVtcGwtPnJlY19maWVsZF9ubykpKSB7CisJCWlm IChVTklWX1VOTElLRUxZKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgZmllbGRfbm8pKSkg ewogCiAJCQkvKiBDb3B5IGFuIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIHRvIHRoZSB0ZW1wb3Jh cnkKIAkJCWhlYXAgKi8KQEAgLTI3MjksNyArMjczNSw3IEBAIHJvd19zZWxfc3RvcmVfbXlzcWxf cmVjKAogCQkJZGF0YSA9IGJ0cl9yZWNfY29weV9leHRlcm5hbGx5X3N0b3JlZF9maWVsZCgKIAkJ CQlyZWMsIG9mZnNldHMsCiAJCQkJZGljdF90YWJsZV96aXBfc2l6ZShwcmVidWlsdC0+dGFibGUp LAotCQkJCXRlbXBsLT5yZWNfZmllbGRfbm8sICZsZW4sIGhlYXApOworCQkJCWZpZWxkX25vLCAm bGVuLCBoZWFwKTsKIAogCQkJaWYgKFVOSVZfVU5MSUtFTFkoIWRhdGEpKSB7CiAJCQkJLyogVGhl IGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkCkBAIC0yNzUwLDggKzI3NTYsNyBAQCByb3dfc2VsX3N0 b3JlX215c3FsX3JlYygKIAkJfSBlbHNlIHsKIAkJCS8qIEZpZWxkIGlzIHN0b3JlZCBpbiB0aGUg cm93LiAqLwogCi0JCQlkYXRhID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLAotCQkJ CQkJIHRlbXBsLT5yZWNfZmllbGRfbm8sICZsZW4pOworCQkJZGF0YSA9IHJlY19nZXRfbnRoX2Zp ZWxkKHJlYywgb2Zmc2V0cywgZmllbGRfbm8sICZsZW4pOwogCiAJCQlpZiAoVU5JVl9VTkxJS0VM WSh0ZW1wbC0+dHlwZSA9PSBEQVRBX0JMT0IpCiAJCQkgICAgJiYgbGVuICE9IFVOSVZfU1FMX05V TEwpIHsKQEAgLTMxMTMsNyArMzExOCw3IEBAIHJvd19zZWxfcG9wX2NhY2hlZF9yb3dfZm9yX215 c3FsKAogCXJvd19wcmVidWlsdF90KglwcmVidWlsdCkJLyohPCBpbjogcHJlYnVpbHQgc3RydWN0 ICovCiB7CiAJdWxpbnQJCQlpOwotCW15c3FsX3Jvd190ZW1wbF90Kgl0ZW1wbDsKKwljb25zdCBt eXNxbF9yb3dfdGVtcGxfdCp0ZW1wbDsKIAlieXRlKgkJCWNhY2hlZF9yZWM7CiAJdXRfYWQocHJl YnVpbHQtPm5fZmV0Y2hfY2FjaGVkID4gMCk7CiAJdXRfYWQocHJlYnVpbHQtPm15c3FsX3ByZWZp eF9sZW4gPD0gcHJlYnVpbHQtPm15c3FsX3Jvd19sZW4pOwpAQCAtMzE3MCwxNSArMzE3NSwyMSBA QCBpYm9vbAogcm93X3NlbF9wdXNoX2NhY2hlX3Jvd19mb3JfbXlzcWwoCiAvKj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KIAlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQsCS8qITwgaW46 IHByZWJ1aWx0IHN0cnVjdCAqLwotCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiByZWNvcmQg dG8gcHVzaDsgbXVzdAotCQkJCQliZSBwcm90ZWN0ZWQgYnkgYSBwYWdlIGxhdGNoICovCi0JY29u c3QgdWxpbnQqCW9mZnNldHMpCS8qITwgaW46IHJlY19nZXRfb2Zmc2V0cygpICovCisJY29uc3Qg cmVjX3QqCXJlYywJCS8qITwgaW46IHJlY29yZCB0byBwdXNoLCBpbiB0aGUgaW5kZXgKKwkJCQkJ d2hpY2ggd2FzIGRlc2NyaWJlZCBpbiBwcmVidWlsdCdzCisJCQkJCXRlbXBsYXRlLCBvciBpbiB0 aGUgY2x1c3RlcmVkIGluZGV4OworCQkJCQltdXN0IGJlIHByb3RlY3RlZCBieSBhIHBhZ2UgbGF0 Y2ggKi8KKwlpYm9vbAkJcmVjX2NsdXN0LAkvKiE8IGluOiBUUlVFIGlmIHJlYyBpcyBpbiB0aGUK KwkJCQkJY2x1c3RlcmVkIGluZGV4IGluc3RlYWQgb2YKKwkJCQkJcHJlYnVpbHQtPmluZGV4ICov CisJY29uc3QgdWxpbnQqCW9mZnNldHMpCS8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMpICov CiB7CiAJYnl0ZSoJYnVmOwogCXVsaW50CWk7CiAKIAl1dF9hZChwcmVidWlsdC0+bl9mZXRjaF9j YWNoZWQgPCBNWVNRTF9GRVRDSF9DQUNIRV9TSVpFKTsKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0 ZShyZWMsIE5VTEwsIG9mZnNldHMpKTsKKwl1dF9hZCghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVj LCByZWNfb2Zmc19jb21wKG9mZnNldHMpKSk7CiAJdXRfYSghcHJlYnVpbHQtPnRlbXBsX2NvbnRh aW5zX2Jsb2IpOwogCiAJaWYgKHByZWJ1aWx0LT5mZXRjaF9jYWNoZVswXSA9PSBOVUxMKSB7CkBA IC0zMjA3LDcgKzMyMTgsNyBAQCByb3dfc2VsX3B1c2hfY2FjaGVfcm93X2Zvcl9teXNxbCgKIAlp ZiAoVU5JVl9VTkxJS0VMWSghcm93X3NlbF9zdG9yZV9teXNxbF9yZWMoCiAJCQkJICBwcmVidWls dC0+ZmV0Y2hfY2FjaGVbCiAJCQkJCSAgcHJlYnVpbHQtPm5fZmV0Y2hfY2FjaGVkXSwKLQkJCQkg IHByZWJ1aWx0LCByZWMsIG9mZnNldHMpKSkgeworCQkJCSAgcHJlYnVpbHQsIHJlYywgcmVjX2Ns dXN0LCBvZmZzZXRzKSkpIHsKIAkJcmV0dXJuKEZBTFNFKTsKIAl9CiAKQEAgLTM2MDgsNyArMzYx OSw4IEBAIHJvd19zZWFyY2hfZm9yX215c3FsKAogCQkJCXV0X2FkKCFyZWNfZ2V0X2RlbGV0ZWRf ZmxhZyhyZWMsIGNvbXApKTsKIAogCQkJCWlmICghcm93X3NlbF9zdG9yZV9teXNxbF9yZWMoYnVm LCBwcmVidWlsdCwKLQkJCQkJCQkgICAgIHJlYywgb2Zmc2V0cykpIHsKKwkJCQkJCQkgICAgIHJl YywgRkFMU0UsCisJCQkJCQkJICAgICBvZmZzZXRzKSkgewogCQkJCQkvKiBPbmx5IGZyZXNoIGlu c2VydHMgbWF5IGNvbnRhaW4KIAkJCQkJaW5jb21wbGV0ZSBleHRlcm5hbGx5IHN0b3JlZAogCQkJ CQljb2x1bW5zLiBQcmV0ZW5kIHRoYXQgc3VjaApAQCAtNDI0Miw3ICs0MjU0LDYgQEAgbm9fZ2Fw X2xvY2s6CiAJCQlpcyBuZWNlc3NhcnksIGJlY2F1c2Ugd2UgY2FuIG9ubHkgZ2V0IHRoZSB1bmRv CiAJCQlpbmZvcm1hdGlvbiB2aWEgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQuICovCiAKLQkJ CXV0X2FkKGluZGV4ICE9IGNsdXN0X2luZGV4KTsKIAkJCXV0X2FkKCFkaWN0X2luZGV4X2lzX2Ns dXN0KGluZGV4KSk7CiAKIAkJCWlmICghbG9ja19zZWNfcmVjX2NvbnNfcmVhZF9zZWVzKApAQCAt NDM1OCwyNiArNDM2OSwxMCBAQCByZXF1aXJlc19jbHVzdF9yZWM6CiAJCQlnb3RvIG5leHRfcmVj OwogCQl9CiAKLQkJaWYgKHByZWJ1aWx0LT5uZWVkX3RvX2FjY2Vzc19jbHVzdGVyZWQpIHsKLQot CQkJcmVzdWx0X3JlYyA9IGNsdXN0X3JlYzsKLQotCQkJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUo cmVzdWx0X3JlYywgY2x1c3RfaW5kZXgsCi0JCQkJCQlvZmZzZXRzKSk7Ci0JCX0gZWxzZSB7Ci0J CQkvKiBXZSB1c2VkICdvZmZzZXRzJyBmb3IgdGhlIGNsdXN0IHJlYywgcmVjYWxjdWxhdGUKLQkJ CXRoZW0gZm9yICdyZWMnICovCi0JCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5k ZXgsIG9mZnNldHMsCi0JCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOwotCQkJcmVzdWx0 X3JlYyA9IHJlYzsKLQkJfQotCi0JCS8qIHJlc3VsdF9yZWMgY2FuIGxlZ2l0aW1hdGVseSBiZSBk ZWxldGUtbWFya2VkCi0JCW5vdyB0aGF0IGl0IGhhcyBiZWVuIGVzdGFibGlzaGVkIHRoYXQgaXQg cG9pbnRzIHRvIGEKLQkJY2x1c3RlcmVkIGluZGV4IHJlY29yZCB0aGF0IGV4aXN0cyBpbiB0aGUg cmVhZCB2aWV3LiAqLworCQlyZXN1bHRfcmVjID0gY2x1c3RfcmVjOworCQl1dF9hZChyZWNfb2Zm c192YWxpZGF0ZShyZXN1bHRfcmVjLCBjbHVzdF9pbmRleCwgb2Zmc2V0cykpOwogCX0gZWxzZSB7 CiAJCXJlc3VsdF9yZWMgPSByZWM7Ci0JCXV0X2FkKCFyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMs IGNvbXApKTsKIAl9CiAKIAkvKiBXZSBmb3VuZCBhIHF1YWxpZnlpbmcgcmVjb3JkICdyZXN1bHRf cmVjJy4gQXQgdGhpcyBwb2ludCwKQEAgLTQzODYsNiArNDM4MSw3IEBAIHJlcXVpcmVzX2NsdXN0 X3JlYzoKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZXN1bHRfcmVjLAogCQkJCXJlc3VsdF9y ZWMgIT0gcmVjID8gY2x1c3RfaW5kZXggOiBpbmRleCwKIAkJCQlvZmZzZXRzKSk7CisJdXRfYWQo IXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlc3VsdF9yZWMsIGNvbXApKTsKIAogCS8qIEF0IHRoaXMg cG9pbnQsIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGlzIHByb3RlY3RlZAogCWJ5IGEgcGFn ZSBsYXRjaCB0aGF0IHdhcyBhY3F1aXJlZCB3aGVuIHBjdXIgd2FzIHBvc2l0aW9uZWQuCkBAIC00 NDEwLDYgKzQ0MDYsNyBAQCByZXF1aXJlc19jbHVzdF9yZWM6CiAJCWN1cnNvci4gKi8KIAogCQlp ZiAoIXJvd19zZWxfcHVzaF9jYWNoZV9yb3dfZm9yX215c3FsKHByZWJ1aWx0LCByZXN1bHRfcmVj LAorCQkJCQkJICAgICAgcmVzdWx0X3JlYyAhPSByZWMsCiAJCQkJCQkgICAgICBvZmZzZXRzKSkg ewogCQkJLyogT25seSBmcmVzaCBpbnNlcnRzIG1heSBjb250YWluIGluY29tcGxldGUKIAkJCWV4 dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMuIFByZXRlbmQgdGhhdCBzdWNoCkBAIC00NDI3LDE1ICs0 NDI0LDMxIEBAIHJlcXVpcmVzX2NsdXN0X3JlYzoKIAogCQlnb3RvIG5leHRfcmVjOwogCX0gZWxz ZSB7Ci0JCWlmIChwcmVidWlsdC0+dGVtcGxhdGVfdHlwZSA9PSBST1dfTVlTUUxfRFVNTVlfVEVN UExBVEUpIHsKKwkJaWYgKFVOSVZfVU5MSUtFTFkKKwkJICAgIChwcmVidWlsdC0+dGVtcGxhdGVf dHlwZSA9PSBST1dfTVlTUUxfRFVNTVlfVEVNUExBVEUpKSB7CisJCQkvKiBDSEVDSyBUQUJMRTog ZmV0Y2ggdGhlIHJvdyAqLworCisJCQlpZiAocmVzdWx0X3JlYyAhPSByZWMKKwkJCSAgICAmJiAh cHJlYnVpbHQtPm5lZWRfdG9fYWNjZXNzX2NsdXN0ZXJlZCkgeworCQkJCS8qIFdlIHVzZWQgJ29m ZnNldHMnIGZvciB0aGUgY2x1c3QKKwkJCQlyZWMsIHJlY2FsY3VsYXRlIHRoZW0gZm9yICdyZWMn ICovCisJCQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzLAor CQkJCQkJCSAgVUxJTlRfVU5ERUZJTkVELAorCQkJCQkJCSAgJmhlYXApOworCQkJCXJlc3VsdF9y ZWMgPSByZWM7CisJCQl9CisKIAkJCW1lbWNweShidWYgKyA0LCByZXN1bHRfcmVjCiAJCQkgICAg ICAgLSByZWNfb2Zmc19leHRyYV9zaXplKG9mZnNldHMpLAogCQkJICAgICAgIHJlY19vZmZzX3Np emUob2Zmc2V0cykpOwogCQkJbWFjaF93cml0ZV90b180KGJ1ZiwKIAkJCQkJcmVjX29mZnNfZXh0 cmFfc2l6ZShvZmZzZXRzKSArIDQpOwogCQl9IGVsc2UgewotCQkJaWYgKCFyb3dfc2VsX3N0b3Jl X215c3FsX3JlYyhidWYsIHByZWJ1aWx0LAotCQkJCQkJICAgICByZXN1bHRfcmVjLCBvZmZzZXRz KSkgeworCQkJLyogUmV0dXJuaW5nIGEgcm93IHRvIE15U1FMICovCisKKwkJCWlmICghcm93X3Nl bF9zdG9yZV9teXNxbF9yZWMoYnVmLCBwcmVidWlsdCwgcmVzdWx0X3JlYywKKwkJCQkJCSAgICAg cmVzdWx0X3JlYyAhPSByZWMsCisJCQkJCQkgICAgIG9mZnNldHMpKSB7CiAJCQkJLyogT25seSBm cmVzaCBpbnNlcnRzIG1heSBjb250YWluCiAJCQkJaW5jb21wbGV0ZSBleHRlcm5hbGx5IHN0b3Jl ZAogCQkJCWNvbHVtbnMuIFByZXRlbmQgdGhhdCBzdWNoIHJlY29yZHMgZG8KCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1cGQuYycKLS0tIGEvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDEwMTAxODExMjAxNi13emo0NTlqY2R2dmlqZTVwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9yb3cvcm93MHVwZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5 MDYwNDE1LWJqM3U2ZXdrMDIybWs0bnIKQEAgLTQ2Niw4ICs0NjYsMTEgQEAgcm93X3VwZF9jaGFu Z2VzX2ZpZWxkX3NpemVfb3JfZXh0ZXJuYWwoCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICov CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLVJlcGxhY2VzIHRoZSBuZXcgY29sdW1uIHZhbHVlcyBzdG9yZWQgaW4gdGhl IHVwZGF0ZSB2ZWN0b3IgdG8gdGhlIHJlY29yZAotZ2l2ZW4uIE5vIGZpZWxkIHNpemUgY2hhbmdl cyBhcmUgYWxsb3dlZC4gKi8KK1JlcGxhY2VzIHRoZSBuZXcgY29sdW1uIHZhbHVlcyBzdG9yZWQg aW4gdGhlIHVwZGF0ZSB2ZWN0b3IgdG8gdGhlCityZWNvcmQgZ2l2ZW4uIE5vIGZpZWxkIHNpemUg Y2hhbmdlcyBhcmUgYWxsb3dlZC4gVGhpcyBmdW5jdGlvbiBpcwordXN1YWxseSBpbnZva2VkIG9u IGEgY2x1c3RlcmVkIGluZGV4LiBUaGUgb25seSB1c2UgY2FzZSBmb3IgYQorc2Vjb25kYXJ5IGlu ZGV4IGlzIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeSgpIG9yIGl0cworY291bnRl cnBhcnQgaW4gaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgpLiAqLwogVU5JVl9JTlRFUk4KIHZv aWQKIHJvd191cGRfcmVjX2luX3BsYWNlKAoK --===============1590106423== 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: 8abda6c5ecd58b491ba903ca334065eda30bc96e # timestamp: 2010-10-19 09:08:15 +0300 # base_revision_id: vasil.dimov@stripped\ # wzj459jcdvvije5p # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTOPMmEAMcr/lHg4IQB7//// /+///r////8EAAgAYEh96H0H2fR1BG2C4w657wGuAAeujoNAA642NzuCQDs7ujTyD3ncaXNlu7cj bFmEec3UrLUWNmRlVtpQttFK1cpUPZsWgAAAAAAAoAOgAAGPYaD0Bo9UA9NN2cgAAAFBpQKAKUHo AAGqCgAAFsMihpoKAABQAoAAbHBo0aBoNAZMQGRoZAAGmmQAADBAAShAAIImlJ7JMTFDIzUaAAAA GgAAACUAghGQiaamp6RtTTEGmR6mTQANDQNAAAAEmlEQJU/Jk9Ip7VPap+KbVPU9JtRkaYIDQDQ0 9QDRpoAAiUlPSno0E9DQnkQZGQ0abTU9I0NMgAAA00NA0AqSEEATQAgAjQmI0aDU00yjZMmU9E0a npNBptTRkm6AgLAEGQRkiCIxEFAVIJACAqthVHL4SghCIlRAJBgyCJEUSIh08e9LkmZBFZP3WbMF IiRNkSUYCCIgloUQxKVSmKSoW5DEmQSJmhSJJkYBhJgEYgxAZAUgiMGERETYbLsi1ffjBcYVan3f /T/bDVSV/UXH/cWGH+3sWakT9QlOYglEWSCgh6i/TDzh0GmRGAwSahYFkGBY0mCgWIIIiKMiiRmJ SsgiCixkRFUSiUcUsFMVKFJi0wy1CsBiRQSOPkApJiQQjJEiMh6C2RhEVRUUY4A/ye0N+tIc9iR8 FeQ/wyBY6HY7GhZFU/6trGX2V9vi3GajtUf9Xyt0U6NVHRvfa6MbnNZSdp+NufmYZUaND/5XPb/m rk5qh/BwAqhhmFDJS7SB2jvY85In3sncq5LDx4nz6lmxSmqrPOmjLBsXZyZnFkTBR/N+93P4tznm O097uTImk2vU7WGtRgWWOpZYqz448ox0/DEXVoWUpneNcM6PV32+VJTqZnyHi4b5sqCs1Ly4uSiv MeTM3JqJrqhwE4Y5i69KusGSf7lKeV3ioYUssszcT5sGwYIzQWJRWBVEowpShRKPfglMFlkL3lLG SdogsOyj2/d8Hhwjz+LPX0ZzrsFXTy7ddrx+ETwK+a0Ts9inP40olTyutuWYZXLW/j3Srg6W6UNc YweXNM6U0M77t2kygGGZxjQA/r/SHkk/ud1wvrllFRTo8qrx+Hl5+V64npPLzs9SnifSUj4qPXxz f2vA1V4Cko+p+16r8exXzvvU9zr00qiq52vbR3O473HwlGw5qdTta0vTLdZZ3Q8Xf8ZueHtsjdYy DmZEMB+fwnIbwVufahnnpOFn4WKQlNZypmzWjDk8pwKIgUQQQ+MMFEwUlcHMybYm8wZMn82BiTwK EZKUp0UspZSlPpWL3aNyzkZN67OpcosoXUzYWYUspP6KnvWLSWXZrdtdnTMZnZ2cPIyPofJ+hyYe g4WDsPdlSvxWLvexJJ6KDh12Jao66RPRSqkxUSNDRY2lE+wpIWOPQbtqu+JvvkyIuKZUrjAm8O84 B0nZpuPHu64hVWmbw1Ks5a1oWzNNqhImJYfWJxLtJjcyqSsplry9i95vUMOTSmIwjLkWcUyzfF2p bQ1EXhPoaAp2GKlhed8wOKKekUTNQHuBB0fF+YXX7nYXfM9b0qSlKR/7NI0j+UP1kkP1I/ap/cs/ apS10ot1IYXfnXT2sP2vyvrP0OifwfM7eSn0QqR3vzvF+k/cw0PqPuOSbn6m49840cW0ydjCRxK+ ak3im3/ofg0RHFRg+3l4Zt7g4crdEdkIS+2dD/JYJHrYkfCwuim+2/zqs6Xyf7LLHdw120wnC1YY dkk9kA+4dcJPshIiKxVFUVVVVAWEiwirIpFBRVVVWRYAoMdUbsg3CEC6ANRoN4DiUXDh2tvHJyqH IMUTUPXzj3rHphkVYhmzj6fps+1hXYmmcOVrPEMw17O6mawM+xcBnq730L54PQQUEKNk2c2Ul2c1 d0Vc2bK6LqsrZUe+Hut1uuIaFcZkSVwt4ZDEXdugiGiBm98toYjBWWtFOWiNCB9FYemCmaobENhc LaVabThYutLFpchrLMOugJohnS+xRZcKsU6rozDqaQ1Cs7JKzqwYUhSmalpRGyCXvBWrEKDWp8wz zlsZWS0K6zhokTc2u5rvdisw6rsurly6u1w7nLq6ONxm8SsqmFdc2L2xZ6ythcXLOuG5n/T10A8e 3j3i+t/Z6lP+J/o/wfSfBnq4161lmH8V7/QyXZPwUZLlm9/Vz+rOM3uZvfJ71KqqqqU+1/2fuYH0 4MnylSpTw/g/YcTzbXwNj7F2j/VxXYb2a603txH95TwKZKWJFlk4JMC6bnOQettf4vIbRkBo7/sf GfB6X6G6cG8f4PseD+J+kbh9iUihTicW91OD2p4+JTJRbi/ezeZ2s2TR3DJvnJybm3bmp/sXZHMJ 6TiOtkeZofyGa5YuULsD2OnAvxfy8uVOZaMlLJSqXSUp1rNA1Xdj35ST6ST/9DN3HadxRR7zR68M FKPsYOZ/LX1H0rPUwcneUyYP7HAqfA1aM3pJo0TLIysXdbDJhLn0HyOxZSXKP2N7NsKOT8TiuYV9 Das0b58SGa5qfY5lOKaF0sqXKUs4mlk53fa0me6pwWbVdqVRU8tg5GbtIoeFyZtNNBQmKOIEi4bC gqSsxZSlFpSdihuav+xH9SR4FChQRBIiIkkEEkEoSgUA8bv3s4bvQ5rN0m4us973Mn8mEzfWs2nW zbmIzKj2KeoyTR2edzvGc7jwOvoxGrscV2rU87D1pPJJvZ4pOpWjRqw2dGbDVvMOOftBhzgok7yT UT9Bc1JObUKUGU4FTQmqU4Oic2xwclOj0/66GyNHWVJDQ5OF2e9M3/d8Fjo1cjCzU2PsU3q/QyWT 9XRocdyzKZxTts0aFllDLzZm2vNjpMFj4Lt79L0H8Gj9Tkcm16T4xmlHFTHDuY1YdScjxyKXWe+z QuzWdzuUxvyzXPQ9EKpRFRRUNDQU3xNJ4rzmBDlOsp0HgOQwZqbSKWhpqxxT8ZvbFpPCfQaNUo6M 21mw2vaupsZm84NFNpzPQwwr0p95qxGTrdRvMpk6vtc24qb+h0Yh9Z5lnU9je2PeyndM6cTtaMtz N1/RMva5DsaO3ZhddxkN7J2lMnrWcXcs3p/fAs1pNGFM+pkyUwsoqyyqU3qdzRtN4UzRkxY7VLmp Z4vqZtTUs4vWdzh/ho236NW86PnlkwppLLLN7uWiypop3LM29sgU62xuSV0WUw+5texwehrN7Tvm 1taNTYtKlUo4rOS54qLm2m5zdFM1zoqZsLFMdSy7a1by44/LkyZtrN/TDHoU4i6m16Jsd0g2HNuT XQw7F3R1MDJTRSlOb+8xJvoMkDIc2EYiTPeJROokhNVCojFf4GgmdiR0QOCzRk2MGHRdS21drwZT DuU2OzYSWPMWME3PVgCByylxkuKgpliCZHFGNBxMDsa9SSxkkGNiAdTQYgUYLjmTJ3jkmpYoULEY Cig1NQoYomxJoP4mCZoFIFuSR5jAVCicIyaHvcen1lQhQseQuOdb5kcnR+GS7josVlowcSzDI4Ky MzNc9LDVoxzfes1ZrGSnY9+TcwdDo4Fmx0yU9Li4Ns4MVSI/iH56SepyiPgk/5pRRD5ntmpoHcnx nxex84+H8bfB8T0890FSpE1UsKTTL6nm4IIqCaHslxEQTkLCwQEiHKGvo+gvzvivrqJk7LyOM1xi 5ua5fAYOmKiooqKoqKKKovt8vx9j04fHuO507EXR657qUrvO+Gx3Y7vY8Iex6FivVBJ3d1rvSaNV KswQ/oUEyUf1gloUSe59c2PNaSeIsUpcuS5csQopD0lihR8WsR+EbpZvUqIo4KOK6lP+bvf4uxtf yZNX6F11iyyz8JZUpTDtFPqKKLFj53iswU7+bfKPKeJ3jgj3kCB6ygKIoTE8mMAojT+TjjMpEl/2 dj/JQKCm4k0gPQ9goFYDjjA9xAsXXLvOZ/gWJZ/c0YLt6nFFI8Yk1Z5N9qrhU5q/U+jZ2+bv7WFq nuUnWX6n7GDm4luCdy381NZ7XiZ9yxTD87Dsrs5HxTimKfNqvn9zJlYycVOLRhTgzhtZs3zqUpUU bip4m71Vt/TT8j7J+Sj6Boeg2fMZJPA61N9OZdYoWLLWeptfOpapxu/cza5QwpNKZrtg/tYxvln7 Vuhc2HP4vSu1UUvu+E6tVlGfnVeT850aLMrNqofzVJwYLE5NjcrTavlYgji4W8gxJsYODLKpJBuK O6ZxBkfuGFUVS7yxNfhLOiLUoM5nBkmdOcEFoMNbgSTehmbtZZSWJ3qXUZbC1EPfCJlRSpuCB9NP 2CHYCVWEh3IQlIH8TIjAESfyYLI/2qTNUBlnChon+DDyeBPSyejhy8+9bJiSfaWQ++FP61vGg8TQ HO8cYicMCnlFL5JPUbd9VX1n0mx/o/c3PmYZmZYzb43SdPW+L2u1ks7rKVZybe7Row2NMKdFJ7ju bn62vw2LOt970Lmbh5KlFPFujyZ83Fuc00ypy4rrc7rVHE5Dfk4FOOpx5V8Op07c5HjwobxKwYlZ HRbg0WMRX2N98ltWQ6LG9fufjanmmS7otous4c3QdD5zQ6/E6KSlMjMoBqNchBEqCwHkF3ReoKNh FN6uTI39G1vijK7BMyceSbamMYhCFERLOErRS1gDvpI3pE9XijzWTcWLpf0KS0oqVKphhdLFF0oU 9q72n0nXCNNm8hd4uKRO8/PEjB7m5saKjw9jCmmB8Hc01ZOxf4L98+WcTPhiNe1td/KcffdfHxxM nOZrdSXPc/SmTyfOdni63Fm3ehzXbzg2NGC6m2e1Wxo2kTRgHlAp8f4vFNlQ7SNFgKehV4PSpwzl GUZFHCCIgiFZxXdIeFf1US4gCMgl5stWkh48jjzCMRJJMvMK0xCjzMoX6eZOogIdjcRPdBVwA6xF kVvqwNwi6EDgKii9XEojhmhHw/+H+LsSd0k5RwgX8e5W1ey9Fs6rs8cQWtYLSPdavVtPnNz5cvXb 6Pozt+vzpkvfLHv2Qk2XskyqNGdkYpJeg1y1vDFE0pJlUGFE+aomJYtnDOiAZwiIIXrJ9v5foI4s GBLCk/tKIlhJlaYSX3Vw5LFF1peifBTiqZun4JZzc3ndzb1mw2SlCkhKiIhBEFU5b8TjQsMP1HPB XQoyaQCCHE9oZemG94EBZBlmeaFZ9CByLO/kTRiOTnWGbLCIJFMnwiII+IIF4pCxQsMUDk93q4qU M224ilxjpUIyvEjGro3ul6xoQ5rRZUXcplL6QX0gdzSjgcYhayWHumRgyPoaOKHK9YvLRgYVIME8 C1IuxyKIuCSKiCKhAIgeDCcbiTi2trVtb2S7VtdOlnOSnOEYxogRLYHDjxQGOTD9b0FmGzi95GSX BsWLlhTNRSyW8pFzcFB0RcAERNTSEyNQoo5VzOx+RKIieXrjJB2cGIJu2KniWS3Uqn0n5ICj7ESa 1Kvi6RSEBrSV1JQqFh594qJ4E8YpZ1NITJj5gtLE3lPa2c9+Zz5X82rPdySJqyxBsqITz2rL1IRl tbG286aPqX6qex+I9Htdz0NUtZt25MxCDIViHMny8xMe9IDbFXLU8xo2JnRBEK1VcYXeyEIUFzuI gmpc7UoKh1GxKXmvbMeeXO0u6T5dxaTrRaqyfvY4wkD72r5DOyrc5Uu4YVytng3MlyBEE1GLCadW WuEED8gNDIgqoSVLcTOlN7EP0O5wdbN2kN2rm7VtzpoYVNXd2ZPrpyEkIaVJ8nTA+orTO4U90wCo iBDq+Wx5BEEhUVHcWWOLPI5VZEjY714lnwffghsJQaRzsqSF26Hq6nTGlwgiBO57R0OlhcGxwgwb oPZ6yk1WLJRWyBZNmckjg4rux2N5qcn6EneDFd+PZotR57GhgjT06h7nwh1E448pxBHlYcQVGZh1 v5VYmdr0WsvNlqH4uXsN5GrGNQQLBc5cHuBGCVXEj1qiCCP8boSunguT3Cr/hgejY5oasvRz31Zc 5nd/yinxhYS9EZdi4pkODSaGHl4DFQQKEYuvOhlxaAuilKPi8uXLCUPftolSJvVbiII24tjJybla UWSsW7zTRIcTxTyCnIpJGwlrZixAiWFiGOFEJUewxdUcVhdTtqbGhI7GZd4M3MBBbBUKZlxhw6Kn MvkjLrCisSOootEIIgxfA0mGDAtalzg9FiQOrYMYCDEEDl6WKoopFVVUFVQVVFFAVVVVUFVfmBD3 Jq4OTw5pE5qet3u52PB1tzO250dm1sZG1saOG1wU8GHc9b80yZuf29c4ENk6vV4L1OnPucFBso7u jIjqdcQ26VfgidLOq5XLurw2InS0/kAqAh5yiEFsYcdhbOZQVmXLJk8rJUpR2SnfxU3UrmeBA8bG rJbHoCM7Mk4sypr5RtJIINg7DD6m1Yzt07FwiKYPbN1Mkh5fDmoWvzi6T4JGiPkkTK0TdbJktXoQ aykjBcwfBAfztQyKwvNiDqcX9tLsX3dhTHRXThBEIYF3rBEMyPLXgjK7EHIvRW3OvUoaHl8zWrqD MVodSUFwVzXcuElypIYJhow+3fqw4uebc593Uzbi2StvRsZJEpTj88ItpdmycOEIw60icMXNyBoc ggf7BAUMePIwqZxTrA0VyrTVXTgM/Vr3vDXmSdr2nL5i8Xqb/AaFJ59dcZFEQS4XlOyquwqPiz3O FAT1CoJkmeB43gFJjpMIgjtGJ2pBA1TBayIUtT2ZupWUdU5kjjloGO8jrEhrtZ1BhfAnLwqMw0ij 1uIgjPV15LcgEVRZGJ5eLmQta6+YgOQiCeCGZLTzcU4FkVYLSEQR5ooZNyGbFbi2JxIkDxGk+JWm rRh5MnNxyhppr1t7m6Ym12Nj6YlM5B2xOLM63NxbvDJ0b3jEjRudzb2ODY6KcmGi7arpWTOymvLN hduen7SHmZdxlaxn42O9hRSXN9hX6rd2vdr7EvFqarWqxPN9/+ToCAvU+OhkdOq9suMJRS5czOqZ WDyeHSq+ovIuH/GeNW6m465rC2LKUHzeuiE0dTrVAQ2GtiMfeTO58DxXebGl+dt5xUkTWJyYbq15 q66y8n9GUI57E7XY2tnLjuN6mXUuzfqOEoIopIgRmTMLvdcJgfUiIiGjpgQQeeqkrsth3eHRCYEy vQ6lSYwp2DHfsMzzgwpkuaLG5SlCZMigiFR5or1MljApIgI5Dmfz0p2ccZK1wi9ui3TZTNzDLT4i r5rLVkqqKd7DlsSeYlLIPpLdjShxgQKNx3FYgZ0F84+a5TR0JYHK66UJ+/EqcoEuBSycaKlZpRcP IGxMiTPbTiu9zJHkW/GGdukd48bt5uUHQxJGydHVFjg5lEGCitG6pqpwgCIlCJQ3y7EX944vEmgi EzRIuSmhduRKCII44wIASNlg5albVLuzqxTxW5so7WRC0EzwXU4OPUzbXKinEsgiEiZyVKPLhQRQ qYJ1Nz5IIFqEygpAg259tkHVd+o7LvDRxmYp2bjUVypu3Te16Zi9QpRpKzTtXIiCQmQtOB0rERBO vJglugINfaWlKPFgmnZoTyLwKRFJlJzeERU2XYZERBsmdoaEMu2XH0GbUc0aW1bariXRU4uKyOFK drOksAIKK0AkgiD0osTW/V5ztUcYHVFL8HFy1uCxQLLEZajCWIcnAxsLN2TiptIjS5A5ToboIFB/ niZOONBwZKnU6HJE5ODqPLkRhxe9ixUgMcEY5Hm4WLjz0XxE14xDtrfdZNaYN2bvIpYNbS1u58L2 Zx6xTwkWwvcD9OlpugiK2Lam/LbeRE0bmWs6mTDi4RI7WCB8a0HUZcKhQS+cXB4cjERYGjYiWtsb kyIxL5NS7xk5GmkuYpqI2uKV4A/L3eh2NkBDIcESQ++nkBhTgfltM02NyRKT5rMcMqo4FF4HyHY1 ElkgcDjv79yHtFhCxc3LnQ0dSRKIryh7Mmx1KHU6ECxYPUOJhm8yshw88U85nuH1x4Pqy6VSA+a6 1A7KXd4eMassWmGVozFXtNM4jsgiDFfpztMsxcl3xQRAeOIMUJQlQtxkphaFUOopAsdiWCuI3KFy Q8RBJlidLNaJe6iipSoIhCSUndUtTZlJ2PLKRuyTDMqr03O42FSpHhrUmNRVyKYLD3Se5qjhgYlg 1tKewrX0JE6LXYXeJWiuDJ1+XYzU5LO1bVIm0scDzgbQopQ3F6ix0POR4QKj/AIFbGB0eT1Pfwfo ftfbY3JZZ5l31/Ox+6pgyZmcWYDB9YGGYjS3IlSU7RL6DkPeOMOzqKg/S8lo1EZo4ZRxbJ8/zWZM HXBDGyB2FkYebSWyeQuvIMlohTVWUg3JCmzMDcG4wWbYxURBURFQGRRBEiIiCCqqqw0kPD51Tmgn k5qR7Hcs71Q7HsaOxg0UuyYXaVGKT+6hu0zKmIaiAqnUZKCMJsRYH1yl/CkXr9jvd90s8lJtyyjz PGelrOupNtPnqqcVrJa1atyatrxXb+7JN7Da4lYWLWXLFmw1Ndn/IwMKU0EYcmilDNVNSm1/qspd YzXY7N2/JTwbjgbCzgpLjcbW5RbTbOJEwKBpncAKigpQkJIUDeqKgBMFkKJCkSB+g8IcDdAqoelr QJElGKsYiRFUgyCSiCcYAoUWJSw/Edj0dpK3w3SP3Ulofkhva5YQzjIKbJ2UAxTaR7BFBLhaNgvK hYWIpvlAhAkLbdL4tFULzWVieocsRNMC2JUQ6YcA+krRP0cAnmUxyoAqMYhwhdNX+KyXGBYpuJg3 JOETsLo2x1MIoRJIoIKlJDQD5YQyENp8R8oSj/B1tykko/3CpOCST3K9DNiWfuWO8o3hRmRuHA/8 sH403NBYaIJxUZPB7+C6drI/ucFilKdFoWOt4n5gb0knAcSWLC0k+Y3uilxk2nJgw709BHaSiyD9 EixZ/92f7/g/2LVeZyyq3NE4sizJamTNyF77UZuosPUkk9ftIyQTBm2NqbW+ksZTYPcRoglg/OjA yd6h0FhdLo0XbyeDEbAPe/zO51htaupZoQsJ2sRHIckXYKanqZSHBwPfGUfb9L0O4UidxUySRPW6 CSlRZmgm+yWJG7BJOi0aKNhGwZNIim9/uOsoT0ku8ZM0l2RFji3p1P9HFJOxdZ/Yuj4sxZBq3juI 0H/k4lxqMFwMxzULxQGotM1HF6EG45vSunXBGSbG5SPcpT86k+Q7GI+I7yTvRdG1LnTJ9DrR5RLK RYO0o+LYLDoiO1SU80E8VBkOLc2uLQoyQcBhFBkTwiNpkaJJSs4k3uBG5HEfGbUkTuRTk5DxcnRw bRdkg8E1S7JkyYXcimbIX+lXrCku2nU2C1EbUoUKJMC0SR5HuTAhgUjNUWUIaR7lRLT0pSws5geM JxcBze90OYklDvWHes8j2sLJSYNw4m0YNo7nJSnadDkuwsWHWp6tXgTQmSKUUTJ+Q9x1i/j/6dJg aszV2rih4HUxGwapIm13DqWPY2l1GgGrxHeRUSXYHawsXTVuKHep1owGsizIwEpJHgBRJY7SjaRo 3lLo/mf+wsu7EpdGSNfJm7iJxQaSbxURdJvAuLAuLE5MyFFMmCXQznUV1Jg3OaasDqbY6jVZtG1d cDA4ao9EpPazTgLqaDmLtKEsVCU5SWJURvDWEkpTk+rIakdyzzMhYPtUSNscTeusmRMHY3kZHQcY kz34DsUXFlnVBFdbSxMlLp2Llku4Um9O4nZEnBOCKLD1DgizyXcU/6BsfmPk/zP1Uf5P1Pi9Y+pQ /e73sEnM9zo+66SqSUklPI7n0veYI+d8nC7VJPW2D3F488k9LiwfSRj/JF2Tec13wWYU5rp1G1k4 ik0TfJmzcT63wej7yiP3sT3eKizoZv2qaKWMSYd9SyywzXiT9qTJ9gwvCXan3mZ/Bmpd/FGT5ylC n8v5NQ/qopSlJUfvg4qUUooVYzGWrdqTYVEszU+rJEyWOIdTbTkNTcZlMFmUkXpzOtuf5qX5ozzc jrm+pszUzf1P4ph2uiM7rNiwpBDA9Azf6SHQYnBRFVgwYxjFqqkqSpUnUtFmrM54LjoFpkU/fJZ1 ijtdYZXLhSQ/cNjscmrtTN1UqjYwowObrhSZGHMtSqRSlKKKSlDWXc4UMMlO9fbfowq98X5HY22c lHBS7A6lZ9lVkNW9m2Damg78IM3ayWcepdNYwiy5Yc1Bxc0yb8MmTq1zajVq666zQarJtaqgdJhl dcqBdU2G5rGlslm0VNDqls2zTVLqUm0WcBm3NxQWRwaHezF8FXNHRsTa1jc0bmzKVG78j70s/aXL LyI/y8vT4bVeltZrsPT5P45bOUQ/GqB/V925k2M2S0SNGrYU+L4jBuEToaIjhi4p9D7uDguWTRQs OPxZPEN7Y4M2rkydxPShHdJo63W7Vm9S7/TJ0cOD7Rx3t5aJ6D1raN7i3NrtZOpTp0eZ9Dk98pSk qFRRSeC3sQTNKTqnKWcibCO93upr4M+aob213nRtYcGw/i5oc4jmoSVktISyQpCevD+jvfncXe+D 6X46Qj0N5zfko3TycXTC8sf2mqzNFO/x29ikzgU6H0miPlyT++EZxMCetQvx90JPqOp+CnPZOpsL zcqIolHqez0Pbg3lDQY9QhrE8lIR5z97BtSd7blKUbDsc49M4LSWsKTOTnIuzcSyxwVMlKSKWkbk ylmixSXWU8NF10svaLXLBRsWPQ0ZmSGSiqDV3MD1DJG/Jvipqji6uTxD61MwWWdW3++JPykjovEj 50iWGR7Pq+h9D0stWjVl9Bd6nm0MMLLs1Nra+1qtuUkTYsybmG1dfwe+z1QjJxcnJr9KuGRhdk2v rcHcbRJm0dSujDo3fc5s37Vzaj2GfJ2Ldrm4sMLttN3JZLGHN1sRI5KatW7Jquw2GS3CIYc1MOjc 3s08nuar9qyyepacDuV2MpTV5KWXUqkUp4kNkNtKUlKKKSfTkkykzNIIkxS2IjKhb6igwFg4ckDU 1MbAnuH2IT2ZlPb9VLeQzD1hLNNqCkEnIcaMRVWBoOQ2m2hS0KXEkwYR2aO0uqu1B8Y8LIECD/7g IFKEgpxRSBSgFLCmHOKRYuWtEWUmapJZQ5qFRJ64iylKR7ixEXSUSFiiJeDgwvLoU2KjOjA6y95k 97VO1UmtZrMk2iQo+AT4lzDBWaaKWqBWRazu46BDTNIiCMCOlgd3YaQkL3u9bV7Hpae1Zuywu9Sz N72TCymizVrCM1NVLrLtF2bJ73vkke5uUkTcWUs1mxxbGjdtZRI3MM125h3pExIkc3xnFxeLYZsj xkeFJZrMI6bokVbY47nW49j1+3JmdffJ3xI23bXB3txvZOuaJyU6nPYdzYYplHxSyh1hkImkQSzB oQ1iwUNW4nuRSjGDNYdzqel2uSbn1xvUnlRRRyblJfzR6YPeULJSjk9QuaSSg7x4RWVoI1VekUoi roJkkjRmiilPmSjVYsur2v6LSLtpSzJQ9hCUd7As71OJROCTafeUG9JiRoykRaWwWnFLsszfNBRS lJUZLRRZXEuFRZSWS06Kfjah4ipI2uCnb8DtN84ConIUMCVhIbxDAlATAmDIvReR712EyYJSVFoq UoqURks3qXUZMmBgMlSl1FJS1M1JmvKrBRkws8vL05JNjRZM4lmqyerZZdQ/IRKlTVyHieU57dx6 SleE851Jnp9wwQGYn6vLYNzRsc29kXWXbXe8Hx3bthmxm7yGrc6YdU7IQMGxwcljcU4MnU0UIFBi BQ0QFOQQDxTvO4bb2KIVLqWUpZZNje0U6LPSu7HZtSep6VNyOCpI96OxscHN1MhJvc1mTt7XR2pE 1eqJH8zJsauDsm5RMVJJXk7+93szuexFFJJUeDV1uvA/61JJmr/OhZVCnie3d88hlkcVN6RJ+lHX Ejepw83s3NeanqlG2SeqQWTgp1xPmkZWl09peTYpc6t2vUdFKU62ZwlN1OUbpO9yGo/NNqiWdFku qzRYcV3nMfp/XXautd6Cw7i2M6TMsLKXJMonaA99LGNgwJ7J75Invbmh/azWGSjAsn8GDE5llkmq t8ollKU4NpwgXGZsWbVa2MOmZwmbNUMmwqUJjwZFFJpZqkS5Ezl44IhRgwCkat9SyYlJYzUsnJhw XRowsZt7Ms1uy5LMOj1MGpucXDUqbG5zXcFOsnnUBO3GCUOwoDI3Vzm2QUSCSRWJsPAiuxKLpp0F pMk0EJjQLlbeBLA5IIFMqasMlyE3Je94F97qb3zvnfB4KU+Lbs2d/XjakTJ7m9vYfT4K23XM2efo b2bRwcWcIaIFjbUJHfw/w92Tlq3SOIzhOXy31i0teu8J88HJxMXgkbRMoe8d0jqOKjy4xIefSC5c 7DFShig51NG67ynp9Cz0+i1K7bS8DKBdnt0VAtVZy8aLyWXiTeUSZo9SyWa2qntaasoGrIyXLITQ olNq4ZMPaqLyvU0WGRSdHRteLczFNvFaT9nLBJwPIUT3s4629vWcG6D+SpJM4Eu4u1dA3CoUof2M h7/byJs0SaSI+Ap4p2RcLu4qeFM2SmivGq6L+6+FZq2Em57lGHe2xoXS2q7Zib2xu5tWRFNGpRdm pa6tjfjM+TQXY3rDgfA7O1TYTOblmpq96zRTzYf0qaKPg6JE9z4PJ721yYeD7vu1+z7OETvqj3qc HB8/02eqcO5Y/ftYGr50sDI2vJ7Twk4bO5w7bN/f965qnB7kI9qesqSRuRj51JFjqdGp1NjYzHrR 73bczJGUcKdilPpNCxTc7Wqln3VUiqzNGcYOEU3tZIbD8hg5m5hLx+6p+dU/LKllFKaDnsiGlHGV 1FPCEcSx6mj6mqhYpJ3KiXc8LnRLFi1/qw9ies7pGmCkoKUoO5HCzbKYKkk5paRtkOiWZpEzbVks 7k4MjUWfUYTqeopk4tDC5piFm+PS0mrROS59u2DRgwupJO5xRtSVUVSRm6nCSNVMokaENFPYUwnR 4HYWRiSHNc/e+ghwJyKUolFSFClCpIUqKKFQVIaLFNYliQ+Kz00w+zuPRP0HW+85REr30WkOCksp Kkp/RYtTzkyoOUKZxEqE83s8lPy/Q4tGkmb3upeQfkXSJvzXWbm4tEp8HwYK+wUkOKHsHE3hCh5h 54XL3yTOBCJvbOK6zmJJtXc3U5lpyeKwydTnz63Wyfayy7GkSNpkxodU7up0bmTbu14Lt6kIcWWW bLqxjDXqb5BtToixUiUqIoqIce6RJeN6ecPQoWj6rJdSLqf+IFj1wLotApPabgXReKe52WmasCnE kSUESQRgHtMoTq3B50mIQzCJNpVlKHa4BbWKYiiUX+vcvJFMN8iTxTpsZwzKdCbzIdkLFC8lLIgj ImyllKUlMmDAGEiGLEoFiXRQpESfCzJcpSpS0SVHIOhmGBSlCyiRSUUpJYFRJJvG6Uly5SiloRmj RnLfI3GEacj57NmipOGSvz/dI4vRPeoscF7r1JddSyYhMWKlMXXlLrrcfsZBlSKyKLIVRIfuPY/u uXTpkj/jKhFjsTU/QpC82lJJ7TIEUgiQiDFAESIgJSZu/To/c9ClNheYRmThIwatz+xUpTcvSxhn Iwf64izQomZRUkUpVPjo8zDIKaUalQjuZtXqEkyPLKe1pLnu8OBoTa6v831/Zt9FlOqGccpPNO58 0kxc9L0WVSy3BGDRYpLGx6t5U8LPjPjGXcmPzjqinva3WlOp+VRBhvcWG+SJsbGURkqSayT9IuUo irBMikb0n5m12jZFi0jx+TJ8jhJElz3I3WYkLDRTi3yNDjCTk9lpGaFEdQ+13OueRDI8d9un4CQL J6RRA+ESQ4TWWHoEogYHAj6FSLyJ1eNJJY9WJsLvS3qdFJaSz1K737GDwpkd5mvEmno2pbhXZ87g Le2qnKnZe1Vghz0KfgEQVjBUTXynPPomAMQ0m4Qly9IWSdsepUlKnUo9y0jxr8b63JqnZts7kkeS lKVAoUofrSKbHU4jvTQ8kqSUikUpUiiKClRWw2sx6nU+MIyZqSXh5v1tqzIfCmImHpTi4qT4xfyV 1ybCbCpDanRPWbvfQ0mqpJEkVDJLIIXE20zujgTcxsozDY2BHJBEkQ7VQKO0hZ2ELTqdmZkZqRPY 4O6U+f7ZnMimSEf7vNIXdN9iI+ubjWPpVJ5dFIsKopSfcm9Yuwi0kUMjIqVVVU5SKksP1G5E9tQ1 Z5DQ2GyRdsJRgWWIjJeI8E9RSLt/jD5M3kodYwPobzipJxaIcFFIuKiG5T0XWS72DcpaBQspFijg gloHUXlkYVAossllkqfef5NEZGH2nF1K5vnkyNusiYOcXqLHq6pDN1sKVMpvkUyfQ6LyXUnZP3m9 vhyVA+lRI3qjmUsoWc104m/fE2LjCPrbz38XgnU2ti20pSgqE82q0n+0PNJR5pI2o7toyiDCJPbb JweDgdiz0HBLGWSqZ7UWVJOBQJYd+PkwYRTte1CPcmxO9SbE3M/Qu+ufkfkQqCxS0FBb8bbE2qU1 HNz4nkssqEY+pT1josjc0NFLqVTuaJ9BC7JNo9be1oUZSNsupmN6lN0guiP2LmC7RwqSIgxDaCT2 4k3AnmCCaTCQZwjoZLJ7pPFUli6d7V3Ozi38VOKzCVeyzqWWGRDJaEogWksEPCalSYgZEwCqUVkt EUVYpLrsZFy8/9QZrvsKYJ+RZgpRq/LEsuXsqSKCk2J3zS5GSyZRI2KW4OakuMxhmpdzgYbIRTJL RPxl0kcpJdaoFJCs0mS6RJUkteTDC56RLJJZxGu0pdqKIhoSdwkyMAYkjCMkDcQI00i2w9SjqbnA pV9MxqXEi1xZQlHlILxBhMMOQTQHAoQ+z97Hm6uozea0WKOo3HCXfpIeDlhFSknNUkjmNY62xJhF LrSGM1y4qEUxYYLw4lyWwLSQtUQ3NzNhMlJrqZvjT30ko6KgvKJ+4qGFfiUpSf8XilpJhJhRohGn G5IyLpuLl0PBY+UOaoiSxB1vpKibZnnJ7VSTshR5/B/c/6Mhd5mb0lKpKUl3v/rzRSvovH2KT0k5 Coh0VDxQ/S2tyjJ20jSEohKfwaJcjN4RRRRQbikWVKiklw+FqpEXUnRTCTLYyYfg2xzkmWQ0EswW kTmTVJGaYk5Km1q/Q9D0MkwXUoUKcli0fpUyMmi8T9aCYhFk4SQ66LPUpiSeuTRJeSZTlMkrQriV DuOiF1FHucIt8jJkfQsKUlKbY6MF3Q+6R8OkylQ/nSaze72SxFkVESlCUdZsXfofL+oo9KbSWWpF SzuWLutUtQWtJY6kNid25YLVJaD3I+a+LrlLsLWWxVlp+BZTBS4sYMAwQQMCUlKDVoHx30ORA90Y ARELYbCo8lQL4Bu7kkbQ5ZbNHPsgBjl+mj30vRdcwjucIlhlzXO67QlA0e6y8Mqk+uqp2O13NzRP hCs3eqPk2s3YdnUzaqbE/B7tH5/4O5837e9IXenwhG9ScE+KWOnU+Liwp71IWJRSUUUUKUxUJRGB QQqCBjMASgJNCJ3DKUsSlKIggyUmD4EoGhJpilA/LgYPtaspFywpSUstZalSnuZJaGEEw2m1eEZH fDyiZzCaNBYJSZxSy66WGrk9znH2uqe5DJhFH5lk9hc7xMD3jKGSVO9kohT7YGDImoIUPoSj86ll F2j50sbFJhRhspc1xBqZ2E73xdcpSlJ1yUFlO2ieEkZvOkbFPuem1qq3Bdo3NiykguxKbFPFuYad rJd+tKV1Ob/xl0dazIqPzUKVDAUxTXMwqUC2XAgkdml45hyaxcFa5pFAtC6Pk/wKeETNREZprJLw WVEp3WS2FLFtW6HhImse45P3HL69W8VGR6UKTtaHWe5QpaFLQoiIm0yTQTxCJ2mRdZhZ0kjqdDr+ 3Cf6Pwwuyc6e5LwmpSZKgV8k8G5QkUat68ZNEmi8/iqUutEmChhKbRtfJRcoUYbFvtUO9TTIzFGa zZoqLSj1PNrGhkhZUhkqLr/O2v7WSymbe0PtYiLFKNLMjBKbSliU5UlE2iEykmAQEYcosLrbXU6n tzZ8tFLQ+/2QjB2uSmbrPacjmbVnmvhs2C2dMy85NVLmSdSOhvWWSkod35fu4obHqKKU0NBSk3LL vskzTmcYwfPYSaKX4s3OKVEjs/UG5N9SSdFrSRy3gqprAuMmUWNqfVUOGSk4DORhTEkOLEa5KqKi RZt7A76iqDcfM0TYhSdqo8n22T8S7e7fUkKJzc5N8TncpYUmG9ab0vddZhKpTMowUKuWURRv2eBu HBwUVI2jVI2NuWb5dqQ3tyZGxqwmw6mF0TSZrrrxPuOaYkO0/MPYnW3qzZ72F5zNYUzIthgzXNDN hkwszWYilkzXf3KZxkVSe1T2U6mSzasttKTSzapozXXWUUpMuWizcpvNFtVU2RNDBmwvG2XUJSpG ZlZaXUyZqWalH7T6rGCZm9LnkoeiZbXCSWTjSjK8RxXKaqRwSjbAzMS8llEyUszaBZDM6oHJUDOX XC2h8xTd2nmpaKybENISiFkD3rJ1gmeIlAMCEqICchxWnNTCjUaRzkxh0eJcXObVZ/2elyelRRZZ c6kfmOthudvF8EsXdSRY65KMnFOx982KPaPF3xE5DJAu2QwjWfKLmRoqQkdyojJqs/LCO545WOc8 G0to1e48miGjo7NrC9KItRaKwocF0mbJ1Klqf4/j0cWCcEj0KI5qgpTkkbGhzglSjVOT8H6pSRUk VPF7drJnDR2CRZMKm4VElOMTrN7pGrPsZPBNFhSmKiWUkopi8QyYO1TP4Lvkbio9Fm0RgfVOL9Ch RlEsr7n838DqUgMm/mCnOirFii5gHb61CBsDIann/wdXm2u9ohMNj2qUS6b3pkJD/lCgQ9aYtCdb 31oOTo3tUj2wZvS7HyiayeQoOtUUZOI62kk1e88S2BIso1bRvjD7klJwaKUWfkW+jBo/44uzjsXf GJRu3r9YntKkjiyP3skRZhLDy97vNpRRSk7ncT10kUqQbijwiftUskTmZMnoVJOuSLM4iWRhP40/ MdbZw/F9UTd9CkmHPwUjV9Uj/hlPxJoWUzKZn61MijtTxsZS7NdFPqjuXkh5xOV26aJ8ut9EZ9m3 e3CokPTO7ZdHrUicjxqTYpHoYLRPbT3Kkm4h5zJLp1eRaLvM6o7jg2SdyJUeCkR/YLWRJ8fdaS9Q nk7wtCehmjxzTEhvpIj7/DwU83ui6VvdS5kUXWSWKdy5a70MzJiGD5NpdLJSlQl5hVmJ9L9Rcbop NRT2MzY/JwOwOvk+ZIbR+j3bGz6+ffxbe8kns/YqT8Cvd7LWabiXDtnSCoOgZ5dLKrz0inGgEQL5 BeBIZiKLKf+DtO0/+LuSKcKEgZx5kwg= --===============1590106423==--