From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Fri, 29 Mar 2019 09:16:59 -0400 Message-ID: <20190329131659.GO114153@art_vandelay> References: <20190326204509.96515-1-sean@poorly.run> <20190327181500.GP2665@phenom.ffwll.local> <20190328210303.GM114153@art_vandelay> <20190329082110.GA2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E9456E4B1 for ; Fri, 29 Mar 2019 13:17:02 +0000 (UTC) Received: by mail-qt1-x844.google.com with SMTP id x12so2447344qts.7 for ; Fri, 29 Mar 2019 06:17:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190329082110.GA2665@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel@lists.freedesktop.org, Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMjksIDIwMTkgYXQgMDk6MjE6MTBBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIE1hciAyOCwgMjAxOSBhdCAwNTowMzowM1BNIC0wNDAwLCBTZWFuIFBh dWwgd3JvdGU6Cj4gPiBPbiBXZWQsIE1hciAyNywgMjAxOSBhdCAwNzoxNTowMFBNICswMTAwLCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUdWUsIE1hciAyNiwgMjAxOSBhdCAwNDo0NDo1 NFBNIC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gPiA+ID4gRnJvbTogU2VhbiBQYXVsIDxzZWFu cGF1bEBjaHJvbWl1bS5vcmc+Cj4gPiA+ID4gCj4gPiA+ID4gVGhpcyBwYXRjaCBhZGRzIGEgbmV3 IGRybSBoZWxwZXIgbGlicmFyeSB0byBoZWxwIGRyaXZlcnMgaW1wbGVtZW50Cj4gPiA+ID4gc2Vs ZiByZWZyZXNoLiBEcml2ZXJzIGNob29zaW5nIHRvIHVzZSBpdCB3aWxsIHJlZ2lzdGVyIGNydGNz IGFuZAo+ID4gPiA+IHdpbGwgcmVjZWl2ZSBjYWxsYmFja3Mgd2hlbiBpdCdzIHRpbWUgdG8gZW50 ZXIgb3IgZXhpdCBzZWxmIHJlZnJlc2gKPiA+ID4gPiBtb2RlLgo+ID4gPiA+IAo+ID4gPiA+IElu IGl0cyBjdXJyZW50IGZvcm0sIGl0IGhhcyBhIHRpbWVyIHdoaWNoIHdpbGwgdHJpZ2dlciBhZnRl ciBhCj4gPiA+ID4gZHJpdmVyLXNwZWNpZmllZCBhbW91bnQgb2YgaW5hY3Rpdml0eS4gV2hlbiB0 aGUgdGltZXIgdHJpZ2dlcnMsIHRoZQo+ID4gPiA+IGhlbHBlcnMgd2lsbCBzdWJtaXQgYSBuZXcg YXRvbWljIGNvbW1pdCB0byBzaHV0IHRoZSByZWZyZXNoaW5nIHBpcGUKPiA+ID4gPiBvZmYuIE9u IHRoZSBuZXh0IGF0b21pYyBjb21taXQsIHRoZSBkcm0gY29yZSB3aWxsIHJldmVydCB0aGUgc2Vs Zgo+ID4gPiA+IHJlZnJlc2ggc3RhdGUgYW5kIGJyaW5nIGV2ZXJ5dGhpbmcgYmFjayB1cCB0byBi ZSBhY3RpdmVseSBkcml2ZW4uCj4gPiA+ID4gCj4gPiA+ID4gRnJvbSB0aGUgZHJpdmVyJ3MgcGVy c3BlY3RpdmUsIHRoaXMgd29ya3MgbGlrZSBhIHJlZ3VsYXIgZGlzYWJsZS9lbmFibGUKPiA+ID4g PiBjeWNsZS4gVGhlIGRyaXZlciBuZWVkIG9ubHkgY2hlY2sgdGhlICdzZWxmX3JlZnJlc2hfYWN0 aXZlJyBhbmQvb3IKPiA+ID4gPiAnc2VsZl9yZWZyZXNoX2NoYW5nZWQnIHN0YXRlIGluIGNydGNf c3RhdGUgYW5kIGNvbm5lY3Rvcl9zdGF0ZS4gSXQKPiA+ID4gPiBzaG91bGQgaW5pdGlhdGUgc2Vs ZiByZWZyZXNoIG1vZGUgb24gdGhlIHBhbmVsIGFuZCBlbnRlciBhbiBvZmYgb3IKPiA+ID4gPiBs b3ctcG93ZXIgc3RhdGUuCj4gPiA+ID4gCj4gPiA+ID4gQ2hhbmdlcyBpbiB2MjoKPiA+ID4gPiAt IHMvcHNyL3NlbGZfcmVmcmVzaC8gKERhbmllbCkKPiA+ID4gPiAtIGludGVncmF0ZWQgdGhlIHBz ciBleGl0IGludG8gdGhlIGNvbW1pdCB0aGF0IHdha2VzIGl0IHVwIChKb3NlL0RhbmllbCkKPiA+ ID4gPiAtIG1hZGUgdGhlIHBzciBzdGF0ZSBwZXItY3J0YyAoSm9zZS9EYW5pZWwpCj4gPiA+ID4g Cj4gPiA+ID4gTGluayB0byB2MTogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Bh dGNoL21zZ2lkLzIwMTkwMjI4MjEwOTM5LjgzMzg2LTItc2VhbkBwb29ybHkucnVuCj4gPiA+ID4g Cj4gPiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+ID4gPiBDYzog Sm9zZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+Cj4gPiA+ID4gQ2M6IFphaW4gV2FuZyA8 d3p6QHJvY2stY2hpcHMuY29tPgo+ID4gPiA+IENjOiBUb21hc3ogRmlnYSA8dGZpZ2FAY2hyb21p dW0ub3JnPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21p dW0ub3JnPgo+ID4gPiA+IC0tLQo+ID4gPiA+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhl bHBlcnMucnN0ICAgICB8ICAgOSArCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgIHwgICAzICstCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgICAgICAgICAgICAgIHwgICA0ICsKPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMgICAgICAgfCAgMzYgKysrLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyB8ICAgOCArCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljX3VhcGkuYyAgICAgICAgIHwgICA1ICstCj4gPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5jIHwgMjEyICsrKysrKysrKysrKysrKysrKysr KysKPiA+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oICAgICAgICAgICAgICAgICAgfCAg MTUgKysKPiA+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgICAgICAg fCAgMzEgKysrKwo+ID4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAgICAg ICAgICB8ICAxOSArKwo+ID4gPiA+ICBpbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBl ci5oICAgICB8ICAyMyArKysKPiA+ID4gPiAgMTEgZmlsZXMgY2hhbmdlZCwgMzYwIGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuYwo+ID4gPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaAo+ID4gPiA+IAoKL3Nu aXAKCj4gPiA+ID4gaW5kZXggNDk4NTM4NGU1MWY2Li5lYzkwYzUyN2RlZWQgMTAwNjQ0Cj4gPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiA+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ID4gPiA+ IEBAIC0xMDUsNiArMTA1LDEwIEBAIHZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxp Y2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gIAlzdGF0ZS0+Y29tbWl0 ID0gTlVMTDsKPiA+ID4gPiAgCXN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gPiA+ID4gIAlzdGF0ZS0+ cGFnZWZsaXBfZmxhZ3MgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIFNlbGYgcmVmcmVzaCBz aG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMgYXZhaWxhYmxlICovCj4gPiA+ ID4gKwlzdGF0ZS0+YWN0aXZlID0gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2ZShz dGF0ZSk7Cj4gPiA+ID4gKwlzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSA9IGZhbHNlOwo+ID4g PiA+ICB9Cj4gPiA+ID4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1 cGxpY2F0ZV9zdGF0ZSk7Cj4gPiA+ID4gIAo+ID4gPiA+IEBAIC0zNzAsNiArMzc0LDEwIEBAIF9f ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ICAKPiA+ID4gPiAgCS8qIERvbid0IGNvcHkgb3Zl ciBhIHdyaXRlYmFjayBqb2IsIHRoZXkgYXJlIHVzZWQgb25seSBvbmNlICovCj4gPiA+ID4gIAlz dGF0ZS0+d3JpdGViYWNrX2pvYiA9IE5VTEw7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogU2VsZiBy ZWZyZXNoIHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3IHVwZGF0ZSBpcyBhdmFpbGFibGUg Ki8KPiA+ID4gPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hfY2hhbmdlZCA9IHN0YXRlLT5zZWxmX3Jl ZnJlc2hfYWN0aXZlOwo+ID4gPiA+ICsJc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgPSBmYWxz ZTsKPiA+ID4gCj4gPiA+IFdoeSB0aGUgZHVwbGljYXRpb24gaW4gc2VsZi1yZWZyZXNoIHRyYWNr aW5nPyBDb25uZWN0b3JzIG5ldmVyIGhhdmUgYQo+ID4gPiBkaWZmZXJlbnQgc2VsZi1yZWZyZXNo IHN0YXRlLCBhbmQgeW91IGNhbiBhbHdheXMgbG9vayBhdCB0aGUgcmlnaHQKPiA+ID4gY3J0Y19z dGF0ZS4gRHVwbGljYXRpb24ganVzdCBnaXZlcyB1cyB0aGUgY2hhbmNlIHRvIHNjcmV3IHVwIGFu ZCBnZXQgb3V0Cj4gPiA+IG9mIHN5bmMgKGUuZy4gaWYgdGhlIGNydGMgZm9yIGEgY29ubmVjdG9y IGNoYW5nZXMpLgo+ID4gPiAKPiA+IAo+ID4gT24gZGlzYWJsZSB0aGUgY3J0YyBpcyBjbGVhcmVk IGZyb20gY29ubmVjdG9yX3N0YXRlLCBzbyB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0bwo+ID4gaXQu IElmIEkgYWRkIHRoZSBhcHByb3ByaWF0ZSBhdG9taWNfZW5hYmxlL2Rpc2FibGUgaG9va3MgYXMg c3VnZ2VzdGVkIGJlbG93LCB3ZQo+ID4gc2hvdWxkIGJlIGFibGUgdG8gbnVrZSB0aGVzZS4KPiAK PiBZZWFoIHdlJ2QgbmVlZCB0aGUgb2xkIHN0YXRlIHRvIGxvb2sgYXQgdGhlIGNydGMgYW5kIGFs bCB0aGF0LiBXaGljaCBpcyBhCj4gbG90IG1vcmUgdHJpY2tpZXIuCj4gCj4gU2luY2UgaXQncyBz dWNoIGEgc3BlY2lhbCBjYXNlLCBzaG91bGQgd2UgaGF2ZSBhIGRlZGljYXRlZCBjYWxsYmFjayBm b3IKPiB0aGUgZGlyZWN0IHNlbGYtcmVmcmVzaCAtPiBjb21wbGV0ZWx5IG9mZiB0cmFuc2l0aW9u PyBJdCdsbCBiZSBhc3ltZXRyaWMsCj4gYnV0IHRoYXQncyB0aGUgbmF0dXJlIG9mIHRoaXMgSSB0 aGluay4KClJpZ2h0LCB0aGUgYXN5bW1ldHJ5IGlzIHJlYWxseSBhbm5veWluZyBoZXJlLiBJZiB0 aGUgZHJpdmVyIGlzIFNSLWF3YXJlLCBpdCBtYWtlcwpzZW5zZSBzaW5jZSBTUi1hY3RpdmUgdG8g ZGlzYWJsZSBpcyBhIHJlYWwgdHJhbnNpdGlvbi4gSG93ZXZlciBpZiB0aGUgZHJpdmVyIGlzCm5v dCBTUi1hd2FyZSAoaWU6IGl0IGp1c3QgZ2V0cyB0dXJuZWQgb2ZmIHdoZW4gU1IgYmVjb21lcyBh Y3RpdmUpLCB0aGUgZGlzYWJsZQpmdW5jdGlvbiBnZXRzIGNhbGxlZCB0d2ljZSB3aXRob3V0IGFu IGVuYWJsZS4gU28gdGhhdCBjaGFuZ2VzIHRoZSAiZm9yIGV2ZXJ5CmVuYWJsZSB0aGVyZSBpcyBh IGRpc2FibGUgYW5kIHZpY2UgdmVyc2EiIGFzc3VtcHRpb24uCgpUaGlzIGlzIG9uZSBvZiB0aGUg YmVuZWZpdHMgb2YgdGhlIHYxIGRlc2lnbiwgU1Igd2FzIGJvbHRlZCBvbiBhbmQgbm8gZXhpc3Rp bmcKcnVsZXMgKGFzeW5jL25vX21vZGVzZXQvZW5hYmxlLWRpc2FibGUgcGFpcnMpIHdlcmUgW2V4 cGxpY2l0bHldIGJyb2tlbi4gVGhhdCdzCm5vdCB0byBzYXkgaXQgd2FzIGJldHRlciwgaXQgd2Fz bid0LCBidXQgaXQgd2FzIGEgYmlnIGNvbnNpZGVyYXRpb24uCgpTbywgd2hhdCB0byBkby4KCkkg cmVhbGx5IGxpa2UgdGhlIGlkZWEgdGhhdCBkcml2ZXJzIHNob3VsZG4ndCBoYXZlIHRvIGJlIFNS LWF3YXJlIHRvIGJlIGludm9sdmVkCmluIHRoZSBwaXBlbGluZS4gU28gaWYgd2UgYWRkIGEgaG9v ayBmb3IgdGhpcyBsaWtlIHlvdSBzdWdnZXN0LCB3ZSBjb3VsZCBhdm9pZApjYWxsaW5nIGRpc2Fi bGUgdHdpY2Ugb24gYW55dGhpbmcgbm90IFNSLWF3YXJlLiBXZSB3b3VsZCBuZWVkIHRvIGFkZCB0 aGUgaG9vayBvbgpjcnRjL2VuY29kZXIvYnJpZGdlIHRvIG1ha2Ugc3VyZSB5b3UgY291bGQgbWl4 IG4nIG1hdGNoIFNSLWF3YXJlIGFuZApub24tU1ItYXdhcmUgZGV2aWNlcy4KCkl0IHByb2JhYmx5 IG1ha2VzIHNlbnNlIHRvIGp1c3QgYWRkIG1hdGNoaW5nIFNSIGhvb2tzIGF0IHRoaXMgcG9pbnQu IFNpbmNlIGlmCnRoZSBkcml2ZXIgaXMgZG9pbmcgc29tZXRoaW5nIHNwZWNpYWwgaW4gZGlzYWJs ZSwgaXQnbGwgbmVlZCB0byBkbyBzb21ldGhpbmcKc3BlY2lhbCBpbiBlbmFibGUuIEl0IGFsc28g cmVzZXJ2ZXMgZW5hYmxlIGFuZCBkaXNhYmxlIGZvciB3aGF0IHRoZXkndmUKdHJhZGl0aW9uYWxs eSBkb25lLiBJZiBhIGRldmljZSBpcyBub3QgU1ItYXdhcmUsIGl0J2xsIGp1c3QgZmFsbCBiYWNr IHRvIHRoZQpmdWxsIGVuYWJsZS9kaXNhYmxlIGFuZCB3ZSdsbCBtYWtlIHN1cmUgdG8gbm90IGRv dWJsZSB1cCBvbiB0aGUgZGlzYWJsZSBpbiB0aGUKaGVscGVycy4KClNvIHdlJ2xsIGtlZXAgc3lt bWV0cnksIGFuZCBhdm9pZCBoYXZpbmcgYW4gYXdmdWwgaG9vayBuYW1lIGxpa2UKZGlzYWJsZV9m cm9tX3NlbGZfcmVmcmVzaC4uIHl1Y2shCgpUaG91Z2h0cz8KCj4gCj4gPiA+ID4gIH0KPiA+ID4g PiAgRVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVf c3RhdGUpOwo+ID4gPiA+ICAKCi9zbmlwCgo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiBp bmRleCBjODA2MTk5MmQ2Y2IuLjBhZTdlODEyZWM2MiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9pbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29u bmVjdG9yLmgKPiA+ID4gPiBAQCAtNTAxLDYgKzUwMSwzNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSB7Cj4gPiA+ID4gIAkvKiogQHR2OiBUViBjb25uZWN0b3Igc3RhdGUgKi8KPiA+ID4g PiAgCXN0cnVjdCBkcm1fdHZfY29ubmVjdG9yX3N0YXRlIHR2Owo+ID4gPiA+ICAKPiA+ID4gPiAr CS8qKgo+ID4gPiA+ICsJICogQHNlbGZfcmVmcmVzaF9jaGFuZ2VkOgo+ID4gPiA+ICsJICoKPiA+ ID4gPiArCSAqIFNldCB0cnVlIHdoZW4gc2VsZiByZWZyZXNoIHN0YXR1cyBoYXMgY2hhbmdlZC4g VGhpcyBpcyB1c2VmdWwgZm9yCj4gPiA+ID4gKwkgKiB1c2UgaW4gZW5jb2Rlci9icmlkZ2UgZW5h YmxlIHdoZXJlIHRoZSBvbGQgc3RhdGUgaXMgdW5hdmFpbGFibGUgdG8KPiA+ID4gPiArCSAqIHRo ZSBkcml2ZXIgYW5kIGl0IG5lZWRzIHRvIGtub3cgd2hldGhlciB0aGUgZW5hYmxlIHRyYW5zaXRp b24gaXMgYQo+ID4gPiA+ICsJICogZnVsbCB0cmFuc2l0aW9uLCBvciBpZiBpdCBqdXN0IG5lZWRz IHRvIGV4aXQgc2VsZiByZWZyZXNoIG1vZGUuCj4gPiA+IAo+ID4gPiBVaCwgd2UganVzdCBuZWVk IHByb3BlciBhdG9taWMgY2FsbGJhY2tzIHdpdGggYWxsIHRoZSBzdGF0ZXMgYXZhaWxhYmxlLgo+ ID4gPiBPbmNlIHlvdSBoYXZlIG9uZSwgeW91IGNhbiBnZXQgYXQgdGhlIG90aGVycy4KPiA+ID4g Cj4gPiAKPiA+IFdlbGwsIHN1cmUsIHdlIGNvdWxkIGRvIHRoYXQgdG9vIDopCj4gCj4gdGJoIEkn bSBub3Qgc3VyZSB3aGV0aGVyIHRoYXQncyByZWFsbHkgYmV0dGVyLCB0aGUgZHVwbGljYXRpb24g anVzdCBpcmtzCj4gbWUuIFdpdGggYSBuZXcgY2FsbGJhY2sgZm9yIHRoZSBzcGVjaWFsIHNlbGYt cmVmcmVzaCBkaXNhYmxlIChJIGd1ZXNzIHdlCj4gb25seSBuZWVkIHRoYXQgb24gdGhlIGNvbm5l Y3RvciksIHBsdXMgbG9va2luZyBhdAo+IGNvbm5lY3Rvci0+c3RhdGUtPmNydGMtPnN0YXRlLT5z ZWxmX3JlZnJlc2gsIEkgdGhpbmsgd2UnZCBiZSBjb3ZlcmVkCj4gYXMtaXM/IE9yIGlzIHRoZXJl IGEgY29ybmVyIGNhc2UgSSdtIHN0aWxsIG1pc3Npbmc/Cj4gCgpJIHRoaW5rIHdlIGNhbiByZW1v dmUgc2VsZl9yZWZyZXNoX2NoYW5nZWQvc2VsZl9yZWZyZXNoX2FjdGl2ZSBpZiB3ZSBpbXBsZW1l bnQKZGVkaWNhdGVkIGhvb2tzIGZvciBzZWxmX3JlZnJlc2hfZW50ZXIvZXhpdC4gV2UnbGwgd2Fu dCB0byBrZWVwCnNlbGZfcmVmcmVzaF9hd2FyZSBhcm91bmQgc2luY2UgdGhlIHByZXNlbmNlIG9m IHRoZSBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbnMKZG9lcyBub3QgaW1wbHkgdGhlIHBhbmVsIGNv bm5lY3RlZCBzdXBwb3J0cyBTUi4KCkFzIG1lbnRpb25lZCBhYm92ZSwgd2UnbGwgbmVlZCB0aGVz ZSBob29rcyBvbiBldmVyeXRoaW5nIGluIHRoZSBwaXBlbGluZSB0byBiZQpmdWxseSBjb3ZlcmVk LgoKPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJYm9vbCBzZWxmX3JlZnJlc2hfY2hhbmdlZDsKPiA+ ID4gPiArCj4gPiA+ID4gKwkvKioKPiA+ID4gPiArCSAqIEBzZWxmX3JlZnJlc2hfYWN0aXZlOgo+ ID4gPiA+ICsJICoKPiA+ID4gPiArCSAqIFVzZWQgYnkgdGhlIHNlbGYgcmVmcmVzaCAoU1IpIGhl bHBlcnMgdG8gZGVub3RlIHdoZW4gdGhlIGRpc3BsYXkKPiA+ID4gPiArCSAqIHNob3VsZCBiZSBz ZWxmIHJlZnJlc2hpbmcuIElmIHlvdXIgY29ubmVjdG9yIGlzIFNSLWNhcGFibGUsIGNoZWNrCj4g PiA+ID4gKwkgKiB0aGlzIGZsYWcgaW4gLmRpc2FibGUoKS4gSWYgaXQgaXMgdHJ1ZSwgaW5zdGVh ZCBvZiBzaHV0dGluZyBvZmYgdGhlCj4gPiA+ID4gKwkgKiBwYW5lbCwgcHV0IGl0IGludG8gc2Vs ZiByZWZyZXNoaW5nIG1vZGUuCj4gPiA+ID4gKwkgKi8KPiA+ID4gPiArCWJvb2wgc2VsZl9yZWZy ZXNoX2FjdGl2ZTsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKioKPiA+ID4gPiArCSAqIEBzZWxmX3Jl ZnJlc2hfYXdhcmU6Cj4gPiA+ID4gKwkgKgo+ID4gPiA+ICsJICogVGhpcyB0cmFja3Mgd2hldGhl ciBhIGNvbm5lY3RvciBpcyBhd2FyZSBvZiB0aGUgc2VsZiByZWZyZXNoIHN0YXRlLgo+ID4gPiA+ ICsJICogSXQgc2hvdWxkIGJlIHNldCB0byB0cnVlIGZvciB0aG9zZSBjb25uZWN0b3IgaW1wbGVt ZW50YXRpb25zIHdoaWNoCj4gPiA+ID4gKwkgKiB1bmRlcnN0YW5kIHRoZSBzZWxmIHJlZnJlc2gg c3RhdGUuIFRoaXMgaXMgbmVlZGVkIHNpbmNlIHRoZSBjcnRjCj4gPiA+ID4gKwkgKiByZWdpc3Rl cnMgdGhlIHNlbGYgcmVmcmVzaCBoZWxwZXJzIGFuZCBpdCBkb2Vzbid0IGtub3cgaWYgdGhlCj4g PiA+ID4gKwkgKiBjb25uZWN0b3JzIGRvd25zdHJlYW0gaGF2ZSBpbXBsZW1lbnRlZCBzZWxmIHJl ZnJlc2ggZW50cnkvZXhpdC4KPiA+ID4gCj4gPiA+IE1heWJlIGdvb2QgdG8gY2xhcmlmeSB3aGV0 aGVyIGRyaXZlcnMgY2FuIGFkanVzdCB0aGlzIGF0IHJ1bnRpbWUgZnJvbQo+ID4gPiB0aGVpciBh dG9taWNfY2hlY2sgY29kZT8gSSB0aGluayB0aGV5IGNhbiAuLi4KPiA+IAo+ID4gV2lsbCBkby4g WWVzIHRoZXkgY2FuLCB0aGF0J3MgZXhhY3RseSB3aGF0IHRoaXMgaXMgZm9yLiBTaW5jZSBub3Qg YWxsIHBhbmVscwo+ID4gY29ubmVjdGVkIHRvIGEgZGV2aWNlIGNhbiBzdXBwb3J0IFNSLCBhbmQg eW91IGNvdWxkIGNvbmNlaXZhYmx5IGhvdHBsdWcgYmV0d2Vlbgo+ID4gdGhlIHR3bywgd2Ugd2Fu dCBhIHdheSB0byBhdm9pZCB0dXJuaW5nIG9mZiB0aGUgY2lyY3VpdHJ5IHVwc3RyZWFtIG9mIHRo ZSBwYW5lbC4KPiA+IAo+ID4gPiAKPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJYm9vbCBzZWxmX3Jl ZnJlc2hfYXdhcmU7Cj4gPiA+ID4gKwo+ID4gPiA+ICAJLyoqCj4gPiA+ID4gIAkgKiBAcGljdHVy ZV9hc3BlY3RfcmF0aW86IENvbm5lY3RvciBwcm9wZXJ0eSB0byBjb250cm9sIHRoZQo+ID4gPiA+ ICAJICogSERNSSBpbmZvZnJhbWUgYXNwZWN0IHJhdGlvIHNldHRpbmcuCgovc25pcAoKPiA+ID4g Cj4gPiA+IEFzaWRlIGZyb20gdGhlIGJpa2VzaGVkcyBhbmQgc3VnZ2VzdGlvbnMsIGxvb2tzIGFs bCBnb29kIHRvIG1lLiBJIHRoaW5rCj4gPiA+IGl0J2QgYmUgZ29vZCB0byBhbHNvIGhhdmUgYW4g YWNrIGZyb20gc29tZSBvdGhlciBzb2MgZGlzcGxheSBtYWludGFpbmVyCj4gPiA+IHRoYXQgdGhp cyBpcyB1c2VmdWwgKFRvbWksIExhdXJlbnQsIExpdml1LCBvciBzb21lb25lIGVsc2UpLiBJdCdz IGFsd2F5cwo+ID4gPiBnb29kIHRvIGNoZWNrIGEgZGVzaWduIGFnYWluc3QgYSBoYW5kZnVsIG9m IGFjdHVhbCBkcml2ZXJzIGluc3RlYWQgb2Ygc29tZQo+ID4gPiBtb29uc2hvdCBjbGVhbiBzaGVl dCBkZXNpZ24gOi0pCj4gPiAKPiA+IFllYWgsIHdvdWxkIGJlIG5pY2UgdG8gZ2V0IGEgdGhpcmQg c2V0IG9mIGV5ZXMuIEknbSBwbGFubmluZyBvbiB1c2luZyB0aGlzCj4gPiBmb3IgbXNtIGRzaSBh cyB3ZWxsLCBzbyBJJ3ZlIGJlZW4ga2VlcGluZyB0aGF0IGluIHRoZSBiYWNrIG9mIG15IGhlYWQg d2hpbGUKPiA+IHdvcmtpbmcgb24gdGhpcy4KPiA+IAo+ID4gPiAKPiA+ID4gQnV0IHRoZXJlJ3Mg YSBiaWcgb25lOiBXb3VsZCBiZSByZWFsbHkgbG92ZWx5IHRvIGhhdmUgc2VsZnRlc3RzIGZvciB0 aGlzCj4gPiA+IHN0dWZmLCBraW5kYSBhcyBhIHN0YXJ0IGZvciBtYWtpbmcgc3VyZSB3ZSBoYXZl IGEgc29saWQgbW9kZWwgb2YgdGhlCj4gPiA+IGF0b21pYyBoZWxwZXJzIC4uLgo+ID4gCj4gPiBJ IGdvdCBzbyBmYXIgdGhyb3VnaCB0aGUgcmV2aWV3IHdpdGhvdXQgYW55IEJpZyBJdGVtcyAod2Vs bCBleGNlcHQgZm9yIHRoZQo+ID4gY29tcGxldGUgcmVkZXNpZ24gYmV0d2VlbiB2MSBhbmQgdjIg KGJ1dCBJIGtpbmQgb2YgZXhwZWN0ZWQgdGhhdCkpISBJJ3ZlIG5ldmVyCj4gPiBkb25lIGFueSBz ZWxmdGVzdHMsIHNvIHRoaXMgd2lsbCBiZSBhIGdvb2QgY2hhbmNlIHRvIGdldCBmYW1pbGlhciB3 aXRoIHRoZW0uCj4gCj4gQXdlc29tZS4gSXQgbWlnaHQgYmUgYSBiaXQgbW9yZSB3b3JrIHNpbmNl IG5vIG9uZSB5ZXQgbW9ja2VkIGVub3VnaCBvZgo+IGRybV9kZXZpY2UgdG8gcnVuIHRoZSBhdG9t aWMgaGVscGVycywgYnV0IGZvciBhIGJhc2ljIHNlbGYtcmVmcmVzaAo+IHRlc3RjYXNlIEkgZG9u J3QgdGhpbmsgeW91IG5lZWQgbXVjaCByZWFsbHkuIFBsdXMgd2UndmUgbWFkZSBhbG1vc3QgYWxs Cj4gY2FsbGJhY2tzIG9wdGlvbmFsLCB0aGUgbWluaW1hbCBtb2NrIG9iamVjdHMgc2hvdWxkIGJl IHJhdGhlciB0cml2aWFsLgoKSXQnbGwgYmUgYSBmdW4gZXhwZXJpbWVudCA6KQoKPiAKPiBDaGVl cnMsIERhbmllbAo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gClNlYW4gUGF1bCwgU29m dHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==