From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtps.newmedia-net.de ([2a05:a1c0:0:de::167] helo=webmail.newmedia-net.de) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1emKiN-0000uL-Kk for ath10k@lists.infradead.org; Thu, 15 Feb 2018 14:40:51 +0000 Subject: [PATCH 1/1] ath10k: add LED and GPIO controlling support for various chipsets From: Sebastian Gottschall References: <1518684977-14607-1-git-send-email-govinds@codeaurora.org> Message-ID: <985cf985-f151-926b-018b-2efd414e483b@dd-wrt.com> Date: Thu, 15 Feb 2018 15:40:35 +0100 MIME-Version: 1.0 In-Reply-To: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org QWRkcyBMRUQgYW5kIEdQSU8gQ29udHJvbCBzdXBwb3J0IGZvciA5ODh4LCA5ODg3LCA5ODg4LCA5 OXgwLCA5OTg0IGFuZCAKaXBxNDAxOSBiYXNlZCBjaGlwc2V0cyB3aXRoIG9uIGNoaXBzZXQgY29u bmVjdGVkIGxlZCdzCnVzaW5nIFdNSSBGaXJtd2FyZSBBUEkuClRoZSBMRUQgZGV2aWNlIHdpbGwg Z2V0IGF2YWlsYWJsZSBuYW1lZCBhcyAiYXRoMTBrLXBoeVgiIGF0IHN5c2ZzIGFuZCAKY2FuIGJl IGNvbnRyb2xsZWQgd2l0aCB2YXJpb3VzIHRyaWdnZXJzLgphZGRzIGFsc28gZGVidWdmcyBpbnRl cmZhY2UgZm9yIGdwaW8gY29udHJvbC4KClNpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBHb3R0c2No YWxsIDxzLmdvdHRzY2hhbGxAZGQtd3J0LmNvbT4KCiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGgxMGsvY29yZS5jwqDCoMKgIHwgMTY4IAorKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KIMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmjCoMKgwqAgfMKgIDE1 ICsrKwogwqBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmPCoMKgIHwgMTQw ICsrKysrKysrKysrKysrKysrKysrKysrKysKIMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDEway9ody5owqDCoMKgwqDCoCB8wqDCoCAxICsKIMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDEway93bWktb3BzLmggfMKgIDM2ICsrKysrKy0KIMKgZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDEway93bWkuY8KgwqDCoMKgIHzCoCA0MyArKysrKysrKwogwqBkcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5owqDCoMKgwqAgfMKgIDM2ICsrKysrKysKIMKgNyBmaWxl cyBjaGFuZ2VkLCA0MzYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYyAKYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYwppbmRleCBmM2VjMTNiODBiMjAuLmI3MTJiZjA5YWQ2 ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMKKysr IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMKQEAgLTIxLDYgKzIxLDkg QEAKIMKgI2luY2x1ZGUgPGxpbnV4L2RtaS5oPgogwqAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4K IMKgI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9sZWRzLmg+Cisj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisKCiDCoCNpbmNsdWRlICJjb3JlLmgi CiDCoCNpbmNsdWRlICJtYWMuaCIKQEAgLTY1LDYgKzY4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBhdGgxMGtfaHdfcGFyYW1zIAphdGgxMGtfaHdfcGFyYW1zX2xpc3RbXSA9IHsKIMKgwqDCoMKg IMKgwqDCoCAuaWQgPSBRQ0E5ODhYX0hXXzJfMF9WRVJTSU9OLAogwqDCoMKgwqAgwqDCoMKgIC5k ZXZfaWQgPSBRQ0E5ODhYXzJfMF9ERVZJQ0VfSUQsCiDCoMKgwqDCoCDCoMKgwqAgLm5hbWUgPSAi cWNhOTg4eCBodzIuMCIsCivCoMKgwqAgwqDCoMKgIC5sZWRfcGluID0gMSwKIMKgwqDCoMKgIMKg wqDCoCAucGF0Y2hfbG9hZF9hZGRyID0gUUNBOTg4WF9IV18yXzBfUEFUQ0hfTE9BRF9BRERSLAog wqDCoMKgwqAgwqDCoMKgIC51YXJ0X3BpbiA9IDcsCiDCoMKgwqDCoCDCoMKgwqAgLmNjX3dyYXBh cm91bmRfdHlwZSA9IEFUSDEwS19IV19DQ19XUkFQX1NISUZURURfQUxMLApAQCAtOTQsNiArOTgs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19od19wYXJhbXMgCmF0aDEwa19od19wYXJh bXNfbGlzdFtdID0gewogwqDCoMKgwqAgwqDCoMKgIC5pZCA9IFFDQTk4OFhfSFdfMl8wX1ZFUlNJ T04sCiDCoMKgwqDCoCDCoMKgwqAgLmRldl9pZCA9IFFDQTk4OFhfMl8wX0RFVklDRV9JRF9VQk5U LAogwqDCoMKgwqAgwqDCoMKgIC5uYW1lID0gInFjYTk4OHggaHcyLjAgdWJpcXVpdGkiLAorwqDC oMKgIMKgwqDCoCAubGVkX3BpbiA9IDEsCiDCoMKgwqDCoCDCoMKgwqAgLnBhdGNoX2xvYWRfYWRk ciA9IFFDQTk4OFhfSFdfMl8wX1BBVENIX0xPQURfQUREUiwKIMKgwqDCoMKgIMKgwqDCoCAudWFy dF9waW4gPSA3LAogwqDCoMKgwqAgwqDCoMKgIC5jY193cmFwYXJvdW5kX3R5cGUgPSBBVEgxMEtf SFdfQ0NfV1JBUF9TSElGVEVEX0FMTCwKQEAgLTEyMyw2ICsxMjgsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGF0aDEwa19od19wYXJhbXMgCmF0aDEwa19od19wYXJhbXNfbGlzdFtdID0gewogwqDC oMKgwqAgwqDCoMKgIC5pZCA9IFFDQTk4ODdfSFdfMV8wX1ZFUlNJT04sCiDCoMKgwqDCoCDCoMKg wqAgLmRldl9pZCA9IFFDQTk4ODdfMV8wX0RFVklDRV9JRCwKIMKgwqDCoMKgIMKgwqDCoCAubmFt ZSA9ICJxY2E5ODg3IGh3MS4wIiwKK8KgwqDCoCDCoMKgwqAgLmxlZF9waW4gPSAxLAogwqDCoMKg wqAgwqDCoMKgIC5wYXRjaF9sb2FkX2FkZHIgPSBRQ0E5ODg3X0hXXzFfMF9QQVRDSF9MT0FEX0FE RFIsCiDCoMKgwqDCoCDCoMKgwqAgLnVhcnRfcGluID0gNywKIMKgwqDCoMKgIMKgwqDCoCAuY2Nf d3JhcGFyb3VuZF90eXBlID0gQVRIMTBLX0hXX0NDX1dSQVBfU0hJRlRFRF9BTEwsCkBAIC0yNjcs NiArMjczLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHdfcGFyYW1zIAphdGgxMGtf aHdfcGFyYW1zX2xpc3RbXSA9IHsKIMKgwqDCoMKgIMKgwqDCoCAuaWQgPSBRQ0E5OVgwX0hXXzJf MF9ERVZfVkVSU0lPTiwKIMKgwqDCoMKgIMKgwqDCoCAuZGV2X2lkID0gUUNBOTlYMF8yXzBfREVW SUNFX0lELAogwqDCoMKgwqAgwqDCoMKgIC5uYW1lID0gInFjYTk5eDAgaHcyLjAiLAorwqDCoMKg IMKgwqDCoCAubGVkX3BpbiA9IDE3LAogwqDCoMKgwqAgwqDCoMKgIC5wYXRjaF9sb2FkX2FkZHIg PSBRQ0E5OVgwX0hXXzJfMF9QQVRDSF9MT0FEX0FERFIsCiDCoMKgwqDCoCDCoMKgwqAgLnVhcnRf cGluID0gNywKIMKgwqDCoMKgIMKgwqDCoCAub3RwX2V4ZV9wYXJhbSA9IDB4MDAwMDA3MDAsCkBA IC0zMDEsNiArMzA4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHdfcGFyYW1zIAph dGgxMGtfaHdfcGFyYW1zX2xpc3RbXSA9IHsKIMKgwqDCoMKgIMKgwqDCoCAuaWQgPSBRQ0E5OTg0 X0hXXzFfMF9ERVZfVkVSU0lPTiwKIMKgwqDCoMKgIMKgwqDCoCAuZGV2X2lkID0gUUNBOTk4NF8x XzBfREVWSUNFX0lELAogwqDCoMKgwqAgwqDCoMKgIC5uYW1lID0gInFjYTk5ODQvcWNhOTk5NCBo dzEuMCIsCivCoMKgwqAgwqDCoMKgIC5sZWRfcGluID0gMTcsCiDCoMKgwqDCoCDCoMKgwqAgLnBh dGNoX2xvYWRfYWRkciA9IFFDQTk5ODRfSFdfMV8wX1BBVENIX0xPQURfQUREUiwKIMKgwqDCoMKg IMKgwqDCoCAudWFydF9waW4gPSA3LAogwqDCoMKgwqAgwqDCoMKgIC5jY193cmFwYXJvdW5kX3R5 cGUgPSBBVEgxMEtfSFdfQ0NfV1JBUF9TSElGVEVEX0VBQ0gsCkBAIC0zNDAsNiArMzQ4LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHdfcGFyYW1zIAphdGgxMGtfaHdfcGFyYW1zX2xp c3RbXSA9IHsKIMKgwqDCoMKgIMKgwqDCoCAuaWQgPSBRQ0E5ODg4X0hXXzJfMF9ERVZfVkVSU0lP TiwKIMKgwqDCoMKgIMKgwqDCoCAuZGV2X2lkID0gUUNBOTg4OF8yXzBfREVWSUNFX0lELAogwqDC oMKgwqAgwqDCoMKgIC5uYW1lID0gInFjYTk4ODggaHcyLjAiLAorwqDCoMKgIMKgwqDCoCAubGVk X3BpbiA9IDE3LAogwqDCoMKgwqAgwqDCoMKgIC5wYXRjaF9sb2FkX2FkZHIgPSBRQ0E5ODg4X0hX XzJfMF9QQVRDSF9MT0FEX0FERFIsCiDCoMKgwqDCoCDCoMKgwqAgLnVhcnRfcGluID0gNywKIMKg wqDCoMKgIMKgwqDCoCAuY2Nfd3JhcGFyb3VuZF90eXBlID0gQVRIMTBLX0hXX0NDX1dSQVBfU0hJ RlRFRF9FQUNILApAQCAtNDM2LDYgKzQ0NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBr X2h3X3BhcmFtcyAKYXRoMTBrX2h3X3BhcmFtc19saXN0W10gPSB7CiDCoMKgwqDCoCDCoMKgwqAg LmlkID0gUUNBNDAxOV9IV18xXzBfREVWX1ZFUlNJT04sCiDCoMKgwqDCoCDCoMKgwqAgLmRldl9p ZCA9IDAsCiDCoMKgwqDCoCDCoMKgwqAgLm5hbWUgPSAicWNhNDAxOSBodzEuMCIsCivCoMKgwqAg wqDCoMKgIC5sZWRfcGluID0gNTgsCiDCoMKgwqDCoCDCoMKgwqAgLnBhdGNoX2xvYWRfYWRkciA9 IFFDQTQwMTlfSFdfMV8wX1BBVENIX0xPQURfQUREUiwKIMKgwqDCoMKgIMKgwqDCoCAudWFydF9w aW4gPSA3LAogwqDCoMKgwqAgwqDCoMKgIC5jY193cmFwYXJvdW5kX3R5cGUgPSBBVEgxMEtfSFdf Q0NfV1JBUF9TSElGVEVEX0VBQ0gsCkBAIC0yMTMyLDEyICsyMTQyLDE0MyBAQCBzdGF0aWMgaW50 IGF0aDEwa19jb3JlX3Jlc2V0X3J4X2ZpbHRlcihzdHJ1Y3QgCmF0aDEwayAqYXIpCiDCoMKgwqDC oCByZXR1cm4gMDsKIMKgfQoKK3N0YXRpYyBpbnQgYXRoMTBrX2dwaW9fcGluX2NmZ19pbnB1dChz dHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCAKb2Zmc2V0KQoreworwqDCoMKgIHN0cnVj dCBhdGgxMGtfZ3Bpb2NvbnRyb2wgKmdwaW8gPSBjb250YWluZXJfb2YoY2hpcCwgc3RydWN0IAph dGgxMGtfZ3Bpb2NvbnRyb2wsIGdjaGlwKTsKK8KgwqDCoCBhdGgxMGtfd21pX2dwaW9fY29uZmln KGdwaW8tPmFyLCBvZmZzZXQsIDEsIFdNSV9HUElPX1BVTExfTk9ORSwgCldNSV9HUElPX0lOVFRZ UEVfRElTQUJMRSk7IC8vIGNvbmZpZ3VyZSB0byBpbnB1dAorwqDCoMKgIGdwaW8tPmdwaW9fc3Rh dGVfZGlyID0gMTsKK8KgwqDCoCByZXR1cm4gMDsKK30KKworLyogZ3Bpb19jaGlwIGhhbmRsZXIg OiBzZXQgR1BJTyB0byBvdXRwdXQgKi8KK3N0YXRpYyBpbnQgYXRoMTBrX2dwaW9fcGluX2NmZ19v dXRwdXQoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgCm9mZnNldCwKK8KgwqDCoCDC oMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqDCoCBpbnQgdmFsdWUpCit7CivCoMKgwqAgc3RydWN0 IGF0aDEwa19ncGlvY29udHJvbCAqZ3BpbyA9IGNvbnRhaW5lcl9vZihjaGlwLCBzdHJ1Y3QgCmF0 aDEwa19ncGlvY29udHJvbCwgZ2NoaXApOworCivCoMKgwqAgYXRoMTBrX3dtaV9ncGlvX2NvbmZp ZyhncGlvLT5hciwgb2Zmc2V0LCAwLCBXTUlfR1BJT19QVUxMX05PTkUsIApXTUlfR1BJT19JTlRU WVBFX0RJU0FCTEUpOyAvLyBjb25maWd1cmUgdG8gb3V0cHV0CivCoMKgwqAgYXRoMTBrX3dtaV9n cGlvX291dHB1dChncGlvLT5hciwgb2Zmc2V0LCB2YWx1ZSk7CivCoMKgwqAgZ3Bpby0+Z3Bpb19z dGF0ZV9kaXIgPSAwOworwqDCoMKgIGdwaW8tPmdwaW9fc3RhdGVfcGluID0gdmFsdWU7CivCoMKg wqAgcmV0dXJuIDA7Cit9CisKKy8qIGdwaW9fY2hpcCBoYW5kbGVyIDogcXVlcnkgR1BJTyBkaXJl Y3Rpb24gKDA9b3V0LCAxPWluKSAqLworc3RhdGljIGludCBhdGgxMGtfZ3Bpb19waW5fZ2V0X2Rp cihzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCAKb2Zmc2V0KQoreworwqDCoMKgIHN0 cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wgKmdwaW8gPSBjb250YWluZXJfb2YoY2hpcCwgc3RydWN0 IAphdGgxMGtfZ3Bpb2NvbnRyb2wsIGdjaGlwKTsKKworwqDCoMKgIHJldHVybiBncGlvLT5ncGlv X3N0YXRlX2RpcjsKK30KKworLyogZ3Bpb19jaGlwIGhhbmRsZXIgOiBnZXQgR1BJTyBwaW4gdmFs dWUgKi8KK3N0YXRpYyBpbnQgYXRoMTBrX2dwaW9fcGluX2dldChzdHJ1Y3QgZ3Bpb19jaGlwICpj aGlwLCB1bnNpZ25lZCBvZmZzZXQpCit7CivCoMKgwqAgc3RydWN0IGF0aDEwa19ncGlvY29udHJv bCAqZ3BpbyA9IGNvbnRhaW5lcl9vZihjaGlwLCBzdHJ1Y3QgCmF0aDEwa19ncGlvY29udHJvbCwg Z2NoaXApOworCivCoMKgwqAgcmV0dXJuIGdwaW8tPmdwaW9fc3RhdGVfcGluOworfQorCisvKiBn cGlvX2NoaXAgaGFuZGxlciA6IHNldCBHUElPIHBpbiB0byB2YWx1ZSAqLworc3RhdGljIHZvaWQg YXRoMTBrX2dwaW9fcGluX3NldChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBvZmZz ZXQsCivCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqDCoMKgwqAgaW50IHZhbHVlKQoreworwqDC oMKgIHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wgKmdwaW8gPSBjb250YWluZXJfb2YoY2hpcCwg c3RydWN0IAphdGgxMGtfZ3Bpb2NvbnRyb2wsIGdjaGlwKTsKKworwqDCoMKgIGF0aDEwa193bWlf Z3Bpb19vdXRwdXQoZ3Bpby0+YXIsIG9mZnNldCwgdmFsdWUpOworwqDCoMKgIGdwaW8tPmdwaW9f c3RhdGVfcGluID0gdmFsdWU7Cit9CisKKy8qIHJlZ2lzdGVyIEdQSU8gY2hpcCAqLworc3RhdGlj IGludCBhdGgxMGtfcmVnaXN0ZXJfZ3Bpb19jaGlwKHN0cnVjdCBhdGgxMGsgKmFyKQoreworwqDC oMKgIHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wgKmdwaW87CivCoMKgwqAgZ3BpbyA9IGt6YWxs b2Moc2l6ZW9mKHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wpLCBHRlBfS0VSTkVMKTsKK8KgwqDC oCBpZiAoIWdwaW8pIHsKK8KgwqDCoCDCoMKgwqAgcmV0dXJuIC0xOworwqDCoMKgIH0KKworwqDC oMKgIHNucHJpbnRmKGdwaW8tPmxhYmVsLCBzaXplb2YoZ3Bpby0+bGFiZWwpLCAiYXRoMTBrLSVz IiwKK8KgwqDCoCDCoMKgwqAgwqB3aXBoeV9uYW1lKGFyLT5ody0+d2lwaHkpKTsKKyNpZiBMSU5V WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCw1LDApCivCoMKgwqAgZ3Bpby0+Z2No aXAucGFyZW50ID0gYXItPmRldjsKKyNlbHNlCivCoMKgwqAgZ3Bpby0+Z2NoaXAuZGV2ID0gYXIt PmRldjsKKyNlbmRpZgorwqDCoMKgIGdwaW8tPmdjaGlwLmJhc2UgPSAtMTvCoMKgwqAgLyogZGV0 ZXJtaW5lIGJhc2UgYXV0b21hdGljYWxseSAqLworwqDCoMKgIGdwaW8tPmdjaGlwLm5ncGlvID0g MzI7CivCoMKgwqAgZ3Bpby0+Z2NoaXAubGFiZWwgPSBncGlvLT5sYWJlbDsKK8KgwqDCoCBncGlv LT5nY2hpcC5kaXJlY3Rpb25faW5wdXQgPSBhdGgxMGtfZ3Bpb19waW5fY2ZnX2lucHV0OworwqDC oMKgIGdwaW8tPmdjaGlwLmRpcmVjdGlvbl9vdXRwdXQgPSBhdGgxMGtfZ3Bpb19waW5fY2ZnX291 dHB1dDsKK8KgwqDCoCBncGlvLT5nY2hpcC5nZXRfZGlyZWN0aW9uID0gYXRoMTBrX2dwaW9fcGlu X2dldF9kaXI7CivCoMKgwqAgZ3Bpby0+Z2NoaXAuZ2V0ID0gYXRoMTBrX2dwaW9fcGluX2dldDsK K8KgwqDCoCBncGlvLT5nY2hpcC5zZXQgPSBhdGgxMGtfZ3Bpb19waW5fc2V0OworCivCoMKgwqAg aWYgKGdwaW9jaGlwX2FkZCgmZ3Bpby0+Z2NoaXApKSB7CivCoMKgwqAgwqDCoMKgIHByaW50ayhL RVJOX0VSUiAiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgZ3BpbyBjaGlwXG4iKTsKK8KgwqDCoCDC oMKgwqAgcmV0dXJuIC0xOworwqDCoMKgIH0KK8KgwqDCoCBncGlvLT5nY2hpcC5vd25lciA9IE5V TEw7CivCoMKgwqAgYXItPmdwaW8gPSBncGlvOworwqDCoMKgIGdwaW8tPmFyID0gYXI7CivCoMKg wqAgcmV0dXJuIDA7Cit9CisKKy8qIHJlbW92ZSBHUElPIGNoaXAgKi8KK3N0YXRpYyB2b2lkIGF0 aDEwa191bnJlZ2lzdGVyX2dwaW9fY2hpcChzdHJ1Y3QgYXRoMTBrICphcikKK3sKK8KgwqDCoCBz dHJ1Y3QgYXRoMTBrX2dwaW9jb250cm9sICpncGlvID0gYXItPmdwaW87CivCoMKgwqAgaWYgKGdw aW8pCivCoMKgwqAgwqDCoMKgIGdwaW9jaGlwX3JlbW92ZSgmZ3Bpby0+Z2NoaXApOworfQorCitz dGF0aWMgdm9pZCBhdGgxMGtfbGVkX2JyaWdodG5lc3Moc3RydWN0IGxlZF9jbGFzc2RldiAqbGVk X2NkZXYsCivCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqDCoMKgwqAgZW51bSBsZWRfYnJpZ2h0 bmVzcyBicmlnaHRuZXNzKQoreworwqDCoMKgIHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wgKmdw aW8gPSBjb250YWluZXJfb2YobGVkX2NkZXYsIHN0cnVjdCAKYXRoMTBrX2dwaW9jb250cm9sLCBj ZGV2KTsKK8KgwqDCoCBzdHJ1Y3QgZ3Bpb19sZWQgKmxlZCA9ICZncGlvLT53aWZpX2xlZDsKK8Kg wqDCoCBpZiAoZ3Bpby0+YXItPnN0YXRlID09IEFUSDEwS19TVEFURV9PTikgeworwqDCoMKgIMKg wqDCoCBncGlvLT5ncGlvX3N0YXRlX3BpbiA9IChicmlnaHRuZXNzICE9IExFRF9PRkYpIF4gbGVk LT5hY3RpdmVfbG93OworwqDCoMKgIMKgwqDCoCBhdGgxMGtfd21pX2dwaW9fb3V0cHV0KGdwaW8t PmFyLCBsZWQtPmdwaW8sIGdwaW8tPmdwaW9fc3RhdGVfcGluKTsKK8KgwqDCoCB9Cit9CisKK3N0 YXRpYyBpbnQgYXRoMTBrX2FkZF9sZWQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBncGlvX2xl ZCAqZ3Bpb2xlZCkKK3sKK8KgwqDCoCBpbnQgcmV0OworwqDCoMKgIHN0cnVjdCBhdGgxMGtfZ3Bp b2NvbnRyb2wgKmdwaW8gPSBhci0+Z3BpbzsKK8KgwqDCoCBpZiAoIWdwaW8pCivCoMKgwqAgwqDC oMKgIHJldHVybiAtMTsKK8KgwqDCoCBncGlvLT5jZGV2Lm5hbWUgPSBncGlvbGVkLT5uYW1lOwor wqDCoMKgIGdwaW8tPmNkZXYuZGVmYXVsdF90cmlnZ2VyID0gZ3Bpb2xlZC0+ZGVmYXVsdF90cmln Z2VyOworwqDCoMKgIGdwaW8tPmNkZXYuYnJpZ2h0bmVzc19zZXQgPSBhdGgxMGtfbGVkX2JyaWdo dG5lc3M7CisKK8KgwqDCoCByZXQgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXIod2lwaHlfZGV2KGFy LT5ody0+d2lwaHkpLCAmZ3Bpby0+Y2Rldik7CivCoMKgwqAgaWYgKHJldCA8IDApCivCoMKgwqAg wqDCoMKgIHJldHVybiByZXQ7CisKK8KgwqDCoCBhdGgxMGtfd21pX2dwaW9fY29uZmlnKGFyLCBn cGlvbGVkLT5ncGlvLCAwLCBXTUlfR1BJT19QVUxMX05PTkUsIApXTUlfR1BJT19JTlRUWVBFX0RJ U0FCTEUpOyAvLyBjb25maWd1cmUgdG8gb3V0cHV0CisKK8KgwqDCoCAvKiBTZXQgZGVmYXVsdCBM RUQgc3RhdGUgKi8KK8KgwqDCoCBpZiAoZ3Bpb2xlZC0+ZGVmYXVsdF9zdGF0ZSA9PSBMRURTX0dQ SU9fREVGU1RBVEVfT04pCivCoMKgwqAgwqDCoMKgIGF0aDEwa193bWlfZ3Bpb19vdXRwdXQoYXIs IGdwaW9sZWQtPmdwaW8sICFncGlvbGVkLT5hY3RpdmVfbG93KTsKK8KgwqDCoCBlbHNlCivCoMKg wqAgwqDCoMKgIGF0aDEwa193bWlfZ3Bpb19vdXRwdXQoYXIsIGdwaW9sZWQtPmdwaW8sIGdwaW9s ZWQtPmFjdGl2ZV9sb3cpOworCivCoMKgwqAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGF0 aDEwa191bnJlZ2lzdGVyX2xlZChzdHJ1Y3QgYXRoMTBrICphcikKK3sKK8KgwqDCoCBpZiAoYXIt PmdwaW8pCivCoMKgwqAgwqDCoMKgIGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZhci0+Z3Bpby0+ Y2Rldik7Cit9CisKIMKgaW50IGF0aDEwa19jb3JlX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyLCBl bnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIG1vZGUsCiDCoMKgwqDCoCDCoMKgwqAgwqDCoMKgwqDC oCBjb25zdCBzdHJ1Y3QgYXRoMTBrX2Z3X2NvbXBvbmVudHMgKmZ3KQogwqB7CiDCoMKgwqDCoCBp bnQgc3RhdHVzOwogwqDCoMKgwqAgdTMyIHZhbDsKLQogwqDCoMKgwqAgbG9ja2RlcF9hc3NlcnRf aGVsZCgmYXItPmNvbmZfbXV0ZXgpOwoKIMKgwqDCoMKgIGNsZWFyX2JpdChBVEgxMEtfRkxBR19D UkFTSF9GTFVTSCwgJmFyLT5kZXZfZmxhZ3MpOwpAQCAtMjM3Miw4ICsyNTEzLDI4IEBAIGludCBh dGgxMGtfY29yZV9zdGFydChzdHJ1Y3QgYXRoMTBrICphciwgZW51bSAKYXRoMTBrX2Zpcm13YXJl X21vZGUgbW9kZSwKIMKgwqDCoMKgIGlmIChzdGF0dXMpCiDCoMKgwqDCoCDCoMKgwqAgZ290byBl cnJfaGlmX3N0b3A7CgotwqDCoMKgIHJldHVybiAwOworLyogTEVEIENvZGUgKi8KK8KgwqDCoCBp ZiAoYXItPmh3X3BhcmFtcy5sZWRfcGluKSB7IC8vIG9ubHkgY29uZmlndXJlIGlmIG5vbiB6ZXJv CivCoMKgwqAgwqDCoMKgIGlmICghYXItPmdwaW9fYXR0YWNoZWQpIHsKK8KgwqDCoCDCoMKgwqAg wqDCoMKgIHN0YXR1cyA9IGF0aDEwa19yZWdpc3Rlcl9ncGlvX2NoaXAoYXIpOworwqDCoMKgIMKg wqDCoCDCoMKgwqAgaWYgKHN0YXR1cykgeworwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIGdv dG8gZXJyX25vX2xlZDsKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIH0KK8KgwqDCoCDCoMKgwqAgwqDC oMKgIGFyLT5ncGlvX2F0dGFjaGVkID0gMTsKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIGFyLT5ncGlv LT53aWZpX2xlZC5hY3RpdmVfbG93ID0gMTsKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIGFyLT5ncGlv LT53aWZpX2xlZC5ncGlvID0gYXItPmh3X3BhcmFtcy5sZWRfcGluOworwqDCoMKgIMKgwqDCoCDC oMKgwqAgYXItPmdwaW8tPndpZmlfbGVkLm5hbWUgPSBhci0+Z3Bpby0+bGFiZWw7CivCoMKgwqAg wqDCoMKgIMKgwqDCoCBhci0+Z3Bpby0+d2lmaV9sZWQuZGVmYXVsdF9zdGF0ZSA9IExFRFNfR1BJ T19ERUZTVEFURV9LRUVQOworCivCoMKgwqAgwqDCoMKgIMKgwqDCoCBhdGgxMGtfYWRkX2xlZChh ciwgJmFyLT5ncGlvLT53aWZpX2xlZCk7CivCoMKgwqAgwqDCoMKgIH0KK8KgwqDCoCDCoMKgwqAg YXRoMTBrX3dtaV9ncGlvX2NvbmZpZyhhciwgYXItPmh3X3BhcmFtcy5sZWRfcGluLCAwLCAKV01J X0dQSU9fUFVMTF9OT05FLCBXTUlfR1BJT19JTlRUWVBFX0RJU0FCTEUpOyAvLyBjb25maWd1cmUg dG8gb3V0cHV0CivCoMKgwqAgwqDCoMKgIGF0aDEwa193bWlfZ3Bpb19vdXRwdXQoYXIsIGFyLT5o d19wYXJhbXMubGVkX3BpbiwgMSk7CivCoMKgwqAgfQoKK2Vycl9ub19sZWQ6OworCivCoMKgwqAg cmV0dXJuIDA7CiDCoGVycl9oaWZfc3RvcDoKIMKgwqDCoMKgIGF0aDEwa19oaWZfc3RvcChhcik7 CiDCoGVycl9odHRfcnhfZGV0YWNoOgpAQCAtMjY3Myw2ICsyODM0LDkgQEAgdm9pZCBhdGgxMGtf Y29yZV91bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKQogwqDCoMKgwqAgYXRoMTBrX2NvcmVf ZnJlZV9ib2FyZF9maWxlcyhhcik7CgogwqDCoMKgwqAgYXRoMTBrX2RlYnVnX3VucmVnaXN0ZXIo YXIpOworCivCoMKgwqAgYXRoMTBrX3VucmVnaXN0ZXJfbGVkKGFyKTsKK8KgwqDCoCBhdGgxMGtf dW5yZWdpc3Rlcl9ncGlvX2NoaXAoYXIpOwogwqB9CiDCoEVYUE9SVF9TWU1CT0woYXRoMTBrX2Nv cmVfdW5yZWdpc3Rlcik7CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDEway9jb3JlLmggCmIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgKaW5k ZXggYzYyNGI5NmY4Yjg0Li5jMjg5ZGViMDljZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGgxMGsvY29yZS5oCkBAIC0yNSw2ICsyNSw4IEBACiDCoCNpbmNsdWRlIDxsaW51eC9wY2kuaD4K IMKgI2luY2x1ZGUgPGxpbnV4L3V1aWQuaD4KIMKgI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKyNp bmNsdWRlIDxsaW51eC9ncGlvLmg+CisjaW5jbHVkZSA8bGludXgvbGVkcy5oPgoKIMKgI2luY2x1 ZGUgImh0dC5oIgogwqAjaW5jbHVkZSAiaHRjLmgiCkBAIC04MTIsNiArODE0LDE3IEBAIHN0cnVj dCBhdGgxMGtfcGVyX3BlZXJfdHhfc3RhdHMgewogwqDCoMKgwqAgdTMywqDCoMKgIHJlc2VydmVk MjsKIMKgfTsKCitzdHJ1Y3QgYXRoMTBrX2dwaW9jb250cm9sIHsKK8KgwqDCoCBzdHJ1Y3QgYXRo MTBrICphcjsKK8KgwqDCoCB1MzIgZ3Bpb19zZXRfbnVtLCBncGlvX251bSwgZ3Bpb19pbnB1dCwg Z3Bpb19wdWxsX3R5cGUsIApncGlvX2ludHJfbW9kZSwgZ3Bpb19zZXQ7IC8qIHNpbmNlIHdlIGhh dmUgbm8gZ3BpbyByZWFkIG1ldGhvZCwgdGhlc2UgCmFyZSB0aGUgc3RhdGUgdmFyaWFibGVzIGZv ciBkZWJ1Z2ZzLsKgICovCivCoMKgwqAgc3RydWN0IGdwaW9fbGVkIHdpZmlfbGVkOworwqDCoMKg IHN0cnVjdCBncGlvX2NoaXAgZ2NoaXA7CivCoMKgwqAgc3RydWN0IGxlZF9jbGFzc2RldiBjZGV2 OworwqDCoMKgIGNoYXIgbGFiZWxbNDhdOworwqDCoMKgIHUzMiBncGlvX3N0YXRlX2RpcjsgLyog c2FtZSBhcyBmb3IgZGVidWdmcywgYnV0IGZvciBncGlvY2hpcCAKaW1wbGVtZW50YXRpb24gKi8K K8KgwqDCoCB1MzIgZ3Bpb19zdGF0ZV9waW47Cit9OworCiDCoHN0cnVjdCBhdGgxMGsgewogwqDC oMKgwqAgc3RydWN0IGF0aF9jb21tb24gYXRoX2NvbW1vbjsKIMKgwqDCoMKgIHN0cnVjdCBpZWVl ODAyMTFfaHcgKmh3OwpAQCAtODQwLDYgKzg1Myw4IEBAIHN0cnVjdCBhdGgxMGsgewogwqDCoMKg wqAgdTMyIGxvd181Z2h6X2NoYW47CiDCoMKgwqDCoCB1MzIgaGlnaF81Z2h6X2NoYW47CiDCoMKg wqDCoCBib29sIGFuaV9lbmFibGVkOworwqDCoMKgIHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wg KmdwaW87CivCoMKgwqAgaW50IGdwaW9fYXR0YWNoZWQ7CgogwqDCoMKgwqAgYm9vbCBwMnA7Cgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIApiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYwppbmRleCAxYjljMDkyZDIxMGYu LjYyNTNhY2VjN2VlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEw ay9kZWJ1Zy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYwpA QCAtMTA4NCw2ICsxMDg0LDEyMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfd3JpdGVfZndfZGJn bG9nKHN0cnVjdCAKZmlsZSAqZmlsZSwKIMKgwqDCoMKgIHJldHVybiByZXQ7CiDCoH0KCisKK3N0 YXRpYyBzc2l6ZV90IGF0aDEwa19yZWFkX2dwaW9fY29uZmlnKHN0cnVjdCBmaWxlICpmaWxlLCBj aGFyIF9fdXNlciAKKnVzZXJfYnVmLAorwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDC oMKgwqAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCit7CivCoMKgwqAgc3RydWN0IGF0aDEw ayAqYXIgPSBmaWxlLT5wcml2YXRlX2RhdGE7CivCoMKgwqAgc3RydWN0IGF0aDEwa19ncGlvY29u dHJvbCAqZ3BpbyA9IGFyLT5ncGlvOworwqDCoMKgIHNpemVfdCBsZW47CivCoMKgwqAgY2hhciBi dWZbOTZdOworCivCoMKgwqAgbGVuID0gc2NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIldSAl dSAldSAldVxuIiwgZ3Bpby0+Z3Bpb19udW0sIApncGlvLT5ncGlvX2lucHV0LCBncGlvLT5ncGlv X3B1bGxfdHlwZSwgZ3Bpby0+Z3Bpb19pbnRyX21vZGUpOworCivCoMKgwqAgcmV0dXJuIHNpbXBs ZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOworfQor CisKK3N0YXRpYyBzc2l6ZV90IGF0aDEwa193cml0ZV9ncGlvX2NvbmZpZyhzdHJ1Y3QgZmlsZSAq ZmlsZSwKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqDCoMKgIGNvbnN0IGNoYXIg X191c2VyICp1c2VyX2J1ZiwKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqDCoMKg IHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworwqDCoMKgIHN0cnVjdCBhdGgxMGsgKmFy ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworwqDCoMKgIHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wg KmdwaW8gPSBhci0+Z3BpbzsKK8KgwqDCoCBpbnQgcmV0OworwqDCoMKgIGNoYXIgYnVmWzk2XTsK K8KgwqDCoCB1MzIgZ3Bpb19udW0sIGlucHV0LCBwdWxsX3R5cGUsIGludHJfbW9kZTsKKworwqDC oMKgIHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVz ZXJfYnVmLCBjb3VudCk7CisKK8KgwqDCoCAvKiBtYWtlIHN1cmUgdGhhdCBidWYgaXMgbnVsbCB0 ZXJtaW5hdGVkICovCivCoMKgwqAgYnVmW3NpemVvZihidWYpIC0gMV0gPSAwOworCivCoMKgwqAg Z3Bpby0+Z3Bpb19udW0gPSBncGlvX251bTsKK8KgwqDCoCBncGlvLT5ncGlvX2lucHV0ID0gaW5w dXQ7CivCoMKgwqAgZ3Bpby0+Z3Bpb19wdWxsX3R5cGUgPSBwdWxsX3R5cGU7CivCoMKgwqAgZ3Bp by0+Z3Bpb19pbnRyX21vZGUgPSBpbnRyX21vZGU7CivCoMKgwqAgcmV0ID0gc3NjYW5mKGJ1Ziwg IiV1ICV1ICV1ICV1IiwgJmdwaW9fbnVtLCAmaW5wdXQsICZwdWxsX3R5cGUsIAomaW50cl9tb2Rl KTsKKworwqDCoMKgIGlmICghcmV0KQorwqDCoMKgIMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKKwor CivCoMKgwqAgbXV0ZXhfbG9jaygmYXItPmNvbmZfbXV0ZXgpOworCisKK8KgwqDCoCByZXQgPSBh dGgxMGtfd21pX2dwaW9fY29uZmlnKGFyLCBncGlvX251bSwgaW5wdXQsIHB1bGxfdHlwZSwgCmlu dHJfbW9kZSk7CisKK8KgwqDCoCBpZiAocmV0KSB7CivCoMKgwqAgwqDCoMKgIGF0aDEwa193YXJu KGFyLCAiZ3Bpb19jb25maWcgY2ZnIGZhaWxlZCBmcm9tIGRlYnVnZnM6ICVkXG4iLCByZXQpOwor wqDCoMKgIMKgwqDCoCBnb3RvIGV4aXQ7CivCoMKgwqAgfQorwqDCoMKgIHJldCA9IGNvdW50Owor CitleGl0OgorwqDCoMKgIG11dGV4X3VubG9jaygmYXItPmNvbmZfbXV0ZXgpOworCivCoMKgwqAg cmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3QgYXRoMTBrX3JlYWRfZ3Bpb19vdXRwdXQo c3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyIAoqdXNlcl9idWYsCivCoMKgwqAgwqDCoMKg IMKgwqDCoCDCoMKgwqAgwqDCoMKgwqDCoCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKK3sK K8KgwqDCoCBzdHJ1Y3QgYXRoMTBrICphciA9IGZpbGUtPnByaXZhdGVfZGF0YTsKK8KgwqDCoCBz dHJ1Y3QgYXRoMTBrX2dwaW9jb250cm9sICpncGlvID0gYXItPmdwaW87CisKK8KgwqDCoCBzaXpl X3QgbGVuOworwqDCoMKgIGNoYXIgYnVmWzk2XTsKKworwqDCoMKgIGxlbiA9IHNjbnByaW50Zihi dWYsIHNpemVvZihidWYpLCAiJXUgJXVcbiIsIGdwaW8tPmdwaW9fbnVtLCAKZ3Bpby0+Z3Bpb19z ZXQpOworCivCoMKgwqAgcmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBj b3VudCwgcHBvcywgYnVmLCBsZW4pOworfQorCisKK3N0YXRpYyBzc2l6ZV90IGF0aDEwa193cml0 ZV9ncGlvX291dHB1dChzdHJ1Y3QgZmlsZSAqZmlsZSwKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIMKg wqDCoCDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZiwKK8KgwqDCoCDCoMKg wqAgwqDCoMKgIMKgwqDCoCDCoMKgwqDCoMKgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQor eworwqDCoMKgIHN0cnVjdCBhdGgxMGsgKmFyID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworwqDCoMKg IHN0cnVjdCBhdGgxMGtfZ3Bpb2NvbnRyb2wgKmdwaW8gPSBhci0+Z3BpbzsKKworwqDCoMKgIGlu dCByZXQ7CivCoMKgwqAgY2hhciBidWZbOTZdOworwqDCoMKgIHUzMiBncGlvX251bSwgc2V0Owor CivCoMKgwqAgc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBv cywgdXNlcl9idWYsIGNvdW50KTsKKworwqDCoMKgIC8qIG1ha2Ugc3VyZSB0aGF0IGJ1ZiBpcyBu dWxsIHRlcm1pbmF0ZWQgKi8KK8KgwqDCoCBidWZbc2l6ZW9mKGJ1ZikgLSAxXSA9IDA7CisKK8Kg wqDCoCBncGlvLT5ncGlvX3NldF9udW0gPSBncGlvX251bTsKK8KgwqDCoCBncGlvLT5ncGlvX3Nl dCA9IHNldDsKK8KgwqDCoCByZXQgPSBzc2NhbmYoYnVmLCAiJXUgJXUiLCAmZ3Bpb19udW0sICZz ZXQpOworCivCoMKgwqAgaWYgKCFyZXQpCivCoMKgwqAgwqDCoMKgIHJldHVybiAtRUlOVkFMOwor CisKK8KgwqDCoCBtdXRleF9sb2NrKCZhci0+Y29uZl9tdXRleCk7CisKKworwqDCoMKgIHJldCA9 IGF0aDEwa193bWlfZ3Bpb19vdXRwdXQoYXIsIGdwaW9fbnVtLCBzZXQpOworCivCoMKgwqAgaWYg KHJldCkgeworwqDCoMKgIMKgwqDCoCBhdGgxMGtfd2FybihhciwgImdwaW9fb3V0cHV0IGNmZyBm YWlsZWQgZnJvbSBkZWJ1Z2ZzOiAlZFxuIiwgcmV0KTsKK8KgwqDCoCDCoMKgwqAgZ290byBleGl0 OworwqDCoMKgIH0KK8KgwqDCoCByZXQgPSBjb3VudDsKKworZXhpdDoKK8KgwqDCoCBtdXRleF91 bmxvY2soJmFyLT5jb25mX211dGV4KTsKKworwqDCoMKgIHJldHVybiByZXQ7Cit9CisKKworCisK IMKgLyogVE9ETzrCoCBXb3VsZCBiZSBuaWNlIHRvIGFsd2F5cyBzdXBwb3J0IGV0aHRvb2wgc3Rh dHMsIHdvdWxkIG5lZWQgdG8KIMKgICogbW92ZSB0aGUgc3RhdHMgc3RvcmFnZSBvdXQgb2YgYXRo MTBrX2RlYnVnLCBvciBhbHdheXMgaGF2ZSAKYXRoMTBrX2RlYnVnCiDCoCAqIHN0cnVjdCBhdmFp bGFibGUuLgpAQCAtMTI1Miw2ICsxMzY4LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIApmb3BzX2Z3X2RiZ2xvZyA9IHsKIMKgwqDCoMKgIC5sbHNlZWsgPSBkZWZhdWx0 X2xsc2VlaywKIMKgfTsKCisKKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg Zm9wc19ncGlvX291dHB1dCA9IHsKK8KgwqDCoCAucmVhZCA9IGF0aDEwa19yZWFkX2dwaW9fb3V0 cHV0LAorwqDCoMKgIC53cml0ZSA9IGF0aDEwa193cml0ZV9ncGlvX291dHB1dCwKK8KgwqDCoCAu b3BlbiA9IHNpbXBsZV9vcGVuLAorwqDCoMKgIC5vd25lciA9IFRISVNfTU9EVUxFLAorwqDCoMKg IC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlaywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIGZvcHNfZ3Bpb19jb25maWcgPSB7CivCoMKgwqAgLnJlYWQgPSBhdGgxMGtf cmVhZF9ncGlvX2NvbmZpZywKK8KgwqDCoCAud3JpdGUgPSBhdGgxMGtfd3JpdGVfZ3Bpb19jb25m aWcsCivCoMKgwqAgLm9wZW4gPSBzaW1wbGVfb3BlbiwKK8KgwqDCoCAub3duZXIgPSBUSElTX01P RFVMRSwKK8KgwqDCoCAubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCit9OworCiDCoHN0YXRpYyBp bnQgYXRoMTBrX2RlYnVnX2NhbF9kYXRhX2ZldGNoKHN0cnVjdCBhdGgxMGsgKmFyKQogwqB7CiDC oMKgwqDCoCB1MzIgaGlfYWRkcjsKQEAgLTIyNTksNiArMjM5MywxMiBAQCBpbnQgYXRoMTBrX2Rl YnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKQogwqDCoMKgwqAgZGVidWdmc19jcmVhdGVf ZmlsZSgiZndfZGJnbG9nIiwgMDYwMCwgYXItPmRlYnVnLmRlYnVnZnNfcGh5LCBhciwKIMKgwqDC oMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgICZmb3BzX2Z3X2RiZ2xvZyk7CgorwqDCoMKgIGRlYnVn ZnNfY3JlYXRlX2ZpbGUoImdwaW9fb3V0cHV0IiwgMDYwMCwgYXItPmRlYnVnLmRlYnVnZnNfcGh5 LCBhciwKK8KgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCAmZm9wc19ncGlvX291dHB1dCk7CisK K8KgwqDCoCBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJncGlvX2NvbmZpZyIsIDA2MDAsIGFyLT5kZWJ1 Zy5kZWJ1Z2ZzX3BoeSwgYXIsCivCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgJmZvcHNfZ3Bp b19jb25maWcpOworCiDCoMKgwqDCoCBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJjYWxfZGF0YSIsIDA0 MDAsIGFyLT5kZWJ1Zy5kZWJ1Z2ZzX3BoeSwgYXIsCiDCoMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKg wqDCoCAmZm9wc19jYWxfZGF0YSk7CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDEway9ody5oIApiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHcuaApp bmRleCA0MTNiMWI0MzIxZjcuLjdiNzQzZjNiMjA1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDEway9ody5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGgxMGsvaHcuaApAQCAtNDk1LDYgKzQ5NSw3IEBAIHN0cnVjdCBhdGgxMGtfaHdfcGFyYW1zIHsK IMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWU7CiDCoMKgwqDCoCB1MzIgcGF0Y2hfbG9hZF9hZGRy OwogwqDCoMKgwqAgaW50IHVhcnRfcGluOworwqDCoMKgIGludCBsZWRfcGluOyAvLyAxIGZvciBw ZXJlZ3JpbmUsIDE3IGZvciBiZWVsaW5lciwgNTggZm9yIGlwcTQwMTkKIMKgwqDCoMKgIHUzMiBv dHBfZXhlX3BhcmFtOwoKIMKgwqDCoMKgIC8qIFR5cGUgb2YgaHcgY3ljbGUgY291bnRlciB3cmFw YXJvdW5kIGxvZ2ljLCBmb3IgbW9yZSBpbmZvCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaCAKYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo MTBrL3dtaS1vcHMuaAppbmRleCAxNDA5M2NmZGM1MDUuLmEzOGQ2YThmN2VjNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgKQEAgLTE5Nyw4ICsxOTcsMTMgQEAg c3RydWN0IHdtaV9vcHMgewogwqDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIChz dHJ1Y3QgYXRoMTBrICphciwKIMKgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDC oGVudW0gd21pX2Jzc19zdXJ2ZXlfcmVxX3R5cGUgdHlwZSk7CiDCoMKgwqDCoCBzdHJ1Y3Qgc2tf YnVmZiAqKCpnZW5fZWNobykoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWx1ZSk7CisKK8KgwqDC oCBzdHJ1Y3Qgc2tfYnVmZiAqKCpnZW5fZ3Bpb19jb25maWcpKHN0cnVjdCBhdGgxMGsgKmFyLCB1 MzIgZ3Bpb19udW0sIAp1MzIgaW5wdXQsIHUzMiBwdWxsX3R5cGUsIHUzMiBpbnRyX21vZGUpOwor CivCoMKgwqAgc3RydWN0IHNrX2J1ZmYgKigqZ2VuX2dwaW9fb3V0cHV0KShzdHJ1Y3QgYXRoMTBr ICphciwgdTMyIGdwaW9fbnVtLCAKdTMyIHNldCk7CiDCoH07CgorCiDCoGludCBhdGgxMGtfd21p X2NtZF9zZW5kKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgCmNt ZF9pZCk7CgogwqBzdGF0aWMgaW5saW5lIGludApAQCAtOTU3LDYgKzk2MiwzNSBAQCBhdGgxMGtf d21pX2ZvcmNlX2Z3X2hhbmcoc3RydWN0IGF0aDEwayAqYXIsCgogwqDCoMKgwqAgcmV0dXJuIGF0 aDEwa193bWlfY21kX3NlbmQoYXIsIHNrYiwgCmFyLT53bWkuY21kLT5mb3JjZV9md19oYW5nX2Nt ZGlkKTsKIMKgfQorc3RhdGljIGlubGluZSBpbnQKK2F0aDEwa193bWlfZ3Bpb19jb25maWcoc3Ry dWN0IGF0aDEwayAqYXIsIHUzMiBncGlvX251bSwgdTMyIGlucHV0LCB1MzIgCnB1bGxfdHlwZSwg dTMyIGludHJfbW9kZSkKK3sKK8KgwqDCoCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCivCoMKgwqAg aWYgKCFhci0+d21pLm9wcy0+Z2VuX2dwaW9fY29uZmlnKQorwqDCoMKgIMKgwqDCoCByZXR1cm4g LUVPUE5PVFNVUFA7CisKK8KgwqDCoCBza2IgPSBhci0+d21pLm9wcy0+Z2VuX2dwaW9fY29uZmln KGFyLCBncGlvX251bSwgaW5wdXQsIHB1bGxfdHlwZSwgCmludHJfbW9kZSk7CivCoMKgwqAgaWYg KElTX0VSUihza2IpKQorwqDCoMKgIMKgwqDCoCByZXR1cm4gUFRSX0VSUihza2IpOworCivCoMKg wqAgcmV0dXJuIGF0aDEwa193bWlfY21kX3NlbmRfbm93YWl0KGFyLCBza2IsIAphci0+d21pLmNt ZC0+Z3Bpb19jb25maWdfY21kaWQpOworfQorCitzdGF0aWMgaW5saW5lIGludAorYXRoMTBrX3dt aV9ncGlvX291dHB1dChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGdwaW9fbnVtLCB1MzIgc2V0KQor eworwqDCoMKgIHN0cnVjdCBza19idWZmICpza2I7CisKK8KgwqDCoCBpZiAoIWFyLT53bWkub3Bz LT5nZW5fZ3Bpb19jb25maWcpCivCoMKgwqAgwqDCoMKgIHJldHVybiAtRU9QTk9UU1VQUDsKKwor wqDCoMKgIHNrYiA9IGFyLT53bWkub3BzLT5nZW5fZ3Bpb19vdXRwdXQoYXIsIGdwaW9fbnVtLCBz ZXQpOworwqDCoMKgIGlmIChJU19FUlIoc2tiKSkKK8KgwqDCoCDCoMKgwqAgcmV0dXJuIFBUUl9F UlIoc2tiKTsKKworwqDCoMKgIHJldHVybiBhdGgxMGtfd21pX2NtZF9zZW5kX25vd2FpdChhciwg c2tiLCAKYXItPndtaS5jbWQtPmdwaW9fb3V0cHV0X2NtZGlkKTsKK30KCiDCoHN0YXRpYyBpbmxp bmUgaW50CiDCoGF0aDEwa193bWlfZGJnbG9nX2NmZyhzdHJ1Y3QgYXRoMTBrICphciwgdTY0IG1v ZHVsZV9lbmFibGUsIHUzMiAKbG9nX2xldmVsKQpAQCAtMTAzNCw3ICsxMDY4LDcgQEAgYXRoMTBr X3dtaV9wZGV2X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgYXRoMTBrICphcikKIMKgwqDCoMKgIGlm IChJU19FUlIoc2tiKSkKIMKgwqDCoMKgIMKgwqDCoCByZXR1cm4gUFRSX0VSUihza2IpOwoKLcKg wqDCoCByZXR1cm4gYXRoMTBrX3dtaV9jbWRfc2VuZChhciwgc2tiLAorwqDCoMKgIHJldHVybiBh dGgxMGtfd21pX2NtZF9zZW5kX25vd2FpdChhciwgc2tiLAphci0+d21pLmNtZC0+cGRldl9nZXRf dGVtcGVyYXR1cmVfY21kaWQpOwogwqB9CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDEway93bWkuYyAKYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dt aS5jCmluZGV4IDU4ZGMyMTg5YmE0OS4uMjM2N2RjYzExYjRmIDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGgxMGsvd21pLmMKQEAgLTY2NDYsNiArNjY0NiwzOCBAQCBhdGgxMGtfd21pX29wX2dl bl9wZWVyX3NldF9wYXJhbShzdHJ1Y3QgYXRoMTBrIAoqYXIsIHUzMiB2ZGV2X2lkLAogwqDCoMKg wqAgcmV0dXJuIHNrYjsKIMKgfQoKK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqCithdGgxMGtfd21p X29wX2dlbl9ncGlvX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGdwaW9fbnVtLCB1MzIg CmlucHV0LCB1MzIgcHVsbF90eXBlLCB1MzIgaW50cl9tb2RlKQoreworwqDCoMKgIHN0cnVjdCB3 bWlfZ3Bpb19jb25maWdfY21kICpjbWQ7CivCoMKgwqAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwor wqDCoMKgIHNrYiA9IGF0aDEwa193bWlfYWxsb2Nfc2tiKGFyLCBzaXplb2YoKmNtZCkpOworwqDC oMKgIGlmICghc2tiKQorwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworwqDCoMKgIGNt ZCA9IChzdHJ1Y3Qgd21pX2dwaW9fY29uZmlnX2NtZCAqKXNrYi0+ZGF0YTsKK8KgwqDCoCBjbWQt PnB1bGxfdHlwZSA9IF9fY3B1X3RvX2xlMzIocHVsbF90eXBlKTsKK8KgwqDCoCBjbWQtPmdwaW9f bnVtID0gX19jcHVfdG9fbGUzMihncGlvX251bSk7CivCoMKgwqAgY21kLT5pbnB1dCA9IF9fY3B1 X3RvX2xlMzIoaW5wdXQpOworwqDCoMKgIGNtZC0+aW50cl9tb2RlID0gX19jcHVfdG9fbGUzMihp bnRyX21vZGUpOworwqDCoMKgIHJldHVybiBza2I7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVm ZiAqCithdGgxMGtfd21pX29wX2dlbl9ncGlvX291dHB1dChzdHJ1Y3QgYXRoMTBrICphciwgdTMy IGdwaW9fbnVtLCB1MzIgc2V0KQoreworwqDCoMKgIHN0cnVjdCB3bWlfZ3Bpb19vdXRwdXRfY21k ICpjbWQ7CivCoMKgwqAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKKworwqDCoMKgIHNrYiA9IGF0aDEw a193bWlfYWxsb2Nfc2tiKGFyLCBzaXplb2YoKmNtZCkpOworwqDCoMKgIGlmICghc2tiKQorwqDC oMKgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworwqDCoMKgIGNtZCA9IChzdHJ1Y3Qgd21pX2dw aW9fb3V0cHV0X2NtZCAqKXNrYi0+ZGF0YTsKK8KgwqDCoCBjbWQtPmdwaW9fbnVtID0gX19jcHVf dG9fbGUzMihncGlvX251bSk7CivCoMKgwqAgY21kLT5zZXQgPSBfX2NwdV90b19sZTMyKHNldCk7 CivCoMKgwqAgcmV0dXJuIHNrYjsKK30KKwogwqBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKgogwqBh dGgxMGtfd21pX29wX2dlbl9zZXRfcHNtb2RlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgdmRldl9p ZCwKIMKgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgwqAgZW51bSB3bWlfc3RhX3BzX21vZGUg cHNtb2RlKQpAQCAtODE1Myw2ICs4MTg1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bWlfb3Bz IHdtaV9vcHMgPSB7CiDCoMKgwqDCoCAuZndfc3RhdHNfZmlsbCA9IGF0aDEwa193bWlfbWFpbl9v cF9md19zdGF0c19maWxsLAogwqDCoMKgwqAgLmdldF92ZGV2X3N1YnR5cGUgPSBhdGgxMGtfd21p X29wX2dldF92ZGV2X3N1YnR5cGUsCiDCoMKgwqDCoCAuZ2VuX2VjaG8gPSBhdGgxMGtfd21pX29w X2dlbl9lY2hvLAorwqDCoMKgIC5nZW5fZ3Bpb19jb25maWcgPSBhdGgxMGtfd21pX29wX2dlbl9n cGlvX2NvbmZpZywKK8KgwqDCoCAuZ2VuX2dwaW9fb3V0cHV0ID0gYXRoMTBrX3dtaV9vcF9nZW5f Z3Bpb19vdXRwdXQsCisKIMKgwqDCoMKgIC8qIC5nZW5fYmNuX3RtcGwgbm90IGltcGxlbWVudGVk ICovCiDCoMKgwqDCoCAvKiAuZ2VuX3ByYl90bXBsIG5vdCBpbXBsZW1lbnRlZCAqLwogwqDCoMKg wqAgLyogLmdlbl9wMnBfZ29fYmNuX2llIG5vdCBpbXBsZW1lbnRlZCAqLwpAQCAtODIyMyw2ICs4 MjU4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bWlfb3BzIHdtaV8xMF8xX29wcyA9IHsKIMKg wqDCoMKgIC5md19zdGF0c19maWxsID0gYXRoMTBrX3dtaV8xMHhfb3BfZndfc3RhdHNfZmlsbCwK IMKgwqDCoMKgIC5nZXRfdmRldl9zdWJ0eXBlID0gYXRoMTBrX3dtaV9vcF9nZXRfdmRldl9zdWJ0 eXBlLAogwqDCoMKgwqAgLmdlbl9lY2hvID0gYXRoMTBrX3dtaV9vcF9nZW5fZWNobywKK8KgwqDC oCAuZ2VuX2dwaW9fY29uZmlnID0gYXRoMTBrX3dtaV9vcF9nZW5fZ3Bpb19jb25maWcsCivCoMKg wqAgLmdlbl9ncGlvX291dHB1dCA9IGF0aDEwa193bWlfb3BfZ2VuX2dwaW9fb3V0cHV0LAogwqDC oMKgwqAgLyogLmdlbl9iY25fdG1wbCBub3QgaW1wbGVtZW50ZWQgKi8KIMKgwqDCoMKgIC8qIC5n ZW5fcHJiX3RtcGwgbm90IGltcGxlbWVudGVkICovCiDCoMKgwqDCoCAvKiAuZ2VuX3AycF9nb19i Y25faWUgbm90IGltcGxlbWVudGVkICovCkBAIC04Mjk0LDYgKzgzMzEsOCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHdtaV9vcHMgd21pXzEwXzJfb3BzID0gewogwqDCoMKgwqAgLmdlbl9kZWxiYV9z ZW5kID0gYXRoMTBrX3dtaV9vcF9nZW5fZGVsYmFfc2VuZCwKIMKgwqDCoMKgIC5md19zdGF0c19m aWxsID0gYXRoMTBrX3dtaV8xMHhfb3BfZndfc3RhdHNfZmlsbCwKIMKgwqDCoMKgIC5nZXRfdmRl dl9zdWJ0eXBlID0gYXRoMTBrX3dtaV9vcF9nZXRfdmRldl9zdWJ0eXBlLAorwqDCoMKgIC5nZW5f Z3Bpb19jb25maWcgPSBhdGgxMGtfd21pX29wX2dlbl9ncGlvX2NvbmZpZywKK8KgwqDCoCAuZ2Vu X2dwaW9fb3V0cHV0ID0gYXRoMTBrX3dtaV9vcF9nZW5fZ3Bpb19vdXRwdXQsCiDCoMKgwqDCoCAv KiAuZ2VuX3BkZXZfZW5hYmxlX2FkYXB0aXZlX2NjYSBub3QgaW1wbGVtZW50ZWQgKi8KIMKgfTsK CkBAIC04MzY0LDYgKzg0MDMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHdtaV9vcHMgd21pXzEw XzJfNF9vcHMgPSB7CiDCoMKgwqDCoCAuZ2VuX3BkZXZfZW5hYmxlX2FkYXB0aXZlX2NjYSA9CiDC oMKgwqDCoCDCoMKgwqAgYXRoMTBrX3dtaV9vcF9nZW5fcGRldl9lbmFibGVfYWRhcHRpdmVfY2Nh LAogwqDCoMKgwqAgLmdldF92ZGV2X3N1YnR5cGUgPSBhdGgxMGtfd21pXzEwXzJfNF9vcF9nZXRf dmRldl9zdWJ0eXBlLAorwqDCoMKgIC5nZW5fZ3Bpb19jb25maWcgPSBhdGgxMGtfd21pX29wX2dl bl9ncGlvX2NvbmZpZywKK8KgwqDCoCAuZ2VuX2dwaW9fb3V0cHV0ID0gYXRoMTBrX3dtaV9vcF9n ZW5fZ3Bpb19vdXRwdXQsCiDCoMKgwqDCoCAvKiAuZ2VuX2Jjbl90bXBsIG5vdCBpbXBsZW1lbnRl ZCAqLwogwqDCoMKgwqAgLyogLmdlbl9wcmJfdG1wbCBub3QgaW1wbGVtZW50ZWQgKi8KIMKgwqDC oMKgIC8qIC5nZW5fcDJwX2dvX2Jjbl9pZSBub3QgaW1wbGVtZW50ZWQgKi8KQEAgLTg0MzksNiAr ODQ4MCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX29wcyB3bWlfMTBfNF9vcHMgPSB7CiDC oMKgwqDCoCAuZ2VuX3BkZXZfYnNzX2NoYW5faW5mb19yZXEgPSAKYXRoMTBrX3dtaV8xMF8yX29w X2dlbl9wZGV2X2Jzc19jaGFuX2luZm8sCiDCoMKgwqDCoCAuZ2VuX2VjaG8gPSBhdGgxMGtfd21p X29wX2dlbl9lY2hvLAogwqDCoMKgwqAgLmdlbl9wZGV2X2dldF90cGNfY29uZmlnID0gCmF0aDEw a193bWlfMTBfMl80X29wX2dlbl9wZGV2X2dldF90cGNfY29uZmlnLAorwqDCoMKgIC5nZW5fZ3Bp b19jb25maWcgPSBhdGgxMGtfd21pX29wX2dlbl9ncGlvX2NvbmZpZywKK8KgwqDCoCAuZ2VuX2dw aW9fb3V0cHV0ID0gYXRoMTBrX3dtaV9vcF9nZW5fZ3Bpb19vdXRwdXQsCiDCoH07CgogwqBpbnQg YXRoMTBrX3dtaV9hdHRhY2goc3RydWN0IGF0aDEwayAqYXIpCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5oIApiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGgxMGsvd21pLmgKaW5kZXggYzdiMzBlZDkwMTVkLi5kYzE4MGE4NmRjM2IgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmgKKysrIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaApAQCAtMjkwNiw2ICsyOTA2LDQyIEBAIGVudW0g d21pXzEwXzRfZmVhdHVyZV9tYXNrIHsKCiDCoH07CgorLyogV01JX0dQSU9fQ09ORklHX0NNRElE ICovCitlbnVtIHsKK8KgwqDCoCBXTUlfR1BJT19QVUxMX05PTkUsCivCoMKgwqAgV01JX0dQSU9f UFVMTF9VUCwKK8KgwqDCoCBXTUlfR1BJT19QVUxMX0RPV04sCit9OworCitlbnVtIHsKK8KgwqDC oCBXTUlfR1BJT19JTlRUWVBFX0RJU0FCTEUsCivCoMKgwqAgV01JX0dQSU9fSU5UVFlQRV9SSVNJ TkdfRURHRSwKK8KgwqDCoCBXTUlfR1BJT19JTlRUWVBFX0ZBTExJTkdfRURHRSwKK8KgwqDCoCBX TUlfR1BJT19JTlRUWVBFX0JPVEhfRURHRSwKK8KgwqDCoCBXTUlfR1BJT19JTlRUWVBFX0xFVkVM X0xPVywKK8KgwqDCoCBXTUlfR1BJT19JTlRUWVBFX0xFVkVMX0hJR0gKK307CisKKy8qIFdNSV9H UElPX0NPTkZJR19DTURJRCAqLworc3RydWN0IHdtaV9ncGlvX2NvbmZpZ19jbWQgeworwqDCoMKg IF9fbGUzMiBncGlvX251bTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogR1BJTyBudW1iZXIg dG8gYmUgc2V0dXAgKi8KK8KgwqDCoCBfX2xlMzIgaW5wdXQ7wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIDAgLSBPdXRwdXQvIDEgLSBJbnB1dCAqLworwqDCoMKgIF9fbGUzMiBwdWxs X3R5cGU7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBQdWxsIHR5cGUgZGVmaW5lZCBhYm92ZSAq LworwqDCoMKgIF9fbGUzMiBpbnRyX21vZGU7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBJbnRl cnJ1cHQgbW9kZSBkZWZpbmVkIGFib3ZlIAooSW5wdXQpICovCit9IF9fcGFja2VkOworCisvKiBX TUlfR1BJT19PVVRQVVRfQ01ESUQgKi8KK3N0cnVjdCB3bWlfZ3Bpb19vdXRwdXRfY21kIHsKK8Kg wqDCoCBfX2xlMzIgZ3Bpb19udW07wqDCoMKgIC8qIEdQSU8gbnVtYmVyIHRvIGJlIHNldHVwICov CivCoMKgwqAgX19sZTMyIHNldDvCoMKgwqDCoMKgwqDCoMKgIC8qIFNldCB0aGUgR1BJTyBwaW4q LworfSBfX3BhY2tlZDsKKworLyogV01JX0dQSU9fSU5QVVRfRVZFTlRJRCAqLworc3RydWN0IHdt aV9ncGlvX2lucHV0X2V2ZW50IHsKK8KgwqDCoCBfX2xlMzIgZ3Bpb19udW07wqDCoMKgIC8qIEdQ SU8gbnVtYmVyIHdoaWNoIGNoYW5nZWQgc3RhdGUgKi8KK30gX19wYWNrZWQ7CisKKwogwqBzdHJ1 Y3Qgd21pX2V4dF9yZXNvdXJjZV9jb25maWdfMTBfNF9jbWQgewogwqDCoMKgwqAgLyogY29udGFp bnMgZW51bSB3bWlfaG9zdF9wbGF0Zm9ybV90eXBlICovCiDCoMKgwqDCoCBfX2xlMzIgaG9zdF9w bGF0Zm9ybV9jb25maWc7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYXRoMTBrIG1haWxpbmcgbGlzdAphdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2F0aDEwawo=