From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/7] drm: add syncobj timeline support v8 Date: Wed, 17 Oct 2018 12:22:55 +0200 Message-ID: References: <20181015085553.30656-1-david1.zhou@amd.com> <20181015085553.30656-2-david1.zhou@amd.com> <20181017080908.GK31561@phenom.ffwll.local> <2066a18d-8002-014b-ef3c-a6f6014bdb55@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2066a18d-8002-014b-ef3c-a6f6014bdb55-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Chunming Zhou Cc: Chunming Zhou , amd-gfx list , "Rakos, Daniel" , dri-devel , Bas Nieuwenhuizen , Dave Airlie , =?UTF-8?Q?Christian_K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBPY3QgMTcsIDIwMTggYXQgMTE6MTcgQU0gemhvdWNtMSA8emhvdWNtMUBhbWQuY29t PiB3cm90ZToKPgo+Cj4KPiBPbiAyMDE45bm0MTDmnIgxN+aXpSAxNjowOSwgRGFuaWVsIFZldHRl ciB3cm90ZToKPiA+IE9uIE1vbiwgT2N0IDE1LCAyMDE4IGF0IDA0OjU1OjQ4UE0gKzA4MDAsIENo dW5taW5nIFpob3Ugd3JvdGU6Cj4gPj4gVGhpcyBwYXRjaCBpcyBmb3IgVktfS0hSX3RpbWVsaW5l X3NlbWFwaG9yZSBleHRlbnNpb24sIHNlbWFwaG9yZSBpcyBjYWxsZWQgc3luY29iaiBpbiBrZXJu ZWwgc2lkZToKPiA+PiBUaGlzIGV4dGVuc2lvbiBpbnRyb2R1Y2VzIGEgbmV3IHR5cGUgb2Ygc3lu Y29iaiB0aGF0IGhhcyBhbiBpbnRlZ2VyIHBheWxvYWQKPiA+PiBpZGVudGlmeWluZyBhIHBvaW50 IGluIGEgdGltZWxpbmUuIFN1Y2ggdGltZWxpbmUgc3luY29ianMgc3VwcG9ydCB0aGUKPiA+PiBm b2xsb3dpbmcgb3BlcmF0aW9uczoKPiA+PiAgICAgKiBDUFUgcXVlcnkgLSBBIGhvc3Qgb3BlcmF0 aW9uIHRoYXQgYWxsb3dzIHF1ZXJ5aW5nIHRoZSBwYXlsb2FkIG9mIHRoZQo+ID4+ICAgICAgIHRp bWVsaW5lIHN5bmNvYmouCj4gPj4gICAgICogQ1BVIHdhaXQgLSBBIGhvc3Qgb3BlcmF0aW9uIHRo YXQgYWxsb3dzIGEgYmxvY2tpbmcgd2FpdCBmb3IgYQo+ID4+ICAgICAgIHRpbWVsaW5lIHN5bmNv YmogdG8gcmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCj4gPj4gICAgICogRGV2aWNlIHdhaXQgLSBB IGRldmljZSBvcGVyYXRpb24gdGhhdCBhbGxvd3Mgd2FpdGluZyBmb3IgYQo+ID4+ICAgICAgIHRp bWVsaW5lIHN5bmNvYmogdG8gcmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCj4gPj4gICAgICogRGV2 aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9wZXJhdGlvbiB0aGF0IGFsbG93cyBhZHZhbmNpbmcgdGhl Cj4gPj4gICAgICAgdGltZWxpbmUgc3luY29iaiB0byBhIHNwZWNpZmllZCB2YWx1ZS4KPiA+Pgo+ ID4+IHYxOgo+ID4+IFNpbmNlIGl0J3MgYSB0aW1lbGluZSwgdGhhdCBtZWFucyB0aGUgZnJvbnQg dGltZSBwb2ludChQVCkgYWx3YXlzIGlzIHNpZ25hbGVkIGJlZm9yZSB0aGUgbGF0ZSBQVC4KPiA+ PiBhLiBzaWduYWwgUFQgZGVzaWduOgo+ID4+IFNpZ25hbCBQVCBmZW5jZSBOIGRlcGVuZHMgb24g UFRbTi0xXSBmZW5jZSBhbmQgc2lnbmFsIG9wZXJ0aW9uIGZlbmNlLCB3aGVuIFBUW05dIGZlbmNl IGlzIHNpZ25hbGVkLAo+ID4+IHRoZSB0aW1lbGluZSB3aWxsIGluY3JlYXNlIHRvIHZhbHVlIG9m IFBUW05dLgo+ID4+IGIuIHdhaXQgUFQgZGVzaWduOgo+ID4+IFdhaXQgUFQgZmVuY2UgaXMgc2ln bmFsZWQgYnkgcmVhY2hpbmcgdGltZWxpbmUgcG9pbnQgdmFsdWUsIHdoZW4gdGltZWxpbmUgaXMg aW5jcmVhc2luZywgd2lsbCBjb21wYXJlCj4gPj4gd2FpdCBQVHMgdmFsdWUgd2l0aCBuZXcgdGlt ZWxpbmUgdmFsdWUsIGlmIFBUIHZhbHVlIGlzIGxvd2VyIHRoYW4gdGltZWxpbmUgdmFsdWUsIHRo ZW4gd2FpdCBQVCB3aWxsIGJlCj4gPj4gc2lnbmFsZWQsIG90aGVyd2lzZSBrZWVwIGluIGxpc3Qu IHN5bmNvYmogd2FpdCBvcGVyYXRpb24gY2FuIHdhaXQgb24gYW55IHBvaW50IG9mIHRpbWVsaW5l LAo+ID4+IHNvIG5lZWQgYSBSQiB0cmVlIHRvIG9yZGVyIHRoZW0uIEFuZCB3YWl0IFBUIGNvdWxk IGFoZWFkIG9mIHNpZ25hbCBQVCwgd2UgbmVlZCBhIHN1bWlzc2lvbiBmZW5jZSB0bwo+ID4+IHBl cmZvcm0gdGhhdC4KPiA+Pgo+ID4+IHYyOgo+ID4+IDEuIHJlbW92ZSB1bnVzZWQgRFJNX1NZTkNP QkpfQ1JFQVRFX1RZUEVfTk9STUFMLiAoQ2hyaXN0aWFuKQo+ID4+IDIuIG1vdmUgdW5leHBvc2Vk IGRlbml0aW9ucyB0byAuYyBmaWxlLiAoRGFuaWVsIFZldHRlcikKPiA+PiAzLiBzcGxpdCB1cCB0 aGUgY2hhbmdlIHRvIGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoKSBpbiBhIHNlcGFyYXRlIHBhdGNo LiAoQ2hyaXN0aWFuKQo+ID4+IDQuIHNwbGl0IHVwIHRoZSBjaGFuZ2UgdG8gZHJtX3N5bmNvYmpf cmVwbGFjZV9mZW5jZSgpIGluIGEgc2VwYXJhdGUgcGF0Y2guCj4gPj4gNS4gZHJvcCB0aGUgc3Vi bWlzc2lvbl9mZW5jZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW5zdGVhZCB1c2Ugd2FpdF9ldmVudCgp IGZvciB0aGF0LiAoQ2hyaXN0aWFuKQo+ID4+IDYuIFdBUk5fT04ocG9pbnQgIT0gMCkgZm9yIE5P Uk1BTCB0eXBlIHN5bmNvYmogY2FzZS4gKERhbmllbCBWZXR0ZXIpCj4gPj4KPiA+PiB2MzoKPiA+ PiAxLiByZXBsYWNlIG5vcm1hbCBzeW5jb2JqIHdpdGggdGltZWxpbmUgaW1wbGVtZW5hdGlvbi4g KFZldHRlciBhbmQgQ2hyaXN0aWFuKQo+ID4+ICAgICAgYS4gbm9ybWFsIHN5bmNvYmogc2lnbmFs IG9wIHdpbGwgY3JlYXRlIGEgc2lnbmFsIFBUIHRvIHRhaWwgb2Ygc2lnbmFsIHB0IGxpc3QuCj4g Pj4gICAgICBiLiBub3JtYWwgc3luY29iaiB3YWl0IG9wIHdpbGwgY3JlYXRlIGEgd2FpdCBwdCB3 aXRoIGxhc3Qgc2lnbmFsIHBvaW50LCBhbmQgdGhpcyB3YWl0IFBUIGlzIG9ubHkgc2lnbmFsZWQg YnkgcmVsYXRlZCBzaWduYWwgcG9pbnQgUFQuCj4gPj4gMi4gbWFueSBidWcgZml4IGFuZCBjbGVh biB1cAo+ID4+IDMuIHN0dWIgZmVuY2UgbW92aW5nIGlzIG1vdmVkIHRvIG90aGVyIHBhdGNoLgo+ ID4+Cj4gPj4gdjTvvJoKPiA+PiAxLiBmaXggUkIgdHJlZSBsb29wIHdpdGggd2hpbGUobm9kZT1y Yl9maXJzdCguLi4pKS4gKENocmlzdGlhbikKPiA+PiAyLiBmaXggc3luY29iaiBsaWZlY3ljbGUu IChDaHJpc3RpYW4pCj4gPj4gMy4gb25seSBlbmFibGVfc2lnbmFsaW5nIHdoZW4gdGhlcmUgaXMg d2FpdF9wdC4gKENocmlzdGlhbikKPiA+PiA0LiBmaXggdGltZWxpbmUgcGF0aCBpc3N1ZXMuCj4g Pj4gNS4gd3JpdGUgYSB0aW1lbGluZSB0ZXN0IGluIGxpYmRybQo+ID4+Cj4gPj4gdjU6IChDaHJp c3RpYW4pCj4gPj4gMS4gc2VtYXBob3JlIGlzIGNhbGxlZCBzeW5jb2JqIGluIGtlcm5lbCBzaWRl Lgo+ID4+IDIuIGRvbid0IG5lZWQgJ3RpbWVsaW5lJyBjaGFyYWN0ZXJzIGluIHNvbWUgZnVuY3Rp b24gbmFtZS4KPiA+PiAzLiBrZWVwIHN5bmNvYmogY2IuCj4gPj4KPiA+PiB2NjogKENocmlzdGlh bikKPiA+PiAxLiBtZXJnZSBzeW5jb2JqX3RpbWVsaW5lIHRvIHN5bmNvYmogc3RydWN0dXJlLgo+ ID4+IDIuIHNpbXBsaWZ5IHNvbWUgY2hlY2sgc2VudGVuY2VzLgo+ID4+IDMuIHNvbWUgbWlzYyBj aGFuZ2UuCj4gPj4gNC4gZml4IENUUyBmYWlsZWQgaXNzdWUuCj4gPj4KPiA+PiB2NzogKENocmlz dGlhbikKPiA+PiAxLiBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIHNpZ25hbCBwdC4KPiA+ PiAyLiByZW1vdmUgdGltZWxpbmUgbmFtaW5nIGluIGZ1bmMuCj4gPj4gMy4gZXhwb3J0IGZsYWdz IGluIGZpbmRfZmVuY2UuCj4gPj4gNC4gYWxsb3cgcmVzZXQgdGltZWxpbmUuCj4gPj4KPiA+PiB2 ODoKPiA+PiAxLiB1c2Ugd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlIHdpdGhvdXQgdGltZW91dAo+ ID4+IDIuIHJlbmFtZSBfVFlQRV9JTkRJVklEVUFMIHRvIF9UWVBFX0JJTkFSWQo+ID4+Cj4gPj4g aW5kaXZpZHVhbCBzeW5jb2JqIGlzIHRlc3RlZCBieSAuL2RlcXAtdmsgLW4gZEVRUC1WSypzZW1h cGhvcmUqCj4gPj4gdGltZWxpbmUgc3luY29iaiBpcyB0ZXN0ZWQgYnkgLi9hbWRncHVfdGVzdCAt cyA5Cj4gPiBDYW4gd2UgcGxlYXNlIGhhdmUgdGhlc2UgbG93LWxldmVsIHN5bmNvYmogdGVzdHMg YXMgcGFydCBvZiBpZ3QsIHRvZ2V0aGVyCj4gPiB3aXRoIGFsbCB0aGUgb3RoZXIgc3luY29iaiB0 ZXN0cyB3aGljaCBhcmUgdGhlcmUgYWxyZWFkeT8KPiBHb29kIHN1Z2dlc3Rpb24gZmlyc3QsIEkn bSBqdXN0IG5vdCBmYW1pbGlhciB3aXRoIGlndCggYnVpbGQsIHJ1bgo+IGNtZC4uLiksIG1heWJl IHdlIGNhbiBhZGQgaXQgbGF0ZXIuCj4KPiA+IFJlYWxseSBkb2Vzbid0Cj4gPiBtYWtlIG11Y2gg c2Vuc2UgaW1vIHRvIHNwbGl0cyB0aGluZ3Mgb24gdGhlIHRlc3Qgc3VpdGUgZnJvbnQuCj4gPj4g U2lnbmVkLW9mZi1ieTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KPiA+PiBD YzogQ2hyaXN0aWFuIEtvbmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gPj4gQ2M6IERh dmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Cj4gPj4gQ2M6IERhbmllbCBSYWtvcyA8RGFu aWVsLlJha29zQGFtZC5jb20+Cj4gPj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5j aD4KPiA+PiBSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tPgo+ID4+IC0tLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgICAg ICAgICAgICAgIHwgMjg3ICsrKysrKysrKysrKysrKysrKy0tLQo+ID4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgICAyICstCj4gPj4gICBpbmNsdWRlL2Ry bS9kcm1fc3luY29iai5oICAgICAgICAgICAgICAgICAgfCAgNjUgKystLS0KPiA+PiAgIGluY2x1 ZGUvdWFwaS9kcm0vZHJtLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPj4gICA0IGZp bGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKPiA+Pgo+ID4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fc3luY29iai5jCj4gPj4gaW5kZXggZjc5NmM5ZmMzODU4Li42NzQ3MmJkNzdjODMg MTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPiA+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwo+ID4+IEBAIC01Niw2ICs1Niw5IEBACj4g Pj4gICAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCj4gPj4gICAjaW5jbHVkZSA8ZHJtL2RybV9z eW5jb2JqLmg+Cj4gPj4KPiA+PiArLyogbWVyZ2Ugbm9ybWFsIHN5bmNvYmogdG8gdGltZWxpbmUg c3luY29iaiwgdGhlIHBvaW50IGludGVydmFsIGlzIDEgKi8KPiA+PiArI2RlZmluZSBEUk1fU1lO Q09CSl9CSU5BUllfUE9JTlQgMQo+ID4+ICsKPiA+PiAgIHN0cnVjdCBkcm1fc3luY29ial9zdHVi X2ZlbmNlIHsKPiA+PiAgICAgIHN0cnVjdCBkbWFfZmVuY2UgYmFzZTsKPiA+PiAgICAgIHNwaW5s b2NrX3QgbG9jazsKPiA+PiBAQCAtODIsNiArODUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk bWFfZmVuY2Vfb3BzIGRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzID0gewo+ID4+ICAgICAgLnJl bGVhc2UgPSBkcm1fc3luY29ial9zdHViX2ZlbmNlX3JlbGVhc2UsCj4gPj4gICB9Owo+ID4+Cj4g Pj4gK3N0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgewo+ID4+ICsgICAgc3RydWN0IGRtYV9m ZW5jZV9hcnJheSAqYmFzZTsKPiA+IE91dCBvZiBjdXJpb3NpdHksIHdoeSB0aGUgcG9pbnRlciBh bmQgbm90IGVtYmVkZGluZz8gYmFzZSBpcyBraW5kYQo+ID4gbWlzbGVhZGluZyBmb3IgYSBwb2lu dGVyLgo+IFllYWgsIENocmlzdGlhbiBkb2Vzbid0IGxpa2Ugc2lnbmFsX3B0IGxpZmVjeWNsZSBz YW1lIGFzIGZlbmNlLCBzbyBpdCdzCj4gYSBwb2ludGVyLgo+IElmIHlvdSBkb24ndCBsaWtlICdi YXNlJyBuYW1lLCBJIGNhbiBjaGFuZ2UgaXQuCj4KPiA+Cj4gPj4gKyAgICB1NjQgICAgdmFsdWU7 Cj4gPj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gPj4gK307Cj4gPj4KPiA+PiAgIC8q Kgo+ID4+ICAgICogZHJtX3N5bmNvYmpfZmluZCAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIGEgc3lu YyBvYmplY3QuCj4gPj4gQEAgLTEyNCw4ICsxMzIsOCBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2Jq X2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAo+ ID4+ICAgewo+ID4+ICAgICAgaW50IHJldDsKPiA+Pgo+ID4+IC0gICAgKmZlbmNlID0gZHJtX3N5 bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopOwo+ID4+IC0gICAgaWYgKCpmZW5jZSkKPiA+PiArICAg IHJldCA9IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCBmZW5jZSk7Cj4g Pj4gKyAgICBpZiAoIXJldCkKPiA+PiAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4gPj4KPiA+PiAg ICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gPj4gQEAgLTEzMywxMCArMTQxLDEyIEBA IHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmosCj4gPj4gICAgICAgKiBoYXZlIHRoZSBsb2NrLCB0cnkgb25l IG1vcmUgdGltZSBqdXN0IHRvIGJlIHN1cmUgd2UgZG9uJ3QgYWRkIGEKPiA+PiAgICAgICAqIGNh bGxiYWNrIHdoZW4gYSBmZW5jZSBoYXMgYWxyZWFkeSBiZWVuIHNldC4KPiA+PiAgICAgICAqLwo+ ID4+IC0gICAgaWYgKHN5bmNvYmotPmZlbmNlKSB7Cj4gPj4gLSAgICAgICAgICAgICpmZW5jZSA9 IGRtYV9mZW5jZV9nZXQocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwK PiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9jaykpKTsKPiA+PiAtICAgICAg ICAgICAgcmV0ID0gMTsKPiA+PiArICAgIGlmICghbGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFs X3B0X2xpc3QpKSB7Cj4gPj4gKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2Nr KTsKPiA+PiArICAgICAgICAgICAgZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAs IDAsIGZlbmNlKTsKPiA+PiArICAgICAgICAgICAgaWYgKCpmZW5jZSkKPiA+PiArICAgICAgICAg ICAgICAgICAgICByZXR1cm4gMTsKPiA+PiArICAgICAgICAgICAgc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKPiA+PiAgICAgIH0gZWxzZSB7Cj4gPj4gICAgICAgICAgICAgICpmZW5jZSA9IE5V TEw7Cj4gPj4gICAgICAgICAgICAgIGRybV9zeW5jb2JqX2FkZF9jYWxsYmFja19sb2NrZWQoc3lu Y29iaiwgY2IsIGZ1bmMpOwo+ID4+IEBAIC0xNjQsNiArMTc0LDE1OSBAQCB2b2lkIGRybV9zeW5j b2JqX3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4gPj4gICAg ICBzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4gPj4gICB9Cj4gPj4KPiA+PiArc3RhdGlj IHZvaWQgZHJtX3N5bmNvYmpfaW5pdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4gPj4g K3sKPiA+PiArICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gPj4gKyAgICBzeW5jb2Jq LT50aW1lbGluZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Cj4gPj4gKyAg ICBzeW5jb2JqLT50aW1lbGluZSA9IDA7Cj4gPj4gKyAgICBzeW5jb2JqLT5zaWduYWxfcG9pbnQg PSAwOwo+ID4+ICsgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmc3luY29iai0+d3EpOwo+ID4+ICsK PiA+PiArICAgIElOSVRfTElTVF9IRUFEKCZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCk7Cj4gPj4g KyAgICBzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0 YXRpYyB2b2lkIGRybV9zeW5jb2JqX2Zpbmkoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQo+ ID4+ICt7Cj4gPj4gKyAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQg PSBOVUxMLCAqdG1wOwo+ID4+ICsKPiA+PiArICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7 Cj4gPj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2lnbmFsX3B0LCB0bXAsCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LCBs aXN0KSB7Cj4gPj4gKyAgICAgICAgICAgIGxpc3RfZGVsKCZzaWduYWxfcHQtPmxpc3QpOwo+ID4+ ICsgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOwo+ID4+ ICsgICAgICAgICAgICBrZnJlZShzaWduYWxfcHQpOwo+ID4+ICsgICAgfQo+ID4+ICsgICAgc3Bp bl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3Ry dWN0IGRtYV9mZW5jZQo+ID4+ICsqZHJtX3N5bmNvYmpfZmluZF9zaWduYWxfcHRfZm9yX3BvaW50 KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IHBvaW50KQo+ID4+ICt7Cj4gPj4gKyAgICBzdHJ1Y3QgZHJt X3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQ7Cj4gPj4gKwo+ID4+ICsgICAgaWYgKChzeW5j b2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpICYmCj4gPj4gKyAgICAgICAg KHBvaW50IDw9IHN5bmNvYmotPnRpbWVsaW5lKSkgewo+ID4+ICsgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSAqZmVuY2UgPQo+ID4+ICsgICAgICAgICAgICAgICAgICAg IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlKSwKPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOwo+ID4+ICsKPiA+PiArICAgICAg ICAgICAgaWYgKCFmZW5jZSkKPiA+PiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsK PiA+PiArICAgICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJmZlbmNlLT5sb2NrKTsKPiA+PiArICAg ICAgICAgICAgZG1hX2ZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLAo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9vcHMsCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICZmZW5jZS0+bG9jaywKPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3luY29iai0+dGltZWxpbmVfY29udGV4dCwKPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgcG9pbnQpOwo+ID4+ICsKPiA+PiArICAgICAgICAgICAgZG1hX2ZlbmNlX3Np Z25hbCgmZmVuY2UtPmJhc2UpOwo+ID4+ICsgICAgICAgICAgICByZXR1cm4gJmZlbmNlLT5iYXNl Owo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoc2lnbmFs X3B0LCAmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKPiA+PiArICAgICAgICAgICAg aWYgKHBvaW50ID4gc2lnbmFsX3B0LT52YWx1ZSkKPiA+PiArICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKPiA+PiArICAgICAgICAgICAgaWYgKChzeW5jb2JqLT50eXBlID09IERSTV9TWU5D T0JKX1RZUEVfQklOQVJZKSAmJgo+ID4+ICsgICAgICAgICAgICAgICAgKHBvaW50ICE9IHNpZ25h bF9wdC0+dmFsdWUpKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+ICsg ICAgICAgICAgICByZXR1cm4gZG1hX2ZlbmNlX2dldCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKTsK PiA+PiArICAgIH0KPiA+PiArICAgIHJldHVybiBOVUxMOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtz dGF0aWMgaW50IGRybV9zeW5jb2JqX2NyZWF0ZV9zaWduYWxfcHQoc3RydWN0IGRybV9zeW5jb2Jq ICpzeW5jb2JqLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdTY0IHBvaW50KQo+ID4+ICt7Cj4gPj4gKyAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfc2ln bmFsX3B0ICpzaWduYWxfcHQgPQo+ID4+ICsgICAgICAgICAgICBremFsbG9jKHNpemVvZihzdHJ1 Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0KSwgR0ZQX0tFUk5FTCk7Cj4gPj4gKyAgICBzdHJ1Y3Qg ZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICp0YWlsX3B0Owo+ID4+ICsgICAgc3RydWN0IGRtYV9mZW5j ZSAqKmZlbmNlczsKPiA+PiArICAgIGludCBudW1fZmVuY2VzID0gMDsKPiA+PiArICAgIGludCBy ZXQgPSAwLCBpOwo+ID4+ICsKPiA+PiArICAgIGlmICghc2lnbmFsX3B0KQo+ID4+ICsgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPiA+PiArICAgIGlmICghZmVuY2UpCj4gPj4gKyAgICAgICAg ICAgIGdvdG8gb3V0Owo+ID4+ICsKPiA+PiArICAgIGZlbmNlcyA9IGttYWxsb2NfYXJyYXkoc2l6 ZW9mKHZvaWQgKiksIDIsIEdGUF9LRVJORUwpOwo+ID4+ICsgICAgaWYgKCFmZW5jZXMpIHsKPiA+ PiArICAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKPiA+PiArICAgICAgICAgICAgZ290byBvdXQ7 Cj4gPj4gKyAgICB9Cj4gPj4gKyAgICBmZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRtYV9mZW5jZV9n ZXQoZmVuY2UpOwo+ID4+ICsgICAgLyogdGltZWxpbmUgc3luY29iaiBtdXN0IHRha2UgdGhpcyBk ZXBlbmRlbmN5ICovCj4gPj4gKyAgICBpZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9U WVBFX1RJTUVMSU5FKSB7Cj4gPj4gKyAgICAgICAgICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9j ayk7Cj4gPj4gKyAgICAgICAgICAgIGlmICghbGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFsX3B0 X2xpc3QpKSB7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgdGFpbF9wdCA9IGxpc3RfbGFzdF9l bnRyeSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0LCBs aXN0KTsKPiA+PiArICAgICAgICAgICAgICAgICAgICBmZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRt YV9mZW5jZV9nZXQoJnRhaWxfcHQtPmJhc2UtPmJhc2UpOwo+ID4+ICsgICAgICAgICAgICB9Cj4g Pj4gKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+PiArICAgIH0K PiA+PiArICAgIHNpZ25hbF9wdC0+YmFzZSA9IGRtYV9mZW5jZV9hcnJheV9jcmVhdGUobnVtX2Zl bmNlcywgZmVuY2VzLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzeW5jb2JqLT50aW1lbGluZV9jb250ZXh0LAo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludCwgZmFsc2UpOwo+ID4+ICsgICAgaWYg KCFzaWduYWxfcHQtPmJhc2UpIHsKPiA+PiArICAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKPiA+ PiArICAgICAgICAgICAgZ290byBmYWlsOwo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiArICAgIHNw aW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gPj4gKyAgICBpZiAoc3luY29iai0+c2lnbmFsX3Bv aW50ID49IHBvaW50KSB7Cj4gPj4gKyAgICAgICAgICAgIERSTV9XQVJOKCJBIGxhdGVyIHNpZ25h bCBpcyByZWFkeSEiKTsKPiA+PiArICAgICAgICAgICAgc3Bpbl91bmxvY2soJnN5bmNvYmotPmxv Y2spOwo+ID4+ICsgICAgICAgICAgICBnb3RvIGV4aXN0Owo+ID4+ICsgICAgfQo+ID4+ICsgICAg c2lnbmFsX3B0LT52YWx1ZSA9IHBvaW50Owo+ID4+ICsgICAgbGlzdF9hZGRfdGFpbCgmc2lnbmFs X3B0LT5saXN0LCAmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpOwo+ID4+ICsgICAgc3luY29iai0+ c2lnbmFsX3BvaW50ID0gcG9pbnQ7Cj4gPj4gKyAgICBzcGluX3VubG9jaygmc3luY29iai0+bG9j ayk7Cj4gPj4gKyAgICB3YWtlX3VwX2FsbCgmc3luY29iai0+d3EpOwo+ID4+ICsKPiA+PiArICAg IHJldHVybiAwOwo+ID4+ICtleGlzdDoKPiA+PiArICAgIGRtYV9mZW5jZV9wdXQoJnNpZ25hbF9w dC0+YmFzZS0+YmFzZSk7Cj4gPj4gK2ZhaWw6Cj4gPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVt X2ZlbmNlczsgaSsrKQo+ID4+ICsgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGZlbmNlc1tpXSk7 Cj4gPj4gKyAgICBrZnJlZShmZW5jZXMpOwo+ID4+ICtvdXQ6Cj4gPj4gKyAgICBrZnJlZShzaWdu YWxfcHQpOwo+ID4+ICsgICAgcmV0dXJuIHJldDsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGlj IHZvaWQgZHJtX3N5bmNvYmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN0cnVjdCBkcm1fc3luY29iaiAq c3luY29iaikKPiA+PiArewo+ID4+ICsgICAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAq c2lnbmFsX3B0LCAqdG1wLCAqdGFpbF9wdDsKPiA+PiArCj4gPj4gKyAgICBzcGluX2xvY2soJnN5 bmNvYmotPmxvY2spOwo+ID4+ICsgICAgdGFpbF9wdCA9IGxpc3RfbGFzdF9lbnRyeSgmc3luY29i ai0+c2lnbmFsX3B0X2xpc3QsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpc3QpOwo+ID4+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9w dCwgdG1wLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzeW5jb2JqLT5zaWdu YWxfcHRfbGlzdCwgbGlzdCkgewo+ID4+ICsgICAgICAgICAgICBpZiAoc3luY29iai0+dHlwZSA9 PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFSWSAmJgo+ID4+ICsgICAgICAgICAgICAgICAgc2lnbmFs X3B0ID09IHRhaWxfcHQpCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4g KyAgICAgICAgICAgIGlmIChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoJnNpZ25hbF9wdC0+YmFzZS0+ YmFzZSkpIHsKPiA+PiArICAgICAgICAgICAgICAgICAgICBzeW5jb2JqLT50aW1lbGluZSA9IHNp Z25hbF9wdC0+dmFsdWU7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWwoJnNpZ25h bF9wdC0+bGlzdCk7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgZG1hX2ZlbmNlX3B1dCgmc2ln bmFsX3B0LT5iYXNlLT5iYXNlKTsKPiA+PiArICAgICAgICAgICAgICAgICAgICBrZnJlZShzaWdu YWxfcHQpOwo+ID4+ICsgICAgICAgICAgICB9IGVsc2Ugewo+ID4+ICsgICAgICAgICAgICAgICAg ICAgIC8qc2lnbmFsX3B0IGlzIGluIG9yZGVyIGluIGxpc3QsIGZyb20gc21hbGwgdG8gYmlnLCBz bwo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAqIHRoZSBsYXRlciBtdXN0IG5vdCBiZSBzaWdu YWwgZWl0aGVyICovCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPj4gKyAgICAg ICAgICAgIH0KPiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAgICBzcGluX3VubG9jaygmc3luY29i ai0+bG9jayk7Cj4gPj4gK30KPiA+PiAgIC8qKgo+ID4+ICAgICogZHJtX3N5bmNvYmpfcmVwbGFj ZV9mZW5jZSAtIHJlcGxhY2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4KPiA+PiAgICAqIEBzeW5j b2JqOiBTeW5jIG9iamVjdCB0byByZXBsYWNlIGZlbmNlIGluCj4gPj4gQEAgLTE3NiwyOCArMzM5 LDI5IEBAIHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmosCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBwb2ludCwKPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4g Pj4gICB7Cj4gPj4gLSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpvbGRfZmVuY2U7Cj4gPj4gLSAgICBz dHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1ciwgKnRtcDsKPiA+PiAtCj4gPj4gLSAgICBpZiAoZmVu Y2UpCj4gPj4gLSAgICAgICAgICAgIGRtYV9mZW5jZV9nZXQoZmVuY2UpOwo+ID4+IC0KPiA+PiAt ICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4gPj4gLQo+ID4+IC0gICAgb2xkX2ZlbmNl ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKPiA+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2RlcF9pc19oZWxkKCZzeW5j b2JqLT5sb2NrKSk7Cj4gPj4gLSAgICByY3VfYXNzaWduX3BvaW50ZXIoc3luY29iai0+ZmVuY2Us IGZlbmNlKTsKPiA+PiArICAgIHU2NCBwdF92YWx1ZSA9IHBvaW50Owo+ID4+ICsKPiA+PiArICAg IGRybV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKPiA+PiArICAgIGlmIChz eW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfQklOQVJZKSB7Cj4gPj4gKyAgICAgICAg ICAgIGlmICghZmVuY2UpIHsKPiA+PiArICAgICAgICAgICAgICAgICAgICBkcm1fc3luY29ial9m aW5pKHN5bmNvYmopOwo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGRybV9zeW5jb2JqX2luaXQo c3luY29iaik7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4+ICsgICAgICAg ICAgICB9Cj4gPj4gKyAgICAgICAgICAgIHB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50 ICsKPiA+PiArICAgICAgICAgICAgICAgICAgICBEUk1fU1lOQ09CSl9CSU5BUllfUE9JTlQ7Cj4g Pj4gKyAgICB9Cj4gPj4gKyAgICBkcm1fc3luY29ial9jcmVhdGVfc2lnbmFsX3B0KHN5bmNvYmos IGZlbmNlLCBwdF92YWx1ZSk7Cj4gPj4gKyAgICBpZiAoZmVuY2UpIHsKPiA+PiArICAgICAgICAg ICAgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjdXIsICp0bXA7Cj4gPj4KPiA+PiAtICAgIGlmIChm ZW5jZSAhPSBvbGRfZmVuY2UpIHsKPiA+PiArICAgICAgICAgICAgc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKPiA+PiAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwg dG1wLCAmc3luY29iai0+Y2JfbGlzdCwgbm9kZSkgewo+ID4+ICAgICAgICAgICAgICAgICAgICAg IGxpc3RfZGVsX2luaXQoJmN1ci0+bm9kZSk7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgY3Vy LT5mdW5jKHN5bmNvYmosIGN1cik7Cj4gPj4gICAgICAgICAgICAgIH0KPiA+PiArICAgICAgICAg ICAgc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ID4+ICAgICAgfQo+ID4+IC0KPiA+PiAt ICAgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+PiAtCj4gPj4gLSAgICBkbWFfZmVu Y2VfcHV0KG9sZF9mZW5jZSk7Cj4gPj4gICB9Cj4gPj4gICBFWFBPUlRfU1lNQk9MKGRybV9zeW5j b2JqX3JlcGxhY2VfZmVuY2UpOwo+ID4+Cj4gPj4gQEAgLTIyMCw2ICszODQsNDYgQEAgc3RhdGlj IGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpz eW5jb2JqKQo+ID4+ICAgICAgcmV0dXJuIDA7Cj4gPj4gICB9Cj4gPj4KPiA+PiArc3RhdGljIGlu dAo+ID4+ICtkcm1fc3luY29ial9wb2ludF9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq LCB1NjQgcG9pbnQsIHU2NCBmbGFncywKPiA+PiArICAgICAgICAgICAgICAgICAgc3RydWN0IGRt YV9mZW5jZSAqKmZlbmNlKQo+ID4+ICt7Cj4gPj4gKyAgICBpbnQgcmV0ID0gMDsKPiA+PiArCj4g Pj4gKyAgICBpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1J VCkgewo+ID4+ICsgICAgICAgICAgICByZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoc3lu Y29iai0+d3EsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwb2ludCA8PSBzeW5jb2JqLT5zaWduYWxfcG9pbnQpOwo+ID4+ICsgICAgICAgICAgICBpZiAo cmV0IDwgMCkKPiA+PiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ICsgICAg fQo+ID4+ICsgICAgc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+PiArICAgICpmZW5jZSA9 IGRybV9zeW5jb2JqX2ZpbmRfc2lnbmFsX3B0X2Zvcl9wb2ludChzeW5jb2JqLCBwb2ludCk7Cj4g Pj4gKyAgICBpZiAoISpmZW5jZSkKPiA+PiArICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiA+ PiArICAgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPiA+PiArICAgIHJldHVybiByZXQ7 Cj4gPj4gK30KPiA+PiArCj4gPj4gK2ludCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0 IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICB1NjQgZmxhZ3MsIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPiA+IEtlcm5lbGRv YyBpcyBtaXNzaW5nIGZvciB0aGlzIG9uZSBoZXJlLgo+IEl0J3MgYWxtb3N0IHNhbWUgYXMgZHJt X3N5bmNvYmpfZmluZF9mZW5jZSwgaXMgaXQgc3RpbGwgbmVjZXNzYXJ5PwoKRXZlbiBtb3JlIHJl YXNvbnMsIGlmIHlvdSBkbyBhIGZldyBsaW5rcyBiZXR3ZWVuIGNsb3NlbHkgcmVsYXRlZCBmdW5j dGlvbnMgOi0pCgo+ID4gSSBhbHNvIHRoaW5rIGltcHJvdmluZyB0aGUgb3ZlcnZpZXcgY29tbWVu dCB0byBleHBsYWluIHRoZSB0aW1lbGluZSBzdHVmZiwKPiA+IGUuZy4gbGluayB0byB0aGUgdnVs a2FuIGV4dGVuc2lvbiwgYW5kIHNvbWUgd29yZHMgb24gaG93IGl0J3Mgc3VwcG9zZWQgdG8KPiA+ IGJlIHVzZWQgKHlvdSBuZWVkIGEgc3VibWl0IHRocmVhZCBhbmQgYmxvY2sgaW4gdXNlcnNwYWNl IHVudGlsIGFsbCBmdXR1cmUKPiA+IHRpbWVsaW5lIHBvaW50cyBoYXZlIG1hdGVyaWFsaXplZCwg b25seSB0aGVuIHlvdSBjYW4gc3VibWl0IHRvIHRoZQo+ID4ga2VybmVsKS4KPiA+Cj4gPj4gK3sK PiA+PiArICAgIHU2NCBwdF92YWx1ZSA9IHBvaW50Owo+ID4+ICsKPiA+PiArICAgIGlmICghc3lu Y29iaikKPiA+PiArICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7Cj4gPj4gKwo+ID4+ICsgICAg ZHJtX3N5bmNvYmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN5bmNvYmopOwo+ID4+ICsgICAgaWYgKHN5 bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlkpIHsKPiA+PiArICAgICAgICAg ICAgLypCSU5BUlkgc3luY29iaiBhbHdheXMgd2FpdCBvbiBsYXN0IHB0ICovCj4gPj4gKyAgICAg ICAgICAgIHB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50Owo+ID4+ICsKPiA+PiArICAg ICAgICAgICAgaWYgKHB0X3ZhbHVlID09IDApCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgcHRf dmFsdWUgKz0gRFJNX1NZTkNPQkpfQklOQVJZX1BPSU5UOwo+ID4+ICsgICAgfQo+ID4+ICsgICAg cmV0dXJuIGRybV9zeW5jb2JqX3BvaW50X2dldChzeW5jb2JqLCBwdF92YWx1ZSwgZmxhZ3MsIGZl bmNlKTsKPiA+PiArfQo+ID4+ICtFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3NlYXJjaF9mZW5j ZSk7Cj4gPj4gKwo+ID4+ICAgLyoqCj4gPj4gICAgKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIC0g bG9va3VwIGFuZCByZWZlcmVuY2UgdGhlIGZlbmNlIGluIGEgc3luYyBvYmplY3QKPiA+PiAgICAq IEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlcgo+ID4+IEBAIC0yMjgsNyAr NDMyLDcgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0 IGRybV9zeW5jb2JqICpzeW5jb2JqKQo+ID4+ICAgICogQGZlbmNlOiBvdXQgcGFyYW1ldGVyIGZv ciB0aGUgZmVuY2UKPiA+PiAgICAqCj4gPj4gICAgKiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5j ZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGRybV9zeW5jb2JqX2ZpbmQoKSBhbmQKPiA+PiAtICog ZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KCkuCj4gPj4gKyAqIGRybV9zeW5jb2JqX2xvb2t1cF9mZW5j ZSgpLgo+ID4+ICAgICoKPiA+PiAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRp dmUgZXJyb3IgdmFsdWUgb24gZmFpbHVyZS4gT24gc3VjY2VzcyBAZmVuY2UKPiA+PiAgICAqIGNv bnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmZW5jZSwgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCBi eSBjYWxsaW5nCj4gPj4gQEAgLTIzOSwxNSArNDQzLDkgQEAgaW50IGRybV9zeW5jb2JqX2ZpbmRf ZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+ID4+ICAgewo+ID4+ICAgICAgc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUs IGhhbmRsZSk7Cj4gPj4gLSAgICBpbnQgcmV0ID0gMDsKPiA+PiAtCj4gPj4gLSAgICBpZiAoIXN5 bmNvYmopCj4gPj4gLSAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwo+ID4+ICsgICAgaW50IHJl dDsKPiA+Pgo+ID4+IC0gICAgKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmop Owo+ID4+IC0gICAgaWYgKCEqZmVuY2UpIHsKPiA+PiAtICAgICAgICAgICAgcmV0ID0gLUVJTlZB TDsKPiA+PiAtICAgIH0KPiA+PiArICAgIHJldCA9IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShz eW5jb2JqLCBwb2ludCwgZmxhZ3MsIGZlbmNlKTsKPiA+PiAgICAgIGRybV9zeW5jb2JqX3B1dChz eW5jb2JqKTsKPiA+PiAgICAgIHJldHVybiByZXQ7Cj4gPj4gICB9Cj4gPj4gQEAgLTI2NCw3ICs0 NjIsNyBAQCB2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4gPj4gICAg ICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBjb250YWluZXJfb2Yoa3JlZiwKPiA+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X3N5bmNvYmosCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVmY291bnQpOwo+ID4+IC0gICAgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5j b2JqLCAwLCBOVUxMKTsKPiA+PiArICAgIGRybV9zeW5jb2JqX2Zpbmkoc3luY29iaik7Cj4gPj4g ICAgICBrZnJlZShzeW5jb2JqKTsKPiA+PiAgIH0KPiA+PiAgIEVYUE9SVF9TWU1CT0woZHJtX3N5 bmNvYmpfZnJlZSk7Cj4gPj4gQEAgLTI5NCw2ICs0OTIsMTEgQEAgaW50IGRybV9zeW5jb2JqX2Ny ZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCj4g Pj4gICAgICBrcmVmX2luaXQoJnN5bmNvYmotPnJlZmNvdW50KTsKPiA+PiAgICAgIElOSVRfTElT VF9IRUFEKCZzeW5jb2JqLT5jYl9saXN0KTsKPiA+PiAgICAgIHNwaW5fbG9ja19pbml0KCZzeW5j b2JqLT5sb2NrKTsKPiA+PiArICAgIGlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9UWVBF X1RJTUVMSU5FKQo+ID4+ICsgICAgICAgICAgICBzeW5jb2JqLT50eXBlID0gRFJNX1NZTkNPQkpf VFlQRV9USU1FTElORTsKPiA+PiArICAgIGVsc2UKPiA+PiArICAgICAgICAgICAgc3luY29iai0+ dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfQklOQVJZOwo+ID4+ICsgICAgZHJtX3N5bmNvYmpfaW5p dChzeW5jb2JqKTsKPiA+Pgo+ID4+ICAgICAgaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRF X1NJR05BTEVEKSB7Cj4gPj4gICAgICAgICAgICAgIHJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9u dWxsX2hhbmRsZShzeW5jb2JqKTsKPiA+PiBAQCAtNTc2LDcgKzc3OSw4IEBAIGRybV9zeW5jb2Jq X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4+ICAg ICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiA+Pgo+ID4+ICAgICAgLyogbm8gdmFsaWQgZmxh Z3MgeWV0ICovCj4gPj4gLSAgICBpZiAoYXJncy0+ZmxhZ3MgJiB+RFJNX1NZTkNPQkpfQ1JFQVRF X1NJR05BTEVEKQo+ID4+ICsgICAgaWYgKGFyZ3MtPmZsYWdzICYgfihEUk1fU1lOQ09CSl9DUkVB VEVfU0lHTkFMRUQgfAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICBEUk1fU1lOQ09CSl9D UkVBVEVfVFlQRV9USU1FTElORSkpCj4gPj4gICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ID4+Cj4gPj4gICAgICByZXR1cm4gZHJtX3N5bmNvYmpfY3JlYXRlX2FzX2hhbmRsZShmaWxlX3By aXZhdGUsCj4gPj4gQEAgLTY2OSw5ICs4NzMsOCBAQCBzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRf c3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPiA+PiAgICAgIHN0cnVj dCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQgPQo+ID4+ICAgICAgICAgICAgICBjb250YWluZXJf b2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnksIHN5bmNvYmpfY2IpOwo+ID4+Cj4gPj4g LSAgICAvKiBUaGlzIGhhcHBlbnMgaW5zaWRlIHRoZSBzeW5jb2JqIGxvY2sgKi8KPiA+PiAtICAg IHdhaXQtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5 bmNvYmotPmZlbmNlLAo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSkpOwo+ ID4+ICsgICAgZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsICZ3YWl0LT5m ZW5jZSk7Cj4gPj4gKwo+ID4+ICAgICAgd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOwo+ID4+ ICAgfQo+ID4+Cj4gPj4gQEAgLTY5OCw3ICs5MDEsOCBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJt X3N5bmNvYmpfYXJyYXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpz LAo+ID4+ICAgICAgc2lnbmFsZWRfY291bnQgPSAwOwo+ID4+ICAgICAgZm9yIChpID0gMDsgaSA8 IGNvdW50OyArK2kpIHsKPiA+PiAgICAgICAgICAgICAgZW50cmllc1tpXS50YXNrID0gY3VycmVu dDsKPiA+PiAtICAgICAgICAgICAgZW50cmllc1tpXS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNl X2dldChzeW5jb2Jqc1tpXSk7Cj4gPj4gKyAgICAgICAgICAgIHJldCA9IGRybV9zeW5jb2JqX3Nl YXJjaF9mZW5jZShzeW5jb2Jqc1tpXSwgMCwgMCwKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZlbnRyaWVzW2ldLmZlbmNlKTsKPiA+PiAgICAgICAgICAg ICAgaWYgKCFlbnRyaWVzW2ldLmZlbmNlKSB7Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgaWYg KGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsKPiA+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+IEBAIC05NzAsMTIgKzEx NzQsMTMgQEAgZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPiA+PiAgICAgIGlmIChyZXQgPCAwKQo+ID4+ICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4+Cj4gPj4gLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJncy0+Y291bnRfaGFuZGxl czsgaSsrKQo+ID4+IC0gICAgICAgICAgICBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNv YmpzW2ldLCAwLCBOVUxMKTsKPiA+PiAtCj4gPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgYXJncy0+ Y291bnRfaGFuZGxlczsgaSsrKSB7Cj4gPj4gKyAgICAgICAgICAgIGRybV9zeW5jb2JqX2Zpbmko c3luY29ianNbaV0pOwo+ID4+ICsgICAgICAgICAgICBkcm1fc3luY29ial9pbml0KHN5bmNvYmpz W2ldKTsKPiA+PiArICAgIH0KPiA+PiAgICAgIGRybV9zeW5jb2JqX2FycmF5X2ZyZWUoc3luY29i anMsIGFyZ3MtPmNvdW50X2hhbmRsZXMpOwo+ID4+Cj4gPj4gLSAgICByZXR1cm4gMDsKPiA+PiAr ICAgIHJldHVybiByZXQ7Cj4gPj4gICB9Cj4gPj4KPiA+PiAgIGludAo+ID4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiA+PiBpbmRleCAwYThkMmQ2NGYzODAu LjhhOGQyMWIyNDExOSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKPiA+PiBAQCAtMjEzNyw3ICsyMTM3LDcgQEAgYXdhaXRfZmVuY2VfYXJy YXkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gPj4gICAgICAgICAgICAgIGlmICghKGZs YWdzICYgSTkxNV9FWEVDX0ZFTkNFX1dBSVQpKQo+ID4+ICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+ID4+Cj4gPj4gLSAgICAgICAgICAgIGZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2Vf Z2V0KHN5bmNvYmopOwo+ID4+ICsgICAgICAgICAgICBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uo c3luY29iaiwgMCwgMCwgJmZlbmNlKTsKPiA+PiAgICAgICAgICAgICAgaWYgKCFmZW5jZSkKPiA+ PiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+Pgo+ID4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmou aAo+ID4+IGluZGV4IDJlZGE0NGRlZjYzOS4uODViMzZkNGU1M2VlIDEwMDY0NAo+ID4+IC0tLSBh L2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKPiA+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fc3lu Y29iai5oCj4gPj4gQEAgLTMwLDYgKzMwLDExIEBACj4gPj4KPiA+PiAgIHN0cnVjdCBkcm1fc3lu Y29ial9jYjsKPiA+Pgo+ID4+ICtlbnVtIGRybV9zeW5jb2JqX3R5cGUgewo+ID4+ICsgICAgRFJN X1NZTkNPQkpfVFlQRV9CSU5BUlksCj4gPj4gKyAgICBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5F Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICAgLyoqCj4gPj4gICAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmog LSBzeW5jIG9iamVjdC4KPiA+PiAgICAqCj4gPiBUaGUga2VybmVsZG9jIGZvciB0aGlzIGFsc28g aXNuJ3QgYWNjdXJhdGUgYW55bW9yZS4KPiBDYW4ga2VybmVsZG9jIGJlIGEgc2VwYXJhdGUgcGF0 Y2g/CgpZb3UgYWxyZWFkeSB1cGRhdGUgdGhlIGtlcm5lbGRvYywgYnV0IG5vdCBjb21wbGV0ZWx5 IGluIHRoaXMgcGF0Y2guClRoYXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHNwbGl0IHVwLgoKPiA+ IFdpdGggdGhlIGtlcm5lbC1kb2MgcG9saXNoZWQ6Cj4gPgo+ID4gQWNrZWQtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gVGhhbmtzIGF0IGxlYXN0Lgo+Cj4gPgo+ ID4gQnV0IEkgdGhpbmsgd2UgZGVmaW5pdGVseSB3YW50IGEgZnVsbCBhY2sgZm9yIHRoZSB1YXBp IGZyb20gcmFkdi9hbnYgZ3V5cwo+ID4gKHBsdXMgdGhlIHVzZXJzcGFjZSBmb3IgZWl0aGVyIG9m IHRob3NlKS4KPiBEYXZlIGFuZCBCYXMgYXJlIHJpZ2h0IHBlb3BsZSwgcmlnaHQ/CgpGb3IgcmFk diB5ZXMsIGZvciBhbnYgd2Ugd2FudCBKYXNvbiBFa3N0cmFuZCBJIHRoaW5rLgotRGFuaWVsCgo+ Cj4gVGhhbmtzLAo+IERhdmlkCj4gPiAtRGFuaWVsCj4gPgo+ID4+IEBAIC00MSwxOSArNDYsMzYg QEAgc3RydWN0IGRybV9zeW5jb2JqIHsKPiA+PiAgICAgICAqLwo+ID4+ICAgICAgc3RydWN0IGty ZWYgcmVmY291bnQ7Cj4gPj4gICAgICAvKioKPiA+PiAtICAgICAqIEBmZW5jZToKPiA+PiAtICAg ICAqIE5VTEwgb3IgYSBwb2ludGVyIHRvIHRoZSBmZW5jZSBib3VuZCB0byB0aGlzIG9iamVjdC4K PiA+PiAtICAgICAqCj4gPj4gLSAgICAgKiBUaGlzIGZpZWxkIHNob3VsZCBub3QgYmUgdXNlZCBk aXJlY3RseS4gVXNlIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpCj4gPj4gLSAgICAgKiBhbmQgZHJt X3N5bmNvYmpfcmVwbGFjZV9mZW5jZSgpIGluc3RlYWQuCj4gPj4gKyAgICAgKiBAdHlwZTogaW5k aWNhdGUgc3luY29iaiB0eXBlCj4gPj4gKyAgICAgKi8KPiA+PiArICAgIGVudW0gZHJtX3N5bmNv YmpfdHlwZSB0eXBlOwo+ID4+ICsgICAgLyoqCj4gPj4gKyAgICAgKiBAd3E6IHdhaXQgc2lnbmFs IG9wZXJhdGlvbiB3b3JrIHF1ZXVlCj4gPj4gKyAgICAgKi8KPiA+PiArICAgIHdhaXRfcXVldWVf aGVhZF90ICAgICAgIHdxOwo+ID4+ICsgICAgLyoqCj4gPj4gKyAgICAgKiBAdGltZWxpbmVfY29u dGV4dDogZmVuY2UgY29udGV4dCB1c2VkIGJ5IHRpbWVsaW5lCj4gPj4gICAgICAgKi8KPiA+PiAt ICAgIHN0cnVjdCBkbWFfZmVuY2UgX19yY3UgKmZlbmNlOwo+ID4+ICsgICAgdTY0IHRpbWVsaW5l X2NvbnRleHQ7Cj4gPj4gICAgICAvKioKPiA+PiAtICAgICAqIEBjYl9saXN0OiBMaXN0IG9mIGNh bGxiYWNrcyB0byBjYWxsIHdoZW4gdGhlICZmZW5jZSBnZXRzIHJlcGxhY2VkLgo+ID4+ICsgICAg ICogQHRpbWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lIHZhbHVlLCB3aGljaCBpbmRpY2F0ZXMgcG9p bnQgaXMgc2lnbmFsZWQuCj4gPj4gICAgICAgKi8KPiA+PiArICAgIHU2NCB0aW1lbGluZTsKPiA+ PiArICAgIC8qKgo+ID4+ICsgICAgICogQHNpZ25hbF9wb2ludDogd2hpY2ggaW5kaWNhdGVzIHRo ZSBsYXRlc3Qgc2lnbmFsZXIgcG9pbnQuCj4gPj4gKyAgICAgKi8KPiA+PiArICAgIHU2NCBzaWdu YWxfcG9pbnQ7Cj4gPj4gKyAgICAvKioKPiA+PiArICAgICAqIEBzaWduYWxfcHRfbGlzdDogc2ln bmFsZXIgcG9pbnQgbGlzdC4KPiA+PiArICAgICAqLwo+ID4+ICsgICAgc3RydWN0IGxpc3RfaGVh ZCBzaWduYWxfcHRfbGlzdDsKPiA+PiArCj4gPj4gKyAgICAvKioKPiA+PiArICAgICAgICAgKiBA Y2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0cyBy ZXBsYWNlZC4KPiA+PiArICAgICAgICAgKi8KPiA+PiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2Jf bGlzdDsKPiA+PiAgICAgIC8qKgo+ID4+IC0gICAgICogQGxvY2s6IFByb3RlY3RzICZjYl9saXN0 IGFuZCB3cml0ZS1sb2NrcyAmZmVuY2UuCj4gPj4gKyAgICAgKiBAbG9jazogUHJvdGVjdHMgc3lu Y29iaiBsaXN0IGFuZCB3cml0ZS1sb2NrcyAmZmVuY2UuCj4gPj4gICAgICAgKi8KPiA+PiAgICAg IHNwaW5sb2NrX3QgbG9jazsKPiA+PiAgICAgIC8qKgo+ID4+IEBAIC02OCw3ICs5MCw3IEBAIHR5 cGVkZWYgdm9pZCAoKmRybV9zeW5jb2JqX2Z1bmNfdCkoc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLAo+ID4+ICAgLyoqCj4gPj4gICAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgLSBjYWxsYmFj ayBmb3IgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrCj4gPj4gICAgKiBAbm9kZTogdXNlZCBieSBk cm1fc3luY29iX2FkZF9jYWxsYmFjayB0byBhcHBlbmQgdGhpcyBzdHJ1Y3QgdG8KPiA+PiAtICog ICAgJmRybV9zeW5jb2JqLmNiX2xpc3QKPiA+PiArICogICAgICAgJmRybV9zeW5jb2JqLmNiX2xp c3QKPiA+PiAgICAqIEBmdW5jOiBkcm1fc3luY29ial9mdW5jX3QgdG8gY2FsbAo+ID4+ICAgICoK PiA+PiAgICAqIFRoaXMgc3RydWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYnkgZHJtX3N5bmNvYmpf YWRkX2NhbGxiYWNrLCBhZGRpdGlvbmFsCj4gPj4gQEAgLTEwNiwyOSArMTI4LDYgQEAgZHJtX3N5 bmNvYmpfcHV0KHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQo+ID4+ICAgICAga3JlZl9wdXQoJm9i ai0+cmVmY291bnQsIGRybV9zeW5jb2JqX2ZyZWUpOwo+ID4+ICAgfQo+ID4+Cj4gPj4gLS8qKgo+ ID4+IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVuY2UgdG8gYSBmZW5j ZSBpbiBhIHN5bmMgb2JqZWN0Cj4gPj4gLSAqIEBzeW5jb2JqOiBzeW5jIG9iamVjdC4KPiA+PiAt ICoKPiA+PiAtICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byAmZHJtX3N5 bmNvYmouZmVuY2UgY29udGFpbmVkIGluIEBvYmosCj4gPj4gLSAqIGlmIG5vdCBOVUxMLiBJdCBp cyBpbGxlZ2FsIHRvIGNhbGwgdGhpcyB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5j ZS4KPiA+PiAtICogTm8gbG9ja3MgcmVxdWlyZWQuCj4gPj4gLSAqCj4gPj4gLSAqIFJldHVybnM6 Cj4gPj4gLSAqIEVpdGhlciB0aGUgZmVuY2Ugb2YgQG9iaiBvciBOVUxMIGlmIHRoZXJlJ3Mgbm9u ZS4KPiA+PiAtICovCj4gPj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9mZW5jZSAqCj4gPj4g LWRybV9zeW5jb2JqX2ZlbmNlX2dldChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4gPj4g LXsKPiA+PiAtICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ID4+IC0KPiA+PiAtICAgIHJj dV9yZWFkX2xvY2soKTsKPiA+PiAtICAgIGZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgm c3luY29iai0+ZmVuY2UpOwo+ID4+IC0gICAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4gPj4gLQo+ID4+ IC0gICAgcmV0dXJuIGZlbmNlOwo+ID4+IC19Cj4gPj4gLQo+ID4+ICAgc3RydWN0IGRybV9zeW5j b2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgaGFuZGxlKTsKPiA+PiAgIHZv aWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmos IHU2NCBwb2ludCwKPiA+PiBAQCAtMTQyLDUgKzE0MSw3IEBAIGludCBkcm1fc3luY29ial9jcmVh dGUoc3RydWN0IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAo+ID4+ ICAgaW50IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZh dGUsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLCB1MzIgKmhhbmRsZSk7Cj4gPj4gICBpbnQgZHJtX3N5bmNvYmpfZ2V0X2ZkKHN0cnVjdCBk cm1fc3luY29iaiAqc3luY29iaiwgaW50ICpwX2ZkKTsKPiA+PiAraW50IGRybV9zeW5jb2JqX3Nl YXJjaF9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwgdTY0IGZs YWdzLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmZl bmNlKTsKPiA+Pgo+ID4+ICAgI2VuZGlmCj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCj4gPj4gaW5kZXggMzAwZjMzNjYzM2Yy Li5jZWJkYjI1NDFlYjcgMTAwNjQ0Cj4gPj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAo+ ID4+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKPiA+PiBAQCAtNzE3LDYgKzcxNyw3IEBA IHN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlIHsKPiA+PiAgIHN0cnVjdCBkcm1fc3luY29ial9jcmVh dGUgewo+ID4+ICAgICAgX191MzIgaGFuZGxlOwo+ID4+ICAgI2RlZmluZSBEUk1fU1lOQ09CSl9D UkVBVEVfU0lHTkFMRUQgKDEgPDwgMCkKPiA+PiArI2RlZmluZSBEUk1fU1lOQ09CSl9DUkVBVEVf VFlQRV9USU1FTElORSAoMSA8PCAxKQo+ID4+ICAgICAgX191MzIgZmxhZ3M7Cj4gPj4gICB9Owo+ ID4+Cj4gPj4gLS0KPiA+PiAyLjE3LjEKPiA+Pgo+CgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 Cg==