From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Fri, 29 Mar 2019 09:21:10 +0100 Message-ID: <20190329082110.GA2665@phenom.ffwll.local> References: <20190326204509.96515-1-sean@poorly.run> <20190327181500.GP2665@phenom.ffwll.local> <20190328210303.GM114153@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 20F1C6E85A for ; Fri, 29 Mar 2019 08:21:15 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id x61so1242043edc.9 for ; Fri, 29 Mar 2019 01:21:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190328210303.GM114153@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXIgMjgsIDIwMTkgYXQgMDU6MDM6MDNQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIFdlZCwgTWFyIDI3LCAyMDE5IGF0IDA3OjE1OjAwUE0gKzAxMDAsIERhbmllbCBWZXR0 ZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIE1hciAyNiwgMjAxOSBhdCAwNDo0NDo1NFBNIC0wNDAwLCBT ZWFuIFBhdWwgd3JvdGU6Cj4gPiA+IEZyb206IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0u b3JnPgo+ID4gPiAKPiA+ID4gVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRybSBoZWxwZXIgbGlicmFy eSB0byBoZWxwIGRyaXZlcnMgaW1wbGVtZW50Cj4gPiA+IHNlbGYgcmVmcmVzaC4gRHJpdmVycyBj aG9vc2luZyB0byB1c2UgaXQgd2lsbCByZWdpc3RlciBjcnRjcyBhbmQKPiA+ID4gd2lsbCByZWNl aXZlIGNhbGxiYWNrcyB3aGVuIGl0J3MgdGltZSB0byBlbnRlciBvciBleGl0IHNlbGYgcmVmcmVz aAo+ID4gPiBtb2RlLgo+ID4gPiAKPiA+ID4gSW4gaXRzIGN1cnJlbnQgZm9ybSwgaXQgaGFzIGEg dGltZXIgd2hpY2ggd2lsbCB0cmlnZ2VyIGFmdGVyIGEKPiA+ID4gZHJpdmVyLXNwZWNpZmllZCBh bW91bnQgb2YgaW5hY3Rpdml0eS4gV2hlbiB0aGUgdGltZXIgdHJpZ2dlcnMsIHRoZQo+ID4gPiBo ZWxwZXJzIHdpbGwgc3VibWl0IGEgbmV3IGF0b21pYyBjb21taXQgdG8gc2h1dCB0aGUgcmVmcmVz aGluZyBwaXBlCj4gPiA+IG9mZi4gT24gdGhlIG5leHQgYXRvbWljIGNvbW1pdCwgdGhlIGRybSBj b3JlIHdpbGwgcmV2ZXJ0IHRoZSBzZWxmCj4gPiA+IHJlZnJlc2ggc3RhdGUgYW5kIGJyaW5nIGV2 ZXJ5dGhpbmcgYmFjayB1cCB0byBiZSBhY3RpdmVseSBkcml2ZW4uCj4gPiA+IAo+ID4gPiBGcm9t IHRoZSBkcml2ZXIncyBwZXJzcGVjdGl2ZSwgdGhpcyB3b3JrcyBsaWtlIGEgcmVndWxhciBkaXNh YmxlL2VuYWJsZQo+ID4gPiBjeWNsZS4gVGhlIGRyaXZlciBuZWVkIG9ubHkgY2hlY2sgdGhlICdz ZWxmX3JlZnJlc2hfYWN0aXZlJyBhbmQvb3IKPiA+ID4gJ3NlbGZfcmVmcmVzaF9jaGFuZ2VkJyBz dGF0ZSBpbiBjcnRjX3N0YXRlIGFuZCBjb25uZWN0b3Jfc3RhdGUuIEl0Cj4gPiA+IHNob3VsZCBp bml0aWF0ZSBzZWxmIHJlZnJlc2ggbW9kZSBvbiB0aGUgcGFuZWwgYW5kIGVudGVyIGFuIG9mZiBv cgo+ID4gPiBsb3ctcG93ZXIgc3RhdGUuCj4gPiA+IAo+ID4gPiBDaGFuZ2VzIGluIHYyOgo+ID4g PiAtIHMvcHNyL3NlbGZfcmVmcmVzaC8gKERhbmllbCkKPiA+ID4gLSBpbnRlZ3JhdGVkIHRoZSBw c3IgZXhpdCBpbnRvIHRoZSBjb21taXQgdGhhdCB3YWtlcyBpdCB1cCAoSm9zZS9EYW5pZWwpCj4g PiA+IC0gbWFkZSB0aGUgcHNyIHN0YXRlIHBlci1jcnRjIChKb3NlL0RhbmllbCkKPiA+ID4gCj4g PiA+IExpbmsgdG8gdjE6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9t c2dpZC8yMDE5MDIyODIxMDkzOS44MzM4Ni0yLXNlYW5AcG9vcmx5LnJ1bgo+ID4gPiAKPiA+ID4g Q2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+ID4gQ2M6IEpvc2UgU291emEg PGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4gPiBDYzogWmFpbiBXYW5nIDx3enpAcm9jay1jaGlw cy5jb20+Cj4gPiA+IENjOiBUb21hc3ogRmlnYSA8dGZpZ2FAY2hyb21pdW0ub3JnPgo+ID4gPiBT aWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+ID4gLS0t Cj4gPiA+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0ICAgICB8ICAgOSAr Cj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMyAr LQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgICAgICAgfCAgIDQg Kwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgfCAgMzYg KysrLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMgfCAg IDggKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jICAgICAgICAgfCAg IDUgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5jIHwg MjEyICsrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9hdG9taWMu aCAgICAgICAgICAgICAgICAgIHwgIDE1ICsrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY29ubmVj dG9yLmggICAgICAgICAgICAgICB8ICAzMSArKysrCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY3J0 Yy5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArKwo+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX3Nl bGZfcmVmcmVzaF9oZWxwZXIuaCAgICAgfCAgMjMgKysrCj4gPiA+ICAxMSBmaWxlcyBjaGFuZ2Vk LCAzNjAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiA+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuYwo+ID4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmgKPiA+ ID4gCj4gCj4gL3NuaXAKPiAKPiBUaGFua3MgZm9yIHRoZSByZXZpZXchCj4gCj4gCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiA+IGluZGV4IDI0NTM2NzhkMTE4Ni4uYzY1 OWRiMTA1MTMzIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ ID4gPiBAQCAtMzAsNiArMzAsNyBAQAo+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX3Vh cGkuaD4KPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgo+ID4gPiAgI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1f c2VsZl9yZWZyZXNoX2hlbHBlci5oPgo+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNr Lmg+Cj4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9kYW1hZ2VfaGVscGVyLmg+Cj4gPiA+ICAjaW5j bHVkZSA8bGludXgvZG1hLWZlbmNlLmg+Cj4gPiA+IEBAIC05NTAsMTAgKzk1MSwzMyBAQCBpbnQg ZHJtX2F0b21pY19oZWxwZXJfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gIAlp ZiAoc3RhdGUtPmxlZ2FjeV9jdXJzb3JfdXBkYXRlKQo+ID4gPiAgCQlzdGF0ZS0+YXN5bmNfdXBk YXRlID0gIWRybV9hdG9taWNfaGVscGVyX2FzeW5jX2NoZWNrKGRldiwgc3RhdGUpOwo+ID4gPiAg Cj4gPiA+ICsJZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfYWx0ZXJfc3RhdGUoc3RhdGUpOwo+ID4g PiArCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gIH0KPiA+ID4gIEVYUE9SVF9TWU1CT0woZHJt X2F0b21pY19oZWxwZXJfY2hlY2spOwo+ID4gPiAgCj4gPiA+ICtzdGF0aWMgYm9vbAo+ID4gPiAr Y3J0Y19uZWVkc19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLAo+ID4g PiArCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19zdGF0ZSkKPiA+ID4gK3sKPiA+ID4g KwkvKgo+ID4gPiArCSAqIE5vIG5ld19zdGF0ZSBtZWFucyB0aGUgY3J0YyBpcyBvZmYsIHNvIHRo ZSBvbmx5IGNyaXRlcmlhIGlzIHdoZXRoZXIKPiA+ID4gKwkgKiBpdCdzIGN1cnJlbnRseSBhY3Rp dmUgb3IgaW4gc2VsZiByZWZyZXNoIG1vZGUuCj4gPiA+ICsJICovCj4gPiA+ICsJaWYgKCFuZXdf c3RhdGUpCj4gPiA+ICsJCXJldHVybiBkcm1fYXRvbWljX2NydGNfZWZmZWN0aXZlbHlfYWN0aXZl KG9sZF9zdGF0ZSk7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIFdlIG5lZWQgdG8gcnVu IHRocm91Z2ggdGhlIGNydGNfZnVuY3MtPmRpc2FibGUoKSBmdW5jdGlvbiBpZiB0aGUgY3J0Ywo+ ID4gPiArCSAqIGlzIGN1cnJlbnRseSBvbiwgaWYgaXQncyB0cmFuc2l0aW9uaW5nIHRvIHNlbGYg cmVmcmVzaCBtb2RlLCBvciBpZgo+ID4gPiArCSAqIGl0J3MgaW4gc2VsZiByZWZyZXNoIG1vZGUg YW5kIG5lZWRzIHRvIGJlIGZ1bGx5IGRpc2FibGVkLgo+ID4gPiArCSAqLwo+ID4gPiArCXJldHVy biBvbGRfc3RhdGUtPmFjdGl2ZSB8fAo+ID4gPiArCSAgICAgICAob2xkX3N0YXRlLT5zZWxmX3Jl ZnJlc2hfYWN0aXZlICYmICFuZXdfc3RhdGUtPmVuYWJsZSkgfHwKPiA+ID4gKwkgICAgICAgbmV3 X3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0 aWMgdm9pZAo+ID4gPiAgZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gPiA+ICB7Cj4gPiA+IEBAIC05NzQs NyArOTk4LDE0IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gPiAgCj4gPiA+ICAJCW9sZF9jcnRj X3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUob2xkX3N0YXRlLCBvbGRfY29u bl9zdGF0ZS0+Y3J0Yyk7Cj4gPiA+ICAKPiA+ID4gLQkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+YWN0 aXZlIHx8Cj4gPiA+ICsJCWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0YykKPiA+ID4gKwkJCW5ld19j cnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoCj4gPiA+ICsJCQkJCQlv bGRfc3RhdGUsCj4gPiA+ICsJCQkJCQluZXdfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gPiA+ICsJCWVs c2UKPiA+ID4gKwkJCW5ld19jcnRjX3N0YXRlID0gTlVMTDsKPiA+ID4gKwo+ID4gPiArCQlpZiAo IWNydGNfbmVlZHNfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpIHx8Cj4g PiA+ICAJCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQob2xkX2Nvbm5fc3RhdGUt PmNydGMtPnN0YXRlKSkKPiA+IAo+ID4gSSBoYXZlIGEgcmVhbGx5IGhhcmQgdGltZSBwYXJzaW5n IHRoZSBsb2dpYyBoZXJlIGFuZCBpbiB0aGUgaGVscGVyLCBzaW5jZQo+ID4gaXQncyBhbHNvIHNw cmVhZCBhcm91bmQuIEkgdGhpbmsgeW91ciBoZWxwZXIgc2hvdWxkIGFsc28gaW5jbHVkZSB0aGUK PiA+IG5lZWRzX21vZGVzZXQgY2hlY2suIFBsdXMgeW91ciBjb21tZW50cyBsb29rIGEgYml0IHN0 cmFuZ2UgLSBlLmcuIHdpdGggdGhlCj4gPiBkb3VibGUgbmVnYXRpb24gdGhlIHJlYXNvbiBmb3Ig dGhlIG9sZF9jcnRjLT5hY3RpdmUgY2hlY2sgaXNuJ3QgdGhhdCB3ZQo+ID4gbmVlZCB0byBkaXNh YmxlIGlmIGl0J3MgYWN0aXZlLCBidXQgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGRpc2FibGUgaWYg aXQncwo+ID4gbm90IGFjdGl2ZSAoeW91IGNvbWJpbmUgd2l0aCB8fCBoZXJlLCBub3QgJiYpLgo+ ID4gCj4gPiBCdXQgYXNpZGUgZnJvbSBhbGwgdGhhdCwgd2h5IGRvIHlvdSBldmVuIGNoYW5nZSBz dHVmZiBoZXJlPyBUaGUgc2VsZgo+ID4gcmVmcmVzaCB3b3JrZXIgY2hhbmdlcyAtPmFjdGl2ZSB0 byBmYWxzZSwgd2hpY2ggbWVhbnMgbmVlZHNfbW9kZXNldCB3aWxsCj4gPiBmaXJlLCBhbmQgbm8g Y2hhbmdlIHNob3VsZCBiZSBuZWVkZWQgaW4gdGhlIGNvbW1pdCBjb2RlIGF0IGFsbC4KPiAKPiBU aGUgaXNzdWUgaXMgdGhhdCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggZGlzYWJsZSBpZiB3ZSdyZSBj dXJyZW50bHkgaW4gU1IgYW5kCj4gbmVlZCB0byB0dXJuIG9mZiAoaWU6IG9sZC0+YWN0aXZlPWZh bHNlIG9sZC0+c2VsZl9yZWZyZXNoX2FjdGl2ZT10cnVlCj4gbmV3LT5hY3RpdmU9ZmFsc2UpLiBJ biB0aGlzIGNhc2UsIG5lZWRzX21vZGVzZXQgcmV0dXJucyBmYWxzZS4KPiAKPiBTbyB5ZWFoLCBJ IHRoaW5rIHRoZSBuZXctPnNlbGZfcmVmcmVzaF9hY3RpdmUgY2hlY2sgYWJvdmUgaXMgcHJvYmFi bHkgcmVkdW5kYW50Cj4gKHdpbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCksIGJ1dCB3ZSBk byBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIGdvIHRocm91Z2ggYQo+IGZ1bGwgZGlzYWJsZSBpZiB3 ZSdyZSBpbiBTUi4KCkhtIHJpZ2h0LCB0b3RhbGx5IG1pc3NlZCB0aGF0IGNhc2UuIEFubm95aW5n LCBzaW5jZSBpdCBjb21wbGljYXRlcyB0aGluZwooYW5kIG1ha2VzIHRoZSBjb2RlIGFzeW1ldHJp YyBzaW5jZSB3ZSdsbCBuZXZlciBnbyBkaXJlY3RseSBpbnRvIHNlbGYKcmVmcmVzaCBvbiB0aGUg ZW5hYmxlIHNpZGUpLgoKPiBPbiB0aGUgZW5hYmxlIHNpZGUsIHlvdSdyZSByaWdodCwgd2UgZG9u J3QgbmVlZCB0byBjaGFuZ2UgYW55dGhpbmcuCj4gCj4gPiAKPiA+IFRoYXQncyB3aHkgSSBzdWdn ZXN0ZWQgdGhlIHRyaWNrIHdpdGgKPiA+IGRybV9hdG9taWNfY3J0Y19lZmZlY3RpdmVseV9hY3Rp dmUoKSwgaXQgYWxsb3dzIHVzIHRvIGtlZXAgdGhlIGVudGlyZQo+ID4gY2hlY2svY29tbWl0IGRy aXZlciBjb2RlIGFzLWlzLgo+ID4gCj4gPiA+ICAJCQljb250aW51ZTsKPiA+ID4gIAo+ID4gPiBA QCAtMTAxOCw3ICsxMDQ5LDcgQEAgZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gPiA+ICAJCWlmICghZHJt X2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQo+ID4gPiAgCQkJY29u dGludWU7Cj4gPiA+ICAKPiA+ID4gLQkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ID4g PiArCQlpZiAoIWNydGNfbmVlZHNfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3Rh dGUpKQo+ID4gPiAgCQkJY29udGludWU7Cj4gPiA+ICAKPiA+ID4gIAkJZnVuY3MgPSBjcnRjLT5o ZWxwZXJfcHJpdmF0ZTsKPiA+ID4gQEAgLTI5NDgsNiArMjk3OSw3IEBAIGludCBkcm1fYXRvbWlj X2hlbHBlcl9zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCwKPiA+ID4gIAkJcmV0 dXJuIC1FTk9NRU07Cj4gPiA+ICAKPiA+ID4gIAlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7Cj4g PiA+ICsKPiA+ID4gIAlyZXQgPSBfX2RybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcoc2V0LCBz dGF0ZSk7Cj4gPiA+ICAJaWYgKHJldCAhPSAwKQo+ID4gPiAgCQlnb3RvIGZhaWw7Cj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gPiA+IGluZGV4IDQ5ODUz ODRlNTFmNi4uZWM5MGM1MjdkZWVkIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ID4gPiBAQCAtMTA1LDYgKzEwNSwxMCBAQCB2b2lkIF9f ZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ID4gPiAgCXN0YXRlLT5jb21taXQgPSBOVUxMOwo+ID4gPiAgCXN0YXRlLT5ldmVudCA9 IE5VTEw7Cj4gPiA+ICAJc3RhdGUtPnBhZ2VmbGlwX2ZsYWdzID0gMDsKPiA+ID4gKwo+ID4gPiAr CS8qIFNlbGYgcmVmcmVzaCBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMg YXZhaWxhYmxlICovCj4gPiA+ICsJc3RhdGUtPmFjdGl2ZSA9IGRybV9hdG9taWNfY3J0Y19lZmZl Y3RpdmVseV9hY3RpdmUoc3RhdGUpOwo+ID4gPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZl ID0gZmFsc2U7Cj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxw ZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUpOwo+ID4gPiAgCj4gPiA+IEBAIC0zNzAsNiArMzc0LDEw IEBAIF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiAgCj4gPiA+ICAJLyogRG9uJ3QgY29weSBv dmVyIGEgd3JpdGViYWNrIGpvYiwgdGhleSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8KPiA+ID4gIAlz dGF0ZS0+d3JpdGViYWNrX2pvYiA9IE5VTEw7Cj4gPiA+ICsKPiA+ID4gKwkvKiBTZWxmIHJlZnJl c2ggc2hvdWxkIGJlIGNhbmNlbGVkIHdoZW4gYSBuZXcgdXBkYXRlIGlzIGF2YWlsYWJsZSAqLwo+ ID4gPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hfY2hhbmdlZCA9IHN0YXRlLT5zZWxmX3JlZnJlc2hf YWN0aXZlOwo+ID4gPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gZmFsc2U7Cj4gPiAK PiA+IFdoeSB0aGUgZHVwbGljYXRpb24gaW4gc2VsZi1yZWZyZXNoIHRyYWNraW5nPyBDb25uZWN0 b3JzIG5ldmVyIGhhdmUgYQo+ID4gZGlmZmVyZW50IHNlbGYtcmVmcmVzaCBzdGF0ZSwgYW5kIHlv dSBjYW4gYWx3YXlzIGxvb2sgYXQgdGhlIHJpZ2h0Cj4gPiBjcnRjX3N0YXRlLiBEdXBsaWNhdGlv biBqdXN0IGdpdmVzIHVzIHRoZSBjaGFuY2UgdG8gc2NyZXcgdXAgYW5kIGdldCBvdXQKPiA+IG9m IHN5bmMgKGUuZy4gaWYgdGhlIGNydGMgZm9yIGEgY29ubmVjdG9yIGNoYW5nZXMpLgo+ID4gCj4g Cj4gT24gZGlzYWJsZSB0aGUgY3J0YyBpcyBjbGVhcmVkIGZyb20gY29ubmVjdG9yX3N0YXRlLCBz byB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0bwo+IGl0LiBJZiBJIGFkZCB0aGUgYXBwcm9wcmlhdGUg YXRvbWljX2VuYWJsZS9kaXNhYmxlIGhvb2tzIGFzIHN1Z2dlc3RlZCBiZWxvdywgd2UKPiBzaG91 bGQgYmUgYWJsZSB0byBudWtlIHRoZXNlLgoKWWVhaCB3ZSdkIG5lZWQgdGhlIG9sZCBzdGF0ZSB0 byBsb29rIGF0IHRoZSBjcnRjIGFuZCBhbGwgdGhhdC4gV2hpY2ggaXMgYQpsb3QgbW9yZSB0cmlj a2llci4KClNpbmNlIGl0J3Mgc3VjaCBhIHNwZWNpYWwgY2FzZSwgc2hvdWxkIHdlIGhhdmUgYSBk ZWRpY2F0ZWQgY2FsbGJhY2sgZm9yCnRoZSBkaXJlY3Qgc2VsZi1yZWZyZXNoIC0+IGNvbXBsZXRl bHkgb2ZmIHRyYW5zaXRpb24/IEl0J2xsIGJlIGFzeW1ldHJpYywKYnV0IHRoYXQncyB0aGUgbmF0 dXJlIG9mIHRoaXMgSSB0aGluay4KCj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSk7Cj4gPiA+ICAKPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4gPiBpbmRleCA0ZWI4MWYxMGJjNTQuLmQyMDg1 MzMyMTcyYiAxMDA2NDQKPiAKPiAvc25pcAo+IAo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBk cm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9lbnRyeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jfc3Rh dGUgPSBjb250YWluZXJfb2YoCj4gPiA+ICsJCQkJdG9fZGVsYXllZF93b3JrKHdvcmspLAo+ID4g PiArCQkJCXN0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlLCBlbnRyeV93b3JrKTsKPiA+ID4g KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzcl9zdGF0ZS0+Y3J0YzsKPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gPiArCXN0cnVjdCBkcm1fbW9kZXNldF9h Y3F1aXJlX2N0eCBjdHg7Cj4gPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ID4gPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ID4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKPiA+ID4gKwlpbnQgaSwgcmV0Owo+ID4gPiArCj4gPiA+ICsJZHJtX21vZGVz ZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ID4gPiArCj4gPiA+ICsJc3RhdGUgPSBkcm1fYXRv bWljX3N0YXRlX2FsbG9jKGRldik7Cj4gPiA+ICsJaWYgKCFzdGF0ZSkgewo+ID4gPiArCQlyZXQg PSAtRU5PTUVNOwo+ID4gPiArCQlnb3RvIG91dDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gK3Jl dHJ5Ogo+ID4gPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7Cj4gPiA+ICsKPiA+ID4gKwlj cnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiA+ ICsJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ID4gPiArCQlyZXQgPSBQVFJfRVJSKGNydGNf c3RhdGUpOwo+ID4gPiArCQlnb3RvIG91dDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlpZiAo IWNydGNfc3RhdGUtPmVuYWJsZSkKPiA+ID4gKwkJZ290byBvdXQ7Cj4gPiA+ICsKPiA+ID4gKwly ZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0b3JzKHN0YXRlLCBjcnRjKTsKPiA+ ID4gKwlpZiAocmV0KQo+ID4gPiArCQlnb3RvIG91dDsKPiA+ID4gKwo+ID4gPiArCWNydGNfc3Rh dGUtPmFjdGl2ZSA9IGZhbHNlOwo+ID4gPiArCWNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3Rp dmUgPSB0cnVlOwo+ID4gPiArCj4gPiA+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0 ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewo+ID4gPiArCQlpZiAoIWNvbm5fc3RhdGUt PnNlbGZfcmVmcmVzaF9hd2FyZSkKPiA+ID4gKwkJCWdvdG8gb3V0Owo+ID4gPiArCj4gPiA+ICsJ CWNvbm5fc3RhdGUtPnNlbGZfcmVmcmVzaF9jaGFuZ2VkID0gdHJ1ZTsKPiA+ID4gKwkJY29ubl9z dGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSA9IHRydWU7Cj4gPiA+ICsJfQo+ID4gCj4gPiBJIHdv bmRlciB3aGV0aGVyIHdlIHNob3VsZCByZWplY3QgdGhlIHRpbWVyIGhlcmUgYmVmb3JlIGdvaW5n IGFoZWFkLgo+ID4gVGhlcmUncyBvZmMgc3RpbGwgYSByYWNlLCBidXQgaWYgd2UncmUgdW5sdWNr eSBhbmQgdGhlIHNlbGYgZnJlc2ggd29yawo+ID4gZmlyZXMgYXQgdGhlIHNhbWUgdGltZSBhcyB1 c2Vyc3BhY2UgZG9lcyBhIG5ldyBhdG9taWMgY29tbWl0IHdlIGNvdWxkIGVuZAo+ID4gdXAgd2l0 aCB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgo+ID4gMS4gc2VsZi1yZWZyZXNoIHdvcmsgc3RhcnRz Cj4gPiAyLiB1c2Vyc3BhY2UgZG9lcyBpb2N0bHMsIHN0YXJ0cyB0byBncmFiIHNvbWUgbG9ja3MK PiA+IDMuIHNlbGYtcmVmcmVzaCBncmFicyBzZXRzIHVwIHRoZSBhY3F1aXJlIGN0eAo+ID4gNC4g YXRvbWljIGlvY3RsIHB1bGxzIHRocm91Z2gsIGRvZXMgYSBjb21taXQsIGJsb2NraW5nIHRoZSBz ZWxmLXJlZnJlc2gKPiA+IHdvcmsKPiA+IDUuIHNlbGYtcmVmcmVzaCB3b3JrIGZpbmFsbHkgZ2V0 cyBhbGwgdGhlIGxvY2tzLCBnb2VzIGFoZWFkIGFuZCBwdXRzIHRoZQo+ID4gZGlzcGxheSBpbnRv IHNlbGYtcmVmcmVzaC4KPiA+IAo+ID4gTm90IHN1cmUgaG93IG11Y2ggd2UgY2FyZSBhYm91dCB0 aGlzIHJlYWxseSwgb3Igd2hldGhlciBkZWxheWluZyB0aGUgdGltZXIKPiA+IGZyb20gYWxsIGF0 b21pY19jaGVjayAoaW5jbHVkaW5nIFRFU1RfT05MWSkgaXMgZW5vdWdoIHRvIHBhcGVyIG92ZXIg dGhpcy4KPiA+Cj4gCj4gSG1tLCB5ZWFoIEkgc3VwcG9zZSBpZiB0aGUgZW50cnkgdGltZXIgcGVy aW9kIHdhcyB0aGUgc2FtZSBhcyBzb21lIHBlcmlvZGljCj4gYW5pbWF0aW9uIChsaWtlIGEgZmFu Y3kgYmxpbmtpbmcgY3Vyc29yKSwgeW91IGNvdWxkIGdldCBzb21lIG5hc3R5IGphbmsuIAo+IAo+ IEFzIHlvdSBzYXkgaXQncyBub3QgYXZvaWRhYmxlIGFuZCB0aGUgYnVsayBvZiB0aGUgdGltZSBo ZXJlIHdpbGwgYmUgZG9pbmcgdGhlCj4gYWN0dWFsIGVudHJ5IGluc3RlYWQgb2YgdGhlIHNldHVw LiBTbyBpZiB0aGVyZSBpcyBhbiB1bmZvcnR1bmF0ZSBjb2xsaXNpb24sCj4gd2UncmUgZ29pbmcg dG8gaGl0IGl0IG1vcmUgb2Z0ZW4gdGhhbiBub3QgZXZlbiB3aXRoIHRoZSB0aW1lciBjaGVjay4g U28gSSdtCj4gaGF2aW5nIGEgaGFyZCB0aW1lIGdldHRpbmcgZXhjaXRlZCBhYm91dCB0aGlzLgo+ IAo+IFRoYXQgc2FpZCwgSSdsbCB3cml0ZSB0aGUgY29kZSB0byBjaGVjayB0aGUgdGltZXIgYW5k IHNlZSBob3cgaXQgbG9va3MgOikKPiAKPiA+ID4gKwo+ID4gPiArCXJldCA9IGRybV9hdG9taWNf Y29tbWl0KHN0YXRlKTsKPiA+ID4gKwlpZiAocmV0KQo+ID4gPiArCQlnb3RvIG91dDsKPiA+ID4g Kwo+ID4gPiArb3V0Ogo+ID4gPiArCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+ID4gKwkJZHJt X2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gPiA+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2Jh Y2tvZmYoJmN0eCk7Cj4gPiA+ICsJCWlmICghcmV0KQo+ID4gPiArCQkJZ290byByZXRyeTsKPiA+ ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gPiA+ ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ID4gKwlkcm1fbW9kZXNldF9hY3F1 aXJlX2ZpbmkoJmN0eCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogZHJt X3NlbGZfcmVmcmVzaF9oZWxwZXJfYWx0ZXJfc3RhdGUgLSBBbHRlcnMgdGhlIGF0b21pYyBzdGF0 ZSBmb3IgU1IgZXhpdAo+ID4gPiArICogQHN0YXRlOiB0aGUgc3RhdGUgY3VycmVudGx5IGJlaW5n IGNoZWNrZWQKPiA+ID4gKyAqCj4gPiA+ICsgKiBDYWxsZWQgYXQgdGhlIGVuZCBvZiBhdG9taWMg Y2hlY2suIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBzdGF0ZSBmb3IgZmxhZ3MKPiA+ID4gKyAq IGluY29tcGF0aWJsZSB3aXRoIHNlbGYgcmVmcmVzaCBleGl0IGFuZCBjaGFuZ2VzIHRoZW0uIFRo aXMgaXMgYSBiaXQKPiA+ID4gKyAqIGRpc2luZ2VudW91cyBzaW5jZSB1c2Vyc3BhY2UgaXMgZXhw ZWN0aW5nIG9uZSB0aGluZyBhbmQgd2UncmUgZ2l2aW5nIGl0Cj4gPiA+ICsgKiBhbm90aGVyLiBI b3dldmVyIGluIG9yZGVyIHRvIGtlZXAgc2VsZiByZWZyZXNoIGVudGlyZWx5IGhpZGRlbiBmcm9t Cj4gPiA+ICsgKiB1c2Vyc3BhY2UsIHRoaXMgaXMgcmVxdWlyZWQuCj4gPiA+ICsgKgo+ID4gPiAr ICogQXQgdGhlIGVuZCwgd2UgcXVldWUgdXAgdGhlIHNlbGYgcmVmcmVzaCBlbnRyeSB3b3JrIHNv IHdlIGNhbiBlbnRlciBQU1IgYWZ0ZXIKPiA+ID4gKyAqIHRoZSBkZXNpcmVkIGRlbGF5Lgo+ID4g PiArICovCj4gPiA+ICt2b2lkIGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7Cj4gPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ ID4gPiArCWludCBpOwo+ID4gPiArCj4gPiA+ICsJaWYgKHN0YXRlLT5hc3luY191cGRhdGUpIHsK PiA+ID4gKwkJZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUsIGkpIHsKPiA+ID4gKwkJCWlmIChjcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7 Cj4gPiA+ICsJCQkJc3RhdGUtPmFzeW5jX3VwZGF0ZSA9IGZhbHNlOwo+ID4gPiArCQkJCWJyZWFr Owo+ID4gPiArCQkJfQo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCWlmICghc3RhdGUtPmFs bG93X21vZGVzZXQpIHsKPiA+ID4gKwkJZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiA+ID4gKwkJCWlmIChjcnRjX3N0YXRlLT5zZWxmX3Jl ZnJlc2hfYWN0aXZlKSB7Cj4gPiA+ICsJCQkJc3RhdGUtPmFsbG93X21vZGVzZXQgPSB0cnVlOwo+ ID4gPiArCQkJCWJyZWFrOwo+ID4gPiArCQkJfQo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gCj4g PiBJIHRoaW5rIHlvdSBjYW4gZmxhdHRlbiB0aGUgYWJvdmUgdHdvIHRvOgo+ID4gCj4gPiAJZm9y X2VhY2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiA+ IAkJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpIHsKPiA+IAkJCXN0YXRlLT5h bGxvd19tb2Rlc2V0ID0gdHJ1ZTsKPiA+IAkJCXN0YXRlLT5hc3luY191cGRhdGUgPSBmYWxzZTsK PiA+IAkJCWJyZWFrOwo+ID4gCQl9Cj4gPiAJfQo+IAo+IEQnb2ghIEkndmUgc3RhcmVkIGF0IHRo aXMgU1IgY29kZSBmb3Igc29vbyBsb25nLCBJIGd1ZXNzIEkgZ290IGhpZ2h3YXkgaHlwbm9zaXMK PiBvbiB0aGlzIGJpdC4KPiAKPiA+IAo+ID4gUGx1cyBhIGNvbW1lbnQgdGhhdCB0aGlzIGJyZWFr cyB1YXBpLCBidXQgd2hvIGNhcmVzOgo+ID4gCj4gPiAJLyogVGhpcyBicmVha3MgdWFwaSwgYnV0 IHdlIHdhbnQgc2VsZi1yZWZyZXNoIHRvIGJlIGFzIHRyYW5zcGFyZW50Cj4gPiAJICogdG8gdXNl cnNwYWNlIGFzIHBvc3NpYmxlLiBQbHVzIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgd2l0aCB0aGUK PiA+IAkgKiBkaXNwbGF5IHN0aWxsIG9uLCB0aGUgbW9kZXNldCB3aWxsIHRha2UgYXQgbW9zdCBh IGZldyB2YmxhbmtzLAo+ID4gCSAqIGFuZCB0aGF0J3Mgc3RpbGwgb2suICovCj4gPiAKPiA+ID4g Kwo+ID4gPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0 YXRlLCBpKSB7Cj4gPiA+ICsJCXN0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0 ZTsKPiA+ID4gKwo+ID4gPiArCQkvKiBEb24ndCB0cmlnZ2VyIHRoZSBlbnRyeSB0aW1lciB3aGVu IHdlJ3JlIGFscmVhZHkgaW4gU1IgKi8KPiA+ID4gKwkJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVm cmVzaF9hY3RpdmUpCj4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gKwo+ID4gPiArCQlzcl9zdGF0 ZSA9IGNydGMtPnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiA+ID4gKwkJbW9kX2RlbGF5ZWRfd29yayhz eXN0ZW1fd3EsICZzcl9zdGF0ZS0+ZW50cnlfd29yaywKPiA+ID4gKwkJCSBtc2Vjc190b19qaWZm aWVzKHNyX3N0YXRlLT5lbnRyeV9kZWxheV9tcykpOwo+ID4gCj4gPiBUaGlzIGJpdCBuZWVkcyB0 byBiZSBpbiBhdG9taWNfY29tbWl0LCBub3QgYXRvbWljIGNoZWNrLiBPciBhdCBsZWFzdCBpdAo+ ID4gZmVlbHMgYSBiaXQgd3JvbmcgdG8gZGVsYXkgc2VsZi1yZWZyZXNoIGlmIHVzZXJzcGFjZSBk b2VzIGEgZmV3IFRFU1RfT05MWQo+ID4gY29tbWl0cy4KPiAKPiBJTU8gd2Ugc2hvdWxkIGJlIGVy cmluZyBvbiB0aGUgc2lkZSBvZiBiZWluZyBvdmVybHkgY2F1dGlvdXMgYWJvdXQgZW50ZXJpbmcg UFNSCj4gc2luY2UgaXQncyBhIHByZXR0eSBiaWcgY29tbWl0bWVudC4gRG9pbmcgdGhpcyBpbiBh dG9taWMgY2hlY2sgaXMgYSBzaWduYWwgdGhhdAo+IHVzZXJzcGFjZSBpcyBhdCBsZWFzdCBpbnRl cmVzdGVkIGluIHBva2luZyBhdCBLTVMgYW5kIHdlIHNob3VsZCBiYWNrIG9mZiB1bnRpbAo+IGl0 cyBkb25lLgo+IAo+ID4gCj4gPiBJZiB5b3UgZmVlbCBsaWtlIHdlIHNob3VsZCBkbyB0aGF0LCB0 aGVuIHdlIG5lZWQgYSBjb21tZW50IGhlcmUsIHNpbmNlCj4gPiBpdCdzIGNsZWFybHkgYWdhaW5z dCBhbGwgdGhlICJuZXZlciB0b3VjaCBhbnl0aGluZyBvdXRzaWRlIG9mIHRoZSBmcmVlCj4gPiBz dGFuZGluZyBzdGF0ZSBzdHJ1Y3R1cmVzIGZyb20gYXRvbWljX2NoZWNrIGNvZGUiIHJ1bGVzLgo+ IAo+IEdvb2QgcG9pbnQsIEknbGwgYWRkIGEgY29tbWVudCB0byB0aGlzIGVmZmVjdC4gV2UncmUg YnJlYWtpbmcgYWxsIHRoZSBydWxlcwo+ICdyb3VuZCBoZXJlIDopCj4gCj4gPiAKPiA+ID4gKwl9 Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2Fs dGVyX3N0YXRlKTsKPiAKPiAvc25pcAo+IAo+ID4gPiArLyoqCj4gPiA+ICsgKiBkcm1fYXRvbWlj X2NydGNfZWZmZWN0aXZlbHlfYWN0aXZlIC0gY29tcHV0ZSB3aGV0aGVyIGNydGMgaXMgYWN0dWFs bHkgYWN0aXZlCj4gPiA+ICsgKiBAc3RhdGU6ICZkcm1fY3J0Y19zdGF0ZSBmb3IgdGhlIENSVEMK PiA+ID4gKyAqCj4gPiA+ICsgKiBXaGVuIGluIHNlbGYgcmVmcmVzaCBtb2RlLCB0aGUgY3J0Y19z dGF0ZS0+YWN0aXZlIHZhbHVlIHdpbGwgYmUgZmFsc2UsIHNpbmNlCj4gPiA+ICsgKiB0aGUgY3J0 YyBpcyBvZmYuIEhvd2V2ZXIgaW4gc29tZSBjYXNlcyB3ZSdyZSBpbnRlcmVzdGVkIGluIHdoZXRo ZXIgdGhlIGNydGMKPiA+ID4gKyAqIGlzIGFjdGl2ZSwgb3IgZWZmZWN0aXZlbHkgYWN0aXZlIChp ZTogaXQncyBjb25uZWN0ZWQgdG8gYW4gYWN0aXZlIGRpc3BsYXkpLgo+ID4gPiArICogSW4gdGhl c2UgY2FzZXMsIHVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2YganVzdCBjaGVja2luZyBhY3Rp dmUuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ID4gPiArZHJtX2F0b21p Y19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2ZShjb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0 YXRlKQo+ID4gPiArewo+ID4gPiArCXJldHVybiBzdGF0ZS0+YWN0aXZlIHx8IHN0YXRlLT5zZWxm X3JlZnJlc2hfYWN0aXZlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAjZW5kaWYgLyogRFJNX0FU T01JQ19IXyAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o IGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiA+IGluZGV4IGM4MDYxOTkyZDZjYi4u MGFlN2U4MTJlYzYyIDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9y LmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPiA+IEBAIC01MDEs NiArNTAxLDM3IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHsKPiA+ID4gIAkvKiogQHR2 OiBUViBjb25uZWN0b3Igc3RhdGUgKi8KPiA+ID4gIAlzdHJ1Y3QgZHJtX3R2X2Nvbm5lY3Rvcl9z dGF0ZSB0djsKPiA+ID4gIAo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBzZWxmX3JlZnJlc2hfY2hh bmdlZDoKPiA+ID4gKwkgKgo+ID4gPiArCSAqIFNldCB0cnVlIHdoZW4gc2VsZiByZWZyZXNoIHN0 YXR1cyBoYXMgY2hhbmdlZC4gVGhpcyBpcyB1c2VmdWwgZm9yCj4gPiA+ICsJICogdXNlIGluIGVu Y29kZXIvYnJpZGdlIGVuYWJsZSB3aGVyZSB0aGUgb2xkIHN0YXRlIGlzIHVuYXZhaWxhYmxlIHRv Cj4gPiA+ICsJICogdGhlIGRyaXZlciBhbmQgaXQgbmVlZHMgdG8ga25vdyB3aGV0aGVyIHRoZSBl bmFibGUgdHJhbnNpdGlvbiBpcyBhCj4gPiA+ICsJICogZnVsbCB0cmFuc2l0aW9uLCBvciBpZiBp dCBqdXN0IG5lZWRzIHRvIGV4aXQgc2VsZiByZWZyZXNoIG1vZGUuCj4gPiAKPiA+IFVoLCB3ZSBq dXN0IG5lZWQgcHJvcGVyIGF0b21pYyBjYWxsYmFja3Mgd2l0aCBhbGwgdGhlIHN0YXRlcyBhdmFp bGFibGUuCj4gPiBPbmNlIHlvdSBoYXZlIG9uZSwgeW91IGNhbiBnZXQgYXQgdGhlIG90aGVycy4K PiA+IAo+IAo+IFdlbGwsIHN1cmUsIHdlIGNvdWxkIGRvIHRoYXQgdG9vIDopCgp0YmggSSdtIG5v dCBzdXJlIHdoZXRoZXIgdGhhdCdzIHJlYWxseSBiZXR0ZXIsIHRoZSBkdXBsaWNhdGlvbiBqdXN0 IGlya3MKbWUuIFdpdGggYSBuZXcgY2FsbGJhY2sgZm9yIHRoZSBzcGVjaWFsIHNlbGYtcmVmcmVz aCBkaXNhYmxlIChJIGd1ZXNzIHdlCm9ubHkgbmVlZCB0aGF0IG9uIHRoZSBjb25uZWN0b3IpLCBw bHVzIGxvb2tpbmcgYXQKY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPnNlbGZfcmVmcmVz aCwgSSB0aGluayB3ZSdkIGJlIGNvdmVyZWQKYXMtaXM/IE9yIGlzIHRoZXJlIGEgY29ybmVyIGNh c2UgSSdtIHN0aWxsIG1pc3Npbmc/Cgo+ID4gPiArCSAqLwo+ID4gPiArCWJvb2wgc2VsZl9yZWZy ZXNoX2NoYW5nZWQ7Cj4gPiA+ICsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAc2VsZl9yZWZyZXNo X2FjdGl2ZToKPiA+ID4gKwkgKgo+ID4gPiArCSAqIFVzZWQgYnkgdGhlIHNlbGYgcmVmcmVzaCAo U1IpIGhlbHBlcnMgdG8gZGVub3RlIHdoZW4gdGhlIGRpc3BsYXkKPiA+ID4gKwkgKiBzaG91bGQg YmUgc2VsZiByZWZyZXNoaW5nLiBJZiB5b3VyIGNvbm5lY3RvciBpcyBTUi1jYXBhYmxlLCBjaGVj awo+ID4gPiArCSAqIHRoaXMgZmxhZyBpbiAuZGlzYWJsZSgpLiBJZiBpdCBpcyB0cnVlLCBpbnN0 ZWFkIG9mIHNodXR0aW5nIG9mZiB0aGUKPiA+ID4gKwkgKiBwYW5lbCwgcHV0IGl0IGludG8gc2Vs ZiByZWZyZXNoaW5nIG1vZGUuCj4gPiA+ICsJICovCj4gPiA+ICsJYm9vbCBzZWxmX3JlZnJlc2hf YWN0aXZlOwo+ID4gPiArCj4gPiA+ICsJLyoqCj4gPiA+ICsJICogQHNlbGZfcmVmcmVzaF9hd2Fy ZToKPiA+ID4gKwkgKgo+ID4gPiArCSAqIFRoaXMgdHJhY2tzIHdoZXRoZXIgYSBjb25uZWN0b3Ig aXMgYXdhcmUgb2YgdGhlIHNlbGYgcmVmcmVzaCBzdGF0ZS4KPiA+ID4gKwkgKiBJdCBzaG91bGQg YmUgc2V0IHRvIHRydWUgZm9yIHRob3NlIGNvbm5lY3RvciBpbXBsZW1lbnRhdGlvbnMgd2hpY2gK PiA+ID4gKwkgKiB1bmRlcnN0YW5kIHRoZSBzZWxmIHJlZnJlc2ggc3RhdGUuIFRoaXMgaXMgbmVl ZGVkIHNpbmNlIHRoZSBjcnRjCj4gPiA+ICsJICogcmVnaXN0ZXJzIHRoZSBzZWxmIHJlZnJlc2gg aGVscGVycyBhbmQgaXQgZG9lc24ndCBrbm93IGlmIHRoZQo+ID4gPiArCSAqIGNvbm5lY3RvcnMg ZG93bnN0cmVhbSBoYXZlIGltcGxlbWVudGVkIHNlbGYgcmVmcmVzaCBlbnRyeS9leGl0Lgo+ID4g Cj4gPiBNYXliZSBnb29kIHRvIGNsYXJpZnkgd2hldGhlciBkcml2ZXJzIGNhbiBhZGp1c3QgdGhp cyBhdCBydW50aW1lIGZyb20KPiA+IHRoZWlyIGF0b21pY19jaGVjayBjb2RlPyBJIHRoaW5rIHRo ZXkgY2FuIC4uLgo+IAo+IFdpbGwgZG8uIFllcyB0aGV5IGNhbiwgdGhhdCdzIGV4YWN0bHkgd2hh dCB0aGlzIGlzIGZvci4gU2luY2Ugbm90IGFsbCBwYW5lbHMKPiBjb25uZWN0ZWQgdG8gYSBkZXZp Y2UgY2FuIHN1cHBvcnQgU1IsIGFuZCB5b3UgY291bGQgY29uY2VpdmFibHkgaG90cGx1ZyBiZXR3 ZWVuCj4gdGhlIHR3bywgd2Ugd2FudCBhIHdheSB0byBhdm9pZCB0dXJuaW5nIG9mZiB0aGUgY2ly Y3VpdHJ5IHVwc3RyZWFtIG9mIHRoZSBwYW5lbC4KPiAKPiA+IAo+ID4gPiArCSAqLwo+ID4gPiAr CWJvb2wgc2VsZl9yZWZyZXNoX2F3YXJlOwo+ID4gPiArCj4gPiA+ICAJLyoqCj4gPiA+ICAJICog QHBpY3R1cmVfYXNwZWN0X3JhdGlvOiBDb25uZWN0b3IgcHJvcGVydHkgdG8gY29udHJvbCB0aGUK PiA+ID4gIAkgKiBIRE1JIGluZm9mcmFtZSBhc3BlY3QgcmF0aW8gc2V0dGluZy4KPiA+ID4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5o Cj4gPiA+IGluZGV4IGY3YzMwMjJkYmRmNC4uMjA4ZDY4MTI5YjRjIDEwMDY0NAo+ID4gPiAtLS0g YS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRj LmgKPiA+ID4gQEAgLTUzLDYgKzUzLDcgQEAgc3RydWN0IGRybV9tb2RlX3NldDsKPiA+ID4gIHN0 cnVjdCBkcm1fZmlsZTsKPiA+ID4gIHN0cnVjdCBkcm1fY2xpcF9yZWN0Owo+ID4gPiAgc3RydWN0 IGRybV9wcmludGVyOwo+ID4gPiArc3RydWN0IGRybV9zZWxmX3JlZnJlc2hfc3RhdGU7Cj4gPiA+ ICBzdHJ1Y3QgZGV2aWNlX25vZGU7Cj4gPiA+ICBzdHJ1Y3QgZG1hX2ZlbmNlOwo+ID4gPiAgc3Ry dWN0IGVkaWQ7Cj4gPiA+IEBAIC0yOTksNiArMzAwLDE3IEBAIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSB7Cj4gPiA+ICAJICovCj4gPiA+ICAJYm9vbCB2cnJfZW5hYmxlZDsKPiA+ID4gIAo+ID4gPiAr CS8qKgo+ID4gPiArCSAqIEBzZWxmX3JlZnJlc2hfYWN0aXZlOgo+ID4gPiArCSAqCj4gPiA+ICsJ ICogVXNlZCBieSB0aGUgc2VsZiByZWZyZXNoIGhlbHBlcnMgdG8gZGVub3RlIHdoZW4gYSBzZWxm IHJlZnJlc2gKPiA+ID4gKwkgKiB0cmFuc2l0aW9uIGlzIG9jY3VyaW5nLiBUaGlzIHdpbGwgYmUg c2V0IG9uIGVuYWJsZS9kaXNhYmxlIGNhbGxiYWNrcwo+ID4gPiArCSAqIHdoZW4gc2VsZiByZWZy ZXNoIGlzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEluIHNvbWUgY2FzZXMsIGl0IG1heQo+ ID4gPiArCSAqIG5vdCBiZSBkZXNpcmFibGUgdG8gZnVsbHkgc2h1dCBvZmYgdGhlIGNydGMgZHVy aW5nIHNlbGYgcmVmcmVzaC4KPiA+ID4gKwkgKiBDUlRDJ3MgY2FuIGluc3BlY3QgdGhpcyBmbGFn IGFuZCBkZXRlcm1pbmUgdGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbi4KPiA+ID4gKwkgKi8KPiA+ ID4gKwlib29sIHNlbGZfcmVmcmVzaF9hY3RpdmU7Cj4gPiA+ICsKPiA+ID4gIAkvKioKPiA+ID4g IAkgKiBAZXZlbnQ6Cj4gPiA+ICAJICoKPiA+ID4gQEAgLTEwODcsNiArMTA5OSwxMyBAQCBzdHJ1 Y3QgZHJtX2NydGMgewo+ID4gPiAgCSAqIFRoZSBuYW1lIG9mIHRoZSBDUlRDJ3MgZmVuY2UgdGlt ZWxpbmUuCj4gPiA+ICAJICovCj4gPiA+ICAJY2hhciB0aW1lbGluZV9uYW1lWzMyXTsKPiA+ID4g Kwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBzZWxmX3JlZnJlc2hfc3RhdGU6IEhvbGRzIHRoZSBz dGF0ZSBmb3IgdGhlIHNlbGYgcmVmcmVzaCBoZWxwZXJzCj4gPiA+ICsJICoKPiA+ID4gKwkgKiBJ bml0aWFsaXplZCB2aWEgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfcmVnaXN0ZXIoKS4KPiA+ID4g KwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc2VsZl9yZWZyZXNo X3N0YXRlOwo+ID4gCj4gPiBDYW4gd2UgZHJvcCB0aGUgX3N0YXRlIGhlcmU/IEluIGF0b21pYyBz dHJ1Y3R1cmVzIHdpdGggX3N0YXRlIHN1ZmZpeCBoYXZlCj4gPiB2ZXJ5IHNwZWNpZmljIG1lYW5p bmcmc2VtYW50aWNzLCB0aGlzIGlzbid0IG9uZSBvZiB0aGVtLiBzL3N0YXRlL2RhdGUvIGlzCj4g Cj4gZGF0YSBtaWdodCBiZSBldmVuIGJldHRlciA7KQo+IAo+ID4gaW1vIGNsZWFyZXIgaW4gdGhl IGRlc2NyaXB0aW9uIHRvby4KPiAKPiBZZWFoLCBnb29kIHN1Z2dlc3Rpb24uCj4gCj4gPiAKPiA+ ID4gIH07Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zZWxmX3JlZnJlc2hf aGVscGVyLmgKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi4wMTVkYWNiOGE4MDcKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9pbmNsdWRl L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5oCj4gPiA+IEBAIC0wLDAgKzEsMjMgQEAKPiA+ ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KPiA+ID4gKy8qCj4gPiA+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlLCBJbmMuCj4gPiA+ICsgKgo+ID4gPiArICogQXV0 aG9yczoKPiA+ID4gKyAqIFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ID4gPiAr ICovCj4gPiA+ICsjaWZuZGVmIERSTV9TRUxGX1JFRlJFU0hfSEVMUEVSX0hfCj4gPiA+ICsjZGVm aW5lIERSTV9TRUxGX1JFRlJFU0hfSEVMUEVSX0hfCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBkcm1f YXRvbWljX3N0YXRlOwo+ID4gPiArc3RydWN0IGRybV9jb25uZWN0b3I7Cj4gPiA+ICtzdHJ1Y3Qg ZHJtX2RldmljZTsKPiA+ID4gK3N0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlOwo+ID4gPiAr c3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4Owo+ID4gPiArCj4gPiA+ICt2b2lkIGRybV9z ZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gPiA+ICsKPiA+ID4gK2ludCBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9yZWdpc3Rl cihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ICsJCQkJICAgICB1bnNpZ25lZCBpbnQgZW50 cnlfZGVsYXlfbXMpOwo+ID4gPiArCj4gPiA+ICt2b2lkIGRybV9zZWxmX3JlZnJlc2hfaGVscGVy X3VucmVnaXN0ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiA+ID4gKyNlbmRpZgo+ID4gPiAt LSAKPiA+ID4gU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0g T1MKPiA+IAo+ID4gQXNpZGUgZnJvbSB0aGUgYmlrZXNoZWRzIGFuZCBzdWdnZXN0aW9ucywgbG9v a3MgYWxsIGdvb2QgdG8gbWUuIEkgdGhpbmsKPiA+IGl0J2QgYmUgZ29vZCB0byBhbHNvIGhhdmUg YW4gYWNrIGZyb20gc29tZSBvdGhlciBzb2MgZGlzcGxheSBtYWludGFpbmVyCj4gPiB0aGF0IHRo aXMgaXMgdXNlZnVsIChUb21pLCBMYXVyZW50LCBMaXZpdSwgb3Igc29tZW9uZSBlbHNlKS4gSXQn cyBhbHdheXMKPiA+IGdvb2QgdG8gY2hlY2sgYSBkZXNpZ24gYWdhaW5zdCBhIGhhbmRmdWwgb2Yg YWN0dWFsIGRyaXZlcnMgaW5zdGVhZCBvZiBzb21lCj4gPiBtb29uc2hvdCBjbGVhbiBzaGVldCBk ZXNpZ24gOi0pCj4gCj4gWWVhaCwgd291bGQgYmUgbmljZSB0byBnZXQgYSB0aGlyZCBzZXQgb2Yg ZXllcy4gSSdtIHBsYW5uaW5nIG9uIHVzaW5nIHRoaXMKPiBmb3IgbXNtIGRzaSBhcyB3ZWxsLCBz byBJJ3ZlIGJlZW4ga2VlcGluZyB0aGF0IGluIHRoZSBiYWNrIG9mIG15IGhlYWQgd2hpbGUKPiB3 b3JraW5nIG9uIHRoaXMuCj4gCj4gPiAKPiA+IEJ1dCB0aGVyZSdzIGEgYmlnIG9uZTogV291bGQg YmUgcmVhbGx5IGxvdmVseSB0byBoYXZlIHNlbGZ0ZXN0cyBmb3IgdGhpcwo+ID4gc3R1ZmYsIGtp bmRhIGFzIGEgc3RhcnQgZm9yIG1ha2luZyBzdXJlIHdlIGhhdmUgYSBzb2xpZCBtb2RlbCBvZiB0 aGUKPiA+IGF0b21pYyBoZWxwZXJzIC4uLgo+IAo+IEkgZ290IHNvIGZhciB0aHJvdWdoIHRoZSBy ZXZpZXcgd2l0aG91dCBhbnkgQmlnIEl0ZW1zICh3ZWxsIGV4Y2VwdCBmb3IgdGhlCj4gY29tcGxl dGUgcmVkZXNpZ24gYmV0d2VlbiB2MSBhbmQgdjIgKGJ1dCBJIGtpbmQgb2YgZXhwZWN0ZWQgdGhh dCkpISBJJ3ZlIG5ldmVyCj4gZG9uZSBhbnkgc2VsZnRlc3RzLCBzbyB0aGlzIHdpbGwgYmUgYSBn b29kIGNoYW5jZSB0byBnZXQgZmFtaWxpYXIgd2l0aCB0aGVtLgoKQXdlc29tZS4gSXQgbWlnaHQg YmUgYSBiaXQgbW9yZSB3b3JrIHNpbmNlIG5vIG9uZSB5ZXQgbW9ja2VkIGVub3VnaCBvZgpkcm1f ZGV2aWNlIHRvIHJ1biB0aGUgYXRvbWljIGhlbHBlcnMsIGJ1dCBmb3IgYSBiYXNpYyBzZWxmLXJl ZnJlc2gKdGVzdGNhc2UgSSBkb24ndCB0aGluayB5b3UgbmVlZCBtdWNoIHJlYWxseS4gUGx1cyB3 ZSd2ZSBtYWRlIGFsbW9zdCBhbGwKY2FsbGJhY2tzIG9wdGlvbmFsLCB0aGUgbWluaW1hbCBtb2Nr IG9iamVjdHMgc2hvdWxkIGJlIHJhdGhlciB0cml2aWFsLgoKQ2hlZXJzLCBEYW5pZWwKLS0gCkRh bmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9i bG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==