From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Srivatsa, Anusha" Subject: Re: [PATCH v2 15/23] drm/i915/dsc: Define & Compute VESA DSC params Date: Tue, 28 Aug 2018 22:18:56 +0000 Message-ID: <83F5C7385F545743AD4FB2A62F75B07347F4818F@ORSMSX108.amr.corp.intel.com> References: <1533071239-28815-1-git-send-email-manasi.d.navare@intel.com> <1533071239-28815-16-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D11D56E427 for ; Tue, 28 Aug 2018 22:19:04 +0000 (UTC) In-Reply-To: <1533071239-28815-16-git-send-email-manasi.d.navare@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Navare, Manasi D" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IE5hdmFyZSwgTWFuYXNpIEQN Cj5TZW50OiBUdWVzZGF5LCBKdWx5IDMxLCAyMDE4IDI6MDcgUE0NCj5UbzogaW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZw0KPkNjOiBTaW5naCwgR2F1cmF2IEsgPGdhdXJhdi5rLnNpbmdo QGludGVsLmNvbT47IEphbmkgTmlrdWxhDQo+PGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT47 IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPjsNCj5Tcml2YXRz YSwgQW51c2hhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPjsgTmF2YXJlLCBNYW5hc2kgRA0K PjxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFtQQVRDSCB2MiAxNS8yM10g ZHJtL2k5MTUvZHNjOiBEZWZpbmUgJiBDb21wdXRlIFZFU0EgRFNDIHBhcmFtcw0KPg0KPkZyb206 IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+DQo+DQo+VGhpcyBwYXRj aGVzIGRvZXMgdGhlIGZvbGxvd2luZzoNCj4NCj4xLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRo ZSBEU0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EgRFNDIHNwZWNpZmljYXRpb24uDQo+VGhl c2UgYXJlIHN0b3JlZCBpbiB0aGUgZW5jb2RlciBhbmQgdXNlZCB0byBjb21wdXRlIHRoZSBQUFMg cGFyYW1ldGVycyB0byBiZQ0KPnNlbnQgdG8gdGhlIFNpbmsuDQo+Mi4gQ29tcHV0ZSBhbGwgdGhl IERTQyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDIHN0YXRlIG9mDQo+aW50 ZWxfY3J0Y19zdGF0ZS4NCj4zLiBDb21wdXRlIGFsbCBwYXJhbWV0ZXJzIHRoYXQgYXJlIFZFU0Eg RFNDIHNwZWNpZmljDQo+DQo+VGhpcyBjb21wdXRhdGlvbiBoYXBwZW5zIGluIHRoZSBhdG9taWMg Y2hlY2sgcGhhc2UgZHVyaW5nDQo+Y29tcHV0ZV9jb25maWcoKSB0byB2YWxpZGF0ZSBpZiBkaXNw bGF5IHN0cmVhbSBjb21wcmVzc2lvbiBjYW4gYmUgZW5hYmxlZCBmb3INCj50aGUgcmVxdWVzdGVk IG1vZGUuDQo+DQo+djUgKEZyb20gTWFuYXNpKToNCj4qIEFkZCBsb2dpYyB0byBsaW1pdCB0aGUg bWF4IGxpbmUgYnVmIGRlcHRoIGZvciBEU0MgMS4xIHRvIDEzIGFzIHBlciBEU0MgMS4xIHNwZWMN Cj4qIEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MNCj4NCj52NCAoRnJvbSBHYXVy YXYpOg0KPiogUmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwDQo+KiByZW5hbWUgdmFyaWFibGUgbmFt ZShNYW5hc2kpDQo+KiBQb3B1bGF0ZSBsaW5lYnVmX2RlcHRoIHZhcmlhYmxlKE1hbmFzaSkNCj4N Cj52MyAoRnJvbSBHYXVyYXYpOg0KPiogUmViYXNlIG15IHByZXZpb3VzIHBhdGNoZXMgb24gdG9w IG9mIE1hbmFzaSdzIGxhdGVzdCBwYXRjaCBzZXJpZXMNCj4qIFVzaW5nID4+biByYXRoZXIgdGhh biAvMl5uIChNYW5hc2kpDQo+KiBDaGFuZ2UgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4g d2hhdCB0aGUgcGF0Y2ggaXMgZG9pbmcoR2F1cmF2KQ0KPg0KPkZpeGVkIHJldmlldyBjb21tZW50 cyBmcm9tIFZpbGxlOg0KPiogRG9uJ3QgdXNlIG1hY3JvIFRXT1NfQ09NUExFTUVOVA0KPiogTWVu dGlvbiBpbiBjb21tZW50IGFib3V0IHRoZSBzb3VyY2Ugb2YgUkMgcGFyYW1zDQo+KiBSZXR1cm4g ZGlyZWN0bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMNCj4qIFVzaW5nIHNpbmdsZSBhc3NzaWdubWVu dCBmb3IgYXNzaWduaW5nIHJjX3JhbmdlX3BhcmFtcw0KPiogVXNpbmcgPDxuIHJhdGhlciB0aGFu ICoyXm4gYW5kIHJlbW92aW5nIHRoZSBjb21tZW50cyBhYm91dCB0aGUgZml4ZWQgcG9pbnQNCj5u dW1iZXJzDQo+DQo+djIgKEZyb20gTWFuYXNpKToNCj4qIFVwZGF0ZSBsb2dpYyBmb3IgbWlub3Ig dmVyc2lvbiB0byBjb25zaWRlciB0aGUgZHBjZCB2YWx1ZSBhbmQgd2hhdCBzdXBwb3J0ZWQNCj5i eSB0aGUgSFcgcGxhdGZvcm0NCj4qIFVzZSBEUk0gRFNDIGNvbmZpZyBzdHJ1Y3QgaW5zdGVhZCBv ZiBpbnRlbF9kcCBzdHJ1Y3QNCj4qIE1vdmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJNIERTQyBo ZWFkZXIgZmlsZQ0KPiogVXNlIHUxNiwgdTggd2hlcmUgYmlnZ2VyIGRhdGEgdHlwZXMgbm90IG5l ZWRlZA0KPiogKiBDb21wdXRlIHRoZSBEU0MgcGFyYW1ldGVycyBhcyBwYXJ0IG9mIERTQyBjb21w dXRlIGNvbmZpZyBzaW5jZSB0aGUNCj5jb21wdXRhdGlvbiBjYW4gZmFpbCAoTWFuYXNpKQ0KPg0K PkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPg0KPkNjOiBWaWxs ZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4NCj5DYzogQW51c2hhIFNy aXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPg0KPkNjOiBHYXVyYXYgSyBTaW5naCA8 Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPg0KPlNpZ25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdo IDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+DQo+U2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFy ZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4NCj4tLS0NCj4gZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgICAgIHwgICAzICstDQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgICB8ICAgNyArDQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNCAr DQo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyB8IDQ1NQ0KPisrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+IGluY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIu aCAgICAgICB8ICAgMyArDQo+IGluY2x1ZGUvZHJtL2RybV9kc2MuaCAgICAgICAgICAgICB8ICAg MiArLQ0KPiA2IGZpbGVzIGNoYW5nZWQsIDQ3MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5j DQo+DQo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUNCj5pbmRleCA1Nzk0ZjEwLi5kZWFmMmQ0IDEwMDY0NA0K Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlDQo+KysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUNCj5AQCAtMTUzLDcgKzE1Myw4IEBAIGk5MTUteSArPSBkdm9fY2g3 MDE3Lm8gXA0KPiAJICBpbnRlbF9zZHZvLm8gXA0KPiAJICBpbnRlbF90di5vIFwNCj4gCSAgdmx2 X2RzaS5vIFwNCj4tCSAgdmx2X2RzaV9wbGwubw0KPisJICB2bHZfZHNpX3BsbC5vIFwNCj4rCSAg aW50ZWxfdmRzYy5vDQo+DQo+ICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRl IGNhcHR1cmUNCj4gaTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSArPSBpOTE1 X2dwdV9lcnJvci5vIGRpZmYgLS1naXQNCj5hL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGluZGV4DQo+NzEzMmY1Mi4uZGMw YTNjMiAxMDA2NDQNCj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+Kysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0KPkBAIC0yMDQyLDYgKzIwNDIsMTMg QEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdA0KPmludGVs X2RwICppbnRlbF9kcCwNCj4gCQkJcmV0dXJuIGZhbHNlOw0KPiAJCX0NCj4gCX0NCj4rCWlmIChp bnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoaW50ZWxfZHAsIHBpcGVfY29uZmlnKSA8IDApIHsN Cj4rCQlEUk1fRVJST1IoIkNhbm5vdCBjb21wdXRlIHZhbGlkIERTQyBwYXJhbWV0ZXJzIGZvciBJ bnB1dA0KPkJwcCA9ICVkIg0KPisJCQkgICJDb21wcmVzc2VkIEJQUCA9ICVkXG4iLA0KPisJCQkg IHBpcGVfY29uZmlnLT5waXBlX2JwcCwNCj4rCQkJICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5j b21wcmVzc2VkX2JwcCk7DQo+KwkJcmV0dXJuIGZhbHNlOw0KPisJfQ0KPiAJcGlwZV9jb25maWct PmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsNCj4gCURSTV9ERUJVR19LTVMo IkRQIERTQyBjb21wdXRlZCB3aXRoIElucHV0IEJwcCA9ICVkICINCj4gCQkgICAgICAiQ29tcHJl c3NlZCBCcHAgPSAlZCBTbGljZSBDb3VudCA9ICVkXG4iLCBkaWZmIC0tZ2l0DQo+YS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oDQo+aW5kZXggYjdjMjY1Mi4uMzNjYzc3NyAxMDA2NDQNCj4tLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaA0KPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oDQo+QEAgLTE3NDksNiArMTc0OSwxMCBAQCB1aW50MTZfdCBpbnRlbF9kcF9kc2NfZ2V0X291 dHB1dF9icHAoaW50IGxpbmtfY2xvY2ssDQo+dWludDhfdCBsYW5lX2NvdW50LCAgdWludDhfdCBp bnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcA0KPippbnRlbF9kcCwg aW50IG1vZGVfY2xvY2ssDQo+IAkJCQkgICAgIGludCBtb2RlX2hkaXNwbGF5KTsNCj4NCj4rLyog aW50ZWxfdmRzYy5jICovDQo+K2ludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwNCj4rCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyk7DQo+Kw0KPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbnRlbF9kcF91bnVz ZWRfbGFuZV9tYXNrKGludCBsYW5lX2NvdW50KSAgew0KPiAJcmV0dXJuIH4oKDEgPDwgbGFuZV9j b3VudCkgLSAxKSAmIDB4ZjsgZGlmZiAtLWdpdA0KPmEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jDQo+bmV3IGZpbGUg bW9kZSAxMDA2NDQNCj5pbmRleCAwMDAwMDAwLi5lY2QyNzBjDQo+LS0tIC9kZXYvbnVsbA0KPisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYw0KPkBAIC0wLDAgKzEsNDU1IEBA DQo+Ky8qDQo+KyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uDQo+KyAqDQo+ KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uDQo+K29idGFpbmluZyBhDQo+KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUNCj4rIlNvZnR3YXJlIiksDQo+KyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0DQo+K2xpbWl0YXRpb24NCj4rICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsDQo+K3N1YmxpY2Vuc2UsDQo+KyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t DQo+K3RoZQ0KPisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPisgKg0KPisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQ0KPituZXh0 DQo+KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucw0KPitvZiB0aGUNCj4rICogU29mdHdhcmUuDQo+KyAqDQo+KyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELA0KPitFWFBSRVNTIE9SDQo+KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCj4rTUVSQ0hBTlRBQklMSVRZLA0KPisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8NCj5F VkVOVA0KPitTSEFMTA0KPisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwNCj5EQU1BR0VTIE9SDQo+K09USEVSDQo+KyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0K PitBUklTSU5HDQo+KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1INCj5PVEhFUg0KPisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuDQo+KyAqDQo+KyAqIEF1dGhvcjogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGlu dGVsLmNvbT4NCj4rICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPg0KPisgKi8NCj4rDQo+KyNpbmNsdWRlIDxkcm0vZHJtUC5oPg0KPisjaW5jbHVkZSA8 ZHJtL2k5MTVfZHJtLmg+DQo+KyNpbmNsdWRlICJpOTE1X2Rydi5oIg0KPisjaW5jbHVkZSAiaW50 ZWxfZHJ2LmgiDQo+Kw0KPitlbnVtIFJPV19JTkRFWF9CUFAgew0KPisJUk9XX0lOREVYXzZCUFAg PSAwLA0KPisJUk9XX0lOREVYXzhCUFAsDQo+KwlST1dfSU5ERVhfMTBCUFAsDQo+KwlST1dfSU5E RVhfMTJCUFAsDQo+KwlST1dfSU5ERVhfMTVCUFAsDQo+KwlNQVhfUk9XX0lOREVYDQo+K307DQo+ Kw0KPitlbnVtIENPTFVNTl9JTkRFWF9CUEMgew0KPisJQ09MVU1OX0lOREVYXzhCUEMgPSAwLA0K PisJQ09MVU1OX0lOREVYXzEwQlBDLA0KPisJQ09MVU1OX0lOREVYXzEyQlBDLA0KPisJQ09MVU1O X0lOREVYXzE0QlBDLA0KPisJQ09MVU1OX0lOREVYXzE2QlBDLA0KPisJTUFYX0NPTFVNTl9JTkRF WA0KPit9Ow0KPisNCj4rI2RlZmluZSBEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOCQkxDQo+Kw0K PisvKiBGcm9tIERTQ192MS4xMSBzcGVjLCByY19wYXJhbWV0ZXJfU2V0IHN5bnRheCBlbGVtZW50 IHR5cGljYWxseQ0KPitjb25zdGFudCAqLyBzdGF0aWMgdTE2IHJjX2J1Zl90aHJlc2hbXSA9IHsN Cj4rCTg5NiwgMTc5MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3MiwgNjcyMCwgNzE2OCwg NzYxNiwNCj4rCTc3NDQsIDc4NzIsIDgwMDAsIDgwNjQNCj4rfTsNCj4rDQo+K3N0cnVjdCByY19w YXJhbWV0ZXJzIHsNCj4rCXUxNiBpbml0aWFsX3htaXRfZGVsYXk7DQo+Kwl1OCBmaXJzdF9saW5l X2JwZ19vZmZzZXQ7DQo+Kwl1MTYgaW5pdGlhbF9vZmZzZXQ7DQo+Kwl1OCBmbGF0bmVzc19taW5f cXA7DQo+Kwl1OCBmbGF0bmVzc19tYXhfcXA7DQo+Kwl1OCByY19xdWFudF9pbmNyX2xpbWl0MDsN Cj4rCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOw0KPisJc3RydWN0IGRzY19yY19yYW5nZV9wYXJh bWV0ZXJzDQo+cmNfcmFuZ2VfcGFyYW1zW0RTQ19OVU1fQlVGX1JBTkdFU107DQo+K307DQo+Kw0K PisvKg0KPisgKiBTZWxlY3RlZCBSYXRlIENvbnRyb2wgUmVsYXRlZCBQYXJhbWV0ZXIgUmVjb21t ZW5kZWQgVmFsdWVzDQo+KyAqIGZyb20gRFNDX3YxLjExIHNwZWMgJiBDIE1vZGVsIHJlbGVhc2U6 IERTQ19tb2RlbF8yMDE2MTIxMiAgKi8gc3RhdGljDQo+K3N0cnVjdCByY19wYXJhbWV0ZXJzIHJj X3BhcmFtc1tdW01BWF9DT0xVTU5fSU5ERVhdID0geyB7DQo+KwkvKiA2QlBQLzhCUEMgKi8NCj4r CXsgNzY4LCAxNSwgNjE0NCwgMywgMTMsIDExLCAxMSwgew0KPisJCXsgMCwgNCwgMCB9LCB7IDEs IDYsIC0yIH0sIHsgMywgOCwgLTIgfSwgeyA0LCA4LCAtNCB9LA0KPisJCXsgNSwgOSwgLTYgfSwg eyA1LCA5LCAtNiB9LCB7IDYsIDksIC02IH0sIHsgNiwgMTAsIC04IH0sDQo+KwkJeyA3LCAxMSwg LTggfSwgeyA4LCAxMiwgLTEwIH0sIHsgOSwgMTIsIC0xMCB9LCB7IDEwLCAxMiwgLTEyIH0sDQo+ KwkJeyAxMCwgMTIsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTMsIDE0LCAtMTIgfQ0KPisJ CX0NCj4rCX0sDQo+KwkvKiA2QlBQLzEwQlBDICovDQo+Kwl7IDc2OCwgMTUsIDYxNDQsIDcsIDE3 LCAxNSwgMTUsIHsNCj4rCQl7IDAsIDgsIDAgfSwgeyAzLCAxMCwgLTIgfSwgeyA3LCAxMiwgLTIg fSwgeyA4LCAxMiwgLTQgfSwNCj4rCQl7IDksIDEzLCAtNiB9LCB7IDksIDEzLCAtNiB9LCB7IDEw LCAxMywgLTYgfSwgeyAxMCwgMTQsIC04IH0sDQo+KwkJeyAxMSwgMTUsIC04IH0sIHsgMTIsIDE2 LCAtMTAgfSwgeyAxMywgMTYsIC0xMCB9LA0KPisJCXsgMTQsIDE2LCAtMTIgfSwgeyAxNCwgMTYs IC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sDQo+KwkJeyAxNywgMTgsIC0xMiB9DQo+KwkJfQ0KPisJ fSwNCj4rCS8qIDZCUFAvMTJCUEMgKi8NCj4rCXsgNzY4LCAxNSwgNjE0NCwgMTEsIDIxLCAxOSwg MTksIHsNCj4rCQl7IDAsIDEyLCAwIH0sIHsgNSwgMTQsIC0yIH0sIHsgMTEsIDE2LCAtMiB9LCB7 IDEyLCAxNiwgLTQgfSwNCj4rCQl7IDEzLCAxNywgLTYgfSwgeyAxMywgMTcsIC02IH0sIHsgMTQs IDE3LCAtNiB9LCB7IDE0LCAxOCwgLTggfSwNCj4rCQl7IDE1LCAxOSwgLTggfSwgeyAxNiwgMjAs IC0xMCB9LCB7IDE3LCAyMCwgLTEwIH0sDQo+KwkJeyAxOCwgMjAsIC0xMiB9LCB7IDE4LCAyMCwg LTEyIH0sIHsgMTksIDIwLCAtMTIgfSwNCj4rCQl7IDIxLCAyMiwgLTEyIH0NCj4rCQl9DQo+Kwl9 LA0KPisJLyogNkJQUC8xNEJQQyAqLw0KPisJeyA3NjgsIDE1LCA2MTQ0LCAxNSwgMjUsIDIzLCAy Nywgew0KPisJCXsgMCwgMTYsIDAgfSwgeyA3LCAxOCwgLTIgfSwgeyAxNSwgMjAsIC0yIH0sIHsg MTYsIDIwLCAtNCB9LA0KPisJCXsgMTcsIDIxLCAtNiB9LCB7IDE3LCAyMSwgLTYgfSwgeyAxOCwg MjEsIC02IH0sIHsgMTgsIDIyLCAtOCB9LA0KPisJCXsgMTksIDIzLCAtOCB9LCB7IDIwLCAyNCwg LTEwIH0sIHsgMjEsIDI0LCAtMTAgfSwNCj4rCQl7IDIyLCAyNCwgLTEyIH0sIHsgMjIsIDI0LCAt MTIgfSwgeyAyMywgMjQsIC0xMiB9LA0KPisJCXsgMjUsIDI2LCAtMTIgfQ0KPisJCX0NCj4rCX0s DQo+KwkvKiA2QlBQLzE2QlBDICovDQo+Kwl7IDc2OCwgMTUsIDYxNDQsIDE5LCAyOSwgMjcsIDI3 LCB7DQo+KwkJeyAwLCAyMCwgMCB9LCB7IDksIDIyLCAtMiB9LCB7IDE5LCAyNCwgLTIgfSwgeyAy MCwgMjQsIC00IH0sDQo+KwkJeyAyMSwgMjUsIC02IH0sIHsgMjEsIDI1LCAtNiB9LCB7IDIyLCAy NSwgLTYgfSwgeyAyMiwgMjYsIC04IH0sDQo+KwkJeyAyMywgMjcsIC04IH0sIHsgMjQsIDI4LCAt MTAgfSwgeyAyNSwgMjgsIC0xMCB9LA0KPisJCXsgMjYsIDI4LCAtMTIgfSwgeyAyNiwgMjgsIC0x MiB9LCB7IDI3LCAyOCwgLTEyIH0sDQo+KwkJeyAyOSwgMzAsIC0xMiB9DQo+KwkJfQ0KPisJfSwN Cj4rfSwNCj4rew0KPisJLyogOEJQUC84QlBDICovDQo+Kwl7IDUxMiwgMTIsIDYxNDQsIDMsIDEy LCAxMSwgMTEsIHsNCj4rCQl7IDAsIDQsIDIgfSwgeyAwLCA0LCAwIH0sIHsgMSwgNSwgMCB9LCB7 IDEsIDYsIC0yIH0sDQo+KwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywgNywgLTgg fSwgeyAzLCA4LCAtOCB9LA0KPisJCXsgMywgOSwgLTggfSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwg MTEsIC0xMCB9LCB7IDUsIDEyLCAtMTIgfSwNCj4rCQl7IDUsIDEzLCAtMTIgfSwgeyA3LCAxMywg LTEyIH0sIHsgMTMsIDE1LCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiA4QlBQLzEwQlBDICov DQo+Kwl7IDUxMiwgMTIsIDYxNDQsIDcsIDE2LCAxNSwgMTUsIHsNCj4rCQl7IDAsIDQsIDIgfSwg eyA0LCA4LCAwIH0sIHsgNSwgOSwgMCB9LCB7IDUsIDEwLCAtMiB9LA0KPisJCXsgNywgMTEsIC00 IH0sIHsgNywgMTEsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04IH0sDQo+KwkJeyA3 LCAxMywgLTggfSwgeyA3LCAxNCwgLTEwIH0sIHsgOSwgMTUsIC0xMCB9LCB7IDksIDE2LCAtMTIg fSwNCj4rCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEyIH0N Cj4rCQl9DQo+Kwl9LA0KPisJLyogOEJQUC8xMkJQQyAqLw0KPisJeyA1MTIsIDEyLCA2MTQ0LCAx MSwgMjAsIDE5LCAxOSwgew0KPisJCXsgMCwgMTIsIDIgfSwgeyA0LCAxMiwgMCB9LCB7IDksIDEz LCAwIH0sIHsgOSwgMTQsIC0yIH0sDQo+KwkJeyAxMSwgMTUsIC00IH0sIHsgMTEsIDE1LCAtNiB9 LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sDQo+KwkJeyAxMSwgMTcsIC04IH0sIHsg MTEsIDE4LCAtMTAgfSwgeyAxMywgMTksIC0xMCB9LA0KPisJCXsgMTMsIDIwLCAtMTIgfSwgeyAx MywgMjEsIC0xMiB9LCB7IDE1LCAyMSwgLTEyIH0sDQo+KwkJeyAyMSwgMjMsIC0xMiB9DQo+KwkJ fQ0KPisJfSwNCj4rCS8qIDhCUFAvMTRCUEMgKi8NCj4rCXsgNTEyLCAxMiwgNjE0NCwgMTUsIDI0 LCAyMywgMjMsIHsNCj4rCQl7IDAsIDEyLCAwIH0sIHsgNSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAg fSwgeyAxMiwgMTcsIC0yIH0sDQo+KwkJeyAxNSwgMTksIC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7 IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04IH0sDQo+KwkJeyAxNSwgMjEsIC04IH0sIHsgMTUs IDIyLCAtMTAgfSwgeyAxNywgMjIsIC0xMCB9LA0KPisJCXsgMTcsIDIzLCAtMTIgfSwgeyAxNywg MjMsIC0xMiB9LCB7IDIxLCAyNCwgLTEyIH0sDQo+KwkJeyAyNCwgMjUsIC0xMiB9DQo+KwkJfQ0K PisJfSwNCj4rCS8qIDhCUFAvMTZCUEMgKi8NCj4rCXsgNTEyLCAxMiwgNjE0NCwgMTksIDI4LCAy NywgMjcsIHsNCj4rCQl7IDAsIDEyLCAyIH0sIHsgNiwgMTQsIDAgfSwgeyAxMywgMTcsIDAgfSwg eyAxNSwgMjAsIC0yIH0sDQo+KwkJeyAxOSwgMjMsIC00IH0sIHsgMTksIDIzLCAtNiB9LCB7IDE5 LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sDQo+KwkJeyAxOSwgMjUsIC04IH0sIHsgMTksIDI2 LCAtMTAgfSwgeyAyMSwgMjYsIC0xMCB9LA0KPisJCXsgMjEsIDI3LCAtMTIgfSwgeyAyMSwgMjcs IC0xMiB9LCB7IDI1LCAyOCwgLTEyIH0sDQo+KwkJeyAyOCwgMjksIC0xMiB9DQo+KwkJfQ0KPisJ fSwNCj4rfSwNCj4rew0KPisJLyogMTBCUFAvOEJQQyAqLw0KPisJeyA0MTAsIDE1LCA1NjMyLCAz LCAxMiwgMTEsIDExLCB7DQo+KwkJeyAwLCAzLCAyIH0sIHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAg fSwgeyAyLCA2LCAtMiB9LA0KPisJCXsgMywgNywgLTQgfSwgeyAzLCA3LCAtNiB9LCB7IDMsIDcs IC04IH0sIHsgMywgOCwgLTggfSwNCj4rCQl7IDMsIDksIC04IH0sIHsgMywgOSwgLTEwIH0sIHsg NSwgMTAsIC0xMCB9LCB7IDUsIDEwLCAtMTAgfSwNCj4rCQl7IDUsIDExLCAtMTIgfSwgeyA3LCAx MSwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiAxMEJQUC8xMEJQ QyAqLw0KPisJeyA0MTAsIDE1LCA1NjMyLCA3LCAxNiwgMTUsIDE1LCB7DQo+KwkJeyAwLCA3LCAy IH0sIHsgNCwgOCwgMCB9LCB7IDUsIDksIDAgfSwgeyA2LCAxMCwgLTIgfSwNCj4rCQl7IDcsIDEx LCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEyLCAtOCB9LA0KPisJ CXsgNywgMTMsIC04IH0sIHsgNywgMTMsIC0xMCB9LCB7IDksIDE0LCAtMTAgfSwgeyA5LCAxNCwg LTEwIH0sDQo+KwkJeyA5LCAxNSwgLTEyIH0sIHsgMTEsIDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0x MiB9DQo+KwkJfQ0KPisJfSwNCj4rCS8qIDEwQlBQLzEyQlBDICovDQo+Kwl7IDQxMCwgMTUsIDU2 MzIsIDExLCAyMCwgMTksIDE5LCB7DQo+KwkJeyAwLCAxMSwgMiB9LCB7IDQsIDEyLCAwIH0sIHsg OSwgMTMsIDAgfSwgeyAxMCwgMTQsIC0yIH0sDQo+KwkJeyAxMSwgMTUsIC00IH0sIHsgMTEsIDE1 LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sDQo+KwkJeyAxMSwgMTcsIC04 IH0sIHsgMTEsIDE3LCAtMTAgfSwgeyAxMywgMTgsIC0xMCB9LA0KPisJCXsgMTMsIDE4LCAtMTAg fSwgeyAxMywgMTksIC0xMiB9LCB7IDE1LCAxOSwgLTEyIH0sDQo+KwkJeyAxOSwgMjAsIC0xMiB9 DQo+KwkJfQ0KPisJfSwNCj4rCS8qIDEwQlBQLzE0QlBDICovDQo+Kwl7IDQxMCwgMTUsIDU2MzIs IDE1LCAyNCwgMjMsIDIzLCB7DQo+KwkJeyAwLCAxMSwgMiB9LCB7IDUsIDEzLCAwIH0sIHsgMTEs IDE1LCAwIH0sIHsgMTMsIDE4LCAtMiB9LA0KPisJCXsgMTUsIDE5LCAtNCB9LCB7IDE1LCAxOSwg LTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LA0KPisJCXsgMTUsIDIxLCAtOCB9 LCB7IDE1LCAyMSwgLTEwIH0sIHsgMTcsIDIyLCAtMTAgfSwNCj4rCQl7IDE3LCAyMiwgLTEwIH0s IHsgMTcsIDIzLCAtMTIgfSwgeyAxOSwgMjMsIC0xMiB9LA0KPisJCXsgMjMsIDI0LCAtMTIgfQ0K PisJCX0NCj4rCX0sDQo+KwkvKiAxMEJQUC8xNkJQQyAqLw0KPisJeyA0MTAsIDE1LCA1NjMyLCAx OSwgMjgsIDI3LCAyNywgew0KPisJCXsgMCwgMTEsIDIgfSwgeyA2LCAxNCwgMCB9LCB7IDEzLCAx NywgMCB9LCB7IDE2LCAyMCwgLTIgfSwNCj4rCQl7IDE5LCAyMywgLTQgfSwgeyAxOSwgMjMsIC02 IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTggfSwNCj4rCQl7IDE5LCAyNSwgLTggfSwg eyAxOSwgMjUsIC0xMCB9LCB7IDIxLCAyNiwgLTEwIH0sDQo+KwkJeyAyMSwgMjYsIC0xMCB9LCB7 IDIxLCAyNywgLTEyIH0sIHsgMjMsIDI3LCAtMTIgfSwNCj4rCQl7IDI3LCAyOCwgLTEyIH0NCj4r CQl9DQo+Kwl9LA0KPit9LA0KPit7DQo+KwkvKiAxMkJQUC84QlBDICovDQo+Kwl7IDM0MSwgMTUs IDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsNCj4rCQl7IDAsIDIsIDIgfSwgeyAwLCA0LCAwIH0sIHsg MSwgNSwgMCB9LCB7IDEsIDYsIC0yIH0sDQo+KwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0s IHsgMywgNywgLTggfSwgeyAzLCA4LCAtOCB9LA0KPisJCXsgMywgOSwgLTggfSwgeyAzLCAxMCwg LTEwIH0sIHsgNSwgMTEsIC0xMCB9LA0KPisJCXsgNSwgMTIsIC0xMiB9LCB7IDUsIDEzLCAtMTIg fSwgeyA3LCAxMywgLTEyIH0sIHsgMTMsIDE1LCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiAx MkJQUC8xMEJQQyAqLw0KPisJeyAzNDEsIDE1LCAyMDQ4LCA3LCAxNiwgMTUsIDE1LCB7DQo+KwkJ eyAwLCAyLCAyIH0sIHsgMiwgNSwgMCB9LCB7IDMsIDcsIDAgfSwgeyA0LCA4LCAtMiB9LA0KPisJ CXsgNiwgOSwgLTQgfSwgeyA3LCAxMCwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTgg fSwNCj4rCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwgeyA5LCAxNSwgLTEwIH0sIHsg OSwgMTYsIC0xMiB9LA0KPisJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0sIHsgMTcs IDE5LCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiAxMkJQUC8xMkJQQyAqLw0KPisJeyAzNDEs IDE1LCAyMDQ4LCAxMSwgMjAsIDE5LCAxOSwgew0KPisJCXsgMCwgNiwgMiB9LCB7IDQsIDksIDAg fSwgeyA3LCAxMSwgMCB9LCB7IDgsIDEyLCAtMiB9LA0KPisJCXsgMTAsIDEzLCAtNCB9LCB7IDEx LCAxNCwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LA0KPisJCXsgMTEsIDE3 LCAtOCB9LCB7IDExLCAxOCwgLTEwIH0sIHsgMTMsIDE5LCAtMTAgfSwNCj4rCQl7IDEzLCAyMCwg LTEyIH0sIHsgMTMsIDIxLCAtMTIgfSwgeyAxNSwgMjEsIC0xMiB9LA0KPisJCXsgMjEsIDIzLCAt MTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiAxMkJQUC8xNEJQQyAqLw0KPisJeyAzNDEsIDE1LCAy MDQ4LCAxNSwgMjQsIDIzLCAyMywgew0KPisJCXsgMCwgNiwgMiB9LCB7IDcsIDEwLCAwIH0sIHsg OSwgMTMsIDAgfSwgeyAxMSwgMTYsIC0yIH0sDQo+KwkJeyAxNCwgMTcsIC00IH0sIHsgMTUsIDE4 LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04IH0sDQo+KwkJeyAxNSwgMjAsIC04 IH0sIHsgMTUsIDIxLCAtMTAgfSwgeyAxNywgMjEsIC0xMCB9LA0KPisJCXsgMTcsIDIxLCAtMTIg fSwgeyAxNywgMjEsIC0xMiB9LCB7IDE5LCAyMiwgLTEyIH0sDQo+KwkJeyAyMiwgMjMsIC0xMiB9 DQo+KwkJfQ0KPisJfSwNCj4rCS8qIDEyQlBQLzE2QlBDICovDQo+Kwl7IDM0MSwgMTUsIDIwNDgs IDE5LCAyOCwgMjcsIDI3LCB7DQo+KwkJeyAwLCA2LCAyIH0sIHsgNiwgMTEsIDAgfSwgeyAxMSwg MTUsIDAgfSwgeyAxNCwgMTgsIC0yIH0sDQo+KwkJeyAxOCwgMjEsIC00IH0sIHsgMTksIDIyLCAt NiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sDQo+KwkJeyAxOSwgMjQsIC04IH0s IHsgMTksIDI1LCAtMTAgfSwgeyAyMSwgMjUsIC0xMCB9LA0KPisJCXsgMjEsIDI1LCAtMTIgfSwg eyAyMSwgMjUsIC0xMiB9LCB7IDIzLCAyNiwgLTEyIH0sDQo+KwkJeyAyNiwgMjcsIC0xMiB9DQo+ KwkJfQ0KPisJfSwNCj4rfSwNCj4rew0KPisJLyogMTVCUFAvOEJQQyAqLw0KPisJeyAyNzMsIDE1 LCAyMDQ4LCAzLCAxMiwgMTEsIDExLCB7DQo+KwkJeyAwLCAwLCAxMCB9LCB7IDAsIDEsIDggfSwg eyAwLCAxLCA2IH0sIHsgMCwgMiwgNCB9LA0KPisJCXsgMSwgMiwgMiB9LCB7IDEsIDMsIDAgfSwg eyAxLCAzLCAtMiB9LCB7IDIsIDQsIC00IH0sDQo+KwkJeyAyLCA1LCAtNiB9LCB7IDMsIDUsIC04 IH0sIHsgNCwgNiwgLTEwIH0sIHsgNCwgNywgLTEwIH0sDQo+KwkJeyA1LCA3LCAtMTIgfSwgeyA3 LCA4LCAtMTIgfSwgeyA4LCA5LCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiAxNUJQUC8xMEJQ QyAqLw0KPisJeyAyNzMsIDE1LCAyMDQ4LCA3LCAxNiwgMTUsIDE1LCB7DQo+KwkJeyAwLCAyLCAx MCB9LCB7IDIsIDUsIDggfSwgeyAzLCA1LCA2IH0sIHsgNCwgNiwgNCB9LA0KPisJCXsgNSwgNiwg MiB9LCB7IDUsIDcsIDAgfSwgeyA1LCA3LCAtMiB9LCB7IDYsIDgsIC00IH0sDQo+KwkJeyA2LCA5 LCAtNiB9LCB7IDcsIDksIC04IH0sIHsgOCwgMTAsIC0xMCB9LCB7IDgsIDExLCAtMTAgfSwNCj4r CQl7IDksIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEyLCAxMywgLTEyIH0NCj4rCQl9 DQo+Kwl9LA0KPisJLyogMTVCUFAvMTJCUEMgKi8NCj4rCXsgMjczLCAxNSwgMjA0OCwgMTEsIDIw LCAxOSwgMTksIHsNCj4rCQl7IDAsIDQsIDEwIH0sIHsgMiwgNywgOCB9LCB7IDQsIDksIDYgfSwg eyA2LCAxMSwgNCB9LA0KPisJCXsgOSwgMTEsIDIgfSwgeyA5LCAxMSwgMCB9LCB7IDksIDEyLCAt MiB9LCB7IDEwLCAxMiwgLTQgfSwNCj4rCQl7IDExLCAxMywgLTYgfSwgeyAxMSwgMTMsIC04IH0s IHsgMTIsIDE0LCAtMTAgfSwNCj4rCQl7IDEzLCAxNSwgLTEwIH0sIHsgMTMsIDE1LCAtMTIgfSwg eyAxNSwgMTYsIC0xMiB9LA0KPisJCXsgMTYsIDE3LCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+Kwkv KiAxNUJQUC8xNEJQQyAqLw0KPisJeyAyNzMsIDE1LCAyMDQ4LCAxNSwgMjQsIDIzLCAyMywgew0K PisJCXsgMCwgNCwgMTAgfSwgeyAzLCA4LCA4IH0sIHsgNiwgMTEsIDYgfSwgeyA5LCAxNCwgNCB9 LA0KPisJCXsgMTMsIDE1LCAyIH0sIHsgMTMsIDE1LCAwIH0sIHsgMTMsIDE2LCAtMiB9LCB7IDE0 LCAxNiwgLTQgfSwNCj4rCQl7IDE1LCAxNywgLTYgfSwgeyAxNSwgMTcsIC04IH0sIHsgMTYsIDE4 LCAtMTAgfSwNCj4rCQl7IDE3LCAxOSwgLTEwIH0sIHsgMTcsIDE5LCAtMTIgfSwgeyAxOSwgMjAs IC0xMiB9LA0KPisJCXsgMjAsIDIxLCAtMTIgfQ0KPisJCX0NCj4rCX0sDQo+KwkvKiAxNUJQUC8x NkJQQyAqLw0KPisJeyAyNzMsIDE1LCAyMDQ4LCAxOSwgMjgsIDI3LCAyNywgew0KPisJCXsgMCwg NCwgMTAgfSwgeyA0LCA5LCA4IH0sIHsgOCwgMTMsIDYgfSwgeyAxMiwgMTcsIDQgfSwNCj4rCQl7 IDE3LCAxOSwgMiB9LCB7IDE3LCAyMCwgMCB9LCB7IDE3LCAyMCwgLTIgfSwgeyAxOCwgMjAsIC00 IH0sDQo+KwkJeyAxOSwgMjEsIC02IH0sIHsgMTksIDIxLCAtOCB9LCB7IDIwLCAyMiwgLTEwIH0s DQo+KwkJeyAyMSwgMjMsIC0xMCB9LCB7IDIxLCAyMywgLTEyIH0sIHsgMjMsIDI0LCAtMTIgfSwN Cj4rCQl7IDI0LCAyNSwgLTEyIH0NCj4rCQl9DQo+Kwl9DQo+K30NCj4rfTsNCj4rDQo+K3N0YXRp YyBpbnQgZ2V0X3Jvd19pbmRleF9mb3JfcmNfcGFyYW1zKHUxNiBjb21wcmVzc2VkX2JwcCkgew0K PisJc3dpdGNoIChjb21wcmVzc2VkX2JwcCkgew0KPisJY2FzZSA2Og0KPisJCXJldHVybiBST1df SU5ERVhfNkJQUDsNCj4rCWNhc2UgODoNCj4rCQlyZXR1cm4gUk9XX0lOREVYXzhCUFA7DQo+Kwlj YXNlIDEwOg0KPisJCXJldHVybiBST1dfSU5ERVhfMTBCUFA7DQo+KwljYXNlIDEyOg0KPisJCXJl dHVybiBST1dfSU5ERVhfMTJCUFA7DQo+KwljYXNlIDE1Og0KPisJCXJldHVybiBST1dfSU5ERVhf MTVCUFA7DQo+KwlkZWZhdWx0Og0KPisJCXJldHVybiAtRUlOVkFMOw0KPisJfQ0KPit9DQo+Kw0K PitzdGF0aWMgaW50IGdldF9jb2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh1OCBiaXRzX3Blcl9j b21wb25lbnQpIHsNCj4rCXN3aXRjaCAoYml0c19wZXJfY29tcG9uZW50KSB7DQo+KwljYXNlIDg6 DQo+KwkJcmV0dXJuIENPTFVNTl9JTkRFWF84QlBDOw0KPisJY2FzZSAxMDoNCj4rCQlyZXR1cm4g Q09MVU1OX0lOREVYXzEwQlBDOw0KPisJY2FzZSAxMjoNCj4rCQlyZXR1cm4gQ09MVU1OX0lOREVY XzEyQlBDOw0KPisJY2FzZSAxNDoNCj4rCQlyZXR1cm4gQ09MVU1OX0lOREVYXzE0QlBDOw0KPisJ Y2FzZSAxNjoNCj4rCQlyZXR1cm4gQ09MVU1OX0lOREVYXzE2QlBDOw0KPisJZGVmYXVsdDoNCj4r CQlyZXR1cm4gLUVJTlZBTDsNCj4rCX0NCj4rfQ0KPisNCj4raW50IGludGVsX2RwX2NvbXB1dGVf ZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPisJCQkJCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykgew0KPisJc3RydWN0IGRybV9kc2NfY29uZmlnICp2 ZHNjX2NmZyA9ICZwaXBlX2NvbmZpZy0+ZHBfZHNjX2NmZzsNCj4rCXUxNiBjb21wcmVzc2VkX2Jw cCA9IHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwOw0KPisJdTggaSA9IDA7 DQo+Kwl1OCByb3dfaW5kZXggPSAwOw0KPisJdTggY29sdW1uX2luZGV4ID0gMDsNCj4rCXU4IGxp bmVfYnVmX2RlcHRoID0gMDsNCj4rDQo+Kwl2ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Ow0KPisJdmRzY19jZmctPnBpY19o ZWlnaHQgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7DQo+ Kwl2ZHNjX2NmZy0+c2xpY2Vfd2lkdGggPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnBpY193aWR0 aCwNCj4rCQkJCQkgICAgIHBpcGVfY29uZmlnLQ0KPj5kc2NfcGFyYW1zLnNsaWNlX2NvdW50KTsN Cj4rCS8qDQo+KwkgKiBTbGljZSBIZWlnaHQgb2YgOCB3b3JrcyBmb3IgYWxsIGN1cnJlbnRseSBh dmFpbGFibGUgcGFuZWxzLiBTbyBzdGFydA0KPisJICogd2l0aCB0aGF0IGlmIHBpY19oZWlnaHQg aXMgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgOC4NCj4rCSAqIEV2ZW50dWFsbHkgYWRkIGxvZ2lj IHRvIHRyeSBtdWx0aXBsZSBzbGljZSBoZWlnaHRzLg0KPisJICovDQo+KwlpZiAodmRzY19jZmct PnBpY19oZWlnaHQgJSA4ID09IDApDQo+KwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDg7DQo+ KwllbHNlIGlmICh2ZHNjX2NmZy0+cGljX2hlaWdodCAlIDQgPT0gMCkNCj4rCQl2ZHNjX2NmZy0+ c2xpY2VfaGVpZ2h0ID0gNDsNCj4rCWVsc2UNCj4rCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0ID0g MjsNCj4rDQo+KwkvKiBWYWx1ZXMgZmlsbGVkIGZyb20gRFNDIFNpbmsgRFBDRCAqLw0KPisJdmRz Y19jZmctPmRzY192ZXJzaW9uX21ham9yID0gKGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVW IC0NCj5EUF9EU0NfU1VQUE9SVF0gJg0KPisJCQkJICAgICAgIERQX0RTQ19NQUpPUl9NQVNLKSA+ Pg0KPkRQX0RTQ19NQUpPUl9TSElGVDsNCj4rCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9 IG1pbihEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOLA0KPisJCQkJCSAgKGludGVsX2RwLT5kc2Nf ZHBjZFtEUF9EU0NfUkVWIC0NCj5EUF9EU0NfU1VQUE9SVF0gJg0KPisJCQkJCSAgIERQX0RTQ19N SU5PUl9NQVNLKSA+Pg0KPkRQX0RTQ19NSU5PUl9TSElGVCk7DQo+Kw0KPisJdmRzY19jZmctPmNv bnZlcnRfcmdiID0gaW50ZWxfZHAtDQo+PmRzY19kcGNkW0RQX0RTQ19ERUNfQ09MT1JfRk9STUFU X0NBUCAtIERQX0RTQ19TVVBQT1JUXSAmDQo+KwkJRFBfRFNDX1JHQjsNCj4rDQo+KwlsaW5lX2J1 Zl9kZXB0aCA9IGRybV9kcF9kc2Nfc2lua19saW5lX2J1Zl9kZXB0aChpbnRlbF9kcC0+ZHNjX2Rw Y2QpOw0KPisJaWYgKHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA9PSAyKQ0KPisJCXZkc2Nf Y2ZnLT5saW5lX2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA9PQ0KPkRTQ18xXzJfTUFYX0xJ TkVCVUZfREVQVEhfQklUUykgPw0KPisJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX1ZBTCA6 IGxpbmVfYnVmX2RlcHRoOw0KU2hvdWxkbid0ICB0aGlzIGJlIGxpbmVfYnVmX2RlcHRoID49IERT Q18xXzJfTUFYX0xJTkVCVUZfREVQVEhfQklUUz8NCg0KPisJZWxzZQ0KPisJCXZkc2NfY2ZnLT5s aW5lX2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA+DQoJCQkJCQlMaW5lX2J1Zl9kZXB0aCA+ PSAgRFNDXzFfMV9NQVhfTElORUJVRl9ERVBUSF9CSVRTPz8NCg0KQW51c2hhIA0KPkRTQ18xXzFf TUFYX0xJTkVCVUZfREVQVEhfQklUUykgPw0KPisJCQlEU0NfMV8xX01BWF9MSU5FQlVGX0RFUFRI X0JJVFMgOiBsaW5lX2J1Zl9kZXB0aDsNCj4rDQo+KwkvKiBHZW4gMTEgZG9lcyBub3Qgc3VwcG9y dCBZQ2JDciAqLw0KPisJdmRzY19jZmctPmVuYWJsZTQyMiA9IGZhbHNlOw0KPisJLyogR2VuIDEx IGRvZXMgbm90IHN1cHBvcnQgVkJSICovDQo+Kwl2ZHNjX2NmZy0+dmJyX2VuYWJsZSA9IGZhbHNl Ow0KPisJdmRzY19jZmctPmJsb2NrX3ByZWRfZW5hYmxlID0NCj4rCQkJaW50ZWxfZHAtDQo+PmRz Y19kcGNkW0RQX0RTQ19CTEtfUFJFRElDVElPTl9TVVBQT1JUIC0gRFBfRFNDX1NVUFBPUlRdICYN Cj4rCQlEUF9EU0NfQkxLX1BSRURJQ1RJT05fSVNfU1VQUE9SVEVEOw0KPisNCj4rCS8qIEdlbiAx MSBvbmx5IHN1cHBvcnRzIGludGVncmFsIHZhbHVlcyBvZiBicHAgKi8NCj4rCXZkc2NfY2ZnLT5i aXRzX3Blcl9waXhlbCA9IGNvbXByZXNzZWRfYnBwIDw8IDQ7DQo+Kwl2ZHNjX2NmZy0+Yml0c19w ZXJfY29tcG9uZW50ID0gcGlwZV9jb25maWctPnBpcGVfYnBwIC8gMzsNCj4rDQo+Kwlmb3IgKGkg PSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7DQo+KwkJLyoNCj4rCQkgKiBz aXggMHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBsc2Igb2YgZWFjaCB0aHJlc2hvbGQgdmFsdWUNCj4r CQkgKiBpbnRlcm5hbGx5IGluIGgvdy4NCj4rCQkgKiBPbmx5IDggYml0cyBhcmUgYWxsb3dlZCBm b3IgcHJvZ3JhbW1pbmcgUmNCdWZUaHJlc2hvbGQNCj4rCQkgKi8NCj4rCQl2ZHNjX2NmZy0+cmNf YnVmX3RocmVzaFtpXSA9IHJjX2J1Zl90aHJlc2hbaV0gPj4gNjsNCj4rCX0NCj4rDQo+KwkvKg0K PisJICogRm9yIDZicHAsIFJDIEJ1ZmZlciB0aHJlc2hvbGQgMTIgYW5kIDEzIG5lZWQgYSBkaWZm ZXJlbnQgdmFsdWUNCj4rCSAqIGFzIHBlciBDIE1vZGVsDQo+KwkgKi8NCj4rCWlmIChjb21wcmVz c2VkX2JwcCA9PSA2KSB7DQo+KwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hbMTJdID0gMHg3QzsN Cj4rCQl2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFsxM10gPSAweDdEOw0KPisJfQ0KPisNCj4rCXJv d19pbmRleCA9IGdldF9yb3dfaW5kZXhfZm9yX3JjX3BhcmFtcyhjb21wcmVzc2VkX2JwcCk7DQo+ Kwljb2x1bW5faW5kZXggPQ0KPisJCWdldF9jb2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh2ZHNj X2NmZy0NCj4+Yml0c19wZXJfY29tcG9uZW50KTsNCj4rDQo+KwlpZiAocm93X2luZGV4IDwgMCB8 fCBjb2x1bW5faW5kZXggPCAwKQ0KPisJCXJldHVybiAtRUlOVkFMOw0KPisNCj4rCXZkc2NfY2Zn LT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQ0KPisJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVt bl9pbmRleF0uZmlyc3RfbGluZV9icGdfb2Zmc2V0Ow0KPisJdmRzY19jZmctPmluaXRpYWxfeG1p dF9kZWxheSA9DQo+KwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5pbml0aWFs X3htaXRfZGVsYXk7DQo+Kwl2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQgPQ0KPisJCXJjX3BhcmFt c1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uaW5pdGlhbF9vZmZzZXQ7DQo+Kwl2ZHNjX2NmZy0+ ZmxhdG5lc3NfbWluX3FwID0NCj4rCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhd LmZsYXRuZXNzX21pbl9xcDsNCj4rCXZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXAgPQ0KPisJCXJj X3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmxhdG5lc3NfbWF4X3FwOw0KPisJdmRz Y19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwID0NCj4rCQlyY19wYXJhbXNbcm93X2luZGV4XVtj b2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3JfbGltaXQwOw0KPisJdmRzY19jZmctPnJjX3F1YW50 X2luY3JfbGltaXQxID0NCj4rCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJj X3F1YW50X2luY3JfbGltaXQxOw0KPisNCj4rCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9S QU5HRVM7IGkrKykNCj4rCQl2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldID0NCj4rDQo+CXJj X3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFuZ2VfcGFyYW1zW2ldOw0KPisN Cj4rCS8qDQo+KwkgKiBCaXRzUGVyQ29tcG9uZW50IHZhbHVlIGRldGVybWluZXMgbXV4X3dvcmRf c2l6ZToNCj4rCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBpcyAxMmJwYywgbXV4V29yZFNpemUg d2lsbCBiZSBlcXVhbCB0byA2NA0KPmJpdHMNCj4rCSAqIFdoZW4gQml0c1BlckNvbXBvbmVudCBp cyA4IG9yIDEwYnBjLCBtdXhXb3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvDQo+KwkgKiA0OCBiaXRz DQo+KwkgKi8NCj4rCWlmICh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDggfHwNCj4r CSAgICB2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDEwKQ0KPisJCXZkc2NfY2ZnLT5t dXhfd29yZF9zaXplID0gRFNDX01VWF9XT1JEX1NJWkVfOF8xMF9CUEM7DQo+KwllbHNlIGlmICh2 ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDEyKQ0KPisJCXZkc2NfY2ZnLT5tdXhfd29y ZF9zaXplID0gRFNDX01VWF9XT1JEX1NJWkVfMTJfQlBDOw0KPisNCj4rCS8qIEluaXRpYWxTY2Fs ZVZhbHVlIGlzIGEgNiBiaXQgdmFsdWUgd2l0aCAzIGZyYWN0aW9uYWwgYml0cyAoVTMuMykgKi8N Cj4rCXZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlID0gKHZkc2NfY2ZnLT5yY19tb2RlbF9z aXplIDw8IDMpIC8NCj4rCQkodmRzY19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+aW5p dGlhbF9vZmZzZXQpOw0KPisNCj4rCXJldHVybiAwOw0KPit9DQo+ZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCBpbmRl eA0KPjBjZjI0MDcuLmYxNzg5MzMgMTAwNjQ0DQo+LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hl bHBlci5oDQo+KysrIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oDQo+QEAgLTE4Niw2ICsx ODYsOSBAQA0KPg0KPiAjZGVmaW5lIERQX0dVSUQJCQkJICAgIDB4MDMwICAgLyogMS4yICovDQo+ DQo+KyNkZWZpbmUgRFBfRFNDX1JDX1BJWEVMU19QRVJfR1JPVVAJCTMNCj4rI2RlZmluZSBEUF9E U0NfU0NBTEVfREVDUkVNRU5UX0lOVEVSVkFMX01BWAk0MDk1DQo+Kw0KPiAjZGVmaW5lIERQX0RT Q19TVVBQT1JUICAgICAgICAgICAgICAgICAgICAgIDB4MDYwICAgLyogRFAgMS40ICovDQo+ICMg ZGVmaW5lIERQX0RTQ19ERUNPTVBSRVNTSU9OX0lTX1NVUFBPUlRFRCAgKDEgPDwgMCkNCj4NCj5k aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RzYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2RzYy5o IGluZGV4DQo+NGNmY2QwMy4uNzk2Yzc5OCAxMDA2NDQNCj4tLS0gYS9pbmNsdWRlL2RybS9kcm1f ZHNjLmgNCj4rKysgYi9pbmNsdWRlL2RybS9kcm1fZHNjLmgNCj5AQCAtNjcsNyArNjcsNyBAQCBz dHJ1Y3QgZHNjX3JjX3JhbmdlX3BhcmFtZXRlcnMgew0KPiAJLyogTWF4IFF1YW50aXphdGlvbiBQ YXJhbWV0ZXJzIGFsbG93ZWQgZm9yIHRoaXMgcmFuZ2UgKi8NCj4gCXU4IHJhbmdlX21heF9xcDsN Cj4gCS8qIEJpdHMvZ3JvdXAgb2Zmc2V0IHRvIGFwcGx5IHRvIHRhcmdldCBmb3IgdGhpcyBncm91 cCAqLw0KPi0JdTggcmFuZ2VfYnBnX29mZnNldDsNCj4rCXM4IHJhbmdlX2JwZ19vZmZzZXQ7DQo+ IH07DQo+DQo+IHN0cnVjdCBkcm1fZHNjX2NvbmZpZyB7DQo+LS0NCj4yLjcuNA0KDQpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK