From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 01/11] drm/i915/gtt: Rename i915_hw_ppgtt base member Date: Tue, 05 Jun 2018 17:38:09 +0300 Message-ID: <87k1rdpacu.fsf@gaia.fi.intel.com> References: <20180605071949.14159-1-chris@chris-wilson.co.uk> <20180605071949.14159-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id A86606E443 for ; Tue, 5 Jun 2018 14:38:33 +0000 (UTC) In-Reply-To: <20180605071949.14159-2-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gSW4gdGhl IG5lYXIgZnV0dXJlLCBJIHdhbnQgdG8gc3ViY2xhc3MgZ2VuNl9od19wcGd0dCBhcyBpdCBjb250 YWlucyBhCj4gZmV3IHNwZWNpYWxpc2VkIG1lbWJlcnMgYW5kIEkgd2lzaCB0byBhZGQgbW9yZS4g VG8gYXZvaWQgdGhlIHVnbGluZXNzIG9mCj4gdXNpbmcgcHBndHQtPmJhc2UuYmFzZSwgcmVuYW1l IHRoZSBpOTE1X2h3X3BwZ3R0IGJhc2UgbWVtYmVyCj4gKGk5MTVfYWRkcmVzc19zcGFjZSkgYXMg dm0sIHdoaWNoIGlzIG91ciBjb21tb24gc2hvcnRoYW5kIGZvciBhbgo+IGk5MTVfYWRkcmVzc19z cGFjZSBsb2NhbC4KPgoKU3Ryb2xsZWQgaXQgdGhyb3VnaC4gQ291cGxlIG9mIGZvcm1hdHRpbmcg Zml4ZXMgYW5kCmdldHRpbmcgZGV2X3ByaXYgdGhyb3VnaCB2bS4gRGlkbid0IG5vdGljZSBhbnl0 aGluZwpvdXQgb2Ygb3JkaW5hcnkuCgpGb3IgbWUgaXQgcmVhZHMgYmV0dGVyIG5vdywgYW5kIHdl IHNob3VsZCBoYXZlIGRvbmUgdGhpcwpwcmlvciB0byBkb2luZyAzMmJpdCBwcGd0dHMgOlAKClJl dmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4K Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K PiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6 IE1hdHRoZXcgQXVsZCA8bWF0dGhldy53aWxsaWFtLmF1bGRAZ21haWwuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYyAgICAgICAgfCAgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgICAgICAgICAgIHwgICA0ICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICAgNCArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDIgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDMwICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8ICAxMCAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAgMTYg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgICAgIHwgMzI5 ICsrKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCAgICAgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVu ZGVyX3N0YXRlLmMgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3No cmlua2VyLmMgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYyAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYyAgICAgICAgIHwgICA5ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJh Y2UuaCAgICAgICAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zn cHUuYyAgICAgICAgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 bWEuYyAgICAgICAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jICAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuYyAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYyAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jICAgICAgICAgICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyAgIHwgIDUwICstLQo+ICAuLi4vZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgfCAgIDYgKy0KPiAgLi4uL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyAgIHwgIDM0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyB8IDExMCArKystLS0KPiAgLi4uL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyB8ICAgNSArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYyAgICAgfCAgMzEgKy0KPiAgLi4uL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgIHwgICA0ICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyAgICB8ICAgMiArLQo+ICAuLi4vZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgICAgfCAgIDIgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMgICAgIHwgIDY2ICsrLS0KPiAgMzIg ZmlsZXMgY2hhbmdlZCwgMzg4IGluc2VydGlvbnMoKyksIDM4OCBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jCj4gaW5kZXggN2M5ZWM0ZjRmMzZjLi4z ODBlZWIyYTBlODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2FwZXJ0 dXJlX2dtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYwo+ IEBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBpbnQgYWxsb2NfZ20oc3RydWN0IGludGVsX3ZncHUg KnZncHUsIGJvb2wgaGlnaF9nbSkKPiAgCX0KPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlyZXQgPSBpOTE1X2dlbV9ndHRfaW5zZXJ0KCZkZXZfcHJp di0+Z2d0dC5iYXNlLCBub2RlLAo+ICsJcmV0ID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZGV2X3By aXYtPmdndHQudm0sIG5vZGUsCj4gIAkJCQkgIHNpemUsIEk5MTVfR1RUX1BBR0VfU0laRSwKPiAg CQkJCSAgSTkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiAgCQkJCSAgc3RhcnQsIGVuZCwgZmxhZ3Mp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiBpbmRleCAwNWQxNWEwOTUzMTAuLjJmZjBkNDAyODFh OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiBAQCAtMzYxLDkgKzM2MSw5IEBAIGludCBp bnRlbF9ndnRfbG9hZF9maXJtd2FyZShzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpOwo+ICAjZGVmaW5l IGd2dF9hcGVydHVyZV9zeihndnQpCSAgKGd2dC0+ZGV2X3ByaXYtPmdndHQubWFwcGFibGVfZW5k KQo+ICAjZGVmaW5lIGd2dF9hcGVydHVyZV9wYV9iYXNlKGd2dCkgKGd2dC0+ZGV2X3ByaXYtPmdn dHQuZ21hZHIuc3RhcnQpCj4gIAo+IC0jZGVmaW5lIGd2dF9nZ3R0X2dtX3N6KGd2dCkJICAoZ3Z0 LT5kZXZfcHJpdi0+Z2d0dC5iYXNlLnRvdGFsKQo+ICsjZGVmaW5lIGd2dF9nZ3R0X2dtX3N6KGd2 dCkJICAoZ3Z0LT5kZXZfcHJpdi0+Z2d0dC52bS50b3RhbCkKPiAgI2RlZmluZSBndnRfZ2d0dF9z eihndnQpIFwKPiAtCSgoZ3Z0LT5kZXZfcHJpdi0+Z2d0dC5iYXNlLnRvdGFsID4+IFBBR0VfU0hJ RlQpIDw8IDMpCj4gKwkoKGd2dC0+ZGV2X3ByaXYtPmdndHQudm0udG90YWwgPj4gUEFHRV9TSElG VCkgPDwgMykKPiAgI2RlZmluZSBndnRfaGlkZGVuX3N6KGd2dCkJICAoZ3Z0X2dndHRfZ21fc3oo Z3Z0KSAtIGd2dF9hcGVydHVyZV9zeihndnQpKQo+ICAKPiAgI2RlZmluZSBndnRfYXBlcnR1cmVf Z21hZHJfYmFzZShndnQpICgwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5k ZXggMTVlODZkMzRhODFjLi42OThhZjQ1ZTIyOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+IEBAIC0zMjgsNyArMzI4LDcgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0 cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgCQl9IGVsc2Ugewo+ICAJCQlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBpOTE1X3ZtX3RvX3BwZ3R0KHZtYS0+dm0pOwo+ICAK PiAtCQkJaWYgKHBwZ3R0LT5iYXNlLmZpbGUgIT0gc3RhdHMtPmZpbGVfcHJpdikKPiArCQkJaWYg KHBwZ3R0LT52bS5maWxlICE9IHN0YXRzLT5maWxlX3ByaXYpCj4gIAkJCQljb250aW51ZTsKPiAg CQl9Cj4gIAo+IEBAIC01MDgsNyArNTA4LDcgQEAgc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3Rf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkJICAgZHB5X2NvdW50LCBk cHlfc2l6ZSk7Cj4gIAo+ICAJc2VxX3ByaW50ZihtLCAiJWxsdSBbJXBhXSBndHQgdG90YWxcbiIs Cj4gLQkJICAgZ2d0dC0+YmFzZS50b3RhbCwgJmdndHQtPm1hcHBhYmxlX2VuZCk7Cj4gKwkJICAg Z2d0dC0+dm0udG90YWwsICZnZ3R0LT5tYXBwYWJsZV9lbmQpOwo+ICAJc2VxX3ByaW50ZihtLCAi U3VwcG9ydGVkIHBhZ2Ugc2l6ZXM6ICVzXG4iLAo+ICAJCSAgIHN0cmluZ2lmeV9wYWdlX3NpemVz KElOVEVMX0lORk8oZGV2X3ByaXYpLT5wYWdlX3NpemVzLAo+ICAJCQkJCWJ1Ziwgc2l6ZW9mKGJ1 ZikpKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAwNmVjYWM0YzMyNTMuLmE0YmIz MGMzMmE1MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zMjEzLDcgKzMyMTMs NyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfaHdfcHBndHQgKgo+ICBpOTE1 X3ZtX3RvX3BwZ3R0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICB7Cj4gLQlyZXR1 cm4gY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gKwlyZXR1 cm4gY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgdm0pOwo+ICB9Cj4gIAo+ ICAvKiBpOTE1X2dlbV9mZW5jZV9yZWcuYyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGlu ZGV4IGNiNjgwZGRhZmEwYy4uNmNlMjlkMWMyMGJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gQEAgLTY1LDcgKzY1LDcgQEAgaW5zZXJ0X21hcHBhYmxlX25vZGUoc3RydWN0IGk5MTVf Z2d0dCAqZ2d0dCwKPiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpu b2RlLCB1MzIgc2l6ZSkKPiAgewo+ICAJbWVtc2V0KG5vZGUsIDAsIHNpemVvZigqbm9kZSkpOwo+ IC0JcmV0dXJuIGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZSgmZ2d0dC0+YmFzZS5tbSwgbm9k ZSwKPiArCXJldHVybiBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2UoJmdndHQtPnZtLm1tLCBu b2RlLAo+ICAJCQkJCSAgIHNpemUsIDAsIEk5MTVfQ09MT1JfVU5FVklDVEFCTEUsCj4gIAkJCQkJ ICAgMCwgZ2d0dC0+bWFwcGFibGVfZW5kLAo+ICAJCQkJCSAgIERSTV9NTV9JTlNFUlRfTE9XKTsK PiBAQCAtMjQ5LDE3ICsyNDksMTcgQEAgaTkxNV9nZW1fZ2V0X2FwZXJ0dXJlX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK PiAgCXU2NCBwaW5uZWQ7Cj4gIAo+IC0JcGlubmVkID0gZ2d0dC0+YmFzZS5yZXNlcnZlZDsKPiAr CXBpbm5lZCA9IGdndHQtPnZtLnJlc2VydmVkOwo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZnZ3R0LT5iYXNlLmFjdGl2ZV9s aXN0LCB2bV9saW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZnZ3R0LT52bS5hY3Rp dmVfbGlzdCwgdm1fbGluaykKPiAgCQlpZiAoaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpCj4gIAkJ CXBpbm5lZCArPSB2bWEtPm5vZGUuc2l6ZTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAm Z2d0dC0+YmFzZS5pbmFjdGl2ZV9saXN0LCB2bV9saW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZnZ3R0LT52bS5pbmFjdGl2ZV9saXN0LCB2bV9saW5rKQo+ICAJCWlmIChpOTE1X3Zt YV9pc19waW5uZWQodm1hKSkKPiAgCQkJcGlubmVkICs9IHZtYS0+bm9kZS5zaXplOwo+ICAJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JYXJncy0+YXBlcl9zaXplID0g Z2d0dC0+YmFzZS50b3RhbDsKPiArCWFyZ3MtPmFwZXJfc2l6ZSA9IGdndHQtPnZtLnRvdGFsOwo+ ICAJYXJncy0+YXBlcl9hdmFpbGFibGVfc2l6ZSA9IGFyZ3MtPmFwZXJfc2l6ZSAtIHBpbm5lZDsK PiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMTIyMyw5ICsxMjIzLDkgQEAgaTkxNV9nZW1fZ3R0X3By ZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJcGFnZV9sZW5ndGggPSBy ZW1haW4gPCBwYWdlX2xlbmd0aCA/IHJlbWFpbiA6IHBhZ2VfbGVuZ3RoOwo+ICAJCWlmIChub2Rl LmFsbG9jYXRlZCkgewo+ICAJCQl3bWIoKTsKPiAtCQkJZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSgm Z2d0dC0+YmFzZSwKPiAtCQkJCQkgICAgICAgaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVz cyhvYmosIG9mZnNldCA+PiBQQUdFX1NISUZUKSwKPiAtCQkJCQkgICAgICAgbm9kZS5zdGFydCwg STkxNV9DQUNIRV9OT05FLCAwKTsKPiArCQkJZ2d0dC0+dm0uaW5zZXJ0X3BhZ2UoJmdndHQtPnZt LAo+ICsJCQkJCSAgICAgaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhvYmosIG9mZnNl dCA+PiBQQUdFX1NISUZUKSwKPiArCQkJCQkgICAgIG5vZGUuc3RhcnQsIEk5MTVfQ0FDSEVfTk9O RSwgMCk7Cj4gIAkJCXdtYigpOwo+ICAJCX0gZWxzZSB7Cj4gIAkJCXBhZ2VfYmFzZSArPSBvZmZz ZXQgJiBQQUdFX01BU0s7Cj4gQEAgLTEyNDYsOCArMTI0Niw3IEBAIGk5MTVfZ2VtX2d0dF9wcmVh ZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICBvdXRfdW5waW46Cj4gIAlpZiAo bm9kZS5hbGxvY2F0ZWQpIHsKPiAgCQl3bWIoKTsKPiAtCQlnZ3R0LT5iYXNlLmNsZWFyX3Jhbmdl KCZnZ3R0LT5iYXNlLAo+IC0JCQkJICAgICAgIG5vZGUuc3RhcnQsIG5vZGUuc2l6ZSk7Cj4gKwkJ Z2d0dC0+dm0uY2xlYXJfcmFuZ2UoJmdndHQtPnZtLCBub2RlLnN0YXJ0LCBub2RlLnNpemUpOwo+ ICAJCXJlbW92ZV9tYXBwYWJsZV9ub2RlKCZub2RlKTsKPiAgCX0gZWxzZSB7Cj4gIAkJaTkxNV92 bWFfdW5waW4odm1hKTsKPiBAQCAtMTQyNiw5ICsxNDI1LDkgQEAgaTkxNV9nZW1fZ3R0X3B3cml0 ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJcGFnZV9sZW5ndGgg PSByZW1haW4gPCBwYWdlX2xlbmd0aCA/IHJlbWFpbiA6IHBhZ2VfbGVuZ3RoOwo+ICAJCWlmIChu b2RlLmFsbG9jYXRlZCkgewo+ICAJCQl3bWIoKTsgLyogZmx1c2ggdGhlIHdyaXRlIGJlZm9yZSB3 ZSBtb2RpZnkgdGhlIEdHVFQgKi8KPiAtCQkJZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSgmZ2d0dC0+ YmFzZSwKPiAtCQkJCQkgICAgICAgaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhvYmos IG9mZnNldCA+PiBQQUdFX1NISUZUKSwKPiAtCQkJCQkgICAgICAgbm9kZS5zdGFydCwgSTkxNV9D QUNIRV9OT05FLCAwKTsKPiArCQkJZ2d0dC0+dm0uaW5zZXJ0X3BhZ2UoJmdndHQtPnZtLAo+ICsJ CQkJCSAgICAgaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhvYmosIG9mZnNldCA+PiBQ QUdFX1NISUZUKSwKPiArCQkJCQkgICAgIG5vZGUuc3RhcnQsIEk5MTVfQ0FDSEVfTk9ORSwgMCk7 Cj4gIAkJCXdtYigpOyAvKiBmbHVzaCBtb2RpZmljYXRpb25zIHRvIHRoZSBHR1RUIChpbnNlcnRf cGFnZSkgKi8KPiAgCQl9IGVsc2Ugewo+ICAJCQlwYWdlX2Jhc2UgKz0gb2Zmc2V0ICYgUEFHRV9N QVNLOwo+IEBAIC0xNDU1LDggKzE0NTQsNyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgb3V0X3VucGluOgo+ICAJaWYgKG5vZGUu YWxsb2NhdGVkKSB7Cj4gIAkJd21iKCk7Cj4gLQkJZ2d0dC0+YmFzZS5jbGVhcl9yYW5nZSgmZ2d0 dC0+YmFzZSwKPiAtCQkJCSAgICAgICBub2RlLnN0YXJ0LCBub2RlLnNpemUpOwo+ICsJCWdndHQt PnZtLmNsZWFyX3JhbmdlKCZnZ3R0LT52bSwgbm9kZS5zdGFydCwgbm9kZS5zaXplKTsKPiAgCQly ZW1vdmVfbWFwcGFibGVfbm9kZSgmbm9kZSk7Cj4gIAl9IGVsc2Ugewo+ICAJCWk5MTVfdm1hX3Vu cGluKHZtYSk7Cj4gQEAgLTQzNzQsNyArNDM3Miw3IEBAIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bp bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCQkgdTY0IGZsYWdzKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFz ZS5kZXYpOwo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSAmZGV2X3ByaXYtPmdn dHQuYmFzZTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmRldl9wcml2LT5n Z3R0LnZtOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAlpbnQgcmV0Owo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggMzhjNmU5ZTRlOTFiLi5i MmM3YWMxYjA3NGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j Cj4gQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gIAkgKi8KPiAgCWx1dF9jbG9zZShjdHgpOwo+ICAJaWYg KGN0eC0+cHBndHQpCj4gLQkJaTkxNV9wcGd0dF9jbG9zZSgmY3R4LT5wcGd0dC0+YmFzZSk7Cj4g KwkJaTkxNV9wcGd0dF9jbG9zZSgmY3R4LT5wcGd0dC0+dm0pOwo+ICAKPiAgCWN0eC0+ZmlsZV9w cml2ID0gRVJSX1BUUigtRUJBREYpOwo+ICAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiBA QCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJZGVzYyA9IEdFTjhfQ1RYX1ZBTElE IHwgR0VOOF9DVFhfUFJJVklMRUdFOwo+ICAKPiAgCWFkZHJlc3NfbW9kZSA9IElOVEVMX0xFR0FD WV8zMkJfQ09OVEVYVDsKPiAtCWlmIChwcGd0dCAmJiBpOTE1X3ZtX2lzXzQ4Yml0KCZwcGd0dC0+ YmFzZSkpCj4gKwlpZiAocHBndHQgJiYgaTkxNV92bV9pc180OGJpdCgmcHBndHQtPnZtKSkKPiAg CQlhZGRyZXNzX21vZGUgPSBJTlRFTF9MRUdBQ1lfNjRCX0NPTlRFWFQ7Cj4gIAlkZXNjIHw9IGFk ZHJlc3NfbW9kZSA8PCBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJRlQ7Cj4gIAo+IEBAIC04 MTAsMTEgKzgxMCwxMSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCWJyZWFrOwo+ICAJY2FzZSBJOTE1 X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6Cj4gIAkJaWYgKGN0eC0+cHBndHQpCj4gLQkJCWFyZ3Mt PnZhbHVlID0gY3R4LT5wcGd0dC0+YmFzZS50b3RhbDsKPiArCQkJYXJncy0+dmFsdWUgPSBjdHgt PnBwZ3R0LT52bS50b3RhbDsKPiAgCQllbHNlIGlmICh0b19pOTE1KGRldiktPm1tLmFsaWFzaW5n X3BwZ3R0KQo+IC0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBn dHQtPmJhc2UudG90YWw7Cj4gKwkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5tbS5hbGlh c2luZ19wcGd0dC0+dm0udG90YWw7Cj4gIAkJZWxzZQo+IC0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5 MTUoZGV2KS0+Z2d0dC5iYXNlLnRvdGFsOwo+ICsJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2 KS0+Z2d0dC52bS50b3RhbDsKPiAgCQlicmVhazsKPiAgCWNhc2UgSTkxNV9DT05URVhUX1BBUkFN X05PX0VSUk9SX0NBUFRVUkU6Cj4gIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25v X2Vycm9yX2NhcHR1cmUoY3R4KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jCj4gaW5kZXggZjYyN2E4YzQ3YzU4Li5lZWZkNDQ5NTAyZTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTcwMyw3ICs3MDMs NyBAQCBzdGF0aWMgaW50IGViX3NlbGVjdF9jb250ZXh0KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIg KmViKQo+ICAJCXJldHVybiAtRU5PRU5UOwo+ICAKPiAgCWViLT5jdHggPSBjdHg7Cj4gLQllYi0+ dm0gPSBjdHgtPnBwZ3R0ID8gJmN0eC0+cHBndHQtPmJhc2UgOiAmZWItPmk5MTUtPmdndHQuYmFz ZTsKPiArCWViLT52bSA9IGN0eC0+cHBndHQgPyAmY3R4LT5wcGd0dC0+dm0gOiAmZWItPmk5MTUt PmdndHQudm07Cj4gIAo+ICAJZWItPmNvbnRleHRfZmxhZ3MgPSAwOwo+ICAJaWYgKGN0eC0+Zmxh Z3MgJiBDT05URVhUX05PX1pFUk9NQVApCj4gQEAgLTk0Myw5ICs5NDMsOSBAQCBzdGF0aWMgdm9p ZCByZWxvY19jYWNoZV9yZXNldChzdHJ1Y3QgcmVsb2NfY2FjaGUgKmNhY2hlKQo+ICAJCWlmIChj YWNoZS0+bm9kZS5hbGxvY2F0ZWQpIHsKPiAgCQkJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9IGNh Y2hlX3RvX2dndHQoY2FjaGUpOwo+ICAKPiAtCQkJZ2d0dC0+YmFzZS5jbGVhcl9yYW5nZSgmZ2d0 dC0+YmFzZSwKPiAtCQkJCQkgICAgICAgY2FjaGUtPm5vZGUuc3RhcnQsCj4gLQkJCQkJICAgICAg IGNhY2hlLT5ub2RlLnNpemUpOwo+ICsJCQlnZ3R0LT52bS5jbGVhcl9yYW5nZSgmZ2d0dC0+dm0s Cj4gKwkJCQkJICAgICBjYWNoZS0+bm9kZS5zdGFydCwKPiArCQkJCQkgICAgIGNhY2hlLT5ub2Rl LnNpemUpOwo+ICAJCQlkcm1fbW1fcmVtb3ZlX25vZGUoJmNhY2hlLT5ub2RlKTsKPiAgCQl9IGVs c2Ugewo+ICAJCQlpOTE1X3ZtYV91bnBpbigoc3RydWN0IGk5MTVfdm1hICopY2FjaGUtPm5vZGUu bW0pOwo+IEBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMgdm9pZCAqcmVsb2NfaW9tYXAoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQlpZiAoSVNfRVJSKHZtYSkpIHsKPiAg CQkJbWVtc2V0KCZjYWNoZS0+bm9kZSwgMCwgc2l6ZW9mKGNhY2hlLT5ub2RlKSk7Cj4gIAkJCWVy ciA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZQo+IC0JCQkJKCZnZ3R0LT5iYXNlLm1tLCAm Y2FjaGUtPm5vZGUsCj4gKwkJCQkoJmdndHQtPnZtLm1tLCAmY2FjaGUtPm5vZGUsCj4gIAkJCQkg UEFHRV9TSVpFLCAwLCBJOTE1X0NPTE9SX1VORVZJQ1RBQkxFLAo+ICAJCQkJIDAsIGdndHQtPm1h cHBhYmxlX2VuZCwKPiAgCQkJCSBEUk1fTU1fSU5TRVJUX0xPVyk7Cj4gQEAgLTEwMzcsOSArMTAz Nyw5IEBAIHN0YXRpYyB2b2lkICpyZWxvY19pb21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAJb2Zmc2V0ID0gY2FjaGUtPm5vZGUuc3RhcnQ7Cj4gIAlpZiAoY2FjaGUtPm5v ZGUuYWxsb2NhdGVkKSB7Cj4gIAkJd21iKCk7Cj4gLQkJZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSgm Z2d0dC0+YmFzZSwKPiAtCQkJCSAgICAgICBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9hZGRyZXNz KG9iaiwgcGFnZSksCj4gLQkJCQkgICAgICAgb2Zmc2V0LCBJOTE1X0NBQ0hFX05PTkUsIDApOwo+ ICsJCWdndHQtPnZtLmluc2VydF9wYWdlKCZnZ3R0LT52bSwKPiArCQkJCSAgICAgaTkxNV9nZW1f b2JqZWN0X2dldF9kbWFfYWRkcmVzcyhvYmosIHBhZ2UpLAo+ICsJCQkJICAgICBvZmZzZXQsIEk5 MTVfQ0FDSEVfTk9ORSwgMCk7Cj4gIAl9IGVsc2Ugewo+ICAJCW9mZnNldCArPSBwYWdlIDw8IFBB R0VfU0hJRlQ7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBk ZTkxODA1MTYzMDguLjEyYjEzODZlNDdlOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCj4gQEAgLTc4MCw3ICs3ODAsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2luaXRpYWxpemVf cG1sNChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgICovCj4gIHN0YXRpYyB2b2lk IG1hcmtfdGxic19kaXJ0eShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAtCXBw Z3R0LT5wZF9kaXJ0eV9yaW5ncyA9IElOVEVMX0lORk8ocHBndHQtPmJhc2UuaTkxNSktPnJpbmdf bWFzazsKPiArCXBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyA9IElOVEVMX0lORk8ocHBndHQtPnZtLmk5 MTUpLT5yaW5nX21hc2s7Cj4gIH0KPiAgCj4gIC8qIFJlbW92ZXMgZW50cmllcyBmcm9tIGEgc2lu Z2xlIHBhZ2UgdGFibGUsIHJlbGVhc2luZyBpdCBpZiBpdCdzIGVtcHR5Lgo+IEBAIC05NzMsNyAr OTczLDcgQEAgZ2VuOF9wcGd0dF9pbnNlcnRfcHRlX2VudHJpZXMoc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0LAo+ICAJZ2VuOF9wdGVfdCAqdmFkZHI7Cj4gIAlib29sIHJldDsKPiAgCj4gLQlH RU1fQlVHX09OKGlkeC0+cGRwZSA+PSBpOTE1X3BkcGVzX3Blcl9wZHAoJnBwZ3R0LT5iYXNlKSk7 Cj4gKwlHRU1fQlVHX09OKGlkeC0+cGRwZSA+PSBpOTE1X3BkcGVzX3Blcl9wZHAoJnBwZ3R0LT52 bSkpOwo+ICAJcGQgPSBwZHAtPnBhZ2VfZGlyZWN0b3J5W2lkeC0+cGRwZV07Cj4gIAl2YWRkciA9 IGttYXBfYXRvbWljX3B4KHBkLT5wYWdlX3RhYmxlW2lkeC0+cGRlXSk7Cj4gIAlkbyB7Cj4gQEAg LTEwMDQsNyArMTAwNCw3IEBAIGdlbjhfcHBndHRfaW5zZXJ0X3B0ZV9lbnRyaWVzKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCQkJCQlicmVhazsKPiAgCQkJCX0KPiAgCj4gLQkJCQlH RU1fQlVHX09OKGlkeC0+cGRwZSA+PSBpOTE1X3BkcGVzX3Blcl9wZHAoJnBwZ3R0LT5iYXNlKSk7 Cj4gKwkJCQlHRU1fQlVHX09OKGlkeC0+cGRwZSA+PSBpOTE1X3BkcGVzX3Blcl9wZHAoJnBwZ3R0 LT52bSkpOwo+ICAJCQkJcGQgPSBwZHAtPnBhZ2VfZGlyZWN0b3J5W2lkeC0+cGRwZV07Cj4gIAkJ CX0KPiAgCj4gQEAgLTEyMzMsNyArMTIzMyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3NjcmF0 Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gIAo+ICBzdGF0aWMgaW50IGdlbjhf cHBndHRfbm90aWZ5X3ZndChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIGJvb2wgY3JlYXRl KQo+ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZwcGd0dC0+YmFzZTsK PiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJnBwZ3R0LT52bTsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHZtLT5pOTE1Owo+ICAJZW51bSB2Z3RfZzJ2 X3R5cGUgbXNnOwo+ICAJaW50IGk7Cj4gQEAgLTEyOTQsMTMgKzEyOTQsMTMgQEAgc3RhdGljIHZv aWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ ICAJaW50IGk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEdFTjhfUE1MNEVTX1BFUl9QTUw0OyBp KyspIHsKPiAtCQlpZiAocHBndHQtPnBtbDQucGRwc1tpXSA9PSBwcGd0dC0+YmFzZS5zY3JhdGNo X3BkcCkKPiArCQlpZiAocHBndHQtPnBtbDQucGRwc1tpXSA9PSBwcGd0dC0+dm0uc2NyYXRjaF9w ZHApCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bCgmcHBn dHQtPmJhc2UsIHBwZ3R0LT5wbWw0LnBkcHNbaV0pOwo+ICsJCWdlbjhfcHBndHRfY2xlYW51cF8z bHZsKCZwcGd0dC0+dm0sIHBwZ3R0LT5wbWw0LnBkcHNbaV0pOwo+ICAJfQo+ICAKPiAtCWNsZWFu dXBfcHgoJnBwZ3R0LT5iYXNlLCAmcHBndHQtPnBtbDQpOwo+ICsJY2xlYW51cF9weCgmcHBndHQt PnZtLCAmcHBndHQtPnBtbDQpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2Ns ZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gQEAgLTEzMTQsNyArMTMxNCw3 IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSkKPiAgCWlmICh1c2VfNGx2bCh2bSkpCj4gIAkJZ2VuOF9wcGd0dF9jbGVhbnVwXzRs dmwocHBndHQpOwo+ICAJZWxzZQo+IC0JCWdlbjhfcHBndHRfY2xlYW51cF8zbHZsKCZwcGd0dC0+ YmFzZSwgJnBwZ3R0LT5wZHApOwo+ICsJCWdlbjhfcHBndHRfY2xlYW51cF8zbHZsKCZwcGd0dC0+ dm0sICZwcGd0dC0+cGRwKTsKPiAgCj4gIAlnZW44X2ZyZWVfc2NyYXRjaCh2bSk7Cj4gIH0KPiBA QCAtMTQ1MCw3ICsxNDUwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9kdW1wX3BkcChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsCj4gIAkJCSAgZ2VuOF9wdGVfdCBzY3JhdGNoX3B0ZSwKPiAgCQkJ ICBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIHsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtID0gJnBwZ3R0LT5iYXNlOwo+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSAm cHBndHQtPnZtOwo+ICAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkOwo+ICAJdTMyIHBk cGU7Cj4gIAo+IEBAIC0xNDYwLDcgKzE0NjAsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2R1bXBfcGRw KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCQl1NjQgcGRfc3RhcnQgPSBzdGFydDsK PiAgCQl1MzIgcGRlOwo+ICAKPiAtCQlpZiAocGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXSA9PSBw cGd0dC0+YmFzZS5zY3JhdGNoX3BkKQo+ICsJCWlmIChwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVd ID09IHBwZ3R0LT52bS5zY3JhdGNoX3BkKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJc2VxX3By aW50ZihtLCAiXHRQRFBFICMlZFxuIiwgcGRwZSk7Cj4gQEAgLTE0NjgsNyArMTQ2OCw3IEBAIHN0 YXRpYyB2b2lkIGdlbjhfZHVtcF9wZHAoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAJ CQl1MzIgcHRlOwo+ICAJCQlnZW44X3B0ZV90ICpwdF92YWRkcjsKPiAgCj4gLQkJCWlmIChwZC0+ cGFnZV90YWJsZVtwZGVdID09IHBwZ3R0LT5iYXNlLnNjcmF0Y2hfcHQpCj4gKwkJCWlmIChwZC0+ cGFnZV90YWJsZVtwZGVdID09IHBwZ3R0LT52bS5zY3JhdGNoX3B0KQo+ICAJCQkJY29udGludWU7 Cj4gIAo+ICAJCQlwdF92YWRkciA9IGttYXBfYXRvbWljX3B4KHB0KTsKPiBAQCAtMTUwMSwxMCAr MTUwMSwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X2R1bXBfcGRwKHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCwKPiAgCj4gIHN0YXRpYyB2b2lkIGdlbjhfZHVtcF9wcGd0dChzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+IC0Jc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0gPSAmcHBndHQtPmJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSA9ICZwcGd0dC0+dm07Cj4gIAljb25zdCBnZW44X3B0ZV90IHNjcmF0Y2hfcHRl ID0KPiAgCQlnZW44X3B0ZV9lbmNvZGUodm0tPnNjcmF0Y2hfcGFnZS5kYWRkciwgSTkxNV9DQUNI RV9MTEMpOwo+IC0JdTY0IHN0YXJ0ID0gMCwgbGVuZ3RoID0gcHBndHQtPmJhc2UudG90YWw7Cj4g Kwl1NjQgc3RhcnQgPSAwLCBsZW5ndGggPSBwcGd0dC0+dm0udG90YWw7Cj4gIAo+ICAJaWYgKHVz ZV80bHZsKHZtKSkgewo+ICAJCXU2NCBwbWw0ZTsKPiBAQCAtMTUxMiw3ICsxNTEyLDcgQEAgc3Rh dGljIHZvaWQgZ2VuOF9kdW1wX3BwZ3R0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgc3Ry dWN0IHNlcV9maWxlICptKQo+ICAJCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIg KnBkcDsKPiAgCj4gIAkJZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5n dGgsIHBtbDRlKSB7Cj4gLQkJCWlmIChwbWw0LT5wZHBzW3BtbDRlXSA9PSBwcGd0dC0+YmFzZS5z Y3JhdGNoX3BkcCkKPiArCQkJaWYgKHBtbDQtPnBkcHNbcG1sNGVdID09IHBwZ3R0LT52bS5zY3Jh dGNoX3BkcCkKPiAgCQkJCWNvbnRpbnVlOwo+ICAKPiAgCQkJc2VxX3ByaW50ZihtLCAiICAgIFBN TDRFICMlbGx1XG4iLCBwbWw0ZSk7Cj4gQEAgLTE1MjUsMTAgKzE1MjUsMTAgQEAgc3RhdGljIHZv aWQgZ2VuOF9kdW1wX3BwZ3R0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgc3RydWN0IHNl cV9maWxlICptKQo+ICAKPiAgc3RhdGljIGludCBnZW44X3ByZWFsbG9jYXRlX3RvcF9sZXZlbF9w ZHAoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSA9ICZwcGd0dC0+YmFzZTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtID0gJnBwZ3R0LT52bTsKPiAgCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50 ZXIgKnBkcCA9ICZwcGd0dC0+cGRwOwo+ICAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBk Owo+IC0JdTY0IHN0YXJ0ID0gMCwgbGVuZ3RoID0gcHBndHQtPmJhc2UudG90YWw7Cj4gKwl1NjQg c3RhcnQgPSAwLCBsZW5ndGggPSBwcGd0dC0+dm0udG90YWw7Cj4gIAl1NjQgZnJvbSA9IHN0YXJ0 Owo+ICAJdW5zaWduZWQgaW50IHBkcGU7Cj4gIAo+IEBAIC0xNTY0LDExICsxNTY0LDExIEBAIHN0 YXRpYyBpbnQgZ2VuOF9wcmVhbGxvY2F0ZV90b3BfbGV2ZWxfcGRwKHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCkKPiAgICovCj4gIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0gPSAmcHBndHQtPmJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZw cGd0dC0+dm07Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2bS0+aTkx NTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JcHBndHQtPmJhc2UudG90YWwgPSBVU0VTX0ZVTExfNDhC SVRfUFBHVFQoZGV2X3ByaXYpID8KPiArCXBwZ3R0LT52bS50b3RhbCA9IFVTRVNfRlVMTF80OEJJ VF9QUEdUVChkZXZfcHJpdikgPwo+ICAJCTFVTEwgPDwgNDggOgo+ICAJCTFVTEwgPDwgMzI7Cj4g IAo+IEBAIC0xNTc2LDI2ICsxNTc2LDI2IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCSAqIEFuZCB3ZSBhcmUgbm90IHN1cmUgYWJv dXQgdGhlIGxhdHRlciBzbyBwbGF5IHNhZmUgZm9yIG5vdy4KPiAgCSAqLwo+ICAJaWYgKElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+IC0JCXBwZ3R0LT5i YXNlLnB0X2ttYXBfd2MgPSB0cnVlOwo+ICsJCXBwZ3R0LT52bS5wdF9rbWFwX3djID0gdHJ1ZTsK PiAgCj4gLQlyZXQgPSBnZW44X2luaXRfc2NyYXRjaCgmcHBndHQtPmJhc2UpOwo+ICsJcmV0ID0g Z2VuOF9pbml0X3NjcmF0Y2goJnBwZ3R0LT52bSk7Cj4gIAlpZiAocmV0KSB7Cj4gLQkJcHBndHQt PmJhc2UudG90YWwgPSAwOwo+ICsJCXBwZ3R0LT52bS50b3RhbCA9IDA7Cj4gIAkJcmV0dXJuIHJl dDsKPiAgCX0KPiAgCj4gIAlpZiAodXNlXzRsdmwodm0pKSB7Cj4gLQkJcmV0ID0gc2V0dXBfcHgo JnBwZ3R0LT5iYXNlLCAmcHBndHQtPnBtbDQpOwo+ICsJCXJldCA9IHNldHVwX3B4KCZwcGd0dC0+ dm0sICZwcGd0dC0+cG1sNCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBmcmVlX3NjcmF0Y2g7 Cj4gIAo+IC0JCWdlbjhfaW5pdGlhbGl6ZV9wbWw0KCZwcGd0dC0+YmFzZSwgJnBwZ3R0LT5wbWw0 KTsKPiArCQlnZW44X2luaXRpYWxpemVfcG1sNCgmcHBndHQtPnZtLCAmcHBndHQtPnBtbDQpOwo+ ICAKPiAtCQlwcGd0dC0+YmFzZS5hbGxvY2F0ZV92YV9yYW5nZSA9IGdlbjhfcHBndHRfYWxsb2Nf NGx2bDsKPiAtCQlwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IGdlbjhfcHBndHRfaW5zZXJ0 XzRsdmw7Cj4gLQkJcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBnZW44X3BwZ3R0X2NsZWFyXzRs dmw7Cj4gKwkJcHBndHQtPnZtLmFsbG9jYXRlX3ZhX3JhbmdlID0gZ2VuOF9wcGd0dF9hbGxvY180 bHZsOwo+ICsJCXBwZ3R0LT52bS5pbnNlcnRfZW50cmllcyA9IGdlbjhfcHBndHRfaW5zZXJ0XzRs dmw7Cj4gKwkJcHBndHQtPnZtLmNsZWFyX3JhbmdlID0gZ2VuOF9wcGd0dF9jbGVhcl80bHZsOwo+ ICAJfSBlbHNlIHsKPiAtCQlyZXQgPSBfX3BkcF9pbml0KCZwcGd0dC0+YmFzZSwgJnBwZ3R0LT5w ZHApOwo+ICsJCXJldCA9IF9fcGRwX2luaXQoJnBwZ3R0LT52bSwgJnBwZ3R0LT5wZHApOwo+ICAJ CWlmIChyZXQpCj4gIAkJCWdvdG8gZnJlZV9zY3JhdGNoOwo+ICAKPiBAQCAtMTYwNywzNSArMTYw NywzNSBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQpCj4gIAkJCX0KPiAgCQl9Cj4gIAo+IC0JCXBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3Jh bmdlID0gZ2VuOF9wcGd0dF9hbGxvY18zbHZsOwo+IC0JCXBwZ3R0LT5iYXNlLmluc2VydF9lbnRy aWVzID0gZ2VuOF9wcGd0dF9pbnNlcnRfM2x2bDsKPiAtCQlwcGd0dC0+YmFzZS5jbGVhcl9yYW5n ZSA9IGdlbjhfcHBndHRfY2xlYXJfM2x2bDsKPiArCQlwcGd0dC0+dm0uYWxsb2NhdGVfdmFfcmFu Z2UgPSBnZW44X3BwZ3R0X2FsbG9jXzNsdmw7Cj4gKwkJcHBndHQtPnZtLmluc2VydF9lbnRyaWVz ID0gZ2VuOF9wcGd0dF9pbnNlcnRfM2x2bDsKPiArCQlwcGd0dC0+dm0uY2xlYXJfcmFuZ2UgPSBn ZW44X3BwZ3R0X2NsZWFyXzNsdmw7Cj4gIAl9Cj4gIAo+ICAJaWYgKGludGVsX3ZncHVfYWN0aXZl KGRldl9wcml2KSkKPiAgCQlnZW44X3BwZ3R0X25vdGlmeV92Z3QocHBndHQsIHRydWUpOwo+ICAK PiAtCXBwZ3R0LT5iYXNlLmNsZWFudXAgPSBnZW44X3BwZ3R0X2NsZWFudXA7Cj4gLQlwcGd0dC0+ YmFzZS5iaW5kX3ZtYSA9IGdlbjhfcHBndHRfYmluZF92bWE7Cj4gLQlwcGd0dC0+YmFzZS51bmJp bmRfdm1hID0gcHBndHRfdW5iaW5kX3ZtYTsKPiAtCXBwZ3R0LT5iYXNlLnNldF9wYWdlcyA9IHBw Z3R0X3NldF9wYWdlczsKPiAtCXBwZ3R0LT5iYXNlLmNsZWFyX3BhZ2VzID0gY2xlYXJfcGFnZXM7 Cj4gKwlwcGd0dC0+dm0uY2xlYW51cCA9IGdlbjhfcHBndHRfY2xlYW51cDsKPiArCXBwZ3R0LT52 bS5iaW5kX3ZtYSA9IGdlbjhfcHBndHRfYmluZF92bWE7Cj4gKwlwcGd0dC0+dm0udW5iaW5kX3Zt YSA9IHBwZ3R0X3VuYmluZF92bWE7Cj4gKwlwcGd0dC0+dm0uc2V0X3BhZ2VzID0gcHBndHRfc2V0 X3BhZ2VzOwo+ICsJcHBndHQtPnZtLmNsZWFyX3BhZ2VzID0gY2xlYXJfcGFnZXM7Cj4gIAlwcGd0 dC0+ZGVidWdfZHVtcCA9IGdlbjhfZHVtcF9wcGd0dDsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgCj4g IGZyZWVfc2NyYXRjaDoKPiAtCWdlbjhfZnJlZV9zY3JhdGNoKCZwcGd0dC0+YmFzZSk7Cj4gKwln ZW44X2ZyZWVfc2NyYXRjaCgmcHBndHQtPnZtKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGdlbjZfZHVtcF9wcGd0dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQs IHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0gPSAmcHBndHQtPmJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZw cGd0dC0+dm07Cj4gIAlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICp1bnVzZWQ7Cj4gIAlnZW42X3B0 ZV90IHNjcmF0Y2hfcHRlOwo+ICAJdTMyIHBkX2VudHJ5LCBwdGUsIHBkZTsKPiAtCXUzMiBzdGFy dCA9IDAsIGxlbmd0aCA9IHBwZ3R0LT5iYXNlLnRvdGFsOwo+ICsJdTMyIHN0YXJ0ID0gMCwgbGVu Z3RoID0gcHBndHQtPnZtLnRvdGFsOwo+ICAKPiAgCXNjcmF0Y2hfcHRlID0gdm0tPnB0ZV9lbmNv ZGUodm0tPnNjcmF0Y2hfcGFnZS5kYWRkciwKPiAgCQkJCSAgICAgSTkxNV9DQUNIRV9MTEMsIDAp Owo+IEBAIC0xOTcyLDggKzE5NzIsOCBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFudXAo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gIAo+ICBzdGF0aWMgaW50IGdlbjZfcHBn dHRfYWxsb2NhdGVfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQp Cj4gIHsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJnBwZ3R0LT5iYXNlOwo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcHBndHQtPmJhc2UuaTkxNTsK PiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJnBwZ3R0LT52bTsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHBwZ3R0LT52bS5pOTE1Owo+ICAJc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAgCWludCByZXQ7Cj4gIAo+IEBA IC0xOTgxLDE2ICsxOTgxLDE2IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9hbGxvY2F0ZV9wYWdl X2RpcmVjdG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCSAqIGFsbG9jYXRv ciB3b3JrcyBpbiBhZGRyZXNzIHNwYWNlIHNpemVzLCBzbyBpdCdzIG11bHRpcGxpZWQgYnkgcGFn ZQo+ICAJICogc2l6ZS4gV2UgYWxsb2NhdGUgYXQgdGhlIHRvcCBvZiB0aGUgR1RUIHRvIGF2b2lk IGZyYWdtZW50YXRpb24uCj4gIAkgKi8KPiAtCUJVR19PTighZHJtX21tX2luaXRpYWxpemVkKCZn Z3R0LT5iYXNlLm1tKSk7Cj4gKwlCVUdfT04oIWRybV9tbV9pbml0aWFsaXplZCgmZ2d0dC0+dm0u bW0pKTsKPiAgCj4gIAlyZXQgPSBnZW42X2luaXRfc2NyYXRjaCh2bSk7Cj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JcmV0ID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZ2d0dC0+ YmFzZSwgJnBwZ3R0LT5ub2RlLAo+ICsJcmV0ID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmZ2d0dC0+ dm0sICZwcGd0dC0+bm9kZSwKPiAgCQkJCSAgR0VONl9QRF9TSVpFLCBHRU42X1BEX0FMSUdOLAo+ ICAJCQkJICBJOTE1X0NPTE9SX1VORVZJQ1RBQkxFLAo+IC0JCQkJICAwLCBnZ3R0LT5iYXNlLnRv dGFsLAo+ICsJCQkJICAwLCBnZ3R0LT52bS50b3RhbCwKPiAgCQkJCSAgUElOX0hJR0gpOwo+ICAJ aWYgKHJldCkKPiAgCQlnb3RvIGVycl9vdXQ7Cj4gQEAgLTIwMjMsMTYgKzIwMjMsMTYgQEAgc3Rh dGljIHZvaWQgZ2VuNl9zY3JhdGNoX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCwKPiAgCXUzMiBwZGU7Cj4gIAo+ICAJZ2VuNl9mb3JfZWFjaF9wZGUodW51c2VkLCAmcHBndHQt PnBkLCBzdGFydCwgbGVuZ3RoLCBwZGUpCj4gLQkJcHBndHQtPnBkLnBhZ2VfdGFibGVbcGRlXSA9 IHBwZ3R0LT5iYXNlLnNjcmF0Y2hfcHQ7Cj4gKwkJcHBndHQtPnBkLnBhZ2VfdGFibGVbcGRlXSA9 IHBwZ3R0LT52bS5zY3JhdGNoX3B0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGdlbjZfcHBndHRf aW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHBwZ3R0LT5iYXNlLmk5MTU7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwcGd0dC0+dm0uaTkxNTsKPiAgCXN0cnVjdCBpOTE1X2dn dHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXBwZ3R0LT5i YXNlLnB0ZV9lbmNvZGUgPSBnZ3R0LT5iYXNlLnB0ZV9lbmNvZGU7Cj4gKwlwcGd0dC0+dm0ucHRl X2VuY29kZSA9IGdndHQtPnZtLnB0ZV9lbmNvZGU7Cj4gIAlpZiAoaW50ZWxfdmdwdV9hY3RpdmUo ZGV2X3ByaXYpIHx8IElTX0dFTjYoZGV2X3ByaXYpKQo+ICAJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBn ZW42X21tX3N3aXRjaDsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+IEBAIC0y MDQ2LDI0ICsyMDQ2LDI0IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlw cGd0dC0+YmFzZS50b3RhbCA9IEk5MTVfUERFUyAqIEdFTjZfUFRFUyAqIFBBR0VfU0laRTsKPiAr CXBwZ3R0LT52bS50b3RhbCA9IEk5MTVfUERFUyAqIEdFTjZfUFRFUyAqIFBBR0VfU0laRTsKPiAg Cj4gLQlnZW42X3NjcmF0Y2hfdmFfcmFuZ2UocHBndHQsIDAsIHBwZ3R0LT5iYXNlLnRvdGFsKTsK PiAtCWdlbjZfd3JpdGVfcGFnZV9yYW5nZShwcGd0dCwgMCwgcHBndHQtPmJhc2UudG90YWwpOwo+ ICsJZ2VuNl9zY3JhdGNoX3ZhX3JhbmdlKHBwZ3R0LCAwLCBwcGd0dC0+dm0udG90YWwpOwo+ICsJ Z2VuNl93cml0ZV9wYWdlX3JhbmdlKHBwZ3R0LCAwLCBwcGd0dC0+dm0udG90YWwpOwo+ICAKPiAt CXJldCA9IGdlbjZfYWxsb2NfdmFfcmFuZ2UoJnBwZ3R0LT5iYXNlLCAwLCBwcGd0dC0+YmFzZS50 b3RhbCk7Cj4gKwlyZXQgPSBnZW42X2FsbG9jX3ZhX3JhbmdlKCZwcGd0dC0+dm0sIDAsIHBwZ3R0 LT52bS50b3RhbCk7Cj4gIAlpZiAocmV0KSB7Cj4gLQkJZ2VuNl9wcGd0dF9jbGVhbnVwKCZwcGd0 dC0+YmFzZSk7Cj4gKwkJZ2VuNl9wcGd0dF9jbGVhbnVwKCZwcGd0dC0+dm0pOwo+ICAJCXJldHVy biByZXQ7Cj4gIAl9Cj4gIAo+IC0JcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBnZW42X3BwZ3R0 X2NsZWFyX3JhbmdlOwo+IC0JcHBndHQtPmJhc2UuaW5zZXJ0X2VudHJpZXMgPSBnZW42X3BwZ3R0 X2luc2VydF9lbnRyaWVzOwo+IC0JcHBndHQtPmJhc2UuYmluZF92bWEgPSBnZW42X3BwZ3R0X2Jp bmRfdm1hOwo+IC0JcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IHBwZ3R0X3VuYmluZF92bWE7Cj4g LQlwcGd0dC0+YmFzZS5zZXRfcGFnZXMgPSBwcGd0dF9zZXRfcGFnZXM7Cj4gLQlwcGd0dC0+YmFz ZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwo+IC0JcHBndHQtPmJhc2UuY2xlYW51cCA9IGdl bjZfcHBndHRfY2xlYW51cDsKPiArCXBwZ3R0LT52bS5jbGVhcl9yYW5nZSA9IGdlbjZfcHBndHRf Y2xlYXJfcmFuZ2U7Cj4gKwlwcGd0dC0+dm0uaW5zZXJ0X2VudHJpZXMgPSBnZW42X3BwZ3R0X2lu c2VydF9lbnRyaWVzOwo+ICsJcHBndHQtPnZtLmJpbmRfdm1hID0gZ2VuNl9wcGd0dF9iaW5kX3Zt YTsKPiArCXBwZ3R0LT52bS51bmJpbmRfdm1hID0gcHBndHRfdW5iaW5kX3ZtYTsKPiArCXBwZ3R0 LT52bS5zZXRfcGFnZXMgPSBwcGd0dF9zZXRfcGFnZXM7Cj4gKwlwcGd0dC0+dm0uY2xlYXJfcGFn ZXMgPSBjbGVhcl9wYWdlczsKPiArCXBwZ3R0LT52bS5jbGVhbnVwID0gZ2VuNl9wcGd0dF9jbGVh bnVwOwo+ICAJcHBndHQtPmRlYnVnX2R1bXAgPSBnZW42X2R1bXBfcHBndHQ7Cj4gIAo+ICAJRFJN X0RFQlVHX0RSSVZFUigiQWxsb2NhdGVkIHBkZSBzcGFjZSAoJWxsZE0pIGF0IEdUVCBlbnRyeTog JWxseFxuIiwKPiBAQCAtMjA3OSw4ICsyMDc5LDggQEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2lu aXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICBzdGF0aWMgaW50IF9faHdfcHBndHRf aW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIAkJCSAgIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JcHBndHQtPmJhc2UuaTkxNSA9IGRldl9wcml2 Owo+IC0JcHBndHQtPmJhc2UuZG1hID0gJmRldl9wcml2LT5kcm0ucGRldi0+ZGV2Owo+ICsJcHBn dHQtPnZtLmk5MTUgPSBkZXZfcHJpdjsKPiArCXBwZ3R0LT52bS5kbWEgPSAmZGV2X3ByaXYtPmRy bS5wZGV2LT5kZXY7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQo+ICAJCXJl dHVybiBnZW42X3BwZ3R0X2luaXQocHBndHQpOwo+IEBAIC0yMTkwLDEwICsyMTkwLDEwIEBAIGk5 MTVfcHBndHRfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0K PiAgCj4gIAlrcmVmX2luaXQoJnBwZ3R0LT5yZWYpOwo+IC0JaTkxNV9hZGRyZXNzX3NwYWNlX2lu aXQoJnBwZ3R0LT5iYXNlLCBkZXZfcHJpdiwgbmFtZSk7Cj4gLQlwcGd0dC0+YmFzZS5maWxlID0g ZnByaXY7Cj4gKwlpOTE1X2FkZHJlc3Nfc3BhY2VfaW5pdCgmcHBndHQtPnZtLCBkZXZfcHJpdiwg bmFtZSk7Cj4gKwlwcGd0dC0+dm0uZmlsZSA9IGZwcml2Owo+ICAKPiAtCXRyYWNlX2k5MTVfcHBn dHRfY3JlYXRlKCZwcGd0dC0+YmFzZSk7Cj4gKwl0cmFjZV9pOTE1X3BwZ3R0X2NyZWF0ZSgmcHBn dHQtPnZtKTsKPiAgCj4gIAlyZXR1cm4gcHBndHQ7Cj4gIH0KPiBAQCAtMjIyNywxNiArMjIyNywx NiBAQCB2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKPiAgCXN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4gIAkJY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBp OTE1X2h3X3BwZ3R0LCByZWYpOwo+ICAKPiAtCXRyYWNlX2k5MTVfcHBndHRfcmVsZWFzZSgmcHBn dHQtPmJhc2UpOwo+ICsJdHJhY2VfaTkxNV9wcGd0dF9yZWxlYXNlKCZwcGd0dC0+dm0pOwo+ICAK PiAtCXBwZ3R0X2Rlc3Ryb3lfdm1hKCZwcGd0dC0+YmFzZSk7Cj4gKwlwcGd0dF9kZXN0cm95X3Zt YSgmcHBndHQtPnZtKTsKPiAgCj4gLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZwcGd0dC0+YmFz ZS5hY3RpdmVfbGlzdCkpOwo+IC0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcHBndHQtPmJhc2Uu aW5hY3RpdmVfbGlzdCkpOwo+IC0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcHBndHQtPmJhc2Uu dW5ib3VuZF9saXN0KSk7Cj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZwcGd0dC0+dm0uYWN0 aXZlX2xpc3QpKTsKPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnBwZ3R0LT52bS5pbmFjdGl2 ZV9saXN0KSk7Cj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZwcGd0dC0+dm0udW5ib3VuZF9s aXN0KSk7Cj4gIAo+IC0JcHBndHQtPmJhc2UuY2xlYW51cCgmcHBndHQtPmJhc2UpOwo+IC0JaTkx NV9hZGRyZXNzX3NwYWNlX2ZpbmkoJnBwZ3R0LT5iYXNlKTsKPiArCXBwZ3R0LT52bS5jbGVhbnVw KCZwcGd0dC0+dm0pOwo+ICsJaTkxNV9hZGRyZXNzX3NwYWNlX2ZpbmkoJnBwZ3R0LT52bSk7Cj4g IAlrZnJlZShwcGd0dCk7Cj4gIH0KPiAgCj4gQEAgLTIzMzIsNyArMjMzMiw3IEBAIHZvaWQgaTkx NV9nZW1fc3VzcGVuZF9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAKPiAgCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXZfcHJpdik7Cj4gIAo+ IC0JZ2d0dC0+YmFzZS5jbGVhcl9yYW5nZSgmZ2d0dC0+YmFzZSwgMCwgZ2d0dC0+YmFzZS50b3Rh bCk7Cj4gKwlnZ3R0LT52bS5jbGVhcl9yYW5nZSgmZ2d0dC0+dm0sIDAsIGdndHQtPnZtLnRvdGFs KTsKPiAgCj4gIAlpOTE1X2dndHRfaW52YWxpZGF0ZShkZXZfcHJpdik7Cj4gIH0KPiBAQCAtMjY3 NSwxNiArMjY3NSwxNiBAQCBzdGF0aWMgaW50IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKPiAgCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBwZ3R0ID0gaTkxNS0+ bW0uYWxpYXNpbmdfcHBndHQ7Cj4gIAo+ICAJCWlmICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9M T0NBTF9CSU5EKSAmJgo+IC0JCSAgICBhcHBndHQtPmJhc2UuYWxsb2NhdGVfdmFfcmFuZ2UpIHsK PiAtCQkJcmV0ID0gYXBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3JhbmdlKCZhcHBndHQtPmJhc2Us Cj4gLQkJCQkJCQkgICAgIHZtYS0+bm9kZS5zdGFydCwKPiAtCQkJCQkJCSAgICAgdm1hLT5zaXpl KTsKPiArCQkgICAgYXBwZ3R0LT52bS5hbGxvY2F0ZV92YV9yYW5nZSkgewo+ICsJCQlyZXQgPSBh cHBndHQtPnZtLmFsbG9jYXRlX3ZhX3JhbmdlKCZhcHBndHQtPnZtLAo+ICsJCQkJCQkJICAgdm1h LT5ub2RlLnN0YXJ0LAo+ICsJCQkJCQkJICAgdm1hLT5zaXplKTsKPiAgCQkJaWYgKHJldCkKPiAg CQkJCXJldHVybiByZXQ7Cj4gIAkJfQo+ICAKPiAtCQlhcHBndHQtPmJhc2UuaW5zZXJ0X2VudHJp ZXMoJmFwcGd0dC0+YmFzZSwgdm1hLCBjYWNoZV9sZXZlbCwKPiAtCQkJCQkgICAgcHRlX2ZsYWdz KTsKPiArCQlhcHBndHQtPnZtLmluc2VydF9lbnRyaWVzKCZhcHBndHQtPnZtLCB2bWEsIGNhY2hl X2xldmVsLAo+ICsJCQkJCSAgcHRlX2ZsYWdzKTsKPiAgCX0KPiAgCj4gIAlpZiAoZmxhZ3MgJiBJ OTE1X1ZNQV9HTE9CQUxfQklORCkgewo+IEBAIC0yNzA3LDcgKzI3MDcsNyBAQCBzdGF0aWMgdm9p ZCBhbGlhc2luZ19ndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCX0KPiAg Cj4gIAlpZiAodm1hLT5mbGFncyAmIEk5MTVfVk1BX0xPQ0FMX0JJTkQpIHsKPiAtCQlzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZpOTE1LT5tbS5hbGlhc2luZ19wcGd0dC0+YmFzZTsK PiArCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZpOTE1LT5tbS5hbGlhc2luZ19w cGd0dC0+dm07Cj4gIAo+ICAJCXZtLT5jbGVhcl9yYW5nZSh2bSwgdm1hLT5ub2RlLnN0YXJ0LCB2 bWEtPnNpemUpOwo+ICAJfQo+IEBAIC0yNzc0LDMwICsyNzc0LDMwIEBAIGludCBpOTE1X2dlbV9p bml0X2FsaWFzaW5nX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaWYg KElTX0VSUihwcGd0dCkpCj4gIAkJcmV0dXJuIFBUUl9FUlIocHBndHQpOwo+ICAKPiAtCWlmIChX QVJOX09OKHBwZ3R0LT5iYXNlLnRvdGFsIDwgZ2d0dC0+YmFzZS50b3RhbCkpIHsKPiArCWlmIChX QVJOX09OKHBwZ3R0LT52bS50b3RhbCA8IGdndHQtPnZtLnRvdGFsKSkgewo+ICAJCWVyciA9IC1F Tk9ERVY7Cj4gIAkJZ290byBlcnJfcHBndHQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKHBwZ3R0LT5iYXNl LmFsbG9jYXRlX3ZhX3JhbmdlKSB7Cj4gKwlpZiAocHBndHQtPnZtLmFsbG9jYXRlX3ZhX3Jhbmdl KSB7Cj4gIAkJLyogTm90ZSB3ZSBvbmx5IHByZS1hbGxvY2F0ZSBhcyBmYXIgYXMgdGhlIGVuZCBv ZiB0aGUgZ2xvYmFsCj4gIAkJICogR1RULiBPbiA0OGIgLyA0LWxldmVsIHBhZ2UtdGFibGVzLCB0 aGUgZGlmZmVyZW5jZSBpcyB2ZXJ5LAo+ICAJCSAqIHZlcnkgc2lnbmlmaWNhbnQhIFdlIGhhdmUg dG8gcHJlYWxsb2NhdGUgYXMgR1ZUL3ZncHUgZG9lcwo+ICAJCSAqIG5vdCBsaWtlIHRoZSBwYWdl IGRpcmVjdG9yeSBkaXNhcHBlYXJpbmcuCj4gIAkJICovCj4gLQkJZXJyID0gcHBndHQtPmJhc2Uu YWxsb2NhdGVfdmFfcmFuZ2UoJnBwZ3R0LT5iYXNlLAo+IC0JCQkJCQkgICAgMCwgZ2d0dC0+YmFz ZS50b3RhbCk7Cj4gKwkJZXJyID0gcHBndHQtPnZtLmFsbG9jYXRlX3ZhX3JhbmdlKCZwcGd0dC0+ dm0sCj4gKwkJCQkJCSAgMCwgZ2d0dC0+dm0udG90YWwpOwo+ICAJCWlmIChlcnIpCj4gIAkJCWdv dG8gZXJyX3BwZ3R0Owo+ICAJfQo+ICAKPiAgCWk5MTUtPm1tLmFsaWFzaW5nX3BwZ3R0ID0gcHBn dHQ7Cj4gIAo+IC0JR0VNX0JVR19PTihnZ3R0LT5iYXNlLmJpbmRfdm1hICE9IGdndHRfYmluZF92 bWEpOwo+IC0JZ2d0dC0+YmFzZS5iaW5kX3ZtYSA9IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYTsKPiAr CUdFTV9CVUdfT04oZ2d0dC0+dm0uYmluZF92bWEgIT0gZ2d0dF9iaW5kX3ZtYSk7Cj4gKwlnZ3R0 LT52bS5iaW5kX3ZtYSA9IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYTsKPiAgCj4gLQlHRU1fQlVHX09O KGdndHQtPmJhc2UudW5iaW5kX3ZtYSAhPSBnZ3R0X3VuYmluZF92bWEpOwo+IC0JZ2d0dC0+YmFz ZS51bmJpbmRfdm1hID0gYWxpYXNpbmdfZ3R0X3VuYmluZF92bWE7Cj4gKwlHRU1fQlVHX09OKGdn dHQtPnZtLnVuYmluZF92bWEgIT0gZ2d0dF91bmJpbmRfdm1hKTsKPiArCWdndHQtPnZtLnVuYmlu ZF92bWEgPSBhbGlhc2luZ19ndHRfdW5iaW5kX3ZtYTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgCj4g QEAgLTI4MTcsOCArMjgxNyw4IEBAIHZvaWQgaTkxNV9nZW1fZmluaV9hbGlhc2luZ19wcGd0dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAlpOTE1X3BwZ3R0X3B1dChwcGd0 dCk7Cj4gIAo+IC0JZ2d0dC0+YmFzZS5iaW5kX3ZtYSA9IGdndHRfYmluZF92bWE7Cj4gLQlnZ3R0 LT5iYXNlLnVuYmluZF92bWEgPSBnZ3R0X3VuYmluZF92bWE7Cj4gKwlnZ3R0LT52bS5iaW5kX3Zt YSA9IGdndHRfYmluZF92bWE7Cj4gKwlnZ3R0LT52bS51bmJpbmRfdm1hID0gZ2d0dF91bmJpbmRf dm1hOwo+ICB9Cj4gIAo+ICBpbnQgaTkxNV9nZW1faW5pdF9nZ3R0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiBAQCAtMjg0Miw3ICsyODQyLDcgQEAgaW50IGk5MTVfZ2VtX2lu aXRfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gIAkvKiBSZXNlcnZlIGEgbWFwcGFibGUgc2xvdCBmb3Igb3VyIGxvY2tsZXNzIGVy cm9yIGNhcHR1cmUgKi8KPiAtCXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZSgmZ2d0 dC0+YmFzZS5tbSwgJmdndHQtPmVycm9yX2NhcHR1cmUsCj4gKwlyZXQgPSBkcm1fbW1faW5zZXJ0 X25vZGVfaW5fcmFuZ2UoJmdndHQtPnZtLm1tLCAmZ2d0dC0+ZXJyb3JfY2FwdHVyZSwKPiAgCQkJ CQkgIFBBR0VfU0laRSwgMCwgSTkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiAgCQkJCQkgIDAsIGdn dHQtPm1hcHBhYmxlX2VuZCwKPiAgCQkJCQkgIERSTV9NTV9JTlNFUlRfTE9XKTsKPiBAQCAtMjg1 MCwxNiArMjg1MCwxNSBAQCBpbnQgaTkxNV9nZW1faW5pdF9nZ3R0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCS8qIENsZWFyIGFueSBu b24tcHJlYWxsb2NhdGVkIGJsb2NrcyAqLwo+IC0JZHJtX21tX2Zvcl9lYWNoX2hvbGUoZW50cnks ICZnZ3R0LT5iYXNlLm1tLCBob2xlX3N0YXJ0LCBob2xlX2VuZCkgewo+ICsJZHJtX21tX2Zvcl9l YWNoX2hvbGUoZW50cnksICZnZ3R0LT52bS5tbSwgaG9sZV9zdGFydCwgaG9sZV9lbmQpIHsKPiAg CQlEUk1fREVCVUdfS01TKCJjbGVhcmluZyB1bnVzZWQgR1RUIHNwYWNlOiBbJWx4LCAlbHhdXG4i LAo+ICAJCQkgICAgICBob2xlX3N0YXJ0LCBob2xlX2VuZCk7Cj4gLQkJZ2d0dC0+YmFzZS5jbGVh cl9yYW5nZSgmZ2d0dC0+YmFzZSwgaG9sZV9zdGFydCwKPiAtCQkJCSAgICAgICBob2xlX2VuZCAt IGhvbGVfc3RhcnQpOwo+ICsJCWdndHQtPnZtLmNsZWFyX3JhbmdlKCZnZ3R0LT52bSwgaG9sZV9z dGFydCwKPiArCQkJCSAgICAgaG9sZV9lbmQgLSBob2xlX3N0YXJ0KTsKPiAgCX0KPiAgCj4gIAkv KiBBbmQgZmluYWxseSBjbGVhciB0aGUgcmVzZXJ2ZWQgZ3VhcmQgcGFnZSAqLwo+IC0JZ2d0dC0+ YmFzZS5jbGVhcl9yYW5nZSgmZ2d0dC0+YmFzZSwKPiAtCQkJICAgICAgIGdndHQtPmJhc2UudG90 YWwgLSBQQUdFX1NJWkUsIFBBR0VfU0laRSk7Cj4gKwlnZ3R0LT52bS5jbGVhcl9yYW5nZSgmZ2d0 dC0+dm0sIGdndHQtPnZtLnRvdGFsIC0gUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwo+ICAKPiAgCWlm IChVU0VTX1BQR1RUKGRldl9wcml2KSAmJiAhVVNFU19GVUxMX1BQR1RUKGRldl9wcml2KSkgewo+ ICAJCXJldCA9IGk5MTVfZ2VtX2luaXRfYWxpYXNpbmdfcHBndHQoZGV2X3ByaXYpOwo+IEBAIC0y ODg0LDExICsyODgzLDExIEBAIHZvaWQgaTkxNV9nZ3R0X2NsZWFudXBfaHcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWEsICp2bjsKPiAg CXN0cnVjdCBwYWdldmVjICpwdmVjOwo+ICAKPiAtCWdndHQtPmJhc2UuY2xvc2VkID0gdHJ1ZTsK PiArCWdndHQtPnZtLmNsb3NlZCA9IHRydWU7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmZ2d0dC0+YmFz ZS5hY3RpdmVfbGlzdCkpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sICZn Z3R0LT5iYXNlLmluYWN0aXZlX2xpc3QsIHZtX2xpbmspCj4gKwlHRU1fQlVHX09OKCFsaXN0X2Vt cHR5KCZnZ3R0LT52bS5hY3RpdmVfbGlzdCkpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZl KHZtYSwgdm4sICZnZ3R0LT52bS5pbmFjdGl2ZV9saXN0LCB2bV9saW5rKQo+ICAJCVdBUk5fT04o aTkxNV92bWFfdW5iaW5kKHZtYSkpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gIAo+IEBAIC0yOTAwLDEyICsyODk5LDEyIEBAIHZvaWQgaTkxNV9nZ3R0 X2NsZWFudXBfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKGRy bV9tbV9ub2RlX2FsbG9jYXRlZCgmZ2d0dC0+ZXJyb3JfY2FwdHVyZSkpCj4gIAkJZHJtX21tX3Jl bW92ZV9ub2RlKCZnZ3R0LT5lcnJvcl9jYXB0dXJlKTsKPiAgCj4gLQlpZiAoZHJtX21tX2luaXRp YWxpemVkKCZnZ3R0LT5iYXNlLm1tKSkgewo+ICsJaWYgKGRybV9tbV9pbml0aWFsaXplZCgmZ2d0 dC0+dm0ubW0pKSB7Cj4gIAkJaW50ZWxfdmd0X2RlYmFsbG9vbihkZXZfcHJpdik7Cj4gLQkJaTkx NV9hZGRyZXNzX3NwYWNlX2ZpbmkoJmdndHQtPmJhc2UpOwo+ICsJCWk5MTVfYWRkcmVzc19zcGFj ZV9maW5pKCZnZ3R0LT52bSk7Cj4gIAl9Cj4gIAo+IC0JZ2d0dC0+YmFzZS5jbGVhbnVwKCZnZ3R0 LT5iYXNlKTsKPiArCWdndHQtPnZtLmNsZWFudXAoJmdndHQtPnZtKTsKPiAgCj4gIAlwdmVjID0g JmRldl9wcml2LT5tbS53Y19zdGFzaDsKPiAgCWlmIChwdmVjLT5ucikgewo+IEBAIC0yOTU1LDcg KzI5NTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGNodl9nZXRfdG90YWxfZ3R0X3NpemUodTE2 IGdtY2hfY3RybCkKPiAgCj4gIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9jb21tb24oc3RydWN0IGk5 MTVfZ2d0dCAqZ2d0dCwgdTY0IHNpemUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGdndHQtPmJhc2UuaTkxNTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGdndHQtPnZtLmk5MTU7Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRl dl9wcml2LT5kcm0ucGRldjsKPiAgCXBoeXNfYWRkcl90IHBoeXNfYWRkcjsKPiAgCWludCByZXQ7 Cj4gQEAgLTI5NzksNyArMjk3OCw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9jb21tb24oc3Ry dWN0IGk5MTVfZ2d0dCAqZ2d0dCwgdTY0IHNpemUpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAl9 Cj4gIAo+IC0JcmV0ID0gc2V0dXBfc2NyYXRjaF9wYWdlKCZnZ3R0LT5iYXNlLCBHRlBfRE1BMzIp Owo+ICsJcmV0ID0gc2V0dXBfc2NyYXRjaF9wYWdlKCZnZ3R0LT52bSwgR0ZQX0RNQTMyKTsKPiAg CWlmIChyZXQpIHsKPiAgCQlEUk1fRVJST1IoIlNjcmF0Y2ggc2V0dXAgZmFpbGVkXG4iKTsKPiAg CQkvKiBpb3VubWFwIHdpbGwgYWxzbyBnZXQgY2FsbGVkIGF0IHJlbW92ZSwgYnV0IG1laCAqLwo+ IEBAIC0zMjg1LDcgKzMyODQsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wcml2YXRlX3BhdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICBzdGF0aWMgaW50IGdlbjhfZ21j aF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBnZ3R0LT5iYXNlLmk5MTU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBnZ3R0LT52bS5pOTE1Owo+ICAJc3RydWN0IHBjaV9kZXYgKnBk ZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4gIAl1bnNpZ25lZCBpbnQgc2l6ZTsKPiAgCXUxNiBz bmJfZ21jaF9jdGw7Cj4gQEAgLTMzMDksMjUgKzMzMDgsMjUgQEAgc3RhdGljIGludCBnZW44X2dt Y2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAgCWVsc2UKPiAgCQlzaXplID0gZ2Vu OF9nZXRfdG90YWxfZ3R0X3NpemUoc25iX2dtY2hfY3RsKTsKPiAgCj4gLQlnZ3R0LT5iYXNlLnRv dGFsID0gKHNpemUgLyBzaXplb2YoZ2VuOF9wdGVfdCkpIDw8IFBBR0VfU0hJRlQ7Cj4gLQlnZ3R0 LT5iYXNlLmNsZWFudXAgPSBnZW42X2dtY2hfcmVtb3ZlOwo+IC0JZ2d0dC0+YmFzZS5iaW5kX3Zt YSA9IGdndHRfYmluZF92bWE7Cj4gLQlnZ3R0LT5iYXNlLnVuYmluZF92bWEgPSBnZ3R0X3VuYmlu ZF92bWE7Cj4gLQlnZ3R0LT5iYXNlLnNldF9wYWdlcyA9IGdndHRfc2V0X3BhZ2VzOwo+IC0JZ2d0 dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwo+IC0JZ2d0dC0+YmFzZS5pbnNlcnRf cGFnZSA9IGdlbjhfZ2d0dF9pbnNlcnRfcGFnZTsKPiAtCWdndHQtPmJhc2UuY2xlYXJfcmFuZ2Ug PSBub3BfY2xlYXJfcmFuZ2U7Cj4gKwlnZ3R0LT52bS50b3RhbCA9IChzaXplIC8gc2l6ZW9mKGdl bjhfcHRlX3QpKSA8PCBQQUdFX1NISUZUOwo+ICsJZ2d0dC0+dm0uY2xlYW51cCA9IGdlbjZfZ21j aF9yZW1vdmU7Cj4gKwlnZ3R0LT52bS5iaW5kX3ZtYSA9IGdndHRfYmluZF92bWE7Cj4gKwlnZ3R0 LT52bS51bmJpbmRfdm1hID0gZ2d0dF91bmJpbmRfdm1hOwo+ICsJZ2d0dC0+dm0uc2V0X3BhZ2Vz ID0gZ2d0dF9zZXRfcGFnZXM7Cj4gKwlnZ3R0LT52bS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2Vz Owo+ICsJZ2d0dC0+dm0uaW5zZXJ0X3BhZ2UgPSBnZW44X2dndHRfaW5zZXJ0X3BhZ2U7Cj4gKwln Z3R0LT52bS5jbGVhcl9yYW5nZSA9IG5vcF9jbGVhcl9yYW5nZTsKPiAgCWlmICghVVNFU19GVUxM X1BQR1RUKGRldl9wcml2KSB8fCBpbnRlbF9zY2Fub3V0X25lZWRzX3Z0ZF93YShkZXZfcHJpdikp Cj4gLQkJZ2d0dC0+YmFzZS5jbGVhcl9yYW5nZSA9IGdlbjhfZ2d0dF9jbGVhcl9yYW5nZTsKPiAr CQlnZ3R0LT52bS5jbGVhcl9yYW5nZSA9IGdlbjhfZ2d0dF9jbGVhcl9yYW5nZTsKPiAgCj4gLQln Z3R0LT5iYXNlLmluc2VydF9lbnRyaWVzID0gZ2VuOF9nZ3R0X2luc2VydF9lbnRyaWVzOwo+ICsJ Z2d0dC0+dm0uaW5zZXJ0X2VudHJpZXMgPSBnZW44X2dndHRfaW5zZXJ0X2VudHJpZXM7Cj4gIAo+ ICAJLyogU2VyaWFsaXplIEdUVCB1cGRhdGVzIHdpdGggYXBlcnR1cmUgYWNjZXNzIG9uIEJYVCBp ZiBWVC1kIGlzIG9uLiAqLwo+ICAJaWYgKGludGVsX2dndHRfdXBkYXRlX25lZWRzX3Z0ZF93YShk ZXZfcHJpdikpIHsKPiAtCQlnZ3R0LT5iYXNlLmluc2VydF9lbnRyaWVzID0gYnh0X3Z0ZF9nZ3R0 X2luc2VydF9lbnRyaWVzX19CS0w7Cj4gLQkJZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSAgICA9IGJ4 dF92dGRfZ2d0dF9pbnNlcnRfcGFnZV9fQktMOwo+IC0JCWlmIChnZ3R0LT5iYXNlLmNsZWFyX3Jh bmdlICE9IG5vcF9jbGVhcl9yYW5nZSkKPiAtCQkJZ2d0dC0+YmFzZS5jbGVhcl9yYW5nZSA9IGJ4 dF92dGRfZ2d0dF9jbGVhcl9yYW5nZV9fQktMOwo+ICsJCWdndHQtPnZtLmluc2VydF9lbnRyaWVz ID0gYnh0X3Z0ZF9nZ3R0X2luc2VydF9lbnRyaWVzX19CS0w7Cj4gKwkJZ2d0dC0+dm0uaW5zZXJ0 X3BhZ2UgICAgPSBieHRfdnRkX2dndHRfaW5zZXJ0X3BhZ2VfX0JLTDsKPiArCQlpZiAoZ2d0dC0+ dm0uY2xlYXJfcmFuZ2UgIT0gbm9wX2NsZWFyX3JhbmdlKQo+ICsJCQlnZ3R0LT52bS5jbGVhcl9y YW5nZSA9IGJ4dF92dGRfZ2d0dF9jbGVhcl9yYW5nZV9fQktMOwo+ICAJfQo+ICAKPiAgCWdndHQt PmludmFsaWRhdGUgPSBnZW42X2dndHRfaW52YWxpZGF0ZTsKPiBAQCAtMzMzOSw3ICszMzM4LDcg QEAgc3RhdGljIGludCBnZW44X2dtY2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAg Cj4gIHN0YXRpYyBpbnQgZ2VuNl9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4g IHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGdndHQtPmJhc2UuaTkx NTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGdndHQtPnZtLmk5MTU7 Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKPiAgCXVuc2ln bmVkIGludCBzaXplOwo+ICAJdTE2IHNuYl9nbWNoX2N0bDsKPiBAQCAtMzM2NiwyOSArMzM2NSwy OSBAQCBzdGF0aWMgaW50IGdlbjZfZ21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ ICAJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgU05CX0dNQ0hfQ1RSTCwgJnNuYl9nbWNoX2N0 bCk7Cj4gIAo+ICAJc2l6ZSA9IGdlbjZfZ2V0X3RvdGFsX2d0dF9zaXplKHNuYl9nbWNoX2N0bCk7 Cj4gLQlnZ3R0LT5iYXNlLnRvdGFsID0gKHNpemUgLyBzaXplb2YoZ2VuNl9wdGVfdCkpIDw8IFBB R0VfU0hJRlQ7Cj4gKwlnZ3R0LT52bS50b3RhbCA9IChzaXplIC8gc2l6ZW9mKGdlbjZfcHRlX3Qp KSA8PCBQQUdFX1NISUZUOwo+ICAKPiAtCWdndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBnZW42X2dn dHRfY2xlYXJfcmFuZ2U7Cj4gLQlnZ3R0LT5iYXNlLmluc2VydF9wYWdlID0gZ2VuNl9nZ3R0X2lu c2VydF9wYWdlOwo+IC0JZ2d0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IGdlbjZfZ2d0dF9pbnNl cnRfZW50cmllczsKPiAtCWdndHQtPmJhc2UuYmluZF92bWEgPSBnZ3R0X2JpbmRfdm1hOwo+IC0J Z2d0dC0+YmFzZS51bmJpbmRfdm1hID0gZ2d0dF91bmJpbmRfdm1hOwo+IC0JZ2d0dC0+YmFzZS5z ZXRfcGFnZXMgPSBnZ3R0X3NldF9wYWdlczsKPiAtCWdndHQtPmJhc2UuY2xlYXJfcGFnZXMgPSBj bGVhcl9wYWdlczsKPiAtCWdndHQtPmJhc2UuY2xlYW51cCA9IGdlbjZfZ21jaF9yZW1vdmU7Cj4g KwlnZ3R0LT52bS5jbGVhcl9yYW5nZSA9IGdlbjZfZ2d0dF9jbGVhcl9yYW5nZTsKPiArCWdndHQt PnZtLmluc2VydF9wYWdlID0gZ2VuNl9nZ3R0X2luc2VydF9wYWdlOwo+ICsJZ2d0dC0+dm0uaW5z ZXJ0X2VudHJpZXMgPSBnZW42X2dndHRfaW5zZXJ0X2VudHJpZXM7Cj4gKwlnZ3R0LT52bS5iaW5k X3ZtYSA9IGdndHRfYmluZF92bWE7Cj4gKwlnZ3R0LT52bS51bmJpbmRfdm1hID0gZ2d0dF91bmJp bmRfdm1hOwo+ICsJZ2d0dC0+dm0uc2V0X3BhZ2VzID0gZ2d0dF9zZXRfcGFnZXM7Cj4gKwlnZ3R0 LT52bS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwo+ICsJZ2d0dC0+dm0uY2xlYW51cCA9IGdl bjZfZ21jaF9yZW1vdmU7Cj4gIAo+ICAJZ2d0dC0+aW52YWxpZGF0ZSA9IGdlbjZfZ2d0dF9pbnZh bGlkYXRlOwo+ICAKPiAgCWlmIChIQVNfRURSQU0oZGV2X3ByaXYpKQo+IC0JCWdndHQtPmJhc2Uu cHRlX2VuY29kZSA9IGlyaXNfcHRlX2VuY29kZTsKPiArCQlnZ3R0LT52bS5wdGVfZW5jb2RlID0g aXJpc19wdGVfZW5jb2RlOwo+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpCj4gLQkJ Z2d0dC0+YmFzZS5wdGVfZW5jb2RlID0gaHN3X3B0ZV9lbmNvZGU7Cj4gKwkJZ2d0dC0+dm0ucHRl X2VuY29kZSA9IGhzd19wdGVfZW5jb2RlOwo+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikpCj4gLQkJZ2d0dC0+YmFzZS5wdGVfZW5jb2RlID0gYnl0X3B0ZV9lbmNvZGU7Cj4gKwkJ Z2d0dC0+dm0ucHRlX2VuY29kZSA9IGJ5dF9wdGVfZW5jb2RlOwo+ICAJZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA3KQo+IC0JCWdndHQtPmJhc2UucHRlX2VuY29kZSA9IGl2Yl9wdGVf ZW5jb2RlOwo+ICsJCWdndHQtPnZtLnB0ZV9lbmNvZGUgPSBpdmJfcHRlX2VuY29kZTsKPiAgCWVs c2UKPiAtCQlnZ3R0LT5iYXNlLnB0ZV9lbmNvZGUgPSBzbmJfcHRlX2VuY29kZTsKPiArCQlnZ3R0 LT52bS5wdGVfZW5jb2RlID0gc25iX3B0ZV9lbmNvZGU7Cj4gIAo+ICAJcmV0dXJuIGdndHRfcHJv YmVfY29tbW9uKGdndHQsIHNpemUpOwo+ICB9Cj4gQEAgLTM0MDAsNyArMzM5OSw3IEBAIHN0YXRp YyB2b2lkIGk5MTVfZ21jaF9yZW1vdmUoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4g IAo+ICBzdGF0aWMgaW50IGk5MTVfZ21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBnZ3R0LT5iYXNlLmk5 MTU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBnZ3R0LT52bS5pOTE1 Owo+ICAJcGh5c19hZGRyX3QgZ21hZHJfYmFzZTsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0zNDEw LDIzICszNDA5LDIxIEBAIHN0YXRpYyBpbnQgaTkxNV9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dn dHQgKmdndHQpCj4gIAkJcmV0dXJuIC1FSU87Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfZ3R0X2dldCgm Z2d0dC0+YmFzZS50b3RhbCwKPiAtCQkgICAgICAmZ21hZHJfYmFzZSwKPiAtCQkgICAgICAmZ2d0 dC0+bWFwcGFibGVfZW5kKTsKPiArCWludGVsX2d0dF9nZXQoJmdndHQtPnZtLnRvdGFsLCAmZ21h ZHJfYmFzZSwgJmdndHQtPm1hcHBhYmxlX2VuZCk7Cj4gIAo+ICAJZ2d0dC0+Z21hZHIgPQo+ICAJ CShzdHJ1Y3QgcmVzb3VyY2UpIERFRklORV9SRVNfTUVNKGdtYWRyX2Jhc2UsCj4gIAkJCQkJCSBn Z3R0LT5tYXBwYWJsZV9lbmQpOwo+ICAKPiAgCWdndHQtPmRvX2lkbGVfbWFwcyA9IG5lZWRzX2lk bGVfbWFwcyhkZXZfcHJpdik7Cj4gLQlnZ3R0LT5iYXNlLmluc2VydF9wYWdlID0gaTkxNV9nZ3R0 X2luc2VydF9wYWdlOwo+IC0JZ2d0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IGk5MTVfZ2d0dF9p bnNlcnRfZW50cmllczsKPiAtCWdndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBpOTE1X2dndHRfY2xl YXJfcmFuZ2U7Cj4gLQlnZ3R0LT5iYXNlLmJpbmRfdm1hID0gZ2d0dF9iaW5kX3ZtYTsKPiAtCWdn dHQtPmJhc2UudW5iaW5kX3ZtYSA9IGdndHRfdW5iaW5kX3ZtYTsKPiAtCWdndHQtPmJhc2Uuc2V0 X3BhZ2VzID0gZ2d0dF9zZXRfcGFnZXM7Cj4gLQlnZ3R0LT5iYXNlLmNsZWFyX3BhZ2VzID0gY2xl YXJfcGFnZXM7Cj4gLQlnZ3R0LT5iYXNlLmNsZWFudXAgPSBpOTE1X2dtY2hfcmVtb3ZlOwo+ICsJ Z2d0dC0+dm0uaW5zZXJ0X3BhZ2UgPSBpOTE1X2dndHRfaW5zZXJ0X3BhZ2U7Cj4gKwlnZ3R0LT52 bS5pbnNlcnRfZW50cmllcyA9IGk5MTVfZ2d0dF9pbnNlcnRfZW50cmllczsKPiArCWdndHQtPnZt LmNsZWFyX3JhbmdlID0gaTkxNV9nZ3R0X2NsZWFyX3JhbmdlOwo+ICsJZ2d0dC0+dm0uYmluZF92 bWEgPSBnZ3R0X2JpbmRfdm1hOwo+ICsJZ2d0dC0+dm0udW5iaW5kX3ZtYSA9IGdndHRfdW5iaW5k X3ZtYTsKPiArCWdndHQtPnZtLnNldF9wYWdlcyA9IGdndHRfc2V0X3BhZ2VzOwo+ICsJZ2d0dC0+ dm0uY2xlYXJfcGFnZXMgPSBjbGVhcl9wYWdlczsKPiArCWdndHQtPnZtLmNsZWFudXAgPSBpOTE1 X2dtY2hfcmVtb3ZlOwo+ICAKPiAgCWdndHQtPmludmFsaWRhdGUgPSBnbWNoX2dndHRfaW52YWxp ZGF0ZTsKPiAgCj4gQEAgLTM0NDUsOCArMzQ0Miw4IEBAIGludCBpOTE1X2dndHRfcHJvYmVfaHco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJc3RydWN0IGk5MTVfZ2d0dCAq Z2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAgCWludCByZXQ7Cj4gIAo+IC0JZ2d0dC0+YmFzZS5p OTE1ID0gZGV2X3ByaXY7Cj4gLQlnZ3R0LT5iYXNlLmRtYSA9ICZkZXZfcHJpdi0+ZHJtLnBkZXYt PmRldjsKPiArCWdndHQtPnZtLmk5MTUgPSBkZXZfcHJpdjsKPiArCWdndHQtPnZtLmRtYSA9ICZk ZXZfcHJpdi0+ZHJtLnBkZXYtPmRldjsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 PSA1KQo+ICAJCXJldCA9IGk5MTVfZ21jaF9wcm9iZShnZ3R0KTsKPiBAQCAtMzQ2MywyNyArMzQ2 MCwyOSBAQCBpbnQgaTkxNV9nZ3R0X3Byb2JlX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCSAqIHJlc3RyaWN0aW9uIQo+ICAJICovCj4gIAlpZiAoVVNFU19HVUMoZGV2 X3ByaXYpKSB7Cj4gLQkJZ2d0dC0+YmFzZS50b3RhbCA9IG1pbl90KHU2NCwgZ2d0dC0+YmFzZS50 b3RhbCwgR1VDX0dHVFRfVE9QKTsKPiAtCQlnZ3R0LT5tYXBwYWJsZV9lbmQgPSBtaW5fdCh1NjQs IGdndHQtPm1hcHBhYmxlX2VuZCwgZ2d0dC0+YmFzZS50b3RhbCk7Cj4gKwkJZ2d0dC0+dm0udG90 YWwgPSBtaW5fdCh1NjQsIGdndHQtPnZtLnRvdGFsLCBHVUNfR0dUVF9UT1ApOwo+ICsJCWdndHQt Pm1hcHBhYmxlX2VuZCA9Cj4gKwkJCW1pbl90KHU2NCwgZ2d0dC0+bWFwcGFibGVfZW5kLCBnZ3R0 LT52bS50b3RhbCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKChnZ3R0LT5iYXNlLnRvdGFsIC0gMSkgPj4g MzIpIHsKPiArCWlmICgoZ2d0dC0+dm0udG90YWwgLSAxKSA+PiAzMikgewo+ICAJCURSTV9FUlJP UigiV2UgbmV2ZXIgZXhwZWN0ZWQgYSBHbG9iYWwgR1RUIHdpdGggbW9yZSB0aGFuIDMyYml0cyIK PiAgCQkJICAiIG9mIGFkZHJlc3Mgc3BhY2UhIEZvdW5kICVsbGRNIVxuIiwKPiAtCQkJICBnZ3R0 LT5iYXNlLnRvdGFsID4+IDIwKTsKPiAtCQlnZ3R0LT5iYXNlLnRvdGFsID0gMVVMTCA8PCAzMjsK PiAtCQlnZ3R0LT5tYXBwYWJsZV9lbmQgPSBtaW5fdCh1NjQsIGdndHQtPm1hcHBhYmxlX2VuZCwg Z2d0dC0+YmFzZS50b3RhbCk7Cj4gKwkJCSAgZ2d0dC0+dm0udG90YWwgPj4gMjApOwo+ICsJCWdn dHQtPnZtLnRvdGFsID0gMVVMTCA8PCAzMjsKPiArCQlnZ3R0LT5tYXBwYWJsZV9lbmQgPQo+ICsJ CQltaW5fdCh1NjQsIGdndHQtPm1hcHBhYmxlX2VuZCwgZ2d0dC0+dm0udG90YWwpOwo+ICAJfQo+ ICAKPiAtCWlmIChnZ3R0LT5tYXBwYWJsZV9lbmQgPiBnZ3R0LT5iYXNlLnRvdGFsKSB7Cj4gKwlp ZiAoZ2d0dC0+bWFwcGFibGVfZW5kID4gZ2d0dC0+dm0udG90YWwpIHsKPiAgCQlEUk1fRVJST1Io Im1hcHBhYmxlIGFwZXJ0dXJlIGV4dGVuZHMgcGFzdCBlbmQgb2YgR0dUVCwiCj4gIAkJCSAgIiBh cGVydHVyZT0lcGEsIHRvdGFsPSVsbHhcbiIsCj4gLQkJCSAgJmdndHQtPm1hcHBhYmxlX2VuZCwg Z2d0dC0+YmFzZS50b3RhbCk7Cj4gLQkJZ2d0dC0+bWFwcGFibGVfZW5kID0gZ2d0dC0+YmFzZS50 b3RhbDsKPiArCQkJICAmZ2d0dC0+bWFwcGFibGVfZW5kLCBnZ3R0LT52bS50b3RhbCk7Cj4gKwkJ Z2d0dC0+bWFwcGFibGVfZW5kID0gZ2d0dC0+dm0udG90YWw7Cj4gIAl9Cj4gIAo+ICAJLyogR01B RFIgaXMgdGhlIFBDSSBtbWlvIGFwZXJ0dXJlIGludG8gdGhlIGdsb2JhbCBHVFQuICovCj4gLQlE Uk1fREVCVUdfRFJJVkVSKCJHR1RUIHNpemUgPSAlbGx1TVxuIiwgZ2d0dC0+YmFzZS50b3RhbCA+ PiAyMCk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJHR1RUIHNpemUgPSAlbGx1TVxuIiwgZ2d0dC0+ dm0udG90YWwgPj4gMjApOwo+ICAJRFJNX0RFQlVHX0RSSVZFUigiR01BRFIgc2l6ZSA9ICVsbHVN XG4iLCAodTY0KWdndHQtPm1hcHBhYmxlX2VuZCA+PiAyMCk7Cj4gIAlEUk1fREVCVUdfRFJJVkVS KCJEU00gc2l6ZSA9ICVsbHVNXG4iLAo+ICAJCQkgKHU2NClyZXNvdXJjZV9zaXplKCZpbnRlbF9n cmFwaGljc19zdG9sZW5fcmVzKSA+PiAyMCk7Cj4gQEAgLTM1MTAsOSArMzUwOSw5IEBAIGludCBp OTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkg KiBhbmQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIEdUVCBpZiB3ZSBkbyBub3QgcHJvdmlkZSBhIGd1 YXJkLgo+ICAJICovCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gLQlpOTE1X2FkZHJlc3Nfc3BhY2VfaW5pdCgmZ2d0dC0+YmFzZSwgZGV2X3ByaXYsICJbZ2xv YmFsXSIpOwo+ICsJaTkxNV9hZGRyZXNzX3NwYWNlX2luaXQoJmdndHQtPnZtLCBkZXZfcHJpdiwg IltnbG9iYWxdIik7Cj4gIAlpZiAoIUhBU19MTEMoZGV2X3ByaXYpICYmICFVU0VTX1BQR1RUKGRl dl9wcml2KSkKPiAtCQlnZ3R0LT5iYXNlLm1tLmNvbG9yX2FkanVzdCA9IGk5MTVfZ3R0X2NvbG9y X2FkanVzdDsKPiArCQlnZ3R0LT52bS5tbS5jb2xvcl9hZGp1c3QgPSBpOTE1X2d0dF9jb2xvcl9h ZGp1c3Q7Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAg Cj4gIAlpZiAoIWlvX21hcHBpbmdfaW5pdF93YygmZGV2X3ByaXYtPmdndHQuaW9tYXAsCj4gQEAg LTM1MzUsNyArMzUzNCw3IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gMDsKPiAgCj4gIG91dF9ndHRfY2xlYW51cDoK PiAtCWdndHQtPmJhc2UuY2xlYW51cCgmZ2d0dC0+YmFzZSk7Cj4gKwlnZ3R0LT52bS5jbGVhbnVw KCZnZ3R0LT52bSk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC0zNTc0LDkgKzM1NzMs OSBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXZfcHJp dik7Cj4gIAo+ICAJLyogRmlyc3QgZmlsbCBvdXIgcG9ydGlvbiBvZiB0aGUgR1RUIHdpdGggc2Ny YXRjaCBwYWdlcyAqLwo+IC0JZ2d0dC0+YmFzZS5jbGVhcl9yYW5nZSgmZ2d0dC0+YmFzZSwgMCwg Z2d0dC0+YmFzZS50b3RhbCk7Cj4gKwlnZ3R0LT52bS5jbGVhcl9yYW5nZSgmZ2d0dC0+dm0sIDAs IGdndHQtPnZtLnRvdGFsKTsKPiAgCj4gLQlnZ3R0LT5iYXNlLmNsb3NlZCA9IHRydWU7IC8qIHNr aXAgcmV3cml0aW5nIFBURSBvbiBWTUEgdW5iaW5kICovCj4gKwlnZ3R0LT52bS5jbG9zZWQgPSB0 cnVlOyAvKiBza2lwIHJld3JpdGluZyBQVEUgb24gVk1BIHVuYmluZCAqLwo+ICAKPiAgCS8qIGNs Zmx1c2ggb2JqZWN0cyBib3VuZCBpbnRvIHRoZSBHR1RUIGFuZCByZWJpbmQgdGhlbS4gKi8KPiAg CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xp c3QsIG1tLmxpbmspIHsKPiBAQCAtMzU5Niw3ICszNTk1LDcgQEAgdm9pZCBpOTE1X2dlbV9yZXN0 b3JlX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ CVdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpKTsK PiAgCX0KPiAgCj4gLQlnZ3R0LT5iYXNlLmNsb3NlZCA9IGZhbHNlOwo+ICsJZ2d0dC0+dm0uY2xv c2VkID0gZmFsc2U7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICAJ CXN0cnVjdCBpbnRlbF9wcGF0ICpwcGF0ID0gJmRldl9wcml2LT5wcGF0Owo+IEBAIC0zNjE5LDcg KzM2MTgsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJaWYgKCFwcGd0dCkKPiAgCQkJCWNvbnRpbnVl Owo+ICAKPiAtCQkJZ2VuNl93cml0ZV9wYWdlX3JhbmdlKHBwZ3R0LCAwLCBwcGd0dC0+YmFzZS50 b3RhbCk7Cj4gKwkJCWdlbjZfd3JpdGVfcGFnZV9yYW5nZShwcGd0dCwgMCwgcHBndHQtPnZtLnRv dGFsKTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0zODQxLDcgKzM4NDAsNyBAQCBpbnQgaTkxNV9n ZW1fZ3R0X3Jlc2VydmUoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAlHRU1fQlVH X09OKCFJU19BTElHTkVEKHNpemUsIEk5MTVfR1RUX1BBR0VfU0laRSkpOwo+ICAJR0VNX0JVR19P TighSVNfQUxJR05FRChvZmZzZXQsIEk5MTVfR1RUX01JTl9BTElHTk1FTlQpKTsKPiAgCUdFTV9C VUdfT04ocmFuZ2Vfb3ZlcmZsb3dzKG9mZnNldCwgc2l6ZSwgdm0tPnRvdGFsKSk7Cj4gLQlHRU1f QlVHX09OKHZtID09ICZ2bS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQtPmJhc2UpOwo+ICsJR0VN X0JVR19PTih2bSA9PSAmdm0tPmk5MTUtPm1tLmFsaWFzaW5nX3BwZ3R0LT52bSk7Cj4gIAlHRU1f QlVHX09OKGRybV9tbV9ub2RlX2FsbG9jYXRlZChub2RlKSk7Cj4gIAo+ICAJbm9kZS0+c2l6ZSA9 IHNpemU7Cj4gQEAgLTM5MzgsNyArMzkzNyw3IEBAIGludCBpOTE1X2dlbV9ndHRfaW5zZXJ0KHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJR0VNX0JVR19PTihzdGFydCA+PSBlbmQp Owo+ICAJR0VNX0JVR19PTihzdGFydCA+IDAgICYmICFJU19BTElHTkVEKHN0YXJ0LCBJOTE1X0dU VF9QQUdFX1NJWkUpKTsKPiAgCUdFTV9CVUdfT04oZW5kIDwgVTY0X01BWCAmJiAhSVNfQUxJR05F RChlbmQsIEk5MTVfR1RUX1BBR0VfU0laRSkpOwo+IC0JR0VNX0JVR19PTih2bSA9PSAmdm0tPmk5 MTUtPm1tLmFsaWFzaW5nX3BwZ3R0LT5iYXNlKTsKPiArCUdFTV9CVUdfT04odm0gPT0gJnZtLT5p OTE1LT5tbS5hbGlhc2luZ19wcGd0dC0+dm0pOwo+ICAJR0VNX0JVR19PTihkcm1fbW1fbm9kZV9h bGxvY2F0ZWQobm9kZSkpOwo+ICAKPiAgCWlmICh1bmxpa2VseShyYW5nZV9vdmVyZmxvd3Moc3Rh cnQsIHNpemUsIGVuZCkpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXgg YWVjNGY3MzU3NGY0Li4xOTdjMmMwNmVjYjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaAo+IEBAIC02NSw3ICs2NSw3IEBAIHR5cGVkZWYgdTY0IGdlbjhfcGRlX3Q7Cj4gIHR5 cGVkZWYgdTY0IGdlbjhfcHBndHRfcGRwZV90Owo+ICB0eXBlZGVmIHU2NCBnZW44X3BwZ3R0X3Bt bDRlX3Q7Cj4gIAo+IC0jZGVmaW5lIGdndHRfdG90YWxfZW50cmllcyhnZ3R0KSAoKGdndHQpLT5i YXNlLnRvdGFsID4+IFBBR0VfU0hJRlQpCj4gKyNkZWZpbmUgZ2d0dF90b3RhbF9lbnRyaWVzKGdn dHQpICgoZ2d0dCktPnZtLnRvdGFsID4+IFBBR0VfU0hJRlQpCj4gIAo+ICAvKiBnZW42LWhzdyBo YXMgYml0IDExLTQgZm9yIHBoeXNpY2FsIGFkZHIgYml0IDM5LTMyICovCj4gICNkZWZpbmUgR0VO Nl9HVFRfQUREUl9FTkNPREUoYWRkcikJKChhZGRyKSB8ICgoKGFkZHIpID4+IDI4KSAmIDB4ZmYw KSkKPiBAQCAtMzY3LDcgKzM2Nyw3IEBAIGk5MTVfdm1faGFzX3NjcmF0Y2hfNjRLKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgKiB0aGUgc3BlYy4KPiAgICovCj4gIHN0cnVjdCBp OTE1X2dndHQgewo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSBiYXNlOwo+ICsJc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSB2bTsKPiAgCj4gIAlzdHJ1Y3QgaW9fbWFwcGluZyBpb21hcDsJ LyogTWFwcGluZyB0byBvdXIgQ1BVIG1hcHBhYmxlIHJlZ2lvbiAqLwo+ICAJc3RydWN0IHJlc291 cmNlIGdtYWRyOyAgICAgICAgICAvKiBHTUFEUiByZXNvdXJjZSAqLwo+IEBAIC0zODUsNyArMzg1 LDcgQEAgc3RydWN0IGk5MTVfZ2d0dCB7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaTkxNV9od19wcGd0 dCB7Cj4gLQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIGJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlIHZtOwo+ICAJc3RydWN0IGtyZWYgcmVmOwo+ICAJc3RydWN0IGRybV9tbV9u b2RlIG5vZGU7Cj4gIAl1bnNpZ25lZCBsb25nIHBkX2RpcnR5X3JpbmdzOwo+IEBAIC01NDMsNyAr NTQzLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9nZ3R0ICoKPiAgaTkxNV92bV90b19n Z3R0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICB7Cj4gIAlHRU1fQlVHX09OKCFp OTE1X2lzX2dndHQodm0pKTsKPiAtCXJldHVybiBjb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1 X2dndHQsIGJhc2UpOwo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfZ2d0 dCwgdm0pOwo+ICB9Cj4gIAo+ICAjZGVmaW5lIElOVEVMX01BWF9QUEFUX0VOVFJJRVMgOAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gaW5kZXggMTAz NmU4Njg2OTE2Li4zMjEwY2VkZmE0NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+IEBAIC0xOTQsNyArMTk0LDcgQEAgaW50IGk5MTVfZ2Vt X3JlbmRlcl9zdGF0ZV9lbWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAJaWYgKElTX0VS Uihzby5vYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKHNvLm9iaik7Cj4gIAo+IC0Jc28udm1hID0g aTkxNV92bWFfaW5zdGFuY2Uoc28ub2JqLCAmZW5naW5lLT5pOTE1LT5nZ3R0LmJhc2UsIE5VTEwp Owo+ICsJc28udm1hID0gaTkxNV92bWFfaW5zdGFuY2Uoc28ub2JqLCAmZW5naW5lLT5pOTE1LT5n Z3R0LnZtLCBOVUxMKTsKPiAgCWlmIChJU19FUlIoc28udm1hKSkgewo+ICAJCWVyciA9IFBUUl9F UlIoc28udm1hKTsKPiAgCQlnb3RvIGVycl9vYmo7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9zaHJpbmtlci5jCj4gaW5kZXggNTc1N2ZiN2M0YjVhLi41NWU4NGU3MWY1MjYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBAQCAtNDgwLDcgKzQ4 MCw3IEBAIGk5MTVfZ2VtX3Nocmlua2VyX3ZtYXAoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwg dW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyCj4gIAo+ICAJLyogV2UgYWxzbyB3YW50IHRv IGNsZWFyIGFueSBjYWNoZWQgaW9tYXBzIGFzIHRoZXkgd3JhcCB2bWFwICovCj4gIAlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LAo+IC0JCQkJICZpOTE1LT5nZ3R0LmJhc2UuaW5h Y3RpdmVfbGlzdCwgdm1fbGluaykgewo+ICsJCQkJICZpOTE1LT5nZ3R0LnZtLmluYWN0aXZlX2xp c3QsIHZtX2xpbmspIHsKPiAgCQl1bnNpZ25lZCBsb25nIGNvdW50ID0gdm1hLT5ub2RlLnNpemUg Pj4gUEFHRV9TSElGVDsKPiAgCQlpZiAodm1hLT5pb21hcCAmJiBpOTE1X3ZtYV91bmJpbmQodm1h KSA9PSAwKQo+ICAJCQlmcmVlZF9wYWdlcyArPSBjb3VudDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zdG9sZW4uYwo+IGluZGV4IGFkOTQ5Y2MzMDkyOC4uNzlhMzQ3Mjk1ZTAwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBAQCAtNjQyLDcgKzY0Miw3 IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJyOwo+ ICAKPiAtCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmdndHQtPmJhc2UsIE5VTEwpOwo+ ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmZ2d0dC0+dm0sIE5VTEwpOwo+ICAJaWYg KElTX0VSUih2bWEpKSB7Cj4gIAkJcmV0ID0gUFRSX0VSUih2bWEpOwo+ICAJCWdvdG8gZXJyX3Bh Z2VzOwo+IEBAIC02NTMsNyArNjUzLDcgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5f Zm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYKPiAgCSAq IHNldHRpbmcgdXAgdGhlIEdUVCBzcGFjZS4gVGhlIGFjdHVhbCByZXNlcnZhdGlvbiB3aWxsIG9j Y3VyCj4gIAkgKiBsYXRlci4KPiAgCSAqLwo+IC0JcmV0ID0gaTkxNV9nZW1fZ3R0X3Jlc2VydmUo JmdndHQtPmJhc2UsICZ2bWEtPm5vZGUsCj4gKwlyZXQgPSBpOTE1X2dlbV9ndHRfcmVzZXJ2ZSgm Z2d0dC0+dm0sICZ2bWEtPm5vZGUsCj4gIAkJCQkgICBzaXplLCBndHRfb2Zmc2V0LCBvYmotPmNh Y2hlX2xldmVsLAo+ICAJCQkJICAgMCk7Cj4gIAlpZiAocmV0KSB7Cj4gQEAgLTY2Niw3ICs2NjYs NyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdgo+ICAJdm1hLT5wYWdlcyA9IG9iai0+bW0ucGFn ZXM7Cj4gIAl2bWEtPmZsYWdzIHw9IEk5MTVfVk1BX0dMT0JBTF9CSU5EOwo+ICAJX19pOTE1X3Zt YV9zZXRfbWFwX2FuZF9mZW5jZWFibGUodm1hKTsKPiAtCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZt X2xpbmssICZnZ3R0LT5iYXNlLmluYWN0aXZlX2xpc3QpOwo+ICsJbGlzdF9tb3ZlX3RhaWwoJnZt YS0+dm1fbGluaywgJmdndHQtPnZtLmluYWN0aXZlX2xpc3QpOwo+ICAKPiAgCXNwaW5fbG9jaygm ZGV2X3ByaXYtPm1tLm9ial9sb2NrKTsKPiAgCWxpc3RfbW92ZV90YWlsKCZvYmotPm1tLmxpbmss ICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jCj4gaW5kZXggNDc3MjE0MzdhNGM1Li5jZDA5YTE2ODgxOTIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAtOTczLDggKzk3Myw3IEBAIGk5MTVfZXJy b3Jfb2JqZWN0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQl2b2lk IF9faW9tZW0gKnM7Cj4gIAkJaW50IHJldDsKPiAgCj4gLQkJZ2d0dC0+YmFzZS5pbnNlcnRfcGFn ZSgmZ2d0dC0+YmFzZSwgZG1hLCBzbG90LAo+IC0JCQkJICAgICAgIEk5MTVfQ0FDSEVfTk9ORSwg MCk7Cj4gKwkJZ2d0dC0+dm0uaW5zZXJ0X3BhZ2UoJmdndHQtPnZtLCBkbWEsIHNsb3QsIEk5MTVf Q0FDSEVfTk9ORSwgMCk7Cj4gIAo+ICAJCXMgPSBpb19tYXBwaW5nX21hcF9hdG9taWNfd2MoJmdn dHQtPmlvbWFwLCBzbG90KTsKPiAgCQlyZXQgPSBjb21wcmVzc19wYWdlKCZjb21wcmVzcywgKHZv aWQgIF9fZm9yY2UgKilzLCBkc3QpOwo+IEBAIC05OTMsNyArOTkyLDcgQEAgaTkxNV9lcnJvcl9v YmplY3RfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAKPiAgb3V0Ogo+ ICAJY29tcHJlc3NfZmluaSgmY29tcHJlc3MsIGRzdCk7Cj4gLQlnZ3R0LT5iYXNlLmNsZWFyX3Jh bmdlKCZnZ3R0LT5iYXNlLCBzbG90LCBQQUdFX1NJWkUpOwo+ICsJZ2d0dC0+dm0uY2xlYXJfcmFu Z2UoJmdndHQtPnZtLCBzbG90LCBQQUdFX1NJWkUpOwo+ICAJcmV0dXJuIGRzdDsKPiAgfQo+ICAK PiBAQCAtMTQ2Niw3ICsxNDY1LDcgQEAgc3RhdGljIHZvaWQgZ2VtX3JlY29yZF9yaW5ncyhzdHJ1 Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4ID0gcmVxdWVzdC0+Z2VtX2NvbnRleHQ7Cj4gIAkJCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n Owo+ICAKPiAtCQkJZWUtPnZtID0gY3R4LT5wcGd0dCA/ICZjdHgtPnBwZ3R0LT5iYXNlIDogJmdn dHQtPmJhc2U7Cj4gKwkJCWVlLT52bSA9IGN0eC0+cHBndHQgPyAmY3R4LT5wcGd0dC0+dm0gOiAm Z2d0dC0+dm07Cj4gIAo+ICAJCQlyZWNvcmRfY29udGV4dCgmZWUtPmNvbnRleHQsIGN0eCk7Cj4g IAo+IEBAIC0xNTY0LDcgKzE1NjMsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX2FjdGl2ZV9idWZm ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4gIAo+ICBzdGF0aWMgdm9pZCBjYXB0 dXJlX3Bpbm5lZF9idWZmZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IpCj4gIHsKPiAt CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmVycm9yLT5pOTE1LT5nZ3R0LmJhc2U7 Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZlcnJvci0+aTkxNS0+Z2d0dC52 bTsKPiAgCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmJvOwo+ICAJc3RydWN0IGk5MTVf dm1hICp2bWE7Cj4gIAlpbnQgY291bnRfaW5hY3RpdmUsIGNvdW50X2FjdGl2ZTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV90cmFjZS5oCj4gaW5kZXggNWQ0Zjc4NzY1MDgzLi4wMzI5OWJhZTQ1YTIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gQEAgLTkzNiw3ICs5MzYsNyBAQCBERUNM QVJFX0VWRU5UX0NMQVNTKGk5MTVfY29udGV4dCwKPiAgCQkJX19lbnRyeS0+ZGV2ID0gY3R4LT5p OTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Cj4gIAkJCV9fZW50cnktPmN0eCA9IGN0eDsKPiAgCQkJ X19lbnRyeS0+aHdfaWQgPSBjdHgtPmh3X2lkOwo+IC0JCQlfX2VudHJ5LT52bSA9IGN0eC0+cHBn dHQgPyAmY3R4LT5wcGd0dC0+YmFzZSA6IE5VTEw7Cj4gKwkJCV9fZW50cnktPnZtID0gY3R4LT5w cGd0dCA/ICZjdHgtPnBwZ3R0LT52bSA6IE5VTEw7Cj4gIAkpLAo+ICAKPiAgCVRQX3ByaW50aygi ZGV2PSV1LCBjdHg9JXAsIGN0eF92bT0lcCwgaHdfaWQ9JXUiLAo+IEBAIC05NzUsNyArOTc1LDcg QEAgVFJBQ0VfRVZFTlQoc3dpdGNoX21tLAo+ICAJVFBfZmFzdF9hc3NpZ24oCj4gIAkJCV9fZW50 cnktPnJpbmcgPSBlbmdpbmUtPmlkOwo+ICAJCQlfX2VudHJ5LT50byA9IHRvOwo+IC0JCQlfX2Vu dHJ5LT52bSA9IHRvLT5wcGd0dD8gJnRvLT5wcGd0dC0+YmFzZSA6IE5VTEw7Cj4gKwkJCV9fZW50 cnktPnZtID0gdG8tPnBwZ3R0PyAmdG8tPnBwZ3R0LT52bSA6IE5VTEw7Cj4gIAkJCV9fZW50cnkt PmRldiA9IGVuZ2luZS0+aTkxNS0+ZHJtLnByaW1hcnktPmluZGV4Owo+ICAJKSwKPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92Z3B1LmMKPiBpbmRleCA1ZmU5ZjNmMzk0NjcuLjg2OWNmNGEzYjZkZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4gQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0 aWMgdm9pZCB2Z3RfZGViYWxsb29uX3NwYWNlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsCj4gIAkJ CSBub2RlLT5zdGFydCArIG5vZGUtPnNpemUsCj4gIAkJCSBub2RlLT5zaXplIC8gMTAyNCk7Cj4g IAo+IC0JZ2d0dC0+YmFzZS5yZXNlcnZlZCAtPSBub2RlLT5zaXplOwo+ICsJZ2d0dC0+dm0ucmVz ZXJ2ZWQgLT0gbm9kZS0+c2l6ZTsKPiAgCWRybV9tbV9yZW1vdmVfbm9kZShub2RlKTsKPiAgfQo+ ICAKPiBAQCAtMTQxLDExICsxNDEsMTEgQEAgc3RhdGljIGludCB2Z3RfYmFsbG9vbl9zcGFjZShz dHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LAo+ICAKPiAgCURSTV9JTkZPKCJiYWxsb29uIHNwYWNlOiBy YW5nZSBbIDB4JWx4IC0gMHglbHggXSAlbHUgS2lCLlxuIiwKPiAgCQkgc3RhcnQsIGVuZCwgc2l6 ZSAvIDEwMjQpOwo+IC0JcmV0ID0gaTkxNV9nZW1fZ3R0X3Jlc2VydmUoJmdndHQtPmJhc2UsIG5v ZGUsCj4gKwlyZXQgPSBpOTE1X2dlbV9ndHRfcmVzZXJ2ZSgmZ2d0dC0+dm0sIG5vZGUsCj4gIAkJ CQkgICBzaXplLCBzdGFydCwgSTkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiAgCQkJCSAgIDApOwo+ ICAJaWYgKCFyZXQpCj4gLQkJZ2d0dC0+YmFzZS5yZXNlcnZlZCArPSBzaXplOwo+ICsJCWdndHQt PnZtLnJlc2VydmVkICs9IHNpemU7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xOTcs NyArMTk3LDcgQEAgc3RhdGljIGludCB2Z3RfYmFsbG9vbl9zcGFjZShzdHJ1Y3QgaTkxNV9nZ3R0 ICpnZ3R0LAo+ICBpbnQgaW50ZWxfdmd0X2JhbGxvb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5n Z3R0Owo+IC0JdW5zaWduZWQgbG9uZyBnZ3R0X2VuZCA9IGdndHQtPmJhc2UudG90YWw7Cj4gKwl1 bnNpZ25lZCBsb25nIGdndHRfZW5kID0gZ2d0dC0+dm0udG90YWw7Cj4gIAo+ICAJdW5zaWduZWQg bG9uZyBtYXBwYWJsZV9iYXNlLCBtYXBwYWJsZV9zaXplLCBtYXBwYWJsZV9lbmQ7Cj4gIAl1bnNp Z25lZCBsb25nIHVubWFwcGFibGVfYmFzZSwgdW5tYXBwYWJsZV9zaXplLCB1bm1hcHBhYmxlX2Vu ZDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBpbmRleCA5MzI0ZDQ3NmUwYTcuLmU4ZjA3Y2Rj YTA2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+IEBAIC04NSw3ICs4NSw3IEBAIHZt YV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCWludCBpOwo+ICAK PiAgCS8qIFRoZSBhbGlhc2luZ19wcGd0dCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBkaXJlY3RseSEg Ki8KPiAtCUdFTV9CVUdfT04odm0gPT0gJnZtLT5pOTE1LT5tbS5hbGlhc2luZ19wcGd0dC0+YmFz ZSk7Cj4gKwlHRU1fQlVHX09OKHZtID09ICZ2bS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQtPnZt KTsKPiAgCj4gIAl2bWEgPSBrbWVtX2NhY2hlX3phbGxvYyh2bS0+aTkxNS0+dm1hcywgR0ZQX0tF Uk5FTCk7Cj4gIAlpZiAodm1hID09IE5VTEwpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKPiBpbmRleCAxMzQ0OGVhNzZmNTcuLjJlYzJlNjBkYzY3MCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTUxNSw3ICs1MTUsNyBAQCBpbnQg aW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgaW50IHNpemUpCj4gIAkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPiAgCX0KPiAgCj4gLQl2bWEg PSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZlbmdpbmUtPmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7 Cj4gKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZlbmdpbmUtPmk5MTUtPmdndHQudm0s IE5VTEwpOwo+ICAJaWYgKElTX0VSUih2bWEpKSB7Cj4gIAkJcmV0ID0gUFRSX0VSUih2bWEpOwo+ ICAJCWdvdG8gZXJyX3VucmVmOwo+IEBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIGludCBpbml0 X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWlmIChyZXQp Cj4gIAkJZ290byBlcnI7Cj4gIAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmZW5n aW5lLT5pOTE1LT5nZ3R0LmJhc2UsIE5VTEwpOwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uo b2JqLCAmZW5naW5lLT5pOTE1LT5nZ3R0LnZtLCBOVUxMKTsKPiAgCWlmIChJU19FUlIodm1hKSkg ewo+ICAJCXJldCA9IFBUUl9FUlIodm1hKTsKPiAgCQlnb3RvIGVycjsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWMuYwo+IGluZGV4IGUyOGE5OTZiOTYwNC4uMjlmZDk1YzEzMDZiIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmMKPiBAQCAtNTcwLDcgKzU3MCw3IEBAIHN0cnVjdCBpOTE1X3Zt YSAqaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBzaXpl KQo+ICAJaWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBFUlJfQ0FTVChvYmopOwo+ICAKPiAt CXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmRldl9wcml2LT5nZ3R0LmJhc2UsIE5VTEwp Owo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmZGV2X3ByaXYtPmdndHQudm0sIE5V TEwpOwo+ICAJaWYgKElTX0VSUih2bWEpKQo+ICAJCWdvdG8gZXJyOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCAxMzMzNjdhMTc4NjMu LmUyNzFlMjk2YjlkYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uYwo+IEBAIC01MzYsNyArNTM2LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZF9yZXF1 ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAq Lwo+ICBzdGF0aWMgdm9pZCBmbHVzaF9nZ3R0X3dyaXRlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNSh2bWEt Pm9iai0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dm1hLT52bS0+aTkxNTsKPiAgCj4gIAlpZiAoaTkxNV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUo dm1hKSkKPiAgCQlQT1NUSU5HX1JFQURfRlcoR1VDX1NUQVRVUyk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCBlYjI1YWZhOTY5NGYuLjA5MWUyOGYwZTAyNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGF0aWMgdTY0IGV4ZWNs aXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgCSAqIFBNTDQg aXMgYWxsb2NhdGVkIGR1cmluZyBwcGd0dCBpbml0LCBzbyB0aGlzIGlzIG5vdCBuZWVkZWQKPiAg CSAqIGluIDQ4LWJpdCBtb2RlLgo+ICAJICovCj4gLQlpZiAocHBndHQgJiYgIWk5MTVfdm1faXNf NDhiaXQoJnBwZ3R0LT5iYXNlKSkKPiArCWlmIChwcGd0dCAmJiAhaTkxNV92bV9pc180OGJpdCgm cHBndHQtPnZtKSkKPiAgCQlleGVjbGlzdHNfdXBkYXRlX2NvbnRleHRfcGRwcyhwcGd0dCwgcmVn X3N0YXRlKTsKPiAgCj4gIAlyZXR1cm4gY2UtPmxyY19kZXNjOwo+IEBAIC0xNjcxLDcgKzE2NzEs NyBAQCBzdGF0aWMgaW50IGxyY19zZXR1cF93YV9jdHgoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAJaWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4g IAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmZW5naW5lLT5pOTE1LT5nZ3R0LmJh c2UsIE5VTEwpOwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmZW5naW5lLT5pOTE1 LT5nZ3R0LnZtLCBOVUxMKTsKPiAgCWlmIChJU19FUlIodm1hKSkgewo+ICAJCWVyciA9IFBUUl9F UlIodm1hKTsKPiAgCQlnb3RvIGVycjsKPiBAQCAtMjA2OSw3ICsyMDY5LDcgQEAgc3RhdGljIGlu dCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gIAkgKiBub3Qg bmVlZGVkIGluIDQ4LWJpdC4qLwo+ICAJaWYgKHJxLT5nZW1fY29udGV4dC0+cHBndHQgJiYKPiAg CSAgICAoaW50ZWxfZW5naW5lX2ZsYWcocnEtPmVuZ2luZSkgJiBycS0+Z2VtX2NvbnRleHQtPnBw Z3R0LT5wZF9kaXJ0eV9yaW5ncykgJiYKPiAtCSAgICAhaTkxNV92bV9pc180OGJpdCgmcnEtPmdl bV9jb250ZXh0LT5wcGd0dC0+YmFzZSkgJiYKPiArCSAgICAhaTkxNV92bV9pc180OGJpdCgmcnEt PmdlbV9jb250ZXh0LT5wcGd0dC0+dm0pICYmCj4gIAkgICAgIWludGVsX3ZncHVfYWN0aXZlKHJx LT5pOTE1KSkgewo+ICAJCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3BkcHMocnEpOwo+ ICAJCWlmIChyZXQpCj4gQEAgLTI2NjcsNyArMjY2Nyw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCj4gIAlDVFhfUkVHKHJlZ3MsIENUWF9QRFAwX1VE VywgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCAwKSwgMCk7Cj4gIAlDVFhfUkVHKHJlZ3MsIENU WF9QRFAwX0xEVywgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCAwKSwgMCk7Cj4gIAo+IC0JaWYg KHBwZ3R0ICYmIGk5MTVfdm1faXNfNDhiaXQoJnBwZ3R0LT5iYXNlKSkgewo+ICsJaWYgKHBwZ3R0 ICYmIGk5MTVfdm1faXNfNDhiaXQoJnBwZ3R0LT52bSkpIHsKPiAgCQkvKiA2NGIgUFBHVFQgKDQ4 Yml0IGNhbm9uaWNhbCkKPiAgCQkgKiBQRFAwX0RFU0NSSVBUT1IgY29udGFpbnMgdGhlIGJhc2Ug YWRkcmVzcyB0byBQTUw0IGFuZAo+ICAJCSAqIG90aGVyIFBEUCBEZXNjcmlwdG9ycyBhcmUgaWdu b3JlZC4KPiBAQCAtMjc3Myw3ICsyNzczLDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4 dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAJCWdvdG8g ZXJyb3JfZGVyZWZfb2JqOwo+ICAJfQo+ICAKPiAtCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKGN0 eF9vYmosICZjdHgtPmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7Cj4gKwl2bWEgPSBpOTE1X3ZtYV9p bnN0YW5jZShjdHhfb2JqLCAmY3R4LT5pOTE1LT5nZ3R0LnZtLCBOVUxMKTsKPiAgCWlmIChJU19F UlIodm1hKSkgewo+ICAJCXJldCA9IFBUUl9FUlIodm1hKTsKPiAgCQlnb3RvIGVycm9yX2RlcmVm X29iajsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggOTdi MzhiYmI3Y2UyLi5mYTUxN2EzZTNjMjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jCj4gQEAgLTExMjMsNyArMTEyMyw3IEBAIGludGVsX3JpbmdfY3JlYXRlX3Zt YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBzaXplKQo+ICAJLyogbWFy ayByaW5nIGJ1ZmZlcnMgYXMgcmVhZC1vbmx5IGZyb20gR1BVIHNpZGUgYnkgZGVmYXVsdCAqLwo+ ICAJb2JqLT5ndF9ybyA9IDE7Cj4gIAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAm ZGV2X3ByaXYtPmdndHQuYmFzZSwgTlVMTCk7Cj4gKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShv YmosICZkZXZfcHJpdi0+Z2d0dC52bSwgTlVMTCk7Cj4gIAlpZiAoSVNfRVJSKHZtYSkpCj4gIAkJ Z290byBlcnI7Cj4gIAo+IEBAIC0xMjc5LDcgKzEyNzksNyBAQCBhbGxvY19jb250ZXh0X3ZtYShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkJaTkxNV9nZW1fb2JqZWN0X3NldF9j YWNoZV9sZXZlbChvYmosIEk5MTVfQ0FDSEVfTDNfTExDKTsKPiAgCX0KPiAgCj4gLQl2bWEgPSBp OTE1X3ZtYV9pbnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LmJhc2UsIE5VTEwpOwo+ICsJdm1hID0g aTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC52bSwgTlVMTCk7Cj4gIAlpZiAoSVNf RVJSKHZtYSkpIHsKPiAgCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gIAkJZ290byBlcnJfb2JqOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IGluZGV4IDkx YzcyOTExYmUzYy4uMDFhYjYwZjFhN2U4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gQEAgLTMzOCw3ICszMzgsNyBAQCBmYWtlX2h1Z2VfcGFn ZXNfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1NjQgc2l6ZSwgYm9vbCBz aW5nbGUpCj4gIAo+ICBzdGF0aWMgaW50IGlndF9jaGVja19wYWdlX3NpemVzKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5 MTUodm1hLT5vYmotPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdm1hLT52bS0+aTkxNTsKPiAgCXVuc2lnbmVkIGludCBzdXBwb3J0ZWQgPSBJTlRFTF9JTkZP KGk5MTUpLT5wYWdlX3NpemVzOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IHZtYS0+b2JqOwo+ICAJaW50IGVyciA9IDA7Cj4gQEAgLTM3OSw3ICszNzksNyBAQCBzdGF0aWMg aW50IGlndF9jaGVja19wYWdlX3NpemVzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICBzdGF0aWMg aW50IGlndF9tb2NrX2V4aGF1c3RfZGV2aWNlX3N1cHBvcnRlZF9wYWdlcyh2b2lkICphcmcpCj4g IHsKPiAgCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IGFyZzsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gcHBndHQtPmJhc2UuaTkxNTsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gcHBndHQtPnZtLmk5MTU7Cj4gIAl1bnNpZ25lZCBpbnQgc2F2ZWRf bWFzayA9IElOVEVMX0lORk8oaTkxNSktPnBhZ2Vfc2l6ZXM7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gQEAgLTQxNSw3ICs0 MTUsNyBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2V4aGF1c3RfZGV2aWNlX3N1cHBvcnRlZF9wYWdl cyh2b2lkICphcmcpCj4gIAkJCQlnb3RvIG91dF9wdXQ7Cj4gIAkJCX0KPiAgCj4gLQkJCXZtYSA9 IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJnBwZ3R0LT5iYXNlLCBOVUxMKTsKPiArCQkJdm1hID0g aTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBndHQtPnZtLCBOVUxMKTsKPiAgCQkJaWYgKElTX0VS Uih2bWEpKSB7Cj4gIAkJCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gIAkJCQlnb3RvIG91dF9wdXQ7 Cj4gQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2V4aGF1c3RfZGV2aWNl X3N1cHBvcnRlZF9wYWdlcyh2b2lkICphcmcpCj4gIHN0YXRpYyBpbnQgaWd0X21vY2tfcHBndHRf bWlzYWxpZ25lZF9kbWEodm9pZCAqYXJnKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQgPSBhcmc7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHBwZ3R0LT5i YXNlLmk5MTU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHBwZ3R0LT52bS5p OTE1Owo+ICAJdW5zaWduZWQgbG9uZyBzdXBwb3J0ZWQgPSBJTlRFTF9JTkZPKGk5MTUpLT5wYWdl X3NpemVzOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCWludCBiaXQ7 Cj4gQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3BwZ3R0X21pc2FsaWdu ZWRfZG1hKHZvaWQgKmFyZykKPiAgCQkvKiBGb3JjZSB0aGUgcGFnZSBzaXplIGZvciB0aGlzIG9i amVjdCAqLwo+ICAJCW9iai0+bW0ucGFnZV9zaXplcy5zZyA9IHBhZ2Vfc2l6ZTsKPiAgCj4gLQkJ dm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBndHQtPmJhc2UsIE5VTEwpOwo+ICsJCXZt YSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJnBwZ3R0LT52bSwgTlVMTCk7Cj4gIAkJaWYgKElT X0VSUih2bWEpKSB7Cj4gIAkJCWVyciA9IFBUUl9FUlIodm1hKTsKPiAgCQkJZ290byBvdXRfdW5w aW47Cj4gQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZV9vYmplY3RfbGlzdChz dHJ1Y3QgbGlzdF9oZWFkICpvYmplY3RzLAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9i aiwgb24sIG9iamVjdHMsIHN0X2xpbmspIHsKPiAgCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAg Cj4gLQkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBndHQtPmJhc2UsIE5VTEwpOwo+ ICsJCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJnBwZ3R0LT52bSwgTlVMTCk7Cj4gIAkJ aWYgKCFJU19FUlIodm1hKSkKPiAgCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKPiAgCj4gQEAgLTYw NCw4ICs2MDQsOCBAQCBzdGF0aWMgdm9pZCBjbG9zZV9vYmplY3RfbGlzdChzdHJ1Y3QgbGlzdF9o ZWFkICpvYmplY3RzLAo+ICBzdGF0aWMgaW50IGlndF9tb2NrX3BwZ3R0X2h1Z2VfZmlsbCh2b2lk ICphcmcpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IGFyZzsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcHBndHQtPmJhc2UuaTkxNTsKPiAtCXVuc2ln bmVkIGxvbmcgbWF4X3BhZ2VzID0gcHBndHQtPmJhc2UudG90YWwgPj4gUEFHRV9TSElGVDsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcHBndHQtPnZtLmk5MTU7Cj4gKwl1bnNp Z25lZCBsb25nIG1heF9wYWdlcyA9IHBwZ3R0LT52bS50b3RhbCA+PiBQQUdFX1NISUZUOwo+ICAJ dW5zaWduZWQgbG9uZyBwYWdlX251bTsKPiAgCWJvb2wgc2luZ2xlID0gZmFsc2U7Cj4gIAlMSVNU X0hFQUQob2JqZWN0cyk7Cj4gQEAgLTY0MSw3ICs2NDEsNyBAQCBzdGF0aWMgaW50IGlndF9tb2Nr X3BwZ3R0X2h1Z2VfZmlsbCh2b2lkICphcmcpCj4gIAo+ICAJCWxpc3RfYWRkKCZvYmotPnN0X2xp bmssICZvYmplY3RzKTsKPiAgCj4gLQkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBn dHQtPmJhc2UsIE5VTEwpOwo+ICsJCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJnBwZ3R0 LT52bSwgTlVMTCk7Cj4gIAkJaWYgKElTX0VSUih2bWEpKSB7Cj4gIAkJCWVyciA9IFBUUl9FUlIo dm1hKTsKPiAgCQkJYnJlYWs7Cj4gQEAgLTcyNSw3ICs3MjUsNyBAQCBzdGF0aWMgaW50IGlndF9t b2NrX3BwZ3R0X2h1Z2VfZmlsbCh2b2lkICphcmcpCj4gIHN0YXRpYyBpbnQgaWd0X21vY2tfcHBn dHRfNjRLKHZvaWQgKmFyZykKPiAgewo+ICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0g YXJnOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBwcGd0dC0+YmFzZS5pOTE1 Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBwcGd0dC0+dm0uaTkxNTsKPiAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gIAljb25zdCBzdHJ1Y3Qgb2JqZWN0 X2luZm8gewo+ICAJCXVuc2lnbmVkIGludCBzaXplOwo+IEBAIC04MTksNyArODE5LDcgQEAgc3Rh dGljIGludCBpZ3RfbW9ja19wcGd0dF82NEsodm9pZCAqYXJnKQo+ICAJCQkgKi8KPiAgCQkJb2Jq LT5tbS5wYWdlX3NpemVzLnNnICY9IH5JOTE1X0dUVF9QQUdFX1NJWkVfMk07Cj4gIAo+IC0JCQl2 bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZwcGd0dC0+YmFzZSwgTlVMTCk7Cj4gKwkJCXZt YSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJnBwZ3R0LT52bSwgTlVMTCk7Cj4gIAkJCWlmIChJ U19FUlIodm1hKSkgewo+ICAJCQkJZXJyID0gUFRSX0VSUih2bWEpOwo+ICAJCQkJZ290byBvdXRf b2JqZWN0X3VucGluOwo+IEBAIC04ODcsOCArODg3LDggQEAgc3RhdGljIGludCBpZ3RfbW9ja19w cGd0dF82NEsodm9pZCAqYXJnKQo+ICBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoKPiAgZ3B1X3dy aXRlX2R3KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgb2Zmc2V0LCB1MzIgdmFsKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUodm1hLT5vYmotPmJhc2Uu ZGV2KTsKPiAtCWNvbnN0IGludCBnZW4gPSBJTlRFTF9HRU4odm1hLT52bS0+aTkxNSk7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHZtYS0+dm0tPmk5MTU7Cj4gKwljb25zdCBp bnQgZ2VuID0gSU5URUxfR0VOKGk5MTUpOwo+ICAJdW5zaWduZWQgaW50IGNvdW50ID0gdm1hLT5z aXplID4+IFBBR0VfU0hJRlQ7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ ICAJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKPiBAQCAtMTA0Nyw3ICsxMDQ3LDggQEAgc3RhdGlj IGludCBfX2lndF93cml0ZV9odWdlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gIAkJ CSAgICB1MzIgZHdvcmQsIHUzMiB2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtID0gY3R4LT5wcGd0dCA/ICZjdHgtPnBwZ3R0LT5iYXNlIDogJmk5MTUtPmdndHQu YmFzZTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0KPiArCQljdHgtPnBwZ3R0 ID8gJmN0eC0+cHBndHQtPnZtIDogJmk5MTUtPmdndHQudm07Cj4gIAl1bnNpZ25lZCBpbnQgZmxh Z3MgPSBQSU5fVVNFUiB8IFBJTl9PRkZTRVRfRklYRUQ7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKPiAgCWludCBlcnI7Cj4gQEAgLTExMDAsNyArMTEwMSw4IEBAIHN0YXRpYyBpbnQgaWd0X3dy aXRlX2h1Z2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgCQkJICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSA9IGN0eC0+cHBndHQgPyAmY3R4LT5wcGd0dC0+YmFzZSA6ICZpOTE1LT5nZ3R0LmJh c2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9Cj4gKwkJY3R4LT5wcGd0dCA/ ICZjdHgtPnBwZ3R0LT52bSA6ICZpOTE1LT5nZ3R0LnZtOwo+ICAJc3RhdGljIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZXNbSTkxNV9OVU1fRU5HSU5FU107Cj4gIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7Cj4gIAlJOTE1X1JORF9TVEFURShwcm5nKTsKPiBAQCAtMTQzOSw3 ICsxNDQxLDcgQEAgc3RhdGljIGludCBpZ3RfcHBndHRfcGluX3VwZGF0ZSh2b2lkICphcmcpCj4g IAkJaWYgKElTX0VSUihvYmopKQo+ICAJCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+ICAKPiAtCQl2 bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZwcGd0dC0+YmFzZSwgTlVMTCk7Cj4gKwkJdm1h ID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBndHQtPnZtLCBOVUxMKTsKPiAgCQlpZiAoSVNf RVJSKHZtYSkpIHsKPiAgCQkJZXJyID0gUFRSX0VSUih2bWEpOwo+ICAJCQlnb3RvIG91dF9wdXQ7 Cj4gQEAgLTE0OTMsNyArMTQ5NSw3IEBAIHN0YXRpYyBpbnQgaWd0X3BwZ3R0X3Bpbl91cGRhdGUo dm9pZCAqYXJnKQo+ICAJaWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7 Cj4gIAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBndHQtPmJhc2UsIE5VTEwp Owo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmcHBndHQtPnZtLCBOVUxMKTsKPiAg CWlmIChJU19FUlIodm1hKSkgewo+ICAJCWVyciA9IFBUUl9FUlIodm1hKTsKPiAgCQlnb3RvIG91 dF9wdXQ7Cj4gQEAgLTE1MzEsNyArMTUzMyw4IEBAIHN0YXRpYyBpbnQgaWd0X3RtcGZzX2ZhbGxi YWNrKHZvaWQgKmFyZykKPiAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBhcmc7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKPiAgCXN0cnVjdCB2 ZnNtb3VudCAqZ2VtZnMgPSBpOTE1LT5tbS5nZW1mczsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtID0gY3R4LT5wcGd0dCA/ICZjdHgtPnBwZ3R0LT5iYXNlIDogJmk5MTUtPmdndHQu YmFzZTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0KPiArCQljdHgtPnBwZ3R0 ID8gJmN0eC0+cHBndHQtPnZtIDogJmk5MTUtPmdndHQudm07Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAl1MzIgKnZhZGRy Owo+IEBAIC0xNTg3LDcgKzE1OTAsOCBAQCBzdGF0aWMgaW50IGlndF9zaHJpbmtfdGhwKHZvaWQg KmFyZykKPiAgewo+ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGFyZzsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1Owo+IC0Jc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0gPSBjdHgtPnBwZ3R0ID8gJmN0eC0+cHBndHQtPmJhc2UgOiAmaTkx NS0+Z2d0dC5iYXNlOwo+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPQo+ICsJICAg ICAgIAljdHgtPnBwZ3R0ID8gJmN0eC0+cHBndHQtPnZtIDogJmk5MTUtPmdndHQudm07Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7 Cj4gIAl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBQSU5fVVNFUjsKPiBAQCAtMTY5NiwxNCArMTcwMCwx NCBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gIAkJZ290 byBvdXRfdW5sb2NrOwo+ICAJfQo+ICAKPiAtCWlmICghaTkxNV92bV9pc180OGJpdCgmcHBndHQt PmJhc2UpKSB7Cj4gKwlpZiAoIWk5MTVfdm1faXNfNDhiaXQoJnBwZ3R0LT52bSkpIHsKPiAgCQlw cl9lcnIoImZhaWxlZCB0byBjcmVhdGUgNDhiIFBQR1RUXG4iKTsKPiAgCQllcnIgPSAtRUlOVkFM Owo+ICAJCWdvdG8gb3V0X2Nsb3NlOwo+ICAJfQo+ICAKPiAgCS8qIElmIHdlIHdlcmUgZXZlciBo aXQgdGhpcyB0aGVuIGl0J3MgdGltZSB0byBtb2NrIHRoZSA2NEsgc2NyYXRjaCAqLwo+IC0JaWYg KCFpOTE1X3ZtX2hhc19zY3JhdGNoXzY0SygmcHBndHQtPmJhc2UpKSB7Cj4gKwlpZiAoIWk5MTVf dm1faGFzX3NjcmF0Y2hfNjRLKCZwcGd0dC0+dm0pKSB7Cj4gIAkJcHJfZXJyKCJQUEdUVCBtaXNz aW5nIDY0SyBzY3JhdGNoIHBhZ2VcbiIpOwo+ICAJCWVyciA9IC1FSU5WQUw7Cj4gIAkJZ290byBv dXRfY2xvc2U7Cj4gQEAgLTE3MTIsNyArMTcxNiw3IEBAIGludCBpOTE1X2dlbV9odWdlX3BhZ2Vf bW9ja19zZWxmdGVzdHModm9pZCkKPiAgCWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMsIHBwZ3R0 KTsKPiAgCj4gIG91dF9jbG9zZToKPiAtCWk5MTVfcHBndHRfY2xvc2UoJnBwZ3R0LT5iYXNlKTsK PiArCWk5MTVfcHBndHRfY2xvc2UoJnBwZ3R0LT52bSk7Cj4gIAlpOTE1X3BwZ3R0X3B1dChwcGd0 dCk7Cj4gIAo+ICBvdXRfdW5sb2NrOgo+IEBAIC0xNzU4LDcgKzE3NjIsNyBAQCBpbnQgaTkxNV9n ZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCX0KPiAgCj4gIAlpZiAoY3R4LT5wcGd0dCkKPiAtCQljdHgtPnBwZ3R0LT5iYXNl LnNjcnViXzY0SyA9IHRydWU7Cj4gKwkJY3R4LT5wcGd0dC0+dm0uc2NydWJfNjRLID0gdHJ1ZTsK PiAgCj4gIAllcnIgPSBpOTE1X3N1YnRlc3RzKHRlc3RzLCBjdHgpOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBi MzkzOTJhMDBhNmYuLjcwOGU4ZDcyMTQ0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0xMTUsNyArMTE1LDcgQEAg c3RhdGljIGludCBncHVfZmlsbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRl dik7Cj4gIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9Cj4gLQkJY3R4LT5wcGd0dCA/ ICZjdHgtPnBwZ3R0LT5iYXNlIDogJmk5MTUtPmdndHQuYmFzZTsKPiArCQljdHgtPnBwZ3R0ID8g JmN0eC0+cHBndHQtPnZtIDogJmk5MTUtPmdndHQudm07Cj4gIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycTsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJc3RydWN0IGk5MTVfdm1hICpiYXRj aDsKPiBAQCAtMjkwLDcgKzI5MCw3IEBAIGNyZWF0ZV90ZXN0X29iamVjdChzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq Owo+ICAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPQo+IC0JCWN0eC0+cHBndHQgPyAm Y3R4LT5wcGd0dC0+YmFzZSA6ICZjdHgtPmk5MTUtPmdndHQuYmFzZTsKPiArCQljdHgtPnBwZ3R0 ID8gJmN0eC0+cHBndHQtPnZtIDogJmN0eC0+aTkxNS0+Z2d0dC52bTsKPiAgCXU2NCBzaXplOwo+ ICAJaW50IGVycjsKPiAgCj4gQEAgLTU1Nyw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IGZha2VfYWxp YXNpbmdfcHBndHRfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJbGlz dF9mb3JfZWFjaF9lbnRyeShvYmosICZpOTE1LT5tbS5ib3VuZF9saXN0LCBtbS5saW5rKSB7Cj4g IAkJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAo+IC0JCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNl KG9iaiwgJmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7Cj4gKwkJdm1hID0gaTkxNV92bWFfaW5zdGFu Y2Uob2JqLCAmaTkxNS0+Z2d0dC52bSwgTlVMTCk7Cj4gIAkJaWYgKElTX0VSUih2bWEpKQo+ICAJ CQljb250aW51ZTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9ldmljdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2V2aWN0LmMKPiBpbmRleCBhYjlkN2JlZTBhYWUuLjJkYzcyYTk4NGQ0NSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4g QEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGludCBwb3B1bGF0ZV9nZ3R0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICAJdTY0IHNpemU7Cj4gIAo+ICAJZm9yIChzaXplID0gMDsKPiAt CSAgICAgc2l6ZSArIEk5MTVfR1RUX1BBR0VfU0laRSA8PSBpOTE1LT5nZ3R0LmJhc2UudG90YWw7 Cj4gKwkgICAgIHNpemUgKyBJOTE1X0dUVF9QQUdFX1NJWkUgPD0gaTkxNS0+Z2d0dC52bS50b3Rh bDsKPiAgCSAgICAgc2l6ZSArPSBJOTE1X0dUVF9QQUdFX1NJWkUpIHsKPiAgCQlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKPiAgCj4gQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGludCBwb3B1bGF0ZV9n Z3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICAJfQo+ICAKPiAtCWlmIChsaXN0X2VtcHR5KCZpOTE1LT5nZ3R0LmJhc2UuaW5hY3RpdmVfbGlz dCkpIHsKPiArCWlmIChsaXN0X2VtcHR5KCZpOTE1LT5nZ3R0LnZtLmluYWN0aXZlX2xpc3QpKSB7 Cj4gIAkJcHJfZXJyKCJObyBvYmplY3RzIG9uIHRoZSBHR1RUIGluYWN0aXZlIGxpc3QhXG4iKTsK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9p ZCB1bnBpbl9nZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJmk5MTUt PmdndHQuYmFzZS5pbmFjdGl2ZV9saXN0LCB2bV9saW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZpOTE1LT5nZ3R0LnZtLmluYWN0aXZlX2xpc3QsIHZtX2xpbmspCj4gIAkJaTkxNV92 bWFfdW5waW4odm1hKTsKPiAgfQo+ICAKPiBAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBpbnQg aWd0X2V2aWN0X3NvbWV0aGluZyh2b2lkICphcmcpCj4gIAkJZ290byBjbGVhbnVwOwo+ICAKPiAg CS8qIEV2ZXJ5dGhpbmcgaXMgcGlubmVkLCBub3RoaW5nIHNob3VsZCBoYXBwZW4gKi8KPiAtCWVy ciA9IGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZygmZ2d0dC0+YmFzZSwKPiArCWVyciA9IGk5MTVf Z2VtX2V2aWN0X3NvbWV0aGluZygmZ2d0dC0+dm0sCj4gIAkJCQkgICAgICAgSTkxNV9HVFRfUEFH RV9TSVpFLCAwLCAwLAo+ICAJCQkJICAgICAgIDAsIFU2NF9NQVgsCj4gIAkJCQkgICAgICAgMCk7 Cj4gQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IGlndF9ldmljdF9zb21ldGhpbmcodm9p ZCAqYXJnKQo+ICAJdW5waW5fZ2d0dChpOTE1KTsKPiAgCj4gIAkvKiBFdmVyeXRoaW5nIGlzIHVu cGlubmVkLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBldmljdCBzb21ldGhpbmcgKi8KPiAtCWVyciA9 IGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZygmZ2d0dC0+YmFzZSwKPiArCWVyciA9IGk5MTVfZ2Vt X2V2aWN0X3NvbWV0aGluZygmZ2d0dC0+dm0sCj4gIAkJCQkgICAgICAgSTkxNV9HVFRfUEFHRV9T SVpFLCAwLCAwLAo+ICAJCQkJICAgICAgIDAsIFU2NF9NQVgsCj4gIAkJCQkgICAgICAgMCk7Cj4g QEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgaW50IGlndF9ldmljdF9mb3Jfdm1hKHZvaWQgKmFy ZykKPiAgCQlnb3RvIGNsZWFudXA7Cj4gIAo+ICAJLyogRXZlcnl0aGluZyBpcyBwaW5uZWQsIG5v dGhpbmcgc2hvdWxkIGhhcHBlbiAqLwo+IC0JZXJyID0gaTkxNV9nZW1fZXZpY3RfZm9yX25vZGUo JmdndHQtPmJhc2UsICZ0YXJnZXQsIDApOwo+ICsJZXJyID0gaTkxNV9nZW1fZXZpY3RfZm9yX25v ZGUoJmdndHQtPnZtLCAmdGFyZ2V0LCAwKTsKPiAgCWlmIChlcnIgIT0gLUVOT1NQQykgewo+ICAJ CXByX2VycigiaTkxNV9nZW1fZXZpY3RfZm9yX25vZGUgb24gYSBmdWxsIEdHVFQgcmV0dXJuZWQg ZXJyPSVkXG4iLAo+ICAJCSAgICAgICBlcnIpOwo+IEBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGlj IGludCBpZ3RfZXZpY3RfZm9yX3ZtYSh2b2lkICphcmcpCj4gIAl1bnBpbl9nZ3R0KGk5MTUpOwo+ ICAKPiAgCS8qIEV2ZXJ5dGhpbmcgaXMgdW5waW5uZWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGV2 aWN0IHRoZSBub2RlICovCj4gLQllcnIgPSBpOTE1X2dlbV9ldmljdF9mb3Jfbm9kZSgmZ2d0dC0+ YmFzZSwgJnRhcmdldCwgMCk7Cj4gKwllcnIgPSBpOTE1X2dlbV9ldmljdF9mb3Jfbm9kZSgmZ2d0 dC0+dm0sICZ0YXJnZXQsIDApOwo+ICAJaWYgKGVycikgewo+ICAJCXByX2VycigiaTkxNV9nZW1f ZXZpY3RfZm9yX25vZGUgcmV0dXJuZWQgZXJyPSVkXG4iLAo+ICAJCSAgICAgICBlcnIpOwo+IEBA IC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfZm9yX2NhY2hlX2NvbG9yKHZv aWQgKmFyZykKPiAgCSAqIGk5MTVfZ3R0X2NvbG9yX2FkanVzdCB0aHJvdWdob3V0IG91ciBkcml2 ZXIsIHNvIHVzaW5nIGEgbW9jayBjb2xvcgo+ICAJICogYWRqdXN0IHdpbGwgd29yayBqdXN0IGZp bmUgZm9yIG91ciBwdXJwb3Nlcy4KPiAgCSAqLwo+IC0JZ2d0dC0+YmFzZS5tbS5jb2xvcl9hZGp1 c3QgPSBtb2NrX2NvbG9yX2FkanVzdDsKPiArCWdndHQtPnZtLm1tLmNvbG9yX2FkanVzdCA9IG1v Y2tfY29sb3JfYWRqdXN0Owo+ICAKPiAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50 ZXJuYWwoaTkxNSwgSTkxNV9HVFRfUEFHRV9TSVpFKTsKPiAgCWlmIChJU19FUlIob2JqKSkgewo+ IEBAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfZm9yX2NhY2hlX2NvbG9y KHZvaWQgKmFyZykKPiAgCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gIAo+ICAJLyogUmVtb3ZlIGp1 c3QgdGhlIHNlY29uZCB2bWEgKi8KPiAtCWVyciA9IGk5MTVfZ2VtX2V2aWN0X2Zvcl9ub2RlKCZn Z3R0LT5iYXNlLCAmdGFyZ2V0LCAwKTsKPiArCWVyciA9IGk5MTVfZ2VtX2V2aWN0X2Zvcl9ub2Rl KCZnZ3R0LT52bSwgJnRhcmdldCwgMCk7Cj4gIAlpZiAoZXJyKSB7Cj4gIAkJcHJfZXJyKCJbMF1p OTE1X2dlbV9ldmljdF9mb3Jfbm9kZSByZXR1cm5lZCBlcnI9JWRcbiIsIGVycik7Cj4gIAkJZ290 byBjbGVhbnVwOwo+IEBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfZm9y X2NhY2hlX2NvbG9yKHZvaWQgKmFyZykKPiAgCSAqLwo+ICAJdGFyZ2V0LmNvbG9yID0gSTkxNV9D QUNIRV9MM19MTEM7Cj4gIAo+IC0JZXJyID0gaTkxNV9nZW1fZXZpY3RfZm9yX25vZGUoJmdndHQt PmJhc2UsICZ0YXJnZXQsIDApOwo+ICsJZXJyID0gaTkxNV9nZW1fZXZpY3RfZm9yX25vZGUoJmdn dHQtPnZtLCAmdGFyZ2V0LCAwKTsKPiAgCWlmICghZXJyKSB7Cj4gIAkJcHJfZXJyKCJbMV1pOTE1 X2dlbV9ldmljdF9mb3Jfbm9kZSByZXR1cm5lZCBlcnI9JWRcbiIsIGVycik7Cj4gIAkJZXJyID0g LUVJTlZBTDsKPiBAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0X2Zvcl9j YWNoZV9jb2xvcih2b2lkICphcmcpCj4gIGNsZWFudXA6Cj4gIAl1bnBpbl9nZ3R0KGk5MTUpOwo+ ICAJY2xlYW51cF9vYmplY3RzKGk5MTUpOwo+IC0JZ2d0dC0+YmFzZS5tbS5jb2xvcl9hZGp1c3Qg PSBOVUxMOwo+ICsJZ2d0dC0+dm0ubW0uY29sb3JfYWRqdXN0ID0gTlVMTDsKPiAgCXJldHVybiBl cnI7Cj4gIH0KPiAgCj4gQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW50IGlndF9ldmljdF92 bSh2b2lkICphcmcpCj4gIAkJZ290byBjbGVhbnVwOwo+ICAKPiAgCS8qIEV2ZXJ5dGhpbmcgaXMg cGlubmVkLCBub3RoaW5nIHNob3VsZCBoYXBwZW4gKi8KPiAtCWVyciA9IGk5MTVfZ2VtX2V2aWN0 X3ZtKCZnZ3R0LT5iYXNlKTsKPiArCWVyciA9IGk5MTVfZ2VtX2V2aWN0X3ZtKCZnZ3R0LT52bSk7 Cj4gIAlpZiAoZXJyKSB7Cj4gIAkJcHJfZXJyKCJpOTE1X2dlbV9ldmljdF92bSBvbiBhIGZ1bGwg R0dUVCByZXR1cm5lZCBlcnI9JWRdXG4iLAo+ICAJCSAgICAgICBlcnIpOwo+IEBAIC0zMTQsNyAr MzE0LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3Rfdm0odm9pZCAqYXJnKQo+ICAKPiAgCXVucGlu X2dndHQoaTkxNSk7Cj4gIAo+IC0JZXJyID0gaTkxNV9nZW1fZXZpY3Rfdm0oJmdndHQtPmJhc2Up Owo+ICsJZXJyID0gaTkxNV9nZW1fZXZpY3Rfdm0oJmdndHQtPnZtKTsKPiAgCWlmIChlcnIpIHsK PiAgCQlwcl9lcnIoImk5MTVfZ2VtX2V2aWN0X3ZtIG9uIGEgZnVsbCBHR1RUIHJldHVybmVkIGVy cj0lZF1cbiIsCj4gIAkJICAgICAgIGVycik7Cj4gQEAgLTM1OSw5ICszNTksOSBAQCBzdGF0aWMg aW50IGlndF9ldmljdF9jb250ZXh0cyh2b2lkICphcmcpCj4gIAo+ICAJLyogUmVzZXJ2ZSBhIGJs b2NrIHNvIHRoYXQgd2Uga25vdyB3ZSBoYXZlIGVub3VnaCB0byBmaXQgYSBmZXcgcnEgKi8KPiAg CW1lbXNldCgmaG9sZSwgMCwgc2l6ZW9mKGhvbGUpKTsKPiAtCWVyciA9IGk5MTVfZ2VtX2d0dF9p bnNlcnQoJmk5MTUtPmdndHQuYmFzZSwgJmhvbGUsCj4gKwllcnIgPSBpOTE1X2dlbV9ndHRfaW5z ZXJ0KCZpOTE1LT5nZ3R0LnZtLCAmaG9sZSwKPiAgCQkJCSAgUFJFVEVORF9HR1RUX1NJWkUsIDAs IEk5MTVfQ09MT1JfVU5FVklDVEFCTEUsCj4gLQkJCQkgIDAsIGk5MTUtPmdndHQuYmFzZS50b3Rh bCwKPiArCQkJCSAgMCwgaTkxNS0+Z2d0dC52bS50b3RhbCwKPiAgCQkJCSAgUElOX05PRVZJQ1Qp Owo+ICAJaWYgKGVycikKPiAgCQlnb3RvIG91dF9sb2NrZWQ7Cj4gQEAgLTM3Nyw5ICszNzcsOSBA QCBzdGF0aWMgaW50IGlndF9ldmljdF9jb250ZXh0cyh2b2lkICphcmcpCj4gIAkJCWdvdG8gb3V0 X2xvY2tlZDsKPiAgCQl9Cj4gIAo+IC0JCWlmIChpOTE1X2dlbV9ndHRfaW5zZXJ0KCZpOTE1LT5n Z3R0LmJhc2UsICZyLT5ub2RlLAo+ICsJCWlmIChpOTE1X2dlbV9ndHRfaW5zZXJ0KCZpOTE1LT5n Z3R0LnZtLCAmci0+bm9kZSwKPiAgCQkJCQkxdWwgPDwgMjAsIDAsIEk5MTVfQ09MT1JfVU5FVklD VEFCTEUsCj4gLQkJCQkJMCwgaTkxNS0+Z2d0dC5iYXNlLnRvdGFsLAo+ICsJCQkJCTAsIGk5MTUt PmdndHQudm0udG90YWwsCj4gIAkJCQkJUElOX05PRVZJQ1QpKSB7Cj4gIAkJCWtmcmVlKHIpOwo+ ICAJCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2d0dC5jCj4gaW5kZXggZjdkYzkyNmY0ZWYxLi41OGFiNWU4NGNlYjcgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTE1MSwxNCAr MTUxLDE0IEBAIHN0YXRpYyBpbnQgaWd0X3BwZ3R0X2FsbG9jKHZvaWQgKmFyZykKPiAgCWlmIChl cnIpCj4gIAkJZ290byBlcnJfcHBndHQ7Cj4gIAo+IC0JaWYgKCFwcGd0dC0+YmFzZS5hbGxvY2F0 ZV92YV9yYW5nZSkKPiArCWlmICghcHBndHQtPnZtLmFsbG9jYXRlX3ZhX3JhbmdlKQo+ICAJCWdv dG8gZXJyX3BwZ3R0X2NsZWFudXA7Cj4gIAo+ICAJLyogQ2hlY2sgd2UgY2FuIGFsbG9jYXRlIHRo ZSBlbnRpcmUgcmFuZ2UgKi8KPiAgCWZvciAoc2l6ZSA9IDQwOTY7Cj4gLQkgICAgIHNpemUgPD0g cHBndHQtPmJhc2UudG90YWw7Cj4gKwkgICAgIHNpemUgPD0gcHBndHQtPnZtLnRvdGFsOwo+ICAJ ICAgICBzaXplIDw8PSAyKSB7Cj4gLQkJZXJyID0gcHBndHQtPmJhc2UuYWxsb2NhdGVfdmFfcmFu Z2UoJnBwZ3R0LT5iYXNlLCAwLCBzaXplKTsKPiArCQllcnIgPSBwcGd0dC0+dm0uYWxsb2NhdGVf dmFfcmFuZ2UoJnBwZ3R0LT52bSwgMCwgc2l6ZSk7Cj4gIAkJaWYgKGVycikgewo+ICAJCQlpZiAo ZXJyID09IC1FTk9NRU0pIHsKPiAgCQkJCXByX2luZm8oIlsxXSBSYW4gb3V0IG9mIG1lbW9yeSBm b3IgdmFfcmFuZ2UgWzAgKyAlbGx4XSBbYml0ICVkXVxuIiwKPiBAQCAtMTY4LDE1ICsxNjgsMTUg QEAgc3RhdGljIGludCBpZ3RfcHBndHRfYWxsb2Modm9pZCAqYXJnKQo+ICAJCQlnb3RvIGVycl9w cGd0dF9jbGVhbnVwOwo+ICAJCX0KPiAgCj4gLQkJcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UoJnBw Z3R0LT5iYXNlLCAwLCBzaXplKTsKPiArCQlwcGd0dC0+dm0uY2xlYXJfcmFuZ2UoJnBwZ3R0LT52 bSwgMCwgc2l6ZSk7Cj4gIAl9Cj4gIAo+ICAJLyogQ2hlY2sgd2UgY2FuIGluY3JlbWVudGFsbHkg YWxsb2NhdGUgdGhlIGVudGlyZSByYW5nZSAqLwo+ICAJZm9yIChsYXN0ID0gMCwgc2l6ZSA9IDQw OTY7Cj4gLQkgICAgIHNpemUgPD0gcHBndHQtPmJhc2UudG90YWw7Cj4gKwkgICAgIHNpemUgPD0g cHBndHQtPnZtLnRvdGFsOwo+ICAJICAgICBsYXN0ID0gc2l6ZSwgc2l6ZSA8PD0gMikgewo+IC0J CWVyciA9IHBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3JhbmdlKCZwcGd0dC0+YmFzZSwKPiAtCQkJ CQkJICAgIGxhc3QsIHNpemUgLSBsYXN0KTsKPiArCQllcnIgPSBwcGd0dC0+dm0uYWxsb2NhdGVf dmFfcmFuZ2UoJnBwZ3R0LT52bSwKPiArCQkJCQkJICBsYXN0LCBzaXplIC0gbGFzdCk7Cj4gIAkJ aWYgKGVycikgewo+ICAJCQlpZiAoZXJyID09IC1FTk9NRU0pIHsKPiAgCQkJCXByX2luZm8oIlsy XSBSYW4gb3V0IG9mIG1lbW9yeSBmb3IgdmFfcmFuZ2UgWyVsbHggKyAlbGx4XSBbYml0ICVkXVxu IiwKPiBAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyBpbnQgaWd0X3BwZ3R0X2FsbG9jKHZvaWQg KmFyZykKPiAgCX0KPiAgCj4gIGVycl9wcGd0dF9jbGVhbnVwOgo+IC0JcHBndHQtPmJhc2UuY2xl YW51cCgmcHBndHQtPmJhc2UpOwo+ICsJcHBndHQtPnZtLmNsZWFudXAoJnBwZ3R0LT52bSk7Cj4g IGVycl9wcGd0dDoKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAJa2ZyZWUocHBndHQpOwo+IEBAIC05ODcsMTIgKzk4NywxMiBAQCBzdGF0aWMgaW50IGV4 ZXJjaXNlX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQllcnIg PSBQVFJfRVJSKHBwZ3R0KTsKPiAgCQlnb3RvIG91dF91bmxvY2s7Cj4gIAl9Cj4gLQlHRU1fQlVH X09OKG9mZnNldF9pbl9wYWdlKHBwZ3R0LT5iYXNlLnRvdGFsKSk7Cj4gLQlHRU1fQlVHX09OKHBw Z3R0LT5iYXNlLmNsb3NlZCk7Cj4gKwlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKHBwZ3R0LT52 bS50b3RhbCkpOwo+ICsJR0VNX0JVR19PTihwcGd0dC0+dm0uY2xvc2VkKTsKPiAgCj4gLQllcnIg PSBmdW5jKGRldl9wcml2LCAmcHBndHQtPmJhc2UsIDAsIHBwZ3R0LT5iYXNlLnRvdGFsLCBlbmRf dGltZSk7Cj4gKwllcnIgPSBmdW5jKGRldl9wcml2LCAmcHBndHQtPnZtLCAwLCBwcGd0dC0+dm0u dG90YWwsIGVuZF90aW1lKTsKPiAgCj4gLQlpOTE1X3BwZ3R0X2Nsb3NlKCZwcGd0dC0+YmFzZSk7 Cj4gKwlpOTE1X3BwZ3R0X2Nsb3NlKCZwcGd0dC0+dm0pOwo+ICAJaTkxNV9wcGd0dF9wdXQocHBn dHQpOwo+ICBvdXRfdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gQEAgLTEwNjEsMTggKzEwNjEsMTggQEAgc3RhdGljIGludCBleGVyY2lzZV9n Z3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAKPiAgCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICByZXN0YXJ0Ogo+IC0JbGlzdF9zb3J0KE5VTEwsICZn Z3R0LT5iYXNlLm1tLmhvbGVfc3RhY2ssIHNvcnRfaG9sZXMpOwo+IC0JZHJtX21tX2Zvcl9lYWNo X2hvbGUobm9kZSwgJmdndHQtPmJhc2UubW0sIGhvbGVfc3RhcnQsIGhvbGVfZW5kKSB7Cj4gKwls aXN0X3NvcnQoTlVMTCwgJmdndHQtPnZtLm1tLmhvbGVfc3RhY2ssIHNvcnRfaG9sZXMpOwo+ICsJ ZHJtX21tX2Zvcl9lYWNoX2hvbGUobm9kZSwgJmdndHQtPnZtLm1tLCBob2xlX3N0YXJ0LCBob2xl X2VuZCkgewo+ICAJCWlmIChob2xlX3N0YXJ0IDwgbGFzdCkKPiAgCQkJY29udGludWU7Cj4gIAo+ IC0JCWlmIChnZ3R0LT5iYXNlLm1tLmNvbG9yX2FkanVzdCkKPiAtCQkJZ2d0dC0+YmFzZS5tbS5j b2xvcl9hZGp1c3Qobm9kZSwgMCwKPiAtCQkJCQkJICAgJmhvbGVfc3RhcnQsICZob2xlX2VuZCk7 Cj4gKwkJaWYgKGdndHQtPnZtLm1tLmNvbG9yX2FkanVzdCkKPiArCQkJZ2d0dC0+dm0ubW0uY29s b3JfYWRqdXN0KG5vZGUsIDAsCj4gKwkJCQkJCSAmaG9sZV9zdGFydCwgJmhvbGVfZW5kKTsKPiAg CQlpZiAoaG9sZV9zdGFydCA+PSBob2xlX2VuZCkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWVy ciA9IGZ1bmMoaTkxNSwgJmdndHQtPmJhc2UsIGhvbGVfc3RhcnQsIGhvbGVfZW5kLCBlbmRfdGlt ZSk7Cj4gKwkJZXJyID0gZnVuYyhpOTE1LCAmZ2d0dC0+dm0sIGhvbGVfc3RhcnQsIGhvbGVfZW5k LCBlbmRfdGltZSk7Cj4gIAkJaWYgKGVycikKPiAgCQkJYnJlYWs7Cj4gIAo+IEBAIC0xMTM0LDcg KzExMzQsNyBAQCBzdGF0aWMgaW50IGlndF9nZ3R0X3BhZ2Uodm9pZCAqYXJnKQo+ICAJCWdvdG8g b3V0X2ZyZWU7Cj4gIAo+ICAJbWVtc2V0KCZ0bXAsIDAsIHNpemVvZih0bXApKTsKPiAtCWVyciA9 IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZSgmZ2d0dC0+YmFzZS5tbSwgJnRtcCwKPiArCWVy ciA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZSgmZ2d0dC0+dm0ubW0sICZ0bXAsCj4gIAkJ CQkJICBjb3VudCAqIFBBR0VfU0laRSwgMCwKPiAgCQkJCQkgIEk5MTVfQ09MT1JfVU5FVklDVEFC TEUsCj4gIAkJCQkJICAwLCBnZ3R0LT5tYXBwYWJsZV9lbmQsCj4gQEAgLTExNDcsOSArMTE0Nyw5 IEBAIHN0YXRpYyBpbnQgaWd0X2dndHRfcGFnZSh2b2lkICphcmcpCj4gIAlmb3IgKG4gPSAwOyBu IDwgY291bnQ7IG4rKykgewo+ICAJCXU2NCBvZmZzZXQgPSB0bXAuc3RhcnQgKyBuICogUEFHRV9T SVpFOwo+ICAKPiAtCQlnZ3R0LT5iYXNlLmluc2VydF9wYWdlKCZnZ3R0LT5iYXNlLAo+IC0JCQkJ ICAgICAgIGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Mob2JqLCAwKSwKPiAtCQkJCSAg ICAgICBvZmZzZXQsIEk5MTVfQ0FDSEVfTk9ORSwgMCk7Cj4gKwkJZ2d0dC0+dm0uaW5zZXJ0X3Bh Z2UoJmdndHQtPnZtLAo+ICsJCQkJICAgICBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9hZGRyZXNz KG9iaiwgMCksCj4gKwkJCQkgICAgIG9mZnNldCwgSTkxNV9DQUNIRV9OT05FLCAwKTsKPiAgCX0K PiAgCj4gIAlvcmRlciA9IGk5MTVfcmFuZG9tX29yZGVyKGNvdW50LCAmcHJuZyk7Cj4gQEAgLTEx ODgsNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgaWd0X2dndHRfcGFnZSh2b2lkICphcmcpCj4gIAo+ ICAJa2ZyZWUob3JkZXIpOwo+ICBvdXRfcmVtb3ZlOgo+IC0JZ2d0dC0+YmFzZS5jbGVhcl9yYW5n ZSgmZ2d0dC0+YmFzZSwgdG1wLnN0YXJ0LCB0bXAuc2l6ZSk7Cj4gKwlnZ3R0LT52bS5jbGVhcl9y YW5nZSgmZ2d0dC0+dm0sIHRtcC5zdGFydCwgdG1wLnNpemUpOwo+ICAJaW50ZWxfcnVudGltZV9w bV9wdXQoaTkxNSk7Cj4gIAlkcm1fbW1fcmVtb3ZlX25vZGUoJnRtcCk7Cj4gIG91dF91bnBpbjoK PiBAQCAtMTIyOSw3ICsxMjI5LDcgQEAgc3RhdGljIGludCBleGVyY2lzZV9tb2NrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJcHBndHQgPSBjdHgtPnBwZ3R0Owo+ICAJR0VNX0JV R19PTighcHBndHQpOwo+ICAKPiAtCWVyciA9IGZ1bmMoaTkxNSwgJnBwZ3R0LT5iYXNlLCAwLCBw cGd0dC0+YmFzZS50b3RhbCwgZW5kX3RpbWUpOwo+ICsJZXJyID0gZnVuYyhpOTE1LCAmcHBndHQt PnZtLCAwLCBwcGd0dC0+dm0udG90YWwsIGVuZF90aW1lKTsKPiAgCj4gIAltb2NrX2NvbnRleHRf Y2xvc2UoY3R4KTsKPiAgCXJldHVybiBlcnI7Cj4gQEAgLTEyNzAsNyArMTI3MCw3IEBAIHN0YXRp YyBpbnQgaWd0X2d0dF9yZXNlcnZlKHZvaWQgKmFyZykKPiAgCj4gIAkvKiBTdGFydCBieSBmaWxs aW5nIHRoZSBHR1RUICovCj4gIAlmb3IgKHRvdGFsID0gMDsKPiAtCSAgICAgdG90YWwgKyAyKkk5 MTVfR1RUX1BBR0VfU0laRSA8PSBpOTE1LT5nZ3R0LmJhc2UudG90YWw7Cj4gKwkgICAgIHRvdGFs ICsgMipJOTE1X0dUVF9QQUdFX1NJWkUgPD0gaTkxNS0+Z2d0dC52bS50b3RhbDsKPiAgCSAgICAg dG90YWwgKz0gMipJOTE1X0dUVF9QQUdFX1NJWkUpIHsKPiAgCQlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKPiAgCj4gQEAgLTEyODgsMjAgKzEyODgsMjAgQEAgc3RhdGljIGludCBpZ3RfZ3R0X3Jlc2Vy dmUodm9pZCAqYXJnKQo+ICAKPiAgCQlsaXN0X2FkZCgmb2JqLT5zdF9saW5rLCAmb2JqZWN0cyk7 Cj4gIAo+IC0JCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQuYmFzZSwg TlVMTCk7Cj4gKwkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC52bSwg TlVMTCk7Cj4gIAkJaWYgKElTX0VSUih2bWEpKSB7Cj4gIAkJCWVyciA9IFBUUl9FUlIodm1hKTsK PiAgCQkJZ290byBvdXQ7Cj4gIAkJfQo+ICAKPiAtCQllcnIgPSBpOTE1X2dlbV9ndHRfcmVzZXJ2 ZSgmaTkxNS0+Z2d0dC5iYXNlLCAmdm1hLT5ub2RlLAo+ICsJCWVyciA9IGk5MTVfZ2VtX2d0dF9y ZXNlcnZlKCZpOTE1LT5nZ3R0LnZtLCAmdm1hLT5ub2RlLAo+ICAJCQkJCSAgIG9iai0+YmFzZS5z aXplLAo+ICAJCQkJCSAgIHRvdGFsLAo+ICAJCQkJCSAgIG9iai0+Y2FjaGVfbGV2ZWwsCj4gIAkJ CQkJICAgMCk7Cj4gIAkJaWYgKGVycikgewo+ICAJCQlwcl9lcnIoImk5MTVfZ2VtX2d0dF9yZXNl cnZlIChwYXNzIDEpIGZhaWxlZCBhdCAlbGx1LyVsbHUgd2l0aCBlcnI9JWRcbiIsCj4gLQkJCSAg ICAgICB0b3RhbCwgaTkxNS0+Z2d0dC5iYXNlLnRvdGFsLCBlcnIpOwo+ICsJCQkgICAgICAgdG90 YWwsIGk5MTUtPmdndHQudm0udG90YWwsIGVycik7Cj4gIAkJCWdvdG8gb3V0Owo+ICAJCX0KPiAg CQl0cmFja192bWFfYmluZCh2bWEpOwo+IEBAIC0xMzE5LDcgKzEzMTksNyBAQCBzdGF0aWMgaW50 IGlndF9ndHRfcmVzZXJ2ZSh2b2lkICphcmcpCj4gIAo+ICAJLyogTm93IHdlIHN0YXJ0IGZvcmNp bmcgZXZpY3Rpb25zICovCj4gIAlmb3IgKHRvdGFsID0gSTkxNV9HVFRfUEFHRV9TSVpFOwo+IC0J ICAgICB0b3RhbCArIDIqSTkxNV9HVFRfUEFHRV9TSVpFIDw9IGk5MTUtPmdndHQuYmFzZS50b3Rh bDsKPiArCSAgICAgdG90YWwgKyAyKkk5MTVfR1RUX1BBR0VfU0laRSA8PSBpOTE1LT5nZ3R0LnZt LnRvdGFsOwo+ICAJICAgICB0b3RhbCArPSAyKkk5MTVfR1RUX1BBR0VfU0laRSkgewo+ICAJCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAKPiBAQCAtMTMzNywyMCArMTMzNywyMCBAQCBzdGF0aWMg aW50IGlndF9ndHRfcmVzZXJ2ZSh2b2lkICphcmcpCj4gIAo+ICAJCWxpc3RfYWRkKCZvYmotPnN0 X2xpbmssICZvYmplY3RzKTsKPiAgCj4gLQkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAm aTkxNS0+Z2d0dC5iYXNlLCBOVUxMKTsKPiArCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmos ICZpOTE1LT5nZ3R0LnZtLCBOVUxMKTsKPiAgCQlpZiAoSVNfRVJSKHZtYSkpIHsKPiAgCQkJZXJy ID0gUFRSX0VSUih2bWEpOwo+ICAJCQlnb3RvIG91dDsKPiAgCQl9Cj4gIAo+IC0JCWVyciA9IGk5 MTVfZ2VtX2d0dF9yZXNlcnZlKCZpOTE1LT5nZ3R0LmJhc2UsICZ2bWEtPm5vZGUsCj4gKwkJZXJy ID0gaTkxNV9nZW1fZ3R0X3Jlc2VydmUoJmk5MTUtPmdndHQudm0sICZ2bWEtPm5vZGUsCj4gIAkJ CQkJICAgb2JqLT5iYXNlLnNpemUsCj4gIAkJCQkJICAgdG90YWwsCj4gIAkJCQkJICAgb2JqLT5j YWNoZV9sZXZlbCwKPiAgCQkJCQkgICAwKTsKPiAgCQlpZiAoZXJyKSB7Cj4gIAkJCXByX2Vycigi aTkxNV9nZW1fZ3R0X3Jlc2VydmUgKHBhc3MgMikgZmFpbGVkIGF0ICVsbHUvJWxsdSB3aXRoIGVy cj0lZFxuIiwKPiAtCQkJICAgICAgIHRvdGFsLCBpOTE1LT5nZ3R0LmJhc2UudG90YWwsIGVycik7 Cj4gKwkJCSAgICAgICB0b3RhbCwgaTkxNS0+Z2d0dC52bS50b3RhbCwgZXJyKTsKPiAgCQkJZ290 byBvdXQ7Cj4gIAkJfQo+ICAJCXRyYWNrX3ZtYV9iaW5kKHZtYSk7Cj4gQEAgLTEzNzEsNyArMTM3 MSw3IEBAIHN0YXRpYyBpbnQgaWd0X2d0dF9yZXNlcnZlKHZvaWQgKmFyZykKPiAgCQlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKPiAgCQl1NjQgb2Zmc2V0Owo+ICAKPiAtCQl2bWEgPSBpOTE1X3ZtYV9p bnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LmJhc2UsIE5VTEwpOwo+ICsJCXZtYSA9IGk5MTVfdm1h X2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQudm0sIE5VTEwpOwo+ICAJCWlmIChJU19FUlIodm1h KSkgewo+ICAJCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gIAkJCWdvdG8gb3V0Owo+IEBAIC0xMzgz LDE4ICsxMzgzLDE4IEBAIHN0YXRpYyBpbnQgaWd0X2d0dF9yZXNlcnZlKHZvaWQgKmFyZykKPiAg CQkJZ290byBvdXQ7Cj4gIAkJfQo+ICAKPiAtCQlvZmZzZXQgPSByYW5kb21fb2Zmc2V0KDAsIGk5 MTUtPmdndHQuYmFzZS50b3RhbCwKPiArCQlvZmZzZXQgPSByYW5kb21fb2Zmc2V0KDAsIGk5MTUt PmdndHQudm0udG90YWwsCj4gIAkJCQkgICAgICAgMipJOTE1X0dUVF9QQUdFX1NJWkUsCj4gIAkJ CQkgICAgICAgSTkxNV9HVFRfTUlOX0FMSUdOTUVOVCk7Cj4gIAo+IC0JCWVyciA9IGk5MTVfZ2Vt X2d0dF9yZXNlcnZlKCZpOTE1LT5nZ3R0LmJhc2UsICZ2bWEtPm5vZGUsCj4gKwkJZXJyID0gaTkx NV9nZW1fZ3R0X3Jlc2VydmUoJmk5MTUtPmdndHQudm0sICZ2bWEtPm5vZGUsCj4gIAkJCQkJICAg b2JqLT5iYXNlLnNpemUsCj4gIAkJCQkJICAgb2Zmc2V0LAo+ICAJCQkJCSAgIG9iai0+Y2FjaGVf bGV2ZWwsCj4gIAkJCQkJICAgMCk7Cj4gIAkJaWYgKGVycikgewo+ICAJCQlwcl9lcnIoImk5MTVf Z2VtX2d0dF9yZXNlcnZlIChwYXNzIDMpIGZhaWxlZCBhdCAlbGx1LyVsbHUgd2l0aCBlcnI9JWRc biIsCj4gLQkJCSAgICAgICB0b3RhbCwgaTkxNS0+Z2d0dC5iYXNlLnRvdGFsLCBlcnIpOwo+ICsJ CQkgICAgICAgdG90YWwsIGk5MTUtPmdndHQudm0udG90YWwsIGVycik7Cj4gIAkJCWdvdG8gb3V0 Owo+ICAJCX0KPiAgCQl0cmFja192bWFfYmluZCh2bWEpOwo+IEBAIC0xNDI5LDggKzE0MjksOCBA QCBzdGF0aWMgaW50IGlndF9ndHRfaW5zZXJ0KHZvaWQgKmFyZykKPiAgCQl1NjQgc3RhcnQsIGVu ZDsKPiAgCX0gaW52YWxpZF9pbnNlcnRbXSA9IHsKPiAgCQl7Cj4gLQkJCWk5MTUtPmdndHQuYmFz ZS50b3RhbCArIEk5MTVfR1RUX1BBR0VfU0laRSwgMCwKPiAtCQkJMCwgaTkxNS0+Z2d0dC5iYXNl LnRvdGFsLAo+ICsJCQlpOTE1LT5nZ3R0LnZtLnRvdGFsICsgSTkxNV9HVFRfUEFHRV9TSVpFLCAw LAo+ICsJCQkwLCBpOTE1LT5nZ3R0LnZtLnRvdGFsLAo+ICAJCX0sCj4gIAkJewo+ICAJCQkyKkk5 MTVfR1RUX1BBR0VfU0laRSwgMCwKPiBAQCAtMTQ2MCw3ICsxNDYwLDcgQEAgc3RhdGljIGludCBp Z3RfZ3R0X2luc2VydCh2b2lkICphcmcpCj4gIAo+ICAJLyogQ2hlY2sgYSBjb3VwbGUgb2Ygb2J2 aW91c2x5IGludmFsaWQgcmVxdWVzdHMgKi8KPiAgCWZvciAoaWkgPSBpbnZhbGlkX2luc2VydDsg aWktPnNpemU7IGlpKyspIHsKPiAtCQllcnIgPSBpOTE1X2dlbV9ndHRfaW5zZXJ0KCZpOTE1LT5n Z3R0LmJhc2UsICZ0bXAsCj4gKwkJZXJyID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmaTkxNS0+Z2d0 dC52bSwgJnRtcCwKPiAgCQkJCQkgIGlpLT5zaXplLCBpaS0+YWxpZ25tZW50LAo+ICAJCQkJCSAg STkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiAgCQkJCQkgIGlpLT5zdGFydCwgaWktPmVuZCwKPiBA QCAtMTQ3NSw3ICsxNDc1LDcgQEAgc3RhdGljIGludCBpZ3RfZ3R0X2luc2VydCh2b2lkICphcmcp Cj4gIAo+ICAJLyogU3RhcnQgYnkgZmlsbGluZyB0aGUgR0dUVCAqLwo+ICAJZm9yICh0b3RhbCA9 IDA7Cj4gLQkgICAgIHRvdGFsICsgSTkxNV9HVFRfUEFHRV9TSVpFIDw9IGk5MTUtPmdndHQuYmFz ZS50b3RhbDsKPiArCSAgICAgdG90YWwgKyBJOTE1X0dUVF9QQUdFX1NJWkUgPD0gaTkxNS0+Z2d0 dC52bS50b3RhbDsKPiAgCSAgICAgdG90YWwgKz0gSTkxNV9HVFRfUEFHRV9TSVpFKSB7Cj4gIAkJ c3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAo+IEBAIC0xNDkzLDE1ICsxNDkzLDE1IEBAIHN0YXRp YyBpbnQgaWd0X2d0dF9pbnNlcnQodm9pZCAqYXJnKQo+ICAKPiAgCQlsaXN0X2FkZCgmb2JqLT5z dF9saW5rLCAmb2JqZWN0cyk7Cj4gIAo+IC0JCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwg Jmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7Cj4gKwkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2Jq LCAmaTkxNS0+Z2d0dC52bSwgTlVMTCk7Cj4gIAkJaWYgKElTX0VSUih2bWEpKSB7Cj4gIAkJCWVy ciA9IFBUUl9FUlIodm1hKTsKPiAgCQkJZ290byBvdXQ7Cj4gIAkJfQo+ICAKPiAtCQllcnIgPSBp OTE1X2dlbV9ndHRfaW5zZXJ0KCZpOTE1LT5nZ3R0LmJhc2UsICZ2bWEtPm5vZGUsCj4gKwkJZXJy ID0gaTkxNV9nZW1fZ3R0X2luc2VydCgmaTkxNS0+Z2d0dC52bSwgJnZtYS0+bm9kZSwKPiAgCQkJ CQkgIG9iai0+YmFzZS5zaXplLCAwLCBvYmotPmNhY2hlX2xldmVsLAo+IC0JCQkJCSAgMCwgaTkx NS0+Z2d0dC5iYXNlLnRvdGFsLAo+ICsJCQkJCSAgMCwgaTkxNS0+Z2d0dC52bS50b3RhbCwKPiAg CQkJCQkgIDApOwo+ICAJCWlmIChlcnIgPT0gLUVOT1NQQykgewo+ICAJCQkvKiBtYXhlZCBvdXQg dGhlIEdHVFQgc3BhY2UgKi8KPiBAQCAtMTUxMCw3ICsxNTEwLDcgQEAgc3RhdGljIGludCBpZ3Rf Z3R0X2luc2VydCh2b2lkICphcmcpCj4gIAkJfQo+ICAJCWlmIChlcnIpIHsKPiAgCQkJcHJfZXJy KCJpOTE1X2dlbV9ndHRfaW5zZXJ0IChwYXNzIDEpIGZhaWxlZCBhdCAlbGx1LyVsbHUgd2l0aCBl cnI9JWRcbiIsCj4gLQkJCSAgICAgICB0b3RhbCwgaTkxNS0+Z2d0dC5iYXNlLnRvdGFsLCBlcnIp Owo+ICsJCQkgICAgICAgdG90YWwsIGk5MTUtPmdndHQudm0udG90YWwsIGVycik7Cj4gIAkJCWdv dG8gb3V0Owo+ICAJCX0KPiAgCQl0cmFja192bWFfYmluZCh2bWEpOwo+IEBAIC0xNTIyLDcgKzE1 MjIsNyBAQCBzdGF0aWMgaW50IGlndF9ndHRfaW5zZXJ0KHZvaWQgKmFyZykKPiAgCWxpc3RfZm9y X2VhY2hfZW50cnkob2JqLCAmb2JqZWN0cywgc3RfbGluaykgewo+ICAJCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+ICAKPiAtCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZpOTE1LT5nZ3R0 LmJhc2UsIE5VTEwpOwo+ICsJCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdn dHQudm0sIE5VTEwpOwo+ICAJCWlmIChJU19FUlIodm1hKSkgewo+ICAJCQllcnIgPSBQVFJfRVJS KHZtYSk7Cj4gIAkJCWdvdG8gb3V0Owo+IEBAIC0xNTQyLDcgKzE1NDIsNyBAQCBzdGF0aWMgaW50 IGlndF9ndHRfaW5zZXJ0KHZvaWQgKmFyZykKPiAgCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAg CQl1NjQgb2Zmc2V0Owo+ICAKPiAtCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZpOTE1 LT5nZ3R0LmJhc2UsIE5VTEwpOwo+ICsJCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5 MTUtPmdndHQudm0sIE5VTEwpOwo+ICAJCWlmIChJU19FUlIodm1hKSkgewo+ICAJCQllcnIgPSBQ VFJfRVJSKHZtYSk7Cj4gIAkJCWdvdG8gb3V0Owo+IEBAIC0xNTU3LDEzICsxNTU3LDEzIEBAIHN0 YXRpYyBpbnQgaWd0X2d0dF9pbnNlcnQodm9pZCAqYXJnKQo+ICAJCQlnb3RvIG91dDsKPiAgCQl9 Cj4gIAo+IC0JCWVyciA9IGk5MTVfZ2VtX2d0dF9pbnNlcnQoJmk5MTUtPmdndHQuYmFzZSwgJnZt YS0+bm9kZSwKPiArCQllcnIgPSBpOTE1X2dlbV9ndHRfaW5zZXJ0KCZpOTE1LT5nZ3R0LnZtLCAm dm1hLT5ub2RlLAo+ICAJCQkJCSAgb2JqLT5iYXNlLnNpemUsIDAsIG9iai0+Y2FjaGVfbGV2ZWws Cj4gLQkJCQkJICAwLCBpOTE1LT5nZ3R0LmJhc2UudG90YWwsCj4gKwkJCQkJICAwLCBpOTE1LT5n Z3R0LnZtLnRvdGFsLAo+ICAJCQkJCSAgMCk7Cj4gIAkJaWYgKGVycikgewo+ICAJCQlwcl9lcnIo Imk5MTVfZ2VtX2d0dF9pbnNlcnQgKHBhc3MgMikgZmFpbGVkIGF0ICVsbHUvJWxsdSB3aXRoIGVy cj0lZFxuIiwKPiAtCQkJICAgICAgIHRvdGFsLCBpOTE1LT5nZ3R0LmJhc2UudG90YWwsIGVycik7 Cj4gKwkJCSAgICAgICB0b3RhbCwgaTkxNS0+Z2d0dC52bS50b3RhbCwgZXJyKTsKPiAgCQkJZ290 byBvdXQ7Cj4gIAkJfQo+ICAJCXRyYWNrX3ZtYV9iaW5kKHZtYSk7Cj4gQEAgLTE1NzksNyArMTU3 OSw3IEBAIHN0YXRpYyBpbnQgaWd0X2d0dF9pbnNlcnQodm9pZCAqYXJnKQo+ICAKPiAgCS8qIEFu ZCB0aGVuIGZvcmNlIGV2aWN0aW9ucyAqLwo+ICAJZm9yICh0b3RhbCA9IDA7Cj4gLQkgICAgIHRv dGFsICsgMipJOTE1X0dUVF9QQUdFX1NJWkUgPD0gaTkxNS0+Z2d0dC5iYXNlLnRvdGFsOwo+ICsJ ICAgICB0b3RhbCArIDIqSTkxNV9HVFRfUEFHRV9TSVpFIDw9IGk5MTUtPmdndHQudm0udG90YWw7 Cj4gIAkgICAgIHRvdGFsICs9IDIqSTkxNV9HVFRfUEFHRV9TSVpFKSB7Cj4gIAkJc3RydWN0IGk5 MTVfdm1hICp2bWE7Cj4gIAo+IEBAIC0xNTk3LDE5ICsxNTk3LDE5IEBAIHN0YXRpYyBpbnQgaWd0 X2d0dF9pbnNlcnQodm9pZCAqYXJnKQo+ICAKPiAgCQlsaXN0X2FkZCgmb2JqLT5zdF9saW5rLCAm b2JqZWN0cyk7Cj4gIAo+IC0JCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdn dHQuYmFzZSwgTlVMTCk7Cj4gKwkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+ Z2d0dC52bSwgTlVMTCk7Cj4gIAkJaWYgKElTX0VSUih2bWEpKSB7Cj4gIAkJCWVyciA9IFBUUl9F UlIodm1hKTsKPiAgCQkJZ290byBvdXQ7Cj4gIAkJfQo+ICAKPiAtCQllcnIgPSBpOTE1X2dlbV9n dHRfaW5zZXJ0KCZpOTE1LT5nZ3R0LmJhc2UsICZ2bWEtPm5vZGUsCj4gKwkJZXJyID0gaTkxNV9n ZW1fZ3R0X2luc2VydCgmaTkxNS0+Z2d0dC52bSwgJnZtYS0+bm9kZSwKPiAgCQkJCQkgIG9iai0+ YmFzZS5zaXplLCAwLCBvYmotPmNhY2hlX2xldmVsLAo+IC0JCQkJCSAgMCwgaTkxNS0+Z2d0dC5i YXNlLnRvdGFsLAo+ICsJCQkJCSAgMCwgaTkxNS0+Z2d0dC52bS50b3RhbCwKPiAgCQkJCQkgIDAp Owo+ICAJCWlmIChlcnIpIHsKPiAgCQkJcHJfZXJyKCJpOTE1X2dlbV9ndHRfaW5zZXJ0IChwYXNz IDMpIGZhaWxlZCBhdCAlbGx1LyVsbHUgd2l0aCBlcnI9JWRcbiIsCj4gLQkJCSAgICAgICB0b3Rh bCwgaTkxNS0+Z2d0dC5iYXNlLnRvdGFsLCBlcnIpOwo+ICsJCQkgICAgICAgdG90YWwsIGk5MTUt PmdndHQudm0udG90YWwsIGVycik7Cj4gIAkJCWdvdG8gb3V0Owo+ICAJCX0KPiAgCQl0cmFja192 bWFfYmluZCh2bWEpOwo+IEBAIC0xNjY5LDcgKzE2NjksNyBAQCBpbnQgaTkxNV9nZW1fZ3R0X2xp dmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCVNVQlRFU1Qo aWd0X2dndHRfcGFnZSksCj4gIAl9Owo+ICAKPiAtCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2Uo aTkxNS0+Z2d0dC5iYXNlLnRvdGFsKSk7Cj4gKwlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKGk5 MTUtPmdndHQudm0udG90YWwpKTsKPiAgCj4gIAlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywg aTkxNSk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX29iamVjdC5jCj4gaW5kZXggZmJkYjI0MTlkNDE4Li4yYjJkZGU5NDUyNmYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCj4g QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgaW50IGlndF9nZW1faHVnZSh2b2lkICphcmcpCj4g IAo+ICAJb2JqID0gaHVnZV9nZW1fb2JqZWN0KGk5MTUsCj4gIAkJCSAgICAgIG5yZWFsICogUEFH RV9TSVpFLAo+IC0JCQkgICAgICBpOTE1LT5nZ3R0LmJhc2UudG90YWwgKyBQQUdFX1NJWkUpOwo+ ICsJCQkgICAgICBpOTE1LT5nZ3R0LnZtLnRvdGFsICsgUEFHRV9TSVpFKTsKPiAgCWlmIChJU19F UlIob2JqKSkKPiAgCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+ICAKPiBAQCAtMzExLDcgKzMxMSw3 IEBAIHN0YXRpYyBpbnQgaWd0X3BhcnRpYWxfdGlsaW5nKHZvaWQgKmFyZykKPiAgCj4gIAlvYmog PSBodWdlX2dlbV9vYmplY3QoaTkxNSwKPiAgCQkJICAgICAgbnJlYWwgPDwgUEFHRV9TSElGVCwK PiAtCQkJICAgICAgKDEgKyBuZXh0X3ByaW1lX251bWJlcihpOTE1LT5nZ3R0LmJhc2UudG90YWwg Pj4gUEFHRV9TSElGVCkpIDw8IFBBR0VfU0hJRlQpOwo+ICsJCQkgICAgICAoMSArIG5leHRfcHJp bWVfbnVtYmVyKGk5MTUtPmdndHQudm0udG90YWwgPj4gUEFHRV9TSElGVCkpIDw8IFBBR0VfU0hJ RlQpOwo+ICAJaWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gIAo+ IEBAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIGludCBtYWtlX29ial9idXN5KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCWludCBl cnI7Cj4gIAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC5iYXNl LCBOVUxMKTsKPiArCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQudm0s IE5VTEwpOwo+ICAJaWYgKElTX0VSUih2bWEpKQo+ICAJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1 ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiBp bmRleCA5NGJjMmUxODk4YTQuLmEzYTg5YWFkZWNjYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtNDMwLDcgKzQzMCw3IEBAIHN0 YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmVtcHR5X2JhdGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICAJaWYgKGVycikKPiAgCQlnb3RvIGVycjsKPiAgCj4gLQl2bWEgPSBpOTE1X3Zt YV9pbnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LmJhc2UsIE5VTEwpOwo+ICsJdm1hID0gaTkxNV92 bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC52bSwgTlVMTCk7Cj4gIAlpZiAoSVNfRVJSKHZt YSkpIHsKPiAgCQllcnIgPSBQVFJfRVJSKHZtYSk7Cj4gIAkJZ290byBlcnI7Cj4gQEAgLTU1NSw3 ICs1NTUsOCBAQCBzdGF0aWMgaW50IGxpdmVfZW1wdHlfcmVxdWVzdCh2b2lkICphcmcpCj4gIHN0 YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKnJlY3Vyc2l2ZV9iYXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgewo+ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGk5MTUt Pmtlcm5lbF9jb250ZXh0Owo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSBjdHgt PnBwZ3R0ID8gJmN0eC0+cHBndHQtPmJhc2UgOiAmaTkxNS0+Z2d0dC5iYXNlOwo+ICsJc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPQo+ICsJCWN0eC0+cHBndHQgPyAmY3R4LT5wcGd0dC0+ dm0gOiAmaTkxNS0+Z2d0dC52bTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4gIAljb25zdCBpbnQgZ2VuID0gSU5URUxfR0VOKGk5MTUpOwo+ICAJc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKPiBpbmRl eCBlOTBmOTcyMzZlNTAuLjg0MDBhOGNjNWNmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jCj4gQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGJvb2wgYXNz ZXJ0X3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgewo+ICAJYm9vbCBvayA9IHRydWU7Cj4g IAo+IC0JaWYgKHZtYS0+dm0gIT0gJmN0eC0+cHBndHQtPmJhc2UpIHsKPiArCWlmICh2bWEtPnZt ICE9ICZjdHgtPnBwZ3R0LT52bSkgewo+ICAJCXByX2VycigiVk1BIGNyZWF0ZWQgd2l0aCB3cm9u ZyBWTVxuIik7Cj4gIAkJb2sgPSBmYWxzZTsKPiAgCX0KPiBAQCAtMTEwLDggKzExMCw3IEBAIHN0 YXRpYyBpbnQgY3JlYXRlX3ZtYXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAls aXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwgb2JqZWN0cywgc3RfbGluaykgewo+ICAJCWZvciAocGlu bmVkID0gMDsgcGlubmVkIDw9IDE7IHBpbm5lZCsrKSB7Cj4gIAkJCWxpc3RfZm9yX2VhY2hfZW50 cnkoY3R4LCBjb250ZXh0cywgbGluaykgewo+IC0JCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0gPQo+IC0JCQkJCSZjdHgtPnBwZ3R0LT5iYXNlOwo+ICsJCQkJc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0gPSAmY3R4LT5wcGd0dC0+dm07Cj4gIAkJCQlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKPiAgCQkJCWludCBlcnI7Cj4gIAo+IEBAIC0yNTksMTIgKzI1OCwxMiBAQCBzdGF0aWMg aW50IGlndF92bWFfcGluMSh2b2lkICphcmcpCj4gIAkJVkFMSUQoMCwgUElOX0dMT0JBTCB8IFBJ Tl9PRkZTRVRfQklBUyB8IDgxOTIpLAo+ICAJCVZBTElEKDAsIFBJTl9HTE9CQUwgfCBQSU5fT0ZG U0VUX0JJQVMgfCAoaTkxNS0+Z2d0dC5tYXBwYWJsZV9lbmQgLSA0MDk2KSksCj4gIAkJVkFMSUQo MCwgUElOX0dMT0JBTCB8IFBJTl9NQVBQQUJMRSB8IFBJTl9PRkZTRVRfQklBUyB8IChpOTE1LT5n Z3R0Lm1hcHBhYmxlX2VuZCAtIDQwOTYpKSwKPiAtCQlWQUxJRCgwLCBQSU5fR0xPQkFMIHwgUElO X09GRlNFVF9CSUFTIHwgKGk5MTUtPmdndHQuYmFzZS50b3RhbCAtIDQwOTYpKSwKPiArCQlWQUxJ RCgwLCBQSU5fR0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwgKGk5MTUtPmdndHQudm0udG90YWwg LSA0MDk2KSksCj4gIAo+ICAJCVZBTElEKDAsIFBJTl9HTE9CQUwgfCBQSU5fTUFQUEFCTEUgfCBQ SU5fT0ZGU0VUX0ZJWEVEIHwgKGk5MTUtPmdndHQubWFwcGFibGVfZW5kIC0gNDA5NikpLAo+ICAJ CUlOVkFMSUQoMCwgUElOX0dMT0JBTCB8IFBJTl9NQVBQQUJMRSB8IFBJTl9PRkZTRVRfRklYRUQg fCBpOTE1LT5nZ3R0Lm1hcHBhYmxlX2VuZCksCj4gLQkJVkFMSUQoMCwgUElOX0dMT0JBTCB8IFBJ Tl9PRkZTRVRfRklYRUQgfCAoaTkxNS0+Z2d0dC5iYXNlLnRvdGFsIC0gNDA5NikpLAo+IC0JCUlO VkFMSUQoMCwgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfRklYRUQgfCBpOTE1LT5nZ3R0LmJhc2Uu dG90YWwpLAo+ICsJCVZBTElEKDAsIFBJTl9HTE9CQUwgfCBQSU5fT0ZGU0VUX0ZJWEVEIHwgKGk5 MTUtPmdndHQudm0udG90YWwgLSA0MDk2KSksCj4gKwkJSU5WQUxJRCgwLCBQSU5fR0xPQkFMIHwg UElOX09GRlNFVF9GSVhFRCB8IGk5MTUtPmdndHQudm0udG90YWwpLAo+ICAJCUlOVkFMSUQoMCwg UElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfRklYRUQgfCByb3VuZF9kb3duKFU2NF9NQVgsIFBBR0Vf U0laRSkpLAo+ICAKPiAgCQlWQUxJRCg0MDk2LCBQSU5fR0xPQkFMKSwKPiBAQCAtMjcyLDEyICsy NzEsMTIgQEAgc3RhdGljIGludCBpZ3Rfdm1hX3BpbjEodm9pZCAqYXJnKQo+ICAJCVZBTElEKGk5 MTUtPmdndHQubWFwcGFibGVfZW5kIC0gNDA5NiwgUElOX0dMT0JBTCB8IFBJTl9NQVBQQUJMRSks Cj4gIAkJVkFMSUQoaTkxNS0+Z2d0dC5tYXBwYWJsZV9lbmQsIFBJTl9HTE9CQUwgfCBQSU5fTUFQ UEFCTEUpLAo+ICAJCU5PU1BBQ0UoaTkxNS0+Z2d0dC5tYXBwYWJsZV9lbmQgKyA0MDk2LCBQSU5f R0xPQkFMIHwgUElOX01BUFBBQkxFKSwKPiAtCQlWQUxJRChpOTE1LT5nZ3R0LmJhc2UudG90YWwg LSA0MDk2LCBQSU5fR0xPQkFMKSwKPiAtCQlWQUxJRChpOTE1LT5nZ3R0LmJhc2UudG90YWwsIFBJ Tl9HTE9CQUwpLAo+IC0JCU5PU1BBQ0UoaTkxNS0+Z2d0dC5iYXNlLnRvdGFsICsgNDA5NiwgUElO X0dMT0JBTCksCj4gKwkJVkFMSUQoaTkxNS0+Z2d0dC52bS50b3RhbCAtIDQwOTYsIFBJTl9HTE9C QUwpLAo+ICsJCVZBTElEKGk5MTUtPmdndHQudm0udG90YWwsIFBJTl9HTE9CQUwpLAo+ICsJCU5P U1BBQ0UoaTkxNS0+Z2d0dC52bS50b3RhbCArIDQwOTYsIFBJTl9HTE9CQUwpLAo+ICAJCU5PU1BB Q0Uocm91bmRfZG93bihVNjRfTUFYLCBQQUdFX1NJWkUpLCBQSU5fR0xPQkFMKSwKPiAgCQlJTlZB TElEKDgxOTIsIFBJTl9HTE9CQUwgfCBQSU5fTUFQUEFCTEUgfCBQSU5fT0ZGU0VUX0ZJWEVEIHwg KGk5MTUtPmdndHQubWFwcGFibGVfZW5kIC0gNDA5NikpLAo+IC0JCUlOVkFMSUQoODE5MiwgUElO X0dMT0JBTCB8IFBJTl9PRkZTRVRfRklYRUQgfCAoaTkxNS0+Z2d0dC5iYXNlLnRvdGFsIC0gNDA5 NikpLAo+ICsJCUlOVkFMSUQoODE5MiwgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfRklYRUQgfCAo aTkxNS0+Z2d0dC52bS50b3RhbCAtIDQwOTYpKSwKPiAgCQlJTlZBTElEKDgxOTIsIFBJTl9HTE9C QUwgfCBQSU5fT0ZGU0VUX0ZJWEVEIHwgKHJvdW5kX2Rvd24oVTY0X01BWCwgUEFHRV9TSVpFKSAt IDQwOTYpKSwKPiAgCj4gIAkJVkFMSUQoODE5MiwgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfQklB UyB8IChpOTE1LT5nZ3R0Lm1hcHBhYmxlX2VuZCAtIDQwOTYpKSwKPiBAQCAtMjg5LDkgKzI4OCw5 IEBAIHN0YXRpYyBpbnQgaWd0X3ZtYV9waW4xKHZvaWQgKmFyZykKPiAgCQkgKiB2YXJpYWJsZSBz dGFydCwgZW5kIGFuZCBzaXplLgo+ICAJCSAqLwo+ICAJCU5PU1BBQ0UoMCwgUElOX0dMT0JBTCB8 IFBJTl9NQVBQQUJMRSB8IFBJTl9PRkZTRVRfQklBUyB8IGk5MTUtPmdndHQubWFwcGFibGVfZW5k KSwKPiAtCQlOT1NQQUNFKDAsIFBJTl9HTE9CQUwgfCBQSU5fT0ZGU0VUX0JJQVMgfCBpOTE1LT5n Z3R0LmJhc2UudG90YWwpLAo+ICsJCU5PU1BBQ0UoMCwgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRf QklBUyB8IGk5MTUtPmdndHQudm0udG90YWwpLAo+ICAJCU5PU1BBQ0UoODE5MiwgUElOX0dMT0JB TCB8IFBJTl9NQVBQQUJMRSB8IFBJTl9PRkZTRVRfQklBUyB8IChpOTE1LT5nZ3R0Lm1hcHBhYmxl X2VuZCAtIDQwOTYpKSwKPiAtCQlOT1NQQUNFKDgxOTIsIFBJTl9HTE9CQUwgfCBQSU5fT0ZGU0VU X0JJQVMgfCAoaTkxNS0+Z2d0dC5iYXNlLnRvdGFsIC0gNDA5NikpLAo+ICsJCU5PU1BBQ0UoODE5 MiwgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfQklBUyB8IChpOTE1LT5nZ3R0LnZtLnRvdGFsIC0g NDA5NikpLAo+ICAjZW5kaWYKPiAgCQl7IH0sCj4gICN1bmRlZiBOT1NQQUNFCj4gQEAgLTMwNywx MyArMzA2LDEzIEBAIHN0YXRpYyBpbnQgaWd0X3ZtYV9waW4xKHZvaWQgKmFyZykKPiAgCSAqIGZv Y3VzaW5nIG9uIGVycm9yIGhhbmRsaW5nIG9mIGJvdW5kYXJ5IGNvbmRpdGlvbnMuCj4gIAkgKi8K PiAgCj4gLQlHRU1fQlVHX09OKCFkcm1fbW1fY2xlYW4oJmk5MTUtPmdndHQuYmFzZS5tbSkpOwo+ ICsJR0VNX0JVR19PTighZHJtX21tX2NsZWFuKCZpOTE1LT5nZ3R0LnZtLm1tKSk7Cj4gIAo+ICAJ b2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOwo+ ICAJaWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gIAo+IC0Jdm1h ID0gY2hlY2tlZF92bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC5iYXNlLCBOVUxMKTsKPiAr CXZtYSA9IGNoZWNrZWRfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQudm0sIE5VTEwpOwo+ ICAJaWYgKElTX0VSUih2bWEpKQo+ICAJCWdvdG8gb3V0Owo+ICAKPiBAQCAtNDA1LDcgKzQwNCw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcm90YXRlZF9zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9y b3RhdGlvbl9wbGFuZV9pbmZvICphLAo+ICBzdGF0aWMgaW50IGlndF92bWFfcm90YXRlKHZvaWQg KmFyZykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gLQlz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZpOTE1LT5nZ3R0LmJhc2U7Cj4gKwlzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZpOTE1LT5nZ3R0LnZtOwo+ICAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9w bGFuZV9pbmZvIHBsYW5lc1tdID0gewo+ICAJCXsgLndpZHRoID0gMSwgLmhlaWdodCA9IDEsIC5z dHJpZGUgPSAxIH0sCj4gQEAgLTYwNCw3ICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBhc3NlcnRfcGlu KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICBzdGF0aWMgaW50IGlndF92bWFfcGFydGlhbCh2b2lk ICphcmcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+IC0J c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSAmaTkxNS0+Z2d0dC5iYXNlOwo+ICsJc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSAmaTkxNS0+Z2d0dC52bTsKPiAgCWNvbnN0IHVu c2lnbmVkIGludCBucGFnZXMgPSAxMDIxOyAvKiBwcmltZSEgKi8KPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4gIAljb25zdCBzdHJ1Y3QgcGhhc2Ugewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCAyMDkx ZTNhNmE1YmUuLjM5MGExNTdiMzdjMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtMTA3LDggKzEwNyw4IEBAIHN0YXRp YyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVjdCBoYW5nICpoLAo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBoLT5pOTE1Owo+ICAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0gPQo+ICAJCXJxLT5nZW1fY29udGV4dC0+cHBndHQgPwo+IC0JCSZycS0+Z2VtX2NvbnRl eHQtPnBwZ3R0LT5iYXNlIDoKPiAtCQkmaTkxNS0+Z2d0dC5iYXNlOwo+ICsJCSZycS0+Z2VtX2Nv bnRleHQtPnBwZ3R0LT52bSA6Cj4gKwkJJmk5MTUtPmdndHQudm07Cj4gIAlzdHJ1Y3QgaTkxNV92 bWEgKmh3cywgKnZtYTsKPiAgCXVuc2lnbmVkIGludCBmbGFnczsKPiAgCXUzMiAqYmF0Y2g7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IGluZGV4IDY4Y2I5 MTI2YjNlMS4uMGI2ZGEwOGM4Y2FlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9scmMuYwo+IEBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1 cnNlX2JhdGNoKHN0cnVjdCBzcGlubmVyICpzcGluLAo+ICAJCQkgICAgICBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwKPiAgCQkJICAgICAgdTMyIGFyYml0cmF0aW9uX2NvbW1hbmQpCj4gIHsKPiAt CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJnJxLT5nZW1fY29udGV4dC0+cHBndHQt PmJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZycS0+Z2VtX2NvbnRl eHQtPnBwZ3R0LT52bTsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqaHdzLCAqdm1hOwo+ICAJdTMyICpi YXRjaDsKPiAgCWludCBlcnI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCAxNzQ0NGEzYWJiYjkuLmYxY2ZiMGZiNmJl YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29y a2Fyb3VuZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93 b3JrYXJvdW5kcy5jCj4gQEAgLTMzLDcgKzMzLDcgQEAgcmVhZF9ub25wcml2cyhzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlt ZW1zZXQoY3MsIDB4YzUsIFBBR0VfU0laRSk7Cj4gIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KHJlc3VsdCk7Cj4gIAo+IC0Jdm1hID0gaTkxNV92bWFfaW5zdGFuY2UocmVzdWx0LCAmZW5naW5l LT5pOTE1LT5nZ3R0LmJhc2UsIE5VTEwpOwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2UocmVz dWx0LCAmZW5naW5lLT5pOTE1LT5nZ3R0LnZtLCBOVUxMKTsKPiAgCWlmIChJU19FUlIodm1hKSkg ewo+ICAJCWVyciA9IFBUUl9FUlIodm1hKTsKPiAgCQlnb3RvIGVycl9vYmo7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMKPiBpbmRleCAzNmMxMTIwODg5NDAuLjU1 NmM1NDZmMjcxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0 dC5jCj4gQEAgLTY2LDI1ICs2NiwyNSBAQCBtb2NrX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiAgCWtyZWZfaW5pdCgmcHBndHQtPnJl Zik7Cj4gLQlwcGd0dC0+YmFzZS5pOTE1ID0gaTkxNTsKPiAtCXBwZ3R0LT5iYXNlLnRvdGFsID0g cm91bmRfZG93bihVNjRfTUFYLCBQQUdFX1NJWkUpOwo+IC0JcHBndHQtPmJhc2UuZmlsZSA9IEVS Ul9QVFIoLUVOT0RFVik7Cj4gLQo+IC0JSU5JVF9MSVNUX0hFQUQoJnBwZ3R0LT5iYXNlLmFjdGl2 ZV9saXN0KTsKPiAtCUlOSVRfTElTVF9IRUFEKCZwcGd0dC0+YmFzZS5pbmFjdGl2ZV9saXN0KTsK PiAtCUlOSVRfTElTVF9IRUFEKCZwcGd0dC0+YmFzZS51bmJvdW5kX2xpc3QpOwo+IC0KPiAtCUlO SVRfTElTVF9IRUFEKCZwcGd0dC0+YmFzZS5nbG9iYWxfbGluayk7Cj4gLQlkcm1fbW1faW5pdCgm cHBndHQtPmJhc2UubW0sIDAsIHBwZ3R0LT5iYXNlLnRvdGFsKTsKPiAtCj4gLQlwcGd0dC0+YmFz ZS5jbGVhcl9yYW5nZSA9IG5vcF9jbGVhcl9yYW5nZTsKPiAtCXBwZ3R0LT5iYXNlLmluc2VydF9w YWdlID0gbW9ja19pbnNlcnRfcGFnZTsKPiAtCXBwZ3R0LT5iYXNlLmluc2VydF9lbnRyaWVzID0g bW9ja19pbnNlcnRfZW50cmllczsKPiAtCXBwZ3R0LT5iYXNlLmJpbmRfdm1hID0gbW9ja19iaW5k X3BwZ3R0Owo+IC0JcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IG1vY2tfdW5iaW5kX3BwZ3R0Owo+ IC0JcHBndHQtPmJhc2Uuc2V0X3BhZ2VzID0gcHBndHRfc2V0X3BhZ2VzOwo+IC0JcHBndHQtPmJh c2UuY2xlYXJfcGFnZXMgPSBjbGVhcl9wYWdlczsKPiAtCXBwZ3R0LT5iYXNlLmNsZWFudXAgPSBt b2NrX2NsZWFudXA7Cj4gKwlwcGd0dC0+dm0uaTkxNSA9IGk5MTU7Cj4gKwlwcGd0dC0+dm0udG90 YWwgPSByb3VuZF9kb3duKFU2NF9NQVgsIFBBR0VfU0laRSk7Cj4gKwlwcGd0dC0+dm0uZmlsZSA9 IEVSUl9QVFIoLUVOT0RFVik7Cj4gKwo+ICsJSU5JVF9MSVNUX0hFQUQoJnBwZ3R0LT52bS5hY3Rp dmVfbGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmcHBndHQtPnZtLmluYWN0aXZlX2xpc3QpOwo+ ICsJSU5JVF9MSVNUX0hFQUQoJnBwZ3R0LT52bS51bmJvdW5kX2xpc3QpOwo+ICsKPiArCUlOSVRf TElTVF9IRUFEKCZwcGd0dC0+dm0uZ2xvYmFsX2xpbmspOwo+ICsJZHJtX21tX2luaXQoJnBwZ3R0 LT52bS5tbSwgMCwgcHBndHQtPnZtLnRvdGFsKTsKPiArCj4gKwlwcGd0dC0+dm0uY2xlYXJfcmFu Z2UgPSBub3BfY2xlYXJfcmFuZ2U7Cj4gKwlwcGd0dC0+dm0uaW5zZXJ0X3BhZ2UgPSBtb2NrX2lu c2VydF9wYWdlOwo+ICsJcHBndHQtPnZtLmluc2VydF9lbnRyaWVzID0gbW9ja19pbnNlcnRfZW50 cmllczsKPiArCXBwZ3R0LT52bS5iaW5kX3ZtYSA9IG1vY2tfYmluZF9wcGd0dDsKPiArCXBwZ3R0 LT52bS51bmJpbmRfdm1hID0gbW9ja191bmJpbmRfcHBndHQ7Cj4gKwlwcGd0dC0+dm0uc2V0X3Bh Z2VzID0gcHBndHRfc2V0X3BhZ2VzOwo+ICsJcHBndHQtPnZtLmNsZWFyX3BhZ2VzID0gY2xlYXJf cGFnZXM7Cj4gKwlwcGd0dC0+dm0uY2xlYW51cCA9IG1vY2tfY2xlYW51cDsKPiAgCj4gIAlyZXR1 cm4gcHBndHQ7Cj4gIH0KPiBAQCAtMTA3LDI3ICsxMDcsMjcgQEAgdm9pZCBtb2NrX2luaXRfZ2d0 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAlJTklUX0xJU1RfSEVBRCgm aTkxNS0+dm1fbGlzdCk7Cj4gIAo+IC0JZ2d0dC0+YmFzZS5pOTE1ID0gaTkxNTsKPiArCWdndHQt PnZtLmk5MTUgPSBpOTE1Owo+ICAKPiAgCWdndHQtPmdtYWRyID0gKHN0cnVjdCByZXNvdXJjZSkg REVGSU5FX1JFU19NRU0oMCwgMjA0OCAqIFBBR0VfU0laRSk7Cj4gIAlnZ3R0LT5tYXBwYWJsZV9l bmQgPSByZXNvdXJjZV9zaXplKCZnZ3R0LT5nbWFkcik7Cj4gLQlnZ3R0LT5iYXNlLnRvdGFsID0g NDA5NiAqIFBBR0VfU0laRTsKPiAtCj4gLQlnZ3R0LT5iYXNlLmNsZWFyX3JhbmdlID0gbm9wX2Ns ZWFyX3JhbmdlOwo+IC0JZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSA9IG1vY2tfaW5zZXJ0X3BhZ2U7 Cj4gLQlnZ3R0LT5iYXNlLmluc2VydF9lbnRyaWVzID0gbW9ja19pbnNlcnRfZW50cmllczsKPiAt CWdndHQtPmJhc2UuYmluZF92bWEgPSBtb2NrX2JpbmRfZ2d0dDsKPiAtCWdndHQtPmJhc2UudW5i aW5kX3ZtYSA9IG1vY2tfdW5iaW5kX2dndHQ7Cj4gLQlnZ3R0LT5iYXNlLnNldF9wYWdlcyA9IGdn dHRfc2V0X3BhZ2VzOwo+IC0JZ2d0dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwo+ IC0JZ2d0dC0+YmFzZS5jbGVhbnVwID0gbW9ja19jbGVhbnVwOwo+IC0KPiAtCWk5MTVfYWRkcmVz c19zcGFjZV9pbml0KCZnZ3R0LT5iYXNlLCBpOTE1LCAiZ2xvYmFsIik7Cj4gKwlnZ3R0LT52bS50 b3RhbCA9IDQwOTYgKiBQQUdFX1NJWkU7Cj4gKwo+ICsJZ2d0dC0+dm0uY2xlYXJfcmFuZ2UgPSBu b3BfY2xlYXJfcmFuZ2U7Cj4gKwlnZ3R0LT52bS5pbnNlcnRfcGFnZSA9IG1vY2tfaW5zZXJ0X3Bh Z2U7Cj4gKwlnZ3R0LT52bS5pbnNlcnRfZW50cmllcyA9IG1vY2tfaW5zZXJ0X2VudHJpZXM7Cj4g KwlnZ3R0LT52bS5iaW5kX3ZtYSA9IG1vY2tfYmluZF9nZ3R0Owo+ICsJZ2d0dC0+dm0udW5iaW5k X3ZtYSA9IG1vY2tfdW5iaW5kX2dndHQ7Cj4gKwlnZ3R0LT52bS5zZXRfcGFnZXMgPSBnZ3R0X3Nl dF9wYWdlczsKPiArCWdndHQtPnZtLmNsZWFyX3BhZ2VzID0gY2xlYXJfcGFnZXM7Cj4gKwlnZ3R0 LT52bS5jbGVhbnVwID0gbW9ja19jbGVhbnVwOwo+ICsKPiArCWk5MTVfYWRkcmVzc19zcGFjZV9p bml0KCZnZ3R0LT52bSwgaTkxNSwgImdsb2JhbCIpOwo+ICB9Cj4gIAo+ICB2b2lkIG1vY2tfZmlu aV9nZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0ID0gJmk5MTUtPmdndHQ7Cj4gIAo+IC0JaTkxNV9hZGRyZXNzX3NwYWNlX2Zp bmkoJmdndHQtPmJhc2UpOwo+ICsJaTkxNV9hZGRyZXNzX3NwYWNlX2ZpbmkoJmdndHQtPnZtKTsK PiAgfQo+IC0tIAo+IDIuMTcuMQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK