From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julia Lawall Subject: Re: [PATCH v3 0/5] bq27xxx_battery data memory update Date: Wed, 27 Sep 2017 12:02:06 +0200 (CEST) Message-ID: References: <20170824033617.20840-1-liam@networkimprov.net> <20170830002939.ns43wldvffmwqhuv@earth> Mime-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="8323329-1505043097-1506506527=:3186" Return-path: Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:39758 "EHLO mail2-relais-roc.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751787AbdI0KCJ (ORCPT ); Wed, 27 Sep 2017 06:02:09 -0400 In-Reply-To: Sender: linux-pm-owner@vger.kernel.org List-Id: linux-pm@vger.kernel.org To: Liam Breck Cc: Sebastian Reichel , Gilles Muller , Nicolas Palix , Michal Marek , cocci@systeme.lip6.fr, "Andrew F. Davis" , =?ISO-8859-15?Q?Pali_Roh=E1r?= , Linux PM mailing list --8323329-1505043097-1506506527=:3186 Content-Type: text/plain; charset=US-ASCII The github version of Coccinelle finally supports the semantic patch for your code. I have attached the semantic patch. I wonder what should be done with this? Do you want to use it locally with make coccicheck? Do you want it to be integrated into the kernel? Everything in the semantic patch depends on the occurrence of BQ27XXX_DATA, so if make coccicheck is used on files that don't contain this word, they should be ignored very efficiently. So perhaps it is ok for scripts/coccinelle even if it is relevant to only one file. julia --8323329-1505043097-1506506527=:3186 Content-Type: text/x-csrc; name=battery.c Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=battery.c LyoNCiAqIEJRMjd4eHggYmF0dGVyeSBkcml2ZXINCiAqDQogKiBDb3B5cmln aHQgKEMpIDIwMDggUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXgu aXQ+DQogKiBDb3B5cmlnaHQgKEMpIDIwMDggRXVyb3RlY2ggUy5wLkEuIDxp bmZvQGV1cm90ZWNoLml0Pg0KICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEg TGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+DQogKiBDb3B5 cmlnaHQgKEMpIDIwMTEgUGFsaSBSb2jDoXIgPHBhbGkucm9oYXJAZ21haWwu Y29tPg0KICogQ29weXJpZ2h0IChDKSAyMDE3IExpYW0gQnJlY2sgPGtlcm5l bEBuZXR3b3JraW1wcm92Lm5ldD4NCiAqDQogKiBCYXNlZCBvbiBhIHByZXZp b3VzIHdvcmsgYnkgQ29weXJpZ2h0IChDKSAyMDA4IFRleGFzIEluc3RydW1l bnRzLCBJbmMuDQogKg0KICogVGhpcyBwYWNrYWdlIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAyIGFzDQogKiBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCiAqDQogKiBUSElTIFBBQ0tBR0Ug SVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBXSVRIT1VUIEFOWSBFWFBSRVNT IE9SDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgV0lUSE9V VCBMSU1JVEFUSU9OLCBUSEUgSU1QTElFRA0KICogV0FSUkFOVElFUyBPRiBN RVJDSEFOVElCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLg0KICoNCiAqIERhdGFzaGVldHM6DQogKiBodHRwOi8vd3d3LnRp LmNvbS9wcm9kdWN0L2JxMjcwMDANCiAqIGh0dHA6Ly93d3cudGkuY29tL3By b2R1Y3QvYnEyNzIwMA0KICogaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9i cTI3MDEwDQogKiBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2JxMjcyMTAN CiAqIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvYnEyNzUwMA0KICogaHR0 cDovL3d3dy50aS5jb20vcHJvZHVjdC9icTI3NTEwLWcxDQogKiBodHRwOi8v d3d3LnRpLmNvbS9wcm9kdWN0L2JxMjc1MTAtZzINCiAqIGh0dHA6Ly93d3cu dGkuY29tL3Byb2R1Y3QvYnEyNzUxMC1nMw0KICogaHR0cDovL3d3dy50aS5j b20vcHJvZHVjdC9icTI3NTIwLWc0DQogKiBodHRwOi8vd3d3LnRpLmNvbS9w cm9kdWN0L2JxMjc1MjAtZzENCiAqIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1 Y3QvYnEyNzUyMC1nMg0KICogaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9i cTI3NTIwLWczDQogKiBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2JxMjc1 MjAtZzQNCiAqIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvYnEyNzUzMC1n MQ0KICogaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9icTI3NTMxLWcxDQog KiBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2JxMjc1NDEtZzENCiAqIGh0 dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvYnEyNzU0Mi1nMQ0KICogaHR0cDov L3d3dy50aS5jb20vcHJvZHVjdC9icTI3NTQ2LWcxDQogKiBodHRwOi8vd3d3 LnRpLmNvbS9wcm9kdWN0L2JxMjc3NDItZzENCiAqIGh0dHA6Ly93d3cudGku Y29tL3Byb2R1Y3QvYnEyNzU0NS1nMQ0KICogaHR0cDovL3d3dy50aS5jb20v cHJvZHVjdC9icTI3NDIxLWcxDQogKiBodHRwOi8vd3d3LnRpLmNvbS9wcm9k dWN0L2JxMjc0MjUtZzENCiAqIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3Qv YnEyNzQxMS1nMQ0KICogaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9icTI3 NjIxLWcxDQogKi8NCg0KI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KI2luY2x1ZGUgPGxpbnV4L211dGV4 Lmg+DQojaW5jbHVkZSA8bGludXgvcGFyYW0uaD4NCiNpbmNsdWRlIDxsaW51 eC9qaWZmaWVzLmg+DQojaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+DQoj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCiNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4NCiNpbmNsdWRlIDxsaW51eC9wb3dlcl9zdXBwbHku aD4NCiNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQojaW5jbHVkZSA8bGludXgv b2YuaD4NCg0KI2luY2x1ZGUgPGxpbnV4L3Bvd2VyL2JxMjd4eHhfYmF0dGVy eS5oPg0KDQojZGVmaW5lIEJRMjdYWFhfTUFOVUZBQ1RVUkVSCSJUZXhhcyBJ bnN0cnVtZW50cyINCg0KLyogQlEyN1hYWCBGbGFncyAqLw0KI2RlZmluZSBC UTI3WFhYX0ZMQUdfRFNDCUJJVCgwKQ0KI2RlZmluZSBCUTI3WFhYX0ZMQUdf U09DRglCSVQoMSkgLyogU3RhdGUtb2YtQ2hhcmdlIHRocmVzaG9sZCBmaW5h bCAqLw0KI2RlZmluZSBCUTI3WFhYX0ZMQUdfU09DMQlCSVQoMikgLyogU3Rh dGUtb2YtQ2hhcmdlIHRocmVzaG9sZCAxICovDQojZGVmaW5lIEJRMjdYWFhf RkxBR19DRkdVUAlCSVQoNCkNCiNkZWZpbmUgQlEyN1hYWF9GTEFHX0ZDCQlC SVQoOSkNCiNkZWZpbmUgQlEyN1hYWF9GTEFHX09URAlCSVQoMTQpDQojZGVm aW5lIEJRMjdYWFhfRkxBR19PVEMJQklUKDE1KQ0KI2RlZmluZSBCUTI3WFhY X0ZMQUdfVVQJCUJJVCgxNCkNCiNkZWZpbmUgQlEyN1hYWF9GTEFHX09UCQlC SVQoMTUpDQoNCi8qIEJRMjcwMDAgaGFzIGRpZmZlcmVudCBsYXlvdXQgZm9y IEZsYWdzIHJlZ2lzdGVyICovDQojZGVmaW5lIEJRMjcwMDBfRkxBR19FRFZG CUJJVCgwKSAvKiBGaW5hbCBFbmQtb2YtRGlzY2hhcmdlLVZvbHRhZ2UgZmxh ZyAqLw0KI2RlZmluZSBCUTI3MDAwX0ZMQUdfRURWMQlCSVQoMSkgLyogRmly c3QgRW5kLW9mLURpc2NoYXJnZS1Wb2x0YWdlIGZsYWcgKi8NCiNkZWZpbmUg QlEyNzAwMF9GTEFHX0NJCQlCSVQoNCkgLyogQ2FwYWNpdHkgSW5hY2N1cmF0 ZSBmbGFnICovDQojZGVmaW5lIEJRMjcwMDBfRkxBR19GQwkJQklUKDUpDQoj ZGVmaW5lIEJRMjcwMDBfRkxBR19DSEdTCUJJVCg3KSAvKiBDaGFyZ2Ugc3Rh dGUgZmxhZyAqLw0KDQovKiBjb250cm9sIHJlZ2lzdGVyIHBhcmFtcyAqLw0K I2RlZmluZSBCUTI3WFhYX1NFQUxFRAkJCTB4MjANCiNkZWZpbmUgQlEyN1hY WF9TRVRfQ0ZHVVBEQVRFCQkweDEzDQojZGVmaW5lIEJRMjdYWFhfU09GVF9S RVNFVAkJMHg0Mg0KI2RlZmluZSBCUTI3WFhYX1JFU0VUCQkJMHg0MQ0KDQoj ZGVmaW5lIEJRMjdYWFhfUlMJCQkoMjApIC8qIFJlc2lzdG9yIHNlbnNlIG1P aG0gKi8NCiNkZWZpbmUgQlEyN1hYWF9QT1dFUl9DT05TVEFOVAkJKDI5MjAw KSAvKiAyOS4yIMK1Vl4yICogMTAwMCAqLw0KI2RlZmluZSBCUTI3WFhYX0NV UlJFTlRfQ09OU1RBTlQJKDM1NzApIC8qIDMuNTcgwrVWICogMTAwMCAqLw0K DQojZGVmaW5lIElOVkFMSURfUkVHX0FERFIJMHhmZg0KDQovKg0KICogYnEy N3h4eF9yZWdfaW5kZXggLSBSZWdpc3RlciBuYW1lcw0KICoNCiAqIFRoZXNl IGFyZSBpbmRleGVzIGludG8gYSBkZXZpY2UncyByZWdpc3RlciBtYXBwaW5n IGFycmF5Lg0KICovDQoNCmVudW0gYnEyN3h4eF9yZWdfaW5kZXggew0KCUJR MjdYWFhfUkVHX0NUUkwgPSAwLAkvKiBDb250cm9sICovDQoJQlEyN1hYWF9S RUdfVEVNUCwJLyogVGVtcGVyYXR1cmUgKi8NCglCUTI3WFhYX1JFR19JTlRf VEVNUCwJLyogSW50ZXJuYWwgVGVtcGVyYXR1cmUgKi8NCglCUTI3WFhYX1JF R19WT0xULAkvKiBWb2x0YWdlICovDQoJQlEyN1hYWF9SRUdfQUksCQkvKiBB dmVyYWdlIEN1cnJlbnQgKi8NCglCUTI3WFhYX1JFR19GTEFHUywJLyogRmxh Z3MgKi8NCglCUTI3WFhYX1JFR19UVEUsCS8qIFRpbWUtdG8tRW1wdHkgKi8N CglCUTI3WFhYX1JFR19UVEYsCS8qIFRpbWUtdG8tRnVsbCAqLw0KCUJRMjdY WFhfUkVHX1RURVMsCS8qIFRpbWUtdG8tRW1wdHkgU3RhbmRieSAqLw0KCUJR MjdYWFhfUkVHX1RURUNQLAkvKiBUaW1lLXRvLUVtcHR5IGF0IENvbnN0YW50 IFBvd2VyICovDQoJQlEyN1hYWF9SRUdfTkFDLAkvKiBOb21pbmFsIEF2YWls YWJsZSBDYXBhY2l0eSAqLw0KCUJRMjdYWFhfUkVHX0ZDQywJLyogRnVsbCBD aGFyZ2UgQ2FwYWNpdHkgKi8NCglCUTI3WFhYX1JFR19DWUNULAkvKiBDeWNs ZSBDb3VudCAqLw0KCUJRMjdYWFhfUkVHX0FFLAkJLyogQXZhaWxhYmxlIEVu ZXJneSAqLw0KCUJRMjdYWFhfUkVHX1NPQywJLyogU3RhdGUtb2YtQ2hhcmdl ICovDQoJQlEyN1hYWF9SRUdfRENBUCwJLyogRGVzaWduIENhcGFjaXR5ICov DQoJQlEyN1hYWF9SRUdfQVAsCQkvKiBBdmVyYWdlIFBvd2VyICovDQoJQlEy N1hYWF9ETV9DVFJMLAkvKiBCbG9jayBEYXRhIENvbnRyb2wgKi8NCglCUTI3 WFhYX0RNX0NMQVNTLAkvKiBEYXRhIENsYXNzICovDQoJQlEyN1hYWF9ETV9C TE9DSywJLyogRGF0YSBCbG9jayAqLw0KCUJRMjdYWFhfRE1fREFUQSwJLyog QmxvY2sgRGF0YSAqLw0KCUJRMjdYWFhfRE1fQ0tTVU0sCS8qIEJsb2NrIERh dGEgQ2hlY2tzdW0gKi8NCglCUTI3WFhYX1JFR19NQVgsCS8qIHNlbnRpbmVs ICovDQp9Ow0KDQojZGVmaW5lIEJRMjdYWFhfRE1fUkVHX1JPV1MgXA0KCVtC UTI3WFhYX0RNX0NUUkxdID0gMHg2MSwgIFwNCglbQlEyN1hYWF9ETV9DTEFT U10gPSAweDNlLCBcDQoJW0JRMjdYWFhfRE1fQkxPQ0tdID0gMHgzZiwgXA0K CVtCUTI3WFhYX0RNX0RBVEFdID0gMHg0MCwgIFwNCglbQlEyN1hYWF9ETV9D S1NVTV0gPSAweDYwDQoNCi8qIFJlZ2lzdGVyIG1hcHBpbmdzICovDQpzdGF0 aWMgdTgNCglicTI3MDAwX3JlZ3NbQlEyN1hYWF9SRUdfTUFYXSA9IHsNCgkJ W0JRMjdYWFhfUkVHX0NUUkxdID0gMHgwMCwNCgkJW0JRMjdYWFhfUkVHX1RF TVBdID0gMHgwNiwNCgkJW0JRMjdYWFhfUkVHX0lOVF9URU1QXSA9IElOVkFM SURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX1JFR19WT0xUXSA9IDB4MDgsDQoJ CVtCUTI3WFhYX1JFR19BSV0gPSAweDE0LA0KCQlbQlEyN1hYWF9SRUdfRkxB R1NdID0gMHgwYSwNCgkJW0JRMjdYWFhfUkVHX1RURV0gPSAweDE2LA0KCQlb QlEyN1hYWF9SRUdfVFRGXSA9IDB4MTgsDQoJCVtCUTI3WFhYX1JFR19UVEVT XSA9IDB4MWMsDQoJCVtCUTI3WFhYX1JFR19UVEVDUF0gPSAweDI2LA0KCQlb QlEyN1hYWF9SRUdfTkFDXSA9IDB4MGMsDQoJCVtCUTI3WFhYX1JFR19GQ0Nd ID0gMHgxMiwNCgkJW0JRMjdYWFhfUkVHX0NZQ1RdID0gMHgyYSwNCgkJW0JR MjdYWFhfUkVHX0FFXSA9IDB4MjIsDQoJCVtCUTI3WFhYX1JFR19TT0NdID0g MHgwYiwNCgkJW0JRMjdYWFhfUkVHX0RDQVBdID0gMHg3NiwNCgkJW0JRMjdY WFhfUkVHX0FQXSA9IDB4MjQsDQoJCVtCUTI3WFhYX0RNX0NUUkxdID0gSU5W QUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfRE1fQ0xBU1NdID0gSU5WQUxJ RF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfRE1fQkxPQ0tdID0gSU5WQUxJRF9S RUdfQUREUiwNCgkJW0JRMjdYWFhfRE1fREFUQV0gPSBJTlZBTElEX1JFR19B RERSLA0KCQlbQlEyN1hYWF9ETV9DS1NVTV0gPSBJTlZBTElEX1JFR19BRERS LA0KCX0sDQoJYnEwNzAwMF9yZWdzW0JRMjdYWFhfUkVHX01BWF0gPSB7DQoJ CVtCUTI3WFhYX1JFR19DVFJMXSA9IDB4MDAsDQoJCVtCUTI3WFhYX1JFR19U RU1QXSA9IDB4MDYsDQoJCVtCUTI3WFhYX1JFR19JTlRfVEVNUF0gPSBJTlZB TElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfVk9MVF0gPSAweDA4LA0K CQlbQlEyN1hYWF9SRUdfQUldID0gMHgxNCwNCgkJW0JRMjdYWFhfUkVHX0ZM QUdTXSA9IDB4MGEsDQoJCVtCUTI3WFhYX1JFR19UVEVdID0gMHgxNiwNCgkJ W0JRMjdYWFhfUkVHX1RURl0gPSAweDE4LA0KCQlbQlEyN1hYWF9SRUdfVFRF U10gPSAweDFjLA0KCQlbQlEyN1hYWF9SRUdfVFRFQ1BdID0gMHgyNiwNCgkJ W0JRMjdYWFhfUkVHX05BQ10gPSAweDBjLA0KCQlbQlEyN1hYWF9SRUdfRkND XSA9IDB4MTIsDQoJCVtCUTI3WFhYX1JFR19DWUNUXSA9IDB4MmEsDQoJCVtC UTI3WFhYX1JFR19BRV0gPSAweDIyLA0KCQlbQlEyN1hYWF9SRUdfU09DXSA9 IDB4MGIsDQoJCVtCUTI3WFhYX1JFR19EQ0FQXSA9IDB4NzYsDQoJCVtCUTI3 WFhYX1JFR19BUF0gPSAweDI0LA0KCQlbQlEyN1hYWF9ETV9DVFJMXSA9IElO VkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX0RNX0NMQVNTXSA9IElOVkFM SURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX0RNX0JMT0NLXSA9IElOVkFMSURf UkVHX0FERFIsDQoJCVtCUTI3WFhYX0RNX0RBVEFdID0gSU5WQUxJRF9SRUdf QUREUiwNCgkJW0JRMjdYWFhfRE1fQ0tTVU1dID0gSU5WQUxJRF9SRUdfQURE UiwNCgl9LA0KCWJxMjcwMTBfcmVnc1tCUTI3WFhYX1JFR19NQVhdID0gew0K CQlbQlEyN1hYWF9SRUdfQ1RSTF0gPSAweDAwLA0KCQlbQlEyN1hYWF9SRUdf VEVNUF0gPSAweDA2LA0KCQlbQlEyN1hYWF9SRUdfSU5UX1RFTVBdID0gSU5W QUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX1ZPTFRdID0gMHgwOCwN CgkJW0JRMjdYWFhfUkVHX0FJXSA9IDB4MTQsDQoJCVtCUTI3WFhYX1JFR19G TEFHU10gPSAweDBhLA0KCQlbQlEyN1hYWF9SRUdfVFRFXSA9IDB4MTYsDQoJ CVtCUTI3WFhYX1JFR19UVEZdID0gMHgxOCwNCgkJW0JRMjdYWFhfUkVHX1RU RVNdID0gMHgxYywNCgkJW0JRMjdYWFhfUkVHX1RURUNQXSA9IDB4MjYsDQoJ CVtCUTI3WFhYX1JFR19OQUNdID0gMHgwYywNCgkJW0JRMjdYWFhfUkVHX0ZD Q10gPSAweDEyLA0KCQlbQlEyN1hYWF9SRUdfQ1lDVF0gPSAweDJhLA0KCQlb QlEyN1hYWF9SRUdfQUVdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JRMjdY WFhfUkVHX1NPQ10gPSAweDBiLA0KCQlbQlEyN1hYWF9SRUdfRENBUF0gPSAw eDc2LA0KCQlbQlEyN1hYWF9SRUdfQVBdID0gSU5WQUxJRF9SRUdfQUREUiwN CgkJW0JRMjdYWFhfRE1fQ1RSTF0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlb QlEyN1hYWF9ETV9DTEFTU10gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEy N1hYWF9ETV9CTE9DS10gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hY WF9ETV9EQVRBXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX0RN X0NLU1VNXSA9IElOVkFMSURfUkVHX0FERFIsDQoJfSwNCglicTI3NTB4X3Jl Z3NbQlEyN1hYWF9SRUdfTUFYXSA9IHsNCgkJW0JRMjdYWFhfUkVHX0NUUkxd ID0gMHgwMCwNCgkJW0JRMjdYWFhfUkVHX1RFTVBdID0gMHgwNiwNCgkJW0JR MjdYWFhfUkVHX0lOVF9URU1QXSA9IDB4MjgsDQoJCVtCUTI3WFhYX1JFR19W T0xUXSA9IDB4MDgsDQoJCVtCUTI3WFhYX1JFR19BSV0gPSAweDE0LA0KCQlb QlEyN1hYWF9SRUdfRkxBR1NdID0gMHgwYSwNCgkJW0JRMjdYWFhfUkVHX1RU RV0gPSAweDE2LA0KCQlbQlEyN1hYWF9SRUdfVFRGXSA9IElOVkFMSURfUkVH X0FERFIsDQoJCVtCUTI3WFhYX1JFR19UVEVTXSA9IDB4MWEsDQoJCVtCUTI3 WFhYX1JFR19UVEVDUF0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hY WF9SRUdfTkFDXSA9IDB4MGMsDQoJCVtCUTI3WFhYX1JFR19GQ0NdID0gMHgx MiwNCgkJW0JRMjdYWFhfUkVHX0NZQ1RdID0gMHgyYSwNCgkJW0JRMjdYWFhf UkVHX0FFXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX1JFR19T T0NdID0gMHgyYywNCgkJW0JRMjdYWFhfUkVHX0RDQVBdID0gMHgzYywNCgkJ W0JRMjdYWFhfUkVHX0FQXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCUJRMjdY WFhfRE1fUkVHX1JPV1MsDQoJfSwNCiNkZWZpbmUgYnEyNzUxeF9yZWdzIGJx Mjc1MTBnM19yZWdzDQojZGVmaW5lIGJxMjc1MnhfcmVncyBicTI3NTEwZzNf cmVncw0KCWJxMjc1MDBfcmVnc1tCUTI3WFhYX1JFR19NQVhdID0gew0KCQlb QlEyN1hYWF9SRUdfQ1RSTF0gPSAweDAwLA0KCQlbQlEyN1hYWF9SRUdfVEVN UF0gPSAweDA2LA0KCQlbQlEyN1hYWF9SRUdfSU5UX1RFTVBdID0gSU5WQUxJ RF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX1ZPTFRdID0gMHgwOCwNCgkJ W0JRMjdYWFhfUkVHX0FJXSA9IDB4MTQsDQoJCVtCUTI3WFhYX1JFR19GTEFH U10gPSAweDBhLA0KCQlbQlEyN1hYWF9SRUdfVFRFXSA9IDB4MTYsDQoJCVtC UTI3WFhYX1JFR19UVEZdID0gMHgxOCwNCgkJW0JRMjdYWFhfUkVHX1RURVNd ID0gMHgxYywNCgkJW0JRMjdYWFhfUkVHX1RURUNQXSA9IDB4MjYsDQoJCVtC UTI3WFhYX1JFR19OQUNdID0gMHgwYywNCgkJW0JRMjdYWFhfUkVHX0ZDQ10g PSAweDEyLA0KCQlbQlEyN1hYWF9SRUdfQ1lDVF0gPSAweDJhLA0KCQlbQlEy N1hYWF9SRUdfQUVdID0gMHgyMiwNCgkJW0JRMjdYWFhfUkVHX1NPQ10gPSAw eDJjLA0KCQlbQlEyN1hYWF9SRUdfRENBUF0gPSAweDNjLA0KCQlbQlEyN1hY WF9SRUdfQVBdID0gMHgyNCwNCgkJQlEyN1hYWF9ETV9SRUdfUk9XUywNCgl9 LA0KI2RlZmluZSBicTI3NTEwZzFfcmVncyBicTI3NTAwX3JlZ3MNCiNkZWZp bmUgYnEyNzUxMGcyX3JlZ3MgYnEyNzUwMF9yZWdzDQoJYnEyNzUxMGczX3Jl Z3NbQlEyN1hYWF9SRUdfTUFYXSA9IHsNCgkJW0JRMjdYWFhfUkVHX0NUUkxd ID0gMHgwMCwNCgkJW0JRMjdYWFhfUkVHX1RFTVBdID0gMHgwNiwNCgkJW0JR MjdYWFhfUkVHX0lOVF9URU1QXSA9IDB4MjgsDQoJCVtCUTI3WFhYX1JFR19W T0xUXSA9IDB4MDgsDQoJCVtCUTI3WFhYX1JFR19BSV0gPSAweDE0LA0KCQlb QlEyN1hYWF9SRUdfRkxBR1NdID0gMHgwYSwNCgkJW0JRMjdYWFhfUkVHX1RU RV0gPSAweDE2LA0KCQlbQlEyN1hYWF9SRUdfVFRGXSA9IElOVkFMSURfUkVH X0FERFIsDQoJCVtCUTI3WFhYX1JFR19UVEVTXSA9IDB4MWEsDQoJCVtCUTI3 WFhYX1JFR19UVEVDUF0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hY WF9SRUdfTkFDXSA9IDB4MGMsDQoJCVtCUTI3WFhYX1JFR19GQ0NdID0gMHgx MiwNCgkJW0JRMjdYWFhfUkVHX0NZQ1RdID0gMHgxZSwNCgkJW0JRMjdYWFhf UkVHX0FFXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX1JFR19T T0NdID0gMHgyMCwNCgkJW0JRMjdYWFhfUkVHX0RDQVBdID0gMHgyZSwNCgkJ W0JRMjdYWFhfUkVHX0FQXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCUJRMjdY WFhfRE1fUkVHX1JPV1MsDQoJfSwNCglicTI3NTIwZzFfcmVnc1tCUTI3WFhY X1JFR19NQVhdID0gew0KCQlbQlEyN1hYWF9SRUdfQ1RSTF0gPSAweDAwLA0K CQlbQlEyN1hYWF9SRUdfVEVNUF0gPSAweDA2LA0KCQlbQlEyN1hYWF9SRUdf SU5UX1RFTVBdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVH X1ZPTFRdID0gMHgwOCwNCgkJW0JRMjdYWFhfUkVHX0FJXSA9IDB4MTQsDQoJ CVtCUTI3WFhYX1JFR19GTEFHU10gPSAweDBhLA0KCQlbQlEyN1hYWF9SRUdf VFRFXSA9IDB4MTYsDQoJCVtCUTI3WFhYX1JFR19UVEZdID0gMHgxOCwNCgkJ W0JRMjdYWFhfUkVHX1RURVNdID0gMHgxYywNCgkJW0JRMjdYWFhfUkVHX1RU RUNQXSA9IDB4MjYsDQoJCVtCUTI3WFhYX1JFR19OQUNdID0gMHgwYywNCgkJ W0JRMjdYWFhfUkVHX0ZDQ10gPSAweDEyLA0KCQlbQlEyN1hYWF9SRUdfQ1lD VF0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfQUVdID0g MHgyMiwNCgkJW0JRMjdYWFhfUkVHX1NPQ10gPSAweDJjLA0KCQlbQlEyN1hY WF9SRUdfRENBUF0gPSAweDNjLA0KCQlbQlEyN1hYWF9SRUdfQVBdID0gMHgy NCwNCgkJQlEyN1hYWF9ETV9SRUdfUk9XUywNCgl9LA0KCWJxMjc1MjBnMl9y ZWdzW0JRMjdYWFhfUkVHX01BWF0gPSB7DQoJCVtCUTI3WFhYX1JFR19DVFJM XSA9IDB4MDAsDQoJCVtCUTI3WFhYX1JFR19URU1QXSA9IDB4MDYsDQoJCVtC UTI3WFhYX1JFR19JTlRfVEVNUF0gPSAweDM2LA0KCQlbQlEyN1hYWF9SRUdf Vk9MVF0gPSAweDA4LA0KCQlbQlEyN1hYWF9SRUdfQUldID0gMHgxNCwNCgkJ W0JRMjdYWFhfUkVHX0ZMQUdTXSA9IDB4MGEsDQoJCVtCUTI3WFhYX1JFR19U VEVdID0gMHgxNiwNCgkJW0JRMjdYWFhfUkVHX1RURl0gPSAweDE4LA0KCQlb QlEyN1hYWF9SRUdfVFRFU10gPSAweDFjLA0KCQlbQlEyN1hYWF9SRUdfVFRF Q1BdID0gMHgyNiwNCgkJW0JRMjdYWFhfUkVHX05BQ10gPSAweDBjLA0KCQlb QlEyN1hYWF9SRUdfRkNDXSA9IDB4MTIsDQoJCVtCUTI3WFhYX1JFR19DWUNU XSA9IDB4MmEsDQoJCVtCUTI3WFhYX1JFR19BRV0gPSAweDIyLA0KCQlbQlEy N1hYWF9SRUdfU09DXSA9IDB4MmMsDQoJCVtCUTI3WFhYX1JFR19EQ0FQXSA9 IDB4M2MsDQoJCVtCUTI3WFhYX1JFR19BUF0gPSAweDI0LA0KCQlCUTI3WFhY X0RNX1JFR19ST1dTLA0KCX0sDQoJYnEyNzUyMGczX3JlZ3NbQlEyN1hYWF9S RUdfTUFYXSA9IHsNCgkJW0JRMjdYWFhfUkVHX0NUUkxdID0gMHgwMCwNCgkJ W0JRMjdYWFhfUkVHX1RFTVBdID0gMHgwNiwNCgkJW0JRMjdYWFhfUkVHX0lO VF9URU1QXSA9IDB4MzYsDQoJCVtCUTI3WFhYX1JFR19WT0xUXSA9IDB4MDgs DQoJCVtCUTI3WFhYX1JFR19BSV0gPSAweDE0LA0KCQlbQlEyN1hYWF9SRUdf RkxBR1NdID0gMHgwYSwNCgkJW0JRMjdYWFhfUkVHX1RURV0gPSAweDE2LA0K CQlbQlEyN1hYWF9SRUdfVFRGXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCVtC UTI3WFhYX1JFR19UVEVTXSA9IDB4MWMsDQoJCVtCUTI3WFhYX1JFR19UVEVD UF0gPSAweDI2LA0KCQlbQlEyN1hYWF9SRUdfTkFDXSA9IDB4MGMsDQoJCVtC UTI3WFhYX1JFR19GQ0NdID0gMHgxMiwNCgkJW0JRMjdYWFhfUkVHX0NZQ1Rd ID0gMHgyYSwNCgkJW0JRMjdYWFhfUkVHX0FFXSA9IDB4MjIsDQoJCVtCUTI3 WFhYX1JFR19TT0NdID0gMHgyYywNCgkJW0JRMjdYWFhfUkVHX0RDQVBdID0g MHgzYywNCgkJW0JRMjdYWFhfUkVHX0FQXSA9IDB4MjQsDQoJCUJRMjdYWFhf RE1fUkVHX1JPV1MsDQoJfSwNCglicTI3NTIwZzRfcmVnc1tCUTI3WFhYX1JF R19NQVhdID0gew0KCQlbQlEyN1hYWF9SRUdfQ1RSTF0gPSAweDAwLA0KCQlb QlEyN1hYWF9SRUdfVEVNUF0gPSAweDA2LA0KCQlbQlEyN1hYWF9SRUdfSU5U X1RFTVBdID0gMHgyOCwNCgkJW0JRMjdYWFhfUkVHX1ZPTFRdID0gMHgwOCwN CgkJW0JRMjdYWFhfUkVHX0FJXSA9IDB4MTQsDQoJCVtCUTI3WFhYX1JFR19G TEFHU10gPSAweDBhLA0KCQlbQlEyN1hYWF9SRUdfVFRFXSA9IDB4MTYsDQoJ CVtCUTI3WFhYX1JFR19UVEZdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JR MjdYWFhfUkVHX1RURVNdID0gMHgxYywNCgkJW0JRMjdYWFhfUkVHX1RURUNQ XSA9IElOVkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX1JFR19OQUNdID0g MHgwYywNCgkJW0JRMjdYWFhfUkVHX0ZDQ10gPSAweDEyLA0KCQlbQlEyN1hY WF9SRUdfQ1lDVF0gPSAweDFlLA0KCQlbQlEyN1hYWF9SRUdfQUVdID0gSU5W QUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX1NPQ10gPSAweDIwLA0K CQlbQlEyN1hYWF9SRUdfRENBUF0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlb QlEyN1hYWF9SRUdfQVBdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJQlEyN1hY WF9ETV9SRUdfUk9XUywNCgl9LA0KCWJxMjc1MzBfcmVnc1tCUTI3WFhYX1JF R19NQVhdID0gew0KCQlbQlEyN1hYWF9SRUdfQ1RSTF0gPSAweDAwLA0KCQlb QlEyN1hYWF9SRUdfVEVNUF0gPSAweDA2LA0KCQlbQlEyN1hYWF9SRUdfSU5U X1RFTVBdID0gMHgzMiwNCgkJW0JRMjdYWFhfUkVHX1ZPTFRdID0gMHgwOCwN CgkJW0JRMjdYWFhfUkVHX0FJXSA9IDB4MTQsDQoJCVtCUTI3WFhYX1JFR19G TEFHU10gPSAweDBhLA0KCQlbQlEyN1hYWF9SRUdfVFRFXSA9IDB4MTYsDQoJ CVtCUTI3WFhYX1JFR19UVEZdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JR MjdYWFhfUkVHX1RURVNdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JRMjdY WFhfUkVHX1RURUNQXSA9IElOVkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhY X1JFR19OQUNdID0gMHgwYywNCgkJW0JRMjdYWFhfUkVHX0ZDQ10gPSAweDEy LA0KCQlbQlEyN1hYWF9SRUdfQ1lDVF0gPSAweDJhLA0KCQlbQlEyN1hYWF9S RUdfQUVdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX1NP Q10gPSAweDJjLA0KCQlbQlEyN1hYWF9SRUdfRENBUF0gPSBJTlZBTElEX1JF R19BRERSLA0KCQlbQlEyN1hYWF9SRUdfQVBdID0gMHgyNCwNCgkJQlEyN1hY WF9ETV9SRUdfUk9XUywNCgl9LA0KI2RlZmluZSBicTI3NTMxX3JlZ3MgYnEy NzUzMF9yZWdzDQoJYnEyNzU0MV9yZWdzW0JRMjdYWFhfUkVHX01BWF0gPSB7 DQoJCVtCUTI3WFhYX1JFR19DVFJMXSA9IDB4MDAsDQoJCVtCUTI3WFhYX1JF R19URU1QXSA9IDB4MDYsDQoJCVtCUTI3WFhYX1JFR19JTlRfVEVNUF0gPSAw eDI4LA0KCQlbQlEyN1hYWF9SRUdfVk9MVF0gPSAweDA4LA0KCQlbQlEyN1hY WF9SRUdfQUldID0gMHgxNCwNCgkJW0JRMjdYWFhfUkVHX0ZMQUdTXSA9IDB4 MGEsDQoJCVtCUTI3WFhYX1JFR19UVEVdID0gMHgxNiwNCgkJW0JRMjdYWFhf UkVHX1RURl0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdf VFRFU10gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfVFRF Q1BdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX05BQ10g PSAweDBjLA0KCQlbQlEyN1hYWF9SRUdfRkNDXSA9IDB4MTIsDQoJCVtCUTI3 WFhYX1JFR19DWUNUXSA9IDB4MmEsDQoJCVtCUTI3WFhYX1JFR19BRV0gPSBJ TlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfU09DXSA9IDB4MmMs DQoJCVtCUTI3WFhYX1JFR19EQ0FQXSA9IDB4M2MsDQoJCVtCUTI3WFhYX1JF R19BUF0gPSAweDI0LA0KCQlCUTI3WFhYX0RNX1JFR19ST1dTLA0KCX0sDQoj ZGVmaW5lIGJxMjc1NDJfcmVncyBicTI3NTQxX3JlZ3MNCiNkZWZpbmUgYnEy NzU0Nl9yZWdzIGJxMjc1NDFfcmVncw0KI2RlZmluZSBicTI3NzQyX3JlZ3Mg YnEyNzU0MV9yZWdzDQoJYnEyNzU0NV9yZWdzW0JRMjdYWFhfUkVHX01BWF0g PSB7DQoJCVtCUTI3WFhYX1JFR19DVFJMXSA9IDB4MDAsDQoJCVtCUTI3WFhY X1JFR19URU1QXSA9IDB4MDYsDQoJCVtCUTI3WFhYX1JFR19JTlRfVEVNUF0g PSAweDI4LA0KCQlbQlEyN1hYWF9SRUdfVk9MVF0gPSAweDA4LA0KCQlbQlEy N1hYWF9SRUdfQUldID0gMHgxNCwNCgkJW0JRMjdYWFhfUkVHX0ZMQUdTXSA9 IDB4MGEsDQoJCVtCUTI3WFhYX1JFR19UVEVdID0gMHgxNiwNCgkJW0JRMjdY WFhfUkVHX1RURl0gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9S RUdfVFRFU10gPSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdf VFRFQ1BdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX05B Q10gPSAweDBjLA0KCQlbQlEyN1hYWF9SRUdfRkNDXSA9IDB4MTIsDQoJCVtC UTI3WFhYX1JFR19DWUNUXSA9IDB4MmEsDQoJCVtCUTI3WFhYX1JFR19BRV0g PSBJTlZBTElEX1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfU09DXSA9IDB4 MmMsDQoJCVtCUTI3WFhYX1JFR19EQ0FQXSA9IElOVkFMSURfUkVHX0FERFIs DQoJCVtCUTI3WFhYX1JFR19BUF0gPSAweDI0LA0KCQlCUTI3WFhYX0RNX1JF R19ST1dTLA0KCX0sDQoJYnEyNzQyMV9yZWdzW0JRMjdYWFhfUkVHX01BWF0g PSB7DQoJCVtCUTI3WFhYX1JFR19DVFJMXSA9IDB4MDAsDQoJCVtCUTI3WFhY X1JFR19URU1QXSA9IDB4MDIsDQoJCVtCUTI3WFhYX1JFR19JTlRfVEVNUF0g PSAweDFlLA0KCQlbQlEyN1hYWF9SRUdfVk9MVF0gPSAweDA0LA0KCQlbQlEy N1hYWF9SRUdfQUldID0gMHgxMCwNCgkJW0JRMjdYWFhfUkVHX0ZMQUdTXSA9 IDB4MDYsDQoJCVtCUTI3WFhYX1JFR19UVEVdID0gSU5WQUxJRF9SRUdfQURE UiwNCgkJW0JRMjdYWFhfUkVHX1RURl0gPSBJTlZBTElEX1JFR19BRERSLA0K CQlbQlEyN1hYWF9SRUdfVFRFU10gPSBJTlZBTElEX1JFR19BRERSLA0KCQlb QlEyN1hYWF9SRUdfVFRFQ1BdID0gSU5WQUxJRF9SRUdfQUREUiwNCgkJW0JR MjdYWFhfUkVHX05BQ10gPSAweDA4LA0KCQlbQlEyN1hYWF9SRUdfRkNDXSA9 IDB4MGUsDQoJCVtCUTI3WFhYX1JFR19DWUNUXSA9IElOVkFMSURfUkVHX0FE RFIsDQoJCVtCUTI3WFhYX1JFR19BRV0gPSBJTlZBTElEX1JFR19BRERSLA0K CQlbQlEyN1hYWF9SRUdfU09DXSA9IDB4MWMsDQoJCVtCUTI3WFhYX1JFR19E Q0FQXSA9IDB4M2MsDQoJCVtCUTI3WFhYX1JFR19BUF0gPSAweDE4LA0KCQlC UTI3WFhYX0RNX1JFR19ST1dTLA0KCX0sDQoJYnEwNzQyMV9yZWdzW0JRMjdY WFhfUkVHX01BWF0gPSB7DQoJCVtCUTI3WFhYX1JFR19DVFJMXSA9IDB4MDAs DQoJCVtCUTI3WFhYX1JFR19URU1QXSA9IDB4MDIsDQoJCVtCUTI3WFhYX1JF R19JTlRfVEVNUF0gPSAweDFlLA0KCQlbQlEyN1hYWF9SRUdfVk9MVF0gPSAw eDA0LA0KCQlbQlEyN1hYWF9SRUdfQUldID0gMHgxMCwNCgkJW0JRMjdYWFhf UkVHX0ZMQUdTXSA9IDB4MDYsDQoJCVtCUTI3WFhYX1JFR19UVEVdID0gSU5W QUxJRF9SRUdfQUREUiwNCgkJW0JRMjdYWFhfUkVHX1RURl0gPSBJTlZBTElE X1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfVFRFU10gPSBJTlZBTElEX1JF R19BRERSLA0KCQlbQlEyN1hYWF9SRUdfVFRFQ1BdID0gSU5WQUxJRF9SRUdf QUREUiwNCgkJW0JRMjdYWFhfUkVHX05BQ10gPSAweDA4LA0KCQlbQlEyN1hY WF9SRUdfRkNDXSA9IDB4MGUsDQoJCVtCUTI3WFhYX1JFR19DWUNUXSA9IElO VkFMSURfUkVHX0FERFIsDQoJCVtCUTI3WFhYX1JFR19BRV0gPSBJTlZBTElE X1JFR19BRERSLA0KCQlbQlEyN1hYWF9SRUdfU09DXSA9IDB4MWMsDQoJCVtC UTI3WFhYX1JFR19EQ0FQXSA9IDB4M2MsDQoJCVtCUTI3WFhYX1JFR19BUF0g PSAweDE4LA0KCQlCUTI3WFhYX0RNX1JFR19ST1dTLA0KCX07DQojZGVmaW5l IGJxMjc0MjVfcmVncyBicTI3NDIxX3JlZ3MNCiNkZWZpbmUgYnEyNzQ0MV9y ZWdzIGJxMjc0MjFfcmVncw0KI2RlZmluZSBicTI3NjIxX3JlZ3MgYnEyNzQy MV9yZWdzDQoNCnN0YXRpYyBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBi cTI3MDAwX3Byb3BzW10gPSB7DQoJUE9XRVJfU1VQUExZX1BST1BfU1RBVFVT LA0KCVBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQsDQoJUE9XRVJfU1VQUExZ X1BST1BfVk9MVEFHRV9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfQ1VSUkVO VF9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfQ0FQQUNJVFksDQoJUE9XRVJf U1VQUExZX1BST1BfQ0FQQUNJVFlfTEVWRUwsDQoJUE9XRVJfU1VQUExZX1BS T1BfVEVNUCwNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1FX1RPX0VNUFRZX05P VywNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1FX1RPX0VNUFRZX0FWRywNCglQ T1dFUl9TVVBQTFlfUFJPUF9USU1FX1RPX0ZVTExfTk9XLA0KCVBPV0VSX1NV UFBMWV9QUk9QX1RFQ0hOT0xPR1ksDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hB UkdFX0ZVTEwsDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdFX05PVywNCglQ T1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfRlVMTF9ERVNJR04sDQoJUE9XRVJf U1VQUExZX1BST1BfQ1lDTEVfQ09VTlQsDQoJUE9XRVJfU1VQUExZX1BST1Bf RU5FUkdZX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9QT1dFUl9BVkcsDQoJ UE9XRVJfU1VQUExZX1BST1BfSEVBTFRILA0KCVBPV0VSX1NVUFBMWV9QUk9Q X01BTlVGQUNUVVJFUiwNCn07DQoNCnN0YXRpYyBlbnVtIHBvd2VyX3N1cHBs eV9wcm9wZXJ0eSBicTA3MDAwX3Byb3BzW10gPSB7DQoJUE9XRVJfU1VQUExZ X1BST1BfU1RBVFVTLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQsDQoJ UE9XRVJfU1VQUExZX1BST1BfVk9MVEFHRV9OT1csDQoJUE9XRVJfU1VQUExZ X1BST1BfQ1VSUkVOVF9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfQ0FQQUNJ VFksDQoJUE9XRVJfU1VQUExZX1BST1BfQ0FQQUNJVFlfTEVWRUwsDQoJUE9X RVJfU1VQUExZX1BST1BfVEVNUCwNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1F X1RPX0VNUFRZX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1FX1RPX0VN UFRZX0FWRywNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1FX1RPX0ZVTExfTk9X LA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RFQ0hOT0xPR1ksDQoJUE9XRVJfU1VQ UExZX1BST1BfQ0hBUkdFX0ZVTEwsDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hB UkdFX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfRlVMTF9ERVNJ R04sDQoJUE9XRVJfU1VQUExZX1BST1BfQ1lDTEVfQ09VTlQsDQoJUE9XRVJf U1VQUExZX1BST1BfRU5FUkdZX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9Q T1dFUl9BVkcsDQoJUE9XRVJfU1VQUExZX1BST1BfSEVBTFRILA0KCVBPV0VS X1NVUFBMWV9QUk9QX01BTlVGQUNUVVJFUiwNCn07DQoNCnN0YXRpYyBlbnVt IHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBicTI3MDEwX3Byb3BzW10gPSB7DQoJ UE9XRVJfU1VQUExZX1BST1BfU1RBVFVTLA0KCVBPV0VSX1NVUFBMWV9QUk9Q X1BSRVNFTlQsDQoJUE9XRVJfU1VQUExZX1BST1BfVk9MVEFHRV9OT1csDQoJ UE9XRVJfU1VQUExZX1BST1BfQ1VSUkVOVF9OT1csDQoJUE9XRVJfU1VQUExZ X1BST1BfQ0FQQUNJVFksDQoJUE9XRVJfU1VQUExZX1BST1BfQ0FQQUNJVFlf TEVWRUwsDQoJUE9XRVJfU1VQUExZX1BST1BfVEVNUCwNCglQT1dFUl9TVVBQ TFlfUFJPUF9USU1FX1RPX0VNUFRZX05PVywNCglQT1dFUl9TVVBQTFlfUFJP UF9USU1FX1RPX0VNUFRZX0FWRywNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1F X1RPX0ZVTExfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RFQ0hOT0xPR1ks DQoJUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdFX0ZVTEwsDQoJUE9XRVJfU1VQ UExZX1BST1BfQ0hBUkdFX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DSEFS R0VfRlVMTF9ERVNJR04sDQoJUE9XRVJfU1VQUExZX1BST1BfQ1lDTEVfQ09V TlQsDQoJUE9XRVJfU1VQUExZX1BST1BfSEVBTFRILA0KCVBPV0VSX1NVUFBM WV9QUk9QX01BTlVGQUNUVVJFUiwNCn07DQoNCiNkZWZpbmUgYnEyNzUweF9w cm9wcyBicTI3NTEwZzNfcHJvcHMNCiNkZWZpbmUgYnEyNzUxeF9wcm9wcyBi cTI3NTEwZzNfcHJvcHMNCiNkZWZpbmUgYnEyNzUyeF9wcm9wcyBicTI3NTEw ZzNfcHJvcHMNCg0Kc3RhdGljIGVudW0gcG93ZXJfc3VwcGx5X3Byb3BlcnR5 IGJxMjc1MDBfcHJvcHNbXSA9IHsNCglQT1dFUl9TVVBQTFlfUFJPUF9TVEFU VVMsDQoJUE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVCwNCglQT1dFUl9TVVBQ TFlfUFJPUF9WT0xUQUdFX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DVVJS RU5UX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DQVBBQ0lUWSwNCglQT1dF Ul9TVVBQTFlfUFJPUF9DQVBBQ0lUWV9MRVZFTCwNCglQT1dFUl9TVVBQTFlf UFJPUF9URU1QLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RJTUVfVE9fRU1QVFlf Tk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RJTUVfVE9fRlVMTF9OT1csDQoJ UE9XRVJfU1VQUExZX1BST1BfVEVDSE5PTE9HWSwNCglQT1dFUl9TVVBQTFlf UFJPUF9DSEFSR0VfRlVMTCwNCglQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0Vf Tk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9GVUxMX0RFU0lHTiwN CglQT1dFUl9TVVBQTFlfUFJPUF9DWUNMRV9DT1VOVCwNCglQT1dFUl9TVVBQ TFlfUFJPUF9FTkVSR1lfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1BPV0VS X0FWRywNCglQT1dFUl9TVVBQTFlfUFJPUF9IRUFMVEgsDQoJUE9XRVJfU1VQ UExZX1BST1BfTUFOVUZBQ1RVUkVSLA0KfTsNCiNkZWZpbmUgYnEyNzUxMGcx X3Byb3BzIGJxMjc1MDBfcHJvcHMNCiNkZWZpbmUgYnEyNzUxMGcyX3Byb3Bz IGJxMjc1MDBfcHJvcHMNCg0Kc3RhdGljIGVudW0gcG93ZXJfc3VwcGx5X3By b3BlcnR5IGJxMjc1MTBnM19wcm9wc1tdID0gew0KCVBPV0VSX1NVUFBMWV9Q Uk9QX1NUQVRVUywNCglQT1dFUl9TVVBQTFlfUFJPUF9QUkVTRU5ULA0KCVBP V0VSX1NVUFBMWV9QUk9QX1ZPTFRBR0VfTk9XLA0KCVBPV0VSX1NVUFBMWV9Q Uk9QX0NVUlJFTlRfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NBUEFDSVRZ LA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NBUEFDSVRZX0xFVkVMLA0KCVBPV0VS X1NVUFBMWV9QUk9QX1RFTVAsDQoJUE9XRVJfU1VQUExZX1BST1BfVElNRV9U T19FTVBUWV9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfVEVDSE5PTE9HWSwN CglQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfRlVMTCwNCglQT1dFUl9TVVBQ TFlfUFJPUF9DSEFSR0VfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NIQVJH RV9GVUxMX0RFU0lHTiwNCglQT1dFUl9TVVBQTFlfUFJPUF9DWUNMRV9DT1VO VCwNCglQT1dFUl9TVVBQTFlfUFJPUF9IRUFMVEgsDQoJUE9XRVJfU1VQUExZ X1BST1BfTUFOVUZBQ1RVUkVSLA0KfTsNCg0Kc3RhdGljIGVudW0gcG93ZXJf c3VwcGx5X3Byb3BlcnR5IGJxMjc1MjBnMV9wcm9wc1tdID0gew0KCVBPV0VS X1NVUFBMWV9QUk9QX1NUQVRVUywNCglQT1dFUl9TVVBQTFlfUFJPUF9QUkVT RU5ULA0KCVBPV0VSX1NVUFBMWV9QUk9QX1ZPTFRBR0VfTk9XLA0KCVBPV0VS X1NVUFBMWV9QUk9QX0NVUlJFTlRfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9Q X0NBUEFDSVRZLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NBUEFDSVRZX0xFVkVM LA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RFTVAsDQoJUE9XRVJfU1VQUExZX1BS T1BfVElNRV9UT19FTVBUWV9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfVElN RV9UT19GVUxMX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9URUNITk9MT0dZ LA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9GVUxMLA0KCVBPV0VSX1NV UFBMWV9QUk9QX0NIQVJHRV9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hB UkdFX0ZVTExfREVTSUdOLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0VORVJHWV9O T1csDQoJUE9XRVJfU1VQUExZX1BST1BfUE9XRVJfQVZHLA0KCVBPV0VSX1NV UFBMWV9QUk9QX0hFQUxUSCwNCglQT1dFUl9TVVBQTFlfUFJPUF9NQU5VRkFD VFVSRVIsDQp9Ow0KDQojZGVmaW5lIGJxMjc1MjBnMl9wcm9wcyBicTI3NTAw X3Byb3BzDQoNCnN0YXRpYyBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBi cTI3NTIwZzNfcHJvcHNbXSA9IHsNCglQT1dFUl9TVVBQTFlfUFJPUF9TVEFU VVMsDQoJUE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVCwNCglQT1dFUl9TVVBQ TFlfUFJPUF9WT0xUQUdFX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DVVJS RU5UX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DQVBBQ0lUWSwNCglQT1dF Ul9TVVBQTFlfUFJPUF9DQVBBQ0lUWV9MRVZFTCwNCglQT1dFUl9TVVBQTFlf UFJPUF9URU1QLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RJTUVfVE9fRU1QVFlf Tk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RFQ0hOT0xPR1ksDQoJUE9XRVJf U1VQUExZX1BST1BfQ0hBUkdFX0ZVTEwsDQoJUE9XRVJfU1VQUExZX1BST1Bf Q0hBUkdFX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfRlVMTF9E RVNJR04sDQoJUE9XRVJfU1VQUExZX1BST1BfQ1lDTEVfQ09VTlQsDQoJUE9X RVJfU1VQUExZX1BST1BfRU5FUkdZX05PVywNCglQT1dFUl9TVVBQTFlfUFJP UF9QT1dFUl9BVkcsDQoJUE9XRVJfU1VQUExZX1BST1BfSEVBTFRILA0KCVBP V0VSX1NVUFBMWV9QUk9QX01BTlVGQUNUVVJFUiwNCn07DQoNCnN0YXRpYyBl bnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBicTI3NTIwZzRfcHJvcHNbXSA9 IHsNCglQT1dFUl9TVVBQTFlfUFJPUF9TVEFUVVMsDQoJUE9XRVJfU1VQUExZ X1BST1BfUFJFU0VOVCwNCglQT1dFUl9TVVBQTFlfUFJPUF9WT0xUQUdFX05P VywNCglQT1dFUl9TVVBQTFlfUFJPUF9DVVJSRU5UX05PVywNCglQT1dFUl9T VVBQTFlfUFJPUF9DQVBBQ0lUWSwNCglQT1dFUl9TVVBQTFlfUFJPUF9DQVBB Q0lUWV9MRVZFTCwNCglQT1dFUl9TVVBQTFlfUFJPUF9URU1QLA0KCVBPV0VS X1NVUFBMWV9QUk9QX1RJTUVfVE9fRU1QVFlfTk9XLA0KCVBPV0VSX1NVUFBM WV9QUk9QX1RFQ0hOT0xPR1ksDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdF X0ZVTEwsDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdFX05PVywNCglQT1dF Ul9TVVBQTFlfUFJPUF9DWUNMRV9DT1VOVCwNCglQT1dFUl9TVVBQTFlfUFJP UF9IRUFMVEgsDQoJUE9XRVJfU1VQUExZX1BST1BfTUFOVUZBQ1RVUkVSLA0K fTsNCg0Kc3RhdGljIGVudW0gcG93ZXJfc3VwcGx5X3Byb3BlcnR5IGJxMjc1 MzBfcHJvcHNbXSA9IHsNCglQT1dFUl9TVVBQTFlfUFJPUF9TVEFUVVMsDQoJ UE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVCwNCglQT1dFUl9TVVBQTFlfUFJP UF9WT0xUQUdFX05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9DVVJSRU5UX05P VywNCglQT1dFUl9TVVBQTFlfUFJPUF9DQVBBQ0lUWSwNCglQT1dFUl9TVVBQ TFlfUFJPUF9DQVBBQ0lUWV9MRVZFTCwNCglQT1dFUl9TVVBQTFlfUFJPUF9U RU1QLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RJTUVfVE9fRU1QVFlfTk9XLA0K CVBPV0VSX1NVUFBMWV9QUk9QX1RFQ0hOT0xPR1ksDQoJUE9XRVJfU1VQUExZ X1BST1BfQ0hBUkdFX0ZVTEwsDQoJUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdF X05PVywNCglQT1dFUl9TVVBQTFlfUFJPUF9QT1dFUl9BVkcsDQoJUE9XRVJf U1VQUExZX1BST1BfSEVBTFRILA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NZQ0xF X0NPVU5ULA0KCVBPV0VSX1NVUFBMWV9QUk9QX01BTlVGQUNUVVJFUiwNCn07 DQojZGVmaW5lIGJxMjc1MzFfcHJvcHMgYnEyNzUzMF9wcm9wcw0KDQpzdGF0 aWMgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgYnEyNzU0MV9wcm9wc1td ID0gew0KCVBPV0VSX1NVUFBMWV9QUk9QX1NUQVRVUywNCglQT1dFUl9TVVBQ TFlfUFJPUF9QUkVTRU5ULA0KCVBPV0VSX1NVUFBMWV9QUk9QX1ZPTFRBR0Vf Tk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NVUlJFTlRfTk9XLA0KCVBPV0VS X1NVUFBMWV9QUk9QX0NBUEFDSVRZLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NB UEFDSVRZX0xFVkVMLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RFTVAsDQoJUE9X RVJfU1VQUExZX1BST1BfVElNRV9UT19FTVBUWV9OT1csDQoJUE9XRVJfU1VQ UExZX1BST1BfVEVDSE5PTE9HWSwNCglQT1dFUl9TVVBQTFlfUFJPUF9DSEFS R0VfRlVMTCwNCglQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfTk9XLA0KCVBP V0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9GVUxMX0RFU0lHTiwNCglQT1dFUl9T VVBQTFlfUFJPUF9DWUNMRV9DT1VOVCwNCglQT1dFUl9TVVBQTFlfUFJPUF9Q T1dFUl9BVkcsDQoJUE9XRVJfU1VQUExZX1BST1BfSEVBTFRILA0KCVBPV0VS X1NVUFBMWV9QUk9QX01BTlVGQUNUVVJFUiwNCn07DQojZGVmaW5lIGJxMjc1 NDJfcHJvcHMgYnEyNzU0MV9wcm9wcw0KI2RlZmluZSBicTI3NTQ2X3Byb3Bz IGJxMjc1NDFfcHJvcHMNCiNkZWZpbmUgYnEyNzc0Ml9wcm9wcyBicTI3NTQx X3Byb3BzDQoNCnN0YXRpYyBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBi cTI3NTQ1X3Byb3BzW10gPSB7DQoJUE9XRVJfU1VQUExZX1BST1BfU1RBVFVT LA0KCVBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQsDQoJUE9XRVJfU1VQUExZ X1BST1BfVk9MVEFHRV9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfQ1VSUkVO VF9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfQ0FQQUNJVFksDQoJUE9XRVJf U1VQUExZX1BST1BfQ0FQQUNJVFlfTEVWRUwsDQoJUE9XRVJfU1VQUExZX1BS T1BfVEVNUCwNCglQT1dFUl9TVVBQTFlfUFJPUF9USU1FX1RPX0VNUFRZX05P VywNCglQT1dFUl9TVVBQTFlfUFJPUF9URUNITk9MT0dZLA0KCVBPV0VSX1NV UFBMWV9QUk9QX0NIQVJHRV9GVUxMLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NI QVJHRV9OT1csDQoJUE9XRVJfU1VQUExZX1BST1BfSEVBTFRILA0KCVBPV0VS X1NVUFBMWV9QUk9QX0NZQ0xFX0NPVU5ULA0KCVBPV0VSX1NVUFBMWV9QUk9Q X1BPV0VSX0FWRywNCglQT1dFUl9TVVBQTFlfUFJPUF9NQU5VRkFDVFVSRVIs DQp9Ow0KDQpzdGF0aWMgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgYnEy NzQyMV9wcm9wc1tdID0gew0KCVBPV0VSX1NVUFBMWV9QUk9QX1NUQVRVUywN CglQT1dFUl9TVVBQTFlfUFJPUF9QUkVTRU5ULA0KCVBPV0VSX1NVUFBMWV9Q Uk9QX1ZPTFRBR0VfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NVUlJFTlRf Tk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NBUEFDSVRZLA0KCVBPV0VSX1NV UFBMWV9QUk9QX0NBUEFDSVRZX0xFVkVMLA0KCVBPV0VSX1NVUFBMWV9QUk9Q X1RFTVAsDQoJUE9XRVJfU1VQUExZX1BST1BfVEVDSE5PTE9HWSwNCglQT1dF Ul9TVVBQTFlfUFJPUF9DSEFSR0VfRlVMTCwNCglQT1dFUl9TVVBQTFlfUFJP UF9DSEFSR0VfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9GVUxM X0RFU0lHTiwNCglQT1dFUl9TVVBQTFlfUFJPUF9NQU5VRkFDVFVSRVIsDQp9 Ow0KDQpzdGF0aWMgZW51bSBwb3dlcl9zdXBwbHlfcHJvcGVydHkgYnEwNzQy MV9wcm9wc1tdID0gew0KCVBPV0VSX1NVUFBMWV9QUk9QX1NUQVRVUywNCglQ T1dFUl9TVVBQTFlfUFJPUF9QUkVTRU5ULA0KCVBPV0VSX1NVUFBMWV9QUk9Q X1ZPTFRBR0VfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NVUlJFTlRfTk9X LA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NBUEFDSVRZLA0KCVBPV0VSX1NVUFBM WV9QUk9QX0NBUEFDSVRZX0xFVkVMLA0KCVBPV0VSX1NVUFBMWV9QUk9QX1RF TVAsDQoJUE9XRVJfU1VQUExZX1BST1BfVEVDSE5PTE9HWSwNCglQT1dFUl9T VVBQTFlfUFJPUF9DSEFSR0VfRlVMTCwNCglQT1dFUl9TVVBQTFlfUFJPUF9D SEFSR0VfTk9XLA0KCVBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9GVUxMX0RF U0lHTiwNCglQT1dFUl9TVVBQTFlfUFJPUF9NQU5VRkFDVFVSRVIsDQp9Ow0K I2RlZmluZSBicTI3NDI1X3Byb3BzIGJxMjc0MjFfcHJvcHMNCiNkZWZpbmUg YnEyNzQ0MV9wcm9wcyBicTI3NDIxX3Byb3BzDQojZGVmaW5lIGJxMjc2MjFf cHJvcHMgYnEyNzQyMV9wcm9wcw0KDQpzdHJ1Y3QgYnEyN3h4eF9kbV9yZWcg ew0KCXU4IHN1YmNsYXNzX2lkOw0KCXU4IG9mZnNldDsNCgl1OCBieXRlczsN Cgl1MTYgbWluLCBtYXg7DQp9Ow0KDQplbnVtIGJxMjd4eHhfZG1fcmVnX2lk IHsNCglCUTI3WFhYX0RNX0RFU0lHTl9DQVBBQ0lUWSA9IDAsDQoJQlEyN1hY WF9ETV9ERVNJR05fRU5FUkdZLA0KCUJRMjdYWFhfRE1fVEVSTUlOQVRFX1ZP TFRBR0UsDQp9Ow0KDQojZGVmaW5lIGJxMjcwMDBfZG1fcmVncyAwDQojZGVm aW5lIGJxMDcwMDBfZG1fcmVncyAwDQojZGVmaW5lIGJxMjcwMTBfZG1fcmVn cyAwDQojZGVmaW5lIGJxMjc1MHhfZG1fcmVncyAwDQojZGVmaW5lIGJxMjc1 MXhfZG1fcmVncyAwDQojZGVmaW5lIGJxMjc1MnhfZG1fcmVncyAwDQoNCiNp ZiAwIC8qIG5vdCB5ZXQgdGVzdGVkICovDQpzdGF0aWMgc3RydWN0IGJxMjd4 eHhfZG1fcmVnIGJxMjc1MDBfZG1fcmVnc1tdID0gew0KCVtCUTI3WFhYX0RN X0RFU0lHTl9DQVBBQ0lUWV0gICA9IHsgNDgsIDEwLCAyLCAgICAwLCA2NTUz NSB9LA0KCVtCUTI3WFhYX0RNX0RFU0lHTl9FTkVSR1ldICAgICA9IHsgfSwg LyogbWlzc2luZyBvbiBjaGlwICovDQoJW0JRMjdYWFhfRE1fVEVSTUlOQVRF X1ZPTFRBR0VdID0geyA4MCwgNDgsIDIsIDEwMDAsIDMyNzY3IH0sDQp9Ow0K I2Vsc2UNCiNkZWZpbmUgYnEyNzUwMF9kbV9yZWdzIDANCiNlbmRpZg0KDQov KiB0b2RvIGNyZWF0ZSBkYXRhIG1lbW9yeSBkZWZpbml0aW9ucyBmcm9tIGRh dGFzaGVldHMgYW5kIHRlc3Qgb24gY2hpcHMgKi8NCiNkZWZpbmUgYnEyNzUx MGcxX2RtX3JlZ3MgMA0KI2RlZmluZSBicTI3NTEwZzJfZG1fcmVncyAwDQoj ZGVmaW5lIGJxMjc1MTBnM19kbV9yZWdzIDANCiNkZWZpbmUgYnEyNzUyMGcx X2RtX3JlZ3MgMA0KI2RlZmluZSBicTI3NTIwZzJfZG1fcmVncyAwDQojZGVm aW5lIGJxMjc1MjBnM19kbV9yZWdzIDANCiNkZWZpbmUgYnEyNzUyMGc0X2Rt X3JlZ3MgMA0KI2RlZmluZSBicTI3NTMwX2RtX3JlZ3MgMA0KI2RlZmluZSBi cTI3NTMxX2RtX3JlZ3MgMA0KI2RlZmluZSBicTI3NTQxX2RtX3JlZ3MgMA0K I2RlZmluZSBicTI3NTQyX2RtX3JlZ3MgMA0KI2RlZmluZSBicTI3NTQ2X2Rt X3JlZ3MgMA0KI2RlZmluZSBicTI3NzQyX2RtX3JlZ3MgMA0KDQojaWYgMCAv KiBub3QgeWV0IHRlc3RlZCAqLw0Kc3RhdGljIHN0cnVjdCBicTI3eHh4X2Rt X3JlZyBicTI3NTQ1X2RtX3JlZ3NbXSA9IHsNCglbQlEyN1hYWF9ETV9ERVNJ R05fQ0FQQUNJVFldICAgPSB7IDQ4LCAyMywgMiwgICAgMCwgMzI3NjcgfSwN CglbQlEyN1hYWF9ETV9ERVNJR05fRU5FUkdZXSAgICAgPSB7IDQ4LCAyNSwg MiwgICAgMCwgMzI3NjcgfSwNCglbQlEyN1hYWF9ETV9URVJNSU5BVEVfVk9M VEFHRV0gPSB7IDgwLCA2NywgMiwgMjgwMCwgIDM3MDAgfSwNCn07DQojZWxz ZQ0KI2RlZmluZSBicTI3NTQ1X2RtX3JlZ3MgMA0KI2VuZGlmDQoNCnN0YXRp YyBzdHJ1Y3QgYnEyN3h4eF9kbV9yZWcgYnEyNzQyMV9kbV9yZWdzW10gPSB7 DQoJW0JRMjdYWFhfRE1fREVTSUdOX0NBUEFDSVRZXSAgID0geyA4MiwgMTAs IDIsICAgIDAsICA4MDAwIH0sDQoJW0JRMjdYWFhfRE1fREVTSUdOX0VORVJH WV0gICAgID0geyA4MiwgMTIsIDIsICAgIDAsIDMyNzY3IH0sDQoJW0JRMjdY WFhfRE1fVEVSTUlOQVRFX1ZPTFRBR0VdID0geyA4MiwgMTYsIDIsIDI1MDAs ICAzNzAwIH0sDQp9Ow0KDQpzdGF0aWMgc3RydWN0IGJxMjd4eHhfZG1fcmVn IGJxMjc0MjVfZG1fcmVnc1tdID0gew0KCVtCUTI3WFhYX0RNX0RFU0lHTl9D QVBBQ0lUWV0gICA9IHsgODIsIDEyLCAyLCAgICAwLCAzMjc2NyB9LA0KCVtC UTI3WFhYX0RNX0RFU0lHTl9FTkVSR1ldICAgICA9IHsgODIsIDE0LCAyLCAg ICAwLCAzMjc2NyB9LA0KCVtCUTI3WFhYX0RNX1RFUk1JTkFURV9WT0xUQUdF XSA9IHsgODIsIDE4LCAyLCAyODAwLCAgMzcwMCB9LA0KfTsNCg0Kc3RhdGlj IHN0cnVjdCBicTI3eHh4X2RtX3JlZyBicTA3NDIxX2RtX3JlZ3NbXSA9IHsN CglbQlEyN1hYWF9ETV9ERVNJR05fQ0FQQUNJVFldICAgPSB7IDgyLCAxMCwg MiwgICAgMCwgIDgwMDAgfSwNCglbQlEyN1hYWF9ETV9ERVNJR05fRU5FUkdZ XSAgICAgPSB7IDgyLCAxMiwgMiwgICAgMCwgMzI3NjcgfSwNCglbQlEyN1hY WF9ETV9URVJNSU5BVEVfVk9MVEFHRV0gPSB7IDgyLCAxNiwgMiwgMjUwMCwg IDM3MDAgfSwNCn07DQoNCiNpZiAwIC8qIG5vdCB5ZXQgdGVzdGVkICovDQoj ZGVmaW5lIGJxMjc0NDFfZG1fcmVncyBicTI3NDIxX2RtX3JlZ3MNCiNlbHNl DQojZGVmaW5lIGJxMjc0NDFfZG1fcmVncyAwDQojZW5kaWYNCg0KI2lmIDAg Lyogbm90IHlldCB0ZXN0ZWQgKi8NCnN0YXRpYyBzdHJ1Y3QgYnEyN3h4eF9k bV9yZWcgYnEyNzYyMV9kbV9yZWdzW10gPSB7DQoJW0JRMjdYWFhfRE1fREVT SUdOX0NBUEFDSVRZXSAgID0geyA4MiwgMywgMiwgICAgMCwgIDgwMDAgfSwN CglbQlEyN1hYWF9ETV9ERVNJR05fRU5FUkdZXSAgICAgPSB7IDgyLCA1LCAy LCAgICAwLCAzMjc2NyB9LA0KCVtCUTI3WFhYX0RNX1RFUk1JTkFURV9WT0xU QUdFXSA9IHsgODIsIDksIDIsIDI1MDAsICAzNzAwIH0sDQp9Ow0KI2Vsc2UN CiNkZWZpbmUgYnEyNzYyMV9kbV9yZWdzIDANCiNlbmRpZg0KDQojZGVmaW5l IEJRMjdYWFhfT19aRVJPCTB4MDAwMDAwMDENCiNkZWZpbmUgQlEyN1hYWF9P X09UREMJMHgwMDAwMDAwMg0KI2RlZmluZSBCUTI3WFhYX09fVVRPVCAgMHgw MDAwMDAwNA0KI2RlZmluZSBCUTI3WFhYX09fQ0ZHVVAJMHgwMDAwMDAwOA0K I2RlZmluZSBCUTI3WFhYX09fUkFNCTB4MDAwMDAwMTANCg0KI2RlZmluZSBC UTI3WFhYX0RBVEEocmVmLCBrZXksIG9wdCkgewkJXA0KCS5vcHRzID0gKG9w dCksCQkJCVwNCgkudW5zZWFsX2tleSA9IGtleSwJCQlcDQoJLnJlZ3MgID0g cmVmIyNfcmVncywJCQlcDQoJLmRtX3JlZ3MgPSByZWYjI19kbV9yZWdzLAkJ XA0KCS5wcm9wcyA9IHJlZiMjX3Byb3BzLAkJCVwNCgkucHJvcHNfc2l6ZSA9 IEFSUkFZX1NJWkUocmVmIyNfcHJvcHMpIH0NCg0Kc3RhdGljIHN0cnVjdCB7 DQoJdTMyIG9wdHM7DQoJdTMyIHVuc2VhbF9rZXk7DQoJdTggKnJlZ3M7DQoJ c3RydWN0IGJxMjd4eHhfZG1fcmVnICpkbV9yZWdzOw0KCWVudW0gcG93ZXJf c3VwcGx5X3Byb3BlcnR5ICpwcm9wczsNCglzaXplX3QgcHJvcHNfc2l6ZTsN Cn0gYnEyN3h4eF9jaGlwX2RhdGFbXSA9IHsNCglbQlEyNzAwMF0gICA9IEJR MjdYWFhfREFUQShicTI3MDAwLCAgIDAgICAgICAgICAsIEJRMjdYWFhfT19a RVJPKSwNCglbQlEwNzAwMF0gICA9IEJRMjdYWFhfREFUQShicTA3MDAwLCAg IDAgICAgICAgICAsIEJRMjdYWFhfT19aRVJPKSwvL2R1cA0KCVtCUTI3MDEw XSAgID0gQlEyN1hYWF9EQVRBKGJxMjcwMTAsICAgMCAgICAgICAgICwgQlEy N1hYWF9PX1pFUk8pLA0KCVtCUTI3NTBYXSAgID0gQlEyN1hYWF9EQVRBKGJx Mjc1MHgsICAgMCAgICAgICAgICwgQlEyN1hYWF9PX09UREMpLA0KCVtCUTI3 NTFYXSAgID0gQlEyN1hYWF9EQVRBKGJxMjc1MXgsICAgMCAgICAgICAgICwg QlEyN1hYWF9PX09UREMpLA0KCVtCUTI3NTJYXSAgID0gQlEyN1hYWF9EQVRB KGJxMjc1MngsICAgMCAgICAgICAgICwgQlEyN1hYWF9PX09UREMpLA0KCVtC UTI3NTAwXSAgID0gQlEyN1hYWF9EQVRBKGJxMjc1MDAsICAgMHgwNDE0MzY3 MiwgQlEyN1hYWF9PX09UREMpLA0KCVtCUTA3NDIxXSAgID0gQlEyN1hYWF9E QVRBKGJxMDc0MjEsICAgMHg4MDAwODAwMCwgQlEyN1hYWF9PX1VUT1QgfCBC UTI3WFhYX09fQ0ZHVVAgfCBCUTI3WFhYX09fUkFNKSwgLy9kdXANCglbQlEy NzUxMEcxXSA9IEJRMjdYWFhfREFUQShicTI3NTEwZzEsIDAgICAgICAgICAs IEJRMjdYWFhfT19PVERDKSwNCglbQlEyNzUxMEcyXSA9IEJRMjdYWFhfREFU QShicTI3NTEwZzIsIDAgICAgICAgICAsIEJRMjdYWFhfT19PVERDKSwNCglb QlEyNzUxMEczXSA9IEJRMjdYWFhfREFUQShicTI3NTEwZzMsIDAgICAgICAg ICAsIEJRMjdYWFhfT19PVERDKSwNCglbQlEyNzUyMEcxXSA9IEJRMjdYWFhf REFUQShicTI3NTIwZzEsIDAgICAgICAgICAsIEJRMjdYWFhfT19PVERDKSwN CglbQlEyNzUyMEcyXSA9IEJRMjdYWFhfREFUQShicTI3NTIwZzIsIDAgICAg ICAgICAsIEJRMjdYWFhfT19PVERDKSwNCglbQlEyNzUyMEczXSA9IEJRMjdY WFhfREFUQShicTI3NTIwZzMsIDAgICAgICAgICAsIEJRMjdYWFhfT19PVERD KSwNCglbQlEyNzUyMEc0XSA9IEJRMjdYWFhfREFUQShicTI3NTIwZzQsIDAg ICAgICAgICAsIEJRMjdYWFhfT19PVERDKSwNCglbQlEyNzUzMF0gICA9IEJR MjdYWFhfREFUQShicTI3NTMwLCAgIDAgICAgICAgICAsIEJRMjdYWFhfT19V VE9UKSwNCglbQlEyNzUzMV0gICA9IEJRMjdYWFhfREFUQShicTI3NTMxLCAg IDAgICAgICAgICAsIEJRMjdYWFhfT19VVE9UKSwNCglbQlEyNzU0MV0gICA9 IEJRMjdYWFhfREFUQShicTI3NTQxLCAgIDAgICAgICAgICAsIEJRMjdYWFhf T19PVERDKSwNCglbQlEyNzU0Ml0gICA9IEJRMjdYWFhfREFUQShicTI3NTQy LCAgIDAgICAgICAgICAsIEJRMjdYWFhfT19PVERDKSwNCglbQlEyNzU0Nl0g ICA9IEJRMjdYWFhfREFUQShicTI3NTQ2LCAgIDAgICAgICAgICAsIEJRMjdY WFhfT19PVERDKSwNCglbQlEyNzc0Ml0gICA9IEJRMjdYWFhfREFUQShicTI3 NzQyLCAgIDAgICAgICAgICAsIEJRMjdYWFhfT19PVERDKSwNCglbQlEyNzU0 NV0gICA9IEJRMjdYWFhfREFUQShicTI3NTQ1LCAgIDB4MDQxNDM2NzIsIEJR MjdYWFhfT19PVERDKSwNCglbQlEyNzQyMV0gICA9IEJRMjdYWFhfREFUQShi cTI3NDIxLCAgIDB4ODAwMDgwMDAsIEJRMjdYWFhfT19VVE9UIHwgQlEyN1hY WF9PX0NGR1VQIHwgQlEyN1hYWF9PX1JBTSksDQoJW0JRMjc0MjVdICAgPSBC UTI3WFhYX0RBVEEoYnEyNzQyNSwgICAweDA0MTQzNjcyLCBCUTI3WFhYX09f VVRPVCB8IEJRMjdYWFhfT19DRkdVUCksDQoJW0JRMjc0NDFdICAgPSBCUTI3 WFhYX0RBVEEoYnEyNzQ0MSwgICAweDgwMDA4MDAwLCBCUTI3WFhYX09fVVRP VCB8IEJRMjdYWFhfT19DRkdVUCB8IEJRMjdYWFhfT19SQU0pLA0KCVtCUTI3 NjIxXSAgID0gQlEyN1hYWF9EQVRBKGJxMjc2MjEsICAgMHg4MDAwODAwMCwg QlEyN1hYWF9PX1VUT1QgfCBCUTI3WFhYX09fQ0ZHVVAgfCBCUTI3WFhYX09f UkFNKSwNCn07DQoNCnN0YXRpYyBERUZJTkVfTVVURVgoYnEyN3h4eF9saXN0 X2xvY2spOw0Kc3RhdGljIExJU1RfSEVBRChicTI3eHh4X2JhdHRlcnlfZGV2 aWNlcyk7DQoNCiNkZWZpbmUgQlEyN1hYWF9NU0xFRVAoaSkgdXNsZWVwX3Jh bmdlKChpKSoxMDAwLCAoaSkqMTAwMCs1MDApDQoNCiNkZWZpbmUgQlEyN1hY WF9ETV9TWgkzMg0KDQovKioNCiAqIHN0cnVjdCBicTI3eHh4X2RtX2J1ZiAt IGNoaXAgZGF0YSBtZW1vcnkgYnVmZmVyDQogKiBAY2xhc3M6IGRhdGEgbWVt b3J5IHN1YmNsYXNzX2lkDQogKiBAYmxvY2s6IGRhdGEgbWVtb3J5IGJsb2Nr IG51bWJlcg0KICogQGRhdGE6IGRhdGEgZnJvbS9mb3IgdGhlIGJsb2NrDQog KiBAaGFzX2RhdGE6IHRydWUgaWYgZGF0YSBoYXMgYmVlbiBmaWxsZWQgYnkg cmVhZA0KICogQGRpcnR5OiB0cnVlIGlmIGRhdGEgaGFzIGNoYW5nZWQgc2lu Y2UgbGFzdCByZWFkL3dyaXRlDQogKg0KICogRW5jYXBzdWxhdGVzIGluZm8g cmVxdWlyZWQgdG8gbWFuYWdlIGNoaXAgZGF0YSBtZW1vcnkgYmxvY2tzLg0K ICovDQpzdHJ1Y3QgYnEyN3h4eF9kbV9idWYgew0KCXU4IGNsYXNzOw0KCXU4 IGJsb2NrOw0KCXU4IGRhdGFbQlEyN1hYWF9ETV9TWl07DQoJYm9vbCBoYXNf ZGF0YSwgZGlydHk7DQp9Ow0KDQojZGVmaW5lIEJRMjdYWFhfRE1fQlVGKGRp LCBpKSB7IFwNCgkuY2xhc3MgPSAoZGkpLT5kbV9yZWdzW2ldLnN1YmNsYXNz X2lkLCBcDQoJLmJsb2NrID0gKGRpKS0+ZG1fcmVnc1tpXS5vZmZzZXQgLyBC UTI3WFhYX0RNX1NaLCBcDQp9DQoNCnN0YXRpYyBpbmxpbmUgdTE2ICpicTI3 eHh4X2RtX3JlZ19wdHIoc3RydWN0IGJxMjd4eHhfZG1fYnVmICpidWYsDQoJ CQkJICAgICAgc3RydWN0IGJxMjd4eHhfZG1fcmVnICpyZWcpDQp7DQoJaWYg KGJ1Zi0+Y2xhc3MgPT0gcmVnLT5zdWJjbGFzc19pZCAmJg0KCSAgICBidWYt PmJsb2NrID09IHJlZy0+b2Zmc2V0IC8gQlEyN1hYWF9ETV9TWikNCgkJcmV0 dXJuICh1MTYgKikgKGJ1Zi0+ZGF0YSArIHJlZy0+b2Zmc2V0ICUgQlEyN1hY WF9ETV9TWik7DQoNCglyZXR1cm4gTlVMTDsNCn0NCg0Kc3RhdGljIGNvbnN0 IGNoYXIgKiBjb25zdCBicTI3eHh4X2RtX3JlZ19uYW1lW10gPSB7DQoJW0JR MjdYWFhfRE1fREVTSUdOX0NBUEFDSVRZXSA9ICJkZXNpZ24tY2FwYWNpdHki LA0KCVtCUTI3WFhYX0RNX0RFU0lHTl9FTkVSR1ldID0gImRlc2lnbi1lbmVy Z3kiLA0KCVtCUTI3WFhYX0RNX1RFUk1JTkFURV9WT0xUQUdFXSA9ICJ0ZXJt aW5hdGUtdm9sdGFnZSIsDQp9Ow0KDQoNCnN0YXRpYyBib29sIGJxMjd4eHhf ZHRfdG9fbnZtID0gdHJ1ZTsNCm1vZHVsZV9wYXJhbV9uYW1lZChkdF9tb25p dG9yZWRfYmF0dGVyeV91cGRhdGVzX252bSwgYnEyN3h4eF9kdF90b19udm0s IGJvb2wsIDA0NDQpOw0KTU9EVUxFX1BBUk1fREVTQyhkdF9tb25pdG9yZWRf YmF0dGVyeV91cGRhdGVzX252bSwNCgkiRGV2aWNldHJlZSBtb25pdG9yZWQt YmF0dGVyeSBjb25maWcgdXBkYXRlcyBkYXRhIG1lbW9yeSBvbiBOVk0vZmxh c2ggY2hpcHMuXG4iDQoJIlVzZXJzIG11c3Qgc2V0IHRoaXMgPTAgd2hlbiBp bnN0YWxsaW5nIGEgZGlmZmVyZW50IHR5cGUgb2YgYmF0dGVyeSFcbiINCgki RGVmYXVsdCBpcyA9MS4iDQojaWZuZGVmIENPTkZJR19CQVRURVJZX0JRMjdY WFhfRFRfVVBEQVRFU19OVk0NCgkiXG5TZXR0aW5nIHRoaXMgYWZmZWN0cyBm dXR1cmUga2VybmVsIHVwZGF0ZXMsIG5vdCB0aGUgY3VycmVudCBjb25maWd1 cmF0aW9uLiINCiNlbmRpZg0KKTsNCg0Kc3RhdGljIGludCBwb2xsX2ludGVy dmFsX3BhcmFtX3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBr ZXJuZWxfcGFyYW0gKmtwKQ0Kew0KCXN0cnVjdCBicTI3eHh4X2RldmljZV9p bmZvICpkaTsNCgl1bnNpZ25lZCBpbnQgcHJldl92YWwgPSAqKHVuc2lnbmVk IGludCAqKSBrcC0+YXJnOw0KCWludCByZXQ7DQoNCglyZXQgPSBwYXJhbV9z ZXRfdWludCh2YWwsIGtwKTsNCglpZiAocmV0IDwgMCB8fCBwcmV2X3ZhbCA9 PSAqKHVuc2lnbmVkIGludCAqKSBrcC0+YXJnKQ0KCQlyZXR1cm4gcmV0Ow0K DQoJbXV0ZXhfbG9jaygmYnEyN3h4eF9saXN0X2xvY2spOw0KCWxpc3RfZm9y X2VhY2hfZW50cnkoZGksICZicTI3eHh4X2JhdHRlcnlfZGV2aWNlcywgbGlz dCkgew0KCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRpLT53b3JrKTsN CgkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkaS0+d29yaywgMCk7DQoJfQ0K CW11dGV4X3VubG9jaygmYnEyN3h4eF9saXN0X2xvY2spOw0KDQoJcmV0dXJu IHJldDsNCn0NCg0Kc3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1f b3BzIHBhcmFtX29wc19wb2xsX2ludGVydmFsID0gew0KCS5nZXQgPSBwYXJh bV9nZXRfdWludCwNCgkuc2V0ID0gcG9sbF9pbnRlcnZhbF9wYXJhbV9zZXQs DQp9Ow0KDQpzdGF0aWMgdW5zaWduZWQgaW50IHBvbGxfaW50ZXJ2YWwgPSAz NjA7DQptb2R1bGVfcGFyYW1fY2IocG9sbF9pbnRlcnZhbCwgJnBhcmFtX29w c19wb2xsX2ludGVydmFsLCAmcG9sbF9pbnRlcnZhbCwgMDY0NCk7DQpNT0RV TEVfUEFSTV9ERVNDKHBvbGxfaW50ZXJ2YWwsDQoJCSAiYmF0dGVyeSBwb2xs IGludGVydmFsIGluIHNlY29uZHMgLSAwIGRpc2FibGVzIHBvbGxpbmciKTsN Cg0KLyoNCiAqIENvbW1vbiBjb2RlIGZvciBCUTI3eHh4IGRldmljZXMNCiAq Lw0KDQpzdGF0aWMgaW5saW5lIGludCBicTI3eHh4X3JlYWQoc3RydWN0IGJx Mjd4eHhfZGV2aWNlX2luZm8gKmRpLCBpbnQgcmVnX2luZGV4LA0KCQkJICAg ICAgIGJvb2wgc2luZ2xlKQ0Kew0KCWludCByZXQ7DQoNCglpZiAoIWRpIHx8 IGRpLT5yZWdzW3JlZ19pbmRleF0gPT0gSU5WQUxJRF9SRUdfQUREUikNCgkJ cmV0dXJuIC1FSU5WQUw7DQoNCglyZXQgPSBkaS0+YnVzLnJlYWQoZGksIGRp LT5yZWdzW3JlZ19pbmRleF0sIHNpbmdsZSk7DQoJaWYgKHJldCA8IDApDQoJ CWRldl9kYmcoZGktPmRldiwgImZhaWxlZCB0byByZWFkIHJlZ2lzdGVyIDB4 JTAyeCAoaW5kZXggJWQpXG4iLA0KCQkJZGktPnJlZ3NbcmVnX2luZGV4XSwg cmVnX2luZGV4KTsNCg0KCXJldHVybiByZXQ7DQp9DQoNCnN0YXRpYyBpbmxp bmUgaW50IGJxMjd4eHhfd3JpdGUoc3RydWN0IGJxMjd4eHhfZGV2aWNlX2lu Zm8gKmRpLCBpbnQgcmVnX2luZGV4LA0KCQkJCXUxNiB2YWx1ZSwgYm9vbCBz aW5nbGUpDQp7DQoJaW50IHJldDsNCg0KCWlmICghZGkgfHwgZGktPnJlZ3Nb cmVnX2luZGV4XSA9PSBJTlZBTElEX1JFR19BRERSKQ0KCQlyZXR1cm4gLUVJ TlZBTDsNCg0KCWlmICghZGktPmJ1cy53cml0ZSkNCgkJcmV0dXJuIC1FUEVS TTsNCg0KCXJldCA9IGRpLT5idXMud3JpdGUoZGksIGRpLT5yZWdzW3JlZ19p bmRleF0sIHZhbHVlLCBzaW5nbGUpOw0KCWlmIChyZXQgPCAwKQ0KCQlkZXZf ZGJnKGRpLT5kZXYsICJmYWlsZWQgdG8gd3JpdGUgcmVnaXN0ZXIgMHglMDJ4 IChpbmRleCAlZClcbiIsDQoJCQlkaS0+cmVnc1tyZWdfaW5kZXhdLCByZWdf aW5kZXgpOw0KDQoJcmV0dXJuIHJldDsNCn0NCg0Kc3RhdGljIGlubGluZSBp bnQgYnEyN3h4eF9yZWFkX2Jsb2NrKHN0cnVjdCBicTI3eHh4X2RldmljZV9p bmZvICpkaSwgaW50IHJlZ19pbmRleCwNCgkJCQkgICAgIHU4ICpkYXRhLCBp bnQgbGVuKQ0Kew0KCWludCByZXQ7DQoNCglpZiAoIWRpIHx8IGRpLT5yZWdz W3JlZ19pbmRleF0gPT0gSU5WQUxJRF9SRUdfQUREUikNCgkJcmV0dXJuIC1F SU5WQUw7DQoNCglpZiAoIWRpLT5idXMucmVhZF9idWxrKQ0KCQlyZXR1cm4g LUVQRVJNOw0KDQoJcmV0ID0gZGktPmJ1cy5yZWFkX2J1bGsoZGksIGRpLT5y ZWdzW3JlZ19pbmRleF0sIGRhdGEsIGxlbik7DQoJaWYgKHJldCA8IDApDQoJ CWRldl9kYmcoZGktPmRldiwgImZhaWxlZCB0byByZWFkX2J1bGsgcmVnaXN0 ZXIgMHglMDJ4IChpbmRleCAlZClcbiIsDQoJCQlkaS0+cmVnc1tyZWdfaW5k ZXhdLCByZWdfaW5kZXgpOw0KDQoJcmV0dXJuIHJldDsNCn0NCg0Kc3RhdGlj IGlubGluZSBpbnQgYnEyN3h4eF93cml0ZV9ibG9jayhzdHJ1Y3QgYnEyN3h4 eF9kZXZpY2VfaW5mbyAqZGksIGludCByZWdfaW5kZXgsDQoJCQkJICAgICAg dTggKmRhdGEsIGludCBsZW4pDQp7DQoJaW50IHJldDsNCg0KCWlmICghZGkg fHwgZGktPnJlZ3NbcmVnX2luZGV4XSA9PSBJTlZBTElEX1JFR19BRERSKQ0K CQlyZXR1cm4gLUVJTlZBTDsNCg0KCWlmICghZGktPmJ1cy53cml0ZV9idWxr KQ0KCQlyZXR1cm4gLUVQRVJNOw0KDQoJcmV0ID0gZGktPmJ1cy53cml0ZV9i dWxrKGRpLCBkaS0+cmVnc1tyZWdfaW5kZXhdLCBkYXRhLCBsZW4pOw0KCWlm IChyZXQgPCAwKQ0KCQlkZXZfZGJnKGRpLT5kZXYsICJmYWlsZWQgdG8gd3Jp dGVfYnVsayByZWdpc3RlciAweCUwMnggKGluZGV4ICVkKVxuIiwNCgkJCWRp LT5yZWdzW3JlZ19pbmRleF0sIHJlZ19pbmRleCk7DQoNCglyZXR1cm4gcmV0 Ow0KfQ0KDQpzdGF0aWMgaW50IGJxMjd4eHhfYmF0dGVyeV9zZWFsKHN0cnVj dCBicTI3eHh4X2RldmljZV9pbmZvICpkaSkNCnsNCglpbnQgcmV0Ow0KDQoJ cmV0ID0gYnEyN3h4eF93cml0ZShkaSwgQlEyN1hYWF9SRUdfQ1RSTCwgQlEy N1hYWF9TRUFMRUQsIGZhbHNlKTsNCglpZiAocmV0IDwgMCkgew0KCQlkZXZf ZXJyKGRpLT5kZXYsICJidXMgZXJyb3Igb24gc2VhbDogJWRcbiIsIHJldCk7 DQoJCXJldHVybiByZXQ7DQoJfQ0KDQoJcmV0dXJuIDA7DQp9DQoNCnN0YXRp YyBpbnQgYnEyN3h4eF9iYXR0ZXJ5X3Vuc2VhbChzdHJ1Y3QgYnEyN3h4eF9k ZXZpY2VfaW5mbyAqZGkpDQp7DQoJaW50IHJldDsNCg0KCWlmIChkaS0+dW5z ZWFsX2tleSA9PSAwKSB7DQoJCWRldl9lcnIoZGktPmRldiwgInVuc2VhbCBm YWlsZWQgZHVlIHRvIG1pc3Npbmcga2V5XG4iKTsNCgkJcmV0dXJuIC1FSU5W QUw7DQoJfQ0KDQoJcmV0ID0gYnEyN3h4eF93cml0ZShkaSwgQlEyN1hYWF9S RUdfQ1RSTCwgKHUxNikoZGktPnVuc2VhbF9rZXkgPj4gMTYpLCBmYWxzZSk7 DQoJaWYgKHJldCA8IDApDQoJCWdvdG8gb3V0Ow0KDQoJcmV0ID0gYnEyN3h4 eF93cml0ZShkaSwgQlEyN1hYWF9SRUdfQ1RSTCwgKHUxNilkaS0+dW5zZWFs X2tleSwgZmFsc2UpOw0KCWlmIChyZXQgPCAwKQ0KCQlnb3RvIG91dDsNCg0K CXJldHVybiAwOw0KDQpvdXQ6DQoJZGV2X2VycihkaS0+ZGV2LCAiYnVzIGVy cm9yIG9uIHVuc2VhbDogJWRcbiIsIHJldCk7DQoJcmV0dXJuIHJldDsNCn0N Cg0Kc3RhdGljIHU4IGJxMjd4eHhfYmF0dGVyeV9jaGVja3N1bV9kbV9ibG9j ayhzdHJ1Y3QgYnEyN3h4eF9kbV9idWYgKmJ1ZikNCnsNCgl1MTYgc3VtID0g MDsNCglpbnQgaTsNCg0KCWZvciAoaSA9IDA7IGkgPCBCUTI3WFhYX0RNX1Na OyBpKyspDQoJCXN1bSArPSBidWYtPmRhdGFbaV07DQoJc3VtICY9IDB4ZmY7 DQoNCglyZXR1cm4gMHhmZiAtIHN1bTsNCn0NCg0Kc3RhdGljIGludCBicTI3 eHh4X2JhdHRlcnlfcmVhZF9kbV9ibG9jayhzdHJ1Y3QgYnEyN3h4eF9kZXZp Y2VfaW5mbyAqZGksDQoJCQkJCSBzdHJ1Y3QgYnEyN3h4eF9kbV9idWYgKmJ1 ZikNCnsNCglpbnQgcmV0Ow0KDQoJYnVmLT5oYXNfZGF0YSA9IGZhbHNlOw0K DQoJcmV0ID0gYnEyN3h4eF93cml0ZShkaSwgQlEyN1hYWF9ETV9DTEFTUywg YnVmLT5jbGFzcywgdHJ1ZSk7DQoJaWYgKHJldCA8IDApDQoJCWdvdG8gb3V0 Ow0KDQoJcmV0ID0gYnEyN3h4eF93cml0ZShkaSwgQlEyN1hYWF9ETV9CTE9D SywgYnVmLT5ibG9jaywgdHJ1ZSk7DQoJaWYgKHJldCA8IDApDQoJCWdvdG8g b3V0Ow0KDQoJQlEyN1hYWF9NU0xFRVAoMSk7DQoNCglyZXQgPSBicTI3eHh4 X3JlYWRfYmxvY2soZGksIEJRMjdYWFhfRE1fREFUQSwgYnVmLT5kYXRhLCBC UTI3WFhYX0RNX1NaKTsNCglpZiAocmV0IDwgMCkNCgkJZ290byBvdXQ7DQoN CglyZXQgPSBicTI3eHh4X3JlYWQoZGksIEJRMjdYWFhfRE1fQ0tTVU0sIHRy dWUpOw0KCWlmIChyZXQgPCAwKQ0KCQlnb3RvIG91dDsNCg0KCWlmICgodTgp cmV0ICE9IGJxMjd4eHhfYmF0dGVyeV9jaGVja3N1bV9kbV9ibG9jayhidWYp KSB7DQoJCXJldCA9IC1FSU5WQUw7DQoJCWdvdG8gb3V0Ow0KCX0NCg0KCWJ1 Zi0+aGFzX2RhdGEgPSB0cnVlOw0KCWJ1Zi0+ZGlydHkgPSBmYWxzZTsNCg0K CXJldHVybiAwOw0KDQpvdXQ6DQoJZGV2X2VycihkaS0+ZGV2LCAiYnVzIGVy cm9yIHJlYWRpbmcgY2hpcCBtZW1vcnk6ICVkXG4iLCByZXQpOw0KCXJldHVy biByZXQ7DQp9DQoNCnN0YXRpYyB2b2lkIGJxMjd4eHhfYmF0dGVyeV91cGRh dGVfZG1fYmxvY2soc3RydWN0IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpLA0K CQkJCQkgICAgc3RydWN0IGJxMjd4eHhfZG1fYnVmICpidWYsDQoJCQkJCSAg ICBlbnVtIGJxMjd4eHhfZG1fcmVnX2lkIHJlZ19pZCwNCgkJCQkJICAgIHVu c2lnbmVkIGludCB2YWwpDQp7DQoJc3RydWN0IGJxMjd4eHhfZG1fcmVnICpy ZWcgPSAmZGktPmRtX3JlZ3NbcmVnX2lkXTsNCgljb25zdCBjaGFyICpzdHIg PSBicTI3eHh4X2RtX3JlZ19uYW1lW3JlZ19pZF07DQoJdTE2ICpwcmV2ID0g YnEyN3h4eF9kbV9yZWdfcHRyKGJ1ZiwgcmVnKTsNCg0KCWlmIChwcmV2ID09 IE5VTEwpIHsNCgkJZGV2X3dhcm4oZGktPmRldiwgImJ1ZmZlciBkb2VzIG5v dCBtYXRjaCAlcyBkbSBzcGVjXG4iLCBzdHIpOw0KCQlyZXR1cm47DQoJfQ0K DQoJaWYgKHJlZy0+Ynl0ZXMgIT0gMikgew0KCQlkZXZfd2FybihkaS0+ZGV2 LCAiJXMgZG0gc3BlYyBoYXMgdW5zdXBwb3J0ZWQgYnl0ZSBzaXplXG4iLCBz dHIpOw0KCQlyZXR1cm47DQoJfQ0KDQoJaWYgKCFidWYtPmhhc19kYXRhKQ0K CQlyZXR1cm47DQoNCglpZiAoYmUxNl90b19jcHVwKHByZXYpID09IHZhbCkg ew0KCQlkZXZfaW5mbyhkaS0+ZGV2LCAiJXMgaGFzICV1XG4iLCBzdHIsIHZh bCk7DQoJCXJldHVybjsNCgl9DQoNCiNpZmRlZiBDT05GSUdfQkFUVEVSWV9C UTI3WFhYX0RUX1VQREFURVNfTlZNDQoJaWYgKCEoZGktPm9wdHMgJiBCUTI3 WFhYX09fUkFNKSAmJiAhYnEyN3h4eF9kdF90b19udm0pIHsNCiNlbHNlDQoJ aWYgKCEoZGktPm9wdHMgJiBCUTI3WFhYX09fUkFNKSkgew0KI2VuZGlmDQoJ CS8qIGRldmljZXRyZWUgYW5kIE5WTSBkaWZmZXI7IGRlZmVyIHRvIE5WTSAq Lw0KCQlkZXZfd2FybihkaS0+ZGV2LCAiJXMgaGFzICV1OyB1cGRhdGUgdG8g JXUgZGlzYWxsb3dlZCAiDQojaWZkZWYgQ09ORklHX0JBVFRFUllfQlEyN1hY WF9EVF9VUERBVEVTX05WTQ0KCQkJICJieSBkdF9tb25pdG9yZWRfYmF0dGVy eV91cGRhdGVzX252bT0wIg0KI2Vsc2UNCgkJCSAiZm9yIGZsYXNoL05WTSBk YXRhIG1lbW9yeSINCiNlbmRpZg0KCQkJICJcbiIsIHN0ciwgYmUxNl90b19j cHVwKHByZXYpLCB2YWwpOw0KCQlyZXR1cm47DQoJfQ0KDQoJZGV2X2luZm8o ZGktPmRldiwgInVwZGF0ZSAlcyB0byAldVxuIiwgc3RyLCB2YWwpOw0KDQoJ KnByZXYgPSBjcHVfdG9fYmUxNih2YWwpOw0KCWJ1Zi0+ZGlydHkgPSB0cnVl Ow0KfQ0KDQpzdGF0aWMgaW50IGJxMjd4eHhfYmF0dGVyeV9jZmd1cGRhdGVf cHJpdihzdHJ1Y3QgYnEyN3h4eF9kZXZpY2VfaW5mbyAqZGksIGJvb2wgYWN0 aXZlKQ0Kew0KCWNvbnN0IGludCBsaW1pdCA9IDEwMDsNCgl1MTYgY21kID0g YWN0aXZlID8gQlEyN1hYWF9TRVRfQ0ZHVVBEQVRFIDogQlEyN1hYWF9TT0ZU X1JFU0VUOw0KCWludCByZXQsIHRyeSA9IGxpbWl0Ow0KDQoJcmV0ID0gYnEy N3h4eF93cml0ZShkaSwgQlEyN1hYWF9SRUdfQ1RSTCwgY21kLCBmYWxzZSk7 DQoJaWYgKHJldCA8IDApDQoJCXJldHVybiByZXQ7DQoNCglkbyB7DQoJCUJR MjdYWFhfTVNMRUVQKDI1KTsNCgkJcmV0ID0gYnEyN3h4eF9yZWFkKGRpLCBC UTI3WFhYX1JFR19GTEFHUywgZmFsc2UpOw0KCQlpZiAocmV0IDwgMCkNCgkJ CXJldHVybiByZXQ7DQoJfSB3aGlsZSAoISEocmV0ICYgQlEyN1hYWF9GTEFH X0NGR1VQKSAhPSBhY3RpdmUgJiYgLS10cnkpOw0KDQoJaWYgKCF0cnkgJiYg ZGktPmNoaXAgIT0gQlEyNzQyNSkgeyAvLyA0MjUgaGFzIGEgYnVnDQoJCWRl dl9lcnIoZGktPmRldiwgInRpbWVkIG91dCB3YWl0aW5nIGZvciBjZmd1cGRh dGUgZmxhZyAlZFxuIiwgYWN0aXZlKTsNCgkJcmV0dXJuIC1FSU5WQUw7DQoJ fQ0KDQoJaWYgKGxpbWl0IC0gdHJ5ID4gMykNCgkJZGV2X3dhcm4oZGktPmRl diwgImNmZ3VwZGF0ZSAlZCwgcmV0cmllcyAlZFxuIiwgYWN0aXZlLCBsaW1p dCAtIHRyeSk7DQoNCglyZXR1cm4gMDsNCn0NCg0Kc3RhdGljIGlubGluZSBp bnQgYnEyN3h4eF9iYXR0ZXJ5X3NldF9jZmd1cGRhdGUoc3RydWN0IGJxMjd4 eHhfZGV2aWNlX2luZm8gKmRpKQ0Kew0KCWludCByZXQgPSBicTI3eHh4X2Jh dHRlcnlfY2ZndXBkYXRlX3ByaXYoZGksIHRydWUpOw0KCWlmIChyZXQgPCAw ICYmIHJldCAhPSAtRUlOVkFMKQ0KCQlkZXZfZXJyKGRpLT5kZXYsICJidXMg ZXJyb3Igb24gc2V0X2NmZ3VwZGF0ZTogJWRcbiIsIHJldCk7DQoNCglyZXR1 cm4gcmV0Ow0KfQ0KDQpzdGF0aWMgaW5saW5lIGludCBicTI3eHh4X2JhdHRl cnlfc29mdF9yZXNldChzdHJ1Y3QgYnEyN3h4eF9kZXZpY2VfaW5mbyAqZGkp DQp7DQoJaW50IHJldCA9IGJxMjd4eHhfYmF0dGVyeV9jZmd1cGRhdGVfcHJp dihkaSwgZmFsc2UpOw0KCWlmIChyZXQgPCAwICYmIHJldCAhPSAtRUlOVkFM KQ0KCQlkZXZfZXJyKGRpLT5kZXYsICJidXMgZXJyb3Igb24gc29mdF9yZXNl dDogJWRcbiIsIHJldCk7DQoNCglyZXR1cm4gcmV0Ow0KfQ0KDQpzdGF0aWMg aW50IGJxMjd4eHhfYmF0dGVyeV93cml0ZV9kbV9ibG9jayhzdHJ1Y3QgYnEy N3h4eF9kZXZpY2VfaW5mbyAqZGksDQoJCQkJCSAgc3RydWN0IGJxMjd4eHhf ZG1fYnVmICpidWYpDQp7DQoJYm9vbCBjZmd1cCA9IGRpLT5vcHRzICYgQlEy N1hYWF9PX0NGR1VQOw0KCWludCByZXQ7DQoNCglpZiAoIWJ1Zi0+ZGlydHkp DQoJCXJldHVybiAwOw0KDQoJaWYgKGNmZ3VwKSB7DQoJCXJldCA9IGJxMjd4 eHhfYmF0dGVyeV9zZXRfY2ZndXBkYXRlKGRpKTsNCgkJaWYgKHJldCA8IDAp DQoJCQlyZXR1cm4gcmV0Ow0KCX0NCg0KCXJldCA9IGJxMjd4eHhfd3JpdGUo ZGksIEJRMjdYWFhfRE1fQ1RSTCwgMCwgdHJ1ZSk7DQoJaWYgKHJldCA8IDAp DQoJCWdvdG8gb3V0Ow0KDQoJcmV0ID0gYnEyN3h4eF93cml0ZShkaSwgQlEy N1hYWF9ETV9DTEFTUywgYnVmLT5jbGFzcywgdHJ1ZSk7DQoJaWYgKHJldCA8 IDApDQoJCWdvdG8gb3V0Ow0KDQoJcmV0ID0gYnEyN3h4eF93cml0ZShkaSwg QlEyN1hYWF9ETV9CTE9DSywgYnVmLT5ibG9jaywgdHJ1ZSk7DQoJaWYgKHJl dCA8IDApDQoJCWdvdG8gb3V0Ow0KDQoJQlEyN1hYWF9NU0xFRVAoMSk7DQoN CglyZXQgPSBicTI3eHh4X3dyaXRlX2Jsb2NrKGRpLCBCUTI3WFhYX0RNX0RB VEEsIGJ1Zi0+ZGF0YSwgQlEyN1hYWF9ETV9TWik7DQoJaWYgKHJldCA8IDAp DQoJCWdvdG8gb3V0Ow0KDQoJcmV0ID0gYnEyN3h4eF93cml0ZShkaSwgQlEy N1hYWF9ETV9DS1NVTSwNCgkJCSAgICBicTI3eHh4X2JhdHRlcnlfY2hlY2tz dW1fZG1fYmxvY2soYnVmKSwgdHJ1ZSk7DQoJaWYgKHJldCA8IDApDQoJCWdv dG8gb3V0Ow0KDQoJLyogRE8gTk9UIHJlYWQgQlEyN1hYWF9ETV9DS1NVTSBo ZXJlIHRvIHZlcmlmeSBpdCEgVGhhdCBtYXkgY2F1c2UgTlZNDQoJICogY29y cnVwdGlvbiBvbiB0aGUgJzQyNSBjaGlwIChhbmQgcGVyaGFwcyBvdGhlcnMp LCB3aGljaCBjYW4gZGFtYWdlDQoJICogdGhlIGNoaXAuDQoJICovDQoNCglp ZiAoY2ZndXApIHsNCgkJQlEyN1hYWF9NU0xFRVAoMSk7DQoJCXJldCA9IGJx Mjd4eHhfYmF0dGVyeV9zb2Z0X3Jlc2V0KGRpKTsNCgkJaWYgKHJldCA8IDAp DQoJCQlyZXR1cm4gcmV0Ow0KCX0gZWxzZSB7DQoJCUJRMjdYWFhfTVNMRUVQ KDEwMCk7IC8qIGZsYXNoIERNIHVwZGF0ZXMgaW4gPDEwMG1zICovDQoJfQ0K DQoJYnVmLT5kaXJ0eSA9IGZhbHNlOw0KDQoJcmV0dXJuIDA7DQoNCm91dDoN CglpZiAoY2ZndXApDQoJCWJxMjd4eHhfYmF0dGVyeV9zb2Z0X3Jlc2V0KGRp KTsNCg0KCWRldl9lcnIoZGktPmRldiwgImJ1cyBlcnJvciB3cml0aW5nIGNo aXAgbWVtb3J5OiAlZFxuIiwgcmV0KTsNCglyZXR1cm4gcmV0Ow0KfQ0KDQpz dGF0aWMgdm9pZCBicTI3eHh4X2JhdHRlcnlfc2V0X2NvbmZpZyhzdHJ1Y3Qg YnEyN3h4eF9kZXZpY2VfaW5mbyAqZGksDQoJCQkJICAgICAgIHN0cnVjdCBw b3dlcl9zdXBwbHlfYmF0dGVyeV9pbmZvICppbmZvKQ0Kew0KCXN0cnVjdCBi cTI3eHh4X2RtX2J1ZiBiZCA9IEJRMjdYWFhfRE1fQlVGKGRpLCBCUTI3WFhY X0RNX0RFU0lHTl9DQVBBQ0lUWSk7DQoJc3RydWN0IGJxMjd4eHhfZG1fYnVm IGJ0ID0gQlEyN1hYWF9ETV9CVUYoZGksIEJRMjdYWFhfRE1fVEVSTUlOQVRF X1ZPTFRBR0UpOw0KCWJvb2wgdXBkYXRlZDsNCg0KCWlmIChicTI3eHh4X2Jh dHRlcnlfdW5zZWFsKGRpKSA8IDApDQoJCXJldHVybjsNCg0KCWlmIChpbmZv LT5jaGFyZ2VfZnVsbF9kZXNpZ25fdWFoICE9IC1FSU5WQUwgJiYNCgkgICAg aW5mby0+ZW5lcmd5X2Z1bGxfZGVzaWduX3V3aCAhPSAtRUlOVkFMKSB7DQoJ CWJxMjd4eHhfYmF0dGVyeV9yZWFkX2RtX2Jsb2NrKGRpLCAmYmQpOw0KCQkv KiBhc3N1bWUgZGVzaWduIGVuZXJneSAmIGNhcGFjaXR5IGFyZSBpbiBzYW1l IGJsb2NrICovDQoJCWJxMjd4eHhfYmF0dGVyeV91cGRhdGVfZG1fYmxvY2so ZGksICZiZCwNCgkJCQkJQlEyN1hYWF9ETV9ERVNJR05fQ0FQQUNJVFksDQoJ CQkJCWluZm8tPmNoYXJnZV9mdWxsX2Rlc2lnbl91YWggLyAxMDAwKTsNCgkJ YnEyN3h4eF9iYXR0ZXJ5X3VwZGF0ZV9kbV9ibG9jayhkaSwgJmJkLA0KCQkJ CQlCUTI3WFhYX0RNX0RFU0lHTl9FTkVSR1ksDQoJCQkJCWluZm8tPmVuZXJn eV9mdWxsX2Rlc2lnbl91d2ggLyAxMDAwKTsNCgl9DQoNCglpZiAoaW5mby0+ dm9sdGFnZV9taW5fZGVzaWduX3V2ICE9IC1FSU5WQUwpIHsNCgkJYm9vbCBz YW1lID0gYmQuY2xhc3MgPT0gYnQuY2xhc3MgJiYgYmQuYmxvY2sgPT0gYnQu YmxvY2s7DQoJCWlmICghc2FtZSkNCgkJCWJxMjd4eHhfYmF0dGVyeV9yZWFk X2RtX2Jsb2NrKGRpLCAmYnQpOw0KCQlicTI3eHh4X2JhdHRlcnlfdXBkYXRl X2RtX2Jsb2NrKGRpLCBzYW1lID8gJmJkIDogJmJ0LA0KCQkJCQlCUTI3WFhY X0RNX1RFUk1JTkFURV9WT0xUQUdFLA0KCQkJCQlpbmZvLT52b2x0YWdlX21p bl9kZXNpZ25fdXYgLyAxMDAwKTsNCgl9DQoNCgl1cGRhdGVkID0gYmQuZGly dHkgfHwgYnQuZGlydHk7DQoNCglicTI3eHh4X2JhdHRlcnlfd3JpdGVfZG1f YmxvY2soZGksICZiZCk7DQoJYnEyN3h4eF9iYXR0ZXJ5X3dyaXRlX2RtX2Js b2NrKGRpLCAmYnQpOw0KDQoJYnEyN3h4eF9iYXR0ZXJ5X3NlYWwoZGkpOw0K DQoJaWYgKHVwZGF0ZWQgJiYgIShkaS0+b3B0cyAmIEJRMjdYWFhfT19DRkdV UCkpIHsNCgkJYnEyN3h4eF93cml0ZShkaSwgQlEyN1hYWF9SRUdfQ1RSTCwg QlEyN1hYWF9SRVNFVCwgZmFsc2UpOw0KCQlCUTI3WFhYX01TTEVFUCgzMDAp OyAvKiByZXNldCB0aW1lIGlzIG5vdCBkb2N1bWVudGVkICovDQoJfQ0KCS8q IGFzc3VtZSBicTI3eHh4X2JhdHRlcnlfdXBkYXRlKCkgaXMgY2FsbGVkIGhl cmVhZnRlciAqLw0KfQ0KDQpzdGF0aWMgdm9pZCBicTI3eHh4X2JhdHRlcnlf c2V0dGluZ3Moc3RydWN0IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpKQ0Kew0K CXN0cnVjdCBwb3dlcl9zdXBwbHlfYmF0dGVyeV9pbmZvIGluZm8gPSB7fTsN Cgl1bnNpZ25lZCBpbnQgbWluLCBtYXg7DQoNCglpZiAocG93ZXJfc3VwcGx5 X2dldF9iYXR0ZXJ5X2luZm8oZGktPmJhdCwgJmluZm8pIDwgMCkNCgkJcmV0 dXJuOw0KDQoJaWYgKCFkaS0+ZG1fcmVncykgew0KCQlkZXZfd2FybihkaS0+ ZGV2LCAiZGF0YSBtZW1vcnkgdXBkYXRlIG5vdCBzdXBwb3J0ZWQgZm9yIGNo aXBcbiIpOw0KCQlyZXR1cm47DQoJfQ0KDQoJaWYgKGluZm8uZW5lcmd5X2Z1 bGxfZGVzaWduX3V3aCAhPSBpbmZvLmNoYXJnZV9mdWxsX2Rlc2lnbl91YWgp IHsNCgkJaWYgKGluZm8uZW5lcmd5X2Z1bGxfZGVzaWduX3V3aCA9PSAtRUlO VkFMKQ0KCQkJZGV2X3dhcm4oZGktPmRldiwgIm1pc3NpbmcgYmF0dGVyeTpl bmVyZ3ktZnVsbC1kZXNpZ24tbWljcm93YXR0LWhvdXJzXG4iKTsNCgkJZWxz ZSBpZiAoaW5mby5jaGFyZ2VfZnVsbF9kZXNpZ25fdWFoID09IC1FSU5WQUwp DQoJCQlkZXZfd2FybihkaS0+ZGV2LCAibWlzc2luZyBiYXR0ZXJ5OmNoYXJn ZS1mdWxsLWRlc2lnbi1taWNyb2FtcC1ob3Vyc1xuIik7DQoJfQ0KDQoJLyog YXNzdW1lIG1pbiA9PSAwICovDQoJbWF4ID0gZGktPmRtX3JlZ3NbQlEyN1hY WF9ETV9ERVNJR05fRU5FUkdZXS5tYXg7DQoJaWYgKGluZm8uZW5lcmd5X2Z1 bGxfZGVzaWduX3V3aCA+IG1heCAqIDEwMDApIHsNCgkJZGV2X2VycihkaS0+ ZGV2LCAiaW52YWxpZCBiYXR0ZXJ5OmVuZXJneS1mdWxsLWRlc2lnbi1taWNy b3dhdHQtaG91cnMgJWRcbiIsDQoJCQlpbmZvLmVuZXJneV9mdWxsX2Rlc2ln bl91d2gpOw0KCQlpbmZvLmVuZXJneV9mdWxsX2Rlc2lnbl91d2ggPSAtRUlO VkFMOw0KCX0NCg0KCS8qIGFzc3VtZSBtaW4gPT0gMCAqLw0KCW1heCA9IGRp LT5kbV9yZWdzW0JRMjdYWFhfRE1fREVTSUdOX0NBUEFDSVRZXS5tYXg7DQoJ aWYgKGluZm8uY2hhcmdlX2Z1bGxfZGVzaWduX3VhaCA+IG1heCAqIDEwMDAp IHsNCgkJZGV2X2VycihkaS0+ZGV2LCAiaW52YWxpZCBiYXR0ZXJ5OmNoYXJn ZS1mdWxsLWRlc2lnbi1taWNyb2FtcC1ob3VycyAlZFxuIiwNCgkJCWluZm8u Y2hhcmdlX2Z1bGxfZGVzaWduX3VhaCk7DQoJCWluZm8uY2hhcmdlX2Z1bGxf ZGVzaWduX3VhaCA9IC1FSU5WQUw7DQoJfQ0KDQoJbWluID0gZGktPmRtX3Jl Z3NbQlEyN1hYWF9ETV9URVJNSU5BVEVfVk9MVEFHRV0ubWluOw0KCW1heCA9 IGRpLT5kbV9yZWdzW0JRMjdYWFhfRE1fVEVSTUlOQVRFX1ZPTFRBR0VdLm1h eDsNCglpZiAoKGluZm8udm9sdGFnZV9taW5fZGVzaWduX3V2IDwgbWluICog MTAwMCB8fA0KCSAgICAgaW5mby52b2x0YWdlX21pbl9kZXNpZ25fdXYgPiBt YXggKiAxMDAwKSAmJg0KCSAgICAgaW5mby52b2x0YWdlX21pbl9kZXNpZ25f dXYgIT0gLUVJTlZBTCkgew0KCQlkZXZfZXJyKGRpLT5kZXYsICJpbnZhbGlk IGJhdHRlcnk6dm9sdGFnZS1taW4tZGVzaWduLW1pY3Jvdm9sdCAlZFxuIiwN CgkJCWluZm8udm9sdGFnZV9taW5fZGVzaWduX3V2KTsNCgkJaW5mby52b2x0 YWdlX21pbl9kZXNpZ25fdXYgPSAtRUlOVkFMOw0KCX0NCg0KCWlmICgoaW5m by5lbmVyZ3lfZnVsbF9kZXNpZ25fdXdoICE9IC1FSU5WQUwgJiYNCgkgICAg IGluZm8uY2hhcmdlX2Z1bGxfZGVzaWduX3VhaCAhPSAtRUlOVkFMKSB8fA0K CSAgICAgaW5mby52b2x0YWdlX21pbl9kZXNpZ25fdXYgICE9IC1FSU5WQUwp DQoJCWJxMjd4eHhfYmF0dGVyeV9zZXRfY29uZmlnKGRpLCAmaW5mbyk7DQp9 DQoNCi8qDQogKiBSZXR1cm4gdGhlIGJhdHRlcnkgU3RhdGUtb2YtQ2hhcmdl DQogKiBPciA8IDAgaWYgc29tZXRoaW5nIGZhaWxzLg0KICovDQpzdGF0aWMg aW50IGJxMjd4eHhfYmF0dGVyeV9yZWFkX3NvYyhzdHJ1Y3QgYnEyN3h4eF9k ZXZpY2VfaW5mbyAqZGkpDQp7DQoJaW50IHNvYzsNCg0KCWlmIChkaS0+b3B0 cyAmIEJRMjdYWFhfT19aRVJPKQ0KCQlzb2MgPSBicTI3eHh4X3JlYWQoZGks IEJRMjdYWFhfUkVHX1NPQywgdHJ1ZSk7DQoJZWxzZQ0KCQlzb2MgPSBicTI3 eHh4X3JlYWQoZGksIEJRMjdYWFhfUkVHX1NPQywgZmFsc2UpOw0KDQoJaWYg KHNvYyA8IDApDQoJCWRldl9kYmcoZGktPmRldiwgImVycm9yIHJlYWRpbmcg U3RhdGUtb2YtQ2hhcmdlXG4iKTsNCg0KCXJldHVybiBzb2M7DQp9DQoNCi8q DQogKiBSZXR1cm4gYSBiYXR0ZXJ5IGNoYXJnZSB2YWx1ZSBpbiDCtUFoDQog KiBPciA8IDAgaWYgc29tZXRoaW5nIGZhaWxzLg0KICovDQpzdGF0aWMgaW50 IGJxMjd4eHhfYmF0dGVyeV9yZWFkX2NoYXJnZShzdHJ1Y3QgYnEyN3h4eF9k ZXZpY2VfaW5mbyAqZGksIHU4IHJlZykNCnsNCglpbnQgY2hhcmdlOw0KDQoJ Y2hhcmdlID0gYnEyN3h4eF9yZWFkKGRpLCByZWcsIGZhbHNlKTsNCglpZiAo Y2hhcmdlIDwgMCkgew0KCQlkZXZfZGJnKGRpLT5kZXYsICJlcnJvciByZWFk aW5nIGNoYXJnZSByZWdpc3RlciAlMDJ4OiAlZFxuIiwNCgkJCXJlZywgY2hh cmdlKTsNCgkJcmV0dXJuIGNoYXJnZTsNCgl9DQoNCglpZiAoZGktPm9wdHMg JiBCUTI3WFhYX09fWkVSTykNCgkJY2hhcmdlICo9IEJRMjdYWFhfQ1VSUkVO VF9DT05TVEFOVCAvIEJRMjdYWFhfUlM7DQoJZWxzZQ0KCQljaGFyZ2UgKj0g MTAwMDsNCg0KCXJldHVybiBjaGFyZ2U7DQp9DQoNCi8qDQogKiBSZXR1cm4g dGhlIGJhdHRlcnkgTm9taW5hbCBhdmFpbGFibGUgY2FwYWNpdHkgaW4gwrVB aA0KICogT3IgPCAwIGlmIHNvbWV0aGluZyBmYWlscy4NCiAqLw0Kc3RhdGlj IGlubGluZSBpbnQgYnEyN3h4eF9iYXR0ZXJ5X3JlYWRfbmFjKHN0cnVjdCBi cTI3eHh4X2RldmljZV9pbmZvICpkaSkNCnsNCglpbnQgZmxhZ3M7DQoNCglp ZiAoZGktPm9wdHMgJiBCUTI3WFhYX09fWkVSTykgew0KCQlmbGFncyA9IGJx Mjd4eHhfcmVhZChkaSwgQlEyN1hYWF9SRUdfRkxBR1MsIHRydWUpOw0KCQlp ZiAoZmxhZ3MgPj0gMCAmJiAoZmxhZ3MgJiBCUTI3MDAwX0ZMQUdfQ0kpKQ0K CQkJcmV0dXJuIC1FTk9EQVRBOw0KCX0NCg0KCXJldHVybiBicTI3eHh4X2Jh dHRlcnlfcmVhZF9jaGFyZ2UoZGksIEJRMjdYWFhfUkVHX05BQyk7DQp9DQoN Ci8qDQogKiBSZXR1cm4gdGhlIGJhdHRlcnkgRnVsbCBDaGFyZ2UgQ2FwYWNp dHkgaW4gwrVBaA0KICogT3IgPCAwIGlmIHNvbWV0aGluZyBmYWlscy4NCiAq Lw0Kc3RhdGljIGlubGluZSBpbnQgYnEyN3h4eF9iYXR0ZXJ5X3JlYWRfZmNj KHN0cnVjdCBicTI3eHh4X2RldmljZV9pbmZvICpkaSkNCnsNCglyZXR1cm4g YnEyN3h4eF9iYXR0ZXJ5X3JlYWRfY2hhcmdlKGRpLCBCUTI3WFhYX1JFR19G Q0MpOw0KfQ0KDQovKg0KICogUmV0dXJuIHRoZSBEZXNpZ24gQ2FwYWNpdHkg aW4gwrVBaA0KICogT3IgPCAwIGlmIHNvbWV0aGluZyBmYWlscy4NCiAqLw0K c3RhdGljIGludCBicTI3eHh4X2JhdHRlcnlfcmVhZF9kY2FwKHN0cnVjdCBi cTI3eHh4X2RldmljZV9pbmZvICpkaSkNCnsNCglpbnQgZGNhcDsNCg0KCWlm IChkaS0+b3B0cyAmIEJRMjdYWFhfT19aRVJPKQ0KCQlkY2FwID0gYnEyN3h4 eF9yZWFkKGRpLCBCUTI3WFhYX1JFR19EQ0FQLCB0cnVlKTsNCgllbHNlDQoJ CWRjYXAgPSBicTI3eHh4X3JlYWQoZGksIEJRMjdYWFhfUkVHX0RDQVAsIGZh bHNlKTsNCg0KCWlmIChkY2FwIDwgMCkgew0KCQlkZXZfZGJnKGRpLT5kZXYs ICJlcnJvciByZWFkaW5nIGluaXRpYWwgbGFzdCBtZWFzdXJlZCBkaXNjaGFy Z2VcbiIpOw0KCQlyZXR1cm4gZGNhcDsNCgl9DQoNCglpZiAoZGktPm9wdHMg JiBCUTI3WFhYX09fWkVSTykNCgkJZGNhcCA9IChkY2FwIDw8IDgpICogQlEy N1hYWF9DVVJSRU5UX0NPTlNUQU5UIC8gQlEyN1hYWF9SUzsNCgllbHNlDQoJ CWRjYXAgKj0gMTAwMDsNCg0KCXJldHVybiBkY2FwOw0KfQ0KDQovKg0KICog UmV0dXJuIHRoZSBiYXR0ZXJ5IEF2YWlsYWJsZSBlbmVyZ3kgaW4gwrVXaA0K ICogT3IgPCAwIGlmIHNvbWV0aGluZyBmYWlscy4NCiAqLw0Kc3RhdGljIGlu dCBicTI3eHh4X2JhdHRlcnlfcmVhZF9lbmVyZ3koc3RydWN0IGJxMjd4eHhf ZGV2aWNlX2luZm8gKmRpKQ0Kew0KCWludCBhZTsNCg0KCWFlID0gYnEyN3h4 eF9yZWFkKGRpLCBCUTI3WFhYX1JFR19BRSwgZmFsc2UpOw0KCWlmIChhZSA8 IDApIHsNCgkJZGV2X2RiZyhkaS0+ZGV2LCAiZXJyb3IgcmVhZGluZyBhdmFp bGFibGUgZW5lcmd5XG4iKTsNCgkJcmV0dXJuIGFlOw0KCX0NCg0KCWlmIChk aS0+b3B0cyAmIEJRMjdYWFhfT19aRVJPKQ0KCQlhZSAqPSBCUTI3WFhYX1BP V0VSX0NPTlNUQU5UIC8gQlEyN1hYWF9SUzsNCgllbHNlDQoJCWFlICo9IDEw MDA7DQoNCglyZXR1cm4gYWU7DQp9DQoNCi8qDQogKiBSZXR1cm4gdGhlIGJh dHRlcnkgdGVtcGVyYXR1cmUgaW4gdGVudGhzIG9mIGRlZ3JlZSBLZWx2aW4N CiAqIE9yIDwgMCBpZiBzb21ldGhpbmcgZmFpbHMuDQogKi8NCnN0YXRpYyBp bnQgYnEyN3h4eF9iYXR0ZXJ5X3JlYWRfdGVtcGVyYXR1cmUoc3RydWN0IGJx Mjd4eHhfZGV2aWNlX2luZm8gKmRpKQ0Kew0KCWludCB0ZW1wOw0KDQoJdGVt cCA9IGJxMjd4eHhfcmVhZChkaSwgQlEyN1hYWF9SRUdfVEVNUCwgZmFsc2Up Ow0KCWlmICh0ZW1wIDwgMCkgew0KCQlkZXZfZXJyKGRpLT5kZXYsICJlcnJv ciByZWFkaW5nIHRlbXBlcmF0dXJlXG4iKTsNCgkJcmV0dXJuIHRlbXA7DQoJ fQ0KDQoJaWYgKGRpLT5vcHRzICYgQlEyN1hYWF9PX1pFUk8pDQoJCXRlbXAg PSA1ICogdGVtcCAvIDI7DQoNCglyZXR1cm4gdGVtcDsNCn0NCg0KLyoNCiAq IFJldHVybiB0aGUgYmF0dGVyeSBDeWNsZSBjb3VudCB0b3RhbA0KICogT3Ig PCAwIGlmIHNvbWV0aGluZyBmYWlscy4NCiAqLw0Kc3RhdGljIGludCBicTI3 eHh4X2JhdHRlcnlfcmVhZF9jeWN0KHN0cnVjdCBicTI3eHh4X2RldmljZV9p bmZvICpkaSkNCnsNCglpbnQgY3ljdDsNCg0KCWN5Y3QgPSBicTI3eHh4X3Jl YWQoZGksIEJRMjdYWFhfUkVHX0NZQ1QsIGZhbHNlKTsNCglpZiAoY3ljdCA8 IDApDQoJCWRldl9lcnIoZGktPmRldiwgImVycm9yIHJlYWRpbmcgY3ljbGUg Y291bnQgdG90YWxcbiIpOw0KDQoJcmV0dXJuIGN5Y3Q7DQp9DQoNCi8qDQog KiBSZWFkIGEgdGltZSByZWdpc3Rlci4NCiAqIFJldHVybiA8IDAgaWYgc29t ZXRoaW5nIGZhaWxzLg0KICovDQpzdGF0aWMgaW50IGJxMjd4eHhfYmF0dGVy eV9yZWFkX3RpbWUoc3RydWN0IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpLCB1 OCByZWcpDQp7DQoJaW50IHR2YWw7DQoNCgl0dmFsID0gYnEyN3h4eF9yZWFk KGRpLCByZWcsIGZhbHNlKTsNCglpZiAodHZhbCA8IDApIHsNCgkJZGV2X2Ri ZyhkaS0+ZGV2LCAiZXJyb3IgcmVhZGluZyB0aW1lIHJlZ2lzdGVyICUwMng6 ICVkXG4iLA0KCQkJcmVnLCB0dmFsKTsNCgkJcmV0dXJuIHR2YWw7DQoJfQ0K DQoJaWYgKHR2YWwgPT0gNjU1MzUpDQoJCXJldHVybiAtRU5PREFUQTsNCg0K CXJldHVybiB0dmFsICogNjA7DQp9DQoNCi8qDQogKiBSZWFkIGFuIGF2ZXJh Z2UgcG93ZXIgcmVnaXN0ZXIuDQogKiBSZXR1cm4gPCAwIGlmIHNvbWV0aGlu ZyBmYWlscy4NCiAqLw0Kc3RhdGljIGludCBicTI3eHh4X2JhdHRlcnlfcmVh ZF9wd3JfYXZnKHN0cnVjdCBicTI3eHh4X2RldmljZV9pbmZvICpkaSkNCnsN CglpbnQgdHZhbDsNCg0KCXR2YWwgPSBicTI3eHh4X3JlYWQoZGksIEJRMjdY WFhfUkVHX0FQLCBmYWxzZSk7DQoJaWYgKHR2YWwgPCAwKSB7DQoJCWRldl9l cnIoZGktPmRldiwgImVycm9yIHJlYWRpbmcgYXZlcmFnZSBwb3dlciByZWdp c3RlciAgJTAyeDogJWRcbiIsDQoJCQlCUTI3WFhYX1JFR19BUCwgdHZhbCk7 DQoJCXJldHVybiB0dmFsOw0KCX0NCg0KCWlmIChkaS0+b3B0cyAmIEJRMjdY WFhfT19aRVJPKQ0KCQlyZXR1cm4gKHR2YWwgKiBCUTI3WFhYX1BPV0VSX0NP TlNUQU5UKSAvIEJRMjdYWFhfUlM7DQoJZWxzZQ0KCQlyZXR1cm4gdHZhbDsN Cn0NCg0KLyoNCiAqIFJldHVybnMgdHJ1ZSBpZiBhIGJhdHRlcnkgb3ZlciB0 ZW1wZXJhdHVyZSBjb25kaXRpb24gaXMgZGV0ZWN0ZWQNCiAqLw0Kc3RhdGlj IGJvb2wgYnEyN3h4eF9iYXR0ZXJ5X292ZXJ0ZW1wKHN0cnVjdCBicTI3eHh4 X2RldmljZV9pbmZvICpkaSwgdTE2IGZsYWdzKQ0Kew0KCWlmIChkaS0+b3B0 cyAmIEJRMjdYWFhfT19PVERDKQ0KCQlyZXR1cm4gZmxhZ3MgJiAoQlEyN1hY WF9GTEFHX09UQyB8IEJRMjdYWFhfRkxBR19PVEQpOw0KICAgICAgICBpZiAo ZGktPm9wdHMgJiBCUTI3WFhYX09fVVRPVCkNCgkJcmV0dXJuIGZsYWdzICYg QlEyN1hYWF9GTEFHX09UOw0KDQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQovKg0K ICogUmV0dXJucyB0cnVlIGlmIGEgYmF0dGVyeSB1bmRlciB0ZW1wZXJhdHVy ZSBjb25kaXRpb24gaXMgZGV0ZWN0ZWQNCiAqLw0Kc3RhdGljIGJvb2wgYnEy N3h4eF9iYXR0ZXJ5X3VuZGVydGVtcChzdHJ1Y3QgYnEyN3h4eF9kZXZpY2Vf aW5mbyAqZGksIHUxNiBmbGFncykNCnsNCglpZiAoZGktPm9wdHMgJiBCUTI3 WFhYX09fVVRPVCkNCgkJcmV0dXJuIGZsYWdzICYgQlEyN1hYWF9GTEFHX1VU Ow0KDQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQovKg0KICogUmV0dXJucyB0cnVl IGlmIGEgbG93IHN0YXRlIG9mIGNoYXJnZSBjb25kaXRpb24gaXMgZGV0ZWN0 ZWQNCiAqLw0Kc3RhdGljIGJvb2wgYnEyN3h4eF9iYXR0ZXJ5X2RlYWQoc3Ry dWN0IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpLCB1MTYgZmxhZ3MpDQp7DQoJ aWYgKGRpLT5vcHRzICYgQlEyN1hYWF9PX1pFUk8pDQoJCXJldHVybiBmbGFn cyAmIChCUTI3MDAwX0ZMQUdfRURWMSB8IEJRMjcwMDBfRkxBR19FRFZGKTsN CgllbHNlDQoJCXJldHVybiBmbGFncyAmIChCUTI3WFhYX0ZMQUdfU09DMSB8 IEJRMjdYWFhfRkxBR19TT0NGKTsNCn0NCg0KLyoNCiAqIFJlYWQgZmxhZyBy ZWdpc3Rlci4NCiAqIFJldHVybiA8IDAgaWYgc29tZXRoaW5nIGZhaWxzLg0K ICovDQpzdGF0aWMgaW50IGJxMjd4eHhfYmF0dGVyeV9yZWFkX2hlYWx0aChz dHJ1Y3QgYnEyN3h4eF9kZXZpY2VfaW5mbyAqZGkpDQp7DQoJaW50IGZsYWdz Ow0KCWJvb2wgaGFzX3NpbmdlX2ZsYWcgPSBkaS0+b3B0cyAmIEJRMjdYWFhf T19aRVJPOw0KDQoJZmxhZ3MgPSBicTI3eHh4X3JlYWQoZGksIEJRMjdYWFhf UkVHX0ZMQUdTLCBoYXNfc2luZ2VfZmxhZyk7DQoJaWYgKGZsYWdzIDwgMCkg ew0KCQlkZXZfZXJyKGRpLT5kZXYsICJlcnJvciByZWFkaW5nIGZsYWcgcmVn aXN0ZXI6JWRcbiIsIGZsYWdzKTsNCgkJcmV0dXJuIGZsYWdzOw0KCX0NCg0K CS8qIFVubGlrZWx5IGJ1dCBpbXBvcnRhbnQgdG8gcmV0dXJuIGZpcnN0ICov DQoJaWYgKHVubGlrZWx5KGJxMjd4eHhfYmF0dGVyeV9vdmVydGVtcChkaSwg ZmxhZ3MpKSkNCgkJcmV0dXJuIFBPV0VSX1NVUFBMWV9IRUFMVEhfT1ZFUkhF QVQ7DQoJaWYgKHVubGlrZWx5KGJxMjd4eHhfYmF0dGVyeV91bmRlcnRlbXAo ZGksIGZsYWdzKSkpDQoJCXJldHVybiBQT1dFUl9TVVBQTFlfSEVBTFRIX0NP TEQ7DQoJaWYgKHVubGlrZWx5KGJxMjd4eHhfYmF0dGVyeV9kZWFkKGRpLCBm bGFncykpKQ0KCQlyZXR1cm4gUE9XRVJfU1VQUExZX0hFQUxUSF9ERUFEOw0K DQoJcmV0dXJuIFBPV0VSX1NVUFBMWV9IRUFMVEhfR09PRDsNCn0NCg0Kdm9p ZCBicTI3eHh4X2JhdHRlcnlfdXBkYXRlKHN0cnVjdCBicTI3eHh4X2Rldmlj ZV9pbmZvICpkaSkNCnsNCglzdHJ1Y3QgYnEyN3h4eF9yZWdfY2FjaGUgY2Fj aGUgPSB7MCwgfTsNCglib29sIGhhc19jaV9mbGFnID0gZGktPm9wdHMgJiBC UTI3WFhYX09fWkVSTzsNCglib29sIGhhc19zaW5nZV9mbGFnID0gZGktPm9w dHMgJiBCUTI3WFhYX09fWkVSTzsNCg0KCWNhY2hlLmZsYWdzID0gYnEyN3h4 eF9yZWFkKGRpLCBCUTI3WFhYX1JFR19GTEFHUywgaGFzX3NpbmdlX2ZsYWcp Ow0KCWlmICgoY2FjaGUuZmxhZ3MgJiAweGZmKSA9PSAweGZmKQ0KCQljYWNo ZS5mbGFncyA9IC0xOyAvKiByZWFkIGVycm9yICovDQoJaWYgKGNhY2hlLmZs YWdzID49IDApIHsNCgkJY2FjaGUudGVtcGVyYXR1cmUgPSBicTI3eHh4X2Jh dHRlcnlfcmVhZF90ZW1wZXJhdHVyZShkaSk7DQoJCWlmIChoYXNfY2lfZmxh ZyAmJiAoY2FjaGUuZmxhZ3MgJiBCUTI3MDAwX0ZMQUdfQ0kpKSB7DQoJCQlk ZXZfaW5mb19vbmNlKGRpLT5kZXYsICJiYXR0ZXJ5IGlzIG5vdCBjYWxpYnJh dGVkISBpZ25vcmluZyBjYXBhY2l0eSB2YWx1ZXNcbiIpOw0KCQkJY2FjaGUu Y2FwYWNpdHkgPSAtRU5PREFUQTsNCgkJCWNhY2hlLmVuZXJneSA9IC1FTk9E QVRBOw0KCQkJY2FjaGUudGltZV90b19lbXB0eSA9IC1FTk9EQVRBOw0KCQkJ Y2FjaGUudGltZV90b19lbXB0eV9hdmcgPSAtRU5PREFUQTsNCgkJCWNhY2hl LnRpbWVfdG9fZnVsbCA9IC1FTk9EQVRBOw0KCQkJY2FjaGUuY2hhcmdlX2Z1 bGwgPSAtRU5PREFUQTsNCgkJCWNhY2hlLmhlYWx0aCA9IC1FTk9EQVRBOw0K CQl9IGVsc2Ugew0KCQkJaWYgKGRpLT5yZWdzW0JRMjdYWFhfUkVHX1RURV0g IT0gSU5WQUxJRF9SRUdfQUREUikNCgkJCQljYWNoZS50aW1lX3RvX2VtcHR5 ID0gYnEyN3h4eF9iYXR0ZXJ5X3JlYWRfdGltZShkaSwgQlEyN1hYWF9SRUdf VFRFKTsNCgkJCWlmIChkaS0+cmVnc1tCUTI3WFhYX1JFR19UVEVDUF0gIT0g SU5WQUxJRF9SRUdfQUREUikNCgkJCQljYWNoZS50aW1lX3RvX2VtcHR5X2F2 ZyA9IGJxMjd4eHhfYmF0dGVyeV9yZWFkX3RpbWUoZGksIEJRMjdYWFhfUkVH X1RURUNQKTsNCgkJCWlmIChkaS0+cmVnc1tCUTI3WFhYX1JFR19UVEZdICE9 IElOVkFMSURfUkVHX0FERFIpDQoJCQkJY2FjaGUudGltZV90b19mdWxsID0g YnEyN3h4eF9iYXR0ZXJ5X3JlYWRfdGltZShkaSwgQlEyN1hYWF9SRUdfVFRG KTsNCgkJCWNhY2hlLmNoYXJnZV9mdWxsID0gYnEyN3h4eF9iYXR0ZXJ5X3Jl YWRfZmNjKGRpKTsNCgkJCWNhY2hlLmNhcGFjaXR5ID0gYnEyN3h4eF9iYXR0 ZXJ5X3JlYWRfc29jKGRpKTsNCgkJCWlmIChkaS0+cmVnc1tCUTI3WFhYX1JF R19BRV0gIT0gSU5WQUxJRF9SRUdfQUREUikNCgkJCQljYWNoZS5lbmVyZ3kg PSBicTI3eHh4X2JhdHRlcnlfcmVhZF9lbmVyZ3koZGkpOw0KCQkJY2FjaGUu aGVhbHRoID0gYnEyN3h4eF9iYXR0ZXJ5X3JlYWRfaGVhbHRoKGRpKTsNCgkJ fQ0KCQlpZiAoZGktPnJlZ3NbQlEyN1hYWF9SRUdfQ1lDVF0gIT0gSU5WQUxJ RF9SRUdfQUREUikNCgkJCWNhY2hlLmN5Y2xlX2NvdW50ID0gYnEyN3h4eF9i YXR0ZXJ5X3JlYWRfY3ljdChkaSk7DQoJCWlmIChkaS0+cmVnc1tCUTI3WFhY X1JFR19BUF0gIT0gSU5WQUxJRF9SRUdfQUREUikNCgkJCWNhY2hlLnBvd2Vy X2F2ZyA9IGJxMjd4eHhfYmF0dGVyeV9yZWFkX3B3cl9hdmcoZGkpOw0KDQoJ CS8qIFdlIG9ubHkgaGF2ZSB0byByZWFkIGNoYXJnZSBkZXNpZ24gZnVsbCBv bmNlICovDQoJCWlmIChkaS0+Y2hhcmdlX2Rlc2lnbl9mdWxsIDw9IDApDQoJ CQlkaS0+Y2hhcmdlX2Rlc2lnbl9mdWxsID0gYnEyN3h4eF9iYXR0ZXJ5X3Jl YWRfZGNhcChkaSk7DQoJfQ0KDQoJaWYgKGRpLT5jYWNoZS5jYXBhY2l0eSAh PSBjYWNoZS5jYXBhY2l0eSkNCgkJcG93ZXJfc3VwcGx5X2NoYW5nZWQoZGkt PmJhdCk7DQoNCglpZiAobWVtY21wKCZkaS0+Y2FjaGUsICZjYWNoZSwgc2l6 ZW9mKGNhY2hlKSkgIT0gMCkNCgkJZGktPmNhY2hlID0gY2FjaGU7DQoNCglk aS0+bGFzdF91cGRhdGUgPSBqaWZmaWVzOw0KfQ0KRVhQT1JUX1NZTUJPTF9H UEwoYnEyN3h4eF9iYXR0ZXJ5X3VwZGF0ZSk7DQoNCnN0YXRpYyB2b2lkIGJx Mjd4eHhfYmF0dGVyeV9wb2xsKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykN CnsNCglzdHJ1Y3QgYnEyN3h4eF9kZXZpY2VfaW5mbyAqZGkgPQ0KCQkJY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCBicTI3eHh4X2RldmljZV9pbmZvLA0K CQkJCSAgICAgd29yay53b3JrKTsNCg0KCWJxMjd4eHhfYmF0dGVyeV91cGRh dGUoZGkpOw0KDQoJaWYgKHBvbGxfaW50ZXJ2YWwgPiAwKQ0KCQlzY2hlZHVs ZV9kZWxheWVkX3dvcmsoJmRpLT53b3JrLCBwb2xsX2ludGVydmFsICogSFop Ow0KfQ0KDQovKg0KICogUmV0dXJuIHRoZSBiYXR0ZXJ5IGF2ZXJhZ2UgY3Vy cmVudCBpbiDCtUENCiAqIE5vdGUgdGhhdCBjdXJyZW50IGNhbiBiZSBuZWdh dGl2ZSBzaWduZWQgYXMgd2VsbA0KICogT3IgMCBpZiBzb21ldGhpbmcgZmFp bHMuDQogKi8NCnN0YXRpYyBpbnQgYnEyN3h4eF9iYXR0ZXJ5X2N1cnJlbnQo c3RydWN0IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpLA0KCQkJCSAgIHVuaW9u IHBvd2VyX3N1cHBseV9wcm9wdmFsICp2YWwpDQp7DQoJaW50IGN1cnI7DQoJ aW50IGZsYWdzOw0KDQoJY3VyciA9IGJxMjd4eHhfcmVhZChkaSwgQlEyN1hY WF9SRUdfQUksIGZhbHNlKTsNCglpZiAoY3VyciA8IDApIHsNCgkJZGV2X2Vy cihkaS0+ZGV2LCAiZXJyb3IgcmVhZGluZyBjdXJyZW50XG4iKTsNCgkJcmV0 dXJuIGN1cnI7DQoJfQ0KDQoJaWYgKGRpLT5vcHRzICYgQlEyN1hYWF9PX1pF Uk8pIHsNCgkJZmxhZ3MgPSBicTI3eHh4X3JlYWQoZGksIEJRMjdYWFhfUkVH X0ZMQUdTLCB0cnVlKTsNCgkJaWYgKGZsYWdzICYgQlEyNzAwMF9GTEFHX0NI R1MpIHsNCgkJCWRldl9kYmcoZGktPmRldiwgIm5lZ2F0aXZlIGN1cnJlbnQh XG4iKTsNCgkJCWN1cnIgPSAtY3VycjsNCgkJfQ0KDQoJCXZhbC0+aW50dmFs ID0gY3VyciAqIEJRMjdYWFhfQ1VSUkVOVF9DT05TVEFOVCAvIEJRMjdYWFhf UlM7DQoJfSBlbHNlIHsNCgkJLyogT3RoZXIgZ2F1Z2VzIHJldHVybiBzaWdu ZWQgdmFsdWUgKi8NCgkJdmFsLT5pbnR2YWwgPSAoaW50KSgoczE2KWN1cnIp ICogMTAwMDsNCgl9DQoNCglyZXR1cm4gMDsNCn0NCg0Kc3RhdGljIGludCBi cTI3eHh4X2JhdHRlcnlfc3RhdHVzKHN0cnVjdCBicTI3eHh4X2RldmljZV9p bmZvICpkaSwNCgkJCQkgIHVuaW9uIHBvd2VyX3N1cHBseV9wcm9wdmFsICp2 YWwpDQp7DQoJaW50IHN0YXR1czsNCg0KCWlmIChkaS0+b3B0cyAmIEJRMjdY WFhfT19aRVJPKSB7DQoJCWlmIChkaS0+Y2FjaGUuZmxhZ3MgJiBCUTI3MDAw X0ZMQUdfRkMpDQoJCQlzdGF0dXMgPSBQT1dFUl9TVVBQTFlfU1RBVFVTX0ZV TEw7DQoJCWVsc2UgaWYgKGRpLT5jYWNoZS5mbGFncyAmIEJRMjcwMDBfRkxB R19DSEdTKQ0KCQkJc3RhdHVzID0gUE9XRVJfU1VQUExZX1NUQVRVU19DSEFS R0lORzsNCgkJZWxzZSBpZiAocG93ZXJfc3VwcGx5X2FtX2lfc3VwcGxpZWQo ZGktPmJhdCkpDQoJCQlzdGF0dXMgPSBQT1dFUl9TVVBQTFlfU1RBVFVTX05P VF9DSEFSR0lORzsNCgkJZWxzZQ0KCQkJc3RhdHVzID0gUE9XRVJfU1VQUExZ X1NUQVRVU19ESVNDSEFSR0lORzsNCgl9IGVsc2Ugew0KCQlpZiAoZGktPmNh Y2hlLmZsYWdzICYgQlEyN1hYWF9GTEFHX0ZDKQ0KCQkJc3RhdHVzID0gUE9X RVJfU1VQUExZX1NUQVRVU19GVUxMOw0KCQllbHNlIGlmIChkaS0+Y2FjaGUu ZmxhZ3MgJiBCUTI3WFhYX0ZMQUdfRFNDKQ0KCQkJc3RhdHVzID0gUE9XRVJf U1VQUExZX1NUQVRVU19ESVNDSEFSR0lORzsNCgkJZWxzZQ0KCQkJc3RhdHVz ID0gUE9XRVJfU1VQUExZX1NUQVRVU19DSEFSR0lORzsNCgl9DQoNCgl2YWwt PmludHZhbCA9IHN0YXR1czsNCg0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMg aW50IGJxMjd4eHhfYmF0dGVyeV9jYXBhY2l0eV9sZXZlbChzdHJ1Y3QgYnEy N3h4eF9kZXZpY2VfaW5mbyAqZGksDQoJCQkJCSAgdW5pb24gcG93ZXJfc3Vw cGx5X3Byb3B2YWwgKnZhbCkNCnsNCglpbnQgbGV2ZWw7DQoNCglpZiAoZGkt Pm9wdHMgJiBCUTI3WFhYX09fWkVSTykgew0KCQlpZiAoZGktPmNhY2hlLmZs YWdzICYgQlEyNzAwMF9GTEFHX0ZDKQ0KCQkJbGV2ZWwgPSBQT1dFUl9TVVBQ TFlfQ0FQQUNJVFlfTEVWRUxfRlVMTDsNCgkJZWxzZSBpZiAoZGktPmNhY2hl LmZsYWdzICYgQlEyNzAwMF9GTEFHX0VEVjEpDQoJCQlsZXZlbCA9IFBPV0VS X1NVUFBMWV9DQVBBQ0lUWV9MRVZFTF9MT1c7DQoJCWVsc2UgaWYgKGRpLT5j YWNoZS5mbGFncyAmIEJRMjcwMDBfRkxBR19FRFZGKQ0KCQkJbGV2ZWwgPSBQ T1dFUl9TVVBQTFlfQ0FQQUNJVFlfTEVWRUxfQ1JJVElDQUw7DQoJCWVsc2UN CgkJCWxldmVsID0gUE9XRVJfU1VQUExZX0NBUEFDSVRZX0xFVkVMX05PUk1B TDsNCgl9IGVsc2Ugew0KCQlpZiAoZGktPmNhY2hlLmZsYWdzICYgQlEyN1hY WF9GTEFHX0ZDKQ0KCQkJbGV2ZWwgPSBQT1dFUl9TVVBQTFlfQ0FQQUNJVFlf TEVWRUxfRlVMTDsNCgkJZWxzZSBpZiAoZGktPmNhY2hlLmZsYWdzICYgQlEy N1hYWF9GTEFHX1NPQzEpDQoJCQlsZXZlbCA9IFBPV0VSX1NVUFBMWV9DQVBB Q0lUWV9MRVZFTF9MT1c7DQoJCWVsc2UgaWYgKGRpLT5jYWNoZS5mbGFncyAm IEJRMjdYWFhfRkxBR19TT0NGKQ0KCQkJbGV2ZWwgPSBQT1dFUl9TVVBQTFlf Q0FQQUNJVFlfTEVWRUxfQ1JJVElDQUw7DQoJCWVsc2UNCgkJCWxldmVsID0g UE9XRVJfU1VQUExZX0NBUEFDSVRZX0xFVkVMX05PUk1BTDsNCgl9DQoNCgl2 YWwtPmludHZhbCA9IGxldmVsOw0KDQoJcmV0dXJuIDA7DQp9DQoNCi8qDQog KiBSZXR1cm4gdGhlIGJhdHRlcnkgVm9sdGFnZSBpbiBtaWxsaXZvbHRzDQog KiBPciA8IDAgaWYgc29tZXRoaW5nIGZhaWxzLg0KICovDQpzdGF0aWMgaW50 IGJxMjd4eHhfYmF0dGVyeV92b2x0YWdlKHN0cnVjdCBicTI3eHh4X2Rldmlj ZV9pbmZvICpkaSwNCgkJCQkgICB1bmlvbiBwb3dlcl9zdXBwbHlfcHJvcHZh bCAqdmFsKQ0Kew0KCWludCB2b2x0Ow0KDQoJdm9sdCA9IGJxMjd4eHhfcmVh ZChkaSwgQlEyN1hYWF9SRUdfVk9MVCwgZmFsc2UpOw0KCWlmICh2b2x0IDwg MCkgew0KCQlkZXZfZXJyKGRpLT5kZXYsICJlcnJvciByZWFkaW5nIHZvbHRh Z2VcbiIpOw0KCQlyZXR1cm4gdm9sdDsNCgl9DQoNCgl2YWwtPmludHZhbCA9 IHZvbHQgKiAxMDAwOw0KDQoJcmV0dXJuIDA7DQp9DQoNCnN0YXRpYyBpbnQg YnEyN3h4eF9zaW1wbGVfdmFsdWUoaW50IHZhbHVlLA0KCQkJCXVuaW9uIHBv d2VyX3N1cHBseV9wcm9wdmFsICp2YWwpDQp7DQoJaWYgKHZhbHVlIDwgMCkN CgkJcmV0dXJuIHZhbHVlOw0KDQoJdmFsLT5pbnR2YWwgPSB2YWx1ZTsNCg0K CXJldHVybiAwOw0KfQ0KDQpzdGF0aWMgaW50IGJxMjd4eHhfYmF0dGVyeV9n ZXRfcHJvcGVydHkoc3RydWN0IHBvd2VyX3N1cHBseSAqcHN5LA0KCQkJCQll bnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBwc3AsDQoJCQkJCXVuaW9uIHBv d2VyX3N1cHBseV9wcm9wdmFsICp2YWwpDQp7DQoJaW50IHJldCA9IDA7DQoJ c3RydWN0IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpID0gcG93ZXJfc3VwcGx5 X2dldF9kcnZkYXRhKHBzeSk7DQoNCgltdXRleF9sb2NrKCZkaS0+bG9jayk7 DQoJaWYgKHRpbWVfaXNfYmVmb3JlX2ppZmZpZXMoZGktPmxhc3RfdXBkYXRl ICsgNSAqIEhaKSkgew0KCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRp LT53b3JrKTsNCgkJYnEyN3h4eF9iYXR0ZXJ5X3BvbGwoJmRpLT53b3JrLndv cmspOw0KCX0NCgltdXRleF91bmxvY2soJmRpLT5sb2NrKTsNCg0KCWlmIChw c3AgIT0gUE9XRVJfU1VQUExZX1BST1BfUFJFU0VOVCAmJiBkaS0+Y2FjaGUu ZmxhZ3MgPCAwKQ0KCQlyZXR1cm4gLUVOT0RFVjsNCg0KCXN3aXRjaCAocHNw KSB7DQoJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9TVEFUVVM6DQoJCXJldCA9 IGJxMjd4eHhfYmF0dGVyeV9zdGF0dXMoZGksIHZhbCk7DQoJCWJyZWFrOw0K CWNhc2UgUE9XRVJfU1VQUExZX1BST1BfVk9MVEFHRV9OT1c6DQoJCXJldCA9 IGJxMjd4eHhfYmF0dGVyeV92b2x0YWdlKGRpLCB2YWwpOw0KCQlicmVhazsN CgljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX1BSRVNFTlQ6DQoJCXZhbC0+aW50 dmFsID0gZGktPmNhY2hlLmZsYWdzIDwgMCA/IDAgOiAxOw0KCQlicmVhazsN CgljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NVUlJFTlRfTk9XOg0KCQlyZXQg PSBicTI3eHh4X2JhdHRlcnlfY3VycmVudChkaSwgdmFsKTsNCgkJYnJlYWs7 DQoJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9DQVBBQ0lUWToNCgkJcmV0ID0g YnEyN3h4eF9zaW1wbGVfdmFsdWUoZGktPmNhY2hlLmNhcGFjaXR5LCB2YWwp Ow0KCQlicmVhazsNCgljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NBUEFDSVRZ X0xFVkVMOg0KCQlyZXQgPSBicTI3eHh4X2JhdHRlcnlfY2FwYWNpdHlfbGV2 ZWwoZGksIHZhbCk7DQoJCWJyZWFrOw0KCWNhc2UgUE9XRVJfU1VQUExZX1BS T1BfVEVNUDoNCgkJcmV0ID0gYnEyN3h4eF9zaW1wbGVfdmFsdWUoZGktPmNh Y2hlLnRlbXBlcmF0dXJlLCB2YWwpOw0KCQlpZiAocmV0ID09IDApDQoJCQl2 YWwtPmludHZhbCAtPSAyNzMxOyAvKiBjb252ZXJ0IGRlY2lkZWdyZWUgayB0 byBjICovDQoJCWJyZWFrOw0KCWNhc2UgUE9XRVJfU1VQUExZX1BST1BfVElN RV9UT19FTVBUWV9OT1c6DQoJCXJldCA9IGJxMjd4eHhfc2ltcGxlX3ZhbHVl KGRpLT5jYWNoZS50aW1lX3RvX2VtcHR5LCB2YWwpOw0KCQlicmVhazsNCglj YXNlIFBPV0VSX1NVUFBMWV9QUk9QX1RJTUVfVE9fRU1QVFlfQVZHOg0KCQly ZXQgPSBicTI3eHh4X3NpbXBsZV92YWx1ZShkaS0+Y2FjaGUudGltZV90b19l bXB0eV9hdmcsIHZhbCk7DQoJCWJyZWFrOw0KCWNhc2UgUE9XRVJfU1VQUExZ X1BST1BfVElNRV9UT19GVUxMX05PVzoNCgkJcmV0ID0gYnEyN3h4eF9zaW1w bGVfdmFsdWUoZGktPmNhY2hlLnRpbWVfdG9fZnVsbCwgdmFsKTsNCgkJYnJl YWs7DQoJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9URUNITk9MT0dZOg0KCQl2 YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9URUNITk9MT0dZX0xJT047DQoJ CWJyZWFrOw0KCWNhc2UgUE9XRVJfU1VQUExZX1BST1BfQ0hBUkdFX05PVzoN CgkJcmV0ID0gYnEyN3h4eF9zaW1wbGVfdmFsdWUoYnEyN3h4eF9iYXR0ZXJ5 X3JlYWRfbmFjKGRpKSwgdmFsKTsNCgkJYnJlYWs7DQoJY2FzZSBQT1dFUl9T VVBQTFlfUFJPUF9DSEFSR0VfRlVMTDoNCgkJcmV0ID0gYnEyN3h4eF9zaW1w bGVfdmFsdWUoZGktPmNhY2hlLmNoYXJnZV9mdWxsLCB2YWwpOw0KCQlicmVh azsNCgljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX0NIQVJHRV9GVUxMX0RFU0lH TjoNCgkJcmV0ID0gYnEyN3h4eF9zaW1wbGVfdmFsdWUoZGktPmNoYXJnZV9k ZXNpZ25fZnVsbCwgdmFsKTsNCgkJYnJlYWs7DQoJLyoNCgkgKiBUT0RPOiBJ bXBsZW1lbnQgdGhlc2UgdG8gbWFrZSByZWdpc3RlcnMgc2V0IGZyb20NCgkg KiBwb3dlcl9zdXBwbHlfYmF0dGVyeV9pbmZvIHZpc2libGUgaW4gc3lzZnMu DQoJICovDQoJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9FTkVSR1lfRlVMTF9E RVNJR046DQoJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9WT0xUQUdFX01JTl9E RVNJR046DQoJCXJldHVybiAtRUlOVkFMOw0KCWNhc2UgUE9XRVJfU1VQUExZ X1BST1BfQ1lDTEVfQ09VTlQ6DQoJCXJldCA9IGJxMjd4eHhfc2ltcGxlX3Zh bHVlKGRpLT5jYWNoZS5jeWNsZV9jb3VudCwgdmFsKTsNCgkJYnJlYWs7DQoJ Y2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9FTkVSR1lfTk9XOg0KCQlyZXQgPSBi cTI3eHh4X3NpbXBsZV92YWx1ZShkaS0+Y2FjaGUuZW5lcmd5LCB2YWwpOw0K CQlicmVhazsNCgljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX1BPV0VSX0FWRzoN CgkJcmV0ID0gYnEyN3h4eF9zaW1wbGVfdmFsdWUoZGktPmNhY2hlLnBvd2Vy X2F2ZywgdmFsKTsNCgkJYnJlYWs7DQoJY2FzZSBQT1dFUl9TVVBQTFlfUFJP UF9IRUFMVEg6DQoJCXJldCA9IGJxMjd4eHhfc2ltcGxlX3ZhbHVlKGRpLT5j YWNoZS5oZWFsdGgsIHZhbCk7DQoJCWJyZWFrOw0KCWNhc2UgUE9XRVJfU1VQ UExZX1BST1BfTUFOVUZBQ1RVUkVSOg0KCQl2YWwtPnN0cnZhbCA9IEJRMjdY WFhfTUFOVUZBQ1RVUkVSOw0KCQlicmVhazsNCglkZWZhdWx0Og0KCQlyZXR1 cm4gLUVJTlZBTDsNCgl9DQoNCglyZXR1cm4gcmV0Ow0KfQ0KDQpzdGF0aWMg dm9pZCBicTI3eHh4X2V4dGVybmFsX3Bvd2VyX2NoYW5nZWQoc3RydWN0IHBv d2VyX3N1cHBseSAqcHN5KQ0Kew0KCXN0cnVjdCBicTI3eHh4X2RldmljZV9p bmZvICpkaSA9IHBvd2VyX3N1cHBseV9nZXRfZHJ2ZGF0YShwc3kpOw0KDQoJ Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkaS0+d29yayk7DQoJc2NoZWR1 bGVfZGVsYXllZF93b3JrKCZkaS0+d29yaywgMCk7DQp9DQoNCmludCBicTI3 eHh4X2JhdHRlcnlfc2V0dXAoc3RydWN0IGJxMjd4eHhfZGV2aWNlX2luZm8g KmRpKQ0Kew0KCXN0cnVjdCBwb3dlcl9zdXBwbHlfZGVzYyAqcHN5X2Rlc2M7 DQoJc3RydWN0IHBvd2VyX3N1cHBseV9jb25maWcgcHN5X2NmZyA9IHsNCgkJ Lm9mX25vZGUgPSBkaS0+ZGV2LT5vZl9ub2RlLA0KCQkuZHJ2X2RhdGEgPSBk aSwNCgl9Ow0KDQoJSU5JVF9ERUxBWUVEX1dPUksoJmRpLT53b3JrLCBicTI3 eHh4X2JhdHRlcnlfcG9sbCk7DQoJbXV0ZXhfaW5pdCgmZGktPmxvY2spOw0K DQoJZGktPnJlZ3MgICAgICAgPSBicTI3eHh4X2NoaXBfZGF0YVtkaS0+Y2hp cF0ucmVnczsNCglkaS0+dW5zZWFsX2tleSA9IGJxMjd4eHhfY2hpcF9kYXRh W2RpLT5jaGlwXS51bnNlYWxfa2V5Ow0KCWRpLT5kbV9yZWdzICAgID0gYnEy N3h4eF9jaGlwX2RhdGFbZGktPmNoaXBdLmRtX3JlZ3M7DQoJZGktPm9wdHMg ICAgICAgPSBicTI3eHh4X2NoaXBfZGF0YVtkaS0+Y2hpcF0ub3B0czsNCg0K CXBzeV9kZXNjID0gZGV2bV9remFsbG9jKGRpLT5kZXYsIHNpemVvZigqcHN5 X2Rlc2MpLCBHRlBfS0VSTkVMKTsNCglpZiAoIXBzeV9kZXNjKQ0KCQlyZXR1 cm4gLUVOT01FTTsNCg0KCXBzeV9kZXNjLT5uYW1lID0gZGktPm5hbWU7DQoJ cHN5X2Rlc2MtPnR5cGUgPSBQT1dFUl9TVVBQTFlfVFlQRV9CQVRURVJZOw0K CXBzeV9kZXNjLT5wcm9wZXJ0aWVzID0gYnEyN3h4eF9jaGlwX2RhdGFbZGkt PmNoaXBdLnByb3BzOw0KCXBzeV9kZXNjLT5udW1fcHJvcGVydGllcyA9IGJx Mjd4eHhfY2hpcF9kYXRhW2RpLT5jaGlwXS5wcm9wc19zaXplOw0KCXBzeV9k ZXNjLT5nZXRfcHJvcGVydHkgPSBicTI3eHh4X2JhdHRlcnlfZ2V0X3Byb3Bl cnR5Ow0KCXBzeV9kZXNjLT5leHRlcm5hbF9wb3dlcl9jaGFuZ2VkID0gYnEy N3h4eF9leHRlcm5hbF9wb3dlcl9jaGFuZ2VkOw0KDQoJZGktPmJhdCA9IHBv d2VyX3N1cHBseV9yZWdpc3Rlcl9ub193cyhkaS0+ZGV2LCBwc3lfZGVzYywg JnBzeV9jZmcpOw0KCWlmIChJU19FUlIoZGktPmJhdCkpIHsNCgkJZGV2X2Vy cihkaS0+ZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIGJhdHRlcnlcbiIpOw0K CQlyZXR1cm4gUFRSX0VSUihkaS0+YmF0KTsNCgl9DQoNCglicTI3eHh4X2Jh dHRlcnlfc2V0dGluZ3MoZGkpOw0KCWJxMjd4eHhfYmF0dGVyeV91cGRhdGUo ZGkpOw0KDQoJbXV0ZXhfbG9jaygmYnEyN3h4eF9saXN0X2xvY2spOw0KCWxp c3RfYWRkKCZkaS0+bGlzdCwgJmJxMjd4eHhfYmF0dGVyeV9kZXZpY2VzKTsN CgltdXRleF91bmxvY2soJmJxMjd4eHhfbGlzdF9sb2NrKTsNCg0KCXJldHVy biAwOw0KfQ0KRVhQT1JUX1NZTUJPTF9HUEwoYnEyN3h4eF9iYXR0ZXJ5X3Nl dHVwKTsNCg0Kdm9pZCBicTI3eHh4X2JhdHRlcnlfdGVhcmRvd24oc3RydWN0 IGJxMjd4eHhfZGV2aWNlX2luZm8gKmRpKQ0Kew0KCS8qDQoJICogcG93ZXJf c3VwcGx5X3VucmVnaXN0ZXIgY2FsbCBicTI3eHh4X2JhdHRlcnlfZ2V0X3By b3BlcnR5IHdoaWNoDQoJICogY2FsbCBicTI3eHh4X2JhdHRlcnlfcG9sbC4N CgkgKiBNYWtlIHN1cmUgdGhhdCBicTI3eHh4X2JhdHRlcnlfcG9sbCB3aWxs IG5vdCBjYWxsDQoJICogc2NoZWR1bGVfZGVsYXllZF93b3JrIGFnYWluIGFm dGVyIHVucmVnaXN0ZXIgKHdoaWNoIGNhdXNlIE9PUFMpLg0KCSAqLw0KCXBv bGxfaW50ZXJ2YWwgPSAwOw0KDQoJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5j KCZkaS0+d29yayk7DQoNCglwb3dlcl9zdXBwbHlfdW5yZWdpc3RlcihkaS0+ YmF0KTsNCg0KCW11dGV4X2xvY2soJmJxMjd4eHhfbGlzdF9sb2NrKTsNCgls aXN0X2RlbCgmZGktPmxpc3QpOw0KCW11dGV4X3VubG9jaygmYnEyN3h4eF9s aXN0X2xvY2spOw0KDQoJbXV0ZXhfZGVzdHJveSgmZGktPmxvY2spOw0KfQ0K RVhQT1JUX1NZTUJPTF9HUEwoYnEyN3h4eF9iYXR0ZXJ5X3RlYXJkb3duKTsN Cg0KTU9EVUxFX0FVVEhPUigiUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlA bGludXguaXQ+Iik7DQpNT0RVTEVfREVTQ1JJUFRJT04oIkJRMjd4eHggYmF0 dGVyeSBtb25pdG9yIGRyaXZlciIpOw0KTU9EVUxFX0xJQ0VOU0UoIkdQTCIp Ow0K --8323329-1505043097-1506506527=:3186 Content-Type: text/plain; charset=US-ASCII; name=battery.cocci Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=battery.cocci QHN0ckANCnR5cGUgdDsNCmlkZW50aWZpZXIgaSxpMSxpMjsNCmV4cHJlc3Np b24gZTEsZTI7DQpAQA0KDQp0IGlbXSA9IHsNCiAgLi4uLA0KICBbZTFdID0g QlEyN1hYWF9EQVRBKGkxLC4uLiksDQogIC4uLiwNCiAgW2UyXSA9IEJRMjdY WFhfREFUQShpMiwuLi4pLA0KICAuLi4sDQp9Ow0KDQpAc2NyaXB0Om9jYW1s IHRvY2hlY2tADQppMSA8PCBzdHIuaTE7DQppMiA8PCBzdHIuaTI7DQppMXJl Z3M7IGkycmVnczsNCmkxZG1yZWdzOyBpMmRtcmVnczsNCmkxcHJvcHM7IGky cHJvcHM7DQpAQA0KDQppZiBub3QoaTEgPSBpMikNCnRoZW4NCiAgYmVnaW4N CiAgICBpMXJlZ3MgOj0gbWFrZV9pZGVudCAoaTEgXiAiX3JlZ3MiKTsNCiAg ICBpMnJlZ3MgOj0gbWFrZV9pZGVudCAoaTIgXiAiX3JlZ3MiKTsNCiAgICBp MWRtcmVncyA6PSBtYWtlX2lkZW50IChpMSBeICJfZG1fcmVncyIpOw0KICAg IGkyZG1yZWdzIDo9IG1ha2VfaWRlbnQgKGkyIF4gIl9kbV9yZWdzIik7DQog ICAgaTFwcm9wcyA6PSBtYWtlX2lkZW50IChpMSBeICJfcHJvcHMiKTsNCiAg ICBpMnByb3BzIDo9IG1ha2VfaWRlbnQgKGkyIF4gIl9wcm9wcyIpDQogIGVu ZA0KDQooKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopDQoNCkBnZXRyZWdzMUAN CnR5cGVkZWYgdTg7DQppZGVudGlmaWVyIHRvY2hlY2suaTFyZWdzOw0KaW5p dGlhbGl6ZXIgbGlzdCBpMXJlZ3NfdmFsczsNCkBADQoNCnU4IGkxcmVnc1su Li5dID0geyBpMXJlZ3NfdmFscywgfTsNCg0KQGdldHJlZ3MyQA0KaWRlbnRp ZmllciB0b2NoZWNrLmkycmVnczsNCmluaXRpYWxpemVyIGxpc3QgaTJyZWdz X3ZhbHM7DQpAQA0KDQp1OCBpMnJlZ3NbLi4uXSA9IHsgaTJyZWdzX3ZhbHMs IH07DQoNCkBzY3JpcHQ6b2NhbWxADQooXyxpMXJlZ3NfdmFscykgPDwgZ2V0 cmVnczEuaTFyZWdzX3ZhbHM7DQooXyxpMnJlZ3NfdmFscykgPDwgZ2V0cmVn czIuaTJyZWdzX3ZhbHM7DQppMXJlZ3MgPDwgdG9jaGVjay5pMXJlZ3M7DQpp MnJlZ3MgPDwgdG9jaGVjay5pMnJlZ3M7DQpAQA0KDQppZiBpMXJlZ3MgPCBp MnJlZ3MgJiYNCiAgIExpc3Quc29ydCBjb21wYXJlIGkxcmVnc192YWxzID0g TGlzdC5zb3J0IGNvbXBhcmUgaTJyZWdzX3ZhbHMNCnRoZW4gUHJpbnRmLnBy aW50ZiAiJXMgYW5kICVzIGhhdmUgdGhlIHNhbWUgcmVnaXN0ZXJzXG4iIGkx cmVncyBpMnJlZ3MNCg0KKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKQ0KDQpA Z2V0ZG1yZWdzMUANCmlkZW50aWZpZXIgdG9jaGVjay5pMWRtcmVnczsNCmlu aXRpYWxpemVyIGxpc3QgaTFkbXJlZ3NfdmFsczsNCkBADQoNCnN0cnVjdCBi cTI3eHh4X2RtX3JlZyBpMWRtcmVnc1tdID0geyBpMWRtcmVnc192YWxzLCB9 Ow0KDQpAZ2V0ZG1yZWdzMkANCmlkZW50aWZpZXIgdG9jaGVjay5pMmRtcmVn czsNCmluaXRpYWxpemVyIGxpc3QgaTJkbXJlZ3NfdmFsczsNCkBADQoNCnN0 cnVjdCBicTI3eHh4X2RtX3JlZyBpMmRtcmVnc1tdID0geyBpMmRtcmVnc192 YWxzLCB9Ow0KDQpAc2NyaXB0Om9jYW1sQA0KKF8saTFkbXJlZ3NfdmFscykg PDwgZ2V0ZG1yZWdzMS5pMWRtcmVnc192YWxzOw0KKF8saTJkbXJlZ3NfdmFs cykgPDwgZ2V0ZG1yZWdzMi5pMmRtcmVnc192YWxzOw0KaTFkbXJlZ3MgPDwg dG9jaGVjay5pMWRtcmVnczsNCmkyZG1yZWdzIDw8IHRvY2hlY2suaTJkbXJl Z3M7DQpAQA0KDQppZiBpMWRtcmVncyA8IGkyZG1yZWdzICYmDQogICBMaXN0 LnNvcnQgY29tcGFyZSBpMWRtcmVnc192YWxzID0gTGlzdC5zb3J0IGNvbXBh cmUgaTJkbXJlZ3NfdmFscw0KdGhlbiBQcmludGYucHJpbnRmICIlcyBhbmQg JXMgaGF2ZSB0aGUgc2FtZSByZWdpc3RlcnNcbiIgaTFkbXJlZ3MgaTJkbXJl Z3MNCg0KKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKQ0KDQpAZ2V0cHJvcHMx QA0KaWRlbnRpZmllciB0b2NoZWNrLmkxcHJvcHM7DQppbml0aWFsaXplciBs aXN0W24xXSBpMXByb3BzX3ZhbHM7DQpAQA0KDQplbnVtIHBvd2VyX3N1cHBs eV9wcm9wZXJ0eSBpMXByb3BzW10gPSB7IGkxcHJvcHNfdmFscywgfTsNCg0K QGdldHByb3BzMkANCmlkZW50aWZpZXIgdG9jaGVjay5pMnByb3BzOw0KaW5p dGlhbGl6ZXIgbGlzdFtuMl0gaTJwcm9wc192YWxzOw0KQEANCg0KZW51bSBw b3dlcl9zdXBwbHlfcHJvcGVydHkgaTJwcm9wc1tdID0geyBpMnByb3BzX3Zh bHMsIH07DQoNCkBzY3JpcHQ6b2NhbWxADQooXyxpMXByb3BzX3ZhbHMpIDw8 IGdldHByb3BzMS5pMXByb3BzX3ZhbHM7DQooXyxpMnByb3BzX3ZhbHMpIDw8 IGdldHByb3BzMi5pMnByb3BzX3ZhbHM7DQppMXByb3BzIDw8IHRvY2hlY2su aTFwcm9wczsNCmkycHJvcHMgPDwgdG9jaGVjay5pMnByb3BzOw0KQEANCg0K aWYgaTFwcm9wcyA8IGkycHJvcHMgJiYNCiAgIExpc3Quc29ydCBjb21wYXJl IGkxcHJvcHNfdmFscyA9IExpc3Quc29ydCBjb21wYXJlIGkycHJvcHNfdmFs cw0KdGhlbiBQcmludGYucHJpbnRmICIlcyBhbmQgJXMgaGF2ZSB0aGUgc2Ft ZSBwcm9wZXJ0aWVzXG4iIGkxcHJvcHMgaTJwcm9wcw0KDQo= --8323329-1505043097-1506506527=:3186--