From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: Upstream Dom0 DRM problems regarding swiotlb Date: Wed, 13 Feb 2019 14:16:02 -0500 Message-ID: <20190213191602.GC16558@char.us.oracle.com> References: <5C63F2BB02000078002163D1@prv1-mh.provo.novell.com> <5C64297D0200007800216566@prv1-mh.provo.novell.com> <5C64413C0200007800216656@prv1-mh.provo.novell.com> <20190213165657.GD22883@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Michael Labriola Cc: Jan Beulich , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMDE6Mzg6MjFQTSAtMDUwMCwgTWljaGFlbCBMYWJyaW9s YSB3cm90ZToKPiBPbiBXZWQsIEZlYiAxMywgMjAxOSBhdCAxOjE2IFBNIE1pY2hhZWwgTGFicmlv bGEKPiA8bWljaGFlbC5kLmxhYnJpb2xhQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gV2Vk LCBGZWIgMTMsIDIwMTkgYXQgMTE6NTcgQU0gS29ucmFkIFJ6ZXN6dXRlayBXaWxrCj4gPiA8a29u cmFkLndpbGtAb3JhY2xlLmNvbT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIFdlZCwgRmViIDEzLCAy MDE5IGF0IDA5OjA5OjMyQU0gLTA3MDAsIEphbiBCZXVsaWNoIHdyb3RlOgo+ID4gPiA+ID4+PiBP biAxMy4wMi4xOSBhdCAxNzowMCwgPG1pY2hhZWwuZC5sYWJyaW9sYUBnbWFpbC5jb20+IHdyb3Rl Ogo+ID4gPiA+ID4gT24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgOToyOCBBTSBKYW4gQmV1bGljaCA8 SkJldWxpY2hAc3VzZS5jb20+IHdyb3RlOgo+ID4gPiA+ID4+ID4+PiBPbiAxMy4wMi4xOSBhdCAx NToxMCwgPG1pY2hhZWwuZC5sYWJyaW9sYUBnbWFpbC5jb20+IHdyb3RlOgo+ID4gPiA+ID4+ID4g QWgsIHNvIHRoaXMgaXNuJ3QgbmVjZXNzYXJpbHkgWGVuLXNwZWNpZmljIGJ1dCByYXRoZXIgYW55 IHBhcmF2aXJ0dWFsCj4gPiA+ID4gPj4gPiBndWVzdD8gIFRoYXQgaGFkbid0IGNyb3NzZWQgbXkg bWluZC4gIElzIHRoZXJlIGFuIGVhc3kgd2F5IHRvIGZpbmQgb3V0Cj4gPiA+ID4gPj4gPiBpZiB3 ZSdyZSBhIHB2IGd1ZXN0IGluIHRoZSBuZWVkX3N3aW90bGIgY29uZGl0aW9uYWxzPwo+ID4gPiA+ ID4+Cj4gPiA+ID4gPj4gVGhlcmUncyB4ZW5fcHZfZG9tYWluKCksIGJ1dCBJIHRoaW5rIHhlbl9z d2lvdGxiIHdvdWxkIGJlIG1vcmUgdG8KPiA+ID4gPiA+PiB0aGUgcG9pbnQgaWYgdGhlIGNoZWNr IGlzIGFscmVhZHkgdG8gYmUgWGVuLXNwZWNpZmljLiBUaGVyZSdzIG5vIGdlbmVyaWMKPiA+ID4g PiA+PiAiaXMgUFYiIHByZWRpY2F0ZSB0aGF0IEknbSBhd2FyZSBvZi4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBXZWxsLCB0aGF0IG1ha2VzIGRvaW5nIGNvbmRpdGlvbmFsIGNvZGUgcmlnaHQgbW9yZSBk aWZmaWN1bHQuICBJCj4gPiA+ID4gPiBhc3N1bWUgc2luY2UgdGhlcmUgaXNuJ3QgYSBnZW5lcmlj IHByZWRpY2F0ZSwgYW5kIFBWIGlzbid0IG5ldywgdGhhdAo+ID4gPiA+ID4gaXQncyBhYnNlbmNl IGlzIGJ5IGRlc2lnbj8gIFRvIHJlaWduIGluIHRoZSB0ZW1wdGF0aW9uIHRvIHNwcmlua2xlCj4g PiA+ID4gPiBjb25kaXRpb25hbCBjb2RlIGFsbCBvdmVyIHRoZSBrZXJuZWw/ICA7LSkKPiA+ID4g Pgo+ID4gPiA+IFdlbGwsIHdpdGggbGd1ZXN0IGdvbmUsIFhlbiBpcyB0aGUgb25seSBQViBlbnZp cm9ubWVudCB0aGUga2VybmVsCj4gPiA+ID4gY2FuIHJ1biBpbiwgYWZhaWsgYXQgbGVhc3QuIEkg Z3Vlc3MgdG8gZGVjaWRlIGJldHdlZW4gdGhlIHN1Z2dlc3RlZAo+ID4gPiA+IG9wdGlvbnMgb3Ig dGhlIG5lZWQgZm9yIHNvbWUgYWJzdHJhY3RpbmcgbWFjcm8gKG9yIHlldCBzb21ldGhpbmcKPiA+ ID4gPiBlbHNlKSwgeW91J2xsIHJlYWxseSBuZWVkIHRvIGFzayB0aGUgZHJpdmVyIG1haW50YWlu ZXJzLiBPciBzaW1wbHkKPiA+ID4gPiBzZW5kIGEgcGF0Y2ggdGhlaXIgd2F5IGltcGxlbWVudGlu ZyBvbmUgb2YgdGhlbSwgYW5kIHNlZSB3aGF0Cj4gPiA+ID4gdGhlaXIgcmVhY3Rpb24gaXMuCj4g PiA+Cj4gPiA+IENvdWxkIHlvdSB0cnkgdGhpcyBvdXQgYW5kIHNlZSBpZiBpdCB3b3JrcyBhbmQg SSB3aWxsIHNlbmQgaXQgb3V0Ogo+ID4gPgo+ICpzbmlwKgo+ID4KPiA+IFllcywgdGhhdCB3b3Jr cyBmb3IgbWUuICBIb3dldmVyLCBJIGZlZWwgbGlrZSB0aGUgY29uZGl0aW9uYWwgc2hvdWxkCj4g PiBiZSBpbiBkcm1fZ2V0X21heF9pb21lbSgpIGluc3RlYWQgb2YgZGlyZWN0bHkgYWZ0ZXIgaXQg ZXZlcnl3aGVyZSBpdCdzCj4gPiB1c2VkLi4uICBhbmQgaXMganVzdCBjaGVja2luZyB4ZW5fcHZf ZG9tYWluKCkgZW5vdWdoPyAgSmFuIG1hZGUgaXQKPiA+IHNvdW5kIGxpa2UgdGhlcmUgd2VyZSBw b3NzaWJseSBvdGhlciBQViBjYXNlcyB0aGF0IHdvdWxkIGFsc28gc3RpbGwKPiA+IG5lZWQgc3dp b3RsYi4KPiAKPiBIb3cgYWJvdXQgdGhpcz8gIEl0IHN0cmNtcCdzIHB2X2luZm8gdG8gc2VlIGlm IHdlJ3JlIGJhcmUgbWV0YWwsIGRvZXMKPiB0aGUgY29tcGFyaXNvbiBpbiBhIHNpbmdsZSBwbGFj ZSwgbW92ZXMgdGhlIGJpdCBzaGlmdGluZyBjb21wYXJpc29uCj4gaW50byB0aGUgZnVuY3Rpb24g KHNpbXBsaWZ5aW5nIHRoZSBkcm0gZHJpdmVyIGNvZGUpLCBhbmQgcmVuYW1lcyB0aGUKPiBmdW5j dGlvbiB0byBtb3JlIGFwdGx5IGRlc2NyaWJlIHdoYXQncyBnb2luZyBvbi4KCjxub2RzPiBUaGF0 IGxvb2tzIG11Y2ggYmV0dGVyLgoKV291bGQgbG92ZSB0byBzZWUgdGhpcyBwb3N0ZWQgdXBzdHJl YW0hCj4gCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192 Nl8wLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMKPiBpbmRleCA3 M2FkMDJhZWEyYjIuLjMyOGQ0NWI4YjJlYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nbWNfdjZfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z21jX3Y2XzAuYwo+IEBAIC04ODUsNyArODg1LDcgQEAgc3RhdGljIGludCBnbWNfdjZfMF9zd19p bml0KHZvaWQgKmhhbmRsZSkKPiAgICAgICAgICBwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2so YWRldi0+cGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7Cj4gICAgICAgICAgZGV2X3dhcm4oYWRldi0+ ZGV2LCAiYW1kZ3B1OiBObyBjb2hlcmVudCBETUEgYXZhaWxhYmxlLlxuIik7Cj4gICAgICB9Cj4g LSAgICBhZGV2LT5uZWVkX3N3aW90bGIgPSBkcm1fZ2V0X21heF9pb21lbSgpID4gKCh1NjQpMSA8 PCBkbWFfYml0cyk7Cj4gKyAgICBhZGV2LT5uZWVkX3N3aW90bGIgPSBkcm1fbmVlZF9zd2lvdGxi X2Zvcl9kbWEoZG1hX2JpdHMpOwo+IAo+ICAgICAgciA9IGdtY192Nl8wX2luaXRfbWljcm9jb2Rl KGFkZXYpOwo+ICAgICAgaWYgKHIpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y3XzAuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3 XzAuYwo+IGluZGV4IDkxMGM0Y2UxOWNiMy4uM2Q0OWVmZjI4NDQ4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192N18wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jCj4gQEAgLTEwMjksNyArMTAyOSw3IEBAIHN0YXRpYyBp bnQgZ21jX3Y3XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCj4gICAgICAgICAgcGNpX3NldF9jb25z aXN0ZW50X2RtYV9tYXNrKGFkZXYtPnBkZXYsIERNQV9CSVRfTUFTSygzMikpOwo+ICAgICAgICAg IHByX3dhcm4oImFtZGdwdTogTm8gY29oZXJlbnQgRE1BIGF2YWlsYWJsZVxuIik7Cj4gICAgICB9 Cj4gLSAgICBhZGV2LT5uZWVkX3N3aW90bGIgPSBkcm1fZ2V0X21heF9pb21lbSgpID4gKCh1NjQp MSA8PCBkbWFfYml0cyk7Cj4gKyAgICBhZGV2LT5uZWVkX3N3aW90bGIgPSBkcm1fbmVlZF9zd2lv dGxiX2Zvcl9kbWEoZG1hX2JpdHMpOwo+IAo+ICAgICAgciA9IGdtY192N18wX2luaXRfbWljcm9j b2RlKGFkZXYpOwo+ICAgICAgaWYgKHIpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ21jX3Y4XzAuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21j X3Y4XzAuYwo+IGluZGV4IDc0N2MwNjgzNzlkYy4uOTI0N2RkNjMxNmYxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jCj4gQEAgLTExNTUsNyArMTE1NSw3IEBAIHN0YXRp YyBpbnQgZ21jX3Y4XzBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCj4gICAgICAgICAgcGNpX3NldF9j b25zaXN0ZW50X2RtYV9tYXNrKGFkZXYtPnBkZXYsIERNQV9CSVRfTUFTSygzMikpOwo+ICAgICAg ICAgIHByX3dhcm4oImFtZGdwdTogTm8gY29oZXJlbnQgRE1BIGF2YWlsYWJsZVxuIik7Cj4gICAg ICB9Cj4gLSAgICBhZGV2LT5uZWVkX3N3aW90bGIgPSBkcm1fZ2V0X21heF9pb21lbSgpID4gKCh1 NjQpMSA8PCBkbWFfYml0cyk7Cj4gKyAgICBhZGV2LT5uZWVkX3N3aW90bGIgPSBkcm1fbmVlZF9z d2lvdGxiX2Zvcl9kbWEoZG1hX2JpdHMpOwo+IAo+ICAgICAgciA9IGdtY192OF8wX2luaXRfbWlj cm9jb2RlKGFkZXYpOwo+ICAgICAgaWYgKHIpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z21jX3Y5XzAuYwo+IGluZGV4IGYzNWQ3YTU1NGFkNS4uODlmM2ZlOTgxYWM1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jCj4gQEAgLTk4OSw3ICs5ODksNyBAQCBzdGF0 aWMgaW50IGdtY192OV8wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+ICAgICAgICAgIHBjaV9zZXRf Y29uc2lzdGVudF9kbWFfbWFzayhhZGV2LT5wZGV2LCBETUFfQklUX01BU0soMzIpKTsKPiAgICAg ICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJhbWRncHU6IE5vIGNvaGVyZW50IERNQSBhdmFpbGFi bGUuXG4iKTsKPiAgICAgIH0KPiAtICAgIGFkZXYtPm5lZWRfc3dpb3RsYiA9IGRybV9nZXRfbWF4 X2lvbWVtKCkgPiAoKHU2NCkxIDw8IGRtYV9iaXRzKTsKPiArICAgIGFkZXYtPm5lZWRfc3dpb3Rs YiA9IGRybV9uZWVkX3N3aW90bGJfZm9yX2RtYShkbWFfYml0cyk7Cj4gCj4gICAgICBpZiAoYWRl di0+YXNpY190eXBlID09IENISVBfVkVHQTIwKSB7Cj4gICAgICAgICAgciA9IGdmeGh1Yl92MV8x X2dldF94Z21pX2luZm8oYWRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f bWVtb3J5LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21lbW9yeS5jCj4gaW5kZXggZDY5ZTRmYzFl ZTc3Li5mMjJmNmEwZDIwYjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tZW1v cnkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWVtb3J5LmMKPiBAQCAtMzUsNiArMzUs NyBAQAo+IAo+ICAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgo+ICAjaW5jbHVkZSA8bGludXgv ZXhwb3J0Lmg+Cj4gKyNpbmNsdWRlIDx4ZW4veGVuLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+ICAjaW5jbHVkZSAiZHJtX2xlZ2FjeS5oIgo+IAo+IEBAIC0xNTAsMTUgKzE1MSwyNCBAQCB2 b2lkIGRybV9sZWdhY3lfaW9yZW1hcGZyZWUoc3RydWN0IGRybV9sb2NhbF9tYXAKPiAqbWFwLCBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2xlZ2FjeV9p b3JlbWFwZnJlZSk7Cj4gCj4gLXU2NCBkcm1fZ2V0X21heF9pb21lbSh2b2lkKQo+ICtib29sIGRy bV9uZWVkX3N3aW90bGJfZm9yX2RtYShpbnQgZG1hX2JpdHMpCj4gIHsKPiAgICAgIHN0cnVjdCBy ZXNvdXJjZSAqdG1wOwo+ICAgICAgcmVzb3VyY2Vfc2l6ZV90IG1heF9pb21lbSA9IDA7Cj4gCj4g KyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKPiArICAgIC8qCj4gKyAgICAgKiBQYXJhdmlydHVhbCBo b3N0cyByZXF1aXJlIHN3aW90bGIgcmVnYXJkbGVzcyBvZiByZXF1ZXN0ZWQgZG1hCj4gKyAgICAg KiB0cmFuc2ZlciBzaXplLgo+ICsgICAgICovCj4gKyAgICBpZiAoc3RyY21wKHB2X2luZm8ubmFt ZSwgImJhcmUgaGFyZHdhcmUiKSAhPSAwKQo+ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsjZW5k aWYKPiArCj4gICAgICBmb3IgKHRtcCA9IGlvbWVtX3Jlc291cmNlLmNoaWxkOyB0bXA7IHRtcCA9 IHRtcC0+c2libGluZykgewo+ICAgICAgICAgIG1heF9pb21lbSA9IG1heChtYXhfaW9tZW0sICB0 bXAtPmVuZCk7Cj4gICAgICB9Cj4gCj4gLSAgICByZXR1cm4gbWF4X2lvbWVtOwo+ICsgICAgcmV0 dXJuIG1heF9pb21lbSA+ICgodTY0KTEgPDwgZG1hX2JpdHMpOwo+ICB9Cj4gLUVYUE9SVF9TWU1C T0woZHJtX2dldF9tYXhfaW9tZW0pOwo+ICtFWFBPUlRfU1lNQk9MKGRybV9uZWVkX3N3aW90bGJf Zm9yX2RtYSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rl dmljZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYwo+IGluZGV4 IDU5YzhhNjY0N2ZmMi4uN2M4MjIyZDk4YmMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX2RldmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fZGV2aWNlLmMKPiBAQCAtMTM4Nyw3ICsxMzg3LDggQEAgaW50IHJhZGVvbl9kZXZpY2Vf aW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKPiAgICAgICAgICBwY2lfc2V0X2NvbnNp c3RlbnRfZG1hX21hc2socmRldi0+cGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7Cj4gICAgICAgICAg cHJfd2FybigicmFkZW9uOiBObyBjb2hlcmVudCBETUEgYXZhaWxhYmxlXG4iKTsKPiAgICAgIH0K PiAtICAgIHJkZXYtPm5lZWRfc3dpb3RsYiA9IGRybV9nZXRfbWF4X2lvbWVtKCkgPiAoKHU2NCkx IDw8IGRtYV9iaXRzKTsKPiArICAgIHJkZXYtPm5lZWRfc3dpb3RsYiA9IGRybV9uZWVkX3N3aW90 bGJfZm9yX2RtYShkbWFfYml0cyk7Cj4gKyAgICBwcl9pbmZvKCIlczogbmVlZF9zd2lvdGxiOiAl ZFxuIiwgX19mdW5jX18sIHJkZXYtPm5lZWRfc3dpb3RsYik7Cj4gCj4gICAgICAvKiBSZWdpc3Rl cnMgbWFwcGluZyAqLwo+ICAgICAgLyogVE9ETzogYmxvY2sgdXNlcnNwYWNlIG1hcHBpbmcgb2Yg aW8gcmVnaXN0ZXIgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NhY2hlLmggYi9p bmNsdWRlL2RybS9kcm1fY2FjaGUuaAo+IGluZGV4IGJmZTE2MzlkZjAyZC4uMDcwYjQ0NjI0ZmY5 IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jYWNoZS5oCj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2NhY2hlLmgKPiBAQCAtMzgsNyArMzgsNyBAQAo+ICB2b2lkIGRybV9jbGZsdXNoX3Bh Z2VzKHN0cnVjdCBwYWdlICpwYWdlc1tdLCB1bnNpZ25lZCBsb25nIG51bV9wYWdlcyk7Cj4gIHZv aWQgZHJtX2NsZmx1c2hfc2coc3RydWN0IHNnX3RhYmxlICpzdCk7Cj4gIHZvaWQgZHJtX2NsZmx1 c2hfdmlydF9yYW5nZSh2b2lkICphZGRyLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7Cj4gLXU2NCBk cm1fZ2V0X21heF9pb21lbSh2b2lkKTsKPiArYm9vbCBkcm1fbmVlZF9zd2lvdGxiX2Zvcl9kbWEo aW50IGRtYV9iaXRzKTsKPiAKPiAKPiAgc3RhdGljIGlubGluZSBib29sIGRybV9hcmNoX2Nhbl93 Y19tZW1vcnkodm9pZCkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=