From: marko.makela Date: June 5 2012 9:40pm Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3944 to 3946) WL#6255 List-Archive: http://lists.mysql.com/commits/144099 Message-Id: <201206052140.q55LetO6027983@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM5NDYgTWFya28gTcOka2Vsw6QJMjAxMi0wNi0wNgogICAgICBXTCM2MjU1IGNsZWFudXAgYW5k IGZpeCBmb3IgQUREIENPTFVNTiBiLCBBREQgUFJJTUFSWSBLRVkgKGEsIGMpCiAgICAgIAogICAg ICByb3dfbG9nX3Q6IEFkZCBhZGRfY29scywgY29sX21hcC4KICAgICAgCiAgICAgIHJvd19sb2df YWxsb2NhdGUoKTogQWRkIHRoZSBwYXJhbWV0ZXJzIGFkZF9jb2xzLCBjb2xfbWFwLgogICAgICAK ICAgICAgcm93X2xvZ190YWJsZV9hcHBseSgpLCByb3dfbG9nX3RhYmxlX2FwcGx5X29wcygpOiBS ZW1vdmUgdGhlCiAgICAgIHBhcmFtZXRlcnMgYWRkX2NvbHMsIGNvbF9tYXAuCiAgICAgIAogICAg ICByb3dfbG9nX3RhYmxlX2FwcGx5X2NvbnZlcnRfbXJlYygpLCByb3dfbG9nX3RhYmxlX2FwcGx5 X2luc2VydCgpLAogICAgICByb3dfbG9nX3RhYmxlX2FwcGx5X3VwZGF0ZSgpOiBSZXBsYWNlIHRo ZSBwYXJhbWV0ZXJzIGFkZF9jb2xzLAogICAgICBjb2xfbWFwLCBuZXdfdGFibGUgd2l0aCByb3df bG9nX3QgbG9nLgogICAgICAKICAgICAgcm93X2xvZ190YWJsZV9hcHBseV9vcCgpOiBSZW1vdmUg dGhlIHBhcmFtZXRlcnMgbmV3X3RhYmxlLCBhZGRfY29scywKICAgICAgY29sX21hcC4KICAgICAg CiAgICAgIHJvd19sb2dfdGFibGVfZ2V0X3BrKCk6IE1hcCBhZGRlZCBhbmQgcmVvcmRlcmVkIGNv bHVtbnMuCiAgICAgIAogICAgICBoYV9pbm5vYmFzZTo6Y2hlY2tfaWZfc3VwcG9ydGVkX2lucGxh Y2VfYWx0ZXIoKTogSW5pdGlhbGl6ZSBrZXlfcGFydC0+ZmllbGQKICAgICAgdG8gdGFibGUtPmZp ZWxkW10sIG9yIHRvIGFsdGVyZWRfdGFibGUtPmZpZWxkW10gZm9yIEFERCBDT0xVTU4uCgogICAg bW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLXRhYmxlLW9u bGluZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItdGFibGUt b25saW5lLnRlc3QKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIu Y2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBsb2cuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNjCiAzOTQ1IE1hcmtvIE3DpGtlbMOkCTIwMTItMDYtMDUK ICAgICAgQWRqdXN0IG1haW4uYWx0ZXJfdGFibGUgZm9yIEFERCBDT0xVTU4uCgogICAgbW9kaWZp ZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9hbHRlcl90YWJsZS5yZXN1bHQKICAgICAgbXlzcWwtdGVz dC90L2FsdGVyX3RhYmxlLnRlc3QKIDM5NDQgTWFya28gTcOka2Vsw6QJMjAxMi0wNi0wNQogICAg ICBXTCM2MjU1IEFMVEVSX0FERF9DT0xVTU4gKEFMVEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OKQog ICAgICAKICAgICAgaW5ub2Jhc2VfYnVpbGRfY29sX21hcF9hZGQoKTogQ29udmVydCBhIGRlZmF1 bHQgdmFsdWUgb2YgYW4gQUREIENPTFVNTgogICAgICB0byB0aGUgSW5ub0RCIGZvcm1hdC4KICAg ICAgCiAgICAgIGhhX2lubm9iYXNlX2lucGxhY2VfY3R4KCk6IEFkZCBhZGRfY29scy4KICAgICAg CiAgICAgIGlubm9iYXNlX2J1aWxkX2NvbF9tYXAoKSwgcm93X21lcmdlX2J1aWxkX2luZGV4ZXMo KSwKICAgICAgcm93X2xvZ190YWJsZV9hcHBseSgpLCByb3dfYnVpbGQoKSwgcm93X2xvZ190YWJs ZV9hcHBseV9jb252ZXJ0X21yZWMoKSwKICAgICAgcm93X2xvZ190YWJsZV9hcHBseV9pbnNlcnQo KSwgcm93X2xvZ190YWJsZV9hcHBseV91cGRhdGUoKSwKICAgICAgcm93X2xvZ190YWJsZV9hcHBs eV9vcCgpLCByb3dfbG9nX3RhYmxlX2FwcGx5X29wcygpLAogICAgICByb3dfbWVyZ2VfcmVhZF9j bHVzdGVyZWRfaW5kZXgoKTogQWRkIHRoZSBwYXJhbWV0ZXIgYWRkX2NvbHMuCiAgICAgIAogICAg ICBwcmVwYXJlX2lucGxhY2VfYWx0ZXJfdGFibGVfZGljdCgpOiBXaGVuIHJlYnVpbGRpbmcgYSB0 YWJsZSwgbWFrZSBpdCBhCiAgICAgICouaWJkIGZpbGUgaWYgdGhlIG9yaWdpbmFsIHRhYmxlIHdh cyBpbiBhbiAqLmliZCBmaWxlLCBvciBpZgogICAgICBpbm5vZGJfZmlsZV9wZXJfdGFibGU9MS4K CiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItY3Jl YXRlLW9wdGlvbnMucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2Ri LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi1jcmVhdGUtb3B0 aW9ucy50ZXN0CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbG9nLmgKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL3JvdzBtZXJnZS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9yb3cwcm93LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYwogICAgICBz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MHJvdy5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW5kby5jYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzB2ZXJzLmNjCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvYWx0ZXJfdGFi bGUucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvYWx0ZXJfdGFibGUucmVzdWx0CXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA1MTQzMjMyLW5lZDl6MnJ4eDkzMXM5MXQKKysr IGIvbXlzcWwtdGVzdC9yL2FsdGVyX3RhYmxlLnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEyMDYwNTIxMzkyMS13MXVwbTZxd3d1ZDEzcnNjCkBAIC0xNTQzLDggKzE1NDMs NyBAQCBBTFRFUiBUQUJMRSB0MSBBREQgQ09MVU1OIChjMSBJTlQpOwogQUxURVIgVEFCTEUgdDEg QUREIENPTFVNTiAoYzIgSU5UKSwgQUxHT1JJVEhNPSBERUZBVUxUOwogQUxURVIgVEFCTEUgdDEg QUREIENPTFVNTiAoYzMgSU5UKSwgQUxHT1JJVEhNPSBDT1BZOwogQUxURVIgVEFCTEUgdDEgQURE IENPTFVNTiAoYzQgSU5UKSwgQUxHT1JJVEhNPSBJTlBMQUNFOwotRVJST1IgNDIwMDA6IFRoaXMg dmVyc2lvbiBvZiBNeVNRTCBkb2Vzbid0IHlldCBzdXBwb3J0ICdBTFRFUiBUQUJMRSB0MSBBREQg Q09MVU1OIChjNCBJTlQpLCBBTEdPUklUSE09IElOUExBQ0UnCi1BTFRFUiBUQUJMRSB0MSBEUk9Q IENPTFVNTiBjMSwgRFJPUCBDT0xVTU4gYzIsIERST1AgQ09MVU1OIGMzOworQUxURVIgVEFCTEUg dDEgRFJPUCBDT0xVTU4gYzEsIERST1AgQ09MVU1OIGMyLCBEUk9QIENPTFVNTiBjMywgRFJPUCBD T0xVTU4gYzQ7CiAjCiAjIDQ6IFRlc3QgTE9DSyBrZXl3b3JkCiAjCkBAIC0xNjQ2LDI2ICsxNjQ1 LDI2IEBAIGFmZmVjdGVkIHJvd3M6IDAKIEFMVEVSIFRBQkxFIHRtMTsKIGFmZmVjdGVkIHJvd3M6 IDAKIEFMVEVSIFRBQkxFIHRpMSBBREQgQ09MVU1OIGQgVkFSQ0hBUigyMDApOwotYWZmZWN0ZWQg cm93czogMgotaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAKK2Fm ZmVjdGVkIHJvd3M6IDAKK2luZm86IFJlY29yZHM6IDAgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdz OiAwCiBBTFRFUiBUQUJMRSB0bTEgQUREIENPTFVNTiBkIFZBUkNIQVIoMjAwKTsKIGFmZmVjdGVk IHJvd3M6IDIKIGluZm86IFJlY29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwCiBB TFRFUiBUQUJMRSB0aTEgQUREIENPTFVNTiBkMiBWQVJDSEFSKDIwMCk7Ci1hZmZlY3RlZCByb3dz OiAyCi1pbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBXYXJuaW5nczogMAorYWZmZWN0 ZWQgcm93czogMAoraW5mbzogUmVjb3JkczogMCAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAK IEFMVEVSIFRBQkxFIHRtMSBBREQgQ09MVU1OIGQyIFZBUkNIQVIoMjAwKTsKIGFmZmVjdGVkIHJv d3M6IDIKIGluZm86IFJlY29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwCiBBTFRF UiBUQUJMRSB0aTEgQUREIENPTFVNTiBlIEVOVU0oJ2EnLCAnYicpIEZJUlNUOwotYWZmZWN0ZWQg cm93czogMgotaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAKK2Fm ZmVjdGVkIHJvd3M6IDAKK2luZm86IFJlY29yZHM6IDAgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdz OiAwCiBBTFRFUiBUQUJMRSB0bTEgQUREIENPTFVNTiBlIEVOVU0oJ2EnLCAnYicpIEZJUlNUOwog YWZmZWN0ZWQgcm93czogMgogaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRlczogMCAgV2Fybmlu Z3M6IDAKIEFMVEVSIFRBQkxFIHRpMSBBREQgQ09MVU1OIGYgSU5UIEFGVEVSIGE7Ci1hZmZlY3Rl ZCByb3dzOiAyCi1pbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBXYXJuaW5nczogMAor YWZmZWN0ZWQgcm93czogMAoraW5mbzogUmVjb3JkczogMCAgRHVwbGljYXRlczogMCAgV2Fybmlu Z3M6IDAKIEFMVEVSIFRBQkxFIHRtMSBBREQgQ09MVU1OIGYgSU5UIEFGVEVSIGE7CiBhZmZlY3Rl ZCByb3dzOiAyCiBpbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBXYXJuaW5nczogMAoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLXRhYmxl LW9ubGluZS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLXRh YmxlLW9ubGluZS5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDUx NDMyMzItbmVkOXoycnh4OTMxczkxdAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lu bm9kYi10YWJsZS1vbmxpbmUucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTIwNjA1MjEzOTIxLXcxdXBtNnF3d3VkMTNyc2MKQEAgLTIxNCw4ICsyMTQsOSBAQCBBTFRFUiBU QUJMRSB0MSBBREQgUFJJTUFSWSBLRVkoYzIyZiksIENICiBFUlJPUiA0MjAwMDogTXVsdGlwbGUg cHJpbWFyeSBrZXkgZGVmaW5lZAogQUxURVIgVEFCTEUgdDEgRFJPUCBQUklNQVJZIEtFWSwgQURE IFBSSU1BUlkgS0VZKGMyMmYpLCBDSEFOR0UgYzIgYzIyZiBJTlQ7CiBFUlJPUiAyMzAwMDogRHVw bGljYXRlIGVudHJ5ICc1JyBmb3Iga2V5ICdQUklNQVJZJwotQUxURVIgVEFCTEUgdDEgRFJPUCBQ UklNQVJZIEtFWSwgQUREIFBSSU1BUlkgS0VZKGMxLGMyMmYpLCBDSEFOR0UgYzIgYzIyZiBJTlQs Ci1DSEFOR0UgYzMgYzMgVEVYVCBOVUxMLCBDSEFOR0UgYzEgYzEgSU5UIEFGVEVSIGMyMmY7CitB TFRFUiBUQUJMRSB0MSBEUk9QIFBSSU1BUlkgS0VZLCBBREQgUFJJTUFSWSBLRVkoYzEsYzIyZixj NCg1KSksCitDSEFOR0UgYzIgYzIyZiBJTlQsIENIQU5HRSBjMyBjMyBURVhUIE5VTEwsIENIQU5H RSBjMSBjMSBJTlQgQUZURVIgYzIyZiwKK0FERCBDT0xVTU4gYzQgVkFSQ0hBUig2KSBERUZBVUxU ICdPbmxpbmUnOwogU0VUIERFQlVHX1NZTkMgPSAnbm93IFdBSVRfRk9SIHJlYnVpbHQzJzsKIFNF TEVDVCBuYW1lLCBjb3VudCBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5JTk5PREJfTUVUUklDUyBX SEVSRSBzdWJzeXN0ZW0gPSAnZGRsJzsKIG5hbWUJY291bnQKQEAgLTI2MywyMiArMjY0LDI2IEBA IEFMVEVSIFRBQkxFIHQxIE1PRElGWSBjMyBURVhUIE5PVCBOVUxMOwogRVJST1IgMjIwMDQ6IElu dmFsaWQgdXNlIG9mIE5VTEwgdmFsdWUKIFVQREFURSB0MSBTRVQgYzM9Q09OQ0FUKGMxLFJFUEVB VCgnZm9vJyxjMSkpIFdIRVJFIGMzIElTIE5VTEw7CiBTRVQgREVCVUdfU1lOQyA9ICdyb3dfbG9n X3RhYmxlX2FwcGx5MV9iZWZvcmUgU0lHTkFMIGMzcDVfY3JlYXRlZDAgV0FJVF9GT1IgaW5zX2Rv bmUwJzsKLUFMVEVSIFRBQkxFIHQxIE1PRElGWSBjMyBURVhUIE5PVCBOVUxMLCBEUk9QIENPTFVN TiBjMjJmOworQUxURVIgVEFCTEUgdDEgTU9ESUZZIGMzIFRFWFQgTk9UIE5VTEwsIERST1AgQ09M VU1OIGMyMmYsCitBREQgQ09MVU1OIGM1IENIQVIoNSkgREVGQVVMVCAndGlyZWQnIEZJUlNUOwog U0VUIERFQlVHX1NZTkMgPSAnbm93IFdBSVRfRk9SIGMzcDVfY3JlYXRlZDAnOwogQkVHSU47Ci1J TlNFUlQgSU5UTyB0MSBWQUxVRVMoMzQ3LDMzMTAxLCdQaWtrdSBrYWtrb3NlbiBwb3N0aScpOwot SU5TRVJUIElOVE8gdDEgVkFMVUVTKDMzMTAxLDM0NyxOVUxMKTsKK0lOU0VSVCBJTlRPIHQxIFZB TFVFUygzNDcsMzMxMDEsJ1Bpa2t1IGtha2tvc2VuIHBvc3RpJywnWUxFVFYyJyk7CitJTlNFUlQg SU5UTyB0MSBWQUxVRVMoMzMxMDEsMzQ3LE5VTEwsJycpOwogU0VUIERFQlVHX1NZTkMgPSAnbm93 IFNJR05BTCBpbnNfZG9uZTAnOwogRVJST1IgMjIwMDQ6IEludmFsaWQgdXNlIG9mIE5VTEwgdmFs dWUKIFJPTExCQUNLOwogQUxURVIgVEFCTEUgdDEgTU9ESUZZIGMzIFRFWFQgTk9UIE5VTEw7CiBT RVQgREVCVUdfU1lOQyA9ICdyb3dfbG9nX3RhYmxlX2FwcGx5MV9iZWZvcmUgU0lHTkFMIGMzcDVf Y3JlYXRlZCBXQUlUX0ZPUiBpbnNfZG9uZSc7Ci1BTFRFUiBUQUJMRSB0MSBEUk9QIFBSSU1BUlkg S0VZLCBEUk9QIENPTFVNTiBjMjJmLCBBREQgUFJJTUFSWSBLRVkgYzNwNShjMyg1KSk7CitBTFRF UiBUQUJMRSB0MSBEUk9QIFBSSU1BUlkgS0VZLCBEUk9QIENPTFVNTiBjMjJmLAorQUREIENPTFVN TiBjNiBWQVJDSEFSKDEwMDApIERFRkFVTFQKKydJIGxvdmUgdHJhY2tpbmcgZG93biBoYXJkLXRv LXJlcHJvZHVjZSBidWdzLicsCitBREQgUFJJTUFSWSBLRVkgYzNwNShjMyg1KSwgYzYoMikpOwog U0VUIERFQlVHX1NZTkMgPSAnbm93IFdBSVRfRk9SIGMzcDVfY3JlYXRlZCc7CiBTRVQgREVCVUdf U1lOQyA9ICdpYl9hZnRlcl9yb3dfaW5zZXJ0IFNJR05BTCBpbnNfZG9uZSBXQUlUX0ZPUiBkZGxf dGltZWRfb3V0JzsKLUlOU0VSVCBJTlRPIHQxIFZBTFVFUygzNDcsMzMxMDEsTlVMTCk7CitJTlNF UlQgSU5UTyB0MSBWQUxVRVMoMzQ3LDMzMTAxLE5VTEwsJycpOwogRVJST1IgMjMwMDA6IENvbHVt biAnYzMnIGNhbm5vdCBiZSBudWxsCi1JTlNFUlQgSU5UTyB0MSBWQUxVRVMoMzQ3LDMzMTAxLCdQ aWtrdSBrYWtrb3NlbiBwb3N0aScpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTKDM0NywzMzEwMSwn UGlra3Uga2Fra29zZW4gcG9zdGknLCcnKTsKIEVSUk9SIEhZMDAwOiBMb2NrIHdhaXQgdGltZW91 dCBleGNlZWRlZDsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24KIFNFVCBERUJVR19TWU5DID0g J25vdyBTSUdOQUwgZGRsX3RpbWVkX291dCc7CiBTRUxFQ1QgbmFtZSwgY291bnQgRlJPTSBJTkZP Uk1BVElPTl9TQ0hFTUEuSU5OT0RCX01FVFJJQ1MgV0hFUkUgc3Vic3lzdGVtID0gJ2RkbCc7CkBA IC0yOTQsNiArMjk5LDE4IEBAIFNFVCBERUJVR19TWU5DID0gJ3Jvd19sb2dfdGFibGVfYXBwbHkx X2IKIFNFVCBsb2NrX3dhaXRfdGltZW91dCA9IDE7CiBBTFRFUiBUQUJMRSB0MSBST1dfRk9STUFU PVJFRFVOREFOVDsKIFNFVCBERUJVR19TWU5DID0gJ25vdyBXQUlUX0ZPUiByZWJ1aWx0NCc7CitT RUxFQ1QgKiBGUk9NIHQxIExJTUlUIDEwOworYzIyZgljMQljMwljNAorNQkxCTFmb28JT25saW5l Cis2CTIJMmZvb2ZvbwlPbmxpbmUKKzcJMwkzZm9vZm9vZm9vCU9ubGluZQorOAk0CTRmb29mb29m b29mb28JT25saW5lCis5CTUJNWZvb2Zvb2Zvb2Zvb2ZvbwlPbmxpbmUKKzUJNgk2Zm9vZm9vZm9v Zm9vZm9vZm9vCU9ubGluZQorNgk3CTdmb29mb29mb29mb29mb29mb29mb28JT25saW5lCis3CTgJ OGZvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2ZvbwlPbmxpbmUKKzgJOQk5Zm9vZm9vZm9vZm9vZm9vZm9v Zm9vZm9vZm9vCU9ubGluZQorOQkxMAkxMGZvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2ZvbwlP bmxpbmUKIFNFVCBsb2NrX3dhaXRfdGltZW91dCA9IDEwOwogQUxURVIgVEFCTEUgdDEgRElTQ0FS RCBUQUJMRVNQQUNFOwogU0VUIERFQlVHX1NZTkMgPSAnbm93IFNJR05BTCBkbWw0X2RvbmUnOwpA QCAtMzA0LDExICszMjEsMTIgQEAgdDEJQ1JFQVRFIFRBQkxFIGB0MWAgKAogICBgYzIyZmAgaW50 KDExKSBOT1QgTlVMTCBERUZBVUxUICcwJywKICAgYGMxYCBpbnQoMTEpIE5PVCBOVUxMIERFRkFV TFQgJzAnLAogICBgYzNgIHRleHQgTk9UIE5VTEwsCi0gIFBSSU1BUlkgS0VZIChgYzFgLGBjMjJm YCkKKyAgYGM0YCB2YXJjaGFyKDYpIE5PVCBOVUxMIERFRkFVTFQgJ09ubGluZScsCisgIFBSSU1B UlkgS0VZIChgYzFgLGBjMjJmYCxgYzRgKDUpKQogKSBFTkdJTkU9SW5ub0RCIERFRkFVTFQgQ0hB UlNFVD1sYXRpbjEgUk9XX0ZPUk1BVD1DT01QQUNUCiBBTFRFUiBUQUJMRSB0MSBEUk9QIENPTFVN TiBjMywgUk9XX0ZPUk1BVD1SRURVTkRBTlQsIEFMR09SSVRITSA9IElOUExBQ0U7CiBTRUxFQ1Qg KiBGUk9NIHQxOwotYzIyZgljMQorYzIyZgljMQljNAogU0VUIERFQlVHX1NZTkMgPSAnUkVTRVQn OwogU0VUIERFQlVHID0gJyc7CiBTRVQgR0xPQkFMIGlubm9kYl9tb25pdG9yX2Rpc2FibGUgPSBt b2R1bGVfZGRsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3Qv aW5ub2RiLXRhYmxlLW9ubGluZS50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90 L2lubm9kYi10YWJsZS1vbmxpbmUudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDYwNTE0MzIzMi1uZWQ5ejJyeHg5MzFzOTF0CisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5u b2RiL3QvaW5ub2RiLXRhYmxlLW9ubGluZS50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTIwNjA1MjEzOTIxLXcxdXBtNnF3d3VkMTNyc2MKQEAgLTIyMCw4ICsyMjAsOSBAQCBB TFRFUiBUQUJMRSB0MSBBREQgUFJJTUFSWSBLRVkoYzIyZiksIENICiAtLWVycm9yIEVSX0RVUF9F TlRSWQogQUxURVIgVEFCTEUgdDEgRFJPUCBQUklNQVJZIEtFWSwgQUREIFBSSU1BUlkgS0VZKGMy MmYpLCBDSEFOR0UgYzIgYzIyZiBJTlQ7CiAtLXNlbmQKLUFMVEVSIFRBQkxFIHQxIERST1AgUFJJ TUFSWSBLRVksIEFERCBQUklNQVJZIEtFWShjMSxjMjJmKSwgQ0hBTkdFIGMyIGMyMmYgSU5ULAot Q0hBTkdFIGMzIGMzIFRFWFQgTlVMTCwgQ0hBTkdFIGMxIGMxIElOVCBBRlRFUiBjMjJmOworQUxU RVIgVEFCTEUgdDEgRFJPUCBQUklNQVJZIEtFWSwgQUREIFBSSU1BUlkgS0VZKGMxLGMyMmYsYzQo NSkpLAorQ0hBTkdFIGMyIGMyMmYgSU5ULCBDSEFOR0UgYzMgYzMgVEVYVCBOVUxMLCBDSEFOR0Ug YzEgYzEgSU5UIEFGVEVSIGMyMmYsCitBREQgQ09MVU1OIGM0IFZBUkNIQVIoNikgREVGQVVMVCAn T25saW5lJzsKIAogY29ubmVjdGlvbiBkZWZhdWx0OwogU0VUIERFQlVHX1NZTkMgPSAnbm93IFdB SVRfRk9SIHJlYnVpbHQzJzsKQEAgLTI2MiwxNCArMjYzLDE1IEBAIFVQREFURSB0MSBTRVQgYzM9 Q09OQ0FUKGMxLFJFUEVBVCgnZm9vJywKIAogU0VUIERFQlVHX1NZTkMgPSAncm93X2xvZ190YWJs ZV9hcHBseTFfYmVmb3JlIFNJR05BTCBjM3A1X2NyZWF0ZWQwIFdBSVRfRk9SIGluc19kb25lMCc7 CiAtLXNlbmQKLUFMVEVSIFRBQkxFIHQxIE1PRElGWSBjMyBURVhUIE5PVCBOVUxMLCBEUk9QIENP TFVNTiBjMjJmOworQUxURVIgVEFCTEUgdDEgTU9ESUZZIGMzIFRFWFQgTk9UIE5VTEwsIERST1Ag Q09MVU1OIGMyMmYsCitBREQgQ09MVU1OIGM1IENIQVIoNSkgREVGQVVMVCAndGlyZWQnIEZJUlNU OwogCiBjb25uZWN0aW9uIGRlZmF1bHQ7CiAKIFNFVCBERUJVR19TWU5DID0gJ25vdyBXQUlUX0ZP UiBjM3A1X2NyZWF0ZWQwJzsKIEJFR0lOOwotSU5TRVJUIElOVE8gdDEgVkFMVUVTKDM0NywzMzEw MSwnUGlra3Uga2Fra29zZW4gcG9zdGknKTsKLUlOU0VSVCBJTlRPIHQxIFZBTFVFUygzMzEwMSwz NDcsTlVMTCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMzQ3LDMzMTAxLCdQaWtrdSBrYWtrb3Nl biBwb3N0aScsJ1lMRVRWMicpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTKDMzMTAxLDM0NyxOVUxM LCcnKTsKIFNFVCBERUJVR19TWU5DID0gJ25vdyBTSUdOQUwgaW5zX2RvbmUwJzsKIAogY29ubmVj dGlvbiBjb24xOwpAQCAtMjg0LDE2ICsyODYsMTkgQEAgQUxURVIgVEFCTEUgdDEgTU9ESUZZIGMz IFRFWFQgTk9UIE5VTEw7CiAKIFNFVCBERUJVR19TWU5DID0gJ3Jvd19sb2dfdGFibGVfYXBwbHkx X2JlZm9yZSBTSUdOQUwgYzNwNV9jcmVhdGVkIFdBSVRfRk9SIGluc19kb25lJzsKIC0tc2VuZAot QUxURVIgVEFCTEUgdDEgRFJPUCBQUklNQVJZIEtFWSwgRFJPUCBDT0xVTU4gYzIyZiwgQUREIFBS SU1BUlkgS0VZIGMzcDUoYzMoNSkpOworQUxURVIgVEFCTEUgdDEgRFJPUCBQUklNQVJZIEtFWSwg RFJPUCBDT0xVTU4gYzIyZiwKK0FERCBDT0xVTU4gYzYgVkFSQ0hBUigxMDAwKSBERUZBVUxUCisn SSBsb3ZlIHRyYWNraW5nIGRvd24gaGFyZC10by1yZXByb2R1Y2UgYnVncy4nLAorQUREIFBSSU1B UlkgS0VZIGMzcDUoYzMoNSksIGM2KDIpKTsKIAogY29ubmVjdGlvbiBkZWZhdWx0OwogU0VUIERF QlVHX1NZTkMgPSAnbm93IFdBSVRfRk9SIGMzcDVfY3JlYXRlZCc7CiAKIFNFVCBERUJVR19TWU5D ID0gJ2liX2FmdGVyX3Jvd19pbnNlcnQgU0lHTkFMIGluc19kb25lIFdBSVRfRk9SIGRkbF90aW1l ZF9vdXQnOwogLS1lcnJvciBFUl9CQURfTlVMTF9FUlJPUgotSU5TRVJUIElOVE8gdDEgVkFMVUVT KDM0NywzMzEwMSxOVUxMKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUygzNDcsMzMxMDEsTlVMTCwn Jyk7CiAtLXNlbmQKLUlOU0VSVCBJTlRPIHQxIFZBTFVFUygzNDcsMzMxMDEsJ1Bpa2t1IGtha2tv c2VuIHBvc3RpJyk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMzQ3LDMzMTAxLCdQaWtrdSBrYWtr b3NlbiBwb3N0aScsJycpOwogCiBjb25uZWN0aW9uIGNvbjE7CiAtLWVycm9yIEVSX0xPQ0tfV0FJ VF9USU1FT1VUCkBAIC0zMTQsNiArMzE5LDcgQEAgQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1S RURVTkRBTlQ7CiAKIGNvbm5lY3Rpb24gY29uMTsKIFNFVCBERUJVR19TWU5DID0gJ25vdyBXQUlU X0ZPUiByZWJ1aWx0NCc7CitTRUxFQ1QgKiBGUk9NIHQxIExJTUlUIDEwOwogCiBjb25uZWN0IChj b24yLGxvY2FsaG9zdCxyb290LCwpOwogY29ubmVjdGlvbiBjb24yOwoKPT09IG1vZGlmaWVkIGZp bGUgJ215c3FsLXRlc3QvdC9hbHRlcl90YWJsZS50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvYWx0 ZXJfdGFibGUudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNTE0MzIz Mi1uZWQ5ejJyeHg5MzFzOTF0CisrKyBiL215c3FsLXRlc3QvdC9hbHRlcl90YWJsZS50ZXN0CXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA1MjEzOTIxLXcxdXBtNnF3d3VkMTNy c2MKQEAgLTEzMTcsMTAgKzEzMTcsOSBAQCBBTFRFUiBUQUJMRSB0MSBEUk9QIElOREVYIGkxLCBE Uk9QIElOREVYCiBBTFRFUiBUQUJMRSB0MSBBREQgQ09MVU1OIChjMSBJTlQpOwogQUxURVIgVEFC TEUgdDEgQUREIENPTFVNTiAoYzIgSU5UKSwgQUxHT1JJVEhNPSBERUZBVUxUOwogQUxURVIgVEFC TEUgdDEgQUREIENPTFVNTiAoYzMgSU5UKSwgQUxHT1JJVEhNPSBDT1BZOwotLS1lcnJvciBFUl9O T1RfU1VQUE9SVEVEX1lFVAogQUxURVIgVEFCTEUgdDEgQUREIENPTFVNTiAoYzQgSU5UKSwgQUxH T1JJVEhNPSBJTlBMQUNFOwogCi1BTFRFUiBUQUJMRSB0MSBEUk9QIENPTFVNTiBjMSwgRFJPUCBD T0xVTU4gYzIsIERST1AgQ09MVU1OIGMzOworQUxURVIgVEFCTEUgdDEgRFJPUCBDT0xVTU4gYzEs IERST1AgQ09MVU1OIGMyLCBEUk9QIENPTFVNTiBjMywgRFJPUCBDT0xVTU4gYzQ7CiAKIC0tZWNo byAjCiAtLWVjaG8gIyA0OiBUZXN0IExPQ0sga2V5d29yZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEyMDYwNTE0MzIzMi1uZWQ5ejJyeHg5MzFzOTF0CisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwNjA1MjEzOTIxLXcxdXBtNnF3d3VkMTNyc2MKQEAgLTI0Nyw2ICsyNDcsOSBAQCBoYV9p bm5vYmFzZTo6Y2hlY2tfaWZfc3VwcG9ydGVkX2lucGxhY2VfCiAJCURCVUdfUkVUVVJOKEhBX0FM VEVSX0lOUExBQ0VfTk9UX1NVUFBPUlRFRCk7CiAJfQogCisJTGlzdF9pdGVyYXRvcl9mYXN0PENy ZWF0ZV9maWVsZD4gY2ZfaXQoCisJCWhhX2FsdGVyX2luZm8tPmFsdGVyX2luZm8tPmNyZWF0ZV9s aXN0KTsKKwogCS8qIEZpeCB0aGUga2V5IHBhcnRzLiAqLwogCWZvciAoS0VZKiBuZXdfa2V5ID0g aGFfYWx0ZXJfaW5mby0+a2V5X2luZm9fYnVmZmVyOwogCSAgICAgbmV3X2tleSA8IGhhX2FsdGVy X2luZm8tPmtleV9pbmZvX2J1ZmZlcgpAQCAtMjU1LDQ0ICsyNTgsMjggQEAgaGFfaW5ub2Jhc2U6 OmNoZWNrX2lmX3N1cHBvcnRlZF9pbnBsYWNlXwogCQlmb3IgKEtFWV9QQVJUX0lORk8qIGtleV9w YXJ0ID0gbmV3X2tleS0+a2V5X3BhcnQ7CiAJCSAgICAga2V5X3BhcnQgPCBuZXdfa2V5LT5rZXlf cGFydCArIG5ld19rZXktPmtleV9wYXJ0czsKIAkJICAgICBrZXlfcGFydCsrKSB7Ci0JCQlrZXlf cGFydC0+ZmllbGQgPSB0YWJsZS0+ZmllbGRba2V5X3BhcnQtPmZpZWxkbnJdOwotCQkJLyogVE9E TzogVXNlIGFsdGVyZWRfdGFibGUgZm9yIEFERF9DT0xVTU4uCi0JCQlXaGF0IHRvIGRvIHdpdGgg QUREX0NPTFVNTnxEUk9QX0NPTFVNTj8gKi8KLQotCQkJaWYgKGRpY3RfdGFibGVfZ2V0X25fdXNl cl9jb2xzKHByZWJ1aWx0LT50YWJsZSkKLQkJCSAgICA8PSBrZXlfcGFydC0+ZmllbGRucikgewot CQkJCS8qIFRoaXMgc2hvdWxkIG5ldmVyIG9jY3VyLCB1bmxlc3MKLQkJCQl0aGUgLmZybSBmaWxl IGdldHMgb3V0IG9mIHN5bmMgd2l0aAotCQkJCXRoZSBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5LiAq LwotCQkJCXNxbF9wcmludF93YXJuaW5nKAotCQkJCQkiSW5ub0RCIHRhYmxlICclcycgaGFzICV1 IGNvbHVtbnMsICIKLQkJCQkJIk15U1FMIHRhYmxlICclcycgaGFzICV1LiIsCi0JCQkJCXByZWJ1 aWx0LT50YWJsZS0+bmFtZSwKLQkJCQkJKHVuc2lnbmVkKSBkaWN0X3RhYmxlX2dldF9uX3VzZXJf Y29scygKLQkJCQkJCXByZWJ1aWx0LT50YWJsZSksCi0JCQkJCXRhYmxlLT5zLT50YWJsZV9uYW1l LnN0ciwKLQkJCQkJdGFibGUtPnMtPmZpZWxkcyk7Ci0JCQkJdXRfYWQoMCk7Ci0JCQkJREJVR19S RVRVUk4oSEFfQUxURVJfSU5QTEFDRV9OT1RfU1VQUE9SVEVEKTsKLQkJCX0KLQotCQkJZGljdF9j b2xfdCogY29sID0gZGljdF90YWJsZV9nZXRfbnRoX2NvbCgKLQkJCQlwcmVidWlsdC0+dGFibGUs IGtleV9wYXJ0LT5maWVsZG5yKTsKLQotCQkJaWYgKCEoY29sLT5wcnR5cGUgJiBEQVRBX05PVF9O VUxMKQotCQkJICAgICE9ICEha2V5X3BhcnQtPmZpZWxkLT5udWxsX3B0cikgewotCQkJCXNxbF9w cmludF93YXJuaW5nKAotCQkJCQkiSW5ub0RCIHRhYmxlICclcycgY29sdW1uICclcycgIgotCQkJ CQkiYXR0cmlidXRlcyBkaWZmZXIgZnJvbSAiCi0JCQkJCSJNeVNRTCAnJXMnLiclcycuIiwKLQkJ CQkJcHJlYnVpbHQtPnRhYmxlLT5uYW1lLAotCQkJCQlkaWN0X3RhYmxlX2dldF9jb2xfbmFtZSgK LQkJCQkJCXByZWJ1aWx0LT50YWJsZSwKLQkJCQkJCWtleV9wYXJ0LT5maWVsZG5yKSwKLQkJCQkJ dGFibGUtPnMtPnRhYmxlX25hbWUuc3RyLAotCQkJCQlrZXlfcGFydC0+ZmllbGQtPmZpZWxkX25h bWUpOwotCQkJCXV0X2FkKDApOwotCQkJCURCVUdfUkVUVVJOKEhBX0FMVEVSX0lOUExBQ0VfTk9U X1NVUFBPUlRFRCk7CisJCQljb25zdCBDcmVhdGVfZmllbGQqCW5ld19maWVsZDsKKworCQkJREJV R19BU1NFUlQoa2V5X3BhcnQtPmZpZWxkbnIKKwkJCQkgICAgPCBhbHRlcmVkX3RhYmxlLT5zLT5m aWVsZHMpOworCisJCQljZl9pdC5yZXdpbmQoKTsKKwkJCWZvciAodWludCBmaWVsZG5yID0gMDsg KG5ld19maWVsZCA9IGNmX2l0KyspOworCQkJICAgICBmaWVsZG5yKyspIHsKKwkJCQlpZiAoZmll bGRuciA9PSBrZXlfcGFydC0+ZmllbGRucikgeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisK KwkJCURCVUdfQVNTRVJUKG5ld19maWVsZCk7CisKKwkJCWtleV9wYXJ0LT5maWVsZCA9IG5ld19m aWVsZC0+ZmllbGQ7CisKKwkJCWlmICghbmV3X2ZpZWxkLT5maWVsZCkgeworCQkJCURCVUdfQVNT RVJUKGhhX2FsdGVyX2luZm8tPmhhbmRsZXJfZmxhZ3MKKwkJCQkJICAgICYgQWx0ZXJfaW5wbGFj ZV9pbmZvOjpBRERfQ09MVU1OKTsKKwkJCQlrZXlfcGFydC0+ZmllbGQgPSBhbHRlcmVkX3RhYmxl LT5maWVsZFsKKwkJCQkJa2V5X3BhcnQtPmZpZWxkbnJdOwogCQkJfQogCQl9CiAJfQpAQCAtMjAy MiwxMCArMjAwOSwxMSBAQCBpbm5vYmFzZV9jaGVja19mb3JlaWducygKIAlkaWN0X2ZvcmVpZ25f dCoqCWRyb3BfZmssCiAJdWxpbnQJCQluX2Ryb3BfZmspCiB7Ci0JTGlzdF9pdGVyYXRvcl9mYXN0 PENyZWF0ZV9maWVsZD4gY2ZfaXQ7CisJTGlzdF9pdGVyYXRvcl9mYXN0PENyZWF0ZV9maWVsZD4g Y2ZfaXQoCisJCWhhX2FsdGVyX2luZm8tPmFsdGVyX2luZm8tPmNyZWF0ZV9saXN0KTsKIAogCWZv ciAoRmllbGQqKiBmcCA9IG9sZF90YWJsZS0+ZmllbGQ7ICpmcDsgZnArKykgewotCQljZl9pdC5p bml0KGhhX2FsdGVyX2luZm8tPmFsdGVyX2luZm8tPmNyZWF0ZV9saXN0KTsKKwkJY2ZfaXQucmV3 aW5kKCk7CiAJCWNvbnN0IENyZWF0ZV9maWVsZCogbmV3X2ZpZWxkOwogCiAJCXV0X2FkKCEoKmZw KS0+bnVsbF9wdHIgPT0gISEoKCpmcCktPmZsYWdzICYgTk9UX05VTExfRkxBRykpOwpAQCAtMjEx Niw4ICsyMTA0LDggQEAgaW5ub2Jhc2VfYnVpbGRfY29sX21hcCgKIAl1bGludCoJY29sX21hcCA9 IHN0YXRpY19jYXN0PHVsaW50Kj4oCiAJCW1lbV9oZWFwX2FsbG9jKGhlYXAsIG9sZF90YWJsZS0+ bl9jb2xzICogc2l6ZW9mICpjb2xfbWFwKSk7CiAKLQlMaXN0X2l0ZXJhdG9yX2Zhc3Q8Q3JlYXRl X2ZpZWxkPiBjZl9pdDsKLQljZl9pdC5pbml0KGhhX2FsdGVyX2luZm8tPmFsdGVyX2luZm8tPmNy ZWF0ZV9saXN0KTsKKwlMaXN0X2l0ZXJhdG9yX2Zhc3Q8Q3JlYXRlX2ZpZWxkPiBjZl9pdCgKKwkJ aGFfYWx0ZXJfaW5mby0+YWx0ZXJfaW5mby0+Y3JlYXRlX2xpc3QpOwogCXVpbnQgaSA9IDA7CiAK IAkvKiBBbnkgZHJvcHBlZCBjb2x1bW5zIHdpbGwgbWFwIHRvIFVMSU5UX1VOREVGSU5FRC4gKi8K QEAgLTI1ODgsNyArMjU3Niw3IEBAIGNvbF9mYWlsOgogCQkJCQlnb3RvIGVycm9yX2hhbmRsaW5n Oyk7CiAJCQlyd19sb2NrX3hfbG9jaygmYWRkX2luZGV4W251bV9jcmVhdGVkXS0+bG9jayk7CiAJ CQlib29sIG9rID0gcm93X2xvZ19hbGxvY2F0ZShhZGRfaW5kZXhbbnVtX2NyZWF0ZWRdLAotCQkJ CQkJICAgTlVMTCwgdHJ1ZSk7CisJCQkJCQkgICBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMKTsKIAkJ CXJ3X2xvY2tfeF91bmxvY2soJmFkZF9pbmRleFtudW1fY3JlYXRlZF0tPmxvY2spOwogCiAJCQlp ZiAoIW9rKSB7CkBAIC0yNjEyLDcgKzI2MDAsOCBAQCBjb2xfZmFpbDoKIAkJYm9vbCBvayA9IHJv d19sb2dfYWxsb2NhdGUoCiAJCQljbHVzdF9pbmRleCwgaW5kZXhlZF90YWJsZSwKIAkJCSEoaGFf YWx0ZXJfaW5mby0+aGFuZGxlcl9mbGFncwotCQkJICAmIEFsdGVyX2lucGxhY2VfaW5mbzo6QURE X1BLX0lOREVYKSk7CisJCQkgICYgQWx0ZXJfaW5wbGFjZV9pbmZvOjpBRERfUEtfSU5ERVgpLAor CQkJYWRkX2NvbHMsIGNvbF9tYXApOwogCQlyd19sb2NrX3hfdW5sb2NrKCZjbHVzdF9pbmRleC0+ bG9jayk7CiAKIAkJaWYgKCFvaykgewpAQCAtMjkwNyw3ICsyODk2LDggQEAgZXJyX2V4aXRfbm9f aGVhcDoKIAlhbHJlYWR5IGNvbnRhaW5zLiAqLwogCWlmIChoYV9hbHRlcl9pbmZvLT5oYW5kbGVy X2ZsYWdzCiAJICAgICYgQWx0ZXJfaW5wbGFjZV9pbmZvOjpBTFRFUl9DT0xVTU5fTkFNRSkgewot CQlMaXN0X2l0ZXJhdG9yX2Zhc3Q8Q3JlYXRlX2ZpZWxkPiBjZl9pdDsKKwkJTGlzdF9pdGVyYXRv cl9mYXN0PENyZWF0ZV9maWVsZD4gY2ZfaXQoCisJCQloYV9hbHRlcl9pbmZvLT5hbHRlcl9pbmZv LT5jcmVhdGVfbGlzdCk7CiAKIAkJZm9yIChGaWVsZCoqIGZwID0gdGFibGUtPmZpZWxkOyAqZnA7 IGZwKyspIHsKIAkJCWlmICghKCgqZnApLT5mbGFncyAmIEZJRUxEX0lTX1JFTkFNRUQpKSB7CkBA IC0yOTE2LDcgKzI5MDYsNyBAQCBlcnJfZXhpdF9ub19oZWFwOgogCiAJCQljb25zdCBjaGFyKiBu YW1lID0gMDsKIAotCQkJY2ZfaXQuaW5pdChoYV9hbHRlcl9pbmZvLT5hbHRlcl9pbmZvLT5jcmVh dGVfbGlzdCk7CisJCQljZl9pdC5yZXdpbmQoKTsKIAkJCXdoaWxlIChDcmVhdGVfZmllbGQqIGNm ID0gY2ZfaXQrKykgewogCQkJCWlmIChjZi0+ZmllbGQgPT0gKmZwKSB7CiAJCQkJCW5hbWUgPSBj Zi0+ZmllbGRfbmFtZTsKQEAgLTMwMDMsNyArMjk5Myw3IEBAIGNoZWNrX2lmX29rX3RvX3JlbmFt ZToKIAogCQlMaXN0X2l0ZXJhdG9yPEFsdGVyX2Ryb3A+IGRyb3BfaXQoCiAJCQloYV9hbHRlcl9p bmZvLT5hbHRlcl9pbmZvLT5kcm9wX2xpc3QpOwotCQlkcm9wX2l0LnJld2luZCgpOworCiAJCXdo aWxlIChBbHRlcl9kcm9wKiBkcm9wID0gZHJvcF9pdCsrKSB7CiAJCQlpZiAoZHJvcC0+dHlwZSAh PSBBbHRlcl9kcm9wOjpGT1JFSUdOX0tFWSkgewogCQkJCWNvbnRpbnVlOwpAQCAtMzQxNCw4ICsz NDA0LDcgQEAgb29tOgogCSAgICAmJiBjdHgtPmluZGV4ZWRfdGFibGUgIT0gcHJlYnVpbHQtPnRh YmxlKSB7CiAJCURFQlVHX1NZTkNfQygicm93X2xvZ190YWJsZV9hcHBseTFfYmVmb3JlIik7CiAJ CWVycm9yID0gcm93X2xvZ190YWJsZV9hcHBseSgKLQkJCWN0eC0+dGhyLCBwcmVidWlsdC0+dGFi bGUsIHRhYmxlLAotCQkJY3R4LT5hZGRfY29scywgY3R4LT5jb2xfbWFwKTsKKwkJCWN0eC0+dGhy LCBwcmVidWlsdC0+dGFibGUsIHRhYmxlKTsKIAl9CiAKIAkvKiBBZnRlciBhbiBlcnJvciwgcmVt b3ZlIGFsbCB0aG9zZSBpbmRleCBkZWZpbml0aW9ucwpAQCAtMzg2OSw3ICszODU4LDggQEAgaW5u b2Jhc2VfcmVuYW1lX2NvbHVtbnMoCiAJcm93X3ByZWJ1aWx0X3QqCQlwcmVidWlsdCwKIAl0cnhf dCoJCQl0cngpCiB7Ci0JTGlzdF9pdGVyYXRvcl9mYXN0PENyZWF0ZV9maWVsZD4gY2ZfaXQ7CisJ TGlzdF9pdGVyYXRvcl9mYXN0PENyZWF0ZV9maWVsZD4gY2ZfaXQoCisJCWhhX2FsdGVyX2luZm8t PmFsdGVyX2luZm8tPmNyZWF0ZV9saXN0KTsKIAl1aW50IGkgPSAwOwogCiAJZm9yIChGaWVsZCoq IGZwID0gdGFibGUtPmZpZWxkOyAqZnA7IGZwKyssIGkrKykgewpAQCAtMzg3Nyw3ICszODY3LDcg QEAgaW5ub2Jhc2VfcmVuYW1lX2NvbHVtbnMoCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWNmX2l0 LmluaXQoaGFfYWx0ZXJfaW5mby0+YWx0ZXJfaW5mby0+Y3JlYXRlX2xpc3QpOworCQljZl9pdC5y ZXdpbmQoKTsKIAkJd2hpbGUgKENyZWF0ZV9maWVsZCogY2YgPSBjZl9pdCsrKSB7CiAJCQlpZiAo Y2YtPmZpZWxkID09ICpmcCkgewogCQkJCWlmIChpbm5vYmFzZV9yZW5hbWVfY29sdW1uKApAQCAt NDAwMCw4ICszOTkwLDcgQEAgaGFfaW5ub2Jhc2U6OmNvbW1pdF9pbnBsYWNlX2FsdGVyX3RhYmxl KAogCQlpZiAoY3R4LT5vbmxpbmUpIHsKIAkJCURFQlVHX1NZTkNfQygicm93X2xvZ190YWJsZV9h cHBseTJfYmVmb3JlIik7CiAJCQllcnJvciA9IHJvd19sb2dfdGFibGVfYXBwbHkoCi0JCQkJY3R4 LT50aHIsIHByZWJ1aWx0LT50YWJsZSwgdGFibGUsCi0JCQkJY3R4LT5hZGRfY29scywgY3R4LT5j b2xfbWFwKTsKKwkJCQljdHgtPnRociwgcHJlYnVpbHQtPnRhYmxlLCB0YWJsZSk7CiAKIAkJCXN3 aXRjaCAoZXJyb3IpIHsKIAkJCQlLRVkqCWR1cF9rZXk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBsb2cuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3JvdzBsb2cuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNTE0 MzIzMi1uZWQ5ejJyeHg5MzFzOTF0CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cw bG9nLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDUyMTM5MjEtdzF1cG02 cXd3dWQxM3JzYwpAQCAtNDUsOCArNDUsMTMgQEAgcm93X2xvZ19hbGxvY2F0ZSgKIAlkaWN0X2lu ZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KIAlkaWN0X3RhYmxlX3QqCXRhYmxl LAkvKiE8IGluL291dDogbmV3IHRhYmxlIGJlaW5nIHJlYnVpbHQsCiAJCQkJb3IgTlVMTCB3aGVu IGNyZWF0aW5nIGEgc2Vjb25kYXJ5IGluZGV4ICovCi0JYm9vbAkJc2FtZV9waykvKiE8IGluOiB3 aGV0aGVyIHRoZSBkZWZpbml0aW9uIG9mIHRoZQorCWJvb2wJCXNhbWVfcGssLyohPCBpbjogd2hl dGhlciB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKIAkJCQlQUklNQVJZIEtFWSBoYXMgcmVtYWluZWQg dGhlIHNhbWUgKi8KKwljb25zdCBkdHVwbGVfdCoJYWRkX2NvbHMsCisJCQkJLyohPCBpbjogZGVm YXVsdCB2YWx1ZXMgb2YKKwkJCQlhZGRlZCBjb2x1bW5zLCBvciBOVUxMICovCisJY29uc3QgdWxp bnQqCWNvbF9tYXApLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCisJCQkJbnVtYmVycyB0 byBuZXcgb25lcywgb3IgTlVMTCBpZiAhdGFibGUgKi8KIAlfX2F0dHJpYnV0ZV9fKChub25udWxs KDEpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBGcmVlIHRoZSByb3cgbG9nIGZvciBhbiBp bmRleCBvbiB3aGljaCBvbmxpbmUgY3JlYXRpb24gd2FzIGFib3J0ZWQuICovCkBAIC0xNzYsMTQg KzE4MSw5IEBAIHJvd19sb2dfdGFibGVfYXBwbHkoCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46 IHF1ZXJ5IGdyYXBoICovCiAJZGljdF90YWJsZV90KglvbGRfdGFibGUsCiAJCQkJLyohPCBpbjog b2xkIHRhYmxlICovCi0Jc3RydWN0IFRBQkxFKgl0YWJsZSwJLyohPCBpbi9vdXQ6IE15U1FMIHRh YmxlCisJc3RydWN0IFRBQkxFKgl0YWJsZSkJLyohPCBpbi9vdXQ6IE15U1FMIHRhYmxlCiAJCQkJ KGZvciByZXBvcnRpbmcgZHVwbGljYXRlcykgKi8KLQljb25zdCBkdHVwbGVfdCoJYWRkX2NvbHMs Ci0JCQkJLyohPCBpbjogZGVmYXVsdCB2YWx1ZXMgb2YKLQkJCQlhZGRlZCBjb2x1bW5zLCBvciBO VUxMICovCi0JY29uc3QgdWxpbnQqCWNvbF9tYXApLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29s dW1uCi0JCQkJbnVtYmVycyB0byBuZXcgb25lcywgb3IgTlVMTCAqLwotCV9fYXR0cmlidXRlX18o KG5vbm51bGwoMSwyLDMsNSksIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCV9fYXR0cmlidXRlX18o KG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0IHRoZSBsYXRlc3QgdHJh bnNhY3Rpb24gSUQgdGhhdCBoYXMgaW52b2tlZCByb3dfbG9nX29ubGluZV9vcCgpCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDYwNTE0MzIzMi1uZWQ5ejJyeHg5MzFzOTF0CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBsb2cuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDUyMTM5MjEt dzF1cG02cXd3dWQxM3JzYwpAQCAtOTUsNiArOTUsMTAgQEAgc3RydWN0IHJvd19sb2dfdCB7CiAJ CQkJaW5kZXggdGhhdCBpcyBiZWluZyBjcmVhdGVkIG9ubGluZSAqLwogCWJvb2wJCXNhbWVfcGs7 LyohPCB3aGV0aGVyIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBQUklNQVJZIEtFWQogCQkJCWhhcyBy ZW1haW5lZCB0aGUgc2FtZSAqLworCWNvbnN0IGR0dXBsZV90KglhZGRfY29sczsKKwkJCQkvKiE8 IGRlZmF1bHQgdmFsdWVzIG9mIGFkZGVkIGNvbHVtbnMsIG9yIE5VTEwgKi8KKwljb25zdCB1bGlu dCoJY29sX21hcDsvKiE8IG1hcHBpbmcgb2Ygb2xkIGNvbHVtbiBudW1iZXJzIHRvCisJCQkJbmV3 IG9uZXMsIG9yIE5VTEwgaWYgIXRhYmxlICovCiAJZGJlcnJfdAkJZXJyb3I7CS8qITwgZXJyb3Ig dGhhdCBvY2N1cnJlZCBkdXJpbmcgb25saW5lCiAJCQkJdGFibGUgcmVidWlsZCAqLwogCXRyeF9p ZF90CW1heF90cng7LyohPCBiaWdnZXN0IG9ic2VydmVkIHRyeF9pZCBpbgpAQCAtNzk2LDggKzgw MCw4IEBAIHJvd19sb2dfdGFibGVfZ2V0X3BrKAogCiAJLyogaW5kZXgtPm9ubGluZV9sb2ctPmVy cm9yIGlzIHByb3RlY3RlZCBieSB0aGUgYWJvdmUgbXV0ZXguICovCiAJaWYgKGluZGV4LT5vbmxp bmVfbG9nLT5lcnJvciA9PSBEQl9TVUNDRVNTKSB7Ci0JCWRpY3RfdGFibGVfdCoJbmV3X3RhYmxl Ci0JCQk9IGluZGV4LT5vbmxpbmVfbG9nLT50YWJsZTsKKwkJcm93X2xvZ190Kglsb2cJCT0gaW5k ZXgtPm9ubGluZV9sb2c7CisJCWRpY3RfdGFibGVfdCoJbmV3X3RhYmxlCT0gbG9nLT50YWJsZTsK IAkJZGljdF9pbmRleF90KgluZXdfaW5kZXgKIAkJCT0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5k ZXgobmV3X3RhYmxlKTsKIAkJY29uc3QgdWxpbnQJbmV3X25fdW5pcQpAQCAtODM1LDE4ICs4Mzks MzUgQEAgcm93X2xvZ190YWJsZV9nZXRfcGsoCiAJCQlkZmllbGRfdCoJCWRmaWVsZDsKIAkJCWNv bnN0IGRpY3RfY29sX3QqCW5ld19jb2w7CiAJCQljb25zdCBkaWN0X2NvbF90Kgljb2w7CisJCQl1 bGludAkJCWNvbF9ubzsKIAkJCXVsaW50CQkJaTsKIAkJCXVsaW50CQkJbGVuOwogCQkJY29uc3Qg Ynl0ZSoJCWZpZWxkOwogCi0JCQlkZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwg bmV3X2kpOwogCQkJaWZpZWxkID0gZGljdF9pbmRleF9nZXRfbnRoX2ZpZWxkKG5ld19pbmRleCwg bmV3X2kpOworCQkJZGZpZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQodHVwbGUsIG5ld19pKTsK IAkJCW5ld19jb2wgPSBkaWN0X2ZpZWxkX2dldF9jb2woaWZpZWxkKTsKKwkJCWNvbF9ubyA9IG5l d19jb2wtPmluZDsKKworCQkJZm9yICh1bGludCBvbGRfaSA9IDA7IG9sZF9pIDwgaW5kZXgtPnRh YmxlLT5uX2NvbHM7CisJCQkgICAgIG9sZF9pKyspIHsKKwkJCQlpZiAoY29sX25vID09IGxvZy0+ Y29sX21hcFtvbGRfaV0pIHsKKwkJCQkJY29sX25vID0gb2xkX2k7CisJCQkJCWdvdG8gY29weV9j b2w7CisJCQkJfQorCQkJfQorCisJCQkvKiBObyBtYXRjaGluZyBjb2x1bW4gd2FzIGZvdW5kIGlu IHRoZSBvbGQKKwkJCXRhYmxlLCBzbyB0aGlzIG11c3QgYmUgYW4gYWRkZWQgY29sdW1uLgorCQkJ Q29weSB0aGUgZGVmYXVsdCB2YWx1ZS4gKi8KKwkJCXV0X2FkKGxvZy0+YWRkX2NvbHMpOworCQkJ ZGZpZWxkX2NvcHkoZGZpZWxkLAorCQkJCSAgICBkdHVwbGVfZ2V0X250aF9maWVsZCgKKwkJCQkJ ICAgIGxvZy0+YWRkX2NvbHMsIGNvbF9ubykpOworCQkJY29udGludWU7CiAKLQkJCS8qIFRPRE86 IHN1cHBvcnQgQUREIENPTFVNTiwgRFJPUCBDT0xVTU4sCi0JCQlyZW9yZGVyaW5nIGNvbHVtbnMg Ki8KLQkJCWNvbCA9IGRpY3RfdGFibGVfZ2V0X250aF9jb2woCi0JCQkJaW5kZXgtPnRhYmxlLCBu ZXdfY29sLT5pbmQpOworY29weV9jb2w6CisJCQljb2wgPSBkaWN0X3RhYmxlX2dldF9udGhfY29s KGluZGV4LT50YWJsZSwgY29sX25vKTsKIAogCQkJaSA9IGRpY3RfY29sX2dldF9jbHVzdF9wb3Mo Y29sLCBpbmRleCk7CiAKQEAgLTEwMDIsMzcgKzEwMjMsMzIgQEAgcm93X2xvZ190YWJsZV9pc19y b2xsYmFjaygKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCiBDb252ZXJ0cyBhIGxvZyByZWNvcmQgdG8gYSB0YWJsZSByb3cuCiBAcmV0 dXJuIGNvbnZlcnRlZCByb3csIG9yIE5VTEwgaWYgdGhlIGNvbnZlcnNpb24gZmFpbHMgKi8KLXN0 YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsMiwzLDUsNiw3LDgpLCB3YXJuX3VudXNlZF9y ZXN1bHQpKQorc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3Vs dCkpCiBjb25zdCBkdHVwbGVfdCoKIHJvd19sb2dfdGFibGVfYXBwbHlfY29udmVydF9tcmVjKAog Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJY29uc3QgbXJlY190KgkJbXJlYywJ CS8qITwgaW46IG1lcmdlIHJlY29yZCAqLwogCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgsCQkv KiE8IGluOiBpbmRleCBvZiBtcmVjICovCiAJY29uc3QgdWxpbnQqCQlvZmZzZXRzLAkvKiE8IGlu OiBvZmZzZXRzIG9mIG1yZWMgKi8KLQljb25zdCBkdHVwbGVfdCoJCWFkZF9jb2xzLAkvKiE8IGlu OiBkZWZhdWx0IHZhbHVlcyBvZgotCQkJCQkJYWRkZWQgY29sdW1ucywgb3IgTlVMTCAqLwotCWNv bnN0IHVsaW50KgkJY29sX21hcCwJLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCi0JCQkJ CQludW1iZXJzIHRvIG5ldyBvbmVzLCBvciBOVUxMICovCisJY29uc3Qgcm93X2xvZ190Kglsb2cs CQkvKiE8IGluOiByZWJ1aWxkIGNvbnRleHQgKi8KIAltZW1faGVhcF90KgkJaGVhcCwJCS8qITwg aW4vb3V0OiBtZW1vcnkgaGVhcCAqLwotCWRpY3RfdGFibGVfdCoJCW5ld190YWJsZSwJLyohPCBp bi9vdXQ6IHRhYmxlCi0JCQkJCQliZWluZyByZWJ1aWx0ICovCiAJZGJlcnJfdCoJCWVycm9yKQkJ LyohPCBvdXQ6IERCX1NVQ0NFU1Mgb3IKIAkJCQkJCXJlYXNvbiBvZiBmYWlsdXJlICovCiB7CiAJ ZHR1cGxlX3QqCXJvdzsKIAogCS8qIFRoaXMgaXMgYmFzZWQgb24gcm93X2J1aWxkKCkuICovCi0J aWYgKGFkZF9jb2xzKSB7Ci0JCXJvdyA9IGR0dXBsZV9jb3B5KGFkZF9jb2xzLCBoZWFwKTsKKwlp ZiAobG9nLT5hZGRfY29scykgeworCQlyb3cgPSBkdHVwbGVfY29weShsb2ctPmFkZF9jb2xzLCBo ZWFwKTsKIAkJLyogZGljdF90YWJsZV9jb3B5X3R5cGVzKCkgd291bGQgc2V0IHRoZSBmaWVsZHMg dG8gTlVMTCAqLwotCQlmb3IgKHVsaW50IGkgPSAwOyBpIDwgZGljdF90YWJsZV9nZXRfbl9jb2xz KG5ld190YWJsZSk7IGkrKykgeworCQlmb3IgKHVsaW50IGkgPSAwOyBpIDwgZGljdF90YWJsZV9n ZXRfbl9jb2xzKGxvZy0+dGFibGUpOyBpKyspIHsKIAkJCWRpY3RfY29sX2NvcHlfdHlwZSgKLQkJ CQlkaWN0X3RhYmxlX2dldF9udGhfY29sKG5ld190YWJsZSwgaSksCisJCQkJZGljdF90YWJsZV9n ZXRfbnRoX2NvbChsb2ctPnRhYmxlLCBpKSwKIAkJCQlkZmllbGRfZ2V0X3R5cGUoZHR1cGxlX2dl dF9udGhfZmllbGQocm93LCBpKSkpOwogCQl9CiAJfSBlbHNlIHsKLQkJcm93ID0gZHR1cGxlX2Ny ZWF0ZShoZWFwLCBkaWN0X3RhYmxlX2dldF9uX2NvbHMobmV3X3RhYmxlKSk7Ci0JCWRpY3RfdGFi bGVfY29weV90eXBlcyhyb3csIG5ld190YWJsZSk7CisJCXJvdyA9IGR0dXBsZV9jcmVhdGUoaGVh cCwgZGljdF90YWJsZV9nZXRfbl9jb2xzKGxvZy0+dGFibGUpKTsKKwkJZGljdF90YWJsZV9jb3B5 X3R5cGVzKHJvdywgbG9nLT50YWJsZSk7CiAJfQogCiAJZm9yICh1bGludCBpID0gMDsgaSA8IHJl Y19vZmZzX25fZmllbGRzKG9mZnNldHMpOyBpKyspIHsKQEAgLTEwNTIsNyArMTA2OCw3IEBAIHJv d19sb2dfdGFibGVfYXBwbHlfY29udmVydF9tcmVjKAogCQljb25zdCBkaWN0X2NvbF90Kgljb2wK IAkJCT0gZGljdF9maWVsZF9nZXRfY29sKGluZF9maWVsZCk7CiAJCXVsaW50CQkJY29sX25vCi0J CQk9IGNvbF9tYXBbZGljdF9jb2xfZ2V0X25vKGNvbCldOworCQkJPSBsb2ctPmNvbF9tYXBbZGlj dF9jb2xfZ2V0X25vKGNvbCldOwogCiAJCWlmIChjb2xfbm8gPT0gVUxJTlRfVU5ERUZJTkVEKSB7 CiAJCQkvKiBkcm9wcGVkIGNvbHVtbiAqLwpAQCAtMTA3OCw3ICsxMDk0LDcgQEAgcm93X2xvZ190 YWJsZV9hcHBseV9jb252ZXJ0X21yZWMoCiAKIAkJLyogU2VlIGlmIGFueSBjb2x1bW5zIHdlcmUg Y2hhbmdlZCB0byBOVUxMIG9yIE5PVCBOVUxMLiAqLwogCQljb25zdCBkaWN0X2NvbF90KgluZXdf Y29sCi0JCQk9IGRpY3RfdGFibGVfZ2V0X250aF9jb2wobmV3X3RhYmxlLCBjb2xfbm8pOworCQkJ PSBkaWN0X3RhYmxlX2dldF9udGhfY29sKGxvZy0+dGFibGUsIGNvbF9ubyk7CiAJCXV0X2FkKG5l d19jb2wtPm10eXBlID09IGNvbC0+bXR5cGUpOwogCiAJCS8qIEFzc2VydCB0aGF0IHBydHlwZSBt YXRjaGVzIGV4Y2VwdCBmb3IgbnVsbGFiaWxpdHkuICovCkBAIC0xMTMxLDYgKzExNDcsNyBAQCBy b3dfbG9nX3RhYmxlX2FwcGx5X2luc2VydF9sb3coCiAJZGljdF9pbmRleF90KglpbmRleAk9IGRp Y3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KG5ld190YWJsZSk7CiAKIAl1dF9hZChkdHVwbGVfdmFs aWRhdGUocm93KSk7CisJdXRfYWQobmV3X3RhYmxlID09IGR1cC0+aW5kZXgtPm9ubGluZV9sb2ct PnRhYmxlKTsKIAogI2lmZGVmIFJPV19MT0dfQVBQTFlfUFJJTlQKIAlpZiAocm93X2xvZ19hcHBs eV9wcmludCkgewpAQCAtMTE3OCw3ICsxMTk1LDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV9pbnNl cnRfbG93KAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFJlcGxheXMgYW4gaW5zZXJ0IG9wZXJhdGlvbiBvbiBhIHRhYmxlIHRoYXQg d2FzIHJlYnVpbHQuCiBAcmV0dXJuIERCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLwotc3RhdGlj IF9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwyLDMsNCw2LDcsOCw5KSwgd2Fybl91bnVzZWRfcmVz dWx0KSkKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQp KQogZGJlcnJfdAogcm93X2xvZ190YWJsZV9hcHBseV9pbnNlcnQoCiAvKj09PT09PT09PT09PT09 PT09PT09PT09Ki8KQEAgLTExODcsMjYgKzEyMDQsMjAgQEAgcm93X2xvZ190YWJsZV9hcHBseV9p bnNlcnQoCiAJY29uc3QgdWxpbnQqCQlvZmZzZXRzLAkvKiE8IGluOiBvZmZzZXRzIG9mIG1yZWMg Ki8KIAltZW1faGVhcF90KgkJb2Zmc2V0c19oZWFwLAkvKiE8IGluL291dDogbWVtb3J5IGhlYXAK IAkJCQkJCXRoYXQgY2FuIGJlIGVtcHRpZWQgKi8KLQljb25zdCBkdHVwbGVfdCoJCWFkZF9jb2xz LAkvKiE8IGluOiBkZWZhdWx0IHZhbHVlcyBvZgotCQkJCQkJYWRkZWQgY29sdW1ucywgb3IgTlVM TCAqLwotCWNvbnN0IHVsaW50KgkJY29sX21hcCwJLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29s dW1uCi0JCQkJCQludW1iZXJzIHRvIG5ldyBvbmVzLCBvciBOVUxMICovCiAJbWVtX2hlYXBfdCoJ CWhlYXAsCQkvKiE8IGluL291dDogbWVtb3J5IGhlYXAgKi8KLQlkaWN0X3RhYmxlX3QqCQluZXdf dGFibGUsCS8qITwgaW4vb3V0OiB0YWJsZQotCQkJCQkJYmVpbmcgcmVidWlsdCAqLwogCXJvd19t ZXJnZV9kdXBfdCoJZHVwKQkJLyohPCBpbi9vdXQ6IGZvciByZXBvcnRpbmcKIAkJCQkJCWR1cGxp Y2F0ZSBrZXkgZXJyb3JzICovCiB7CisJY29uc3Qgcm93X2xvZ190KmxvZwk9IGR1cC0+aW5kZXgt Pm9ubGluZV9sb2c7CiAJZGJlcnJfdAkJZXJyb3I7CiAJY29uc3QgZHR1cGxlX3QqCXJvdwk9IHJv d19sb2dfdGFibGVfYXBwbHlfY29udmVydF9tcmVjKAotCQltcmVjLCBkdXAtPmluZGV4LCBvZmZz ZXRzLCBhZGRfY29scywgY29sX21hcCwgaGVhcCwgbmV3X3RhYmxlLAotCQkmZXJyb3IpOworCQlt cmVjLCBkdXAtPmluZGV4LCBvZmZzZXRzLCBsb2csIGhlYXAsICZlcnJvcik7CiAKIAl1dF9hZCgh cm93ID09IChlcnJvciAhPSBEQl9TVUNDRVNTKSk7CiAKIAlpZiAocm93KSB7CiAJCWVycm9yID0g cm93X2xvZ190YWJsZV9hcHBseV9pbnNlcnRfbG93KAotCQkJdGhyLCByb3csIG9mZnNldHNfaGVh cCwgaGVhcCwgbmV3X3RhYmxlLCBkdXApOworCQkJdGhyLCByb3csIG9mZnNldHNfaGVhcCwgaGVh cCwgbG9nLT50YWJsZSwgZHVwKTsKIAl9CiAKIAlpZiAoZXJyb3IgIT0gREJfU1VDQ0VTUykgewpA QCAtMTQwMyw3ICsxNDE0LDcgQEAgYWxsX2RvbmU6CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVwbGF5cyBhbiB1cGRhdGUgb3Bl cmF0aW9uIG9uIGEgdGFibGUgdGhhdCB3YXMgcmVidWlsdC4KIEByZXR1cm4gREJfU1VDQ0VTUyBv ciBlcnJvciBjb2RlICovCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgxLDQsNSw2LDgs OSwxMCwxMSwxMiksIHdhcm5fdW51c2VkX3Jlc3VsdCkpCitzdGF0aWMgX19hdHRyaWJ1dGVfXygo bm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSkKIGRiZXJyX3QKIHJvd19sb2dfdGFibGVfYXBw bHlfdXBkYXRlKAogLyo9PT09PT09PT09PT09PT09PT09PT09PSovCkBAIC0xNDE4LDEzICsxNDI5 LDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV91cGRhdGUoCiAJY29uc3QgdWxpbnQqCQlvZmZzZXRz LAkvKiE8IGluOiBvZmZzZXRzIG9mIG1yZWMgKi8KIAltZW1faGVhcF90KgkJb2Zmc2V0c19oZWFw LAkvKiE8IGluL291dDogbWVtb3J5IGhlYXAKIAkJCQkJCXRoYXQgY2FuIGJlIGVtcHRpZWQgKi8K LQljb25zdCBkdHVwbGVfdCoJCWFkZF9jb2xzLAkvKiE8IGluOiBkZWZhdWx0IHZhbHVlcyBvZgot CQkJCQkJYWRkZWQgY29sdW1ucywgb3IgTlVMTCAqLwotCWNvbnN0IHVsaW50KgkJY29sX21hcCwJ LyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCi0JCQkJCQludW1iZXJzIHRvIG5ldyBvbmVz LCBvciBOVUxMICovCiAJbWVtX2hlYXBfdCoJCWhlYXAsCQkvKiE8IGluL291dDogbWVtb3J5IGhl YXAgKi8KLQlkaWN0X3RhYmxlX3QqCQluZXdfdGFibGUsCS8qITwgaW4vb3V0OiB0YWJsZQotCQkJ CQkJYmVpbmcgcmVidWlsdCAqLwogCXJvd19tZXJnZV9kdXBfdCoJZHVwLAkJLyohPCBpbi9vdXQ6 IGZvciByZXBvcnRpbmcKIAkJCQkJCWR1cGxpY2F0ZSBrZXkgZXJyb3JzICovCiAJY29uc3QgZHR1 cGxlX3QqCQlvbGRfcGspCQkvKiE8IGluOiBQUklNQVJZIEtFWSBhbmQKQEAgLTE0MzIsOCArMTQz Nyw5IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfdXBkYXRlKAogCQkJCQkJb2YgdGhlIG9sZCB2YWx1 ZSwKIAkJCQkJCW9yIFBSSU1BUlkgS0VZIGlmIHNhbWVfcGsgKi8KIHsKKwljb25zdCByb3dfbG9n X3QqbG9nCT0gZHVwLT5pbmRleC0+b25saW5lX2xvZzsKIAljb25zdCBkdHVwbGVfdCoJcm93Owot CWRpY3RfaW5kZXhfdCoJaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleChuZXdfdGFi bGUpOworCWRpY3RfaW5kZXhfdCoJaW5kZXgJPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleChs b2ctPnRhYmxlKTsKIAltdHJfdAkJbXRyOwogCWJ0cl9wY3VyX3QJcGN1cjsKIAlkYmVycl90CQll cnJvcjsKQEAgLTE0NDUsOCArMTQ1MSw3IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfdXBkYXRlKAog CSAgICAgICsgKGR1cC0+aW5kZXgtPm9ubGluZV9sb2ctPnNhbWVfcGsgPyAwIDogMikpOwogCiAJ cm93ID0gcm93X2xvZ190YWJsZV9hcHBseV9jb252ZXJ0X21yZWMoCi0JCW1yZWMsIGR1cC0+aW5k ZXgsIG9mZnNldHMsIGFkZF9jb2xzLCBjb2xfbWFwLAotCQloZWFwLCBuZXdfdGFibGUsICZlcnJv cik7CisJCW1yZWMsIGR1cC0+aW5kZXgsIG9mZnNldHMsIGxvZywgaGVhcCwgJmVycm9yKTsKIAog CXV0X2FkKCFyb3cgPT0gKGVycm9yICE9IERCX1NVQ0NFU1MpKTsKIApAQCAtMTQ3Nyw3ICsxNDgy LDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV91cGRhdGUoCiBpbnNlcnQ6CiAJCS8qIFRoZSByb3cg d2FzIG5vdCBmb3VuZC4gSW5zZXJ0IGl0LiAqLwogCQllcnJvciA9IHJvd19sb2dfdGFibGVfYXBw bHlfaW5zZXJ0X2xvdygKLQkJCXRociwgcm93LCBvZmZzZXRzX2hlYXAsIGhlYXAsIG5ld190YWJs ZSwgZHVwKTsKKwkJCXRociwgcm93LCBvZmZzZXRzX2hlYXAsIGhlYXAsIGxvZy0+dGFibGUsIGR1 cCk7CiAKIAkJaWYgKGVycm9yICE9IERCX1NVQ0NFU1MpIHsKIGVycl9leGl0OgpAQCAtMTU3Niw4 ICsxNTgxLDkgQEAgZGVsZXRlX2luc2VydDoKIAkJdGhlIHJlY29yZC4gKi8KIAkJb2xkX3JvdyA9 IHJvd19idWlsZChST1dfQ09QWV9EQVRBLCBpbmRleCwKIAkJCQkgICAgYnRyX3BjdXJfZ2V0X3Jl YygmcGN1ciksCi0JCQkJICAgIGN1cl9vZmZzZXRzLCBuZXdfdGFibGUsCi0JCQkJICAgIGFkZF9j b2xzLCBjb2xfbWFwLCAmb2xkX2V4dCwgaGVhcCk7CisJCQkJICAgIGN1cl9vZmZzZXRzLCBsb2ct PnRhYmxlLAorCQkJCSAgICBsb2ctPmFkZF9jb2xzLCBsb2ctPmNvbF9tYXAsCisJCQkJICAgICZv bGRfZXh0LCBoZWFwKTsKIAkJdXRfYWQob2xkX3Jvdyk7CiAJfSBlbHNlIHsKIAkJb2xkX3JvdyA9 IE5VTEw7CkBAIC0xNjY3LDcgKzE2NzMsNyBAQCBmdW5jX2V4aXQ6CiBBcHBsaWVzIGFuIG9wZXJh dGlvbiB0byBhIHRhYmxlIHRoYXQgd2FzIHJlYnVpbHQuCiBAcmV0dXJuIE5VTEwgb24gZmFpbHVy ZSAobXJlYyBjb3JydXB0aW9uKSBvciB3aGVuIG91dCBvZiBkYXRhOwogcG9pbnRlciB0byBuZXh0 IHJlY29yZCBvbiBzdWNjZXNzICovCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgxLDQs Niw3LDgsOSwxMCwxMSwxMiwxMyksIHdhcm5fdW51c2VkX3Jlc3VsdCkpCitzdGF0aWMgX19hdHRy aWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSkKIGNvbnN0IG1yZWNfdCoKIHJv d19sb2dfdGFibGVfYXBwbHlfb3AoCiAvKj09PT09PT09PT09PT09PT09PT0qLwpAQCAtMTY3Niwx MiArMTY4Miw2IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfb3AoCiAJCQkJCQlEQl9UUlhfSUQgaW4g b2xkIGluZGV4ICovCiAJdWxpbnQJCQluZXdfdHJ4X2lkX2NvbCwJLyohPCBpbjogcG9zaXRpb24g b2YKIAkJCQkJCURCX1RSWF9JRCBpbiBuZXcgaW5kZXggKi8KLQlkaWN0X3RhYmxlX3QqCQluZXdf dGFibGUsCS8qITwgaW4vb3V0OiB0YWJsZQotCQkJCQkJYmVpbmcgcmVidWlsdCAqLwotCWNvbnN0 IGR0dXBsZV90KgkJYWRkX2NvbHMsCS8qITwgaW46IGRlZmF1bHQgdmFsdWVzIG9mCi0JCQkJCQlh ZGRlZCBjb2x1bW5zLCBvciBOVUxMICovCi0JY29uc3QgdWxpbnQqCQljb2xfbWFwLAkvKiE8IGlu OiBtYXBwaW5nIG9mIG9sZCBjb2x1bW4KLQkJCQkJCW51bWJlcnMgdG8gbmV3IG9uZXMsIG9yIE5V TEwgKi8KIAlyb3dfbWVyZ2VfZHVwX3QqCWR1cCwJCS8qITwgaW4vb3V0OiBmb3IgcmVwb3J0aW5n CiAJCQkJCQlkdXBsaWNhdGUga2V5IGVycm9ycyAqLwogCWRiZXJyX3QqCQllcnJvciwJCS8qITwg b3V0OiBEQl9TVUNDRVNTCkBAIC0xNjk0LDEzICsxNjk0LDE0IEBAIHJvd19sb2dfdGFibGVfYXBw bHlfb3AoCiAJdWxpbnQqCQkJb2Zmc2V0cykJLyohPCBpbi9vdXQ6IHdvcmsgYXJlYQogCQkJCQkJ Zm9yIHBhcnNpbmcgbXJlYyAqLwogewotCWRpY3RfaW5kZXhfdCoJbmV3X2luZGV4ID0gZGljdF90 YWJsZV9nZXRfZmlyc3RfaW5kZXgobmV3X3RhYmxlKTsKKwljb25zdCByb3dfbG9nX3QqbG9nCT0g ZHVwLT5pbmRleC0+b25saW5lX2xvZzsKKwlkaWN0X2luZGV4X3QqCW5ld19pbmRleCA9IGRpY3Rf dGFibGVfZ2V0X2ZpcnN0X2luZGV4KGxvZy0+dGFibGUpOwogCXVsaW50CQlleHRyYV9zaXplOwog CWNvbnN0IG1yZWNfdCoJbmV4dF9tcmVjOwogCWR0dXBsZV90KglvbGRfcGs7CiAKIAl1dF9hZChk aWN0X2luZGV4X2lzX2NsdXN0KGR1cC0+aW5kZXgpKTsKLQl1dF9hZChkdXAtPmluZGV4LT50YWJs ZSAhPSBuZXdfdGFibGUpOworCXV0X2FkKGR1cC0+aW5kZXgtPnRhYmxlICE9IGxvZy0+dGFibGUp OwogCiAJKmVycm9yID0gREJfU1VDQ0VTUzsKIApAQCAtMTc0Nyw4ICsxNzQ4LDcgQEAgcm93X2xv Z190YWJsZV9hcHBseV9vcCgKIAkJCQkgICAgdHJ4X3JlYWRfdHJ4X2lkKGRiX3RyeF9pZCkpKSB7 CiAJCQkJKmVycm9yID0gcm93X2xvZ190YWJsZV9hcHBseV9pbnNlcnQoCiAJCQkJCXRociwgbXJl Yywgb2Zmc2V0cywgb2Zmc2V0c19oZWFwLAotCQkJCQlhZGRfY29scywgY29sX21hcCwKLQkJCQkJ aGVhcCwgbmV3X3RhYmxlLCBkdXApOworCQkJCQloZWFwLCBkdXApOwogCQkJfQogCQl9CiAJCWJy ZWFrOwpAQCAtMTc3Miw3ICsxNzcyLDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV9vcCgKIAkJKmVy cm9yID0gcm93X2xvZ190YWJsZV9hcHBseV9kZWxldGUoCiAJCQl0aHIsIHRyeF9pZF9jb2wsIG5l d190cnhfaWRfY29sLAogCQkJbXJlYywgb2Zmc2V0cywgb2Zmc2V0c19oZWFwLCBoZWFwLAotCQkJ bmV3X3RhYmxlKTsKKwkJCWxvZy0+dGFibGUpOwogCQlicmVhazsKIAljYXNlIFJPV19UX1VQREFU RToKIAkJLyogTG9naWNhbGx5LCB0aGUgbG9nIGVudHJ5IGNvbnNpc3RzIG9mIHRoZQpAQCAtMTkx OCw4ICsxOTE4LDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV9vcCgKIAkJCQkqZXJyb3IgPSByb3df bG9nX3RhYmxlX2FwcGx5X3VwZGF0ZSgKIAkJCQkJdGhyLCB0cnhfaWRfY29sLCBuZXdfdHJ4X2lk X2NvbCwKIAkJCQkJbXJlYywgb2Zmc2V0cywgb2Zmc2V0c19oZWFwLAotCQkJCQlhZGRfY29scywg Y29sX21hcCwKLQkJCQkJaGVhcCwgbmV3X3RhYmxlLCBkdXAsIG9sZF9wayk7CisJCQkJCWhlYXAs IGR1cCwgb2xkX3BrKTsKIAkJCX0KIAkJfQogCkBAIC0xOTM0LDE2ICsxOTMzLDExIEBAIHJvd19s b2dfdGFibGVfYXBwbHlfb3AoCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogQXBwbGllcyBvcGVyYXRpb25zIHRvIGEgdGFibGUgd2Fz IHJlYnVpbHQuCiBAcmV0dXJuIERCX1NVQ0NFU1MsIG9yIGVycm9yIGNvZGUgb24gZmFpbHVyZSAq Lwotc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwzLDQpLCB3YXJuX3VudXNlZF9yZXN1 bHQpKQorc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkp CiBkYmVycl90CiByb3dfbG9nX3RhYmxlX2FwcGx5X29wcygKIC8qPT09PT09PT09PT09PT09PT09 PT0qLwogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSBncmFwaCAqLwotCWNvbnN0IGR0 dXBsZV90KglhZGRfY29scywKLQkJCQkvKiE8IGluOiBkZWZhdWx0IHZhbHVlcyBvZgotCQkJCWFk ZGVkIGNvbHVtbnMsIG9yIE5VTEwgKi8KLQljb25zdCB1bGludCoJY29sX21hcCwvKiE8IGluOiBt YXBwaW5nIG9mIG9sZCBjb2x1bW4KLQkJCQludW1iZXJzIHRvIG5ldyBvbmVzLCBvciBOVUxMICov CiAJcm93X21lcmdlX2R1cF90KmR1cCkJLyohPCBpbi9vdXQ6IGZvciByZXBvcnRpbmcgZHVwbGlj YXRlIGtleQogCQkJCWVycm9ycyAqLwogewpAQCAtMjExOCw3ICsyMTEyLDYgQEAgYWxsX2RvbmU6 CiAJCSAgICAgICAoJmluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJ1ZilbMV0gLSBtcmVjX2VuZCk7 CiAJCW1yZWMgPSByb3dfbG9nX3RhYmxlX2FwcGx5X29wKAogCQkJdGhyLCB0cnhfaWRfY29sLCBu ZXdfdHJ4X2lkX2NvbCwKLQkJCWluZGV4LT5vbmxpbmVfbG9nLT50YWJsZSwgYWRkX2NvbHMsIGNv bF9tYXAsCiAJCQlkdXAsICZlcnJvciwgb2Zmc2V0c19oZWFwLCBoZWFwLAogCQkJaW5kZXgtPm9u bGluZV9sb2ctPmhlYWQuYnVmLAogCQkJKCZpbmRleC0+b25saW5lX2xvZy0+aGVhZC5idWYpWzFd LCBvZmZzZXRzKTsKQEAgLTIyMTcsNyArMjIxMCw2IEBAIGFsbF9kb25lOgogCiAJCW5leHRfbXJl YyA9IHJvd19sb2dfdGFibGVfYXBwbHlfb3AoCiAJCQl0aHIsIHRyeF9pZF9jb2wsIG5ld190cnhf aWRfY29sLAotCQkJaW5kZXgtPm9ubGluZV9sb2ctPnRhYmxlLCBhZGRfY29scywgY29sX21hcCwK IAkJCWR1cCwgJmVycm9yLCBvZmZzZXRzX2hlYXAsIGhlYXAsCiAJCQltcmVjLCBtcmVjX2VuZCwg b2Zmc2V0cyk7CiAKQEAgLTIyODQsMTMgKzIyNzYsOCBAQCByb3dfbG9nX3RhYmxlX2FwcGx5KAog CXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSBncmFwaCAqLwogCWRpY3RfdGFibGVfdCoJ b2xkX3RhYmxlLAogCQkJCS8qITwgaW46IG9sZCB0YWJsZSAqLwotCXN0cnVjdCBUQUJMRSoJdGFi bGUsCS8qITwgaW4vb3V0OiBNeVNRTCB0YWJsZQorCXN0cnVjdCBUQUJMRSoJdGFibGUpCS8qITwg aW4vb3V0OiBNeVNRTCB0YWJsZQogCQkJCShmb3IgcmVwb3J0aW5nIGR1cGxpY2F0ZXMpICovCi0J Y29uc3QgZHR1cGxlX3QqCWFkZF9jb2xzLAotCQkJCS8qITwgaW46IGRlZmF1bHQgdmFsdWVzIG9m Ci0JCQkJYWRkZWQgY29sdW1ucywgb3IgTlVMTCAqLwotCWNvbnN0IHVsaW50Kgljb2xfbWFwKS8q ITwgaW46IG1hcHBpbmcgb2Ygb2xkIGNvbHVtbgotCQkJCW51bWJlcnMgdG8gbmV3IG9uZXMsIG9y IE5VTEwgKi8KIHsKIAlkYmVycl90CQllcnJvcjsKIAlkaWN0X2luZGV4X3QqCWNsdXN0X2luZGV4 OwpAQCAtMjMxNyw3ICsyMzA0LDcgQEAgcm93X2xvZ190YWJsZV9hcHBseSgKIAkJdXRfYWQoMCk7 CiAJCWVycm9yID0gREJfRVJST1I7CiAJfSBlbHNlIHsKLQkJZXJyb3IgPSByb3dfbG9nX3RhYmxl X2FwcGx5X29wcyh0aHIsIGFkZF9jb2xzLCBjb2xfbWFwLCAmZHVwKTsKKwkJZXJyb3IgPSByb3df bG9nX3RhYmxlX2FwcGx5X29wcyh0aHIsICZkdXApOwogCX0KIAogCXJ3X2xvY2tfeF91bmxvY2so ZGljdF9pbmRleF9nZXRfbG9jayhjbHVzdF9pbmRleCkpOwpAQCAtMjMzNSw4ICsyMzIyLDEzIEBA IHJvd19sb2dfYWxsb2NhdGUoCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGlu ZGV4ICovCiAJZGljdF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbi9vdXQ6IG5ldyB0YWJsZSBiZWlu ZyByZWJ1aWx0LAogCQkJCW9yIE5VTEwgd2hlbiBjcmVhdGluZyBhIHNlY29uZGFyeSBpbmRleCAq LwotCWJvb2wJCXNhbWVfcGspLyohPCBpbjogd2hldGhlciB0aGUgZGVmaW5pdGlvbiBvZiB0aGUK Kwlib29sCQlzYW1lX3BrLC8qITwgaW46IHdoZXRoZXIgdGhlIGRlZmluaXRpb24gb2YgdGhlCiAJ CQkJUFJJTUFSWSBLRVkgaGFzIHJlbWFpbmVkIHRoZSBzYW1lICovCisJY29uc3QgZHR1cGxlX3Qq CWFkZF9jb2xzLAorCQkJCS8qITwgaW46IGRlZmF1bHQgdmFsdWVzIG9mCisJCQkJYWRkZWQgY29s dW1ucywgb3IgTlVMTCAqLworCWNvbnN0IHVsaW50Kgljb2xfbWFwKS8qITwgaW46IG1hcHBpbmcg b2Ygb2xkIGNvbHVtbgorCQkJCW51bWJlcnMgdG8gbmV3IG9uZXMsIG9yIE5VTEwgaWYgIXRhYmxl ICovCiB7CiAJYnl0ZSoJCWJ1ZjsKIAlyb3dfbG9nX3QqCWxvZzsKQEAgLTIzNDYsNiArMjMzOCw4 IEBAIHJvd19sb2dfYWxsb2NhdGUoCiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkg PT0gISF0YWJsZSk7CiAJdXRfYWQoIXRhYmxlIHx8IGluZGV4LT50YWJsZSAhPSB0YWJsZSk7CiAJ dXRfYWQoc2FtZV9wayB8fCB0YWJsZSk7CisJdXRfYWQoIXRhYmxlIHx8IGNvbF9tYXApOworCXV0 X2FkKCFhZGRfY29scyB8fCBjb2xfbWFwKTsKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9h ZChyd19sb2NrX293bihkaWN0X2luZGV4X2dldF9sb2NrKGluZGV4KSwgUldfTE9DS19FWCkpOwog I2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwpAQCAtMjM2Myw2ICsyMzU3LDggQEAgcm93X2xv Z19hbGxvY2F0ZSgKIAlsb2ctPnRyeF9yYiA9IE5VTEw7CiAJbG9nLT50YWJsZSA9IHRhYmxlOwog CWxvZy0+c2FtZV9wayA9IHNhbWVfcGs7CisJbG9nLT5hZGRfY29scyA9IGFkZF9jb2xzOworCWxv Zy0+Y29sX21hcCA9IGNvbF9tYXA7CiAJbG9nLT5lcnJvciA9IERCX1NVQ0NFU1M7CiAJbG9nLT5t YXhfdHJ4ID0gMDsKIAlsb2ctPmhlYWQuYmxvY2sgPSBidWY7CgpObyBidW5kbGUgKHJlYXNvbjog dXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==