From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm: support hotspot for universal plane cursors Date: Wed, 18 Nov 2015 12:08:19 +0100 Message-ID: <20151118110819.GQ20799@phenom.ffwll.local> References: <1447762218-11017-1-git-send-email-john@metanate.com> <1447772734-6480-1-git-send-email-john@metanate.com> <20151117153932.GU4437@intel.com> <20151117155943.1e83b053.john@metanate.com> <20151117162935.GK16848@phenom.ffwll.local> <20151117183132.GU16848@phenom.ffwll.local> <20151117184728.27252360.john@metanate.com> <20151117191123.GY16848@phenom.ffwll.local> <20151118101216.4cd01306.john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9170F7214B for ; Wed, 18 Nov 2015 03:08:23 -0800 (PST) Received: by wmvv187 with SMTP id v187so272330771wmv.1 for ; Wed, 18 Nov 2015 03:08:22 -0800 (PST) Content-Disposition: inline In-Reply-To: <20151118101216.4cd01306.john@metanate.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Keeping Cc: Michel =?iso-8859-1?Q?D=E4nzer?= , LKML , Maling list - DRI developers List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBOb3YgMTgsIDIwMTUgYXQgMTA6MTI6MTZBTSArMDAwMCwgSm9obiBLZWVwaW5nIHdy b3RlOgo+IE9uIFR1ZSwgMTcgTm92IDIwMTUgMjA6MTE6MjMgKzAxMDAsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gCj4gPiBPbiBUdWUsIE5vdiAxNywgMjAxNSBhdCAwNjo0NzoyOFBNICswMDAwLCBK b2huIEtlZXBpbmcgd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgMTcgTm92IDIwMTUgMTk6MzE6MzIgKzAx MDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ICAgCj4gPiA+ID4gT24gVHVlLCBOb3YgMTcs IDIwMTUgYXQgMTI6MDc6MjRQTSAtMDUwMCwgQWxleCBEZXVjaGVyIHdyb3RlOiAgCj4gPiA+ID4g PiBPbiBUdWUsIE5vdiAxNywgMjAxNSBhdCAxMToyOSBBTSwgRGFuaWVsIFZldHRlcgo+ID4gPiA+ ID4gPGRhbmllbEBmZndsbC5jaD4gd3JvdGU6ICAgIAo+ID4gPiA+ID4gPiBPbiBUdWUsIE5vdiAx NywgMjAxNSBhdCAwMzo1OTo0M1BNICswMDAwLCBKb2huIEtlZXBpbmcKPiA+ID4gPiA+ID4gd3Jv dGU6ICAgIAo+ID4gPiA+ID4gPj4gT24gVHVlLCAxNyBOb3YgMjAxNSAxNzozOTozMiArMDIwMCwg VmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+ID4gPj4gICAgCj4gPiA+ID4gPiA+PiA+IE9u IFR1ZSwgTm92IDE3LCAyMDE1IGF0IDAzOjA1OjM0UE0gKzAwMDAsIEpvaG4gS2VlcGluZwo+ID4g PiA+ID4gPj4gPiB3cm90ZTogICAgCj4gPiA+ID4gPiA+PiA+ID4gVGhlIHJlcXVlc3QncyBob3Rf eCBhbmQgaG90X3kgYXJlIHNldCBjb3JyZWN0bHkgZm9yIGJvdGgKPiA+ID4gPiA+ID4+ID4gPiBE Uk1fSU9DVExfTU9ERV9DVVJTT1IgYW5kIERSTV9JT0NUTF9NT0RFX0NVUlNPUjIgc28gd2UKPiA+ ID4gPiA+ID4+ID4gPiBqdXN0IG5lZWQgdG8gc2F2ZSB0aGUgdmFsdWVzIGFuZCB0aGVuIGFwcGx5 IHRoZSBvZmZzZXQKPiA+ID4gPiA+ID4+ID4gPiB0byB0aGUgY3Vyc29yIHBsYW5lIHdoZW4gdGhl IGN1cnNvciBtb3Zlcy4KPiA+ID4gPiA+ID4+ID4gPgo+ID4gPiA+ID4gPj4gPiA+IFNpZ25lZC1v ZmYtYnk6IEpvaG4gS2VlcGluZyA8am9obkBtZXRhbmF0ZS5jb20+Cj4gPiA+ID4gPiA+PiA+ID4g LS0tCj4gPiA+ID4gPiA+PiA+ID4gdjI6Cj4gPiA+ID4gPiA+PiA+ID4gICAtIGFkZCBrZXJuZWxk b2MgZm9yIGhvdF94IGFuZCBob3RfeSBpbiBzdHJ1Y3QgZHJtX2NydGMKPiA+ID4gPiA+ID4+ID4g Pgo+ID4gPiA+ID4gPj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyB8IDExICsrKysr KystLS0tCj4gPiA+ID4gPiA+PiA+ID4gIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgIHwgIDYg KysrKysrCj4gPiA+ID4gPiA+PiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4+ID4gPgo+ID4gPiA+ID4gPj4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+ID4gPiA+ID4gPj4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjLmMgaW5kZXggNzIwYTE1My4uNDBmNWI4NAo+ID4gPiA+ID4g Pj4gPiA+IDEwMDY0NCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+ID4gPiA+ID4g Pj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gPiA+ID4gPiA+PiA+ID4g QEAgLTI4MzEsNiArMjgzMSw5IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4+ID4gPiBkcm1fbW9k ZV9jdXJzb3JfdW5pdmVyc2FsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4+ID4g PiBEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gd3JhcCBjdXJzb3IgYnVmZmVyIGluIGRybQo+ID4g PiA+ID4gPj4gPiA+IGZyYW1lYnVmZmVyXG4iKTsgcmV0dXJuIFBUUl9FUlIoZmIpOyB9Cj4gPiA+ ID4gPiA+PiA+ID4gKwo+ID4gPiA+ID4gPj4gPiA+ICsgICAgICAgICAgICAgICAgIGNydGMtPmhv dF94ID0gcmVxLT5ob3RfeDsKPiA+ID4gPiA+ID4+ID4gPiArICAgICAgICAgICAgICAgICBjcnRj LT5ob3RfeSA9IHJlcS0+aG90X3k7Cj4gPiA+ID4gPiA+PiA+ID4gICAgICAgICAgIH0gZWxzZSB7 Cj4gPiA+ID4gPiA+PiA+ID4gICAgICAgICAgICAgICAgICAgZmIgPSBOVUxMOwo+ID4gPiA+ID4g Pj4gPiA+ICAgICAgICAgICB9Cj4gPiA+ID4gPiA+PiA+ID4gQEAgLTI4NDEsMTEgKzI4NDQsMTEg QEAgc3RhdGljIGludAo+ID4gPiA+ID4gPj4gPiA+IGRybV9tb2RlX2N1cnNvcl91bml2ZXJzYWwo c3RydWN0IGRybV9jcnRjICpjcnRjLCB9Cj4gPiA+ID4gPiA+PiA+ID4KPiA+ID4gPiA+ID4+ID4g PiAgIGlmIChyZXEtPmZsYWdzICYgRFJNX01PREVfQ1VSU09SX01PVkUpIHsKPiA+ID4gPiA+ID4+ ID4gPiAtICAgICAgICAgY3J0Y194ID0gcmVxLT54Owo+ID4gPiA+ID4gPj4gPiA+IC0gICAgICAg ICBjcnRjX3kgPSByZXEtPnk7Cj4gPiA+ID4gPiA+PiA+ID4gKyAgICAgICAgIGNydGNfeCA9IHJl cS0+eCAtIGNydGMtPmhvdF94Owo+ID4gPiA+ID4gPj4gPiA+ICsgICAgICAgICBjcnRjX3kgPSBy ZXEtPnkgLSBjcnRjLT5ob3RfeTsKPiA+ID4gPiA+ID4+ID4gPiAgIH0gZWxzZSB7Cj4gPiA+ID4g PiA+PiA+ID4gLSAgICAgICAgIGNydGNfeCA9IGNydGMtPmN1cnNvcl94Owo+ID4gPiA+ID4gPj4g PiA+IC0gICAgICAgICBjcnRjX3kgPSBjcnRjLT5jdXJzb3JfeTsKPiA+ID4gPiA+ID4+ID4gPiAr ICAgICAgICAgY3J0Y194ID0gY3J0Yy0+Y3Vyc29yX3ggLSBjcnRjLT5ob3RfeDsKPiA+ID4gPiA+ ID4+ID4gPiArICAgICAgICAgY3J0Y195ID0gY3J0Yy0+Y3Vyc29yX3kgLSBjcnRjLT5ob3RfeTsg ICAgCj4gPiA+ID4gPiA+PiA+Cj4gPiA+ID4gPiA+PiA+IFdoeSBkb2VzIHRoZSBsb2NhdGlvbiBv ZiB0aGUgaG90c3BvdCBhZmZlY3QgdGhlIHBsYW5lCj4gPiA+ID4gPiA+PiA+IHBvc2l0aW9uPyAg ICAKPiA+ID4gPiA+ID4+Cj4gPiA+ID4gPiA+PiBob3Rfe3gseX0gc3BlY2lmeSB0aGUgbG9jYXRp b24gb2YgdGhlIGFjdGl2ZSBwaXhlbCB3aXRoaW4gdGhlCj4gPiA+ID4gPiA+PiBjdXJzb3IgcGxh bmUgYW5kIGN1cnNvcl97eCx5fSBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUKPiA+ID4gPiA+ ID4+IGFjdGl2ZSBwaXhlbCBvbiB0aGUgZGlzcGxheSBzbyB3ZSBuZWVkIHRvIG9mZnNldCB0aGUg cGxhbmUKPiA+ID4gPiA+ID4+IHBvc2l0aW9uIGluIG9yZGVyIGZvciB0aGUgYWN0aXZlIHBpeGVs IHRvIGJlIGluIHRoZSBjb3JyZWN0Cj4gPiA+ID4gPiA+PiBwbGFjZS4gICAgCj4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+IE5vcGUsIGhvdF94L3kgaXMganVzdCBmb3IgdmlydHVhbCBtYWNoaW5lcyB0 byBpbmRpY2F0ZSB3aGVyZQo+ID4gPiA+ID4gPiB0aGUgbG9naWNhbCBjdXJzb3IgcG9zaXRpb24g aXMgd2l0aGluIHRoZSBjdXJzb3IgcGxhbmUuIEl0Cj4gPiA+ID4gPiA+IHNob3VsZCBoYXZlIDIg ZWZmZWN0IG9uIGhvdyBzb21ldGhpbmcgaXMgZGlzcGxheWVkLiBBbmQgbm8sIEkKPiA+ID4gPiA+ ID4gaGF2ZSBhYnNvbHV0ZWx5IG5vIGlkZWEgd2h5IHJhZGVvbiBpcyBwdWxsaW5nIHNvbWUgdHJp Y2tzCj4gPiA+ID4gPiA+IGhlcmUsIHdoaWNoIGhhdmUgYmVlbiBhZGRlZCBpbgo+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiBjb21taXQgNzhiMWE2MDEwYjQ2YTY5YmNkNDdiNzIzYTgwZjkyNjkzZjI2 ZDE3Ygo+ID4gPiA+ID4gPiBBdXRob3I6IE1pY2hlbCBEw6RuemVyIDxtaWNoZWwuZGFlbnplckBh bWQuY29tPgo+ID4gPiA+ID4gPiBEYXRlOiAgIFR1ZSBOb3YgMTggMTg6MDA6MDggMjAxNCArMDkw MAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgZHJtL3JhZGVvbjogVXNlIGN1cnNvcl9zZXQy IGhvb2sgZm9yIGVuYWJsaW5nIC8gZGlzYWJsaW5nCj4gPiA+ID4gPiA+IHRoZSBIVyBjdXJzb3IK PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gTWljaGVsL0FsZXgsIGNhbiB5b3UgcGxlYXNlIHNoZWQg c29tZSBsaWdodCBvbnRvIHRoaXM/IHJhZGVvbgo+ID4gPiA+ID4gPiBpcyB0aGUgb25seSBkcml2 ZXIgZG9pbmcgdGhpcywgbWFraW5nIHRoaXMgaW50ZXJmYWNlCj4gPiA+ID4gPiA+IGluY29uc2lz dGVudC4gSXMgdGhlIGRkeCBkb2luZyBzb21ldGhpbmcgZnVubnkgY29tcGFyZWQgdG8KPiA+ID4g PiA+ID4gLW1vZGVzZXRpbmcgb3Igd2VzdG9uPwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBBdCBs ZWFzdCBhIHF1aWNrIGxvb2sgaW4gdGhlIC1hdGkgc291cmNlcyBkaWRuJ3QgZXZlbiBzaG93IGEK PiA+ID4gPiA+ID4gdXNlciBmb3IgdGhpcywgaXQncyBzdGlsbCB1c2luZyB0aGUgb2xkIGN1cnNv ciBpb2N0bC4gQW5kCj4gPiA+ID4gPiA+IHRoZXJlJ3Mgbm8gb3RoZXIgaW5kaWNhdGlvbiBpbiB0 aGUgY29tbWl0IG9mIGEgYnVnIG9yCj4gPiA+ID4gPiA+IGFueXRoaW5nLiBDYW4gd2UgcGVyaGFw cyBqdXN0IHJldmVydCB0aGlzPyAgICAKPiA+ID4gPiA+IAo+ID4gPiA+ID4gV2UgdXNlIHRoaXMg aXMgeGY4Ni12aWRlby1hdGkuICBTZWU6Cj4gPiA+ID4gPiBodHRwOi8vY2dpdC5mcmVlZGVza3Rv cC5vcmcveG9yZy9kcml2ZXIveGY4Ni12aWRlby1hdGkvY29tbWl0Lz9pZD1jOWY4ZjY0MmZkNDk1 OTM3NDAwNjE4YTRmYzI1ZWNhZTNmODg4OGZjCj4gPiA+ID4gPiBPdXIgaHcgY3Vyc29yIGhhcyBh IGhvdHNwb3QgcmVnaXN0ZXIgdGhhdCBuZWVkcyB0byBiZQo+ID4gPiA+ID4gcHJvZ3JhbW1lZCBm b3IgcHJvcGVyIG9wZXJhdGlvbi4gIEkgZG9uJ3QgcmVtZW1iZXIgdGhlIGRldGFpbHMKPiA+ID4g PiA+IG9mIHRoZSBzcGVjaWZpYyBidWcuIE1pY2hlbCBjYW4gcHJvdmlkZSBtb3JlIGluZm8uICAg IAo+ID4gPiA+IAo+ID4gPiA+IFllYWggSSB3YXMgYmxpbmQgYW5kIGRpZG4ndCBzcG90IHRoaXMu IEJ1dCBJIGNhbid0IGZpbmQgeW91cgo+ID4gPiA+IGhvdHNwb3QgY3Vyc29yIHJlZyAtIGl0J3Mg b25seSB1c2VkIHRvIGFkanVzdCB0aGUgeC95IG9mZnNldHMKPiA+ID4gPiAoc2ltaWxhciB0byBK b2huJ3MgcGF0Y2gpLiBBbmQgYW1kZ3B1IGRvZXNuJ3QgZG8gdGhpcyBhdCBhbGwsCj4gPiA+ID4g aXQncyBvbmx5IHJhZG9lbi5rby4gU3RpbGwgY29uZnVzZWQuICAKPiA+ID4gCj4gPiA+IEhhdmlu ZyBpbnZlc3RpZ2F0ZWQgYSBiaXQgbW9yZSwgSSB0aGluayB4c2VydmVyIGhhbmRsZXMgdGhlIGhv dHNwb3QKPiA+ID4gaXRzZWxmIHdpdGhvdXQgdXNpbmcgdGhlIGtlcm5lbCBob3RzcG90IGhhbmRs aW5nIGFuZCB4b3JnLXZpZGVvLXF4bAo+ID4gPiBjYXJlZnVsbHkgcmV2ZXJzZXMgdGhpcyBpbiBv cmRlciB0byB0YWtlIGFkdmFudGFnZSBvZgo+ID4gPiBkcm1Nb2RlU2V0Q3Vyc29yMigpLCBzbyB3 aXRoIFgxMSBkcml2ZXJzIHlvdSBkb24ndCBub3RpY2UgdGhhdCB0aGUKPiA+ID4ga2VybmVsIGhh bmRsaW5nIG9mIHRoaXMgaXMgYnJva2VuIGluIG5lYXJseSBhbGwgZHJpdmVycy4gIAo+ID4gCj4g PiBXaGVyZSBkaWQgeW91IHNwb3QgdGhpcyBjb2RlIGluIC1xeGw/IEFmYWljcyBpdCBoYXMgdGhl IGV4YWN0IHNhbWUKPiA+IGNvcHkgb2YgdGhlIHVzdWFsIGRybW1vZGUuYyBjb2RlIGFzIGV2ZXJ5 b25lIGVsc2UuIE5vIGFkanVzdG1lbnRzIG9mCj4gPiB4L3lob3Qgc2VlbXMgdG8gYmUgZ29pbmcg b24gdGhlcmUsIG5vciBpbiB0aGUgcXhsLmtvIGtlcm5lbCBkcml2ZXIuCj4gPiBPciBhdCBsZWFz dCBJIGRpZG4ndCBmaW5kIGl0Lgo+ID4gCj4gPiA+IEhlcmUncyBhIHNtYWxsIHRlc3QgcHJvZ3Jh bSB0aGF0IGRlbW9uc3RyYXRlcyB3aGV0aGVyIG9yIG5vdCBjdXJzb3IKPiA+ID4gaG90c3BvdHMg d29yay4gIFRoZXJlIHNob3VsZCBiZSBhIHNpbmdsZSBjb2xvcmVkIHBpeGVsIGltbWVkaWF0ZWx5 Cj4gPiA+IHRvIHRoZSBsZWZ0IG9mIHRoZSBwb2ludGVyIGJ1dCB3aXRoIGEgYnJva2VuIGRyaXZl ciB0aGUgd2hpdGUgcGl4ZWwKPiA+ID4gd2lsbCBiZSA2NCBwaXhlbHMgdG8gdGhlIGxlZnQgb2Yg dGhlIHBvaW50ZXIuICAKPiA+IAo+ID4gSXMgdGhlcmUgYWxzbyBhIHdheSB0byB0ZXN0IHRoaXMg d2l0aCBYPyBJbiB0aGUgZW5kIHRoYXQncyB3aGF0IHdpbGwKPiA+IG1hdHRlciBmb3IgbW9zdCBl bmQgdXNlcnMsIGFuZCBpZiB0aGVyZSdzIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyIGluCj4gPiB0 aGUgdmFyaW91cyBYIGRyaXZlcnMgd2UncmUgcmVhbGx5IHNjcmV3ZWQgKHNpbmNlIGVzc2VudGlh bGx5IHdlCj4gPiBjYW4ndCBldmVyIGZpeCBpdCBwcm9wZXJseSBmb3IgdGhlIGxlZ2FjeSBpb2N0 bCkuCj4gCj4gSSd2ZSBub3cgdGVzdGVkIHdpdGggWCBhbmQgUVhMIGFuZCBpdCBzZWVtcyB0aGF0 IHRoZSBidWcgaXMgaW4gdGhlIFFYTAo+IERSTSBkcml2ZXIsIHNpbmNlIHRoZSBjdXJzb3IgYXBw ZWFycyBpbiB0aGUgd3JvbmcgcGxhY2Ugd2hlbiB1c2luZyBib3RoCj4geG9yZy12aWRlby1xeGwg YW5kIHhvcmctdmlkZW8tbW9kZXNldHRpbmcuCj4gCj4gSSB0aGluayB3aGF0J3MgaGFwcGVuaW5n IGlzIHRoYXQgWCBhbmQgdGhlIERSTSBjdXJzb3IgaW9jdGxzIGFsd2F5cyB1c2UKPiBjdXJzb3Jf e3gseX0gYXMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0b3AtbGVmdCBvZiB0aGUgY3Vyc29yIGltYWdl LCBidXQKPiB0aGUgU1BJQ0UgcHJvdG9jb2wgdXNlcyBjdXJzb3Jfe3gseX0gYXMgdGhlIGxvY2F0 aW9uIG9mIHRoZSBhY3RpdmUgcGl4ZWwKPiBpbiB0aGUgY3Vyc29yIGltYWdlICh0aGUgc3BlY2lm aWNhdGlvbiBbMV0gdXNlcyB0aGUgdGVybSAicG9zaXRpb24gb2YKPiB0aGUgbW91c2UgcG9pbnRl ciIpLiAgU28gdGhpcyBwYXRjaCBpcyB3cm9uZyBhbmQgSSB3aXRoZHJhdyBpdC4KCll1cCwgeC95 IGJlaW5nIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnNvciBpbWFnZSBpcyBob3cgYWxs IG90aGVyCmRyaXZlcnMgd29yay4KCj4gVGhpcyBtZWFucyB0aGF0IHRoZSBRWEwgZHJpdmVyIG5l ZWRzIHRvIGFwcGx5IHRoZSBob3RzcG90IG9mZnNldCB0byB0aGUKPiBsb2NhdGlvbiB3aGVuZXZl ciBpdCBnZW5lcmF0ZWQgUVhMX0NVUlNPUl9TRVQgYW5kIFFYTF9DVVJTT1JfTU9WRQo+IGNvbW1h bmRzLgo+IAo+IFsxXSBodHRwOi8vd3d3LnNwaWNlLXNwYWNlLm9yZy9kb2NzL3NwaWNlX3Byb3Rv Y29sLnBkZgoKRXhjZWxsZW50IHRoYXQgd2UndmUgZmlndXJlZCB0aGlzIG91dC4gQ2FyZSB0byB3 cml0ZSBhIHBhdGNoIGZvciBxeGwgc2luY2UKeW91J3ZlIGZpZ3VyZWQgdGhpcyBhbGwgb3V0PwoK VGhhbmtzLCBEYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==