From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: Re: [PATCH v2 07/15] x86: implement set value flow for MBA Date: Thu, 31 Aug 2017 10:20:10 +0800 Message-ID: <20170831022010.GA23665@yi.y.sun> References: <1503537289-56036-1-git-send-email-yi.y.sun@linux.intel.com> <1503537289-56036-8-git-send-email-yi.y.sun@linux.intel.com> <20170830083104.jwzpcducid63aeuo@MacBook-Pro-de-Roger.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnF6G-00022U-Uo for xen-devel@lists.xenproject.org; Thu, 31 Aug 2017 02:20:57 +0000 Content-Disposition: inline In-Reply-To: <20170830083104.jwzpcducid63aeuo@MacBook-Pro-de-Roger.local> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Roger Pau =?utf-8?B?TW9ubu+/vQ==?= Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gMTctMDgtMzAgMDk6MzE6MDQsIFJvZ2VyIFBhdSBNb25u77+9IHdyb3RlOgo+IE9uIFRodSwg QXVnIDI0LCAyMDE3IGF0IDA5OjE0OjQxQU0gKzA4MDAsIFlpIFN1biB3cm90ZToKPiA+IEl0IGFs c28gY2hhbmdlcyB0aGUgbWVtZWJlcnMgaW4gJ2Nvc193cml0ZV9pbmZvJyB0byB0cmFuc2ZlciB0 aGUKPiA+IGZlYXR1cmUgYXJyYXksIGZlYXR1cmUgcHJvcGVydGllcyBhcnJheSBhbmQgdmFsdWUg YXJyYXkuIFRoZW4sIHdlCj4gPiBjYW4gd3JpdGUgYWxsIGZlYXR1cmVzIHZhbHVlcyBvbiB0aGUg Y29zIGlkIGludG8gTVNScy4KPiA+IAo+ID4gQmVjYXVzZSBtdWx0aXBsZSBmZWF0dXJlcyBtYXkg Y28tZXhpc3QsIHdlIG5lZWQgaGFuZGxlIGFsbCBmZWF0dXJlcyB0byB3cml0ZQo+ID4gdmFsdWVz IG9mIHRoZW0gaW50byBhIENPUyByZWdpc3RlciB3aXRoIG5ldyBDT1MgSUQuIEUuZzoKPiA+IDEu IEwzIENBVCBhbmQgTUJBIGNvLWV4aXN0Lgo+ID4gMi4gRG9tMSBhbmQgRG9tMiBzaGFyZSBhIHNh bWUgQ09TIElEICgyKS4gVGhlIEwzIENBVCBDQk0gb2YgRG9tMSBpcyAweDFmZiwKPiA+ICAgIHRo ZSBNQkEgVGhydGxlIG9mIERvbTEgaXMgMHhhLgo+ID4gMy4gVXNlciB3YW50cyB0byBjaGFuZ2Ug TUJBIFRocnRsIG9mIERvbTEgdG8gYmUgMHgxNC4gQmVjYXVzZSBDT1MgSUQgMiBpcwo+ID4gICAg dXNlZCBieSBEb20yIHRvbywgd2UgaGF2ZSB0byBwaWNrIGEgbmV3IENPUyBJRCAzLiBUaGUgb3Jp Z2luYWwgdmFsdWVzIG9mCj4gPiAgICBEb20xIG9uIENPUyBJRCAzIG1heSBiZSBiZWxvdzoKPiAK PiBXaGF0IG9yaWdpbmFsIHZhbHVlcz8gWW91IHNhaWQgeW91IHBpY2sgQ09TIElEIDMsIGJlY2F1 c2UgSSB0aGluayBpdCdzCj4gYXNzdW1lZCB0byBiZSBlbXB0eT8gSW4gd2hpY2ggY2FzZSB0aGVy ZSBhcmUgbm8gb3JpZ2luYWwgdmFsdWVzIGluIENPUwo+IElEIDMuCj4gClNvcnJ5IGZvciBjb25m dXNpb24uIFRoZSBvcmlnaW5hbCB2YWx1ZSBtZWFucyB0aGUgZGVmYXVsdCB2YWx1ZS4gRm9yIENB VCwgaXQgaXMKMHg3ZmYgb24gbXkgbWFjaGluZSB3aGljaCBpcyBzaG93biBiZWxvdy4KCj4gPiAg ICAgICAgICAgIC0tLS0tLS0tLQo+ID4gICAgICAgICAgICB8IENPUyAzIHwKPiA+ICAgICAgICAg ICAgLS0tLS0tLS0tCj4gPiAgICBMMyBDQVQgIHwgMHg3ZmYgfAo+ID4gICAgICAgICAgICAtLS0t LS0tLS0KPiA+ICAgIE1CQSAgICAgfCAweDAgICB8Cj4gPiAgICAgICAgICAgIC0tLS0tLS0tLQo+ ID4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwo+ ID4gaW5kZXggNGEwYzk4Mi4uY2U4Mjk3NSAxMDA2NDQKPiA+IC0tLSBhL3hlbi9hcmNoL3g4Ni9w c3IuYwo+ID4gKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCj4gPiBAQCAtMTM4LDYgKzEzOCwxMiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgewo+ID4gIAo+ID4gICAgICAvKiB3cml0 ZV9tc3IgaXMgdXNlZCB0byB3cml0ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuICovCj4gPiAg ICAgIHZvaWQgKCp3cml0ZV9tc3IpKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwgZW51 bSBwc3JfdmFsX3R5cGUgdHlwZSk7Cj4gPiArCj4gPiArICAgIC8qCj4gPiArICAgICAqIGNoZWNr X3ZhbCBpcyB1c2VkIHRvIGNoZWNrIGlmIGlucHV0IHZhbCBmdWxmaWxscyBTRE0gcmVxdWlyZW1l bnQuCj4gPiArICAgICAqIENoYW5nZSBpdCB0byB2YWxpZCB2YWx1ZSBpZiBTRE0gYWxsb3dzLgo+ IAo+IEknbSBub3QgcmVhbGx5IHN1cmUgaXQncyBhIGdvb2QgaWRlYSB0byBjaGFuZ2UgdGhlIHZh bHVlIHRvIGEgdmFsaWQKPiBvbmUsIElNSE8geW91IHNob3VsZCBqdXN0IGNoZWNrIGFuZCBwcmlu dCBhbiBlcnJvciBpZiB0aGUgdmFsdWUgaXMKPiBpbnZhbGlkIChhbmQgcmV0dXJuIGZhbHNlIG9m IGNvdXJzZSkuCj4gClBlciBTRE0sIHRoZSBIVyBoYXMgYWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5 IGNoYW5nZSB0aGUgaW5wdXQgdmFsdWUgdG8gd2hhdCBpdAp3YW50cy4gRS5nOgogIExpbmVhciBt b2RlOiBIVyB3YW50cyB0aGUgaW5wdXQgdmFsdWUgYmUgMTAvMjAvMzAvLi4uLzkwLiBCdXQgdXNl ciBpbnB1dHMgMTUuCiAgICAgICAgICAgICAgIFRoZW4sIEhXIGNhbiBhdXRvbWF0aWNhbGx5IGNo YW5nZSBpdCB0byAxMC4KCkV2ZW4gdXNlciBpbnB1dHMgYSB2YWx1ZSB0aGF0IGRvZXMgbm90IGZ1 bGZpbGwgSFcgcmVxdWlyZW1lbnQsIEhXIGNhbiBoYW5kbGUgaXQuClNvLCB3ZSBkbyBub3QgbmVl ZCByZXR1cm4gZXJyb3IgdG8gdXNlci4gT3RoZXJ3aXNlLCB1c2VyIG5lZWRzIHRvIGtub3cgZGV0 YWlscwpvZiBNQkEuCgpCdXQgdGhlIGlzc3VlIGhlcmUgaXMgaG93IHdlIGdldCB0aGUgYWN0dWFs IHZhbHVlIGFuZCBzaG93IGl0IHRvIHVzZXIuIFRoZXJlIGFyZQp0d28gd2F5cyB0byBkbyB0aGF0 OgoxLiBXaGVuIHNldHRpbmcgdmFsdWUsIGNoZWNrIGFuZCBjaGFuZ2UgaXQgdG8gdmFsaWQgb25l IGFuZCBzYXZlIGl0IHRvIG91ciBjYWNoZS4KMi4gV2hlbiBnZXR0aW5nIHZhbHVlLCBjYWxsIHJk bXNyIHRvIHJlYWQgdGhlIGFjdHVhbCB2YWx1ZSBiYWNrIGZyb20gSFcuCgpJIHRoaW5rIG9wdGlv biAxIGhhcyBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIHRoZSBjb2RlIGxvb2tzIGJldHRlci4KCj4g PiArICAgICAqLwo+ID4gKyAgICBib29sICgqY2hlY2tfdmFsKShjb25zdCBzdHJ1Y3QgZmVhdF9u b2RlICpmZWF0LCB1bnNpZ25lZCBsb25nICp2YWwpOwo+ID4gIH0gKmZlYXRfcHJvcHNbRkVBVF9U WVBFX05VTV07Cj4gPiAgClsuLi5dCgo+ID4gIC8qIEwzIENBVCBwcm9wcyAqLwo+ID4gIHN0YXRp YyB2b2lkIGwzX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSkK PiA+IEBAIC00NDYsNiArNDUzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwz X2NhdF9wcm9wcyA9IHsKPiA+ICAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBFX1VOS05PV04s Cj4gPiAgICAgIC5nZXRfZmVhdF9pbmZvID0gY2F0X2dldF9mZWF0X2luZm8sCj4gPiAgICAgIC53 cml0ZV9tc3IgPSBsM19jYXRfd3JpdGVfbXNyLAo+ID4gKyAgICAuY2hlY2tfdmFsID0gY2F0X2No ZWNrX2NibSwKPiA+ICB9Owo+IAo+IE1heWJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgY2hlY2tfdmFs IHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoPyBJdCdzCj4gbW9zdGx5IGNvZGUgbW92ZW1lbnQg YW5kIHNvbWUgZml4dXAuCj4gCk9rLCBtYXkgY29uc2lkZXIgaXQuCgpbLi4uXQoKPiA+ICtzdGF0 aWMgYm9vbCBtYmFfY2hlY2tfdGhydGwoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5z aWduZWQgbG9uZyAqdGhydGwpCj4gPiArewo+ID4gKyAgICBpZiAoICp0aHJ0bCA+IGZlYXQtPm1i YV9pbmZvLnRocnRsX21heCApCj4gPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiAr ICAgIC8qCj4gPiArICAgICAqIFBlciBTRE0gKGNoYXB0ZXIgIk1lbW9yeSBCYW5kd2lkdGggQWxs b2NhdGlvbiBDb25maWd1cmF0aW9uIik6Cj4gPiArICAgICAqIDEuIExpbmVhciBtb2RlOiBJbiB0 aGUgbGluZWFyIG1vZGUgdGhlIGlucHV0IHByZWNpc2lvbiBpcyBkZWZpbmVkCj4gPiArICAgICAq ICAgIGFzIDEwMC0oTUJBX01BWCkuIEZvciBpbnN0YW5jZSwgaWYgdGhlIE1CQV9NQVggdmFsdWUg aXMgOTAsIHRoZQo+ID4gKyAgICAgKiAgICBpbnB1dCBwcmVjaXNpb24gaXMgMTAlLiBWYWx1ZXMg bm90IGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlCj4gPiArICAgICAqICAgIHByZWNpc2lvbiAoZS5n LiwgMTIlKSB3aWxsIGJlIHJvdW5kZWQgZG93biAoZS5nLiwgdG8gMTAlIGRlbGF5Cj4gPiArICAg ICAqICAgIGFwcGxpZWQpLgo+ID4gKyAgICAgKiAyLiBOb24tbGluZWFyIG1vZGU6IElucHV0IGRl bGF5IHZhbHVlcyBhcmUgcG93ZXJzLW9mLXR3byBmcm9tIHplcm8KPiA+ICsgICAgICogICAgdG8g dGhlIE1CQV9NQVggdmFsdWUgZnJvbSBDUFVJRC4gSW4gdGhpcyBjYXNlIGFueSB2YWx1ZXMgbm90 IGEKPiA+ICsgICAgICogICAgcG93ZXIgb2YgdHdvIHdpbGwgYmUgcm91bmRlZCBkb3duIHRoZSBu ZXh0IG5lYXJlc3QgcG93ZXIgb2YgdHdvLgo+ID4gKyAgICAgKi8KPiA+ICsgICAgaWYgKCBmZWF0 LT5tYmFfaW5mby5saW5lYXIgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICB1bnNpZ25lZCBpbnQg bW9kOwo+ID4gKwo+ID4gKyAgICAgICAgbW9kID0gKnRocnRsICUgKDEwMCAtIGZlYXQtPm1iYV9p bmZvLnRocnRsX21heCk7Cj4gPiArICAgICAgICAqdGhydGwgLT0gbW9kOwo+ID4gKyAgICB9Cj4g PiArICAgIGVsc2UKPiA+ICsgICAgewo+ID4gKyAgICAgICAgLyogTm90IHBvd2VyIG9mIDIuICov Cj4gPiArICAgICAgICBpZiAoICp0aHJ0bCAmJiAoKnRocnRsICYgKCp0aHJ0bCAtIDEpKSApCj4g Cj4gVGhpcyBjYW4gYmUgam9pbmVkIHdpdGggdGhlIGVsc2UgdG8gYXZvaWQgYW5vdGhlciBpbmRl bnRhdGlvbiBsZXZlbDoKPiAKPiBlbHNlIGlmICggKnRocnRsICYmICgqdGhydGwgJiAoKnRocnRs IC0gMSkpICkKPiAuLi4KPiAKVGhhbmtzIQoKPiA+ICsgICAgICAgICAgICAqdGhydGwgPSAqdGhy dGwgJiAoMSA8PCAoZmxzbCgqdGhydGwpIC0gMSkpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAg IHJldHVybiB0cnVlOwo+ID4gIH0KPiA+ICAKWy4uLl0KCj4gPiAgc3RhdGljIHZvaWQgZG9fd3Jp dGVfcHNyX21zcnModm9pZCAqZGF0YSkKPiA+ICB7Cj4gPiAgICAgIGNvbnN0IHN0cnVjdCBjb3Nf d3JpdGVfaW5mbyAqaW5mbyA9IGRhdGE7Cj4gPiAtICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQg PSBpbmZvLT5mZWF0dXJlOwo+ID4gLSAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHMg PSBpbmZvLT5wcm9wczsKPiA+IC0gICAgdW5zaWduZWQgaW50IGksIGNvcyA9IGluZm8tPmNvcywg Y29zX251bSA9IHByb3BzLT5jb3NfbnVtOwo+ID4gKyAgICB1bnNpZ25lZCBpbnQgaSwgaiwgaW5k ZXggPSAwLCBhcnJheV9sZW4gPSBpbmZvLT5hcnJheV9sZW4sIGNvcyA9IGluZm8tPmNvczsKPiA+ ICsgICAgY29uc3QgdWludDMyX3QgKnZhbF9hcnJheSA9IGluZm8tPnZhbDsKPiA+ICAKPiA+IC0g ICAgZm9yICggaSA9IDA7IGkgPCBjb3NfbnVtOyBpKysgKQo+ID4gKyAgICBmb3IgKCBpID0gMDsg aSA8IEFSUkFZX1NJWkUoZmVhdF9wcm9wcyk7IGkrKyApCj4gPiAgICAgIHsKPiAKPiBpbmRleCBh bmQgaiBjYW4gYmUgZGVmaW5lZCBoZXJlLCB0aGV5IGFyZSBvbmx5IHVzZWQgaW5zaWRlIG9mIHRo aXMgZm9yCj4gbG9vcCBBRkFJQ1QuCj4gCkkgdGhpbmsgZGVmaW5pdGlvbiBvZiBqIGNhbiBiZSBt b3ZlZCBpbnRvIHRoZSBsb29wLiBCdXQgaW5kZXggY2Fubm90IHVubGVzcyBJCmRlY2xhcmVkIGl0 IHRvIGJlICdzdGF0aWMnLiBUaGUgaW5kZXggaXMgdXNlZCBhcyBhIGFjY3VtdWxhdG9yLgoKPiA+ IC0gICAgICAgIGlmICggZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251bSArIGldICE9IGlu Zm8tPnZhbFtpXSApCj4gPiArICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0ID0gaW5mby0+ ZmVhdHVyZXNbaV07Cj4gPiArICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHMg PSBpbmZvLT5wcm9wc1tpXTsKPiA+ICsgICAgICAgIHVuc2lnbmVkIGludCBjb3NfbnVtOwo+ID4g Kwo+ID4gKyAgICAgICAgaWYgKCAhZmVhdCB8fCAhcHJvcHMgKQo+ID4gKyAgICAgICAgICAgIGNv bnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgY29zX251bSA9IHByb3BzLT5jb3NfbnVtOwo+ID4g KyAgICAgICAgaWYgKCBhcnJheV9sZW4gPCBjb3NfbnVtICkKPiA+ICsgICAgICAgICAgICByZXR1 cm47Cj4gPiArCj4gPiArICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvc19udW07IGorKyApCj4g PiAgICAgICAgICB7Cj4gPiAtICAgICAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29z X251bSArIGldID0gaW5mby0+dmFsW2ldOwo+ID4gLSAgICAgICAgICAgIHByb3BzLT53cml0ZV9t c3IoY29zLCBpbmZvLT52YWxbaV0sIHByb3BzLT50eXBlW2ldKTsKPiA+ICsgICAgICAgICAgICBp ZiAoIGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBqXSAhPSB2YWxfYXJyYXlbaW5k ZXggKyBqXSApCj4gPiArICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICBmZWF0LT5j b3NfcmVnX3ZhbFtjb3MgKiBjb3NfbnVtICsgal0gPSB2YWxfYXJyYXlbaW5kZXggKyBqXTsKPiA+ ICsgICAgICAgICAgICAgICAgcHJvcHMtPndyaXRlX21zcihjb3MsIHZhbF9hcnJheVtpbmRleCAr IGpdLCBwcm9wcy0+dHlwZVtqXSk7Cj4gPiArICAgICAgICAgICAgfQo+ID4gICAgICAgICAgfQo+ ID4gKwo+ID4gKyAgICAgICAgYXJyYXlfbGVuIC09IGNvc19udW07Cj4gPiArICAgICAgICBpbmRl eCArPSBjb3NfbnVtOwo+ID4gICAgICB9Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTEyMjQsMzAgKzEy ODksMTkgQEAgc3RhdGljIGludCB3cml0ZV9wc3JfbXNycyh1bnNpZ25lZCBpbnQgc29ja2V0LCB1 bnNpZ25lZCBpbnQgY29zLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu dDMyX3QgdmFsW10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlKQo+ID4gIHsKPiA+IC0gICAg aW50IHJldDsKPiA+ICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IGdldF9zb2Nr ZXRfaW5mbyhzb2NrZXQpOwo+IAo+IGluZm8gc2hvdWxkIHByb2JhYmx5IGJlIGNvbnN0IGhlcmUu Cj4gCmluZm8gY291bGQgbm90IGJlIGNvbnN0LiBCZWNhdXNlICdmZWF0dXJlcycgaW4gJ2Nvc193 cml0ZV9pbmZvJyBjb3VsZCBub3QgYmUKY29uc3QuCgo+ID4gICAgICBzdHJ1Y3QgY29zX3dyaXRl X2luZm8gZGF0YSA9Cj4gPiAgICAgIHsKPiA+ICAgICAgICAgIC5jb3MgPSBjb3MsCj4gPiAtICAg ICAgICAuZmVhdHVyZSA9IGluZm8tPmZlYXR1cmVzW2ZlYXRfdHlwZV0sCj4gPiAtICAgICAgICAu cHJvcHMgPSBmZWF0X3Byb3BzW2ZlYXRfdHlwZV0sCj4gPiArICAgICAgICAuZmVhdHVyZXMgPSBp bmZvLT5mZWF0dXJlcywKPiA+ICsgICAgICAgIC52YWwgPSB2YWwsCj4gPiArICAgICAgICAuYXJy YXlfbGVuID0gYXJyYXlfbGVuLAo+ID4gKyAgICAgICAgLnByb3BzID0gZmVhdF9wcm9wcywKPiA+ ICAgICAgfTsKPiAKPiBBRkFJQ1QgZGF0YSBzaG91bGQgYWxzbyBiZSBjb25zdCwgYnV0IEkgZ3Vl c3MgdGhpcyBpcyBub3QgZ29pbmcgdG8KPiB3b3JrIGJlY2F1c2Ugb25fc2VsZWN0ZWRfY3B1cyBl eHBlY3RzIGEgbm9uLWNvbnN0IHBheWxvYWQ/Cj4gClJpZ2h0LCBkYXRhIGNhbm5vdCBiZSBjb25z dCBwZXIgJ29uX3NlbGVjdGVkX2NwdXMnIHJlcXVpcmVtZW50LgoKPiBUaGFua3MsIFJvZ2VyLgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==