From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH xf86-video-intel v3 2/2] sna: Added AYUV format support for textured and sprite video adapters. Date: Wed, 10 Oct 2018 22:47:28 +0300 Message-ID: <20181010194728.GU9144@intel.com> References: <20181009133017.23120-1-stanislav.lisovskiy@intel.com> <20181009133017.23120-3-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E50B6E35A for ; Wed, 10 Oct 2018 19:47:33 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181009133017.23120-3-stanislav.lisovskiy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stanislav Lisovskiy Cc: intel-gfx@lists.freedesktop.org, ville.syrjala@intel.com, martin.peres@intel.com, juha-pekka.heikkila@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMDksIDIwMTggYXQgMDQ6MzA6MTdQTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiB2MjogUmVuYW1lZCBEUk1fRk9STUFUX1hZVVYgdG8gRFJNX0ZPUk1BVF9Y WVVWODg4OC4KPiAgICAgQWRkZWQgY29tbWVudCBhYm91dCBBWVVWIGJ5dGUgb3JkZXJpbmcgaW4g R3N0cmVhbWVyLgo+IAo+IHYzOiBSZW1vdmVkIHNuYV9jb21wb3NpdGVfb3AgZmxhZ3MgcmVsYXRl ZCBjaGFuZ2UgdG8gdGhlIHNlcGFyYXRlIHBhdGNoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFN0YW5p c2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlAaW50ZWwuY29tPgo+IC0tLQo+ICBz cmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgIDIgKwo+ICAu Li4vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4YSAgICAgICAgICAgfCAgNjAgKysrKysr Kwo+ICAuLi4vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4YiAgICAgICAgICAgfCAgIDYg Kwo+ICBzcmMvc25hL2dlbjlfcmVuZGVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjcg KysrKwo+ICBzcmMvc25hL3NuYV9yZW5kZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDQgKwo+ICBzcmMvc25hL3NuYV92aWRlby5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx NDcgKysrKysrKysrKysrKysrKysrCj4gIHNyYy9zbmEvc25hX3ZpZGVvLmggICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyMCArKysKPiAgc3JjL3NuYS9zbmFfdmlkZW9fc3ByaXRlLmMgICAg ICAgICAgICAgICAgICAgIHwgIDE5ICsrLQo+ICBzcmMvc25hL3NuYV92aWRlb190ZXh0dXJlZC5j ICAgICAgICAgICAgICAgICAgfCAgIDggKwo+ICA5IGZpbGVzIGNoYW5nZWQsIDI4OCBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3JlbmRlcl9w cm9ncmFtL2V4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGEKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiCj4g Cj4gZGlmZiAtLWdpdCBhL3NyYy9yZW5kZXJfcHJvZ3JhbS9NYWtlZmlsZS5hbSBiL3NyYy9yZW5k ZXJfcHJvZ3JhbS9NYWtlZmlsZS5hbQo+IGluZGV4IGRjNTgxMzhmLi5lMzVmZmE1MiAxMDA2NDQK PiAtLS0gYS9zcmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0KPiArKysgYi9zcmMvcmVuZGVy X3Byb2dyYW0vTWFrZWZpbGUuYW0KPiBAQCAtMTk2LDYgKzE5Niw3IEBAIElOVEVMX0c3QiA9CQkJ CVwKPiAgSU5URUxfRzhBID0JCQkJXAo+ICAJZXhhX3dtX3NyY19hZmZpbmUuZzhhIAkJXAo+ICAJ ZXhhX3dtX3NyY19zYW1wbGVfYXJnYi5nOGEgCVwKPiArCWV4YV93bV9zcmNfc2FtcGxlX2FyZ2Jf YXl1di5nOGEgXAo+ICAJZXhhX3dtX3NyY19zYW1wbGVfbnYxMi5nOGEgCVwKPiAgCWV4YV93bV9z cmNfc2FtcGxlX3BsYW5hci5nOGEgCVwKPiAgCWV4YV93bV93cml0ZS5nOGEgCQlcCj4gQEAgLTIw NSw2ICsyMDYsNyBAQCBJTlRFTF9HOEEgPQkJCQlcCj4gIAo+ICBJTlRFTF9HOEIgPQkJCQlcCj4g IAlleGFfd21fc3JjX2FmZmluZS5nOGIgCQlcCj4gKwlleGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5 dXYuZzhiIFwKPiAgCWV4YV93bV9zcmNfc2FtcGxlX2FyZ2IuZzhiIAlcCj4gIAlleGFfd21fc3Jj X3NhbXBsZV9udjEyLmc4YiAJXAo+ICAJZXhhX3dtX3NyY19zYW1wbGVfcGxhbmFyLmc4YiAJXAo+ IGRpZmYgLS1naXQgYS9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9h eXV2Lmc4YSBiL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYu ZzhhCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZDc5ODQwYWMKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV9zcmNfc2FtcGxl X2FyZ2JfYXl1di5nOGEKPiBAQCAtMCwwICsxLDYwIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDC qSAyMDA2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4g KyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAq Cj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgIFdhbmcgWmhlbnl1IDx6aGVueXUuei53YW5nQGludGVs LmNvbT4KPiArICogICAgS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Cj4gKyAqLwo+ ICsKPiArLyogU2FtcGxlIHRoZSBzcmMgc3VyZmFjZSAqLwo+ICsKPiAraW5jbHVkZShgZXhhX3dt Lmc0aScpCj4gKwo+ICt1bmRlZmluZShgc3JjX21zZycpCj4gK3VuZGVmaW5lKGBzcmNfbXNnX2lu ZCcpCj4gKwo+ICtkZWZpbmUoYHNyY19tc2cnLCAgICAgICBgZzY1JykKPiArZGVmaW5lKGBzcmNf bXNnX2luZCcsICAgYDY1JykKPiArCj4gKy8qIHByZXBhcmUgc2FtcGxlciByZWFkIGJhY2sgZ1gg cmVnaXN0ZXIsIHdoaWNoIHdvdWxkIGJlIHdyaXR0ZW4gYmFjayB0byBvdXRwdXQgKi8KPiArCj4g Ky8qIHVzZSBzaW1kMTYgc2FtcGxlciwgcGFyYW0gMCBpcyB1LCBwYXJhbSAxIGlzIHYuICovCj4g Ky8qICdwYXlsb2FkJyBsb2FkaW5nLCBhc3N1bWluZyB0ZXggY29vcmQgc3RhcnQgZnJvbSBnNCAq Lwo+ICsKPiArLyogbG9hZCBhcmdiICovCj4gK21vdiAoMSkgZzAuODwxPlVECTB4MDAwMDAwMDBV RCB7IGFsaWduMSBtYXNrX2Rpc2FibGUgfTsKPiArbW92ICg4KSBzcmNfbXNnPDE+VUQgZzA8OCw4 LDE+VUQgeyBhbGlnbjEgfTsgLyogY29weSB0byBtc2cgc3RhcnQgcmVnKi8KPiArCj4gKy8qIHNy Y19tc2cgd2lsbCBiZSBjb3BpZWQgd2l0aCBnMCwgYXMgaXQgY29udGFpbnMgc2VuZCBkZXNjICov Cj4gKy8qIGVtaXQgc2FtcGxlciAnc2VuZCcgY21kICovCj4gK3NlbmQgKDE2KSBzcmNfbXNnX2lu ZAkvKiBtc2cgcmVnIGluZGV4ICovCj4gKwlzcmNfc2FtcGxlX2Jhc2U8MT5VVyAvKiByZWFkYmFj ayAqLwo+ICsJbnVsbAo+ICsJc2FtcGxlciAoMSwwLEYpCS8qIHNhbXBsZXIgbWVzc2FnZSBkZXNj cmlwdGlvbiwgKGJpbmRpbmdfdGFibGUsc2FtcGxlcl9pbmRleCxkYXRhdHlwZSkKPiArCQkJCS8q IGhlcmUoc3JjLT5kc3QpIHdlIHNob3VsZCB1c2Ugc3JjX3NhbXBsZXIgYW5kIHNyY19zdXJmYWNl ICovCj4gKwltbGVuIDUgcmxlbiA4IHsgYWxpZ24xIH07ICAgLyogcmVxdWlyZWQgbWVzc2FnZSBs ZW4gNSwgcmVhZGJhY2sgbGVuIDggKi8KPiArCj4gKy8qIFB1dCBDYkNyIGludG8gcmlnaHQgcGxh Y2VzICovCgpJIGd1ZXNzIHRoaXMgY291bGQgdXNlIGEgY29tbWVudCB0aGF0IHdlIGZvbGxvdyB0 aGUgbm9uc2Vuc2UgZ3N0cmVhbWVyCmJ5dGUgb3JkZXIgaGVyZSByYXRoZXIgdGhhbiB0aGUgcHJv cGVyIEFZVVYgYnl0ZSBvcmRlci4gT3IgbWF5YmUgaXQKd291bGQgbWFrZSBtb3JlIHNlbnNlIHRv IGp1c3QgYnl0ZSBzd2FwIGR1cmluZyB0aGUgY29weSBhbnl3YXkuCgo+ICttb3YgKDE2KSBzcmNf c2FtcGxlX2I8MT5VRCBzcmNfc2FtcGxlX3I8MT5VRCAgeyBhbGlnbjEgfTsKPiArbW92ICgxNikg c3JjX3NhbXBsZV9yPDE+VUQgc3JjX3NhbXBsZV9hPDE+VUQgIHsgYWxpZ24xIH07Cj4gK21vdiAo MTYpIHNyY19zYW1wbGVfYTwxPkYgMS4wRjsKPiArCj4gZGlmZiAtLWdpdCBhL3NyYy9yZW5kZXJf cHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiIGIvc3JjL3JlbmRlcl9wcm9n cmFtL2V4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGIKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwLi40ZjQzOTE0MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9zcmMv cmVuZGVyX3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4Ygo+IEBAIC0wLDAg KzEsNiBAQAo+ICsgICB7IDB4MDAwMDAwMDEsIDB4MjAwODA2MGMsIDB4MDAwMDAwMDAsIDB4MDAw MDAwMDAgfSwKPiArICAgeyAweDAwNjAwMDAxLCAweDI4MjAwMjA4LCAweDAwOGQwMDAwLCAweDAw MDAwMDAwIH0sCj4gKyAgIHsgMHgwMjgwMDAzMSwgMHgyMWMwMGE0OCwgMHgwNjAwMDgyMCwgMHgw YThjMDAwMSB9LAo+ICsgICB7IDB4MDA4MDAwMDEsIDB4MjI0MDAyMDgsIDB4MDAyMDAxYzAsIDB4 MDAwMDAwMDAgfSwKPiArICAgeyAweDAwODAwMDAxLCAweDIxYzAwMjA4LCAweDAwMjAwMjgwLCAw eDAwMDAwMDAwIH0sCj4gKyAgIHsgMHgwMDgwMDAwMSwgMHgyMjgwM2VlOCwgMHgzODAwMDAwMCwg MHgzZjgwMDAwMCB9LAo+IGRpZmYgLS1naXQgYS9zcmMvc25hL2dlbjlfcmVuZGVyLmMgYi9zcmMv c25hL2dlbjlfcmVuZGVyLmMKPiBpbmRleCBlYjIyYjY0Mi4uMjk0NDdkMjUgMTAwNjQ0Cj4gLS0t IGEvc3JjL3NuYS9nZW45X3JlbmRlci5jCj4gKysrIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCj4g QEAgLTEyOSw2ICsxMjksMjAgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbF9wbGFu YXJfYnQ3MDlbXVs0XSA9IHsKPiAgI2luY2x1ZGUgImV4YV93bV93cml0ZS5nOGIiCj4gIH07Cj4g IAo+ICtzdGF0aWMgY29uc3QgdWludDMyX3QgcHNfa2VybmVsX3BhY2tlZF9heXV2X2J0NjAxW11b NF0gPSB7Cj4gKyNpbmNsdWRlICJleGFfd21fc3JjX2FmZmluZS5nOGIiCj4gKyNpbmNsdWRlICJl eGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiIgo+ICsjaW5jbHVkZSAiZXhhX3dtX3l1dl9y Z2JfYnQ2MDEuZzhiIgo+ICsjaW5jbHVkZSAiZXhhX3dtX3dyaXRlLmc4YiIKPiArfTsKPiArCj4g K3N0YXRpYyBjb25zdCB1aW50MzJfdCBwc19rZXJuZWxfcGFja2VkX2F5dXZfYnQ3MDlbXVs0XSA9 IHsKPiArI2luY2x1ZGUgImV4YV93bV9zcmNfYWZmaW5lLmc4YiIKPiArI2luY2x1ZGUgImV4YV93 bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGIiCj4gKyNpbmNsdWRlICJleGFfd21feXV2X3JnYl9i dDcwOS5nOGIiCj4gKyNpbmNsdWRlICJleGFfd21fd3JpdGUuZzhiIgo+ICt9Owo+ICsKPiAgc3Rh dGljIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbF9udjEyX2J0NzA5W11bNF0gPSB7Cj4gICNpbmNs dWRlICJleGFfd21fc3JjX2FmZmluZS5nOGIiCj4gICNpbmNsdWRlICJleGFfd21fc3JjX3NhbXBs ZV9udjEyLmc4YiIKPiBAQCAtMTc3LDYgKzE5MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21f a2VybmVsX2luZm8gewo+ICAJS0VSTkVMKFZJREVPX1BMQU5BUl9CVDcwOSwgcHNfa2VybmVsX3Bs YW5hcl9idDcwOSwgNyksCj4gIAlLRVJORUwoVklERU9fTlYxMl9CVDcwOSwgcHNfa2VybmVsX252 MTJfYnQ3MDksIDcpLAo+ICAJS0VSTkVMKFZJREVPX1BBQ0tFRF9CVDcwOSwgcHNfa2VybmVsX3Bh Y2tlZF9idDcwOSwgMiksCj4gKwlLRVJORUwoVklERU9fUEFDS0VEX0FZVVZfQlQ2MDEsIHBzX2tl cm5lbF9wYWNrZWRfYXl1dl9idDYwMSwgMiksCj4gKwlLRVJORUwoVklERU9fUEFDS0VEX0FZVVZf QlQ3MDksIHBzX2tlcm5lbF9wYWNrZWRfYXl1dl9idDcwOSwgMiksCgpNYXliZSBqdXN0IFZJREVP X0FZVVZfQlQqLiAKCj4gIAlLRVJORUwoVklERU9fUkdCLCBwc19rZXJuZWxfcmdiLCAyKSwKPiAg I2VuZGlmCj4gIH07Cj4gQEAgLTI1NTMsNiArMjU2OSwxMCBAQCBnZW45X3JlbmRlcl9jb21wb3Np dGUoc3RydWN0IHNuYSAqc25hLAo+ICAJCQkJCQkJICAgICB0bXAtPmhhc19jb21wb25lbnRfYWxw aGEsCj4gIAkJCQkJCQkgICAgIHRtcC0+aXNfYWZmaW5lKTsKPiAgCj4gKyAgICAgICAgdG1wLT5n ZW45X2tlcm5lbCA9IGdlbjlfY2hvb3NlX2NvbXBvc2l0ZV9rZXJuZWwodG1wLT5vcCwKPiArCQkJ CQkJCSAgICB0bXAtPm1hc2suYm8gIT0gTlVMTCwKPiArCQkJCQkJCSAgICB0bXAtPmhhc19jb21w b25lbnRfYWxwaGEsCj4gKwkJCQkJCQkgICAgdG1wLT5pc19hZmZpbmUpOwoKV2hhdCdzIHRoaXM/ Cgo+ICAJdG1wLT5ibHQgICA9IGdlbjlfcmVuZGVyX2NvbXBvc2l0ZV9ibHQ7Cj4gIAl0bXAtPmJv eCAgID0gZ2VuOV9yZW5kZXJfY29tcG9zaXRlX2JveDsKPiAgCXRtcC0+Ym94ZXMgPSBnZW45X3Jl bmRlcl9jb21wb3NpdGVfYm94ZXNfX2JsdDsKPiBAQCAtMjc4NCw2ICsyODA0LDcgQEAgZ2VuOV9y ZW5kZXJfY29tcG9zaXRlX3NwYW5zKHN0cnVjdCBzbmEgKnNuYSwKPiAgCXRtcC0+YmFzZS51Lmdl bjkud21fa2VybmVsID0KPiAgCQlHRU45X1dNX0tFUk5FTF9PUEFDSVRZIHwgIXRtcC0+YmFzZS5p c19hZmZpbmU7Cj4gIAo+ICsJdG1wLT5iYXNlLmdlbjlfa2VybmVsID0gR0VOOV9XTV9LRVJORUxf T1BBQ0lUWSB8ICF0bXAtPmJhc2UuaXNfYWZmaW5lOwoKQW5kIHRoaXM/Cgo+ICAJdG1wLT5ib3gg ICA9IGdlbjlfcmVuZGVyX2NvbXBvc2l0ZV9zcGFuc19ib3g7Cj4gIAl0bXAtPmJveGVzID0gZ2Vu OV9yZW5kZXJfY29tcG9zaXRlX3NwYW5zX2JveGVzOwo+ICAJaWYgKHRtcC0+ZW1pdF9ib3hlcykK PiBAQCAtMzg1Myw2ICszODc0LDggQEAgc3RhdGljIHZvaWQgZ2VuOV9lbWl0X3ZpZGVvX3N0YXRl KHN0cnVjdCBzbmEgKnNuYSwKPiAgCQkJc3JjX3N1cmZfZm9ybWF0WzBdID0gU1VSRkFDRUZPUk1B VF9COEc4UjhYOF9VTk9STTsKPiAgCQllbHNlIGlmIChmcmFtZS0+aWQgPT0gRk9VUkNDX1VZVlkp Cj4gIAkJCXNyY19zdXJmX2Zvcm1hdFswXSA9IFNVUkZBQ0VGT1JNQVRfWUNSQ0JfU1dBUFk7Cj4g KwkJZWxzZSBpZiAoaXNfYXl1dl9mb3VyY2MoZnJhbWUtPmlkKSkKCkp1c3QgZnJhbWUtPmlkID09 IEZPVVJDQ19BWVVWPwoKPiArCQkJc3JjX3N1cmZfZm9ybWF0WzBdID0gU1VSRkFDRUZPUk1BVF9C OEc4UjhBOF9VTk9STTsKPiAgCQllbHNlCj4gIAkJCXNyY19zdXJmX2Zvcm1hdFswXSA9IFNVUkZB Q0VGT1JNQVRfWUNSQ0JfTk9STUFMOwo+ICAKPiBAQCAtMzkwMyw2ICszOTI2LDkgQEAgc3RhdGlj IHVuc2lnbmVkIHNlbGVjdF92aWRlb19rZXJuZWwoY29uc3Qgc3RydWN0IHNuYV92aWRlbyAqdmlk ZW8sCj4gIAljYXNlIEZPVVJDQ19SR0I1NjU6Cj4gIAkJcmV0dXJuIEdFTjlfV01fS0VSTkVMX1ZJ REVPX1JHQjsKPiAgCj4gKwljYXNlIEZPVVJDQ19BWVVWOgo+ICsJCXJldHVybiBHRU45X1dNX0tF Uk5FTF9WSURFT19QQUNLRURfQVlVVl9CVDYwMTsKCk1pc3NpbmcgdGhlIGNvbG9yc3BhY2UgaGFu ZGxpbmcuCgo+ICsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuIHZpZGVvLT5jb2xvcnNwYWNlID8K PiAgCQkJR0VOOV9XTV9LRVJORUxfVklERU9fUEFDS0VEX0JUNzA5IDoKPiBAQCAtNDA4MCw2ICs0 MTA2LDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9yZW5kZXJfZmluaShzdHJ1Y3Qgc25hICpzbmEpCj4g IAlrZ2VtX2JvX2Rlc3Ryb3koJnNuYS0+a2dlbSwgc25hLT5yZW5kZXJfc3RhdGUuZ2VuOS5nZW5l cmFsX2JvKTsKPiAgfQo+ICAKPiArCgpzdHJheSB3aGl0ZXNwYWNlCgo+ICBzdGF0aWMgYm9vbCBn ZW45X3JlbmRlcl9zZXR1cChzdHJ1Y3Qgc25hICpzbmEpCj4gIHsKPiAgCXN0cnVjdCBnZW45X3Jl bmRlcl9zdGF0ZSAqc3RhdGUgPSAmc25hLT5yZW5kZXJfc3RhdGUuZ2VuOTsKPiBkaWZmIC0tZ2l0 IGEvc3JjL3NuYS9zbmFfcmVuZGVyLmggYi9zcmMvc25hL3NuYV9yZW5kZXIuaAo+IGluZGV4IGE0 ZTViNTZhLi43YWU5YTBiMCAxMDA2NDQKPiAtLS0gYS9zcmMvc25hL3NuYV9yZW5kZXIuaAo+ICsr KyBiL3NyYy9zbmEvc25hX3JlbmRlci5oCj4gQEAgLTE1NCw2ICsxNTQsNyBAQCBzdHJ1Y3Qgc25h X2NvbXBvc2l0ZV9vcCB7Cj4gIAkJCXVpbnQ4X3Qgd21fa2VybmVsOwo+ICAJCX0gZ2VuOTsKPiAg CX0gdTsKPiArCXVuc2lnbmVkIGxvbmcgZ2VuOV9rZXJuZWw7Cgo/Cgo+ICAKPiAgCXZvaWQgKnBy aXY7Cj4gIH07Cj4gQEAgLTYxNyw2ICs2MTgsOSBAQCBlbnVtIHsKPiAgCUdFTjlfV01fS0VSTkVM X1ZJREVPX05WMTJfQlQ3MDksCj4gIAlHRU45X1dNX0tFUk5FTF9WSURFT19QQUNLRURfQlQ3MDks Cj4gIAo+ICsJR0VOOV9XTV9LRVJORUxfVklERU9fUEFDS0VEX0FZVVZfQlQ2MDEsCj4gKwlHRU45 X1dNX0tFUk5FTF9WSURFT19QQUNLRURfQVlVVl9CVDcwOSwKPiArCj4gIAlHRU45X1dNX0tFUk5F TF9WSURFT19SR0IsCj4gIAlHRU45X1dNX0tFUk5FTF9DT1VOVAo+ICB9Owo+IGRpZmYgLS1naXQg YS9zcmMvc25hL3NuYV92aWRlby5jIGIvc3JjL3NuYS9zbmFfdmlkZW8uYwo+IGluZGV4IDU1NDA1 ZjgxLi5iM2MyYmRjNiAxMDA2NDQKPiAtLS0gYS9zcmMvc25hL3NuYV92aWRlby5jCj4gKysrIGIv c3JjL3NuYS9zbmFfdmlkZW8uYwo+IEBAIC0yODEsNiArMjgxLDcgQEAgc25hX3ZpZGVvX2ZyYW1l X3NldF9yb3RhdGlvbihzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywKPiAgCX0gZWxzZSB7Cj4gIAkJ c3dpdGNoIChmcmFtZS0+aWQpIHsKPiAgCQljYXNlIEZPVVJDQ19SR0I4ODg6Cj4gKwkJY2FzZSBG T1VSQ0NfQVlVVjoKPiAgCQkJaWYgKHJvdGF0aW9uICYgKFJSX1JvdGF0ZV85MCB8IFJSX1JvdGF0 ZV8yNzApKSB7Cj4gIAkJCQlmcmFtZS0+cGl0Y2hbMF0gPSBBTElHTigoaGVpZ2h0IDw8IDIpLCBh bGlnbik7Cj4gIAkJCQlmcmFtZS0+c2l6ZSA9IChpbnQpZnJhbWUtPnBpdGNoWzBdICogd2lkdGg7 Cj4gQEAgLTU4NCw2ICs1ODUsMTQ5IEBAIHNuYV9jb3B5X3BhY2tlZF9kYXRhKHN0cnVjdCBzbmFf dmlkZW8gKnZpZGVvLAo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZAo+ICtzbmFfY29weV9w YWNrZWRfZGF0YV9heXV2KHN0cnVjdCBzbmFfdmlkZW8gKnZpZGVvLAoKTWF5YmUgc25hX2NvcHlf YXl1dl9kYXRhKCkgPwoKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBzbmFfdmlkZW9fZnJhbWUgKmZy YW1lLAo+ICsJCSAgICAgY29uc3QgdWludDhfdCAqYnVmLAo+ICsJCSAgICAgdWludDhfdCAqZHN0 KQo+ICt7Cj4gKwlpbnQgcGl0Y2ggPSBmcmFtZS0+d2lkdGggPDwgMjsKPiArCWNvbnN0IHVpbnQ4 X3QgKnNyYywgKnM7Cj4gKwlpbnQgeCwgeSwgdywgaDsKPiArCWludCBpLCBqOwo+ICsKPiArCWlm ICh2aWRlby0+dGV4dHVyZWQpIHsKPiArCQkvKiBYWFggc3VwcG9ydCBjb3B5aW5nIGNyb3BwZWQg ZXh0ZW50cyAqLwo+ICsJCXggPSB5ID0gMDsKPiArCQl3ID0gZnJhbWUtPndpZHRoOwo+ICsJCWgg PSBmcmFtZS0+aGVpZ2h0Owo+ICsJfSBlbHNlIHsKPiArCQl4ID0gZnJhbWUtPmltYWdlLngxOwo+ ICsJCXkgPSBmcmFtZS0+aW1hZ2UueTE7Cj4gKwkJdyA9IGZyYW1lLT5pbWFnZS54MiAtIGZyYW1l LT5pbWFnZS54MTsKPiArCQloID0gZnJhbWUtPmltYWdlLnkyIC0gZnJhbWUtPmltYWdlLnkxOwo+ ICsJfQo+ICsKPiArCXNyYyA9IGJ1ZiArICh5ICogcGl0Y2gpICsgKHggPDwgMik7Cj4gKwlzd2l0 Y2ggKGZyYW1lLT5yb3RhdGlvbikgewo+ICsJY2FzZSBSUl9Sb3RhdGVfMDoKPiArCQl3IDw8PSAy Owo+ICsJCWZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKPiArCQkJZm9yIChqID0gMDsgaiA8IHc7 IGogKz0gNCkgewo+ICsJCQkJdWludDMyX3QgcmV2ZXJzZV9kdywgZHcgPSAqKCh1aW50MzJfdCop KCZzcmNbaSAqIGZyYW1lLT5waXRjaFswXSArIGpdKSk7Cj4gKwkJCQlpZiAoIXZpZGVvLT50ZXh0 dXJlZCkgewoKTWF5YmUganVzdCBieXRlc3dhcCBhbHdheXMgdG8gbWFrZSB0aGluZ3Mgd29yayB0 aGUgc2FtZSB3YXkgZm9yIGJvdGgKdGV4dHVyZWQgYW5kIHNwcml0ZXM/Cgpic3dhcF8zMigpIG9y IHNvbWV0aGluZz8KCj4gKwkJCQkJLyoKPiArCQkJCQkgKiBGb3IgdGV4dHVyZWQgd2UgZG8gYnl0 ZSByZXZlcnNpbmcgaW4gc2hhZGVyLgo+ICsJCQkJCSAqIEhhdmUgdG8gcmV2ZXJzZSBieXRlcyBv cmRlciwgYmVjYXVzZSB0aGUgb25seQo+ICsJCQkJCSAqIHBsYXllciB3aGljaCBzdXBwb3J0cyBB WVVWIGZvcm1hdCBjdXJyZW50bHkgaXMKPiArCQkJCQkgKiBHc3RyZWFtZXIgYW5kIGl0IHN1cHBv cnRzIGluIGJhZCB3YXksIGV2ZW4gdGhvdWdoCj4gKwkJCQkJICogc3BlYyBzYXlzIE1TQjpBWVVW LCB3ZSBnZXQgdGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4KPiArCQkJCQkgKi8KPiArCQkJCQlyZXZl cnNlX2R3ID0gMDsKPiArCQkJCQlyZXZlcnNlX2R3IHw9ICgoZHcgJiAweDAwMDAwMGZmKSA8PCAy NCk7Cj4gKwkJCQkJcmV2ZXJzZV9kdyB8PSAoKGR3ICYgMHgwMDAwZmYwMCkgPDwgOCk7Cj4gKwkJ CQkJcmV2ZXJzZV9kdyB8PSAoKGR3ICYgMHgwMGZmMDAwMCkgPj4gOCk7Cj4gKwkJCQkJcmV2ZXJz ZV9kdyB8PSAoZHcgPj4gMjQpOwo+ICsJCQkJfQo+ICsJCQkJZWxzZQo+ICsJCQkJCXJldmVyc2Vf ZHcgPSBkdzsKPiArCQkJCSooKHVpbnQzMl90KikmZHN0W2kgKiBmcmFtZS0+cGl0Y2hbMF0gKyBq XSkgPSByZXZlcnNlX2R3Owo+ICsJCQl9Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJY2FzZSBSUl9S b3RhdGVfOTA6Cj4gKwkJaCA8PD0gMjsKPiArCQlmb3IgKGkgPSAwOyBpIDwgaDsgaSArPSA0KSB7 Cj4gKwkJCWZvciAoaiA9IDA7aiA8IHc7IGorKykgewo+ICsJCQkJdWludDMyX3QgcmV2ZXJzZV9k dywgZHc7Cj4gKwkJCQlkdyA9IDA7Cj4gKwkJCQlkdyB8PSAoc3JjW2kgKiBmcmFtZS0+cGl0Y2hb MF0gKyBqXSk7Cj4gKwkJCQlkdyB8PSAoKHVpbnQzMl90KXNyY1soaSArIDEpICogZnJhbWUtPnBp dGNoWzBdICsgal0gPDwgOCk7Cj4gKwkJCQlkdyB8PSAoKHVpbnQzMl90KXNyY1soaSArIDIpICog ZnJhbWUtPnBpdGNoWzBdICsgal0gPDwgMTYpOwo+ICsJCQkJZHcgfD0gKCh1aW50MzJfdClzcmNb KGkgKyAzKSAqIGZyYW1lLT5waXRjaFswXSArIGpdIDw8IDI0KTsKClRoaXMgbG9va3MgZG9kZ3ku Cgo+ICsJCQkJaWYgKCF2aWRlby0+dGV4dHVyZWQpIHsKPiArCQkJCQkvKgo+ICsJCQkJCSAqIEZv ciB0ZXh0dXJlZCB3ZSBkbyBieXRlIHJldmVyc2luZyBpbiBzaGFkZXIuCj4gKwkJCQkJICogSGF2 ZSB0byByZXZlcnNlIGJ5dGVzIG9yZGVyLCBiZWNhdXNlIHRoZSBvbmx5Cj4gKwkJCQkJICogcGxh eWVyIHdoaWNoIHN1cHBvcnRzIEFZVVYgZm9ybWF0IGN1cnJlbnRseSBpcwo+ICsJCQkJCSAqIEdz dHJlYW1lciBhbmQgaXQgc3VwcG9ydHMgaW4gYmFkIHdheSwgZXZlbiB0aG91Z2gKPiArCQkJCQkg KiBzcGVjIHNheXMgTVNCOkFZVVYsIHdlIGdldCB0aGUgYnl0ZXMgb3Bwb3NpdGUgd2F5Lgo+ICsJ CQkJCSAqLwo+ICsJCQkJCXJldmVyc2VfZHcgPSAwOwo+ICsJCQkJCXJldmVyc2VfZHcgfD0gKChk dyAmIDB4MDAwMDAwZmYpIDw8IDI0KTsKPiArCQkJCQlyZXZlcnNlX2R3IHw9ICgoZHcgJiAweDAw MDBmZjAwKSA8PCA4KTsKPiArCQkJCQlyZXZlcnNlX2R3IHw9ICgoZHcgJiAweDAwZmYwMDAwKSA+ PiA4KTsKPiArCQkJCQlyZXZlcnNlX2R3IHw9IChkdyA+PiAyNCk7Cj4gKwkJCQl9Cj4gKwkJCQll bHNlCj4gKwkJCQkJcmV2ZXJzZV9kdyA9IGR3Owo+ICsJCQkJKigodWludDMyX3QqKSZkc3RbKHcg LSBqIC0gMSkgKiBoICsgaV0pID0gcmV2ZXJzZV9kdzsKPiArCQkJfQo+ICsJCX0KPiArCQlicmVh azsKPiArCWNhc2UgUlJfUm90YXRlXzE4MDoKPiArCQl3IDw8PSAyOwo+ICsJCWZvciAoaSA9IDA7 IGkgPCBoOyBpKyspIHsKPiArCQkJZm9yIChqID0gMDtqIDwgdzsgaiArPSA0KSB7Cj4gKwkJCQl1 aW50MzJfdCByZXZlcnNlX2R3LCBkdzsKPiArCQkJCWR3ID0gMDsKPiArCQkJCWR3IHw9IChzcmNb aSAqIGZyYW1lLT5waXRjaFswXSArIGogKyAzXSk7Cj4gKwkJCQlkdyB8PSAoKHVpbnQzMl90KXNy Y1tpICogZnJhbWUtPnBpdGNoWzBdICsgaiArIDJdIDw8IDgpOwo+ICsJCQkJZHcgfD0gKCh1aW50 MzJfdClzcmNbaSAqIGZyYW1lLT5waXRjaFswXSArIGogKyAxXSA8PCAxNik7Cj4gKwkJCQlkdyB8 PSAoKHVpbnQzMl90KXNyY1tpICogZnJhbWUtPnBpdGNoWzBdXSA8PCAyNCk7Cj4gKwkJCQlpZiAo IXZpZGVvLT50ZXh0dXJlZCkgewo+ICsJCQkJCS8qCj4gKwkJCQkJICogRm9yIHRleHR1cmVkIHdl IGRvIGJ5dGUgcmV2ZXJzaW5nIGluIHNoYWRlci4KPiArCQkJCQkgKiBIYXZlIHRvIHJldmVyc2Ug Ynl0ZXMgb3JkZXIsIGJlY2F1c2UgdGhlIG9ubHkKPiArCQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3Vw cG9ydHMgQVlVViBmb3JtYXQgY3VycmVudGx5IGlzCj4gKwkJCQkJICogR3N0cmVhbWVyIGFuZCBp dCBzdXBwb3J0cyBpbiBiYWQgd2F5LCBldmVuIHRob3VnaAo+ICsJCQkJCSAqIHNwZWMgc2F5cyBN U0I6QVlVViwgd2UgZ2V0IHRoZSBieXRlcyBvcHBvc2l0ZSB3YXkuCj4gKwkJCQkJICovCj4gKwkJ CQkJcmV2ZXJzZV9kdyA9IDA7Cj4gKwkJCQkJcmV2ZXJzZV9kdyB8PSAoKGR3ICYgMHgwMDAwMDBm ZikgPDwgMjQpOwo+ICsJCQkJCXJldmVyc2VfZHcgfD0gKChkdyAmIDB4MDAwMGZmMDApIDw8IDgp Owo+ICsJCQkJCXJldmVyc2VfZHcgfD0gKChkdyAmIDB4MDBmZjAwMDApID4+IDgpOwo+ICsJCQkJ CXJldmVyc2VfZHcgfD0gKGR3ID4+IDI0KTsKPiArCQkJCX0KPiArCQkJCWVsc2UKPiArCQkJCQly ZXZlcnNlX2R3ID0gZHc7Cj4gKwkJCQkqKCh1aW50MzJfdCopJmRzdFsoaCAtIGkgLSAxKSAqIHcg KyAodyAtIGogLSA0KV0pID0gcmV2ZXJzZV9kdzsKPiArCQkJfQo+ICsJCX0KPiArCQlicmVhazsK PiArCWNhc2UgUlJfUm90YXRlXzI3MDoKPiArCQloIDw8PSAyOwo+ICsJCWZvciAoaSA9IDA7IGkg PCBoOyBpICs9IDQpIHsKPiArCQkJZm9yIChqID0gMDsgaiA8IHc7IGorKykgewo+ICsJCQkJdWlu dDMyX3QgcmV2ZXJzZV9kdywgZHc7Cj4gKwkJCQlkdyA9IDA7Cj4gKwkJCQlkdyB8PSAoc3JjWyhp ICsgMykgKiBmcmFtZS0+cGl0Y2hbMF0gKyBqXSk7Cj4gKwkJCQlkdyB8PSAoKHVpbnQzMl90KXNy Y1soaSArIDIpICogZnJhbWUtPnBpdGNoWzBdICsgal0gPDwgOCk7Cj4gKwkJCQlkdyB8PSAoKHVp bnQzMl90KXNyY1soaSArIDEpICogZnJhbWUtPnBpdGNoWzBdICsgal0gPDwgMTYpOwo+ICsJCQkJ ZHcgfD0gKCh1aW50MzJfdClzcmNbaSAqIGZyYW1lLT5waXRjaFswXSArIGpdIDw8IDI0KTsKPiAr CQkJCWlmICghdmlkZW8tPnRleHR1cmVkKSB7Cj4gKwkJCQkJLyoKPiArCQkJCQkgKiBGb3IgdGV4 dHVyZWQgd2UgZG8gYnl0ZSByZXZlcnNpbmcgaW4gc2hhZGVyLgo+ICsJCQkJCSAqIEhhdmUgdG8g cmV2ZXJzZSBieXRlcyBvcmRlciwgYmVjYXVzZSB0aGUgb25seQo+ICsJCQkJCSAqIHBsYXllciB3 aGljaCBzdXBwb3J0cyBBWVVWIGZvcm1hdCBjdXJyZW50bHkgaXMKPiArCQkJCQkgKiBHc3RyZWFt ZXIgYW5kIGl0IHN1cHBvcnRzIGluIGJhZCB3YXksIGV2ZW4gdGhvdWdoCj4gKwkJCQkJICogc3Bl YyBzYXlzIE1TQjpBWVVWLCB3ZSBnZXQgdGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4KPiArCQkJCQkg Ki8KPiArCQkJCQlyZXZlcnNlX2R3ID0gMDsKPiArCQkJCQlyZXZlcnNlX2R3IHw9ICgoZHcgJiAw eDAwMDAwMGZmKSA8PCAyNCk7Cj4gKwkJCQkJcmV2ZXJzZV9kdyB8PSAoKGR3ICYgMHgwMDAwZmYw MCkgPDwgOCk7Cj4gKwkJCQkJcmV2ZXJzZV9kdyB8PSAoKGR3ICYgMHgwMGZmMDAwMCkgPj4gOCk7 Cj4gKwkJCQkJcmV2ZXJzZV9kdyB8PSAoZHcgPj4gMjQpOwo+ICsJCQkJfQo+ICsJCQkJZWxzZQo+ ICsJCQkJCXJldmVyc2VfZHcgPSBkdzsKPiArCQkJCSooKHVpbnQzMl90KikmZHN0W2ogKiBoICsg KGggLSBpIC0gNCldKSA9IHJldmVyc2VfZHc7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4g Kwl9Cj4gK30KPiArCj4gIGJvb2wKPiAgc25hX3ZpZGVvX2NvcHlfZGF0YShzdHJ1Y3Qgc25hX3Zp ZGVvICp2aWRlbywKPiAgCQkgICAgc3RydWN0IHNuYV92aWRlb19mcmFtZSAqZnJhbWUsCj4gQEAg LTcwOSw2ICs4NTMsOSBAQCB1c2VfZ3R0OiAvKiBjb3B5IGRhdGEsIG11c3QgdXNlIEdUVCBzbyB0 aGF0IHdlIGtlZXAgdGhlIG92ZXJsYXkgdW5jYWNoZWQgKi8KPiAgCQlzbmFfY29weV9udjEyX2Rh dGEodmlkZW8sIGZyYW1lLCBidWYsIGRzdCk7Cj4gIAllbHNlIGlmIChpc19wbGFuYXJfZm91cmNj KGZyYW1lLT5pZCkpCj4gIAkJc25hX2NvcHlfcGxhbmFyX2RhdGEodmlkZW8sIGZyYW1lLCBidWYs IGRzdCk7Cj4gKwllbHNlIGlmIChpc19heXV2X2ZvdXJjYyhmcmFtZS0+aWQpKQo+ICsJCS8qIFNv bWUgaGFyZGNvZGluZyBpcyBkb25lIGluIGRlZmF1bHQgc25hX2NvcHlfcGFja2VkX2RhdGEsIHNv IGFkZGVkIGEgc3BlY2lmaWMgZnVuY3Rpb24gKi8KPiArCQlzbmFfY29weV9wYWNrZWRfZGF0YV9h eXV2KHZpZGVvLCBmcmFtZSwgYnVmLCBkc3QpOwo+ICAJZWxzZQo+ICAJCXNuYV9jb3B5X3BhY2tl ZF9kYXRhKHZpZGVvLCBmcmFtZSwgYnVmLCBkc3QpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvc3JjL3Nu YS9zbmFfdmlkZW8uaCBiL3NyYy9zbmEvc25hX3ZpZGVvLmgKPiBpbmRleCBiYmQzZjBmZC4uZDE4 Yzc5ZTUgMTAwNjQ0Cj4gLS0tIGEvc3JjL3NuYS9zbmFfdmlkZW8uaAo+ICsrKyBiL3NyYy9zbmEv c25hX3ZpZGVvLmgKPiBAQCAtMzksNiArMzksNyBAQCBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KPiAgI2RlZmluZSBGT1VSQ0NfUkdCNTY1ICgoMTYgPDwgMjQpICsg KCdCJyA8PCAxNikgKyAoJ0cnIDw8IDgpICsgJ1InKQo+ICAjZGVmaW5lIEZPVVJDQ19SR0I4ODgg KCgyNCA8PCAyNCkgKyAoJ0InIDw8IDE2KSArICgnRycgPDwgOCkgKyAnUicpCj4gICNkZWZpbmUg Rk9VUkNDX05WMTIgKCgnMicgPDwgMjQpICsgKCcxJyA8PCAxNikgKyAoJ1YnIDw8IDgpICsgJ04n KQo+ICsjZGVmaW5lIEZPVVJDQ19BWVVWICgoJ1YnIDw8IDI0KSArICgnVScgPDwgMTYpICsgKCdZ JyA8PCA4KSArICdBJykKPiAgCj4gIC8qCj4gICAqIEJlbG93LCBhIGR1bW15IHBpY3R1cmUgdHlw ZSB0aGF0IGlzIHVzZWQgaW4gWHZQdXRJbWFnZQo+IEBAIC03OSw2ICs4MCwxNSBAQCBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiAgCVh2VG9wVG9Cb3R0b20gXAo+ ICB9Cj4gIAo+ICsjZGVmaW5lIFhWSU1BR0VfQVlVViB7IFwKPiArCUZPVVJDQ19BWVVWLCBYdllV ViwgTFNCRmlyc3QsIFwKPiArCXsnUCcsICdBJywgJ1MnLCAnUycsICdUJywgJ0gnLCAnUicsICdP JywgJ1UnLCAnRycsICdIJywgJyAnLCAnQScsICdZJywgJ1UnLCAnVid9LCBcCgpUaGF0IHNob3Vs ZCBiZSBzb21ldGhpbmcgbW9yZSBsaWtlCnsnQScsJ1knLCdVJywnVicsLi4uLn0KCj4gKwkzMiwg WHZQYWNrZWQsIDEsIDI0LCAweGZmPDwxNiwgMHhmZjw8OCwgMHhmZjw8MCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgXAoKQ29tbWVudHMgaW4gWHZJbWFnZVJlYyBzdWdnZXN0IHRoYXQgd2Ug c2hvdWxkbid0IGhhdmUgZGVwdGgvbWFza3MKZm9yIHl1diBmb3JtYXRzLCBhbmQgd2Ugc2hvdWxk IGluc3RlYWQgZmlsbCB0aGUgeXV2IHJlbGF0ZWQgdGhpbmdzIGluc3RlYWQuCgo+ICsJeydWJywg J1UnLCAnWScsICdYJywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0sIFwKCidBJywnWScsJ1Un LCdWJyB3b3VsZCBtYXRjaCB0aGUgZ3N0IGJ5dGUgb3JkZXIgSSBndWVzcy4KCj4gKwlYdlRvcFRv Qm90dG9tIFwKPiArfQo+ICsKPiArCj4gIHN0cnVjdCBzbmFfdmlkZW8gewo+ICAJc3RydWN0IHNu YSAqc25hOwo+ICAKPiBAQCAtMTg5LDYgKzE5OSwxNiBAQCBzdGF0aWMgaW5saW5lIGludCBpc19u djEyX2ZvdXJjYyhpbnQgaWQpCj4gIAl9Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgaW50IGlz X2F5dXZfZm91cmNjKGludCBpZCkKPiArewo+ICsJc3dpdGNoIChpZCkgewo+ICsJY2FzZSBGT1VS Q0NfQVlVVjoKPiArCQlyZXR1cm4gMTsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9 Cj4gK30KPiArCj4gIGJvb2wKPiAgc25hX3ZpZGVvX2NsaXBfaGVscGVyKHN0cnVjdCBzbmFfdmlk ZW8gKnZpZGVvLAo+ICAJCSAgICAgIHN0cnVjdCBzbmFfdmlkZW9fZnJhbWUgKmZyYW1lLAo+IGRp ZmYgLS1naXQgYS9zcmMvc25hL3NuYV92aWRlb19zcHJpdGUuYyBiL3NyYy9zbmEvc25hX3ZpZGVv X3Nwcml0ZS5jCj4gaW5kZXggOGI3YWU4YWUuLjI4OGYxZDYyIDEwMDY0NAo+IC0tLSBhL3NyYy9z bmEvc25hX3ZpZGVvX3Nwcml0ZS5jCj4gKysrIGIvc3JjL3NuYS9zbmFfdmlkZW9fc3ByaXRlLmMK PiBAQCAtNDcsNyArNDcsNyBAQAo+ICAjZGVmaW5lIERSTV9GT1JNQVRfWVVZViAgICAgICAgIGZv dXJjY19jb2RlKCdZJywgJ1UnLCAnWScsICdWJykgLyogWzMxOjBdIENyMDpZMTpDYjA6WTAgODo4 Ojg6OCBsaXR0bGUgZW5kaWFuICovCj4gICNkZWZpbmUgRFJNX0ZPUk1BVF9VWVZZICAgICAgICAg Zm91cmNjX2NvZGUoJ1UnLCAnWScsICdWJywgJ1knKSAvKiBbMzE6MF0gWTE6Q3IwOlkwOkNiMCA4 Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KPiAgI2RlZmluZSBEUk1fRk9STUFUX05WMTIgICAgICAg ICBmb3VyY2NfY29kZSgnTicsICdWJywgJzEnLCAnMicpIC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNi IHBsYW5lICovCj4gLQo+ICsjZGVmaW5lIERSTV9GT1JNQVRfWFlVVjg4ODggICAgIGZvdXJjY19j b2RlKCdYJywgJ1knLCAnVScsICdWJykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUgKi8K CkJvZ3VzIGNvbW1lbnQgYWJvdXQgc3Vic2FtcGxpbmcuCgo+ICAjZGVmaW5lIGhhc19od19zY2Fs aW5nKHNuYSwgdmlkZW8pICgoc25hKS0+a2dlbS5nZW4gPCAwNzEgfHwgXAo+ICAJCQkJICAgIChz bmEpLT5rZ2VtLmdlbiA+PSAwMTEwKQo+ICAKPiBAQCAtNzQsMTEgKzc0LDExIEBAIHN0YXRpYyBB dG9tIHh2Q29sb3JLZXksIHh2QWx3YXlzT25Ub3AsIHh2U3luY1RvVmJsYW5rLCB4dkNvbG9yc3Bh Y2U7Cj4gIAo+ICBzdGF0aWMgWHZGb3JtYXRSZWMgZm9ybWF0c1tdID0geyB7MTV9LCB7MTZ9LCB7 MjR9IH07Cj4gIHN0YXRpYyBjb25zdCBYdkltYWdlUmVjIGltYWdlc1tdID0geyBYVklNQUdFX1lV WTIsIFhWSU1BR0VfVVlWWSwKPiAtCQkJCSAgICAgWFZNQ19SR0I4ODggfTsKPiArCQkJCSAgICAg WFZNQ19SR0I4ODgsIFhWSU1BR0VfQVlVViB9Owo+ICBzdGF0aWMgY29uc3QgWHZJbWFnZVJlYyBp bWFnZXNfcmdiNTY1W10gPSB7IFhWSU1BR0VfWVVZMiwgWFZJTUFHRV9VWVZZLAo+IC0JCQkJCSAg ICBYVk1DX1JHQjg4OCwgWFZNQ19SR0I1NjUgfTsKPiArCQkJCQkgICAgWFZNQ19SR0I4ODgsIFhW TUNfUkdCNTY1LCBYVklNQUdFX0FZVVYgfTsKPiAgc3RhdGljIGNvbnN0IFh2SW1hZ2VSZWMgaW1h Z2VzX252MTJbXSA9IHsgWFZJTUFHRV9ZVVkyLCBYVklNQUdFX1VZVlksCj4gLQkJCQkJICBYVklN QUdFX05WMTIsIFhWTUNfUkdCODg4LCBYVk1DX1JHQjU2NSB9Owo+ICsJCQkJCSAgWFZJTUFHRV9O VjEyLCBYVk1DX1JHQjg4OCwgWFZNQ19SR0I1NjUsIFhWSU1BR0VfQVlVViB9OwoKVGhpcyB3aWxs IG5vdyBhZHZlcnRpemUgQVlVViBvbiBldmVyeSBwbGF0Zm9ybS4KCj4gIHN0YXRpYyBjb25zdCBY dkF0dHJpYnV0ZVJlYyBhdHRyaWJzW10gPSB7Cj4gIAl7IFh2U2V0dGFibGUgfCBYdkdldHRhYmxl LCAwLCAxLCAoY2hhciAqKSJYVl9DT0xPUlNQQUNFIiB9LCAvKiBCVC42MDEsIEJULjcwOSAqLwo+ ICAJeyBYdlNldHRhYmxlIHwgWHZHZXR0YWJsZSwgMCwgMHhmZmZmZmYsIChjaGFyICopIlhWX0NP TE9SS0VZIiB9LAo+IEBAIC0zNjQsNiArMzY0LDEwIEBAIHNuYV92aWRlb19zcHJpdGVfc2hvdyhz dHJ1Y3Qgc25hICpzbmEsCj4gIAkJY2FzZSBGT1VSQ0NfVVlWWToKPiAgCQkJZi5waXhlbF9mb3Jt YXQgPSBEUk1fRk9STUFUX1VZVlk7Cj4gIAkJCWJyZWFrOwo+ICsJCWNhc2UgRk9VUkNDX0FZVVY6 Cj4gKwkJCS8qIGk5MTUgZG9lc24ndCBzdXBwb3J0IGFscGhhLCBzbyB3ZSB1c2UgWFlVViAqLwo+ ICsJCQlmLnBpeGVsX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFlVVjg4ODg7Cj4gKwkJCWJyZWFrOwo+ ICAJCWNhc2UgRk9VUkNDX1lVWTI6Cj4gIAkJZGVmYXVsdDoKPiAgCQkJZi5waXhlbF9mb3JtYXQg PSBEUk1fRk9STUFUX1lVWVY7Cj4gQEAgLTcwNSw3ICs3MDksMTIgQEAgc3RhdGljIGludCBzbmFf dmlkZW9fc3ByaXRlX3F1ZXJ5KGRkUXVlcnlJbWFnZUF0dHJpYnV0ZXNfQVJHUykKPiAgCQl0bXAg Kj0gKCpoID4+IDEpOwo+ICAJCXNpemUgKz0gdG1wOwo+ICAJCWJyZWFrOwo+IC0KPiArCWNhc2Ug Rk9VUkNDX0FZVVY6Cj4gKwkJdG1wID0gKncgPDwgMjsKPiArCQlpZiAocGl0Y2hlcykKPiArCQkJ cGl0Y2hlc1swXSA9IHRtcDsKPiArCQlzaXplID0gKmggKiB0bXA7Cj4gKwkJYnJlYWs7Cj4gIAlk ZWZhdWx0Ogo+ICAJCSp3ID0gKCp3ICsgMSkgJiB+MTsKPiAgCQkqaCA9ICgqaCArIDEpICYgfjE7 Cj4gZGlmZiAtLWdpdCBhL3NyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMgYi9zcmMvc25hL3Nu YV92aWRlb190ZXh0dXJlZC5jCj4gaW5kZXggYTc4NGZlMmUuLjIxYzVmMzc5IDEwMDY0NAo+IC0t LSBhL3NyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMKPiArKysgYi9zcmMvc25hL3NuYV92aWRl b190ZXh0dXJlZC5jCj4gQEAgLTY4LDYgKzY4LDggQEAgc3RhdGljIGNvbnN0IFh2SW1hZ2VSZWMg Z2VuNF9JbWFnZXNbXSA9IHsKPiAgCVhWSU1BR0VfSTQyMCwKPiAgCVhWSU1BR0VfTlYxMiwKPiAg CVhWSU1BR0VfVVlWWSwKPiArCVhWSU1BR0VfQVlVViwKPiArCVhWTUNfUkdCODg4LAoKUkdCODg4 IHRvbz8KCj4gIAlYVk1DX1lVViwKPiAgfTsKPiAgCj4gQEAgLTMzNyw2ICszMzksMTIgQEAgc25h X3ZpZGVvX3RleHR1cmVkX3F1ZXJ5KGRkUXVlcnlJbWFnZUF0dHJpYnV0ZXNfQVJHUykKPiAgCQkJ cGl0Y2hlc1swXSA9IHNpemU7Cj4gIAkJc2l6ZSAqPSAqaDsKPiAgCQlicmVhazsKPiArCWNhc2Ug Rk9VUkNDX0FZVVY6Cj4gKwkJc2l6ZSA9ICp3IDw8IDI7Cj4gKwkJaWYgKHBpdGNoZXMpCj4gKwkJ CXBpdGNoZXNbMF0gPSBzaXplOwo+ICsJCXNpemUgKj0gKmg7Cj4gKwkJYnJlYWs7Cj4gIAljYXNl IEZPVVJDQ19YVk1DOgo+ICAJCSpoID0gKCpoICsgMSkgJiB+MTsKPiAgCQlzaXplID0gc2l6ZW9m KHVpbnQzMl90KTsKPiAtLSAKPiAyLjE3LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==