From mboxrd@z Thu Jan 1 00:00:00 1970 From: Owen Smith Subject: Re: [PATCH 1/2 v3] xenfb: Use Input Handlers directly Date: Wed, 23 Aug 2017 09:11:09 +0000 Message-ID: <119a989bcec34b97827bf655bd10fb2f@AMSPEX02CL02.citrite.net> References: <1501081831-9587-1-git-send-email-owen.smith@citrix.com> <1501081831-9587-2-git-send-email-owen.smith@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dkRgu-0005FP-1h for xen-devel@lists.xenproject.org; Wed, 23 Aug 2017 09:11:12 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: Anthony Perard , "xen-devel@lists.xenproject.org" , "qemu-devel@nongnu.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFN0ZWZhbm8gU3RhYmVsbGluaSBb bWFpbHRvOnNzdGFiZWxsaW5pQGtlcm5lbC5vcmddCj4gU2VudDogMjIgQXVndXN0IDIwMTcgMDA6 MTIKPiBUbzogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgo+IENjOiBxZW11LWRl dmVsQG5vbmdudS5vcmc7IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsKPiBzc3RhYmVs bGluaUBrZXJuZWwub3JnOyBBbnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNv bT4KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMiB2M10geGVuZmI6IFVzZSBJbnB1dCBIYW5kbGVy cyBkaXJlY3RseQo+IAo+IEFudGhvbnksCj4gCj4gVGhlIGNvZGUgbG9va3MgZ29vZC4gSSB0ZXN0 ZWQgdGhpcyBwYXRjaCB3aXRoIExpbnV4IGd1ZXN0cyBhbmQgc2VlbXMgdG8gd29yawo+IE9LLCBj YW4geW91IGFsc28gY29uZmlybT8KPiAKPiBPbmUgY29tbWVudCBiZWxvdy4KPiAKPiAKPiBPbiBX ZWQsIDI2IEp1bCAyMDE3LCBPd2VuIFNtaXRoIHdyb3RlOgo+ID4gQXZvaWQgdGhlIHVubmVjY2Vz c2FyeSBjYWxscyB0aHJvdWdoIHRoZSBpbnB1dC1sZWdhY3kuYyBmaWxlIGJ5IHVzaW5nCj4gPiB0 aGUgcWVtdV9pbnB1dF9oYW5kbGVyXyooKSBjYWxscyBkaXJlY3RseS4gVGhpcyBkaWQgcmVxdWly ZSByZXdvcmtpbmcKPiA+IHRoZSBldmVudCBhbmQgc3luYyBoYW5kbGVycyBhbmQgYSBkaXJlY3Qg bWFwcGluZyBmcm9tIFFFTVUncyBxY29kZXMgdG8KPiA+IGxpbnV4IEtFWV8qIGlkZW50aWZpZXJz IHJlcXVpcmVkIGJ5IHRoZSByaW5nIHByb3RvY29sLiBSZW1vdmVzIHRoZQo+ID4gc2NhbmNvZGUy bGludXggbWFwcGluZywgYW5kIHN1cHBvcnRpbmcgZG9jdW1lbnRpb24uCj4gPgo+ID4gU2lnbmVk LW9mZi1ieTogT3dlbiBTbWl0aCA8b3dlbi5zbWl0aEBjaXRyaXguY29tPgo+ID4gLS0tCj4gPiAg aHcvZGlzcGxheS94ZW5mYi5jIHwgNDAxCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyNDcgaW5zZXJ0 aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQo+ID4KPiA+IGRpZmYgLS1naXQgYS9ody9kaXNwbGF5 L3hlbmZiLmMgYi9ody9kaXNwbGF5L3hlbmZiLmMgaW5kZXgKPiA+IGRmOGI3OGYuLmU0MTI3NTMg MTAwNjQ0Cj4gPiAtLS0gYS9ody9kaXNwbGF5L3hlbmZiLmMKPiA+ICsrKyBiL2h3L2Rpc3BsYXkv eGVuZmIuYwo+ID4gQEAgLTI3LDYgKzI3LDcgQEAKPiA+ICAjaW5jbHVkZSAicWVtdS9vc2RlcC5o Igo+ID4KPiA+ICAjaW5jbHVkZSAiaHcvaHcuaCIKPiA+ICsjaW5jbHVkZSAidWkvaW5wdXQuaCIK PiA+ICAjaW5jbHVkZSAidWkvY29uc29sZS5oIgo+ID4gICNpbmNsdWRlICJody94ZW4veGVuX2Jh Y2tlbmQuaCIKPiA+Cj4gPiBAQCAtMzcsOSArMzgsNyBAQAo+ID4KPiA+ICAjaW5jbHVkZSAidHJh Y2UuaCIKPiA+Cj4gPiAtI2lmbmRlZiBCVE5fTEVGVAo+ID4gLSNkZWZpbmUgQlROX0xFRlQgMHgx MTAgLyogZnJvbSA8bGludXgvaW5wdXQuaD4gKi8gLSNlbmRpZgo+ID4gKyNpbmNsdWRlICJzdGFu ZGFyZC1oZWFkZXJzL2xpbnV4L2lucHV0LmgiCj4gPgo+ID4gIC8qCj4gPiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ ID4gKi8KPiA+Cj4gPiBAQCAtNTEsOSArNTAsMTAgQEAgc3RydWN0IGNvbW1vbiB7Cj4gPiAgc3Ry dWN0IFhlbklucHV0IHsKPiA+ICAgICAgc3RydWN0IGNvbW1vbiBjOwo+ID4gICAgICBpbnQgYWJz X3BvaW50ZXJfd2FudGVkOyAvKiBXaGV0aGVyIGd1ZXN0IHN1cHBvcnRzIGFic29sdXRlIHBvaW50 ZXIgKi8KPiA+IC0gICAgaW50IGJ1dHRvbl9zdGF0ZTsgICAgICAgLyogTGFzdCBzZWVuIHBvaW50 ZXIgYnV0dG9uIHN0YXRlICovCj4gPiAtICAgIGludCBleHRlbmRlZDsKPiA+IC0gICAgUUVNVVB1 dE1vdXNlRW50cnkgKnFtb3VzZTsKPiA+ICsgICAgUWVtdUlucHV0SGFuZGxlclN0YXRlICpxa2Jk Owo+ID4gKyAgICBRZW11SW5wdXRIYW5kbGVyU3RhdGUgKnFtb3U7Cj4gPiArICAgIGludCBtb3Vz ZV9heGVzW0lOUFVUX0FYSVNfX01BWF07Cj4gPiArICAgIGludCBtb3VzZV93aGVlbDsKPiA+ICB9 Owo+ID4KPiA+ICAjZGVmaW5lIFVQX1FVRVVFIDgKPiA+IEBAIC0xMjAsNzcgKzEyMCwxMjUgQEAg c3RhdGljIHZvaWQgY29tbW9uX3VuYmluZChzdHJ1Y3QgY29tbW9uICpjKQo+ID4KPiA+ICAvKgo+ ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiA+ICovCj4gPgo+ID4gLSNpZiAwCj4gPiAtLyoKPiA+IC0gKiBUaGVz ZSB0d28gdGFibGVzIGFyZSBub3QgbmVlZGVkIGFueSBtb3JlLCBidXQgbGVmdCBpbiBoZXJlCj4g PiAtICogaW50ZW50aW9uYWxseSBhcyBkb2N1bWVudGF0aW9uLCB0byBzaG93IGhvdyBzY2FuY29k ZTJsaW51eFtdCj4gPiAtICogd2FzIGdlbmVyYXRlZC4KPiA+IC0gKgo+ID4gLSAqIFRhYmxlcyB0 byBtYXAgZnJvbSBzY2FuY29kZSB0byBMaW51eCBpbnB1dCBsYXllciBrZXljb2RlLgo+ID4gLSAq IFNjYW5jb2RlcyBhcmUgaGFyZHdhcmUtc3BlY2lmaWMuICBUaGVzZSBtYXBzIGFzc3VtZXMgYQo+ ID4gLSAqIHN0YW5kYXJkIEFUIG9yIFBTLzIga2V5Ym9hcmQgd2hpY2ggaXMgd2hhdCBRRU1VIGZl ZWRzIHVzLgo+ID4gLSAqLwo+ID4gLWNvbnN0IHVuc2lnbmVkIGNoYXIgYXRrYmRfc2V0Ml9rZXlj b2RlWzUxMl0gPSB7Cj4gPiAtCj4gPiAtICAgICAwLCA2NywgNjUsIDYzLCA2MSwgNTksIDYwLCA4 OCwgIDAsIDY4LCA2NiwgNjQsIDYyLCAxNSwgNDEsMTE3LAo+ID4gLSAgICAgMCwgNTYsIDQyLCA5 MywgMjksIDE2LCAgMiwgIDAsICAwLCAgMCwgNDQsIDMxLCAzMCwgMTcsICAzLCAgMCwKPiA+IC0g ICAgIDAsIDQ2LCA0NSwgMzIsIDE4LCAgNSwgIDQsIDk1LCAgMCwgNTcsIDQ3LCAzMywgMjAsIDE5 LCAgNiwxODMsCj4gPiAtICAgICAwLCA0OSwgNDgsIDM1LCAzNCwgMjEsICA3LDE4NCwgIDAsICAw LCA1MCwgMzYsIDIyLCAgOCwgIDksMTg1LAo+ID4gLSAgICAgMCwgNTEsIDM3LCAyMywgMjQsIDEx LCAxMCwgIDAsICAwLCA1MiwgNTMsIDM4LCAzOSwgMjUsIDEyLCAgMCwKPiA+IC0gICAgIDAsIDg5 LCA0MCwgIDAsIDI2LCAxMywgIDAsICAwLCA1OCwgNTQsIDI4LCAyNywgIDAsIDQzLCAgMCwgODUs Cj4gPiAtICAgICAwLCA4NiwgOTEsIDkwLCA5MiwgIDAsIDE0LCA5NCwgIDAsIDc5LDEyNCwgNzUs IDcxLDEyMSwgIDAsICAwLAo+ID4gLSAgICA4MiwgODMsIDgwLCA3NiwgNzcsIDcyLCAgMSwgNjks IDg3LCA3OCwgODEsIDc0LCA1NSwgNzMsIDcwLCA5OSwKPiA+IC0KPiA+IC0gICAgICAwLCAgMCwg IDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAo+ ID4gLSAgICAyMTcsMTAwLDI1NSwgIDAsIDk3LDE2NSwgIDAsICAwLDE1NiwgIDAsICAwLCAgMCwg IDAsICAwLCAgMCwxMjUsCj4gPiAtICAgIDE3MywxMTQsICAwLDExMywgIDAsICAwLCAgMCwxMjYs MTI4LCAgMCwgIDAsMTQwLCAgMCwgIDAsICAwLDEyNywKPiA+IC0gICAgMTU5LCAgMCwxMTUsICAw LDE2NCwgIDAsICAwLDExNiwxNTgsICAwLDE1MCwxNjYsICAwLCAgMCwgIDAsMTQyLAo+ID4gLSAg ICAxNTcsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLDE1NSwgIDAsIDk4LCAgMCwgIDAsMTYz LCAgMCwgIDAsCj4gPiAtICAgIDIyNiwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLDI1 NSwgOTYsICAwLCAgMCwgIDAsMTQzLCAgMCwKPiA+IC0gICAgICAwLCAgMCwgIDAsICAwLCAgMCwg IDAsICAwLCAgMCwgIDAsMTA3LCAgMCwxMDUsMTAyLCAgMCwgIDAsMTEyLAo+ID4gLSAgICAxMTAs MTExLDEwOCwxMTIsMTA2LDEwMywgIDAsMTE5LCAgMCwxMTgsMTA5LCAgMCwgOTksMTA0LDExOSwg IDAsCj4gPiAtCj4gPiAtfTsKPiA+IC0KPiA+IC1jb25zdCB1bnNpZ25lZCBjaGFyIGF0a2JkX3Vu eGxhdGVfdGFibGVbMTI4XSA9IHsKPiA+IC0KPiA+IC0gICAgICAwLDExOCwgMjIsIDMwLCAzOCwg MzcsIDQ2LCA1NCwgNjEsIDYyLCA3MCwgNjksIDc4LCA4NSwxMDIsIDEzLAo+ID4gLSAgICAgMjEs IDI5LCAzNiwgNDUsIDQ0LCA1MywgNjAsIDY3LCA2OCwgNzcsIDg0LCA5MSwgOTAsIDIwLCAyOCwg MjcsCj4gPiAtICAgICAzNSwgNDMsIDUyLCA1MSwgNTksIDY2LCA3NSwgNzYsIDgyLCAxNCwgMTgs IDkzLCAyNiwgMzQsIDMzLCA0MiwKPiA+IC0gICAgIDUwLCA0OSwgNTgsIDY1LCA3MywgNzQsIDg5 LDEyNCwgMTcsIDQxLCA4OCwgIDUsICA2LCAgNCwgMTIsICAzLAo+ID4gLSAgICAgMTEsICAyLCAx MCwgIDEsICA5LDExOSwxMjYsMTA4LDExNywxMjUsMTIzLDEwNywxMTUsMTE2LDEyMSwxMDUsCj4g PiAtICAgIDExNCwxMjIsMTEyLDExMywxMjcsIDk2LCA5NywxMjAsICA3LCAxNSwgMjMsIDMxLCAz OSwgNDcsIDU1LCA2MywKPiA+IC0gICAgIDcxLCA3OSwgODYsIDk0LCAgOCwgMTYsIDI0LCAzMiwg NDAsIDQ4LCA1NiwgNjQsIDcyLCA4MCwgODcsMTExLAo+ID4gLSAgICAgMTksIDI1LCA1NywgODEs IDgzLCA5MiwgOTUsIDk4LCA5OSwxMDAsMTAxLDEwMywxMDQsMTA2LDEwOSwxMTAKPiA+IC0KPiA+ ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtleW1hcF9xY29kZVtRX0tFWV9DT0RFX19NQVhd ID0gewo+ID4gKyAgICBbUV9LRVlfQ09ERV9FU0NdICAgICAgICAgICAgICAgICA9IEtFWV9FU0Ms Cj4gPiArICAgIFtRX0tFWV9DT0RFXzFdICAgICAgICAgICAgICAgICAgID0gS0VZXzEsCj4gPiAr ICAgIFtRX0tFWV9DT0RFXzJdICAgICAgICAgICAgICAgICAgID0gS0VZXzIsCj4gPiArICAgIFtR X0tFWV9DT0RFXzNdICAgICAgICAgICAgICAgICAgID0gS0VZXzMsCj4gPiArICAgIFtRX0tFWV9D T0RFXzRdICAgICAgICAgICAgICAgICAgID0gS0VZXzQsCj4gPiArICAgIFtRX0tFWV9DT0RFXzVd ICAgICAgICAgICAgICAgICAgID0gS0VZXzUsCj4gPiArICAgIFtRX0tFWV9DT0RFXzZdICAgICAg ICAgICAgICAgICAgID0gS0VZXzYsCj4gPiArICAgIFtRX0tFWV9DT0RFXzddICAgICAgICAgICAg ICAgICAgID0gS0VZXzcsCj4gPiArICAgIFtRX0tFWV9DT0RFXzhdICAgICAgICAgICAgICAgICAg ID0gS0VZXzgsCj4gPiArICAgIFtRX0tFWV9DT0RFXzldICAgICAgICAgICAgICAgICAgID0gS0VZ XzksCj4gPiArICAgIFtRX0tFWV9DT0RFXzBdICAgICAgICAgICAgICAgICAgID0gS0VZXzAsCj4g PiArICAgIFtRX0tFWV9DT0RFX01JTlVTXSAgICAgICAgICAgICAgID0gS0VZX01JTlVTLAo+ID4g KyAgICBbUV9LRVlfQ09ERV9FUVVBTF0gICAgICAgICAgICAgICA9IEtFWV9FUVVBTCwKPiA+ICsg ICAgW1FfS0VZX0NPREVfQkFDS1NQQUNFXSAgICAgICAgICAgPSBLRVlfQkFDS1NQQUNFLAo+ID4g Kwo+ID4gKyAgICBbUV9LRVlfQ09ERV9UQUJdICAgICAgICAgICAgICAgICA9IEtFWV9UQUIsCj4g PiArICAgIFtRX0tFWV9DT0RFX1FdICAgICAgICAgICAgICAgICAgID0gS0VZX1EsCj4gPiArICAg IFtRX0tFWV9DT0RFX1ddICAgICAgICAgICAgICAgICAgID0gS0VZX1csCj4gPiArICAgIFtRX0tF WV9DT0RFX0VdICAgICAgICAgICAgICAgICAgID0gS0VZX0UsCj4gPiArICAgIFtRX0tFWV9DT0RF X1JdICAgICAgICAgICAgICAgICAgID0gS0VZX1IsCj4gPiArICAgIFtRX0tFWV9DT0RFX1RdICAg ICAgICAgICAgICAgICAgID0gS0VZX1QsCj4gPiArICAgIFtRX0tFWV9DT0RFX1ldICAgICAgICAg ICAgICAgICAgID0gS0VZX1ksCj4gPiArICAgIFtRX0tFWV9DT0RFX1VdICAgICAgICAgICAgICAg ICAgID0gS0VZX1UsCj4gPiArICAgIFtRX0tFWV9DT0RFX0ldICAgICAgICAgICAgICAgICAgID0g S0VZX0ksCj4gPiArICAgIFtRX0tFWV9DT0RFX09dICAgICAgICAgICAgICAgICAgID0gS0VZX08s Cj4gPiArICAgIFtRX0tFWV9DT0RFX1BdICAgICAgICAgICAgICAgICAgID0gS0VZX1AsCj4gPiAr ICAgIFtRX0tFWV9DT0RFX0JSQUNLRVRfTEVGVF0gICAgICAgID0gS0VZX0xFRlRCUkFDRSwKPiA+ ICsgICAgW1FfS0VZX0NPREVfQlJBQ0tFVF9SSUdIVF0gICAgICAgPSBLRVlfUklHSFRCUkFDRSwK PiA+ICsgICAgW1FfS0VZX0NPREVfUkVUXSAgICAgICAgICAgICAgICAgPSBLRVlfRU5URVIsCj4g PiArCj4gPiArICAgIFtRX0tFWV9DT0RFX0NUUkxdICAgICAgICAgICAgICAgID0gS0VZX0xFRlRD VFJMLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9BXSAgICAgICAgICAgICAgICAgICA9IEtFWV9BLAo+ ID4gKyAgICBbUV9LRVlfQ09ERV9TXSAgICAgICAgICAgICAgICAgICA9IEtFWV9TLAo+ID4gKyAg ICBbUV9LRVlfQ09ERV9EXSAgICAgICAgICAgICAgICAgICA9IEtFWV9ELAo+ID4gKyAgICBbUV9L RVlfQ09ERV9GXSAgICAgICAgICAgICAgICAgICA9IEtFWV9GLAo+ID4gKyAgICBbUV9LRVlfQ09E RV9HXSAgICAgICAgICAgICAgICAgICA9IEtFWV9HLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9IXSAg ICAgICAgICAgICAgICAgICA9IEtFWV9ILAo+ID4gKyAgICBbUV9LRVlfQ09ERV9KXSAgICAgICAg ICAgICAgICAgICA9IEtFWV9KLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LXSAgICAgICAgICAgICAg ICAgICA9IEtFWV9LLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9MXSAgICAgICAgICAgICAgICAgICA9 IEtFWV9MLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9TRU1JQ09MT05dICAgICAgICAgICA9IEtFWV9T RU1JQ09MT04sCj4gPiArICAgIFtRX0tFWV9DT0RFX0FQT1NUUk9QSEVdICAgICAgICAgID0gS0VZ X0FQT1NUUk9QSEUsCj4gPiArICAgIFtRX0tFWV9DT0RFX0dSQVZFX0FDQ0VOVF0gICAgICAgID0g S0VZX0dSQVZFLAo+ID4gKwo+ID4gKyAgICBbUV9LRVlfQ09ERV9TSElGVF0gICAgICAgICAgICAg ICA9IEtFWV9MRUZUU0hJRlQsCj4gPiArICAgIFtRX0tFWV9DT0RFX0JBQ0tTTEFTSF0gICAgICAg ICAgID0gS0VZX0JBQ0tTTEFTSCwKPiA+ICsgICAgW1FfS0VZX0NPREVfTEVTU10gICAgICAgICAg ICAgICAgPSBLRVlfMTAyTkQsCj4gPiArICAgIFtRX0tFWV9DT0RFX1pdICAgICAgICAgICAgICAg ICAgID0gS0VZX1osCj4gPiArICAgIFtRX0tFWV9DT0RFX1hdICAgICAgICAgICAgICAgICAgID0g S0VZX1gsCj4gPiArICAgIFtRX0tFWV9DT0RFX0NdICAgICAgICAgICAgICAgICAgID0gS0VZX0Ms Cj4gPiArICAgIFtRX0tFWV9DT0RFX1ZdICAgICAgICAgICAgICAgICAgID0gS0VZX1YsCj4gPiAr ICAgIFtRX0tFWV9DT0RFX0JdICAgICAgICAgICAgICAgICAgID0gS0VZX0IsCj4gPiArICAgIFtR X0tFWV9DT0RFX05dICAgICAgICAgICAgICAgICAgID0gS0VZX04sCj4gPiArICAgIFtRX0tFWV9D T0RFX01dICAgICAgICAgICAgICAgICAgID0gS0VZX00sCj4gPiArICAgIFtRX0tFWV9DT0RFX0NP TU1BXSAgICAgICAgICAgICAgID0gS0VZX0NPTU1BLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9ET1Rd ICAgICAgICAgICAgICAgICA9IEtFWV9ET1QsCj4gPiArICAgIFtRX0tFWV9DT0RFX1NMQVNIXSAg ICAgICAgICAgICAgID0gS0VZX1NMQVNILAo+ID4gKyAgICBbUV9LRVlfQ09ERV9TSElGVF9SXSAg ICAgICAgICAgICA9IEtFWV9SSUdIVFNISUZULAo+ID4gKwo+ID4gKyAgICBbUV9LRVlfQ09ERV9B TFRdICAgICAgICAgICAgICAgICA9IEtFWV9MRUZUQUxULAo+ID4gKyAgICBbUV9LRVlfQ09ERV9T UENdICAgICAgICAgICAgICAgICA9IEtFWV9TUEFDRSwKPiA+ICsgICAgW1FfS0VZX0NPREVfQ0FQ U19MT0NLXSAgICAgICAgICAgPSBLRVlfQ0FQU0xPQ0ssCj4gPiArCj4gPiArICAgIFtRX0tFWV9D T0RFX0YxXSAgICAgICAgICAgICAgICAgID0gS0VZX0YxLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9G Ml0gICAgICAgICAgICAgICAgICA9IEtFWV9GMiwKPiA+ICsgICAgW1FfS0VZX0NPREVfRjNdICAg ICAgICAgICAgICAgICAgPSBLRVlfRjMsCj4gPiArICAgIFtRX0tFWV9DT0RFX0Y0XSAgICAgICAg ICAgICAgICAgID0gS0VZX0Y0LAo+ID4gKyAgICBbUV9LRVlfQ09ERV9GNV0gICAgICAgICAgICAg ICAgICA9IEtFWV9GNSwKPiA+ICsgICAgW1FfS0VZX0NPREVfRjZdICAgICAgICAgICAgICAgICAg PSBLRVlfRjYsCj4gPiArICAgIFtRX0tFWV9DT0RFX0Y3XSAgICAgICAgICAgICAgICAgID0gS0VZ X0Y3LAo+ID4gKyAgICBbUV9LRVlfQ09ERV9GOF0gICAgICAgICAgICAgICAgICA9IEtFWV9GOCwK PiA+ICsgICAgW1FfS0VZX0NPREVfRjldICAgICAgICAgICAgICAgICAgPSBLRVlfRjksCj4gPiAr ICAgIFtRX0tFWV9DT0RFX0YxMF0gICAgICAgICAgICAgICAgID0gS0VZX0YxMCwKPiA+ICsgICAg W1FfS0VZX0NPREVfTlVNX0xPQ0tdICAgICAgICAgICAgPSBLRVlfTlVNTE9DSywKPiA+ICsgICAg W1FfS0VZX0NPREVfU0NST0xMX0xPQ0tdICAgICAgICAgPSBLRVlfU0NST0xMTE9DSywKPiA+ICsK PiA+ICsgICAgW1FfS0VZX0NPREVfS1BfMF0gICAgICAgICAgICAgICAgPSBLRVlfS1AwLAo+ID4g KyAgICBbUV9LRVlfQ09ERV9LUF8xXSAgICAgICAgICAgICAgICA9IEtFWV9LUDEsCj4gPiArICAg IFtRX0tFWV9DT0RFX0tQXzJdICAgICAgICAgICAgICAgID0gS0VZX0tQMiwKPiA+ICsgICAgW1Ff S0VZX0NPREVfS1BfM10gICAgICAgICAgICAgICAgPSBLRVlfS1AzLAo+ID4gKyAgICBbUV9LRVlf Q09ERV9LUF80XSAgICAgICAgICAgICAgICA9IEtFWV9LUDQsCj4gPiArICAgIFtRX0tFWV9DT0RF X0tQXzVdICAgICAgICAgICAgICAgID0gS0VZX0tQNSwKPiA+ICsgICAgW1FfS0VZX0NPREVfS1Bf Nl0gICAgICAgICAgICAgICAgPSBLRVlfS1A2LAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LUF83XSAg ICAgICAgICAgICAgICA9IEtFWV9LUDcsCj4gPiArICAgIFtRX0tFWV9DT0RFX0tQXzhdICAgICAg ICAgICAgICAgID0gS0VZX0tQOCwKPiA+ICsgICAgW1FfS0VZX0NPREVfS1BfOV0gICAgICAgICAg ICAgICAgPSBLRVlfS1A5LAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LUF9TVUJUUkFDVF0gICAgICAg ICA9IEtFWV9LUE1JTlVTLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LUF9BRERdICAgICAgICAgICAg ICA9IEtFWV9LUFBMVVMsCj4gPiArICAgIFtRX0tFWV9DT0RFX0tQX0RFQ0lNQUxdICAgICAgICAg ID0gS0VZX0tQRE9ULAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LUF9FTlRFUl0gICAgICAgICAgICA9 IEtFWV9LUEVOVEVSLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LUF9ESVZJREVdICAgICAgICAgICA9 IEtFWV9LUFNMQVNILAo+ID4gKyAgICBbUV9LRVlfQ09ERV9LUF9NVUxUSVBMWV0gICAgICAgICA9 IEtFWV9LUEFTVEVSSVNLLAo+ID4gKwo+ID4gKyAgICBbUV9LRVlfQ09ERV9GMTFdICAgICAgICAg ICAgICAgICA9IEtFWV9GMTEsCj4gPiArICAgIFtRX0tFWV9DT0RFX0YxMl0gICAgICAgICAgICAg ICAgID0gS0VZX0YxMiwKPiA+ICsKPiA+ICsgICAgW1FfS0VZX0NPREVfQ1RSTF9SXSAgICAgICAg ICAgICAgPSBLRVlfUklHSFRDVFJMLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9TWVNSUV0gICAgICAg ICAgICAgICA9IEtFWV9TWVNSUSwKPiA+ICsgICAgW1FfS0VZX0NPREVfUFJJTlRdICAgICAgICAg ICAgICAgPSBLRVlfU1lTUlEsCj4gCj4gSSB0YWtlIHRoYXQgS0VZX1BSSU5UIGlzIG5vdCBzdXBw b3J0ZWQgYnkgdGhlIHByb3RvY29sPwo+IAoKS0VZX1BSSU5UIHNob3VsZCBiZSBzdXBwb3J0ZWQg LSBJIHRoaW5rIEkgbWFkZSBhIGNvcHkvcGFzdGUgZXJyb3IgaGVyZSwgYXMgCml0J3Mgc3VwcG9z ZWQgdG8gYmUgdGhlIHJldmVyc2Ugb2YgdGhlIG1hcHBpbmcgZG9uZSBieSBxZW11X2lucHV0X2xp bnV4X3RvX3Fjb2RlKCkKCj4gCj4gPiArICAgIFtRX0tFWV9DT0RFX1BBVVNFXSAgICAgICAgICAg ICAgID0gS0VZX1BBVVNFLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9BTFRfUl0gICAgICAgICAgICAg ICA9IEtFWV9SSUdIVEFMVCwKPiA+ICsKPiA+ICsgICAgW1FfS0VZX0NPREVfSE9NRV0gICAgICAg ICAgICAgICAgPSBLRVlfSE9NRSwKPiA+ICsgICAgW1FfS0VZX0NPREVfVVBdICAgICAgICAgICAg ICAgICAgPSBLRVlfVVAsCj4gPiArICAgIFtRX0tFWV9DT0RFX1BHVVBdICAgICAgICAgICAgICAg ID0gS0VZX1BBR0VVUCwKPiA+ICsgICAgW1FfS0VZX0NPREVfTEVGVF0gICAgICAgICAgICAgICAg PSBLRVlfTEVGVCwKPiA+ICsgICAgW1FfS0VZX0NPREVfUklHSFRdICAgICAgICAgICAgICAgPSBL RVlfUklHSFQsCj4gPiArICAgIFtRX0tFWV9DT0RFX0VORF0gICAgICAgICAgICAgICAgID0gS0VZ X0VORCwKPiA+ICsgICAgW1FfS0VZX0NPREVfRE9XTl0gICAgICAgICAgICAgICAgPSBLRVlfRE9X TiwKPiA+ICsgICAgW1FfS0VZX0NPREVfUEdETl0gICAgICAgICAgICAgICAgPSBLRVlfUEFHRURP V04sCj4gPiArICAgIFtRX0tFWV9DT0RFX0lOU0VSVF0gICAgICAgICAgICAgID0gS0VZX0lOU0VS VCwKPiA+ICsgICAgW1FfS0VZX0NPREVfREVMRVRFXSAgICAgICAgICAgICAgPSBLRVlfREVMRVRF LAo+ID4gKwo+ID4gKyAgICBbUV9LRVlfQ09ERV9NRVRBX0xdICAgICAgICAgICAgICA9IEtFWV9M RUZUTUVUQSwKPiA+ICsgICAgW1FfS0VZX0NPREVfTUVUQV9SXSAgICAgICAgICAgICAgPSBLRVlf UklHSFRNRVRBLAo+ID4gKyAgICBbUV9LRVlfQ09ERV9NRU5VXSAgICAgICAgICAgICAgICA9IEtF WV9NRU5VLAo+ID4gIH07Cj4gPiAtI2VuZGlmCj4gPgo+ID4gLS8qCj4gPiAtICogZm9yIChpID0g MDsgaSA8IDEyODsgaSsrKSB7Cj4gPiAtICogICAgIHNjYW5jb2RlMmxpbnV4W2ldID0gYXRrYmRf c2V0Ml9rZXljb2RlW2F0a2JkX3VueGxhdGVfdGFibGVbaV1dOwo+ID4gLSAqICAgICBzY2FuY29k ZTJsaW51eFtpIHwgMHg4MF0gPQo+IGF0a2JkX3NldDJfa2V5Y29kZVthdGtiZF91bnhsYXRlX3Rh YmxlW2ldIHwgMHg4MF07Cj4gPiAtICogfQo+ID4gLSAqLwo+ID4gLXN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNjYW5jb2RlMmxpbnV4WzUxMl0gPSB7Cj4gPiAtICAgICAgMCwgIDEsICAyLCAg MywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwKPiA+IC0g ICAgIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAy OSwgMzAsIDMxLAo+ID4gLSAgICAgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwg NDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsCj4gPiAtICAgICA0OCwgNDksIDUwLCA1MSwgNTIs IDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywKPiA+IC0gICAgIDY0 LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgs IDc5LAo+ID4gLSAgICAgODAsIDgxLCA4MiwgODMsIDk5LCAgMCwgODYsIDg3LCA4OCwxMTcsICAw LCAgMCwgOTUsMTgzLDE4NCwxODUsCj4gPiAtICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAg MCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKPiA+IC0gICAgIDkzLCAgMCwg IDAsIDg5LCAgMCwgIDAsIDg1LCA5MSwgOTAsIDkyLCAgMCwgOTQsICAwLDEyNCwxMjEsICAwLAo+ ID4gLQo+ID4gLSAgICAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAw LCAgMCwgIDAsICAwLCAgMCwgIDAsCj4gPiAtICAgIDE2NSwgIDAsICAwLCAgMCwgIDAsICAwLCAg MCwgIDAsICAwLDE2MywgIDAsICAwLCA5NiwgOTcsICAwLCAgMCwKPiA+IC0gICAgMTEzLDE0MCwx NjQsICAwLDE2NiwgIDAsICAwLCAgMCwgIDAsICAwLDI1NSwgIDAsICAwLCAgMCwxMTQsICAwLAo+ ID4gLSAgICAxMTUsICAwLDE1MCwgIDAsICAwLCA5OCwyNTUsIDk5LDEwMCwgIDAsICAwLCAgMCwg IDAsICAwLCAgMCwgIDAsCj4gPiAtICAgICAgMCwgIDAsICAwLCAgMCwgIDAsMTE5LDExOSwxMDIs MTAzLDEwNCwgIDAsMTA1LDExMiwxMDYsMTE4LDEwNywKPiA+IC0gICAgMTA4LDEwOSwxMTAsMTEx LCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwxMjUsMTI2LDEyNywxMTYsMTQyLAo+ID4gLSAg ICAgIDAsICAwLCAgMCwxNDMsICAwLDIxNywxNTYsMTczLDEyOCwxNTksMTU4LDE1NywxNTUsMjI2 LCAgMCwxMTIsCj4gPiAtICAgICAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAg MCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwKPiA+IC19Owo+ID4KPiA+ICAvKiBTZW5kIGFuIGV2 ZW50IHRvIHRoZSBrZXlib2FyZCBmcm9udGVuZCBkcml2ZXIgKi8gIHN0YXRpYyBpbnQKPiA+IHhl bmZiX2tiZF9ldmVudChzdHJ1Y3QgWGVuSW5wdXQgKnhlbmZiLCBAQCAtMjYwLDg3ICszMDgsMTIz IEBAIHN0YXRpYwo+ID4gaW50IHhlbmZiX3NlbmRfcG9zaXRpb24oc3RydWN0IFhlbklucHV0ICp4 ZW5mYiwKPiA+ICAgICAgcmV0dXJuIHhlbmZiX2tiZF9ldmVudCh4ZW5mYiwgJmV2ZW50KTsgIH0K PiA+Cj4gPiAtLyoKPiA+IC0gKiBTZW5kIGEga2V5IGV2ZW50IGZyb20gdGhlIGNsaWVudCB0byB0 aGUgZ3Vlc3QgT1MKPiA+IC0gKiBRRU1VIGdpdmVzIHVzIGEgcmF3IHNjYW5jb2RlIGZyb20gYW4g QVQgLyBQUy8yIHN0eWxlIGtleWJvYXJkLgo+ID4gLSAqIFdlIGhhdmUgdG8gdHVybiB0aGlzIGlu dG8gYSBMaW51eCBJbnB1dCBsYXllciBrZXljb2RlLgo+ID4gLSAqCj4gPiAtICogRXh0cmEgY29t cGxleGl0eSBmcm9tIHRoZSBmYWN0IHRoYXQgd2l0aCBleHRlbmRlZCBzY2FuY29kZXMKPiA+IC0g KiAobGlrZSB0aG9zZSBwcm9kdWNlZCBieSBhcnJvdyBrZXlzKSB0aGlzIG1ldGhvZCBnZXRzIGNh bGxlZAo+ID4gLSAqIHR3aWNlLCBidXQgd2Ugb25seSB3YW50IHRvIHNlbmQgYSBzaW5nbGUgZXZl bnQuIFNvIHdlIGhhdmUgdG8KPiA+IC0gKiB0cmFjayB0aGUgJzB4ZTAnIHNjYW5jb2RlIHN0YXRl ICYgY29sbGFwc2UgdGhlIGV4dGVuZGVkIGtleXMKPiA+IC0gKiBhcyBuZWVkZWQuCj4gPiAtICoK PiA+IC0gKiBXaXNoIHdlIGNvdWxkIGp1c3Qgc2VuZCBzY2FuY29kZXMgc3RyYWlnaHQgdG8gdGhl IGd1ZXN0IHdoaWNoCj4gPiAtICogYWxyZWFkeSBoYXMgY29kZSBmb3IgZGVhbGluZyB3aXRoIHRo aXMuLi4KPiA+IC0gKi8KPiA+IC1zdGF0aWMgdm9pZCB4ZW5mYl9rZXlfZXZlbnQodm9pZCAqb3Bh cXVlLCBpbnQgc2NhbmNvZGUpCj4gPiArc3RhdGljIHZvaWQgeGVuZmJfa2V5X2V2ZW50KERldmlj ZVN0YXRlICpkZXYsIFFlbXVDb25zb2xlICpzcmMsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElucHV0RXZlbnQgKmV2dCkKPiA+ICB7Cj4gPiAtICAgIHN0cnVjdCBYZW5JbnB1dCAq eGVuZmIgPSBvcGFxdWU7Cj4gPiAtICAgIGludCBkb3duID0gMTsKPiA+ICsgICAgc3RydWN0IFhl bklucHV0ICppbiA9IChzdHJ1Y3QgWGVuSW5wdXQgKilkZXY7Cj4gPiArICAgIElucHV0S2V5RXZl bnQgKmtleSA9IGV2dC0+dS5rZXkuZGF0YTsKPiA+ICsgICAgaW50IHFjb2RlID0gcWVtdV9pbnB1 dF9rZXlfdmFsdWVfdG9fcWNvZGUoa2V5LT5rZXkpOwo+ID4KPiA+IC0gICAgaWYgKHNjYW5jb2Rl ID09IDB4ZTApIHsKPiA+IC0JeGVuZmItPmV4dGVuZGVkID0gMTsKPiA+IC0JcmV0dXJuOwo+ID4g LSAgICB9IGVsc2UgaWYgKHNjYW5jb2RlICYgMHg4MCkgewo+ID4gLQlzY2FuY29kZSAmPSAweDdm Owo+ID4gLQlkb3duID0gMDsKPiA+ICsgICAgaWYgKHFjb2RlICYmIGtleW1hcF9xY29kZVtxY29k ZV0pIHsKPiA+ICsgICAgICAgIHhlbmZiX3NlbmRfa2V5KGluLCBrZXktPmRvd24sIGtleW1hcF9x Y29kZVtxY29kZV0pOwo+ID4gICAgICB9Cj4gPiAtICAgIGlmICh4ZW5mYi0+ZXh0ZW5kZWQpIHsK PiA+IC0Jc2NhbmNvZGUgfD0gMHg4MDsKPiA+IC0JeGVuZmItPmV4dGVuZGVkID0gMDsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgeGVuZmJfbW91c2VfZXZlbnQoRGV2aWNlU3RhdGUgKmRl diwgUWVtdUNvbnNvbGUgKnNyYywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bnB1dEV2ZW50ICpldnQpIHsKPiA+ICsgICAgc3RydWN0IFhlbklucHV0ICppbiA9IChzdHJ1Y3Qg WGVuSW5wdXQgKilkZXY7Cj4gPiArICAgIElucHV0QnRuRXZlbnQgKmJ0bjsKPiA+ICsgICAgSW5w dXRNb3ZlRXZlbnQgKm1vdmU7Cj4gPiArCj4gPiArICAgIHN3aXRjaCAoZXZ0LT50eXBlKSB7Cj4g PiArICAgIGNhc2UgSU5QVVRfRVZFTlRfS0lORF9CVE46Cj4gPiArICAgICAgICBidG4gPSBldnQt PnUuYnRuLmRhdGE7Cj4gPiArICAgICAgICBzd2l0Y2ggKGJ0bi0+YnV0dG9uKSB7Cj4gPiArICAg ICAgICBjYXNlIElOUFVUX0JVVFRPTl9MRUZUOgo+ID4gKyAgICAgICAgICAgIHhlbmZiX3NlbmRf a2V5KGluLCBidG4tPmRvd24sIEJUTl9MRUZUKTsKPiA+ICsgICAgICAgICAgICBicmVhazsKPiA+ ICsgICAgICAgIGNhc2UgSU5QVVRfQlVUVE9OX1JJR0hUOgo+ID4gKyAgICAgICAgICAgIHhlbmZi X3NlbmRfa2V5KGluLCBidG4tPmRvd24sIEJUTl9SSUdIVCk7Cj4gPiArICAgICAgICAgICAgYnJl YWs7Cj4gPiArICAgICAgICBjYXNlIElOUFVUX0JVVFRPTl9NSURETEU6Cj4gPiArICAgICAgICAg ICAgeGVuZmJfc2VuZF9rZXkoaW4sIGJ0bi0+ZG93biwgQlROX01JRERMRSk7Cj4gPiArICAgICAg ICAgICAgYnJlYWs7Cj4gPiArICAgICAgICBjYXNlIElOUFVUX0JVVFRPTl9XSEVFTF9VUDoKPiA+ ICsgICAgICAgICAgICBpZiAoYnRuLT5kb3duKSB7Cj4gPiArICAgICAgICAgICAgICAgIGluLT5t b3VzZV93aGVlbC0tOwo+ID4gKyAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICBicmVhazsK PiA+ICsgICAgICAgIGNhc2UgSU5QVVRfQlVUVE9OX1dIRUVMX0RPV046Cj4gPiArICAgICAgICAg ICAgaWYgKGJ0bi0+ZG93bikgewo+ID4gKyAgICAgICAgICAgICAgICBpbi0+bW91c2Vfd2hlZWwr KzsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAg ICBkZWZhdWx0Ogo+ID4gKyAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgfQo+ID4gKyAg ICAgICAgYnJlYWs7Cj4gPiArICAgIGNhc2UgSU5QVVRfRVZFTlRfS0lORF9BQlM6Cj4gPiArICAg ICAgICBtb3ZlID0gZXZ0LT51LmFicy5kYXRhOwo+ID4gKyAgICAgICAgaW4tPm1vdXNlX2F4ZXNb bW92ZS0+YXhpc10gPSBtb3ZlLT52YWx1ZTsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBj YXNlIElOUFVUX0VWRU5UX0tJTkRfUkVMOgo+ID4gKyAgICAgICAgbW92ZSA9IGV2dC0+dS5yZWwu ZGF0YTsKPiA+ICsgICAgICAgIGluLT5tb3VzZV9heGVzW21vdmUtPmF4aXNdICs9IG1vdmUtPnZh bHVlOwo+ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIGRlZmF1bHQ6Cj4gPiArICAgICAgICBi cmVhazsKPiA+ICAgICAgfQo+ID4gLSAgICB4ZW5mYl9zZW5kX2tleSh4ZW5mYiwgZG93biwgc2Nh bmNvZGUybGludXhbc2NhbmNvZGVdKTsKPiA+ICB9Cj4gPgo+ID4gLS8qCj4gPiAtICogU2VuZCBh IG1vdXNlIGV2ZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgZ3Vlc3QgT1MKPiA+IC0gKgo+ID4g LSAqIFRoZSBRRU1VIG1vdXNlIGNhbiBiZSBpbiBlaXRoZXIgcmVsYXRpdmUsIG9yIGFic29sdXRl IG1vZGUuCj4gPiAtICogTW92ZW1lbnQgaXMgc2VudCBzZXBhcmF0ZWx5IGZyb20gYnV0dG9uIHN0 YXRlLCB3aGljaCBoYXMgdG8KPiA+IC0gKiBiZSBlbmNvZGVkIGFzIHZpcnR1YWwga2V5IGV2ZW50 cy4gV2UgYWxzbyBkb24ndCBhY3R1YWxseSBnZXQKPiA+IC0gKiBnaXZlbiBhbnkgYnV0dG9uIHVw L2Rvd24gZXZlbnRzLCBzbyBoYXZlIHRvIHRyYWNrIGNoYW5nZXMgaW4KPiA+IC0gKiB0aGUgYnV0 dG9uIHN0YXRlLgo+ID4gLSAqLwo+ID4gLXN0YXRpYyB2b2lkIHhlbmZiX21vdXNlX2V2ZW50KHZv aWQgKm9wYXF1ZSwKPiA+IC0JCQkgICAgICBpbnQgZHgsIGludCBkeSwgaW50IGR6LCBpbnQgYnV0 dG9uX3N0YXRlKQo+ID4gK3N0YXRpYyB2b2lkIHhlbmZiX21vdXNlX3N5bmMoRGV2aWNlU3RhdGUg KmRldikKPiA+ICB7Cj4gPiAtICAgIHN0cnVjdCBYZW5JbnB1dCAqeGVuZmIgPSBvcGFxdWU7Cj4g PiAtICAgIFFlbXVDb25zb2xlICpjb24gPSBxZW11X2NvbnNvbGVfbG9va3VwX2J5X2luZGV4KDAp Owo+ID4gLSAgICBEaXNwbGF5U3VyZmFjZSAqc3VyZmFjZTsKPiA+IC0gICAgaW50IGR3LCBkaCwg aTsKPiA+ICsgICAgc3RydWN0IFhlbklucHV0ICppbiA9IChzdHJ1Y3QgWGVuSW5wdXQgKilkZXY7 Cj4gPiArICAgIGludCBkeCwgZHksIGR6Owo+ID4KPiA+IC0gICAgaWYgKCFjb24pIHsKPiA+IC0g ICAgICAgIHhlbl9wdl9wcmludGYoJnhlbmZiLT5jLnhlbmRldiwgMCwgIk5vIFFFTVUgY29uc29s ZSBhdmFpbGFibGUiKTsKPiA+IC0gICAgICAgIHJldHVybjsKPiA+IC0gICAgfQo+ID4gKyAgICBk eCA9IGluLT5tb3VzZV9heGVzW0lOUFVUX0FYSVNfWF07Cj4gPiArICAgIGR5ID0gaW4tPm1vdXNl X2F4ZXNbSU5QVVRfQVhJU19ZXTsKPiA+ICsgICAgZHogPSBpbi0+bW91c2Vfd2hlZWw7Cj4gPiAr Cj4gPiArICAgIHRyYWNlX3hlbmZiX21vdXNlX2V2ZW50KGluLCBkeCwgZHksIGR6LCAwLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbi0+YWJzX3BvaW50ZXJfd2FudGVkKTsKPiA+ ICsKPiA+ICsgICAgaWYgKGluLT5hYnNfcG9pbnRlcl93YW50ZWQpIHsKPiA+ICsgICAgICAgIFFl bXVDb25zb2xlICpjb24gPSBxZW11X2NvbnNvbGVfbG9va3VwX2J5X2luZGV4KDApOwo+ID4gKyAg ICAgICAgRGlzcGxheVN1cmZhY2UgKnN1cmZhY2U7Cj4gPiArICAgICAgICBpbnQgZHcsIGRoOwo+ ID4gKwo+ID4gKyAgICAgICAgaWYgKCFjb24pIHsKPiA+ICsgICAgICAgICAgICB4ZW5fcHZfcHJp bnRmKCZpbi0+Yy54ZW5kZXYsIDAsICJObyBRRU1VIGNvbnNvbGUgYXZhaWxhYmxlIik7Cj4gPiAr ICAgICAgICAgICAgcmV0dXJuOwo+ID4gKyAgICAgICAgfQo+ID4KPiA+IC0gICAgc3VyZmFjZSA9 IHFlbXVfY29uc29sZV9zdXJmYWNlKGNvbik7Cj4gPiAtICAgIGR3ID0gc3VyZmFjZV93aWR0aChz dXJmYWNlKTsKPiA+IC0gICAgZGggPSBzdXJmYWNlX2hlaWdodChzdXJmYWNlKTsKPiA+IC0KPiA+ IC0gICAgdHJhY2VfeGVuZmJfbW91c2VfZXZlbnQob3BhcXVlLCBkeCwgZHksIGR6LCBidXR0b25f c3RhdGUsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbmZiLT5hYnNfcG9pbnRl cl93YW50ZWQpOwo+ID4gLSAgICBpZiAoeGVuZmItPmFic19wb2ludGVyX3dhbnRlZCkKPiA+IC0J eGVuZmJfc2VuZF9wb3NpdGlvbih4ZW5mYiwKPiA+IC0JCQkgICAgZHggKiAoZHcgLSAxKSAvIDB4 N2ZmZiwKPiA+IC0JCQkgICAgZHkgKiAoZGggLSAxKSAvIDB4N2ZmZiwKPiA+IC0JCQkgICAgZHop Owo+ID4gLSAgICBlbHNlCj4gPiAtCXhlbmZiX3NlbmRfbW90aW9uKHhlbmZiLCBkeCwgZHksIGR6 KTsKPiA+IC0KPiA+IC0gICAgZm9yIChpID0gMCA7IGkgPCA4IDsgaSsrKSB7Cj4gPiAtCWludCBs YXN0RG93biA9IHhlbmZiLT5idXR0b25fc3RhdGUgJiAoMSA8PCBpKTsKPiA+IC0JaW50IGRvd24g PSBidXR0b25fc3RhdGUgJiAoMSA8PCBpKTsKPiA+IC0JaWYgKGRvd24gPT0gbGFzdERvd24pCj4g PiAtCSAgICBjb250aW51ZTsKPiA+IC0KPiA+IC0JaWYgKHhlbmZiX3NlbmRfa2V5KHhlbmZiLCBk b3duLCBCVE5fTEVGVCtpKSA8IDApCj4gPiAtCSAgICByZXR1cm47Cj4gPiArICAgICAgICBzdXJm YWNlID0gcWVtdV9jb25zb2xlX3N1cmZhY2UoY29uKTsKPiA+ICsgICAgICAgIGR3ID0gc3VyZmFj ZV93aWR0aChzdXJmYWNlKTsKPiA+ICsgICAgICAgIGRoID0gc3VyZmFjZV9oZWlnaHQoc3VyZmFj ZSk7Cj4gPiArCj4gPiArICAgICAgICBkeCA9IGR4ICogKGR3IC0gMSkgLyAweDdmZmY7Cj4gPiAr ICAgICAgICBkeSA9IGR5ICogKGRoIC0gMSkgLyAweDdmZmY7Cj4gPiArCj4gPiArICAgICAgICB4 ZW5mYl9zZW5kX3Bvc2l0aW9uKGluLCBkeCwgZHksIGR6KTsKPiA+ICsgICAgfSBlbHNlIHsKPiA+ ICsgICAgICAgIHhlbmZiX3NlbmRfbW90aW9uKGluLCBkeCwgZHksIGR6KTsKPiA+ICsKPiA+ICsg ICAgICAgIGluLT5tb3VzZV9heGVzW0lOUFVUX0FYSVNfWF0gPSAwOwo+ID4gKyAgICAgICAgaW4t Pm1vdXNlX2F4ZXNbSU5QVVRfQVhJU19ZXSA9IDA7Cj4gPiAgICAgIH0KPiA+IC0gICAgeGVuZmIt PmJ1dHRvbl9zdGF0ZSA9IGJ1dHRvbl9zdGF0ZTsKPiA+ICsKPiA+ICsgICAgaW4tPm1vdXNlX3do ZWVsID0gMDsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBRZW11SW5wdXRIYW5kbGVyIHhlbmZiX2tl eWJvYXJkID0gewo+ID4gKyAgICAubmFtZSAgPSAiWGVuIFBWRkIgS2V5Ym9hcmQiLAo+ID4gKyAg ICAubWFzayAgPSBJTlBVVF9FVkVOVF9NQVNLX0tFWSwKPiA+ICsgICAgLmV2ZW50ID0geGVuZmJf a2V5X2V2ZW50LAo+ID4gK307Cj4gPiArc3RhdGljIFFlbXVJbnB1dEhhbmRsZXIgeGVuZmJfYWJz X21vdXNlID0gewo+ID4gKyAgICAubmFtZSAgPSAiWGVuIFBWRkIgQWJzb2x1dGUgTW91c2UiLAo+ ID4gKyAgICAubWFzayAgPSBJTlBVVF9FVkVOVF9NQVNLX0JUTiB8IElOUFVUX0VWRU5UX01BU0tf QUJTLAo+ID4gKyAgICAuZXZlbnQgPSB4ZW5mYl9tb3VzZV9ldmVudCwKPiA+ICsgICAgLnN5bmMg ID0geGVuZmJfbW91c2Vfc3luYwo+ID4gK307Cj4gPiArc3RhdGljIFFlbXVJbnB1dEhhbmRsZXIg eGVuZmJfcmVsX21vdXNlID0gewo+ID4gKyAgICAubmFtZSAgPSAiWGVuIFBWRkIgTW91c2UiLAo+ ID4gKyAgICAubWFzayAgPSBJTlBVVF9FVkVOVF9NQVNLX0JUTiB8IElOUFVUX0VWRU5UX01BU0tf UkVMLAo+ID4gKyAgICAuZXZlbnQgPSB4ZW5mYl9tb3VzZV9ldmVudCwKPiA+ICsgICAgLnN5bmMg ID0geGVuZmJfbW91c2Vfc3luYywKPiA+ICt9Owo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgaW5wdXRf aW5pdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpICB7Cj4gPiAgICAgIHhlbnN0b3JlX3dyaXRl X2JlX2ludCh4ZW5kZXYsICJmZWF0dXJlLWFicy1wb2ludGVyIiwgMSk7IEBACj4gPiAtMzU2LDcg KzQ0MCw2IEBAIHN0YXRpYyBpbnQgaW5wdXRfaW5pdGlhbGlzZShzdHJ1Y3QgWGVuRGV2aWNlICp4 ZW5kZXYpCj4gPiAgICAgIGlmIChyYyAhPSAwKQo+ID4gIAlyZXR1cm4gcmM7Cj4gPgo+ID4gLSAg ICBxZW11X2FkZF9rYmRfZXZlbnRfaGFuZGxlcih4ZW5mYl9rZXlfZXZlbnQsIGluKTsKPiA+ICAg ICAgcmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+IEBAIC0zNjksMjQgKzQ1MiwzNCBAQCBzdGF0aWMg dm9pZCBpbnB1dF9jb25uZWN0ZWQoc3RydWN0IFhlbkRldmljZQo+ICp4ZW5kZXYpCj4gPiAgICAg ICAgICBpbi0+YWJzX3BvaW50ZXJfd2FudGVkID0gMDsKPiA+ICAgICAgfQo+ID4KPiA+IC0gICAg aWYgKGluLT5xbW91c2UpIHsKPiA+IC0gICAgICAgIHFlbXVfcmVtb3ZlX21vdXNlX2V2ZW50X2hh bmRsZXIoaW4tPnFtb3VzZSk7Cj4gPiArICAgIGlmIChpbi0+cWtiZCkgewo+ID4gKyAgICAgICAg cWVtdV9pbnB1dF9oYW5kbGVyX3VucmVnaXN0ZXIoaW4tPnFrYmQpOwo+ID4gKyAgICB9Cj4gPiAr ICAgIGlmIChpbi0+cW1vdSkgewo+ID4gKyAgICAgICAgcWVtdV9pbnB1dF9oYW5kbGVyX3VucmVn aXN0ZXIoaW4tPnFtb3UpOwo+ID4gICAgICB9Cj4gPiAgICAgIHRyYWNlX3hlbmZiX2lucHV0X2Nv bm5lY3RlZCh4ZW5kZXYsIGluLT5hYnNfcG9pbnRlcl93YW50ZWQpOwo+ID4gLSAgICBpbi0+cW1v dXNlID0KPiBxZW11X2FkZF9tb3VzZV9ldmVudF9oYW5kbGVyKHhlbmZiX21vdXNlX2V2ZW50LCBp biwKPiA+IC0JCQkJCSAgICAgIGluLT5hYnNfcG9pbnRlcl93YW50ZWQsCj4gPiAtCQkJCQkgICAg ICAiWGVuIFBWRkIgTW91c2UiKTsKPiA+ICsKPiA+ICsgICAgaW4tPnFrYmQgPSBxZW11X2lucHV0 X2hhbmRsZXJfcmVnaXN0ZXIoKERldmljZVN0YXRlICopaW4sCj4gJnhlbmZiX2tleWJvYXJkKTsK PiA+ICsgICAgaW4tPnFtb3UgPSBxZW11X2lucHV0X2hhbmRsZXJfcmVnaXN0ZXIoKERldmljZVN0 YXRlICopaW4sCj4gPiArICAgICAgICAoaW4tPmFic19wb2ludGVyX3dhbnRlZCA/ICZ4ZW5mYl9h YnNfbW91c2UgOgo+ID4gKyAmeGVuZmJfcmVsX21vdXNlKSk7Cj4gPiArCj4gPiArICAgIHFlbXVf aW5wdXRfaGFuZGxlcl9hY3RpdmF0ZShpbi0+cWtiZCk7Cj4gPiArICAgIHFlbXVfaW5wdXRfaGFu ZGxlcl9hY3RpdmF0ZShpbi0+cW1vdSk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgdm9pZCBpbnB1 dF9kaXNjb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikgIHsKPiA+ICAgICAgc3RydWN0 IFhlbklucHV0ICppbiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBYZW5JbnB1dCwKPiA+ IGMueGVuZGV2KTsKPiA+Cj4gPiAtICAgIGlmIChpbi0+cW1vdXNlKSB7Cj4gPiAtCXFlbXVfcmVt b3ZlX21vdXNlX2V2ZW50X2hhbmRsZXIoaW4tPnFtb3VzZSk7Cj4gPiAtCWluLT5xbW91c2UgPSBO VUxMOwo+ID4gKyAgICBpZiAoaW4tPnFrYmQpIHsKPiA+ICsgICAgICAgIHFlbXVfaW5wdXRfaGFu ZGxlcl91bnJlZ2lzdGVyKGluLT5xa2JkKTsKPiA+ICsgICAgICAgIGluLT5xa2JkID0gTlVMTDsK PiA+ICsgICAgfQo+ID4gKyAgICBpZiAoaW4tPnFtb3UpIHsKPiA+ICsgICAgICAgIHFlbXVfaW5w dXRfaGFuZGxlcl91bnJlZ2lzdGVyKGluLT5xbW91KTsKPiA+ICsgICAgICAgIGluLT5xbW91ID0g TlVMTDsKPiA+ICAgICAgfQo+ID4gLSAgICBxZW11X2FkZF9rYmRfZXZlbnRfaGFuZGxlcihOVUxM LCBOVUxMKTsKPiA+ICAgICAgY29tbW9uX3VuYmluZCgmaW4tPmMpOwo+ID4gIH0KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=