From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: Re: [PATCH v3 4/6] drm: bridge: dw-hdmi: Switch to V4L bus format and encodings Date: Wed, 8 Mar 2017 13:12:39 +0100 Message-ID: <28fe7ecf-cf4a-568a-b853-0506c088884d@baylibre.com> References: <1488904944-14285-1-git-send-email-narmstrong@baylibre.com> <1488904944-14285-5-git-send-email-narmstrong@baylibre.com> <977cfb29-af7a-2e28-7a7f-396d9ccf3eb8@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x230.google.com (mail-wm0-x230.google.com [IPv6:2a00:1450:400c:c09::230]) by gabe.freedesktop.org (Postfix) with ESMTPS id B350C6E848 for ; Wed, 8 Mar 2017 12:12:45 +0000 (UTC) Received: by mail-wm0-x230.google.com with SMTP id n11so113250226wma.1 for ; Wed, 08 Mar 2017 04:12:45 -0800 (PST) In-Reply-To: <977cfb29-af7a-2e28-7a7f-396d9ccf3eb8@synopsys.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jose Abreu , dri-devel@lists.freedesktop.org, laurent.pinchart+renesas@ideasonboard.com, architt@codeaurora.org, mchehab@kernel.org Cc: linux-doc@vger.kernel.org, kieran.bingham@ideasonboard.com, linux-kernel@vger.kernel.org, hans.verkuil@cisco.com, sakari.ailus@linux.intel.com, linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gMDMvMDcvMjAxNyAwNjozNSBQTSwgSm9zZSBBYnJldSB3cm90ZToKPiBIaSBOZWlsLAo+IAo+ IAo+IE9uIDA3LTAzLTIwMTcgMTY6NDIsIE5laWwgQXJtc3Ryb25nIHdyb3RlOgo+PiBTb21lIGRp c3BsYXkgcGlwZWxpbmVzIGNhbiBvbmx5IHByb3ZpZGUgbm9uLVJCRyBpbnB1dCBwaXhlbHMgdG8g dGhlIEhETUkgVFgKPj4gQ29udHJvbGxlciwgdGhpcyBwYXRjaCB0YWtlcyB0aGUgcGl4ZWwgZm9y bWF0IGZyb20gdGhlIHBsYXRfZGF0YSBpZiBwcm92aWRlZC4KPj4KPj4gU2lnbmVkLW9mZi1ieTog TmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5bGlicmUuY29tPgo+PiAtLS0KPj4gIGRyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jIHwgMzIyICsrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLQo+PiAgaW5jbHVkZS9kcm0vYnJpZGdlL2R3X2hkbWkuaCAgICAgICAg ICAgICAgfCAgNjMgKysrKysrCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDI5MCBpbnNlcnRpb25zKCsp LCA5NSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2Uvc3lub3BzeXMvZHctaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9k dy1oZG1pLmMKPj4gaW5kZXggMWVkOGJjMS4uMzQ4MzExYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLmMKPj4gQEAgLTMwLDE3ICszMCwxNCBAQAo+PiAg I2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlcl9zbGF2ZS5oPgo+PiAgI2luY2x1ZGUgPGRybS9icmlk Z2UvZHdfaGRtaS5oPgo+PiAgCj4+ICsjaW5jbHVkZSA8dWFwaS9saW51eC9tZWRpYS1idXMtZm9y bWF0Lmg+Cj4+ICsjaW5jbHVkZSA8dWFwaS9saW51eC92aWRlb2RldjIuaD4KPj4gKwo+PiAgI2lu Y2x1ZGUgImR3LWhkbWkuaCIKPj4gICNpbmNsdWRlICJkdy1oZG1pLWF1ZGlvLmgiCj4+ICAKPj4g ICNkZWZpbmUgSERNSV9FRElEX0xFTgkJNTEyCj4+ICAKPj4gLSNkZWZpbmUgUkdCCQkJMAo+PiAt I2RlZmluZSBZQ0JDUjQ0NAkJMQo+PiAtI2RlZmluZSBZQ0JDUjQyMl8xNkJJVFMJCTIKPj4gLSNk ZWZpbmUgWUNCQ1I0MjJfOEJJVFMJCTMKPj4gLSNkZWZpbmUgWFZZQ0M0NDQJCTQKPj4gLQo+PiAg ZW51bSBoZG1pX2RhdGFtYXAgewo+PiAgCVJHQjQ0NF84QiA9IDB4MDEsCj4+ICAJUkdCNDQ0XzEw QiA9IDB4MDMsCj4+IEBAIC05NCwxMCArOTEsMTAgQEAgc3RydWN0IGhkbWlfdm1vZGUgewo+PiAg fTsKPj4gIAo+PiAgc3RydWN0IGhkbWlfZGF0YV9pbmZvIHsKPj4gLQl1bnNpZ25lZCBpbnQgZW5j X2luX2Zvcm1hdDsKPj4gLQl1bnNpZ25lZCBpbnQgZW5jX291dF9mb3JtYXQ7Cj4+IC0JdW5zaWdu ZWQgaW50IGVuY19jb2xvcl9kZXB0aDsKPj4gLQl1bnNpZ25lZCBpbnQgY29sb3JpbWV0cnk7Cj4+ ICsJdW5zaWduZWQgaW50IGVuY19pbl9idXNfZm9ybWF0Owo+PiArCXVuc2lnbmVkIGludCBlbmNf b3V0X2J1c19mb3JtYXQ7Cj4+ICsJdW5zaWduZWQgaW50IGVuY19pbl9lbmNvZGluZzsKPj4gKwl1 bnNpZ25lZCBpbnQgZW5jX291dF9lbmNvZGluZzsKPj4gIAl1bnNpZ25lZCBpbnQgcGl4X3JlcGV0 X2ZhY3RvcjsKPj4gIAl1bnNpZ25lZCBpbnQgaGRjcF9lbmFibGU7Cj4+ICAJc3RydWN0IGhkbWlf dm1vZGUgdmlkZW9fbW9kZTsKPj4gQEAgLTU1Nyw2ICs1NTQsOTIgQEAgdm9pZCBkd19oZG1pX2F1 ZGlvX2Rpc2FibGUoc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4+ICB9Cj4+ICBFWFBPUlRfU1lNQk9M X0dQTChkd19oZG1pX2F1ZGlvX2Rpc2FibGUpOwo+PiAgCj4+ICtzdGF0aWMgYm9vbCBoZG1pX2J1 c19mbXRfaXNfcmdiKHVuc2lnbmVkIGludCBidXNfZm9ybWF0KQo+PiArewo+PiArCXN3aXRjaCAo YnVzX2Zvcm1hdCkgewo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDoKPj4gKwlj YXNlIE1FRElBX0JVU19GTVRfUkdCMTAxMDEwXzFYMzA6Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1U X1JHQjEyMTIxMl8xWDM2Ogo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0ODoK Pj4gKwkJcmV0dXJuIHRydWU7Cj4+ICsKPj4gKwlkZWZhdWx0Ogo+PiArCQlyZXR1cm4gZmFsc2U7 Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBoZG1pX2J1c19mbXRfaXNfeXV2NDQ0 KHVuc2lnbmVkIGludCBidXNfZm9ybWF0KQo+PiArewo+PiArCXN3aXRjaCAoYnVzX2Zvcm1hdCkg ewo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQ6Cj4+ICsJY2FzZSBNRURJQV9CVVNf Rk1UX1lVVjEwXzFYMzA6Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjEyXzFYMzY6Cj4+ICsJ Y2FzZSBNRURJQV9CVVNfRk1UX1lVVjE2XzFYNDg6Cj4+ICsJCXJldHVybiB0cnVlOwo+PiArCj4+ ICsJZGVmYXVsdDoKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCX0KPj4gK30KPj4gKwo+PiArc3Rh dGljIGJvb2wgaGRtaV9idXNfZm10X2lzX3l1djQyMih1bnNpZ25lZCBpbnQgYnVzX2Zvcm1hdCkK Pj4gK3sKPj4gKwlzd2l0Y2ggKGJ1c19mb3JtYXQpIHsKPj4gKwljYXNlIE1FRElBX0JVU19GTVRf VVlWWThfMVgxNjoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA6Cj4+ICsJY2Fz ZSBNRURJQV9CVVNfRk1UX1VZVlkxMl8xWDI0Ogo+PiArCQlyZXR1cm4gdHJ1ZTsKPj4gKwo+PiAr CWRlZmF1bHQ6Cj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwl9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBib29sIGhkbWlfYnVzX2ZtdF9pc195dXY0MjAodW5zaWduZWQgaW50IGJ1c19mb3JtYXQpCj4+ ICt7Cj4+ICsJc3dpdGNoIChidXNfZm9ybWF0KSB7Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZ Vlk4XzFfMVgyNDoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWTEwXzFfMVgzMDoKPj4gKwlj YXNlIE1FRElBX0JVU19GTVRfVVlWWTEyXzFfMVgzNjoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRf VVlWWTE2XzFfMVg0ODoKPj4gKwkJcmV0dXJuIHRydWU7Cj4+ICsKPj4gKwlkZWZhdWx0Ogo+PiAr CQlyZXR1cm4gZmFsc2U7Cj4+ICsJfQo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGhkbWlfYnVz X2ZtdF9jb2xvcl9kZXB0aCh1bnNpZ25lZCBpbnQgYnVzX2Zvcm1hdCkKPj4gK3sKPj4gKwlzd2l0 Y2ggKGJ1c19mb3JtYXQpIHsKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ6Cj4+ ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNDoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRf VVlWWThfMVgxNjoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWThfMV8xWDI0Ogo+PiArCQly ZXR1cm4gODsKPj4gKwo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBfMVgzMDoKPj4g KwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTBfMVgzMDoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRf VVlWWTEwXzFYMjA6Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlkxMF8xXzFYMzA6Cj4+ICsJ CXJldHVybiAxMDsKPj4gKwo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNjoK Pj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTJfMVgzNjoKPj4gKwljYXNlIE1FRElBX0JVU19G TVRfVVlWWTEyXzFYMjQ6Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlkxMl8xXzFYMzY6Cj4+ ICsJCXJldHVybiAxMjsKPj4gKwo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxNjE2MTZfMVg0 ODoKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTZfMVg0ODoKPj4gKwljYXNlIE1FRElBX0JV U19GTVRfVVlWWTE2XzFfMVg0ODoKPj4gKwkJcmV0dXJuIDE2Owo+PiArCj4+ICsJZGVmYXVsdDoK Pj4gKwkJcmV0dXJuIDA7Cj4gCj4gTWF5YmUgZmFsbGJhY2sgdG8gOGJwcCBpbiBjYXNlIG9mIGVy cm9yIGFzIHRoaXMgaXMgdGhlIG1vc3QKPiBjb21tb24gc3VwcG9ydGVkLgo+IAo+PiArCX0KPj4g K30KPj4gKwo+PiAgLyoKPj4gICAqIHRoaXMgc3VibW9kdWxlIGlzIHJlc3BvbnNpYmxlIGZvciB0 aGUgdmlkZW8gZGF0YSBzeW5jaHJvbml6YXRpb24uCj4+ICAgKiBmb3IgZXhhbXBsZSwgZm9yIFJH QiA0OjQ6NCBpbnB1dCwgdGhlIGRhdGEgbWFwIGlzIGRlZmluZWQgYXMKPj4gQEAgLTU2OSwzNyAr NjUyLDQ1IEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlkZW9fc2FtcGxlKHN0cnVjdCBkd19oZG1pICpo ZG1pKQo+PiAgCWludCBjb2xvcl9mb3JtYXQgPSAwOwo+PiAgCXU4IHZhbDsKPj4gIAo+PiAtCWlm IChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2Zvcm1hdCA9PSBSR0IpIHsKPj4gLQkJaWYgKGhkbWkt PmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0gOCkKPj4gLQkJCWNvbG9yX2Zvcm1hdCA9IDB4 MDE7Cj4+IC0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0gMTAp Cj4+IC0JCQljb2xvcl9mb3JtYXQgPSAweDAzOwo+PiAtCQllbHNlIGlmIChoZG1pLT5oZG1pX2Rh dGEuZW5jX2NvbG9yX2RlcHRoID09IDEyKQo+PiAtCQkJY29sb3JfZm9ybWF0ID0gMHgwNTsKPj4g LQkJZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxNikKPj4gLQkJ CWNvbG9yX2Zvcm1hdCA9IDB4MDc7Cj4+IC0JCWVsc2UKPj4gLQkJCXJldHVybjsKPj4gLQl9IGVs c2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID09IFlDQkNSNDQ0KSB7Cj4+IC0J CWlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID09IDgpCj4+IC0JCQljb2xvcl9m b3JtYXQgPSAweDA5Owo+PiAtCQllbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2NvbG9yX2Rl cHRoID09IDEwKQo+PiAtCQkJY29sb3JfZm9ybWF0ID0gMHgwQjsKPj4gLQkJZWxzZSBpZiAoaGRt aS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMikKPj4gLQkJCWNvbG9yX2Zvcm1hdCA9 IDB4MEQ7Cj4+IC0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0g MTYpCj4+IC0JCQljb2xvcl9mb3JtYXQgPSAweDBGOwo+PiAtCQllbHNlCj4+IC0JCQlyZXR1cm47 Cj4+IC0JfSBlbHNlIGlmIChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2Zvcm1hdCA9PSBZQ0JDUjQy Ml84QklUUykgewo+PiAtCQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSA4 KQo+PiAtCQkJY29sb3JfZm9ybWF0ID0gMHgxNjsKPj4gLQkJZWxzZSBpZiAoaGRtaS0+aGRtaV9k YXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMCkKPj4gLQkJCWNvbG9yX2Zvcm1hdCA9IDB4MTQ7Cj4+ IC0JCWVsc2UgaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0gMTIpCj4+IC0J CQljb2xvcl9mb3JtYXQgPSAweDEyOwo+PiAtCQllbHNlCj4+IC0JCQlyZXR1cm47Cj4+ICsJc3dp dGNoIChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpIHsKPj4gKwljYXNlIE1FRElB X0JVU19GTVRfUkdCODg4XzFYMjQ6Cj4+ICsJCWNvbG9yX2Zvcm1hdCA9IDB4MDE7Cj4+ICsJCWJy ZWFrOwo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBfMVgzMDoKPj4gKwkJY29sb3Jf Zm9ybWF0ID0gMHgwMzsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1JHQjEy MTIxMl8xWDM2Ogo+PiArCQljb2xvcl9mb3JtYXQgPSAweDA1Owo+PiArCQlicmVhazsKPj4gKwlj YXNlIE1FRElBX0JVU19GTVRfUkdCMTYxNjE2XzFYNDg6Cj4+ICsJCWNvbG9yX2Zvcm1hdCA9IDB4 MDc7Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNDoK Pj4gKwkJY29sb3JfZm9ybWF0ID0gMHgwOTsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBNRURJQV9C VVNfRk1UX1lVVjEwXzFYMzA6Cj4+ICsJCWNvbG9yX2Zvcm1hdCA9IDB4MEI7Cj4+ICsJCWJyZWFr Owo+PiArCWNhc2UgTUVESUFfQlVTX0ZNVF9ZVVYxMl8xWDM2Ogo+PiArCQljb2xvcl9mb3JtYXQg PSAweDBEOwo+PiArCQlicmVhazsKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfWVVWMTZfMVg0ODoK Pj4gKwkJY29sb3JfZm9ybWF0ID0gMHgwRjsKPj4gKwkJYnJlYWs7Cj4gCj4gWW91IHNob3VsZCBh ZGQgaGVyZSB0aGUgNDoyLjAgZm9ybWF0cy4gSSBtZWFuLCA0OjI6MCA4IGJpdHMgaXMKPiAweDA5 LCA0OjI6MCAxMCBiaXRzIGlzIDB4MEIsIDQ6MjowIDEyIGJpdHMgaXMgMHgwRCBhbmQgNDoyOjAg MTYKPiBiaXRzIGlzIDB4MEYuCj4gCj4gQmVzdCByZWdhcmRzLAo+IEpvc2UgTWlndWVsIEFicmV1 Cj4gCj4+ICsKPj4gKwljYXNlIE1FRElBX0JVU19GTVRfVVlWWThfMVgxNjoKPj4gKwkJY29sb3Jf Zm9ybWF0ID0gMHgxNjsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBNRURJQV9CVVNfRk1UX1VZVlkx MF8xWDIwOgo+PiArCQljb2xvcl9mb3JtYXQgPSAweDE0Owo+PiArCQlicmVhazsKPj4gKwljYXNl IE1FRElBX0JVU19GTVRfVVlWWTEyXzFYMjQ6Cj4+ICsJCWNvbG9yX2Zvcm1hdCA9IDB4MTI7Cj4+ ICsJCWJyZWFrOwo+PiArCj4+ICsJZGVmYXVsdDoKPj4gKwkJcmV0dXJuOwo+PiAgCX0KPj4gIAo+ PiAgCXZhbCA9IEhETUlfVFhfSU5WSUQwX0lOVEVSTkFMX0RFX0dFTkVSQVRPUl9ESVNBQkxFIHwK Pj4gQEAgLTYyMiwyNiArNzEzLDMwIEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlkZW9fc2FtcGxlKHN0 cnVjdCBkd19oZG1pICpoZG1pKQo+PiAgCj4+ICBzdGF0aWMgaW50IGlzX2NvbG9yX3NwYWNlX2Nv bnZlcnNpb24oc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4+ICB7Cj4+IC0JcmV0dXJuIGhkbWktPmhk bWlfZGF0YS5lbmNfaW5fZm9ybWF0ICE9IGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1hdDsK Pj4gKwlyZXR1cm4gaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9idXNfZm9ybWF0ICE9IGhkbWktPmhk bWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQ7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyBpbnQgaXNf Y29sb3Jfc3BhY2VfZGVjaW1hdGlvbihzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkKPj4gIHsKPj4gLQlp ZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0ICE9IFlDQkNSNDIyXzhCSVRTKQo+PiAr CWlmICghaGRtaV9idXNfZm10X2lzX3l1djQyMihoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNf Zm9ybWF0KSkKPj4gIAkJcmV0dXJuIDA7Cj4+IC0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfaW5f Zm9ybWF0ID09IFJHQiB8fAo+PiAtCSAgICBoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2Zvcm1hdCA9 PSBZQ0JDUjQ0NCkKPj4gKwo+PiArCWlmIChoZG1pX2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlf ZGF0YS5lbmNfaW5fYnVzX2Zvcm1hdCkgfHwKPj4gKwkgICAgaGRtaV9idXNfZm10X2lzX3l1djQ0 NChoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpKQo+PiAgCQlyZXR1cm4gMTsKPj4g Kwo+PiAgCXJldHVybiAwOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgaW50IGlzX2NvbG9yX3NwYWNl X2ludGVycG9sYXRpb24oc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4+ICB7Cj4+IC0JaWYgKGhkbWkt PmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ICE9IFlDQkNSNDIyXzhCSVRTKQo+PiArCWlmICghaGRt aV9idXNfZm10X2lzX3l1djQyMihoZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpKQo+ PiAgCQlyZXR1cm4gMDsKPj4gLQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0ID09 IFJHQiB8fAo+PiAtCSAgICBoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9mb3JtYXQgPT0gWUNCQ1I0 NDQpCj4+ICsKPj4gKwlpZiAoaGRtaV9idXNfZm10X2lzX3JnYihoZG1pLT5oZG1pX2RhdGEuZW5j X291dF9idXNfZm9ybWF0KSB8fAo+PiArCSAgICBoZG1pX2J1c19mbXRfaXNfeXV2NDQ0KGhkbWkt PmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKQo+PiAgCQlyZXR1cm4gMTsKPj4gKwo+PiAg CXJldHVybiAwOwo+PiAgfQo+PiAgCj4+IEBAIC02NTIsMTUgKzc0NywxNiBAQCBzdGF0aWMgdm9p ZCBkd19oZG1pX3VwZGF0ZV9jc2NfY29lZmZzKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+PiAgCXUz MiBjc2Nfc2NhbGUgPSAxOwo+PiAgCj4+ICAJaWYgKGlzX2NvbG9yX3NwYWNlX2NvbnZlcnNpb24o aGRtaSkpIHsKPj4gLQkJaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2Zvcm1hdCA9PSBSR0Ip IHsKPj4gLQkJCWlmIChoZG1pLT5oZG1pX2RhdGEuY29sb3JpbWV0cnkgPT0KPj4gLQkJCQkJSERN SV9DT0xPUklNRVRSWV9JVFVfNjAxKQo+PiArCQlpZiAoaGRtaV9idXNfZm10X2lzX3JnYihoZG1p LT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSkgewo+PiArCQkJaWYgKGhkbWktPmhkbWlf ZGF0YS5lbmNfb3V0X2VuY29kaW5nID09Cj4+ICsJCQkJCQlWNEwyX1lDQkNSX0VOQ182MDEpCj4+ ICAJCQkJY3NjX2NvZWZmID0gJmNzY19jb2VmZl9yZ2Jfb3V0X2VpdHU2MDE7Cj4+ICAJCQllbHNl Cj4+ICAJCQkJY3NjX2NvZWZmID0gJmNzY19jb2VmZl9yZ2Jfb3V0X2VpdHU3MDk7Cj4+IC0JCX0g ZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9mb3JtYXQgPT0gUkdCKSB7Cj4+IC0JCQlp ZiAoaGRtaS0+aGRtaV9kYXRhLmNvbG9yaW1ldHJ5ID09Cj4+IC0JCQkJCUhETUlfQ09MT1JJTUVU UllfSVRVXzYwMSkKPj4gKwkJfSBlbHNlIGlmIChoZG1pX2J1c19mbXRfaXNfcmdiKAo+PiArCQkJ CQloZG1pLT5oZG1pX2RhdGEuZW5jX2luX2J1c19mb3JtYXQpKSB7Cj4+ICsJCQlpZiAoaGRtaS0+ aGRtaV9kYXRhLmVuY19vdXRfZW5jb2RpbmcgPT0KPj4gKwkJCQkJCVY0TDJfWUNCQ1JfRU5DXzYw MSkKPj4gIAkJCQljc2NfY29lZmYgPSAmY3NjX2NvZWZmX3JnYl9pbl9laXR1NjAxOwo+PiAgCQkJ ZWxzZQo+PiAgCQkJCWNzY19jb2VmZiA9ICZjc2NfY29lZmZfcmdiX2luX2VpdHU3MDk7CgpIaSBK b3NlLAoKSXQgc2VlbXMgaGVyZSB0aGF0IHdlIG9ubHkgaGF2ZSB0aGUgUkdCNDQ0PC0+WVVWNDQ0 IDhiaXQgdGFibGVzLCBmcm9tIHRoZSBBbWxvZ2ljCnNvdXJjZSBJIGhhdmUgdGhlIGZvbGxvd2lu ZyBmb3IgMTBiaXQsIDEyYml0IGFuZCAxNmJpdCBmb3IgaXR1NjAxIDoKCnN0YXRpYyBjb25zdCB1 MTYgY3NjX2NvZWZmX3JnYl9vdXRfZWl0dTYwMV8xMGJbM11bNF0gPSB7Cgl7IDB4MjAwMCwgMHg2 OTI2LCAweDc0ZmQsIDB4MDQzYiB9LAoJeyAweDIwMDAsIDB4MmNkZCwgMHgwMDAwLCAweDdhNjUg fSwKCXsgMHgyMDAwLCAweDAwMDAsIDB4MzhiNCwgMHg3OGVhIH0KfTsKCnN0YXRpYyBjb25zdCB1 MTYgY3NjX2NvZWZmX3JnYl9vdXRfZWl0dTYwMV8xMmJfMTZiWzNdWzRdID0gewoJeyAweDIwMDAs IDB4NjkyNiwgMHg3NGZkLCAweDEwZWUgfSwKCXsgMHgyMDAwLCAweDJjZGQsIDB4MDAwMCwgMHg2 OTkyIH0sCgl7IDB4MjAwMCwgMHgwMDAwLCAweDM4YjQsIDB4NjNhNiB9Cn07CgpzdGF0aWMgY29u c3QgdTE2IGNzY19jb2VmZl9yZ2JfaW5fZWl0dTYwMV8xMGJbM11bNF0gPSB7Cgl7IDB4MjU5MSwg MHgxMzIyLCAweDA3NGIsIDB4MDAwMCB9LAoJeyAweDY1MzUsIDB4MjAwMCwgMHg3YWNjLCAweDA4 MDAgfSwKCXsgMHg2YWNkLCAweDc1MzQsIDB4MjAwMCwgMHgwODAwIH0KfTsKCnN0YXRpYyBjb25z dCB1MTYgY3NjX2NvZWZmX3JnYl9pbl9laXR1NjAxXzEyYl8xNmJbM11bNF0gPSB7Cgl7IDB4MjU5 MSwgMHgxMzIyLCAweDA3NGIsIDB4MDAwMCB9LAoJeyAweDY1MzUsIDB4MjAwMCwgMHg3YWNjLCAw eDIwMDAgfSwKCXsgMHg2YWNkLCAweDc1MzQsIDB4MjAwMCwgMHgyMDAwIH0KfTsKCkJ1dCBJIG1p c3MgdGhlIGl0dTcwOSB2YWx1ZXMuCgpDb3VsZCB5b3UgY29uZmlybSB0aGVzZSB2YWx1ZXMgYW5k IG1heWJlIHByb3ZpZGUgdGhlIGl0dTcwOSB2YWx1ZXMgPwoKVGhhbmtzICEKTmVpbAoKPj4gQEAg LTY5OCwxNiArNzk0LDIzIEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlkZW9fY3NjKHN0cnVjdCBkd19o ZG1pICpoZG1pKQo+PiAgCWVsc2UgaWYgKGlzX2NvbG9yX3NwYWNlX2RlY2ltYXRpb24oaGRtaSkp Cj4+ICAJCWRlY2ltYXRpb24gPSBIRE1JX0NTQ19DRkdfREVDTU9ERV9DSFJPTUFfSU5UX0ZPUk1V TEEzOwo+PiAgCj4+IC0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNfY29sb3JfZGVwdGggPT0gOCkK Pj4gKwlzd2l0Y2ggKGhkbWlfYnVzX2ZtdF9jb2xvcl9kZXB0aChoZG1pLT5oZG1pX2RhdGEuZW5j X291dF9idXNfZm9ybWF0KSkgewo+PiArCWNhc2UgODoKPj4gIAkJY29sb3JfZGVwdGggPSBIRE1J X0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9QVEhfMjRCUFA7Cj4+IC0JZWxzZSBpZiAoaGRtaS0+aGRt aV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMCkKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSAxMDoK Pj4gIAkJY29sb3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9QVEhfMzBCUFA7 Cj4+IC0JZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19jb2xvcl9kZXB0aCA9PSAxMikKPj4g KwkJYnJlYWs7Cj4+ICsJY2FzZSAxMjoKPj4gIAkJY29sb3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FM RV9DU0NfQ09MT1JERV9QVEhfMzZCUFA7Cj4+IC0JZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVu Y19jb2xvcl9kZXB0aCA9PSAxNikKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSAxNjoKPj4gIAkJY29s b3JfZGVwdGggPSBIRE1JX0NTQ19TQ0FMRV9DU0NfQ09MT1JERV9QVEhfNDhCUFA7Cj4+IC0JZWxz ZQo+PiArCQlicmVhazsKPj4gKwo+PiArCWRlZmF1bHQ6Cj4+ICAJCXJldHVybjsKPj4gKwl9Cj4+ ICAKPj4gIAkvKiBDb25maWd1cmUgdGhlIENTQyByZWdpc3RlcnMgKi8KPj4gIAloZG1pX3dyaXRl YihoZG1pLCBpbnRlcnBvbGF0aW9uIHwgZGVjaW1hdGlvbiwgSERNSV9DU0NfQ0ZHKTsKPj4gQEAg LTczMCwzMiArODMzLDQzIEBAIHN0YXRpYyB2b2lkIGhkbWlfdmlkZW9fcGFja2V0aXplKHN0cnVj dCBkd19oZG1pICpoZG1pKQo+PiAgCXN0cnVjdCBoZG1pX2RhdGFfaW5mbyAqaGRtaV9kYXRhID0g JmhkbWktPmhkbWlfZGF0YTsKPj4gIAl1OCB2YWwsIHZwX2NvbmY7Cj4+ICAKPj4gLQlpZiAoaGRt aV9kYXRhLT5lbmNfb3V0X2Zvcm1hdCA9PSBSR0IgfHwKPj4gLQkgICAgaGRtaV9kYXRhLT5lbmNf b3V0X2Zvcm1hdCA9PSBZQ0JDUjQ0NCkgewo+PiAtCQlpZiAoIWhkbWlfZGF0YS0+ZW5jX2NvbG9y X2RlcHRoKSB7Cj4+IC0JCQlvdXRwdXRfc2VsZWN0ID0gSERNSV9WUF9DT05GX09VVFBVVF9TRUxF Q1RPUl9CWVBBU1M7Cj4+IC0JCX0gZWxzZSBpZiAoaGRtaV9kYXRhLT5lbmNfY29sb3JfZGVwdGgg PT0gOCkgewo+PiArCWlmIChoZG1pX2J1c19mbXRfaXNfcmdiKGhkbWktPmhkbWlfZGF0YS5lbmNf b3V0X2J1c19mb3JtYXQpIHx8Cj4+ICsJICAgIGhkbWlfYnVzX2ZtdF9pc195dXY0NDQoaGRtaS0+ aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCkpIHsKPj4gKwkJc3dpdGNoIChoZG1pX2J1c19m bXRfY29sb3JfZGVwdGgoCj4+ICsJCQkJCWhkbWktPmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3Jt YXQpKSB7Cj4+ICsJCWNhc2UgODoKPj4gIAkJCWNvbG9yX2RlcHRoID0gNDsKPj4gIAkJCW91dHB1 dF9zZWxlY3QgPSBIRE1JX1ZQX0NPTkZfT1VUUFVUX1NFTEVDVE9SX0JZUEFTUzsKPj4gLQkJfSBl bHNlIGlmIChoZG1pX2RhdGEtPmVuY19jb2xvcl9kZXB0aCA9PSAxMCkgewo+PiArCQkJYnJlYWs7 Cj4+ICsJCWNhc2UgMTA6Cj4+ICAJCQljb2xvcl9kZXB0aCA9IDU7Cj4+IC0JCX0gZWxzZSBpZiAo aGRtaV9kYXRhLT5lbmNfY29sb3JfZGVwdGggPT0gMTIpIHsKPj4gKwkJCWJyZWFrOwo+PiArCQlj YXNlIDEyOgo+PiAgCQkJY29sb3JfZGVwdGggPSA2Owo+PiAtCQl9IGVsc2UgaWYgKGhkbWlfZGF0 YS0+ZW5jX2NvbG9yX2RlcHRoID09IDE2KSB7Cj4+ICsJCQlicmVhazsKPj4gKwkJY2FzZSAxNjoK Pj4gIAkJCWNvbG9yX2RlcHRoID0gNzsKPj4gLQkJfSBlbHNlIHsKPj4gLQkJCXJldHVybjsKPj4g KwkJCWJyZWFrOwo+PiArCQlkZWZhdWx0Ogo+PiArCQkJb3V0cHV0X3NlbGVjdCA9IEhETUlfVlBf Q09ORl9PVVRQVVRfU0VMRUNUT1JfQllQQVNTOwo+PiAgCQl9Cj4+IC0JfSBlbHNlIGlmIChoZG1p X2RhdGEtPmVuY19vdXRfZm9ybWF0ID09IFlDQkNSNDIyXzhCSVRTKSB7Cj4+IC0JCWlmICghaGRt aV9kYXRhLT5lbmNfY29sb3JfZGVwdGggfHwKPj4gLQkJICAgIGhkbWlfZGF0YS0+ZW5jX2NvbG9y X2RlcHRoID09IDgpCj4+ICsJfSBlbHNlIGlmIChoZG1pX2J1c19mbXRfaXNfeXV2NDIyKGhkbWkt PmhkbWlfZGF0YS5lbmNfb3V0X2J1c19mb3JtYXQpKSB7Cj4+ICsJCXN3aXRjaCAoaGRtaV9idXNf Zm10X2NvbG9yX2RlcHRoKAo+PiArCQkJCQloZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9y bWF0KSkgewo+PiArCQljYXNlIDA6Cj4+ICsJCWNhc2UgODoKPj4gIAkJCXJlbWFwX3NpemUgPSBI RE1JX1ZQX1JFTUFQX1lDQzQyMl8xNmJpdDsKPj4gLQkJZWxzZSBpZiAoaGRtaV9kYXRhLT5lbmNf Y29sb3JfZGVwdGggPT0gMTApCj4+ICsJCQlicmVhazsKPj4gKwkJY2FzZSAxMDoKPj4gIAkJCXJl bWFwX3NpemUgPSBIRE1JX1ZQX1JFTUFQX1lDQzQyMl8yMGJpdDsKPj4gLQkJZWxzZSBpZiAoaGRt aV9kYXRhLT5lbmNfY29sb3JfZGVwdGggPT0gMTIpCj4+ICsJCQlicmVhazsKPj4gKwkJY2FzZSAx MjoKPj4gIAkJCXJlbWFwX3NpemUgPSBIRE1JX1ZQX1JFTUFQX1lDQzQyMl8yNGJpdDsKPj4gLQkJ ZWxzZQo+PiArCQkJYnJlYWs7Cj4+ICsKPj4gKwkJZGVmYXVsdDoKPj4gIAkJCXJldHVybjsKPj4g KwkJfQo+PiAgCQlvdXRwdXRfc2VsZWN0ID0gSERNSV9WUF9DT05GX09VVFBVVF9TRUxFQ1RPUl9Z Q0M0MjI7Cj4+ICAJfSBlbHNlIHsKPj4gIAkJcmV0dXJuOwo+PiBAQCAtMTEzOCwyOCArMTI1Miwz NSBAQCBzdGF0aWMgdm9pZCBoZG1pX2NvbmZpZ19BVkkoc3RydWN0IGR3X2hkbWkgKmhkbWksIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+PiAgCS8qIEluaXRpYWxpc2UgaW5mbyBmcmFt ZSBmcm9tIERSTSBtb2RlICovCj4+ICAJZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9tX2Rpc3Bs YXlfbW9kZSgmZnJhbWUsIG1vZGUpOwo+PiAgCj4+IC0JaWYgKGhkbWktPmhkbWlfZGF0YS5lbmNf b3V0X2Zvcm1hdCA9PSBZQ0JDUjQ0NCkKPj4gKwlpZiAoaGRtaV9idXNfZm10X2lzX3l1djQ0NCho ZG1pLT5oZG1pX2RhdGEuZW5jX291dF9idXNfZm9ybWF0KSkKPj4gIAkJZnJhbWUuY29sb3JzcGFj ZSA9IEhETUlfQ09MT1JTUEFDRV9ZVVY0NDQ7Cj4+IC0JZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRh LmVuY19vdXRfZm9ybWF0ID09IFlDQkNSNDIyXzhCSVRTKQo+PiArCWVsc2UgaWYgKGhkbWlfYnVz X2ZtdF9pc195dXY0MjIoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfYnVzX2Zvcm1hdCkpCj4+ICAJ CWZyYW1lLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfWVVWNDIyOwo+PiAgCWVsc2UKPj4g IAkJZnJhbWUuY29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9SR0I7Cj4+ICAKPj4gIAkvKiBT ZXQgdXAgY29sb3JpbWV0cnkgKi8KPj4gLQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9y bWF0ID09IFhWWUNDNDQ0KSB7Cj4+IC0JCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklN RVRSWV9FWFRFTkRFRDsKPj4gLQkJaWYgKGhkbWktPmhkbWlfZGF0YS5jb2xvcmltZXRyeSA9PSBI RE1JX0NPTE9SSU1FVFJZX0lUVV82MDEpCj4+IC0JCQlmcmFtZS5leHRlbmRlZF9jb2xvcmltZXRy eSA9Cj4+ICsJc3dpdGNoIChoZG1pLT5oZG1pX2RhdGEuZW5jX291dF9lbmNvZGluZykgewo+PiAr CWNhc2UgVjRMMl9ZQ0JDUl9FTkNfNjAxOgo+PiArCQlpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19p bl9lbmNvZGluZyA9PSBWNEwyX1lDQkNSX0VOQ19YVjYwMSkKPj4gKwkJCWZyYW1lLmNvbG9yaW1l dHJ5ID0gSERNSV9DT0xPUklNRVRSWV9FWFRFTkRFRDsKPj4gKwkJZWxzZQo+PiArCQkJZnJhbWUu Y29sb3JpbWV0cnkgPSBIRE1JX0NPTE9SSU1FVFJZX0lUVV82MDE7Cj4+ICsJCWZyYW1lLmV4dGVu ZGVkX2NvbG9yaW1ldHJ5ID0KPj4gIAkJCQlIRE1JX0VYVEVOREVEX0NPTE9SSU1FVFJZX1hWX1lD Q182MDE7Cj4+IC0JCWVsc2UgLypoZG1pLT5oZG1pX2RhdGEuY29sb3JpbWV0cnkgPT0gSERNSV9D T0xPUklNRVRSWV9JVFVfNzA5Ki8KPj4gLQkJCWZyYW1lLmV4dGVuZGVkX2NvbG9yaW1ldHJ5ID0K Pj4gKwljYXNlIFY0TDJfWUNCQ1JfRU5DXzcwOToKPj4gKwkJaWYgKGhkbWktPmhkbWlfZGF0YS5l bmNfaW5fZW5jb2RpbmcgPT0gVjRMMl9ZQ0JDUl9FTkNfWFY3MDkpCj4+ICsJCQlmcmFtZS5jb2xv cmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllfRVhURU5ERUQ7Cj4+ICsJCWVsc2UKPj4gKwkJCWZy YW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9JVFVfNzA5Owo+PiArCQlmcmFtZS5l eHRlbmRlZF9jb2xvcmltZXRyeSA9Cj4+ICAJCQkJSERNSV9FWFRFTkRFRF9DT0xPUklNRVRSWV9Y Vl9ZQ0NfNzA5Owo+PiAtCX0gZWxzZSBpZiAoaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0 ICE9IFJHQikgewo+PiAtCQlmcmFtZS5jb2xvcmltZXRyeSA9IGhkbWktPmhkbWlfZGF0YS5jb2xv cmltZXRyeTsKPj4gLQkJZnJhbWUuZXh0ZW5kZWRfY29sb3JpbWV0cnkgPSBIRE1JX0VYVEVOREVE X0NPTE9SSU1FVFJZX1hWX1lDQ182MDE7Cj4+IC0JfSBlbHNlIHsgLyogQ2FycmllcyBubyBkYXRh ICovCj4+IC0JCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9OT05FOwo+PiAt CQlmcmFtZS5leHRlbmRlZF9jb2xvcmltZXRyeSA9IEhETUlfRVhURU5ERURfQ09MT1JJTUVUUllf WFZfWUNDXzYwMTsKPj4gKwkJYnJlYWs7Cj4+ICsJZGVmYXVsdDogLyogQ2FycmllcyBubyBkYXRh ICovCj4+ICsJCWZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9JVFVfNjAxOwo+ PiArCQlmcmFtZS5leHRlbmRlZF9jb2xvcmltZXRyeSA9Cj4+ICsJCQkJSERNSV9FWFRFTkRFRF9D T0xPUklNRVRSWV9YVl9ZQ0NfNjAxOwo+PiArCQlicmVhazsKPj4gIAl9Cj4+ICAKPj4gIAlmcmFt ZS5zY2FuX21vZGUgPSBIRE1JX1NDQU5fTU9ERV9OT05FOwo+PiBAQCAtMTQzNiwxOSArMTU1Nywz MCBAQCBzdGF0aWMgaW50IGR3X2hkbWlfc2V0dXAoc3RydWN0IGR3X2hkbWkgKmhkbWksIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+PiAgCSAgICAoaGRtaS0+dmljID09IDIxKSB8fCAo aGRtaS0+dmljID09IDIyKSB8fAo+PiAgCSAgICAoaGRtaS0+dmljID09IDIpIHx8IChoZG1pLT52 aWMgPT0gMykgfHwKPj4gIAkgICAgKGhkbWktPnZpYyA9PSAxNykgfHwgKGhkbWktPnZpYyA9PSAx OCkpCj4+IC0JCWhkbWktPmhkbWlfZGF0YS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllf SVRVXzYwMTsKPj4gKwkJaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRfZW5jb2RpbmcgPSBWNEwyX1lD QkNSX0VOQ182MDE7Cj4+ICAJZWxzZQo+PiAtCQloZG1pLT5oZG1pX2RhdGEuY29sb3JpbWV0cnkg PSBIRE1JX0NPTE9SSU1FVFJZX0lUVV83MDk7Cj4+ICsJCWhkbWktPmhkbWlfZGF0YS5lbmNfb3V0 X2VuY29kaW5nID0gVjRMMl9ZQ0JDUl9FTkNfNzA5Owo+PiAgCj4+ICAJaGRtaS0+aGRtaV9kYXRh LnZpZGVvX21vZGUubXBpeGVscmVwZXRpdGlvbm91dHB1dCA9IDA7Cj4+ICAJaGRtaS0+aGRtaV9k YXRhLnZpZGVvX21vZGUubXBpeGVscmVwZXRpdGlvbmlucHV0ID0gMDsKPj4gIAo+PiAtCS8qIFRP RE86IEdldCBpbnB1dCBmb3JtYXQgZnJvbSBJUFUgKHZpYSBGQiBkcml2ZXIgaW50ZXJmYWNlKSAq Lwo+PiAtCWhkbWktPmhkbWlfZGF0YS5lbmNfaW5fZm9ybWF0ID0gUkdCOwo+PiArCS8qIFRPRklY OiBHZXQgaW5wdXQgZm9ybWF0IGZyb20gcGxhdCBkYXRhIG9yIGZhbGxiYWNrIHRvIFJHQjg4OCAq Lwo+PiArCWlmIChoZG1pLT5wbGF0X2RhdGEtPmlucHV0X2J1c19mb3JtYXQgPj0gMCkKPj4gKwkJ aGRtaS0+aGRtaV9kYXRhLmVuY19pbl9idXNfZm9ybWF0ID0KPj4gKwkJCWhkbWktPnBsYXRfZGF0 YS0+aW5wdXRfYnVzX2Zvcm1hdDsKPj4gKwllbHNlCj4+ICsJCWhkbWktPmhkbWlfZGF0YS5lbmNf aW5fYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4+ICsKPj4gKwkvKiBU T0ZJWDogR2V0IGlucHV0IGVuY29kaW5nIGZyb20gcGxhdCBkYXRhIG9yIGZhbGxiYWNrIHRvIG5v bmUgKi8KPj4gKwlpZiAoaGRtaS0+cGxhdF9kYXRhLT5pbnB1dF9idXNfZW5jb2RpbmcgPj0gMCkK Pj4gKwkJaGRtaS0+aGRtaV9kYXRhLmVuY19pbl9lbmNvZGluZyA9Cj4+ICsJCQloZG1pLT5wbGF0 X2RhdGEtPmlucHV0X2J1c19lbmNvZGluZzsKPj4gKwllbHNlCj4+ICsJCWhkbWktPmhkbWlfZGF0 YS5lbmNfaW5fZW5jb2RpbmcgPSBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUOwo+PiAgCj4+IC0JaGRt aS0+aGRtaV9kYXRhLmVuY19vdXRfZm9ybWF0ID0gUkdCOwo+PiArCS8qIFRPRklYOiBEZWZhdWx0 IHRvIFJHQjg4OCBvdXRwdXQgZm9ybWF0ICovCj4+ICsJaGRtaS0+aGRtaV9kYXRhLmVuY19vdXRf YnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7Cj4+ICAKPj4gLQloZG1pLT5o ZG1pX2RhdGEuZW5jX2NvbG9yX2RlcHRoID0gODsKPj4gIAloZG1pLT5oZG1pX2RhdGEucGl4X3Jl cGV0X2ZhY3RvciA9IDA7Cj4+ICAJaGRtaS0+aGRtaV9kYXRhLmhkY3BfZW5hYmxlID0gMDsKPj4g IAloZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZS5tZGF0YWVuYWJsZXBvbGFyaXR5ID0gdHJ1ZTsK Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggYi9pbmNsdWRlL2Ry bS9icmlkZ2UvZHdfaGRtaS5oCj4+IGluZGV4IGJjY2VlZTguLmMzYjhkYTkgMTAwNjQ0Cj4+IC0t LSBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0vYnJp ZGdlL2R3X2hkbWkuaAo+PiBAQCAtMTQsNiArMTQsNjcgQEAKPj4gIAo+PiAgc3RydWN0IGR3X2hk bWk7Cj4+ICAKPj4gKy8qKgo+PiArICogRE9DOiBTdXBwb3J0ZWQgaW5wdXQgZm9ybWF0cyBhbmQg ZW5jb2RpbmdzCj4+ICsgKgo+PiArICogRGVwZW5kaW5nIG9uIHRoZSBIYXJkd2FyZSBjb25maWd1 cmF0aW9uIG9mIHRoZSBDb250cm9sbGVyIElQLCBpdCBzdXBwb3J0cwo+PiArICogYSBzdWJzZXQg b2YgdGhlIGZvbGxvd2luZyBpbnB1dCBmb3JtYXRzIGFuZCBlbmNvZGluZ3Mgb24gaXQncyBpbnRl cm5hbAo+PiArICogNDhiaXQgYnVzLgo+PiArICoKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rIAo+PiArICogKyBGb3JtYXQgTmFtZSAgICAgICAgICArIEZvcm1hdCBDb2Rl ICAgICAgICAgICAgICAgICAgICAgKyBFbmNvZGluZ3MgICAgICAgICAgICAgICAgICAgICsKPj4g KyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiArIFJHQiA0OjQ6NCA4 Yml0ICAgICAgICsgYGBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0YGAgICArIGBgVjRMMl9ZQ0JD Ul9FTkNfREVGQVVMVGBgICAgKwo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKPj4gKyAqICsgUkdCIDQ6NDo0IDEwYml0cyAgICAgKyBgYE1FRElBX0JVU19GTVRfUkdCMTAx MDEwXzFYMzBgYCsgYGBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUYGAgICArCj4+ICsgKiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBSR0IgNDo0OjQgMTJiaXRzICAgICAr IGBgTUVESUFfQlVTX0ZNVF9SR0IxMjEyMTJfMVgzNmBgKyBgYFY0TDJfWUNCQ1JfRU5DX0RFRkFV TFRgYCAgICsKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiAr IFJHQiA0OjQ6NCAxNmJpdHMgICAgICsgYGBNRURJQV9CVVNfRk1UX1JHQjE2MTYxNl8xWDQ4YGAr IGBgVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVGBgICAgKwo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKPj4gKyAqICsgWUNiQ3IgNDo0OjQgOGJpdCAgICAgKyBgYE1FRElBX0JV U19GTVRfWVVWOF8xWDI0YGAgICAgICsgYGBWNEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4+ ICsgKiArICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArIG9yIGBgVjRMMl9ZQ0JDUl9FTkNfNzA5YGAgICAgKwo+PiArICogKyAgICAgICAgICAg ICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvciBgYFY0TDJf WUNCQ1JfRU5DX1hWNjAxYGAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBg ICArCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZQ2JD ciA0OjQ6NCAxMGJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9ZVVYxMF8xWDMwYGAgICAgKyBgYFY0 TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAg KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183 MDlgYCAgICArCj4+ICsgKiArICAgICAgICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArIG9yIGBgVjRMMl9ZQ0JDUl9FTkNfWFY2MDFgYCAgKwo+PiArICog KyAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KyBvciBgYFY0TDJfWUNCQ1JfRU5DX1hWNzA5YGAgICsKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCj4+ICsgKiArIFlDYkNyIDQ6NDo0IDEyYml0cyAgICsgYGBNRURJQV9C VVNfRk1UX1lVVjEyXzFYMzZgYCAgICArIGBgVjRMMl9ZQ0JDUl9FTkNfNjAxYGAgICAgICAgKwo+ PiArICogKyAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyBvciBgYFY0TDJfWUNCQ1JfRU5DXzcwOWBgICAgICsKPj4gKyAqICsgICAgICAgICAg ICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwy X1lDQkNSX0VOQ19YVjYwMWBgICArCj4+ICsgKiArICAgICAgICAgICAgICAgICAgICAgICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9yIGBgVjRMMl9ZQ0JDUl9FTkNfWFY3MDlg YCAgKwo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqICsgWUNi Q3IgNDo0OjQgMTZiaXRzICAgKyBgYE1FRElBX0JVU19GTVRfWVVWMTZfMVg0OGBgICAgICsgYGBW NEwyX1lDQkNSX0VOQ182MDFgYCAgICAgICArCj4+ICsgKiArICAgICAgICAgICAgICAgICAgICAg ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG9yIGBgVjRMMl9ZQ0JDUl9FTkNf NzA5YGAgICAgKwo+PiArICogKyAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKyBvciBgYFY0TDJfWUNCQ1JfRU5DX1hWNjAxYGAgICsKPj4gKyAq ICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsgb3IgYGBWNEwyX1lDQkNSX0VOQ19YVjcwOWBgICArCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZQ2JDciA0OjI6MiA4Yml0ICAgICArIGBgTUVESUFf QlVTX0ZNVF9VWVZZOF8xWDE2YGAgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsK Pj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZQ2JDciA0OjI6MiAxMGJpdHMgICArIGBg TUVESUFfQlVTX0ZNVF9VWVZZMTBfMVgyMGBgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAg ICAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZQ2JDciA0OjI6MiAxMmJpdHMg ICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTJfMVgyNGBgICAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYw MWBgICAgICAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICArCj4+ICsg KiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZQ2JDciA0OjI6MCA4 Yml0ICAgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZOF8xXzFYMjRgYCAgKyBgYFY0TDJfWUNCQ1Jf RU5DXzYwMWBgICAgICAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlgYCAgICAr Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZQ2JDciA0 OjI6MCAxMGJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTBfMV8xWDMwYGAgKyBgYFY0TDJf WUNCQ1JfRU5DXzYwMWBgICAgICAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAgICAgKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VOQ183MDlg YCAgICArCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKyBZ Q2JDciA0OjI6MCAxMmJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTJfMV8xWDM2YGAgKyBg YFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKPj4gKyAqICsgICAgICAgICAgICAgICAgICAg ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lDQkNSX0VO Q183MDlgYCAgICArCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiAr ICogKyBZQ2JDciA0OjI6MCAxNmJpdHMgICArIGBgTUVESUFfQlVTX0ZNVF9VWVZZMTZfMV8xWDQ4 YGAgKyBgYFY0TDJfWUNCQ1JfRU5DXzYwMWBgICAgICAgICsKPj4gKyAqICsgICAgICAgICAgICAg ICAgICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3IgYGBWNEwyX1lD QkNSX0VOQ183MDlgYCAgICArCj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+PiArICovCj4+ICsKPj4gIGVudW0gewo+PiAgCURXX0hETUlfUkVTXzgsCj4+ICAJRFdfSERN SV9SRVNfMTAsCj4+IEBAIC02Miw2ICsxMjMsOCBAQCBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEg ewo+PiAgCXN0cnVjdCByZWdtYXAgKnJlZ207Cj4+ICAJZW51bSBkcm1fbW9kZV9zdGF0dXMgKCpt b2RlX3ZhbGlkKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCQkJCQkgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7Cj4+ICsJdW5zaWduZWQgbG9uZyBpbnB1dF9i dXNfZm9ybWF0Owo+PiArCXVuc2lnbmVkIGxvbmcgaW5wdXRfYnVzX2VuY29kaW5nOwo+PiAgCj4+ ICAJLyogVmVuZG9yIFBIWSBzdXBwb3J0ICovCj4+ICAJY29uc3Qgc3RydWN0IGR3X2hkbWlfcGh5 X29wcyAqcGh5X29wczsKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=