From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: Re: [PATCH v4 05/16] drm: bridge: analogix/dp: dynamic parse sync_pol & interlace & colorimetry Date: Sun, 06 Sep 2015 10:00:41 +0800 Message-ID: <55EB9E49.90000@rock-chips.com> References: <1441086371-24838-1-git-send-email-ykk@rock-chips.com> <1441086934-25107-1-git-send-email-ykk@rock-chips.com> <55E7FF17.20402@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <55E7FF17.20402-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Krzysztof Kozlowski , Heiko Stuebner , Thierry Reding , Jingoo Han , Inki Dae , joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org, Kukjin Kim , Mark Yao Cc: David Airlie , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Andrzej Hajda , Gustavo Padovan , architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, seanpaul-F7+t8E8rja9Wk0Htik3J/w@public.gmane.org, djkurtz-F7+t8E8rja9Wk0Htik3J/w@public.gmane.org, Kishon Vijay Abraham I , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Russell King , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Pawel Moll , Ian Campbell , Rob Herring , dianders-F7+t8E8rja9Wk0Htik3J/w@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Kyungmin Park , Kumar Gala , ajaynumb-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Andy Yan List-Id: devicetree@vger.kernel.org SGkgS3J6eXN6dG9mLAoK5ZyoIDA5LzAzLzIwMTUgMDQ6MDQgUE0sIEtyenlzenRvZiBLb3psb3dz a2kg5YaZ6YGTOgo+IE9uIDAxLjA5LjIwMTUgMTQ6NTUsIFlha2lyIFlhbmcgd3JvdGU6Cj4+IEJv dGggaHN5bmMvdnN5bmMgcG9sYXJpdHkgYW5kIGludGVybGFjZSBtb2RlIGNhbiBiZSBwYXJzZWQg ZnJvbQo+PiBkcm0gZGlzcGxheSBtb2RlLCBhbmQgZHluYW1pY19yYW5nZSBhbmQgeWNiY3JfY29l ZmYgY2FuIGJlIGp1ZGdlCj4+IGJ5IHRoZSB2aWRlbyBjb2RlLCBzYW1lIHRvIGNvbG9yIHNwYWNl IGFuZCBjb2xvciBkZXB0aCBjYW4gYmUKPj4gcGFyc2VkIGZyb20gRURJRC4KPj4KPj4gQnV0IHBy ZXN1bWFibHkgRXh5bm9zIHN0aWxsIHJlbGFpZXMgb24gdGhlIERUIHByb3BlcnRpZXMsIHNvIHRh a2UKPiBzL3JlbGFpZXMvcmVsaWVzLwo+Cj4+IGdvb2QgdXNlIG9mIG1vZGVfZml4dXAoKSBpbiB0 byBhY2hpZXZlIHRoZSBjb21wYXRpYmlsaXR5IGhhY2tzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBZ YWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Cj4+IC0tLQo+PiBDaGFuZ2VzIGluIHY0Ogo+ PiAtIFRha2UgS3J6eXN6dG9mIHN1Z2dlc3QsIHByb3ZpZGUgYmFja3dvcmQgY29tcGF0aWJpbGl0 eSB3aXRoIHNhbXN1bmcuCj4+IC0gVGFrZSBUaGllcnJ5IHN1Z2dlc3QsIGFkZCAiY29sb3ItZGVw dGgiIGFuZCAiY29sb3Itc3BhY2UiIGR5bmFtaWMgcGFyc2VkLgo+Pgo+PiBDaGFuZ2VzIGluIHYz Ogo+PiAtIFRha2UgVGhpZXJyeSBSZWRpbmcgc3VnZ2VzdCwgZHluYW1pYyBwYXJzZSB2aWRlbyB0 aW1pbmcgaW5mbyBmcm9tCj4+ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIGFuZCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfaW5mby4KPj4KPj4gQ2hhbmdlcyBpbiB2MjogTm9uZQo+Pgo+PiAgIGRyaXZl cnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jIHwgMTQxICsrKysr KysrKysrKystLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5h bG9naXhfZHBfY29yZS5oIHwgICAyICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFs b2dpeC9hbmFsb2dpeF9kcF9yZWcuYyAgfCAgMTQgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcC5jICAgICAgICAgICAgICAgICB8ICA1OCArKysrKysrKy0KPj4gICA0IGZp bGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKPj4KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29y ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMK Pj4gaW5kZXggNzE5NjA5Ny4uZjBkYjkyZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMKPj4gQEAgLTg5Nyw4ICs4OTcs OCBAQCBzdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9jb21taXQoc3RydWN0IGFuYWxvZ2l4X2RwX2Rl dmljZSAqZHApCj4+ICAgCQlyZXR1cm47Cj4+ICAgCX0KPj4gICAKPj4gLQlyZXQgPSBhbmFsb2dp eF9kcF9zZXRfbGlua190cmFpbihkcCwgZHAtPnZpZGVvX2luZm8tPmxhbmVfY291bnQsCj4+IC0J CQkJCSBkcC0+dmlkZW9faW5mby0+bGlua19yYXRlKTsKPj4gKwlyZXQgPSBhbmFsb2dpeF9kcF9z ZXRfbGlua190cmFpbihkcCwgZHAtPnZpZGVvX2luZm8ubGFuZV9jb3VudCwKPj4gKwkJCQkJIGRw LT52aWRlb19pbmZvLmxpbmtfcmF0ZSk7Cj4+ICAgCWlmIChyZXQpIHsKPj4gICAJCWRldl9lcnIo ZHAtPmRldiwgInVuYWJsZSB0byBkbyBsaW5rIHRyYWluXG4iKTsKPj4gICAJCXJldHVybjsKPj4g QEAgLTEwODEsNiArMTA4MSw4MiBAQCBzdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9icmlkZ2VfZGlz YWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+PiAgIAlkcC0+ZHBtc19tb2RlID0gRFJN X01PREVfRFBNU19PRkY7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIHZvaWQgYW5hbG9naXhfZHBf YnJpZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4+ICsJCQkJCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICpvcmlnX21vZGUsCj4+ICsJCQkJCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlKQo+PiArewo+PiArCXN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwID0g YnJpZGdlLT5kcml2ZXJfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGlz cGxheV9pbmZvID0gJmRwLT5jb25uZWN0b3IuZGlzcGxheV9pbmZvOwo+PiArCXN0cnVjdCB2aWRl b19pbmZvICp2aWRlb19pbmZvID0gJmRwLT52aWRlb19pbmZvOwo+PiArCXN0cnVjdCBkZXZpY2Vf bm9kZSAqZHBfbm9kZSA9IGRwLT5kZXYtPm9mX25vZGU7Cj4+ICsJaW50IHZpYzsKPj4gKwo+PiAr CS8qIGludGVybGFjZXMgJiBoc3luYyBwb2wgJiB2c3luYyBwb2wgKi8KPj4gKwl2aWRlb19pbmZv LT5pbnRlcmxhY2VkID0gISEobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSk7 Cj4+ICsJdmlkZW9faW5mby0+dl9zeW5jX3BvbGFyaXR5ID0gISEobW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX05WU1lOQyk7Cj4+ICsJdmlkZW9faW5mby0+aF9zeW5jX3BvbGFyaXR5ID0gISEo bW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05IU1lOQyk7Cj4+ICsKPj4gKwkvKiBkeW5hbWlj X3JhbmdlICYgY29sb3JpbWV0cnkgKi8KPj4gKwl2aWMgPSBkcm1fbWF0Y2hfY2VhX21vZGUobW9k ZSk7Cj4+ICsJaWYgKCh2aWMgPT0gNikgfHwgKHZpYyA9PSA3KSB8fCAodmljID09IDIxKSB8fCAo dmljID09IDIyKSB8fAo+PiArCSAgICAodmljID09IDIpIHx8ICh2aWMgPT0gMykgfHwgKHZpYyA9 PSAxNykgfHwgKHZpYyA9PSAxOCkpIHsKPj4gKwkJdmlkZW9faW5mby0+ZHluYW1pY19yYW5nZSA9 IENFQTsKPj4gKwkJdmlkZW9faW5mby0+eWNiY3JfY29lZmYgPSBDT0xPUl9ZQ0JDUjYwMTsKPj4g Kwl9IGVsc2UgaWYgKHZpYykgewo+PiArCQl2aWRlb19pbmZvLT5keW5hbWljX3JhbmdlID0gQ0VB Owo+PiArCQl2aWRlb19pbmZvLT55Y2Jjcl9jb2VmZiA9IENPTE9SX1lDQkNSNzA5Owo+PiArCX0g ZWxzZSB7Cj4+ICsJCXZpZGVvX2luZm8tPmR5bmFtaWNfcmFuZ2UgPSBWRVNBOwo+PiArCQl2aWRl b19pbmZvLT55Y2Jjcl9jb2VmZiA9IENPTE9SX1lDQkNSNzA5Owo+PiArCX0KPj4gKwo+PiArCXN3 aXRjaCAoZGlzcGxheV9pbmZvLT5icGMpIHsKPj4gKwljYXNlIDEyOgo+PiArCQl2aWRlb19pbmZv LT5jb2xvcl9kZXB0aCA9IENPTE9SXzEyOwo+PiArCQlicmVhazsKPj4gKwljYXNlIDEwOgo+PiAr CQl2aWRlb19pbmZvLT5jb2xvcl9kZXB0aCA9IENPTE9SXzEwOwo+PiArCQlicmVhazsKPj4gKwlj YXNlIDg6Cj4+ICsJCXZpZGVvX2luZm8tPmNvbG9yX2RlcHRoID0gQ09MT1JfODsKPj4gKwkJYnJl YWs7Cj4+ICsJY2FzZSA2Ogo+PiArCQl2aWRlb19pbmZvLT5jb2xvcl9kZXB0aCA9IENPTE9SXzY7 Cj4+ICsJCWJyZWFrOwo+PiArCWRlZmF1bHQ6Cj4+ICsJCXZpZGVvX2luZm8tPmNvbG9yX2RlcHRo ID0gQ09MT1JfODsKPj4gKwkJYnJlYWs7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGRpc3BsYXlfaW5m by0+Y29sb3JfZm9ybWF0cyB8IERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQpCj4+ICsJCXZpZGVv X2luZm8tPmNvbG9yX3NwYWNlID0gQ09MT1JfWUNCQ1I0NDQ7Cj4+ICsJZWxzZSBpZiAoZGlzcGxh eV9pbmZvLT5jb2xvcl9mb3JtYXRzIHwgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMikKPj4gKwkJ dmlkZW9faW5mby0+Y29sb3Jfc3BhY2UgPSBDT0xPUl9ZQ0JDUjQyMjsKPj4gKwllbHNlIGlmIChk aXNwbGF5X2luZm8tPmNvbG9yX2Zvcm1hdHMgfCBEUk1fQ09MT1JfRk9STUFUX1JHQjQ0NCkKPj4g KwkJdmlkZW9faW5mby0+Y29sb3Jfc3BhY2UgPSBDT0xPUl9SR0I7Cj4+ICsJZWxzZQo+PiArCQl2 aWRlb19pbmZvLT5jb2xvcl9zcGFjZSA9IENPTE9SX1JHQjsKPj4gKwo+PiArCS8qCj4+ICsJICog Tk9URTogdGhvc2UgcHJvcGVydHkgcGFyc2VpbmcgY29kZSBpcyB1c2VkIGZvcgo+IHMvcGFyc2Vp bmcvcGFyc2luZy8KPgo+IEJUVywgeW91IGNhbiBlYXNpbHkgaW50ZWdyYXRlIHNwZWxsLWNoZWNr IHRvIHZpbS4uLiBJdCBpcyBub3QgdGhhdCBJCj4gc2VhcmNoIGZvciBzdWNoIG1pc3NwZWxsaW5n cyAtIHRoZXkgYXJlIGhpZ2hsaWdodGVkLi4uCgpXb3csIHRoYW5rcyBmb3IgeW91ciByZW1pbmQs IEkgaGF2ZSBzZXQgdGhlIHNwZWxsLWNoZWNrIG5vdy4gIDopCgo+Cj4+ICsJICogcHJvdmlkaW5n IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIHNhbXN1bmcgcGxhdGZvcm0uCj4+ICsJICovCj4+ ICsJb2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInNhbXN1bmcsY29sb3Itc3BhY2UiLAo+ PiArCQkJICAgICAmdmlkZW9faW5mby0+Y29sb3Jfc3BhY2UpOwo+PiArCW9mX3Byb3BlcnR5X3Jl YWRfdTMyKGRwX25vZGUsICJzYW1zdW5nLGR5bmFtaWMtcmFuZ2UiLAo+PiArCQkJICAgICAmdmlk ZW9faW5mby0+ZHluYW1pY19yYW5nZSk7Cj4+ICsJb2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9k ZSwgInNhbXN1bmcseWNiY3ItY29lZmYiLAo+PiArCQkJICAgICAmdmlkZW9faW5mby0+eWNiY3Jf Y29lZmYpOwo+PiArCW9mX3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJzYW1zdW5nLGNvbG9y LWRlcHRoIiwKPj4gKwkJCSAgICAgJnZpZGVvX2luZm8tPmNvbG9yX2RlcHRoKTsKPj4gKwlvZl9w cm9wZXJ0eV9yZWFkX3UzMihkcF9ub2RlLCAiaHN5bmMtYWN0aXZlLWhpZ2giLAo+PiArCQkJICAg ICAodW5zaWduZWQgaW50ICopJnZpZGVvX2luZm8tPmhfc3luY19wb2xhcml0eSk7Cj4+ICsJb2Zf cHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInZzeW5jLWFjdGl2ZS1oaWdoIiwKPj4gKwkJCSAg ICAgKHVuc2lnbmVkIGludCAqKSZ2aWRlb19pbmZvLT52X3N5bmNfcG9sYXJpdHkpOwo+PiArCW9m X3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJpbnRlcmxhY2VkIiwKPj4gKwkJCSAgICAgKHVu c2lnbmVkIGludCAqKSZ2aWRlb19pbmZvLT5pbnRlcmxhY2VkKTsKPiBZb3UgbWFkZSBhc3N1bXB0 aW9uIHRoYXQgdGhlIHNpemVvZihib29sKSBpcyBhbHdheXMgZXF1YWwgdG8KPiBzaXplb2YodTMy KS4uLiBUaGVuIHlvdSBjYXN0IGl0IHRvIHBvaW50ZXIgdG8gdW5zaWduZWQgaW50IGJ1dCBmdW5j dGlvbgo+IHdhbnRzIHBvaW50ZXIgdG8gdTMyLiBKdXN0IGZvciByZWFkaW5nIGJvb2xlYW4gcHJv cGVydHkuIFRoZXJlJ3MgZWFzaWVyCj4gd2F5IC0gb2ZfcHJvcGVydHlfcmVhZF9ib29sLiBJdCBy ZXR1cm5zIGJvb2wuCgpUaGFua3MsIGRvbmUuCgo+Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgdm9p ZCBhbmFsb2dpeF9kcF9icmlkZ2Vfbm9wKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+ICAg ewo+PiAgIAkvKiBkbyBub3RoaW5nICovCj4+IEBAIC0xMDkxLDYgKzExNjcsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgYW5hbG9naXhfZHBfYnJpZGdlX2Z1bmNzID0g ewo+PiAgIAkuZGlzYWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9kaXNhYmxlLAo+PiAgIAkucHJl X2VuYWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9ub3AsCj4+ICAgCS5wb3N0X2Rpc2FibGUgPSBh bmFsb2dpeF9kcF9icmlkZ2Vfbm9wLAo+PiArCS5tb2RlX3NldCA9IGFuYWxvZ2l4X2RwX2JyaWRn ZV9tb2RlX3NldCwKPj4gICAJLmF0dGFjaCA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdHRhY2gsCj4+ ICAgfTsKPj4gICAKPj4gQEAgLTExMjEsNjIgKzExOTgsMjQgQEAgc3RhdGljIGludCBhbmFsb2dp eF9kcF9jcmVhdGVfYnJpZGdlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+PiAgIAlyZXR1 cm4gMDsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgc3RydWN0IHZpZGVvX2luZm8gKmFuYWxvZ2l4 X2RwX2R0X3BhcnNlX3BkYXRhKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gK3N0YXRpYyBpbnQgYW5h bG9naXhfZHBfZHRfcGFyc2VfcGRhdGEoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCj4+ ICAgewo+PiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZHBfbm9kZSA9IGRldi0+b2Zfbm9kZTsKPj4g LQlzdHJ1Y3QgdmlkZW9faW5mbyAqZHBfdmlkZW9fY29uZmlnOwo+PiAtCj4+IC0JZHBfdmlkZW9f Y29uZmlnID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkcF92aWRlb19jb25maWcpLAo+PiAt CQkJCSAgICAgICBHRlBfS0VSTkVMKTsKPj4gLQlpZiAoIWRwX3ZpZGVvX2NvbmZpZykKPj4gLQkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+IC0KPj4gLQlkcF92aWRlb19jb25maWctPmhfc3lu Y19wb2xhcml0eSA9Cj4+IC0JCW9mX3Byb3BlcnR5X3JlYWRfYm9vbChkcF9ub2RlLCAiaHN5bmMt YWN0aXZlLWhpZ2giKTsKPj4gLQo+PiAtCWRwX3ZpZGVvX2NvbmZpZy0+dl9zeW5jX3BvbGFyaXR5 ID0KPj4gLQkJb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRwX25vZGUsICJ2c3luYy1hY3RpdmUtaGln aCIpOwo+PiAtCj4+IC0JZHBfdmlkZW9fY29uZmlnLT5pbnRlcmxhY2VkID0KPj4gLQkJb2ZfcHJv cGVydHlfcmVhZF9ib29sKGRwX25vZGUsICJpbnRlcmxhY2VkIik7Cj4+IC0KPj4gLQlpZiAob2Zf cHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInNhbXN1bmcsY29sb3Itc3BhY2UiLAo+PiAtCQkJ CSAmZHBfdmlkZW9fY29uZmlnLT5jb2xvcl9zcGFjZSkpIHsKPj4gLQkJZGV2X2VycihkZXYsICJm YWlsZWQgdG8gZ2V0IGNvbG9yLXNwYWNlXG4iKTsKPj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7Cj4+IC0JfQo+PiAtCj4+IC0JaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJz YW1zdW5nLGR5bmFtaWMtcmFuZ2UiLAo+PiAtCQkJCSAmZHBfdmlkZW9fY29uZmlnLT5keW5hbWlj X3JhbmdlKSkgewo+PiAtCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgZHluYW1pYy1yYW5n ZVxuIik7Cj4+IC0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+PiAtCX0KPj4gLQo+PiAtCWlm IChvZl9wcm9wZXJ0eV9yZWFkX3UzMihkcF9ub2RlLCAic2Ftc3VuZyx5Y2Jjci1jb2VmZiIsCj4+ IC0JCQkJICZkcF92aWRlb19jb25maWctPnljYmNyX2NvZWZmKSkgewo+PiAtCQlkZXZfZXJyKGRl diwgImZhaWxlZCB0byBnZXQgeWNiY3ItY29lZmZcbiIpOwo+PiAtCQlyZXR1cm4gRVJSX1BUUigt RUlOVkFMKTsKPj4gLQl9Cj4+IC0KPj4gLQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9k ZSwgInNhbXN1bmcsY29sb3ItZGVwdGgiLAo+PiAtCQkJCSAmZHBfdmlkZW9fY29uZmlnLT5jb2xv cl9kZXB0aCkpIHsKPj4gLQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGNvbG9yLWRlcHRo XG4iKTsKPj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4+IC0JfQo+PiArCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqZHBfbm9kZSA9IGRwLT5kZXYtPm9mX25vZGU7Cj4+ICsJc3RydWN0IHZpZGVv X2luZm8gKnZpZGVvX2NvbmZpZyA9ICZkcC0+dmlkZW9faW5mbzsKPj4gICAKPj4gICAJaWYgKG9m X3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJzYW1zdW5nLGxpbmstcmF0ZSIsCj4+IC0JCQkJ ICZkcF92aWRlb19jb25maWctPmxpbmtfcmF0ZSkpIHsKPj4gKwkJCQkgJnZpZGVvX2luZm8tPmxp bmtfcmF0ZSkpIHsKPj4gICAJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBsaW5rLXJhdGVc biIpOwo+PiAtCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4+ICAgCX0KPj4gICAKPj4gICAJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJz YW1zdW5nLGxhbmUtY291bnQiLAo+PiAtCQkJCSAmZHBfdmlkZW9fY29uZmlnLT5sYW5lX2NvdW50 KSkgewo+PiArCQkJCSAmdmlkZW9faW5mby0+bGFuZV9jb3VudCkpIHsKPj4gICAJCWRldl9lcnIo ZGV2LCAiZmFpbGVkIHRvIGdldCBsYW5lLWNvdW50XG4iKTsKPj4gLQkJcmV0dXJuIEVSUl9QVFIo LUVJTlZBTCk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiAgIAl9Cj4+ICAgCj4+IC0JcmV0dXJu IGRwX3ZpZGVvX2NvbmZpZzsKPj4gKwlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICAgaW50IGFu YWxvZ2l4X2RwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZHJt X2RldiwKPj4gQEAgLTEyMDUsOSArMTI0NCw5IEBAIGludCBhbmFsb2dpeF9kcF9iaW5kKHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCj4+ICAgCSAqLwo+PiAg IAlkcC0+cGxhdF9kYXRhID0gcGxhdF9kYXRhOwo+PiAgIAo+PiAtCWRwLT52aWRlb19pbmZvID0g YW5hbG9naXhfZHBfZHRfcGFyc2VfcGRhdGEoJnBkZXYtPmRldik7Cj4+IC0JaWYgKElTX0VSUihk cC0+dmlkZW9faW5mbykpCj4+IC0JCXJldHVybiBQVFJfRVJSKGRwLT52aWRlb19pbmZvKTsKPj4g KwlyZXQgPSBhbmFsb2dpeF9kcF9kdF9wYXJzZV9wZGF0YShkcCk7Cj4+ICsJaWYgKHJldCkKPj4g KwkJcmV0dXJuIHJldDsKPj4gICAKPj4gICAJZHAtPnBoeSA9IGRldm1fcGh5X2dldChkcC0+ZGV2 LCAiZHAiKTsKPj4gICAJaWYgKElTX0VSUihkcC0+cGh5KSkgewo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmggYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAo+PiBpbmRleCBmZmFi YmQwLi42ZTNkNWJjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxv Z2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fu YWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAo+PiBAQCAtMTU0LDcgKzE1NCw3IEBAIHN0cnVjdCBh bmFsb2dpeF9kcF9kZXZpY2Ugewo+PiAgIAl1bnNpZ25lZCBpbnQJCWlycTsKPj4gICAJdm9pZCBf X2lvbWVtCQkqcmVnX2Jhc2U7Cj4+ICAgCj4+IC0Jc3RydWN0IHZpZGVvX2luZm8JKnZpZGVvX2lu Zm87Cj4+ICsJc3RydWN0IHZpZGVvX2luZm8JdmlkZW9faW5mbzsKPj4gICAJc3RydWN0IGxpbmtf dHJhaW4JbGlua190cmFpbjsKPj4gICAJc3RydWN0IHdvcmtfc3RydWN0CWhvdHBsdWdfd29yazsK Pj4gICAJc3RydWN0IHBoeQkJKnBoeTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX3JlZy5jCj4+IGluZGV4IGI4NzlkOGMuLjZhNjQzYmUgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBf cmVnLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9k cF9yZWcuYwo+PiBAQCAtMTA4NCwxNSArMTA4NCwxNSBAQCB2b2lkIGFuYWxvZ2l4X2RwX3NldF92 aWRlb19jb2xvcl9mb3JtYXQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCj4+ICAgCXUz MiByZWc7Cj4+ICAgCj4+ICAgCS8qIENvbmZpZ3VyZSB0aGUgaW5wdXQgY29sb3IgZGVwdGgsIGNv bG9yIHNwYWNlLCBkeW5hbWljIHJhbmdlICovCj4+IC0JcmVnID0gKGRwLT52aWRlb19pbmZvLT5k eW5hbWljX3JhbmdlIDw8IElOX0RfUkFOR0VfU0hJRlQpIHwKPj4gLQkJKGRwLT52aWRlb19pbmZv LT5jb2xvcl9kZXB0aCA8PCBJTl9CUENfU0hJRlQpIHwKPj4gLQkJKGRwLT52aWRlb19pbmZvLT5j b2xvcl9zcGFjZSA8PCBJTl9DT0xPUl9GX1NISUZUKTsKPj4gKwlyZWcgPSAoZHAtPnZpZGVvX2lu Zm8uZHluYW1pY19yYW5nZSA8PCBJTl9EX1JBTkdFX1NISUZUKSB8Cj4+ICsJCShkcC0+dmlkZW9f aW5mby5jb2xvcl9kZXB0aCA8PCBJTl9CUENfU0hJRlQpIHwKPj4gKwkJKGRwLT52aWRlb19pbmZv LmNvbG9yX3NwYWNlIDw8IElOX0NPTE9SX0ZfU0hJRlQpOwo+PiAgIAl3cml0ZWwocmVnLCBkcC0+ cmVnX2Jhc2UgKyBBTkFMT0dJWF9EUF9WSURFT19DVExfMik7Cj4+ICAgCj4+ICAgCS8qIFNldCBJ bnB1dCBDb2xvciBZQ2JDciBDb2VmZmljaWVudHMgdG8gSVRVNjAxIG9yIElUVTcwOSAqLwo+PiAg IAlyZWcgPSByZWFkbChkcC0+cmVnX2Jhc2UgKyBBTkFMT0dJWF9EUF9WSURFT19DVExfMyk7Cj4+ ICAgCXJlZyAmPSB+SU5fWUNfQ09FRkZJX01BU0s7Cj4+IC0JaWYgKGRwLT52aWRlb19pbmZvLT55 Y2Jjcl9jb2VmZikKPj4gKwlpZiAoZHAtPnZpZGVvX2luZm8ueWNiY3JfY29lZmYpCj4+ICAgCQly ZWcgfD0gSU5fWUNfQ09FRkZJX0lUVTcwOTsKPj4gICAJZWxzZQo+PiAgIAkJcmVnIHw9IElOX1lD X0NPRUZGSV9JVFU2MDE7Cj4+IEBAIC0xMjI5LDE3ICsxMjI5LDE3IEBAIHZvaWQgYW5hbG9naXhf ZHBfY29uZmlnX3ZpZGVvX3NsYXZlX21vZGUoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAp Cj4+ICAgCj4+ICAgCXJlZyA9IHJlYWRsKGRwLT5yZWdfYmFzZSArIEFOQUxPR0lYX0RQX1ZJREVP X0NUTF8xMCk7Cj4+ICAgCXJlZyAmPSB+SU5URVJBQ0VfU0NBTl9DRkc7Cj4+IC0JcmVnIHw9IChk cC0+dmlkZW9faW5mby0+aW50ZXJsYWNlZCA8PCAyKTsKPj4gKwlyZWcgfD0gKGRwLT52aWRlb19p bmZvLmludGVybGFjZWQgPDwgMik7Cj4+ICAgCXdyaXRlbChyZWcsIGRwLT5yZWdfYmFzZSArIEFO QUxPR0lYX0RQX1ZJREVPX0NUTF8xMCk7Cj4+ICAgCj4+ICAgCXJlZyA9IHJlYWRsKGRwLT5yZWdf YmFzZSArIEFOQUxPR0lYX0RQX1ZJREVPX0NUTF8xMCk7Cj4+ICAgCXJlZyAmPSB+VlNZTkNfUE9M QVJJVFlfQ0ZHOwo+PiAtCXJlZyB8PSAoZHAtPnZpZGVvX2luZm8tPnZfc3luY19wb2xhcml0eSA8 PCAxKTsKPj4gKwlyZWcgfD0gKGRwLT52aWRlb19pbmZvLnZfc3luY19wb2xhcml0eSA8PCAxKTsK Pj4gICAJd3JpdGVsKHJlZywgZHAtPnJlZ19iYXNlICsgQU5BTE9HSVhfRFBfVklERU9fQ1RMXzEw KTsKPj4gICAKPj4gICAJcmVnID0gcmVhZGwoZHAtPnJlZ19iYXNlICsgQU5BTE9HSVhfRFBfVklE RU9fQ1RMXzEwKTsKPj4gICAJcmVnICY9IH5IU1lOQ19QT0xBUklUWV9DRkc7Cj4+IC0JcmVnIHw9 IChkcC0+dmlkZW9faW5mby0+aF9zeW5jX3BvbGFyaXR5IDw8IDApOwo+PiArCXJlZyB8PSAoZHAt PnZpZGVvX2luZm8uaF9zeW5jX3BvbGFyaXR5IDw8IDApOwo+PiAgIAl3cml0ZWwocmVnLCBkcC0+ cmVnX2Jhc2UgKyBBTkFMT0dJWF9EUF9WSURFT19DVExfMTApOwo+PiAgIAo+PiAgIAlyZWcgPSBB VURJT19NT0RFX1NQRElGX01PREUgfCBWSURFT19NT0RFX1NMQVZFX01PREU7Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcC5jIGIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHAuYwo+PiBpbmRleCA3ZTFiZTcyLi42MDYwZDJjIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcC5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RwLmMKPj4gQEAgLTI4LDggKzI4LDEzIEBACj4+ICAgCj4+ ICAgI2luY2x1ZGUgImV4eW5vc19kcm1fY3J0Yy5oIgo+PiAgIAo+PiAtI2RlZmluZSBwbGF0X2Rh dGFfdG9fZHAocGQpIFwKPj4gLQkJY29udGFpbmVyX29mKHBkLCBzdHJ1Y3QgZXh5bm9zX2RwX2Rl dmljZSwgcGxhdF9kYXRhKQo+PiArI2RlZmluZSB0b19kcChubSkJY29udGFpbmVyX29mKG5tLCBz dHJ1Y3QgZXh5bm9zX2RwX2RldmljZSwgbm0pCj4+ICsKPj4gK3N0cnVjdCB2aWRlb19pbmZvIHsK Pj4gKwlib29sIGhfc3luY19wb2xhcml0eTsKPj4gKwlib29sIHZfc3luY19wb2xhcml0eTsKPj4g Kwlib29sIGludGVybGFjZWQ7Cj4+ICt9Owo+PiAgIAo+PiAgIHN0cnVjdCBleHlub3NfZHBfZGV2 aWNlIHsKPj4gICAJc3RydWN0IGRybV9lbmNvZGVyICAgICAgICAgZW5jb2RlcjsKPj4gQEAgLTM5 LDEyICs0NCwxMyBAQCBzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSB7Cj4+ICAgCj4+ICAgCXN0cnVj dCBleHlub3NfZHJtX3BhbmVsX2luZm8gcHJpdjsKPj4gICAJc3RydWN0IGFuYWxvZ2l4X2RwX3Bs YXRfZGF0YSBwbGF0X2RhdGE7Cj4+ICsJc3RydWN0IHZpZGVvX2luZm8gICAgICAgICAgICB2aWRl b19pbmZvOwo+PiAgIH07Cj4+ICAgCj4+ICAgaW50IGV4eW5vc19kcF9jcnRjX2Nsb2NrX2VuYWJs ZShzdHJ1Y3QgYW5hbG9naXhfZHBfcGxhdF9kYXRhICpwbGF0X2RhdGEsCj4+ICAgCQkJCWJvb2wg ZW5hYmxlKQo+PiAgIHsKPj4gLQlzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSBwbGF0X2Rh dGFfdG9fZHAocGxhdF9kYXRhKTsKPj4gKwlzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSB0 b19kcChwbGF0X2RhdGEpOwo+PiAgIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZHAt PmVuY29kZXI7Cj4+ICAgCXN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGM7Cj4+ICAgCj4+IEBA IC03MSw3ICs3Nyw3IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RwX3Bvd2Vyb2ZmKHN0cnVjdCBhbmFs b2dpeF9kcF9wbGF0X2RhdGEgKnBsYXRfZGF0YSkKPj4gICBzdGF0aWMgaW50IGV4eW5vc19kcF9n ZXRfbW9kZXMoc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9kYXRhLAo+PiAgIAkJ CSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIHsKPj4gLQlzdHJ1 Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSBwbGF0X2RhdGFfdG9fZHAocGxhdF9kYXRhKTsKPj4g KwlzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSB0b19kcChwbGF0X2RhdGEpOwo+PiAgIAlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPj4gICAKPj4gICAJaWYgKGRwLT5wbGF0X2Rh dGEucGFuZWwpCj4+IEBAIC05OSw3ICsxMDUsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kcF9nZXRf bW9kZXMoc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9kYXRhLAo+PiAgIHN0YXRp YyBpbnQgZXh5bm9zX2RwX2JyaWRnZV9hdHRhY2goc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0 YSAqcGxhdF9kYXRhLAo+PiAgIAkJCQkgICBzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+PiAg IHsKPj4gLQlzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSBwbGF0X2RhdGFfdG9fZHAocGxh dF9kYXRhKTsKPj4gKwlzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSB0b19kcChwbGF0X2Rh dGEpOwo+PiAgIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZHAtPmVuY29kZXI7Cj4+ ICAgCWludCByZXQ7Cj4+ICAgCj4+IEBAIC0xMjIsNiArMTI4LDI4IEBAIHN0YXRpYyBib29sIGV4 eW5vc19kcF9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPj4gICAJCQkJ IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+PiAgIAkJCQkgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCj4+ICAgewo+PiArCXN0cnVjdCBleHlub3Nf ZHBfZGV2aWNlICpkcCA9IHRvX2RwKGVuY29kZXIpOwo+PiArCWludCBmbGFncyA9IGFkanVzdGVk X21vZGUtPmZsYWdzOwo+PiArCj4+ICsJZmxhZ3MgJj0gfihEUk1fTU9ERV9GTEFHX1BIU1lOQyB8 IERSTV9NT0RFX0ZMQUdfTkhTWU5DIHwKPj4gKwkJICAgRFJNX01PREVfRkxBR19QVlNZTkMgfCBE Uk1fTU9ERV9GTEFHX05WU1lOQyB8Cj4+ICsJCSAgIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKTsK Pj4gKwo+PiArCWlmIChkcC0+dmlkZW9faW5mby5oX3N5bmNfcG9sYXJpdHkpCj4+ICsJCWZsYWdz IHw9IERSTV9NT0RFX0ZMQUdfUEhTWU5DOwo+PiArCWVsc2UKPj4gKwkJZmxhZ3MgfD0gRFJNX01P REVfRkxBR19OSFNZTkM7Cj4+ICsKPj4gKwlpZiAoZHAtPnZpZGVvX2luZm8udl9zeW5jX3BvbGFy aXR5KQo+PiArCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX1BWU1lOQzsKPj4gKwllbHNlCj4+ICsJ CWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwo+PiArCj4+ICsJaWYgKGRwLT52aWRlb19p bmZvLmludGVybGFjZWQpCj4+ICsJCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFOwo+ PiArCj4+ICsJYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgPSBmbGFnczsKPj4gKwo+PiAgIAlyZXR1cm4g dHJ1ZTsKPj4gICB9Cj4+ICAgCj4+IEBAIC0xNjMsNiArMTkxLDIyIEBAIHN0YXRpYyBpbnQgZXh5 bm9zX2RwX2R0X3BhcnNlX3BhbmVsKHN0cnVjdCBleHlub3NfZHBfZGV2aWNlICpkcCkKPj4gICAJ cmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIGludCBleHlub3NfZHBfZHRfcGFyc2Vf dmlkZW9faW5mbyhzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHApCj4+ICt7Cj4+ICsJc3RydWN0 IGRldmljZV9ub2RlICpkcF9ub2RlID0gZHAtPmRldi0+b2Zfbm9kZTsKPj4gKwo+PiArCWRwLT52 aWRlb19pbmZvLmhfc3luY19wb2xhcml0eSA9Cj4+ICsJCW9mX3Byb3BlcnR5X3JlYWRfYm9vbChk cF9ub2RlLCAiaHN5bmMtYWN0aXZlLWhpZ2giKTsKPj4gKwo+PiArCWRwLT52aWRlb19pbmZvLnZf c3luY19wb2xhcml0eSA9Cj4+ICsJCW9mX3Byb3BlcnR5X3JlYWRfYm9vbChkcF9ub2RlLCAidnN5 bmMtYWN0aXZlLWhpZ2giKTsKPj4gKwo+PiArCWRwLT52aWRlb19pbmZvLmludGVybGFjZWQgPQo+ PiArCQlvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZHBfbm9kZSwgImludGVybGFjZWQiKTsKPj4gKwo+ PiArCXJldHVybiAwOwo+IFByb2JhYmx5IHlvdSB3YW50ZWQgdG8gZm9sbG93IHRoZSBjb252ZW50 aW9uIG9mIG90aGVyIERULXBhcnNlIGZ1bmN0aW9ucwo+IGJ1dCB0aGVyZSBpcyBubyBuZWVkLiBU aGlzIGZ1bmN0aW9uIGNhbm5vdCBmYWlsIHNvIG1heWJlIG1ha2UgaXQgdm9pZD8KPiBJdCB3b3Vs ZCBzaW1wbGlmeSBhIGJpdCB0aGUgY29kZSBpbiBleHlub3NfZHBfYmluZCgpLgoKQWN0dWFsbHks IEkgZm91bmQgYW4gbWlzdGFrZW4gaGVyZS4gSSBoYXZlIHBhcnNlZCB0aG9zZSB0d28gcHJvcGVy dHkgZm9yIAp0d2ljZSwKb25lIGlzIGhlcmUsIHRoZSBvdGhlciBpcyBhbmFsb2dpeF9kcF9jb3Jl LmMgbW9kZV9zZXQoKSBmdW5jdGlvbi4KICAgICAgICAgLyoKICAgICAgICAgICogTk9URTogdGhv c2UgcHJvcGVydHkgcGFyc2VpbmcgY29kZSBpcyB1c2VkIGZvcgogICAgICAgICAgKiBwcm92aWRp bmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3Igc2Ftc3VuZyBwbGF0Zm9ybS4KICAgICAgICAg ICovCiAgICAgICAgIFsuLi4uXQogICAgICAgICBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkcF9ub2Rl LCAiaHN5bmMtYWN0aXZlLWhpZ2giLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5z aWduZWQgaW50ICopJnZpZGVvX2luZm8tPmhfc3luY19wb2xhcml0eSk7CiAgICAgICAgIG9mX3By b3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJ2c3luYy1hY3RpdmUtaGlnaCIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQgKikmdmlkZW9faW5mby0+dl9zeW5jX3Bv bGFyaXR5KTsKICAgICAgICAgb2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgImludGVybGFj ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50ICopJnZpZGVv X2luZm8tPmludGVybGFjZWQpOwoKCkFuZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGVhc3kgdG8gY29k ZSB3aGVuIEkgYWNoaWV2ZSB0aGUgYmFja3dhcmQgCmNvbXBhdGliaWxpdHkKaW4gYW5hbG9naXgg Y29yZSBkcml2ZXIuIFNvIEkgcHJlZmVyIHRoaXMgd2F5IDotKQoKQW55d2F5LCB0aGFua3MsCi0g WWFraXIKCj4gQmVzdCByZWdhcmRzLAo+IEtyenlzenRvZgo+Cj4KPgoKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5n IGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==