From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v9 2/5] x86/ioreq server: Add DMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Wed, 22 Mar 2017 18:12:53 +0800 Message-ID: <58D24E25.5010000@linux.intel.com> References: <1490064773-26751-1-git-send-email-yu.c.zhang@linux.intel.com> <1490064773-26751-3-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Tian, Kevin" , "xen-devel@lists.xen.org" Cc: "Nakajima, Jun" , George Dunlap , Andrew Cooper , Tim Deegan , Paul Durrant , "Lv, Zhiyuan" , Jan Beulich List-Id: xen-devel@lists.xenproject.org CgpPbiAzLzIyLzIwMTcgMzo0OSBQTSwgVGlhbiwgS2V2aW4gd3JvdGU6Cj4+IEZyb206IFl1IFpo YW5nIFttYWlsdG86eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb21dCj4+IFNlbnQ6IFR1ZXNkYXks IE1hcmNoIDIxLCAyMDE3IDEwOjUzIEFNCj4+Cj4+IEEgbmV3IERNT1AgLSBYRU5fRE1PUF9tYXBf bWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLCBpcyBhZGRlZCB0byBsZXQKPj4gb25lIGlvcmVxIHNl cnZlciBjbGFpbS9kaXNjbGFpbSBpdHMgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBoYW5kbGluZyBv ZiBndWVzdAo+PiBwYWdlcyB3aXRoIHAybSB0eXBlIHAybV9pb3JlcV9zZXJ2ZXIuIFVzZXJzIG9m IHRoaXMgRE1PUCBjYW4gc3BlY2lmeQo+PiB3aGljaCBraW5kIG9mIG9wZXJhdGlvbiBpcyBzdXBw b3NlZCB0byBiZSBlbXVsYXRlZCBpbiBhIHBhcmFtZXRlciBuYW1lZAo+PiBmbGFncy4gQ3VycmVu dGx5LCB0aGlzIERNT1Agb25seSBzdXBwb3J0IHRoZSBlbXVsYXRpb24gb2Ygd3JpdGUgb3BlcmF0 aW9ucy4KPj4gQW5kIGl0IGNhbiBiZSBmdXJ0aGVyIGV4dGVuZGVkIHRvIHN1cHBvcnQgdGhlIGVt dWxhdGlvbiBvZiByZWFkIG9uZXMgaWYgYW4KPj4gaW9yZXEgc2VydmVyIGhhcyBzdWNoIHJlcXVp cmVtZW50IGluIHRoZSBmdXR1cmUuCj4gcDJtX2lvcmVxX3NlcnZlciB3YXMgYWxyZWFkeSBpbnRy b2R1Y2VkIGJlZm9yZS4gRG8geW91IHdhbnQgdG8KPiBnaXZlIHNvbWUgYmFja2dyb3VuZCBob3cg Y3VycmVudCBzdGF0ZSBpcyBhcm91bmQgdGhhdCB0eXBlIHdoaWNoCj4gd2lsbCBiZSBoZWxwZnVs IGFib3V0IHB1cnBvc2Ugb2YgdGhpcyBwYXRjaD8KClNvcnJ5PyBJIHRob3VnaHQgdGhlIGJhY2tn cm91bmQgaXMgZGVzY3JpYmVkIGluIHRoZSBjb3ZlciBsZXR0ZXIuClByZXZpb3VzbHkgcDJtX2lv cmVxX3NlcnZlciBpcyBvbmx5IGZvciB3cml0ZS1wcm90ZWN0aW9uLCBhbmQgaXMgdHJhY2tlZCAK aW4gYW4gaW9yZXEgc2VydmVyJ3MKcmFuZ2VzZXQsIHRoaXMgcGF0Y2ggaXMgdG8gYmluZCB0aGUg cDJtIHR5cGUgd2l0aCBhbiBpb3JlcSBzZXJ2ZXIgZGlyZWN0bHkuCgo+PiBGb3Igbm93LCB3ZSBv bmx5IHN1cHBvcnQgb25lIGlvcmVxIHNlcnZlciBmb3IgdGhpcyBwMm0gdHlwZSwgc28gb25jZSBh bgo+PiBpb3JlcSBzZXJ2ZXIgaGFzIGNsYWltZWQgaXRzIG93bmVyc2hpcCwgc3Vic2VxdWVudCBj YWxscyBvZiB0aGUKPj4gWEVOX0RNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciB3aWxs IGZhaWwuIFVzZXJzIGNhbiBhbHNvCj4+IGRpc2NsYWltIHRoZSBvd25lcnNoaXAgb2YgZ3Vlc3Qg cmFtIHBhZ2VzIHdpdGggcDJtX2lvcmVxX3NlcnZlciwgYnkKPj4gdHJpZ2dlcmluZyB0aGlzIG5l dyBETU9QLCB3aXRoIGlvcmVxIHNlcnZlciBpZCBzZXQgdG8gdGhlIGN1cnJlbnQgb3duZXIncyBh bmQKPj4gZmxhZ3MgcGFyYW1ldGVyIHNldCB0byAwLgo+Pgo+PiBOb3RlIGJvdGggWEVOX0RNT1Bf bWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciBhbmQKPj4gcDJtX2lvcmVxX3NlcnZlciBhcmUg b25seSBzdXBwb3J0ZWQgZm9yIEhWTXMgd2l0aCBIQVAgZW5hYmxlZC4KPj4KPj4gQWxzbyBub3Rl IHRoYXQgb25seSBhZnRlciBvbmUgaW9yZXEgc2VydmVyIGNsYWltcyBpdHMgb3duZXJzaGlwIG9m Cj4+IHAybV9pb3JlcV9zZXJ2ZXIsIHdpbGwgdGhlIHAybSB0eXBlIGNoYW5nZSB0byBwMm1faW9y ZXFfc2VydmVyIGJlCj4+IGFsbG93ZWQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFu dCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFl1IFpoYW5nIDx5 dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4KPj4gQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4 ZW4ub3JnPgo+PiAtLS0KPj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPj4g Q2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4+IENjOiBQYXVs IER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgo+PiBDYzogR2VvcmdlIER1bmxhcCA8 Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+PiBDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFr YWppbWFAaW50ZWwuY29tPgo+PiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+ Cj4+IENjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KPj4KPj4gY2hhbmdlcyBpbiB2ODoKPj4g ICAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMgZnJvbSBKYW4gJiBQYXVsOiBjb21tZW50cyBjaGFu Z2VzIGluCj4+IGh2bWVtdWxfZG9faW8oKS4KPj4gICAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMg ZnJvbSBKYW46IHJlbW92ZSB0aGUgcmVkdW5kYW50IGNvZGUgd2hpY2gKPj4gd291bGQgb25seQo+ PiAgICAgIGJlIHVzZWZ1bCBmb3IgcmVhZCBlbXVsYXRpb25zLgo+PiAgICAtIEFjY29yZGluZyB0 byBjb21tZW50cyBmcm9tIEphbjogY2hhbmdlIGludGVyZmFjZSB3aGljaCBtYXBzIG1lbSB0eXBl Cj4+IHRvCj4+ICAgICAgaW9yZXEgc2VydmVyLCByZW1vdmVkIHVpbnQxNl90IHBhZCBhbmQgYWRk ZWQgYW4gdWludDY0X3Qgb3BhcXVlLgo+PiAgICAtIEFkZHJlc3Mgb3RoZXIgY29tbWVudHMgZnJv bSBKYW4sIGkuZS4gY29ycmVjdCByZXR1cm4gdmFsdWVzOyByZW1vdmUgc3RyYXkKPj4gICAgICBj YXN0Lgo+Pgo+PiBjaGFuZ2VzIGluIHY3Ogo+PiAgICAtIFVzZSBuZXcgaW9yZXEgc2VydmVyIGlu dGVyZmFjZSAtCj4+IFhFTl9ETU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIuCj4+ICAg IC0gQWNjb3JkaW5nIHRvIGNvbW1lbnRzIGZyb20gR2VvcmdlOiByZW1vdmVkIGRvbWFpbl9wYXVz ZS91bnBhdXNlKCkKPj4gaW4KPj4gICAgICBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZl cigpLCBiZWNhdXNlIGl0J3MgdG9vIGV4cGVuc2l2ZSwKPj4gICAgICBhbmQgd2UgY2FuIGF2b2lk IHRoZToKPj4gICAgICBhPiBkZWFkbG9jayBpc3N1ZSBleGlzdGVkIGluIHY2IHBhdGNoLCBiZXR3 ZWVuIHAybSBsb2NrIGFuZCBpb3JlcSBzZXJ2ZXIKPj4gICAgICAgICBsb2NrIGJ5IHVzaW5nIHRo ZXNlIGxvY2tzIGluIHRoZSBzYW1lIG9yZGVyIC0gc29sdmVkIGluIHBhdGNoIDQ7Cj4+ICAgICAg Yj4gZm9yIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdm0gZXhpdCBhbmQgaW9yZXEgc2VydmVyIHVu YmluZGluZywgd2UgY2FuCj4+ICAgICAgICAganVzdCByZXRyeSB0aGlzIGluc3RydWN0aW9uLgo+ PiAgICAtIEFjY29yZGluZyB0byBjb21tZW50cyBmcm9tIEphbiBhbmQgR2VvcmdlOiBjb250aW51 ZSB0byBjbGFyaWZ5IGxvZ2ljIGluCj4+ICAgICAgaHZtZW11bF9kb19pbygpLgo+PiAgICAtIEFj Y29yZGluZyB0byBjb21tZW50cyBmcm9tIEphbjogY2xhcmlmeSBjb21tZW50IGluCj4+IHAybV9z ZXRfaW9yZXFfc2VydmVyKCkuCj4+Cj4+IGNoYW5nZXMgaW4gdjY6Cj4+ICAgIC0gQ2xhcmlmeSBs b2dpYyBpbiBodm1lbXVsX2RvX2lvKCkuCj4+ICAgIC0gVXNlIHJlY3Vyc2l2ZSBsb2NrIGZvciBp b3JlcSBzZXJ2ZXIgbG9jay4KPj4gICAgLSBSZW1vdmUgZGVidWcgcHJpbnQgd2hlbiBtYXBwaW5n IGlvcmVxIHNlcnZlci4KPj4gICAgLSBDbGFyaWZ5IGNvZGUgaW4gZXB0X3AybV90eXBlX3RvX2Zs YWdzKCkgZm9yIGNvbnNpc3RlbmN5Lgo+PiAgICAtIFJlbW92ZSBkZWZpbml0aW9uIG9mIFAyTV9J T1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTLgo+PiAgICAtIEFkZCBjb21tZW50cyBmb3IgSFZNTUVN X2lvcmVxX3NlcnZlciB0byBub3RlIG9ubHkgY2hhbmdlcwo+PiAgICAgIHRvL2Zyb20gSFZNTUVN X3JhbV9ydyBhcmUgcGVybWl0dGVkLgo+PiAgICAtIEFkZCBkb21haW5fcGF1c2UvdW5wYXVzZSgp IGluIGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKCkKPj4gICAgICB0byBhdm9pZCB0 aGUgcmFjZSBjb25kaXRpb24gd2hlbiBhIHZtIGV4aXQgaGFwcGVucyBvbiBhIHdyaXRlLQo+PiAg ICAgIHByb3RlY3RlZCBwYWdlLCBqdXN0IHRvIGZpbmQgdGhlIGlvcmVxIHNlcnZlciBoYXMgYmVl biB1bm1hcHBlZAo+PiAgICAgIGFscmVhZHkuCj4+ICAgIC0gSW50cm9kdWNlIGEgc2VwZXJhdGUg cGF0Y2ggdG8gZGVsYXkgdGhlIHJlbGVhc2Ugb2YgcDJtCj4+ICAgICAgbG9jayB0byBhdm9pZCB0 aGUgcmFjZSBjb25kaXRpb24uCj4+ICAgIC0gSW50cm9kdWNlIGEgc2VwZXJhdGUgcGF0Y2ggdG8g aGFuZGxlIHRoZSByZWFkLW1vZGlmeS13cml0ZQo+PiAgICAgIG9wZXJhdGlvbnMgb24gYSB3cml0 ZSBwcm90ZWN0ZWQgcGFnZS4KPj4KPj4gY2hhbmdlcyBpbiB2NToKPj4gICAgLSBTaW1wbGlmeSBs b2dpYyBpbiBodm1lbXVsX2RvX2lvKCkuCj4+ICAgIC0gVXNlIG5hdHVhbCB3aWR0aCB0eXBlcyBp bnN0ZWFkIG9mIGZpeGVkIHdpZHRoIHR5cGVzIHdoZW4gcG9zc2libGUuCj4+ICAgIC0gRG8gbm90 IGdyYW50IGV4ZWN1dGFibGUgcGVybWlzc2lvbiBmb3IgcDJtX2lvcmVxX3NlcnZlciBlbnRyaWVz Lgo+PiAgICAtIENsYXJpZnkgY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdlLgo+PiAgICAtIElu dHJvZHVjZSBhIHNlcGVyYXRlIHBhdGNoIHRvIHJlY2FsY3VsYXRlIHRoZSBwMm0gdHlwZXMgYWZ0 ZXIKPj4gICAgICB0aGUgaW9yZXEgc2VydmVyIHVubWFwcyB0aGUgcDJtX2lvcmVxX3NlcnZlci4K Pj4KPj4gY2hhbmdlcyBpbiB2NDoKPj4gICAgLSBBY2NvcmRpbmcgdG8gUGF1bCdzIGFkdmljZSwg YWRkIGNvbW1lbnRzIGFyb3VuZCB0aGUgZGVmaW5pdGlvbgo+PiAgICAgIG9mIEhWTU1FTV9pb3Jl X3NlcnZlciBpbiBodm1fb3AuaC4KPj4gICAgLSBBY2NvcmRpbmcgdG8gV2VpIExpdSdzIGNvbW1l bnRzLCBjaGFuZ2UgdGhlIGZvcm1hdCBvZiB0aGUgY29tbWl0Cj4+ICAgICAgbWVzc2FnZS4KPj4K Pj4gY2hhbmdlcyBpbiB2MzoKPj4gICAgLSBPbmx5IHN1cHBvcnQgd3JpdGUgZW11bGF0aW9uIGlu IHRoaXMgcGF0Y2g7Cj4+ICAgIC0gUmVtb3ZlIHRoZSBjb2RlIHRvIGhhbmRsZSByYWNlIGNvbmRp dGlvbiBpbiBodm1lbXVsX2RvX2lvKCksCj4+ICAgIC0gTm8gbmVlZCB0byByZXNldCB0aGUgcDJt IHR5cGUgYWZ0ZXIgYW4gaW9yZXEgc2VydmVyIGhhcyBkaXNjbGFpbWVkCj4+ICAgICAgaXRzIG93 bmVyc2hpcCBvZiBwMm1faW9yZXFfc2VydmVyOwo+PiAgICAtIE9ubHkgYWxsb3cgcDJtIHR5cGUg Y2hhbmdlIHRvIHAybV9pb3JlcV9zZXJ2ZXIgYWZ0ZXIgYW4gaW9yZXEKPj4gICAgICBzZXJ2ZXIg aGFzIGNsYWltZWQgaXRzIG93bmVyc2hpcCBvZiBwMm1faW9yZXFfc2VydmVyOwo+PiAgICAtIE9u bHkgYWxsb3cgcDJtIHR5cGUgY2hhbmdlIHRvIHAybV9pb3JlcV9zZXJ2ZXIgZnJvbSBwYWdlcyB3 aXRoIHR5cGUKPj4gICAgICBwMm1fcmFtX3J3LCBhbmQgdmljZSB2ZXJzYTsKPj4gICAgLSBIVk1P UF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIGludGVyZmFjZSBjaGFuZ2UgLSB1c2UgdWlu dDE2LAo+PiAgICAgIGluc3RlYWQgb2YgZW51bSB0byBzcGVjaWZ5IHRoZSBtZW1vcnkgdHlwZTsK Pj4gICAgLSBGdW5jdGlvbiBwcm90b3R5cGUgY2hhbmdlIHRvIHAybV9nZXRfaW9yZXFfc2VydmVy KCk7Cj4+ICAgIC0gQ29kaW5nIHN0eWxlIGNoYW5nZXM7Cj4+ICAgIC0gQ29tbWl0IG1lc3NhZ2Ug Y2hhbmdlczsKPj4gICAgLSBBZGQgVGltJ3MgQWNrZWQtYnkuCj4+Cj4+IGNoYW5nZXMgaW4gdjI6 Cj4+ICAgIC0gT25seSBzdXBwb3J0IEhBUCBlbmFibGVkIEhWTXM7Cj4+ICAgIC0gUmVwbGFjZSBw Mm1fbWVtX3R5cGVfY2hhbmdlZCgpIHdpdGggcDJtX2NoYW5nZV9lbnRyeV90eXBlX2dsb2JhbCgp Cj4+ICAgICAgdG8gcmVzZXQgdGhlIHAybSB0eXBlLCB3aGVuIGFuIGlvcmVxIHNlcnZlciB0cmll cyB0byBjbGFpbS9kaXNjbGFpbQo+PiAgICAgIGl0cyBvd25lcnNoaXAgb2YgcDJtX2lvcmVxX3Nl cnZlcjsKPj4gICAgLSBDb21tZW50cyBjaGFuZ2VzLgo+PiAtLS0KPj4gICB4ZW4vYXJjaC94ODYv aHZtL2RtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKy0tCj4+ICAgeGVuL2Fy Y2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgfCA2NQo+PiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLQo+PiAgIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgIHwgMzgg KysrKysrKysrKysrKysrKysrKysrCj4+ICAgeGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFw LmMgfCAgMiArLQo+PiAgIHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgIHwgIDggKysr Ky0KPj4gICB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAgICB8IDE5ICsrKysrKystLS0t Cj4+ICAgeGVuL2FyY2gveDg2L21tL3AybS5jICAgICAgICAgICAgfCA3NAo+PiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgeGVuL2FyY2gveDg2L21tL3NoYWRv dy9tdWx0aS5jICAgfCAgMyArLQo+PiAgIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvcmVxLmgg IHwgIDIgKysKPj4gICB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAgICAgICB8IDI2ICsrKysr KysrKysrKy0tCj4+ICAgeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oICAgfCAyOCArKysr KysrKysrKysrKysKPj4gICB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oICB8ICA4ICsr KystCj4+ICAgMTIgZmlsZXMgY2hhbmdlZCwgMjkwIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9kbS5jIGIveGVuL2FyY2gv eDg2L2h2bS9kbS5jIGluZGV4Cj4+IDMzM2M4ODQuLjNmOTQ4NGQgMTAwNjQ0Cj4+IC0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vZG0uYwo+PiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2RtLmMKPj4gQEAg LTE3Myw5ICsxNzMsMTQgQEAgc3RhdGljIGludCBtb2RpZmllZF9tZW1vcnkoc3RydWN0IGRvbWFp biAqZCwKPj4KPj4gICBzdGF0aWMgYm9vbCBhbGxvd19wMm1fdHlwZV9jaGFuZ2UocDJtX3R5cGVf dCBvbGQsIHAybV90eXBlX3QgbmV3KSAgewo+PiArICAgIGlmICggbmV3ID09IHAybV9pb3JlcV9z ZXJ2ZXIgKQo+PiArICAgICAgICByZXR1cm4gb2xkID09IHAybV9yYW1fcnc7Cj4+ICsKPj4gKyAg ICBpZiAoIG9sZCA9PSBwMm1faW9yZXFfc2VydmVyICkKPj4gKyAgICAgICAgcmV0dXJuIG5ldyA9 PSBwMm1fcmFtX3J3Owo+PiArCj4+ICAgICAgIHJldHVybiBwMm1faXNfcmFtKG9sZCkgfHwKPj4g LSAgICAgICAgICAgKHAybV9pc19ob2xlKG9sZCkgJiYgbmV3ID09IHAybV9tbWlvX2RtKSB8fAo+ PiAtICAgICAgICAgICAob2xkID09IHAybV9pb3JlcV9zZXJ2ZXIgJiYgbmV3ID09IHAybV9yYW1f cncpOwo+PiArICAgICAgICAgICAocDJtX2lzX2hvbGUob2xkKSAmJiBuZXcgPT0gcDJtX21taW9f ZG0pOwo+PiAgIH0KPj4KPj4gICBzdGF0aWMgaW50IHNldF9tZW1fdHlwZShzdHJ1Y3QgZG9tYWlu ICpkLCBAQCAtMjAyLDYgKzIwNywxOSBAQCBzdGF0aWMgaW50Cj4+IHNldF9tZW1fdHlwZShzdHJ1 Y3QgZG9tYWluICpkLAo+PiAgICAgICAgICAgIHVubGlrZWx5KGRhdGEtPm1lbV90eXBlID09IEhW TU1FTV91bnVzZWQpICkKPj4gICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pgo+PiArICAgIGlm ICggZGF0YS0+bWVtX3R5cGUgID09IEhWTU1FTV9pb3JlcV9zZXJ2ZXIgKQo+PiArICAgIHsKPj4g KyAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwo+PiArCj4+ICsgICAgICAgIC8qIEhWTU1FTV9p b3JlcV9zZXJ2ZXIgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEhBUCBlbmFibGVkIGh2bS4gKi8KPj4g KyAgICAgICAgaWYgKCAhaGFwX2VuYWJsZWQoZCkgKQo+PiArICAgICAgICAgICAgcmV0dXJuIC1F T1BOT1RTVVBQOwo+PiArCj4+ICsgICAgICAgIC8qIERvIG5vdCBjaGFuZ2UgdG8gSFZNTUVNX2lv cmVxX3NlcnZlciBpZiBubyBpb3JlcSBzZXJ2ZXIgbWFwcGVkLgo+PiAqLwo+PiArICAgICAgICBp ZiAoICFwMm1fZ2V0X2lvcmVxX3NlcnZlcihkLCAmZmxhZ3MpICkKPj4gKyAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+PiArICAgIH0KPj4gKwo+PiAgICAgICB3aGlsZSAoIGl0ZXIgPCBkYXRh LT5uciApCj4+ICAgICAgIHsKPj4gICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGZuID0gZGF0YS0+ Zmlyc3RfcGZuICsgaXRlcjsgQEAgLTM2NSw2ICszODMsMjEgQEAKPj4gc3RhdGljIGludCBkbV9v cChkb21pZF90IGRvbWlkLAo+PiAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgIH0KPj4KPj4gKyAg ICBjYXNlIFhFTl9ETU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXI6Cj4+ICsgICAgewo+ PiArICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX21hcF9tZW1fdHlwZV90b19pb3JlcV9z ZXJ2ZXIgKmRhdGEgPQo+PiArICAgICAgICAgICAgJm9wLnUubWFwX21lbV90eXBlX3RvX2lvcmVx X3NlcnZlcjsKPj4gKwo+PiArICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+PiArICAgICAgICAv KiBPbmx5IHN1cHBvcnQgZm9yIEhBUCBlbmFibGVkIGh2bS4gKi8KPiBJc24ndCBpdCBvYnZpb3Vz IGZyb20gY29kZT8KClllcy4gQ2FuIGJlIHJlbW92ZWQuCj4+ICsgICAgICAgIGlmICggIWhhcF9l bmFibGVkKGQpICkKPj4gKyAgICAgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgICAgIHJjID0g aHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoZCwgZGF0YS0+aWQsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+dHlwZSwgZGF0YS0+ ZmxhZ3MpOwo+PiArICAgICAgICBicmVhazsKPj4gKyAgICB9Cj4+ICsKPj4gICAgICAgY2FzZSBY RU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOgo+PiAgICAgICB7Cj4+ICAgICAgICAgICBj b25zdCBzdHJ1Y3QgeGVuX2RtX29wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgKmRhdGEgPSBkaWZm IC0tZ2l0Cj4+IGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYvaHZt L2VtdWxhdGUuYyBpbmRleAo+PiBmMzZkN2M5Li4zNzEzOWU2IDEwMDY0NAo+PiAtLS0gYS94ZW4v YXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+PiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUu Ywo+PiBAQCAtOTksNiArOTksNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZG9faW8oCj4+ICAgICAg IHVpbnQ4X3QgZGlyLCBib29sX3QgZGYsIGJvb2xfdCBkYXRhX2lzX2FkZHIsIHVpbnRwdHJfdCBk YXRhKSAgewo+PiAgICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7Cj4+ICsgICAgc3Ry dWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyLT5kb21haW47Cj4+ICAgICAgIHN0cnVjdCBodm1fdmNw dV9pbyAqdmlvID0gJmN1cnItPmFyY2guaHZtX3ZjcHUuaHZtX2lvOwo+PiAgICAgICBpb3JlcV90 IHAgPSB7Cj4+ICAgICAgICAgICAudHlwZSA9IGlzX21taW8gPyBJT1JFUV9UWVBFX0NPUFkgOiBJ T1JFUV9UWVBFX1BJTywgQEAgLTE0MCw3Cj4+ICsxNDEsNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxf ZG9faW8oCj4+ICAgICAgICAgICAgICAgIChwLmRpciAhPSBkaXIpIHx8Cj4+ICAgICAgICAgICAg ICAgIChwLmRmICE9IGRmKSB8fAo+PiAgICAgICAgICAgICAgICAocC5kYXRhX2lzX3B0ciAhPSBk YXRhX2lzX2FkZHIpICkKPj4gLSAgICAgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4p Owo+PiArICAgICAgICAgICAgZG9tYWluX2NyYXNoKGN1cnJkKTsKPj4KPj4gICAgICAgICAgIGlm ICggZGF0YV9pc19hZGRyICkKPj4gICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRM RUFCTEU7IEBAIC0xNzcsOCArMTc4LDY0IEBAIHN0YXRpYyBpbnQKPj4gaHZtZW11bF9kb19pbygK Pj4gICAgICAgICAgIGJyZWFrOwo+PiAgICAgICBjYXNlIFg4NkVNVUxfVU5IQU5ETEVBQkxFOgo+ PiAgICAgICB7Cj4+IC0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0KPj4gLSAg ICAgICAgICAgIGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnItPmRvbWFpbiwgJnApOwo+PiAr ICAgICAgICAvKgo+PiArICAgICAgICAgKiBYZW4gaXNuJ3QgZW11bGF0aW5nIHRoZSBpbnN0cnVj dGlvbiBpbnRlcm5hbGx5LCBzbyBzZWUgaWYKPj4gKyAgICAgICAgICogdGhlcmUncyBhbiBpb3Jl cSBzZXJ2ZXIgdGhhdCBjYW4gaGFuZGxlIGl0LiBSdWxlczoKPj4gKyAgICAgICAgICoKPj4gKyAg ICAgICAgICogLSBQSU8gYW5kICJub3JtYWwiIE1NSU8gcnVuIHRocm91Z2ggaHZtX3NlbGVjdF9p b3JlcV9zZXJ2ZXIoKQo+IHdoeSBoaWdobGlnaHRzICJub3JtYWwiIGhlcmU/IFdoYXQgZG9lcyBh ICJhYm5vcm1hbCIgTU1JTwo+IG1lYW4gaGVyZT8gcDJtX2lvcmVxX3NlcnZlciB0eXBlPwoKWWVz LCBpdCdzIGp1c3QgdG8gZGlmZmVyZW50aWF0ZSB0aGUgTU1JTyBhbmQgdGhlIHAybV9pb3JlcV9z ZXJ2ZXIgCmFkZHJlc3MsICBjb3BpZWQgZnJvbSBHZW9yZ2UncyBwcmV2aW91cyBjb21tZW50cy4K V2UgY2FuIHJlbW92ZSB0aGUgIm5vcm1hbCIgaGVyZS4KCgo+PiArICAgICAgICAgKiB0byBjaG9v c2UgdGhlIGlvcmVxIHNlcnZlciBieSByYW5nZS4gSWYgbm8gc2VydmVyIGlzIGZvdW5kLAo+PiAr ICAgICAgICAgKiB0aGUgYWNjZXNzIGlzIGlnbm9yZWQuCj4+ICsgICAgICAgICAqCj4+ICsgICAg ICAgICAqIC0gcDJtX2lvcmVxX3NlcnZlciBhY2Nlc3NlcyBhcmUgaGFuZGxlZCBieSB0aGUgZGVz aWduYXRlZAo+PiArICAgICAgICAgKiBpb3JlcV9zZXJ2ZXIgZm9yIHRoZSBkb21haW4sIGJ1dCB0 aGVyZSBhcmUgc29tZSBjb3JuZXIKPj4gKyAgICAgICAgICogY2FzZXM6Cj4gc2luY2Ugb25seSBv bmUgY2FzZSBpcyBsaXN0ZWQsICJ0aGVyZSBpcyBhIGNvcm5lciBjYXNlIgoKQW5vdGhlciBjb3Ju ZXIgY2FzZSBpcyBpbiBwYXRjaCAzLzUgLSBoYW5kbGluZyB0aGUgcmVhZC1tb2RpZnktd3JpdGUg CnNpdHVhdGlvbnMuCk1heWJlIHRoZSBjb3JyZWN0IHRoaW5nIGlzIHRvIHVzZSB3b3JkICJjYXNl IiBpbiB0aGlzIHBhdGNoIGFuZCBjaGFuZ2UgCml0IHRvICJjYXNlcyIgaW4gbmV4dCBwYXRjaC4g Oi0pCgo+PiArICAgICAgICAgKgo+PiArICAgICAgICAgKiAgIC0gSWYgdGhlIGRvbWFpbiBpb3Jl cV9zZXJ2ZXIgaXMgTlVMTCwgYXNzdW1lIHRoZXJlIGlzIGEKPj4gKyAgICAgICAgICogICByYWNl IGJldHdlZW4gdGhlIHVuYmluZGluZyBvZiBpb3JlcSBzZXJ2ZXIgYW5kIGd1ZXN0IGZhdWx0Cj4+ ICsgICAgICAgICAqICAgc28gcmUtdHJ5IHRoZSBpbnN0cnVjdGlvbi4KPj4gKyAgICAgICAgICov Cj4+ICsgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0gTlVMTDsKPj4gKyAgICAg ICAgcDJtX3R5cGVfdCBwMm10ID0gcDJtX2ludmFsaWQ7Cj4+ICsKPj4gKyAgICAgICAgaWYgKCBp c19tbWlvICkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnbWZu ID0gcGFkZHJfdG9fcGZuKGFkZHIpOwo+PiArCj4+ICsgICAgICAgICAgICBnZXRfZ2ZuX3F1ZXJ5 X3VubG9ja2VkKGN1cnJkLCBnbWZuLCAmcDJtdCk7Cj4+ICsKPj4gKyAgICAgICAgICAgIGlmICgg cDJtdCA9PSBwMm1faW9yZXFfc2VydmVyICkKPj4gKyAgICAgICAgICAgIHsKPj4gKyAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAvKgo+ PiArICAgICAgICAgICAgICAgICAqIFZhbHVlIG9mIHMgY291bGQgYmUgc3RhbGUsIHdoZW4gd2Ug bG9zdCBhIHJhY2UKPiBiZXR0ZXIgZGVzY3JpYmUgaXQgaW4gaGlnaGVyIGxldmVsLCBlLmcuIGp1 c3QgIm5vIGlvcmVxIHNlcnZlciBpcwo+IGZvdW5kIi4KPgo+IHdoYXQncyB0aGUgbWVhbmluZyBv ZiAibG9zdCBhIHJhY2UiPyBzaG91bGRuJ3QgaXQgbWVhbgo+ICJsaWtlbHkgd2Ugc3VmZmVyIGZy b20gYSByYWNlIHdpdGguLi4iPwo+Cj4+ICsgICAgICAgICAgICAgICAgICogd2l0aCBkbV9vcCB3 aGljaCB1bm1hcHMgcDJtX2lvcmVxX3NlcnZlciBmcm9tIHRoZQo+PiArICAgICAgICAgICAgICAg ICAqIGlvcmVxIHNlcnZlci4gWWV0IHRoZXJlJ3Mgbm8gY2hlYXAgd2F5IHRvIGF2b2lkCj4gYWdh aW4sIG5vdCB0YWxraW5nIGFib3V0IHNwZWNpZmljIGNvZGUsIGZvY3VzIG9uIHRoZSBvcGVyYXRp b24sCj4gZS5nLiAicmFjZSB3aXRoIGFuIHVubWFwIG9wZXJhdGlvbiBvbiB0aGUgaW9yZXEgc2Vy dmVyIgo+Cj4+ICsgICAgICAgICAgICAgICAgICogdGhpcywgc28gZGV2aWNlIG1vZGVsIG5lZWQg dG8gZG8gdGhlIGNoZWNrLgo+PiArICAgICAgICAgICAgICAgICAqLwo+IEhvdyBpcyBhYm92ZSBj b21tZW50IHJlbGF0ZWQgdG8gYmVsb3cgbGluZT8KCldlbGwsIHRoZSAncycgcmV0dXJuZWQgYnkg cDJtX2dldF9pb3JlcV9zZXJ2ZXIoKSBjYW4gYmUgc3RhbGUgLSBpZiB0aGUgCmlvcmVxIHNlcnZl ciBpcyB1bm1hcHBlZAphZnRlciBwMm1fZ2V0X2lvcmVxX3NlcnZlcigpIHJldHVybnMuIEN1cnJl bnQgcmFuZ2VzZXQgY29kZSBhbHNvIGhhcyAKc3VjaCBpc3N1ZSBpZiB0aGUgUElPL01NSU8KaXMg cmVtb3ZlZCBmcm9tIHRoZSByYW5nZXNldCBvZiB0aGUgaW9yZXEgc2VydmVyIGFmdGVyIApodm1f c2VsZWN0X2lvcmVxX3NlcnZlcigpIHJldHVybnMuCgpTaW5jZSB1c2luZyBzcGlubG9jayBvciBk b21haW5fcGF1c2UvdW5wYXVzZSBpcyB0b28gaGVhdnkgd2VpZ2h0ZWQsIHdlIApzdWdnZXN0IHRo ZSBkZXZpY2UKbW9kZWwgc2lkZSBjaGVjayB3aGV0aGVyIHRoZSByZWNlaXZlZCBpb3JlcSBpcyBh IHZhbGlkIG9uZS4KCkFib3ZlIGNvbW1lbnRzIGFyZSBhZGRlZCwgYWNjb3JkaW5nIHRvIEphbiAm IFBhdWwncyBzdWdnZXN0aW9uIGluIHY3LCB0byAKbGV0IGRldmVsb3BlciBrbm93CndlIGRvIG5v dCBncmFudGVlIHRoZSB2YWxpZGl0eSBvZiAncycgcmV0dXJuZWQgYnkgCnAybV9nZXRfaW9yZXFf c2VydmVyL2h2bV9zZWxlY3RfaW9yZXFfc2VydmVyKCkuCgoiVmFsdWUgb2YgcyBjb3VsZCBiZSBz dGFsZSwgd2hlbiB3ZSBsb3N0IGEgcmFjZSB3aXRoLi4uIiBpcyBub3QgZm9yIHMgCmJlaW5nIE5V TEwsIGl0J3MgYWJvdXQgcyBiZWluZwpub3QgdmFsaWQuIEZvciBhIE5VTEwgcmV0dXJuZWQsIGl0 IGlzLi4uCgo+Cj4+ICsgICAgICAgICAgICAgICAgcyA9IHAybV9nZXRfaW9yZXFfc2VydmVyKGN1 cnJkLCAmZmxhZ3MpOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgLyoKPj4gKyAgICAgICAgICAg ICAgICAgKiBJZiBwMm10IGlzIGlvcmVxX3NlcnZlciBidXQgaW9yZXFfc2VydmVyIGlzIE5VTEws Cj4gcDJtdCBpcyBkZWZpbml0ZWx5IGlvcmVxX3NlcnZlciB3aXRoaW4gdGhpcyBpZiBjb25kaXRp b24uCj4KPj4gKyAgICAgICAgICAgICAgICAgKiB3ZSBwcm9iYWJseSBsb3N0IGEgcmFjZSB3aXRo IHVuYmluZGluZyBvZiBpb3JlcQo+PiArICAgICAgICAgICAgICAgICAqIHNlcnZlciwganVzdCBy ZXRyeSB0aGUgYWNjZXNzLgo+PiArICAgICAgICAgICAgICAgICAqLwo+IGxvb2tzIHJlZHVuZGFu dCB0byBlYXJsaWVyIGNvbW1lbnQuIE9yIGVhcmxpZXIgb25lIHNob3VsZAo+IGJlIGp1c3QgcmVt b3ZlZD8KCi4uLiBkZXNjcmliZWQgaGVyZSwgdG8ganVzdCByZXRyeSB0aGUgYWNjZXNzLgoKPj4g KyAgICAgICAgICAgICAgICBpZiAoIHMgPT0gTlVMTCApCj4+ICsgICAgICAgICAgICAgICAgewo+ PiArICAgICAgICAgICAgICAgICAgICByYyA9IFg4NkVNVUxfUkVUUlk7Cj4+ICsgICAgICAgICAg ICAgICAgICAgIHZpby0+aW9fcmVxLnN0YXRlID0gU1RBVEVfSU9SRVFfTk9ORTsKPj4gKyAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAg ICAgfQo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgLyoKPj4gKyAgICAgICAgICogVmFs dWUgb2YgcyBjb3VsZCBiZSBzdGFsZSwgd2hlbiB3ZSBsb3N0IGEgcmFjZSB3aXRoIGRtX29wCj4+ ICsgICAgICAgICAqIHdoaWNoIHVubWFwcyB0aGlzIFBJTy9NTUlPIGFkZHJlc3MgZnJvbSB0aGUg aW9yZXEgc2VydmVyLgo+PiArICAgICAgICAgKiBUaGUgZGV2aWNlIG1vZGVsIHNpZGUgbmVlZCB0 byBkbyB0aGUgY2hlY2suCj4+ICsgICAgICAgICAqLwo+IGFub3RoZXIgZHVwbGljYXRlZCBjb21t ZW50LiBiZWxvdyBjb2RlIGlzIGFjdHVhbGx5IGZvciAnbm9ybWFsJwo+IE1NSU8gY2FzZS4uLgoK VGhpcyBpcyBmb3IgYW5vdGhlciBwb3NzaWJsZSBzaXR1YXRpb24gd2hlbiAncycgcmV0dXJuZWQg YnkgCmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKCkKYmVjb21lcyBzdGFsZSBsYXRlciwgd2hlbiB0 aGUgUElPL01NSU8gaXMgcmVtb3ZlZCBmcm9tIHRoZSByYW5nZXNldC4KCkxvZ2ljIGluIHRoaXMg aHZtZW11bF9kb19pbygpIGhhcyBhbHdheXMgYmVlbiBhIGJpdCBtaXhlZC4gSSBtZWFuLCBtYW55 IApjb3JuZXIgY2FzZXMKYW5kIHJhY2UgY29uZGl0aW9uczoKICAtIGJldHdlZW4gdGhlIG1hcHBp bmcvdW5tYXBwaW5nIG9mIFBJTy9NTUlPIGZyb20gcmFuZ2VzZXQKICAtIGJldHdlZW4gbWFwcGlu Zy91bm1hcHBpbmcgb2YgaW9yZXEgc2VydmVyIGZyb20gcDJtX2lvcmVxX3NlcnZlcgpJIHRyaWVk IHRvIGdpdmUgbXVjaCBjb21tZW50cyBhcyBJIGNhbiB3aGVuIHRoaXMgcGF0Y2hzZXQgZXZvbHZl cywgeWV0IAp0byBmaW5kIEkganVzdAppbnRyb2R1Y2VkIG1vcmUgY29uZnVzaW9uLi4uCgpBbnkg c3VnZ2VzdGlvbnM/Cgo+PiArICAgICAgICBpZiAoICFzICkKPj4gKyAgICAgICAgICAgIHMgPSBo dm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyZCwgJnApOwo+Pgo+PiAgICAgICAgICAgLyogSWYg dGhlcmUgaXMgbm8gc3VpdGFibGUgYmFja2luZyBETSwganVzdCBpZ25vcmUgYWNjZXNzZXMgKi8K Pj4gICAgICAgICAgIGlmICggIXMgKQo+PiBAQCAtMTg5LDcgKzI0Niw3IEBAIHN0YXRpYyBpbnQg aHZtZW11bF9kb19pbygKPj4gICAgICAgICAgIGVsc2UKPj4gICAgICAgICAgIHsKPj4gICAgICAg ICAgICAgICByYyA9IGh2bV9zZW5kX2lvcmVxKHMsICZwLCAwKTsKPj4gLSAgICAgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9SRVRSWSB8fCBjdXJyLT5kb21haW4tPmlzX3NodXR0aW5nX2Rvd24g KQo+PiArICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX1JFVFJZIHx8IGN1cnJkLT5pc19z aHV0dGluZ19kb3duICkKPj4gICAgICAgICAgICAgICAgICAgdmlvLT5pb19yZXEuc3RhdGUgPSBT VEFURV9JT1JFUV9OT05FOwo+PiAgICAgICAgICAgICAgIGVsc2UgaWYgKCBkYXRhX2lzX2FkZHIg KQo+PiAgICAgICAgICAgICAgICAgICByYyA9IFg4NkVNVUxfT0tBWTsKPj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBpbmRl eAo+PiBhZDJlZGFkLi43NDY3OTlmIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lv cmVxLmMKPj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4+IEBAIC03NTMsNiArNzUz LDggQEAgaW50IGh2bV9kZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAo+PiBp b3NlcnZpZF90IGlkKQo+Pgo+PiAgICAgICAgICAgZG9tYWluX3BhdXNlKGQpOwo+Pgo+PiArICAg ICAgICBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoZCwgcyk7Cj4+ICsKPj4gICAgICAgICAgIGh2 bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzLCAwKTsKPj4KPj4gICAgICAgICAgIGxpc3RfZGVsKCZz LT5saXN0X2VudHJ5KTsKPj4gQEAgLTkxNCw2ICs5MTYsNDIgQEAgaW50Cj4+IGh2bV91bm1hcF9p b19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlk LAo+PiAgICAgICByZXR1cm4gcmM7Cj4+ICAgfQo+Pgo+PiAraW50IGh2bV9tYXBfbWVtX3R5cGVf dG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDMyX3Qg ZmxhZ3MpIHsKPj4gKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKPj4gKyAgICBpbnQg cmM7Cj4+ICsKPj4gKyAgICAvKiBGb3Igbm93LCBvbmx5IEhWTU1FTV9pb3JlcV9zZXJ2ZXIgaXMg c3VwcG9ydGVkLiAqLwo+IG9idmlvdXMgY29tbWVudAoKSUlSQywgdGhpcyBjb21tZW50KGFuZCB0 aGUgYmVsb3cgb25lKSBpcyBhbm90aGVyIGNoYW5nZXMgdGhhdCBtYWRlIAphY2NvcmRpbmcgdG8K c29tZSByZXZpZXcgY29tbWVudHMsIHRvIHJlbWluZCB0aGF0IHdlIGNhbiBhZGQgbmV3IG1lbSB0 eXBlIGluIHRoZSBmdXR1cmUuClNvIGhvdyBhYm91dCB3ZSBhZGQgYSBsaW5lIC0gIkZvciB0aGUg ZnV0dXJlLCB3ZSBjYW4gc3VwcG9ydCBvdGhlciBtZW0gCnR5cGVzIj8KCkJ1dCB0aGF0IGFsc28g c291bmRzIHJlZHVuZGFudCB0byBtZS4gOikKU28gSSBhbSBhbHNvIE9LIHRvIHJlbW92ZSB0aGlz IGFuZCBiZWxvdyBjb21tZW50cy4KCj4+ICsgICAgaWYgKCB0eXBlICE9IEhWTU1FTV9pb3JlcV9z ZXJ2ZXIgKQo+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAgIC8qIEZvciBu b3csIG9ubHkgd3JpdGUgZW11bGF0aW9uIGlzIHN1cHBvcnRlZC4gKi8KPiBkaXR0by4KPgo+PiAr ICAgIGlmICggZmxhZ3MgJiB+KFhFTl9ETU9QX0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUpICkKPj4g KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAgICBzcGluX2xvY2tfcmVjdXJzaXZl KCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwo+PiArCj4+ICsgICAgcmMg PSAtRU5PRU5UOwo+PiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKPj4gKyAgICB7Cj4+ICsg ICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIg KQo+PiArICAgICAgICAgICAgY29udGludWU7Cj4gYW55IHJlYXNvbiB3aHkgd2UgY2Fubm90IGxl dCBkZWZhdWx0IHNlcnZlciB0byBjbGFpbSB0aGlzCj4gbmV3IHR5cGU/CgpXZWxsLCBteSB1bmRl cnN0YW5kaW5nIGFib3V0IGRlZmF1bHQgaW9yZXEgc2VydmVyIGlzIHRoYXQgaXQgaXMgb25seSBm b3IgCmxlZ2FjeQpxZW11IGFuZCBpcyBub3QgZXZlbiBjcmVhdGVkIGluIHRoZSBkbSBvcCBoeXBl cmNhbGwuIExhdGVzdCBkZXZpY2UgbW9kZWxzKAppbmNsdWRpbmcgcWVtdSkgYXJlIGFsbCBub3Qg ZGVmYXVsdCBpb3JlcSBzZXJ2ZXIgbm93LgoKPj4gKwo+PiArICAgICAgICBpZiAoIHMtPmlkID09 IGlkICkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgcmMgPSBwMm1fc2V0X2lvcmVxX3Nl cnZlcihkLCBmbGFncywgcyk7Cj4+ICsgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgfQo+ PiArICAgIH0KPj4gKwo+PiArICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKPj4gKwo+PiArICAgIHJldHVybiByYzsKPj4gK30K Pj4gKwo+PiAgIGludCBodm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZShzdHJ1Y3QgZG9tYWluICpk LCBpb3NlcnZpZF90IGlkLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s X3QgZW5hYmxlZCkgIHsgZGlmZiAtLWdpdAo+PiBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVk X2hhcC5jCj4+IGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKPj4gaW5kZXggMTYy YWZlZC4uNDA4ZWE3ZiAxMDA2NDQKPj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRf aGFwLmMKPj4gKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKPj4gQEAgLTE3 Miw3ICsxNzIsNyBAQCBuZXN0ZWRoYXBfd2Fsa19MMF9wMm0oc3RydWN0IHAybV9kb21haW4gKnAy bSwKPj4gcGFkZHJfdCBMMV9ncGEsIHBhZGRyX3QgKkwwX2dwYSwKPj4gICAgICAgaWYgKCAqcDJt dCA9PSBwMm1fbW1pb19kaXJlY3QgKQo+PiAgICAgICAgICAgZ290byBkaXJlY3RfbW1pb19vdXQ7 Cj4+ICAgICAgIHJjID0gTkVTVEVESFZNX1BBR0VGQVVMVF9NTUlPOwo+PiAtICAgIGlmICggKnAy bXQgPT0gcDJtX21taW9fZG0gKQo+PiArICAgIGlmICggKnAybXQgPT0gcDJtX21taW9fZG0gfHwg KnAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCj4+ICAgICAgICAgICBnb3RvIG91dDsKPj4KPj4g ICAgICAgcmMgPSBORVNURURIVk1fUEFHRUZBVUxUX0wwX0VSUk9SOwo+PiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPj4g aW5kZXggNTY4OTQ0Zi4uY2MxZWIyMSAxMDA2NDQKPj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3Ay bS1lcHQuYwo+PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCj4+IEBAIC0xMzEsNiAr MTMxLDEzIEBAIHN0YXRpYyB2b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QKPj4gcDJt X2RvbWFpbiAqcDJtLCBlcHRfZW50cnlfdCAqZW50cnksCj4+ICAgICAgICAgICAgICAgZW50cnkt PnIgPSBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMTsKPj4gICAgICAgICAgICAgICBlbnRyeS0+YSA9 IGVudHJ5LT5kID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7Cj4+ICAgICAgICAgICAgICAgYnJlYWs7 Cj4+ICsgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKPj4gKyAgICAgICAgICAgIGVudHJ5 LT5yID0gMTsKPj4gKyAgICAgICAgICAgIGVudHJ5LT53ID0gIShwMm0tPmlvcmVxLmZsYWdzICYK Pj4gWEVOX0RNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSk7Cj4+ICsgICAgICAgICAgICBlbnRy eS0+eCA9IDA7Cj4+ICsgICAgICAgICAgICBlbnRyeS0+YSA9ICEhY3B1X2hhc192bXhfZXB0X2Fk Owo+PiArICAgICAgICAgICAgZW50cnktPmQgPSBlbnRyeS0+dyAmJiBlbnRyeS0+YTsKPj4gKyAg ICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgY2FzZSBwMm1fbW1pb19kaXJlY3Q6Cj4+ICAg ICAgICAgICAgICAgZW50cnktPnIgPSBlbnRyeS0+eCA9IDE7Cj4+ICAgICAgICAgICAgICAgZW50 cnktPncgPSAhcmFuZ2VzZXRfY29udGFpbnNfc2luZ2xldG9uKG1taW9fcm9fcmFuZ2VzLAo+PiBA QCAtMTcwLDcgKzE3Nyw2IEBAIHN0YXRpYyB2b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1 Y3QKPj4gcDJtX2RvbWFpbiAqcDJtLCBlcHRfZW50cnlfdCAqZW50cnksCj4+ICAgICAgICAgICAg ICAgZW50cnktPmEgPSBlbnRyeS0+ZCA9ICEhY3B1X2hhc192bXhfZXB0X2FkOwo+PiAgICAgICAg ICAgICAgIGJyZWFrOwo+PiAgICAgICAgICAgY2FzZSBwMm1fZ3JhbnRfbWFwX3JvOgo+PiAtICAg ICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4+ICAgICAgICAgICAgICAgZW50cnktPnIgPSAx Owo+PiAgICAgICAgICAgICAgIGVudHJ5LT53ID0gZW50cnktPnggPSAwOwo+PiAgICAgICAgICAg ICAgIGVudHJ5LT5hID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7IGRpZmYgLS1naXQKPj4gYS94ZW4v YXJjaC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgaW5kZXgKPj4g MDdlMmNjZC4uZjZjNDVlYyAxMDA2NDQKPj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5j Cj4+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+PiBAQCAtNzAsNyArNzAsOSBAQCBz dGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBwZ3RbXSA9IHsKPj4gICAgICAgUEdUX2wzX3BhZ2Vf dGFibGUKPj4gICB9Owo+Pgo+PiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgcDJtX3R5cGVfdG9fZmxh Z3MocDJtX3R5cGVfdCB0LCBtZm5fdCBtZm4sCj4+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBwMm1f dHlwZV90b19mbGFncyhjb25zdCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0LAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZXZlbCkgIHsKPj4gICAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gQEAgLTkyLDggKzk0LDEyIEBAIHN0YXRpYyB1bnNp Z25lZCBsb25nIHAybV90eXBlX3RvX2ZsYWdzKHAybV90eXBlX3QgdCwKPj4gbWZuX3QgbWZuLAo+ PiAgICAgICBkZWZhdWx0Ogo+PiAgICAgICAgICAgcmV0dXJuIGZsYWdzIHwgX1BBR0VfTlhfQklU Owo+PiAgICAgICBjYXNlIHAybV9ncmFudF9tYXBfcm86Cj4+IC0gICAgY2FzZSBwMm1faW9yZXFf c2VydmVyOgo+PiAgICAgICAgICAgcmV0dXJuIGZsYWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFH RV9OWF9CSVQ7Cj4+ICsgICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgo+PiArICAgICAgICBmbGFn cyB8PSBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX1JXIHwgX1BBR0VfTlhfQklUOwo+PiArICAgICAg ICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBYRU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRF ICkKPj4gKyAgICAgICAgICAgIHJldHVybiBmbGFncyAmIH5fUEFHRV9SVzsKPj4gKyAgICAgICAg cmV0dXJuIGZsYWdzOwo+PiAgICAgICBjYXNlIHAybV9yYW1fcm86Cj4+ICAgICAgIGNhc2UgcDJt X3JhbV9sb2dkaXJ0eToKPj4gICAgICAgY2FzZSBwMm1fcmFtX3NoYXJlZDoKPj4gQEAgLTQ0MCw3 ICs0NDYsOCBAQCBzdGF0aWMgaW50IGRvX3JlY2FsYyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+ PiB1bnNpZ25lZCBsb25nIGdmbikKPj4gICAgICAgICAgICAgICBwMm1fdHlwZV90IHAybXQgPSBw Mm1faXNfbG9nZGlydHlfcmFuZ2UocDJtLCBnZm4gJiBtYXNrLCBnZm4gfAo+PiB+bWFzaykKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHAybV9yYW1fbG9nZGlydHkgOiBwMm1f cmFtX3J3Owo+PiAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbDFlX2dldF9wZm4o ZSk7Cj4+IC0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzID0gcDJtX3R5cGVfdG9fZmxh Z3MocDJtdCwgX21mbihtZm4pLCBsZXZlbCk7Cj4+ICsgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGZsYWdzID0gcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4obWZuKSwgbGV2ZWwpOwo+ Pgo+PiAgICAgICAgICAgICAgIGlmICggbGV2ZWwgKQo+PiAgICAgICAgICAgICAgIHsKPj4gQEAg LTU3OCw3ICs1ODUsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0s Cj4+IHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCj4+ICAgICAgICAgICBBU1NFUlQoIW1m bl92YWxpZChtZm4pIHx8IHAybXQgIT0gcDJtX21taW9fZGlyZWN0KTsKPj4gICAgICAgICAgIGwz ZV9jb250ZW50ID0gbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10 KQo+PiAgICAgICAgICAgICAgID8gbDNlX2Zyb21fcGZuKG1mbl94KG1mbiksCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm10LCBtZm4sIDIpIHwgX1BB R0VfUFNFKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3Mo cDJtLCBwMm10LCBtZm4sIDIpIHwKPj4gKyBfUEFHRV9QU0UpCj4+ICAgICAgICAgICAgICAgOiBs M2VfZW1wdHkoKTsKPj4gICAgICAgICAgIGVudHJ5X2NvbnRlbnQubDEgPSBsM2VfY29udGVudC5s MzsKPj4KPj4gQEAgLTYxNSw3ICs2MjIsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sCj4+IHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCj4+Cj4+ICAgICAg ICAgICBpZiAoIG1mbl92YWxpZChtZm4pIHx8IHAybV9hbGxvd3NfaW52YWxpZF9tZm4ocDJtdCkg KQo+PiAgICAgICAgICAgICAgIGVudHJ5X2NvbnRlbnQgPSBwMm1fbDFlX2Zyb21fcGZuKG1mbl94 KG1mbiksCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Mm1fdHlwZV90b19mbGFncyhwMm10LCBtZm4sIDApKTsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LAo+PiArIG1m biwgMCkpOwo+PiAgICAgICAgICAgZWxzZQo+PiAgICAgICAgICAgICAgIGVudHJ5X2NvbnRlbnQg PSBsMWVfZW1wdHkoKTsKPj4KPj4gQEAgLTY1Miw3ICs2NTksNyBAQCBwMm1fcHRfc2V0X2VudHJ5 KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCj4+IHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4s Cj4+ICAgICAgICAgICBBU1NFUlQoIW1mbl92YWxpZChtZm4pIHx8IHAybXQgIT0gcDJtX21taW9f ZGlyZWN0KTsKPj4gICAgICAgICAgIGlmICggbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19p bnZhbGlkX21mbihwMm10KSApCj4+ICAgICAgICAgICAgICAgbDJlX2NvbnRlbnQgPSBsMmVfZnJv bV9wZm4obWZuX3gobWZuKSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybXQsIG1mbiwgMSkgfAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LAo+PiAr IG1mbiwgMSkgfAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Q QUdFX1BTRSk7Cj4+ICAgICAgICAgICBlbHNlCj4+ICAgICAgICAgICAgICAgbDJlX2NvbnRlbnQg PSBsMmVfZW1wdHkoKTsKPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hl bi9hcmNoL3g4Ni9tbS9wMm0uYyBpbmRleAo+PiBhNTY1MWEzLi5kZDRlNDc3IDEwMDY0NAo+PiAt LS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5j Cj4+IEBAIC04Miw2ICs4Miw4IEBAIHN0YXRpYyBpbnQgcDJtX2luaXRpYWxpc2Uoc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0Cj4+IHAybV9kb21haW4gKnAybSkKPj4gICAgICAgZWxzZQo+PiAgICAg ICAgICAgcDJtX3B0X2luaXQocDJtKTsKPj4KPj4gKyAgICBzcGluX2xvY2tfaW5pdCgmcDJtLT5p b3JlcS5sb2NrKTsKPj4gKwo+PiAgICAgICByZXR1cm4gcmV0Owo+PiAgIH0KPj4KPj4gQEAgLTI4 Niw2ICsyODgsNzggQEAgdm9pZCBwMm1fbWVtb3J5X3R5cGVfY2hhbmdlZChzdHJ1Y3QgZG9tYWlu ICpkKQo+PiAgICAgICB9Cj4+ICAgfQo+Pgo+PiAraW50IHAybV9zZXRfaW9yZXFfc2VydmVyKHN0 cnVjdCBkb21haW4gKmQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGZsYWdzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzKSB7Cj4+ICsgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAy bShkKTsKPj4gKyAgICBpbnQgcmM7Cj4+ICsKPj4gKyAgICAvKgo+PiArICAgICAqIFVzZSBsb2Nr IHRvIHByZXZlbnQgY29uY3VycmVudCBzZXR0aW5nIGF0dGVtcHRzCj4+ICsgICAgICogZnJvbSBt dWx0aXBsZSBpb3JlcSBzZXJlcnMuCj4gc2VyZXJzIC0+IHNlcnZlcnMKCkdvdCBpdC4gVGhhbmtz LgoKPj4gKyAgICAgKi8KPj4gKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7Cj4+ICsK Pj4gKyAgICAvKiBVbm1hcCBpb3JlcSBzZXJ2ZXIgZnJvbSBwMm0gdHlwZSBieSBwYXNzaW5nIGZs YWdzIHdpdGggMC4gKi8KPj4gKyAgICBpZiAoIGZsYWdzID09IDAgKQo+PiArICAgIHsKPj4gKyAg ICAgICAgcmMgPSAtRUlOVkFMOwo+PiArICAgICAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyICE9 IHMgKQo+PiArICAgICAgICAgICAgZ290byBvdXQ7Cj4+ICsKPj4gKyAgICAgICAgcDJtLT5pb3Jl cS5zZXJ2ZXIgPSBOVUxMOwo+PiArICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsKPj4gKyAg ICB9Cj4+ICsgICAgZWxzZQo+PiArICAgIHsKPj4gKyAgICAgICAgcmMgPSAtRUJVU1k7Cj4+ICsg ICAgICAgIGlmICggcDJtLT5pb3JlcS5zZXJ2ZXIgIT0gTlVMTCApCj4+ICsgICAgICAgICAgICBn b3RvIG91dDsKPj4gKwo+PiArICAgICAgICBwMm0tPmlvcmVxLnNlcnZlciA9IHM7Cj4+ICsgICAg ICAgIHAybS0+aW9yZXEuZmxhZ3MgPSBmbGFnczsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByYyA9 IDA7Cj4+ICsKPj4gKyBvdXQ6Cj4+ICsgICAgc3Bpbl91bmxvY2soJnAybS0+aW9yZXEubG9jayk7 Cj4+ICsKPj4gKyAgICByZXR1cm4gcmM7Cj4+ICt9Cj4+ICsKPj4gK3N0cnVjdCBodm1faW9yZXFf c2VydmVyICpwMm1fZ2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZmxh Z3MpIHsKPj4gKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQp Owo+PiArICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwo+PiArCj4+ICsgICAgc3Bpbl9s b2NrKCZwMm0tPmlvcmVxLmxvY2spOwo+PiArCj4+ICsgICAgcyA9IHAybS0+aW9yZXEuc2VydmVy Owo+PiArICAgICpmbGFncyA9IHAybS0+aW9yZXEuZmxhZ3M7Cj4+ICsKPj4gKyAgICBzcGluX3Vu bG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKPj4gKyAgICByZXR1cm4gczsKPj4gK30KPj4gKwo+PiAr dm9pZCBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzKSB7Cj4+ICsgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAy bShkKTsKPj4gKwo+PiArICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKPj4gKwo+PiAr ICAgIGlmICggcDJtLT5pb3JlcS5zZXJ2ZXIgPT0gcyApCj4+ICsgICAgewo+PiArICAgICAgICBw Mm0tPmlvcmVxLnNlcnZlciA9IE5VTEw7Cj4+ICsgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAw Owo+PiArICAgIH0KPj4gKwo+PiArICAgIHNwaW5fdW5sb2NrKCZwMm0tPmlvcmVxLmxvY2spOwo+ PiArfQo+PiArCj4+ICAgdm9pZCBwMm1fZW5hYmxlX2hhcmR3YXJlX2xvZ19kaXJ0eShzdHJ1Y3Qg ZG9tYWluICpkKSAgewo+PiAgICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9o b3N0cDJtKGQpOyBkaWZmIC0tZ2l0Cj4+IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5j IGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCj4+IGluZGV4IDdlYTlkODEuLjUyMWI2 MzkgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwo+PiArKysg Yi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKPj4gQEAgLTMyNjksOCArMzI2OSw3IEBA IHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKPj4gICAgICAgfQo+Pgo+ PiAgICAgICAvKiBOZWVkIHRvIGhhbmQgb2ZmIGRldmljZS1tb2RlbCBNTUlPIHRvIHRoZSBkZXZp Y2UgbW9kZWwgKi8KPj4gLSAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZG0KPj4gLSAgICAgICAg IHx8IChwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgJiYgZnQgPT0gZnRfZGVtYW5kX3dyaXRlKSAp Cj4+ICsgICAgaWYgKCBwMm10ID09IHAybV9tbWlvX2RtICkKPj4gICAgICAgewo+PiAgICAgICAg ICAgZ3BhID0gZ3Vlc3Rfd2Fsa190b19ncGEoJmd3KTsKPj4gICAgICAgICAgIGdvdG8gbW1pbzsK Pj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvcmVxLmggYi94ZW4vaW5j bHVkZS9hc20tCj4+IHg4Ni9odm0vaW9yZXEuaCBpbmRleCBmYmYyYzc0Li5iNDM2NjdhIDEwMDY0 NAo+PiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCj4+ICsrKyBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2lvcmVxLmgKPj4gQEAgLTM3LDYgKzM3LDggQEAgaW50IGh2bV9t YXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4KPj4gKmQsIGlvc2Vydmlk X3QgaWQsICBpbnQgaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKHN0cnVjdAo+ PiBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBzdGFydCwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCk7Cj4+ICtp bnQgaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9z ZXJ2aWRfdCBpZCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncyk7Cj4+ICAgaW50IGh2bV9zZXRfaW9yZXFfc2VydmVy X3N0YXRlKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2xfdCBlbmFibGVkKTsKPj4KPj4gZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oIGluZGV4 Cj4+IDQ3MGQyOWQuLjM3ODY2ODAgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv cDJtLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+PiBAQCAtODksNyArODks OCBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9wYWdpbmdfb3V0KSAgICAgIFwKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9wYWdlZCkgICAgICAg ICAgIFwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9w YWdpbmdfaW4pICAgICAgIFwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFz ayhwMm1fcmFtX3NoYXJlZCkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21h c2socDJtX3JhbV9zaGFyZWQpICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg fCBwMm1fdG9fbWFzayhwMm1faW9yZXFfc2VydmVyKSkKPj4KPj4gICAvKiBUeXBlcyB0aGF0IHJl cHJlc2VudCBhIHBoeXNtYXAgaG9sZSB0aGF0IGlzIG9rIHRvIHJlcGxhY2Ugd2l0aCBhIHNoYXJl ZAo+PiAgICAqIGVudHJ5ICovCj4+IEBAIC0xMTEsOCArMTEyLDcgQEAgdHlwZWRlZiB1bnNpZ25l ZCBpbnQgcDJtX3F1ZXJ5X3Q7Cj4+ICAgI2RlZmluZSBQMk1fUk9fVFlQRVMgKHAybV90b19tYXNr KHAybV9yYW1fbG9nZGlydHkpICAgICBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJt X3RvX21hc2socDJtX3JhbV9ybykgICAgICAgICBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IHwgcDJtX3RvX21hc2socDJtX2dyYW50X21hcF9ybykgICBcCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkgICAgIFwKPj4gLSAgICAgICAgICAg ICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9pb3JlcV9zZXJ2ZXIpKQo+PiArICAgICAgICAg ICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9zaGFyZWQpKQo+Pgo+PiAgIC8qIFdy aXRlLWRpc2NhcmQgdHlwZXMsIHdoaWNoIHNob3VsZCBkaXNjYXJkIHRoZSB3cml0ZSBvcGVyYXRp b25zICovCj4+ICAgI2RlZmluZSBQMk1fRElTQ0FSRF9XUklURV9UWVBFUyAocDJtX3RvX21hc2so cDJtX3JhbV9ybykgICAgIFwKPj4gQEAgLTMzNiw2ICszMzYsMjAgQEAgc3RydWN0IHAybV9kb21h aW4gewo+PiAgICAgICAgICAgc3RydWN0IGVwdF9kYXRhIGVwdDsKPj4gICAgICAgICAgIC8qIE5Q VC1lcXVpdmFsZW50IHN0cnVjdHVyZSBjb3VsZCBiZSBhZGRlZCBoZXJlLiAqLwo+PiAgICAgICB9 Owo+PiArCj4+ICsgICAgIHN0cnVjdCB7Cj4+ICsgICAgICAgICBzcGlubG9ja190IGxvY2s7Cj4+ ICsgICAgICAgICAvKgo+PiArICAgICAgICAgICogaW9yZXEgc2VydmVyIHdobydzIHJlc3BvbnNp YmxlIGZvciB0aGUgZW11bGF0aW9uIG9mCj4+ICsgICAgICAgICAgKiBnZm5zIHdpdGggc3BlY2lm aWMgcDJtIHR5cGUoZm9yIG5vdywgcDJtX2lvcmVxX3NlcnZlcikuCj4+ICsgICAgICAgICAgKi8K Pj4gKyAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzZXJ2ZXI7Cj4+ICsgICAgICAg ICAvKgo+PiArICAgICAgICAgICogZmxhZ3Mgc3BlY2lmaWVzIHdoZXRoZXIgcmVhZCwgd3JpdGUg b3IgYm90aCBvcGVyYXRpb25zCj4+ICsgICAgICAgICAgKiBhcmUgdG8gYmUgZW11bGF0ZWQgYnkg YW4gaW9yZXEgc2VydmVyLgo+PiArICAgICAgICAgICovCj4+ICsgICAgICAgICB1bnNpZ25lZCBp bnQgZmxhZ3M7Cj4+ICsgICAgIH0gaW9yZXE7Cj4+ICAgfTsKPj4KPj4gICAvKiBnZXQgaG9zdCBw Mm0gdGFibGUgKi8KPj4gQEAgLTgyNyw2ICs4NDEsMTIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQKPj4gcDJtX2dldF9pb21tdV9mbGFncyhwMm1fdHlwZV90IHAybXQsIG1mbl90IG1mbikK Pj4gICAgICAgcmV0dXJuIGZsYWdzOwo+PiAgIH0KPj4KPj4gK2ludCBwMm1fc2V0X2lvcmVxX3Nl cnZlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpOyBzdHJ1Y3QKPj4gK2h2 bV9pb3JlcV9zZXJ2ZXIgKnAybV9nZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50ICpmbGFncyk7Cj4+ICt2b2lkIHAybV9kZXN0cm95X2lvcmVxX3NlcnZlcihjb25zdCBzdHJ1 Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QKPj4gK2h2bV9pb3JlcV9zZXJ2ZXIgKnMpOwo+PiAr Cj4+ICAgI2VuZGlmIC8qIF9YRU5fQVNNX1g4Nl9QMk1fSCAqLwo+Pgo+PiAgIC8qCj4+IGRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKPj4gYi94ZW4vaW5jbHVkZS9w dWJsaWMvaHZtL2RtX29wLmggaW5kZXggZjU0Y2VjZS4uMmEzNjgzMyAxMDA2NDQKPj4gLS0tIGEv eGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9odm0vZG1fb3AuaAo+PiBAQCAtMzE4LDYgKzMxOCwzMiBAQCBzdHJ1Y3QgeGVuX2RtX29wX2lu amVjdF9tc2kgewo+PiAgICAgICB1aW50NjRfYWxpZ25lZF90IGFkZHI7Cj4+ICAgfTsKPj4KPj4g Ky8qCj4+ICsgKiBYRU5fRE1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIDogbWFwIG9y IHVubWFwIHRoZQo+PiBJT1JFUSBTZXJ2ZXIgPGlkPgo+PiArICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvIHNwZWNpZmljIG1lbXJveSB0eXBlIDx0eXBlPgo+IG1lbXJv eS0+bWVtb3J5CgpSaWdodC4gVGhhbmtzLiA6KQoKQi5SLgpZdQo+PiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzcGVjaWZpYyBhY2Nlc3NlcyA8ZmxhZ3M+Cj4+ ICsgKgo+PiArICogRm9yIG5vdywgZmxhZ3Mgb25seSBhY2NlcHQgdGhlIHZhbHVlIG9mCj4+ICtY RU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFLAo+PiArICogd2hpY2ggbWVhbnMgb25seSB3 cml0ZSBvcGVyYXRpb25zIGFyZSB0byBiZSBmb3J3YXJkZWQgdG8gYW4gaW9yZXEKPj4gc2VydmVy Lgo+PiArICogU3VwcG9ydCBmb3IgdGhlIGVtdWxhdGlvbiBvZiByZWFkIG9wZXJhdGlvbnMgY2Fu IGJlIGFkZGVkIHdoZW4gYW4KPj4gK2lvcmVxCj4+ICsgKiBzZXJ2ZXIgaGFzIHN1Y2ggcmVxdWly ZW1lbnQgaW4gZnV0dXJlLgo+PiArICovCj4+ICsjZGVmaW5lIFhFTl9ETU9QX21hcF9tZW1fdHlw ZV90b19pb3JlcV9zZXJ2ZXIgMTUKPj4gKwo+PiArc3RydWN0IHhlbl9kbV9vcF9tYXBfbWVtX3R5 cGVfdG9faW9yZXFfc2VydmVyIHsKPj4gKyAgICBpb3NlcnZpZF90IGlkOyAgICAgIC8qIElOIC0g aW9yZXEgc2VydmVyIGlkICovCj4+ICsgICAgdWludDE2X3QgdHlwZTsgICAgICAvKiBJTiAtIG1l bW9yeSB0eXBlICovCj4+ICsgICAgdWludDMyX3QgZmxhZ3M7ICAgICAvKiBJTiAtIHR5cGVzIG9m IGFjY2Vzc2VzIHRvIGJlIGZvcndhcmRlZCB0byB0aGUKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlvcmVxIHNlcnZlci4gZmxhZ3Mgd2l0aCAwIG1lYW5zIHRvIHVubWFwIHRoZQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEgc2VydmVyICovCj4+ICsKPj4gKyNkZWZp bmUgWEVOX0RNT1BfSU9SRVFfTUVNX0FDQ0VTU19SRUFEICgxdSA8PCAwKSAjZGVmaW5lCj4+ICtY RU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFICgxdSA8PCAxKQo+PiArCj4+ICsgICAgdWlu dDY0X3Qgb3BhcXVlOyAgICAvKiBJTi9PVVQgLSBvbmx5IHVzZWQgZm9yIGh5cGVyY2FsbCBjb250 aW51YXRpb24sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgdG8gYmUgc2V0IHRv IHplcm8gYnkgdGhlIGNhbGxlciAqLyB9Owo+PiArCj4+ICAgc3RydWN0IHhlbl9kbV9vcCB7Cj4+ ICAgICAgIHVpbnQzMl90IG9wOwo+PiAgICAgICB1aW50MzJfdCBwYWQ7Cj4+IEBAIC0zMzYsNiAr MzYyLDggQEAgc3RydWN0IHhlbl9kbV9vcCB7Cj4+ICAgICAgICAgICBzdHJ1Y3QgeGVuX2RtX29w X3NldF9tZW1fdHlwZSBzZXRfbWVtX3R5cGU7Cj4+ICAgICAgICAgICBzdHJ1Y3QgeGVuX2RtX29w X2luamVjdF9ldmVudCBpbmplY3RfZXZlbnQ7Cj4+ICAgICAgICAgICBzdHJ1Y3QgeGVuX2RtX29w X2luamVjdF9tc2kgaW5qZWN0X21zaTsKPj4gKyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9tYXBf bWVtX3R5cGVfdG9faW9yZXFfc2VydmVyCj4+ICsgICAgICAgICAgICAgICAgbWFwX21lbV90eXBl X3RvX2lvcmVxX3NlcnZlcjsKPj4gICAgICAgfSB1Owo+PiAgIH07Cj4+Cj4+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCj4+IGIveGVuL2luY2x1ZGUvcHVibGlj L2h2bS9odm1fb3AuaCBpbmRleCBiYzAwZWYwLi4wYmRhZmRmIDEwMDY0NAo+PiAtLS0gYS94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9o dm0vaHZtX29wLmgKPj4gQEAgLTkzLDcgKzkzLDEzIEBAIHR5cGVkZWYgZW51bSB7Cj4+ICAgICAg IEhWTU1FTV91bnVzZWQsICAgICAgICAgICAgIC8qIFBsYWNlaG9sZGVyOyBzZXR0aW5nIG1lbW9y eSB0byB0aGlzIHR5cGUKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ls bCBmYWlsIGZvciBjb2RlIGFmdGVyIDQuNy4wICovICAjZW5kaWYKPj4gLSAgICBIVk1NRU1faW9y ZXFfc2VydmVyCj4+ICsgICAgSFZNTUVNX2lvcmVxX3NlcnZlciAgICAgICAgLyogTWVtb3J5IHR5 cGUgY2xhaW1lZCBieSBhbiBpb3JlcSBzZXJ2ZXI7Cj4+IHR5cGUKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRvIHRoaXMgdmFsdWUgYXJlIG9ubHkgYWxsb3dl ZCBhZnRlcgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGlvcmVxIHNl cnZlciBoYXMgY2xhaW1lZCBpdHMgb3duZXJzaGlwLgo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE9ubHkgcGFnZXMgd2l0aCBIVk1NRU1fcmFtX3J3IGFyZSBhbGxvd2VkIHRv Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlIHRvIHRoaXMgdHlw ZTsgY29udmVyc2VseSwgcGFnZXMgd2l0aAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMgdHlwZSBhcmUgb25seSBhbGxvd2VkIHRvIGJlIGNoYW5nZWQgYmFjawo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhWTU1FTV9yYW1fcncuICovCj4+ ICAgfSBodm1tZW1fdHlwZV90Owo+Pgo+PiAgIC8qIEhpbnQgZnJvbSBQViBkcml2ZXJzIGZvciBw YWdldGFibGUgZGVzdHJ1Y3Rpb24uICovCj4+IC0tCj4+IDEuOS4xCj4KCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK