From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] drm/atomic+msm: add helper to implement legacy dirtyfb Date: Wed, 4 Apr 2018 14:13:51 +0200 Message-ID: <20180404121351.GJ3881@phenom.ffwll.local> References: <20180403224225.26776-1-robdclark@gmail.com> <307adb15-412a-1fe2-f116-27fe5b4a657d@shipmail.org> <20180404084320.GA3881@phenom.ffwll.local> <20180404095604.GD3881@phenom.ffwll.local> <9b731e33-32fd-e7e7-952f-75b87ff26f8a@shipmail.org> <61931c2e-4c81-0d94-fd45-f4f7dd91cb13@shipmail.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <61931c2e-4c81-0d94-fd45-f4f7dd91cb13-4+hqylr40dJg9hUCZPvPmw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Thomas Hellstrom Cc: David Airlie , linux-arm-msm , Maarten Lankhorst , Linux Kernel Mailing List , dri-devel , Rob Clark , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , Sean Paul , Lukasz Spintzyk , Gustavo Padovan , Deepak Singh Rawat , freedreno , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= List-Id: linux-arm-msm@vger.kernel.org T24gV2VkLCBBcHIgMDQsIDIwMTggYXQgMDE6NDY6MzdQTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBPbiAwNC8wNC8yMDE4IDEyOjI4IFBNLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3Rl Ogo+ID4gT24gMDQvMDQvMjAxOCAxMTo1NiBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4g T24gV2VkLCBBcHIgMDQsIDIwMTggYXQgMTE6MTA6MDhBTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiA+ID4gPiBPbiAwNC8wNC8yMDE4IDEwOjQzIEFNLCBEYW5pZWwgVmV0dGVyIHdy b3RlOgo+ID4gPiA+ID4gT24gV2VkLCBBcHIgMDQsIDIwMTggYXQgMTA6MjI6MjFBTSArMDIwMCwg VGhvbWFzIEhlbGxzdHJvbSB3cm90ZToKPiA+ID4gPiA+ID4gSGksCj4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiBPbiAwNC8wNC8yMDE4IDA4OjU4IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4g PiA+ID4gPiA+IE9uIFdlZCwgQXByIDQsIDIwMTggYXQgMTI6NDIgQU0sIFJvYiBDbGFyawo+ID4g PiA+ID4gPiA+IDxyb2JkY2xhcmtAZ21haWwuY29tPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IEFk ZCBhbiBhdG9taWMgaGVscGVyIHRvIGltcGxlbWVudCBkaXJ0eWZiCj4gPiA+ID4gPiA+ID4gPiBz dXBwb3J0LsKgIFRoaXMgaXMgbmVlZGVkIHRvCj4gPiA+ID4gPiA+ID4gPiBzdXBwb3J0IERTSSBj b21tYW5kLW1vZGUgcGFuZWxzIHdpdGggeDExCj4gPiA+ID4gPiA+ID4gPiB1c2Vyc3BhY2UgKGll LiB3aGVuIHdlIGNhbid0Cj4gPiA+ID4gPiA+ID4gPiByZWx5IG9uIHBhZ2VmbGlwcyB0byB0cmln Z2VyIGEgZmx1c2ggdG8gdGhlIHBhbmVsKS4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gVG8gc2lnbmFsIHRvIHRoZSBkcml2ZXIgdGhhdCB0aGUgYXN5bmMgYXRvbWljIHVwZGF0ZSBu ZWVkcyB0bwo+ID4gPiA+ID4gPiA+ID4gc3luY2hyb25pemUgd2l0aCBmZW5jZXMsIGV2ZW4gdGhv dWdoIHRoZSBmYiBkaWRuJ3QgY2hhbmdlLCB0aGUKPiA+ID4gPiA+ID4gPiA+IGRybV9hdG9taWNf c3RhdGU6OmRpcnR5IGZsYWcgaXMgYWRkZWQuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiA+ID4g PiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ID4gQmFja2dyb3VuZDogdGhlcmUgYXJlIGEgbnVt YmVyIG9mIGRpZmZlcmVudAo+ID4gPiA+ID4gPiA+ID4gZm9sa3Mgd29ya2luZyBvbiBnZXR0aW5n Cj4gPiA+ID4gPiA+ID4gPiB1cHN0cmVhbSBrZXJuZWwgd29ya2luZyBvbiB2YXJpb3VzIGRpZmZl cmVudAo+ID4gPiA+ID4gPiA+ID4gcGhvbmVzL3RhYmxldHMgd2l0aCBxY29tCj4gPiA+ID4gPiA+ ID4gPiBTb0Mncy4uIG1hbnkgb2YgdGhlbSBoYXZlIGNvbW1hbmQgbW9kZSBwYW5lbHMsIHNvIHdl IGtpbmQgb2YgbmVlZCBhCj4gPiA+ID4gPiA+ID4gPiB3YXkgdG8gc3VwcG9ydCB0aGUgbGVnYWN5 IGRpcnR5ZmIgaW9jdGwgZm9yIHgxMSBzdXBwb3J0Lgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gPiBJIGtub3cgdGhlcmUgaXMgd29yayBvbiBhIHByb3ByZXIgbm9uLWxlZ2FjeSBhdG9t aWMgcHJvcGVydHkgZm9yCj4gPiA+ID4gPiA+ID4gPiB1c2Vyc3BhY2UgdG8gY29tbXVuaWNhdGUg ZGlydHktcmVjdChzKSB0byB0aGUga2VybmVsLCBzbyB0aGlzIGNhbgo+ID4gPiA+ID4gPiA+ID4g YmUgaW1wcm92ZWQgZnJvbSB0cmlnZ2VyaW5nIGEgZnVsbC1mcmFtZSBmbHVzaCBvbmNlIHRoYXQg aXMgaW4KPiA+ID4gPiA+ID4gPiA+IHBsYWNlLsKgIEJ1dCB3ZSBraW5kYSBuZWVkYSBhIHN0b3At Z2FwIHNvbHV0aW9uLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBJIGhhZCBjb25z aWRlcmVkIGFuIGluLWRyaXZlciBzb2x1dGlvbiBmb3IgdGhpcywgYnV0IHRoaW5ncyBnZXQgYQo+ ID4gPiA+ID4gPiA+ID4gYml0IHRyaWNreSBpZiB1c2Vyc3BhY2UgYW5kcyB1cCBjb21iaW5pbmcg ZGlydHlmYiBpb2N0bHMgd2l0aCBwYWdlLQo+ID4gPiA+ID4gPiA+ID4gZmxpcHMsIGJlY2F1c2Ug d2UgbmVlZCB0byBzeW5jaHJvbml6ZSBzZXR0aW5nCj4gPiA+ID4gPiA+ID4gPiB2YXJpb3VzIENU TC5GTFVTSCBiaXRzCj4gPiA+ID4gPiA+ID4gPiB3aXRoIHNldHRpbmcgdGhlIENUTC5TVEFSVCBi aXQuwqAgKGllLiByZWFsbHkgYWxsIHdlIG5lZWQgdG8gZG8gZm9yCj4gPiA+ID4gPiA+ID4gPiBj bWQgbW9kZSBwYW5lbHMgaXMgYmFuZyBDVEwuU1RBUlQsIGJ1dCBpcyB0aGlzIGVuZHMgdXAgcmFj aW5nIHdpdGgKPiA+ID4gPiA+ID4gPiA+IHBhZ2VmbGlwcyBzZXR0aW5nIEZMVVNIIGJpdHMsIHRo ZW4gYmFkIHRoaW5ncy4pwqAgVGhlIGVhc2llc3Qgc29sbgo+ID4gPiA+ID4gPiA+ID4gaXMgdG8g d3JhcCB0aGlzIHVwIGFzIGFuIGF0b21pYyBjb21taXQgYW5kIHJlbHkgb24gdGhlIHdvcmtlciB0 bwo+ID4gPiA+ID4gPiA+ID4gc2VyaWFsaXplIHRoaW5ncy7CoCBIZW5jZSBhZGRpbmcgYW4gYXRv bWljIGRpcnR5ZmIgaGVscGVyLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBJIGd1 ZXNzIGF0IGxlYXN0IHRoZSBoZWxwZXIsIHdpdGggc29tZSBzbWFsbCBhZGRpdGlvbiB0byB0cmFu c2xhdGUKPiA+ID4gPiA+ID4gPiA+IGFuZCBwYXNzLXRocnUgdGhlIGRpcnR5IHJlY3QocykgaXMg dXNlZnVsIHRvIHRoZQo+ID4gPiA+ID4gPiA+ID4gZmluYWwgYXRvbWljIGRpcnR5LQo+ID4gPiA+ ID4gPiA+ID4gcmVjdCBwcm9wZXJ0eSBzb2x1dGlvbi7CoCBEZXBlbmRpbmcgb24gaG93IGZhciBv ZmYgdGhhdCBpcywgYSBzdG9wLQo+ID4gPiA+ID4gPiA+ID4gZ2FwIHNvbHV0aW9uIGNvdWxkIGJl IHVzZWZ1bC4KPiA+ID4gPiA+ID4gPiBBZGRpbmcgTm9yYWxmLCB3aG8gaWlyYyBhbHJlYWR5IHBv c3RlZCB0aGUgZnVsbAo+ID4gPiA+ID4gPiA+IGRpcnR5IGhlbHBlcnMgYWxyZWFkeSBzb21ld2hl cmUuCj4gPiA+ID4gPiA+ID4gLURhbmllbAo+ID4gPiA+ID4gPiBJJ3ZlIGFza2VkIERlZXBhayB0 byBSRkMgdGhlIGNvcmUgY2hhbmdlcyBzdWdnZXN0ZWQgZm9yCj4gPiA+ID4gPiA+IHRoZSBmdWxs IGRpcnR5IGJsb2IKPiA+ID4gPiA+ID4gb24gZHJpLWRldmVsLiBJdCBidWlsZHMgb24gRGlzcGxh eUxpbmsncyBzdWdnZXN0aW9uLAo+ID4gPiA+ID4gPiB3aXRoIGEgc2ltcGxlIGhlbHBlciB0bwo+ ID4gPiA+ID4gPiBnZXQgdG8gdGhlIGRlc2lyZWQgY29vcmRpbmF0ZXMuCj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiBPbmUgdGhpbmcgdG8gcGVyaGFwcyBkaXNjdXNzIGlzIGhvdyB3ZSB3b3VsZCBs aWtlIHRvIGZpdCB0aGlzIHdpdGgKPiA+ID4gPiA+ID4gZnJvbnQtYnVmZmVyIHJlbmRlcmluZyBh bmQgdGhlIGRpcnR5IGlvY3RsLiBJbiB0aGUKPiA+ID4gPiA+ID4gcGFnZS1mbGlwIGNvbnRleHQs IHRoZQo+ID4gPiA+ID4gPiBkaXJ0eSByZWN0cywgbGlrZSBlZ2wncyBzd2FwYnVmZmVyX3dpdGhf ZGFtYWdlIGlzIGEgaGludAo+ID4gPiA+ID4gPiB0byByZXN0cmljdCB0aGUKPiA+ID4gPiA+ID4g ZGFtYWdlIHJlZ2lvbiB0aGF0IGNhbiBiZSBmdWxseSBpZ25vcmVkIGJ5IHRoZSBkcml2ZXIsIG5l dyBjb250ZW50IGlzCj4gPiA+ID4gPiA+IGluZGljYXRlZCBieSBhIG5ldyBmcmFtZWJ1ZmZlci4K PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFdlIGNvdWxkIGRvIHRoZSBzYW1lIGZvciBmcm9udGJ1 ZmZlciByZW5kZXJpbmc6IEVpdGhlcgo+ID4gPiA+ID4gPiBzZXQgYSBkaXJ0eSBmbGFnIGxpa2UK PiA+ID4gPiA+ID4geW91IGRvIGhlcmUsIG9yIHByb3ZpZGUgYSBjb250ZW50X2FnZSBzdGF0ZSBt ZW1iZXIuCj4gPiA+ID4gPiA+IFNpbmNlIHdlIGNsZWFyIHRoZSBkaXJ0eQo+ID4gPiA+ID4gPiBm bGFnIG9uIHN0YXRlIGNvcGllcywgSSBndWVzcyB0aGF0IHdvdWxkIGJlIHN1ZmZpY2llbnQuCj4g PiA+ID4gPiA+IFRoZSBibG9iIHJlY3RhbmdsZXMKPiA+ID4gPiA+ID4gd291bGQgdGhlbiBiZWNv bWUgYSBoaW50IHRvIHJlc3RyaWN0IHRoZSBkYW1hZ2UgcmVnaW9uLgo+ID4gPiA+ID4gSSdtIG5v dCBlbnRpcmVseSBmb2xsb3dpbmcgaGVyZSAtIEkgdGhvdWdodCBmb3IgZnJvbnRidWZmZXIKPiA+ ID4gPiA+IHJlbmRlcmluZyB0aGUKPiA+ID4gPiA+IGRpcnR5IHJlY3RzIGhhdmUgYWx3YXlzIGp1 c3QgYmVlbiBhIGhpbnQsIGFuZCB0aGF0IHRoZQo+ID4gPiA+ID4gZHJpdmVyIHdhcyBhbHdheXMK PiA+ID4gPiA+IGZyZWUgdG8gcmUtdXBsb2FkIHRoZSBlbnRpcmUgYnVmZmVyIHRvIHRoZSBzY3Jl ZW4uCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEFuZCB0aHJvdWdoIGEgaGVscGVyIGxpa2UgUm9iJ3Mg cHJvcG9zaW5nIGhlcmUgKGFuZCBoYXZlCj4gPiA+ID4gPiBmbG9hdGVkIGFyb3VuZCBpbgo+ID4g PiA+ID4gZGlmZmVyZW50IHZlcnNpb25zIGFscmVhZHkpIHdlJ2QgZXNzZW50aWFsbHkgbWFwIGEg ZnJvbnRidWZmZXIgZGlydHlmYgo+ID4gPiA+ID4gY2FsbCB0byBhIGZha2UgZmxpcCB3aXRoIGRp cnR5IHJlY3QuIE1hbnVhbCB1cGxvYWQgZHJpdmVycwo+ID4gPiA+ID4gYWxyZWFkeSBuZWVkIHRv Cj4gPiA+ID4gPiB1cGxvYWQgdGhlIGVudGlyZSBzY3JlZW4gaWYgdGhleSBnZXQgYSBmbGlwLCBz aW5jZSBzb21lIHVzZXJzcGFjZSB1c2VzCj4gPiA+ID4gPiB0aGF0IHRvIGZsdXNoIG91dCBmcm9u dGJ1ZmZlciByZW5kZXJpbmcgKGluc3RlYWQgb2YgY2FsbGluZyBkaXJ0eWZiKS4KPiA+ID4gPiA+ IAo+ID4gPiA+ID4gU28gZnJvbSB0aGF0IHBvdiB0aGUgbmV3IGRpcnR5IGZsYWcgaXMga2luZGEg bm90IG5lY2Vzc2FyeSBpbW8uCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gQW5vdGhlciBhcHByb2Fj aCB3b3VsZCBiZSB0byBoYXZlIHRoZSBwcmVzZW5jZSBvZiBkaXJ0eSByZWN0cyB3aXRob3V0Cj4g PiA+ID4gPiA+IGZyYW1lYnVmZmVyIGNoYW5nZSB0byBpbmRpY2F0ZSBmcm9udGJ1ZmZlciByZW5k ZXJpbmcuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBJIHRoaW5rIEkgbGlrZSB0aGUgZmlyc3Qg YXBwcm9hY2ggYmVzdCwgYWx0aG91Z2ggaXQgbWF5Cj4gPiA+ID4gPiA+IGJlIHRlbXB0aW5nIGZv cgo+ID4gPiA+ID4gPiB1c2VyLXNwYWNlIGFwcHMgdG8ganVzdCBzZXQgdGhlIGRpcnR5IGJpdCBp bnN0ZWFkIG9mCj4gPiA+ID4gPiA+IHByb3ZpZGluZyB0aGUgZnVsbAo+ID4gPiA+ID4gPiBkYW1h Z2UgcmVnaW9uLgo+ID4gPiA+ID4gT3IgSSdtIG5vdCBmb2xsb3dpbmcgeW91IGhlcmUsIGJlY2F1 c2UgSSBkb24ndCBxdWl0ZSBzZWUgdGhlCj4gPiA+ID4gPiBkaWZmZXJlbmNlCj4gPiA+ID4gPiBi ZXR3ZWVuIGRpcnR5ZmIgYW5kIGEgZmxpcC4KPiA+ID4gPiA+IC1EYW5pZWwKPiA+ID4gPiBPSywg bGV0IG1lIHJlcGhyYXNlOgo+ID4gPiA+IAo+ID4gPiA+IMKgRnJvbSB0aGUgZHJpdmVyJ3MgcG9p bnQtb2YtdmlldywgaW4gdGhlIGF0b21pYyB3b3JsZCwgbmV3Cj4gPiA+ID4gY29udGVudCBhbmQg dGhlCj4gPiA+ID4gbmVlZCBmb3IgbWFudWFsIHVwbG9hZCBpcyBpbmRpY2F0ZWQgYnkgYSBjaGFu Z2UgaW4gZmIgYXR0YWNoZWQKPiA+ID4gPiB0byB0aGUgcGxhbmUuCj4gPiA+ID4gCj4gPiA+ID4g V2l0aCBSb2IncyBwYXRjaCBoZXJlLCAoY29ycmVjdCBtZSBpZiBJJ20gd3JvbmcpIGluIGFkZGl0 aW9uIG5ldwo+ID4gPiA+IGNvbnRlbnQgYW5kCj4gPiA+ID4gdGhlIG5lZWQgZm9yIG1hbnVhbCB1 cGxvYWQgaXMgaWRlbnRpZmllZCBieSB0aGUgZGlydHkgZmxhZywKPiA+ID4gPiAoc2luY2UgdGhl IGZiCj4gPiA+ID4gc3RheXMgdGhlIHNhbWUgYW5kIHRoZSBkcml2ZXIgdGh1cyBuZXZlciBpZGVu dGlmaWVzIGEgcGFnZS1mbGlwKS4KPiA+ID4gSG0sIEknbSBub3QgZW50aXJlbHkgc3VyZSBSb2In cyBhcHByb2FjaCBpcyBjb3JyZWN0LiBJbW8gYSBwYWdlZmxpcAo+ID4gPiAoYXRvbWljIG9yIG5v dCkgc2hvdWxkIHJlc3VsdCBpbiB0aGUgZW50aXJlIGJ1ZmZlciBnZXR0aW5nIHVwbG9hZGVkLiBU aGUKPiA+ID4gZGlydHkgZmxhZyBpcyBraW5kYSByZWR1bmRhbnQsIGEgZmxpcCB3aXRoIHRoZSBz YW1lIGJ1ZmZlciB3b3JrcyB0aGUKPiA+ID4gc2FtZQo+ID4gPiB3YXkgYXMgYSBkaXJ0eWZiIHdp dGggdGhlIGVudGlyZSBidWZmZXIgYXMgdGhlIGRpcnR5IHJlY3RhbmdsZS4KPiA+ID4gCj4gPiA+ ID4gSW4gYm90aCB0aGVzZSBzaXR1YXRpb25zLCBjbGlwIHJlY3RzIGNhbiBwcm92aWRlIGEgaGlu dCB0byByZXN0cmljdCB0aGUKPiA+ID4gPiBkaXJ0eSByZWdpb24uCj4gPiA+ID4gCj4gPiA+ID4g Tm93IEkgd2FzIHRoaW5raW5nIGFib3V0IHRoZSBwcmVmZXJyZWQgd2F5IGZvciB1c2VyLXNwYWNl IHRvCj4gPiA+ID4gY29tbXVuaWNhdGUKPiA+ID4gPiBmcm9udCBidWZmZXIgcmVuZGVyaW5nIHRo cm91Z2ggdGhlIGF0b21pYyBpb2N0bDoKPiA+ID4gPiAKPiA+ID4gPiAxKSBFeHBvc2UgYSBkaXJ0 eSAob3IgY29udGVudF9hZ2UgcHJvcGVydHkpCj4gPiA+ID4gMikgQXR0YWNoIGEgY2xpcC1yZWN0 IGJsb2IgcHJvcGVydHkuCj4gPiA+ID4gMykgRmFrZSBhIHBhZ2UtZmxpcCBieSBwaW5nLXBvbmdp bmcgdHdvIGZyYW1lLWJ1ZmZlcnMgcG9pbnRpbmcKPiA+ID4gPiB0byB0aGUgc2FtZQo+ID4gPiA+ IHVuZGVybHlpbmcgYnVmZmVyIG9iamVjdC4KPiA+ID4gPiAKPiA+ID4gPiBBcmUgeW91IHNheWlu ZyB0aGF0IHBlb3BsZSBhcmUgYWxyZWFkeSB1c2luZyAzKSBhbmQgd2Ugc2hvdWxkCj4gPiA+ID4g a2VlcCB1c2luZwo+ID4gPiA+IHRoYXQ/Cj4gPiA+IEknbSBzYXlpbmcgdGhleSdyZSB1c2luZyAz YiksIGZsaXAgdGhlIHNhbWUgYnVmZmVyIHdyYXBwZWQgaW4gdGhlIHNhbWUKPiA+ID4gZHJtX2Zy YW1lYnVmZmVyLCBhbmQgZXhwZWN0IGl0IHRvIHdvcmsuCj4gPiA+IAo+ID4gPiBUaGUgb25seSBh ZHZhbnRhZ2UgZGlydHlmYiBoYXMgaXMgdGhhdCBpdCBhbGxvd3MgeW91IHRvIHN1cHBseSB0aGUK PiA+ID4gb3B0aW1pemVkIHVwbG9hZCByZWN0YW5nbGVzLCBidXQgYXQgdGhlIGNvc3Qgb2YgYSBm dW5ueSBhcGkgKGl0J3MKPiA+ID4gd29ya2luZwo+ID4gPiBvbiB0aGUgZmIsIG5vdCB0aGUgcGxh bmUvY3J0YyB5b3Ugd2FudCB0byB1cGxvYWQpIGFuZCBsYWNrIG9mCj4gPiA+IGRybV9ldmVudCB0 bwo+ID4gPiBjb25maXJtIHdoZW4gZXhhY3RseSB5b3UgdXBsb2FkZWQgeW91ciBzdHVmZi4gQnV0 IGltbyB0aGV5IHNob3VsZCBiZSB0aGUKPiA+ID4gc2FtZSB1bmRlcmx5aW5nIG9wZXJhdGlvbi4K PiA+ID4gCj4gPiA+IEFsc28gbm90ZSB0aGF0IGF0b21pYyBoZWxwZXJzIGRvbid0IG9wdGltaXpl IG91dCBwbGFuZSBmbGlwcyBmb3Igc2FtZQo+ID4gPiBidWZmZXJzLiBXZSBvbmx5IG9wdGltaXpl IG91dCBzb21lIG9mIHRoZSB3YWl0aW5nLCBpbiBhIGZhaWxlZAo+ID4gPiBhdHRlbXB0IGF0Cj4g PiA+IG1ha2luZyBjdXJzb3JzIHN0YWxsIGxlc3MsIGJ1dCB0aGF0J3Mgbm90IGZpeGVkIHdpdGgg dGhlIGFzeW5jIHBsYW5lCj4gPiA+IHVwZGF0ZSBzdHVmZi4gQW5kIHdlIGNhbiBvYnZpb3VzbHkg b3B0aW1pemUgb3V0IHRoZSBwcmVwYXJlL2NsZWFudXAKPiA+ID4gaG9va3MsCj4gPiA+IGJlY2F1 c2UgdGhlIGJ1ZmZlciBzaG91bGQgYmUgcGlubmVkIGFscmVhZHkuCj4gPiA+IAo+ID4gCj4gPiBJ J20gYSBiaXQgY29uZnVzZWQuCj4gPiAKPiA+IEFwcGFyZW50bHkgd2UgaGF2ZSBkaWZmZXJlbnQg b3BpbmlvbnMgaW4gd2hlbiBhbiB1cGxvYWRpbmcgZHJpdmVyIHNob3VsZAo+ID4gYXNzdW1lIGFs dGVyZWQgcGxhbmUgY29udGVudCBhbmQgdGhlIG5lZWQgZm9yIHJlLXVwbG9hZC4KPiA+IHZtd2dm eCBpcyBmcm9tIHdoYXQgSSBrbm93IGN1cnJlbnRseSBhc3N1bWluZyB0aGF0IHRoaXMgaGFwcGVu cyBvbmx5IG9uCj4gPiBjaGFuZ2VkIGZiIGF0dGFjaG1lbnQgKHdoYXQgd2UgY2FsbCBhIHBhZ2Ut ZmxpcCkgd2hlcmVhcyBpZiBJIHVuZGVyc3RhbmQKPiA+IHlvdSBjb3JyZWN0bHkgaXQgc2hvdWxk IGhhcHBlbiBvbiBlYWNoIGF0b21pYyBzdGF0ZSBjb21taXQ/Cj4gPiAKPiA+IElmIHdlIHNob3Vs ZCBhc3N1bWUgdGhlIGxhdHRlciwgdGhlbiBpdCBoYXMgb2RkIGltcGxpY2F0aW9ucywgbGV0J3Mg c2F5Cj4gPiB5b3UgaGF2ZSA4IHNjcmVlbnMgdXAsIGFuZCB5b3UgcGFuIG9uZSBvZiB0aGVtIG9u IHRoZSBsYXJnZSBmYiwgd2h5Cj4gPiB3b3VsZCB5b3UgdXBsb2FkIHRoZSBjb250ZW50cyBvZiB0 aGUgb3RoZXIgNz8KPiA+IAo+ID4gTGlrZXdpc2UgZm9yIGN1cnNvcnMswqAgd2h5IHdvdWxkIHlv dSB3YW50IHRvIHVwbG9hZCB0aGUgY3Vyc29yIGltYWdlIG9uCj4gPiBlYWNoIGN1cnNvciBtb3Zl Pwo+ID4gCj4gPiBTbyBpbiBteSBQT1csIG9wdGlvbiAxKSBpcyB0aGUgb3B0aW9uIHRoYXQgYWxp Z25zIHdpdGggdGhlIGN1cnJlbnQKPiA+IHZtd2dmeCBpbXBsZW1lbnRhdGlvbiBhbmQgZnJvbSB3 aGF0IEkgY2FuIHRlbGwsIHdoYXQgUm9iIGhhcyBpbXBsZW1lbnRlZAo+ID4gaW4gaGlzIHBhdGNo Lgo+ID4gCj4gCj4gSG1tLgo+IAo+IEFmdGVyIGRvaW5nIHNvbWUgYXBwYXJlbnRseSB3ZWxsIG5l ZWRlZCByZWFkaW5nIHVwIG9uIHRoZSBjb2RlIGl0IGxvb2tzIGxpa2UKPiB2bXdnZnggaXMgYWN0 dWFsbHkgZG9pbmcgYSBmdWxsIHVwbG9hZCBvbiBlYWNoIHBsYW5lIHN0YXRlIGNoYW5nZSwKPiBv bmx5IHRob3NlIHBsYW5lcyB0aGF0IGFjdHVhbGx5IGdvdCBjaGFuZ2VkIGFyZSByZWZlcmVuY2Vk IGluIHRoZSB1cGRhdGUuIFNvCj4gdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBwYW5uaW5nIGV4YW1w bGUsIGFzc3VtaW5nIHVzZXItc3BhY2UgaXMgc21hcnQgZW5vdWdoCj4gdG8gbGVhdmUgdGhlIHVu Y2hhbmdlZCBwbGFuZXMgLyBjcnRjcyBvdXQgb2YgdGhlIHVwZGF0ZS4KPiAKPiBIb3dldmVyLCB0 aGUgY3Vyc29yIGV4YW1wbGUgc3RpbGwgaG9sZHMsIGFuZCBJTUhPIHdlIHNob3VsZCBoYXZlIGEg YmV0dGVyCj4gd2F5IHRvIGRlZmluZSBjb250ZW50IGNoYW5nZSB0aGFuIHBsYW5lIHN0YXRlIHVw ZGF0ZS4uLgoKV2UncmUgZGVmaW5pdGVseSBpbmNvbnNpc3RlbnQgaGVyZS4gSSBndWVzcyBmb3Ig bWFudWFsIHVwbG9hZCBkcml2ZXJzIG9uCnJlYWwgaHcgcGFubmluZyBpc24ndCBhIG5vdGUtd29y dGh5IHNwZWNpYWwgY2FzZSwgc2luY2UgaWYgeW91IHBhbiB5b3UKbmVlZCB0byB1cGxvYWQgdGhl IGVudGlyZSBkYW1hZ2VkIGFyZWEgb24gdGhlIHNjcmVlbiBhbnl3YXkuIEJ1dCB2aXJ0dWFsCmh3 IGRyaXZlcnMgbGlrZSB2bXdnZnggYXJlIGRpZmZlcmVudCB0aGlzIHdheSwgc2luY2UgcGFubmlu ZyBvbmx5IG1lYW5zCnlvdSB0cmFuc21pdCB0aGUgbmV3IHBvc2l0aW9uIHRvIHRoZSBob3N0IGRy aXZlciwgYnV0IGRvbid0IGhhdmUgdG8gdXBsb2FkCnRoZSBlbnRpcmUgdGhpbmcuCgpBbmQgdGhl IGxlZ2FjeSBjdXJzb3IgaW9jdGwgc2VlbXMgdG8gYmUgdGhlIG9ubHkgdGhpbmcgd2l0aCB0aGF0 CmV4cGVjdGF0aW9uIChhbHRob3VnaCBJIHRoaW5rIGZ1bm55IGV4cGVyaW1lbnRzIG9uIGk5MTUg dXNlZCBncHUKcmVuZGVyaW5nIGZvciB0aGF0IHRvbykuCgpTaW1wbHkgZm9yIHJvYnVzdG5lc3Mg cmVhc29ucyBJJ2Qgc2F5IHRoYXQgd2l0aCBtYXliZSB0aGUgZXhjZXB0aW9uIG9mCmN1cnNvcnMs IHdlIHNob3VsZCBhc3N1bWUgdGhhdCBhIGZsaXAgbXVzdCB1cGxvYWQgdGhlIGVudGlyZSBidWZm ZXIgdGhhdCdzCmdldHRpbmcgZmxpcHBlZCwgc2luY2UgdGhhdCdzIGhvdyBpdCB3b3JrcyBvbiBt b3N0IGRyaXZlcnMuCgpBbmQgdGhlbiB3ZSBjYW4gYWRkIHRoZSBkaXJ0eSByZWN0YW5nbGUgc3R1 ZmYgc28gdGhhdCBjbGV2ZXIgdXNlcnNwYWNlIGFuZApjbGV2ZXIgZHJpdmVzIGNhbiBvcHRpbWl6 ZSB0aGlzIGFsbCBhZ2Fpbi4gQW5kIHByZWZlcnJhYmx5IHRoZSBjdXJzb3IKdHJpY2sgd291bGQg YmUgaW1wbGVtZW50ZWQgYnkgaGF2aW5nIGFuIGVtcHR5IGRpcnR5IHJlY3QsIGluc3RlYWQgb2Yg b25lCnRoYXQgc3BhbnMgdGhlIGVudGlyZSBmYi4KLURhbmllbAoKPiAKPiAvVGhvbWFzCj4gCj4g Cj4gCj4gPiAvVGhvbWFzCj4gPiAKPiA+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxp c3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=