From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: Asynchronous eviction [WAS Re: [PATCH] drm/ttm: add minimum residency constraint for bo eviction] Date: Fri, 30 Nov 2012 16:07:54 -0500 Message-ID: <20121130210753.GC2111@gmail.com> References: <50B87EED.5020400@shipmail.org> <50B8E7FF.8050006@shipmail.org> <50B8F048.3060707@shipmail.org> <20121130180738.GA2111@gmail.com> <50B8FB68.4060605@shipmail.org> <20121130192542.GB2111@gmail.com> <50B918A5.9080802@shipmail.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f177.google.com (mail-qc0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 495A5E67EB for ; Fri, 30 Nov 2012 13:11:02 -0800 (PST) Received: by mail-qc0-f177.google.com with SMTP id u28so473358qcs.36 for ; Fri, 30 Nov 2012 13:11:01 -0800 (PST) Content-Disposition: inline In-Reply-To: <50B918A5.9080802@shipmail.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Thomas Hellstrom Cc: Jerome Glisse , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMzAsIDIwMTIgYXQgMDk6MzU6NDlQTSArMDEwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBPbiAxMS8zMC8yMDEyIDA4OjI1IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+ ID5PbiBGcmksIE5vdiAzMCwgMjAxMiBhdCAwNzozMTowNFBNICswMTAwLCBUaG9tYXMgSGVsbHN0 cm9tIHdyb3RlOgo+ID4+T24gMTEvMzAvMjAxMiAwNzowNyBQTSwgSmVyb21lIEdsaXNzZSB3cm90 ZToKPiA+Pj5PbiBGcmksIE5vdiAzMCwgMjAxMiBhdCAwNjo0MzozNlBNICswMTAwLCBUaG9tYXMg SGVsbHN0cm9tIHdyb3RlOgo+ID4+Pj5PbiAxMS8zMC8yMDEyIDA2OjE4IFBNLCBKZXJvbWUgR2xp c3NlIHdyb3RlOgo+ID4+Pj4+T24gRnJpLCBOb3YgMzAsIDIwMTIgYXQgMTI6MDggUE0sIFRob21h cyBIZWxsc3Ryb20gPHRob21hc0BzaGlwbWFpbC5vcmc+IHdyb3RlOgo+ID4+Pj4+Pk9uIDExLzMw LzIwMTIgMDU6MzAgUE0sIEplcm9tZSBHbGlzc2Ugd3JvdGU6Cj4gPj4+Pj4+Pk9uIEZyaSwgTm92 IDMwLCAyMDEyIGF0IDQ6MzkgQU0sIFRob21hcyBIZWxsc3Ryb20gPHRob21hc0BzaGlwbWFpbC5v cmc+Cj4gPj4+Pj4+Pndyb3RlOgo+ID4+Pj4+Pj4+T24gMTEvMjkvMjAxMiAxMDo1OCBQTSwgTWFy ZWsgT2zFocOhayB3cm90ZToKPiA+Pj4+Pj4+Pj5XaGF0IEkgdHJpZWQgdG8gcG9pbnQgb3V0IHdh cyB0aGF0IHRoZSBzeW5jaHJvbml6YXRpb24gc2hvdWxkbid0IGJlCj4gPj4+Pj4+Pj4+bmVlZGVk LCBiZWNhdXNlIHRoZSBDUFUgc2hvdWxkbid0IGRvIGFueXRoaW5nIHdpdGggdGhlIGNvbnRlbnRz IG9mCj4gPj4+Pj4+Pj4+ZXZpY3RlZCBidWZmZXJzLiBUaGUgR1BVIG1vdmVzIHRoZSBidWZmZXJz LCBub3QgdGhlIENQVS4gV2hhdCBkb2VzIHRoZQo+ID4+Pj4+Pj4+PkNQVSBkbyBiZXNpZGVzIHVw ZGF0aW5nIHNvbWUga2VybmVsIHN0cnVjdHVyZXM/Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+QWxz bywgYnVmZmVyIGRlbGV0aW9uIGlzIHNvbWV0aGluZyB3aGVyZSB5b3UgZG9uJ3QgbmVlZCB0byB3 YWl0IGZvcgo+ID4+Pj4+Pj4+PnRoZSBidWZmZXIgdG8gYmVjb21lIGlkbGUgaWYgeW91IGtub3cg dGhlIG1lbW9yeSBhcmVhIHdvbid0IGJlCj4gPj4+Pj4+Pj4+bWFwcGVkIGJ5IHRoZSBDUFUsIGV2 ZXIuIFRoZSBtZW1vcnkgY2FuIGJlIHJlY2xhaW1lZCByaWdodCBhd2F5LiBJdAo+ID4+Pj4+Pj4+ PndvdWxkIGJlIHRoZSBHUFUgdG8gbW92ZSBuZXcgZGF0YSBpbiBhbmQgb25jZSB0aGF0IGhhcHBl bnMsIHRoZSBvbGQKPiA+Pj4+Pj4+Pj5idWZmZXIgd2lsbCBiZSB0cml2aWFsbHkgaWRsZSwgYmVj YXVzZSBzaW5nbGUtcmluZyBHUFVzIGV4ZWN1dGUKPiA+Pj4+Pj4+Pj5jb21tYW5kcyBpbiBvcmRl ci4KPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj5NYXJlawo+ID4+Pj4+Pj4+QWN0dWFsbHkgYXN5bmNo cm9ub3VzIGV2aWN0aW9uIC8gZGVsZXRpb24gaXMgc29tZXRoaW5nIEkgaGF2ZSBiZWVuCj4gPj4+ Pj4+Pj5wcm90b3R5cGluZyBmb3IgYSB3aGlsZSBidXQgbmV2ZXIgZ290dGVuIGFyb3VuZCB0byBp bXBsZW1lbnQgaW4gVFRNOgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj5UaGVyZSBhcmUgYSBmZXcgbWlu b3IgY2F2ZWF0czoKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+V2l0aCBidWZmZXIgZGVsZXRpb24sIHdo YXQgeW91IHNheSBpcyB0cnVlIGZvciBmaXhlZCBtZW1vcnksIGJ1dCBub3QgZm9yCj4gPj4+Pj4+ Pj5UVAo+ID4+Pj4+Pj4+bWVtb3J5IHdoZXJlIHBhZ2VzIGFyZSByZWNsYWltZWQgYnkgdGhlIHN5 c3RlbSBhZnRlciBidWZmZXIgZGVzdHJ1Y3Rpb24uCj4gPj4+Pj4+Pj5UaGF0IG1lYW5zIHRoYXQg d2UgZG9uJ3QgaGF2ZSB0byB3YWl0IGZvciBpZGxlIHRvIGZyZWUgR1BVIHNwYWNlLCBidXQgd2UK PiA+Pj4+Pj4+Pm5lZWQgdG8gd2FpdCBiZWZvcmUgcGFnZXMgYXJlIGhhbmRlZCBiYWNrIHRvIHRo ZSBzeXN0ZW0uCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PlN3YXBvdXQgbmVlZHMgdG8gYWNjZXNzIHRo ZSBjb250ZW50cyBvZiBldmljdGVkIGJ1ZmZlcnMsIGJ1dAo+ID4+Pj4+Pj4+c3luY2hyb25pemlu Zwo+ID4+Pj4+Pj4+ZG9lc24ndCBuZWVkIHRvIGhhcHBlbiB1bnRpbCBqdXN0IGJlZm9yZSBzd2Fw b3V0Lgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj5NdWx0aS1yaW5nIC0gQ1BVIHN1cHBvcnQ6IElmIGFu b3RoZXIgcmluZyAvIGVuZ2luZSBvciB0aGUgQ1BVIGlzIGFib3V0IHRvCj4gPj4+Pj4+Pj5tb3Zl IGluIGJ1ZmZlciBjb250ZW50cyB0byBWUkFNIG9yIGEgR1BVIGFwZXJ0dXJlIHRoYXQgd2FzIHBy ZXZpb3VzbHkKPiA+Pj4+Pj4+PmV2aWN0ZWQgYnkgYW5vdGhlciByaW5nLCBpdCBuZWVkcyB0byBz eW5jIHdpdGggdGhhdCBldmljdGlvbiwgYnV0IGRvZXNuJ3QKPiA+Pj4+Pj4+Pmtub3cgd2hhdCBi dWZmZXIgb3IgZXZlbiB3aGljaCBidWZmZXJzIG9jY3VwaWVkIHRoZSBzcGFjZSBwcmV2aW91c2x5 Lgo+ID4+Pj4+Pj4+VHJpdmlhbGx5IG9uZSBjYW4gYXR0YWNoIGEgc3luYyBvYmplY3QgdG8gdGhl IG1lbW9yeSB0eXBlIG1hbmFnZXIgdGhhdAo+ID4+Pj4+Pj4+cmVwcmVzZW50cyB0aGUgbGFzdCBl dmljdGlvbiBmcm9tIHRoYXQgbWVtb3J5IHR5cGUsIGFuZCAqYW55KiBlbmdpbmUgKENQVQo+ID4+ Pj4+Pj4+b3IKPiA+Pj4+Pj4+PkdQVSkgdGhhdCBtb3ZlcyBidWZmZXIgY29udGVudHMgaW4gbmVl ZHMgdG8gb3JkZXIgdGhhdCBtb3ZlbWVudCB3aXRoCj4gPj4+Pj4+Pj5yZXNwZWN0Cj4gPj4+Pj4+ Pj50byB0aGF0IGZlbmNlLiBBcyB5b3Ugc2F5LCB3aXRoIGEgc2luZ2xlIHJpbmcgYW5kIG5vIENQ VSBmYWxsYmFja3MsIHRoYXQKPiA+Pj4+Pj4+Pm9yZGVyaW5nIGlzIGEgbm8tb3AsIGJ1dCBhbnkg Y29tbW9uIChub24tZHJpdmVyIGJhc2VkKSBpbXBsZW1lbnRhdGlvbgo+ID4+Pj4+Pj4+bmVlZHMK PiA+Pj4+Pj4+PnRvIHN1cHBvcnQgdGhpcy4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+QSBzaW5nbGUg ZmVuY2UgYXR0YWNoZWQgdG8gdGhlIG1lbW9yeSB0eXBlIG1hbmFnZXIgaXMgdGhlIHNpbXBsZXN0 Cj4gPj4+Pj4+Pj5zb2x1dGlvbiwKPiA+Pj4+Pj4+PmJ1dCBhIHNvbHV0aW9uIHdpdGggYSBmZW5j ZSBmb3IgZWFjaCBmcmVlIHJlZ2lvbiBpbiB0aGUgZnJlZSBsaXN0IGlzIGFsc28KPiA+Pj4+Pj4+ PnBvc3NpYmxlLiBUaGVuIFRUTSBuZWVkcyBhIGRyaXZlciBjYWxsYmFjayB0byBiZSBhYmxlIG9y ZGVyIGZlbmNlcyB3IHIgdAo+ID4+Pj4+Pj4+ZWNob3RoZXIuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+ Pi9UaG9tYXMKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj5SYWRlb24gYWxyZWFkeSBoYW5kbGUgbXVsdGkt cmluZyBhbmQgdHRtIGludGVyYWN0aW9uIHdpdGggd2hhdCB3ZSBjYWxsCj4gPj4+Pj4+PnNlbWFw aG9yZS4gU2VtYXBob3JlIGFyZSBjcmVhdGVkIHRvIHN5bmNocm9uaXplIHdpdGggZmVuY2UgYWNj cm9zcwo+ID4+Pj4+Pj5kaWZmZXJlbnQgcmluZy4gSSB0aGluayB0aGUgZWFzaWVzdCBzb2x1dGlv biBpcyB0byBqdXN0IHJlbW92ZSB0aGUgYm8KPiA+Pj4+Pj4+d2FpdCBpbiB0dG0gYW5kIGxldCBk cml2ZXIgaGFuZGxlIHRoaXMuCj4gPj4+Pj4+VGhlIHdhaXQgY2FuIGJlIHJlbW92ZWQsIGJ1dCBv bmx5IGNvbmRpdGlvbmVkIG9uIGEgZHJpdmVyIGZsYWcgdGhhdCBzYXlzIGl0Cj4gPj4+Pj4+c3Vw cG9ydHMgdW5zeW5jaHJvbm91cyBidWZmZXIgbW92ZXMuCj4gPj4+Pj4+Cj4gPj4+Pj4+VGhlIG11 bHRpLXJpbmcgY2FzZSBJJ20gdGFsa2luZyBhYm91dCBpczoKPiA+Pj4+Pj4KPiA+Pj4+Pj5SaW5n IDEgZXZpY3RzIGJ1ZmZlciBBLCBlbWl0cyBmZW5jZSAwCj4gPj4+Pj4+UmluZyAyIGV2aWN0cyBi dWZmZXIgQiwgZW1pdHMgZmVuY2UgMQo+ID4+Pj4+Pi4uT3RoZXIgZXZpY3Rpb24gdGFrZXMgcGxh Y2UgYnkgdmFyaW91cyByaW5ncywgcGVyaGFwcyBpbmNsdWRpbmcgcmluZyAxIGFuZAo+ID4+Pj4+ PnJpbmcgMi4KPiA+Pj4+Pj5SaW5nIDMgbW92ZXMgYnVmZmVyIEMgaW50byB0aGUgc3BhY2Ugd2hp Y2ggaGFwcGVucyBibyBiZSB0aGUgdW5pb24gb2YgdGhlCj4gPj4+Pj4+c3BhY2UgcHJldm91c2x5 IG9jY3VwaWVkIGJ1ZmZlciBBIGFuZCBidWZmZXIgQi4KPiA+Pj4+Pj4KPiA+Pj4+Pj5RdWVzdGlv biBpczogd2hpY2ggZmVuY2UgZG8geW91IHdhbnQgdG8gb3JkZXIgdGhpcyBtb3ZlIHdpdGg/Cj4g Pj4+Pj4+VGhlIGFuc3dlciBpcyB3aGljaGV2ZXIgb2YgZmVuY2UgMCBhbmQgMSBzaWduYWxzIGxh c3QuCj4gPj4+Pj4+Cj4gPj4+Pj4+SSB0aGluayBpdCdzIGEgcmVhc29uYWJsZSB0aGluZyBmb3Ig VFRNIHRvIGtlZXAgdHJhY2sgb2YgdGhpcywgYnV0IGluIG9yZGVyCj4gPj4+Pj4+dG8gZG8gc28g aXQgbmVlZHMgYSBkcml2ZXIgY2FsbGJhY2sgdGhhdAo+ID4+Pj4+PmNhbiBvcmRlciB0d28gZmVu Y2VzLCBhbmQgY2FuIG9yZGVyIGEgam9iIGluIHRoZSBjdXJyZW50IHJpbmcgdyByIHQgYSBmZW5j ZS4KPiA+Pj4+Pj5JbiByYWRlb24ncyBjYXNlIHRoYXQgZHJpdmVyIGNhbGxiYWNrCj4gPj4+Pj4+ d291bGQgcHJvYmFibHkgaW5zZXJ0IGEgYmFycmllciAvIHNlbWFwaG9yZS4gSW4gdGhlIGNhc2Ug b2Ygc2ltcGxlciBoYXJkd2FyZQo+ID4+Pj4+Pml0IHdvdWxkIHdhaXQgb24gb25lIG9mIHRoZSBm ZW5jZXMuCj4gPj4+Pj4+Cj4gPj4+Pj4+L1Rob21hcwo+ID4+Pj4+Pgo+ID4+Pj4+SSBkb24ndCB0 aGluayB3ZSBjYW4gb3JkZXIgZmVuY2UgZWFzaWx5IHdpdGggYSBjbGVhbiBhcGksIGkgd291bGQK PiA+Pj4+PnJhdGhlciBzZWUgdHRtIHByb3ZpZGUgYSBsaXN0IG9mIGZlbmNlIHRvIGRyaXZlciBh bmQgdGVsbCB0byB0aGUKPiA+Pj4+PmRyaXZlciBiZWZvcmUgbW92aW5nIHRoaXMgb2JqZWN0IGFs bCB0aGUgZmVuY2Ugb24gdGhpcyBsaXN0IG5lZWQgdG8gYmUKPiA+Pj4+PmNvbXBsZXRlZC4gSSB0 aGluayBpdCdzIGFzIGVhc3kgYXMgYXNzb2NpYXRpbmcgZmVuY2Ugd2l0aCBkcm1fbW0gKHdlbGwK PiA+Pj4+Pm5vdXZlYXUgYXMgaXRzIG93biBtbSBzdHVmZikgYnV0IGlkZWEgd291bGQgYmFzaWNs eSBiZSB0aGF0IGZlbmNlIGFyZQo+ID4+Pj4+Ym90aCBhc3NvY2lhdGVkIHdpdGggYm8gYW5kIHdp dGggbW0gb2JqZWN0IHNvIHlvdSBrbm93IHdoZW4gYSBzZWdtZW50Cj4gPj4+Pj5vZiBtZW1vcnkg aXMgaWRsZS9hdmFpbGFibGUgZm9yIHVzZS4KPiA+Pj4+Pgo+ID4+Pj4+Q2hlZXJzLAo+ID4+Pj4+ SmVyb21lCj4gPj4+PkhtbS4gQWdyZWVkIHRoYXQgd291bGQgc2F2ZSBhIGxvdCBvZiBiYXJyaWVy cy4KPiA+Pj4+Cj4gPj4+PkV2ZW4gaWYgVFRNIHRyYWNrcyBmZW5jZXMgYnkgZnJlZSBtbSByZWdp b25zIG9yIGEgc2luZ2xlIGZlbmNlIGZvcgo+ID4+Pj50aGUgd2hvbGUgbWVtb3J5IHR5cGUsIGl0 J3MgYSBzaW1wbGUgZmFjdCB0aGF0IGZlbmNlcyBmcm9tIHRoZSBzYW1lCj4gPj4+PnJpbmcgYXJl IHRyaXZpYWxseSBvcmRlcmVkLCB3aGljaCBtZWFucyBzdWNoIGEgbGlzdCBzaG91bGQgY29udGFp biBhdAo+ID4+Pj5tb3N0IGFzIG1hbnkgZmVuY2VzIGFzIHRoZXJlIGFyZSByaW5ncy4KPiA+Pj5Z ZXMsIG9uZSBmdW5jdGlvbiBjYWxsYmFjayBpcyBuZWVkZWQgdG8ga25vdyB3aGljaCBmZW5jZSBp cyBuZWNlc3NhcnksCj4gPj4+YWxzbyB0dG0gbmVlZHMgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJp bmdzIChub3RlIHRoYXQgaSB0aGluayBuZXdlcgo+ID4+Pmh3IHdpbGwgaGF2ZSBzb21ldGhpbmdz IGxpa2UgMTAyNCByaW5ncyBvciBldmVuIG1vcmUsIGV2ZW4gdG9kYXkgaHcKPiA+Pj5taWdodCBo YXZlIGFzIG1hbnkgYXMgaSB0aGluayBudmlkaWEgY2hhbm5lbCBpcyBwcmV0dHkgbXVjaCB3aGF0 IGkKPiA+Pj5kZWZpbmUgdG8gYmUgYSByaW5nKS4KPiA+Pj4KPiA+Pj5CdXQgaSB0aGluayBtb3N0 IGNhc2Ugd2lsbCBiZSBmZXcgZmVuY2UgYWNjcm9zcyBmZXcgcmluZ3MuIExpa2UgMQo+ID4+PnJp bmcgaXMgdGhlIGRtYSByaW5nIGFuZCB0aGVuIHlvdSBoYXZlIGEgcmluZyBmb3Igb25lIG9mIHRo ZSBHTAo+ID4+PmNvbnRleHQgdGhhdCB1c2luZyB0aGUgbWVtb3J5IGFuZCBhbm90aGVyIHJpbmcg Zm9yIHRoZSBuZXcgY29udGV4dAo+ID4+PnRoYXQgd2FudCB0byB1c2UgdGhlIG1lbW9yeS4KPiA+ Pj4KPiA+Pj4+U28sIHdoYXRldmVyIGFwcHJvYWNoIGlzIGNob3NlbiwgVFRNIG5lZWRzIHRvIGJl IGFibGUgdG8gZGV0ZXJtaW5lCj4gPj4+PnRoYXQgdHJpdmlhbCBvcmRlcmluZywgYW5kIEkgdGhp bmsgdGhlIHVwY29taW5nIGNyb3NzLWRldmljZSBmZW5jaW5nCj4gPj4+Pndvcmsgd2lsbCBmYWNl IHRoZSBleGFjdCBzYW1lIHByb2JsZW0uCj4gPj4+Pgo+ID4+Pj5NeSBwcm9wb3NlZCBvcmRlcmlu ZyBBUEkgd291bGQgbG9vayBzb21ldGhpbmcgbGlrZQo+ID4+Pj4KPiA+Pj4+c3RydWN0IGZlbmNl ICpvcmRlcl9mZW5jZXMoc3RydWN0IGZlbmNlICpmZW5jZV9hLCBzdHJ1Y3QgZmVuY2UKPiA+Pj4+ KmZlbmNlX2IsIGJvb2wgdHJpdmlhbF9vcmRlciwgYm9vbCBpbnRlcnJ1cHRpYmxlLCBib29sIG5v X3dhaXRfZ3B1KQo+ID4+Pj4KPiA+Pj4+UmV0dXJucyB3aGljaCBvZiB0aGUgZmVuY2VzIEBmZW5j ZV9hIGFuZCBAZmVuY2VfYiB0aGF0IHdoZW4KPiA+Pj4+c2lnbmFsZWQsIGd1YXJhbnRlZXMgdGhh dCBhbHNvIHRoZSBvdGhlcgo+ID4+Pj5mZW5jZSBoYXMgc2lnbmFsZWQuIElmIEBxdWlja19vcmRl ciBpcyB0cnVlLCBhbmQgdGhlIGRyaXZlciBjYW5ub3QKPiA+Pj4+dHJpdmlhbGx5IG9yZGVyIHRo ZSBmZW5jZXMsIGl0IG1heSByZXR1cm4gRVJSX1BUUigtRUFHQUlOKSwKPiA+Pj4+aWYgQGludGVy cnVwdGlibGUgaXMgdHJ1ZSwgYW55IHdhaXQgc2hvdWxkIGJlIHBlcmZvcm1lZAo+ID4+Pj5pbnRl cnJ1cHRpYmx5IGFuZCBpZiBub193YWl0X2dwdSBpcyB0cnVlLCB0aGUgZnVuY3Rpb24gaXMgbm90 Cj4gPj4+PmFsbG93ZWQgdG8gd2FpdCBvbiBncHUgYnV0IHNob3VsZCBpc3N1ZSBFUlJfUFRSKC1F QlVTWSkgaWYgaXQgbmVlZHMKPiA+Pj4+dG8gZG8gc28gdG8gb3JkZXIgZmVuY2VzLgo+ID4+Pj4K PiA+Pj4+KEhhcmR3YXJlIHdpdGhvdXQgc2VtYXBob3JlcyBjYW4ndCBvcmRlciBmZW5jZXMgd2l0 aG91dCB3YWl0aW5nIG9uIHRoZW0pLgo+ID4+Pj4KPiA+Pj4+VGhlIGxpc3QgYXBwcm9hY2ggeW91 IHN1Z2dlc3Qgd291bGQgdXNlIEB0cml2aWFsX29yZGVyID0gdHJ1ZSwKPiA+Pj4+U2luZ2xlIGZl bmNlIGFwcHJvYWNoIHdvdWxkIHVzZSBAdHJpdmlhbF9vcmRlciA9IGZhbHNlLgo+ID4+Pj4KPiA+ Pj4+QW5kIGEgZmlyc3Qgc2ltcGxlIGltcGxlbWVudGF0aW9uIGluIFRUTSB3b3VsZCBwZXJoYXBz IHVzZSB5b3VyIGxpc3QKPiA+Pj4+YXBwcm9hY2ggd2l0aCBhIHNpbmdsZSBsaXN0IGZvciB0aGUg d2hvbGUgbWVtb3J5IHR5cGUuCj4gPj4+Pgo+ID4+Pj4vVGhvbWFzCj4gPj4+SSB3b3VsZCByYXRo ZXIgYWRkIGEgY2FsbGJhY2sgbGlrZSA6Cj4gPj4+Cj4gPj4+dHRtX3JlZHVjZV9mZW5jZXModW5z aWduZWQgKm5mZW5jZXMsIGZlbmNlICoqZmVuY2VhcnJheSkKPiA+PkkgZG9uJ3QgYWdyZWUgaGVy ZS4gSSB0aGluayB0aGUgZmVuY2Ugb3JkZXIgZnVuY3Rpb24gaXMgbW9yZQo+ID4+dmVyc2F0aWxl IGFuZCBhIGdvb2QgYWJzdHJhY3Rpb24gdGhhdCBjYW4gYmUKPiA+PmFwcGxpZWQgaW4gYSBudW1i ZXIgb2YgY2FzZXMgdG8gdGhpcyBwcm9ibGVtLiBBbnl3YXkgd2Ugc2hvdWxkIHN5bmMKPiA+PnRo aXMgd2l0aCBNYWFydGVuIGFuZCBoaXMKPiA+PmZlbmNlIHdvcmsuIFRoZSBzYW1lIHByb2JsZW0g YXBwbGllcyB0byBhdHRhY2hpbmcgc2hhcmVkIGZlbmNlcyB0byBhIGJvLgo+ID5SYWRlb24gYWxy ZWFkeSBoYW5kbGUgdGhlIGJvIGNhc2Ugb24gbXVsdGktcmluZyBhbmQgaSB0aGluayBpdCBzaG91 bGQKPiA+YmUgbGVmdCB0byB0aGUgZHJpdmVyIHRvIGRvIHdoYXQgaXRzIG5lY2Vzc2FyeSB0aGVy ZS4KPiA+Cj4gPkkgZG9uJ3QgdGhpbmsgaGVyZSBtb3JlIHZlcnNhdGlsaXR5IGlzIGJhZCwgaW4g ZmFjdCBpIGFtIHByZXR0eSBzdXJlCj4gPnRoYXQgbm8gaHcgY2FuIGdpdmUgZmVuY2Ugb3JkZXJp bmcgYW5kIGkgYWxzbyB0aGluayB0aGF0IGlmIGRyaXZlciBoYXZlCj4gPnRvIHRyYWNrIG11bHRp LXJpbmcgZmVuY2Ugb3JkZXJpbmcgaXQgd2lsbCBqdXN0IHdhc3RlIHJlc291cmNlIGZvciBubwo+ ID5nb29kIHJlYXNvbnMuIEZvciB0cmFja2luZyB0aGF0IGluIHJhZGVvbiBpIHdpbGwgbmVlZCB0 byBrZWVwIGEgbGlzdAo+ID5vZiBzZW1hcGhvcmUgYW5kIGtub3dzIHdoaWNoIHNlbWFwaG9yZXMg aW5zdXJlIHN5bmNocm9uaXphdGlvbiBidHcKPiA+d2hpY2ggcmluZyBhbmQgZm9yIGVhY2ggd2hp Y2ggZmVuY2UgYXJlIGNvbmNlcm5lZCBqdXN0IHRoaW5raW5nIHRvIGl0Cj4gPml0IHdvdWxkIGJl IGEgbWVzc3kgZ3JhcGggd2l0aCB0b25zIG9mIG5vZGVzLgo+ID4KPiA+T2YgY291cnNlIGhlcmUg aSBhbSB0aGlua2luZyBpbiB0ZXJtIG9mIG5ld2VyIEdQVSB3aXRoIHRvbnMgb2YgcmluZ3MsCj4g PkdQVSB3aXRoIG9uZSByaW5nLCB3aGljaCBhcmUgYSB2YW5pc2hpbmcgY2F0ZWdvcnkgYXMgbmV3 ZXIgb3BlbmNsCj4gPnJlcXVpcmUgbW9yZSByaW5nLCBhcmUgZWFzeSB0byBoYW5kbGUgYnV0IGkg cmVhbGx5IGRvbid0IHRoaW5rIHdlCj4gPnNob3VsZCBkZXNpZ24gZm9yIHRob3NlLgo+IFRoZSBi aWdnZXN0IHByb2JsZW0gSSBzZWUgd2l0aCB0dG1fcmVkdWNlX2ZlbmNlcygpIGlzIHRoYXQgaXQg c2VlbXMKPiB0byBoYXZlIGhpZ2ggY29tcGxleGl0eSwgc2luY2UgaXQKPiBkb2Vzbid0IGtub3cg d2hpY2ggZmVuY2UgaXMgdGhlIG5ldyBvbmUuIEFuZCBpZiBpdCBkaWQsIGl0IHdvdWxkCj4gb25s eSBiZSBhIG11bHRpLWZlbmNlIHZlcnNpb24gb2YKPiBvcmRlcl9mZW5jZXModHJpdmlhbD10cnVl KS4KCkkgYW0gc3VyZSBhbGwgZHJpdmVyIHdpdGggbXVsdGktcmluZyB3aWxsIHN0b3JlIHJpbmcg aWQgaW4gdGhlcmUgZmVuY2UKc3RydWN0dXJlLCB0aGF0J3MgZnJvbSBteSBwb3YgYSByZXF1aXJl bWVudC4gU28gd2hlbiB5b3UgZ2V0IGEgbGlzdCBvZgpmZW5jZSB5b3UgZmlyc3QgZ28gb3ZlciBm ZW5jZSBvbiB0aGUgc2FtZSByaW5nIGFuZCBzbyBmYXIgYWxsIGZlbmNlCmltcGxlbWVudGF0aW9u IHVzZSBpbmNyZWFzaW5nIHNlcXVlbmNlIG51bWJlciBmb3IgZmVuY2UuIFNvIHJlZHVjaW5nCmJl Y29tZXMgYXMgZWFzeSBhcyBvbmx5IGxlYXZpbmcgdGhlIG1vc3QgcmVjZW50IGZlbmNlIGZvciBl YWNoIG9mIHRoZQpyaW5nIHdpdGggYW4gYWN0aXZlIGZlbmNlLiBBdCB0aGUgc2FtZSB0aW1lIGl0 IGNvdWxkIGNoZWNrIChhc3N1bWluZwppdCdzIGEgcXVpY2sgb3BlcmF0aW9uKSBpZiBmZW5jZSBp cyBhbHJlYWR5IHNpZ25hbGVkIG9yIG5vdC4KCkZvciByYWRlb24gdGhpcyBmdW5jdGlvbiB3b3Vs ZCBiZSB2ZXJ5IHNtYWxsLCBhIHNpbXBsZSBpbWJyaWNhdGVkIGxvb3AKd2l0aCBjb3VwbGUgdGVz dCBpbiB0aGUgbG9vcC4KIAo+ID5JIHRoaW5rIGhlcmUgd2Ugd2lsbCBoYXZlIHRvIGFncmVlIHRv IGRpc2FncmVlIGJ1dCBpIHNlZSBhIGZlbmNlIGFycmF5Cj4gPmFzIGEgcGVyZmVjdCBzb2x1dGlv biB0aGF0IGlzIGZsZXhpYmxlIGVub3VnaCBhbmQgdXNlIHRoZSBsZXNzIHJlc291cmNlCj4gPmJv dGggaW4gdGVybSBvZiBjcHUgdXNhZ2UgYW5kIG1lbW9yeSAoYXNzdW1pbmcgcHJvcGVyIGltcGxl bWVudGF0aW9uKS4KPiBJIHRob3VnaHQgaXQgd291bGQgYWx3YXlzIHJlcXVpcmUgbnJpbmdzKjgg Ynl0ZXMgb24gZWFjaCBtZW1vcnkgYmxvY2s/CgpBcyBpIHNhaWQgaSB0aGluayB0aGVyZSB3b24n dCBiZSBtdWNoIG1vcmUgdGhhbiAzLzQgcmluZyBvbiBhdmVyYWdlIGZvcgplYWNoIGJsb2NrIG9m IG1lbW9yeS4gU28gaWRlYSBpcyBwcm9iYWJseSB0byBhbGxvYyBmb3IgOHJpbmcgYW5kIHJlc2l6 ZQppbiByYXJlIGNhc2Ugd2hlcmUgd2UgbmVlZCBtb3JlLgoKSXQgc291bmQgdmVyeSB1bmxpa2Vs eSB0byBoYXZlIG1vcmUgdGhhbiAzLzQgcmluZ3Mgd2l0aCBhY3RpdmUgZmVuY2UKYXQgYW55IHBv aW50IGluIHRpbWUuIFlvdSB3b3VsZCBoYXZlIGEgZG1hIHJpbmcsIDNkIHJpbmcgZm9yIG9uZSBj bGllbnQsCm1heWJlIGEgM2QgcmluZyBmb3IgYW5vdGhlciBjbGllbnQsIHZpZGVvIGRlY29kZXIg cmluZy4gQWxzbyBkcml2ZXIgY2FuCmRvIG9wdGltaXphdGlvbiBsaWtlIHZpcnR1YWxpemluZyBm ZW5jZSBmb3IgZWFjaCBwYXJ0aXRpb24gb2YgdGhlIGdwdQp0aGlzIHdvdWxkIGRyYXN0aWNseSBy ZWR1Y2UgdGhlIG51bWJlciBvZiBmZW5jZSBsaWtlIDEgZm9yIGRtYSwgMSBmb3IKZWFjaCBwYXJ0 aXRpb24gb2YgZ3B1LCAxIGZvciB0aGUgdmlkZW8gZGVjb2RlciwgMSBmb3IgZGlzcGxheS4gR2l2 ZW4KdGhhdCB0aGVyZSBjYW4ndCBiZSB0aGF0IG1hbnkgcGFydGl0aW9uIChpIHRoaW5rIG9uIHJh ZGVvbiB5b3UgY2FuCm9ubHkgcGFydGl0aW9uIHBlciBDVSB3aGljaCBpcyBzb21ldGhpbmcgbGlr ZSA0IG9yIDgpLgoKSW4gb3RoZXIgd29yZCB3aGVuIHlvdSBoYXZlIG4gcmluZ3MgdGhhdCBkbyB3 b3JrcyBvbiBtIHBhcnRpdGlvbnMgb2YKdGhlIGdwdSB5b3Ugb25seSBuZWVkcyBtIGZlbmNlcyBj YXRlZ29yaWUgYXMgeW91IGtub3cgd29yayBvbiBlYWNoCnBhcnRpdGlvbiB3aWxsIGNvbXBsZXRl IGluIG9yZGVyLgoKPiA+Cj4gPkkgdGhpbmsgaGVyZSB0aGVyZSBzaG91bGQgYmUgYSBncmFudWxh cml0eSBzb21ldGhpbmcgbGlrZSBkb24ndCBtZXJnZSBibG9jawo+ID5vdmVyIDE2TSBvciBkb24n dCBtZXJnZSBibG9jayBpZiB0aGV5IGhhdmUgbW9yZSB0aGFuIE4gZmVuY2VzIGlmIG1lcmdlZAo+ ID50b2dldGhlci4gT2YgY291cnNlIGl0IG1lYW5zIGEgc3BlY2lhbCBhbGxvY2F0b3IgYnV0IGFz IG15IHdvcmsgb24gcmFkZW9uCj4gPm1lbW9yeSBwbGFjZW1lbnQgc2hvd3MgaSB0aGluayB0aGF0 IHRoZSB3aG9sZSB2cmFtIGJ1c2luZXNzICh3aGljaCBpcyByZWFsbHkKPiA+d2hlcmUgdGhlIG11 bHRpLWZlbmNlIHdpbGwgYmUgdXNlZCB0aGUgbW9zdCkgbmVlZHMgYSB3b3JrZXIgdGhyZWFkIHRo YXQKPiA+c2NoZWR1bGUgd29ya3MgZXZlcnkgbm93IGFuZCB0aGVuLCB0aGlzIHdvcmtlciB0aHJl YWQgY291bGQgYWxzbyBtZXJnZSBtbQo+ID53aGVuIGZlbmNlIGNvbXBsZXRlIC4uLgo+ID4KPiA+ QnV0IGkgcmVhbGx5IGRvbid0IHRoaW5rIHRoZXJlIHNob3VsZCBiZSBhIGxpc3QgZm9yIHRoZSB3 aG9sZSBtYW5hZ2VyLCB0aGluawo+ID5hYm91dCB0aGUgY2FzZSBvZiBhIHZlcnkgbG9uZyBjbCBy dW5uaW5nIGpvYiB0aGF0IGlzIHN0aWxsIHJ1bm5pbmcgYnV0IGFscmVhZHkKPiA+aGF2ZSBpdCdz IGV2aWN0aW9uIHNjaGVkdWxlZCBhbmQgaXQgbW0gdnJhbSBub2RlIG1hcmtlZCBhcyBmcmVlIHdp dGggYSBmZW5jZS4KPiA+SWYgd2UgaGF2ZSBhIGxpc3QgcGVyIG1hbmFnZXIgdGhhbiB2cmFtIGJl Y29tZXMgdW5hdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMKPiA+dGhpcyBjbCBqb2IgcnVucy4gSSBh bSB0aGlua2luZyBoZXJlIHRvIG5ld2VyIGNwdSB0aGF0IGNhbiBwYXJ0aXRpb24gdGhlcmUKPiA+ Y29tcHV0ZSB1bml0IChDTCAxLjIgc3BlYyBtYW5kYXRlIHRoYXQgaWlyYykgZm9yIGluc3RhbmNl IGJ0dyBjbCBhbmQgZ2wgc28gdGhlCj4gPmdwdSBzdGlsbCBjYW4gcnVuIG90aGVyIGpvYiB3aGls ZSB0aGlzIGNsIHRoaW5ncyBpcyBnb2luZyBvbi4KPiAKPiBZZWFoLCBJJ20gbm90IHNheWluZyB0 aGlzIGlzIGFuIGVmZmljaWVudCBzb2x1dGlvbi4gSSdtIHNheWluZyBpdCdzCj4gdGhlIHNpbXBs ZXN0IHNvbHV0aW9uLiBXZSBjYW4gbWFrZQo+IGEgZGF0YSBzdHJ1Y3R1cmUgYXJiaXRyYXJpbHkg YmlnIG91dCBvZiB0aGlzLCBvciBwZXJoYXBzIHByb3ZpZGUgYQo+IHNlbGVjdGlvbiBvZiBhbGdv cml0aG1zIHRvCj4gY2hvb3NlIGZyb20uCj4gCj4gL1Rob21hcwoKQ3VzdG9taXppbmcgZHJtX21t IHRvIGhhbmRsZSBkb2luZyBhbGxvY2F0aW9uIGZyb20gc2V2ZXJhbCBhZGphY2VudApibG9jayBk b2Vzbid0IHNvdW5kcyB0b28gY29tcGxleCwgd2UgY291bGQgaW50cm9kdWNlIHZpcnR1YWwgbW0K YmxvY2sgdGhhdCBncm91cCBhbGwgYWRqYWNlbnQgYmxvY2sgYW5kIGtlZXAgYW4gYXJyYXkgb2Yg ZmVuY2UKZm9yIGVhY2ggb2YgdGhlIHN1YmJsb2NrIHdpdGggYWN0aXZlIGZlbmNlLiBCdXQgeWVz IHRoaXMgY291bGQgYmUKZG9uZSBhcyBhIHNlY29uZCBzdGVwLgoKQ2hlZXJzLApKZXJvbWUKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK