From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 2/3] drm/ttm: always keep BOs on the LRU Date: Wed, 16 Oct 2019 11:30:34 +0200 Message-ID: <80abd72f-2336-135a-4304-b5ab8451e9c5@gmail.com> References: <20190925105530.2261-1-christian.koenig@amd.com> <20190925105530.2261-2-christian.koenig@amd.com> <0826046a-d57a-eb1e-f125-2c94223214b4@shipmail.org> <29539c40-1ea4-b60a-791f-385fb3468072@gmail.com> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id 976B489FAC for ; Wed, 16 Oct 2019 09:30:38 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id z9so27168225wrl.11 for ; Wed, 16 Oct 2019 02:30:38 -0700 (PDT) In-Reply-To: <29539c40-1ea4-b60a-791f-385fb3468072@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Thomas_Hellstr=c3=b6m_=28VMware=29?= , kraxel@redhat.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW0gMjUuMDkuMTkgdW0gMTQ6MTAgc2NocmllYiBDaHJpc3RpYW4gS8O2bmlnOgo+IEFtIDI1LjA5 LjE5IHVtIDE0OjA2IHNjaHJpZWIgVGhvbWFzIEhlbGxzdHLDtm0gKFZNd2FyZSk6Cj4+IE9uIDkv MjUvMTkgMTI6NTUgUE0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+PiBUaGlzIGFsbG93cyBi bG9ja2luZyBmb3IgQk9zIHRvIGJlY29tZSBhdmFpbGFibGUKPj4+IGluIHRoZSBtZW1vcnkgbWFu YWdlbWVudC4KPj4+Cj4+PiBBbWRncHUgaXMgZG9pbmcgdGhpcyBmb3IgcXVpdGUgYSB3aGlsZSBu b3cgZHVyaW5nIENTLiBOb3cKPj4+IGFwcGx5IHRoZSBuZXcgYmVoYXZpb3IgdG8gYWxsIGRyaXZl cnMgdXNpbmcgVFRNLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNo cmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4KPj4gR290IHRvIHRlc3QgdGhpcyB0byBzZWUgdGhh dCB0aGVyZSBhcmUgbm8gcmVncmVzc2lvbnMuCgpEaWQgeW91IGdvdCB0aW1lIHRvIHRlc3QgdGhp cyBvciBkaWQgSSBqdXN0IG1pc3NlZCB5b3VyIHJlc3BvbnNlPwoKVGhhbmtzIGluIGFkdmFuY2Us CkNocmlzdGlhbi4KCj4+Cj4+IFRoZXJlIGFyZSBzb21lIHVnbHkgY2FzZXMgaW4gdGhlIHZtd2dm eCBkcml2ZXIgKGNvZGVkIGJlZm9yZSB3ZSBjb3VsZCAKPj4gY3JlYXRlIGJvcyBpbiB0aGUgcmVz ZXJ2ZWQgc3RhdGUpIHRoYXQgcmVsaWVzIG9uIGNyZWF0aW5nIGEgYm8gYXMgCj4+IE5PX0VWSUNU IHRvIG1ha2Ugc3VyZSBhIGZvbGxvd2luZyB0cnlyZXNlcnZlIHdpbGwgYWx3YXlzIHN1Y2NlZWQu IFNvIAo+PiBob3cgYXJlIE5PX0VWSUNUIGJvcyBoYW5kbGVkIGFmdGVyIHRoZSBiZWxvdyBjaGFu Z2VzPyBUYWtlbiBvZmYgdGhlIAo+PiBscnUgb3IganVzdCBhdm9pZGVkIHdoZW4gd2Fsa2luZyB0 aGUgbHJ1Pwo+Cj4gVGhleSBhcmUgbmV2ZXIgYWRkZWQgdG8gdGhlIExSVSBpbiB0aGUgZmlyc3Qg cGxhY2UsIHRoZSBOT19FVklDVCBmbGFnIAo+IGlzIHN0aWxsIGNoZWNrZWQgZHVyaW5nIEJPIGlu aXQuCj4KPj4KPj4gQWxzbywgZG9lcyB0aGlzIG1lYW4gd2UgY2FuIGluIHRoZW9yeSBzdGFydCB1 c2luZyB0aGUgZHJtX21tX3NjYW4oKSAKPj4gaW50ZXJmYWNlIGZvciBWUkFNIGV2aWN0aW9ucywg cmVseWluZyBvbiB0aGUgd3dfbXV0ZXhlcyB0byByZXNvbHZlIAo+PiBjb250ZW50aW9uPwo+Cj4g SXQncyB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIHRoaXMsIHdlIHN0aWxsIG5lZWQgc29tZSByYXRo ZXIgZnVua3kgCj4gd3dfbXV0ZXggZGFuY2UgdG8gY29tcGxldGVseSBnZXQgdGhpcyB3b3JraW5n Lgo+Cj4gQ2hyaXN0aWFuLgo+Cj4+Cj4+IC9UaG9tYXMKPj4KPj4KPj4+IC0tLQo+Pj4gwqAgLi4u L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmPCoCB8wqAgOSArKy0tCj4+ PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuY8KgwqDCoMKgwqDCoMKg IHzCoCAyICstCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmPC oMKgwqDCoMKgwqAgfMKgIDIgKy0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZW0uY8KgwqDCoMKgwqDCoCB8wqAgNCArLQo+Pj4gwqAgLi4uL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHzCoCAyICstCj4+PiDCoCBkcml2ZXJzL2dwdS9k cm0vcXhsL3F4bF9yZWxlYXNlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKy0KPj4+ IMKgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDIgKy0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5j wqDCoMKgwqDCoMKgwqAgfMKgIDIgKy0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2Jv LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNDggCj4+PiArKysrKy0tLS0t LS0tLS0tLS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9leGVjYnVmX3V0aWwuY8Kg wqDCoMKgwqDCoMKgIHwgMjUgKystLS0tLS0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfcmVzb3VyY2UuY8KgwqDCoMKgwqAgfMKgIDMgKy0KPj4+IMKgIGRyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X3ZhbGlkYXRpb24uaMKgwqDCoCB8wqAgMiArLQo+Pj4gwqAgaW5j bHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAyNCAtLS0tLS0tLS0tCj4+PiDCoCBpbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5o wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDIwICsrLS0tLS0tCj4+PiDCoCBpbmNsdWRl L2RybS90dG0vdHRtX2V4ZWNidWZfdXRpbC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMiAr LQo+Pj4gwqAgMTUgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTE4IGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYW1ka2ZkX2dwdXZtLmMgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9hbWRrZmRfZ3B1dm0uYwo+Pj4gaW5kZXggYjliYjM1ZDE2OTllLi5hZDAxYzc0MWNhYWYgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dw dXZtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRf Z3B1dm0uYwo+Pj4gQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgaW50IHJlc2VydmVfYm9fYW5k X3ZtKHN0cnVjdCBrZ2RfbWVtICptZW0sCj4+PiDCoMKgwqDCoMKgIGFtZGdwdV92bV9nZXRfcGRf Ym8odm0sICZjdHgtPmxpc3QsICZjdHgtPnZtX3BkWzBdKTsKPj4+IMKgIMKgwqDCoMKgwqAgcmV0 ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmY3R4LT50aWNrZXQsICZjdHgtPmxpc3QsCj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwgJmN0eC0+ZHVw bGljYXRlcywgdHJ1ZSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBmYWxzZSwgJmN0eC0+ZHVwbGljYXRlcyk7Cj4+PiDCoMKgwqDCoMKgIGlmICghcmV0KQo+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+cmVzZXJ2ZWQgPSB0cnVlOwo+Pj4gwqDCoMKgwqDC oCBlbHNlIHsKPj4+IEBAIC02NTksNyArNjU5LDcgQEAgc3RhdGljIGludCByZXNlcnZlX2JvX2Fu ZF9jb25kX3ZtcyhzdHJ1Y3QgCj4+PiBrZ2RfbWVtICptZW0sCj4+PiDCoMKgwqDCoMKgIH0KPj4+ IMKgIMKgwqDCoMKgwqAgcmV0ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmY3R4LT50aWNrZXQs ICZjdHgtPmxpc3QsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmYWxzZSwgJmN0eC0+ZHVwbGljYXRlcywgdHJ1ZSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwgJmN0eC0+ZHVwbGljYXRlcyk7Cj4+PiDCoMKg wqDCoMKgIGlmICghcmV0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+cmVzZXJ2ZWQgPSB0 cnVlOwo+Pj4gwqDCoMKgwqDCoCBlbHNlCj4+PiBAQCAtMTc5Niw4ICsxNzk2LDcgQEAgc3RhdGlj IGludCB2YWxpZGF0ZV9pbnZhbGlkX3VzZXJfcGFnZXMoc3RydWN0IAo+Pj4gYW1ka2ZkX3Byb2Nl c3NfaW5mbyAqcHJvY2Vzc19pbmZvKQo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCDCoMKgwqDCoMKg IC8qIFJlc2VydmUgYWxsIEJPcyBhbmQgcGFnZSB0YWJsZXMgZm9yIHZhbGlkYXRpb24gKi8KPj4+ IC3CoMKgwqAgcmV0ID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmdGlja2V0LCAmcmVzdl9saXN0 LCBmYWxzZSwgCj4+PiAmZHVwbGljYXRlcywKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRydWUpOwo+Pj4gK8KgwqDCoCByZXQgPSB0dG1fZXVfcmVzZXJ2ZV9i dWZmZXJzKCZ0aWNrZXQsICZyZXN2X2xpc3QsIGZhbHNlLCAKPj4+ICZkdXBsaWNhdGVzKTsKPj4+ IMKgwqDCoMKgwqAgV0FSTighbGlzdF9lbXB0eSgmZHVwbGljYXRlcyksICJEdXBsaWNhdGVzIHNo b3VsZCBiZSBlbXB0eSIpOwo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIGdvdG8gb3V0X2ZyZWU7Cj4+PiBAQCAtMTk5NSw3ICsxOTk0LDcgQEAgaW50IAo+Pj4g YW1kZ3B1X2FtZGtmZF9ncHV2bV9yZXN0b3JlX3Byb2Nlc3NfYm9zKHZvaWQgKmluZm8sIHN0cnVj dCBkbWFfZmVuY2UgCj4+PiAqKmVmKQo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCDCoMKgwqDCoMKg IHJldCA9IHR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMoJmN0eC50aWNrZXQsICZjdHgubGlzdCwKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlLCAmZHVwbGlj YXRlX3NhdmUsIHRydWUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZmFsc2UsICZkdXBsaWNhdGVfc2F2ZSk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpIHsK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiTWVtb3J5IGV2aWN0aW9uOiBUVE0gUmVz ZXJ2ZSBGYWlsZWQuIFRyeSBhZ2FpblxuIik7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byB0 dG1fcmVzZXJ2ZV9mYWlsOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jcy5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y3MuYwo+Pj4gaW5kZXggOTVlYzk2NWZjYzJkLi44MmYyMzlhYzQwNTAgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+IEBAIC02NTAsNyArNjUwLDcgQEAg c3RhdGljIGludCBhbWRncHVfY3NfcGFyc2VyX2JvcyhzdHJ1Y3QgCj4+PiBhbWRncHVfY3NfcGFy c2VyICpwLAo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCDCoMKgwqDCoMKgIHIgPSB0dG1fZXVfcmVz ZXJ2ZV9idWZmZXJzKCZwLT50aWNrZXQsICZwLT52YWxpZGF0ZWQsIHRydWUsCj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZkdXBsaWNhdGVzLCBmYWxzZSk7Cj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZkdXBsaWNhdGVzKTsKPj4+IMKg wqDCoMKgwqAgaWYgKHVubGlrZWx5KHIgIT0gMCkpIHsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAociAhPSAtRVJFU1RBUlRTWVMpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1f RVJST1IoInR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMgZmFpbGVkLlxuIik7Cj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzYS5jIAo+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMKPj4+IGluZGV4IDYwNWY4MzA0NjAzOS4u YjE2MDhkNDc1MDhmIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzYS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y3NhLmMKPj4+IEBAIC04MCw3ICs4MCw3IEBAIGludCBhbWRncHVfbWFwX3N0YXRpY19jc2Eoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgCj4+PiAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+PiDC oMKgwqDCoMKgIGxpc3RfYWRkKCZjc2FfdHYuaGVhZCwgJmxpc3QpOwo+Pj4gwqDCoMKgwqDCoCBh bWRncHVfdm1fZ2V0X3BkX2JvKHZtLCAmbGlzdCwgJnBkKTsKPj4+IMKgIC3CoMKgwqAgciA9IHR0 bV9ldV9yZXNlcnZlX2J1ZmZlcnMoJnRpY2tldCwgJmxpc3QsIHRydWUsIE5VTEwsIGZhbHNlKTsK Pj4+ICvCoMKgwqAgciA9IHR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMoJnRpY2tldCwgJmxpc3QsIHRy dWUsIE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCBpZiAocikgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IERSTV9FUlJPUigiZmFpbGVkIHRvIHJlc2VydmUgQ1NBLFBEIEJPczogZXJyPSVkXG4iLCByKTsK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+Pj4gaW5kZXggYjI1YTU5YzRiZWM2Li5jYmZiM2U4NGYz NTIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Vt LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+Pj4g QEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIGFtZGdwdV9nZW1fb2JqZWN0X2Nsb3NlKHN0cnVjdCAK Pj4+IGRybV9nZW1fb2JqZWN0ICpvYmosCj4+PiDCoCDCoMKgwqDCoMKgIGFtZGdwdV92bV9nZXRf cGRfYm8odm0sICZsaXN0LCAmdm1fcGQpOwo+Pj4gwqAgLcKgwqDCoCByID0gdHRtX2V1X3Jlc2Vy dmVfYnVmZmVycygmdGlja2V0LCAmbGlzdCwgZmFsc2UsIAo+Pj4gJmR1cGxpY2F0ZXMsIGZhbHNl KTsKPj4+ICvCoMKgwqAgciA9IHR0bV9ldV9yZXNlcnZlX2J1ZmZlcnMoJnRpY2tldCwgJmxpc3Qs IGZhbHNlLCAmZHVwbGljYXRlcyk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyKSB7Cj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgZGV2X2VycihhZGV2LT5kZXYsICJsZWFraW5nIGJvIHZhIGJlY2F1c2UgIgo+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIndlIGZhaWwgdG8gcmVzZXJ2ZSBibyAoJWQp XG4iLCByKTsKPj4+IEBAIC02MTEsNyArNjExLDcgQEAgaW50IGFtZGdwdV9nZW1fdmFfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgCj4+PiB2b2lkICpkYXRhLAo+Pj4gwqAgwqDCoMKgwqDC oCBhbWRncHVfdm1fZ2V0X3BkX2JvKCZmcHJpdi0+dm0sICZsaXN0LCAmdm1fcGQpOwo+Pj4gwqAg LcKgwqDCoCByID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmdGlja2V0LCAmbGlzdCwgdHJ1ZSwg JmR1cGxpY2F0ZXMsIAo+Pj4gZmFsc2UpOwo+Pj4gK8KgwqDCoCByID0gdHRtX2V1X3Jlc2VydmVf YnVmZmVycygmdGlja2V0LCAmbGlzdCwgdHJ1ZSwgJmR1cGxpY2F0ZXMpOwo+Pj4gwqDCoMKgwqDC oCBpZiAocikKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yX3VucmVmOwo+Pj4gwqAg ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtLmMgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtLmMKPj4+IGluZGV4IDVkZjJlZTFlMTBkOC4uNzYwMDc4Yjk5MjViIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+ Pj4gQEAgLTQ0MzksNyArNDQzOSw3IEBAIHN0YXRpYyBpbnQgZG1fcGxhbmVfaGVscGVyX3ByZXBh cmVfZmIoc3RydWN0IAo+Pj4gZHJtX3BsYW5lICpwbGFuZSwKPj4+IMKgwqDCoMKgwqAgdHYubnVt X3NoYXJlZCA9IDE7Cj4+PiDCoMKgwqDCoMKgIGxpc3RfYWRkKCZ0di5oZWFkLCAmbGlzdCk7Cj4+ PiDCoCAtwqDCoMKgIHIgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKCZ0aWNrZXQsICZsaXN0LCBm YWxzZSwgTlVMTCwgdHJ1ZSk7Cj4+PiArwqDCoMKgIHIgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJz KCZ0aWNrZXQsICZsaXN0LCBmYWxzZSwgTlVMTCk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyKSB7Cj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycihhZGV2LT5kZXYsICJmYWlsIHRvIHJlc2VydmUg Ym8gKCVkKVxuIiwgcik7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfcmVsZWFzZS5jIAo+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9yZWxlYXNlLmMKPj4+IGluZGV4IGFhN2EyODc5NTY0NS4uNzFmMWI1 MWExMzUwIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfcmVsZWFzZS5j Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9yZWxlYXNlLmMKPj4+IEBAIC0yNjAs NyArMjYwLDcgQEAgaW50IHF4bF9yZWxlYXNlX3Jlc2VydmVfbGlzdChzdHJ1Y3QgcXhsX3JlbGVh c2UgCj4+PiAqcmVsZWFzZSwgYm9vbCBub19pbnRyKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiAwOwo+Pj4gwqAgwqDCoMKgwqDCoCByZXQgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKCZy ZWxlYXNlLT50aWNrZXQsICZyZWxlYXNlLT5ib3MsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAhbm9faW50ciwgTlVMTCwgdHJ1ZSk7Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhbm9faW50ciwgTlVMTCk7Cj4+PiDCoMKg wqDCoMKgIGlmIChyZXQpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IMKg IEBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBxeGxfcmVsZWFzZV9mZW5jZV9idWZmZXJfb2JqZWN0 cyhzdHJ1Y3QgCj4+PiBxeGxfcmVsZWFzZSAqcmVsZWFzZSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBibyA9IGVudHJ5LT5ibzsKPj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl9hZGRf c2hhcmVkX2ZlbmNlKGJvLT5iYXNlLnJlc3YsICZyZWxlYXNlLT5iYXNlKTsKPj4+IC3CoMKgwqDC oMKgwqDCoCB0dG1fYm9fYWRkX3RvX2xydShibyk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgdHRtX2Jv X21vdmVfdG9fbHJ1X3RhaWwoYm8sIE5VTEwpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9y ZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gwqDCoMKgwqDC oCBzcGluX3VubG9jaygmZ2xvYi0+bHJ1X2xvY2spOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9nZW0uYwo+Pj4gaW5kZXggYzQ4YzJmYjM1NDU2Li44NzllYWM2N2NkZDcgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2VtLmMKPj4+IEBAIC01NjQsNyArNTY0LDcg QEAgc3RhdGljIHZvaWQgcmFkZW9uX2dlbV92YV91cGRhdGVfdm0oc3RydWN0IAo+Pj4gcmFkZW9u X2RldmljZSAqcmRldiwKPj4+IMKgwqDCoMKgwqAgaWYgKCF2bV9ib3MpCj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuOwo+Pj4gwqAgLcKgwqDCoCByID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVy cygmdGlja2V0LCAmbGlzdCwgdHJ1ZSwgTlVMTCwgdHJ1ZSk7Cj4+PiArwqDCoMKgIHIgPSB0dG1f ZXVfcmVzZXJ2ZV9idWZmZXJzKCZ0aWNrZXQsICZsaXN0LCB0cnVlLCBOVUxMKTsKPj4+IMKgwqDC oMKgwqAgaWYgKHIpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl9mcmVlOwo+Pj4g wqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jIAo+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuYwo+Pj4gaW5kZXggNjUz ZmQ3OTM3YjM5Li5hOTRkODI3YmE5NzYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9vYmplY3QuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fb2JqZWN0LmMKPj4+IEBAIC01NDIsNyArNTQyLDcgQEAgaW50IHJhZGVvbl9ib19saXN0 X3ZhbGlkYXRlKHN0cnVjdCByYWRlb25fZGV2aWNlIAo+Pj4gKnJkZXYsCj4+PiDCoMKgwqDCoMKg IHU2NCBieXRlc19tb3ZlZF90aHJlc2hvbGQgPSAKPj4+IHJhZGVvbl9ib19nZXRfdGhyZXNob2xk X2Zvcl9tb3ZlcyhyZGV2KTsKPj4+IMKgIMKgwqDCoMKgwqAgSU5JVF9MSVNUX0hFQUQoJmR1cGxp Y2F0ZXMpOwo+Pj4gLcKgwqDCoCByID0gdHRtX2V1X3Jlc2VydmVfYnVmZmVycyh0aWNrZXQsIGhl YWQsIHRydWUsICZkdXBsaWNhdGVzLCB0cnVlKTsKPj4+ICvCoMKgwqAgciA9IHR0bV9ldV9yZXNl cnZlX2J1ZmZlcnModGlja2V0LCBoZWFkLCB0cnVlLCAmZHVwbGljYXRlcyk7Cj4+PiDCoMKgwqDC oMKgIGlmICh1bmxpa2VseShyICE9IDApKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHI7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9iby5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4+PiBpbmRleCAw MmYzMDFlMWZmMjkuLmFiOTk2N2I4NGUwYiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2JvLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPj4+ IEBAIC0xOTIsMTggKzE5MiwxMiBAQCBzdGF0aWMgdm9pZCB0dG1fYm9fYWRkX21lbV90b19scnUo c3RydWN0IAo+Pj4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDC oCB9Cj4+PiDCoCAtdm9pZCB0dG1fYm9fYWRkX3RvX2xydShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKmJvKQo+Pj4gLXsKPj4+IC3CoMKgwqAgdHRtX2JvX2FkZF9tZW1fdG9fbHJ1KGJvLCAmYm8t Pm1lbSk7Cj4+PiAtfQo+Pj4gLUVYUE9SVF9TWU1CT0wodHRtX2JvX2FkZF90b19scnUpOwo+Pj4g LQo+Pj4gwqAgc3RhdGljIHZvaWQgdHRtX2JvX3JlZl9idWcoc3RydWN0IGtyZWYgKmxpc3Rfa3Jl ZikKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgQlVHKCk7Cj4+PiDCoCB9Cj4+PiDCoCAtdm9pZCB0 dG1fYm9fZGVsX2Zyb21fbHJ1KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pCj4+PiArc3Rh dGljIHZvaWQgdHRtX2JvX2RlbF9mcm9tX2xydShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJv KQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9IGJv LT5iZGV2Owo+Pj4gwqDCoMKgwqDCoCBib29sIG5vdGlmeSA9IGZhbHNlOwo+Pj4gQEAgLTIyMywx NiArMjE3LDYgQEAgdm9pZCB0dG1fYm9fZGVsX2Zyb21fbHJ1KHN0cnVjdCAKPj4+IHR0bV9idWZm ZXJfb2JqZWN0ICpibykKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBiZGV2LT5kcml2ZXItPmRlbF9m cm9tX2xydV9ub3RpZnkoYm8pOwo+Pj4gwqAgfQo+Pj4gwqAgLXZvaWQgdHRtX2JvX2RlbF9zdWJf ZnJvbV9scnUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKPj4+IC17Cj4+PiAtwqDCoMKg IHN0cnVjdCB0dG1fYm9fZ2xvYmFsICpnbG9iID0gYm8tPmJkZXYtPmdsb2I7Cj4+PiAtCj4+PiAt wqDCoMKgIHNwaW5fbG9jaygmZ2xvYi0+bHJ1X2xvY2spOwo+Pj4gLcKgwqDCoCB0dG1fYm9fZGVs X2Zyb21fbHJ1KGJvKTsKPj4+IC3CoMKgwqAgc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsK Pj4+IC19Cj4+PiAtRVhQT1JUX1NZTUJPTCh0dG1fYm9fZGVsX3N1Yl9mcm9tX2xydSk7Cj4+PiAt Cj4+PiDCoCBzdGF0aWMgdm9pZCB0dG1fYm9fYnVsa19tb3ZlX3NldF9wb3Moc3RydWN0IHR0bV9s cnVfYnVsa19tb3ZlX3BvcyAKPj4+ICpwb3MsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQo+Pj4gwqAg ewo+Pj4gQEAgLTI0Nyw3ICsyMzEsNyBAQCB2b2lkIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKHN0 cnVjdCAKPj4+IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPj4+IMKgwqDCoMKgwqAgZG1hX3Jlc3Zf YXNzZXJ0X2hlbGQoYm8tPmJhc2UucmVzdik7Cj4+PiDCoCDCoMKgwqDCoMKgIHR0bV9ib19kZWxf ZnJvbV9scnUoYm8pOwo+Pj4gLcKgwqDCoCB0dG1fYm9fYWRkX3RvX2xydShibyk7Cj4+PiArwqDC oMKgIHR0bV9ib19hZGRfbWVtX3RvX2xydShibywgJmJvLT5tZW0pOwo+Pj4gwqAgwqDCoMKgwqDC oCBpZiAoYnVsayAmJiAhKGJvLT5tZW0ucGxhY2VtZW50ICYgVFRNX1BMX0ZMQUdfTk9fRVZJQ1Qp KSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChiby0+bWVtLm1lbV90eXBlKSB7Cj4+ PiBAQCAtNTExLDcgKzQ5NSw3IEBAIHN0YXRpYyB2b2lkIHR0bV9ib19jbGVhbnVwX3JlZnNfb3Jf cXVldWUoc3RydWN0IAo+Pj4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqAgKi8KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYm8tPm1lbS5wbGFjZW1lbnQg JiBUVE1fUExfRkxBR19OT19FVklDVCkgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ym8tPm1lbS5wbGFjZW1lbnQgJj0gflRUTV9QTF9GTEFHX05PX0VWSUNUOwo+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdHRtX2JvX2FkZF90b19scnUoYm8pOwo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoYm8sIE5VTEwpOwo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIH0KPj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYm8t PmJhc2UucmVzdik7Cj4+PiBAQCAtODkyLDE3ICs4NzYsMTEgQEAgc3RhdGljIGludCB0dG1fbWVt X2V2aWN0X2ZpcnN0KHN0cnVjdCAKPj4+IHR0bV9ib19kZXZpY2UgKmJkZXYsCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gwqAgLcKgwqDCoCB0 dG1fYm9fZGVsX2Zyb21fbHJ1KGJvKTsKPj4+IMKgwqDCoMKgwqAgc3Bpbl91bmxvY2soJmdsb2It PmxydV9sb2NrKTsKPj4+IMKgIMKgwqDCoMKgwqAgcmV0ID0gdHRtX2JvX2V2aWN0KGJvLCBjdHgp Owo+Pj4gLcKgwqDCoCBpZiAobG9ja2VkKSB7Cj4+PiArwqDCoMKgIGlmIChsb2NrZWQpCj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgdHRtX2JvX3VucmVzZXJ2ZShibyk7Cj4+PiAtwqDCoMKgIH0gZWxz ZSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgc3Bpbl9sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4+PiAt wqDCoMKgwqDCoMKgwqAgdHRtX2JvX2FkZF90b19scnUoYm8pOwo+Pj4gLcKgwqDCoMKgwqDCoMKg IHNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4+PiAtwqDCoMKgIH0KPj4+IMKgIMKgwqDC oMKgwqAga3JlZl9wdXQoJmJvLT5saXN0X2tyZWYsIHR0bV9ib19yZWxlYXNlX2xpc3QpOwo+Pj4g wqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gQEAgLTEwNjQsMTIgKzEwNDIsMTAgQEAgc3RhdGlj IGludCB0dG1fYm9fbWVtX3BsYWNlbWVudChzdHJ1Y3QgCj4+PiB0dG1fYnVmZmVyX29iamVjdCAq Ym8sCj4+PiDCoMKgwqDCoMKgIG1lbS0+bWVtX3R5cGUgPSBtZW1fdHlwZTsKPj4+IMKgwqDCoMKg wqAgbWVtLT5wbGFjZW1lbnQgPSBjdXJfZmxhZ3M7Cj4+PiDCoCAtwqDCoMKgIGlmIChiby0+bWVt Lm1lbV90eXBlIDwgbWVtX3R5cGUgJiYgIWxpc3RfZW1wdHkoJmJvLT5scnUpKSB7Cj4+PiAtwqDC oMKgwqDCoMKgwqAgc3Bpbl9sb2NrKCZiby0+YmRldi0+Z2xvYi0+bHJ1X2xvY2spOwo+Pj4gLcKg wqDCoMKgwqDCoMKgIHR0bV9ib19kZWxfZnJvbV9scnUoYm8pOwo+Pj4gLcKgwqDCoMKgwqDCoMKg IHR0bV9ib19hZGRfbWVtX3RvX2xydShibywgbWVtKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCBzcGlu X3VubG9jaygmYm8tPmJkZXYtPmdsb2ItPmxydV9sb2NrKTsKPj4+IC3CoMKgwqAgfQo+Pj4gK8Kg wqDCoCBzcGluX2xvY2soJmJvLT5iZGV2LT5nbG9iLT5scnVfbG9jayk7Cj4+PiArwqDCoMKgIHR0 bV9ib19kZWxfZnJvbV9scnUoYm8pOwo+Pj4gK8KgwqDCoCB0dG1fYm9fYWRkX21lbV90b19scnUo Ym8sIG1lbSk7Cj4+PiArwqDCoMKgIHNwaW5fdW5sb2NrKCZiby0+YmRldi0+Z2xvYi0+bHJ1X2xv Y2spOwo+Pj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIH0KPj4+IEBAIC0xMzc1LDEx ICsxMzUxLDkgQEAgaW50IHR0bV9ib19pbml0X3Jlc2VydmVkKHN0cnVjdCB0dG1fYm9fZGV2aWNl IAo+Pj4gKmJkZXYsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IMKgwqDC oMKgwqAgfQo+Pj4gwqAgLcKgwqDCoCBpZiAocmVzdiAmJiAhKGJvLT5tZW0ucGxhY2VtZW50ICYg VFRNX1BMX0ZMQUdfTk9fRVZJQ1QpKSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgc3Bpbl9sb2NrKCZi ZGV2LT5nbG9iLT5scnVfbG9jayk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgdHRtX2JvX2FkZF90b19s cnUoYm8pOwo+Pj4gLcKgwqDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZiZGV2LT5nbG9iLT5scnVf bG9jayk7Cj4+PiAtwqDCoMKgIH0KPj4+ICvCoMKgwqAgc3Bpbl9sb2NrKCZiZGV2LT5nbG9iLT5s cnVfbG9jayk7Cj4+PiArwqDCoMKgIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKGJvLCBOVUxMKTsK Pj4+ICvCoMKgwqAgc3Bpbl91bmxvY2soJmJkZXYtPmdsb2ItPmxydV9sb2NrKTsKPj4+IMKgIMKg wqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IMKgIH0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdHRtL3R0bV9leGVjYnVmX3V0aWwuYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fZXhlY2J1Zl91dGlsLmMKPj4+IGluZGV4IDcxMTQ4YzgzY2M0Zi4uYjA5YzJjOGNhZjEzIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fZXhlY2J1Zl91dGlsLmMKPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2V4ZWNidWZfdXRpbC5jCj4+PiBAQCAtMzMs MTYgKzMzLDYgQEAKPj4+IMKgICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgo+Pj4gwqAgI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4gwqAgLXN0YXRpYyB2b2lkIHR0bV9ldV9kZWxfZnJvbV9s cnVfbG9ja2VkKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCj4+PiAtewo+Pj4gLcKgwqDCoCBzdHJ1 Y3QgdHRtX3ZhbGlkYXRlX2J1ZmZlciAqZW50cnk7Cj4+PiAtCj4+PiAtwqDCoMKgIGxpc3RfZm9y X2VhY2hfZW50cnkoZW50cnksIGxpc3QsIGhlYWQpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gZW50cnktPmJvOwo+Pj4gLcKgwqDCoMKgwqDCoMKg IHR0bV9ib19kZWxfZnJvbV9scnUoYm8pOwo+Pj4gLcKgwqDCoCB9Cj4+PiAtfQo+Pj4gLQo+Pj4g wqAgdm9pZCB0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbihzdHJ1Y3QgZG1hX3Jlc3ZfY3R4ICp0 aWNrZXQsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsaXN0 X2hlYWQgKmxpc3QpCj4+PiDCoCB7Cj4+PiBAQCAtNTksOCArNDksNyBAQCB2b2lkIHR0bV9ldV9i YWNrb2ZmX3Jlc2VydmF0aW9uKHN0cnVjdCAKPj4+IGRtYV9yZXN2X2N0eCAqdGlja2V0LAo+Pj4g wqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCBsaXN0LCBoZWFkKSB7Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IGVudHJ5LT5i bzsKPj4+IMKgIC3CoMKgwqDCoMKgwqDCoCBpZiAobGlzdF9lbXB0eSgmYm8tPmxydSkpCj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0dG1fYm9fYWRkX3RvX2xydShibyk7Cj4+PiArwqDCoMKg wqDCoMKgwqAgdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoYm8sIE5VTEwpOwo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIGlmICghdGlja2V0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1h X3Jlc3ZfdW5sb2NrKGJvLT5iYXNlLnJlc3YpOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiBAQCAtODcs NyArNzYsNyBAQCBFWFBPUlRfU1lNQk9MKHR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0aW9uKTsKPj4+ IMKgIMKgIGludCB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKHN0cnVjdCBkbWFfcmVzdl9jdHggKnRp Y2tldCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsaXN0X2hl YWQgKmxpc3QsIGJvb2wgaW50ciwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBsaXN0X2hlYWQgKmR1cHMsIGJvb2wgZGVsX2xydSkKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgKmR1cHMpCj4+PiDCoCB7Cj4+PiDCoMKgwqDC oMKgIHN0cnVjdCB0dG1fdmFsaWRhdGVfYnVmZmVyICplbnRyeTsKPj4+IMKgwqDCoMKgwqAgc3Ry dWN0IHR0bV9ib19nbG9iYWwgKmdsb2I7Cj4+PiBAQCAtMTQyLDExICsxMzEsNiBAQCBpbnQgdHRt X2V1X3Jlc2VydmVfYnVmZmVycyhzdHJ1Y3QgZG1hX3Jlc3ZfY3R4IAo+Pj4gKnRpY2tldCwKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgIC3CoMKgwqAgaWYg KGRlbF9scnUpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBzcGluX2xvY2soJmdsb2ItPmxydV9sb2Nr KTsKPj4+IC3CoMKgwqDCoMKgwqDCoCB0dG1fZXVfZGVsX2Zyb21fbHJ1X2xvY2tlZChsaXN0KTsK Pj4+IC3CoMKgwqDCoMKgwqDCoCBzcGluX3VubG9jaygmZ2xvYi0+bHJ1X2xvY2spOwo+Pj4gLcKg wqDCoCB9Cj4+PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4gwqAgwqAgZXJyb3I6Cj4+PiBAQCAt MTg2LDEwICsxNzAsNyBAQCB2b2lkIHR0bV9ldV9mZW5jZV9idWZmZXJfb2JqZWN0cyhzdHJ1Y3Qg Cj4+PiBkbWFfcmVzdl9jdHggKnRpY2tldCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRtYV9yZXN2X2FkZF9zaGFyZWRfZmVuY2UoYm8tPmJhc2UucmVzdiwgZmVuY2UpOwo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIGVsc2UKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9y ZXN2X2FkZF9leGNsX2ZlbmNlKGJvLT5iYXNlLnJlc3YsIGZlbmNlKTsKPj4+IC3CoMKgwqDCoMKg wqDCoCBpZiAobGlzdF9lbXB0eSgmYm8tPmxydSkpCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB0dG1fYm9fYWRkX3RvX2xydShibyk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgZWxzZQo+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoYm8sIE5VTEwpOwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKGJvLCBOVUxMKTsKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXRpY2tldCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKPj4+IMKgwqDCoMKgwqAgfQo+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMg Cj4+PiBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKPj4+IGluZGV4 IDJkN2M1YWQyNTM1OS4uMWQ1M2E2OTgxOWU1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfcmVzb3VyY2UuYwo+Pj4gQEAgLTQ2NCw4ICs0NjQsNyBAQCB2bXdfcmVzb3Vy Y2VfY2hlY2tfYnVmZmVyKHN0cnVjdCBkbWFfcmVzdl9jdHggCj4+PiAqdGlja2V0LAo+Pj4gwqDC oMKgwqDCoCB2YWxfYnVmLT5ibyA9ICZyZXMtPmJhY2t1cC0+YmFzZTsKPj4+IMKgwqDCoMKgwqAg dmFsX2J1Zi0+bnVtX3NoYXJlZCA9IDA7Cj4+PiDCoMKgwqDCoMKgIGxpc3RfYWRkX3RhaWwoJnZh bF9idWYtPmhlYWQsICZ2YWxfbGlzdCk7Cj4+PiAtwqDCoMKgIHJldCA9IHR0bV9ldV9yZXNlcnZl X2J1ZmZlcnModGlja2V0LCAmdmFsX2xpc3QsIGludGVycnVwdGlibGUsIAo+Pj4gTlVMTCwKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRydWUpOwo+Pj4gK8Kg wqDCoCByZXQgPSB0dG1fZXVfcmVzZXJ2ZV9idWZmZXJzKHRpY2tldCwgJnZhbF9saXN0LCBpbnRl cnJ1cHRpYmxlLCAKPj4+IE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCBpZiAodW5saWtlbHkocmV0ICE9 IDApKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X25vX3Jlc2VydmU7Cj4+PiDCoCBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5oIAo+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgKPj4+IGluZGV4 IDQzZjQ4ZGYzODQ0Zi4uZWJiNWI2OGI1YzFmIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgKPj4+IEBAIC0xNjksNyArMTY5LDcgQEAgdm13X3Zh bGlkYXRpb25fYm9fcmVzZXJ2ZShzdHJ1Y3QgCj4+PiB2bXdfdmFsaWRhdGlvbl9jb250ZXh0ICpj dHgsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCBpbnRyKQo+Pj4gwqAg ewo+Pj4gwqDCoMKgwqDCoCByZXR1cm4gdHRtX2V1X3Jlc2VydmVfYnVmZmVycygmY3R4LT50aWNr ZXQsICZjdHgtPmJvX2xpc3QsIGludHIsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIE5VTEwsIHRydWUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMKTsKPj4+IMKgIH0KPj4+IMKgIMKgIC8qKgo+Pj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmggCj4+PiBiL2luY2x1ZGUvZHJt L3R0bS90dG1fYm9fYXBpLmgKPj4+IGluZGV4IDQzYzQ5MjlhMjE3MS4uMjg4ZmQ2NGI3MjE5IDEw MDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaAo+Pj4gKysrIGIvaW5j bHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaAo+Pj4gQEAgLTM2NywzMCArMzY3LDYgQEAgaW50IHR0 bV9ib192YWxpZGF0ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+Pj4gwqDCoCAqLwo+ Pj4gwqAgdm9pZCB0dG1fYm9fcHV0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwo+Pj4g wqAgLS8qKgo+Pj4gLSAqIHR0bV9ib19hZGRfdG9fbHJ1Cj4+PiAtICoKPj4+IC0gKiBAYm86IFRo ZSBidWZmZXIgb2JqZWN0Lgo+Pj4gLSAqCj4+PiAtICogQWRkIHRoaXMgYm8gdG8gdGhlIHJlbGV2 YW50IG1lbSB0eXBlIGxydSBhbmQsIGlmIGl0J3MgYmFja2VkIGJ5Cj4+PiAtICogc3lzdGVtIHBh Z2VzICh0dG1zKSB0byB0aGUgc3dhcCBsaXN0Lgo+Pj4gLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBi ZSBjYWxsZWQgd2l0aCBzdHJ1Y3QgdHRtX2JvX2dsb2JhbDo6bHJ1X2xvY2sgCj4+PiBoZWxkLCBh bmQKPj4+IC0gKiBpcyB0eXBpY2FsbHkgY2FsbGVkIGltbWVkaWF0ZWx5IHByaW9yIHRvIHVucmVz ZXJ2aW5nIGEgYm8uCj4+PiAtICovCj4+PiAtdm9pZCB0dG1fYm9fYWRkX3RvX2xydShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKPj4+IC0KPj4+IC0vKioKPj4+IC0gKiB0dG1fYm9fZGVs X2Zyb21fbHJ1Cj4+PiAtICoKPj4+IC0gKiBAYm86IFRoZSBidWZmZXIgb2JqZWN0Lgo+Pj4gLSAq Cj4+PiAtICogUmVtb3ZlIHRoaXMgYm8gZnJvbSBhbGwgbHJ1IGxpc3RzIHVzZWQgdG8gbG9va3Vw IGFuZCByZXNlcnZlIGFuIAo+Pj4gb2JqZWN0Lgo+Pj4gLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBi ZSBjYWxsZWQgd2l0aCBzdHJ1Y3QgdHRtX2JvX2dsb2JhbDo6bHJ1X2xvY2sgCj4+PiBoZWxkLAo+ Pj4gLSAqIGFuZCBpcyB1c3VhbGx5IGNhbGxlZCBqdXN0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBi byBoYXMgYmVlbiAKPj4+IHJlc2VydmVkIHRvCj4+PiAtICogYXZvaWQgcmVjdXJzaXZlIHJlc2Vy dmF0aW9uIGZyb20gbHJ1IGxpc3RzLgo+Pj4gLSAqLwo+Pj4gLXZvaWQgdHRtX2JvX2RlbF9mcm9t X2xydShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKPj4+IC0KPj4+IMKgIC8qKgo+Pj4g wqDCoCAqIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsCj4+PiDCoMKgICoKPj4+IGRpZmYgLS1naXQg YS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oIAo+Pj4gYi9pbmNsdWRlL2RybS90dG0v dHRtX2JvX2RyaXZlci5oCj4+PiBpbmRleCA0ZTMwN2Y2NWY0OTcuLjQzMzJjYzAzNjQ4MyAxMDA2 NDQKPj4+IC0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmgKPj4+ICsrKyBiL2lu Y2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmgKPj4+IEBAIC02MjEsOSArNjIxLDYgQEAgdm9p ZCB0dG1fbWVtX2lvX2ZyZWVfdm0oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0IAo+Pj4gKmJvKTsK Pj4+IMKgIGludCB0dG1fbWVtX2lvX2xvY2soc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICpt YW4sIGJvb2wgCj4+PiBpbnRlcnJ1cHRpYmxlKTsKPj4+IMKgIHZvaWQgdHRtX21lbV9pb191bmxv Y2soc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4pOwo+Pj4gwqAgLXZvaWQgdHRtX2Jv X2RlbF9zdWJfZnJvbV9scnUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7Cj4+PiAtdm9p ZCB0dG1fYm9fYWRkX3RvX2xydShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKPj4+IC0K Pj4+IMKgIC8qKgo+Pj4gwqDCoCAqIF9fdHRtX2JvX3Jlc2VydmU6Cj4+PiDCoMKgICoKPj4+IEBA IC03MTcsMTUgKzcxNCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHR0bV9ib19yZXNlcnZlKHN0cnVj dCAKPj4+IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBib29sIGludGVycnVwdGlibGUsIGJvb2wgbm9fd2FpdCwKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnRp Y2tldCkKPj4+IMKgIHsKPj4+IC3CoMKgwqAgaW50IHJldDsKPj4+IC0KPj4+IMKgwqDCoMKgwqAg V0FSTl9PTigha3JlZl9yZWFkKCZiby0+a3JlZikpOwo+Pj4gwqAgLcKgwqDCoCByZXQgPSBfX3R0 bV9ib19yZXNlcnZlKGJvLCBpbnRlcnJ1cHRpYmxlLCBub193YWl0LCB0aWNrZXQpOwo+Pj4gLcKg wqDCoCBpZiAobGlrZWx5KHJldCA9PSAwKSkKPj4+IC3CoMKgwqDCoMKgwqDCoCB0dG1fYm9fZGVs X3N1Yl9mcm9tX2xydShibyk7Cj4+PiAtCj4+PiAtwqDCoMKgIHJldHVybiByZXQ7Cj4+PiArwqDC oMKgIHJldHVybiBfX3R0bV9ib19yZXNlcnZlKGJvLCBpbnRlcnJ1cHRpYmxlLCBub193YWl0LCB0 aWNrZXQpOwo+Pj4gwqAgfQo+Pj4gwqAgwqAgLyoqCj4+PiBAQCAtNzUyLDkgKzc0Myw3IEBAIHN0 YXRpYyBpbmxpbmUgaW50IHR0bV9ib19yZXNlcnZlX3Nsb3dwYXRoKHN0cnVjdCAKPj4+IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKPj4+IMKgwqDCoMKgwqAgZWxzZQo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIGRtYV9yZXN2X2xvY2tfc2xvdyhiby0+YmFzZS5yZXN2LCB0aWNrZXQpOwo+Pj4gwqAgLcKg wqDCoCBpZiAobGlrZWx5KHJldCA9PSAwKSkKPj4+IC3CoMKgwqDCoMKgwqDCoCB0dG1fYm9fZGVs X3N1Yl9mcm9tX2xydShibyk7Cj4+PiAtwqDCoMKgIGVsc2UgaWYgKHJldCA9PSAtRUlOVFIpCj4+ PiArwqDCoMKgIGlmIChyZXQgPT0gLUVJTlRSKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IC1FUkVTVEFSVFNZUzsKPj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+IEBAIC03NzAs MTAgKzc1OSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IAo+Pj4gdHRtX2JvX3Jlc2VydmVfc2xvd3Bh dGgoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPj4+IMKgIHN0YXRpYyBpbmxpbmUgdm9p ZCB0dG1fYm9fdW5yZXNlcnZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pCj4+PiDCoCB7 Cj4+PiDCoMKgwqDCoMKgIHNwaW5fbG9jaygmYm8tPmJkZXYtPmdsb2ItPmxydV9sb2NrKTsKPj4+ IC3CoMKgwqAgaWYgKGxpc3RfZW1wdHkoJmJvLT5scnUpKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIHR0 bV9ib19hZGRfdG9fbHJ1KGJvKTsKPj4+IC3CoMKgwqAgZWxzZQo+Pj4gLcKgwqDCoMKgwqDCoMKg IHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKGJvLCBOVUxMKTsKPj4+ICvCoMKgwqAgdHRtX2JvX21v dmVfdG9fbHJ1X3RhaWwoYm8sIE5VTEwpOwo+Pj4gwqDCoMKgwqDCoCBzcGluX3VubG9jaygmYm8t PmJkZXYtPmdsb2ItPmxydV9sb2NrKTsKPj4+IMKgwqDCoMKgwqAgZG1hX3Jlc3ZfdW5sb2NrKGJv LT5iYXNlLnJlc3YpOwo+Pj4gwqAgfQo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90 dG1fZXhlY2J1Zl91dGlsLmggCj4+PiBiL2luY2x1ZGUvZHJtL3R0bS90dG1fZXhlY2J1Zl91dGls LmgKPj4+IGluZGV4IDRlODZiNmZkNmM1Ny4uMWEzNTUzYWM1M2IxIDEwMDY0NAo+Pj4gLS0tIGEv aW5jbHVkZS9kcm0vdHRtL3R0bV9leGVjYnVmX3V0aWwuaAo+Pj4gKysrIGIvaW5jbHVkZS9kcm0v dHRtL3R0bV9leGVjYnVmX3V0aWwuaAo+Pj4gQEAgLTEwMCw3ICsxMDAsNyBAQCBleHRlcm4gdm9p ZCB0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbihzdHJ1Y3QgCj4+PiBkbWFfcmVzdl9jdHggKnRp Y2tldCwKPj4+IMKgIMKgIGV4dGVybiBpbnQgdHRtX2V1X3Jlc2VydmVfYnVmZmVycyhzdHJ1Y3Qg ZG1hX3Jlc3ZfY3R4ICp0aWNrZXQsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBib29sIGludHIsCj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkICpkdXBzLCBib29sIGRl bF9scnUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxp c3RfaGVhZCAqZHVwcyk7Cj4+PiDCoCDCoCAvKioKPj4+IMKgwqAgKiBmdW5jdGlvbiB0dG1fZXVf ZmVuY2VfYnVmZmVyX29iamVjdHMuCj4+Cj4+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA==