From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v5 16/28] drm/i915/dsc: Define & Compute VESA DSC params Date: Mon, 15 Oct 2018 18:31:02 -0700 Message-ID: <20181016013102.GI2371@intel.com> References: <20181005232306.31133-1-manasi.d.navare@intel.com> <20181005232306.31133-17-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181005232306.31133-17-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VmlsbGUvSmFuaSwKCkNvdWxkIHlvdSBwbGVhc2UgbG9vayBhdCB0aGUgbG9naXN0aWNzIG9mIHRo ZSBwYXRjaCBhbmQgQUNLIHRoaXM/ClRoaXMgaGFzIGJlZW4gdmFsaWRhdGVkIGFuZCB0ZXN0ZWQg b24gdGhlIERTQyBwYW5lbC4KClJlZ2FyZHMKTWFuYXNpCgpPbiBGcmksIE9jdCAwNSwgMjAxOCBh dCAwNDoyMjo1NFBNIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+IEZyb206IEdhdXJhdiBL IFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gCj4gVGhpcyBwYXRjaGVzIGRvZXMg dGhlIGZvbGxvd2luZzoKPiAKPiAxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBEU0MgcGFy YW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKPiBEU0Mgc3BlY2lmaWNhdGlvbi4gVGhlc2UgYXJlIHN0 b3JlZCBpbiB0aGUgZW5jb2RlciBhbmQgdXNlZAo+IHRvIGNvbXB1dGUgdGhlIFBQUyBwYXJhbWV0 ZXJzIHRvIGJlIHNlbnQgdG8gdGhlIFNpbmsuCj4gMi4gQ29tcHV0ZSBhbGwgdGhlIERTQyBwYXJh bWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCj4gc3RhdGUgb2YgaW50ZWxfY3J0Y19z dGF0ZS4KPiAzLiBDb21wdXRlIGFsbCBwYXJhbWV0ZXJzIHRoYXQgYXJlIFZFU0EgRFNDIHNwZWNp ZmljCj4gCj4gVGhpcyBjb21wdXRhdGlvbiBoYXBwZW5zIGluIHRoZSBhdG9taWMgY2hlY2sgcGhh c2UgZHVyaW5nCj4gY29tcHV0ZV9jb25maWcoKSB0byB2YWxpZGF0ZSBpZiBkaXNwbGF5IHN0cmVh bSBjb21wcmVzc2lvbgo+IGNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUuCj4g Cj4gdjc6IChGcm9tIE1hbmFzaSkKPiAqIERvbnQgdXNlIHNpZ25lZCBpbnQgZm9yIHJjX3Jhbmdl X3BhcmFtcyAoTWFuYXNpKQo+ICogTWFzayB0aGUgcmFuZ2VfYnBnX29mZnNldCB0byB1c2Ugb25s eSA2IGJpdHMKPiAqIEFkZCBTUERYIGlkZW50aWZpZXIgKENocmlzIFdpbHNvbikKPiB2NiAoRnJv bSBNYW5hc2kpOgo+ICogQWRkIGEgY2hlY2sgZm9yIGxpbmVfYnVmX2RlcHRoIHJldHVybiB2YWx1 ZSAoQW51c2hhKQo+ICogUmVtb3ZlIERSTSBEU0MgY29uc3RhbnRzIHRvIGRpZmZlcmVudCBwYXRj aCAoTWFuYXNpKQo+IHY1IChGcm9tIE1hbmFzaSk6Cj4gKiBBZGQgbG9naWMgdG8gbGltaXQgdGhl IG1heCBsaW5lIGJ1ZiBkZXB0aCBmb3IgRFNDIDEuMSB0byAxMwo+IGFzIHBlciBEU0MgMS4xIHNw ZWMKPiAqIEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MKPiAKPiB2NCAoRnJvbSBH YXVyYXYpOgo+ICogUmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCj4gKiByZW5hbWUgdmFyaWFibGUg bmFtZShNYW5hc2kpCj4gKiBQb3B1bGF0ZSBsaW5lYnVmX2RlcHRoIHZhcmlhYmxlKE1hbmFzaSkK PiAKPiB2MyAoRnJvbSBHYXVyYXYpOgo+ICogUmViYXNlIG15IHByZXZpb3VzIHBhdGNoZXMgb24g dG9wIG9mIE1hbmFzaSdzIGxhdGVzdCBwYXRjaAo+IHNlcmllcwo+ICogVXNpbmcgPj5uIHJhdGhl ciB0aGFuIC8yXm4gKE1hbmFzaSkKPiAqIENoYW5nZSB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gZXhw bGFpbiB3aGF0IHRoZSBwYXRjaCBpcyBkb2luZyhHYXVyYXYpCj4gCj4gRml4ZWQgcmV2aWV3IGNv bW1lbnRzIGZyb20gVmlsbGU6Cj4gKiBEb24ndCB1c2UgbWFjcm8gVFdPU19DT01QTEVNRU5UCj4g KiBNZW50aW9uIGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJjZSBvZiBSQyBwYXJhbXMKPiAqIFJl dHVybiBkaXJlY3RseSBmcm9tIGNhc2Ugc3RhdGVtZW50cwo+ICogVXNpbmcgc2luZ2xlIGFzc3Np Z25tZW50IGZvciBhc3NpZ25pbmcgcmNfcmFuZ2VfcGFyYW1zCj4gKiBVc2luZyA8PG4gcmF0aGVy IHRoYW4gKjJebiBhbmQgcmVtb3ZpbmcgdGhlIGNvbW1lbnRzCj4gYWJvdXQgdGhlIGZpeGVkIHBv aW50IG51bWJlcnMKPiAKPiB2MiAoRnJvbSBNYW5hc2kpOgo+ICogVXBkYXRlIGxvZ2ljIGZvciBt aW5vciB2ZXJzaW9uIHRvIGNvbnNpZGVyIHRoZSBkcGNkIHZhbHVlCj4gYW5kIHdoYXQgc3VwcG9y dGVkIGJ5IHRoZSBIVyBwbGF0Zm9ybQo+ICogVXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBpbnN0 ZWFkIG9mIGludGVsX2RwIHN0cnVjdAo+ICogTW92ZSB0aGUgRFNDIGNvbnN0YW50cyB0byBEUk0g RFNDIGhlYWRlciBmaWxlCj4gKiBVc2UgdTE2LCB1OCB3aGVyZSBiaWdnZXIgZGF0YSB0eXBlcyBu b3QgbmVlZGVkCj4gKiAqIENvbXB1dGUgdGhlIERTQyBwYXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFND IGNvbXB1dGUgY29uZmlnCj4gc2luY2UgdGhlIGNvbXB1dGF0aW9uIGNhbiBmYWlsIChNYW5hc2kp Cj4gCj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6 IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBBbnVz aGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gQ2M6IEdhdXJhdiBLIFNp bmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogR2F1cmF2IEsg U2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kg TmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+IENvLWRldmVsb3BlZC1ieTogTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgICB8ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICB8ICAgNCArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyB8IDQ1NSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5o ICAgICAgIHwgICAzICsKPiAgNSBmaWxlcyBjaGFuZ2VkLCA0NzEgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdmRzYy5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBlZjE0ODBjMTRlNGUuLjEy N2VmYjI5NDhhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTE1NCw3ICsxNTQsOCBA QCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPiAgCSAgaW50ZWxfc2R2by5vIFwKPiAgCSAgaW50 ZWxfdHYubyBcCj4gIAkgIHZsdl9kc2kubyBcCj4gLQkgIHZsdl9kc2lfcGxsLm8KPiArCSAgdmx2 X2RzaV9wbGwubyBcCj4gKwkgIGludGVsX3Zkc2Mubwo+ICAKPiAgIyBQb3N0LW1vcnRlbSBkZWJ1 ZyBhbmQgR1BVIGhhbmcgc3RhdGUgY2FwdHVyZQo+ICBpOTE1LSQoQ09ORklHX0RSTV9JOTE1X0NB UFRVUkVfRVJST1IpICs9IGk5MTVfZ3B1X2Vycm9yLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiBpbmRleCAwNTMwMGQ4MmIyMDIuLjg5OTkwYTk2MjYzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC0yMDczLDYgKzIwNzMsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNj X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCXJldHVybiBm YWxzZTsKPiAgCQl9Cj4gIAl9Cj4gKwlpZiAoaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKGlu dGVsX2RwLCBwaXBlX2NvbmZpZykgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJDYW5ub3QgY29tcHV0 ZSB2YWxpZCBEU0MgcGFyYW1ldGVycyBmb3IgSW5wdXQgQnBwID0gJWQiCj4gKwkJCSAgIkNvbXBy ZXNzZWQgQlBQID0gJWRcbiIsCj4gKwkJCSAgcGlwZV9jb25maWctPnBpcGVfYnBwLAo+ICsJCQkg IHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwKTsKPiArCQlyZXR1cm4gZmFs c2U7Cj4gKwl9Cj4gIAlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUg PSB0cnVlOwo+ICAJRFJNX0RFQlVHX0tNUygiRFAgRFNDIGNvbXB1dGVkIHdpdGggSW5wdXQgQnBw ID0gJWQgIgo+ICAJCSAgICAgICJDb21wcmVzc2VkIEJwcCA9ICVkIFNsaWNlIENvdW50ID0gJWRc biIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0NDNhZmU5NzQyM2EuLjM2MDg5 Yzc3ZTQ5MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE3NjAsNiArMTc2 MCwxMCBAQCB1aW50MTZfdCBpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAoaW50IGxpbmtfY2xv Y2ssIHVpbnQ4X3QgbGFuZV9jb3VudCwKPiAgdWludDhfdCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNl X2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlX2Nsb2NrLAo+ICAJCQkJ ICAgICBpbnQgbW9kZV9oZGlzcGxheSk7Cj4gIAo+ICsvKiBpbnRlbF92ZHNjLmMgKi8KPiAraW50 IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ICsJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiArCj4gIHN0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGludGVsX2RwX3VudXNlZF9sYW5lX21hc2soaW50IGxhbmVf Y291bnQpCj4gIHsKPiAgCXJldHVybiB+KCgxIDw8IGxhbmVfY291bnQpIC0gMSkgJiAweGY7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi4zNTFlYTdkNzFjMjEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gQEAgLTAsMCArMSw0NTUgQEAKPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOCBJ bnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBBdXRob3I6IEdhdXJhdiBLIFNpbmdoIDxnYXVy YXYuay5zaW5naEBpbnRlbC5jb20+Cj4gKyAqICAgICAgICAgTWFuYXNpIE5hdmFyZSA8bWFuYXNp LmQubmF2YXJlQGludGVsLmNvbT4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4K PiArI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAr I2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsKPiArZW51bSBST1dfSU5ERVhfQlBQIHsKPiArCVJP V19JTkRFWF82QlBQID0gMCwKPiArCVJPV19JTkRFWF84QlBQLAo+ICsJUk9XX0lOREVYXzEwQlBQ LAo+ICsJUk9XX0lOREVYXzEyQlBQLAo+ICsJUk9XX0lOREVYXzE1QlBQLAo+ICsJTUFYX1JPV19J TkRFWAo+ICt9Owo+ICsKPiArZW51bSBDT0xVTU5fSU5ERVhfQlBDIHsKPiArCUNPTFVNTl9JTkRF WF84QlBDID0gMCwKPiArCUNPTFVNTl9JTkRFWF8xMEJQQywKPiArCUNPTFVNTl9JTkRFWF8xMkJQ QywKPiArCUNPTFVNTl9JTkRFWF8xNEJQQywKPiArCUNPTFVNTl9JTkRFWF8xNkJQQywKPiArCU1B WF9DT0xVTU5fSU5ERVgKPiArfTsKPiArCj4gKyNkZWZpbmUgRFNDX1NVUFBPUlRFRF9WRVJTSU9O X01JTgkJMQo+ICsKPiArLyogRnJvbSBEU0NfdjEuMTEgc3BlYywgcmNfcGFyYW1ldGVyX1NldCBz eW50YXggZWxlbWVudCB0eXBpY2FsbHkgY29uc3RhbnQgKi8KPiArc3RhdGljIHUxNiByY19idWZf dGhyZXNoW10gPSB7Cj4gKwk4OTYsIDE3OTIsIDI2ODgsIDM1ODQsIDQ0ODAsIDUzNzYsIDYyNzIs IDY3MjAsIDcxNjgsIDc2MTYsCj4gKwk3NzQ0LCA3ODcyLCA4MDAwLCA4MDY0Cj4gK307Cj4gKwo+ ICtzdHJ1Y3QgcmNfcGFyYW1ldGVycyB7Cj4gKwl1MTYgaW5pdGlhbF94bWl0X2RlbGF5Owo+ICsJ dTggZmlyc3RfbGluZV9icGdfb2Zmc2V0Owo+ICsJdTE2IGluaXRpYWxfb2Zmc2V0Owo+ICsJdTgg ZmxhdG5lc3NfbWluX3FwOwo+ICsJdTggZmxhdG5lc3NfbWF4X3FwOwo+ICsJdTggcmNfcXVhbnRf aW5jcl9saW1pdDA7Cj4gKwl1OCByY19xdWFudF9pbmNyX2xpbWl0MTsKPiArCXN0cnVjdCBkc2Nf cmNfcmFuZ2VfcGFyYW1ldGVycyByY19yYW5nZV9wYXJhbXNbRFNDX05VTV9CVUZfUkFOR0VTXTsK PiArfTsKPiArCj4gKy8qCj4gKyAqIFNlbGVjdGVkIFJhdGUgQ29udHJvbCBSZWxhdGVkIFBhcmFt ZXRlciBSZWNvbW1lbmRlZCBWYWx1ZXMKPiArICogZnJvbSBEU0NfdjEuMTEgc3BlYyAmIEMgTW9k ZWwgcmVsZWFzZTogRFNDX21vZGVsXzIwMTYxMjEyCj4gKyAqLwo+ICtzdGF0aWMgc3RydWN0IHJj X3BhcmFtZXRlcnMgcmNfcGFyYW1zW11bTUFYX0NPTFVNTl9JTkRFWF0gPSB7Cj4gK3sKPiArCS8q IDZCUFAvOEJQQyAqLwo+ICsJeyA3NjgsIDE1LCA2MTQ0LCAzLCAxMywgMTEsIDExLCB7Cj4gKwkJ eyAwLCA0LCAwIH0sIHsgMSwgNiwgLTIgfSwgeyAzLCA4LCAtMiB9LCB7IDQsIDgsIC00IH0sCj4g KwkJeyA1LCA5LCAtNiB9LCB7IDUsIDksIC02IH0sIHsgNiwgOSwgLTYgfSwgeyA2LCAxMCwgLTgg fSwKPiArCQl7IDcsIDExLCAtOCB9LCB7IDgsIDEyLCAtMTAgfSwgeyA5LCAxMiwgLTEwIH0sIHsg MTAsIDEyLCAtMTIgfSwKPiArCQl7IDEwLCAxMiwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfSwgeyAx MywgMTQsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDZCUFAvMTBCUEMgKi8KPiArCXsgNzY4 LCAxNSwgNjE0NCwgNywgMTcsIDE1LCAxNSwgewo+ICsJCXsgMCwgOCwgMCB9LCB7IDMsIDEwLCAt MiB9LCB7IDcsIDEyLCAtMiB9LCB7IDgsIDEyLCAtNCB9LAo+ICsJCXsgOSwgMTMsIC02IH0sIHsg OSwgMTMsIC02IH0sIHsgMTAsIDEzLCAtNiB9LCB7IDEwLCAxNCwgLTggfSwKPiArCQl7IDExLCAx NSwgLTggfSwgeyAxMiwgMTYsIC0xMCB9LCB7IDEzLCAxNiwgLTEwIH0sCj4gKwkJeyAxNCwgMTYs IC0xMiB9LCB7IDE0LCAxNiwgLTEyIH0sIHsgMTUsIDE2LCAtMTIgfSwKPiArCQl7IDE3LCAxOCwg LTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogNkJQUC8xMkJQQyAqLwo+ICsJeyA3NjgsIDE1LCA2 MTQ0LCAxMSwgMjEsIDE5LCAxOSwgewo+ICsJCXsgMCwgMTIsIDAgfSwgeyA1LCAxNCwgLTIgfSwg eyAxMSwgMTYsIC0yIH0sIHsgMTIsIDE2LCAtNCB9LAo+ICsJCXsgMTMsIDE3LCAtNiB9LCB7IDEz LCAxNywgLTYgfSwgeyAxNCwgMTcsIC02IH0sIHsgMTQsIDE4LCAtOCB9LAo+ICsJCXsgMTUsIDE5 LCAtOCB9LCB7IDE2LCAyMCwgLTEwIH0sIHsgMTcsIDIwLCAtMTAgfSwKPiArCQl7IDE4LCAyMCwg LTEyIH0sIHsgMTgsIDIwLCAtMTIgfSwgeyAxOSwgMjAsIC0xMiB9LAo+ICsJCXsgMjEsIDIyLCAt MTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA2QlBQLzE0QlBDICovCj4gKwl7IDc2OCwgMTUsIDYx NDQsIDE1LCAyNSwgMjMsIDI3LCB7Cj4gKwkJeyAwLCAxNiwgMCB9LCB7IDcsIDE4LCAtMiB9LCB7 IDE1LCAyMCwgLTIgfSwgeyAxNiwgMjAsIC00IH0sCj4gKwkJeyAxNywgMjEsIC02IH0sIHsgMTcs IDIxLCAtNiB9LCB7IDE4LCAyMSwgLTYgfSwgeyAxOCwgMjIsIC04IH0sCj4gKwkJeyAxOSwgMjMs IC04IH0sIHsgMjAsIDI0LCAtMTAgfSwgeyAyMSwgMjQsIC0xMCB9LAo+ICsJCXsgMjIsIDI0LCAt MTIgfSwgeyAyMiwgMjQsIC0xMiB9LCB7IDIzLCAyNCwgLTEyIH0sCj4gKwkJeyAyNSwgMjYsIC0x MiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDZCUFAvMTZCUEMgKi8KPiArCXsgNzY4LCAxNSwgNjE0 NCwgMTksIDI5LCAyNywgMjcsIHsKPiArCQl7IDAsIDIwLCAwIH0sIHsgOSwgMjIsIC0yIH0sIHsg MTksIDI0LCAtMiB9LCB7IDIwLCAyNCwgLTQgfSwKPiArCQl7IDIxLCAyNSwgLTYgfSwgeyAyMSwg MjUsIC02IH0sIHsgMjIsIDI1LCAtNiB9LCB7IDIyLCAyNiwgLTggfSwKPiArCQl7IDIzLCAyNywg LTggfSwgeyAyNCwgMjgsIC0xMCB9LCB7IDI1LCAyOCwgLTEwIH0sCj4gKwkJeyAyNiwgMjgsIC0x MiB9LCB7IDI2LCAyOCwgLTEyIH0sIHsgMjcsIDI4LCAtMTIgfSwKPiArCQl7IDI5LCAzMCwgLTEy IH0KPiArCQl9Cj4gKwl9LAo+ICt9LAo+ICt7Cj4gKwkvKiA4QlBQLzhCUEMgKi8KPiArCXsgNTEy LCAxMiwgNjE0NCwgMywgMTIsIDExLCAxMSwgewo+ICsJCXsgMCwgNCwgMiB9LCB7IDAsIDQsIDAg fSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKPiArCQl7IDMsIDcsIC00IH0sIHsgMywgNywg LTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCj4gKwkJeyAzLCA5LCAtOCB9LCB7IDMs IDEwLCAtMTAgfSwgeyA1LCAxMSwgLTEwIH0sIHsgNSwgMTIsIC0xMiB9LAo+ICsJCXsgNSwgMTMs IC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiAr CS8qIDhCUFAvMTBCUEMgKi8KPiArCXsgNTEyLCAxMiwgNjE0NCwgNywgMTYsIDE1LCAxNSwgewo+ ICsJCXsgMCwgNCwgMiB9LCB7IDQsIDgsIDAgfSwgeyA1LCA5LCAwIH0sIHsgNSwgMTAsIC0yIH0s Cj4gKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAx MiwgLTggfSwKPiArCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEw IH0sIHsgOSwgMTYsIC0xMiB9LAo+ICsJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0s IHsgMTcsIDE5LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA4QlBQLzEyQlBDICovCj4gKwl7 IDUxMiwgMTIsIDYxNDQsIDExLCAyMCwgMTksIDE5LCB7Cj4gKwkJeyAwLCAxMiwgMiB9LCB7IDQs IDEyLCAwIH0sIHsgOSwgMTMsIDAgfSwgeyA5LCAxNCwgLTIgfSwKPiArCQl7IDExLCAxNSwgLTQg fSwgeyAxMSwgMTUsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTggfSwKPiArCQl7 IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEwIH0sCj4gKwkJeyAx MywgMjAsIC0xMiB9LCB7IDEzLCAyMSwgLTEyIH0sIHsgMTUsIDIxLCAtMTIgfSwKPiArCQl7IDIx LCAyMywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogOEJQUC8xNEJQQyAqLwo+ICsJeyA1MTIs IDEyLCA2MTQ0LCAxNSwgMjQsIDIzLCAyMywgewo+ICsJCXsgMCwgMTIsIDAgfSwgeyA1LCAxMywg MCB9LCB7IDExLCAxNSwgMCB9LCB7IDEyLCAxNywgLTIgfSwKPiArCQl7IDE1LCAxOSwgLTQgfSwg eyAxNSwgMTksIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwKPiArCQl7IDE1 LCAyMSwgLTggfSwgeyAxNSwgMjIsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCj4gKwkJeyAxNywg MjMsIC0xMiB9LCB7IDE3LCAyMywgLTEyIH0sIHsgMjEsIDI0LCAtMTIgfSwKPiArCQl7IDI0LCAy NSwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogOEJQUC8xNkJQQyAqLwo+ICsJeyA1MTIsIDEy LCA2MTQ0LCAxOSwgMjgsIDI3LCAyNywgewo+ICsJCXsgMCwgMTIsIDIgfSwgeyA2LCAxNCwgMCB9 LCB7IDEzLCAxNywgMCB9LCB7IDE1LCAyMCwgLTIgfSwKPiArCQl7IDE5LCAyMywgLTQgfSwgeyAx OSwgMjMsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwKPiArCQl7IDE5LCAy NSwgLTggfSwgeyAxOSwgMjYsIC0xMCB9LCB7IDIxLCAyNiwgLTEwIH0sCj4gKwkJeyAyMSwgMjcs IC0xMiB9LCB7IDIxLCAyNywgLTEyIH0sIHsgMjUsIDI4LCAtMTIgfSwKPiArCQl7IDI4LCAyOSwg LTEyIH0KPiArCQl9Cj4gKwl9LAo+ICt9LAo+ICt7Cj4gKwkvKiAxMEJQUC84QlBDICovCj4gKwl7 IDQxMCwgMTUsIDU2MzIsIDMsIDEyLCAxMSwgMTEsIHsKPiArCQl7IDAsIDMsIDIgfSwgeyAwLCA0 LCAwIH0sIHsgMSwgNSwgMCB9LCB7IDIsIDYsIC0yIH0sCj4gKwkJeyAzLCA3LCAtNCB9LCB7IDMs IDcsIC02IH0sIHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LAo+ICsJCXsgMywgOSwgLTggfSwg eyAzLCA5LCAtMTAgfSwgeyA1LCAxMCwgLTEwIH0sIHsgNSwgMTAsIC0xMCB9LAo+ICsJCXsgNSwg MTEsIC0xMiB9LCB7IDcsIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9Cj4gKwkJfQo+ICsJfSwK PiArCS8qIDEwQlBQLzEwQlBDICovCj4gKwl7IDQxMCwgMTUsIDU2MzIsIDcsIDE2LCAxNSwgMTUs IHsKPiArCQl7IDAsIDcsIDIgfSwgeyA0LCA4LCAwIH0sIHsgNSwgOSwgMCB9LCB7IDYsIDEwLCAt MiB9LAo+ICsJCXsgNywgMTEsIC00IH0sIHsgNywgMTEsIC02IH0sIHsgNywgMTEsIC04IH0sIHsg NywgMTIsIC04IH0sCj4gKwkJeyA3LCAxMywgLTggfSwgeyA3LCAxMywgLTEwIH0sIHsgOSwgMTQs IC0xMCB9LCB7IDksIDE0LCAtMTAgfSwKPiArCQl7IDksIDE1LCAtMTIgfSwgeyAxMSwgMTUsIC0x MiB9LCB7IDE1LCAxNiwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTBCUFAvMTJCUEMgKi8K PiArCXsgNDEwLCAxNSwgNTYzMiwgMTEsIDIwLCAxOSwgMTksIHsKPiArCQl7IDAsIDExLCAyIH0s IHsgNCwgMTIsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDEwLCAxNCwgLTIgfSwKPiArCQl7IDExLCAx NSwgLTQgfSwgeyAxMSwgMTUsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTggfSwK PiArCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTcsIC0xMCB9LCB7IDEzLCAxOCwgLTEwIH0sCj4g KwkJeyAxMywgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEyIH0sIHsgMTUsIDE5LCAtMTIgfSwKPiAr CQl7IDE5LCAyMCwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTBCUFAvMTRCUEMgKi8KPiAr CXsgNDEwLCAxNSwgNTYzMiwgMTUsIDI0LCAyMywgMjMsIHsKPiArCQl7IDAsIDExLCAyIH0sIHsg NSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxMywgMTgsIC0yIH0sCj4gKwkJeyAxNSwgMTks IC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04IH0sCj4g KwkJeyAxNSwgMjEsIC04IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywgMjIsIC0xMCB9LAo+ICsJ CXsgMTcsIDIyLCAtMTAgfSwgeyAxNywgMjMsIC0xMiB9LCB7IDE5LCAyMywgLTEyIH0sCj4gKwkJ eyAyMywgMjQsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDEwQlBQLzE2QlBDICovCj4gKwl7 IDQxMCwgMTUsIDU2MzIsIDE5LCAyOCwgMjcsIDI3LCB7Cj4gKwkJeyAwLCAxMSwgMiB9LCB7IDYs IDE0LCAwIH0sIHsgMTMsIDE3LCAwIH0sIHsgMTYsIDIwLCAtMiB9LAo+ICsJCXsgMTksIDIzLCAt NCB9LCB7IDE5LCAyMywgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAo+ICsJ CXsgMTksIDI1LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKPiArCQl7 IDIxLCAyNiwgLTEwIH0sIHsgMjEsIDI3LCAtMTIgfSwgeyAyMywgMjcsIC0xMiB9LAo+ICsJCXsg MjcsIDI4LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gK30sCj4gK3sKPiArCS8qIDEyQlBQLzhCUEMg Ki8KPiArCXsgMzQxLCAxNSwgMjA0OCwgMywgMTIsIDExLCAxMSwgewo+ICsJCXsgMCwgMiwgMiB9 LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0sIHsgMSwgNiwgLTIgfSwKPiArCQl7IDMsIDcsIC00 IH0sIHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCj4gKwkJeyAzLCA5 LCAtOCB9LCB7IDMsIDEwLCAtMTAgfSwgeyA1LCAxMSwgLTEwIH0sCj4gKwkJeyA1LCAxMiwgLTEy IH0sIHsgNSwgMTMsIC0xMiB9LCB7IDcsIDEzLCAtMTIgfSwgeyAxMywgMTUsIC0xMiB9Cj4gKwkJ fQo+ICsJfSwKPiArCS8qIDEyQlBQLzEwQlBDICovCj4gKwl7IDM0MSwgMTUsIDIwNDgsIDcsIDE2 LCAxNSwgMTUsIHsKPiArCQl7IDAsIDIsIDIgfSwgeyAyLCA1LCAwIH0sIHsgMywgNywgMCB9LCB7 IDQsIDgsIC0yIH0sCj4gKwkJeyA2LCA5LCAtNCB9LCB7IDcsIDEwLCAtNiB9LCB7IDcsIDExLCAt OCB9LCB7IDcsIDEyLCAtOCB9LAo+ICsJCXsgNywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7 IDksIDE1LCAtMTAgfSwgeyA5LCAxNiwgLTEyIH0sCj4gKwkJeyA5LCAxNywgLTEyIH0sIHsgMTEs IDE3LCAtMTIgfSwgeyAxNywgMTksIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDEyQlBQLzEy QlBDICovCj4gKwl7IDM0MSwgMTUsIDIwNDgsIDExLCAyMCwgMTksIDE5LCB7Cj4gKwkJeyAwLCA2 LCAyIH0sIHsgNCwgOSwgMCB9LCB7IDcsIDExLCAwIH0sIHsgOCwgMTIsIC0yIH0sCj4gKwkJeyAx MCwgMTMsIC00IH0sIHsgMTEsIDE0LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04 IH0sCj4gKwkJeyAxMSwgMTcsIC04IH0sIHsgMTEsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMCB9 LAo+ICsJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0s Cj4gKwkJeyAyMSwgMjMsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDEyQlBQLzE0QlBDICov Cj4gKwl7IDM0MSwgMTUsIDIwNDgsIDE1LCAyNCwgMjMsIDIzLCB7Cj4gKwkJeyAwLCA2LCAyIH0s IHsgNywgMTAsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDExLCAxNiwgLTIgfSwKPiArCQl7IDE0LCAx NywgLTQgfSwgeyAxNSwgMTgsIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwK PiArCQl7IDE1LCAyMCwgLTggfSwgeyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAyMSwgLTEwIH0sCj4g KwkJeyAxNywgMjEsIC0xMiB9LCB7IDE3LCAyMSwgLTEyIH0sIHsgMTksIDIyLCAtMTIgfSwKPiAr CQl7IDIyLCAyMywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTJCUFAvMTZCUEMgKi8KPiAr CXsgMzQxLCAxNSwgMjA0OCwgMTksIDI4LCAyNywgMjcsIHsKPiArCQl7IDAsIDYsIDIgfSwgeyA2 LCAxMSwgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDE0LCAxOCwgLTIgfSwKPiArCQl7IDE4LCAyMSwg LTQgfSwgeyAxOSwgMjIsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwKPiAr CQl7IDE5LCAyNCwgLTggfSwgeyAxOSwgMjUsIC0xMCB9LCB7IDIxLCAyNSwgLTEwIH0sCj4gKwkJ eyAyMSwgMjUsIC0xMiB9LCB7IDIxLCAyNSwgLTEyIH0sIHsgMjMsIDI2LCAtMTIgfSwKPiArCQl7 IDI2LCAyNywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICt9LAo+ICt7Cj4gKwkvKiAxNUJQUC84QlBD ICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsKPiArCQl7IDAsIDAsIDEw IH0sIHsgMCwgMSwgOCB9LCB7IDAsIDEsIDYgfSwgeyAwLCAyLCA0IH0sCj4gKwkJeyAxLCAyLCAy IH0sIHsgMSwgMywgMCB9LCB7IDEsIDMsIC0yIH0sIHsgMiwgNCwgLTQgfSwKPiArCQl7IDIsIDUs IC02IH0sIHsgMywgNSwgLTggfSwgeyA0LCA2LCAtMTAgfSwgeyA0LCA3LCAtMTAgfSwKPiArCQl7 IDUsIDcsIC0xMiB9LCB7IDcsIDgsIC0xMiB9LCB7IDgsIDksIC0xMiB9Cj4gKwkJfQo+ICsJfSwK PiArCS8qIDE1QlBQLzEwQlBDICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDcsIDE2LCAxNSwgMTUs IHsKPiArCQl7IDAsIDIsIDEwIH0sIHsgMiwgNSwgOCB9LCB7IDMsIDUsIDYgfSwgeyA0LCA2LCA0 IH0sCj4gKwkJeyA1LCA2LCAyIH0sIHsgNSwgNywgMCB9LCB7IDUsIDcsIC0yIH0sIHsgNiwgOCwg LTQgfSwKPiArCQl7IDYsIDksIC02IH0sIHsgNywgOSwgLTggfSwgeyA4LCAxMCwgLTEwIH0sIHsg OCwgMTEsIC0xMCB9LAo+ICsJCXsgOSwgMTEsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTIs IDEzLCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiAxNUJQUC8xMkJQQyAqLwo+ICsJeyAyNzMs IDE1LCAyMDQ4LCAxMSwgMjAsIDE5LCAxOSwgewo+ICsJCXsgMCwgNCwgMTAgfSwgeyAyLCA3LCA4 IH0sIHsgNCwgOSwgNiB9LCB7IDYsIDExLCA0IH0sCj4gKwkJeyA5LCAxMSwgMiB9LCB7IDksIDEx LCAwIH0sIHsgOSwgMTIsIC0yIH0sIHsgMTAsIDEyLCAtNCB9LAo+ICsJCXsgMTEsIDEzLCAtNiB9 LCB7IDExLCAxMywgLTggfSwgeyAxMiwgMTQsIC0xMCB9LAo+ICsJCXsgMTMsIDE1LCAtMTAgfSwg eyAxMywgMTUsIC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sCj4gKwkJeyAxNiwgMTcsIC0xMiB9Cj4g KwkJfQo+ICsJfSwKPiArCS8qIDE1QlBQLzE0QlBDICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDE1 LCAyNCwgMjMsIDIzLCB7Cj4gKwkJeyAwLCA0LCAxMCB9LCB7IDMsIDgsIDggfSwgeyA2LCAxMSwg NiB9LCB7IDksIDE0LCA0IH0sCj4gKwkJeyAxMywgMTUsIDIgfSwgeyAxMywgMTUsIDAgfSwgeyAx MywgMTYsIC0yIH0sIHsgMTQsIDE2LCAtNCB9LAo+ICsJCXsgMTUsIDE3LCAtNiB9LCB7IDE1LCAx NywgLTggfSwgeyAxNiwgMTgsIC0xMCB9LAo+ICsJCXsgMTcsIDE5LCAtMTAgfSwgeyAxNywgMTks IC0xMiB9LCB7IDE5LCAyMCwgLTEyIH0sCj4gKwkJeyAyMCwgMjEsIC0xMiB9Cj4gKwkJfQo+ICsJ fSwKPiArCS8qIDE1QlBQLzE2QlBDICovCj4gKwl7IDI3MywgMTUsIDIwNDgsIDE5LCAyOCwgMjcs IDI3LCB7Cj4gKwkJeyAwLCA0LCAxMCB9LCB7IDQsIDksIDggfSwgeyA4LCAxMywgNiB9LCB7IDEy LCAxNywgNCB9LAo+ICsJCXsgMTcsIDE5LCAyIH0sIHsgMTcsIDIwLCAwIH0sIHsgMTcsIDIwLCAt MiB9LCB7IDE4LCAyMCwgLTQgfSwKPiArCQl7IDE5LCAyMSwgLTYgfSwgeyAxOSwgMjEsIC04IH0s IHsgMjAsIDIyLCAtMTAgfSwKPiArCQl7IDIxLCAyMywgLTEwIH0sIHsgMjEsIDIzLCAtMTIgfSwg eyAyMywgMjQsIC0xMiB9LAo+ICsJCXsgMjQsIDI1LCAtMTIgfQo+ICsJCX0KPiArCX0KPiArfQo+ ICt9Owo+ICsKPiArc3RhdGljIGludCBnZXRfcm93X2luZGV4X2Zvcl9yY19wYXJhbXModTE2IGNv bXByZXNzZWRfYnBwKQo+ICt7Cj4gKwlzd2l0Y2ggKGNvbXByZXNzZWRfYnBwKSB7Cj4gKwljYXNl IDY6Cj4gKwkJcmV0dXJuIFJPV19JTkRFWF82QlBQOwo+ICsJY2FzZSA4Ogo+ICsJCXJldHVybiBS T1dfSU5ERVhfOEJQUDsKPiArCWNhc2UgMTA6Cj4gKwkJcmV0dXJuIFJPV19JTkRFWF8xMEJQUDsK PiArCWNhc2UgMTI6Cj4gKwkJcmV0dXJuIFJPV19JTkRFWF8xMkJQUDsKPiArCWNhc2UgMTU6Cj4g KwkJcmV0dXJuIFJPV19JTkRFWF8xNUJQUDsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ2V0X2NvbHVtbl9pbmRleF9mb3JfcmNf cGFyYW1zKHU4IGJpdHNfcGVyX2NvbXBvbmVudCkKPiArewo+ICsJc3dpdGNoIChiaXRzX3Blcl9j b21wb25lbnQpIHsKPiArCWNhc2UgODoKPiArCQlyZXR1cm4gQ09MVU1OX0lOREVYXzhCUEM7Cj4g KwljYXNlIDEwOgo+ICsJCXJldHVybiBDT0xVTU5fSU5ERVhfMTBCUEM7Cj4gKwljYXNlIDEyOgo+ ICsJCXJldHVybiBDT0xVTU5fSU5ERVhfMTJCUEM7Cj4gKwljYXNlIDE0Ogo+ICsJCXJldHVybiBD T0xVTU5fSU5ERVhfMTRCUEM7Cj4gKwljYXNlIDE2Ogo+ICsJCXJldHVybiBDT0xVTU5fSU5ERVhf MTZCUEM7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICt9Cj4gKwo+ ICtpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmcGlwZV9jb25maWctPmRwX2RzY19j Zmc7Cj4gKwl1MTYgY29tcHJlc3NlZF9icHAgPSBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21w cmVzc2VkX2JwcDsKPiArCXU4IGkgPSAwOwo+ICsJdTggcm93X2luZGV4ID0gMDsKPiArCXU4IGNv bHVtbl9pbmRleCA9IDA7Cj4gKwl1OCBsaW5lX2J1Zl9kZXB0aCA9IDA7Cj4gKwo+ICsJdmRzY19j ZmctPnBpY193aWR0aCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlz cGxheTsKPiArCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICsJdmRzY19jZmctPnNsaWNlX3dpZHRoID0gRElWX1JP VU5EX1VQKHZkc2NfY2ZnLT5waWNfd2lkdGgsCj4gKwkJCQkJICAgICBwaXBlX2NvbmZpZy0+ZHNj X3BhcmFtcy5zbGljZV9jb3VudCk7Cj4gKwkvKgo+ICsJICogU2xpY2UgSGVpZ2h0IG9mIDggd29y a3MgZm9yIGFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIHBhbmVscy4gU28gc3RhcnQKPiArCSAqIHdp dGggdGhhdCBpZiBwaWNfaGVpZ2h0IGlzIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDguCj4gKwkg KiBFdmVudHVhbGx5IGFkZCBsb2dpYyB0byB0cnkgbXVsdGlwbGUgc2xpY2UgaGVpZ2h0cy4KPiAr CSAqLwo+ICsJaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgOCA9PSAwKQo+ICsJCXZkc2NfY2Zn LT5zbGljZV9oZWlnaHQgPSA4Owo+ICsJZWxzZSBpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA0 ID09IDApCj4gKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDQ7Cj4gKwllbHNlCj4gKwkJdmRz Y19jZmctPnNsaWNlX2hlaWdodCA9IDI7Cj4gKwo+ICsJLyogVmFsdWVzIGZpbGxlZCBmcm9tIERT QyBTaW5rIERQQ0QgKi8KPiArCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9tYWpvciA9Cj4gKwkJKGlu dGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVWIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQkgRFBf RFNDX01BSk9SX01BU0spID4+IERQX0RTQ19NQUpPUl9TSElGVDsKPiArCXZkc2NfY2ZnLT5kc2Nf dmVyc2lvbl9taW5vciA9Cj4gKwkJbWluKERTQ19TVVBQT1JURURfVkVSU0lPTl9NSU4sCj4gKwkJ ICAgIChpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX1JFViAtIERQX0RTQ19TVVBQT1JUXSAmCj4g KwkJICAgICBEUF9EU0NfTUlOT1JfTUFTSykgPj4gRFBfRFNDX01JTk9SX1NISUZUKTsKPiArCj4g Kwl2ZHNjX2NmZy0+Y29udmVydF9yZ2IgPSBpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX0RFQ19D T0xPUl9GT1JNQVRfQ0FQIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQlEUF9EU0NfUkdCOwo+ICsK PiArCWxpbmVfYnVmX2RlcHRoID0gZHJtX2RwX2RzY19zaW5rX2xpbmVfYnVmX2RlcHRoKGludGVs X2RwLT5kc2NfZHBjZCk7Cj4gKwlpZiAoIWxpbmVfYnVmX2RlcHRoKSB7Cj4gKwkJRFJNX0RFQlVH X0tNUygiRFNDIFNpbmsgTGluZSBCdWZmZXIgRGVwdGggaW52YWxpZFxuIik7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwl9Cj4gKwlpZiAodmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID09IDIp Cj4gKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoID0gKGxpbmVfYnVmX2RlcHRoID09IERTQ18x XzJfTUFYX0xJTkVCVUZfREVQVEhfQklUUykgPwo+ICsJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RF UFRIX1ZBTCA6IGxpbmVfYnVmX2RlcHRoOwo+ICsJZWxzZQo+ICsJCXZkc2NfY2ZnLT5saW5lX2J1 Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA+IERTQ18xXzFfTUFYX0xJTkVCVUZfREVQVEhfQklU UykgPwo+ICsJCQlEU0NfMV8xX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMgOiBsaW5lX2J1Zl9kZXB0 aDsKPiArCj4gKwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9ydCBZQ2JDciAqLwo+ICsJdmRzY19j ZmctPmVuYWJsZTQyMiA9IGZhbHNlOwo+ICsJLyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgVkJS ICovCj4gKwl2ZHNjX2NmZy0+dmJyX2VuYWJsZSA9IGZhbHNlOwo+ICsJdmRzY19jZmctPmJsb2Nr X3ByZWRfZW5hYmxlID0KPiArCQkJaW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19CTEtfUFJFRElD VElPTl9TVVBQT1JUIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQlEUF9EU0NfQkxLX1BSRURJQ1RJ T05fSVNfU1VQUE9SVEVEOwo+ICsKPiArCS8qIEdlbiAxMSBvbmx5IHN1cHBvcnRzIGludGVncmFs IHZhbHVlcyBvZiBicHAgKi8KPiArCXZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCA9IGNvbXByZXNz ZWRfYnBwIDw8IDQ7Cj4gKwl2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID0gcGlwZV9jb25m aWctPnBpcGVfYnBwIC8gMzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFO R0VTIC0gMTsgaSsrKSB7Cj4gKwkJLyoKPiArCQkgKiBzaXggMHMgYXJlIGFwcGVuZGVkIHRvIHRo ZSBsc2Igb2YgZWFjaCB0aHJlc2hvbGQgdmFsdWUKPiArCQkgKiBpbnRlcm5hbGx5IGluIGgvdy4K PiArCQkgKiBPbmx5IDggYml0cyBhcmUgYWxsb3dlZCBmb3IgcHJvZ3JhbW1pbmcgUmNCdWZUaHJl c2hvbGQKPiArCQkgKi8KPiArCQl2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFtpXSA9IHJjX2J1Zl90 aHJlc2hbaV0gPj4gNjsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogRm9yIDZicHAsIFJDIEJ1ZmZl ciB0aHJlc2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBkaWZmZXJlbnQgdmFsdWUKPiArCSAqIGFzIHBl ciBDIE1vZGVsCj4gKwkgKi8KPiArCWlmIChjb21wcmVzc2VkX2JwcCA9PSA2KSB7Cj4gKwkJdmRz Y19jZmctPnJjX2J1Zl90aHJlc2hbMTJdID0gMHg3QzsKPiArCQl2ZHNjX2NmZy0+cmNfYnVmX3Ro cmVzaFsxM10gPSAweDdEOwo+ICsJfQo+ICsKPiArCXJvd19pbmRleCA9IGdldF9yb3dfaW5kZXhf Zm9yX3JjX3BhcmFtcyhjb21wcmVzc2VkX2JwcCk7Cj4gKwljb2x1bW5faW5kZXggPQo+ICsJCWdl dF9jb2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50 KTsKPiArCj4gKwlpZiAocm93X2luZGV4IDwgMCB8fCBjb2x1bW5faW5kZXggPCAwKQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCXZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQo+ ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmlyc3RfbGluZV9icGdfb2Zm c2V0Owo+ICsJdmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSA9Cj4gKwkJcmNfcGFyYW1zW3Jv d19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFsX3htaXRfZGVsYXk7Cj4gKwl2ZHNjX2NmZy0+ aW5pdGlhbF9vZmZzZXQgPQo+ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0u aW5pdGlhbF9vZmZzZXQ7Cj4gKwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWluX3FwID0KPiArCQlyY19w YXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmZsYXRuZXNzX21pbl9xcDsKPiArCXZkc2Nf Y2ZnLT5mbGF0bmVzc19tYXhfcXAgPQo+ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9p bmRleF0uZmxhdG5lc3NfbWF4X3FwOwo+ICsJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQw ID0KPiArCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3Jf bGltaXQwOwo+ICsJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQxID0KPiArCQlyY19wYXJh bXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3JfbGltaXQxOwo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7IGkrKykgewo+ICsJCXZkc2NfY2Zn LT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwID0KPiArCQkJcmNfcGFyYW1zW3Jvd19p bmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwOwo+ICsJ CXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWF4X3FwID0KPiArCQkJcmNfcGFy YW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWF4 X3FwOwo+ICsJCS8qCj4gKwkJICogUmFuZ2UgQlBHIE9mZnNldCB1c2VzIDIncyBjb21wbGVtZW50 IGFuZCBpcyBvbmx5IGEgNiBiaXRzLiBTbwo+ICsJCSAqIG1hc2sgaXQgdG8gZ2V0IG9ubHkgNiBi aXRzLgo+ICsJCSAqLwo+ICsJCXZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfYnBn X29mZnNldCA9Cj4gKwkJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFu Z2VfcGFyYW1zW2ldLnJhbmdlX2JwZ19vZmZzZXQgJgo+ICsJCQlEU0NfUkFOR0VfQlBHX09GRlNF VF9NQVNLOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBCaXRzUGVyQ29tcG9uZW50IHZhbHVlIGRl dGVybWluZXMgbXV4X3dvcmRfc2l6ZToKPiArCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBpcyAx MmJwYywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0byA2NCBiaXRzCj4gKwkgKiBXaGVuIEJp dHNQZXJDb21wb25lbnQgaXMgOCBvciAxMGJwYywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0 bwo+ICsJICogNDggYml0cwo+ICsJICovCj4gKwlpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBv bmVudCA9PSA4IHx8Cj4gKwkgICAgdmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMCkK PiArCQl2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzhfMTBfQlBD Owo+ICsJZWxzZSBpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBvbmVudCA9PSAxMikKPiArCQl2 ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSA9IERTQ19NVVhfV09SRF9TSVpFXzEyX0JQQzsKPiArCj4g KwkvKiBSQ19NT0RFTF9TSVpFIGlzIGEgY29uc3RhbnQgYWNyb3NzIGFsbCBjb25maWd1cmF0aW9u cyAqLwo+ICsJdmRzY19jZmctPnJjX21vZGVsX3NpemUgPSBEU0NfUkNfTU9ERUxfU0laRV9DT05T VDsKPiArCS8qIEluaXRpYWxTY2FsZVZhbHVlIGlzIGEgNiBiaXQgdmFsdWUgd2l0aCAzIGZyYWN0 aW9uYWwgYml0cyAoVTMuMykgKi8KPiArCXZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlID0g KHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIDw8IDMpIC8KPiArCQkodmRzY19jZmctPnJjX21vZGVs X3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9kcF9oZWxwZXIuaAo+IGluZGV4IGUwYTM3MzkwZTM5NC4uMzNjYjc4OTI1MDk0IDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9kcF9oZWxwZXIuaAo+IEBAIC0xODcsNiArMTg3LDkgQEAKPiAgCj4gICNkZWZpbmUgRFBf R1VJRAkJCQkgICAgMHgwMzAgICAvKiAxLjIgKi8KPiAgCj4gKyNkZWZpbmUgRFBfRFNDX1JDX1BJ WEVMU19QRVJfR1JPVVAJCTMKPiArI2RlZmluZSBEUF9EU0NfU0NBTEVfREVDUkVNRU5UX0lOVEVS VkFMX01BWAk0MDk1Cj4gKwo+ICAjZGVmaW5lIERQX0RTQ19TVVBQT1JUICAgICAgICAgICAgICAg ICAgICAgIDB4MDYwICAgLyogRFAgMS40ICovCj4gICMgZGVmaW5lIERQX0RTQ19ERUNPTVBSRVNT SU9OX0lTX1NVUFBPUlRFRCAgKDEgPDwgMCkKPiAgCj4gLS0gCj4gMi4xOC4wCj4gCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=