From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 03/19] x86/emul: Simplfy emulation state setup Date: Mon, 28 Nov 2016 12:54:16 +0000 Message-ID: <98cb9fec71bd4fc0a75ae4139535e902@AMSPEX02CL03.citrite.net> References: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> <1480331616-6165-4-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480331616-6165-4-git-send-email-andrew.cooper3@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 Cc: Andrew Cooper , George Dunlap List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDI4IE5vdmVtYmVyIDIwMTYgMTE6 MTMKPiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3 IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IEdlb3JnZSBEdW5sYXAKPiA8R2Vv cmdlLkR1bmxhcEBjaXRyaXguY29tPjsgUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4 LmNvbT4KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgMDMvMTldIHg4Ni9lbXVsOiBTaW1wbGZ5IGVtdWxh dGlvbiBzdGF0ZSBzZXR1cAo+IAo+IFRoZSBjdXJyZW50IGNvZGUgdG8gc2V0IHVwIGVtdWxhdGlv biBzdGF0ZSBpcyBhZC1ob2MgYW5kIGVycm9yIHByb25lLgo+IAo+ICAqIENvbnNpc3RlbnRseSB6 ZXJvIGFsbCBlbXVsYXRpb24gc3RhdGUgc3RydWN0dXJlcy4KPiAgKiBBdm9pZCBleHBsaWNpdGx5 IGluaXRpYWxpc2luZyBzb21lIHN0YXRlIHRvIDAuCj4gICogRXhwbGljaXRseSBpZGVudGlmeSBh bGwgaW5wdXQgYW5kIG91dHB1dCBzdGF0ZSBpbiB4ODZfZW11bGF0ZV9jdHh0LiAgVGhpcwo+ICAg IGludm9sdmVzIHJlYXJhbmdpbmcgc29tZSBmaWVsZHMuCj4gICogSGF2ZSB4ODZfZGVjb2RlKCkg ZXhwbGljaXRseSBpbml0YWxpc2UgYWxsIG91dHB1dCBzdGF0ZSBhdCBpdHMgc3RhcnQuCj4gCj4g V2hpbGUgbWFraW5nIHRoZSBhYm92ZSBjaGFuZ2VzLCB0d28gbWlub3IgdHdlYWtzOgo+IAo+ICAq IE1vdmUgdGhlIGNhbGN1bGF0aW9uIG9mIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRl IGZyb20KPiAgICBfaHZtX2VtdWxhdGVfb25lKCkgdG8gaHZtX2VtdWxhdGVfaW5pdF9vbmNlKCku ICBJdCBkb2Vzbid0IG5lZWQKPiAgICByZWNhbGN1bGF0aW5nIGZvciBlYWNoIGluc3RydWN0aW9u Lgo+ICAqIENoYW5nZSBmb3JjZV93cml0ZWJhY2sgdG8gYmVpbmcgYSBib29sZWFuLCB0byBtYXRj aCBpdHMgdXNlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+Cj4gQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgo+IFJl dmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gLS0tCj4gQ0M6IEdl b3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KPiBDQzogUGF1bCBEdXJy YW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQg PHBhdWwuZHVycmFudEBjaXRyaXguY29tPgoKPiAKPiB2MjoKPiAgKiBTcGxpdCB4ODZfZW11bGF0 ZV9jdHh0IGludG8gdGhyZWUgc2VjdGlvbnMKPiAtLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9lbXVs YXRlLmMgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gIHhl bi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKystLS0tLS0K PiAgeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyAgICAgICAgfCAgNCArKy0tCj4gIHhl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHwgIDEgKwo+ICB4ZW4vYXJjaC94 ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaCB8IDMyCj4gKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzMSBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgYi94 ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+IGluZGV4IGYxZjZlMmYuLjNlZmVlYWQgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiArKysgYi94ZW4vYXJjaC94ODYv aHZtL2VtdWxhdGUuYwo+IEBAIC0xNzcwLDEzICsxNzcwLDYgQEAgc3RhdGljIGludCBfaHZtX2Vt dWxhdGVfb25lKHN0cnVjdAo+IGh2bV9lbXVsYXRlX2N0eHQgKmh2bWVtdWxfY3R4dCwKPiAKPiAg ICAgIHZpby0+bW1pb19yZXRyeSA9IDA7Cj4gCj4gLSAgICBpZiAoIGNwdV9oYXNfdm14ICkKPiAt ICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVs YXRlX25vbmU7Cj4gLSAgICBlbHNlIGlmICggY3B1X2hhc19zdm1fbnJpcHMgKQo+IC0gICAgICAg IGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVfaWNl YnA7Cj4gLSAgICBlbHNlCj4gLSAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2VtdWxh dGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9hbGw7Cj4gLQo+ICAgICAgcmMgPSB4ODZfZW11bGF0ZSgm aHZtZW11bF9jdHh0LT5jdHh0LCBvcHMpOwo+IAo+ICAgICAgaWYgKCByYyA9PSBYODZFTVVMX09L QVkgJiYgdmlvLT5tbWlvX3JldHJ5ICkKPiBAQCAtMTk0NywxNCArMTk0MCwyMyBAQCB2b2lkIGh2 bV9lbXVsYXRlX2luaXRfb25jZSgKPiAgICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1l bXVsX2N0eHQsCj4gICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAgewo+IC0gICAg aHZtZW11bF9jdHh0LT5pbnRyX3NoYWRvdyA9Cj4gaHZtX2Z1bmNzLmdldF9pbnRlcnJ1cHRfc2hh ZG93KGN1cnJlbnQpOwo+IC0gICAgaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOwo+IC0g ICAgaHZtZW11bF9jdHh0LT5jdHh0LmZvcmNlX3dyaXRlYmFjayA9IDE7Cj4gLSAgICBodm1lbXVs X2N0eHQtPnNlZ19yZWdfYWNjZXNzZWQgPSAwOwo+IC0gICAgaHZtZW11bF9jdHh0LT5zZWdfcmVn X2RpcnR5ID0gMDsKPiAtICAgIGh2bWVtdWxfY3R4dC0+c2V0X2NvbnRleHQgPSAwOwo+ICsgICAg c3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50Owo+ICsKPiArICAgIG1lbXNldChodm1lbXVsX2N0 eHQsIDAsIHNpemVvZigqaHZtZW11bF9jdHh0KSk7Cj4gKwo+ICsgICAgaHZtZW11bF9jdHh0LT5p bnRyX3NoYWRvdyA9IGh2bV9mdW5jcy5nZXRfaW50ZXJydXB0X3NoYWRvdyhjdXJyKTsKPiAgICAg IGh2bWVtdWxfZ2V0X3NlZ19yZWcoeDg2X3NlZ19jcywgaHZtZW11bF9jdHh0KTsKPiAgICAgIGh2 bWVtdWxfZ2V0X3NlZ19yZWcoeDg2X3NlZ19zcywgaHZtZW11bF9jdHh0KTsKPiArCj4gKyAgICBo dm1lbXVsX2N0eHQtPmN0eHQucmVncyA9IHJlZ3M7Cj4gKyAgICBodm1lbXVsX2N0eHQtPmN0eHQu Zm9yY2Vfd3JpdGViYWNrID0gdHJ1ZTsKPiArCj4gKyAgICBpZiAoIGNwdV9oYXNfdm14ICkKPiAr ICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVs YXRlX25vbmU7Cj4gKyAgICBlbHNlIGlmICggY3B1X2hhc19zdm1fbnJpcHMgKQo+ICsgICAgICAg IGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVfaWNl YnA7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2VtdWxh dGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9hbGw7Cj4gIH0KPiAKPiAgdm9pZCBodm1fZW11bGF0ZV9p bml0X3Blcl9pbnNuKAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNo L3g4Ni9tbS5jCj4gaW5kZXggNWIwZTlmMy4uZDM2NWY1OSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvbW0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jCj4gQEAgLTUzMzcsNyArNTMzNywx NCBAQCBpbnQgcHR3cl9kb19wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZAo+IGxv bmcgYWRkciwKPiAgICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47Cj4gICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlOwo+ICAgICAgbDFfcGdlbnRyeV90ICAgICAgcHRlOwo+IC0gICAg c3RydWN0IHB0d3JfZW11bGF0ZV9jdHh0IHB0d3JfY3R4dDsKPiArICAgIHN0cnVjdCBwdHdyX2Vt dWxhdGVfY3R4dCBwdHdyX2N0eHQgPSB7Cj4gKyAgICAgICAgLmN0eHQgPSB7Cj4gKyAgICAgICAg ICAgIC5yZWdzID0gcmVncywKPiArICAgICAgICAgICAgLmFkZHJfc2l6ZSA9IGlzX3B2XzMyYml0 X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJfTE9ORywKPiArICAgICAgICAgICAgLnNwX3NpemUg ICA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJfTE9ORywKPiArICAgICAg ICAgICAgLnN3aW50X2VtdWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9ub25lLAo+ICsgICAgICAg IH0sCj4gKyAgICB9Owo+ICAgICAgaW50IHJjOwo+IAo+ICAgICAgLyogQXR0ZW1wdCB0byByZWFk IHRoZSBQVEUgdGhhdCBtYXBzIHRoZSBWQSBiZWluZyBhY2Nlc3NlZC4gKi8KPiBAQCAtNTM2Mywx MSArNTM3MCw2IEBAIGludCBwdHdyX2RvX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkCj4gbG9uZyBhZGRyLAo+ICAgICAgICAgIGdvdG8gYmFpbDsKPiAgICAgIH0KPiAKPiAtICAg IHB0d3JfY3R4dC5jdHh0LnJlZ3MgPSByZWdzOwo+IC0gICAgcHR3cl9jdHh0LmN0eHQuZm9yY2Vf d3JpdGViYWNrID0gMDsKPiAtICAgIHB0d3JfY3R4dC5jdHh0LmFkZHJfc2l6ZSA9IHB0d3JfY3R4 dC5jdHh0LnNwX3NpemUgPQo+IC0gICAgICAgIGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDog QklUU19QRVJfTE9ORzsKPiAtICAgIHB0d3JfY3R4dC5jdHh0LnN3aW50X2VtdWxhdGUgPSB4ODZf c3dpbnRfZW11bGF0ZV9ub25lOwo+ICAgICAgcHR3cl9jdHh0LmNyMiA9IGFkZHI7Cj4gICAgICBw dHdyX2N0eHQucHRlID0gcHRlOwo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hh ZG93L2NvbW1vbi5jCj4gYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gaW5kZXgg N2U1YjhiMC4uYTRhM2M0YiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2Nv bW1vbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwo+IEBAIC0zODUs OCArMzg1LDkgQEAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcwo+ICpzaGFkb3dfaW5pdF9l bXVsYXRpb24oCj4gICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7Cj4gICAgICB1bnNpZ25l ZCBsb25nIGFkZHI7Cj4gCj4gKyAgICBtZW1zZXQoc2hfY3R4dCwgMCwgc2l6ZW9mKCpzaF9jdHh0 KSk7Cj4gKwo+ICAgICAgc2hfY3R4dC0+Y3R4dC5yZWdzID0gcmVnczsKPiAtICAgIHNoX2N0eHQt PmN0eHQuZm9yY2Vfd3JpdGViYWNrID0gMDsKPiAgICAgIHNoX2N0eHQtPmN0eHQuc3dpbnRfZW11 bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRlX25vbmU7Cj4gCj4gICAgICBpZiAoIGlzX3B2X3ZjcHUo dikgKQo+IEBAIC0zOTYsNyArMzk3LDYgQEAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcwo+ ICpzaGFkb3dfaW5pdF9lbXVsYXRpb24oCj4gICAgICB9Cj4gCj4gICAgICAvKiBTZWdtZW50IGNh Y2hlIGluaXRpYWxpc2F0aW9uLiBQcmltZWQgd2l0aCBDUy4gKi8KPiAtICAgIHNoX2N0eHQtPnZh bGlkX3NlZ19yZWdzID0gMDsKPiAgICAgIGNyZWcgPSBodm1fZ2V0X3NlZ19yZWcoeDg2X3NlZ19j cywgc2hfY3R4dCk7Cj4gCj4gICAgICAvKiBXb3JrIG91dCB0aGUgZW11bGF0aW9uIG1vZGUuICov Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCj4g Yi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+IGluZGV4IGQ4MmU4NWQu LjUzMmJkMzIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmMKPiArKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+IEBA IC0xOTA0LDYgKzE5MDQsNyBAQCB4ODZfZGVjb2RlKAo+ICAgICAgc3RhdGUtPnJlZ3MgPSBjdHh0 LT5yZWdzOwo+ICAgICAgc3RhdGUtPmVpcCA9IGN0eHQtPnJlZ3MtPmVpcDsKPiAKPiArICAgIC8q IEluaXRpYWxpc2Ugb3V0cHV0IHN0YXRlIGluIHg4Nl9lbXVsYXRlX2N0eHQgKi8KPiAgICAgIGN0 eHQtPnJldGlyZS5ieXRlID0gMDsKPiAKPiAgICAgIG9wX2J5dGVzID0gZGVmX29wX2J5dGVzID0g YWRfYnl0ZXMgPSBkZWZfYWRfYnl0ZXMgPSBjdHh0LQo+ID5hZGRyX3NpemUvODsKPiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiBiL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCj4gaW5kZXggZWM4MjRjZS4uYWI1NjZjMCAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+ICsr KyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCj4gQEAgLTQxMCw2ICs0 MTAsMjMgQEAgc3RydWN0IGNwdV91c2VyX3JlZ3M7Cj4gCj4gIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0Cj4gIHsKPiArICAgIC8qCj4gKyAgICAgKiBJbnB1dC1vbmx5IHN0YXRlOgo+ICsgICAgICov Cj4gKwo+ICsgICAgLyogU29mdHdhcmUgZXZlbnQgaW5qZWN0aW9uIHN1cHBvcnQuICovCj4gKyAg ICBlbnVtIHg4Nl9zd2ludF9lbXVsYXRpb24gc3dpbnRfZW11bGF0ZTsKPiArCj4gKyAgICAvKiBT ZXQgdGhpcyBpZiB3cml0ZXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLiAqLwo+ICsgICAgYm9vbCBm b3JjZV93cml0ZWJhY2s7Cj4gKwo+ICsgICAgLyogQ2FsbGVyIGRhdGEgdGhhdCBjYW4gYmUgdXNl ZCBieSB4ODZfZW11bGF0ZV9vcHMnIHJvdXRpbmVzLiAqLwo+ICsgICAgdm9pZCAqZGF0YTsKPiAr Cj4gKyAgICAvKgo+ICsgICAgICogSW5wdXQvb3V0cHV0IHN0YXRlOgo+ICsgICAgICovCj4gKwo+ ICAgICAgLyogUmVnaXN0ZXIgc3RhdGUgYmVmb3JlL2FmdGVyIGVtdWxhdGlvbi4gKi8KPiAgICAg IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzOwo+IAo+IEBAIC00MTksMTQgKzQzNiwxMiBAQCBz dHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dAo+ICAgICAgLyogU3RhY2sgcG9pbnRlciB3aWR0aCBpbiBi aXRzICgxNiwgMzIgb3IgNjQpLiAqLwo+ICAgICAgdW5zaWduZWQgaW50IHNwX3NpemU7Cj4gCj4g LSAgICAvKiBDYW5vbmljYWwgb3Bjb2RlIChzZWUgYmVsb3cpLiAqLwo+IC0gICAgdW5zaWduZWQg aW50IG9wY29kZTsKPiAtCj4gLSAgICAvKiBTb2Z0d2FyZSBldmVudCBpbmplY3Rpb24gc3VwcG9y dC4gKi8KPiAtICAgIGVudW0geDg2X3N3aW50X2VtdWxhdGlvbiBzd2ludF9lbXVsYXRlOwo+ICsg ICAgLyoKPiArICAgICAqIE91dHB1dC1vbmx5IHN0YXRlOgo+ICsgICAgICovCj4gCj4gLSAgICAv KiBTZXQgdGhpcyBpZiB3cml0ZXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLiAqLwo+IC0gICAgdWlu dDhfdCBmb3JjZV93cml0ZWJhY2s7Cj4gKyAgICAvKiBDYW5vbmljYWwgb3Bjb2RlIChzZWUgYmVs b3cpICh2YWxpZCBvbmx5IG9uIFg4NkVNVUxfT0tBWSkuICovCj4gKyAgICB1bnNpZ25lZCBpbnQg b3Bjb2RlOwo+IAo+ICAgICAgLyogUmV0aXJlbWVudCBzdGF0ZSwgc2V0IGJ5IHRoZSBlbXVsYXRv ciAodmFsaWQgb25seSBvbiBYODZFTVVMX09LQVkpLgo+ICovCj4gICAgICB1bmlvbiB7Cj4gQEAg LTQzNyw5ICs0NTIsNiBAQCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dAo+ICAgICAgICAgIH0gZmxh Z3M7Cj4gICAgICAgICAgdWludDhfdCBieXRlOwo+ICAgICAgfSByZXRpcmU7Cj4gLQo+IC0gICAg LyogQ2FsbGVyIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCBieSB4ODZfZW11bGF0ZV9vcHMnIHJvdXRp bmVzLiAqLwo+IC0gICAgdm9pZCAqZGF0YTsKPiAgfTsKPiAKPiAgLyoKPiAtLQo+IDIuMS40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==