From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 11/11] drm/msm/dpu: Clean up dpu_media_info.h static inline functions Date: Tue, 6 Nov 2018 10:13:48 -0500 Message-ID: <20181106151348.GV154160@art_vandelay> References: <20181105233103.7657-1-jcrouse@codeaurora.org> <20181105233103.7657-12-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181105233103.7657-12-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jordan Crouse Cc: sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, bzwang-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBOb3YgMDUsIDIwMTggYXQgMDQ6MzE6MDNQTSAtMDcwMCwgSm9yZGFuIENyb3VzZSB3 cm90ZToKPiBEbyBzb21lIGNsZWFudXAgaW4gdGhlIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGRl ZmluZWQgaW4KPiBkcHVfbWVkaWFfaW5mby5oIGJ5IGNsZWFuaW5nIHVwIGdvdG9zIGFuZCB1bm5l ZWRlZCBsb2NhbAo+IHZhcmlhYmxlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNl IDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgo+IC0tLQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9k cHUxL21zbV9tZWRpYV9pbmZvLmggICAgfCAxNjQgKysrKysrLS0tLS0tLS0tLS0tCj4gIDEgZmls ZSBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL21zbV9tZWRpYV9pbmZvLmggYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9tc21fbWVkaWFfaW5mby5oCj4gaW5kZXggNzU0 NzBlZTViMThmLi44YjgzMDlmMjVjMWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvbXNtX21lZGlhX2luZm8uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL21zbV9tZWRpYV9pbmZvLmgKPiBAQCAtODIyLDM2ICs4MjIsMzAgQEAgZW51bSBj b2xvcl9mbXRzIHsKPiAgICovCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9TVFJJREUo aW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQo+ICB7Cj4gLQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50 LCBzdHJpZGUgPSAwOwo+ICsJdW5zaWduZWQgaW50IHN0cmlkZSA9IDA7Cj4gIAo+ICAJaWYgKCF3 aWR0aCkKPiAtCQlnb3RvIGludmFsaWRfaW5wdXQ7Cj4gKwkJcmV0dXJuIDA7Cj4gIAo+ICAJc3dp dGNoIChjb2xvcl9mbXQpIHsKPiAgCWNhc2UgQ09MT1JfRk1UX05WMjE6Cj4gIAljYXNlIENPTE9S X0ZNVF9OVjEyOgo+ICAJY2FzZSBDT0xPUl9GTVRfTlYxMl9NVlRCOgo+ICAJY2FzZSBDT0xPUl9G TVRfTlYxMl9VQldDOgo+IC0JCWFsaWdubWVudCA9IDEyODsKPiAtCQlzdHJpZGUgPSBNU01fTUVE SUFfQUxJR04od2lkdGgsIGFsaWdubWVudCk7Cj4gKwkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdO KHdpZHRoLCAxMjgpOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBDT0xPUl9GTVRfTlYxMl9CUFAxMF9V QldDOgo+IC0JCWFsaWdubWVudCA9IDI1NjsKPiAgCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04o d2lkdGgsIDE5Mik7Cj4gLQkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHN0cmlkZSAqIDQvMywg YWxpZ25tZW50KTsKPiArCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04oc3RyaWRlICogNC8zLCAy NTYpOwoKbml0OiBDYW4geW91IHBsZWFzZSBzdXJyb3VuZCB0aGUgYmluYXJ5IG9wZXJhdG9ycyB3 aXRoIHNwYWNlcz8gVGhpcyBhcHBsaWVzCmV2ZXJ5d2hlcmUgaW4gdGhlIHBhdGNoLgoKV2l0aCB0 aGF0LAoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbkBwb29ybHkucnVuPgoKCj4gIAkJYnJl YWs7Cj4gIAljYXNlIENPTE9SX0ZNVF9QMDEwX1VCV0M6Cj4gLQkJYWxpZ25tZW50ID0gMjU2Owo+ IC0JCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCAqIDIsIGFsaWdubWVudCk7Cj4gKwkJ c3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdpZHRoICogMiwgMjU2KTsKPiAgCQlicmVhazsKPiAg CWNhc2UgQ09MT1JfRk1UX1AwMTA6Cj4gLQkJYWxpZ25tZW50ID0gMTI4Owo+IC0JCXN0cmlkZSA9 IE1TTV9NRURJQV9BTElHTih3aWR0aCoyLCBhbGlnbm1lbnQpOwo+IC0JCWJyZWFrOwo+IC0JZGVm YXVsdDoKPiArCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGggKiAyLCAxMjgpOwo+ICAJ CWJyZWFrOwo+ICAJfQo+IC1pbnZhbGlkX2lucHV0Ogo+ICsKPiAgCXJldHVybiBzdHJpZGU7Cj4g IH0KPiAgCj4gQEAgLTg2NCwzNiArODU4LDMwIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNf WV9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQo+ICAgKi8KPiAgc3RhdGljIHVuc2ln bmVkIGludCBWRU5VU19VVl9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQo+ICB7Cj4g LQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzdHJpZGUgPSAwOwo+ICsJdW5zaWduZWQgaW50IHN0 cmlkZSA9IDA7Cj4gIAo+ICAJaWYgKCF3aWR0aCkKPiAtCQlnb3RvIGludmFsaWRfaW5wdXQ7Cj4g KwkJcmV0dXJuIDA7Cj4gIAo+ICAJc3dpdGNoIChjb2xvcl9mbXQpIHsKPiAgCWNhc2UgQ09MT1Jf Rk1UX05WMjE6Cj4gIAljYXNlIENPTE9SX0ZNVF9OVjEyOgo+ICAJY2FzZSBDT0xPUl9GTVRfTlYx Ml9NVlRCOgo+ICAJY2FzZSBDT0xPUl9GTVRfTlYxMl9VQldDOgo+IC0JCWFsaWdubWVudCA9IDEy ODsKPiAtCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIGFsaWdubWVudCk7Cj4gKwkJ c3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdpZHRoLCAxMjgpOwo+ICAJCWJyZWFrOwo+ICAJY2Fz ZSBDT0xPUl9GTVRfTlYxMl9CUFAxMF9VQldDOgo+IC0JCWFsaWdubWVudCA9IDI1NjsKPiAgCQlz dHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIDE5Mik7Cj4gLQkJc3RyaWRlID0gTVNNX01F RElBX0FMSUdOKHN0cmlkZSAqIDQvMywgYWxpZ25tZW50KTsKPiArCQlzdHJpZGUgPSBNU01fTUVE SUFfQUxJR04oc3RyaWRlICogNC8zLCAyNTYpOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBDT0xPUl9G TVRfUDAxMF9VQldDOgo+IC0JCWFsaWdubWVudCA9IDI1NjsKPiAtCQlzdHJpZGUgPSBNU01fTUVE SUFfQUxJR04od2lkdGggKiAyLCBhbGlnbm1lbnQpOwo+ICsJCXN0cmlkZSA9IE1TTV9NRURJQV9B TElHTih3aWR0aCAqIDIsIDI1Nik7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIENPTE9SX0ZNVF9QMDEw Ogo+IC0JCWFsaWdubWVudCA9IDEyODsKPiAtCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lk dGgqMiwgYWxpZ25tZW50KTsKPiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6Cj4gKwkJc3RyaWRlID0g TVNNX01FRElBX0FMSUdOKHdpZHRoKjIsIDEyOCk7Cj4gIAkJYnJlYWs7Cj4gIAl9Cj4gLWludmFs aWRfaW5wdXQ6Cj4gKwo+ICAJcmV0dXJuIHN0cmlkZTsKPiAgfQo+ICAKPiBAQCAtOTA2LDEwICs4 OTQsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9TVFJJREUoaW50IGNvbG9yX2Zt dCwgaW50IHdpZHRoKQo+ICAgKi8KPiAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19ZX1NDQU5M SU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQo+ICB7Cj4gLQl1bnNpZ25lZCBpbnQgYWxp Z25tZW50LCBzY2xpbmVzID0gMDsKPiArCXVuc2lnbmVkIGludCBzY2xpbmVzID0gMDsKPiAgCj4g IAlpZiAoIWhlaWdodCkKPiAtCQlnb3RvIGludmFsaWRfaW5wdXQ7Cj4gKwkJcmV0dXJuIDA7Cj4g IAo+ICAJc3dpdGNoIChjb2xvcl9mbXQpIHsKPiAgCWNhc2UgQ09MT1JfRk1UX05WMjE6Cj4gQEAg LTkxNywxNyArOTA1LDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9TQ0FOTElORVMo aW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKPiAgCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZUQjoK PiAgCWNhc2UgQ09MT1JfRk1UX05WMTJfVUJXQzoKPiAgCWNhc2UgQ09MT1JfRk1UX1AwMTA6Cj4g LQkJYWxpZ25tZW50ID0gMzI7Cj4gKwkJc2NsaW5lcyA9IE1TTV9NRURJQV9BTElHTihoZWlnaHQs IDMyKTsKPiAgCQlicmVhazsKPiAgCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKPiAg CWNhc2UgQ09MT1JfRk1UX1AwMTBfVUJXQzoKPiAtCQlhbGlnbm1lbnQgPSAxNjsKPiArCQlzY2xp bmVzID0gTVNNX01FRElBX0FMSUdOKGhlaWdodCwgMTYpOwo+ICAJCWJyZWFrOwo+IC0JZGVmYXVs dDoKPiAtCQlyZXR1cm4gMDsKPiAgCX0KPiAtCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oaGVp Z2h0LCBhbGlnbm1lbnQpOwo+IC1pbnZhbGlkX2lucHV0Ogo+ICsKPiAgCXJldHVybiBzY2xpbmVz Owo+ICB9Cj4gIAo+IEBAIC05NDAsMTAgKzkyNSwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZF TlVTX1lfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCj4gICAqLwo+ICBzdGF0 aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVp Z2h0KQo+ICB7Cj4gLQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzY2xpbmVzID0gMDsKPiArCXVu c2lnbmVkIGludCBzY2xpbmVzID0gMDsKPiAgCj4gIAlpZiAoIWhlaWdodCkKPiAtCQlnb3RvIGlu dmFsaWRfaW5wdXQ7Cj4gKwkJcmV0dXJuIDA7Cj4gIAo+ICAJc3dpdGNoIChjb2xvcl9mbXQpIHsK PiAgCWNhc2UgQ09MT1JfRk1UX05WMjE6Cj4gQEAgLTk1MiwxOCArOTM3LDEzIEBAIHN0YXRpYyB1 bnNpZ25lZCBpbnQgVkVOVVNfVVZfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQp Cj4gIAljYXNlIENPTE9SX0ZNVF9OVjEyX0JQUDEwX1VCV0M6Cj4gIAljYXNlIENPTE9SX0ZNVF9Q MDEwX1VCV0M6Cj4gIAljYXNlIENPTE9SX0ZNVF9QMDEwOgo+IC0JCWFsaWdubWVudCA9IDE2Owo+ ICsJCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oKGhlaWdodCsxKT4+MSwgMTYpOwo+ICAJCWJy ZWFrOwo+ICAJY2FzZSBDT0xPUl9GTVRfTlYxMl9VQldDOgo+IC0JCWFsaWdubWVudCA9IDMyOwo+ ICsJCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oKGhlaWdodCsxKT4+MSwgMzIpOwo+ICAJCWJy ZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlnb3RvIGludmFsaWRfaW5wdXQ7Cj4gIAl9Cj4gIAo+IC0J c2NsaW5lcyA9IE1TTV9NRURJQV9BTElHTigoaGVpZ2h0KzEpPj4xLCBhbGlnbm1lbnQpOwo+IC0K PiAtaW52YWxpZF9pbnB1dDoKPiAgCXJldHVybiBzY2xpbmVzOwo+ICB9Cj4gIAo+IEBAIC05NzYs MTAgKzk1NiwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX1NDQU5MSU5FUyhpbnQg Y29sb3JfZm10LCBpbnQgaGVpZ2h0KQo+ICAgKi8KPiAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5V U19ZX01FVEFfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKPiAgewo+IC0JaW50IHlf dGlsZV93aWR0aCA9IDAsIHlfbWV0YV9zdHJpZGUgPSAwOwo+ICsJaW50IHlfdGlsZV93aWR0aCA9 IDAsIHlfbWV0YV9zdHJpZGU7Cj4gIAo+ICAJaWYgKCF3aWR0aCkKPiAtCQlnb3RvIGludmFsaWRf aW5wdXQ7Cj4gKwkJcmV0dXJuIDA7Cj4gIAo+ICAJc3dpdGNoIChjb2xvcl9mbXQpIHsKPiAgCWNh c2UgQ09MT1JfRk1UX05WMTJfVUJXQzoKPiBAQCAtOTkwLDE0ICs5NzAsMTEgQEAgc3RhdGljIHVu c2lnbmVkIGludCBWRU5VU19ZX01FVEFfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkK PiAgCQl5X3RpbGVfd2lkdGggPSA0ODsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZ290 byBpbnZhbGlkX2lucHV0Owo+ICsJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAgCXlfbWV0YV9zdHJp ZGUgPSBNU01fTUVESUFfUk9VTkRVUCh3aWR0aCwgeV90aWxlX3dpZHRoKTsKPiAtCXlfbWV0YV9z dHJpZGUgPSBNU01fTUVESUFfQUxJR04oeV9tZXRhX3N0cmlkZSwgNjQpOwo+IC0KPiAtaW52YWxp ZF9pbnB1dDoKPiAtCXJldHVybiB5X21ldGFfc3RyaWRlOwo+ICsJcmV0dXJuIE1TTV9NRURJQV9B TElHTih5X21ldGFfc3RyaWRlLCA2NCk7Cj4gIH0KPiAgCj4gIC8qCj4gQEAgLTEwMDksMTAgKzk4 NiwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1lfTUVUQV9TVFJJREUoaW50IGNvbG9y X2ZtdCwgaW50IHdpZHRoKQo+ICAgKi8KPiAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19ZX01F VEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCj4gIHsKPiAtCWludCB5X3Rp bGVfaGVpZ2h0ID0gMCwgeV9tZXRhX3NjYW5saW5lcyA9IDA7Cj4gKwlpbnQgeV90aWxlX2hlaWdo dCA9IDAsIHlfbWV0YV9zY2FubGluZXM7Cj4gIAo+ICAJaWYgKCFoZWlnaHQpCj4gLQkJZ290byBp bnZhbGlkX2lucHV0Owo+ICsJCXJldHVybiAwOwo+ICAKPiAgCXN3aXRjaCAoY29sb3JfZm10KSB7 Cj4gIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6Cj4gQEAgLTEwMjMsMTQgKzEwMDAsMTEgQEAg c3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19ZX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQs IGludCBoZWlnaHQpCj4gIAkJeV90aWxlX2hlaWdodCA9IDQ7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZh dWx0Ogo+IC0JCWdvdG8gaW52YWxpZF9pbnB1dDsKPiArCQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4g IAl5X21ldGFfc2NhbmxpbmVzID0gTVNNX01FRElBX1JPVU5EVVAoaGVpZ2h0LCB5X3RpbGVfaGVp Z2h0KTsKPiAtCXlfbWV0YV9zY2FubGluZXMgPSBNU01fTUVESUFfQUxJR04oeV9tZXRhX3NjYW5s aW5lcywgMTYpOwo+IC0KPiAtaW52YWxpZF9pbnB1dDoKPiAtCXJldHVybiB5X21ldGFfc2Nhbmxp bmVzOwo+ICsJcmV0dXJuIE1TTV9NRURJQV9BTElHTih5X21ldGFfc2NhbmxpbmVzLCAxNik7Cj4g IH0KPiAgCj4gIC8qCj4gQEAgLTEwNDIsMTAgKzEwMTYsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBWRU5VU19ZX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCj4gICAq Lwo+ICBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX01FVEFfU1RSSURFKGludCBjb2xvcl9m bXQsIGludCB3aWR0aCkKPiAgewo+IC0JaW50IHV2X3RpbGVfd2lkdGggPSAwLCB1dl9tZXRhX3N0 cmlkZSA9IDA7Cj4gKwlpbnQgdXZfdGlsZV93aWR0aCA9IDAsIHV2X21ldGFfc3RyaWRlOwo+ICAK PiAgCWlmICghd2lkdGgpCj4gLQkJZ290byBpbnZhbGlkX2lucHV0Owo+ICsJCXJldHVybiAwOwo+ ICAKPiAgCXN3aXRjaCAoY29sb3JfZm10KSB7Cj4gIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6 Cj4gQEAgLTEwNTYsMTQgKzEwMzAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9N RVRBX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCj4gIAkJdXZfdGlsZV93aWR0aCA9 IDI0Owo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlnb3RvIGludmFsaWRfaW5wdXQ7Cj4g KwkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+ICAJdXZfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfUk9V TkRVUCgod2lkdGgrMSk+PjEsIHV2X3RpbGVfd2lkdGgpOwo+IC0JdXZfbWV0YV9zdHJpZGUgPSBN U01fTUVESUFfQUxJR04odXZfbWV0YV9zdHJpZGUsIDY0KTsKPiAtCj4gLWludmFsaWRfaW5wdXQ6 Cj4gLQlyZXR1cm4gdXZfbWV0YV9zdHJpZGU7Cj4gKwlyZXR1cm4gTVNNX01FRElBX0FMSUdOKHV2 X21ldGFfc3RyaWRlLCA2NCk7Cj4gIH0KPiAgCj4gIC8qCj4gQEAgLTEwNzUsMTAgKzEwNDYsMTAg QEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9NRVRBX1NUUklERShpbnQgY29sb3JfZm10 LCBpbnQgd2lkdGgpCj4gICAqLwo+ICBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX01FVEFf U0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCj4gIHsKPiAtCWludCB1dl90aWxl X2hlaWdodCA9IDAsIHV2X21ldGFfc2NhbmxpbmVzID0gMDsKPiArCWludCB1dl90aWxlX2hlaWdo dCA9IDAsIHV2X21ldGFfc2NhbmxpbmVzOwo+ICAKPiAgCWlmICghaGVpZ2h0KQo+IC0JCWdvdG8g aW52YWxpZF9pbnB1dDsKPiArCQlyZXR1cm4gMDsKPiAgCj4gIAlzd2l0Y2ggKGNvbG9yX2ZtdCkg ewo+ICAJY2FzZSBDT0xPUl9GTVRfTlYxMl9VQldDOgo+IEBAIC0xMDg5LDIyICsxMDYwLDE5IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZfTUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2Zt dCwgaW50IGhlaWdodCkKPiAgCQl1dl90aWxlX2hlaWdodCA9IDQ7Cj4gIAkJYnJlYWs7Cj4gIAlk ZWZhdWx0Ogo+IC0JCWdvdG8gaW52YWxpZF9pbnB1dDsKPiArCQlyZXR1cm4gMDsKPiAgCX0KPiAg Cj4gIAl1dl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9ST1VORFVQKChoZWlnaHQrMSk+PjEs IHV2X3RpbGVfaGVpZ2h0KTsKPiAtCXV2X21ldGFfc2NhbmxpbmVzID0gTVNNX01FRElBX0FMSUdO KHV2X21ldGFfc2NhbmxpbmVzLCAxNik7Cj4gLQo+IC1pbnZhbGlkX2lucHV0Ogo+IC0JcmV0dXJu IHV2X21ldGFfc2NhbmxpbmVzOwo+ICsJcmV0dXJuIE1TTV9NRURJQV9BTElHTih1dl9tZXRhX3Nj YW5saW5lcywgMTYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1JHQl9T VFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQo+ICB7Cj4gLQl1bnNpZ25lZCBpbnQgYWxp Z25tZW50ID0gMCwgc3RyaWRlID0gMCwgYnBwID0gNDsKPiArCXVuc2lnbmVkIGludCBhbGlnbm1l bnQgPSAwLCBicHAgPSA0Owo+ICAKPiAgCWlmICghd2lkdGgpCj4gLQkJZ290byBpbnZhbGlkX2lu cHV0Owo+ICsJCXJldHVybiAwOwo+ICAKPiAgCXN3aXRjaCAoY29sb3JfZm10KSB7Cj4gIAljYXNl IENPTE9SX0ZNVF9SR0JBODg4ODoKPiBAQCAtMTExOSwyMSArMTA4NywxOCBAQCBzdGF0aWMgdW5z aWduZWQgaW50IFZFTlVTX1JHQl9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQo+ICAJ CWFsaWdubWVudCA9IDI1NjsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZ290byBpbnZh bGlkX2lucHV0Owo+ICsJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCXN0cmlkZSA9IE1TTV9NRURJ QV9BTElHTih3aWR0aCAqIGJwcCwgYWxpZ25tZW50KTsKPiAtCj4gLWludmFsaWRfaW5wdXQ6Cj4g LQlyZXR1cm4gc3RyaWRlOwo+ICsJcmV0dXJuIE1TTV9NRURJQV9BTElHTih3aWR0aCAqIGJwcCwg YWxpZ25tZW50KTsKPiAgfQo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19SR0JfU0NB TkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCj4gIHsKPiAtCXVuc2lnbmVkIGludCBh bGlnbm1lbnQgPSAwLCBzY2FubGluZXMgPSAwOwo+ICsJdW5zaWduZWQgaW50IGFsaWdubWVudCA9 IDA7Cj4gIAo+ICAJaWYgKCFoZWlnaHQpCj4gLQkJZ290byBpbnZhbGlkX2lucHV0Owo+ICsJCXJl dHVybiAwOwo+ICAKPiAgCXN3aXRjaCAoY29sb3JfZm10KSB7Cj4gIAljYXNlIENPTE9SX0ZNVF9S R0JBODg4ODoKPiBAQCAtMTE0NSw2MSArMTExMCw0NiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZF TlVTX1JHQl9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKPiAgCQlhbGlnbm1l bnQgPSAxNjsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZ290byBpbnZhbGlkX2lucHV0 Owo+ICsJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCXNjYW5saW5lcyA9IE1TTV9NRURJQV9BTElH TihoZWlnaHQsIGFsaWdubWVudCk7Cj4gLQo+IC1pbnZhbGlkX2lucHV0Ogo+IC0JcmV0dXJuIHNj YW5saW5lczsKPiArCXJldHVybiBNU01fTUVESUFfQUxJR04oaGVpZ2h0LCBhbGlnbm1lbnQpOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1JHQl9NRVRBX1NUUklERShpbnQg Y29sb3JfZm10LCBpbnQgd2lkdGgpCj4gIHsKPiAtCWludCByZ2JfdGlsZV93aWR0aCA9IDAsIHJn Yl9tZXRhX3N0cmlkZSA9IDA7Cj4gKwlpbnQgcmdiX21ldGFfc3RyaWRlOwo+ICAKPiAgCWlmICgh d2lkdGgpCj4gLQkJZ290byBpbnZhbGlkX2lucHV0Owo+ICsJCXJldHVybiAwOwo+ICAKPiAgCXN3 aXRjaCAoY29sb3JfZm10KSB7Cj4gIAljYXNlIENPTE9SX0ZNVF9SR0JBODg4OF9VQldDOgo+ICAJ Y2FzZSBDT0xPUl9GTVRfUkdCQTEwMTAxMDJfVUJXQzoKPiAgCWNhc2UgQ09MT1JfRk1UX1JHQjU2 NV9VQldDOgo+IC0JCXJnYl90aWxlX3dpZHRoID0gMTY7Cj4gLQkJYnJlYWs7Cj4gLQlkZWZhdWx0 Ogo+IC0JCWdvdG8gaW52YWxpZF9pbnB1dDsKPiArCQlyZ2JfbWV0YV9zdHJpZGUgPSBNU01fTUVE SUFfUk9VTkRVUCh3aWR0aCwgMTYpOwo+ICsJCXJldHVybiBNU01fTUVESUFfQUxJR04ocmdiX21l dGFfc3RyaWRlLCA2NCk7Cj4gIAl9Cj4gIAo+IC0JcmdiX21ldGFfc3RyaWRlID0gTVNNX01FRElB X1JPVU5EVVAod2lkdGgsIHJnYl90aWxlX3dpZHRoKTsKPiAtCXJnYl9tZXRhX3N0cmlkZSA9IE1T TV9NRURJQV9BTElHTihyZ2JfbWV0YV9zdHJpZGUsIDY0KTsKPiAtCj4gLWludmFsaWRfaW5wdXQ6 Cj4gLQlyZXR1cm4gcmdiX21ldGFfc3RyaWRlOwo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0 YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfUkdCX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQs IGludCBoZWlnaHQpCj4gIHsKPiAtCWludCByZ2JfdGlsZV9oZWlnaHQgPSAwLCByZ2JfbWV0YV9z Y2FubGluZXMgPSAwOwo+ICsJaW50IHJnYl9tZXRhX3NjYW5saW5lczsKPiAgCj4gIAlpZiAoIWhl aWdodCkKPiAtCQlnb3RvIGludmFsaWRfaW5wdXQ7Cj4gKwkJcmV0dXJuIDA7Cj4gIAo+ICAJc3dp dGNoIChjb2xvcl9mbXQpIHsKPiAgCWNhc2UgQ09MT1JfRk1UX1JHQkE4ODg4X1VCV0M6Cj4gIAlj YXNlIENPTE9SX0ZNVF9SR0JBMTAxMDEwMl9VQldDOgo+ICAJY2FzZSBDT0xPUl9GTVRfUkdCNTY1 X1VCV0M6Cj4gLQkJcmdiX3RpbGVfaGVpZ2h0ID0gNDsKPiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6 Cj4gLQkJZ290byBpbnZhbGlkX2lucHV0Owo+ICsJCXJnYl9tZXRhX3NjYW5saW5lcyA9IE1TTV9N RURJQV9ST1VORFVQKGhlaWdodCwgNCk7Cj4gKwkJcmV0dXJuIE1TTV9NRURJQV9BTElHTihyZ2Jf bWV0YV9zY2FubGluZXMsIDE2KTsKPiAgCX0KPiAgCj4gLQlyZ2JfbWV0YV9zY2FubGluZXMgPSBN U01fTUVESUFfUk9VTkRVUChoZWlnaHQsIHJnYl90aWxlX2hlaWdodCk7Cj4gLQlyZ2JfbWV0YV9z Y2FubGluZXMgPSBNU01fTUVESUFfQUxJR04ocmdiX21ldGFfc2NhbmxpbmVzLCAxNik7Cj4gLQo+ IC1pbnZhbGlkX2lucHV0Ogo+IC0JcmV0dXJuIHJnYl9tZXRhX3NjYW5saW5lczsKPiArCXJldHVy biAwOwo+ICB9Cj4gIAo+ICAjZW5kaWYKPiAtLSAKPiAyLjE4LjAKPiAKPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEZyZWVkcmVubyBtYWlsaW5nIGxp c3QKPiBGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8KCi0tIApTZWFuIFBhdWwsIFNv ZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVk cmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K