From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [MIPI SEQ PARSING v2 PATCH 03/11] drm/i915: Parsing VBT if size of VBT exceeds 6KB Date: Thu, 17 Sep 2015 15:10:55 +0300 Message-ID: <87h9mttfe8.fsf@intel.com> References: <1441841070-11532-1-git-send-email-m.deepak@intel.com> <1441841070-11532-4-git-send-email-m.deepak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 775E06E645 for ; Thu, 17 Sep 2015 05:07:42 -0700 (PDT) In-Reply-To: <1441841070-11532-4-git-send-email-m.deepak@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 Cc: Deepak M List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxMCBTZXAgMjAxNSwgRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4gd3JvdGU6 Cj4gQ3VycmVudGx5IHRoZSBpb21hcCBmb3IgVkJUIHdvcmtzIG9ubHkgaWYgdGhlIHNpemUgb2Yg dGhlCj4gVkJUIGlzIGxlc3MgdGhhbiA2S0IsIGJ1dCBpZiB0aGUgc2l6ZSBvZiB0aGUgVkJUIGV4 Y2VlZHMKPiA2S0IgdGhhbiB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQgdGhlIHNpemUgb2YgdGhl IFZCVCB0bwo+IGJlIGlvbWFwcGVkIGlzIHNwZWNpZmllZCBpbiB0aGUgbWFpbGJveDMgYW5kIGlz IGlvbWFwcGVkCj4gYWNjb3JkaW5nbHkuCj4KPiB2MjogLSBNb3ZpbmcgdGhlIHZhbGlkYXRlX3Zi dCB0byBvcHJlZ2lvbiBmaWxlIChKYW5pKQo+ICAgICAtIEZpeCB0aGUgaTkxNV9vcHJlZ2lvbigp IGluIGRlYnVnZnMgKEphbmkpCj4KPiBTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgTSA8bS5kZWVwYWtA aW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg IHwgICAyNCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAg IDQgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgICAgIHwgICA0OSArLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyB8ICAyNzkgKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X29wcmVnaW9uLmggfCAgMjMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA1IGZpbGVz IGNoYW5nZWQsIDMyOSBpbnNlcnRpb25zKCspLCAyNTcgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5oCj4KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDQxNjI5ZmEuLjU1MzRhYTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNiw2ICsyNiw4IEBACj4gICAq Cj4gICAqLwo+ICAKPiArI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KPiArI2luY2x1ZGUgPGFjcGkv dmlkZW8uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+Cj4gICNpbmNsdWRlIDxsaW51 eC9jaXJjX2J1Zi5oPgo+ICAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KPiBAQCAtMzksNiArNDEs NyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgo+ICAjaW5jbHVkZSA8ZHJtL2k5 MTVfZHJtLmg+Cj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfb3By ZWdpb24uaCIKPiAgCj4gIGVudW0gewo+ICAJQUNUSVZFX0xJU1QsCj4gQEAgLTE4MzIsNyArMTgz NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9vcHJlZ2lvbihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KnVudXNlZCkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ZGV2Owo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgCXN0cnVjdCBpbnRlbF9vcHJlZ2lvbiAqb3ByZWdpb24gPSAmZGV2X3ByaXYtPm9wcmVnaW9u Owo+IC0Jdm9pZCAqZGF0YSA9IGttYWxsb2MoT1BSRUdJT05fU0laRSwgR0ZQX0tFUk5FTCk7Cj4g Kwl2b2lkICpkYXRhID0ga21hbGxvYyhPUFJFR0lPTl9WQlRfT0ZGU0VULCBHRlBfS0VSTkVMKTsK PiAgCWludCByZXQ7Cj4gIAo+ICAJaWYgKGRhdGEgPT0gTlVMTCkKPiBAQCAtMTg0MywxMiArMTg0 NiwyNSBAQCBzdGF0aWMgaW50IGk5MTVfb3ByZWdpb24oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4gIAkJZ290byBvdXQ7Cj4gIAo+ICAJaWYgKG9wcmVnaW9uLT5oZWFkZXIpIHsK PiAtCQltZW1jcHlfZnJvbWlvKGRhdGEsIG9wcmVnaW9uLT5oZWFkZXIsIE9QUkVHSU9OX1NJWkUp Owo+IC0JCXNlcV93cml0ZShtLCBkYXRhLCBPUFJFR0lPTl9TSVpFKTsKPiArCQltZW1jcHlfZnJv bWlvKGRhdGEsIG9wcmVnaW9uLT5oZWFkZXIsIE9QUkVHSU9OX1ZCVF9PRkZTRVQpOwo+ICsJCXNl cV93cml0ZShtLCBkYXRhLCBPUFJFR0lPTl9WQlRfT0ZGU0VUKTsKPiArCQlrZnJlZShkYXRhKTsK PiArCQlpZiAob3ByZWdpb24tPmFzbGUtPnJ2ZGEpIHsKPiArCQkJZGF0YSA9IGttYWxsb2Mob3By ZWdpb24tPmFzbGUtPnJ2ZHMsIEdGUF9LRVJORUwpOwo+ICsJCQltZW1jcHlfZnJvbWlvKGRhdGEs Cj4gKwkJCQkoY29uc3Qgdm9pZCBfX2lvbWVtICopIG9wcmVnaW9uLT5hc2xlLT5ydmRhLAo+ICsJ CQkJb3ByZWdpb24tPmFzbGUtPnJ2ZHMpOwo+ICsJCQlzZXFfd3JpdGUobSwgZGF0YSwgb3ByZWdp b24tPmFzbGUtPnJ2ZHMpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWRhdGEgPSBrbWFsbG9jKE9QUkVH SU9OX1NJWkUgLSBPUFJFR0lPTl9WQlRfT0ZGU0VULAo+ICsJCQkJCUdGUF9LRVJORUwpOwo+ICsJ CQltZW1jcHlfZnJvbWlvKGRhdGEsIG9wcmVnaW9uLT52YnQsCj4gKwkJCQkJT1BSRUdJT05fU0la RSAtIE9QUkVHSU9OX1ZCVF9PRkZTRVQpOwo+ICsJCQlzZXFfd3JpdGUobSwgZGF0YSwgT1BSRUdJ T05fU0laRSAtIE9QUkVHSU9OX1ZCVF9PRkZTRVQpOwo+ICsJCX0KCklmIHJ2ZGEgIT0gMCwgdGhp cyBkZWJ1Z2ZzIGZpbGUgbm8gbG9uZ2VyIHJlcHJlc2VudHMgdGhlIG9wcmVnaW9uCmNvbnRlbnRz LiBNYWlsYm94ZXMgIzQgYW5kICM1IGFyZSBkcm9wcGVkIGZyb20gdGhlIG91dHB1dC4gQlRXLCB3 aGF0IGlzCm1haWxib3ggIzQgZXhwZWN0ZWQgdG8gY29udGFpbiB3aGVuIHJ2ZGEgIT0gMD8gKEkg c3RpbGwgZG9uJ3QgaGF2ZQphY2Nlc3MgdG8gdGhlIGxhdGVzdCBvcHJlZ2lvbiBzcGVjIHZlcnNp b24sIHNvIGNhbid0IGNoZWNrIHdoYXQgaXQKYWN0dWFsbHkgc2F5cy4pCgpJIGFtIGJlZ2lubmlu ZyB0byB0aGluayB3ZSBzaG91bGQgbGVhdmUgImk5MTVfb3ByZWdpb24iIGRlYnVnZnMgZmlsZQpp bnRhY3QsIGFuZCBhZGQgYSBuZXcgImk5MTVfdmJ0IiBmaWxlIHRoYXQgY29udGFpbnMgZWl0aGVy IG1haWxib3ggIzQgb3IKdGhlIGRhdGEgaW4gcnZkYS4gVGhpcyBtaWdodCBiZSBhIGNsZWFuZXIg YXBwcm9hY2guCgpTZWUgbXkgY29tbWVudHMgYmVsb3csIGFuZCB5b3UnbGwgc2VlIGhvdyB0aGlz IHdvdWxkIGJlIGZlYXNpYmxlLgoKPiAgCX0KPiAgCj4gIAltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAtCj4gIG91dDoKPiAgCWtmcmVlKGRhdGEpOwo+ICAJcmV0dXJuIDA7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMTI4NzAwNy4uNTA3ZDU3YSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNzgwLDYgKzE3ODAsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7Cj4gIAlzdHJ1Y3QgaTkxNV9ob3RwbHVnIGhvdHBsdWc7Cj4gIAlzdHJ1Y3Qg aTkxNV9mYmMgZmJjOwo+ICAJc3RydWN0IGk5MTVfZHJycyBkcnJzOwo+ICsJY29uc3Qgc3RydWN0 IGJkYl9oZWFkZXIgKmJkYl9zdGFydDsKCldoYXQgaXMgd3Jvbmcgd2l0aCB1c2luZyBkZXZfcHJp di0+b3ByZWdpb24udmJ0IGZvciB0aGlzPwoKPiAgCXN0cnVjdCBpbnRlbF9vcHJlZ2lvbiBvcHJl Z2lvbjsKPiAgCXN0cnVjdCBpbnRlbF92YnRfZGF0YSB2YnQ7Cj4gIAo+IEBAIC0zMzA2LDYgKzMz MDcsOSBAQCBpbnRlbF9vcHJlZ2lvbl9ub3RpZnlfYWRhcHRlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBwY2lfcG93ZXJfdCBzdGF0ZSkKPiAgfQo+ICAjZW5kaWYKPiAgCj4gK2NvbnN0IHN0cnVj dCBiZGJfaGVhZGVyICp2YWxpZGF0ZV92YnQoY29uc3Qgdm9pZCBfX2lvbWVtICpfdmJ0LAo+ICsJ CQlzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqc291cmNlKTsKPiArCj4gIC8qIGludGVsX2FjcGku YyAqLwo+ICAjaWZkZWYgQ09ORklHX0FDUEkKPiAgZXh0ZXJuIHZvaWQgaW50ZWxfcmVnaXN0ZXJf ZHNtX2hhbmRsZXIodm9pZCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Jpb3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IGluZGV4IDBi ZjA5NDIuLjE5MzJhODYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Ymlvcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4gQEAgLTEy MjcsNDkgKzEyMjcsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgaW50ZWxf bm9fb3ByZWdpb25fdmJ0W10gPSB7Cj4gIAl7IH0KPiAgfTsKPiAgCj4gLXN0YXRpYyBjb25zdCBz dHJ1Y3QgYmRiX2hlYWRlciAqdmFsaWRhdGVfdmJ0KGNvbnN0IHZvaWQgX19pb21lbSAqX2Jhc2Us Cj4gLQkJCQkJICAgICBzaXplX3Qgc2l6ZSwKPiAtCQkJCQkgICAgIGNvbnN0IHZvaWQgX19pb21l bSAqX3ZidCwKPiAtCQkJCQkgICAgIGNvbnN0IGNoYXIgKnNvdXJjZSkKPiAtewo+IC0JLyoKPiAt CSAqIFRoaXMgaXMgdGhlIG9uZSBwbGFjZSB3aGVyZSB3ZSBleHBsaWNpdGx5IGRpc2NhcmQgdGhl IGFkZHJlc3Mgc3BhY2UKPiAtCSAqIChfX2lvbWVtKSBvZiB0aGUgQklPUy9WQlQuIChBbmQgdGhp cyB3aWxsIGNhdXNlIGEgc3BhcnNlIGNvbXBsYWludC4pCj4gLQkgKiBGcm9tIG5vdyBvbiBldmVy eXRoaW5nIGlzIGJhc2VkIG9uICdiYXNlJywgYW5kIHRyZWF0ZWQgYXMgcmVndWxhcgo+IC0JICog bWVtb3J5Lgo+IC0JICovCj4gLQljb25zdCB2b2lkICpiYXNlID0gKGNvbnN0IHZvaWQgKikgX2Jh c2U7Cj4gLQlzaXplX3Qgb2Zmc2V0ID0gX3ZidCAtIF9iYXNlOwo+IC0JY29uc3Qgc3RydWN0IHZi dF9oZWFkZXIgKnZidCA9IGJhc2UgKyBvZmZzZXQ7Cj4gLQljb25zdCBzdHJ1Y3QgYmRiX2hlYWRl ciAqYmRiOwo+IC0KPiAtCWlmIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHZidF9oZWFkZXIpID4g c2l6ZSkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIlZCVCBoZWFkZXIgaW5jb21wbGV0ZVxuIik7 Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4gLQo+IC0JaWYgKG1lbWNtcCh2YnQtPnNpZ25hdHVy ZSwgIiRWQlQiLCA0KSkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIlZCVCBpbnZhbGlkIHNpZ25h dHVyZVxuIik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4gLQo+IC0Jb2Zmc2V0ICs9IHZidC0+ YmRiX29mZnNldDsKPiAtCWlmIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IGJkYl9oZWFkZXIpID4g c2l6ZSkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIkJEQiBoZWFkZXIgaW5jb21wbGV0ZVxuIik7 Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4gLQo+IC0JYmRiID0gYmFzZSArIG9mZnNldDsKPiAt CWlmIChvZmZzZXQgKyBiZGItPmJkYl9zaXplID4gc2l6ZSkgewo+IC0JCURSTV9ERUJVR19EUklW RVIoIkJEQiBpbmNvbXBsZXRlXG4iKTsKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCX0KPiAtCj4gLQlE Uk1fREVCVUdfS01TKCJVc2luZyBWQlQgZnJvbSAlczogJTIwc1xuIiwKPiAtCQkgICAgICBzb3Vy Y2UsIHZidC0+c2lnbmF0dXJlKTsKPiAtCXJldHVybiBiZGI7Cj4gLX0KPiAtCgpNb3Zpbmcgb2Yg dGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgYSBzZXBhcmF0ZSBwcmVwIHBhdGNoLgoKPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpmaW5kX3ZidCh2b2lkIF9faW9tZW0gKmJpb3MsIHNp emVfdCBzaXplKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiID0gTlVMTDsK PiBAQCAtMTI3OCw3ICsxMjM1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpm aW5kX3ZidCh2b2lkIF9faW9tZW0gKmJpb3MsIHNpemVfdCBzaXplKQo+ICAJLyogU2NvdXIgbWVt b3J5IGxvb2tpbmcgZm9yIHRoZSBWQlQgc2lnbmF0dXJlLiAqLwo+ICAJZm9yIChpID0gMDsgaSAr IDQgPCBzaXplOyBpKyspIHsKPiAgCQlpZiAoaW9yZWFkMzIoYmlvcyArIGkpID09ICooKGNvbnN0 IHUzMiAqKSAiJFZCVCIpKSB7Cj4gLQkJCWJkYiA9IHZhbGlkYXRlX3ZidChiaW9zLCBzaXplLCBi aW9zICsgaSwgIlBDSSBST00iKTsKPiArCQkJYmRiID0gdmFsaWRhdGVfdmJ0KGJpb3MgKyBpLCBz aXplIC0gaSwgIlBDSSBST00iKTsKPiAgCQkJYnJlYWs7Cj4gIAkJfQo+ICAJfQo+IEBAIC0xMzA4 LDEwICsxMjY1LDggQEAgaW50ZWxfcGFyc2VfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAKPiAgCWluaXRfdmJ0X2RlZmF1bHRzKGRldl9wcml2KTsKPiAgCj4gLQkvKiBYWFggU2hvdWxk IHRoaXMgdmFsaWRhdGlvbiBiZSBtb3ZlZCB0byBpbnRlbF9vcHJlZ2lvbi5jPyAqLwo+ICAJaWYg KCFkbWlfY2hlY2tfc3lzdGVtKGludGVsX25vX29wcmVnaW9uX3ZidCkgJiYgZGV2X3ByaXYtPm9w cmVnaW9uLnZidCkKPiAtCQliZGIgPSB2YWxpZGF0ZV92YnQoZGV2X3ByaXYtPm9wcmVnaW9uLmhl YWRlciwgT1BSRUdJT05fU0laRSwKPiAtCQkJCSAgIGRldl9wcml2LT5vcHJlZ2lvbi52YnQsICJP cFJlZ2lvbiIpOwo+ICsJCWJkYiA9IGRldl9wcml2LT5iZGJfc3RhcnQ7CgpUaGlzIHNob3VsZCBi ZSBkZXZfcHJpdi0+b3ByZWdpb24udmJ0LgoKPiAgCj4gIAlpZiAoYmRiID09IE5VTEwpIHsKPiAg CQlzaXplX3Qgc2l6ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ByZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiBpbmRl eCBmNDYyMzFmLi4zYTQzZGI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX29wcmVnaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lv bi5jCj4gQEAgLTMyLDIxMCArMzIsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4g ICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gLQo+IC0j ZGVmaW5lIFBDSV9BU0xFCQkweGU0Cj4gLSNkZWZpbmUgUENJX0FTTFMJCTB4ZmMKPiAtI2RlZmlu ZSBQQ0lfU1dTQ0kJCTB4ZTgKPiAtI2RlZmluZSBQQ0lfU1dTQ0lfU0NJU0VMCSgxIDw8IDE1KQo+ IC0jZGVmaW5lIFBDSV9TV1NDSV9HU1NDSUUJKDEgPDwgMCkKPiAtCj4gLSNkZWZpbmUgT1BSRUdJ T05fSEVBREVSX09GRlNFVCAwCj4gLSNkZWZpbmUgT1BSRUdJT05fQUNQSV9PRkZTRVQgICAweDEw MAo+IC0jZGVmaW5lICAgQUNQSV9DTElEIDB4MDFhYyAvKiBjdXJyZW50IGxpZCBzdGF0ZSBpbmRp Y2F0b3IgKi8KPiAtI2RlZmluZSAgIEFDUElfQ0RDSyAweDAxYjAgLyogY3VycmVudCBkb2NraW5n IHN0YXRlIGluZGljYXRvciAqLwo+IC0jZGVmaW5lIE9QUkVHSU9OX1NXU0NJX09GRlNFVCAgMHgy MDAKPiAtI2RlZmluZSBPUFJFR0lPTl9BU0xFX09GRlNFVCAgIDB4MzAwCj4gLSNkZWZpbmUgT1BS RUdJT05fVkJUX09GRlNFVCAgICAweDQwMAo+IC0KPiAtI2RlZmluZSBPUFJFR0lPTl9TSUdOQVRV UkUgIkludGVsR3JhcGhpY3NNZW0iCj4gLSNkZWZpbmUgTUJPWF9BQ1BJICAgICAgKDE8PDApCj4g LSNkZWZpbmUgTUJPWF9TV1NDSSAgICAgKDE8PDEpCj4gLSNkZWZpbmUgTUJPWF9BU0xFICAgICAg KDE8PDIpCj4gLSNkZWZpbmUgTUJPWF9BU0xFX0VYVCAgKDE8PDQpCj4gLQo+IC1zdHJ1Y3Qgb3By ZWdpb25faGVhZGVyIHsKPiAtCXU4IHNpZ25hdHVyZVsxNl07Cj4gLQl1MzIgc2l6ZTsKPiAtCXUz MiBvcHJlZ2lvbl92ZXI7Cj4gLQl1OCBiaW9zX3ZlclszMl07Cj4gLQl1OCB2Ymlvc192ZXJbMTZd Owo+IC0JdTggZHJpdmVyX3ZlclsxNl07Cj4gLQl1MzIgbWJveGVzOwo+IC0JdTMyIGRyaXZlcl9t b2RlbDsKPiAtCXUzMiBwY29uOwo+IC0JdTggZHZlclszMl07Cj4gLQl1OCByc3ZkWzEyNF07Cj4g LX0gX19wYWNrZWQ7Cj4gLQo+IC0vKiBPcFJlZ2lvbiBtYWlsYm94ICMxOiBwdWJsaWMgQUNQSSBt ZXRob2RzICovCj4gLXN0cnVjdCBvcHJlZ2lvbl9hY3BpIHsKPiAtCXUzMiBkcmR5OyAgICAgICAv KiBkcml2ZXIgcmVhZGluZXNzICovCj4gLQl1MzIgY3N0czsgICAgICAgLyogbm90aWZpY2F0aW9u IHN0YXR1cyAqLwo+IC0JdTMyIGNldnQ7ICAgICAgIC8qIGN1cnJlbnQgZXZlbnQgKi8KPiAtCXU4 IHJzdmQxWzIwXTsKPiAtCXUzMiBkaWRsWzhdOyAgICAvKiBzdXBwb3J0ZWQgZGlzcGxheSBkZXZp Y2VzIElEIGxpc3QgKi8KPiAtCXUzMiBjcGRsWzhdOyAgICAvKiBjdXJyZW50bHkgcHJlc2VudGVk IGRpc3BsYXkgbGlzdCAqLwo+IC0JdTMyIGNhZGxbOF07ICAgIC8qIGN1cnJlbnRseSBhY3RpdmUg ZGlzcGxheSBsaXN0ICovCj4gLQl1MzIgbmFkbFs4XTsgICAgLyogbmV4dCBhY3RpdmUgZGV2aWNl cyBsaXN0ICovCj4gLQl1MzIgYXNscDsgICAgICAgLyogQVNMIHNsZWVwIHRpbWUtb3V0ICovCj4g LQl1MzIgdGlkeDsgICAgICAgLyogdG9nZ2xlIHRhYmxlIGluZGV4ICovCj4gLQl1MzIgY2hwZDsg ICAgICAgLyogY3VycmVudCBob3RwbHVnIGVuYWJsZSBpbmRpY2F0b3IgKi8KPiAtCXUzMiBjbGlk OyAgICAgICAvKiBjdXJyZW50IGxpZCBzdGF0ZSovCj4gLQl1MzIgY2RjazsgICAgICAgLyogY3Vy cmVudCBkb2NraW5nIHN0YXRlICovCj4gLQl1MzIgc3hzdzsgICAgICAgLyogU3ggc3RhdGUgcmVz dW1lICovCj4gLQl1MzIgZXZ0czsgICAgICAgLyogQVNMIHN1cHBvcnRlZCBldmVudHMgKi8KPiAt CXUzMiBjbm90OyAgICAgICAvKiBjdXJyZW50IE9TIG5vdGlmaWNhdGlvbiAqLwo+IC0JdTMyIG5y ZHk7ICAgICAgIC8qIGRyaXZlciBzdGF0dXMgKi8KPiAtCXUzMiBkaWQyWzddOwkvKiBleHRlbmRl ZCBzdXBwb3J0ZWQgZGlzcGxheSBkZXZpY2VzIElEIGxpc3QgKi8KPiAtCXUzMiBjcGQyWzddOwkv KiBleHRlbmRlZCBhdHRhY2hlZCBkaXNwbGF5IGRldmljZXMgbGlzdCAqLwo+IC0JdTggcnN2ZDJb NF07Cj4gLX0gX19wYWNrZWQ7Cj4gLQo+IC0vKiBPcFJlZ2lvbiBtYWlsYm94ICMyOiBTV1NDSSAq Lwo+IC1zdHJ1Y3Qgb3ByZWdpb25fc3dzY2kgewo+IC0JdTMyIHNjaWM7ICAgICAgIC8qIFNXU0NJ IGNvbW1hbmR8c3RhdHVzfGRhdGEgKi8KPiAtCXUzMiBwYXJtOyAgICAgICAvKiBjb21tYW5kIHBh cmFtZXRlcnMgKi8KPiAtCXUzMiBkc2xwOyAgICAgICAvKiBkcml2ZXIgc2xlZXAgdGltZS1vdXQg Ki8KPiAtCXU4IHJzdmRbMjQ0XTsKPiAtfSBfX3BhY2tlZDsKPiAtCj4gLS8qIE9wUmVnaW9uIG1h aWxib3ggIzM6IEFTTEUgKi8KPiAtc3RydWN0IG9wcmVnaW9uX2FzbGUgewo+IC0JdTMyIGFyZHk7 ICAgICAgIC8qIGRyaXZlciByZWFkaW5lc3MgKi8KPiAtCXUzMiBhc2xjOyAgICAgICAvKiBBU0xF IGludGVycnVwdCBjb21tYW5kICovCj4gLQl1MzIgdGNoZTsgICAgICAgLyogdGVjaG5vbG9neSBl bmFibGVkIGluZGljYXRvciAqLwo+IC0JdTMyIGFsc2k7ICAgICAgIC8qIGN1cnJlbnQgQUxTIGls bHVtaW5hbmNlIHJlYWRpbmcgKi8KPiAtCXUzMiBiY2xwOyAgICAgICAvKiBiYWNrbGlnaHQgYnJp Z2h0bmVzcyB0byBzZXQgKi8KPiAtCXUzMiBwZml0OyAgICAgICAvKiBwYW5lbCBmaXR0aW5nIHN0 YXRlICovCj4gLQl1MzIgY2JsdjsgICAgICAgLyogY3VycmVudCBicmlnaHRuZXNzIGxldmVsICov Cj4gLQl1MTYgYmNsbVsyMF07ICAgLyogYmFja2xpZ2h0IGxldmVsIGR1dHkgY3ljbGUgbWFwcGlu ZyB0YWJsZSAqLwo+IC0JdTMyIGNwZm07ICAgICAgIC8qIGN1cnJlbnQgcGFuZWwgZml0dGluZyBt b2RlICovCj4gLQl1MzIgZXBmbTsgICAgICAgLyogZW5hYmxlZCBwYW5lbCBmaXR0aW5nIG1vZGVz ICovCj4gLQl1OCBwbHV0Wzc0XTsgICAgLyogcGFuZWwgTFVUIGFuZCBpZGVudGlmaWVyICovCj4g LQl1MzIgcGZtYjsgICAgICAgLyogUFdNIGZyZXEgYW5kIG1pbiBicmlnaHRuZXNzICovCj4gLQl1 MzIgY2RkdjsgICAgICAgLyogY29sb3IgY29ycmVjdGlvbiBkZWZhdWx0IHZhbHVlcyAqLwo+IC0J dTMyIHBjZnQ7ICAgICAgIC8qIHBvd2VyIGNvbnNlcnZhdGlvbiBmZWF0dXJlcyAqLwo+IC0JdTMy IHNyb3Q7ICAgICAgIC8qIHN1cHBvcnRlZCByb3RhdGlvbiBhbmdsZXMgKi8KPiAtCXUzMiBpdWVy OyAgICAgICAvKiBJVUVSIGV2ZW50cyAqLwo+IC0JdTY0IGZkc3M7Cj4gLQl1MzIgZmRzcDsKPiAt CXUzMiBzdGF0Owo+IC0JdTY0IHJ2ZGE7CS8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgcmF3IHZidCBk YXRhICovCj4gLQl1MzIgcnZkczsJLyogU2l6ZSBvZiByYXcgdmJ0IGRhdGEgKi8KPiAtCXU4IHJz dmRbNThdOwo+IC19IF9fcGFja2VkOwo+IC0KPiAtLyogRHJpdmVyIHJlYWRpbmVzcyBpbmRpY2F0 b3IgKi8KPiAtI2RlZmluZSBBU0xFX0FSRFlfUkVBRFkJCSgxIDw8IDApCj4gLSNkZWZpbmUgQVNM RV9BUkRZX05PVF9SRUFEWQkoMCA8PCAwKQo+IC0KPiAtLyogQVNMRSBJbnRlcnJ1cHQgQ29tbWFu ZCAoQVNMQykgYml0cyAqLwo+IC0jZGVmaW5lIEFTTENfU0VUX0FMU19JTExVTQkJKDEgPDwgMCkK PiAtI2RlZmluZSBBU0xDX1NFVF9CQUNLTElHSFQJCSgxIDw8IDEpCj4gLSNkZWZpbmUgQVNMQ19T RVRfUEZJVAkJCSgxIDw8IDIpCj4gLSNkZWZpbmUgQVNMQ19TRVRfUFdNX0ZSRVEJCSgxIDw8IDMp Cj4gLSNkZWZpbmUgQVNMQ19TVVBQT1JURURfUk9UQVRJT05fQU5HTEVTCSgxIDw8IDQpCj4gLSNk ZWZpbmUgQVNMQ19CVVRUT05fQVJSQVkJCSgxIDw8IDUpCj4gLSNkZWZpbmUgQVNMQ19DT05WRVJU SUJMRV9JTkRJQ0FUT1IJKDEgPDwgNikKPiAtI2RlZmluZSBBU0xDX0RPQ0tJTkdfSU5ESUNBVE9S CQkoMSA8PCA3KQo+IC0jZGVmaW5lIEFTTENfSVNDVF9TVEFURV9DSEFOR0UJCSgxIDw8IDgpCj4g LSNkZWZpbmUgQVNMQ19SRVFfTVNLCQkJMHgxZmYKPiAtLyogcmVzcG9uc2UgYml0cyAqLwo+IC0j ZGVmaW5lIEFTTENfQUxTX0lMTFVNX0ZBSUxFRAkJKDEgPDwgMTApCj4gLSNkZWZpbmUgQVNMQ19C QUNLTElHSFRfRkFJTEVECQkoMSA8PCAxMikKPiAtI2RlZmluZSBBU0xDX1BGSVRfRkFJTEVECQko MSA8PCAxNCkKPiAtI2RlZmluZSBBU0xDX1BXTV9GUkVRX0ZBSUxFRAkJKDEgPDwgMTYpCj4gLSNk ZWZpbmUgQVNMQ19ST1RBVElPTl9BTkdMRVNfRkFJTEVECSgxIDw8IDE4KQo+IC0jZGVmaW5lIEFT TENfQlVUVE9OX0FSUkFZX0ZBSUxFRAkoMSA8PCAyMCkKPiAtI2RlZmluZSBBU0xDX0NPTlZFUlRJ QkxFX0ZBSUxFRAkJKDEgPDwgMjIpCj4gLSNkZWZpbmUgQVNMQ19ET0NLSU5HX0ZBSUxFRAkJKDEg PDwgMjQpCj4gLSNkZWZpbmUgQVNMQ19JU0NUX1NUQVRFX0ZBSUxFRAkJKDEgPDwgMjYpCj4gLQo+ IC0vKiBUZWNobm9sb2d5IGVuYWJsZWQgaW5kaWNhdG9yICovCj4gLSNkZWZpbmUgQVNMRV9UQ0hF X0FMU19FTgkoMSA8PCAwKQo+IC0jZGVmaW5lIEFTTEVfVENIRV9CTENfRU4JKDEgPDwgMSkKPiAt I2RlZmluZSBBU0xFX1RDSEVfUEZJVF9FTgkoMSA8PCAyKQo+IC0jZGVmaW5lIEFTTEVfVENIRV9Q Rk1CX0VOCSgxIDw8IDMpCj4gLQo+IC0vKiBBU0xFIGJhY2tsaWdodCBicmlnaHRuZXNzIHRvIHNl dCAqLwo+IC0jZGVmaW5lIEFTTEVfQkNMUF9WQUxJRCAgICAgICAgICAgICAgICAoMTw8MzEpCj4g LSNkZWZpbmUgQVNMRV9CQ0xQX01TSyAgICAgICAgICAofigxPDwzMSkpCj4gLQo+IC0vKiBBU0xF IHBhbmVsIGZpdHRpbmcgcmVxdWVzdCAqLwo+IC0jZGVmaW5lIEFTTEVfUEZJVF9WQUxJRCAgICAg ICAgICgxPDwzMSkKPiAtI2RlZmluZSBBU0xFX1BGSVRfQ0VOVEVSICgxPDwwKQo+IC0jZGVmaW5l IEFTTEVfUEZJVF9TVFJFVENIX1RFWFQgKDE8PDEpCj4gLSNkZWZpbmUgQVNMRV9QRklUX1NUUkVU Q0hfR0ZYICgxPDwyKQo+IC0KPiAtLyogUFdNIGZyZXF1ZW5jeSBhbmQgbWluaW11bSBicmlnaHRu ZXNzICovCj4gLSNkZWZpbmUgQVNMRV9QRk1CX0JSSUdIVE5FU1NfTUFTSyAoMHhmZikKPiAtI2Rl ZmluZSBBU0xFX1BGTUJfQlJJR0hUTkVTU19WQUxJRCAoMTw8OCkKPiAtI2RlZmluZSBBU0xFX1BG TUJfUFdNX01BU0sgKDB4N2ZmZmZlMDApCj4gLSNkZWZpbmUgQVNMRV9QRk1CX1BXTV9WQUxJRCAo MTw8MzEpCj4gLQo+IC0jZGVmaW5lIEFTTEVfQ0JMVl9WQUxJRCAgICAgICAgICgxPDwzMSkKPiAt Cj4gLS8qIElVRVIgKi8KPiAtI2RlZmluZSBBU0xFX0lVRVJfRE9DS0lORwkJKDEgPDwgNykKPiAt I2RlZmluZSBBU0xFX0lVRVJfQ09OVkVSVElCTEUJCSgxIDw8IDYpCj4gLSNkZWZpbmUgQVNMRV9J VUVSX1JPVEFUSU9OX0xPQ0tfQlROCSgxIDw8IDQpCj4gLSNkZWZpbmUgQVNMRV9JVUVSX1ZPTFVN RV9ET1dOX0JUTgkoMSA8PCAzKQo+IC0jZGVmaW5lIEFTTEVfSVVFUl9WT0xVTUVfVVBfQlROCQko MSA8PCAyKQo+IC0jZGVmaW5lIEFTTEVfSVVFUl9XSU5ET1dTX0JUTgkJKDEgPDwgMSkKPiAtI2Rl ZmluZSBBU0xFX0lVRVJfUE9XRVJfQlROCQkoMSA8PCAwKQo+IC0KPiAtLyogU29mdHdhcmUgU3lz dGVtIENvbnRyb2wgSW50ZXJydXB0IChTV1NDSSkgKi8KPiAtI2RlZmluZSBTV1NDSV9TQ0lDX0lO RElDQVRPUgkJKDEgPDwgMCkKPiAtI2RlZmluZSBTV1NDSV9TQ0lDX01BSU5fRlVOQ1RJT05fU0hJ RlQJMQo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfTUFJTl9GVU5DVElPTl9NQVNLCSgweGYgPDwgMSkK PiAtI2RlZmluZSBTV1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElGVAk4Cj4gLSNkZWZpbmUgU1dT Q0lfU0NJQ19TVUJfRlVOQ1RJT05fTUFTSwkoMHhmZiA8PCA4KQo+IC0jZGVmaW5lIFNXU0NJX1ND SUNfRVhJVF9QQVJBTUVURVJfU0hJRlQJOAo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJB TUVURVJfTUFTSwkoMHhmZiA8PCA4KQo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNf U0hJRlQJNQo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfTUFTSwkoNyA8PCA1KQo+ IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfU1VDQ0VTUwkxCj4gLQo+IC0jZGVmaW5l IFNXU0NJX0ZVTkNUSU9OX0NPREUobWFpbiwgc3ViKSBcCj4gLQkoKG1haW4pIDw8IFNXU0NJX1ND SUNfTUFJTl9GVU5DVElPTl9TSElGVCB8IFwKPiAtCSAoc3ViKSA8PCBTV1NDSV9TQ0lDX1NVQl9G VU5DVElPTl9TSElGVCkKPiAtCj4gLS8qIFNXU0NJOiBHZXQgQklPUyBEYXRhIChHQkRBKSAqLwo+ IC0jZGVmaW5lIFNXU0NJX0dCREEJCQk0Cj4gLSNkZWZpbmUgU1dTQ0lfR0JEQV9TVVBQT1JURURf Q0FMTFMJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9HQkRBLCAwKQo+IC0jZGVmaW5lIFNXU0NJ X0dCREFfUkVRVUVTVEVEX0NBTExCQUNLUwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEs IDEpCj4gLSNkZWZpbmUgU1dTQ0lfR0JEQV9CT09UX0RJU1BMQVlfUFJFRglTV1NDSV9GVU5DVElP Tl9DT0RFKFNXU0NJX0dCREEsIDQpCj4gLSNkZWZpbmUgU1dTQ0lfR0JEQV9QQU5FTF9ERVRBSUxT CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwgNSkKPiAtI2RlZmluZSBTV1NDSV9HQkRB X1RWX1NUQU5EQVJECQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDYpCj4gLSNkZWZp bmUgU1dTQ0lfR0JEQV9JTlRFUk5BTF9HUkFQSElDUwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJ X0dCREEsIDcpCj4gLSNkZWZpbmUgU1dTQ0lfR0JEQV9TUFJFQURfU1BFQ1RSVU0JU1dTQ0lfRlVO Q1RJT05fQ09ERShTV1NDSV9HQkRBLCAxMCkKPiAtCj4gLS8qIFNXU0NJOiBTeXN0ZW0gQklPUyBD YWxsYmFja3MgKFNCQ0IpICovCj4gLSNkZWZpbmUgU1dTQ0lfU0JDQgkJCTYKPiAtI2RlZmluZSBT V1NDSV9TQkNCX1NVUFBPUlRFRF9DQUxMQkFDS1MJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9T QkNCLCAwKQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfSU5JVF9DT01QTEVUSU9OCVNXU0NJX0ZVTkNU SU9OX0NPREUoU1dTQ0lfU0JDQiwgMSkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1BSRV9ISVJFU19T RVRfTU9ERQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDMpCj4gLSNkZWZpbmUgU1dT Q0lfU0JDQl9QT1NUX0hJUkVTX1NFVF9NT0RFCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JD QiwgNCkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX0RJU1BMQVlfU1dJVENICVNXU0NJX0ZVTkNUSU9O X0NPREUoU1dTQ0lfU0JDQiwgNSkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9UVl9GT1JNQVQJ U1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCA2KQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0Jf QURBUFRFUl9QT1dFUl9TVEFURQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDcpCj4g LSNkZWZpbmUgU1dTQ0lfU0JDQl9ESVNQTEFZX1BPV0VSX1NUQVRFCVNXU0NJX0ZVTkNUSU9OX0NP REUoU1dTQ0lfU0JDQiwgOCkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9CT09UX0RJU1BMQVkJ U1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCA5KQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0Jf U0VUX1BBTkVMX0RFVEFJTFMJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxMCkKPiAt I2RlZmluZSBTV1NDSV9TQkNCX1NFVF9JTlRFUk5BTF9HRlgJU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9TQkNCLCAxMSkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfVE9fRE9TX0ZT CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTYpCj4gLSNkZWZpbmUgU1dTQ0lfU0JD Ql9TVVNQRU5EX1JFU1VNRQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDE3KQo+IC0j ZGVmaW5lIFNXU0NJX1NCQ0JfU0VUX1NQUkVBRF9TUEVDVFJVTQlTV1NDSV9GVU5DVElPTl9DT0RF KFNXU0NJX1NCQ0IsIDE4KQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfUE9TVF9WQkVfUE0JCVNXU0NJ X0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTkpCj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9FTkFC TEVfRElTQUJMRV9BVURJTwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDIxKQo+IC0K PiAtI2RlZmluZSBBQ1BJX09USEVSX09VVFBVVCAoMDw8OCkKPiAtI2RlZmluZSBBQ1BJX1ZHQV9P VVRQVVQgKDE8PDgpCj4gLSNkZWZpbmUgQUNQSV9UVl9PVVRQVVQgKDI8PDgpCj4gLSNkZWZpbmUg QUNQSV9ESUdJVEFMX09VVFBVVCAoMzw8OCkKPiAtI2RlZmluZSBBQ1BJX0xWRFNfT1VUUFVUICg0 PDw4KQo+IC0KPiAtI2RlZmluZSBNQVhfRFNMUAkxNTAwCj4gKyNpbmNsdWRlICJpbnRlbF9vcHJl Z2lvbi5oIgoKQXMgc2FpZCwgSSBkb24ndCBzZWUgdGhlIG5lZWQgdG8gbW92ZSB0aGVzZSBkZWZp bmVzIHRvIGEgc2VwYXJhdGUKaGVhZGVyLiBUaGlzIGlzIGRlZmluaXRlbHkgc3R1ZmYgdGhhdCB3 ZSB3YW50IHRvIGtlZXAgaGlkZGVuIGluIG9uZQpwbGFjZSwgYW5kIG5vYm9keSBvdXRzaWRlIG9m IGludGVsX29wcmVnaW9uLmMgc2hvdWxkIHVzZSB0aGVzZS4KCj4gIAo+ICAjaWZkZWYgQ09ORklH X0FDUEkKPiAgc3RhdGljIGludCBzd3NjaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZnVu Y3Rpb24sIHUzMiBwYXJtLCB1MzIgKnBhcm1fb3V0KQo+IEBAIC04OTIsMTMgKzY4OSw1NSBAQCBz dGF0aWMgdm9pZCBzd3NjaV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICBzdGF0aWMg aW5saW5lIHZvaWQgc3dzY2lfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikge30KPiAgI2Vu ZGlmICAvKiBDT05GSUdfQUNQSSAqLwo+ICAKPiArY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKnZh bGlkYXRlX3ZidChjb25zdCB2b2lkIF9faW9tZW0gKl92YnQsCj4gKwkJCQkJc2l6ZV90IHNpemUs Cj4gKwkJCQkJY29uc3QgY2hhciAqc291cmNlKQo+ICt7Cj4gKwkvKgo+ICsJICogVGhpcyBpcyB0 aGUgb25lIHBsYWNlIHdoZXJlIHdlIGV4cGxpY2l0bHkgZGlzY2FyZCB0aGUgYWRkcmVzcyBzcGFj ZQo+ICsJICogKF9faW9tZW0pIG9mIHRoZSBCSU9TL1ZCVC4gKEFuZCB0aGlzIHdpbGwgY2F1c2Ug YSBzcGFyc2UgY29tcGxhaW50LikKPiArCSAqLwo+ICsJY29uc3Qgc3RydWN0IHZidF9oZWFkZXIg KnZidCA9IChjb25zdCBzdHJ1Y3QgdmJ0X2hlYWRlciAqKV92YnQ7Cj4gKwljb25zdCBzdHJ1Y3Qg YmRiX2hlYWRlciAqYmRiOwo+ICsJc2l6ZV90IG9mZnNldDsKPiArCj4gKwlpZiAoc2l6ZW9mKHN0 cnVjdCB2YnRfaGVhZGVyKSA+IHNpemUpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJWQlQgaGVh ZGVyIGluY29tcGxldGVcbiIpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsKPiArCWlmICht ZW1jbXAodmJ0LT5zaWduYXR1cmUsICIkVkJUIiwgNCkpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVS KCJWQlQgaW52YWxpZCBzaWduYXR1cmVcbiIpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsK PiArCW9mZnNldCA9IHZidC0+YmRiX29mZnNldDsKPiArCWlmIChvZmZzZXQgKyBzaXplb2Yoc3Ry dWN0IGJkYl9oZWFkZXIpID4gc2l6ZSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIkJEQiBoZWFk ZXIgaW5jb21wbGV0ZVxuIik7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gKwo+ICsJYmRiID0g KGNvbnN0IHZvaWQgKilfdmJ0ICsgb2Zmc2V0Owo+ICsJaWYgKG9mZnNldCArIGJkYi0+YmRiX3Np emUgPiBzaXplKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiQkRCIGluY29tcGxldGVcbiIpOwo+ ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsKPiArCURSTV9ERUJVR19LTVMoIlVzaW5nIFZCVCBm cm9tICVzOiAlMjBzXG4iLAo+ICsJCQlzb3VyY2UsIHZidC0+c2lnbmF0dXJlKTsKPiArCXJldHVy biBiZGI7Cj4gK30KPiArCj4gIGludCBpbnRlbF9vcHJlZ2lvbl9zZXR1cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX29wcmVnaW9uICpvcHJlZ2lvbiA9ICZk ZXZfcHJpdi0+b3ByZWdpb247Cj4gIAl2b2lkIF9faW9tZW0gKmJhc2U7Cj4gKwl2b2lkIF9faW9t ZW0gKnZidF9iYXNlOwo+ICAJdTMyIGFzbHMsIG1ib3hlczsKPiAgCWNoYXIgYnVmW3NpemVvZihP UFJFR0lPTl9TSUdOQVRVUkUpXTsKPiArCWNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIgPSBO VUxMOwo+ICsJc2l6ZV90IHNpemU7Cj4gIAlpbnQgZXJyID0gMDsKPiAgCj4gIAlCVUlMRF9CVUdf T04oc2l6ZW9mKHN0cnVjdCBvcHJlZ2lvbl9oZWFkZXIpICE9IDB4MTAwKTsKPiBAQCAtOTE3LDcg Kzc1Niw3IEBAIGludCBpbnRlbF9vcHJlZ2lvbl9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJSU5JVF9XT1JLKCZvcHJlZ2lvbi0+YXNsZV93b3JrLCBhc2xlX3dvcmspOwo+ICAjZW5k aWYKPiAgCj4gLQliYXNlID0gYWNwaV9vc19pb3JlbWFwKGFzbHMsIE9QUkVHSU9OX1NJWkUpOwo+ ICsJYmFzZSA9IGFjcGlfb3NfaW9yZW1hcChhc2xzLCBPUFJFR0lPTl9WQlRfT0ZGU0VUKTsKCk5v dyB5b3UgbGVhdmUgb3V0IG1haWxib3ggIzUuIEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhbnkgcmVh c29uICpub3QqIHRvCmlvcmVtYXAgYWxsIG9mIG9wcmVnaW9uIGhlcmUuCgo+ICAJaWYgKCFiYXNl KQo+ICAJCXJldHVybiAtRU5PTUVNOwo+ICAKPiBAQCAtOTI5LDcgKzc2OCwzMyBAQCBpbnQgaW50 ZWxfb3ByZWdpb25fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlnb3RvIGVycl9v dXQ7Cj4gIAl9Cj4gIAlvcHJlZ2lvbi0+aGVhZGVyID0gYmFzZTsKPiAtCW9wcmVnaW9uLT52YnQg PSBiYXNlICsgT1BSRUdJT05fVkJUX09GRlNFVDsKPiArCS8qIEFzc2lnbmluZyB0aGUgYWxzZSB0 byB0aGUgbWFpbGJveCAzIG9mIHRoZSBvcHJlZ2lvbiAqLwo+ICsJb3ByZWdpb24tPmFzbGUgPSBi YXNlICsgT1BSRUdJT05fQVNMRV9PRkZTRVQ7CgpUaGF0J3MgYXNzaWduZWQgdG93YXJkcyB0aGUg ZW5kIG9mIHRoZSBmdW5jdGlvbiAqaWYqIHRoZSBtYm94IGlzCnN1cHBvcnRlZC4KCj4gKwo+ICsJ LyoKPiArCSAqIE5vbi16ZXJvIHZhbHVlIGluIHJ2ZGEgZmllbGQgaXMgYW4gaW5kaWNhdGlvbiB0 byBkcml2ZXIgdGhhdCBhCj4gKwkgKiB2YWxpZCBSYXcgVkJUIGlzIHN0b3JlZCBpbiB0aGF0IGFk ZHJlc3MgYW5kIGRyaXZlciBzaG91bGQgbm90IHJlZmVyCj4gKwkgKiB0byBtYWlsYm94NCBmb3Ig Z2V0dGluZyBWQlQuCj4gKwkgKi8KPiArCWlmIChvcHJlZ2lvbi0+aGVhZGVyLT5vcHJlZ2lvbl92 ZXIgPj0gMiAmJiBvcHJlZ2lvbi0+YXNsZS0+cnZkYSkgewo+ICsJCQlzaXplID0gb3ByZWdpb24t PmFzbGUtPnJ2ZHM7Cj4gKwkJCXZidF9iYXNlID0gYWNwaV9vc19pb3JlbWFwKG9wcmVnaW9uLT5h c2xlLT5ydmRhLAo+ICsJCQkJCXNpemUpOwo+ICsJfSBlbHNlIHsKPiArCQkJc2l6ZSA9IE9QUkVH SU9OX1NJWkUgLSBPUFJFR0lPTl9WQlRfT0ZGU0VUOwo+ICsJCQl2YnRfYmFzZSA9IGFjcGlfb3Nf aW9yZW1hcChhc2xzICsgT1BSRUdJT05fVkJUX09GRlNFVCwKPiArCQkJCQlzaXplKTsKPiArCX0K PiArCj4gKwliZGIgPSB2YWxpZGF0ZV92YnQodmJ0X2Jhc2UsIHNpemUsICJPcFJlZ2lvbiIpOwo+ ICsKPiArCWlmIChiZGIgPT0gTlVMTCkgewo+ICsJCWVyciA9IC1FSU5WQUw7Cj4gKwkJZ290byBl cnJfdmJ0Owo+ICsJfQo+ICsKPiArCWRldl9wcml2LT5iZGJfc3RhcnQgPSBiZGI7CgpBZ2Fpbiwg SSBkb24ndCBzZWUgd2h5IHlvdSBzaG91bGQgc3RvcmUgdGhpcyBoZXJlLiBOb3IgSSBzZWUgdGhl IG5lZWQgdG8KYWN0dWFsbHkgdmFsaWRhdGUgdmJ0IGhlcmUuIFlvdSBjYW4ganVzdCBhcyB3ZWxs IGRvIGl0IGluIGludGVsX2Jpb3MKbGlrZSBiZWZvcmUsIGFzIGxvbmcgYXMgeW91IGFzc2lnbiBv cHJlZ2lvbi0+dmJ0IGhlcmUgYXBwcm9wcmlhdGVseS4KCllvdSdsbCBhbHNvIG5lZWQgdG8gaW91 bm1hcCB2YnRfYmFzZSBpbiBpbnRlbF9vcHJlZ2lvbl9maW5pLiBUaGF0IG1heQpuZWVkIHNvbWUg YWRkaXRpb25hbCBjaGVja3MgaWYgeW91IHVuY29uZGl0aW9uYWxseSBpb3JlbWFwIGFsbCBvZgpv cHJlZ2lvbiBhbmQgY29uZGl0aW9uYWxseSBpb3JlbWFwIHJ2ZGEsIGFuZCBwb2ludCBvcHJlZ2lv bi0+dmJ0IHRvIGl0LgoKPiArCW9wcmVnaW9uLT52YnQgPSB2YnRfYmFzZTsKPiAgCj4gIAlvcHJl Z2lvbi0+bGlkX3N0YXRlID0gYmFzZSArIEFDUElfQ0xJRDsKPiAgCj4gQEAgLTk1Myw2ICs4MTgs OCBAQCBpbnQgaW50ZWxfb3ByZWdpb25fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgCj4gK2Vycl92YnQ6Cj4gKwlpb3VubWFwKHZidF9iYXNlKTsKPiAg ZXJyX291dDoKPiAgCWlvdW5tYXAoYmFzZSk7Cj4gIAlyZXR1cm4gZXJyOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfb3ByZWdpb24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMC4uYmNiNDVlYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vcHJlZ2lvbi5oCj4gQEAgLTAsMCArMSwyMzAgQEAKPiArLyoKPiArICogQ29weXJp Z2h0IDIwMDggSW50ZWwgQ29ycG9yYXRpb24gPGhvbmcubGl1QGludGVsLmNvbT4KPiArICogQ29w eXJpZ2h0IDIwMDggUmVkIEhhdCA8bWpnQHJlZGhhdC5jb20+Cj4gKyAqCj4gKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZwo+ICsgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUKPiArICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwo+ICsgKiB3aXRob3V0IGxpbWl0YXRp b24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4gKyAq IGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8KPiArICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCj4gKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPiArICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPiArICogcG9ydGlvbnMg b2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiArICogRVhQUkVTUyBPUiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gKyAq IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECj4g KyAqIE5PTi1JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBJTlRFTCBBTkQvT1IgSVRT IFNVUFBMSUVSUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KPiArICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KPiArICogQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ ICsgKiBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKwo+ICsjZGVmaW5lIFBDSV9BU0xFCQkweGU0 Cj4gKyNkZWZpbmUgUENJX0FTTFMJCTB4ZmMKPiArI2RlZmluZSBQQ0lfU1dTQ0kJCTB4ZTgKPiAr I2RlZmluZSBQQ0lfU1dTQ0lfU0NJU0VMCSgxIDw8IDE1KQo+ICsjZGVmaW5lIFBDSV9TV1NDSV9H U1NDSUUJKDEgPDwgMCkKPiArCj4gKyNkZWZpbmUgT1BSRUdJT05fSEVBREVSX09GRlNFVCAwCj4g KyNkZWZpbmUgT1BSRUdJT05fQUNQSV9PRkZTRVQgICAweDEwMAo+ICsjZGVmaW5lICAgQUNQSV9D TElEIDB4MDFhYyAvKiBjdXJyZW50IGxpZCBzdGF0ZSBpbmRpY2F0b3IgKi8KPiArI2RlZmluZSAg IEFDUElfQ0RDSyAweDAxYjAgLyogY3VycmVudCBkb2NraW5nIHN0YXRlIGluZGljYXRvciAqLwo+ ICsjZGVmaW5lIE9QUkVHSU9OX1NXU0NJX09GRlNFVCAgMHgyMDAKPiArI2RlZmluZSBPUFJFR0lP Tl9BU0xFX09GRlNFVCAgIDB4MzAwCj4gKyNkZWZpbmUgT1BSRUdJT05fVkJUX09GRlNFVCAgICAw eDQwMAo+ICsKPiArI2RlZmluZSBPUFJFR0lPTl9TSUdOQVRVUkUgIkludGVsR3JhcGhpY3NNZW0i Cj4gKyNkZWZpbmUgTUJPWF9BQ1BJICAgICAgKDE8PDApCj4gKyNkZWZpbmUgTUJPWF9TV1NDSSAg ICAgKDE8PDEpCj4gKyNkZWZpbmUgTUJPWF9BU0xFICAgICAgKDE8PDIpCj4gKyNkZWZpbmUgTUJP WF9BU0xFX0VYVCAgKDE8PDQpCj4gKwo+ICtzdHJ1Y3Qgb3ByZWdpb25faGVhZGVyIHsKPiArCXU4 IHNpZ25hdHVyZVsxNl07Cj4gKwl1MzIgc2l6ZTsKPiArCXUzMiBvcHJlZ2lvbl92ZXI7Cj4gKwl1 OCBiaW9zX3ZlclszMl07Cj4gKwl1OCB2Ymlvc192ZXJbMTZdOwo+ICsJdTggZHJpdmVyX3Zlclsx Nl07Cj4gKwl1MzIgbWJveGVzOwo+ICsJdTMyIGRyaXZlcl9tb2RlbDsKPiArCXUzMiBwY29uOwo+ ICsJdTggZHZlclszMl07Cj4gKwl1OCByc3ZkWzEyNF07Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICsv KiBPcFJlZ2lvbiBtYWlsYm94ICMxOiBwdWJsaWMgQUNQSSBtZXRob2RzICovCj4gK3N0cnVjdCBv cHJlZ2lvbl9hY3BpIHsKPiArCXUzMiBkcmR5OyAgICAgICAvKiBkcml2ZXIgcmVhZGluZXNzICov Cj4gKwl1MzIgY3N0czsgICAgICAgLyogbm90aWZpY2F0aW9uIHN0YXR1cyAqLwo+ICsJdTMyIGNl dnQ7ICAgICAgIC8qIGN1cnJlbnQgZXZlbnQgKi8KPiArCXU4IHJzdmQxWzIwXTsKPiArCXUzMiBk aWRsWzhdOyAgICAvKiBzdXBwb3J0ZWQgZGlzcGxheSBkZXZpY2VzIElEIGxpc3QgKi8KPiArCXUz MiBjcGRsWzhdOyAgICAvKiBjdXJyZW50bHkgcHJlc2VudGVkIGRpc3BsYXkgbGlzdCAqLwo+ICsJ dTMyIGNhZGxbOF07ICAgIC8qIGN1cnJlbnRseSBhY3RpdmUgZGlzcGxheSBsaXN0ICovCj4gKwl1 MzIgbmFkbFs4XTsgICAgLyogbmV4dCBhY3RpdmUgZGV2aWNlcyBsaXN0ICovCj4gKwl1MzIgYXNs cDsgICAgICAgLyogQVNMIHNsZWVwIHRpbWUtb3V0ICovCj4gKwl1MzIgdGlkeDsgICAgICAgLyog dG9nZ2xlIHRhYmxlIGluZGV4ICovCj4gKwl1MzIgY2hwZDsgICAgICAgLyogY3VycmVudCBob3Rw bHVnIGVuYWJsZSBpbmRpY2F0b3IgKi8KPiArCXUzMiBjbGlkOyAgICAgICAvKiBjdXJyZW50IGxp ZCBzdGF0ZSovCj4gKwl1MzIgY2RjazsgICAgICAgLyogY3VycmVudCBkb2NraW5nIHN0YXRlICov Cj4gKwl1MzIgc3hzdzsgICAgICAgLyogU3ggc3RhdGUgcmVzdW1lICovCj4gKwl1MzIgZXZ0czsg ICAgICAgLyogQVNMIHN1cHBvcnRlZCBldmVudHMgKi8KPiArCXUzMiBjbm90OyAgICAgICAvKiBj dXJyZW50IE9TIG5vdGlmaWNhdGlvbiAqLwo+ICsJdTMyIG5yZHk7ICAgICAgIC8qIGRyaXZlciBz dGF0dXMgKi8KPiArCXUzMiBkaWQyWzddOwkvKiBleHRlbmRlZCBzdXBwb3J0ZWQgZGlzcGxheSBk ZXZpY2VzIElEIGxpc3QgKi8KPiArCXUzMiBjcGQyWzddOwkvKiBleHRlbmRlZCBhdHRhY2hlZCBk aXNwbGF5IGRldmljZXMgbGlzdCAqLwo+ICsJdTggcnN2ZDJbNF07Cj4gK30gX19wYWNrZWQ7Cj4g Kwo+ICsvKiBPcFJlZ2lvbiBtYWlsYm94ICMyOiBTV1NDSSAqLwo+ICtzdHJ1Y3Qgb3ByZWdpb25f c3dzY2kgewo+ICsJdTMyIHNjaWM7ICAgICAgIC8qIFNXU0NJIGNvbW1hbmR8c3RhdHVzfGRhdGEg Ki8KPiArCXUzMiBwYXJtOyAgICAgICAvKiBjb21tYW5kIHBhcmFtZXRlcnMgKi8KPiArCXUzMiBk c2xwOyAgICAgICAvKiBkcml2ZXIgc2xlZXAgdGltZS1vdXQgKi8KPiArCXU4IHJzdmRbMjQ0XTsK PiArfSBfX3BhY2tlZDsKPiArCj4gKy8qIE9wUmVnaW9uIG1haWxib3ggIzM6IEFTTEUgKi8KPiAr c3RydWN0IG9wcmVnaW9uX2FzbGUgewo+ICsJdTMyIGFyZHk7ICAgICAgIC8qIGRyaXZlciByZWFk aW5lc3MgKi8KPiArCXUzMiBhc2xjOyAgICAgICAvKiBBU0xFIGludGVycnVwdCBjb21tYW5kICov Cj4gKwl1MzIgdGNoZTsgICAgICAgLyogdGVjaG5vbG9neSBlbmFibGVkIGluZGljYXRvciAqLwo+ ICsJdTMyIGFsc2k7ICAgICAgIC8qIGN1cnJlbnQgQUxTIGlsbHVtaW5hbmNlIHJlYWRpbmcgKi8K PiArCXUzMiBiY2xwOyAgICAgICAvKiBiYWNrbGlnaHQgYnJpZ2h0bmVzcyB0byBzZXQgKi8KPiAr CXUzMiBwZml0OyAgICAgICAvKiBwYW5lbCBmaXR0aW5nIHN0YXRlICovCj4gKwl1MzIgY2Jsdjsg ICAgICAgLyogY3VycmVudCBicmlnaHRuZXNzIGxldmVsICovCj4gKwl1MTYgYmNsbVsyMF07ICAg LyogYmFja2xpZ2h0IGxldmVsIGR1dHkgY3ljbGUgbWFwcGluZyB0YWJsZSAqLwo+ICsJdTMyIGNw Zm07ICAgICAgIC8qIGN1cnJlbnQgcGFuZWwgZml0dGluZyBtb2RlICovCj4gKwl1MzIgZXBmbTsg ICAgICAgLyogZW5hYmxlZCBwYW5lbCBmaXR0aW5nIG1vZGVzICovCj4gKwl1OCBwbHV0Wzc0XTsg ICAgLyogcGFuZWwgTFVUIGFuZCBpZGVudGlmaWVyICovCj4gKwl1MzIgcGZtYjsgICAgICAgLyog UFdNIGZyZXEgYW5kIG1pbiBicmlnaHRuZXNzICovCj4gKwl1MzIgY2RkdjsgICAgICAgLyogY29s b3IgY29ycmVjdGlvbiBkZWZhdWx0IHZhbHVlcyAqLwo+ICsJdTMyIHBjZnQ7ICAgICAgIC8qIHBv d2VyIGNvbnNlcnZhdGlvbiBmZWF0dXJlcyAqLwo+ICsJdTMyIHNyb3Q7ICAgICAgIC8qIHN1cHBv cnRlZCByb3RhdGlvbiBhbmdsZXMgKi8KPiArCXUzMiBpdWVyOyAgICAgICAvKiBJVUVSIGV2ZW50 cyAqLwo+ICsJdTY0IGZkc3M7Cj4gKwl1MzIgZmRzcDsKPiArCXUzMiBzdGF0Owo+ICsJdTY0IHJ2 ZGE7CS8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgcmF3IHZidCBkYXRhICovCj4gKwl1MzIgcnZkczsJ LyogU2l6ZSBvZiByYXcgdmJ0IGRhdGEgKi8KPiArCXU4IHJzdmRbNThdOwo+ICt9IF9fcGFja2Vk Owo+ICsKPiArLyogRHJpdmVyIHJlYWRpbmVzcyBpbmRpY2F0b3IgKi8KPiArI2RlZmluZSBBU0xF X0FSRFlfUkVBRFkJCSgxIDw8IDApCj4gKyNkZWZpbmUgQVNMRV9BUkRZX05PVF9SRUFEWQkoMCA8 PCAwKQo+ICsKPiArLyogQVNMRSBJbnRlcnJ1cHQgQ29tbWFuZCAoQVNMQykgYml0cyAqLwo+ICsj ZGVmaW5lIEFTTENfU0VUX0FMU19JTExVTQkJKDEgPDwgMCkKPiArI2RlZmluZSBBU0xDX1NFVF9C QUNLTElHSFQJCSgxIDw8IDEpCj4gKyNkZWZpbmUgQVNMQ19TRVRfUEZJVAkJCSgxIDw8IDIpCj4g KyNkZWZpbmUgQVNMQ19TRVRfUFdNX0ZSRVEJCSgxIDw8IDMpCj4gKyNkZWZpbmUgQVNMQ19TVVBQ T1JURURfUk9UQVRJT05fQU5HTEVTCSgxIDw8IDQpCj4gKyNkZWZpbmUgQVNMQ19CVVRUT05fQVJS QVkJCSgxIDw8IDUpCj4gKyNkZWZpbmUgQVNMQ19DT05WRVJUSUJMRV9JTkRJQ0FUT1IJKDEgPDwg NikKPiArI2RlZmluZSBBU0xDX0RPQ0tJTkdfSU5ESUNBVE9SCQkoMSA8PCA3KQo+ICsjZGVmaW5l IEFTTENfSVNDVF9TVEFURV9DSEFOR0UJCSgxIDw8IDgpCj4gKyNkZWZpbmUgQVNMQ19SRVFfTVNL CQkJMHgxZmYKPiArLyogcmVzcG9uc2UgYml0cyAqLwo+ICsjZGVmaW5lIEFTTENfQUxTX0lMTFVN X0ZBSUxFRAkJKDEgPDwgMTApCj4gKyNkZWZpbmUgQVNMQ19CQUNLTElHSFRfRkFJTEVECQkoMSA8 PCAxMikKPiArI2RlZmluZSBBU0xDX1BGSVRfRkFJTEVECQkoMSA8PCAxNCkKPiArI2RlZmluZSBB U0xDX1BXTV9GUkVRX0ZBSUxFRAkJKDEgPDwgMTYpCj4gKyNkZWZpbmUgQVNMQ19ST1RBVElPTl9B TkdMRVNfRkFJTEVECSgxIDw8IDE4KQo+ICsjZGVmaW5lIEFTTENfQlVUVE9OX0FSUkFZX0ZBSUxF RAkoMSA8PCAyMCkKPiArI2RlZmluZSBBU0xDX0NPTlZFUlRJQkxFX0ZBSUxFRAkJKDEgPDwgMjIp Cj4gKyNkZWZpbmUgQVNMQ19ET0NLSU5HX0ZBSUxFRAkJKDEgPDwgMjQpCj4gKyNkZWZpbmUgQVNM Q19JU0NUX1NUQVRFX0ZBSUxFRAkJKDEgPDwgMjYpCj4gKwo+ICsvKiBUZWNobm9sb2d5IGVuYWJs ZWQgaW5kaWNhdG9yICovCj4gKyNkZWZpbmUgQVNMRV9UQ0hFX0FMU19FTgkoMSA8PCAwKQo+ICsj ZGVmaW5lIEFTTEVfVENIRV9CTENfRU4JKDEgPDwgMSkKPiArI2RlZmluZSBBU0xFX1RDSEVfUEZJ VF9FTgkoMSA8PCAyKQo+ICsjZGVmaW5lIEFTTEVfVENIRV9QRk1CX0VOCSgxIDw8IDMpCj4gKwo+ ICsvKiBBU0xFIGJhY2tsaWdodCBicmlnaHRuZXNzIHRvIHNldCAqLwo+ICsjZGVmaW5lIEFTTEVf QkNMUF9WQUxJRCAgICAgICAgICAgICAgICAoMTw8MzEpCj4gKyNkZWZpbmUgQVNMRV9CQ0xQX01T SyAgICAgICAgICAofigxPDwzMSkpCj4gKwo+ICsvKiBBU0xFIHBhbmVsIGZpdHRpbmcgcmVxdWVz dCAqLwo+ICsjZGVmaW5lIEFTTEVfUEZJVF9WQUxJRCAgICAgICAgICgxPDwzMSkKPiArI2RlZmlu ZSBBU0xFX1BGSVRfQ0VOVEVSICgxPDwwKQo+ICsjZGVmaW5lIEFTTEVfUEZJVF9TVFJFVENIX1RF WFQgKDE8PDEpCj4gKyNkZWZpbmUgQVNMRV9QRklUX1NUUkVUQ0hfR0ZYICgxPDwyKQo+ICsKPiAr LyogUFdNIGZyZXF1ZW5jeSBhbmQgbWluaW11bSBicmlnaHRuZXNzICovCj4gKyNkZWZpbmUgQVNM RV9QRk1CX0JSSUdIVE5FU1NfTUFTSyAoMHhmZikKPiArI2RlZmluZSBBU0xFX1BGTUJfQlJJR0hU TkVTU19WQUxJRCAoMTw8OCkKPiArI2RlZmluZSBBU0xFX1BGTUJfUFdNX01BU0sgKDB4N2ZmZmZl MDApCj4gKyNkZWZpbmUgQVNMRV9QRk1CX1BXTV9WQUxJRCAoMTw8MzEpCj4gKwo+ICsjZGVmaW5l IEFTTEVfQ0JMVl9WQUxJRCAgICAgICAgICgxPDwzMSkKPiArCj4gKy8qIElVRVIgKi8KPiArI2Rl ZmluZSBBU0xFX0lVRVJfRE9DS0lORwkJKDEgPDwgNykKPiArI2RlZmluZSBBU0xFX0lVRVJfQ09O VkVSVElCTEUJCSgxIDw8IDYpCj4gKyNkZWZpbmUgQVNMRV9JVUVSX1JPVEFUSU9OX0xPQ0tfQlRO CSgxIDw8IDQpCj4gKyNkZWZpbmUgQVNMRV9JVUVSX1ZPTFVNRV9ET1dOX0JUTgkoMSA8PCAzKQo+ ICsjZGVmaW5lIEFTTEVfSVVFUl9WT0xVTUVfVVBfQlROCQkoMSA8PCAyKQo+ICsjZGVmaW5lIEFT TEVfSVVFUl9XSU5ET1dTX0JUTgkJKDEgPDwgMSkKPiArI2RlZmluZSBBU0xFX0lVRVJfUE9XRVJf QlROCQkoMSA8PCAwKQo+ICsKPiArLyogU29mdHdhcmUgU3lzdGVtIENvbnRyb2wgSW50ZXJydXB0 IChTV1NDSSkgKi8KPiArI2RlZmluZSBTV1NDSV9TQ0lDX0lORElDQVRPUgkJKDEgPDwgMCkKPiAr I2RlZmluZSBTV1NDSV9TQ0lDX01BSU5fRlVOQ1RJT05fU0hJRlQJMQo+ICsjZGVmaW5lIFNXU0NJ X1NDSUNfTUFJTl9GVU5DVElPTl9NQVNLCSgweGYgPDwgMSkKPiArI2RlZmluZSBTV1NDSV9TQ0lD X1NVQl9GVU5DVElPTl9TSElGVAk4Cj4gKyNkZWZpbmUgU1dTQ0lfU0NJQ19TVUJfRlVOQ1RJT05f TUFTSwkoMHhmZiA8PCA4KQo+ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJBTUVURVJfU0hJ RlQJOAo+ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJBTUVURVJfTUFTSwkoMHhmZiA8PCA4 KQo+ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfU0hJRlQJNQo+ICsjZGVmaW5lIFNX U0NJX1NDSUNfRVhJVF9TVEFUVVNfTUFTSwkoNyA8PCA1KQo+ICsjZGVmaW5lIFNXU0NJX1NDSUNf RVhJVF9TVEFUVVNfU1VDQ0VTUwkxCj4gKwo+ICsjZGVmaW5lIFNXU0NJX0ZVTkNUSU9OX0NPREUo bWFpbiwgc3ViKSBcCj4gKwkoKG1haW4pIDw8IFNXU0NJX1NDSUNfTUFJTl9GVU5DVElPTl9TSElG VCB8IFwKPiArCSAoc3ViKSA8PCBTV1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElGVCkKPiArCj4g Ky8qIFNXU0NJOiBHZXQgQklPUyBEYXRhIChHQkRBKSAqLwo+ICsjZGVmaW5lIFNXU0NJX0dCREEJ CQk0Cj4gKyNkZWZpbmUgU1dTQ0lfR0JEQV9TVVBQT1JURURfQ0FMTFMJU1dTQ0lfRlVOQ1RJT05f Q09ERShTV1NDSV9HQkRBLCAwKQo+ICsjZGVmaW5lIFNXU0NJX0dCREFfUkVRVUVTVEVEX0NBTExC QUNLUwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDEpCj4gKyNkZWZpbmUgU1dTQ0lf R0JEQV9CT09UX0RJU1BMQVlfUFJFRglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDQp Cj4gKyNkZWZpbmUgU1dTQ0lfR0JEQV9QQU5FTF9ERVRBSUxTCVNXU0NJX0ZVTkNUSU9OX0NPREUo U1dTQ0lfR0JEQSwgNSkKPiArI2RlZmluZSBTV1NDSV9HQkRBX1RWX1NUQU5EQVJECQlTV1NDSV9G VU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDYpCj4gKyNkZWZpbmUgU1dTQ0lfR0JEQV9JTlRFUk5B TF9HUkFQSElDUwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDcpCj4gKyNkZWZpbmUg U1dTQ0lfR0JEQV9TUFJFQURfU1BFQ1RSVU0JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9HQkRB LCAxMCkKPiArCj4gKy8qIFNXU0NJOiBTeXN0ZW0gQklPUyBDYWxsYmFja3MgKFNCQ0IpICovCj4g KyNkZWZpbmUgU1dTQ0lfU0JDQgkJCTYKPiArI2RlZmluZSBTV1NDSV9TQkNCX1NVUFBPUlRFRF9D QUxMQkFDS1MJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAwKQo+ICsjZGVmaW5lIFNX U0NJX1NCQ0JfSU5JVF9DT01QTEVUSU9OCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwg MSkKPiArI2RlZmluZSBTV1NDSV9TQkNCX1BSRV9ISVJFU19TRVRfTU9ERQlTV1NDSV9GVU5DVElP Tl9DT0RFKFNXU0NJX1NCQ0IsIDMpCj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9QT1NUX0hJUkVTX1NF VF9NT0RFCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgNCkKPiArI2RlZmluZSBTV1ND SV9TQkNCX0RJU1BMQVlfU1dJVENICVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgNSkK PiArI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9UVl9GT1JNQVQJU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9TQkNCLCA2KQo+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfQURBUFRFUl9QT1dFUl9TVEFURQlT V1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDcpCj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9E SVNQTEFZX1BPV0VSX1NUQVRFCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgOCkKPiAr I2RlZmluZSBTV1NDSV9TQkNCX1NFVF9CT09UX0RJU1BMQVkJU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9TQkNCLCA5KQo+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfU0VUX1BBTkVMX0RFVEFJTFMJU1dT Q0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxMCkKPiArI2RlZmluZSBTV1NDSV9TQkNCX1NF VF9JTlRFUk5BTF9HRlgJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxMSkKPiArI2Rl ZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfVE9fRE9TX0ZTCVNXU0NJX0ZVTkNUSU9OX0NPREUo U1dTQ0lfU0JDQiwgMTYpCj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9TVVNQRU5EX1JFU1VNRQlTV1ND SV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDE3KQo+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfU0VU X1NQUkVBRF9TUEVDVFJVTQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDE4KQo+ICsj ZGVmaW5lIFNXU0NJX1NCQ0JfUE9TVF9WQkVfUE0JCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lf U0JDQiwgMTkpCj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9FTkFCTEVfRElTQUJMRV9BVURJTwlTV1ND SV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDIxKQo+ICsKPiArI2RlZmluZSBBQ1BJX09USEVS X09VVFBVVCAoMDw8OCkKPiArI2RlZmluZSBBQ1BJX1ZHQV9PVVRQVVQgKDE8PDgpCj4gKyNkZWZp bmUgQUNQSV9UVl9PVVRQVVQgKDI8PDgpCj4gKyNkZWZpbmUgQUNQSV9ESUdJVEFMX09VVFBVVCAo Mzw8OCkKPiArI2RlZmluZSBBQ1BJX0xWRFNfT1VUUFVUICg0PDw4KQo+ICsKPiArI2RlZmluZSBN QVhfRFNMUAkxNTAwCgpUaGUgYm90dG9tIGxpbmUgaGVyZSBpcyB0aGF0IEkgdGhpbmsgeW91IGNv dWxkIGdldCBhbGwgb2YgdGhpcyBkb25lIHdpdGgKKm11Y2gqIHNtYWxsZXIgY2hhbmdlcy4gSWYg d2UgZ2V0IGEgcmVncmVzc2lvbiByZXBvcnQgcG9pbnRpbmcgYXQgdGhpcwpwYXRjaCwgd2UnbGwg aGF2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgdG8gZG8gdG8gZmlndXJlIG91dCB3aGF0IGZhaWxlZC4K CkJSLApKYW5pLgoKCgo+IC0tIAo+IDEuNy45LjUKPgo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4g U291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==