From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?utf-8?B?TW9ubsOp?= Subject: Re: [PATCH v5 5/8] microcode: split out apply_microcode() from cpu_request_microcode() Date: Tue, 29 Jan 2019 10:58:11 +0100 Message-ID: <20190129095811.j3q5fudvobsrhjca@mac> References: <1548659210-16870-1-git-send-email-chao.gao@intel.com> <1548659210-16870-6-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1goQ9v-0004Nb-S0 for xen-devel@lists.xenproject.org; Tue, 29 Jan 2019 09:58:23 +0000 Content-Disposition: inline In-Reply-To: <1548659210-16870-6-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Chao Gao Cc: xen-devel@lists.xenproject.org, Wei Liu , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBKYW4gMjgsIDIwMTkgYXQgMDM6MDY6NDdQTSArMDgwMCwgQ2hhbyBHYW8gd3JvdGU6 Cj4gRHVyaW5nIGxhdGUgbWljcm9jb2RlIHVwZGF0ZSwgYXBwbHlfbWljcm9jb2RlKCkgaXMgaW52 b2tlZCBpbgo+IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLiBUbyBtYWtlIGxhdGUgbWljcm9jb2Rl IHVwZGF0ZSBtb3JlIHJlbGlhYmxlLAo+IHdlIHdhbnQgdG8gcHV0IHRoZSBhcHBseV9taWNyb2Nv ZGUoKSBpbnRvIHN0b3BfbWFjaGluZSBjb250ZXh0LiBTbwo+IHdlIHNwbGl0IG91dCBpdCBmcm9t IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLiBBcyBhIGNvbnNlcXVlbmNlLAo+IGFwcGx5X21pY3Jv Y29kZSgpIHNob3VsZCBiZSBpbnZva2VkIGV4cGxpY2l0bHkgaW4gdGhlIGNvbW1vbiBjb2RlLgo+ IAo+IEFsc28gd2l0aCB0aGUgZ2xvYmFsIHVjb2RlIGNhY2hlLCBtaWNyb2NvZGUgcGFyc2luZyBv bmx5IG5lZWRzCj4gdG8gYmUgZG9uZSBvbmNlOyBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKSBpcyBh bHNvIG1vdmVkIG91dCBvZgo+IG1pY3JvY29kZV91cGRhdGVfY3B1KCkuCj4gCj4gT24gQU1EIHNp ZGUsIHN2bV9ob3N0X29zdndfaW5pdCgpIGlzIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBhZnRlcgo+ IG1pY3JvY29kZSB1cGRhdGUuIEFzIGFwcGx5X21pY3Jjb2RlKCkgd29uJ3QgYmUgY2FsbGVkIGJ5 Cj4gY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkgbm93LCBzdm1faG9zdF9vc3Z3X2luaXQoKSBpcyBh bHNvIG1vdmVkIHRvIHRoZQo+IGVuZCBvZiBhcHBseV9taWNyb2NvZGUoKS4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC94 ODYvbWljcm9jb2RlLmMgICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L21pY3JvY29kZV9hbWQuYyAgIHwgMjMgKysrKysr Ky0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50ZWwuYyB8IDIwICsrLS0tLS0tLS0t Cj4gIDMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9hcmNoL3g4Ni9t aWNyb2NvZGUuYwo+IGluZGV4IDBjNzdlOTAuLjkzNmYwYjggMTAwNjQ0Cj4gLS0tIGEveGVuL2Fy Y2gveDg2L21pY3JvY29kZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCj4gQEAg LTI1NCw0NyArMjU0LDQyIEBAIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmZpbmRfcGF0Y2godW5z aWduZWQgaW50IGNwdSkKPiAgICAgIHJldHVybiBOVUxMOwo+ICB9Cj4gIAo+IC1pbnQgbWljcm9j b2RlX3Jlc3VtZV9jcHUodW5zaWduZWQgaW50IGNwdSkKPiArLyoKPiArICogUmV0dXJuIHRoZSBu dW1iZXIgb2YgdWNvZGUgcGF0Y2ggaW5zZXJ0ZWQgdG8gdGhlIGdsb2JhbCBjYWNoZS4KPiArICog UmV0dXJuIG5lZ3RpdmUgdmFsdWUgb24gZXJyb3IuCj4gKyAqLwo+ICtzdGF0aWMgaW50IHBhcnNl X21pY3JvY29kZV9ibG9iKGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbikKPiAgewo+IC0g ICAgaW50IGVycjsKPiArICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7 Cj4gICAgICBzdHJ1Y3QgdWNvZGVfY3B1X2luZm8gKnVjaSA9ICZwZXJfY3B1KHVjb2RlX2NwdV9p bmZvLCBjcHUpOwo+IC0KPiAtICAgIGlmICggIW1pY3JvY29kZV9vcHMgKQo+IC0gICAgICAgIHJl dHVybiAwOwo+ICsgICAgaW50IHJldDsKPiAgCj4gICAgICBzcGluX2xvY2soJm1pY3JvY29kZV9t dXRleCk7Cj4gLQo+IC0gICAgZXJyID0gbWljcm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbyhj cHUsICZ1Y2ktPmNwdV9zaWcpOwo+IC0gICAgaWYgKCBlcnIgKQo+IC0gICAgewo+ICsgICAgcmV0 ID0gbWljcm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbyhjcHUsICZ1Y2ktPmNwdV9zaWcpOwo+ ICsgICAgaWYgKCBsaWtlbHkoIXJldCkgKQo+ICsgICAgICAgIHJldCA9IG1pY3JvY29kZV9vcHMt PmNwdV9yZXF1ZXN0X21pY3JvY29kZShjcHUsIGJ1ZmZlciwgbGVuKTsKPiArICAgIGVsc2UKPiAg ICAgICAgICBtaWNyb2NvZGVfZmluaV9jcHUoY3B1KTsKPiAtICAgICAgICBzcGluX3VubG9jaygm bWljcm9jb2RlX211dGV4KTsKPiAtICAgICAgICByZXR1cm4gZXJyOwo+IC0gICAgfQo+IC0KPiAt ICAgIGVyciA9IG1pY3JvY29kZV9vcHMtPmFwcGx5X21pY3JvY29kZShjcHUpOwo+ICAgICAgc3Bp bl91bmxvY2soJm1pY3JvY29kZV9tdXRleCk7Cj4gIAo+IC0gICAgcmV0dXJuIGVycjsKPiArICAg IHJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgbWljcm9jb2RlX3VwZGF0ZV9jcHUo Y29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPiArc3RhdGljIGludCBtaWNyb2NvZGVfdXBk YXRlX2NwdSh2b2lkKQo+ICB7Cj4gLSAgICBpbnQgZXJyOwo+IC0gICAgdW5zaWduZWQgaW50IGNw dSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKPiAtICAgIHN0cnVjdCB1Y29kZV9jcHVfaW5mbyAqdWNp ID0gJnBlcl9jcHUodWNvZGVfY3B1X2luZm8sIGNwdSk7Cj4gKyAgICBpbnQgcmV0Owo+ICAKPiAg ICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4KTsKPiAtCj4gLSAgICBlcnIgPSBtaWNyb2Nv ZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKGNwdSwgJnVjaS0+Y3B1X3NpZyk7Cj4gLSAgICBpZiAo IGxpa2VseSghZXJyKSApCj4gLSAgICAgICAgZXJyID0gbWljcm9jb2RlX29wcy0+Y3B1X3JlcXVl c3RfbWljcm9jb2RlKGNwdSwgYnVmLCBzaXplKTsKPiAtICAgIGVsc2UKPiAtICAgICAgICBtaWNy b2NvZGVfZmluaV9jcHUoY3B1KTsKPiAtCj4gKyAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5hcHBs eV9taWNyb2NvZGUoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKCkkndmUgcmVhbGl6ZWQgdGhhdCBtb3N0 IG9mIHRoaXMgaGVscGVycyB0YWtlIGEgY3B1IGlkIHBhcmFtZXRlcgooYXBwbHlfbWljcm9jb2Rl LCBjb2xsZWN0X2NwdV9pbmZvIGFuZCBjcHVfcmVxdWVzdF9taWNyb2NvZGUpLCBidXQKdGhhdCBh dCBsZWFzdCBvbiBJbnRlbCB0aGV5IGFyZSByZXF1aXJlZCB0byBiZSBjYWxsZWQgb24gdGhlIGN1 cnJlbnQKQ1BVLCBhdCB3aGljaCBwb2ludCBJIHdvbmRlciBhYm91dCB0aGVpciBwdXJwb3NlLiBJ TU8gdGhleSBqdXN0IG1ha2UKdGhlIGludGVyZmFjZSBtb3JlIG1lc3N5LCB3aXRob3V0IGFkZGlu ZyBhbnkgZnVuY3Rpb25hbGl0eS4KCj4gICAgICBzcGluX3VubG9jaygmbWljcm9jb2RlX211dGV4 KTsKPiAgCj4gLSAgICByZXR1cm4gZXJyOwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr aW50IG1pY3JvY29kZV9yZXN1bWVfY3B1KHVuc2lnbmVkIGludCBjcHUpCj4gK3sKPiArICAgIEJV R19PTihjcHUgIT0gc21wX3Byb2Nlc3Nvcl9pZCgpKTsKClNhbWUgaGVyZSwgd2hhdCdzIHRoZSBw b2ludCBvZiBwYXNzaW5nIGEgY3B1IGlkIGFzIHBhcmFtZXRlciB3aGVuCnRoZXJlJ3Mgb25seSBv bmUgdmFsaWQgdmFsdWU/Cgo+ICsgICAgcmV0dXJuIG1pY3JvY29kZV9vcHMgPyBtaWNyb2NvZGVf dXBkYXRlX2NwdSgpIDogMDsKPiAgfQo+ICAKPiAgc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3Vw ZGF0ZSh2b2lkICpfaW5mbykKPiBAQCAtMzA0LDcgKzI5OSw3IEBAIHN0YXRpYyBsb25nIGRvX21p Y3JvY29kZV91cGRhdGUodm9pZCAqX2luZm8pCj4gIAo+ICAgICAgQlVHX09OKGluZm8tPmNwdSAh PSBzbXBfcHJvY2Vzc29yX2lkKCkpOwo+ICAKPiAtICAgIGVycm9yID0gbWljcm9jb2RlX3VwZGF0 ZV9jcHUoaW5mby0+YnVmZmVyLCBpbmZvLT5idWZmZXJfc2l6ZSk7Cj4gKyAgICBlcnJvciA9IG1p Y3JvY29kZV91cGRhdGVfY3B1KCk7Cj4gICAgICBpZiAoIGVycm9yICkKPiAgICAgICAgICBpbmZv LT5lcnJvciA9IGVycm9yOwo+ICAKPiBAQCAtMzM5LDEwICszMzQsNiBAQCBpbnQgbWljcm9jb2Rl X3VwZGF0ZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQg bG9uZyBsZW4pCj4gICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgIH0KPiAgCj4gLSAgICBpbmZv LT5idWZmZXJfc2l6ZSA9IGxlbjsKPiAtICAgIGluZm8tPmVycm9yID0gMDsKPiAtICAgIGluZm8t PmNwdSA9IGNwdW1hc2tfZmlyc3QoJmNwdV9vbmxpbmVfbWFwKTsKPiAtCj4gICAgICBpZiAoIG1p Y3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCj4gICAgICB7Cj4gICAgICAgICAgcmV0ID0gbWlj cm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlKCk7Cj4gQEAgLTM1Myw2ICszNDQsMTggQEAgaW50IG1p Y3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVu c2lnbmVkIGxvbmcgbGVuKQo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgCj4gKyAgICByZXQgPSBw YXJzZV9taWNyb2NvZGVfYmxvYihpbmZvLT5idWZmZXIsIGxlbik7Cj4gKyAgICBpZiAoIHJldCA8 PSAwICkKPiArICAgIHsKPiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiTm8gdmFsaWQgb3Ig bmV3ZXIgdWNvZGUgZm91bmQuIFVwZGF0ZSBhYm9ydCFcbiIpOwo+ICsgICAgICAgIHhmcmVlKGlu Zm8pOwo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgfQo+ICsKPiArICAgIGluZm8t PmJ1ZmZlcl9zaXplID0gbGVuOwo+ICsgICAgaW5mby0+ZXJyb3IgPSAwOwo+ICsgICAgaW5mby0+ Y3B1ID0gY3B1bWFza19maXJzdCgmY3B1X29ubGluZV9tYXApOwoKSXQgbG9va3MgbGlrZSB5b3Ug Y2FuIGFsc28gZ2V0IHJpZCBvZiB0aGUgY3B1IGZpZWxkIGluIG1pY3JvY29kZV9pbmZvLApzaW5j ZSBpdCdzIGFsd2F5cyBzbXBfcHJvY2Vzc29yX2lkPwoKPiArCj4gICAgICByZXR1cm4gY29udGlu dWVfaHlwZXJjYWxsX29uX2NwdShpbmZvLT5jcHUsIGRvX21pY3JvY29kZV91cGRhdGUsIGluZm8p Owo+ICB9Cj4gIAo+IEBAIC0zOTYsMTMgKzM5OSwyNCBAQCBpbnQgX19pbml0IGVhcmx5X21pY3Jv Y29kZV91cGRhdGVfY3B1KGJvb2wgc3RhcnRfdXBkYXRlKQo+ICAgICAgfQo+ICAgICAgaWYgKCBk YXRhICkKPiAgICAgIHsKPiArICAgICAgICBzdGF0aWMgYm9vbCBwYXJzZWQgPSBmYWxzZTsKPiAr Cj4gICAgICAgICAgaWYgKCBzdGFydF91cGRhdGUgJiYgbWljcm9jb2RlX29wcy0+c3RhcnRfdXBk YXRlICkKPiAgICAgICAgICAgICAgcmMgPSBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUoKTsK PiAgCj4gICAgICAgICAgaWYgKCByYyApCj4gICAgICAgICAgICAgIHJldHVybiByYzsKPiAgCj4g LSAgICAgICAgcmV0dXJuIG1pY3JvY29kZV91cGRhdGVfY3B1KGRhdGEsIGxlbik7Cj4gKyAgICAg ICAgaWYgKCAhcGFyc2VkICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHJjID0gcGFyc2Vf bWljcm9jb2RlX2Jsb2IoZGF0YSwgbGVuKTsKPiArICAgICAgICAgICAgcGFyc2VkID0gdHJ1ZTsK PiArCj4gKyAgICAgICAgICAgIGlmICggcmMgPD0gMCApCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIHJldHVybiBtaWNyb2NvZGVf dXBkYXRlX2NwdSgpOwoKSG0sIHRoZSB1c2FnZSBvZiBwYXJzZWQgaGVyZSBpcyBraW5kIG9mIGRh bmdlcm91cy4gSSBhc3N1bWUgdGhpcyB3b3JrcwpmaW5lIGJlY2F1c2UgZWFybHlfbWljcm9jb2Rl X3VwZGF0ZV9jcHUgaXMgY2FsbGVkIGZyb20gdGhlIEJTUCBpbgplYXJseV9taWNyb2NvZGVfaW5p dCwgYW5kIHRoZW4gY29uY3VycmVudCBjYWxscyBkb25lIGJ5IHRoZSBBUHMgYWx3YXlzCnNlZSBw YXJzZWQgYXMgdHJ1ZS4KCkkgd291bGQgaG93ZXZlciByZWNvbW1lbmQgdGhhdCB5b3UgbW92ZSB0 aGUgcGFyc2luZyB0bwplYXJseV9taWNyb2NvZGVfaW5pdCwgYW5kIHRoYXQgZWFybHlfbWljcm9j b2RlX3VwZGF0ZV9jcHUgYWx3YXlzCmFzc3VtZSB0aGUgYmxvYiBoYXMgYmVlbiBwYXJzZWQuCgpJ ZiB0aGF0IGRvZXNuJ3Qgd29yayBmb3Igc29tZSByZWFzb24sIEkgd291bGQgdGhlbiByZWNvbW1l bmQgdGhhdCB5b3UKZ2F0ZSB0aGUgcGFyc2luZyBiYXNlZCBvbiBjcHVfaWQsIHNvICJzbXBfcHJv Y2Vzc29yX2lkKCkgPT0gMCIKCj4gICAgICB9Cj4gICAgICBlbHNlCj4gICAgICAgICAgcmV0dXJu IC1FTk9NRU07Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMgYi94 ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jCj4gaW5kZXggZDg2YTU5Ni4uODBlMjc0ZSAxMDA2 NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jCj4gKysrIGIveGVuL2FyY2gv eDg2L21pY3JvY29kZV9hbWQuYwo+IEBAIC0yOTcsNiArMjk3LDEwIEBAIHN0YXRpYyBpbnQgYXBw bHlfbWljcm9jb2RlKHVuc2lnbmVkIGludCBjcHUpCj4gIAo+ICAgICAgdWNpLT5jcHVfc2lnLnJl diA9IHJldjsKPiAgCj4gKyNpZiBDT05GSUdfSFZNCj4gKyAgICBzdm1faG9zdF9vc3Z3X2luaXQo KTsKPiArI2VuZGlmCj4gKwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTQ2Myw2ICs0 NjcsNyBAQCBzdGF0aWMgaW50IGNwdV9yZXF1ZXN0X21pY3JvY29kZSh1bnNpZ25lZCBpbnQgY3B1 LCBjb25zdCB2b2lkICpidWYsCj4gICAgICBzdHJ1Y3QgdWNvZGVfY3B1X2luZm8gKnVjaSA9ICZw ZXJfY3B1KHVjb2RlX2NwdV9pbmZvLCBjcHUpOwo+ICAgICAgdW5zaWduZWQgaW50IGN1cnJlbnRf Y3B1X2lkOwo+ICAgICAgdW5zaWduZWQgaW50IGVxdWl2X2NwdV9pZDsKPiArICAgIHVuc2lnbmVk IGludCBtYXRjaGVkX2NudCA9IDA7Cj4gIAo+ICAgICAgLyogV2Ugc2hvdWxkIGJpbmQgdGhlIHRh c2sgdG8gdGhlIENQVSAqLwo+ICAgICAgQlVHX09OKGNwdSAhPSByYXdfc21wX3Byb2Nlc3Nvcl9p ZCgpKTsKPiBAQCAtNTY0LDExICs1NjksMTUgQEAgc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNy b2NvZGUodW5zaWduZWQgaW50IGNwdSwgY29uc3Qgdm9pZCAqYnVmLAo+ICAgICAgICAgICAqIHRo aXMgdWNvZGUgcGF0Y2ggYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgaXQgbWF0Y2hlcyB3aXRoCj4g ICAgICAgICAgICogY3VycmVudCBDUFUuCj4gICAgICAgICAgICovCj4gLSAgICAgICAgaWYgKCBz YXZlX3BhdGNoKG1pY3JvY29kZV9wYXRjaCkgJiYgbWljcm9jb2RlX2ZpdHMobWNfYW1kLCBjcHUp ICkKPiArICAgICAgICBpZiAoIHNhdmVfcGF0Y2gobWljcm9jb2RlX3BhdGNoKSApCj4gICAgICAg ICAgewo+IC0gICAgICAgICAgICBlcnJvciA9IGFwcGx5X21pY3JvY29kZShjcHUpOwo+IC0gICAg ICAgICAgICBpZiAoIGVycm9yICkKPiAtICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg ICAgICBtYXRjaGVkX2NudCsrOwo+ICsgICAgICAgICAgICBpZiAoIG1pY3JvY29kZV9maXRzKG1j X2FtZCwgY3B1KSApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGVycm9yID0g YXBwbHlfbWljcm9jb2RlKGNwdSk7Cj4gKyAgICAgICAgICAgICAgICBpZiAoIGVycm9yICkKPiAr ICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgfQoKSW4gdGhlIGNvbW1p dCBtZXNzYWdlIHlvdSBtZW50aW9uIHRoYXQgYXBwbHlfbWljcm9jb2RlIHdvbid0IGJlIGNhbGxl ZApieSBjcHVfcmVxdWVzdF9taWNyb2NvZGUsIHlldCBpdCBzZWVtcyBpdCdzIGNhbGxlZD8KClRo YW5rcywgUm9nZXIuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs