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: Wed, 16 Sep 2015 16:24:50 +0300 Message-ID: <8737yev6n1.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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id DB8956E0B6 for ; Wed, 16 Sep 2015 06:21:38 -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 X29wcmVnaW9uLmggfCAgMjMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKwoKV2h5IGFyZSB5 b3UgYWRkaW5nIHRoaXMgZmlsZT8gSSB0aGluayBpdCdzIGJldHRlciB0byBoYXZlIGFsbCBvZiB0 aGlzIGluCnRoZSAuYyBmaWxlIHNvIHRoYXQgbm9ib2R5IHdpbGwgaGF2ZSBhbnkgaWRlYXMgYWJv dXQgYWNjZXNzaW5nIHRoZSBkYXRhCm91dHNpZGUgb2YgaW50ZWxfb3ByZWdpb24uYy4KCkJSLApK YW5pLgoKPiAgNSBmaWxlcyBjaGFuZ2VkLCAzMjkgaW5zZXJ0aW9ucygrKSwgMjU3IGRlbGV0aW9u cygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3By ZWdpb24uaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA0MTYyOWZh Li41NTM0YWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjYs NiArMjYsOCBAQAo+ICAgKgo+ICAgKi8KPiAgCj4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4g KyNpbmNsdWRlIDxhY3BpL3ZpZGVvLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgo+ ICAjaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+ Cj4gQEAgLTM5LDYgKzQxLDcgQEAKPiAgI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKPiAg I2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2lu Y2x1ZGUgImludGVsX29wcmVnaW9uLmgiCj4gIAo+ICBlbnVtIHsKPiAgCUFDVElWRV9MSVNULAo+ IEBAIC0xODMyLDcgKzE4MzUsNyBAQCBzdGF0aWMgaW50IGk5MTVfb3ByZWdpb24oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9k ZS0+bWlub3ItPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfb3ByZWdpb24gKm9wcmVnaW9uID0gJmRl dl9wcml2LT5vcHJlZ2lvbjsKPiAtCXZvaWQgKmRhdGEgPSBrbWFsbG9jKE9QUkVHSU9OX1NJWkUs IEdGUF9LRVJORUwpOwo+ICsJdm9pZCAqZGF0YSA9IGttYWxsb2MoT1BSRUdJT05fVkJUX09GRlNF VCwgR0ZQX0tFUk5FTCk7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmIChkYXRhID09IE5VTEwpCj4g QEAgLTE4NDMsMTIgKzE4NDYsMjUgQEAgc3RhdGljIGludCBpOTE1X29wcmVnaW9uKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCWdvdG8gb3V0Owo+ICAKPiAgCWlmIChvcHJl Z2lvbi0+aGVhZGVyKSB7Cj4gLQkJbWVtY3B5X2Zyb21pbyhkYXRhLCBvcHJlZ2lvbi0+aGVhZGVy LCBPUFJFR0lPTl9TSVpFKTsKPiAtCQlzZXFfd3JpdGUobSwgZGF0YSwgT1BSRUdJT05fU0laRSk7 Cj4gKwkJbWVtY3B5X2Zyb21pbyhkYXRhLCBvcHJlZ2lvbi0+aGVhZGVyLCBPUFJFR0lPTl9WQlRf T0ZGU0VUKTsKPiArCQlzZXFfd3JpdGUobSwgZGF0YSwgT1BSRUdJT05fVkJUX09GRlNFVCk7Cj4g KwkJa2ZyZWUoZGF0YSk7Cj4gKwkJaWYgKG9wcmVnaW9uLT5hc2xlLT5ydmRhKSB7Cj4gKwkJCWRh dGEgPSBrbWFsbG9jKG9wcmVnaW9uLT5hc2xlLT5ydmRzLCBHRlBfS0VSTkVMKTsKPiArCQkJbWVt Y3B5X2Zyb21pbyhkYXRhLAo+ICsJCQkJKGNvbnN0IHZvaWQgX19pb21lbSAqKSBvcHJlZ2lvbi0+ YXNsZS0+cnZkYSwKPiArCQkJCW9wcmVnaW9uLT5hc2xlLT5ydmRzKTsKPiArCQkJc2VxX3dyaXRl KG0sIGRhdGEsIG9wcmVnaW9uLT5hc2xlLT5ydmRzKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlkYXRh ID0ga21hbGxvYyhPUFJFR0lPTl9TSVpFIC0gT1BSRUdJT05fVkJUX09GRlNFVCwKPiArCQkJCQlH RlBfS0VSTkVMKTsKPiArCQkJbWVtY3B5X2Zyb21pbyhkYXRhLCBvcHJlZ2lvbi0+dmJ0LAo+ICsJ CQkJCU9QUkVHSU9OX1NJWkUgLSBPUFJFR0lPTl9WQlRfT0ZGU0VUKTsKPiArCQkJc2VxX3dyaXRl KG0sIGRhdGEsIE9QUkVHSU9OX1NJWkUgLSBPUFJFR0lPTl9WQlRfT0ZGU0VUKTsKPiArCQl9Cj4g IAl9Cj4gIAo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQo+ICBvdXQ6 Cj4gIAlrZnJlZShkYXRhKTsKPiAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGluZGV4IDEyODcwMDcuLjUwN2Q1N2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBA QCAtMTc4MCw2ICsxNzgwLDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJc3RydWN0 IGk5MTVfaG90cGx1ZyBob3RwbHVnOwo+ICAJc3RydWN0IGk5MTVfZmJjIGZiYzsKPiAgCXN0cnVj dCBpOTE1X2RycnMgZHJyczsKPiArCWNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGJfc3RhcnQ7 Cj4gIAlzdHJ1Y3QgaW50ZWxfb3ByZWdpb24gb3ByZWdpb247Cj4gIAlzdHJ1Y3QgaW50ZWxfdmJ0 X2RhdGEgdmJ0Owo+ICAKPiBAQCAtMzMwNiw2ICszMzA3LDkgQEAgaW50ZWxfb3ByZWdpb25fbm90 aWZ5X2FkYXB0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgcGNpX3Bvd2VyX3Qgc3RhdGUpCj4g IH0KPiAgI2VuZGlmCj4gIAo+ICtjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqdmFsaWRhdGVfdmJ0 KGNvbnN0IHZvaWQgX19pb21lbSAqX3ZidCwKPiArCQkJc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIg KnNvdXJjZSk7Cj4gKwo+ICAvKiBpbnRlbF9hY3BpLmMgKi8KPiAgI2lmZGVmIENPTkZJR19BQ1BJ Cj4gIGV4dGVybiB2b2lkIGludGVsX3JlZ2lzdGVyX2RzbV9oYW5kbGVyKHZvaWQpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9iaW9zLmMKPiBpbmRleCAwYmYwOTQyLi4xOTMyYTg2IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IEBAIC0xMjI3LDQ5ICsxMjI3LDYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIGludGVsX25vX29wcmVnaW9uX3ZidFtdID0gewo+ICAJ eyB9Cj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKnZhbGlkYXRl X3ZidChjb25zdCB2b2lkIF9faW9tZW0gKl9iYXNlLAo+IC0JCQkJCSAgICAgc2l6ZV90IHNpemUs Cj4gLQkJCQkJICAgICBjb25zdCB2b2lkIF9faW9tZW0gKl92YnQsCj4gLQkJCQkJICAgICBjb25z dCBjaGFyICpzb3VyY2UpCj4gLXsKPiAtCS8qCj4gLQkgKiBUaGlzIGlzIHRoZSBvbmUgcGxhY2Ug d2hlcmUgd2UgZXhwbGljaXRseSBkaXNjYXJkIHRoZSBhZGRyZXNzIHNwYWNlCj4gLQkgKiAoX19p b21lbSkgb2YgdGhlIEJJT1MvVkJULiAoQW5kIHRoaXMgd2lsbCBjYXVzZSBhIHNwYXJzZSBjb21w bGFpbnQuKQo+IC0JICogRnJvbSBub3cgb24gZXZlcnl0aGluZyBpcyBiYXNlZCBvbiAnYmFzZScs IGFuZCB0cmVhdGVkIGFzIHJlZ3VsYXIKPiAtCSAqIG1lbW9yeS4KPiAtCSAqLwo+IC0JY29uc3Qg dm9pZCAqYmFzZSA9IChjb25zdCB2b2lkICopIF9iYXNlOwo+IC0Jc2l6ZV90IG9mZnNldCA9IF92 YnQgLSBfYmFzZTsKPiAtCWNvbnN0IHN0cnVjdCB2YnRfaGVhZGVyICp2YnQgPSBiYXNlICsgb2Zm c2V0Owo+IC0JY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYjsKPiAtCj4gLQlpZiAob2Zmc2V0 ICsgc2l6ZW9mKHN0cnVjdCB2YnRfaGVhZGVyKSA+IHNpemUpIHsKPiAtCQlEUk1fREVCVUdfRFJJ VkVSKCJWQlQgaGVhZGVyIGluY29tcGxldGVcbiIpOwo+IC0JCXJldHVybiBOVUxMOwo+IC0JfQo+ IC0KPiAtCWlmIChtZW1jbXAodmJ0LT5zaWduYXR1cmUsICIkVkJUIiwgNCkpIHsKPiAtCQlEUk1f REVCVUdfRFJJVkVSKCJWQlQgaW52YWxpZCBzaWduYXR1cmVcbiIpOwo+IC0JCXJldHVybiBOVUxM Owo+IC0JfQo+IC0KPiAtCW9mZnNldCArPSB2YnQtPmJkYl9vZmZzZXQ7Cj4gLQlpZiAob2Zmc2V0 ICsgc2l6ZW9mKHN0cnVjdCBiZGJfaGVhZGVyKSA+IHNpemUpIHsKPiAtCQlEUk1fREVCVUdfRFJJ VkVSKCJCREIgaGVhZGVyIGluY29tcGxldGVcbiIpOwo+IC0JCXJldHVybiBOVUxMOwo+IC0JfQo+ IC0KPiAtCWJkYiA9IGJhc2UgKyBvZmZzZXQ7Cj4gLQlpZiAob2Zmc2V0ICsgYmRiLT5iZGJfc2l6 ZSA+IHNpemUpIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVSKCJCREIgaW5jb21wbGV0ZVxuIik7Cj4g LQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4gLQo+IC0JRFJNX0RFQlVHX0tNUygiVXNpbmcgVkJUIGZy b20gJXM6ICUyMHNcbiIsCj4gLQkJICAgICAgc291cmNlLCB2YnQtPnNpZ25hdHVyZSk7Cj4gLQly ZXR1cm4gYmRiOwo+IC19Cj4gLQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmZp bmRfdmJ0KHZvaWQgX19pb21lbSAqYmlvcywgc2l6ZV90IHNpemUpCj4gIHsKPiAgCWNvbnN0IHN0 cnVjdCBiZGJfaGVhZGVyICpiZGIgPSBOVUxMOwo+IEBAIC0xMjc4LDcgKzEyMzUsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmZpbmRfdmJ0KHZvaWQgX19pb21lbSAqYmlvcywg c2l6ZV90IHNpemUpCj4gIAkvKiBTY291ciBtZW1vcnkgbG9va2luZyBmb3IgdGhlIFZCVCBzaWdu YXR1cmUuICovCj4gIAlmb3IgKGkgPSAwOyBpICsgNCA8IHNpemU7IGkrKykgewo+ICAJCWlmIChp b3JlYWQzMihiaW9zICsgaSkgPT0gKigoY29uc3QgdTMyICopICIkVkJUIikpIHsKPiAtCQkJYmRi ID0gdmFsaWRhdGVfdmJ0KGJpb3MsIHNpemUsIGJpb3MgKyBpLCAiUENJIFJPTSIpOwo+ICsJCQli ZGIgPSB2YWxpZGF0ZV92YnQoYmlvcyArIGksIHNpemUgLSBpLCAiUENJIFJPTSIpOwo+ICAJCQli cmVhazsKPiAgCQl9Cj4gIAl9Cj4gQEAgLTEzMDgsMTAgKzEyNjUsOCBAQCBpbnRlbF9wYXJzZV9i aW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaW5pdF92YnRfZGVmYXVsdHMoZGV2 X3ByaXYpOwo+ICAKPiAtCS8qIFhYWCBTaG91bGQgdGhpcyB2YWxpZGF0aW9uIGJlIG1vdmVkIHRv IGludGVsX29wcmVnaW9uLmM/ICovCj4gIAlpZiAoIWRtaV9jaGVja19zeXN0ZW0oaW50ZWxfbm9f b3ByZWdpb25fdmJ0KSAmJiBkZXZfcHJpdi0+b3ByZWdpb24udmJ0KQo+IC0JCWJkYiA9IHZhbGlk YXRlX3ZidChkZXZfcHJpdi0+b3ByZWdpb24uaGVhZGVyLCBPUFJFR0lPTl9TSVpFLAo+IC0JCQkJ ICAgZGV2X3ByaXYtPm9wcmVnaW9uLnZidCwgIk9wUmVnaW9uIik7Cj4gKwkJYmRiID0gZGV2X3By aXYtPmJkYl9zdGFydDsKPiAgCj4gIAlpZiAoYmRiID09IE5VTEwpIHsKPiAgCQlzaXplX3Qgc2l6 ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiBpbmRleCBmNDYyMzFmLi4z YTQzZGI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9u LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCj4gQEAgLTMy LDIxMCArMzIsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICNpbmNsdWRlICJp OTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gLQo+IC0jZGVmaW5lIFBDSV9B U0xFCQkweGU0Cj4gLSNkZWZpbmUgUENJX0FTTFMJCTB4ZmMKPiAtI2RlZmluZSBQQ0lfU1dTQ0kJ CTB4ZTgKPiAtI2RlZmluZSBQQ0lfU1dTQ0lfU0NJU0VMCSgxIDw8IDE1KQo+IC0jZGVmaW5lIFBD SV9TV1NDSV9HU1NDSUUJKDEgPDwgMCkKPiAtCj4gLSNkZWZpbmUgT1BSRUdJT05fSEVBREVSX09G RlNFVCAwCj4gLSNkZWZpbmUgT1BSRUdJT05fQUNQSV9PRkZTRVQgICAweDEwMAo+IC0jZGVmaW5l ICAgQUNQSV9DTElEIDB4MDFhYyAvKiBjdXJyZW50IGxpZCBzdGF0ZSBpbmRpY2F0b3IgKi8KPiAt I2RlZmluZSAgIEFDUElfQ0RDSyAweDAxYjAgLyogY3VycmVudCBkb2NraW5nIHN0YXRlIGluZGlj YXRvciAqLwo+IC0jZGVmaW5lIE9QUkVHSU9OX1NXU0NJX09GRlNFVCAgMHgyMDAKPiAtI2RlZmlu ZSBPUFJFR0lPTl9BU0xFX09GRlNFVCAgIDB4MzAwCj4gLSNkZWZpbmUgT1BSRUdJT05fVkJUX09G RlNFVCAgICAweDQwMAo+IC0KPiAtI2RlZmluZSBPUFJFR0lPTl9TSUdOQVRVUkUgIkludGVsR3Jh cGhpY3NNZW0iCj4gLSNkZWZpbmUgTUJPWF9BQ1BJICAgICAgKDE8PDApCj4gLSNkZWZpbmUgTUJP WF9TV1NDSSAgICAgKDE8PDEpCj4gLSNkZWZpbmUgTUJPWF9BU0xFICAgICAgKDE8PDIpCj4gLSNk ZWZpbmUgTUJPWF9BU0xFX0VYVCAgKDE8PDQpCj4gLQo+IC1zdHJ1Y3Qgb3ByZWdpb25faGVhZGVy IHsKPiAtCXU4IHNpZ25hdHVyZVsxNl07Cj4gLQl1MzIgc2l6ZTsKPiAtCXUzMiBvcHJlZ2lvbl92 ZXI7Cj4gLQl1OCBiaW9zX3ZlclszMl07Cj4gLQl1OCB2Ymlvc192ZXJbMTZdOwo+IC0JdTggZHJp dmVyX3ZlclsxNl07Cj4gLQl1MzIgbWJveGVzOwo+IC0JdTMyIGRyaXZlcl9tb2RlbDsKPiAtCXUz MiBwY29uOwo+IC0JdTggZHZlclszMl07Cj4gLQl1OCByc3ZkWzEyNF07Cj4gLX0gX19wYWNrZWQ7 Cj4gLQo+IC0vKiBPcFJlZ2lvbiBtYWlsYm94ICMxOiBwdWJsaWMgQUNQSSBtZXRob2RzICovCj4g LXN0cnVjdCBvcHJlZ2lvbl9hY3BpIHsKPiAtCXUzMiBkcmR5OyAgICAgICAvKiBkcml2ZXIgcmVh ZGluZXNzICovCj4gLQl1MzIgY3N0czsgICAgICAgLyogbm90aWZpY2F0aW9uIHN0YXR1cyAqLwo+ IC0JdTMyIGNldnQ7ICAgICAgIC8qIGN1cnJlbnQgZXZlbnQgKi8KPiAtCXU4IHJzdmQxWzIwXTsK PiAtCXUzMiBkaWRsWzhdOyAgICAvKiBzdXBwb3J0ZWQgZGlzcGxheSBkZXZpY2VzIElEIGxpc3Qg Ki8KPiAtCXUzMiBjcGRsWzhdOyAgICAvKiBjdXJyZW50bHkgcHJlc2VudGVkIGRpc3BsYXkgbGlz dCAqLwo+IC0JdTMyIGNhZGxbOF07ICAgIC8qIGN1cnJlbnRseSBhY3RpdmUgZGlzcGxheSBsaXN0 ICovCj4gLQl1MzIgbmFkbFs4XTsgICAgLyogbmV4dCBhY3RpdmUgZGV2aWNlcyBsaXN0ICovCj4g LQl1MzIgYXNscDsgICAgICAgLyogQVNMIHNsZWVwIHRpbWUtb3V0ICovCj4gLQl1MzIgdGlkeDsg ICAgICAgLyogdG9nZ2xlIHRhYmxlIGluZGV4ICovCj4gLQl1MzIgY2hwZDsgICAgICAgLyogY3Vy cmVudCBob3RwbHVnIGVuYWJsZSBpbmRpY2F0b3IgKi8KPiAtCXUzMiBjbGlkOyAgICAgICAvKiBj dXJyZW50IGxpZCBzdGF0ZSovCj4gLQl1MzIgY2RjazsgICAgICAgLyogY3VycmVudCBkb2NraW5n IHN0YXRlICovCj4gLQl1MzIgc3hzdzsgICAgICAgLyogU3ggc3RhdGUgcmVzdW1lICovCj4gLQl1 MzIgZXZ0czsgICAgICAgLyogQVNMIHN1cHBvcnRlZCBldmVudHMgKi8KPiAtCXUzMiBjbm90OyAg ICAgICAvKiBjdXJyZW50IE9TIG5vdGlmaWNhdGlvbiAqLwo+IC0JdTMyIG5yZHk7ICAgICAgIC8q IGRyaXZlciBzdGF0dXMgKi8KPiAtCXUzMiBkaWQyWzddOwkvKiBleHRlbmRlZCBzdXBwb3J0ZWQg ZGlzcGxheSBkZXZpY2VzIElEIGxpc3QgKi8KPiAtCXUzMiBjcGQyWzddOwkvKiBleHRlbmRlZCBh dHRhY2hlZCBkaXNwbGF5IGRldmljZXMgbGlzdCAqLwo+IC0JdTggcnN2ZDJbNF07Cj4gLX0gX19w YWNrZWQ7Cj4gLQo+IC0vKiBPcFJlZ2lvbiBtYWlsYm94ICMyOiBTV1NDSSAqLwo+IC1zdHJ1Y3Qg b3ByZWdpb25fc3dzY2kgewo+IC0JdTMyIHNjaWM7ICAgICAgIC8qIFNXU0NJIGNvbW1hbmR8c3Rh dHVzfGRhdGEgKi8KPiAtCXUzMiBwYXJtOyAgICAgICAvKiBjb21tYW5kIHBhcmFtZXRlcnMgKi8K PiAtCXUzMiBkc2xwOyAgICAgICAvKiBkcml2ZXIgc2xlZXAgdGltZS1vdXQgKi8KPiAtCXU4IHJz dmRbMjQ0XTsKPiAtfSBfX3BhY2tlZDsKPiAtCj4gLS8qIE9wUmVnaW9uIG1haWxib3ggIzM6IEFT TEUgKi8KPiAtc3RydWN0IG9wcmVnaW9uX2FzbGUgewo+IC0JdTMyIGFyZHk7ICAgICAgIC8qIGRy aXZlciByZWFkaW5lc3MgKi8KPiAtCXUzMiBhc2xjOyAgICAgICAvKiBBU0xFIGludGVycnVwdCBj b21tYW5kICovCj4gLQl1MzIgdGNoZTsgICAgICAgLyogdGVjaG5vbG9neSBlbmFibGVkIGluZGlj YXRvciAqLwo+IC0JdTMyIGFsc2k7ICAgICAgIC8qIGN1cnJlbnQgQUxTIGlsbHVtaW5hbmNlIHJl YWRpbmcgKi8KPiAtCXUzMiBiY2xwOyAgICAgICAvKiBiYWNrbGlnaHQgYnJpZ2h0bmVzcyB0byBz ZXQgKi8KPiAtCXUzMiBwZml0OyAgICAgICAvKiBwYW5lbCBmaXR0aW5nIHN0YXRlICovCj4gLQl1 MzIgY2JsdjsgICAgICAgLyogY3VycmVudCBicmlnaHRuZXNzIGxldmVsICovCj4gLQl1MTYgYmNs bVsyMF07ICAgLyogYmFja2xpZ2h0IGxldmVsIGR1dHkgY3ljbGUgbWFwcGluZyB0YWJsZSAqLwo+ IC0JdTMyIGNwZm07ICAgICAgIC8qIGN1cnJlbnQgcGFuZWwgZml0dGluZyBtb2RlICovCj4gLQl1 MzIgZXBmbTsgICAgICAgLyogZW5hYmxlZCBwYW5lbCBmaXR0aW5nIG1vZGVzICovCj4gLQl1OCBw bHV0Wzc0XTsgICAgLyogcGFuZWwgTFVUIGFuZCBpZGVudGlmaWVyICovCj4gLQl1MzIgcGZtYjsg ICAgICAgLyogUFdNIGZyZXEgYW5kIG1pbiBicmlnaHRuZXNzICovCj4gLQl1MzIgY2RkdjsgICAg ICAgLyogY29sb3IgY29ycmVjdGlvbiBkZWZhdWx0IHZhbHVlcyAqLwo+IC0JdTMyIHBjZnQ7ICAg ICAgIC8qIHBvd2VyIGNvbnNlcnZhdGlvbiBmZWF0dXJlcyAqLwo+IC0JdTMyIHNyb3Q7ICAgICAg IC8qIHN1cHBvcnRlZCByb3RhdGlvbiBhbmdsZXMgKi8KPiAtCXUzMiBpdWVyOyAgICAgICAvKiBJ VUVSIGV2ZW50cyAqLwo+IC0JdTY0IGZkc3M7Cj4gLQl1MzIgZmRzcDsKPiAtCXUzMiBzdGF0Owo+ IC0JdTY0IHJ2ZGE7CS8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgcmF3IHZidCBkYXRhICovCj4gLQl1 MzIgcnZkczsJLyogU2l6ZSBvZiByYXcgdmJ0IGRhdGEgKi8KPiAtCXU4IHJzdmRbNThdOwo+IC19 IF9fcGFja2VkOwo+IC0KPiAtLyogRHJpdmVyIHJlYWRpbmVzcyBpbmRpY2F0b3IgKi8KPiAtI2Rl ZmluZSBBU0xFX0FSRFlfUkVBRFkJCSgxIDw8IDApCj4gLSNkZWZpbmUgQVNMRV9BUkRZX05PVF9S RUFEWQkoMCA8PCAwKQo+IC0KPiAtLyogQVNMRSBJbnRlcnJ1cHQgQ29tbWFuZCAoQVNMQykgYml0 cyAqLwo+IC0jZGVmaW5lIEFTTENfU0VUX0FMU19JTExVTQkJKDEgPDwgMCkKPiAtI2RlZmluZSBB U0xDX1NFVF9CQUNLTElHSFQJCSgxIDw8IDEpCj4gLSNkZWZpbmUgQVNMQ19TRVRfUEZJVAkJCSgx IDw8IDIpCj4gLSNkZWZpbmUgQVNMQ19TRVRfUFdNX0ZSRVEJCSgxIDw8IDMpCj4gLSNkZWZpbmUg QVNMQ19TVVBQT1JURURfUk9UQVRJT05fQU5HTEVTCSgxIDw8IDQpCj4gLSNkZWZpbmUgQVNMQ19C VVRUT05fQVJSQVkJCSgxIDw8IDUpCj4gLSNkZWZpbmUgQVNMQ19DT05WRVJUSUJMRV9JTkRJQ0FU T1IJKDEgPDwgNikKPiAtI2RlZmluZSBBU0xDX0RPQ0tJTkdfSU5ESUNBVE9SCQkoMSA8PCA3KQo+ IC0jZGVmaW5lIEFTTENfSVNDVF9TVEFURV9DSEFOR0UJCSgxIDw8IDgpCj4gLSNkZWZpbmUgQVNM Q19SRVFfTVNLCQkJMHgxZmYKPiAtLyogcmVzcG9uc2UgYml0cyAqLwo+IC0jZGVmaW5lIEFTTENf QUxTX0lMTFVNX0ZBSUxFRAkJKDEgPDwgMTApCj4gLSNkZWZpbmUgQVNMQ19CQUNLTElHSFRfRkFJ TEVECQkoMSA8PCAxMikKPiAtI2RlZmluZSBBU0xDX1BGSVRfRkFJTEVECQkoMSA8PCAxNCkKPiAt I2RlZmluZSBBU0xDX1BXTV9GUkVRX0ZBSUxFRAkJKDEgPDwgMTYpCj4gLSNkZWZpbmUgQVNMQ19S T1RBVElPTl9BTkdMRVNfRkFJTEVECSgxIDw8IDE4KQo+IC0jZGVmaW5lIEFTTENfQlVUVE9OX0FS UkFZX0ZBSUxFRAkoMSA8PCAyMCkKPiAtI2RlZmluZSBBU0xDX0NPTlZFUlRJQkxFX0ZBSUxFRAkJ KDEgPDwgMjIpCj4gLSNkZWZpbmUgQVNMQ19ET0NLSU5HX0ZBSUxFRAkJKDEgPDwgMjQpCj4gLSNk ZWZpbmUgQVNMQ19JU0NUX1NUQVRFX0ZBSUxFRAkJKDEgPDwgMjYpCj4gLQo+IC0vKiBUZWNobm9s b2d5IGVuYWJsZWQgaW5kaWNhdG9yICovCj4gLSNkZWZpbmUgQVNMRV9UQ0hFX0FMU19FTgkoMSA8 PCAwKQo+IC0jZGVmaW5lIEFTTEVfVENIRV9CTENfRU4JKDEgPDwgMSkKPiAtI2RlZmluZSBBU0xF X1RDSEVfUEZJVF9FTgkoMSA8PCAyKQo+IC0jZGVmaW5lIEFTTEVfVENIRV9QRk1CX0VOCSgxIDw8 IDMpCj4gLQo+IC0vKiBBU0xFIGJhY2tsaWdodCBicmlnaHRuZXNzIHRvIHNldCAqLwo+IC0jZGVm aW5lIEFTTEVfQkNMUF9WQUxJRCAgICAgICAgICAgICAgICAoMTw8MzEpCj4gLSNkZWZpbmUgQVNM RV9CQ0xQX01TSyAgICAgICAgICAofigxPDwzMSkpCj4gLQo+IC0vKiBBU0xFIHBhbmVsIGZpdHRp bmcgcmVxdWVzdCAqLwo+IC0jZGVmaW5lIEFTTEVfUEZJVF9WQUxJRCAgICAgICAgICgxPDwzMSkK PiAtI2RlZmluZSBBU0xFX1BGSVRfQ0VOVEVSICgxPDwwKQo+IC0jZGVmaW5lIEFTTEVfUEZJVF9T VFJFVENIX1RFWFQgKDE8PDEpCj4gLSNkZWZpbmUgQVNMRV9QRklUX1NUUkVUQ0hfR0ZYICgxPDwy KQo+IC0KPiAtLyogUFdNIGZyZXF1ZW5jeSBhbmQgbWluaW11bSBicmlnaHRuZXNzICovCj4gLSNk ZWZpbmUgQVNMRV9QRk1CX0JSSUdIVE5FU1NfTUFTSyAoMHhmZikKPiAtI2RlZmluZSBBU0xFX1BG TUJfQlJJR0hUTkVTU19WQUxJRCAoMTw8OCkKPiAtI2RlZmluZSBBU0xFX1BGTUJfUFdNX01BU0sg KDB4N2ZmZmZlMDApCj4gLSNkZWZpbmUgQVNMRV9QRk1CX1BXTV9WQUxJRCAoMTw8MzEpCj4gLQo+ IC0jZGVmaW5lIEFTTEVfQ0JMVl9WQUxJRCAgICAgICAgICgxPDwzMSkKPiAtCj4gLS8qIElVRVIg Ki8KPiAtI2RlZmluZSBBU0xFX0lVRVJfRE9DS0lORwkJKDEgPDwgNykKPiAtI2RlZmluZSBBU0xF X0lVRVJfQ09OVkVSVElCTEUJCSgxIDw8IDYpCj4gLSNkZWZpbmUgQVNMRV9JVUVSX1JPVEFUSU9O X0xPQ0tfQlROCSgxIDw8IDQpCj4gLSNkZWZpbmUgQVNMRV9JVUVSX1ZPTFVNRV9ET1dOX0JUTgko MSA8PCAzKQo+IC0jZGVmaW5lIEFTTEVfSVVFUl9WT0xVTUVfVVBfQlROCQkoMSA8PCAyKQo+IC0j ZGVmaW5lIEFTTEVfSVVFUl9XSU5ET1dTX0JUTgkJKDEgPDwgMSkKPiAtI2RlZmluZSBBU0xFX0lV RVJfUE9XRVJfQlROCQkoMSA8PCAwKQo+IC0KPiAtLyogU29mdHdhcmUgU3lzdGVtIENvbnRyb2wg SW50ZXJydXB0IChTV1NDSSkgKi8KPiAtI2RlZmluZSBTV1NDSV9TQ0lDX0lORElDQVRPUgkJKDEg PDwgMCkKPiAtI2RlZmluZSBTV1NDSV9TQ0lDX01BSU5fRlVOQ1RJT05fU0hJRlQJMQo+IC0jZGVm aW5lIFNXU0NJX1NDSUNfTUFJTl9GVU5DVElPTl9NQVNLCSgweGYgPDwgMSkKPiAtI2RlZmluZSBT V1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElGVAk4Cj4gLSNkZWZpbmUgU1dTQ0lfU0NJQ19TVUJf RlVOQ1RJT05fTUFTSwkoMHhmZiA8PCA4KQo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJB TUVURVJfU0hJRlQJOAo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJBTUVURVJfTUFTSwko MHhmZiA8PCA4KQo+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfU0hJRlQJNQo+IC0j ZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfTUFTSwkoNyA8PCA1KQo+IC0jZGVmaW5lIFNX U0NJX1NDSUNfRVhJVF9TVEFUVVNfU1VDQ0VTUwkxCj4gLQo+IC0jZGVmaW5lIFNXU0NJX0ZVTkNU SU9OX0NPREUobWFpbiwgc3ViKSBcCj4gLQkoKG1haW4pIDw8IFNXU0NJX1NDSUNfTUFJTl9GVU5D VElPTl9TSElGVCB8IFwKPiAtCSAoc3ViKSA8PCBTV1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElG VCkKPiAtCj4gLS8qIFNXU0NJOiBHZXQgQklPUyBEYXRhIChHQkRBKSAqLwo+IC0jZGVmaW5lIFNX U0NJX0dCREEJCQk0Cj4gLSNkZWZpbmUgU1dTQ0lfR0JEQV9TVVBQT1JURURfQ0FMTFMJU1dTQ0lf RlVOQ1RJT05fQ09ERShTV1NDSV9HQkRBLCAwKQo+IC0jZGVmaW5lIFNXU0NJX0dCREFfUkVRVUVT VEVEX0NBTExCQUNLUwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDEpCj4gLSNkZWZp bmUgU1dTQ0lfR0JEQV9CT09UX0RJU1BMQVlfUFJFRglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJ X0dCREEsIDQpCj4gLSNkZWZpbmUgU1dTQ0lfR0JEQV9QQU5FTF9ERVRBSUxTCVNXU0NJX0ZVTkNU SU9OX0NPREUoU1dTQ0lfR0JEQSwgNSkKPiAtI2RlZmluZSBTV1NDSV9HQkRBX1RWX1NUQU5EQVJE CQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDYpCj4gLSNkZWZpbmUgU1dTQ0lfR0JE QV9JTlRFUk5BTF9HUkFQSElDUwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDcpCj4g LSNkZWZpbmUgU1dTQ0lfR0JEQV9TUFJFQURfU1BFQ1RSVU0JU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9HQkRBLCAxMCkKPiAtCj4gLS8qIFNXU0NJOiBTeXN0ZW0gQklPUyBDYWxsYmFja3MgKFNC Q0IpICovCj4gLSNkZWZpbmUgU1dTQ0lfU0JDQgkJCTYKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1NV UFBPUlRFRF9DQUxMQkFDS1MJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAwKQo+IC0j ZGVmaW5lIFNXU0NJX1NCQ0JfSU5JVF9DT01QTEVUSU9OCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dT Q0lfU0JDQiwgMSkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1BSRV9ISVJFU19TRVRfTU9ERQlTV1ND SV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDMpCj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9QT1NU X0hJUkVTX1NFVF9NT0RFCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgNCkKPiAtI2Rl ZmluZSBTV1NDSV9TQkNCX0RJU1BMQVlfU1dJVENICVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lf U0JDQiwgNSkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9UVl9GT1JNQVQJU1dTQ0lfRlVOQ1RJ T05fQ09ERShTV1NDSV9TQkNCLCA2KQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfQURBUFRFUl9QT1dF Ul9TVEFURQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDcpCj4gLSNkZWZpbmUgU1dT Q0lfU0JDQl9ESVNQTEFZX1BPV0VSX1NUQVRFCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JD QiwgOCkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9CT09UX0RJU1BMQVkJU1dTQ0lfRlVOQ1RJ T05fQ09ERShTV1NDSV9TQkNCLCA5KQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfU0VUX1BBTkVMX0RF VEFJTFMJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxMCkKPiAtI2RlZmluZSBTV1ND SV9TQkNCX1NFVF9JTlRFUk5BTF9HRlgJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAx MSkKPiAtI2RlZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfVE9fRE9TX0ZTCVNXU0NJX0ZVTkNU SU9OX0NPREUoU1dTQ0lfU0JDQiwgMTYpCj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9TVVNQRU5EX1JF U1VNRQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDE3KQo+IC0jZGVmaW5lIFNXU0NJ X1NCQ0JfU0VUX1NQUkVBRF9TUEVDVFJVTQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0Is IDE4KQo+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfUE9TVF9WQkVfUE0JCVNXU0NJX0ZVTkNUSU9OX0NP REUoU1dTQ0lfU0JDQiwgMTkpCj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9FTkFCTEVfRElTQUJMRV9B VURJTwlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDIxKQo+IC0KPiAtI2RlZmluZSBB Q1BJX09USEVSX09VVFBVVCAoMDw8OCkKPiAtI2RlZmluZSBBQ1BJX1ZHQV9PVVRQVVQgKDE8PDgp Cj4gLSNkZWZpbmUgQUNQSV9UVl9PVVRQVVQgKDI8PDgpCj4gLSNkZWZpbmUgQUNQSV9ESUdJVEFM X09VVFBVVCAoMzw8OCkKPiAtI2RlZmluZSBBQ1BJX0xWRFNfT1VUUFVUICg0PDw4KQo+IC0KPiAt I2RlZmluZSBNQVhfRFNMUAkxNTAwCj4gKyNpbmNsdWRlICJpbnRlbF9vcHJlZ2lvbi5oIgo+ICAK PiAgI2lmZGVmIENPTkZJR19BQ1BJCj4gIHN0YXRpYyBpbnQgc3dzY2koc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTMyIGZ1bmN0aW9uLCB1MzIgcGFybSwgdTMyICpwYXJtX291dCkKPiBAQCAtODky LDEzICs2ODksNTUgQEAgc3RhdGljIHZvaWQgc3dzY2lfc2V0dXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgc3RhdGljIGlubGluZSB2b2lkIHN3c2NpX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpIHt9Cj4gICNlbmRpZiAgLyogQ09ORklHX0FDUEkgKi8KPiAgCj4gK2NvbnN0IHN0cnVj dCBiZGJfaGVhZGVyICp2YWxpZGF0ZV92YnQoY29uc3Qgdm9pZCBfX2lvbWVtICpfdmJ0LAo+ICsJ CQkJCXNpemVfdCBzaXplLAo+ICsJCQkJCWNvbnN0IGNoYXIgKnNvdXJjZSkKPiArewo+ICsJLyoK PiArCSAqIFRoaXMgaXMgdGhlIG9uZSBwbGFjZSB3aGVyZSB3ZSBleHBsaWNpdGx5IGRpc2NhcmQg dGhlIGFkZHJlc3Mgc3BhY2UKPiArCSAqIChfX2lvbWVtKSBvZiB0aGUgQklPUy9WQlQuIChBbmQg dGhpcyB3aWxsIGNhdXNlIGEgc3BhcnNlIGNvbXBsYWludC4pCj4gKwkgKi8KPiArCWNvbnN0IHN0 cnVjdCB2YnRfaGVhZGVyICp2YnQgPSAoY29uc3Qgc3RydWN0IHZidF9oZWFkZXIgKilfdmJ0Owo+ ICsJY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYjsKPiArCXNpemVfdCBvZmZzZXQ7Cj4gKwo+ ICsJaWYgKHNpemVvZihzdHJ1Y3QgdmJ0X2hlYWRlcikgPiBzaXplKSB7Cj4gKwkJRFJNX0RFQlVH X0RSSVZFUigiVkJUIGhlYWRlciBpbmNvbXBsZXRlXG4iKTsKPiArCQlyZXR1cm4gTlVMTDsKPiAr CX0KPiArCj4gKwlpZiAobWVtY21wKHZidC0+c2lnbmF0dXJlLCAiJFZCVCIsIDQpKSB7Cj4gKwkJ RFJNX0RFQlVHX0RSSVZFUigiVkJUIGludmFsaWQgc2lnbmF0dXJlXG4iKTsKPiArCQlyZXR1cm4g TlVMTDsKPiArCX0KPiArCj4gKwlvZmZzZXQgPSB2YnQtPmJkYl9vZmZzZXQ7Cj4gKwlpZiAob2Zm c2V0ICsgc2l6ZW9mKHN0cnVjdCBiZGJfaGVhZGVyKSA+IHNpemUpIHsKPiArCQlEUk1fREVCVUdf RFJJVkVSKCJCREIgaGVhZGVyIGluY29tcGxldGVcbiIpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJ fQo+ICsKPiArCWJkYiA9IChjb25zdCB2b2lkICopX3ZidCArIG9mZnNldDsKPiArCWlmIChvZmZz ZXQgKyBiZGItPmJkYl9zaXplID4gc2l6ZSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIkJEQiBp bmNvbXBsZXRlXG4iKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlEUk1fREVCVUdf S01TKCJVc2luZyBWQlQgZnJvbSAlczogJTIwc1xuIiwKPiArCQkJc291cmNlLCB2YnQtPnNpZ25h dHVyZSk7Cj4gKwlyZXR1cm4gYmRiOwo+ICt9Cj4gKwo+ICBpbnQgaW50ZWxfb3ByZWdpb25fc2V0 dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9vcHJlZ2lv biAqb3ByZWdpb24gPSAmZGV2X3ByaXYtPm9wcmVnaW9uOwo+ICAJdm9pZCBfX2lvbWVtICpiYXNl Owo+ICsJdm9pZCBfX2lvbWVtICp2YnRfYmFzZTsKPiAgCXUzMiBhc2xzLCBtYm94ZXM7Cj4gIAlj aGFyIGJ1ZltzaXplb2YoT1BSRUdJT05fU0lHTkFUVVJFKV07Cj4gKwljb25zdCBzdHJ1Y3QgYmRi X2hlYWRlciAqYmRiID0gTlVMTDsKPiArCXNpemVfdCBzaXplOwo+ICAJaW50IGVyciA9IDA7Cj4g IAo+ICAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgb3ByZWdpb25faGVhZGVyKSAhPSAweDEw MCk7Cj4gQEAgLTkxNyw3ICs3NTYsNyBAQCBpbnQgaW50ZWxfb3ByZWdpb25fc2V0dXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCUlOSVRfV09SSygmb3ByZWdpb24tPmFzbGVfd29yaywgYXNs ZV93b3JrKTsKPiAgI2VuZGlmCj4gIAo+IC0JYmFzZSA9IGFjcGlfb3NfaW9yZW1hcChhc2xzLCBP UFJFR0lPTl9TSVpFKTsKPiArCWJhc2UgPSBhY3BpX29zX2lvcmVtYXAoYXNscywgT1BSRUdJT05f VkJUX09GRlNFVCk7Cj4gIAlpZiAoIWJhc2UpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+IEBA IC05MjksNyArNzY4LDMzIEBAIGludCBpbnRlbF9vcHJlZ2lvbl9zZXR1cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAJCWdvdG8gZXJyX291dDsKPiAgCX0KPiAgCW9wcmVnaW9uLT5oZWFkZXIg PSBiYXNlOwo+IC0Jb3ByZWdpb24tPnZidCA9IGJhc2UgKyBPUFJFR0lPTl9WQlRfT0ZGU0VUOwo+ ICsJLyogQXNzaWduaW5nIHRoZSBhbHNlIHRvIHRoZSBtYWlsYm94IDMgb2YgdGhlIG9wcmVnaW9u ICovCj4gKwlvcHJlZ2lvbi0+YXNsZSA9IGJhc2UgKyBPUFJFR0lPTl9BU0xFX09GRlNFVDsKPiAr Cj4gKwkvKgo+ICsJICogTm9uLXplcm8gdmFsdWUgaW4gcnZkYSBmaWVsZCBpcyBhbiBpbmRpY2F0 aW9uIHRvIGRyaXZlciB0aGF0IGEKPiArCSAqIHZhbGlkIFJhdyBWQlQgaXMgc3RvcmVkIGluIHRo YXQgYWRkcmVzcyBhbmQgZHJpdmVyIHNob3VsZCBub3QgcmVmZXIKPiArCSAqIHRvIG1haWxib3g0 IGZvciBnZXR0aW5nIFZCVC4KPiArCSAqLwo+ICsJaWYgKG9wcmVnaW9uLT5oZWFkZXItPm9wcmVn aW9uX3ZlciA+PSAyICYmIG9wcmVnaW9uLT5hc2xlLT5ydmRhKSB7Cj4gKwkJCXNpemUgPSBvcHJl Z2lvbi0+YXNsZS0+cnZkczsKPiArCQkJdmJ0X2Jhc2UgPSBhY3BpX29zX2lvcmVtYXAob3ByZWdp b24tPmFzbGUtPnJ2ZGEsCj4gKwkJCQkJc2l6ZSk7Cj4gKwl9IGVsc2Ugewo+ICsJCQlzaXplID0g T1BSRUdJT05fU0laRSAtIE9QUkVHSU9OX1ZCVF9PRkZTRVQ7Cj4gKwkJCXZidF9iYXNlID0gYWNw aV9vc19pb3JlbWFwKGFzbHMgKyBPUFJFR0lPTl9WQlRfT0ZGU0VULAo+ICsJCQkJCXNpemUpOwo+ ICsJfQo+ICsKPiArCWJkYiA9IHZhbGlkYXRlX3ZidCh2YnRfYmFzZSwgc2l6ZSwgIk9wUmVnaW9u Iik7Cj4gKwo+ICsJaWYgKGJkYiA9PSBOVUxMKSB7Cj4gKwkJZXJyID0gLUVJTlZBTDsKPiArCQln b3RvIGVycl92YnQ7Cj4gKwl9Cj4gKwo+ICsJZGV2X3ByaXYtPmJkYl9zdGFydCA9IGJkYjsKPiAr CW9wcmVnaW9uLT52YnQgPSB2YnRfYmFzZTsKPiAgCj4gIAlvcHJlZ2lvbi0+bGlkX3N0YXRlID0g YmFzZSArIEFDUElfQ0xJRDsKPiAgCj4gQEAgLTk1Myw2ICs4MTgsOCBAQCBpbnQgaW50ZWxfb3By ZWdpb25fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlyZXR1cm4gMDsKPiAg Cj4gK2Vycl92YnQ6Cj4gKwlpb3VubWFwKHZidF9iYXNlKTsKPiAgZXJyX291dDoKPiAgCWlvdW5t YXAoYmFzZSk7Cj4gIAlyZXR1cm4gZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vcHJlZ2lvbi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdp b24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYmNiNDVlYwo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5o Cj4gQEAgLTAsMCArMSwyMzAgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMDggSW50ZWwgQ29y cG9yYXRpb24gPGhvbmcubGl1QGludGVsLmNvbT4KPiArICogQ29weXJpZ2h0IDIwMDggUmVkIEhh dCA8bWpnQHJlZGhhdC5jb20+Cj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwo+ICsgKiBhIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUK PiArICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZwo+ICsgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4gKyAqIGRpc3RyaWJ1dGUsIHN1YiBs aWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KPiArICog cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvCj4gKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUKPiArICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPiArICogcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwKPiArICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gKyAqIE1FUkNIQU5UQUJJTElUWSwg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECj4gKyAqIE5PTi1JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTCBJTlRFTCBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRQo+ICsg KiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4KPiArICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KPiArICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ICsgKiBTT0ZUV0FSRS4KPiAr ICoKPiArICovCj4gKwo+ICsjZGVmaW5lIFBDSV9BU0xFCQkweGU0Cj4gKyNkZWZpbmUgUENJX0FT TFMJCTB4ZmMKPiArI2RlZmluZSBQQ0lfU1dTQ0kJCTB4ZTgKPiArI2RlZmluZSBQQ0lfU1dTQ0lf U0NJU0VMCSgxIDw8IDE1KQo+ICsjZGVmaW5lIFBDSV9TV1NDSV9HU1NDSUUJKDEgPDwgMCkKPiAr Cj4gKyNkZWZpbmUgT1BSRUdJT05fSEVBREVSX09GRlNFVCAwCj4gKyNkZWZpbmUgT1BSRUdJT05f QUNQSV9PRkZTRVQgICAweDEwMAo+ICsjZGVmaW5lICAgQUNQSV9DTElEIDB4MDFhYyAvKiBjdXJy ZW50IGxpZCBzdGF0ZSBpbmRpY2F0b3IgKi8KPiArI2RlZmluZSAgIEFDUElfQ0RDSyAweDAxYjAg LyogY3VycmVudCBkb2NraW5nIHN0YXRlIGluZGljYXRvciAqLwo+ICsjZGVmaW5lIE9QUkVHSU9O X1NXU0NJX09GRlNFVCAgMHgyMDAKPiArI2RlZmluZSBPUFJFR0lPTl9BU0xFX09GRlNFVCAgIDB4 MzAwCj4gKyNkZWZpbmUgT1BSRUdJT05fVkJUX09GRlNFVCAgICAweDQwMAo+ICsKPiArI2RlZmlu ZSBPUFJFR0lPTl9TSUdOQVRVUkUgIkludGVsR3JhcGhpY3NNZW0iCj4gKyNkZWZpbmUgTUJPWF9B Q1BJICAgICAgKDE8PDApCj4gKyNkZWZpbmUgTUJPWF9TV1NDSSAgICAgKDE8PDEpCj4gKyNkZWZp bmUgTUJPWF9BU0xFICAgICAgKDE8PDIpCj4gKyNkZWZpbmUgTUJPWF9BU0xFX0VYVCAgKDE8PDQp Cj4gKwo+ICtzdHJ1Y3Qgb3ByZWdpb25faGVhZGVyIHsKPiArCXU4IHNpZ25hdHVyZVsxNl07Cj4g Kwl1MzIgc2l6ZTsKPiArCXUzMiBvcHJlZ2lvbl92ZXI7Cj4gKwl1OCBiaW9zX3ZlclszMl07Cj4g Kwl1OCB2Ymlvc192ZXJbMTZdOwo+ICsJdTggZHJpdmVyX3ZlclsxNl07Cj4gKwl1MzIgbWJveGVz Owo+ICsJdTMyIGRyaXZlcl9tb2RlbDsKPiArCXUzMiBwY29uOwo+ICsJdTggZHZlclszMl07Cj4g Kwl1OCByc3ZkWzEyNF07Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICsvKiBPcFJlZ2lvbiBtYWlsYm94 ICMxOiBwdWJsaWMgQUNQSSBtZXRob2RzICovCj4gK3N0cnVjdCBvcHJlZ2lvbl9hY3BpIHsKPiAr CXUzMiBkcmR5OyAgICAgICAvKiBkcml2ZXIgcmVhZGluZXNzICovCj4gKwl1MzIgY3N0czsgICAg ICAgLyogbm90aWZpY2F0aW9uIHN0YXR1cyAqLwo+ICsJdTMyIGNldnQ7ICAgICAgIC8qIGN1cnJl bnQgZXZlbnQgKi8KPiArCXU4IHJzdmQxWzIwXTsKPiArCXUzMiBkaWRsWzhdOyAgICAvKiBzdXBw b3J0ZWQgZGlzcGxheSBkZXZpY2VzIElEIGxpc3QgKi8KPiArCXUzMiBjcGRsWzhdOyAgICAvKiBj dXJyZW50bHkgcHJlc2VudGVkIGRpc3BsYXkgbGlzdCAqLwo+ICsJdTMyIGNhZGxbOF07ICAgIC8q IGN1cnJlbnRseSBhY3RpdmUgZGlzcGxheSBsaXN0ICovCj4gKwl1MzIgbmFkbFs4XTsgICAgLyog bmV4dCBhY3RpdmUgZGV2aWNlcyBsaXN0ICovCj4gKwl1MzIgYXNscDsgICAgICAgLyogQVNMIHNs ZWVwIHRpbWUtb3V0ICovCj4gKwl1MzIgdGlkeDsgICAgICAgLyogdG9nZ2xlIHRhYmxlIGluZGV4 ICovCj4gKwl1MzIgY2hwZDsgICAgICAgLyogY3VycmVudCBob3RwbHVnIGVuYWJsZSBpbmRpY2F0 b3IgKi8KPiArCXUzMiBjbGlkOyAgICAgICAvKiBjdXJyZW50IGxpZCBzdGF0ZSovCj4gKwl1MzIg Y2RjazsgICAgICAgLyogY3VycmVudCBkb2NraW5nIHN0YXRlICovCj4gKwl1MzIgc3hzdzsgICAg ICAgLyogU3ggc3RhdGUgcmVzdW1lICovCj4gKwl1MzIgZXZ0czsgICAgICAgLyogQVNMIHN1cHBv cnRlZCBldmVudHMgKi8KPiArCXUzMiBjbm90OyAgICAgICAvKiBjdXJyZW50IE9TIG5vdGlmaWNh dGlvbiAqLwo+ICsJdTMyIG5yZHk7ICAgICAgIC8qIGRyaXZlciBzdGF0dXMgKi8KPiArCXUzMiBk aWQyWzddOwkvKiBleHRlbmRlZCBzdXBwb3J0ZWQgZGlzcGxheSBkZXZpY2VzIElEIGxpc3QgKi8K PiArCXUzMiBjcGQyWzddOwkvKiBleHRlbmRlZCBhdHRhY2hlZCBkaXNwbGF5IGRldmljZXMgbGlz dCAqLwo+ICsJdTggcnN2ZDJbNF07Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICsvKiBPcFJlZ2lvbiBt YWlsYm94ICMyOiBTV1NDSSAqLwo+ICtzdHJ1Y3Qgb3ByZWdpb25fc3dzY2kgewo+ICsJdTMyIHNj aWM7ICAgICAgIC8qIFNXU0NJIGNvbW1hbmR8c3RhdHVzfGRhdGEgKi8KPiArCXUzMiBwYXJtOyAg ICAgICAvKiBjb21tYW5kIHBhcmFtZXRlcnMgKi8KPiArCXUzMiBkc2xwOyAgICAgICAvKiBkcml2 ZXIgc2xlZXAgdGltZS1vdXQgKi8KPiArCXU4IHJzdmRbMjQ0XTsKPiArfSBfX3BhY2tlZDsKPiAr Cj4gKy8qIE9wUmVnaW9uIG1haWxib3ggIzM6IEFTTEUgKi8KPiArc3RydWN0IG9wcmVnaW9uX2Fz bGUgewo+ICsJdTMyIGFyZHk7ICAgICAgIC8qIGRyaXZlciByZWFkaW5lc3MgKi8KPiArCXUzMiBh c2xjOyAgICAgICAvKiBBU0xFIGludGVycnVwdCBjb21tYW5kICovCj4gKwl1MzIgdGNoZTsgICAg ICAgLyogdGVjaG5vbG9neSBlbmFibGVkIGluZGljYXRvciAqLwo+ICsJdTMyIGFsc2k7ICAgICAg IC8qIGN1cnJlbnQgQUxTIGlsbHVtaW5hbmNlIHJlYWRpbmcgKi8KPiArCXUzMiBiY2xwOyAgICAg ICAvKiBiYWNrbGlnaHQgYnJpZ2h0bmVzcyB0byBzZXQgKi8KPiArCXUzMiBwZml0OyAgICAgICAv KiBwYW5lbCBmaXR0aW5nIHN0YXRlICovCj4gKwl1MzIgY2JsdjsgICAgICAgLyogY3VycmVudCBi cmlnaHRuZXNzIGxldmVsICovCj4gKwl1MTYgYmNsbVsyMF07ICAgLyogYmFja2xpZ2h0IGxldmVs IGR1dHkgY3ljbGUgbWFwcGluZyB0YWJsZSAqLwo+ICsJdTMyIGNwZm07ICAgICAgIC8qIGN1cnJl bnQgcGFuZWwgZml0dGluZyBtb2RlICovCj4gKwl1MzIgZXBmbTsgICAgICAgLyogZW5hYmxlZCBw YW5lbCBmaXR0aW5nIG1vZGVzICovCj4gKwl1OCBwbHV0Wzc0XTsgICAgLyogcGFuZWwgTFVUIGFu ZCBpZGVudGlmaWVyICovCj4gKwl1MzIgcGZtYjsgICAgICAgLyogUFdNIGZyZXEgYW5kIG1pbiBi cmlnaHRuZXNzICovCj4gKwl1MzIgY2RkdjsgICAgICAgLyogY29sb3IgY29ycmVjdGlvbiBkZWZh dWx0IHZhbHVlcyAqLwo+ICsJdTMyIHBjZnQ7ICAgICAgIC8qIHBvd2VyIGNvbnNlcnZhdGlvbiBm ZWF0dXJlcyAqLwo+ICsJdTMyIHNyb3Q7ICAgICAgIC8qIHN1cHBvcnRlZCByb3RhdGlvbiBhbmds ZXMgKi8KPiArCXUzMiBpdWVyOyAgICAgICAvKiBJVUVSIGV2ZW50cyAqLwo+ICsJdTY0IGZkc3M7 Cj4gKwl1MzIgZmRzcDsKPiArCXUzMiBzdGF0Owo+ICsJdTY0IHJ2ZGE7CS8qIFBoeXNpY2FsIGFk ZHJlc3Mgb2YgcmF3IHZidCBkYXRhICovCj4gKwl1MzIgcnZkczsJLyogU2l6ZSBvZiByYXcgdmJ0 IGRhdGEgKi8KPiArCXU4IHJzdmRbNThdOwo+ICt9IF9fcGFja2VkOwo+ICsKPiArLyogRHJpdmVy IHJlYWRpbmVzcyBpbmRpY2F0b3IgKi8KPiArI2RlZmluZSBBU0xFX0FSRFlfUkVBRFkJCSgxIDw8 IDApCj4gKyNkZWZpbmUgQVNMRV9BUkRZX05PVF9SRUFEWQkoMCA8PCAwKQo+ICsKPiArLyogQVNM RSBJbnRlcnJ1cHQgQ29tbWFuZCAoQVNMQykgYml0cyAqLwo+ICsjZGVmaW5lIEFTTENfU0VUX0FM U19JTExVTQkJKDEgPDwgMCkKPiArI2RlZmluZSBBU0xDX1NFVF9CQUNLTElHSFQJCSgxIDw8IDEp Cj4gKyNkZWZpbmUgQVNMQ19TRVRfUEZJVAkJCSgxIDw8IDIpCj4gKyNkZWZpbmUgQVNMQ19TRVRf UFdNX0ZSRVEJCSgxIDw8IDMpCj4gKyNkZWZpbmUgQVNMQ19TVVBQT1JURURfUk9UQVRJT05fQU5H TEVTCSgxIDw8IDQpCj4gKyNkZWZpbmUgQVNMQ19CVVRUT05fQVJSQVkJCSgxIDw8IDUpCj4gKyNk ZWZpbmUgQVNMQ19DT05WRVJUSUJMRV9JTkRJQ0FUT1IJKDEgPDwgNikKPiArI2RlZmluZSBBU0xD X0RPQ0tJTkdfSU5ESUNBVE9SCQkoMSA8PCA3KQo+ICsjZGVmaW5lIEFTTENfSVNDVF9TVEFURV9D SEFOR0UJCSgxIDw8IDgpCj4gKyNkZWZpbmUgQVNMQ19SRVFfTVNLCQkJMHgxZmYKPiArLyogcmVz cG9uc2UgYml0cyAqLwo+ICsjZGVmaW5lIEFTTENfQUxTX0lMTFVNX0ZBSUxFRAkJKDEgPDwgMTAp Cj4gKyNkZWZpbmUgQVNMQ19CQUNLTElHSFRfRkFJTEVECQkoMSA8PCAxMikKPiArI2RlZmluZSBB U0xDX1BGSVRfRkFJTEVECQkoMSA8PCAxNCkKPiArI2RlZmluZSBBU0xDX1BXTV9GUkVRX0ZBSUxF RAkJKDEgPDwgMTYpCj4gKyNkZWZpbmUgQVNMQ19ST1RBVElPTl9BTkdMRVNfRkFJTEVECSgxIDw8 IDE4KQo+ICsjZGVmaW5lIEFTTENfQlVUVE9OX0FSUkFZX0ZBSUxFRAkoMSA8PCAyMCkKPiArI2Rl ZmluZSBBU0xDX0NPTlZFUlRJQkxFX0ZBSUxFRAkJKDEgPDwgMjIpCj4gKyNkZWZpbmUgQVNMQ19E T0NLSU5HX0ZBSUxFRAkJKDEgPDwgMjQpCj4gKyNkZWZpbmUgQVNMQ19JU0NUX1NUQVRFX0ZBSUxF RAkJKDEgPDwgMjYpCj4gKwo+ICsvKiBUZWNobm9sb2d5IGVuYWJsZWQgaW5kaWNhdG9yICovCj4g KyNkZWZpbmUgQVNMRV9UQ0hFX0FMU19FTgkoMSA8PCAwKQo+ICsjZGVmaW5lIEFTTEVfVENIRV9C TENfRU4JKDEgPDwgMSkKPiArI2RlZmluZSBBU0xFX1RDSEVfUEZJVF9FTgkoMSA8PCAyKQo+ICsj ZGVmaW5lIEFTTEVfVENIRV9QRk1CX0VOCSgxIDw8IDMpCj4gKwo+ICsvKiBBU0xFIGJhY2tsaWdo dCBicmlnaHRuZXNzIHRvIHNldCAqLwo+ICsjZGVmaW5lIEFTTEVfQkNMUF9WQUxJRCAgICAgICAg ICAgICAgICAoMTw8MzEpCj4gKyNkZWZpbmUgQVNMRV9CQ0xQX01TSyAgICAgICAgICAofigxPDwz MSkpCj4gKwo+ICsvKiBBU0xFIHBhbmVsIGZpdHRpbmcgcmVxdWVzdCAqLwo+ICsjZGVmaW5lIEFT TEVfUEZJVF9WQUxJRCAgICAgICAgICgxPDwzMSkKPiArI2RlZmluZSBBU0xFX1BGSVRfQ0VOVEVS ICgxPDwwKQo+ICsjZGVmaW5lIEFTTEVfUEZJVF9TVFJFVENIX1RFWFQgKDE8PDEpCj4gKyNkZWZp bmUgQVNMRV9QRklUX1NUUkVUQ0hfR0ZYICgxPDwyKQo+ICsKPiArLyogUFdNIGZyZXF1ZW5jeSBh bmQgbWluaW11bSBicmlnaHRuZXNzICovCj4gKyNkZWZpbmUgQVNMRV9QRk1CX0JSSUdIVE5FU1Nf TUFTSyAoMHhmZikKPiArI2RlZmluZSBBU0xFX1BGTUJfQlJJR0hUTkVTU19WQUxJRCAoMTw8OCkK PiArI2RlZmluZSBBU0xFX1BGTUJfUFdNX01BU0sgKDB4N2ZmZmZlMDApCj4gKyNkZWZpbmUgQVNM RV9QRk1CX1BXTV9WQUxJRCAoMTw8MzEpCj4gKwo+ICsjZGVmaW5lIEFTTEVfQ0JMVl9WQUxJRCAg ICAgICAgICgxPDwzMSkKPiArCj4gKy8qIElVRVIgKi8KPiArI2RlZmluZSBBU0xFX0lVRVJfRE9D S0lORwkJKDEgPDwgNykKPiArI2RlZmluZSBBU0xFX0lVRVJfQ09OVkVSVElCTEUJCSgxIDw8IDYp Cj4gKyNkZWZpbmUgQVNMRV9JVUVSX1JPVEFUSU9OX0xPQ0tfQlROCSgxIDw8IDQpCj4gKyNkZWZp bmUgQVNMRV9JVUVSX1ZPTFVNRV9ET1dOX0JUTgkoMSA8PCAzKQo+ICsjZGVmaW5lIEFTTEVfSVVF Ul9WT0xVTUVfVVBfQlROCQkoMSA8PCAyKQo+ICsjZGVmaW5lIEFTTEVfSVVFUl9XSU5ET1dTX0JU TgkJKDEgPDwgMSkKPiArI2RlZmluZSBBU0xFX0lVRVJfUE9XRVJfQlROCQkoMSA8PCAwKQo+ICsK PiArLyogU29mdHdhcmUgU3lzdGVtIENvbnRyb2wgSW50ZXJydXB0IChTV1NDSSkgKi8KPiArI2Rl ZmluZSBTV1NDSV9TQ0lDX0lORElDQVRPUgkJKDEgPDwgMCkKPiArI2RlZmluZSBTV1NDSV9TQ0lD X01BSU5fRlVOQ1RJT05fU0hJRlQJMQo+ICsjZGVmaW5lIFNXU0NJX1NDSUNfTUFJTl9GVU5DVElP Tl9NQVNLCSgweGYgPDwgMSkKPiArI2RlZmluZSBTV1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElG VAk4Cj4gKyNkZWZpbmUgU1dTQ0lfU0NJQ19TVUJfRlVOQ1RJT05fTUFTSwkoMHhmZiA8PCA4KQo+ ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJBTUVURVJfU0hJRlQJOAo+ICsjZGVmaW5lIFNX U0NJX1NDSUNfRVhJVF9QQVJBTUVURVJfTUFTSwkoMHhmZiA8PCA4KQo+ICsjZGVmaW5lIFNXU0NJ X1NDSUNfRVhJVF9TVEFUVVNfU0hJRlQJNQo+ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFU VVNfTUFTSwkoNyA8PCA1KQo+ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfU1VDQ0VT UwkxCj4gKwo+ICsjZGVmaW5lIFNXU0NJX0ZVTkNUSU9OX0NPREUobWFpbiwgc3ViKSBcCj4gKwko KG1haW4pIDw8IFNXU0NJX1NDSUNfTUFJTl9GVU5DVElPTl9TSElGVCB8IFwKPiArCSAoc3ViKSA8 PCBTV1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElGVCkKPiArCj4gKy8qIFNXU0NJOiBHZXQgQklP UyBEYXRhIChHQkRBKSAqLwo+ICsjZGVmaW5lIFNXU0NJX0dCREEJCQk0Cj4gKyNkZWZpbmUgU1dT Q0lfR0JEQV9TVVBQT1JURURfQ0FMTFMJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9HQkRBLCAw KQo+ICsjZGVmaW5lIFNXU0NJX0dCREFfUkVRVUVTVEVEX0NBTExCQUNLUwlTV1NDSV9GVU5DVElP Tl9DT0RFKFNXU0NJX0dCREEsIDEpCj4gKyNkZWZpbmUgU1dTQ0lfR0JEQV9CT09UX0RJU1BMQVlf UFJFRglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDQpCj4gKyNkZWZpbmUgU1dTQ0lf R0JEQV9QQU5FTF9ERVRBSUxTCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwgNSkKPiAr I2RlZmluZSBTV1NDSV9HQkRBX1RWX1NUQU5EQVJECQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJ X0dCREEsIDYpCj4gKyNkZWZpbmUgU1dTQ0lfR0JEQV9JTlRFUk5BTF9HUkFQSElDUwlTV1NDSV9G VU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDcpCj4gKyNkZWZpbmUgU1dTQ0lfR0JEQV9TUFJFQURf U1BFQ1RSVU0JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9HQkRBLCAxMCkKPiArCj4gKy8qIFNX U0NJOiBTeXN0ZW0gQklPUyBDYWxsYmFja3MgKFNCQ0IpICovCj4gKyNkZWZpbmUgU1dTQ0lfU0JD QgkJCTYKPiArI2RlZmluZSBTV1NDSV9TQkNCX1NVUFBPUlRFRF9DQUxMQkFDS1MJU1dTQ0lfRlVO Q1RJT05fQ09ERShTV1NDSV9TQkNCLCAwKQo+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfSU5JVF9DT01Q TEVUSU9OCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMSkKPiArI2RlZmluZSBTV1ND SV9TQkNCX1BSRV9ISVJFU19TRVRfTU9ERQlTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0Is IDMpCj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9QT1NUX0hJUkVTX1NFVF9NT0RFCVNXU0NJX0ZVTkNU SU9OX0NPREUoU1dTQ0lfU0JDQiwgNCkKPiArI2RlZmluZSBTV1NDSV9TQkNCX0RJU1BMQVlfU1dJ VENICVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgNSkKPiArI2RlZmluZSBTV1NDSV9T QkNCX1NFVF9UVl9GT1JNQVQJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCA2KQo+ICsj ZGVmaW5lIFNXU0NJX1NCQ0JfQURBUFRFUl9QT1dFUl9TVEFURQlTV1NDSV9GVU5DVElPTl9DT0RF KFNXU0NJX1NCQ0IsIDcpCj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9ESVNQTEFZX1BPV0VSX1NUQVRF CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgOCkKPiArI2RlZmluZSBTV1NDSV9TQkNC X1NFVF9CT09UX0RJU1BMQVkJU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCA5KQo+ICsj ZGVmaW5lIFNXU0NJX1NCQ0JfU0VUX1BBTkVMX0RFVEFJTFMJU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9TQkNCLCAxMCkKPiArI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9JTlRFUk5BTF9HRlgJU1dT Q0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxMSkKPiArI2RlZmluZSBTV1NDSV9TQkNCX1BP U1RfSElSRVNfVE9fRE9TX0ZTCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTYpCj4g KyNkZWZpbmUgU1dTQ0lfU0JDQl9TVVNQRU5EX1JFU1VNRQlTV1NDSV9GVU5DVElPTl9DT0RFKFNX U0NJX1NCQ0IsIDE3KQo+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfU0VUX1NQUkVBRF9TUEVDVFJVTQlT V1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDE4KQo+ICsjZGVmaW5lIFNXU0NJX1NCQ0Jf UE9TVF9WQkVfUE0JCVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTkpCj4gKyNkZWZp bmUgU1dTQ0lfU0JDQl9FTkFCTEVfRElTQUJMRV9BVURJTwlTV1NDSV9GVU5DVElPTl9DT0RFKFNX U0NJX1NCQ0IsIDIxKQo+ICsKPiArI2RlZmluZSBBQ1BJX09USEVSX09VVFBVVCAoMDw8OCkKPiAr I2RlZmluZSBBQ1BJX1ZHQV9PVVRQVVQgKDE8PDgpCj4gKyNkZWZpbmUgQUNQSV9UVl9PVVRQVVQg KDI8PDgpCj4gKyNkZWZpbmUgQUNQSV9ESUdJVEFMX09VVFBVVCAoMzw8OCkKPiArI2RlZmluZSBB Q1BJX0xWRFNfT1VUUFVUICg0PDw4KQo+ICsKPiArI2RlZmluZSBNQVhfRFNMUAkxNTAwCj4gLS0g Cj4gMS43LjkuNQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK