From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shannon Zhao Subject: Re: [PATCH v4 13/21] arm/gic-v2: Add ACPI boot support for GICv2 Date: Thu, 25 Feb 2016 22:06:40 +0800 Message-ID: <56CF0A70.8060203@huawei.com> References: <1453540813-15764-1-git-send-email-zhaoshenglong@huawei.com> <1453540813-15764-14-git-send-email-zhaoshenglong@huawei.com> <56CEBC2D.9090501@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: ian.campbell@citrix.com, peter.huangpeng@huawei.com, xen-devel@lists.xen.org, julien.grall@citrix.com, stefano.stabellini@citrix.com, shannon.zhao@linaro.org List-Id: xen-devel@lists.xenproject.org CgpPbiAyMDE2LzIvMjUgMTg6NDIsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToKPiBPbiBUaHUs IDI1IEZlYiAyMDE2LCBTaGFubm9uIFpoYW8gd3JvdGU6Cj4+IE9uIDIwMTYvMS8yOCAyMDo1Niwg U3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+Pj4gT24gU2F0LCAyMyBKYW4gMjAxNiwgU2hhbm5v biBaaGFvIHdyb3RlOgo+Pj4+IEZyb206IFBhcnRoIERpeGl0IDxwYXJ0aC5kaXhpdEBsaW5hcm8u b3JnPgo+Pj4+Cj4+Pj4gQUNQSSBvbiBYZW4gaHlwZXJ2aXNvciB1c2VzIE1BRFQgdGFibGUgZm9y IHByb3BlciBHSUMgaW5pdGlhbGl6YXRpb24uCj4+Pj4gRmlyc3QgZ2V0IHRoZSBHSUMgdmVyc2lv biBmcm9tIEdJQyBEaXN0cmlidXRvci4gVGhlbiBwYXJzZSBHSUMgcmVsYXRlZAo+Pj4+IHN1YnRh YmxlcywgY29sbGVjdCBDUFUgaW50ZXJmYWNlIGFuZCBkaXN0cmlidXRvciBhZGRyZXNzZXMgYW5k IGNhbGwKPj4+PiBkcml2ZXIgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKHdoaWNoIGlzIGhhcmR3 YXJlIGFic3RyYWN0aW9uIGFnbm9zdGljKS4KPj4+PiBJbiBhIHNpbWlsYXIgd2F5LCBGRFQgaW5p dGlhbGl6ZSBHSUN2Mi4KPj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6IFBhcnRoIERpeGl0IDxwYXJ0 aC5kaXhpdEBsaW5hcm8ub3JnPgo+Pj4+IFNpZ25lZC1vZmYtYnk6IFNoYW5ub24gWmhhbyA8c2hh bm5vbi56aGFvQGxpbmFyby5vcmc+Cj4+Pj4KPj4+PiBWNDogdXNlIGNvbnRhaW5lcl9vZiBhbmQg Zml4IGNvZGluZyBzdHlsZQo+Pj4+IC0tLQo+Pj4+ICB4ZW4vYXJjaC9hcm0vZ2ljLXYyLmMgfCAx MjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4+ PiAgMSBmaWxlIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Pj4K Pj4+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12Mi5jIGIveGVuL2FyY2gvYXJtL2dp Yy12Mi5jCj4+Pj4gaW5kZXggNjY4Yjg2My4uN2U0NmVlOSAxMDA2NDQKPj4+PiAtLS0gYS94ZW4v YXJjaC9hcm0vZ2ljLXYyLmMKPj4+PiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMKPj4+PiBA QCAtMjksNiArMjksOCBAQAo+Pj4+ICAjaW5jbHVkZSA8eGVuL2RldmljZV90cmVlLmg+Cj4+Pj4g ICNpbmNsdWRlIDx4ZW4vbGliZmR0L2xpYmZkdC5oPgo+Pj4+ICAjaW5jbHVkZSA8eGVuL3NpemVz Lmg+Cj4+Pj4gKyNpbmNsdWRlIDx4ZW4vYWNwaS5oPgo+Pj4+ICsjaW5jbHVkZSA8YWNwaS9hY3Rh Ymxlcy5oPgo+Pj4+ICAjaW5jbHVkZSA8YXNtL3AybS5oPgo+Pj4+ICAjaW5jbHVkZSA8YXNtL2Rv bWFpbi5oPgo+Pj4+ICAjaW5jbHVkZSA8YXNtL3BsYXRmb3JtLmg+Cj4+Pj4gQEAgLTM2LDYgKzM4 LDcgQEAKPj4+PiAgCj4+Pj4gICNpbmNsdWRlIDxhc20vaW8uaD4KPj4+PiAgI2luY2x1ZGUgPGFz bS9naWMuaD4KPj4+PiArI2luY2x1ZGUgPGFzbS9hY3BpLmg+Cj4+Pj4gIAo+Pj4+ICAvKgo+Pj4+ ICAgKiBMUiByZWdpc3RlciBkZWZpbml0aW9ucyBhcmUgR0lDIHYyIHNwZWNpZmljLgo+Pj4+IEBA IC02ODEsMTEgKzY4NCwxMTEgQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY3YyX2R0X2luaXQodm9p ZCkKPj4+PiAgICAgICAgICAgICAgICAgY3NpemUsIHZzaXplKTsKPj4+PiAgfQo+Pj4+ICAKPj4+ PiArI2lmZGVmIENPTkZJR19BQ1BJCj4+Pj4gK3N0YXRpYyBpbnQgX19pbml0Cj4+Pj4gK2dpY19h Y3BpX3BhcnNlX21hZHRfY3B1KHN0cnVjdCBhY3BpX3N1YnRhYmxlX2hlYWRlciAqaGVhZGVyLAo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGVuZCkKPj4+ PiArewo+Pj4+ICsgICAgc3RhdGljIGludCBjcHVfYmFzZV9hc3NpZ25lZCA9IDA7Cj4+Pj4gKyAg ICBzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVyaWNfaW50ZXJydXB0ICpwcm9jZXNzb3IgPQo+Pj4+ICsg ICAgICAgICAgICAgICBjb250YWluZXJfb2YoaGVhZGVyLCBzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVy aWNfaW50ZXJydXB0LCBoZWFkZXIpOwo+Pj4+ICsKPj4+PiArICAgIGlmICggQkFEX01BRFRfRU5U UlkocHJvY2Vzc29yLCBlbmQpICkKPj4+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiAr Cj4+Pj4gKyAgICAvKiBSZWFkIGZyb20gQVBJQyB0YWJsZSBhbmQgZmlsbCB1cCB0aGUgR0lDIHZh cmlhYmxlcyAqLwo+Pj4+ICsgICAgaWYgKCBjcHVfYmFzZV9hc3NpZ25lZCA9PSAwICkKPj4+PiAr ICAgIHsKPj4+PiArICAgICAgICBjYmFzZSA9IHByb2Nlc3Nvci0+YmFzZV9hZGRyZXNzOwo+Pj4+ ICsgICAgICAgIGNzaXplID0gU1pfOEs7Cj4+Pj4gKyAgICAgICAgaGJhc2UgPSBwcm9jZXNzb3It PmdpY2hfYmFzZV9hZGRyZXNzOwo+Pj4+ICsgICAgICAgIHZiYXNlID0gcHJvY2Vzc29yLT5naWN2 X2Jhc2VfYWRkcmVzczsKPj4+PiArICAgICAgICBnaWN2Ml9pbmZvLm1haW50ZW5hbmNlX2lycSA9 IHByb2Nlc3Nvci0+dmdpY19pbnRlcnJ1cHQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgIGlmKCBwcm9j ZXNzb3ItPmZsYWdzICYgQUNQSV9NQURUX1ZHSUNfSVJRX01PREUgKQo+Pj4KPj4+ICAgICAgICAg ICAgIF4gaWYgKCAKPj4+Cj4+Pgo+Pj4+ICsgICAgICAgICAgICBpcnFfc2V0X3R5cGUoZ2ljdjJf aW5mby5tYWludGVuYW5jZV9pcnEsIElSUV9UWVBFX0VER0VfQk9USCk7Cj4+Pj4gKyAgICAgICAg ZWxzZQo+Pj4+ICsgICAgICAgICAgICBpcnFfc2V0X3R5cGUoZ2ljdjJfaW5mby5tYWludGVuYW5j ZV9pcnEsIElSUV9UWVBFX0xFVkVMX01BU0spOwo+Pj4+ICsKPj4+PiArICAgICAgICBjcHVfYmFz ZV9hc3NpZ25lZCA9IDE7Cj4+Pj4gKyAgICB9Cj4+Pj4gKyAgICBlbHNlCj4+Pj4gKyAgICB7Cj4+ Pj4gKyAgICAgICAgaWYgKCBjYmFzZSAhPSBwcm9jZXNzb3ItPmJhc2VfYWRkcmVzcwo+Pj4+ICsg ICAgICAgICAgICAgfHwgaGJhc2UgIT0gcHJvY2Vzc29yLT5naWNoX2Jhc2VfYWRkcmVzcwo+Pj4+ ICsgICAgICAgICAgICAgfHwgdmJhc2UgIT0gcHJvY2Vzc29yLT5naWN2X2Jhc2VfYWRkcmVzcwo+ Pj4+ICsgICAgICAgICAgICAgfHwgZ2ljdjJfaW5mby5tYWludGVuYW5jZV9pcnEgIT0gcHJvY2Vz c29yLT52Z2ljX2ludGVycnVwdCApCj4+Pj4gKyAgICAgICAgewo+Pj4+ICsgICAgICAgICAgICBw cmludGsoIkdJQ3YyOiBHSUNDIGVudHJpZXMgYXJlIG5vdCBzYW1lIGluIE1BRFQgdGFibGVcbiIp Owo+Pj4+ICsgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiArICAgICAgICB9Cj4+Pj4g KyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0 YXRpYyBpbnQgX19pbml0Cj4+Pj4gK2dpY19hY3BpX3BhcnNlX21hZHRfZGlzdHJpYnV0b3Ioc3Ry dWN0IGFjcGlfc3VidGFibGVfaGVhZGVyICpoZWFkZXIsCj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlbmQpCj4+Pj4gK3sKPj4+PiArICAg IHN0cnVjdCBhY3BpX21hZHRfZ2VuZXJpY19kaXN0cmlidXRvciAqZGlzdCA9Cj4+Pj4gKyAgICAg ICAgICAgICBjb250YWluZXJfb2YoaGVhZGVyLCBzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVyaWNfZGlz dHJpYnV0b3IsIGhlYWRlcik7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCBCQURfTUFEVF9FTlRSWShk aXN0LCBlbmQpICkKPj4+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiArCj4+Pj4gKyAg ICBkYmFzZSA9IGRpc3QtPmJhc2VfYWRkcmVzczsKPj4+PiArCj4+Pj4gKyAgICByZXR1cm4gMDsK Pj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQgX19pbml0IGdpY3YyX2FjcGlfaW5pdCh2 b2lkKQo+Pj4+ICt7Cj4+Pj4gKyAgICBhY3BpX3N0YXR1cyBzdGF0dXM7Cj4+Pj4gKyAgICBzdHJ1 Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlOwo+Pj4+ICsgICAgaW50IGNvdW50Owo+Pj4+ICsK Pj4+PiArICAgIHN0YXR1cyA9IGFjcGlfZ2V0X3RhYmxlKEFDUElfU0lHX01BRFQsIDAsICZ0YWJs ZSk7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCBBQ1BJX0ZBSUxVUkUoc3RhdHVzKSApCj4+Pj4gKyAg ICB7Cj4+Pj4gKyAgICAgICAgY29uc3QgY2hhciAqbXNnID0gYWNwaV9mb3JtYXRfZXhjZXB0aW9u KHN0YXR1cyk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgIHBhbmljKCJHSUN2MjogRmFpbGVkIHRvIGdl dCBNQURUIHRhYmxlLCAlcyIsIG1zZyk7Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgLyog Q29sbGVjdCBDUFUgYmFzZSBhZGRyZXNzZXMgKi8KPj4+PiArICAgIGNvdW50ID0gYWNwaV9wYXJz ZV9lbnRyaWVzKEFDUElfU0lHX01BRFQsIHNpemVvZihzdHJ1Y3QgYWNwaV90YWJsZV9tYWR0KSwK Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpY19hY3BpX3BhcnNlX21hZHRf Y3B1LCB0YWJsZSwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDUElfTUFE VF9UWVBFX0dFTkVSSUNfSU5URVJSVVBULCAwKTsKPj4+PiArICAgIGlmICggY291bnQgPD0gMCAp Cj4+Pj4gKyAgICAgICAgcGFuaWMoIkdJQ3YyOiBObyB2YWxpZCBHSUNDIGVudHJpZXMgZXhpc3Rz Iik7Cj4+Pj4gKwo+Pj4+ICsgICAgLyoKPj4+PiArICAgICAqIEZpbmQgZGlzdHJpYnV0b3IgYmFz ZSBhZGRyZXNzLiBXZSBleHBlY3Qgb25lIGRpc3RyaWJ1dG9yIGVudHJ5IHNpbmNlCj4+Pj4gKyAg ICAgKiBBQ1BJIDUuMCBzcGVjIG5laXRoZXIgc3VwcG9ydCBtdWx0aS1HSUMgaW5zdGFuY2VzIG5v ciBHSUMgY2FzY2FkZS4KPj4+PiArICAgICAqLwo+Pj4+ICsgICAgY291bnQgPSBhY3BpX3BhcnNl X2VudHJpZXMoQUNQSV9TSUdfTUFEVCwgc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX21hZHQpLAo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ljX2FjcGlfcGFyc2VfbWFkdF9k aXN0cmlidXRvciwgdGFibGUsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB Q1BJX01BRFRfVFlQRV9HRU5FUklDX0RJU1RSSUJVVE9SLCAwKTsKPj4+PiArICAgIGlmICggY291 bnQgPD0gMCApCj4+Pj4gKyAgICAgICAgcGFuaWMoIkdJQ3YyOiBObyB2YWxpZCBHSUNEIGVudHJp ZXMgZXhpc3RzIik7Cj4+Pj4gK30KPj4+PiArI2Vsc2UKPj4+PiArc3RhdGljIHZvaWQgX19pbml0 IGdpY3YyX2FjcGlfaW5pdCh2b2lkKQo+Pj4+ICt7Cj4+Pj4gKy8qIFNob3VsZCBuZXZlciByZWFj aCBoZXJlICovCj4+Pj4gK30KPj4+PiArI2VuZGlmCj4+Pgo+Pj4gV2l0aCBhY3BpX2Rpc2FibGVk IGJlY29taW5nIGFuICNkZWZpbmUgY29uc3RhbnQsIHRoaXMgI2Vsc2Ugc2hvdWxkIG5vdAo+Pj4g YmUgbmVlZGVkLgo+Pj4KPj4gSWYgSSByZW1vdmUgI2Vsc2UgYW5kIGRlZmluZSBhY3BpX2Rpc2Fi bGVkIGFzIGEgY29uc3RhbnQgYXMgeW91Cj4+IHN1Z2dlc3RlZCwgaXQgaGFzIGJlbG93IGNvbXBp bGluZyBlcnJvciBvbiBhcm0zMi4KPj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMt djIuYyBiL3hlbi9hcmNoL2FybS9naWMtdjIuYwo+PiBpbmRleCA5YTlmY2Q1Li4yOGVjMDY0IDEw MDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMKPj4gKysrIGIveGVuL2FyY2gvYXJt L2dpYy12Mi5jCj4+IEBAIC03NzYsMTEgKzc3Niw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBhY3Bp X2dpY3YyX2luaXQodm9pZCkKPj4gICAgICBpZiAoIGNvdW50IDw9IDAgKQo+PiAgICAgICAgICBw YW5pYygiR0lDdjI6IE5vIHZhbGlkIEdJQ0QgZW50cmllcyBleGlzdHMiKTsKPj4gIH0KPj4gLSNl bHNlCj4+IC1zdGF0aWMgdm9pZCBfX2luaXQgYWNwaV9naWN2Ml9pbml0KHZvaWQpCj4+IC17Cj4+ IC0vKiBTaG91bGQgbmV2ZXIgcmVhY2ggaGVyZSAqLwo+PiAtfQo+PiAgI2VuZGlmCj4+Cj4+IGdp Yy12Mi5jOiBJbiBmdW5jdGlvbiAnZ2ljdjJfaW5pdCc6Cj4+IGdpYy12Mi5jOjc5Mzo5OiBlcnJv cjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24KPj4gJ2FjcGlfZ2ljdjJfaW5pdCcg Wy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCj4+IGdpYy12Mi5jOjc5Mzo5 OiBlcnJvcjogbmVzdGVkIGV4dGVybiBkZWNsYXJhdGlvbiBvZiAnYWNwaV9naWN2Ml9pbml0Jwo+ PiBbLVdlcnJvcj1uZXN0ZWQtZXh0ZXJuc10KPj4gY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJl YXRlZCBhcyBlcnJvcnMKPiAKPiBTb3JyeSwgSSBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZXIuIFlv dSBzdGlsbCBuZWVkIHRvIGhhdmUgYSBkZWNsYXJhdGlvbgo+IG9mIHRoZSBmdW5jdGlvbiBvdXRz aWRlIHRoZSAjaWZkZWYuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc2hvdWxkCj4gd29y azoKPiAKPiAgIHN0YXRpYyB2b2lkIGFjcGlfZ2ljdjJfaW5pdCh2b2lkKTsKPiAKPiAgIFsuLi5d Cj4gCj4gICAjaWZkZWYgQ09ORklHX0FDUEkKPiAgIHN0YXRpYyB2b2lkIF9faW5pdCBhY3BpX2dp Y3YyX2luaXQodm9pZCkKPiAgIHsKPiAgICAgICAvKiBkbyBzb21ldGhpbmcgKi8KPiAgIH0KPiAg ICNlbmRpZgo+IAo+ICAgWy4uLl0KPiAKPiAgIGlmICggYWNwaV9kaXNhYmxlZCApCj4gICAgICAg Z2ljdjJfZHRfaW5pdCgpOwo+ICAgZWxzZQo+ICAgICAgIGdpY3YyX2FjcGlfaW5pdCgpOwo+IAo+ IC4KPiAKSSdtIGFmcmFpZCBpdCBkb2Vzbid0IHdvcmsuIFN0aWxsIGhhcyBiZWxvdyBlcnJvcnMg d2l0aCB0aGUgZGVjbGFyYXRpb246CgpnaWMtdjIuYzo2ODc6MTM6IGVycm9yOiAnZ2ljdjJfYWNw aV9pbml0JyB1c2VkIGJ1dCBuZXZlciBkZWZpbmVkIFstV2Vycm9yXQpjYzE6IGFsbCB3YXJuaW5n cyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMt djIuYyBiL3hlbi9hcmNoL2FybS9naWMtdjIuYwppbmRleCA0YjZjNGMwLi43YjdlMDk0IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMKKysrIGIveGVuL2FyY2gvYXJtL2dpYy12Mi5j CkBAIC02ODQsNiArNjg0LDggQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY3YyX2R0X2luaXQodm9p ZCkKICAgICAgICAgICAgICAgIGNzaXplLCB2c2l6ZSk7CiB9Cgorc3RhdGljIHZvaWQgZ2ljdjJf YWNwaV9pbml0KHZvaWQpOworCiAjaWZkZWYgQ09ORklHX0FDUEkKIHN0YXRpYyBpbnQgX19pbml0 CiBnaWNfYWNwaV9wYXJzZV9tYWR0X2NwdShzdHJ1Y3QgYWNwaV9zdWJ0YWJsZV9oZWFkZXIgKmhl YWRlciwKQEAgLTc3NCwxMSArNzc2LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGdpY3YyX2FjcGlf aW5pdCh2b2lkKQogICAgIGlmICggY291bnQgPD0gMCApCiAgICAgICAgIHBhbmljKCJHSUN2Mjog Tm8gdmFsaWQgR0lDRCBlbnRyaWVzIGV4aXN0cyIpOwogfQotI2Vsc2UKLXN0YXRpYyB2b2lkIF9f aW5pdCBnaWN2Ml9hY3BpX2luaXQodm9pZCkKLXsKLS8qIFNob3VsZCBuZXZlciByZWFjaCBoZXJl ICovCi19CiAjZW5kaWYKCiBzdGF0aWMgaW50IF9faW5pdCBnaWN2Ml9pbml0KHZvaWQpCgotLSAK U2hhbm5vbgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==