From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: Asynchronous eviction [WAS Re: [PATCH] drm/ttm: add minimum residency constraint for bo eviction] Date: Fri, 30 Nov 2012 19:31:04 +0100 Message-ID: <50B8FB68.4060605@shipmail.org> References: <50B71714.4060802@shipmail.org> <50B7C6A4.2090306@shipmail.org> <50B87EED.5020400@shipmail.org> <50B8E7FF.8050006@shipmail.org> <50B8F048.3060707@shipmail.org> <20121130180738.GA2111@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from GOTHNET-SMTP2.gothnet.se (ns2.gothnet.se [82.193.160.251]) by gabe.freedesktop.org (Postfix) with ESMTP id C7D91E694C for ; Fri, 30 Nov 2012 10:31:12 -0800 (PST) In-Reply-To: <20121130180738.GA2111@gmail.com> 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: Jerome Glisse Cc: Jerome Glisse , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMTEvMzAvMjAxMiAwNzowNyBQTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPiBPbiBGcmksIE5v diAzMCwgMjAxMiBhdCAwNjo0MzozNlBNICswMTAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+ PiBPbiAxMS8zMC8yMDEyIDA2OjE4IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4gT24gRnJp LCBOb3YgMzAsIDIwMTIgYXQgMTI6MDggUE0sIFRob21hcyBIZWxsc3Ryb20gPHRob21hc0BzaGlw bWFpbC5vcmc+IHdyb3RlOgo+Pj4+IE9uIDExLzMwLzIwMTIgMDU6MzAgUE0sIEplcm9tZSBHbGlz c2Ugd3JvdGU6Cj4+Pj4+IE9uIEZyaSwgTm92IDMwLCAyMDEyIGF0IDQ6MzkgQU0sIFRob21hcyBI ZWxsc3Ryb20gPHRob21hc0BzaGlwbWFpbC5vcmc+Cj4+Pj4+IHdyb3RlOgo+Pj4+Pj4gT24gMTEv MjkvMjAxMiAxMDo1OCBQTSwgTWFyZWsgT2zFocOhayB3cm90ZToKPj4+Pj4+PiBXaGF0IEkgdHJp ZWQgdG8gcG9pbnQgb3V0IHdhcyB0aGF0IHRoZSBzeW5jaHJvbml6YXRpb24gc2hvdWxkbid0IGJl Cj4+Pj4+Pj4gbmVlZGVkLCBiZWNhdXNlIHRoZSBDUFUgc2hvdWxkbid0IGRvIGFueXRoaW5nIHdp dGggdGhlIGNvbnRlbnRzIG9mCj4+Pj4+Pj4gZXZpY3RlZCBidWZmZXJzLiBUaGUgR1BVIG1vdmVz IHRoZSBidWZmZXJzLCBub3QgdGhlIENQVS4gV2hhdCBkb2VzIHRoZQo+Pj4+Pj4+IENQVSBkbyBi ZXNpZGVzIHVwZGF0aW5nIHNvbWUga2VybmVsIHN0cnVjdHVyZXM/Cj4+Pj4+Pj4KPj4+Pj4+PiBB bHNvLCBidWZmZXIgZGVsZXRpb24gaXMgc29tZXRoaW5nIHdoZXJlIHlvdSBkb24ndCBuZWVkIHRv IHdhaXQgZm9yCj4+Pj4+Pj4gdGhlIGJ1ZmZlciB0byBiZWNvbWUgaWRsZSBpZiB5b3Uga25vdyB0 aGUgbWVtb3J5IGFyZWEgd29uJ3QgYmUKPj4+Pj4+PiBtYXBwZWQgYnkgdGhlIENQVSwgZXZlci4g VGhlIG1lbW9yeSBjYW4gYmUgcmVjbGFpbWVkIHJpZ2h0IGF3YXkuIEl0Cj4+Pj4+Pj4gd291bGQg YmUgdGhlIEdQVSB0byBtb3ZlIG5ldyBkYXRhIGluIGFuZCBvbmNlIHRoYXQgaGFwcGVucywgdGhl IG9sZAo+Pj4+Pj4+IGJ1ZmZlciB3aWxsIGJlIHRyaXZpYWxseSBpZGxlLCBiZWNhdXNlIHNpbmds ZS1yaW5nIEdQVXMgZXhlY3V0ZQo+Pj4+Pj4+IGNvbW1hbmRzIGluIG9yZGVyLgo+Pj4+Pj4+Cj4+ Pj4+Pj4gTWFyZWsKPj4+Pj4+IEFjdHVhbGx5IGFzeW5jaHJvbm91cyBldmljdGlvbiAvIGRlbGV0 aW9uIGlzIHNvbWV0aGluZyBJIGhhdmUgYmVlbgo+Pj4+Pj4gcHJvdG90eXBpbmcgZm9yIGEgd2hp bGUgYnV0IG5ldmVyIGdvdHRlbiBhcm91bmQgdG8gaW1wbGVtZW50IGluIFRUTToKPj4+Pj4+Cj4+ Pj4+PiBUaGVyZSBhcmUgYSBmZXcgbWlub3IgY2F2ZWF0czoKPj4+Pj4+Cj4+Pj4+PiBXaXRoIGJ1 ZmZlciBkZWxldGlvbiwgd2hhdCB5b3Ugc2F5IGlzIHRydWUgZm9yIGZpeGVkIG1lbW9yeSwgYnV0 IG5vdCBmb3IKPj4+Pj4+IFRUCj4+Pj4+PiBtZW1vcnkgd2hlcmUgcGFnZXMgYXJlIHJlY2xhaW1l ZCBieSB0aGUgc3lzdGVtIGFmdGVyIGJ1ZmZlciBkZXN0cnVjdGlvbi4KPj4+Pj4+IFRoYXQgbWVh bnMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHdhaXQgZm9yIGlkbGUgdG8gZnJlZSBHUFUgc3BhY2Us IGJ1dCB3ZQo+Pj4+Pj4gbmVlZCB0byB3YWl0IGJlZm9yZSBwYWdlcyBhcmUgaGFuZGVkIGJhY2sg dG8gdGhlIHN5c3RlbS4KPj4+Pj4+Cj4+Pj4+PiBTd2Fwb3V0IG5lZWRzIHRvIGFjY2VzcyB0aGUg Y29udGVudHMgb2YgZXZpY3RlZCBidWZmZXJzLCBidXQKPj4+Pj4+IHN5bmNocm9uaXppbmcKPj4+ Pj4+IGRvZXNuJ3QgbmVlZCB0byBoYXBwZW4gdW50aWwganVzdCBiZWZvcmUgc3dhcG91dC4KPj4+ Pj4+Cj4+Pj4+PiBNdWx0aS1yaW5nIC0gQ1BVIHN1cHBvcnQ6IElmIGFub3RoZXIgcmluZyAvIGVu Z2luZSBvciB0aGUgQ1BVIGlzIGFib3V0IHRvCj4+Pj4+PiBtb3ZlIGluIGJ1ZmZlciBjb250ZW50 cyB0byBWUkFNIG9yIGEgR1BVIGFwZXJ0dXJlIHRoYXQgd2FzIHByZXZpb3VzbHkKPj4+Pj4+IGV2 aWN0ZWQgYnkgYW5vdGhlciByaW5nLCBpdCBuZWVkcyB0byBzeW5jIHdpdGggdGhhdCBldmljdGlv biwgYnV0IGRvZXNuJ3QKPj4+Pj4+IGtub3cgd2hhdCBidWZmZXIgb3IgZXZlbiB3aGljaCBidWZm ZXJzIG9jY3VwaWVkIHRoZSBzcGFjZSBwcmV2aW91c2x5Lgo+Pj4+Pj4gVHJpdmlhbGx5IG9uZSBj YW4gYXR0YWNoIGEgc3luYyBvYmplY3QgdG8gdGhlIG1lbW9yeSB0eXBlIG1hbmFnZXIgdGhhdAo+ Pj4+Pj4gcmVwcmVzZW50cyB0aGUgbGFzdCBldmljdGlvbiBmcm9tIHRoYXQgbWVtb3J5IHR5cGUs IGFuZCAqYW55KiBlbmdpbmUgKENQVQo+Pj4+Pj4gb3IKPj4+Pj4+IEdQVSkgdGhhdCBtb3ZlcyBi dWZmZXIgY29udGVudHMgaW4gbmVlZHMgdG8gb3JkZXIgdGhhdCBtb3ZlbWVudCB3aXRoCj4+Pj4+ PiByZXNwZWN0Cj4+Pj4+PiB0byB0aGF0IGZlbmNlLiBBcyB5b3Ugc2F5LCB3aXRoIGEgc2luZ2xl IHJpbmcgYW5kIG5vIENQVSBmYWxsYmFja3MsIHRoYXQKPj4+Pj4+IG9yZGVyaW5nIGlzIGEgbm8t b3AsIGJ1dCBhbnkgY29tbW9uIChub24tZHJpdmVyIGJhc2VkKSBpbXBsZW1lbnRhdGlvbgo+Pj4+ Pj4gbmVlZHMKPj4+Pj4+IHRvIHN1cHBvcnQgdGhpcy4KPj4+Pj4+Cj4+Pj4+PiBBIHNpbmdsZSBm ZW5jZSBhdHRhY2hlZCB0byB0aGUgbWVtb3J5IHR5cGUgbWFuYWdlciBpcyB0aGUgc2ltcGxlc3QK Pj4+Pj4+IHNvbHV0aW9uLAo+Pj4+Pj4gYnV0IGEgc29sdXRpb24gd2l0aCBhIGZlbmNlIGZvciBl YWNoIGZyZWUgcmVnaW9uIGluIHRoZSBmcmVlIGxpc3QgaXMgYWxzbwo+Pj4+Pj4gcG9zc2libGUu IFRoZW4gVFRNIG5lZWRzIGEgZHJpdmVyIGNhbGxiYWNrIHRvIGJlIGFibGUgb3JkZXIgZmVuY2Vz IHcgciB0Cj4+Pj4+PiBlY2hvdGhlci4KPj4+Pj4+Cj4+Pj4+PiAvVGhvbWFzCj4+Pj4+Pgo+Pj4+ PiBSYWRlb24gYWxyZWFkeSBoYW5kbGUgbXVsdGktcmluZyBhbmQgdHRtIGludGVyYWN0aW9uIHdp dGggd2hhdCB3ZSBjYWxsCj4+Pj4+IHNlbWFwaG9yZS4gU2VtYXBob3JlIGFyZSBjcmVhdGVkIHRv IHN5bmNocm9uaXplIHdpdGggZmVuY2UgYWNjcm9zcwo+Pj4+PiBkaWZmZXJlbnQgcmluZy4gSSB0 aGluayB0aGUgZWFzaWVzdCBzb2x1dGlvbiBpcyB0byBqdXN0IHJlbW92ZSB0aGUgYm8KPj4+Pj4g d2FpdCBpbiB0dG0gYW5kIGxldCBkcml2ZXIgaGFuZGxlIHRoaXMuCj4+Pj4gVGhlIHdhaXQgY2Fu IGJlIHJlbW92ZWQsIGJ1dCBvbmx5IGNvbmRpdGlvbmVkIG9uIGEgZHJpdmVyIGZsYWcgdGhhdCBz YXlzIGl0Cj4+Pj4gc3VwcG9ydHMgdW5zeW5jaHJvbm91cyBidWZmZXIgbW92ZXMuCj4+Pj4KPj4+ PiBUaGUgbXVsdGktcmluZyBjYXNlIEknbSB0YWxraW5nIGFib3V0IGlzOgo+Pj4+Cj4+Pj4gUmlu ZyAxIGV2aWN0cyBidWZmZXIgQSwgZW1pdHMgZmVuY2UgMAo+Pj4+IFJpbmcgMiBldmljdHMgYnVm ZmVyIEIsIGVtaXRzIGZlbmNlIDEKPj4+PiAuLk90aGVyIGV2aWN0aW9uIHRha2VzIHBsYWNlIGJ5 IHZhcmlvdXMgcmluZ3MsIHBlcmhhcHMgaW5jbHVkaW5nIHJpbmcgMSBhbmQKPj4+PiByaW5nIDIu Cj4+Pj4gUmluZyAzIG1vdmVzIGJ1ZmZlciBDIGludG8gdGhlIHNwYWNlIHdoaWNoIGhhcHBlbnMg Ym8gYmUgdGhlIHVuaW9uIG9mIHRoZQo+Pj4+IHNwYWNlIHByZXZvdXNseSBvY2N1cGllZCBidWZm ZXIgQSBhbmQgYnVmZmVyIEIuCj4+Pj4KPj4+PiBRdWVzdGlvbiBpczogd2hpY2ggZmVuY2UgZG8g eW91IHdhbnQgdG8gb3JkZXIgdGhpcyBtb3ZlIHdpdGg/Cj4+Pj4gVGhlIGFuc3dlciBpcyB3aGlj aGV2ZXIgb2YgZmVuY2UgMCBhbmQgMSBzaWduYWxzIGxhc3QuCj4+Pj4KPj4+PiBJIHRoaW5rIGl0 J3MgYSByZWFzb25hYmxlIHRoaW5nIGZvciBUVE0gdG8ga2VlcCB0cmFjayBvZiB0aGlzLCBidXQg aW4gb3JkZXIKPj4+PiB0byBkbyBzbyBpdCBuZWVkcyBhIGRyaXZlciBjYWxsYmFjayB0aGF0Cj4+ Pj4gY2FuIG9yZGVyIHR3byBmZW5jZXMsIGFuZCBjYW4gb3JkZXIgYSBqb2IgaW4gdGhlIGN1cnJl bnQgcmluZyB3IHIgdCBhIGZlbmNlLgo+Pj4+IEluIHJhZGVvbidzIGNhc2UgdGhhdCBkcml2ZXIg Y2FsbGJhY2sKPj4+PiB3b3VsZCBwcm9iYWJseSBpbnNlcnQgYSBiYXJyaWVyIC8gc2VtYXBob3Jl LiBJbiB0aGUgY2FzZSBvZiBzaW1wbGVyIGhhcmR3YXJlCj4+Pj4gaXQgd291bGQgd2FpdCBvbiBv bmUgb2YgdGhlIGZlbmNlcy4KPj4+Pgo+Pj4+IC9UaG9tYXMKPj4+Pgo+Pj4gSSBkb24ndCB0aGlu ayB3ZSBjYW4gb3JkZXIgZmVuY2UgZWFzaWx5IHdpdGggYSBjbGVhbiBhcGksIGkgd291bGQKPj4+ IHJhdGhlciBzZWUgdHRtIHByb3ZpZGUgYSBsaXN0IG9mIGZlbmNlIHRvIGRyaXZlciBhbmQgdGVs bCB0byB0aGUKPj4+IGRyaXZlciBiZWZvcmUgbW92aW5nIHRoaXMgb2JqZWN0IGFsbCB0aGUgZmVu Y2Ugb24gdGhpcyBsaXN0IG5lZWQgdG8gYmUKPj4+IGNvbXBsZXRlZC4gSSB0aGluayBpdCdzIGFz IGVhc3kgYXMgYXNzb2NpYXRpbmcgZmVuY2Ugd2l0aCBkcm1fbW0gKHdlbGwKPj4+IG5vdXZlYXUg YXMgaXRzIG93biBtbSBzdHVmZikgYnV0IGlkZWEgd291bGQgYmFzaWNseSBiZSB0aGF0IGZlbmNl IGFyZQo+Pj4gYm90aCBhc3NvY2lhdGVkIHdpdGggYm8gYW5kIHdpdGggbW0gb2JqZWN0IHNvIHlv dSBrbm93IHdoZW4gYSBzZWdtZW50Cj4+PiBvZiBtZW1vcnkgaXMgaWRsZS9hdmFpbGFibGUgZm9y IHVzZS4KPj4+Cj4+PiBDaGVlcnMsCj4+PiBKZXJvbWUKPj4KPj4gSG1tLiBBZ3JlZWQgdGhhdCB3 b3VsZCBzYXZlIGEgbG90IG9mIGJhcnJpZXJzLgo+Pgo+PiBFdmVuIGlmIFRUTSB0cmFja3MgZmVu Y2VzIGJ5IGZyZWUgbW0gcmVnaW9ucyBvciBhIHNpbmdsZSBmZW5jZSBmb3IKPj4gdGhlIHdob2xl IG1lbW9yeSB0eXBlLCBpdCdzIGEgc2ltcGxlIGZhY3QgdGhhdCBmZW5jZXMgZnJvbSB0aGUgc2Ft ZQo+PiByaW5nIGFyZSB0cml2aWFsbHkgb3JkZXJlZCwgd2hpY2ggbWVhbnMgc3VjaCBhIGxpc3Qg c2hvdWxkIGNvbnRhaW4gYXQKPj4gbW9zdCBhcyBtYW55IGZlbmNlcyBhcyB0aGVyZSBhcmUgcmlu Z3MuCj4gWWVzLCBvbmUgZnVuY3Rpb24gY2FsbGJhY2sgaXMgbmVlZGVkIHRvIGtub3cgd2hpY2gg ZmVuY2UgaXMgbmVjZXNzYXJ5LAo+IGFsc28gdHRtIG5lZWRzIHRvIGtub3cgdGhlIG51bWJlciBv ZiByaW5ncyAobm90ZSB0aGF0IGkgdGhpbmsgbmV3ZXIKPiBodyB3aWxsIGhhdmUgc29tZXRoaW5n cyBsaWtlIDEwMjQgcmluZ3Mgb3IgZXZlbiBtb3JlLCBldmVuIHRvZGF5IGh3Cj4gbWlnaHQgaGF2 ZSBhcyBtYW55IGFzIGkgdGhpbmsgbnZpZGlhIGNoYW5uZWwgaXMgcHJldHR5IG11Y2ggd2hhdCBp Cj4gZGVmaW5lIHRvIGJlIGEgcmluZykuCj4KPiBCdXQgaSB0aGluayBtb3N0IGNhc2Ugd2lsbCBi ZSBmZXcgZmVuY2UgYWNjcm9zcyBmZXcgcmluZ3MuIExpa2UgMQo+IHJpbmcgaXMgdGhlIGRtYSBy aW5nIGFuZCB0aGVuIHlvdSBoYXZlIGEgcmluZyBmb3Igb25lIG9mIHRoZSBHTAo+IGNvbnRleHQg dGhhdCB1c2luZyB0aGUgbWVtb3J5IGFuZCBhbm90aGVyIHJpbmcgZm9yIHRoZSBuZXcgY29udGV4 dAo+IHRoYXQgd2FudCB0byB1c2UgdGhlIG1lbW9yeS4KPgo+PiBTbywgd2hhdGV2ZXIgYXBwcm9h Y2ggaXMgY2hvc2VuLCBUVE0gbmVlZHMgdG8gYmUgYWJsZSB0byBkZXRlcm1pbmUKPj4gdGhhdCB0 cml2aWFsIG9yZGVyaW5nLCBhbmQgSSB0aGluayB0aGUgdXBjb21pbmcgY3Jvc3MtZGV2aWNlIGZl bmNpbmcKPj4gd29yayB3aWxsIGZhY2UgdGhlIGV4YWN0IHNhbWUgcHJvYmxlbS4KPj4KPj4gTXkg cHJvcG9zZWQgb3JkZXJpbmcgQVBJIHdvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UKPj4KPj4gc3Ry dWN0IGZlbmNlICpvcmRlcl9mZW5jZXMoc3RydWN0IGZlbmNlICpmZW5jZV9hLCBzdHJ1Y3QgZmVu Y2UKPj4gKmZlbmNlX2IsIGJvb2wgdHJpdmlhbF9vcmRlciwgYm9vbCBpbnRlcnJ1cHRpYmxlLCBi b29sIG5vX3dhaXRfZ3B1KQo+Pgo+PiBSZXR1cm5zIHdoaWNoIG9mIHRoZSBmZW5jZXMgQGZlbmNl X2EgYW5kIEBmZW5jZV9iIHRoYXQgd2hlbgo+PiBzaWduYWxlZCwgZ3VhcmFudGVlcyB0aGF0IGFs c28gdGhlIG90aGVyCj4+IGZlbmNlIGhhcyBzaWduYWxlZC4gSWYgQHF1aWNrX29yZGVyIGlzIHRy dWUsIGFuZCB0aGUgZHJpdmVyIGNhbm5vdAo+PiB0cml2aWFsbHkgb3JkZXIgdGhlIGZlbmNlcywg aXQgbWF5IHJldHVybiBFUlJfUFRSKC1FQUdBSU4pLAo+PiBpZiBAaW50ZXJydXB0aWJsZSBpcyB0 cnVlLCBhbnkgd2FpdCBzaG91bGQgYmUgcGVyZm9ybWVkCj4+IGludGVycnVwdGlibHkgYW5kIGlm IG5vX3dhaXRfZ3B1IGlzIHRydWUsIHRoZSBmdW5jdGlvbiBpcyBub3QKPj4gYWxsb3dlZCB0byB3 YWl0IG9uIGdwdSBidXQgc2hvdWxkIGlzc3VlIEVSUl9QVFIoLUVCVVNZKSBpZiBpdCBuZWVkcwo+ PiB0byBkbyBzbyB0byBvcmRlciBmZW5jZXMuCj4+Cj4+IChIYXJkd2FyZSB3aXRob3V0IHNlbWFw aG9yZXMgY2FuJ3Qgb3JkZXIgZmVuY2VzIHdpdGhvdXQgd2FpdGluZyBvbiB0aGVtKS4KPj4KPj4g VGhlIGxpc3QgYXBwcm9hY2ggeW91IHN1Z2dlc3Qgd291bGQgdXNlIEB0cml2aWFsX29yZGVyID0g dHJ1ZSwKPj4gU2luZ2xlIGZlbmNlIGFwcHJvYWNoIHdvdWxkIHVzZSBAdHJpdmlhbF9vcmRlciA9 IGZhbHNlLgo+Pgo+PiBBbmQgYSBmaXJzdCBzaW1wbGUgaW1wbGVtZW50YXRpb24gaW4gVFRNIHdv dWxkIHBlcmhhcHMgdXNlIHlvdXIgbGlzdAo+PiBhcHByb2FjaCB3aXRoIGEgc2luZ2xlIGxpc3Qg Zm9yIHRoZSB3aG9sZSBtZW1vcnkgdHlwZS4KPj4KPj4gL1Rob21hcwo+IEkgd291bGQgcmF0aGVy IGFkZCBhIGNhbGxiYWNrIGxpa2UgOgo+Cj4gdHRtX3JlZHVjZV9mZW5jZXModW5zaWduZWQgKm5m ZW5jZXMsIGZlbmNlICoqZmVuY2VhcnJheSkKCkkgZG9uJ3QgYWdyZWUgaGVyZS4gSSB0aGluayB0 aGUgZmVuY2Ugb3JkZXIgZnVuY3Rpb24gaXMgbW9yZSB2ZXJzYXRpbGUgCmFuZCBhIGdvb2QgYWJz dHJhY3Rpb24gdGhhdCBjYW4gYmUKYXBwbGllZCBpbiBhIG51bWJlciBvZiBjYXNlcyB0byB0aGlz IHByb2JsZW0uIEFueXdheSB3ZSBzaG91bGQgc3luYyB0aGlzIAp3aXRoIE1hYXJ0ZW4gYW5kIGhp cwpmZW5jZSB3b3JrLiBUaGUgc2FtZSBwcm9ibGVtIGFwcGxpZXMgdG8gYXR0YWNoaW5nIHNoYXJl ZCBmZW5jZXMgdG8gYSBiby4KCj4KPiBJbiB0aGUgdHRtIGJvIG1vdmUgY2FsbGJhY2sgeW91IHBy b3ZpZGUgdGhlIGxpc3QgbGlzdCBvZiBtbSBibG9jayAoZWFjaAo+IGhhdmluZyBpdHMgYXJyYXkg b2YgZmVuY2UpIGFuZCB0aGUgbW92ZSBjYWxsYmFjayBpcyByZXNwb25zaWJsZSB0bwo+IHVzZSB3 aGF0IGV2ZXIgbWVjYW5pc20gaXQgd2FudHMgdG8gcHJvcGVybHkgc2NoZWR1bGUgYW5kIHN5bmNo cm9uaXplIHRoZQo+IG1vdmUuCgpBZ3JlZWQuCgo+Cj4gT25lIHRoaW5nIGkgYW0gbm90IHN1cmUg aXMgc2hvdWxkIHdlIG1lcmdlIGZyZWUgbW0gYmxvY2sgYW5kIG1lcmdlL3JlZHVjZQo+IHRoZWly IGZlbmNlIGFycmF5IG9yIHNob3VsZCB3ZSBwcm92aWRlIGEgbGlzdCBvZiBtbSBibG9jayB0byB0 aGUgbW92ZQo+IGNhbGxiYWNrLiBJIHRoaW5rIGhlcmUgdGhlcmUgaXMgdHJhZGVvZmYgeW91IHBy b2JhYmx5IHdhbnQgdG8gbWVyZ2Ugc21hbGwKPiBtbSBibG9jayB1cCB0byBhIGNlcnRhaW4gcG9p bnQgYnV0IHlvdSBkb24ndCB3YW50IHRvIG1lcmdlIHNvIG11Y2ggdGhhdAo+IGFueSBhbGxvY2F0 aW9uIHdpbGwgaGF2ZSB0byB3YWl0IG9uIGEgemlsbGlvbnMgZmVuY2VzLgoKQXMgbWVudGlvbmVk IHByZXZpb3VzbHkgd2UgY2FuIGNob29zZSB0aGUgY29tcGxleGl0eSBoZXJlLCBidXQgdGhlIHNp bXBsZXN0CmFwcHJvYWNoIHdvdWxkIGJlIHRvIGhhdmUgYSBzaW5nbGUgbGlzdCBmb3IgdGhlIHdo b2xlIG1hbmFnZXIuCgpJIHRoaW5rIGlmIHdlIGRvbid0IG1lcmdlIG1tIGJsb2NrcyBpbW1lZGlh dGVseSB3aGVuIGZyZWVkLCB3ZSdyZSBnb2luZyAKdG8gdXNlCnVwIGEgbG90IG9mIHJlc291cmNl cy4KCgovVGhvbWFzCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==