From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 14/17] x86emul: abstract out XCRn accesses Date: Mon, 18 Sep 2017 09:12:24 +0000 Message-ID: References: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> <59BAB38A020000780017B34E@prv-mh.provo.novell.com> <59BABA4D020000780017B3F6@prv-mh.provo.novell.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 1dts6Y-0002Pe-QH for xen-devel@lists.xenproject.org; Mon, 18 Sep 2017 09:12:39 +0000 In-Reply-To: <59BABA4D020000780017B3F6@prv-mh.provo.novell.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: 'Jan Beulich' , xen-devel Cc: Andrew Cooper , George Dunlap List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW4ub3JnXSBPbiBCZWhhbGYgT2YgSmFuDQo+IEJldWxp Y2gNCj4gU2VudDogMTQgU2VwdGVtYmVyIDIwMTcgMTY6MjANCj4gVG86IHhlbi1kZXZlbCA8eGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnPg0KPiBDYzogR2VvcmdlIER1bmxhcCA8R2Vvcmdl LkR1bmxhcEBjaXRyaXguY29tPjsgQW5kcmV3IENvb3Blcg0KPiA8QW5kcmV3LkNvb3BlcjNAY2l0 cml4LmNvbT4NCj4gU3ViamVjdDogW1hlbi1kZXZlbF0gW1BBVENIIHYyIDE0LzE3XSB4ODZlbXVs OiBhYnN0cmFjdCBvdXQgWENSbiBhY2Nlc3Nlcw0KPiANCj4gVXNlIGhvb2tzLCBqdXN0IGxpa2Ug ZG9uZSBmb3Igb3RoZXIgc3BlY2lhbCBwdXJwb3NlIHJlZ2lzdGVycy4NCj4gDQo+IFRoaXMgaW5j bHVkZXMgbW92aW5nIFhDUjAgY2hlY2tzIGZyb20gaHZtZW11bF9nZXRfZnB1KCkgdG8gdGhlIGVt dWxhdG9yDQo+IGl0c2VsZiBhcyB3ZWxsIGFzIGFkZGluZyBzdXBwb3J0IGZvciBYR0VUQlYgZW11 bGF0aW9uLg0KPiANCj4gRm9yIG5vdyBmdXp6ZXIgcmVhZHMgd2lsbCBvYnRhaW4gdGhlIHJlYWwg dmFsdWVzIChtaW51cyB0aGUgZnV6emluZyBvZg0KPiB0aGUgaG9vayBwb2ludGVyIGl0c2VsZiku DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+DQoN ClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KDQo+ IC0tLQ0KPiB2MjogUmUtYmFzZS4NCj4gDQo+IC0tLSBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0 aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jDQo+ICsrKyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0 aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jDQo+IEBAIC00MzUsNiArNDM1LDggQEAgc3RhdGljIGlu dCBmdXp6X3dyaXRlX2NyKA0KPiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICB9DQo+IA0K PiArI2RlZmluZSBmdXp6X3JlYWRfeGNyIGVtdWxfdGVzdF9yZWFkX3hjcg0KPiArDQo+ICBlbnVt IHsNCj4gICAgICBNU1JJX0lBMzJfU1lTRU5URVJfQ1MsDQo+ICAgICAgTVNSSV9JQTMyX1NZU0VO VEVSX0VTUCwNCj4gQEAgLTU1Myw2ICs1NTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9l bXVsYXRlX29wcyBhbGxfDQo+ICAgICAgU0VUKHdyaXRlX2lvKSwNCj4gICAgICBTRVQocmVhZF9j ciksDQo+ICAgICAgU0VUKHdyaXRlX2NyKSwNCj4gKyAgICBTRVQocmVhZF94Y3IpLA0KPiAgICAg IFNFVChyZWFkX21zciksDQo+ICAgICAgU0VUKHdyaXRlX21zciksDQo+ICAgICAgU0VUKHdiaW52 ZCksDQo+IEBAIC02NjEsNiArNjY0LDcgQEAgZW51bSB7DQo+ICAgICAgSE9PS193cml0ZV9jciwN Cj4gICAgICBIT09LX3JlYWRfZHIsDQo+ICAgICAgSE9PS193cml0ZV9kciwNCj4gKyAgICBIT09L X3JlYWRfeGNyLA0KPiAgICAgIEhPT0tfcmVhZF9tc3IsDQo+ICAgICAgSE9PS193cml0ZV9tc3Is DQo+ICAgICAgSE9PS193YmludmQsDQo+IEBAIC03MDUsNiArNzA5LDcgQEAgc3RhdGljIHZvaWQg ZGlzYWJsZV9ob29rcyhzdHJ1Y3QgeDg2X2VtdQ0KPiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3 cml0ZV9pbyk7DQo+ICAgICAgTUFZQkVfRElTQUJMRV9IT09LKHJlYWRfY3IpOw0KPiAgICAgIE1B WUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9jcik7DQo+ICsgICAgTUFZQkVfRElTQUJMRV9IT09LKHJl YWRfeGNyKTsNCj4gICAgICBNQVlCRV9ESVNBQkxFX0hPT0socmVhZF9tc3IpOw0KPiAgICAgIE1B WUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9tc3IpOw0KPiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3 YmludmQpOw0KPiAtLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0 b3IuYw0KPiArKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3Iu Yw0KPiBAQCAtMzY4LDYgKzM2OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGVt dWxvcHMgPQ0KPiAgICAgIC5yZWFkX3NlZ21lbnQgPSByZWFkX3NlZ21lbnQsDQo+ICAgICAgLmNw dWlkICAgICAgPSBlbXVsX3Rlc3RfY3B1aWQsDQo+ICAgICAgLnJlYWRfY3IgICAgPSBlbXVsX3Rl c3RfcmVhZF9jciwNCj4gKyAgICAucmVhZF94Y3IgICA9IGVtdWxfdGVzdF9yZWFkX3hjciwNCj4g ICAgICAucmVhZF9tc3IgICA9IHJlYWRfbXNyLA0KPiAgICAgIC5nZXRfZnB1ICAgID0gZW11bF90 ZXN0X2dldF9mcHUsDQo+ICAgICAgLnB1dF9mcHUgICAgPSBlbXVsX3Rlc3RfcHV0X2ZwdSwNCj4g LS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmMNCj4gKysrIGIvdG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVsYXRlLmMNCj4gQEAgLTEyMCw2ICsxMjAsMTkg QEAgaW50IGVtdWxfdGVzdF9yZWFkX2NyKA0KPiAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExF QUJMRTsNCj4gIH0NCj4gDQo+ICtpbnQgZW11bF90ZXN0X3JlYWRfeGNyKA0KPiArICAgIHVuc2ln bmVkIGludCByZWcsDQo+ICsgICAgdWludDY0X3QgKnZhbCwNCj4gKyAgICBzdHJ1Y3QgeDg2X2Vt dWxhdGVfY3R4dCAqY3R4dCkNCj4gK3sNCj4gKyAgICB1aW50MzJfdCBsbywgaGk7DQo+ICsNCj4g KyAgICBhc20gKCAieGdldGJ2IiA6ICI9YSIgKGxvKSwgIj1kIiAoaGkpIDogImMiIChyZWcpICk7 DQo+ICsgICAgKnZhbCA9IGxvIHwgKCh1aW50NjRfdCloaSA8PCAzMik7DQo+ICsNCj4gKyAgICBy ZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiArfQ0KPiArDQo+ICBpbnQgZW11bF90ZXN0X2dldF9mcHUo DQo+ICAgICAgdm9pZCAoKmV4Y2VwdGlvbl9jYWxsYmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqKSwNCj4gICAgICB2b2lkICpleGNlcHRpb25fY2FsbGJhY2tfYXJnLA0KPiAtLS0g YS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2X2VtdWxhdGUuaA0KPiArKysgYi90b29scy90 ZXN0cy94ODZfZW11bGF0b3IveDg2X2VtdWxhdGUuaA0KPiBAQCAtMjE1LDYgKzIxNSwxMSBAQCBp bnQgZW11bF90ZXN0X3JlYWRfY3IoDQo+ICAgICAgdW5zaWduZWQgbG9uZyAqdmFsLA0KPiAgICAg IHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsNCj4gDQo+ICtpbnQgZW11bF90ZXN0X3Jl YWRfeGNyKA0KPiArICAgIHVuc2lnbmVkIGludCByZWcsDQo+ICsgICAgdWludDY0X3QgKnZhbCwN Cj4gKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7DQo+ICsNCj4gIGludCBlbXVs X3Rlc3RfZ2V0X2ZwdSgNCj4gICAgICB2b2lkICgqZXhjZXB0aW9uX2NhbGxiYWNrKSh2b2lkICos IHN0cnVjdCBjcHVfdXNlcl9yZWdzICopLA0KPiAgICAgIHZvaWQgKmV4Y2VwdGlvbl9jYWxsYmFj a19hcmcsDQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jDQo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jDQo+IEBAIC0xNjU1LDYgKzE2NTUsNDkgQEAgc3RhdGljIGlu dCBodm1lbXVsX3dyaXRlX2NyKA0KPiAgICAgIHJldHVybiByYzsNCj4gIH0NCj4gDQo+ICtzdGF0 aWMgaW50IGh2bWVtdWxfcmVhZF94Y3IoDQo+ICsgICAgdW5zaWduZWQgaW50IHJlZywNCj4gKyAg ICB1aW50NjRfdCAqdmFsLA0KPiArICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQ0K PiArew0KPiArICAgIHVpbnQzMl90IGxvLCBoaTsNCj4gKw0KPiArICAgIHN3aXRjaCAoIHJlZyAp DQo+ICsgICAgew0KPiArICAgIGNhc2UgMDoNCj4gKyAgICAgICAgKnZhbCA9IGN1cnJlbnQtPmFy Y2gueGNyMDsNCj4gKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gKw0KPiArICAgIGNh c2UgMToNCj4gKyAgICAgICAgaWYgKCAhY3B1X2hhc194Z2V0YnYxICkNCj4gKyAgICAgICAgICAg IHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4g KyAgICBkZWZhdWx0Og0KPiArICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7DQo+ ICsgICAgfQ0KPiArDQo+ICsgICAgYXNtICggIi5ieXRlIDB4MGYsMHgwMSwweGQwIiAvKiB4Z2V0 YnYgKi8NCj4gKyAgICAgICAgICA6ICI9YSIgKGxvKSwgIj1kIiAoaGkpIDogImMiIChyZWcpICk7 DQo+ICsgICAgKnZhbCA9IGxvIHwgKCh1aW50NjRfdCloaSA8PCAzMik7DQo+ICsgICAgSFZNVFJB Q0VfTE9OR18yRChYQ1JfUkVBRCwgcmVnLCBUUkNfUEFSX0xPTkcoKnZhbCkpOw0KPiArDQo+ICsg ICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBodm1lbXVs X3dyaXRlX3hjcigNCj4gKyAgICB1bnNpZ25lZCBpbnQgcmVnLA0KPiArICAgIHVpbnQ2NF90IHZh bCwNCj4gKyAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkNCj4gK3sNCj4gKyAgICBI Vk1UUkFDRV9MT05HXzJEKFhDUl9XUklURSwgcmVnLCBUUkNfUEFSX0xPTkcodmFsKSk7DQo+ICsg ICAgaWYgKCBsaWtlbHkoaGFuZGxlX3hzZXRidihyZWcsIHZhbCkgPT0gMCkgKQ0KPiArICAgICAg ICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiArDQo+ICsgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDAsIGN0eHQpOw0KPiArICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElP TjsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGludCBodm1lbXVsX3JlYWRfbXNyKA0KPiAgICAgIHVu c2lnbmVkIGludCByZWcsDQo+ICAgICAgdWludDY0X3QgKnZhbCwNCj4gQEAgLTE3MDMsMjIgKzE3 NDYsNiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZ2V0X2ZwdSgNCj4gIHsNCj4gICAgICBzdHJ1Y3Qg dmNwdSAqY3VyciA9IGN1cnJlbnQ7DQo+IA0KPiAtICAgIHN3aXRjaCAoIHR5cGUgKQ0KPiAtICAg IHsNCj4gLSAgICBjYXNlIFg4NkVNVUxfRlBVX2ZwdToNCj4gLSAgICBjYXNlIFg4NkVNVUxfRlBV X3dhaXQ6DQo+IC0gICAgY2FzZSBYODZFTVVMX0ZQVV9tbXg6DQo+IC0gICAgY2FzZSBYODZFTVVM X0ZQVV94bW06DQo+IC0gICAgICAgIGJyZWFrOw0KPiAtICAgIGNhc2UgWDg2RU1VTF9GUFVfeW1t Og0KPiAtICAgICAgICBpZiAoICEoY3Vyci0+YXJjaC54Y3IwICYgWFNUQVRFX1NTRSkgfHwNCj4g LSAgICAgICAgICAgICAhKGN1cnItPmFyY2gueGNyMCAmIFhTVEFURV9ZTU0pICkNCj4gLSAgICAg ICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsNCj4gLSAgICAgICAgYnJlYWs7DQo+ IC0gICAgZGVmYXVsdDoNCj4gLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOw0K PiAtICAgIH0NCj4gLQ0KPiAgICAgIGlmICggIWN1cnItPmZwdV9kaXJ0aWVkICkNCj4gICAgICAg ICAgaHZtX2Z1bmNzLmZwdV9kaXJ0eV9pbnRlcmNlcHQoKTsNCj4gICAgICBlbHNlIGlmICggdHlw ZSA9PSBYODZFTVVMX0ZQVV9mcHUgKQ0KPiBAQCAtMTkwMiw2ICsxOTI5LDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgaHZtXw0KPiAgICAgIC53cml0ZV9pbyAgICAgID0g aHZtZW11bF93cml0ZV9pbywNCj4gICAgICAucmVhZF9jciAgICAgICA9IGh2bWVtdWxfcmVhZF9j ciwNCj4gICAgICAud3JpdGVfY3IgICAgICA9IGh2bWVtdWxfd3JpdGVfY3IsDQo+ICsgICAgLnJl YWRfeGNyICAgICAgPSBodm1lbXVsX3JlYWRfeGNyLA0KPiArICAgIC53cml0ZV94Y3IgICAgID0g aHZtZW11bF93cml0ZV94Y3IsDQo+ICAgICAgLnJlYWRfbXNyICAgICAgPSBodm1lbXVsX3JlYWRf bXNyLA0KPiAgICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93cml0ZV9tc3IsDQo+ICAgICAg LndiaW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZCwNCj4gQEAgLTE5MjcsNiArMTk1Niw4IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGh2bV8NCj4gICAgICAud3JpdGVf aW8gICAgICA9IGh2bWVtdWxfd3JpdGVfaW9fZGlzY2FyZCwNCj4gICAgICAucmVhZF9jciAgICAg ICA9IGh2bWVtdWxfcmVhZF9jciwNCj4gICAgICAud3JpdGVfY3IgICAgICA9IGh2bWVtdWxfd3Jp dGVfY3IsDQo+ICsgICAgLnJlYWRfeGNyICAgICAgPSBodm1lbXVsX3JlYWRfeGNyLA0KPiArICAg IC53cml0ZV94Y3IgICAgID0gaHZtZW11bF93cml0ZV94Y3IsDQo+ICAgICAgLnJlYWRfbXNyICAg ICAgPSBodm1lbXVsX3JlYWRfbXNyLA0KPiAgICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93 cml0ZV9tc3JfZGlzY2FyZCwNCj4gICAgICAud2JpbnZkICAgICAgICA9IGh2bWVtdWxfd2JpbnZk X2Rpc2NhcmQsDQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYw0KPiArKysg Yi94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMNCj4gQEAgLTM2LDYgKzM2LDcgQEANCj4g ICNpbmNsdWRlIDxhc20vc2hhcmVkLmg+DQo+ICAjaW5jbHVkZSA8YXNtL3RyYXBzLmg+DQo+ICAj aW5jbHVkZSA8YXNtL3g4Nl9lbXVsYXRlLmg+DQo+ICsjaW5jbHVkZSA8YXNtL3hzdGF0ZS5oPg0K PiANCj4gICNpbmNsdWRlIDx4c20veHNtLmg+DQo+IA0KPiBAQCAtODE3LDYgKzgxOCwxNiBAQCBz dGF0aWMgaW50IHdyaXRlX2RyKHVuc2lnbmVkIGludCByZWcsIHVuDQo+ICAgICAgICAgICAgID8g WDg2RU1VTF9PS0FZIDogWDg2RU1VTF9VTkhBTkRMRUFCTEU7DQo+ICB9DQo+IA0KPiArc3RhdGlj IGludCB3cml0ZV94Y3IodW5zaWduZWQgaW50IHJlZywgdWludDY0X3QgdmFsLA0KPiArICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpDQo+ICt7DQo+ICsg ICAgaWYgKCBsaWtlbHkoaGFuZGxlX3hzZXRidihyZWcsIHZhbCkgPT0gMCkgKQ0KPiArICAgICAg ICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiArDQo+ICsgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDAsIGN0eHQpOw0KPiArICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElP TjsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGlubGluZSB1aW50NjRfdCBndWVzdF9taXNjX2VuYWJs ZSh1aW50NjRfdCB2YWwpDQo+ICB7DQo+ICAgICAgdmFsICY9IH4oTVNSX0lBMzJfTUlTQ19FTkFC TEVfUEVSRl9BVkFJTCB8DQo+IEBAIC0xMzI5LDYgKzEzNDAsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHg4Nl9lbXVsYXRlX29wcyBwcml2DQo+ICAgICAgLndyaXRlX2NyICAgICAgICAgICAgPSB3 cml0ZV9jciwNCj4gICAgICAucmVhZF9kciAgICAgICAgICAgICA9IHJlYWRfZHIsDQo+ICAgICAg LndyaXRlX2RyICAgICAgICAgICAgPSB3cml0ZV9kciwNCj4gKyAgICAud3JpdGVfeGNyICAgICAg ICAgICA9IHdyaXRlX3hjciwNCj4gICAgICAucmVhZF9tc3IgICAgICAgICAgICA9IHJlYWRfbXNy LA0KPiAgICAgIC53cml0ZV9tc3IgICAgICAgICAgID0gd3JpdGVfbXNyLA0KPiAgICAgIC5jcHVp ZCAgICAgICAgICAgICAgID0gcHZfZW11bF9jcHVpZCwNCj4gLS0tIGEveGVuL2FyY2gveDg2L3g4 Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl L3g4Nl9lbXVsYXRlLmMNCj4gQEAgLTExMTcsMTAgKzExMTcsMjcgQEAgc3RhdGljIGludCBfZ2V0 X2ZwdSgNCj4gICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwNCj4gICAgICBjb25z dCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMpDQo+ICB7DQo+ICsgICAgdWludDY0X3QgeGNy MDsNCj4gICAgICBpbnQgcmM7DQo+IA0KPiAgICAgIGZhaWxfaWYoIW9wcy0+Z2V0X2ZwdSk7DQo+ ICAgICAgQVNTRVJUKHR5cGUgIT0gWDg2RU1VTF9GUFVfbm9uZSk7DQo+ICsNCj4gKyAgICBpZiAo IHR5cGUgPCBYODZFTVVMX0ZQVV95bW0gfHwgIW9wcy0+cmVhZF94Y3IgfHwNCj4gKyAgICAgICAg IG9wcy0+cmVhZF94Y3IoMCwgJnhjcjAsIGN0eHQpICE9IFg4NkVNVUxfT0tBWSApDQo+ICsgICAg ICAgIHhjcjAgPSAwOw0KPiArDQo+ICsgICAgc3dpdGNoICggdHlwZSApDQo+ICsgICAgew0KPiAr ICAgIGNhc2UgWDg2RU1VTF9GUFVfeW1tOg0KPiArICAgICAgICBpZiAoICEoeGNyMCAmIFhTVEFU RV9TU0UpIHx8ICEoeGNyMCAmIFhTVEFURV9ZTU0pICkNCj4gKyAgICAgICAgICAgIHJldHVybiBY ODZFTVVMX1VOSEFORExFQUJMRTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBkZWZh dWx0Og0KPiArICAgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gICAgICByYyA9IG9wcy0+ Z2V0X2ZwdShmcHVfaGFuZGxlX2V4Y2VwdGlvbiwgZmljLCB0eXBlLCBjdHh0KTsNCj4gDQo+ICAg ICAgaWYgKCByYyA9PSBYODZFTVVMX09LQVkgKQ0KPiBAQCAtMTY0OCw3ICsxNjY1LDggQEAgaW5f cHJvdG1vZGUoDQo+ICAjZGVmaW5lIEVCWCAzDQo+IA0KPiAgc3RhdGljIGJvb2wgdmNwdV9oYXMo DQo+IC0gICAgdW5zaWduZWQgaW50IGVheCwNCj4gKyAgICB1bnNpZ25lZCBpbnQgbGVhZiwNCj4g KyAgICB1bnNpZ25lZCBpbnQgc3VibGVhZiwNCj4gICAgICB1bnNpZ25lZCBpbnQgcmVnLA0KPiAg ICAgIHVuc2lnbmVkIGludCBiaXQsDQo+ICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0 eHQsDQo+IEBAIC0xNjU4LDcgKzE2NzYsNyBAQCBzdGF0aWMgYm9vbCB2Y3B1X2hhcygNCj4gICAg ICBpbnQgcmMgPSBYODZFTVVMX09LQVk7DQo+IA0KPiAgICAgIGZhaWxfaWYoIW9wcy0+Y3B1aWQp Ow0KPiAtICAgIHJjID0gb3BzLT5jcHVpZChlYXgsIDAsICZyZXMsIGN0eHQpOw0KPiArICAgIHJj ID0gb3BzLT5jcHVpZChsZWFmLCBzdWJsZWFmLCAmcmVzLCBjdHh0KTsNCj4gICAgICBpZiAoIHJj ID09IFg4NkVNVUxfT0tBWSApDQo+ICAgICAgew0KPiAgICAgICAgICBzd2l0Y2ggKCByZWcgKQ0K PiBAQCAtMTY3Nyw1MyArMTY5NSw1NiBAQCBzdGF0aWMgYm9vbCB2Y3B1X2hhcygNCj4gICAgICBy ZXR1cm4gcmMgPT0gWDg2RU1VTF9PS0FZOw0KPiAgfQ0KPiANCj4gLSNkZWZpbmUgdmNwdV9oYXNf ZnB1KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFRFgsICAwLCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX3NlcCgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRURY LCAxMSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19jeDgoKSAgICAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVEWCwgIDgsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf Y21vdigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFRFgsIDE1LCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX2NsZmx1c2goKSAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRURY LCAxOSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19tbXgoKSAgICAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVEWCwgMjMsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf c3NlKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFRFgsIDI1LCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX3NzZTIoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRURY LCAyNiwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19zc2UzKCkgICAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVDWCwgIDAsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf cGNsbXVscWRxKCkgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsICAxLCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX3Nzc2UzKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNY LCAgOSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19mbWEoKSAgICAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVDWCwgMTIsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf Y3gxNigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDEzLCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX3NzZTRfMSgpICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNY LCAxOSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19zc2U0XzIoKSAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVDWCwgMjAsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf bW92YmUoKSAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDIyLCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX3BvcGNudCgpICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNY LCAyMywgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19hZXNuaSgpICAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVDWCwgMjUsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf YXZ4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBFQ1gsIDI4LCBjdHh0LCBvcHMpDQo+ IC0jZGVmaW5lIHZjcHVfaGFzX2YxNmMoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgRUNY LCAyOSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19yZHJhbmQoKSAgICAgIHZjcHVf aGFzKCAgICAgICAgIDEsIEVDWCwgMzAsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9oYXNf bW14ZXh0KCkgICAgICh2Y3B1X2hhcygweDgwMDAwMDAxLCBFRFgsIDIyLCBjdHh0LCBvcHMpIHx8 DQo+IFwNCj4gKyNkZWZpbmUgWCAwIC8qIEp1c3QgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMu ICovDQo+ICsNCj4gKyNkZWZpbmUgdmNwdV9oYXNfZnB1KCkgICAgICAgICB2Y3B1X2hhcyggICAg ICAgICAxLCBYLCBFRFgsICAwLCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX3NlcCgp ICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRURYLCAxMSwgY3R4dCwgb3BzKQ0KPiAr I2RlZmluZSB2Y3B1X2hhc19jeDgoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIFgsIEVE WCwgIDgsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfY21vdigpICAgICAgICB2Y3B1 X2hhcyggICAgICAgICAxLCBYLCBFRFgsIDE1LCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVf aGFzX2NsZmx1c2goKSAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRURYLCAxOSwgY3R4dCwg b3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19tbXgoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAg IDEsIFgsIEVEWCwgMjMsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfc3NlKCkgICAg ICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFRFgsIDI1LCBjdHh0LCBvcHMpDQo+ICsjZGVm aW5lIHZjcHVfaGFzX3NzZTIoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRURYLCAy NiwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19zc2UzKCkgICAgICAgIHZjcHVfaGFz KCAgICAgICAgIDEsIFgsIEVDWCwgIDAsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNf cGNsbXVscWRxKCkgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsICAxLCBjdHh0LCBvcHMp DQo+ICsjZGVmaW5lIHZjcHVfaGFzX3Nzc2UzKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwg WCwgRUNYLCAgOSwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19mbWEoKSAgICAgICAg IHZjcHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgMTIsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUg dmNwdV9oYXNfY3gxNigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBFQ1gsIDEzLCBj dHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX3NzZTRfMSgpICAgICAgdmNwdV9oYXMoICAg ICAgICAgMSwgWCwgRUNYLCAxOSwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19zc2U0 XzIoKSAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgMjAsIGN0eHQsIG9wcykNCj4g KyNkZWZpbmUgdmNwdV9oYXNfbW92YmUoKSAgICAgICB2Y3B1X2hhcyggICAgICAgICAxLCBYLCBF Q1gsIDIyLCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX3BvcGNudCgpICAgICAgdmNw dV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAyMywgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1 X2hhc19hZXNuaSgpICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwgMjUsIGN0eHQs IG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfYXZ4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAg ICAxLCBYLCBFQ1gsIDI4LCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX2YxNmMoKSAg ICAgICAgdmNwdV9oYXMoICAgICAgICAgMSwgWCwgRUNYLCAyOSwgY3R4dCwgb3BzKQ0KPiArI2Rl ZmluZSB2Y3B1X2hhc19yZHJhbmQoKSAgICAgIHZjcHVfaGFzKCAgICAgICAgIDEsIFgsIEVDWCwg MzAsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfbW14ZXh0KCkgICAgICh2Y3B1X2hh cygweDgwMDAwMDAxLCBYLCBFRFgsIDIyLCBjdHh0LCBvcHMpDQo+IHx8IFwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2Y3B1X2hhc19zc2UoKSkNCj4gLSNkZWZpbmUgdmNwdV9o YXNfM2Rub3dfZXh0KCkgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFRFgsIDMwLCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzXzNkbm93KCkgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwg RURYLCAzMSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19sYWhmX2xtKCkgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDEsIEVDWCwgIDAsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfY3I4X2xlZ2FjeSgpICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsICA0LCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX2x6Y250KCkgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwg RUNYLCAgNSwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19zc2U0YSgpICAgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDEsIEVDWCwgIDYsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfbWlzYWxpZ25zc2UoKSB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsICA3LCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX3hvcCgpICAgICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwg RUNYLCAxMiwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19mbWE0KCkgICAgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDEsIEVDWCwgMTYsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfdGJtKCkgICAgICAgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBFQ1gsIDIxLCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX2JtaTEoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg RUJYLCAgMywgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19obGUoKSAgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIEVCWCwgIDQsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfYXZ4MigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsICA1LCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX2JtaTIoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg RUJYLCAgOCwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19ydG0oKSAgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTEsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfbXB4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDE0LCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX3Jkc2VlZCgpICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg RUJYLCAxOCwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19hZHgoKSAgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTksIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfc21hcCgpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDIwLCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX2NsZmx1c2hvcHQoKSAgdmNwdV9oYXMoICAgICAgICAgNywg RUJYLCAyMywgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19jbHdiKCkgICAgICAgIHZj cHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMjQsIGN0eHQsIG9wcykNCj4gLSNkZWZpbmUgdmNwdV9o YXNfc2hhKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDI5LCBjdHh0LCBvcHMp DQo+IC0jZGVmaW5lIHZjcHVfaGFzX3JkcGlkKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywg RUNYLCAyMiwgY3R4dCwgb3BzKQ0KPiAtI2RlZmluZSB2Y3B1X2hhc19jbHplcm8oKSAgICAgIHZj cHVfaGFzKDB4ODAwMDAwMDgsIEVCWCwgIDAsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9o YXNfM2Rub3dfZXh0KCkgICB2Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFRFgsIDMwLCBjdHh0LA0K PiBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzXzNkbm93KCkgICAgICAgdmNwdV9oYXMoMHg4MDAw MDAwMSwgWCwgRURYLCAzMSwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19sYWhmX2xt KCkgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDEsIFgsIEVDWCwgIDAsIGN0eHQsIG9wcykNCj4gKyNk ZWZpbmUgdmNwdV9oYXNfY3I4X2xlZ2FjeSgpICB2Y3B1X2hhcygweDgwMDAwMDAxLCBYLCBFQ1gs ICA0LCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX2x6Y250KCkgICAgICAgdmNwdV9o YXMoMHg4MDAwMDAwMSwgWCwgRUNYLCAgNSwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hh c19zc2U0YSgpICAgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDEsIFgsIEVDWCwgIDYsIGN0eHQsIG9w cykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfbWlzYWxpZ25zc2UoKSB2Y3B1X2hhcygweDgwMDAwMDAx LCBYLCBFQ1gsICA3LCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX3hvcCgpICAgICAg ICAgdmNwdV9oYXMoMHg4MDAwMDAwMSwgWCwgRUNYLCAxMiwgY3R4dCwgb3BzKQ0KPiArI2RlZmlu ZSB2Y3B1X2hhc19mbWE0KCkgICAgICAgIHZjcHVfaGFzKDB4ODAwMDAwMDEsIFgsIEVDWCwgMTYs IGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfdGJtKCkgICAgICAgICB2Y3B1X2hhcygw eDgwMDAwMDAxLCBYLCBFQ1gsIDIxLCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX2Jt aTEoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJYLCAgMywgY3R4dCwgb3BzKQ0K PiArI2RlZmluZSB2Y3B1X2hhc19obGUoKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIDAs IEVCWCwgIDQsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfYXZ4MigpICAgICAgICB2 Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsICA1LCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZj cHVfaGFzX2JtaTIoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJYLCAgOCwgY3R4 dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19ydG0oKSAgICAgICAgIHZjcHVfaGFzKCAgICAg ICAgIDcsIDAsIEVCWCwgMTEsIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9oYXNfbXB4KCkg ICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDE0LCBjdHh0LCBvcHMpDQo+ICsj ZGVmaW5lIHZjcHVfaGFzX3Jkc2VlZCgpICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgMCwgRUJY LCAxOCwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19hZHgoKSAgICAgICAgIHZjcHVf aGFzKCAgICAgICAgIDcsIDAsIEVCWCwgMTksIGN0eHQsIG9wcykNCj4gKyNkZWZpbmUgdmNwdV9o YXNfc21hcCgpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDIwLCBjdHh0LCBv cHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX2NsZmx1c2hvcHQoKSAgdmNwdV9oYXMoICAgICAgICAg NywgMCwgRUJYLCAyMywgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc19jbHdiKCkgICAg ICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIDAsIEVCWCwgMjQsIGN0eHQsIG9wcykNCj4gKyNkZWZp bmUgdmNwdV9oYXNfc2hhKCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCAwLCBFQlgsIDI5 LCBjdHh0LCBvcHMpDQo+ICsjZGVmaW5lIHZjcHVfaGFzX3JkcGlkKCkgICAgICAgdmNwdV9oYXMo ICAgICAgICAgNywgMCwgRUNYLCAyMiwgY3R4dCwgb3BzKQ0KPiArI2RlZmluZSB2Y3B1X2hhc194 Z2V0YnYxKCkgICAgIHZjcHVfaGFzKCAgICAgICAweGQsIDEsIEVBWCwgIDIsIGN0eHQsIG9wcykN Cj4gKyNkZWZpbmUgdmNwdV9oYXNfY2x6ZXJvKCkgICAgICB2Y3B1X2hhcygweDgwMDAwMDA4LCBY LCBFQlgsICAwLCBjdHh0LCBvcHMpDQo+IA0KPiAgI2RlZmluZSB2Y3B1X211c3RfaGF2ZShmZWF0 KSBcDQo+ICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCF2Y3B1X2hhc18jI2ZlYXQoKSwgRVhD X1VEKQ0KPiBAQCAtNTE1OCwxOCArNTE3OSwzMyBAQCB4ODZfZW11bGF0ZSgNCj4gICAgICAgICAg ICAgICAgICBfcmVncy5lZmxhZ3MgfD0gWDg2X0VGTEFHU19BQzsNCj4gICAgICAgICAgICAgIGJy ZWFrOw0KPiANCj4gLSNpZmRlZiBfX1hFTl9fDQo+IC0gICAgICAgIGNhc2UgMHhkMTogLyogeHNl dGJ2ICovDQo+ICsgICAgICAgIGNhc2UgMHhkMDogLyogeGdldGJ2ICovDQo+ICAgICAgICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LnBmeCwgRVhDX1VEKTsNCj4gLSAgICAgICAgICAg IGlmICggIW9wcy0+cmVhZF9jciB8fCBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCkgIT0gWDg2 RU1VTF9PS0FZICkNCj4gKyAgICAgICAgICAgIGlmICggIW9wcy0+cmVhZF9jciB8fCAhb3BzLT5y ZWFkX3hjciB8fA0KPiArICAgICAgICAgICAgICAgICBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4 dCkgIT0gWDg2RU1VTF9PS0FZICkNCj4gICAgICAgICAgICAgICAgICBjcjQgPSAwOw0KPiAgICAg ICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NSNF9PU1hTQVZFKSwg RVhDX1VEKTsNCj4gLSAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighbW9kZV9yaW5n MCgpIHx8DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX3hzZXRi dihfcmVncy5lY3gsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfcmVncy5lYXggfCAoX3JlZ3MucmR4IDw8IDMyKSksDQo+ICsgICAgICAgICAgICBn ZW5lcmF0ZV9leGNlcHRpb25faWYoX3JlZ3MuZWN4ID4gKHZjcHVfaGFzX3hnZXRidjEoKSA/IDEg OiAwKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfR1AsIDApOw0K PiArICAgICAgICAgICAgcmMgPSBvcHMtPnJlYWRfeGNyKF9yZWdzLmVjeCwgJm1zcl92YWwsIGN0 eHQpOw0KPiArICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQ0KPiArICAgICAg ICAgICAgICAgIGdvdG8gZG9uZTsNCj4gKyAgICAgICAgICAgIF9yZWdzLnIoYXgpID0gKHVpbnQz Ml90KW1zcl92YWw7DQo+ICsgICAgICAgICAgICBfcmVncy5yKGR4KSA9IG1zcl92YWwgPj4gMzI7 DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICBjYXNlIDB4ZDE6IC8qIHhz ZXRidiAqLw0KPiArICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5wZngsIEVY Q19VRCk7DQo+ICsgICAgICAgICAgICBpZiAoICFvcHMtPnJlYWRfY3IgfHwgIW9wcy0+d3JpdGVf eGNyIHx8DQo+ICsgICAgICAgICAgICAgICAgIG9wcy0+cmVhZF9jcig0LCAmY3I0LCBjdHh0KSAh PSBYODZFTVVMX09LQVkgKQ0KPiArICAgICAgICAgICAgICAgIGNyNCA9IDA7DQo+ICsgICAgICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIShjcjQgJiBYODZfQ1I0X09TWFNBVkUpLCBFWENf VUQpOw0KPiArICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFtb2RlX3JpbmcwKCkg fHwgX3JlZ3MuZWN4LCBFWENfR1AsIDApOw0KPiArICAgICAgICAgICAgcmMgPSBvcHMtPndyaXRl X3hjcihfcmVncy5lY3gsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZWdz LmVheCB8ICgodWludDY0X3QpX3JlZ3MuZWR4IDw8IDMyKSwgY3R4dCk7DQo+ICsgICAgICAgICAg ICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApDQo+ICsgICAgICAgICAgICAgICAgZ290byBkb25l Ow0KPiAgICAgICAgICAgICAgYnJlYWs7DQo+IC0jZW5kaWYNCj4gDQo+ICAgICAgICAgIGNhc2Ug MHhkNDogLyogdm1mdW5jICovDQo+ICAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYo dmV4LnBmeCwgRVhDX1VEKTsNCj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmgNCj4gKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgN Cj4gQEAgLTM3Myw2ICszNzMsMjQgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX29wcw0KPiAgICAgICAg ICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7DQo+IA0KPiAgICAgIC8qDQo+ICsgICAg ICogcmVhZF94Y3I6IFJlYWQgZnJvbSBleHRlbmRlZCBjb250cm9sIHJlZ2lzdGVyLg0KPiArICAg ICAqICBAcmVnOiAgIFtJTiBdIFJlZ2lzdGVyIHRvIHJlYWQuDQo+ICsgICAgICovDQo+ICsgICAg aW50ICgqcmVhZF94Y3IpKA0KPiArICAgICAgICB1bnNpZ25lZCBpbnQgcmVnLA0KPiArICAgICAg ICB1aW50NjRfdCAqdmFsLA0KPiArICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4 dCk7DQo+ICsNCj4gKyAgICAvKg0KPiArICAgICAqIHdyaXRlX3hjcjogV3JpdGUgdG8gZXh0ZW5k ZWQgY29udHJvbCByZWdpc3Rlci4NCj4gKyAgICAgKiAgQHJlZzogICBbSU4gXSBSZWdpc3RlciB0 byB3cml0ZS4NCj4gKyAgICAgKi8NCj4gKyAgICBpbnQgKCp3cml0ZV94Y3IpKA0KPiArICAgICAg ICB1bnNpZ25lZCBpbnQgcmVnLA0KPiArICAgICAgICB1aW50NjRfdCB2YWwsDQo+ICsgICAgICAg IHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsNCj4gKw0KPiArICAgIC8qDQo+ICAgICAg ICogcmVhZF9tc3I6IFJlYWQgZnJvbSBtb2RlbC1zcGVjaWZpYyByZWdpc3Rlci4NCj4gICAgICAg KiAgQHJlZzogICBbSU4gXSBSZWdpc3RlciB0byByZWFkLg0KPiAgICAgICAqLw0KPiAtLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS90cmFjZS5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL3RyYWNlLmgNCj4gQEAgLTMzLDYgKzMzLDggQEANCj4gICNkZWZpbmUgRE9fVFJDX0hW TV9DUl9XUklURTY0ICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gICNkZWZpbmUgRE9fVFJDX0hW TV9EUl9SRUFEICAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gICNkZWZpbmUgRE9fVFJDX0hW TV9EUl9XUklURSAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gKyNkZWZpbmUgRE9fVFJDX0hW TV9YQ1JfUkVBRDY0ICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gKyNkZWZpbmUgRE9fVFJDX0hW TV9YQ1JfV1JJVEU2NCBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gICNkZWZpbmUgRE9fVFJDX0hW TV9NU1JfUkVBRCAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gICNkZWZpbmUgRE9fVFJDX0hW TV9NU1JfV1JJVEUgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gICNkZWZpbmUgRE9fVFJDX0hW TV9SRFRTQyAgICAgICBERUZBVUxUX0hWTV9SRUdBQ0NFU1MNCj4gLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni94ODYtZGVmbnMuaA0KPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3g4Ni1kZWZu cy5oDQo+IEBAIC02Niw0ICs2NiwyOCBAQA0KPiAgI2RlZmluZSBYODZfQ1I0X1NNQVAgICAgICAg MHgwMDIwMDAwMCAvKiBlbmFibGUgU01BUCAqLw0KPiAgI2RlZmluZSBYODZfQ1I0X1BLRSAgICAg ICAgMHgwMDQwMDAwMCAvKiBlbmFibGUgUEtFICovDQo+IA0KPiArLyoNCj4gKyAqIFhTVEFURSBj b21wb25lbnQgZmxhZ3MgaW4gWENSMA0KPiArICovDQo+ICsjZGVmaW5lIF9YU1RBVEVfRlAgICAg ICAgICAgICAgICAgMA0KPiArI2RlZmluZSBYU1RBVEVfRlAgICAgICAgICAgICAgICAgICgxVUxM IDw8IF9YU1RBVEVfRlApDQo+ICsjZGVmaW5lIF9YU1RBVEVfU1NFICAgICAgICAgICAgICAgMQ0K PiArI2RlZmluZSBYU1RBVEVfU1NFICAgICAgICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfU1NF KQ0KPiArI2RlZmluZSBfWFNUQVRFX1lNTSAgICAgICAgICAgICAgIDINCj4gKyNkZWZpbmUgWFNU QVRFX1lNTSAgICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX1lNTSkNCj4gKyNkZWZpbmUg X1hTVEFURV9CTkRSRUdTICAgICAgICAgICAzDQo+ICsjZGVmaW5lIFhTVEFURV9CTkRSRUdTICAg ICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9CTkRSRUdTKQ0KPiArI2RlZmluZSBfWFNUQVRFX0JO RENTUiAgICAgICAgICAgIDQNCj4gKyNkZWZpbmUgWFNUQVRFX0JORENTUiAgICAgICAgICAgICAo MVVMTCA8PCBfWFNUQVRFX0JORENTUikNCj4gKyNkZWZpbmUgX1hTVEFURV9PUE1BU0sgICAgICAg ICAgICA1DQo+ICsjZGVmaW5lIFhTVEFURV9PUE1BU0sgICAgICAgICAgICAgKDFVTEwgPDwgX1hT VEFURV9PUE1BU0spDQo+ICsjZGVmaW5lIF9YU1RBVEVfWk1NICAgICAgICAgICAgICAgNg0KPiAr I2RlZmluZSBYU1RBVEVfWk1NICAgICAgICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfWk1NKQ0K PiArI2RlZmluZSBfWFNUQVRFX0hJX1pNTSAgICAgICAgICAgIDcNCj4gKyNkZWZpbmUgWFNUQVRF X0hJX1pNTSAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX0hJX1pNTSkNCj4gKyNkZWZpbmUg X1hTVEFURV9QS1JVICAgICAgICAgICAgICA5DQo+ICsjZGVmaW5lIFhTVEFURV9QS1JVICAgICAg ICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9QS1JVKQ0KPiArI2RlZmluZSBfWFNUQVRFX0xXUCAg ICAgICAgICAgICAgIDYyDQo+ICsjZGVmaW5lIFhTVEFURV9MV1AgICAgICAgICAgICAgICAgKDFV TEwgPDwgX1hTVEFURV9MV1ApDQo+ICsNCj4gICNlbmRpZgkvKiBfX1hFTl9YODZfREVGTlNfSF9f ICovDQo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmgNCj4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni94c3RhdGUuaA0KPiBAQCAtMTAsNiArMTAsNyBAQA0KPiANCj4gICNpbmNs dWRlIDx4ZW4vc2NoZWQuaD4NCj4gICNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPg0KPiArI2lu Y2x1ZGUgPGFzbS94ODYtZGVmbnMuaD4NCj4gDQo+ICAjZGVmaW5lIEZDV19ERUZBVUxUICAgICAg ICAgICAgICAgMHgwMzdmDQo+ICAjZGVmaW5lIEZDV19SRVNFVCAgICAgICAgICAgICAgICAgMHgw MDQwDQo+IEBAIC0yOCwyNyArMjksNiBAQCBleHRlcm4gdWludDMyX3QgbXhjc3JfbWFzazsNCj4g ICNkZWZpbmUgWFNBVkVfSERSX09GRlNFVCAgICAgICAgICBGWFNBVkVfU0laRQ0KPiAgI2RlZmlu ZSBYU1RBVEVfQVJFQV9NSU5fU0laRSAgICAgIChGWFNBVkVfU0laRSArIFhTQVZFX0hEUl9TSVpF KQ0KPiANCj4gLSNkZWZpbmUgX1hTVEFURV9GUCAgICAgICAgICAgICAgICAwDQo+IC0jZGVmaW5l IFhTVEFURV9GUCAgICAgICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9GUCkNCj4gLSNkZWZp bmUgX1hTVEFURV9TU0UgICAgICAgICAgICAgICAxDQo+IC0jZGVmaW5lIFhTVEFURV9TU0UgICAg ICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9TU0UpDQo+IC0jZGVmaW5lIF9YU1RBVEVfWU1N ICAgICAgICAgICAgICAgMg0KPiAtI2RlZmluZSBYU1RBVEVfWU1NICAgICAgICAgICAgICAgICgx VUxMIDw8IF9YU1RBVEVfWU1NKQ0KPiAtI2RlZmluZSBfWFNUQVRFX0JORFJFR1MgICAgICAgICAg IDMNCj4gLSNkZWZpbmUgWFNUQVRFX0JORFJFR1MgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRF X0JORFJFR1MpDQo+IC0jZGVmaW5lIF9YU1RBVEVfQk5EQ1NSICAgICAgICAgICAgNA0KPiAtI2Rl ZmluZSBYU1RBVEVfQk5EQ1NSICAgICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfQk5EQ1NSKQ0K PiAtI2RlZmluZSBfWFNUQVRFX09QTUFTSyAgICAgICAgICAgIDUNCj4gLSNkZWZpbmUgWFNUQVRF X09QTUFTSyAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX09QTUFTSykNCj4gLSNkZWZpbmUg X1hTVEFURV9aTU0gICAgICAgICAgICAgICA2DQo+IC0jZGVmaW5lIFhTVEFURV9aTU0gICAgICAg ICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9aTU0pDQo+IC0jZGVmaW5lIF9YU1RBVEVfSElfWk1N ICAgICAgICAgICAgNw0KPiAtI2RlZmluZSBYU1RBVEVfSElfWk1NICAgICAgICAgICAgICgxVUxM IDw8IF9YU1RBVEVfSElfWk1NKQ0KPiAtI2RlZmluZSBfWFNUQVRFX1BLUlUgICAgICAgICAgICAg IDkNCj4gLSNkZWZpbmUgWFNUQVRFX1BLUlUgICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRF X1BLUlUpDQo+IC0jZGVmaW5lIF9YU1RBVEVfTFdQICAgICAgICAgICAgICAgNjINCj4gLSNkZWZp bmUgWFNUQVRFX0xXUCAgICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX0xXUCkNCj4gLQ0K PiAgI2RlZmluZSBYU1RBVEVfRlBfU1NFICAoWFNUQVRFX0ZQIHwgWFNUQVRFX1NTRSkNCj4gICNk ZWZpbmUgWENOVFhUX01BU0sgICAgKFhTVEFURV9GUCB8IFhTVEFURV9TU0UgfCBYU1RBVEVfWU1N IHwNCj4gWFNUQVRFX09QTUFTSyB8IFwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIFhTVEFU RV9aTU0gfCBYU1RBVEVfSElfWk1NIHwgWFNUQVRFX05PTkxBWlkpDQo+IC0tLSBhL3hlbi9pbmNs dWRlL3B1YmxpYy90cmFjZS5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy90cmFjZS5oDQo+ IEBAIC0yMzUsNiArMjM1LDggQEANCj4gICNkZWZpbmUgVFJDX0hWTV9UUkFQICAgICAgICAgICAg IChUUkNfSFZNX0hBTkRMRVIgKyAweDIzKQ0KPiAgI2RlZmluZSBUUkNfSFZNX1RSQVBfREVCVUcg ICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjQpDQo+ICAjZGVmaW5lIFRSQ19IVk1fVkxBUElD ICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNSkNCj4gKyNkZWZpbmUgVFJDX0hWTV9Y Q1JfUkVBRDY0ICAgICAgKFRSQ19IVk1fSEFORExFUiArIFRSQ182NF9GTEFHICsNCj4gMHgyNikN Cj4gKyNkZWZpbmUgVFJDX0hWTV9YQ1JfV1JJVEU2NCAgICAgKFRSQ19IVk1fSEFORExFUiArIFRS Q182NF9GTEFHDQo+ICsgMHgyNykNCj4gDQo+ICAjZGVmaW5lIFRSQ19IVk1fSU9QT1JUX1dSSVRF ICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDIxNikNCj4gICNkZWZpbmUgVFJDX0hWTV9JT01FTV9X UklURSAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjE3KQ0KPiANCj4gDQo+IA0KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBYZW4tZGV2ZWwgbWFp bGluZyBsaXN0DQo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnDQo+IGh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=