From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 04/46] drm/i915: Markup paired operations on wakerefs Date: Tue, 08 Jan 2019 18:23:18 +0200 Message-ID: <87k1jf2k5l.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-4-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 535416EB51 for ; Tue, 8 Jan 2019 16:24:58 +0000 (UTC) In-Reply-To: <20190107115509.12523-4-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 Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVGhlIG1h am9yaXR5IG9mIHJ1bnRpbWUtcG0gb3BlcmF0aW9ucyBhcmUgYm91bmRlZCBhbmQgc2NvcGVkIHdp dGhpbiBhCj4gZnVuY3Rpb247IHRoZXNlIGFyZSBlYXN5IHRvIHZlcmlmeSB0aGF0IHRoZSB3YWtl cmVmIGFyZSBoYW5kbGVkCj4gY29ycmVjdGx5LiBXZSBjYW4gZW1wbG95IHRoZSBjb21waWxlciB0 byBoZWxwIHVzLCBhbmQgcmVkdWNlIHRoZSBudW1iZXIKPiBvZiB3YWtlcmVmcyB0cmFja2VkIHdo ZW4gZGVidWdnaW5nLCBieSBwYXNzaW5nIGFyb3VuZCBjb29raWVzIHByb3ZpZGVkCj4gYnkgdGhl IHZhcmlvdXMgcnBtX2dldCBmdW5jdGlvbnMgdG8gdGhlaXIgcnBtX3B1dCBjb3VudGVycGFydC4g VGhpcwo+IG1ha2VzIHRoZSBwYWlyaW5nIGV4cGxpY2l0LCBhbmQgZ2l2ZW4gdGhlIHJlcXVpcmVk IHdha2VyZWYgY29va2llIHRoZQo+IGNvbXBpbGVyIGNhbiB2ZXJpZnkgdGhhdCB3ZSBwYXNzIGFu IGluaXRpYWxpc2VkIHZhbHVlIHRvIHRoZSBycG1fcHV0Cj4gKHF1aXRlIGhhbmR5IGZvciBkb3Vi bGUgY2hlY2tpbmcgZXJyb3IgcGF0aHMpLgo+Cj4gRm9yIHJlZ3VsYXIgYnVpbGRzLCB0aGUgY29t cGlsZXIgc2hvdWxkIGJlIGFibGUgdG8gZWxpbWluYXRlIHRoZSB1bnVzZWQKPiBsb2NhbCB2YXJp YWJsZXMgYW5kIHRoZSBwcm9ncmFtIGdyb3d0aCBzaG91bGQgYmUgbWluaW1hbC4gRndpdywgaXQg Y2FtZQo+IG91dCBhcyBhIG5ldCBpbXByb3ZlbWVudCBhcyBnY2Mgd2FzIGFibGUgdG8gcmVmYWN0 b3IgcnBtX2dldCBhbmQKPiBycG1fZ2V0X2lmX2luX3VzZSB0b2dldGhlciwKPgo+IHYyOiBKdXN0 IHMvcnBtX3B1dC9ycG1fcHV0X3VuY2hlY2tlZC8gZXZlcnl3aGVyZSwgbGVhdmluZyB0aGUgbWFu dWFsCj4gbWFyayB1cCBmb3Igc21hbGxlciBtb3JlIHRhcmdldGVkIHBhdGNoZXMuCj4KPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzog SmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvS2NvbmZpZy5kZWJ1ZyAgICAgICAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYyAgICAgICAgfCAgOCArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvZ3Z0LmggICAgICAgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvc2NoZWRfcG9saWN5LmMgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCA1NCArKysrKy0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMiArCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8IDIwICsrLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAyICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jICAgICB8ICAyICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgICB8ICA4ICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgICAgICB8IDEwICstLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgICAgfCAgMiArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAgNCArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jICAgICAgICAgICAgICAgfCAgNiArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgICAgICAgfCAxMiArLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgIHwgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAgIHwgMTUgKysrLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgNCArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jICAgICAgICAgICAgfCAgNCArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgICAgICAgICAgfCAgNiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgICAgICAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYyAgICAgICAgICAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgICAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgICAgICAgfCA4OSArKysr KysrKysrKysrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAg ICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3Bh Z2VzLmMgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bS5jICAgICB8IDEwICstLQo+ICAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVy ZW5jeS5jICAgfCAgMiArLQo+ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9j b250ZXh0LmMgfCAxMCArLS0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f ZXZpY3QuYyAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2d0dC5jIHwgIDQgKy0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f b2JqZWN0LmMgIHwgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf cmVxdWVzdC5jIHwgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X2d1Yy5jICAgIHwgIDQgKy0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFu Z2NoZWNrLmMgIHwgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X2xyYy5jICAgIHwgMTAgKy0tCj4gIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fy b3VuZHMuYyAgICB8IDEwICstLQo+ICAzOCBmaWxlcyBjaGFuZ2VkLCAyMDMgaW5zZXJ0aW9ucygr KSwgMTM4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L0tjb25maWcuZGVidWcgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnCj4gaW5k ZXggYTk3OTI5YzQ3NDY2Li5hZDRkNzExNjFkZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvS2NvbmZpZy5kZWJ1Zwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25m aWcuZGVidWcKPiBAQCAtMTczLDYgKzE3Myw3IEBAIGNvbmZpZyBEUk1fSTkxNV9ERUJVR19SVU5U SU1FX1BNCj4gIAlib29sICJFbmFibGUgZXh0cmEgc3RhdGUgY2hlY2tpbmcgZm9yIHJ1bnRpbWUg UE0iCj4gIAlkZXBlbmRzIG9uIERSTV9JOTE1Cj4gIAlkZWZhdWx0IG4KPiArCXNlbGVjdCBTVEFD S0RFUE9UCj4gIAloZWxwCj4gIAkgIENob29zZSB0aGlzIG9wdGlvbiB0byB0dXJuIG9uIGV4dHJh IHN0YXRlIGNoZWNraW5nIGZvciB0aGUKPiAgCSAgcnVudGltZSBQTSBmdW5jdGlvbmFsaXR5LiBU aGlzIG1heSBpbnRyb2R1Y2Ugb3ZlcmhlYWQgZHVyaW5nCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2FwZXJ0dXJlX2dtLmMKPiBpbmRleCAzNTlkMzdkNWM5NTguLjFmYTJmNjVjM2NkMSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jCj4gQEAgLTE4MCw3ICsxODAsNyBA QCBzdGF0aWMgdm9pZCBmcmVlX3ZncHVfZmVuY2Uoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4g IAl9Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1 dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGFsbG9jX3ZncHVf ZmVuY2Uoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0 aWMgaW50IGFsbG9jX3ZncHVfZmVuY2Uoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gIAlfY2xl YXJfdmdwdV9mZW5jZSh2Z3B1KTsKPiAgCj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAlyZXR1cm4gMDsKPiAg b3V0X2ZyZWVfZmVuY2U6Cj4gIAlndnRfdmdwdV9lcnIoIkZhaWxlZCB0byBhbGxvYyBmZW5jZXNc biIpOwo+IEBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIGludCBhbGxvY192Z3B1X2ZlbmNlKHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQo+ICAJCXZncHUtPmZlbmNlLnJlZ3NbaV0gPSBOVUxMOwo+ ICAJfQo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91 bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAJcmV0dXJuIC1FTk9TUEM7Cj4gIH0KPiAgCj4gQEAgLTMx Nyw3ICszMTcsNyBAQCB2b2lkIGludGVsX3ZncHVfcmVzZXRfcmVzb3VyY2Uoc3RydWN0IGludGVs X3ZncHUgKnZncHUpCj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAJ X2NsZWFyX3ZncHVfZmVuY2UodmdwdSk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJp dik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICB9Cj4g IAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4gaW5kZXggYjRhYjFkYWQwMTQzLi40MzVj NzQ2YzNmNzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4gQEAgLTU5Nyw3ICs1OTcsNyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgbW1pb19od19hY2Nlc3NfcHJlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBtbWlvX2h3X2FjY2Vz c19wb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVj a2VkKGRldl9wcml2KTsKPiAgfQo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9z Y2hlZF9wb2xpY3kuYwo+IGluZGV4IGMzMmU3ZDVlODYyOS4uZjA0YjNiOTY1YmZjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZF9wb2xpY3kuYwo+IEBAIC00NzQsNiArNDc0LDYg QEAgdm9pZCBpbnRlbF92Z3B1X3N0b3Bfc2NoZWR1bGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUp Cj4gIAkJfQo+ICAJfQo+ICAJc3Bpbl91bmxvY2tfYmgoJnNjaGVkdWxlci0+bW1pb19jb250ZXh0 X2xvY2spOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVu dGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCW11dGV4X3VubG9jaygmdmdwdS0+ Z3Z0LT5zY2hlZF9sb2NrKTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMK PiBpbmRleCAxYWQ4YzVlMTQ1NWQuLjM4MTZkY2FlMjE4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMKPiBAQCAtOTk3LDcgKzk5Nyw3IEBAIHN0YXRpYyBpbnQgd29ya2xv YWRfdGhyZWFkKHZvaWQgKnByaXYpCj4gIAkJCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGd2 dC0+ZGV2X3ByaXYsCj4gIAkJCQkJRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+IC0JCWludGVsX3J1bnRp bWVfcG1fcHV0KGd2dC0+ZGV2X3ByaXYpOwo+ICsJCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChndnQtPmRldl9wcml2KTsKPiAgCQlpZiAocmV0ICYmICh2Z3B1X2lzX3ZtX3VuaGVhbHRo eShyZXQpKSkKPiAgCQkJZW50ZXJfZmFpbHNhZmVfbW9kZSh2Z3B1LCBHVlRfRkFJTFNBRkVfR1VF U1RfRVJSKTsKPiAgCX0KPiBAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgaW50ZWxfdmdwdV9jcmVhdGVf d29ya2xvYWQoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIGludCByaW5nX2lkLAo+ICAJCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCQlyZXQgPSBpbnRlbF9ndnRf c2Nhbl9hbmRfc2hhZG93X3dvcmtsb2FkKHdvcmtsb2FkKTsKPiAgCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZf cHJpdik7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAg CX0KPiAgCj4gIAlpZiAocmV0ICYmICh2Z3B1X2lzX3ZtX3VuaGVhbHRoeShyZXQpKSkgewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggM2EzNjkyNDVkN2U2Li42YjhkYTE0 ZjIxM2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC04NzcsNyAr ODc3LDcgQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsK PiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC05NTMsNyArOTUzLDcgQEAgc3RhdGljIGludCBp OTE1X2dwdV9pbmZvX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUp Cj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAlncHUgPSBpOTE1X2NhcHR1 cmVfZ3B1X3N0YXRlKGk5MTUpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAlpZiAoSVNfRVJSKGdwdSkp Cj4gIAkJcmV0dXJuIFBUUl9FUlIoZ3B1KTsKPiAgCj4gQEAgLTEyMjYsNyArMTIyNiw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVu dXNlZCkKPiAgCXNlcV9wcmludGYobSwgIk1heCBDRCBjbG9jayBmcmVxdWVuY3k6ICVkIGtIelxu IiwgZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKPiAgCXNlcV9wcmludGYobSwgIk1heCBwaXhl bCBjbG9jayBmcmVxdWVuY3k6ICVkIGtIelxuIiwgZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcSk7 Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGlt ZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g QEAgLTEyOTIsNyArMTI5Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCj4gIAlpbnRlbF9lbmdpbmVfZ2V0X2lu c3Rkb25lKGRldl9wcml2LT5lbmdpbmVbUkNTXSwgJmluc3Rkb25lKTsKPiAgCj4gLQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNr ZWQoZGV2X3ByaXYpOwo+ICAKPiAgCWlmICh0aW1lcl9wZW5kaW5nKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yLmhhbmdjaGVja193b3JrLnRpbWVyKSkKPiAgCQlzZXFfcHJpbnRmKG0sICJIYW5nY2hlY2sg YWN0aXZlLCB0aW1lciBmaXJlcyBpbiAlZG1zXG4iLAo+IEBAIC0xNTc5LDcgKzE1NzksNyBAQCBz dGF0aWMgaW50IGk5MTVfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQo+ICAJZWxzZQo+ICAJCWVyciA9IGlyb25sYWtlX2RycGNfaW5mbyhtKTsKPiAgCj4gLQlpbnRl bF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNo ZWNrZWQoZGV2X3ByaXYpOwo+ICAKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtMTYzMiw3ICsx NjMyLDcgQEAgc3RhdGljIGludCBpOTE1X2ZiY19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCj4gIAl9Cj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZmYmMtPmxvY2spOwo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRf dW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0xNjk1LDcg KzE2OTUsNyBAQCBzdGF0aWMgaW50IGk5MTVfaXBzX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKPiAgCQkJc2VxX3B1dHMobSwgIkN1cnJlbnRseTogZGlzYWJsZWRcbiIp Owo+ICAJfQo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVs X3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4g IH0KPiBAQCAtMTcyMyw3ICsxNzIzLDcgQEAgc3RhdGljIGludCBpOTE1X3NyX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzcl9lbmFibGVkID0gSTkxNV9SRUFE KEZXX0JMQ19TRUxGX1ZMVikgJiBGV19DU1BXUkRXTkVOOwo+ICAKPiAgCWludGVsX2Rpc3BsYXlf cG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7Cj4gLQlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2 X3ByaXYpOwo+ICAKPiAgCXNlcV9wcmludGYobSwgInNlbGYtcmVmcmVzaDogJXNcbiIsIGVuYWJs ZWRkaXNhYmxlZChzcl9lbmFibGVkKSk7Cj4gIAo+IEBAIC0xNzU2LDcgKzE3NTYsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZW1vbl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQp Cj4gIAlzZXFfcHJpbnRmKG0sICJHRlggcG93ZXI6ICVsZFxuIiwgZ2Z4KTsKPiAgCXNlcV9wcmlu dGYobSwgIlRvdGFsIHBvd2VyOiAlbGRcbiIsIGNoaXBzZXQgKyBnZngpOwo+ICAKPiAtCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTgwNSw3ICsxODA1 LDcgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAg Cj4gIG91dDoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1 bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4g IAo+IEBAIC0yMDE3LDcgKzIwMTcsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3dpenpsZV9pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCWlmIChkZXZfcHJpdi0+cXVpcmtzICYg UVVJUktfUElOX1NXSVpaTEVEX1BBR0VTKQo+ICAJCXNlcV9wdXRzKG0sICJMLXNoYXBlZCBtZW1v cnkgZGV0ZWN0ZWRcbiIpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsK PiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiBAQCAtMjA2Nyw3ICsyMDY3LDcgQEAgc3RhdGljIGludCBpOTE1X3Jwc19i b29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkJYWN0X2ZyZXEg PSBpbnRlbF9nZXRfY2FnZihkZXZfcHJpdiwKPiAgCQkJCQkJICBJOTE1X1JFQUQoR0VONl9SUFNU QVQxKSk7Cj4gIAkJfQo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCQlp bnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAJfQo+ICAKPiAgCXNl cV9wcmludGYobSwgIlJQUyBlbmFibGVkPyAlZFxuIiwgcnBzLT5lbmFibGVkKTsKPiBAQCAtMjE2 MCw3ICsyMTYwLDcgQEAgc3RhdGljIGludCBpOTE1X2h1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7Cj4gIAlzZXFfcHJpbnRmKG0sICJcbkh1QyBzdGF0dXMgMHglMDh4OlxuIiwgSTkx NV9SRUFEKEhVQ19TVEFUVVMyKSk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7 Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAKPiAgCXJl dHVybiAwOwo+ICB9Cj4gQEAgLTIxOTIsNyArMjE5Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNf bG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAlmb3Ig KGkgPSAwOyBpIDwgMTY7IGkrKykKPiAgCQlzZXFfcHJpbnRmKG0sICJcdCUyZDogXHQweCV4XG4i LCBpLCBJOTE1X1JFQUQoU09GVF9TQ1JBVENIKGkpKSk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9w cml2KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0yNjAxLDcgKzI2MDEsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRh KQo+ICAJCQkgICBkZXZfcHJpdi0+cHNyLmxhc3RfZXhpdCk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVj a2VkKGRldl9wcml2KTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0yNjMyLDcgKzI2MzIs NyBAQCBpOTE1X2VkcF9wc3JfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAlkcm1f bW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ICAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZj dHgpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1 bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAg fQo+IEBAIC0yNjY1LDcgKzI2NjUsNyBAQCBzdGF0aWMgaW50IGk5MTVfZW5lcmd5X3VKKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKPiAgCj4gIAlpZiAocmRtc3JsX3NhZmUoTVNSX1JBUExfUE9XRVJfVU5JVCwgJnBvd2Vy KSkgewo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCQlpbnRlbF9ydW50 aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAJ fQo+ICAKPiBAQCAtMjY3Myw3ICsyNjczLDcgQEAgc3RhdGljIGludCBpOTE1X2VuZXJneV91Sihz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAlwb3dlciA9IEk5MTVfUkVBRChNQ0hf U0VDUF9OUkdfU1RUUyk7Cj4gIAlwb3dlciA9ICgxMDAwMDAwICogcG93ZXIpID4+IHVuaXRzOyAv KiBjb252ZXJ0IHRvIHVKICovCj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYp Owo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlz ZXFfcHJpbnRmKG0sICIlbGx1IiwgcG93ZXIpOwo+ICAKPiBAQCAtMjc3NSw3ICsyNzc1LDcgQEAg c3RhdGljIGludCBpOTE1X2RtY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQo+ICAJc2VxX3ByaW50ZihtLCAic3NwIGJhc2U6IDB4JTA4eFxuIiwgSTkxNV9SRUFEKENTUl9T U1BfQkFTRSkpOwo+ICAJc2VxX3ByaW50ZihtLCAiaHRwOiAweCUwOHhcbiIsIEk5MTVfUkVBRChD U1JfSFRQX1NLTCkpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAr CWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJu IDA7Cj4gIH0KPiBAQCAtMzExNCw3ICszMTE0LDcgQEAgc3RhdGljIGludCBpOTE1X2Rpc3BsYXlf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCWRybV9jb25uZWN0b3Jf bGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2Nv bmZpZy5tdXRleCk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJ aW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4g MDsKPiAgfQo+IEBAIC0zMTM5LDcgKzMxMzksNyBAQCBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2lu Zm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBkZXZfcHJpdiwgaWQpCj4gIAkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAmcCwg IiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMzI2NSw3ICszMjY1LDcgQEAgc3RhdGljIHNzaXplX3Qg aTkxNV9pcGNfc3RhdHVzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNl ciAqdWJ1ZiwKPiAgCWRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9zX3dtID0gdHJ1ZTsKPiAgCWRl dl9wcml2LT5pcGNfZW5hYmxlZCA9IGVuYWJsZTsKPiAgCWludGVsX2VuYWJsZV9pcGMoZGV2X3By aXYpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGlt ZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gbGVuOwo+ICB9Cj4g QEAgLTQwOTAsNyArNDA5MCw3IEBAIGk5MTVfZHJvcF9jYWNoZXNfc2V0KHZvaWQgKmRhdGEsIHU2 NCB2YWwpCj4gIAkJaTkxNV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhpOTE1KTsKPiAgCj4gIG91 dDoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9w dXRfdW5jaGVja2VkKGk5MTUpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtNDExMiw3 ICs0MTEyLDcgQEAgaTkxNV9jYWNoZV9zaGFyaW5nX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkK PiAgCj4gIAlzbnBjciA9IEk5MTVfUkVBRChHRU42X01CQ1VOSVRfU05QQ1IpOwo+ICAKPiAtCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3Vu Y2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJKnZhbCA9IChzbnBjciAmIEdFTjZfTUJDX1NOUENS X01BU0spID4+IEdFTjZfTUJDX1NOUENSX1NISUZUOwo+ICAKPiBAQCAtNDE0MCw3ICs0MTQwLDcg QEAgaTkxNV9jYWNoZV9zaGFyaW5nX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAJc25wY3Ig fD0gKHZhbCA8PCBHRU42X01CQ19TTlBDUl9TSElGVCk7Cj4gIAlJOTE1X1dSSVRFKEdFTjZfTUJD VU5JVF9TTlBDUiwgc25wY3IpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiBAQCAtNDM4OCw3ICs0Mzg4LDcgQEAgc3RhdGljIGludCBpOTE1X3Nz ZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCWdlbjEwX3Nz ZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+ICAJfQo+ICAKPiAtCWludGVsX3J1 bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tl ZChkZXZfcHJpdik7Cj4gIAo+ICAJaTkxNV9wcmludF9zc2V1X2luZm8obSwgZmFsc2UsICZzc2V1 KTsKPiAgCj4gQEAgLTQ0MTYsNyArNDQxNiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mb3JjZXdha2Vf cmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgCQlyZXR1 cm4gMDsKPiAgCj4gIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KGk5MTUpOwo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNo ZWNrZWQoaTkxNSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBpbmRleCA2MGI5ODEwM2FiYTMuLjQ2NGZmODlkMTQ2NCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC0xMzEsNiArMTMxLDggQEAgYm9vbCBpOTE1X2Vycm9yX2luamVjdGVk KHZvaWQpOwo+ICAJX19pOTE1X3ByaW50ayhpOTE1LCBpOTE1X2Vycm9yX2luamVjdGVkKCkgPyBL RVJOX0RFQlVHIDogS0VSTl9FUlIsIFwKPiAgCQkgICAgICBmbXQsICMjX19WQV9BUkdTX18pCj4g IAo+ICt0eXBlZGVmIGRlcG90X3N0YWNrX2hhbmRsZV90IGludGVsX3dha2VyZWZfdDsKPiArCj4g IGVudW0gaHBkX3BpbiB7Cj4gIAlIUERfTk9ORSA9IDAsCj4gIAlIUERfVFYgPSBIUERfTk9ORSwg ICAgIC8qIFRWIGlzIGtub3duIHRvIGJlIHVucmVsaWFibGUgKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBpbmRleCA5ODdhY2JiODI4MGYuLjVhYzMyZWE0YzhmYSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IEBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIHUzMiBfX2k5MTVfZ2Vt X3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICAJaW50ZWxfZGlzcGxh eV9wb3dlcl9wdXQoaTkxNSwgUE9XRVJfRE9NQUlOX0dUX0lSUSk7Cj4gIAo+IC0JaW50ZWxfcnVu dGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkx NSk7Cj4gIAo+ICAJcmV0dXJuIGk5MTUtPmd0LmVwb2NoOwo+ICB9Cj4gQEAgLTgxNSw3ICs4MTUs NyBAQCB2b2lkIGk5MTVfZ2VtX2ZsdXNoX2dndHRfd3JpdGVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCVBPU1RJTkdfUkVBRF9GVyhSSU5HX0hFQUQoUkVOREVSX1JJTkdf QkFTRSkpOwo+ICAKPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsK PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1f cHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAgLTEx NTAsNyArMTE1MCw3IEBAIGk5MTVfZ2VtX2d0dF9wcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAJCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gIAl9Cj4gIG91dF91bmxvY2s6 Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0 X3VuY2hlY2tlZChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiBAQCAtMTM1Nyw3ICsxMzU3LDcgQEAgaTkxNV9nZW1f Z3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJaTkx NV92bWFfdW5waW4odm1hKTsKPiAgCX0KPiAgb3V0X3JwbToKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICBv dXRfdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAg CXJldHVybiByZXQ7Cj4gQEAgLTE5NjksNyArMTk2OSw3IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1f ZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIGVycl91bmxvY2s6Cj4gIAltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgZXJyX3JwbToKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJp dik7Cj4gIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiAgZXJyOgo+ICAJc3dp dGNoIChyZXQpIHsKPiBAQCAtMjA2OSw3ICsyMDY5LDcgQEAgaTkxNV9nZW1fcmVsZWFzZV9tbWFw KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAl3bWIoKTsKPiAgCj4gIG91dDoK PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRf dW5jaGVja2VkKGk5MTUpOwo+ICB9Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVu ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTQ3NjYsNyArNDc2Niw3 IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAJCWlmIChvbikKPiAgCQkJY29uZF9yZXNjaGVkKCk7Cj4gIAl9Cj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3Vu Y2hlY2tlZChpOTE1KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZmx1c2hfZnJl ZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IEBAIC00OTAyLDcgKzQ5 MDIsNyBAQCB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICAJaW50ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1LCBmYWxzZSk7Cj4gIAo+ICAJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoaTkxNSwgRk9SQ0VXQUtFX0FMTCk7Cj4gLQlpbnRlbF9y dW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChp OTE1KTsKPiAgCj4gIAlpOTE1X2dlbV9jb250ZXh0c19sb3N0KGk5MTUpOwo+ICAJbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiBAQCAtNDk2NiwxMiArNDk2NiwxMiBAQCBp bnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWlm IChXQVJOX09OKCFpbnRlbF9lbmdpbmVzX2FyZV9pZGxlKGk5MTUpKSkKPiAgCQlpOTE1X2dlbV9z ZXRfd2VkZ2VkKGk5MTUpOyAvKiBubyBob3BlLCBkaXNjYXJkIGV2ZXJ5dGhpbmcgKi8KPiAgCj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3Vu Y2hlY2tlZChpOTE1KTsKPiAgCXJldHVybiAwOwo+ICAKPiAgZXJyX3VubG9jazoKPiAgCW11dGV4 X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCXJl dHVybiByZXQ7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+IGluZGV4IDViN2NkN2FkZDYzZS4uYTUyZmE0MmVkOGIxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0yNDI1LDcgKzI0MjUs NyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ ZWJfcmVsZWFzZV92bWFzKCZlYik7Cj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiAgZXJyX3JwbToKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGViLmk5MTUpOwo+ICsJaW50 ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGViLmk5MTUpOwo+ICAJaTkxNV9nZW1fY29udGV4 dF9wdXQoZWIuY3R4KTsKPiAgZXJyX2Rlc3Ryb3k6Cj4gIAllYl9kZXN0cm95KCZlYik7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBpbmRleCAyNGRmMmUyYThm YzEuLjFmNzJmNTA0Nzk0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Zl bmNlX3JlZy5jCj4gQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgaW50IGZlbmNlX3VwZGF0ZShz dHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgCSAqLwo+ICAJaWYgKGludGVsX3J1 bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShmZW5jZS0+aTkxNSkpIHsKPiAgCQlmZW5jZV93cml0ZShm ZW5jZSwgdm1hKTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChmZW5jZS0+aTkxNSk7Cj4gKwkJ aW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGZlbmNlLT5pOTE1KTsKPiAgCX0KPiAgCj4g IAlpZiAodm1hKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA1Y2M4 OTY4ZWIzYmYuLjZkYWM5NjE0ZjdiYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCj4gQEAgLTI1MzcsNyArMjUzNyw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9iaW5kX3ZtYShzdHJ1 Y3QgaTkxNV92bWEgKnZtYSwKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAg CXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHZtYSwgY2FjaGVfbGV2ZWwsIHB0ZV9m bGFncyk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVf cG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCj4gIAl2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ID0gSTkx NV9HVFRfUEFHRV9TSVpFOwo+ICAKPiBAQCAtMjU1Nyw3ICsyNTU3LDcgQEAgc3RhdGljIHZvaWQg Z2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAKPiAgCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICAJdm1hLT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwgdm1hLT5u b2RlLnN0YXJ0LCB2bWEtPnNpemUpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4g KwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIH0KPiAgCj4gIHN0YXRp YyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+IEBAIC0y NTkxLDcgKzI1OTEsNyBAQCBzdGF0aWMgaW50IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKPiAgCWlmIChmbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSB7Cj4g IAkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAkJdm1hLT52bS0+aW5zZXJ0X2VudHJp ZXModm1hLT52bSwgdm1hLCBjYWNoZV9sZXZlbCwgcHRlX2ZsYWdzKTsKPiAtCQlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1KTsKPiArCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkx NSk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTI2MDQsNyArMjYwNCw3IEBAIHN0YXRp YyB2b2lkIGFsaWFzaW5nX2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAJ aWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkgewo+ICAJCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICAJCXZtYS0+dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sIHZtYS0+ bm9kZS5zdGFydCwgdm1hLT5zaXplKTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsK PiArCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAl9Cj4gIAo+ICAJ aWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9MT0NBTF9CSU5EKSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gaW5kZXggNzJkNmVhMGNhYzdlLi4xNjY5M2RkNGQw MTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBAQCAt MjY2LDcgKzI2Niw3IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiAgCX0KPiAgCj4gIAlpZiAoZmxhZ3MgJiBJOTE1X1NIUklOS19CT1VORCkKPiAtCQlp bnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNo ZWNrZWQoaTkxNSk7Cj4gIAo+ICAJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gIAo+IEBA IC0zMDAsNyArMzAwLDcgQEAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9zaHJpbmtfYWxsKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCQkJSTkxNV9TSFJJTktfQk9VTkQgfAo+ICAJ CQkJSTkxNV9TSFJJTktfVU5CT1VORCB8Cj4gIAkJCQlJOTE1X1NIUklOS19BQ1RJVkUpOwo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNo ZWNrZWQoaTkxNSk7Cj4gIAo+ICAJcmV0dXJuIGZyZWVkOwo+ICB9Cj4gQEAgLTM3OCw3ICszNzgs NyBAQCBpOTE1X2dlbV9zaHJpbmtlcl9zY2FuKHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsIHN0 cnVjdCBzaHJpbmtfY29udHJvbCAqc2MpCj4gIAkJCQkJIEk5MTVfU0hSSU5LX0FDVElWRSB8Cj4g IAkJCQkJIEk5MTVfU0hSSU5LX0JPVU5EIHwKPiAgCQkJCQkgSTkxNV9TSFJJTktfVU5CT1VORCk7 Cj4gLQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9w dXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJfQo+ICAKPiAgCXNocmlua2VyX3VubG9jayhpOTE1LCB1 bmxvY2spOwo+IEBAIC00MjMsNyArNDIzLDcgQEAgaTkxNV9nZW1fc2hyaW5rZXJfb29tKHN0cnVj dCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cikKPiAg CWZyZWVkX3BhZ2VzID0gaTkxNV9nZW1fc2hyaW5rKGk5MTUsIC0xVUwsIE5VTEwsCj4gIAkJCQkg ICAgICBJOTE1X1NIUklOS19CT1VORCB8Cj4gIAkJCQkgICAgICBJOTE1X1NIUklOS19VTkJPVU5E KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9w dXRfdW5jaGVja2VkKGk5MTUpOwo+ICAKPiAgCS8qIEJlY2F1c2Ugd2UgbWF5IGJlIGFsbG9jYXRp bmcgaW5zaWRlIG91ciBvd24gZHJpdmVyLCB3ZSBjYW5ub3QKPiAgCSAqIGFzc2VydCB0aGF0IHRo ZXJlIGFyZSBubyBvYmplY3RzIHdpdGggcGlubmVkIHBhZ2VzIHRoYXQgYXJlIG5vdAo+IEBAIC00 NzksNyArNDc5LDcgQEAgaTkxNV9nZW1fc2hyaW5rZXJfdm1hcChzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIKPiAgCQkJCSAgICAgICBJOTE1 X1NIUklOS19CT1VORCB8Cj4gIAkJCQkgICAgICAgSTkxNV9TSFJJTktfVU5CT1VORCB8Cj4gIAkJ CQkgICAgICAgSTkxNV9TSFJJTktfVk1BUFMpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkx NSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAo+ICAJLyog V2UgYWxzbyB3YW50IHRvIGNsZWFyIGFueSBjYWNoZWQgaW9tYXBzIGFzIHRoZXkgd3JhcCB2bWFw ICovCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwo+IGluZGV4IGZiYjA5NGVjZjZjOS4uNzJiNzk5YzVlOGY2IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTMzNzUsNyArMzM3NSw3IEBAIHZvaWQgaTkxNV9oYW5k bGVfZXJyb3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJd2FrZV91cF9h bGwoJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfcXVldWUpOwo+ICAKPiAgb3V0Ogo+IC0JaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5j aGVja2VkKGRldl9wcml2KTsKPiAgfQo+ICAKPiAgLyogQ2FsbGVkIGZyb20gZHJtIGdlbmVyaWMg Y29kZSwgcGFzc2VkICdjcnRjJyB3aGljaAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5k ZXggNWIxYWU1ZWQ5N2IzLi5lNGRmZDE0NzdjNzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bl cmYuYwo+IEBAIC0xMzY1LDcgKzEzNjUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX3N0cmVhbV9k ZXN0cm95KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gIAlmcmVlX29hX2J1ZmZl cihkZXZfcHJpdik7Cj4gIAo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYs IEZPUkNFV0FLRV9BTEwpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJ aW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlpZiAoc3Ry ZWFtLT5jdHgpCj4gIAkJb2FfcHV0X3JlbmRlcl9jdHhfaWQoc3RyZWFtKTsKPiBAQCAtMjEyMyw3 ICsyMTIzLDcgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCj4gIAlwdXRfb2FfY29uZmlnKGRldl9wcml2LCBzdHJlYW0tPm9h X2NvbmZpZyk7Cj4gIAo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZP UkNFV0FLRV9BTEwpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50 ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIGVycl9jb25maWc6 Cj4gIAlpZiAoc3RyZWFtLT5jdHgpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCj4gaW5kZXggZDZj OGY4ZmRmZGE1Li5jOTlmY2ZjZTc5ZDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wbXUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKPiBA QCAtMjEwLDcgKzIxMCw3IEBAIGVuZ2luZXNfc2FtcGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdW5zaWduZWQgaW50IHBlcmlvZF9ucykKPiAgCWlmIChmdykKPiAgCQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gIAo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRf dW5jaGVja2VkKGRldl9wcml2KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAtMjMxLDcg KzIzMSw3IEBAIGZyZXF1ZW5jeV9zYW1wbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1bnNpZ25lZCBpbnQgcGVyaW9kX25zKQo+ICAJCSAgICBpbnRlbF9ydW50aW1lX3BtX2dl dF9pZl9pbl91c2UoZGV2X3ByaXYpKSB7Cj4gIAkJCXZhbCA9IGludGVsX2dldF9jYWdmKGRldl9w cml2LAo+ICAJCQkJCSAgICAgSTkxNV9SRUFEX05PVFJBQ0UoR0VONl9SUFNUQVQxKSk7Cj4gLQkJ CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCQkJaW50ZWxfcnVudGltZV9wbV9w dXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCQl9Cj4gIAo+ICAJCWFkZF9zYW1wbGVfbXVsdCgm ZGV2X3ByaXYtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9GUkVRX0FDVF0sCj4gQEAgLTQ0OCw3 ICs0NDgsNyBAQCBzdGF0aWMgdTY0IGdldF9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gIAo+ICAJaWYgKGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShpOTE1KSkgewo+ ICAJCXZhbCA9IF9fZ2V0X3JjNihpOTE1KTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1 KTsKPiArCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAo+ICAJCS8q Cj4gIAkJICogSWYgd2UgYXJlIGNvbWluZyBiYWNrIGZyb20gYmVpbmcgcnVudGltZSBzdXNwZW5k ZWQgd2UgbXVzdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiBpbmRleCBjMGNmZTdhZTJi YTUuLjUzYzIwZTEwM2Q1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiBAQCAt NDYsNyArNDYsNyBAQCBzdGF0aWMgdTMyIGNhbGNfcmVzaWRlbmN5KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 Cj4gIAlyZXMgPSBpbnRlbF9yYzZfcmVzaWRlbmN5X3VzKGRldl9wcml2LCByZWcpOwo+IC0JaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5j aGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHJl cywgMTAwMCk7Cj4gIH0KPiBAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2Fj dF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIAl9Cj4gIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2 X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAg Cj4gIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgcmV0KTsKPiAgfQo+ IEBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3Jl KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIAkgICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAo+ICAJ ICAgIHZhbCA8IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0KSB7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+cGN1X2xvY2spOwo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsK PiArCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAJfQo+ICAKPiBAQCAtMzkyLDcgKzM5Miw3IEBAIHN0YXRpYyBzc2l6ZV90 IGd0X21heF9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAo+ICAKPiAgCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYp Owo+ICAKPiAgCXJldHVybiByZXQgPzogY291bnQ7Cj4gIH0KPiBAQCAtNDI5LDcgKzQyOSw3IEBA IHN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2 LAo+ICAJICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXEgfHwKPiAgCSAgICB2YWwgPiBycHMtPm1heF9m cmVxX3NvZnRsaW1pdCkgewo+ICAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsK PiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwkJaW50ZWxfcnVudGltZV9w bV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAg Cj4gQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9taW5fZnJlcV9taHpfc3Rv cmUoc3RydWN0IGRldmljZSAqa2RldiwKPiAgCj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5w Y3VfbG9jayk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50 ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gcmV0 ID86IGNvdW50Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4 IDY5NmU2ZjU2ODBkZi4uYzYwMDBhYTQ3YThkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0yMTAyLDcgKzIxMDIsNyBAQCBpbnRlbF9waW5fYW5kX2ZlbmNlX2Zi X29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgZXJyOgo+ICAJYXRvbWljX2RlYygm ZGV2X3ByaXYtPmdwdV9lcnJvci5wZW5kaW5nX2ZiX3Bpbik7Cj4gIAo+IC0JaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRl dl9wcml2KTsKPiAgCXJldHVybiB2bWE7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBpbmRleCBhYzUxM2ZkNzAzMTUuLmExZTRlMTAzMzI4OSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gQEAgLTI5LDYgKzI5LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2kyYy5o Pgo+ICAjaW5jbHVkZSA8bGludXgvaGRtaS5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2NoZWQvY2xv Y2suaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N0YWNrZGVwb3QuaD4KPiAgI2luY2x1ZGUgPGRybS9p OTE1X2RybS5oPgo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgI2luY2x1ZGUgPGRybS9kcm1f Y3J0Yy5oPgo+IEBAIC0yMTgyLDEwICsyMTgzLDE2IEBAIGVuYWJsZV9ycG1fd2FrZXJlZl9hc3Nl cnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJYXRvbWljX2RlYygmaTkxNS0+ cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9ydW50aW1l X3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gLWJvb2wgaW50ZWxfcnVu dGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAt dm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSk7Cj4gLXZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOwo+ICtpbnRlbF93YWtlcmVmX3QgaW50ZWxfcnVudGltZV9wbV9nZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICtpbnRlbF93YWtlcmVmX3QgaW50ZWxfcnVu dGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAr aW50ZWxfd2FrZXJlZl90IGludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVzdW1lKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KTsKPiArCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXRfdW5j aGVja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArI2lmIElTX0VOQUJMRUQo Q09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCj4gK3ZvaWQgaW50ZWxfcnVudGltZV9w bV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludGVsX3dha2VyZWZfdCB3cmVm KTsKPiArI2Vsc2UKPiArI2RlZmluZSBpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3cmVmKSBp bnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSkKPiArI2VuZGlmCj4gIAo+ICAjaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKPiAgdm9pZCBwcmlu dF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCAyMzZjZDA0MGYy NzEuLjg1MTMxMTY2NTg5YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCj4gQEAgLTkyOCw3ICs5MjgsNyBAQCBzdGF0aWMgYm9vbCByaW5nX2lzX2lkbGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAy ICYmICEoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkpCj4gIAkJaWRsZSA9IGZh bHNlOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWludGVsX3J1 bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIGlkbGU7Cj4g IH0KPiBAQCAtMTQ4NSw3ICsxNDg1LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAo+ICAJaWYgKGludGVsX3J1bnRpbWVfcG1fZ2V0 X2lmX2luX3VzZShlbmdpbmUtPmk5MTUpKSB7Cj4gIAkJaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lz dGVycyhlbmdpbmUsIG0pOwo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGVuZ2luZS0+aTkxNSk7 Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGVuZ2luZS0+aTkxNSk7Cj4gIAl9 IGVsc2Ugewo+ICAJCWRybV9wcmludGYobSwgIlx0RGV2aWNlIGlzIGFzbGVlcDsgc2tpcHBpbmcg cmVnaXN0ZXIgZHVtcFxuIik7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4g aW5kZXggZmI1YmI1YjMyYTYwLi4xMWQ4NzdiOTA4ZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiZGV2LmMKPiBAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVh dGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAgCWlmYmRldi0+dm1hID0gdm1hOwo+ ICAJaWZiZGV2LT52bWFfZmxhZ3MgPSBmbGFnczsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYp Owo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAl2Z2Ffc3dpdGNoZXJv b19jbGllbnRfZmJfc2V0KHBkZXYsIGluZm8pOwo+ICAJcmV0dXJuIDA7Cj4gQEAgLTI4NSw3ICsy ODUsNyBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpo ZWxwZXIsCj4gIG91dF91bnBpbjoKPiAgCWludGVsX3VucGluX2ZiX3ZtYSh2bWEsIGZsYWdzKTsK PiAgb3V0X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4gIAltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvZy5jCj4gaW5kZXggZDNlYmRiYzAxODJlLi4xYjE1ODFhNDJhYTEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCj4gQEAgLTQ0NSw3ICs0NDUsNyBA QCBzdGF0aWMgdm9pZCBndWNfbG9nX2NhcHR1cmVfbG9ncyhzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyAq bG9nKQo+ICAJICovCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAlndWNf YWN0aW9uX2ZsdXNoX2xvZ19jb21wbGV0ZShndWMpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsK PiAgfQo+ICAKPiAgaW50IGludGVsX2d1Y19sb2dfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWNfbG9n ICpsb2cpCj4gQEAgLTUyOCw3ICs1MjgsNyBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19zZXRfbGV2ZWwo c3RydWN0IGludGVsX2d1Y19sb2cgKmxvZywgdTMyIGxldmVsKQo+ICAJcmV0ID0gZ3VjX2FjdGlv bl9jb250cm9sX2xvZyhndWMsIEdVQ19MT0dfTEVWRUxfSVNfVkVSQk9TRShsZXZlbCksCj4gIAkJ CQkgICAgIEdVQ19MT0dfTEVWRUxfSVNfRU5BQkxFRChsZXZlbCksCj4gIAkJCQkgICAgIEdVQ19M T0dfTEVWRUxfVE9fVkVSQk9TSVRZKGxldmVsKSk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ ICAJaWYgKHJldCkgewo+ICAJCURSTV9ERUJVR19EUklWRVIoImd1Y19sb2dfY29udHJvbCBhY3Rp b24gZmFpbGVkICVkXG4iLCByZXQpOwo+ICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNjEwLDcg KzYxMCw3IEBAIHZvaWQgaW50ZWxfZ3VjX2xvZ19yZWxheV9mbHVzaChzdHJ1Y3QgaW50ZWxfZ3Vj X2xvZyAqbG9nKQo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJZ3VjX2Fj dGlvbl9mbHVzaF9sb2coZ3VjKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJ aW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAKPiAgCS8qIEd1QyB3b3Vs ZCBoYXZlIHVwZGF0ZWQgbG9nIGJ1ZmZlciBieSBub3csIHNvIGNhcHR1cmUgaXQgKi8KPiAgCWd1 Y19sb2dfY2FwdHVyZV9sb2dzKGxvZyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcu Ywo+IGluZGV4IGUyNDE3NGQwOGZlZC4uMDY3Mjc3Y2E3Y2ZmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYwo+IEBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaHBkX2lycV9zdG9ybV9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldl9wcml2KTsKPiAgCXNwaW5f dW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3By aXYpOwo+ICB9Cj4gIAo+ICBib29sIGludGVsX2VuY29kZXJfaG90cGx1ZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwo+IGluZGV4IGJjMjdi NjkxZDgyNC4uYzJiMDc2ZTliYWRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKPiBA QCAtMTIyLDcgKzEyMiw3IEBAIGludCBpbnRlbF9odWNfY2hlY2tfc3RhdHVzKHN0cnVjdCBpbnRl bF9odWMgKmh1YykKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAlz dGF0dXMgPSBJOTE1X1JFQUQoSFVDX1NUQVRVUzIpICYgSFVDX0ZXX1ZFUklGSUVEOwo+IC0JaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5j aGVja2VkKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gc3RhdHVzOwo+ICB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggZWUzZTA4NDJkNTQyLi5jMmI3NDU1YTAyM2UgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAtMTIxMyw3ICsxMjEzLDcgQEAg c3RhdGljIGludCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNzKHN0cnVjdCBi YWNrbGlnaHRfZGV2aWNlICpiZCkKPiAgCXJldCA9IHNjYWxlX2h3X3RvX3VzZXIoY29ubmVjdG9y LCBod19sZXZlbCwgYmQtPnByb3BzLm1heF9icmlnaHRuZXNzKTsKPiAgCj4gIAlkcm1fbW9kZXNl dF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gLQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNr ZWQoZGV2X3ByaXYpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggNjdkNzFjYzYwNGYxLi4zOGMyMmZiNzE1MmUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTYyLDcg KzYyLDcgQEAgc3RhdGljIHZvaWQgaW5pdF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlzcGluX2xvY2tfaW5pdCgmaTkxNS0+cnVudGlt ZV9wbS5kZWJ1Z19sb2NrKTsKPiAgfQo+ICAKPiAtc3RhdGljIG5vaW5saW5lIHZvaWQKPiArc3Rh dGljIG5vaW5saW5lIGRlcG90X3N0YWNrX2hhbmRsZV90Cj4gIHRyYWNrX2ludGVsX3J1bnRpbWVf cG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJc3RydWN0 IGk5MTVfcnVudGltZV9wbSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07Cj4gQEAgLTc2LDcgKzc2 LDcgQEAgdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICAJZGVwb3Rfc3RhY2tfaGFuZGxlX3Qgc3RhY2ssICpzdGFja3M7Cj4gIAo+ ICAJaWYgKCFIQVNfUlVOVElNRV9QTShpOTE1KSkKPiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIC0x Owo+ICAKPiAgCXNhdmVfc3RhY2tfdHJhY2UoJnRyYWNlKTsKPiAgCWlmICh0cmFjZS5ucl9lbnRy aWVzICYmCj4gQEAgLTg1LDcgKzg1LDcgQEAgdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVm KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAKPiAgCXN0YWNrID0gZGVwb3Rfc2F2 ZV9zdGFjaygmdHJhY2UsIEdGUF9OT1dBSVQgfCBfX0dGUF9OT1dBUk4pOwo+ICAJaWYgKCFzdGFj aykKPiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIC0xOwo+ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZl KCZycG0tPmRlYnVnX2xvY2ssIGZsYWdzKTsKPiAgCXN0YWNrcyA9IGtyZWFsbG9jKHJwbS0+ZGVi dWdfb3duZXJzLAo+IEBAIC05NCw4ICs5NCw1NSBAQCB0cmFja19pbnRlbF9ydW50aW1lX3BtX3dh a2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlpZiAoc3RhY2tzKSB7Cj4g IAkJc3RhY2tzW3JwbS0+ZGVidWdfY291bnQrK10gPSBzdGFjazsKPiAgCQlycG0tPmRlYnVnX293 bmVycyA9IHN0YWNrczsKPiArCX0gZWxzZSB7Cj4gKwkJc3RhY2sgPSAtMTsKPiAgCX0KPiAgCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnJwbS0+ZGVidWdfbG9jaywgZmxhZ3MpOwo+ICsKPiArCXJl dHVybiBzdGFjazsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY2FuY2VsX2ludGVsX3J1bnRpbWVf cG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkJCQkgICAgZGVw b3Rfc3RhY2tfaGFuZGxlX3Qgc3RhY2spCj4gK3sKPiArCXN0cnVjdCBpOTE1X3J1bnRpbWVfcG0g KnJwbSA9ICZpOTE1LT5ydW50aW1lX3BtOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFncywgbjsKPiAr CWJvb2wgZm91bmQgPSBmYWxzZTsKPiArCj4gKwlpZiAodW5saWtlbHkoc3RhY2sgPT0gLTEpKQo+ ICsJCXJldHVybjsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmcnBtLT5kZWJ1Z19sb2NrLCBm bGFncyk7Cj4gKwlmb3IgKG4gPSBycG0tPmRlYnVnX2NvdW50OyBuLS07ICkgewo+ICsJCWlmIChy cG0tPmRlYnVnX293bmVyc1tuXSA9PSBzdGFjaykgewo+ICsJCQltZW1tb3ZlKHJwbS0+ZGVidWdf b3duZXJzICsgbiwKPiArCQkJCXJwbS0+ZGVidWdfb3duZXJzICsgbiArIDEsCj4gKwkJCQkoLS1y cG0tPmRlYnVnX2NvdW50IC0gbikgKiBzaXplb2Yoc3RhY2spKTsKCllvdSBjb3VsZCBtYXJrIHRo ZSByZWxlYXNlZCBvbmVzIGFzIGEgc3BlY2lhbCB2YWx1ZSBoZXJlPyAoLTEpLgoKVGhvIHJlbGVh c2luZyBmcm9tIHRoZSBlbmQsIHNob3VsZCBrZWVwIHRoZSBzaXplIHNtYWxsIGVub3VnaApzbyB0 aGF0IHdlIGRvbnQgbmVlZCB0byBjYXJlLgoKPiArCQkJZm91bmQgPSB0cnVlOwo+ICsJCQlicmVh azsKPiArCQl9Cj4gKwl9Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZycG0tPmRlYnVnX2xv Y2ssIGZsYWdzKTsKPiArCj4gKwlpZiAoV0FSTighZm91bmQsCj4gKwkJICJVbm1hdGNoZWQgd2Fr ZXJlZiAodHJhY2tpbmcgJWx1KSwgY291bnQgJXVcbiIsCj4gKwkJIHJwbS0+ZGVidWdfY291bnQs IGF0b21pY19yZWFkKCZycG0tPndha2VyZWZfY291bnQpKSkgewo+ICsJCXVuc2lnbmVkIGxvbmcg ZW50cmllc1tTVEFDS0RFUFRIXTsKPiArCQlzdHJ1Y3Qgc3RhY2tfdHJhY2UgdHJhY2UgPSB7Cj4g KwkJCS5lbnRyaWVzID0gZW50cmllcywKPiArCQkJLm1heF9lbnRyaWVzID0gQVJSQVlfU0laRShl bnRyaWVzKSwKPiArCQl9Owo+ICsJCWNoYXIgKmJ1ZjsKPiArCj4gKwkJYnVmID0ga21hbGxvYyhQ QUdFX1NJWkUsIEdGUF9LRVJORUwpOwo+ICsJCWlmICghYnVmKQo+ICsJCQlyZXR1cm47Cj4gKwo+ ICsJCWRlcG90X2ZldGNoX3N0YWNrKHN0YWNrLCAmdHJhY2UpOwo+ICsJCXNucHJpbnRfc3RhY2tf dHJhY2UoYnVmLCBQQUdFX1NJWkUsICZ0cmFjZSwgMCk7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigi d2FrZXJlZiAleCBmcm9tXG4lcyIsIHN0YWNrLCBidWYpOwo+ICsJCWtmcmVlKGJ1Zik7Cj4gKwl9 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHVudHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVm KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IEBAIC0yMjAsOCArMjY3LDEwIEBAIHN0 YXRpYyB2b2lkIGluaXRfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICB7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHRyYWNrX2ludGVsX3J1 bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGlj IGRlcG90X3N0YWNrX2hhbmRsZV90Cj4gK3RyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICsJcmV0dXJuIC0xOwo+ICB9Cj4g IAo+ICBzdGF0aWMgdm9pZCB1bnRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiBAQCAtMTgyMyw3ICsxODcyLDcgQEAgYm9vbCBpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gIAo+ICAJ aWYgKCFpc19lbmFibGVkKQo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAr CQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAKPiAgCXJldHVy biBpc19lbmFibGVkOwo+ICB9Cj4gQEAgLTE4NTcsNyArMTkwNiw3IEBAIHZvaWQgaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAg CW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gIAo+IC0JaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRl dl9wcml2KTsKPiAgfQo+ICAKPiAgI2RlZmluZSBJODMwX1BJUEVTX1BPV0VSX0RPTUFJTlMgKAkJ XAo+IEBAIC0zOTY1LDcgKzQwMTQsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9o dyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgcmVzdW1lKQo+ICB2b2lk IGludGVsX3Bvd2VyX2RvbWFpbnNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIHsKPiAgCS8qIEtlZXAgdGhlIHBvd2VyIHdlbGwgZW5hYmxlZCwgYnV0IGNhbmNl bCBpdHMgcnBtIHdha2VyZWYuICovCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7 Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAKPiAgCS8q IFJlbW92ZSB0aGUgcmVmY291bnQgd2UgdG9vayB0byBrZWVwIHBvd2VyIHdlbGwgc3VwcG9ydCBk aXNhYmxlZC4gKi8KPiAgCWlmICghaTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsKQo+ IEBAIC00MTc5LDcgKzQyMjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3Zl cmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqIEFueSBy dW50aW1lIHBtIHJlZmVyZW5jZSBvYnRhaW5lZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBh IHN5bW1ldHJpYwo+ICAgKiBjYWxsIHRvIGludGVsX3J1bnRpbWVfcG1fcHV0KCkgdG8gcmVsZWFz ZSB0aGUgcmVmZXJlbmNlIGFnYWluLgo+ICAgKi8KCk5lZWQgdG8gdXBkYXRlIHRoZSBkb2N1bWVu dGF0aW9uLgoKPiAtdm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAraW50ZWxfd2FrZXJlZl90IGludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9 IGk5MTUtPmRybS5wZGV2Owo+ICAJc3RydWN0IGRldmljZSAqa2RldiA9ICZwZGV2LT5kZXY7Cj4g QEAgLTQxOTEsNyArNDI0MCw3IEBAIHZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3BtLndh a2VyZWZfY291bnQpOwo+ICAJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOwo+ICAKPiAt CXRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKPiArCXJldHVybiB0cmFja19p bnRlbF9ydW50aW1lX3BtX3dha2VyZWYoaTkxNSk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC00MjA3 LDcgKzQyNTYsNyBAQCB2b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAgKgo+ICAgKiBSZXR1cm5zOiBUcnVlIGlmIHRoZSB3YWtlcmVmIHdh cyBhY3F1aXJlZCwgb3IgRmFsc2Ugb3RoZXJ3aXNlLgoKRm9yIHByYWN0aWNhbCBwdXJwb3NlcyB0 aGlzIGNvdWxkIHN0aWxsIGJlIHRoZSBjYXNlIGJ1dCBwbGVhc2UgdXBkYXRlCnRoZSByZXR1cm4g dmFsdWUgdHlwZS4KCj4gICAqLwo+IC1ib29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3Vz ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAraW50ZWxfd2FrZXJlZl90IGludGVs X3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgewo+ICAJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BNKSkgewo+ICAJCXN0cnVjdCBwY2lfZGV2 ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7Cj4gQEAgLTQyMjAsMTUgKzQyNjksMTMgQEAgYm9vbCBp bnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gIAkJICogYXRtIHRvIHRoZSBsYXRlL2Vhcmx5IHN5c3RlbSBzdXNwZW5kL3Jlc3VtZSBo YW5kbGVycy4KPiAgCQkgKi8KPiAgCQlpZiAocG1fcnVudGltZV9nZXRfaWZfaW5fdXNlKGtkZXYp IDw9IDApCj4gLQkJCXJldHVybiBmYWxzZTsKPiArCQkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+ICAJ YXRvbWljX2luYygmaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKPiAgCWFzc2VydF9y cG1fd2FrZWxvY2tfaGVsZChpOTE1KTsKPiAgCj4gLQl0cmFja19pbnRlbF9ydW50aW1lX3BtX3dh a2VyZWYoaTkxNSk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gKwlyZXR1cm4gdHJhY2tfaW50ZWxf cnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtNDI0OCw3ICs0 Mjk1LDcgQEAgYm9vbCBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gICAqIEFueSBydW50aW1lIHBtIHJlZmVyZW5jZSBvYnRhaW5l ZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHN5bW1ldHJpYwo+ICAgKiBjYWxsIHRvIGlu dGVsX3J1bnRpbWVfcG1fcHV0KCkgdG8gcmVsZWFzZSB0aGUgcmVmZXJlbmNlIGFnYWluLgo+ICAg Ki8KCkRvY3VtZW50IHVwZGF0ZSBuZWVkZWQgaGVyZSBhbHNvLgoKPiAtdm9pZCBpbnRlbF9ydW50 aW1lX3BtX2dldF9ub3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAraW50 ZWxfd2FrZXJlZl90IGludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVzdW1lKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5MTUtPmRy bS5wZGV2Owo+ICAJc3RydWN0IGRldmljZSAqa2RldiA9ICZwZGV2LT5kZXY7Cj4gQEAgLTQyNTgs NyArNDMwNSw3IEBAIHZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICAJYXRvbWljX2luYygmaTkxNS0+cnVudGltZV9w bS53YWtlcmVmX2NvdW50KTsKPiAgCj4gLQl0cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYo aTkxNSk7Cj4gKwlyZXR1cm4gdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwo+ ICB9Cj4gIAo+ICAvKioKPiBAQCAtNDI2OSw3ICs0MzE2LDcgQEAgdm9pZCBpbnRlbF9ydW50aW1l X3BtX2dldF9ub3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgICogaW50 ZWxfcnVudGltZV9wbV9nZXQoKSBhbmQgbWlnaHQgcG93ZXIgZG93biB0aGUgY29ycmVzcG9uZGlu Zwo+ICAgKiBoYXJkd2FyZSBibG9jayByaWdodCBhd2F5IGlmIHRoaXMgaXMgdGhlIGxhc3QgcmVm ZXJlbmNlLgo+ICAgKi8KCkRvY3VtZW50YXRpb24gcGFydCBuZWVkcyB1cGRhdGluZy4KCi1NaWth Cgo+IC12b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICt2b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBpOTE1LT5k cm0ucGRldjsKPiAgCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2Owo+IEBAIC00Mjgy LDYgKzQzMjksMTQgQEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiAgCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGtkZXYpOwo+ICB9 Cj4gIAo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkK PiArdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgaW50ZWxfd2FrZXJlZl90IHdyZWYpCj4gK3sKPiArCWNhbmNlbF9pbnRlbF9ydW50aW1lX3Bt X3dha2VyZWYoaTkxNSwgd3JlZik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQo aTkxNSk7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICAvKioKPiAgICogaW50ZWxfcnVudGltZV9wbV9l bmFibGUgLSBlbmFibGUgcnVudGltZSBwbQo+ICAgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFu Y2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IGZmZjQ2OGYxN2QyZC4u OGQ0Yzc2YWMwZTdkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAt MTcwOSw3ICsxNzA5LDcgQEAgaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgCQlyZWctPnZhbCA9IEk5MTVfUkVBRDgoZW50cnktPm9mZnNldF9sZHcpOwo+ ICAJZWxzZQo+ICAJCXJldCA9IC1FSU5WQUw7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZf cHJpdik7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9o dWdlX3BhZ2VzLmMKPiBpbmRleCBhMGM3Y2JjMjEyYmEuLjczMWRmZDNkM2ZjOCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IEBAIC0xNzg5LDcg KzE3ODksNyBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMs IGN0eCk7Cj4gIAo+ICBvdXRfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiAgCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCW1vY2tfZmls ZV9mcmVlKGRldl9wcml2LCBmaWxlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW0uYwo+IGluZGV4IGJkY2M1M2UxNWU3NS4uNzYyZTFhNzEyNWY1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMKPiBAQCAtMzIsNyArMzIsNyBA QCBzdGF0aWMgaW50IHN3aXRjaF90b19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICAJfQo+ICAKPiAtCWludGVsX3J1bnRp bWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUp Owo+ICAKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdm9p ZCBzaW11bGF0ZV9oaWJlcm5hdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkg Ki8KPiAgCXRyYXNoX3N0b2xlbihpOTE1KTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChp OTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgfQo+ICAK PiAgc3RhdGljIGludCBwbV9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ IEBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyB2b2lkIHBtX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gIAlpOTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhpOTE1KTsK PiAgCWk5MTVfZ2VtX3N1c3BlbmRfbGF0ZShpOTE1KTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQgcG1faGliZXJuYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+IEBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHZvaWQgcG1faGliZXJuYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaTkxNV9nZW1fZnJlZXplKGk5MTUpOwo+ ICAJaTkxNV9nZW1fZnJlZXplX2xhdGUoaTkxNSk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIHBtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiBAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIHBtX3Jlc3VtZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWk5MTVfZ2VtX3Nhbml0aXplKGk5MTUpOwo+ICAJaTkx NV9nZW1fcmVzdW1lKGk5MTUpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgaW50IGlndF9nZW1fc3VzcGVuZCh2b2lkICphcmcpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+IGluZGV4IGY3MzkyYzFm ZmU3NS4uZWVhNGZjMjQ0NWFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+IEBAIC0zNzYsNyArMzc2LDcgQEAgc3Rh dGljIGludCBpZ3RfZ2VtX2NvaGVyZW5jeSh2b2lkICphcmcpCj4gIAkJfQo+ICAJfQo+ICB1bmxv Y2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1f cHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gIAlrZnJlZShvZmZzZXRzKTsKPiAgCXJldHVybiBlcnI7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggZDAw Y2RmM2MyOTM5Li42ZTFhMDcxMWQyMDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMjQzLDcgKzI0Myw3IEBAIHN0 YXRpYyBpbnQgbGl2ZV9ub3Bfc3dpdGNoKHZvaWQgKmFyZykKPiAgCX0KPiAgCj4gIG91dF91bmxv Y2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1f cHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gIAltb2NrX2ZpbGVfZnJlZShpOTE1LCBmaWxlKTsKPiAgCXJldHVybiBlcnI7Cj4g QEAgLTYwOSw3ICs2MDksNyBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCj4g IAo+ICAJCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCQkJZXJyID0gZ3B1X2ZpbGwo b2JqLCBjdHgsIGVuZ2luZSwgZHcpOwo+IC0JCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsK PiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJCQlpZiAoZXJy KSB7Cj4gIAkJCQlwcl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0 aCBncHUgKCVzKSBpbiBjdHggJXUgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAo+ICAJCQkJ ICAgICAgIG5kd29yZHMsIGR3LCBtYXhfZHdvcmRzKG9iaiksCj4gQEAgLTcxNSw3ICs3MTUsNyBA QCBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQo+ICAKPiAgCQkJaW50ZWxf cnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdp bmUsIGR3KTsKPiAtCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwkJCWludGVsX3J1 bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCQkJaWYgKGVycikgewo+ICAJCQkJcHJf ZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgaW4g Y3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiAgCQkJCSAgICAgICBuZHdvcmRz LCBkdywgbWF4X2R3b3JkcyhvYmopLAo+IEBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgaW50 IGlndF92bV9pc29sYXRpb24odm9pZCAqYXJnKQo+ICAJCWNvdW50LCBSVU5USU1FX0lORk8oaTkx NSktPm51bV9yaW5ncyk7Cj4gIAo+ICBvdXRfcnBtOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIG91dF91 bmxvY2s6Cj4gIAlpZiAoZW5kX2xpdmVfdGVzdCgmdCkpCj4gIAkJZXJyID0gLUVJTzsKPiBAQCAt MTIwMCw3ICsxMjAwLDcgQEAgc3RhdGljIGludCBpZ3Rfc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0 KHZvaWQgKmFyZykKPiAgCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VE KSkKPiAgCQllcnIgPSAtRUlPOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4gIAlrZXJuZWxfY29udGV4dF9jbG9zZShj dHgpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmlj dC5jCj4gaW5kZXggNDM2NTk3OWQ4MjIyLi44ZDIyZjczYTliNjMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+IEBAIC00NjQsNyAr NDY0LDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfY29udGV4dHModm9pZCAqYXJnKQo+ICAJfQo+ ICAJaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmaG9sZSkpCj4gIAkJZHJtX21tX3JlbW92ZV9u b2RlKCZob2xlKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVu dGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgCj4gIAlyZXR1cm4gZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBhOWVkMGVjYzk0ZTIuLjg3Y2Iw NjAyYTVmYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fZ3R0LmMKPiBAQCAtMjk1LDcgKzI5NSw3IEBAIHN0YXRpYyBpbnQgbG93bGV2ZWxfaG9sZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCj4gIAkJCWludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOwo+ICAJCQl2bS0+aW5zZXJ0X2VudHJpZXModm0sICZtb2NrX3ZtYSwgSTkxNV9D QUNIRV9OT05FLCAwKTsKPiAtCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwkJCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCQl9Cj4gIAkJY291bnQgPSBu Owo+ICAKPiBAQCAtMTIxNiw3ICsxMjE2LDcgQEAgc3RhdGljIGludCBpZ3RfZ2d0dF9wYWdlKHZv aWQgKmFyZykKPiAgCWtmcmVlKG9yZGVyKTsKPiAgb3V0X3JlbW92ZToKPiAgCWdndHQtPnZtLmNs ZWFyX3JhbmdlKCZnZ3R0LT52bSwgdG1wLnN0YXJ0LCB0bXAuc2l6ZSk7Cj4gLQlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1 KTsKPiAgCWRybV9tbV9yZW1vdmVfbm9kZSgmdG1wKTsKPiAgb3V0X3VucGluOgo+ICAJaTkxNV9n ZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IGJlN2VjYjY2YWQxMS4uYjAzODkw YzU5MGQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9vYmplY3QuYwo+IEBAIC00NDQsNyArNDQ0LDcgQEAgbmV4dF90aWxpbmc6IDsKPiAgCX0K PiAgCj4gIG91dF91bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWlu dGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2Jq KTsKPiAgb3V0Ogo+IEBAIC01MDgsNyArNTA4LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZV9yZXRp cmVfd29ya2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaWYgKCFpOTE1LT5n dC5hY3RpdmVfcmVxdWVzdHMrKykgewo+ICAJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ ICAJCWk5MTVfZ2VtX3VucGFyayhpOTE1KTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1 KTsKPiArCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAl9Cj4gIAlt dXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJY2FuY2VsX2RlbGF5ZWRf d29ya19zeW5jKCZpOTE1LT5ndC5yZXRpcmVfd29yayk7Cj4gQEAgLTU5MCw3ICs1OTAsNyBAQCBz dGF0aWMgaW50IGlndF9tbWFwX29mZnNldF9leGhhdXN0aW9uKHZvaWQgKmFyZykKPiAgCQltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCQlpbnRlbF9ydW50aW1lX3BtX2dl dChpOTE1KTsKPiAgCQllcnIgPSBtYWtlX29ial9idXN5KG9iaik7Cj4gLQkJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUp Owo+ICAJCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAkJaWYgKGVy cikgewo+ICAJCQlwcl9lcnIoIltsb29wICVkXSBGYWlsZWQgdG8gYnVzeSB0aGUgb2JqZWN0XG4i LCBsb29wKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVz dC5jCj4gaW5kZXggMDdlNTU3ODE1MzA4Li5lODg4MGNhYmQ1YzcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCj4gQEAgLTQwMyw3ICs0MDMs NyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAJfQo+ICAKPiAg b3V0X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVu dGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtNTUzLDcgKzU1Myw3IEBA IHN0YXRpYyBpbnQgbGl2ZV9lbXB0eV9yZXF1ZXN0KHZvaWQgKmFyZykKPiAgCWk5MTVfdm1hX3Vu cGluKGJhdGNoKTsKPiAgCWk5MTVfdm1hX3B1dChiYXRjaCk7Cj4gIG91dF91bmxvY2s6Cj4gLQlp bnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g IAlyZXR1cm4gZXJyOwo+ICB9Cj4gQEAgLTczMSw3ICs3MzEsNyBAQCBzdGF0aWMgaW50IGxpdmVf YWxsX2VuZ2luZXModm9pZCAqYXJnKQo+ICAJaTkxNV92bWFfdW5waW4oYmF0Y2gpOwo+ICAJaTkx NV92bWFfcHV0KGJhdGNoKTsKPiAgb3V0X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4gIH0K PiBAQCAtODYwLDcgKzg2MCw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9zZXF1ZW50aWFsX2VuZ2luZXMo dm9pZCAqYXJnKQo+ICAJCWk5MTVfcmVxdWVzdF9wdXQocmVxdWVzdFtpZF0pOwo+ICAJfQo+ICBv dXRfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50 aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0dXJuIGVycjsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMKPiBpbmRleCAzMmNiYTRjYWUzMWEuLjM1OTBiYTNkODg5 NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3Vj LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMKPiBA QCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19jbGllbnRzKHZvaWQgKmFyZ3Mp Cj4gIAlndWNfY2xpZW50c19jcmVhdGUoZ3VjKTsKPiAgCWd1Y19jbGllbnRzX2VuYWJsZShndWMp Owo+ICB1bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwlpbnRl bF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZGV2X3ByaXYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gQEAgLTMz Nyw3ICszMzcsNyBAQCBzdGF0aWMgaW50IGlndF9ndWNfZG9vcmJlbGxzKHZvaWQgKmFyZykKPiAg CQkJZ3VjX2NsaWVudF9mcmVlKGNsaWVudHNbaV0pOwo+ICAJCX0KPiAgdW5sb2NrOgo+IC0JaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5j aGVja2VkKGRldl9wcml2KTsKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAJcmV0dXJuIGVycjsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCAwYWFkYmQ5YzdkNTYuLjMzYmQz YzRiNmZhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyBpbnQgaWd0X3dlZGdl ZF9yZXNldCh2b2lkICphcmcpCj4gIAlpOTE1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTLCBOVUxM KTsKPiAgCUdFTV9CVUdfT04odGVzdF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAmaTkxNS0+Z3B1 X2Vycm9yLmZsYWdzKSk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7 Cj4gIAo+IEBAIC0xNjM2LDcgKzE2MzYsNyBAQCBzdGF0aWMgaW50IGlndF9hdG9taWNfcmVzZXQo dm9pZCAqYXJnKQo+ICAJZm9yY2VfcmVzZXQoaTkxNSk7Cj4gIAo+ICB1bmxvY2s6Cj4gLQlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tl ZChpOTE1KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlp Z3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhpOTE1KTsKPiAgCj4gQEAgLTE2NzksNyArMTY3OSw3IEBA IGludCBpbnRlbF9oYW5nY2hlY2tfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAK PiAgCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2sgPSBzYXZlZF9oYW5nY2hlY2s7Cj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0X3Vu Y2hlY2tlZChpOTE1KTsKPiAgCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IGluZGV4IDAwY2FhYTAwZjAyZi4uYWMxYjE4 YTE3ZjNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMu Ywo+IEBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9zYW5pdHljaGVjayh2b2lkICph cmcpCj4gIAlpZ3Rfc3Bpbm5lcl9maW5pKCZzcGluKTsKPiAgZXJyX3VubG9jazoKPiAgCWlndF9m bHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAlt dXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0dXJuIGVycjsKPiAg fQo+IEBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGludCBsaXZlX3ByZWVtcHQodm9pZCAqYXJn KQo+ICAJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbl9oaSk7Cj4gIGVycl91bmxvY2s6Cj4gIAlpZ3Rf Zmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJ bXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4g IH0KPiBAQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9sYXRlX3ByZWVtcHQodm9p ZCAqYXJnKQo+ICAJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbl9oaSk7Cj4gIGVycl91bmxvY2s6Cj4g IAlpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKPiAtCWludGVsX3J1bnRp bWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUp Owo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJldHVybiBl cnI7Cj4gIAo+IEBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIGludCBsaXZlX3ByZWVtcHRfaGFu Zyh2b2lkICphcmcpCj4gIAlpZ3Rfc3Bpbm5lcl9maW5pKCZzcGluX2hpKTsKPiAgZXJyX3VubG9j azoKPiAgCWlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+IC0JaW50ZWxf cnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQo aTkxNSk7Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0 dXJuIGVycjsKPiAgfQo+IEBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGljIGludCBsaXZlX3ByZWVt cHRfc21va2Uodm9pZCAqYXJnKQo+ICBlcnJfYmF0Y2g6Cj4gIAlpOTE1X2dlbV9vYmplY3RfcHV0 KHNtb2tlLmJhdGNoKTsKPiAgZXJyX3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KHNt b2tlLmk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKHNtb2tlLmk5MTUp Owo+ICAJbXV0ZXhfdW5sb2NrKCZzbW9rZS5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCWtm cmVlKHNtb2tlLmNvbnRleHRzKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCBjMmIzY2Q4ZmNjMzQuLjU0ZjVj MmRlM2QwOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfd29ya2Fyb3VuZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF93b3JrYXJvdW5kcy5jCj4gQEAgLTQ5LDcgKzQ5LDcgQEAgcmVhZF9ub25wcml2cyhzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZW5naW5lLT5pOTE1KTsKPiAgCXJxID0gaTkx NV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGVu Z2luZS0+aTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZW5naW5lLT5p OTE1KTsKPiAgCWlmIChJU19FUlIocnEpKSB7Cj4gIAkJZXJyID0gUFRSX0VSUihycSk7Cj4gIAkJ Z290byBlcnJfcGluOwo+IEBAIC0xOTYsNyArMTk2LDcgQEAgc3dpdGNoX3RvX3NjcmF0Y2hfY29u dGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAllbHNlCj4gIAkJcnEgPSBp OTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0KGVuZ2luZS0+aTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZW5n aW5lLT5pOTE1KTsKPiAgCj4gIAlrZXJuZWxfY29udGV4dF9jbG9zZShjdHgpOwo+ICAKPiBAQCAt MjU1LDcgKzI1NSw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfd2hpdGVsaXN0X2Fjcm9zc19yZXNldChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9n ZXQoaTkxNSk7Cj4gIAllcnIgPSByZXNldChlbmdpbmUpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAo+ ICAJaWYgKHdhbnRfc3Bpbikgewo+ICAJCWlndF9zcGlubmVyX2VuZCgmc3Bpbik7Cj4gQEAgLTM2 NCw3ICszNjQsNyBAQCBsaXZlX2dwdV9yZXNldF9ndF9lbmdpbmVfd29ya2Fyb3VuZHModm9pZCAq YXJnKQo+ICAJb2sgPSB2ZXJpZnlfZ3RfZW5naW5lX3dhKGk5MTUsICJhZnRlciByZXNldCIpOwo+ ICAKPiAgb3V0Ogo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50 aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gIAlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhp OTE1KTsKPiAgCj4gIAlyZXR1cm4gb2sgPyAwIDogLUVTUkNIOwo+IEBAIC00NDMsNyArNDQzLDcg QEAgbGl2ZV9lbmdpbmVfcmVzZXRfZ3RfZW5naW5lX3dvcmthcm91bmRzKHZvaWQgKmFyZykKPiAg CX0KPiAgCj4gIGVycjoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJaW50ZWxf cnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICAJaWd0X2dsb2JhbF9yZXNldF91bmxv Y2soaTkxNSk7Cj4gIAlrZXJuZWxfY29udGV4dF9jbG9zZShjdHgpOwo+ICAKPiAtLSAKPiAyLjIw LjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK