From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v12 03/11] x86/hvm: Introduce hvm_save_cpu_ctxt_one func Date: Mon, 16 Jul 2018 15:29:44 +0000 Message-ID: <492015aaf7164a48bc2a2e635ef0277d@AMSPEX02CL02.citrite.net> References: <1531752937-10478-1-git-send-email-aisaila@bitdefender.com> <1531752937-10478-4-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1531752937-10478-4-git-send-email-aisaila@bitdefender.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: 'Alexandru Isaila' , "xen-devel@lists.xen.org" Cc: Ian Jackson , Wei Liu , "jbeulich@suse.com" , Andrew Cooper List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFsZXhhbmRydSBJc2FpbGEgW21h aWx0bzphaXNhaWxhQGJpdGRlZmVuZGVyLmNvbV0KPiBTZW50OiAxNiBKdWx5IDIwMTggMTU6NTUK PiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBDYzogSWFuIEphY2tzb24gPElhbi5KYWNr c29uQGNpdHJpeC5jb20+OyBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPjsKPiBqYmV1bGlj aEBzdXNlLmNvbTsgQW5kcmV3IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IFBh dWwKPiBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IEFsZXhhbmRydSBJc2FpbGEK PiA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+Cj4gU3ViamVjdDogW1BBVENIIHYxMiAwMy8xMV0g eDg2L2h2bTogSW50cm9kdWNlIGh2bV9zYXZlX2NwdV9jdHh0X29uZQo+IGZ1bmMKPiAKPiBUaGlz IGlzIHVzZWQgdG8gc2F2ZSBkYXRhIGZyb20gYSBzaW5nbGUgaW5zdGFuY2UuCj4gCj4gU2lnbmVk LW9mZi1ieTogQWxleGFuZHJ1IElzYWlsYSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+Cj4gCj4g LS0tCj4gQ2hhbmdlcyBzaW5jZSBWMTE6Cj4gCS0gaHZtX3NhdmVfY3B1X2N0eHQoKSBub3cgcmV0 dXJucyBlcnIgZnJvbQo+IAkgIGh2bV9zYXZlX2NwdV9jdHh0X29uZSgpLgo+IC0tLQo+ICB4ZW4v YXJjaC94ODYvaHZtL2h2bS5jIHwgMjE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tCj4gLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCsp LCAxMDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZt LmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gaW5kZXggZGQ4ODc1MS4uZTIwYTI1YyAxMDA2 NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2 bS9odm0uYwo+IEBAIC03ODcsMTE5ICs3ODcsMTI5IEBAIHN0YXRpYyBpbnQgaHZtX2xvYWRfdHNj X2FkanVzdChzdHJ1Y3QgZG9tYWluICpkLAo+IGh2bV9kb21haW5fY29udGV4dF90ICpoKQo+ICBI Vk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFRTQ19BREpVU1QsIGh2bV9zYXZlX3RzY19hZGp1c3Qs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2xvYWRfdHNjX2FkanVzdCwgMSwgSFZN U1JfUEVSX1ZDUFUpOwo+IAo+ICtzdGF0aWMgaW50IGh2bV9zYXZlX2NwdV9jdHh0X29uZShzdHJ1 Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QKPiAqaCkKPiArewo+ICsgICAgc3RydWN0 IHNlZ21lbnRfcmVnaXN0ZXIgc2VnOwo+ICsgICAgc3RydWN0IGh2bV9od19jcHUgY3R4dDsKPiAr Cj4gKyAgICBtZW1zZXQoJmN0eHQsIDAsIHNpemVvZihjdHh0KSk7CgpXaHkgbm90IHVzZSBhbiA9 IHt9IGluaXRpYWxpemVyIGluc3RlYWQgb2YgdGhlIG1lbXNldCBoZXJlIGxpa2UgZWxzZXdoZXJl PwoKICBQYXVsCgo+ICsKPiArICAgIC8qIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyB2bWNzL3ZtY2Ig Yml0cyAqLwo+ICsgICAgaHZtX2Z1bmNzLnNhdmVfY3B1X2N0eHQodiwgJmN0eHQpOwo+ICsKPiAr ICAgIGN0eHQudHNjID0gaHZtX2dldF9ndWVzdF90c2NfZml4ZWQodiwgdi0+ZG9tYWluLQo+ID5h cmNoLmh2bV9kb21haW4uc3luY190c2MpOwo+ICsKPiArICAgIGN0eHQubXNyX3RzY19hdXggPSBo dm1fbXNyX3RzY19hdXgodik7Cj4gKwo+ICsgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYs IHg4Nl9zZWdfaWR0ciwgJnNlZyk7Cj4gKyAgICBjdHh0LmlkdHJfbGltaXQgPSBzZWcubGltaXQ7 Cj4gKyAgICBjdHh0LmlkdHJfYmFzZSA9IHNlZy5iYXNlOwo+ICsKPiArICAgIGh2bV9nZXRfc2Vn bWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2dkdHIsICZzZWcpOwo+ICsgICAgY3R4dC5nZHRyX2xp bWl0ID0gc2VnLmxpbWl0Owo+ICsgICAgY3R4dC5nZHRyX2Jhc2UgPSBzZWcuYmFzZTsKPiArCj4g KyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19jcywgJnNlZyk7Cj4gKyAg ICBjdHh0LmNzX3NlbCA9IHNlZy5zZWw7Cj4gKyAgICBjdHh0LmNzX2xpbWl0ID0gc2VnLmxpbWl0 Owo+ICsgICAgY3R4dC5jc19iYXNlID0gc2VnLmJhc2U7Cj4gKyAgICBjdHh0LmNzX2FyYnl0ZXMg PSBzZWcuYXR0cjsKPiArCj4gKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3Nl Z19kcywgJnNlZyk7Cj4gKyAgICBjdHh0LmRzX3NlbCA9IHNlZy5zZWw7Cj4gKyAgICBjdHh0LmRz X2xpbWl0ID0gc2VnLmxpbWl0Owo+ICsgICAgY3R4dC5kc19iYXNlID0gc2VnLmJhc2U7Cj4gKyAg ICBjdHh0LmRzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiArCj4gKyAgICBodm1fZ2V0X3NlZ21lbnRf cmVnaXN0ZXIodiwgeDg2X3NlZ19lcywgJnNlZyk7Cj4gKyAgICBjdHh0LmVzX3NlbCA9IHNlZy5z ZWw7Cj4gKyAgICBjdHh0LmVzX2xpbWl0ID0gc2VnLmxpbWl0Owo+ICsgICAgY3R4dC5lc19iYXNl ID0gc2VnLmJhc2U7Cj4gKyAgICBjdHh0LmVzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiArCj4gKyAg ICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19zcywgJnNlZyk7Cj4gKyAgICBj dHh0LnNzX3NlbCA9IHNlZy5zZWw7Cj4gKyAgICBjdHh0LnNzX2xpbWl0ID0gc2VnLmxpbWl0Owo+ ICsgICAgY3R4dC5zc19iYXNlID0gc2VnLmJhc2U7Cj4gKyAgICBjdHh0LnNzX2FyYnl0ZXMgPSBz ZWcuYXR0cjsKPiArCj4gKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19m cywgJnNlZyk7Cj4gKyAgICBjdHh0LmZzX3NlbCA9IHNlZy5zZWw7Cj4gKyAgICBjdHh0LmZzX2xp bWl0ID0gc2VnLmxpbWl0Owo+ICsgICAgY3R4dC5mc19iYXNlID0gc2VnLmJhc2U7Cj4gKyAgICBj dHh0LmZzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiArCj4gKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVn aXN0ZXIodiwgeDg2X3NlZ19ncywgJnNlZyk7Cj4gKyAgICBjdHh0LmdzX3NlbCA9IHNlZy5zZWw7 Cj4gKyAgICBjdHh0LmdzX2xpbWl0ID0gc2VnLmxpbWl0Owo+ICsgICAgY3R4dC5nc19iYXNlID0g c2VnLmJhc2U7Cj4gKyAgICBjdHh0LmdzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiArCj4gKyAgICBo dm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ190ciwgJnNlZyk7Cj4gKyAgICBjdHh0 LnRyX3NlbCA9IHNlZy5zZWw7Cj4gKyAgICBjdHh0LnRyX2xpbWl0ID0gc2VnLmxpbWl0Owo+ICsg ICAgY3R4dC50cl9iYXNlID0gc2VnLmJhc2U7Cj4gKyAgICBjdHh0LnRyX2FyYnl0ZXMgPSBzZWcu YXR0cjsKPiArCj4gKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19sZHRy LCAmc2VnKTsKPiArICAgIGN0eHQubGR0cl9zZWwgPSBzZWcuc2VsOwo+ICsgICAgY3R4dC5sZHRy X2xpbWl0ID0gc2VnLmxpbWl0Owo+ICsgICAgY3R4dC5sZHRyX2Jhc2UgPSBzZWcuYmFzZTsKPiAr ICAgIGN0eHQubGR0cl9hcmJ5dGVzID0gc2VnLmF0dHI7Cj4gKwo+ICsgICAgaWYgKCB2LT5mcHVf aW5pdGlhbGlzZWQgKQo+ICsgICAgewo+ICsgICAgICAgIG1lbWNweShjdHh0LmZwdV9yZWdzLCB2 LT5hcmNoLmZwdV9jdHh0LCBzaXplb2YoY3R4dC5mcHVfcmVncykpOwo+ICsgICAgICAgIGN0eHQu ZmxhZ3MgPSBYRU5fWDg2X0ZQVV9JTklUSUFMSVNFRDsKPiArICAgIH0KPiArCj4gKyAgICBjdHh0 LnJheCA9IHYtPmFyY2gudXNlcl9yZWdzLnJheDsKPiArICAgIGN0eHQucmJ4ID0gdi0+YXJjaC51 c2VyX3JlZ3MucmJ4Owo+ICsgICAgY3R4dC5yY3ggPSB2LT5hcmNoLnVzZXJfcmVncy5yY3g7Cj4g KyAgICBjdHh0LnJkeCA9IHYtPmFyY2gudXNlcl9yZWdzLnJkeDsKPiArICAgIGN0eHQucmJwID0g di0+YXJjaC51c2VyX3JlZ3MucmJwOwo+ICsgICAgY3R4dC5yc2kgPSB2LT5hcmNoLnVzZXJfcmVn cy5yc2k7Cj4gKyAgICBjdHh0LnJkaSA9IHYtPmFyY2gudXNlcl9yZWdzLnJkaTsKPiArICAgIGN0 eHQucnNwID0gdi0+YXJjaC51c2VyX3JlZ3MucnNwOwo+ICsgICAgY3R4dC5yaXAgPSB2LT5hcmNo LnVzZXJfcmVncy5yaXA7Cj4gKyAgICBjdHh0LnJmbGFncyA9IHYtPmFyY2gudXNlcl9yZWdzLnJm bGFnczsKPiArICAgIGN0eHQucjggID0gdi0+YXJjaC51c2VyX3JlZ3Mucjg7Cj4gKyAgICBjdHh0 LnI5ICA9IHYtPmFyY2gudXNlcl9yZWdzLnI5Owo+ICsgICAgY3R4dC5yMTAgPSB2LT5hcmNoLnVz ZXJfcmVncy5yMTA7Cj4gKyAgICBjdHh0LnIxMSA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMTsKPiAr ICAgIGN0eHQucjEyID0gdi0+YXJjaC51c2VyX3JlZ3MucjEyOwo+ICsgICAgY3R4dC5yMTMgPSB2 LT5hcmNoLnVzZXJfcmVncy5yMTM7Cj4gKyAgICBjdHh0LnIxNCA9IHYtPmFyY2gudXNlcl9yZWdz LnIxNDsKPiArICAgIGN0eHQucjE1ID0gdi0+YXJjaC51c2VyX3JlZ3MucjE1Owo+ICsgICAgY3R4 dC5kcjAgPSB2LT5hcmNoLmRlYnVncmVnWzBdOwo+ICsgICAgY3R4dC5kcjEgPSB2LT5hcmNoLmRl YnVncmVnWzFdOwo+ICsgICAgY3R4dC5kcjIgPSB2LT5hcmNoLmRlYnVncmVnWzJdOwo+ICsgICAg Y3R4dC5kcjMgPSB2LT5hcmNoLmRlYnVncmVnWzNdOwo+ICsgICAgY3R4dC5kcjYgPSB2LT5hcmNo LmRlYnVncmVnWzZdOwo+ICsgICAgY3R4dC5kcjcgPSB2LT5hcmNoLmRlYnVncmVnWzddOwo+ICsK PiArICAgIHJldHVybiBodm1fc2F2ZV9lbnRyeShDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KTsK PiArfQo+ICsKPiAgc3RhdGljIGludCBodm1fc2F2ZV9jcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpk LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKPiAgewo+ICAgICAgc3RydWN0IHZjcHUgKnY7Cj4g LSAgICBzdHJ1Y3QgaHZtX2h3X2NwdSBjdHh0Owo+IC0gICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0 ZXIgc2VnOwo+ICsgICAgaW50IGVyciA9IDA7Cj4gCj4gICAgICBmb3JfZWFjaF92Y3B1ICggZCwg diApCj4gICAgICB7Cj4gLSAgICAgICAgLyogV2UgZG9uJ3QgbmVlZCB0byBzYXZlIHN0YXRlIGZv ciBhIHZjcHUgdGhhdCBpcyBkb3duOyB0aGUgcmVzdG9yZQo+IC0gICAgICAgICAqIGNvZGUgd2ls bCBsZWF2ZSBpdCBkb3duIGlmIHRoZXJlIGlzIG5vdGhpbmcgc2F2ZWQuICovCj4gKyAgICAgICAg LyoKPiArICAgICAgICAgKiBXZSBkb24ndCBuZWVkIHRvIHNhdmUgc3RhdGUgZm9yIGEgdmNwdSB0 aGF0IGlzIGRvd247IHRoZSByZXN0b3JlCj4gKyAgICAgICAgICogY29kZSB3aWxsIGxlYXZlIGl0 IGRvd24gaWYgdGhlcmUgaXMgbm90aGluZyBzYXZlZC4KPiArICAgICAgICAgKi8KPiAgICAgICAg ICBpZiAoIHYtPnBhdXNlX2ZsYWdzICYgVlBGX2Rvd24gKQo+ICAgICAgICAgICAgICBjb250aW51 ZTsKPiAKPiAtICAgICAgICBtZW1zZXQoJmN0eHQsIDAsIHNpemVvZihjdHh0KSk7Cj4gLQo+IC0g ICAgICAgIC8qIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyB2bWNzL3ZtY2IgYml0cyAqLwo+IC0gICAg ICAgIGh2bV9mdW5jcy5zYXZlX2NwdV9jdHh0KHYsICZjdHh0KTsKPiAtCj4gLSAgICAgICAgY3R4 dC50c2MgPSBodm1fZ2V0X2d1ZXN0X3RzY19maXhlZCh2LCBkLT5hcmNoLmh2bV9kb21haW4uc3lu Y190c2MpOwo+IC0KPiAtICAgICAgICBjdHh0Lm1zcl90c2NfYXV4ID0gaHZtX21zcl90c2NfYXV4 KHYpOwo+IC0KPiAtICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19p ZHRyLCAmc2VnKTsKPiAtICAgICAgICBjdHh0LmlkdHJfbGltaXQgPSBzZWcubGltaXQ7Cj4gLSAg ICAgICAgY3R4dC5pZHRyX2Jhc2UgPSBzZWcuYmFzZTsKPiAtCj4gLSAgICAgICAgaHZtX2dldF9z ZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZ2R0ciwgJnNlZyk7Cj4gLSAgICAgICAgY3R4dC5n ZHRyX2xpbWl0ID0gc2VnLmxpbWl0Owo+IC0gICAgICAgIGN0eHQuZ2R0cl9iYXNlID0gc2VnLmJh c2U7Cj4gLQo+IC0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2Nz LCAmc2VnKTsKPiAtICAgICAgICBjdHh0LmNzX3NlbCA9IHNlZy5zZWw7Cj4gLSAgICAgICAgY3R4 dC5jc19saW1pdCA9IHNlZy5saW1pdDsKPiAtICAgICAgICBjdHh0LmNzX2Jhc2UgPSBzZWcuYmFz ZTsKPiAtICAgICAgICBjdHh0LmNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiAtCj4gLSAgICAgICAg aHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZHMsICZzZWcpOwo+IC0gICAgICAg IGN0eHQuZHNfc2VsID0gc2VnLnNlbDsKPiAtICAgICAgICBjdHh0LmRzX2xpbWl0ID0gc2VnLmxp bWl0Owo+IC0gICAgICAgIGN0eHQuZHNfYmFzZSA9IHNlZy5iYXNlOwo+IC0gICAgICAgIGN0eHQu ZHNfYXJieXRlcyA9IHNlZy5hdHRyOwo+IC0KPiAtICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVn aXN0ZXIodiwgeDg2X3NlZ19lcywgJnNlZyk7Cj4gLSAgICAgICAgY3R4dC5lc19zZWwgPSBzZWcu c2VsOwo+IC0gICAgICAgIGN0eHQuZXNfbGltaXQgPSBzZWcubGltaXQ7Cj4gLSAgICAgICAgY3R4 dC5lc19iYXNlID0gc2VnLmJhc2U7Cj4gLSAgICAgICAgY3R4dC5lc19hcmJ5dGVzID0gc2VnLmF0 dHI7Cj4gLQo+IC0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3Nz LCAmc2VnKTsKPiAtICAgICAgICBjdHh0LnNzX3NlbCA9IHNlZy5zZWw7Cj4gLSAgICAgICAgY3R4 dC5zc19saW1pdCA9IHNlZy5saW1pdDsKPiAtICAgICAgICBjdHh0LnNzX2Jhc2UgPSBzZWcuYmFz ZTsKPiAtICAgICAgICBjdHh0LnNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiAtCj4gLSAgICAgICAg aHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZnMsICZzZWcpOwo+IC0gICAgICAg IGN0eHQuZnNfc2VsID0gc2VnLnNlbDsKPiAtICAgICAgICBjdHh0LmZzX2xpbWl0ID0gc2VnLmxp bWl0Owo+IC0gICAgICAgIGN0eHQuZnNfYmFzZSA9IHNlZy5iYXNlOwo+IC0gICAgICAgIGN0eHQu ZnNfYXJieXRlcyA9IHNlZy5hdHRyOwo+IC0KPiAtICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVn aXN0ZXIodiwgeDg2X3NlZ19ncywgJnNlZyk7Cj4gLSAgICAgICAgY3R4dC5nc19zZWwgPSBzZWcu c2VsOwo+IC0gICAgICAgIGN0eHQuZ3NfbGltaXQgPSBzZWcubGltaXQ7Cj4gLSAgICAgICAgY3R4 dC5nc19iYXNlID0gc2VnLmJhc2U7Cj4gLSAgICAgICAgY3R4dC5nc19hcmJ5dGVzID0gc2VnLmF0 dHI7Cj4gLQo+IC0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3Ry LCAmc2VnKTsKPiAtICAgICAgICBjdHh0LnRyX3NlbCA9IHNlZy5zZWw7Cj4gLSAgICAgICAgY3R4 dC50cl9saW1pdCA9IHNlZy5saW1pdDsKPiAtICAgICAgICBjdHh0LnRyX2Jhc2UgPSBzZWcuYmFz ZTsKPiAtICAgICAgICBjdHh0LnRyX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiAtCj4gLSAgICAgICAg aHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfbGR0ciwgJnNlZyk7Cj4gLSAgICAg ICAgY3R4dC5sZHRyX3NlbCA9IHNlZy5zZWw7Cj4gLSAgICAgICAgY3R4dC5sZHRyX2xpbWl0ID0g c2VnLmxpbWl0Owo+IC0gICAgICAgIGN0eHQubGR0cl9iYXNlID0gc2VnLmJhc2U7Cj4gLSAgICAg ICAgY3R4dC5sZHRyX2FyYnl0ZXMgPSBzZWcuYXR0cjsKPiAtCj4gLSAgICAgICAgaWYgKCB2LT5m cHVfaW5pdGlhbGlzZWQgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgbWVtY3B5KGN0eHQu ZnB1X3JlZ3MsIHYtPmFyY2guZnB1X2N0eHQsIHNpemVvZihjdHh0LmZwdV9yZWdzKSk7Cj4gLSAg ICAgICAgICAgIGN0eHQuZmxhZ3MgPSBYRU5fWDg2X0ZQVV9JTklUSUFMSVNFRDsKPiAtICAgICAg ICB9Cj4gLQo+IC0gICAgICAgIGN0eHQucmF4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmF4Owo+IC0g ICAgICAgIGN0eHQucmJ4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmJ4Owo+IC0gICAgICAgIGN0eHQu cmN4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmN4Owo+IC0gICAgICAgIGN0eHQucmR4ID0gdi0+YXJj aC51c2VyX3JlZ3MucmR4Owo+IC0gICAgICAgIGN0eHQucmJwID0gdi0+YXJjaC51c2VyX3JlZ3Mu cmJwOwo+IC0gICAgICAgIGN0eHQucnNpID0gdi0+YXJjaC51c2VyX3JlZ3MucnNpOwo+IC0gICAg ICAgIGN0eHQucmRpID0gdi0+YXJjaC51c2VyX3JlZ3MucmRpOwo+IC0gICAgICAgIGN0eHQucnNw ID0gdi0+YXJjaC51c2VyX3JlZ3MucnNwOwo+IC0gICAgICAgIGN0eHQucmlwID0gdi0+YXJjaC51 c2VyX3JlZ3MucmlwOwo+IC0gICAgICAgIGN0eHQucmZsYWdzID0gdi0+YXJjaC51c2VyX3JlZ3Mu cmZsYWdzOwo+IC0gICAgICAgIGN0eHQucjggID0gdi0+YXJjaC51c2VyX3JlZ3Mucjg7Cj4gLSAg ICAgICAgY3R4dC5yOSAgPSB2LT5hcmNoLnVzZXJfcmVncy5yOTsKPiAtICAgICAgICBjdHh0LnIx MCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMDsKPiAtICAgICAgICBjdHh0LnIxMSA9IHYtPmFyY2gu dXNlcl9yZWdzLnIxMTsKPiAtICAgICAgICBjdHh0LnIxMiA9IHYtPmFyY2gudXNlcl9yZWdzLnIx MjsKPiAtICAgICAgICBjdHh0LnIxMyA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMzsKPiAtICAgICAg ICBjdHh0LnIxNCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxNDsKPiAtICAgICAgICBjdHh0LnIxNSA9 IHYtPmFyY2gudXNlcl9yZWdzLnIxNTsKPiAtICAgICAgICBjdHh0LmRyMCA9IHYtPmFyY2guZGVi dWdyZWdbMF07Cj4gLSAgICAgICAgY3R4dC5kcjEgPSB2LT5hcmNoLmRlYnVncmVnWzFdOwo+IC0g ICAgICAgIGN0eHQuZHIyID0gdi0+YXJjaC5kZWJ1Z3JlZ1syXTsKPiAtICAgICAgICBjdHh0LmRy MyA9IHYtPmFyY2guZGVidWdyZWdbM107Cj4gLSAgICAgICAgY3R4dC5kcjYgPSB2LT5hcmNoLmRl YnVncmVnWzZdOwo+IC0gICAgICAgIGN0eHQuZHI3ID0gdi0+YXJjaC5kZWJ1Z3JlZ1s3XTsKPiAt Cj4gLSAgICAgICAgaWYgKCBodm1fc2F2ZV9lbnRyeShDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0 KSAhPSAwICkKPiAtICAgICAgICAgICAgcmV0dXJuIDE7Cj4gKyAgICAgICAgZXJyID0gaHZtX3Nh dmVfY3B1X2N0eHRfb25lKHYsIGgpOwo+ICsgICAgICAgIGlmICggZXJyICkKPiArICAgICAgICAg ICAgYnJlYWs7Cj4gICAgICB9Cj4gLSAgICByZXR1cm4gMDsKPiArICAgIHJldHVybiBlcnI7Cj4g IH0KPiAKPiAgLyogUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGVycm9yLCBvciBOVUxM IGZvciB2YWxpZC4gKi8KPiAtLQo+IDIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==