From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH 02/15] drm/i915: Embedded microcontroller (uC) firmware loading support Date: Mon, 06 Jul 2015 13:44:10 +0100 Message-ID: <559A781A.3000601@intel.com> References: <1434393394-21002-1-git-send-email-david.s.gordon@intel.com> <1434393394-21002-3-git-send-email-david.s.gordon@intel.com> <20150617120533.GR23637@phenom.ffwll.local> <5582B576.8050505@intel.com> <20150618144949.GD7752@phenom.ffwll.local> <5583D61F.7060104@intel.com> <20150624102916.GC25769@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 271486E0F3 for ; Mon, 6 Jul 2015 05:44:12 -0700 (PDT) In-Reply-To: <20150624102916.GC25769@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gMjQvMDYvMTUgMTE6MjksIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gRnJpLCBKdW4gMTks IDIwMTUgYXQgMDk6NDM6MTFBTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+IE9uIDE4LzA2 LzE1IDE1OjQ5LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4gT24gVGh1LCBKdW4gMTgsIDIwMTUg YXQgMDE6MTE6MzRQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+Pj4gT24gMTcvMDYvMTUg MTM6MDUsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+IE9uIE1vbiwgSnVuIDE1LCAyMDE1IGF0 IDA3OjM2OjIwUE0gKzAxMDAsIERhdmUgR29yZG9uIHdyb3RlOgo+Pj4+Pj4gQ3VycmVudCBkZXZp Y2VzIG1heSBjb250YWluIG9uZSBvciBtb3JlIHByb2dyYW1tYWJsZSBtaWNyb2NvbnRyb2xsZXJz Cj4+Pj4+PiB0aGF0IG5lZWQgdG8gaGF2ZSBhIGZpcm13YXJlIGltYWdlIChha2EgImJpbmFyeSBi bG9iIikgbG9hZGVkIGZyb20gYW4KPj4+Pj4+IGV4dGVybmFsIG1lZGl1bSBhbmQgdHJhbnNmZXJy ZWQgdG8gdGhlIGRldmljZSdzIG1lbW9yeS4KPj4+Pj4+Cj4+Pj4+PiBUaGlzIGZpbGUgcHJvdmlk ZXMgZ2VuZXJpYyBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IgZG9pbmcgdGhpczsgdGhleSBjYW4KPj4+ Pj4+IHRoZW4gYmUgdXNlZCBieSBlYWNoIHVDLXNwZWNpZmljIGxvYWRlciwgdGh1cyByZWR1Y2lu ZyBjb2RlIGR1cGxpY2F0aW9uCj4+Pj4+PiBhbmQgdGVzdGluZyBlZmZvcnQuCj4+Pj4+Pgo+Pj4+ Pj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4K Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+Pj4+Pgo+ Pj4+PiBHaXZlbiB0aGF0IEknbSBqdXN0IHNocmVkZGluZyB0aGUgc3luY2hyb25pemF0aW9uIHVz ZWQgYnkgdGhlIGRtYyBsb2FkZXIKPj4+Pj4gSSdtIG5vdCBjb252aW5jZWQgdGhpcyBpcyBhIGdv b2QgaWRlYS4gQWJzdHJhY3Rpb24gaGFzIGNvc3QsIGFuZCBhIGJpdCBvZgo+Pj4+PiBjb3B5LXBh c3RlIGZvciBzaW1pbGFyIHNvdW5kaW5nIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgdGhpbmdzIGRv ZXNuJ3QKPj4+Pj4gc291bmQgYXdmdWwgdG8gbWUuIEFuZCB0aGUgY3JpdGljYWwgYml0IGluIGFs bCB0aGUgZmlybXdhcmUgbG9hZGluZyBJJ3ZlCj4+Pj4+IHNlZW4gdGh1cyBmYXIgaXMgaW4gc3lu Y2hyb25pemluZyB0aGUgbG9hZGluZyB3aXRoIG90aGVyIG9wZXJhdGlvbnMsCj4+Pj4+IGhpZGlu ZyB0aGF0IGlzbid0IGEgZ29vZCBpZGVhLiBXb3JzZSBpZiB3ZSBlbmZvcmNlIHN0dWZmIGxpa2Ug cmVxdWlyaW5nCj4+Pj4+IGRldi0+c3RydWN0X211dGV4Lgo+Pj4+PiAtRGFuaWVsCj4+Pj4KPj4+ PiBJdCdzIHByZWNpc2VseSBiZWNhdXNlIGl0J3MgaW4gc29tZSBzZW5zZSAidHJpdmlhbC1idXQt dHJpY2t5IiB0aGF0IHdlCj4+Pj4gc2hvdWxkIHdyaXRlIGl0IG9uY2UsIGdldCBpdCByaWdodCwg YW5kIHVzZSBpdCBldmVyeXdoZXJlLiBDb3B5cGFzdGUKPj4+PiAvZG9lcy8gc291bmQgYXdmdWw7 IEkndmUgc2VlbiBob3cgdGhlIGNvZGUgdGhpcyB3YXMgZGVyaXZlZCBmcm9tIGhhZAo+Pj4+IGFs cmVhZHkgYmVlbiBjbG9uZWQgaW50byB0aHJlZSBmbGF2b3VycywgYWxsIGRpZmZlcmVudCBhbmQg YWxsIHdyb25nLgo+Pj4+Cj4+Pj4gSXQncyBhIHZlcnkgc2ltcGxlIGFic3RyYWN0aW9uOiBvbmUg ZWFybHkgY2FsbCB0byBraWNrIHRoaW5ncyBvZmYgYXMKPj4+PiBlYXJseSBhcyBwb3NzaWJsZSwg bm8gbG9ja2luZyByZXF1aXJlZC4gT25lIGxhdGUgY2FsbCB3aXRoIHRoZQo+Pj4+IHN0cnVjdF9t dXRleCBoZWxkIHRvIGNvbXBsZXRlIHRoZSBzeW5jaHJvbmlzYXRpb24gYW5kIGFjdHVhbGx5IGRv IHRoZQo+Pj4+IHdvcmssIHRodXMgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIHRyYW5zZmVyIHRvIHRo ZSB0YXJnZXQgdUMgaXMgZG9uZSBpbiBhCj4+Pj4gY29udHJvbGxlZCBmYXNoaW9uLCBhdCBhIHRp bWUgb2YgdGhlIGNhbGxlcidzIGNob2ljZSwgYW5kIGJ5IHRoZQo+Pj4+IGRyaXZlcidzIG1haW5s aW5lIHRocmVhZCwgTk9UIGJ5IGFuIGFzeW5jaHJvbm91cyB0aHJlYWQgcmFjaW5nIHdpdGgKPj4+ PiBvdGhlciBhY3Rpdml0eSAod2hpY2ggd2FzIG9uZSBvZiB0aGUgdGhpbmdzIHdyb25nIHdpdGgg dGhlIG9yaWdpbmFsCj4+Pj4gdmVyc2lvbikuCj4+Pgo+Pj4gWWVhaCBJJ3ZlIHNlZW4gdGhlIG9y aWdpbnMgb2YgdGhpcyBpbiB0aGUgZGlzcGxheSBjb2RlLCBhbmQgdGhhdCBjb2RlIGdldHMKPj4+ IHRoZSBzeW5jaW5nIHdyb25nLiBUaGUgb25seSB0aGluZyB0aGF0IG9uZSBoYXMgZG8gdG8gaXMg Z3JhYiBhIHJ1bnRpbWUgcG0KPj4+IHJlZmVyZW5jZSBmb3IgdGhlIGFwcHJvcHJpYXRlIHBvd2Vy IHdlbGwgdG8gcHJldmVudCBkYzUgZW50cnksIGFuZCByZWxlYXNlCj4+PiBpdCB3aGVuIHRoZSBm aXJtd2FyZSBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkLgo+Pgo+PiBBZ3JlZWQuCj4+Cj4+PiBX aGljaCBtZWFucyBhbnkga2luZCBvZiBmaXJtd2FyZSBsb2FkZXIgd2hpY2ggcmVxdWlyZXMvdXNl cwo+Pj4gZGV2LT5zdHJ1Y3RfbXV0ZXggZ2V0IHN0dWZmIHdyb25nIGFuZCBpcyBub3QgYXBwcm9w cmlhdGUgZXZlcnl3aGVyZS4KPj4KPj4gQlVULCB0aGUgbG9hZGluZyBvZiB0aGUgZmlybXdhcmUg aW50byBhbnkgdUMgTVVTVCBiZSBkb25lIGluIGEKPj4gY29udHJvbGxlZCBtYW5uZXIgaS5lLiBh dCBhIHRpbWUgd2hlbiBubyBvdGhlciB0aHJlYWQgaXMgdG91Y2hpbmcgdGhlCj4+IGgvdy4gT3Ro ZXJ3aXNlIHRoZSBmL3cgbG9hZCBhbmQgd2hhdGV2ZXIgZWxzZSBpcyBjb25jdXJyZW50bHkgYWNj ZXNzaW5nCj4+IHRoZSBoL3cgY291bGQgaW4gc29tZSBjYXNlcyBpbnRlcmZlcmUgZGlzYXN0cm91 c2x5LiBFeGFtcGxlcyBvZgo+PiBpbnRlcmZlcmVuY2UgbWlnaHQgYmU6Cj4+Cj4+ICogaW50ZXJs ZWF2ZWQgYWNjZXNzZXMgdG8gdGhlIEVMU1AgKGluIHRoZSBjYXNlIG9mIHRoZSBHdUMpCj4+ICog aW5jb3JyZWN0IGhhbmRvdmVyIG9mIHBvd2VyIG1hbmFnZW1lbnQgKERNQywgR3VDKQo+PiAqIGVy cm9uZW91cyBtYW5hZ2VtZW50IG9mIGZvcmNld2FrZSBzdGF0ZQo+Pgo+PiBJbiBnZW5lcmFsIHRo ZSBmL3cgdGhhdCBpcyBqdXN0IHN0YXJ0aW5nIG9uIHRoZSB1QyBtYXkgaGF2ZSBjZXJ0YWluCj4+ IGV4cGVjdGF0aW9ucyBhYm91dCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgaC93LCB3aGljaCBt YXkgbm90IGJlIG1ldCBpZgo+PiBvdGhlciB0aHJlYWRzIGFyZSBhY2Nlc3NpbmcgdmFyaW91cyBi aXRzIG9mIGgvdyB3aGlsZSB0aGUgdUMgaXMgYm9vdGluZyB1cC4KPj4KPj4gU28gd2UgYWJzb2x1 dGVseSBuZWVkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBmL3cgbG9hZCBpcyBkb25lIGJ5IGEgdGhy ZWFkCj4+IHdoaWNoIGhhcyBleGNsdXNpdmUgb3duZXJzaGlwIG9mIGFueSBiaXQgb2YgdGhlIGgv dyB0aGF0IHRoZSBmL3cgaXMKPj4gZ29pbmcgdG8gbWFrZSBhc3N1bXB0aW9ucyBhYm91dC4gV2l0 aCB0aGUgY3VycmVudCBsb2NraW5nIHN0cnVjdHVyZSBvZgo+PiB0aGUgZHJpdmVyLCB0aGF0IG1l YW5zIGhvbGRpbmcgdGhlIHN0cnVjdF9tdXRleCAoaXQgc2hvdWxkbid0IHJlYWxseSwKPj4gdGhl cmUgc2hvdWxkIGJlIGEgc2VwYXJhdGUgbXV0ZXggZm9yIGgvdyByZWdpc3RlciBhY2Nlc3MgdnMu Cj4+IGRyaXZlci1wcml2YXRlIGRhdGEgc3RydWN0dXJlcywgYnV0IHRoZXJlIGlzbid0KS4KPgo+ IElmIHlvdSByZWFsbHkgbmVlZCB0aGlzIGd1YXJhbnRlZSAoYW5kIEkgc2VyaW91c2x5IGhvcGUg bm90KSB0aGVuIHRoZSBvbmx5Cj4gb3B0aW9uIGlzIGEgc3luY2hyb25vdXMgZmlybXdhcmUgbG9h ZCBhdCBkcml2ZXIgaW5pdCBfYmVmb3JlXyB3ZSBsYXVuY2gKPiBhbnkgb2YgdGhlIGFzeW5jaHJv bm91cyBzZXR1cCBjb2RlLiBBbmQgdGhlcmUgaXMgYWxyZWFkeSBhIGxvdCBvZiB0aGF0LAo+IGFu ZCB3ZSdyZSBhZGRpbmcgbW9yZSBhbGwgdGhlIHRpbWUuCj4KPiBXaGF0IEkgZXhwZWN0IHdlIG5l ZWQgaXMgc3luY2hyb25pemF0aW9uIG9mIGp1c3QgdGhlIHJldmVsYW50IHBhcnQgd2l0aAo+IHRo ZSBmaXJtd2FyZSBsb2FkaW5nLCB3aGljaCBuZWNlc3NhcmlseSBuZWVkcyB0byBiZSBzb21ld2hh dCBhc3luYyB0byBiZQo+IGFibGUgdG8gc3VwcG9ydCBjcm9zL2FuZHJvaWQgcmVxdWlyZW1lbnRz LiBBbmQgeWVzIHRoYXQgbmVlZHMgdG8gYmUgZG9uZQo+IGluIGEgY29udHJvbGxlZCBtYW5uZXIs IGJ1dCBtb3N0IGxpa2VseSB3ZSBuZWVkIHZlcnkgc3BlY2lmaWMgc29sdXRpb25zCj4gZm9yIHRo ZSBwcm9ibGVtIGF0IGhhbmQuIFVuY29uZGl0aW9uYWxseSBob2xkaW5nIGRldi0+c3RydWN0X211 dGV4IGlzbid0Cj4gdGhhdCBzb2x1dGlvbi4KPgo+IFRoZSBvdGhlciBwcm9ibGVtIHdpdGggZGV2 LT5zdHJ1Y3RfbXV0ZXggaXMgdGhhdCBpdCdzIGEgZ2lhbnRpYyBsb2NrIHdpdGgKPiBpbGwgZGVm aW5lZCBjb3ZlcmFnZSBhbmQgc2VtYW50aWNzLiBJdCdzIGltbyB0aGUgYmlnZ2VzdCBwaWVjZSBv Zgo+IHRlY2huaWNhbCBkZWJ0IHdlIGNhcnJ5IGFyb3VuZCBpbiBpOTE1LmtvLCBhbmQgd2UgcGF5 IHRoZSBwcmljZSBmb3IgdGhhdAo+IGRlYXJseSZkYWlseS4gV2hpY2ggbWVhbnMgdGhhdCBzaW5j ZSBhIGZldyB5ZWFycyBhbnkga2luZCBvZiBjb2RlCj4gd2hpY2ggZXh0ZW5kZWQgZGV2LT5zdHJ1 Y3RfbXV0ZXggdG8gYW55dGhpbmcgbm90IGNsZWFybHkgY29yZSBnZW0gZGF0YQo+IHN0cnVjdHVy ZXMgd2FzIHJlamVjdGVkLgoKT2gsIEkgcXVpdGUgYWdyZWUgdGhhdCB0aGUgc3RydWN0X211dGV4 IGlzIGFuIGFib21pbmF0aW9uIGFuZCB3b3VsZCAKY2VydGFpbmx5IGxpa2UgdG8gZWxpbWluYXRl IGl0LiBCdXQgYXQgdGhlIG1vbWVudCBpdCdzIHRoZSBvbmx5IApzdWZmaWNpZW50bHkgbGFyZ2Ut c2NhbGUgc3luY2hyb25pc2F0aW9uIG9wZXJhdGlvbiBhdmFpbGFibGUgdG8gZW5zdXJlIAp0aGF0 IChmb3IgZXhhbXBsZSkgd2UgZG9uJ3QgdHJ5IHRvIGxvYWQgdGhlIGYvdyBhdCB0aGUgc2FtZSB0 aW1lIHRoYXQgCmFub3RoZXIgdGhyZWFkIGlzIHRyeWluZyB0byByZXNldCB0aGUgaC93LgoKTm9u ZSBvZiB0aGlzIGxvYWRlciBjb2RlIHJlYWxseSBuZWVkcyB0aGUgc3RydWN0X211dGV4IHNwZWNp ZmljYWxseTsgdGhlIApXQVJOX09OIG1hY3JvcyB3ZXJlIGp1c3QgdGhlcmUgdG8gaGVscCBjYWxs ZXJzIGtub3cgd2hhdCBkZWdyZWUgb2YgCnN5bmNocm9uaXNhdGlvbiB0aGV5IG5lZWQgdG8gb3Jn YW5pc2UgYmVmb3JlIGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zLgoKW3NuaXBdCgo+PiBCVFcsIHRo ZSBleGlzdGluZyBETUMgbG9hZGVyIHByb2JhYmx5IHdvbid0IHdvcmsgb24gQW5kcm9pZCA6KAo+ Cj4gWWVhaCBJIGNvbXBsZXRlbHkgbWlzc2VkIG91dCBvbiB0aGlzIGZ1biBzaW5jZSBJIHByZXN1 bWVkIHRoYXQgZmlybXdhcmUKPiBsb2FkaW5nIGlzIGVhc3kgYW5kIHNpbXBsZS4gQW5kIGlmIHlv dSBsb29rIGFyb3VuZCBvbiBvdGhlciBkcm0gZHJpdmVycyBpdAo+IGluZGVlZCBpcywgdGhleSBh bGwgdXNlIGEgc3luY2hyb25vdXMgcmVxdWVzdF9maXJtd2FyZSBhbmQgaWYgdGhlIGZpcm13YXJl Cj4gaXNuJ3QgdGhlcmUsIHRoZXkganVzdCBmYWxsIG92ZXIgKGZ1bGx5IGluIHRoZSBjYXNlIG9m IHJhZGVvbi5rbywKPiBwYXJ0aWFsbHkgaW4gdGhlIGNhc2Ugb2Ygbm91dmVhdS5rbyBzaW5jZSB0 aGV5IGhhdmUgYWxsIHRoZSBzdXBwb3J0IGluCj4gcGxhY2UgZm9yIGhhbmRsaW5nIGEga21zLW9u bHkgYWNjZWwtbGVzcyBncHUgaW4gdXNlcnNwYWNlIGFueXdheSwgbGlrZSB3ZQo+IGRvKS4gQnV0 IGZvciBhIGJ1bmNoIG9mIHJlYXNvbnMgKGFmYWlrIGl0J3MgInlvdSBjYW4ndCBpbmNsdWRlIGEg YmxvYiBpbiBhCj4gZ3BsLWVkIGtlcm5lbCBpbWFnZSIgd2UgbmVlZCBhc3luYyBmaXJtd2FyZSBs b2FkaW5nIGZvciBjcm9zJmFuZHJvaWQpLgo+Cj4gVGhhdCBsZWF2ZXMgdXMgd2l0aCBhIHNpdHVh dGlvbiB3aGVyZSB3ZSBzaG91bGQgaGF2ZSBkb25lIGEgc3BlY2lhbCBkZXNpZ24KPiBkaXNjdXNz aW9uIGFib3V0IGFzeW5jaHJvbm91cyBmaXJtd2FyZSwgYnV0IHNvbWVob3cgZmFpbGVkIGRvIHRv IHRoYXQuCj4gV2hpY2ggbGVhdmVzIHVzIGluIGEgdmVyeSB1Z2x5IHBvc2l0aW9uLgo+Cj4gSSB0 YWxrZWQgd2l0aCBhIGJ1bmNoIG9mIHBlb3BsZSBvdmVyIHRoZSBwYXN0IGZldyBkYXlzIHRvIGZp Z3VyZSBvdXQgaG93Cj4gdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrIGFuZCBhbHNvIGZpZ3VyZSBv dXQgd2h5IGl0J3MgYmVpbmcgZG9uZSBsaWtlIHRoYXQKPiB0b2RheS4gSSB0aGluayBJIGhhdmUg YSByZWFzb25hYmxlIGdvb2QgcGxhbiBmb3IgbW92aW5nIGZvcndhcmQgdG9vLiBJJ2xsCj4gc3Rh cnQgYSBuZXcgdG9wLWxldmVsIHRocmVhZCBoZXJlIHRvIGRpc2N1c3MgdGhpcy4KPgo+IFRoYW5r cywgRGFuaWVsCgpJdCByZWFsbHkgaXNuJ3QgImFzeW5jaHJvbm91cyIsIGl0J3MganVzdCAiZGVm ZXJyZWQiIC0tIGJ1dCBpbXBseWluZyAKdGhhdCBldmVyeXRoaW5nIHRoYXQgcmVsaWVzIG9uIGhh dmluZyB0aGUgZmlybXdhcmUgYXZhaWxhYmxlIGFsc28gaGFzIHRvIApiZSBkZWZlcnJlZC4gRm9y IHRoZSBETUMsIHRoYXQgbWVhbnMgd2UgY2FuJ3QgaGF2ZSBmdWxsIFBNOyBhbmQgZm9yIHRoZSAK R3VDLCB3ZSBjYW4ndCBzdWJtaXQgYW55IGJhdGNoZXMgYXQgYWxsIHRvIGFueSBlbmdpbmUgdW50 aWwgdGhlIGYvdyBsb2FkIAppcyBkb25lLgoKUmVhbGx5LCBpdCB3b3VsZCBiZSBzaW1wbGVyIGlm IHdlIGRpZG4ndCBzdXBwb3J0IGF1dG9tYXRpYyBmaXJtd2FyZSAKbG9hZGluZyBpbiB0aGUga2Vy bmVsIGF0IGFsbCwgYW5kIGhhZCBhIHVzZXJsYW5kIHN0YXJ0dXAgcHJvY2VzcyB3aG9zZSAKam9i IHdhcyB0byBsb2NhdGUgYW5kIHRyYW5zZmVyIHRoZSByZXF1aXJlZCBmaXJtd2FyZSBiZWZvcmUg dGhlIGRldmljZSAKY291bGQgYmUgdXNlZC4gQnV0IHRoYXQgd291bGQganVzdCBnaXZlIHVzIHRo ZSBvcHBvc2l0ZSBwcm9ibGVtLCBiZWNhdXNlIAp0aGUgZGlzcGxheSBkZXZpY2UgaXMgb25lIG9m IHRoZSB0aGluZ3MgdGhhdCAvc2hvdWxkLyBiZSB1c2FibGUgZXZlbiAKYmVmb3JlIHRoZSByb290 ZnMgaXMgbW91bnRlZC4KCkFueXdheSwgSSd2ZSBwb3N0ZWQgYSBzaW1wbGlmaWVkIHYzIHdoaWNo IG9ubHkgc3VwcG9ydHMgc3luY2hyb25vdXMgCmZldGNoLCB3aXRob3V0IHRoZSBwcmVmZXRjaCBj YXBhYmlsaXR5LiBTZWUgc2VwYXJhdGUgdGhyZWFkIC4uLgoKLkRhdmUuCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==