From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 1/8] public / x86: Introduce __HYPERCALL_dm_op... Date: Thu, 19 Jan 2017 09:01:24 +0000 Message-ID: References: <1484674196-19951-1-git-send-email-paul.durrant@citrix.com> <1484674196-19951-2-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cU8b3-0006Kt-U5 for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 09:01:30 +0000 In-Reply-To: <1484674196-19951-2-git-send-email-paul.durrant@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" , Andrew Cooper Cc: Ian Jackson , Daniel De Graaf , Jennifer Herbert , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFBhdWwgRHVycmFudCBbbWFpbHRv OnBhdWwuZHVycmFudEBjaXRyaXguY29tXQo+IFNlbnQ6IDE3IEphbnVhcnkgMjAxNyAxNzozMAo+ IFRvOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBDYzogUGF1bCBEdXJyYW50IDxQ YXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IElhbiBKYWNrc29uCj4gPElhbi5KYWNrc29uQGNpdHJp eC5jb20+OyBKZW5uaWZlciBIZXJiZXJ0IDxqZW5uaWZlci5oZXJiZXJ0QGNpdHJpeC5jb20+Owo+ IERhbmllbCBEZSBHcmFhZiA8ZGdkZWdyYUB0eWNoby5uc2EuZ292PjsgV2VpIExpdSA8d2VpLmxp dTJAY2l0cml4LmNvbT47Cj4gSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPjsgQW5kcmV3 IENvb3Blcgo+IDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPgo+IFN1YmplY3Q6IFtQQVRDSCB2 NCAxLzhdIHB1YmxpYyAvIHg4NjogSW50cm9kdWNlIF9fSFlQRVJDQUxMX2RtX29wLi4uCj4gCj4g Li4uYXMgYSBzZXQgb2YgaHlwZXJjYWxscyB0byBiZSB1c2VkIGJ5IGEgZGV2aWNlIG1vZGVsLgo+ IAo+IEFzIHN0YXRlZCBpbiB0aGUgbmV3IGRvY3MvZGVzaWducy9kbV9vcC5tYXJrZG93bjoKPiAK PiAiVGhlIGFpbSBvZiBETU9QIGlzIHRvIHByZXZlbnQgYSBjb21wcm9taXNlZCBkZXZpY2UgbW9k ZWwgZnJvbQo+IGNvbXByb21pc2luZyBkb21haW5zIG90aGVyIHRoZW4gdGhlIG9uZSBpdCBpcyBh c3NvY2lhdGVkIHdpdGguIChBbmQgaXMKPiB0aGVyZWZvcmUgbGlrZWx5IGFscmVhZHkgY29tcHJv bWlzZWQpLiIKPiAKPiBTZWUgdGhhdCBmaWxlIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgo+IAo+ IFRoaXMgcGF0Y2ggc2ltcGx5IGFkZHMgdGhlIGJvaWxlcnBsYXRlIGZvciB0aGUgaHlwZXJjYWxs Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5j b20+Cj4gU3VnZ2VzdGVkLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AY2l0cml4LmNvbT4K PiBTdWdnZXN0ZWQtYnk6IEplbm5pZmVyIEhlcmJlcnQgPGplbm5pZmVyLmhlcmJlcnRAY2l0cml4 LmNvbT4KPiAtLS0KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGNpdHJpeC5jb20+Cj4g Q2M6IEplbm5pZmVyIEhlcmJlcnQgPGplbm5pZmVyLmhlcmJlcnRAY2l0cml4LmNvbT4KPiBDYzog RGFuaWVsIERlIEdyYWFmIDxkZ2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+Cj4gQ2M6IFdlaSBMaXUgPHdl aS5saXUyQGNpdHJpeC5jb20+Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K PiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCkFuZHJldywK CiAgQ2FuIHlvdSBjb25maXJtIHRoYXQgeW91IGFyZSBoYXBweSB3aXRoIHRoZSBBQkkgYXMgaXQg bm93IHN0YW5kcyB3aXRoIHRoaXMgcGF0Y2g/CgogIFBhdWwKCj4gCj4gdjQ6Cj4gLSBDaGFuZ2Ug WEVOX0dVRVNUX0hBTkRMRV82NCB0byBYRU5fR1VFU1RfSEFORExFIGluIHN0cnVjdAo+IHhlbl9k bV9vcF9idWYKPiAgIGFuZCBhZGQgdGhlIG5lY2Vzc2FyeSBjb21wYXQgY29kZS4gRHJvcCBKYW4n cyBSLWIgc2luY2UgdGhlIHBhdGNoIGhhcwo+ICAgYmVlbiBmdW5kYW1lbnRhbGx5IG1vZGlmaWVk Lgo+IAo+IHYzOgo+IC0gUmUtd3JpdHRlbiBsYXJnZSBwb3J0aW9ucyBvZiBkbW9wLm1hcmtkb3du IHRvIHJlbW92ZSByZWZlcmVuY2VzIHRvCj4gICBwcmV2aW91cyBwcm9wb3NhbHMgYW5kIG1ha2Ug aXQgYSBzdGFuZGFsb25lIGRlc2lnbiBkb2MuCj4gCj4gdjI6Cj4gLSBBZGRyZXNzZWQgc2V2ZXJh bCBjb21tZW50cyBmcm9tIEphbi4KPiAtIFJlbW92ZWQgbW9kaWZpY2F0aW9uIG9mIF9fWEVOX0xB VEVTVF9JTlRFUkZBQ0VfVkVSU0lPTl9fIGFzIGl0IGlzCj4gbm90Cj4gICBuZWVkZWQgaW4gdGhp cyBwYXRjaC4KPiAtLS0KPiAgZG9jcy9kZXNpZ25zL2Rtb3AubWFya2Rvd24gICAgICAgIHwgMTY1 Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgdG9vbHMvZmxhc2sv cG9saWN5L21vZHVsZXMveGVuLmlmIHwgICAyICstCj4gIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oICAgICB8ICAgMSArCj4gIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYyAgICAgICAgICB8 ICA3MCArKysrKysrKysrKysrKysrCj4gIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCAgICAgICAg ICB8ICAgMiArCj4gIHhlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUgICAgICAgICB8ICAgMSArCj4g IHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAgICAgICB8IDE0OQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAg IHwgICAxICsKPiAgeGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jICAgICAgICAgIHwgICAyICsKPiAg eGVuL2luY2x1ZGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsKPiAgeGVuL2luY2x1ZGUv cHVibGljL2h2bS9kbV9vcC5oICAgIHwgIDcxICsrKysrKysrKysrKysrKysKPiAgeGVuL2luY2x1 ZGUvcHVibGljL3hlbi5oICAgICAgICAgIHwgICAxICsKPiAgeGVuL2luY2x1ZGUveGVuL2h5cGVy Y2FsbC5oICAgICAgIHwgIDE1ICsrKysKPiAgeGVuL2luY2x1ZGUveGxhdC5sc3QgICAgICAgICAg ICAgIHwgICAxICsKPiAgeGVuL2luY2x1ZGUveHNtL2R1bW15LmggICAgICAgICAgIHwgICA2ICsr Cj4gIHhlbi9pbmNsdWRlL3hzbS94c20uaCAgICAgICAgICAgICB8ICAgNiArKwo+ICB4ZW4veHNt L2ZsYXNrL2hvb2tzLmMgICAgICAgICAgICAgfCAgIDcgKysKPiAgMTcgZmlsZXMgY2hhbmdlZCwg NTAwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRv Y3MvZGVzaWducy9kbW9wLm1hcmtkb3duCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94 ODYvaHZtL2RtLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9odm0v ZG1fb3AuaAo+IAo+IGRpZmYgLS1naXQgYS9kb2NzL2Rlc2lnbnMvZG1vcC5tYXJrZG93biBiL2Rv Y3MvZGVzaWducy9kbW9wLm1hcmtkb3duCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi45ZjJmMGQ0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RvY3MvZGVzaWducy9kbW9w Lm1hcmtkb3duCj4gQEAgLTAsMCArMSwxNjUgQEAKPiArRE1PUAo+ICs9PT09Cj4gKwo+ICtJbnRy b2R1Y3Rpb24KPiArLS0tLS0tLS0tLS0tCj4gKwo+ICtUaGUgYWltIG9mIERNT1AgaXMgdG8gcHJl dmVudCBhIGNvbXByb21pc2VkIGRldmljZSBtb2RlbCBmcm9tCj4gY29tcHJvbWlzaW5nCj4gK2Rv bWFpbnMgb3RoZXIgdGhlbiB0aGUgb25lIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gKEFuZCBpcyB0 aGVyZWZvcmUgbGlrZWx5Cj4gK2FscmVhZHkgY29tcHJvbWlzZWQpLgo+ICsKPiArVGhlIHByb2Js ZW0gb2NjdXJzIHdoZW4geW91IGEgZGV2aWNlIG1vZGVsIGlzc3VlcyBhbiBoeXBlcmNhbGwgdGhh dAo+ICtpbmNsdWRlcyByZWZlcmVuY2VzIHRvIHVzZXIgbWVtb3J5IG90aGVyIHRoYW4gdGhlIG9w ZXJhdGlvbiBzdHJ1Y3R1cmUKPiAraXRzZWxmLCBzdWNoIGFzIHdpdGggVHJhY2sgZGlydHkgVlJB TSAoYXMgdXNlZCBpbiBWR0EgZW11bGF0aW9uKS4KPiArSXMgdGhpcyBjYXNlLCB0aGUgYWRkcmVz cyBvZiB0aGlzIG90aGVyIHVzZXIgbWVtb3J5IG5lZWRzIHRvIGJlIHZldHRlZCwKPiArdG8gZW5z dXJlIGl0IGlzIG5vdCB3aXRoaW4gcmVzdHJpY3RlZCBhZGRyZXNzIHJhbmdlcywgc3VjaCBhcyBr ZXJuZWwKPiArbWVtb3J5LiBUaGUgcmVhbCBwcm9ibGVtIGNvbWVzIGRvd24gdG8gaG93IHlvdSB3 b3VsZCB2ZXQgdGhpcyBhZGRyZXNzCj4gLQo+ICt0aGUgaWRlYSBwbGFjZSB0byBkbyB0aGlzIGlz IHdpdGhpbiB0aGUgcHJpdmNtZCBkcml2ZXIsIHdpdGhvdXQgcHJpdmNtZAo+ICtoYXZpbmcgdG8g aGF2ZSBzcGVjaWZpYyBrbm93bGVkZ2Ugb2YgdGhlIGh5cGVyY2FsbCdzIHNlbWFudGljcy4KPiAr Cj4gK1RoZSBEZXNpZ24KPiArLS0tLS0tLS0tLQo+ICsKPiArVGhlIHByaXZjbWQgZHJpdmVyIGlt cGxlbWVudHMgYSBuZXcgcmVzdHJpY3Rpb24gaW9jdGwsIHdoaWNoIHRha2VzIGEgZG9taWQKPiAr cGFyYW1ldGVyLiAgQWZ0ZXIgdGhhdCByZXN0cmljdGlvbiBpb2N0bCBpcyBpc3N1ZWQsIHRoZSBw cml2Y21kIGRyaXZlciB3aWxsCj4gK3Blcm1pdCBvbmx5IERNT1AgaHlwZXJjYWxscywgYW5kIG9u bHkgd2l0aCB0aGUgc3BlY2lmaWVkIHRhcmdldCBkb21pZC4KPiArCj4gK0EgRE1PUCBoeXBlcmNh bGwgY29uc2lzdHMgb2YgYW4gYXJyYXkgb2YgYnVmZmVycyBhbmQgbGVuZ3Rocywgd2l0aCB0aGUK PiArZmlyc3Qgb25lIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmljIERNT1AgcGFyYW1ldGVycy4gVGhl c2UgY2FuIHRoZW4KPiByZWZlcmVuY2UKPiArZnVydGhlciBidWZmZXJzIGZyb20gd2l0aGluIGlu IHRoZSBhcnJheS4gU2luY2UgdGhlIG9ubHkgdXNlciBidWZmZXJzCj4gK3Bhc3NlZCBhcmUgdGhh dCBmb3VuZCB3aXRoIHRoYXQgYXJyYXksIHRoZXkgY2FuIGFsbCBjYW4gYmUgYXVkaXRlZCBieQo+ ICtwcml2Y21kLgo+ICsKPiArVGhlIGZvbGxvd2luZyBjb2RlIGlsbHVzdHJhdGVzIHRoaXMgaWRl YToKPiArCj4gK3N0cnVjdCB4ZW5fZG1fb3Agewo+ICsgICAgdWludDMyX3Qgb3A7Cj4gK307Cj4g Kwo+ICtzdHJ1Y3QgeGVuX2RtX29wX2J1ZiB7Cj4gKyAgICBYRU5fR1VFU1RfSEFORExFKHZvaWQp IGg7Cj4gKyAgICB1bnNpZ25lZCBsb25nIHNpemU7Cj4gK307Cj4gK3R5cGVkZWYgc3RydWN0IHhl bl9kbV9vcF9idWYgeGVuX2RtX29wX2J1Zl90Owo+ICsKPiArZW51bSBuZWdfZXJybm92YWwKPiAr SFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAo+ICsgICAgICAgICAgICAgICAgIHhlbl9k bV9vcF9idWZfdCBidWZzW10sCj4gKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1 ZnMpCj4gKwo+ICtAZG9taWQgaXMgdGhlIGRvbWFpbiB0aGUgaHlwZXJjYWxsIG9wZXJhdGVzIG9u Lgo+ICtAYnVmcyBwb2ludHMgdG8gYW4gYXJyYXkgb2YgYnVmZmVycyB3aGVyZSBAYnVmc1swXSBj b250YWlucyBhIHN0cnVjdAo+ICtkbV9vcCwgZGVzY3JpYmluZyB0aGUgc3BlY2lmaWMgZGV2aWNl IG1vZGVsIG9wZXJhdGlvbiBhbmQgaXRzIHBhcmFtZXRlcnMuCj4gK0BidWZzWzEuLl0gbWF5IGJl IHJlZmVyZW5jZWQgaW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwdXJwb3NlcyBvZgo+ICtwYXNz aW5nIGV4dHJhIGluZm9ybWF0aW9uIHRvIG9yIGZyb20gdGhlIGRvbWFpbi4KPiArQG5yX2J1ZnMg aXMgdGhlIG51bWJlciBvZiBidWZmZXJzIGluIHRoZSBAYnVmcyBhcnJheS4KPiArCj4gK0l0IGlz IGZvcmJpZGRlbiBmb3IgdGhlIGFib3ZlIHN0cnVjdCAoeGVuX2RtX29wKSB0byBjb250YWluIGFu eSBndWVzdAo+ICtoYW5kbGVzLiBJZiB0aGV5IGFyZSBuZWVkZWQsIHRoZXkgc2hvdWxkIGluc3Rl YWQgYmUgaW4KPiArSFlQRVJWSVNPUl9kbV9vcC0+YnVmcy4KPiArCj4gK1ZhbGlkYXRpb24gYnkg cHJpdmNtZCBkcml2ZXIKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArSWYg dGhlIHByaXZjbWQgZHJpdmVyIGhhcyBiZWVuIHJlc3RyaWN0ZWQgdG8gc3BlY2lmaWMgZG9tYWlu ICh1c2luZyBhCj4gKyBuZXcgaW9jdGwpLCB3aGVuIGl0IHJlY2VpdmVkIGFuIG9wLCBpdCB3aWxs Ogo+ICsKPiArMS4gQ2hlY2sgaHlwZXJjYWxsIGlzIERNT1AuCj4gKwo+ICsyLiBDaGVjayBkb21p ZCA9PSByZXN0cmljdGVkIGRvbWlkLgo+ICsKPiArMy4gRm9yIGVhY2ggQG5yX2J1ZnMgaW4gQGJ1 ZnM6IENoZWNrIEBoIGFuZCBAc2l6ZSBnaXZlIGEgYnVmZmVyCj4gKyAgIHdob2xseSBpbiB0aGUg dXNlciBzcGFjZSBwYXJ0IG9mIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIChlLmcuCj4gKyAg IExpbnV4IHdpbGwgdXNlIGFjY2Vzc19vaygpKS4KPiArCj4gKwo+ICtYZW4gSW1wbGVtZW50YXRp b24KPiArLS0tLS0tLS0tLS0tLS0tLS0tCj4gKwo+ICtTaW5jZSBhIERNT1AgYnVmZmVycyBuZWVk IHRvIGJlIGNvcGllZCBmcm9tIG9yIHRvIHRoZSBndWVzdCwgZnVuY3Rpb25zIGZvcgo+ICtkb2lu ZyB0aGlzIHdvdWxkIGJlIHdyaXR0ZW4gYXMgYmVsb3cuICBOb3RlIHRoYXQgY2FyZSBpcyB0YWtl biB0byBwcmV2ZW50Cj4gK2RhbWFnZSBmcm9tIGJ1ZmZlciB1bmRlci0gb3Igb3Zlci1ydW4gc2l0 dWF0aW9ucy4gIElmIHRoZSBETU9QIGlzIGNhbGxlZAo+ICt3aXRoIGluY29ycmVjdGx5IHNpemVk IGJ1ZmZlcnMsIHplcm9zIHdpbGwgYmUgcmVhZCwgd2hpbGUgZXh0cmEgaXMgaWdub3JlZC4KPiAr Cj4gK3N0YXRpYyBib29sIGNvcHlfYnVmX2Zyb21fZ3Vlc3QoeGVuX2RtX29wX2J1Zl90IGJ1ZnNb XSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVm cywgdm9pZCAqZHN0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBpZHgsIHNpemVfdCBkc3Rfc2l6ZSkKPiArewo+ICsgICAgc2l6ZV90IHNpemUgPSBtaW5f dChzaXplX3QsIGRzdF9zaXplLCBidWZzW2lkeF0uc2l6ZSk7Cj4gKwo+ICsgICAgcmV0dXJuICFj b3B5X2Zyb21fZ3Vlc3QoZHN0LCBidWZzW2lkeF0uaCwgc2l6ZSk7Cj4gK30KPiArCj4gK3N0YXRp YyBib29sIGNvcHlfYnVmX3RvX2d1ZXN0KHhlbl9kbV9vcF9idWZfdCBidWZzW10sCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLCB1bnNpZ25lZCBp bnQgaWR4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcmMsIHNpemVf dCBzcmNfc2l6ZSkKPiArewo+ICsgICAgc2l6ZV90IHNpemUgPSBtaW5fdChzaXplX3QsIGJ1ZnNb aWR4XS5zaXplLCBzcmNfc2l6ZSk7Cj4gKwo+ICsgICAgcmV0dXJuICFjb3B5X3RvX2d1ZXN0KGJ1 ZnNbaWR4XS5oLCBzcmMsIHNpemUpOwo+ICt9Cj4gKwo+ICtUaGlzIGxlYXZlcyBkb19kbV9vcCBl YXN5IHRvIGltcGxlbWVudCBhcyBiZWxvdzoKPiArCj4gK3N0YXRpYyBpbnQgZG1fb3AoZG9taWRf dCBkb21pZCwKPiArICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywKPiArICAg ICAgICAgICAgICAgICB4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdKQo+ICt7Cj4gKyAgICBzdHJ1Y3Qg ZG9tYWluICpkOwo+ICsgICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKPiArICAgIGxvbmcgcmM7Cj4g Kwo+ICsgICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKGRvbWlkLCAmZCk7Cj4g KyAgICBpZiAoIHJjICkKPiArICAgICAgICByZXR1cm4gcmM7Cj4gKwo+ICsgICAgaWYgKCAhaGFz X2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiArICAgICAgICBnb3RvIG91dDsKPiArCj4gKyAg ICByYyA9IHhzbV9kbV9vcChYU01fRE1fUFJJViwgZCk7Cj4gKyAgICBpZiAoIHJjICkKPiArICAg ICAgICBnb3RvIG91dDsKPiArCj4gKyAgICBpZiAoICFjb3B5X2J1Zl9mcm9tX2d1ZXN0KGJ1ZnMs IG5yX2J1ZnMsICZvcCwgMCwgc2l6ZW9mKG9wKSkgKQo+ICsgICAgewo+ICsgICAgICAgIHJjID0g LUVGQVVMVDsKPiArICAgICAgICBnb3RvIG91dDsKPiArICAgIH0KPiArCj4gKyAgICBzd2l0Y2gg KCBvcC5vcCApCj4gKyAgICB7Cj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIHJjID0gLUVPUE5P VFNVUFA7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCAhcmMgJiYK PiArICAgICAgICAgIWNvcHlfYnVmX3RvX2d1ZXN0KGJ1ZnMsIG5yX2J1ZnMsIDAsICZvcCwgc2l6 ZW9mKG9wKSkgKQo+ICsgICAgICAgIHJjID0gLUVGQVVMVDsKPiArCj4gKyBvdXQ6Cj4gKyAgICBy Y3VfdW5sb2NrX2RvbWFpbihkKTsKPiArCj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gK2xv bmcgZG9fZG1fb3AoZG9taWRfdCBkb21pZCwKPiArICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg bnJfYnVmcywKPiArICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9v cF9idWZfdCkgYnVmcykKPiArewo+ICsgICAgc3RydWN0IHhlbl9kbV9vcF9idWYgKm5hdDsKPiAr ICAgIGludCByYzsKPiArCj4gKyAgICBuYXQgPSB4emFsbG9jX2FycmF5KHN0cnVjdCB4ZW5fZG1f b3BfYnVmLCBucl9idWZzKTsKPiArICAgIGlmICggIW5hdCApCj4gKyAgICAgICAgcmV0dXJuIC1F Tk9NRU07Cj4gKwo+ICsgICAgaWYgKCAhY29weV9mcm9tX2d1ZXN0X29mZnNldChuYXQsIGJ1ZnMs IDAsIG5yX2J1ZnMpICkKPiArICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiArCj4gKyAgICByYyA9 IGRtX29wKGRvbWlkLCBucl9idWZzLCBuYXQpOwo+ICsKPiArICAgIHhmcmVlKG5hdCk7Cj4gKwo+ ICsgICAgcmV0dXJuIHJjOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9t b2R1bGVzL3hlbi5pZgo+IGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMveGVuLmlmCj4gaW5k ZXggMWFjYTc1ZC4uZjkyNTRjMiAxMDA2NDQKPiAtLS0gYS90b29scy9mbGFzay9wb2xpY3kvbW9k dWxlcy94ZW4uaWYKPiArKysgYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy94ZW4uaWYKPiBA QCAtMTUxLDcgKzE1MSw3IEBAIGRlZmluZShgZGV2aWNlX21vZGVsJywgYAo+IAo+ICAJYWxsb3cg JDEgJDJfdGFyZ2V0OmRvbWFpbiB7IGdldGRvbWFpbmluZm8gc2h1dGRvd24gfTsKPiAgCWFsbG93 ICQxICQyX3RhcmdldDptbXUgeyBtYXBfcmVhZCBtYXBfd3JpdGUgYWRqdXN0IHBoeXNtYXAKPiB0 YXJnZXRfaGFjayB9Owo+IC0JYWxsb3cgJDEgJDJfdGFyZ2V0Omh2bSB7IGdldHBhcmFtIHNldHBh cmFtIHRyYWNrZGlydHl2cmFtIGh2bWN0bAo+IGlycWxldmVsIHBjaXJvdXRlIHBjaWxldmVsIGNh Y2hlYXR0ciBzZW5kX2lycSB9Owo+ICsJYWxsb3cgJDEgJDJfdGFyZ2V0Omh2bSB7IGdldHBhcmFt IHNldHBhcmFtIHRyYWNrZGlydHl2cmFtIGh2bWN0bAo+IGlycWxldmVsIHBjaXJvdXRlIHBjaWxl dmVsIGNhY2hlYXR0ciBzZW5kX2lycSBkbSB9Owo+ICAnKQo+IAo+ICAjIG1ha2VfZGV2aWNlX21v ZGVsKHByaXYsIGRtX2RvbSwgaHZtX2RvbSkKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+IGluZGV4IDRh YjBmNTcuLjJiYTQ2ZDcgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJs LmgKPiArKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+IEBAIC00MSw2ICs0MSw3 IEBACj4gICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KPiAgI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4K PiAgI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgo+ICsjaW5jbHVkZSA8eGVuL2h2bS9kbV9v cC5oPgo+ICAjaW5jbHVkZSA8eGVuL2h2bS9wYXJhbXMuaD4KPiAgI2luY2x1ZGUgPHhlbi94c20v Zmxhc2tfb3AuaD4KPiAgI2luY2x1ZGUgPHhlbi90bWVtLmg+Cj4gZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhjL3hjX3ByaXZhdGUuYyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYwo+IGluZGV4IGQ1 N2MzOWEuLjhlNDk2MzUgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCj4g KysrIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCj4gQEAgLTc3Niw2ICs3NzYsNzYgQEAgaW50 IHhjX2ZmczY0KHVpbnQ2NF90IHgpCj4gICAgICByZXR1cm4gbCA/IHhjX2ZmczMyKGwpIDogaCA/ IHhjX2ZmczMyKGgpICsgMzIgOiAwOwo+ICB9Cj4gCj4gK2ludCBkb19kbV9vcCh4Y19pbnRlcmZh Y2UgKnhjaCwgZG9taWRfdCBkb21pZCwgdW5zaWduZWQgaW50IG5yX2J1ZnMsIC4uLikKPiArewo+ ICsgICAgaW50IHJldCA9IC0xOwo+ICsgICAgc3RydWN0ICB7Cj4gKyAgICAgICAgdm9pZCAqdTsK PiArICAgICAgICB2b2lkICpoOwo+ICsgICAgfSAqYm91bmNlOwo+ICsgICAgREVDTEFSRV9IWVBF UkNBTExfQlVGRkVSKHhlbl9kbV9vcF9idWZfdCwgYnVmcyk7Cj4gKyAgICB2YV9saXN0IGFyZ3M7 Cj4gKyAgICB1bnNpZ25lZCBpbnQgaWR4Owo+ICsKPiArICAgIGJvdW5jZSA9IGNhbGxvYyhucl9i dWZzLCBzaXplb2YoKmJvdW5jZSkpOwo+ICsgICAgaWYgKCBib3VuY2UgPT0gTlVMTCApCj4gKyAg ICAgICAgZ290byBmYWlsMTsKPiArCj4gKyAgICBidWZzID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9h bGxvYyh4Y2gsIGJ1ZnMsIHNpemVvZigqYnVmcykgKiBucl9idWZzKTsKPiArICAgIGlmICggYnVm cyA9PSBOVUxMICkKPiArICAgICAgICBnb3RvIGZhaWwyOwo+ICsKPiArICAgIHZhX3N0YXJ0KGFy Z3MsIG5yX2J1ZnMpOwo+ICsgICAgZm9yIChpZHggPSAwOyBpZHggPCBucl9idWZzOyBpZHgrKykK PiArICAgIHsKPiArICAgICAgICB2b2lkICp1ID0gdmFfYXJnKGFyZ3MsIHZvaWQgKik7Cj4gKyAg ICAgICAgc2l6ZV90IHNpemUgPSB2YV9hcmcoYXJncywgc2l6ZV90KTsKPiArCj4gKyAgICAgICAg Ym91bmNlW2lkeF0uaCA9IHhlbmNhbGxfYWxsb2NfYnVmZmVyKHhjaC0+eGNhbGwsIHNpemUpOwo+ ICsgICAgICAgIGlmICggYm91bmNlW2lkeF0uaCA9PSBOVUxMICkKPiArICAgICAgICAgICAgZ290 byBmYWlsMzsKPiArCj4gKyAgICAgICAgbWVtY3B5KGJvdW5jZVtpZHhdLmgsIHUsIHNpemUpOwo+ ICsgICAgICAgIGJvdW5jZVtpZHhdLnUgPSB1Owo+ICsKPiArICAgICAgICBzZXRfeGVuX2d1ZXN0 X2hhbmRsZV9yYXcoYnVmc1tpZHhdLmgsIGJvdW5jZVtpZHhdLmgpOwo+ICsgICAgICAgIGJ1ZnNb aWR4XS5zaXplID0gc2l6ZTsKPiArICAgIH0KPiArICAgIHZhX2VuZChhcmdzKTsKPiArCj4gKyAg ICByZXQgPSB4ZW5jYWxsMyh4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfZG1fb3AsCj4gKyAgICAg ICAgICAgICAgICAgICBkb21pZCwgbnJfYnVmcywgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYnVm cykpOwo+ICsgICAgaWYgKCByZXQgPCAwICkKPiArICAgICAgICBnb3RvIGZhaWw0Owo+ICsKPiAr ICAgIHdoaWxlICggaWR4LS0gIT0gMCApCj4gKyAgICB7Cj4gKyAgICAgICAgbWVtY3B5KGJvdW5j ZVtpZHhdLnUsIGJvdW5jZVtpZHhdLmgsIGJ1ZnNbaWR4XS5zaXplKTsKPiArICAgICAgICB4ZW5j YWxsX2ZyZWVfYnVmZmVyKHhjaC0+eGNhbGwsIGJvdW5jZVtpZHhdLmgpOwo+ICsgICAgfQo+ICsK PiArICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGJ1ZnMpOwo+ICsKPiArICAgIGZy ZWUoYm91bmNlKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArCj4gKyBmYWlsNDoKPiArICAgIGlk eCA9IG5yX2J1ZnM7Cj4gKwo+ICsgZmFpbDM6Cj4gKyAgICB3aGlsZSAoIGlkeC0tICE9IDAgKQo+ ICsgICAgICAgIHhlbmNhbGxfZnJlZV9idWZmZXIoeGNoLT54Y2FsbCwgYm91bmNlW2lkeF0uaCk7 Cj4gKwo+ICsgICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYnVmcyk7Cj4gKwo+ICsg ZmFpbDI6Cj4gKyAgICBmcmVlKGJvdW5jZSk7Cj4gKwo+ICsgZmFpbDE6Cj4gKyAgICByZXR1cm4g cmV0Owo+ICt9Cj4gKwo+ICAvKgo+ICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gICAqIG1vZGU6IEMK PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oIGIvdG9vbHMvbGlieGMveGNf cHJpdmF0ZS5oCj4gaW5kZXggOTc0NDVhZS4uZjE5MTMyMCAxMDA2NDQKPiAtLS0gYS90b29scy9s aWJ4Yy94Y19wcml2YXRlLmgKPiArKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKPiBAQCAt NDIyLDYgKzQyMiw4IEBAIGludCB4Y192bV9ldmVudF9jb250cm9sKHhjX2ludGVyZmFjZSAqeGNo LCBkb21pZF90Cj4gZG9tYWluX2lkLCB1bnNpZ25lZCBpbnQgb3AsCj4gIHZvaWQgKnhjX3ZtX2V2 ZW50X2VuYWJsZSh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21haW5faWQsIGludAo+IHBh cmFtLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnBvcnQpOwo+IAo+ICtp bnQgZG9fZG1fb3AoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsIHVuc2lnbmVkIGlu dCBucl9idWZzLCAuLi4pOwo+ICsKPiAgI2VuZGlmIC8qIF9fWENfUFJJVkFURV9IX18gKi8KPiAK PiAgLyoKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9NYWtlZmlsZSBiL3hlbi9hcmNo L3g4Ni9odm0vTWFrZWZpbGUKPiBpbmRleCBmNzUwZDEzLi41ODY5ZDFiIDEwMDY0NAo+IC0tLSBh L3hlbi9hcmNoL3g4Ni9odm0vTWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL01ha2Vm aWxlCj4gQEAgLTIsNiArMiw3IEBAIHN1YmRpci15ICs9IHN2bQo+ICBzdWJkaXIteSArPSB2bXgK PiAKPiAgb2JqLXkgKz0gYXNpZC5vCj4gK29iai15ICs9IGRtLm8KPiAgb2JqLXkgKz0gZW11bGF0 ZS5vCj4gIG9iai15ICs9IGhwZXQubwo+ICBvYmoteSArPSBodm0ubwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2RtLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmYwMGJjMmMKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gQEAgLTAsMCArMSwxNDkgQEAKPiArLyoKPiArICog Q29weXJpZ2h0IChjKSAyMDE2IENpdHJpeCBTeXN0ZW1zIEluYy4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAo+ ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ IE1FUkNIQU5UQUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gTGljZW5zZSBmb3IKPiArICogbW9yZSBk ZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwo+IHdpdGgKPiArICogdGhpcyBwcm9n cmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqLwo+ ICsKPiArI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KPiArI2luY2x1ZGUgPHhlbi9oeXBl cmNhbGwuaD4KPiArI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgo+ICsKPiArI2luY2x1ZGUgPGFzbS9o dm0vaW9yZXEuaD4KPiArCj4gKyNpbmNsdWRlIDx4c20veHNtLmg+Cj4gKwo+ICtzdGF0aWMgYm9v bCBjb3B5X2J1Zl9mcm9tX2d1ZXN0KHhlbl9kbV9vcF9idWZfdCBidWZzW10sCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2J1ZnMsIHZvaWQgKmRzdCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4LCBzaXpl X3QgZHN0X3NpemUpCj4gK3sKPiArICAgIHNpemVfdCBzaXplID0gbWluX3Qoc2l6ZV90LCBkc3Rf c2l6ZSwgYnVmc1tpZHhdLnNpemUpOwo+ICsKPiArICAgIHJldHVybiAhY29weV9mcm9tX2d1ZXN0 KGRzdCwgYnVmc1tpZHhdLmgsIHNpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBjb3B5X2J1 Zl90b19ndWVzdCh4ZW5fZG1fb3BfYnVmX3QgYnVmc1tdLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYnVmcywgdW5zaWduZWQgaW50IGlkeCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3JjLCBzaXplX3Qgc3JjX3NpemUpCj4g K3sKPiArICAgIHNpemVfdCBzaXplID0gbWluX3Qoc2l6ZV90LCBidWZzW2lkeF0uc2l6ZSwgc3Jj X3NpemUpOwo+ICsKPiArICAgIHJldHVybiAhY29weV90b19ndWVzdChidWZzW2lkeF0uaCwgc3Jj LCBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBkbV9vcChkb21pZF90IGRvbWlkLAo+ICsg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZzLAo+ICsgICAgICAgICAgICAgICAg IHhlbl9kbV9vcF9idWZfdCBidWZzW10pCj4gK3sKPiArICAgIHN0cnVjdCBkb21haW4gKmQ7Cj4g KyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOwo+ICsgICAgbG9uZyByYzsKPiArCj4gKyAgICByYyA9 IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQoZG9taWQsICZkKTsKPiArICAgIGlmICggcmMg KQo+ICsgICAgICAgIHJldHVybiByYzsKPiArCj4gKyAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5l cl9kb21haW4oZCkgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgIHJjID0geHNtX2Rt X29wKFhTTV9ETV9QUklWLCBkKTsKPiArICAgIGlmICggcmMgKQo+ICsgICAgICAgIGdvdG8gb3V0 Owo+ICsKPiArICAgIGlmICggIWNvcHlfYnVmX2Zyb21fZ3Vlc3QoYnVmcywgbnJfYnVmcywgJm9w LCAwLCBzaXplb2Yob3ApKSApCj4gKyAgICB7Cj4gKyAgICAgICAgcmMgPSAtRUZBVUxUOwo+ICsg ICAgICAgIGdvdG8gb3V0Owo+ICsgICAgfQo+ICsKPiArICAgIHN3aXRjaCAoIG9wLm9wICkKPiAr ICAgIHsKPiArICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKPiArICAg ICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoICFyYyAmJgo+ICsgICAgICAgICAh Y29weV9idWZfdG9fZ3Vlc3QoYnVmcywgbnJfYnVmcywgMCwgJm9wLCBzaXplb2Yob3ApKSApCj4g KyAgICAgICAgcmMgPSAtRUZBVUxUOwo+ICsKPiArIG91dDoKPiArICAgIHJjdV91bmxvY2tfZG9t YWluKGQpOwo+ICsKPiArICAgIHJldHVybiByYzsKPiArfQo+ICsKPiAraW50IGNvbXBhdF9kbV9v cChkb21pZF90IGRvbWlkLAo+ICsgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9idWZz LAo+ICsgICAgICAgICAgICAgICAgIENPTVBBVF9IQU5ETEVfUEFSQU0oY29tcGF0X2RtX29wX2J1 Zl90KSBidWZzKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2J1ZiAqbmF0Owo+ICsgICAg dW5zaWduZWQgaW50IGk7Cj4gKyAgICBpbnQgcmMgPSAtRUZBVUxUOwo+ICsKPiArICAgIG5hdCA9 IHh6YWxsb2NfYXJyYXkoc3RydWN0IHhlbl9kbV9vcF9idWYsIG5yX2J1ZnMpOwo+ICsgICAgaWYg KCAhbmF0ICkKPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICBmb3IgKCBpID0g MDsgaSA8IG5yX2J1ZnM7IGkrKyApCj4gKyAgICB7Cj4gKyAgICAgICAgc3RydWN0IGNvbXBhdF9k bV9vcF9idWYgY21wOwo+ICsKPiArICAgICAgICBpZiAoIGNvcHlfZnJvbV9jb21wYXRfb2Zmc2V0 KCZjbXAsIGJ1ZnMsIGksIDEpICkKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKwo+ICsjZGVm aW5lIFhMQVRfZG1fb3BfYnVmX0hORExfaChfZF8sIF9zXykgXAo+ICsgICAgICAgIGd1ZXN0X2Zy b21fY29tcGF0X2hhbmRsZSgoX2RfKS0+aCwgKF9zXyktPmgpCj4gKwo+ICsgICAgICAgIFhMQVRf ZG1fb3BfYnVmKCZuYXRbaV0sICZjbXApOwo+ICsKPiArI3VuZGVmIFhMQVRfZG1fb3BfYnVmX0hO RExfaAo+ICsgICAgfQo+ICsKPiArICAgIHJjID0gZG1fb3AoZG9taWQsIG5yX2J1ZnMsIG5hdCk7 Cj4gKwo+ICsgb3V0Ogo+ICsgICAgeGZyZWUobmF0KTsKPiArCj4gKyAgICByZXR1cm4gcmM7Cj4g K30KPiArCj4gK2xvbmcgZG9fZG1fb3AoZG9taWRfdCBkb21pZCwKPiArICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbnJfYnVmcywKPiArICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHhlbl9kbV9vcF9idWZfdCkgYnVmcykKPiArewo+ICsgICAgc3RydWN0IHhlbl9kbV9vcF9i dWYgKm5hdDsKPiArICAgIGludCByYzsKPiArCj4gKyAgICBuYXQgPSB4emFsbG9jX2FycmF5KHN0 cnVjdCB4ZW5fZG1fb3BfYnVmLCBucl9idWZzKTsKPiArICAgIGlmICggIW5hdCApCj4gKyAgICAg ICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0 KG5hdCwgYnVmcywgMCwgbnJfYnVmcykgKQo+ICsgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICsK PiArICAgIHJjID0gZG1fb3AoZG9taWQsIG5yX2J1ZnMsIG5hdCk7Cj4gKwo+ICsgICAgeGZyZWUo bmF0KTsKPiArCj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZh cmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMt YmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9o dm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBpbmRleCAyZWMwODAwLi5jYjUwMWU1IDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiArKysgYi94ZW4vYXJjaC94ODYv aHZtL2h2bS5jCj4gQEAgLTM4NTIsNiArMzg1Miw3IEBAIHN0YXRpYyBjb25zdCBoeXBlcmNhbGxf dGFibGVfdAo+IGh2bV9oeXBlcmNhbGxfdGFibGVbXSA9IHsKPiAgICAgIENPTVBBVF9DQUxMKHBs YXRmb3JtX29wKSwKPiAgICAgIENPTVBBVF9DQUxMKG1tdWV4dF9vcCksCj4gICAgICBIWVBFUkNB TEwoeGVucG11X29wKSwKPiArICAgIENPTVBBVF9DQUxMKGRtX29wKSwKPiAgICAgIEhZUEVSQ0FM TChhcmNoXzEpCj4gIH07Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwu YyBiL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYwo+IGluZGV4IDcwYTMwYTUuLjhkZDE5ZGUgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jCj4gKysrIGIveGVuL2FyY2gveDg2 L2h5cGVyY2FsbC5jCj4gQEAgLTY2LDYgKzY2LDcgQEAgY29uc3QgaHlwZXJjYWxsX2FyZ3NfdAo+ IGh5cGVyY2FsbF9hcmdzX3RhYmxlW05SX2h5cGVyY2FsbHNdID0KPiAgICAgIEFSR1Moa2V4ZWNf b3AsIDIpLAo+ICAgICAgQVJHUyh0bWVtX29wLCAxKSwKPiAgICAgIEFSR1MoeGVucG11X29wLCAy KSwKPiArICAgIEFSR1MoZG1fb3AsIDMpLAo+ICAgICAgQVJHUyhtY2EsIDEpLAo+ICAgICAgQVJH UyhhcmNoXzEsIDEpLAo+ICB9Owo+IEBAIC0xMjgsNiArMTI5LDcgQEAgc3RhdGljIGNvbnN0IGh5 cGVyY2FsbF90YWJsZV90IHB2X2h5cGVyY2FsbF90YWJsZVtdID0gewo+ICAgICAgSFlQRVJDQUxM KHRtZW1fb3ApLAo+ICAjZW5kaWYKPiAgICAgIEhZUEVSQ0FMTCh4ZW5wbXVfb3ApLAo+ICsgICAg Q09NUEFUX0NBTEwoZG1fb3ApLAo+ICAgICAgSFlQRVJDQUxMKG1jYSksCj4gICAgICBIWVBFUkNB TEwoYXJjaF8xKSwKPiAgfTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvTWFrZWZpbGUgYi94 ZW4vaW5jbHVkZS9NYWtlZmlsZQo+IGluZGV4IDFlODBhMGIuLmFjYTdmMjAgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvTWFrZWZpbGUKPiArKysgYi94ZW4vaW5jbHVkZS9NYWtlZmlsZQo+IEBA IC0yNyw2ICsyNyw3IEBAIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0gY29tcGF0L2FyY2gt eDg2L3hlbi0KPiBtY2EuaAo+ICBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9h cmNoLXg4Ni94ZW4uaAo+ICBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9hcmNo LXg4Ni94ZW4tJChjb21wYXQtYXJjaC15KS5oCj4gIGhlYWRlcnMtJChDT05GSUdfWDg2KSAgICAg Kz0gY29tcGF0L2h2bS9odm1fdmNwdS5oCj4gK2hlYWRlcnMtJChDT05GSUdfWDg2KSAgICAgKz0g Y29tcGF0L2h2bS9kbV9vcC5oCj4gIGhlYWRlcnMteSAgICAgICAgICAgICAgICAgKz0gY29tcGF0 L2FyY2gtJChjb21wYXQtYXJjaC15KS5oIGNvbXBhdC9wbXUuaAo+IGNvbXBhdC94bGF0LmgKPiAg aGVhZGVycy0kKENPTkZJR19GTEFTSykgICArPSBjb21wYXQveHNtL2ZsYXNrX29wLmgKPiAKPiBk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCj4gYi94ZW4vaW5jbHVk ZS9wdWJsaWMvaHZtL2RtX29wLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjQwZTdhOTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2 bS9kbV9vcC5oCj4gQEAgLTAsMCArMSw3MSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MTYsIENpdHJpeCBTeXN0ZW1zIEluYwo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+IGNvcHkK PiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZQo+IGlzCj4gKyAqIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiBFWFBSRVNTIE9SCj4gKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YK PiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PCj4gRVZFTlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMK PiBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPiBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiBPVEhFUgo+ICsg KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBf X1hFTl9QVUJMSUNfSFZNX0RNX09QX0hfXwo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19IVk1fRE1f T1BfSF9fCj4gKwo+ICsjaWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xT X18pCj4gKwo+ICsjaW5jbHVkZSAiLi4veGVuLmgiCj4gKwo+ICsjZGVmaW5lIFhFTl9ETU9QX2lu dmFsaWQgMAo+ICsKPiArc3RydWN0IHhlbl9kbV9vcCB7Cj4gKyAgICB1aW50MzJfdCBvcDsKPiAr fTsKPiArCj4gK3N0cnVjdCB4ZW5fZG1fb3BfYnVmIHsKPiArICAgIFhFTl9HVUVTVF9IQU5ETEUo dm9pZCkgaDsKPiArICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKPiArfTsKPiArdHlwZWRlZiBzdHJ1 Y3QgeGVuX2RtX29wX2J1ZiB4ZW5fZG1fb3BfYnVmX3Q7Cj4gK0RFRklORV9YRU5fR1VFU1RfSEFO RExFKHhlbl9kbV9vcF9idWZfdCk7Cj4gKwo+ICsvKiBgIGVudW0gbmVnX2Vycm5vdmFsCj4gKyAq IGAgSFlQRVJWSVNPUl9kbV9vcChkb21pZF90IGRvbWlkLAo+ICsgKiBgICAgICAgICAgICAgICAg ICAgeGVuX2RtX29wX2J1Zl90IGJ1ZnNbXSwKPiArICogYCAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBucl9idWZzKQo+ICsgKiBgCj4gKyAqCj4gKyAqIEBkb21pZCBpcyB0aGUgZG9tYWlu IHRoZSBoeXBlcmNhbGwgb3BlcmF0ZXMgb24uCj4gKyAqIEBidWZzIHBvaW50cyB0byBhbiBhcnJh eSBvZiBidWZmZXJzIHdoZXJlIEBidWZzWzBdIGNvbnRhaW5zIGEgc3RydWN0Cj4gKyAqIHhlbl9k bV9vcCwgZGVzY3JpYmluZyB0aGUgc3BlY2lmaWMgZGV2aWNlIG1vZGVsIG9wZXJhdGlvbiBhbmQg aXRzCj4gKyAqIHBhcmFtZXRlcnMuCj4gKyAqIEBidWZzWzEuLl0gbWF5IGJlIHJlZmVyZW5jZWQg aW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwdXJwb3NlcyBvZgo+ICsgKiBwYXNzaW5nIGV4dHJh IGluZm9ybWF0aW9uIHRvIG9yIGZyb20gdGhlIGRvbWFpbi4KPiArICogQG5yX2J1ZnMgaXMgdGhl IG51bWJlciBvZiBidWZmZXJzIGluIHRoZSBAYnVmcyBhcnJheS4KPiArICovCj4gKwo+ICsjZW5k aWYgLyogX19YRU5fXyB8fCBfX1hFTl9UT09MU19fICovCj4gKwo+ICsjZW5kaWYgLyogX19YRU5f UFVCTElDX0hWTV9ETV9PUF9IX18gKi8KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZhcmlhYmxlczoK PiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMtYmFzaWMtb2Zm c2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiAr ICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oIGIv eGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCj4gaW5kZXggNjU5MzAyNi4uOTFiYThiYiAxMDA2NDQK PiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKPiArKysgYi94ZW4vaW5jbHVkZS9wdWJs aWMveGVuLmgKPiBAQCAtMTIwLDYgKzEyMCw3IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl91bG9uZ190KTsKPiAgI2RlZmluZSBfX0hZUEVSVklTT1JfdG1lbV9vcCAgICAgICAgICAgICAg MzgKPiAgI2RlZmluZSBfX0hZUEVSVklTT1JfeGNfcmVzZXJ2ZWRfb3AgICAgICAgMzkgLyogcmVz ZXJ2ZWQgZm9yIFhlbkNsaWVudCAqLwo+ICAjZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5wbXVfb3Ag ICAgICAgICAgICA0MAo+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9kbV9vcCAgICAgICAgICAgICAg ICA0MQo+IAo+ICAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIGRlZmluaXRpb25z LiAqLwo+ICAjZGVmaW5lIF9fSFlQRVJWSVNPUl9hcmNoXzAgICAgICAgICAgICAgICA0OAo+IGRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaHlwZXJjYWxsLmggYi94ZW4vaW5jbHVkZS94ZW4v aHlwZXJjYWxsLmgKPiBpbmRleCAyMDdhMGU4Li44ZDQ4MjRmIDEwMDY0NAo+IC0tLSBhL3hlbi9p bmNsdWRlL3hlbi9oeXBlcmNhbGwuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9oeXBlcmNhbGwu aAo+IEBAIC0xNSw2ICsxNSw3IEBACj4gICNpbmNsdWRlIDxwdWJsaWMvdG1lbS5oPgo+ICAjaW5j bHVkZSA8cHVibGljL3ZlcnNpb24uaD4KPiAgI2luY2x1ZGUgPHB1YmxpYy9wbXUuaD4KPiArI2lu Y2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KPiAgI2luY2x1ZGUgPGFzbS9oeXBlcmNhbGwuaD4K PiAgI2luY2x1ZGUgPHhzbS94c20uaD4KPiAKPiBAQCAtMTQxLDYgKzE0MiwxMiBAQCBkb194ZW5v cHJvZl9vcChpbnQgb3AsCj4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpOwo+ICBl eHRlcm4gbG9uZwo+ICBkb194ZW5wbXVfb3AodW5zaWduZWQgaW50IG9wLAo+IFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0oeGVuX3BtdV9wYXJhbXNfdCkgYXJnKTsKPiAKPiArZXh0ZXJuIGxvbmcKPiAr ZG9fZG1fb3AoCj4gKyAgICBkb21pZF90IGRvbWlkLAo+ICsgICAgdW5zaWduZWQgaW50IG5yX2J1 ZnMsCj4gKyAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kbV9vcF9idWZfdCkgYnVmcyk7 Cj4gKwo+ICAjaWZkZWYgQ09ORklHX0NPTVBBVAo+IAo+ICBleHRlcm4gaW50Cj4gQEAgLTE5MCw2 ICsxOTcsMTQgQEAgZXh0ZXJuIGludCBjb21wYXRfbXVsdGljYWxsKAo+ICAgICAgWEVOX0dVRVNU X0hBTkRMRV9QQVJBTShtdWx0aWNhbGxfZW50cnlfY29tcGF0X3QpIGNhbGxfbGlzdCwKPiAgICAg IHVpbnQzMl90IG5yX2NhbGxzKTsKPiAKPiArI2luY2x1ZGUgPGNvbXBhdC9odm0vZG1fb3AuaD4K PiArCj4gK2V4dGVybiBpbnQKPiArY29tcGF0X2RtX29wKAo+ICsgICAgZG9taWRfdCBkb21pZCwK PiArICAgIHVuc2lnbmVkIGludCBucl9idWZzLAo+ICsgICAgQ09NUEFUX0hBTkRMRV9QQVJBTShj b21wYXRfZG1fb3BfYnVmX3QpIGJ1ZnMpOwo+ICsKPiAgI2VuZGlmCj4gCj4gIHZvaWQgYXJjaF9n ZXRfeGVuX2NhcHMoeGVuX2NhcGFiaWxpdGllc19pbmZvX3QgKmluZm8pOwo+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0Cj4gaW5kZXggYmRm MWQwNS4uMGEyZjg0ZCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94bGF0LmxzdAo+ICsrKyBi L3hlbi9pbmNsdWRlL3hsYXQubHN0Cj4gQEAgLTEyOSwzICsxMjksNCBAQAo+ICA/CWZsYXNrX3Nl dGVuZm9yY2UJCXhzbS9mbGFza19vcC5oCj4gICEJZmxhc2tfc2lkX2NvbnRleHQJCXhzbS9mbGFz a19vcC5oCj4gID8JZmxhc2tfdHJhbnNpdGlvbgkJeHNtL2ZsYXNrX29wLmgKPiArIQlkbV9vcF9i dWYJCQlodm0vZG1fb3AuaAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaCBi L3hlbi9pbmNsdWRlL3hzbS9kdW1teS5oCj4gaW5kZXggOTU0NjBhZi4uYjIwNmY1YSAxMDA2NDQK PiAtLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hzbS9k dW1teS5oCj4gQEAgLTcyNyw2ICs3MjcsMTIgQEAgc3RhdGljIFhTTV9JTkxJTkUgaW50IHhzbV9w bXVfb3AKPiAoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludAo+ ICAgICAgfQo+ICB9Cj4gCj4gK3N0YXRpYyBYU01fSU5MSU5FIGludCB4c21fZG1fb3AoWFNNX0RF RkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAgIFhTTV9BU1NFUlRfQUNUSU9O KFhTTV9ETV9QUklWKTsKPiArICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBj dXJyZW50LT5kb21haW4sIGQpOwo+ICt9Cj4gKwo+ICAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwo+ IAo+ICAjaW5jbHVkZSA8cHVibGljL3ZlcnNpb24uaD4KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCj4gaW5kZXggNWRjNTlkZC4uZTJk MzM2ZiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94c20veHNtLmgKPiArKysgYi94ZW4vaW5j bHVkZS94c20veHNtLmgKPiBAQCAtMTg0LDYgKzE4NCw3IEBAIHN0cnVjdCB4c21fb3BlcmF0aW9u cyB7Cj4gICAgICBpbnQgKCppb3BvcnRfcGVybWlzc2lvbikgKHN0cnVjdCBkb21haW4gKmQsIHVp bnQzMl90IHMsIHVpbnQzMl90IGUsIHVpbnQ4X3QKPiBhbGxvdyk7Cj4gICAgICBpbnQgKCppb3Bv cnRfbWFwcGluZykgKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHMsIHVpbnQzMl90IGUsIHVp bnQ4X3QKPiBhbGxvdyk7Cj4gICAgICBpbnQgKCpwbXVfb3ApIChzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBpbnQgb3ApOwo+ICsgICAgaW50ICgqZG1fb3ApIChzdHJ1Y3QgZG9tYWluICpkKTsK PiAgI2VuZGlmCj4gICAgICBpbnQgKCp4ZW5fdmVyc2lvbikgKHVpbnQzMl90IGNtZCk7Cj4gIH07 Cj4gQEAgLTcyMiw2ICs3MjMsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgeHNtX3BtdV9vcCAoeHNt X2RlZmF1bHRfdCBkZWYsCj4gc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50Cj4gICAgICBy ZXR1cm4geHNtX29wcy0+cG11X29wKGQsIG9wKTsKPiAgfQo+IAo+ICtzdGF0aWMgaW5saW5lIGlu dCB4c21fZG1fb3AoeHNtX2RlZmF1bHRfdCBkZWYsIHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiAr ICAgIHJldHVybiB4c21fb3BzLT5kbV9vcChkKTsKPiArfQo+ICsKPiAgI2VuZGlmIC8qIENPTkZJ R19YODYgKi8KPiAKPiAgc3RhdGljIGlubGluZSBpbnQgeHNtX3hlbl92ZXJzaW9uICh4c21fZGVm YXVsdF90IGRlZiwgdWludDMyX3Qgb3ApCj4gZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svaG9v a3MuYyBiL3hlbi94c20vZmxhc2svaG9va3MuYwo+IGluZGV4IDA0MGEyNTEuLjM4M2RkNGYgMTAw NjQ0Cj4gLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCj4gKysrIGIveGVuL3hzbS9mbGFzay9o b29rcy5jCj4gQEAgLTE2MzUsNiArMTYzNSwxMiBAQCBzdGF0aWMgaW50IGZsYXNrX3BtdV9vcCAo c3RydWN0IGRvbWFpbiAqZCwKPiB1bnNpZ25lZCBpbnQgb3ApCj4gICAgICAgICAgcmV0dXJuIC1F UEVSTTsKPiAgICAgIH0KPiAgfQo+ICsKPiArc3RhdGljIGludCBmbGFza19kbV9vcChzdHJ1Y3Qg ZG9tYWluICpkKQo+ICt7Cj4gKyAgICByZXR1cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFT U19IVk0sIEhWTV9fRE0pOwo+ICt9Cj4gKwo+ICAjZW5kaWYgLyogQ09ORklHX1g4NiAqLwo+IAo+ ICBzdGF0aWMgaW50IGZsYXNrX3hlbl92ZXJzaW9uICh1aW50MzJfdCBvcCkKPiBAQCAtMTgxNCw2 ICsxODIwLDcgQEAgc3RhdGljIHN0cnVjdCB4c21fb3BlcmF0aW9ucyBmbGFza19vcHMgPSB7Cj4g ICAgICAuaW9wb3J0X3Blcm1pc3Npb24gPSBmbGFza19pb3BvcnRfcGVybWlzc2lvbiwKPiAgICAg IC5pb3BvcnRfbWFwcGluZyA9IGZsYXNrX2lvcG9ydF9tYXBwaW5nLAo+ICAgICAgLnBtdV9vcCA9 IGZsYXNrX3BtdV9vcCwKPiArICAgIC5kbV9vcCA9IGZsYXNrX2RtX29wLAo+ICAjZW5kaWYKPiAg ICAgIC54ZW5fdmVyc2lvbiA9IGZsYXNrX3hlbl92ZXJzaW9uLAo+ICB9Owo+IC0tCj4gMi4xLjQK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK