From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-fx0-f225.google.com ([209.85.220.225]:47377 "EHLO mail-fx0-f225.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754211Ab0ARA3E (ORCPT ); Sun, 17 Jan 2010 19:29:04 -0500 Received: by fxm25 with SMTP id 25so16255fxm.21 for ; Sun, 17 Jan 2010 16:29:00 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: From: =?ISO-8859-1?Q?G=E1bor_Stefanik?= Date: Mon, 18 Jan 2010 01:28:40 +0100 Message-ID: <69e28c911001171628s684df11avb3e9f9586e64b69e@mail.gmail.com> Subject: Re: [PATCH 2/5 V2] b43: N-PHY: implement and add multi-dimensional table writing To: =?ISO-8859-2?Q?Rafa=B3_Mi=B3ecki?= Cc: "linux-wireless@vger.kernel.org" , "John W. Linville" , "bcm43xx-dev@lists.berlios.de" Content-Type: text/plain; charset=UTF-8 Sender: linux-wireless-owner@vger.kernel.org List-ID: MjAxMC8xLzE4IFJhZmHFgiBNacWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT46Cj4gU2lnbmVkLW9m Zi1ieTogUmFmYcWCIE1pxYJlY2tpIDx6YWplYzVAZ21haWwuY29tPgo+IC0tLQo+IFYyOiB1cGRh dGVkIHRvIGFwcGx5IHdpdGhvdXQgZnV6egoKQWN0dWFsbHksIHlvdSBkbyBub3QgbmVlZCB0byBk byB0aGF0IC0gb2Zmc2V0IG9yIGZ1enp5IHBhdGNoZXMgd2lsbApzdGlsbCBiZSBhcHBsaWVkIGNs ZWFubHkgQUZBSUssIHdpdGhvdXQgYW55IGludGVydmVudGlvbi4KKEpvaG4sIGNvcnJlY3QgbWUg aWYgSSdtIHdyb25nIGhlcmUuLi4pCgo+IC0tLQo+IMKgZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQz L3BoeV9uLmMgwqAgwqAgwqAgfCDCoCA1OAo+ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tCj4gwqBkcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvdGFibGVzX25waHkuYyB8IMKgIDQwICsr KysrKysrKysrKysrKysrKysrKysKPiDCoGRyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My90YWJsZXNf bnBoeS5oIHwgwqAgwqAyICsKPiDCoDMgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwg MzMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQz L3BoeV9uLmMKPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfbi5jCj4gaW5kZXggMTZm MWY5Yi4uNmIyMDBlNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5 X24uYwo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfbi5jCj4gQEAgLTE2OTks OCArMTY5OSw3IEBAIHN0YXRpYyB2b2lkIGI0M19ucGh5X3Jlc3RvcmVfY2FsKHN0cnVjdCBiNDNf d2xkZXYKPiAqZGV2KQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbG9mdCA9ICZucGh5LT5jYWxf Y2FjaGUudHhjYWxfY29lZmZzXzVHWzVdOwo+IMKgIMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDCoCAv KiBUT0RPOiBXcml0ZSBhbiBOIFBIWSB0YWJsZSB3aXRoIElEIDE1LCBsZW5ndGggNCwgb2Zmc2V0 IDgwLAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgd2lkdGggMTYsIGFuZCBkYXRhIGZyb20gdGFi bGUgKi8KPiArIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGsoZGV2LCBCNDNfTlRBQjE2KDE1 LCA4MCksIDQsIHRhYmxlKTsKPgo+IMKgIMKgIMKgIMKgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykg ewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGRldi0+cGh5LnJldiA+PSAzKQo+IEBAIC0x NzA5LDEyICsxNzA4LDkgQEAgc3RhdGljIHZvaWQgYjQzX25waHlfcmVzdG9yZV9jYWwoc3RydWN0 IGI0M193bGRldgo+ICpkZXYpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBj b2VmW2ldID0gMDsKPiDCoCDCoCDCoCDCoH0KPgo+IC0gwqAgwqAgwqAgLyogVE9ETzogV3JpdGUg YW4gTiBQSFkgdGFibGUgd2l0aCBJRCAxNSwgbGVuZ3RoIDQsIG9mZnNldCA4OCwKPiAtIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHdpZHRoIDE2LCBhbmQgZGF0YSBmcm9tIGNvZWYgKi8KPiAtIMKgIMKg IMKgIC8qIFRPRE86IFdyaXRlIGFuIE4gUEhZIHRhYmxlIHdpdGggSUQgMTUsIGxlbmd0aCAyLCBv ZmZzZXQgODUsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3aWR0aCAxNiBhbmQgZGF0YSBmcm9t IGxvZnQgKi8KPiAtIMKgIMKgIMKgIC8qIFRPRE86IFdyaXRlIGFuIE4gUEhZIHRhYmxlIHdpdGgg SUQgMTUsIGxlbmd0aCAyLCBvZmZzZXQgOTMsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3aWR0 aCAxNiBhbmQgZGF0YSBmcm9tIGxvZnQgKi8KPiArIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1 bGsoZGV2LCBCNDNfTlRBQjE2KDE1LCA4OCksIDQsIGNvZWYpOwo+ICsgwqAgwqAgwqAgYjQzX250 YWJfd3JpdGVfYnVsayhkZXYsIEI0M19OVEFCMTYoMTUsIDg1KSwgMiwgbG9mdCk7Cj4gKyDCoCDC oCDCoCBiNDNfbnRhYl93cml0ZV9idWxrKGRldiwgQjQzX05UQUIxNigxNSwgOTMpLCAyLCBsb2Z0 KTsKPgo+IMKgIMKgIMKgIMKgaWYgKGRldi0+cGh5LnJldiA8IDIpCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBiNDNfbnBoeV90eF9pcV93b3JrYXJvdW5kKGRldik7Cj4gQEAgLTE3ODIsOCArMTc3 OCw4IEBAIHN0YXRpYyBpbnQgYjQzX25waHlfY2FsX3R4X2lxX2xvKHN0cnVjdCBiNDNfd2xkZXYK PiAqZGV2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYjQzX25waHlfaXFfY2FsX2dhaW5fcGFy YW1zKGRldiwgaSwgdGFyZ2V0LCAmcGFyYW1zW2ldKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGdhaW5baV0gPSBwYXJhbXNbaV0uY2FsX2dhaW47Cj4gwqAgwqAgwqAgwqB9Cj4gLSDCoCDCoCDC oCAvKiBUT0RPOiBXcml0ZSBhbiBOIFBIWSBUYWJsZSB3aXRoIElEIDcsIGxlbmd0aCAyLCBvZmZz ZXQgMHgxMTAsCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3aWR0aCAxNiwgYW5kIGRhdGEgcG9p bnRlciBnYWluICovCj4gKwo+ICsgwqAgwqAgwqAgYjQzX250YWJfd3JpdGVfYnVsayhkZXYsIEI0 M19OVEFCMTYoNywgMHgxMTApLCAyLCBnYWluKTsKPgo+IMKgIMKgIMKgIMKgYjQzX25waHlfdHhf Y2FsX3JhZGlvX3NldHVwKGRldik7Cj4gwqAgwqAgwqAgwqBiNDNfbnBoeV90eF9jYWxfcGh5X3Nl dHVwKGRldik7Cj4gQEAgLTE4MzMsOCArMTgyOSw3IEBAIHN0YXRpYyBpbnQgYjQzX25waHlfY2Fs X3R4X2lxX2xvKHN0cnVjdCBiNDNfd2xkZXYKPiAqZGV2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgfQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+Cj4gLSDCoCDCoCDC oCDCoCDCoCDCoCDCoCAvKiBUT0RPOiBXcml0ZSBhbiBOIFBIWSBUYWJsZSB3aXRoIElEIDE1LCBs ZW5ndGggZnJvbSBhYm92ZSwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG9m ZnNldCA2NCwgd2lkdGggMTYsIGFuZCB0aGUgZGF0YSBwb2ludGVyIGZyb20gYWJvdmUKPiAqLwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzX250YWJfd3JpdGVfYnVsayhkZXYsIEI0M19OVEFC MTYoMTUsIDY0KSwgbGVuZ3RoLCB0YWJsZSk7Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlm IChmdWxsKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoZGV2LT5w aHkucmV2ID49IDMpCj4gQEAgLTE5MDIsOSArMTg5Nyw4IEBAIHN0YXRpYyBpbnQgYjQzX25waHlf Y2FsX3R4X2lxX2xvKHN0cnVjdCBiNDNfd2xkZXYKPiAqZGV2LAo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgLyogVE9ETzogUmVhZCBhbiBOIFBIWSBUYWJsZSB3aXRoIElEIDE1 LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbGVuZ3Ro IHRhYmxlX2xlbmd0aCwgb2Zmc2V0IDk2LCB3aWR0aCAxNiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGFuZCBkYXRhIHBvaW50ZXIgYnVmZmVyICovCj4g LSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBUT0RPOiBXcml0ZSBhbiBOIFBI WSBUYWJsZSB3aXRoIElEIDE1LAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgbGVuZ3RoIHRhYmxlX2xlbmd0aCwgb2Zmc2V0IDY0LCB3aWR0aCAxNiwKPiAt IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFuZCBkYXRhIHBv aW50ZXIgYnVmZmVyICovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiNDNf bnRhYl93cml0ZV9idWxrKGRldiwgQjQzX05UQUIxNigxNSwgNjQpLCBsZW5ndGgsCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBidWZmZXIpOwo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBp ZiAodHlwZSA9PSAxIHx8IHR5cGUgPT0gMyB8fCB0eXBlID09IDQpCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBidWZmZXJbMF0gPSBkaXFfc3RhcnQ7Cj4g QEAgLTE5MTYsOCArMTkxMCw3IEBAIHN0YXRpYyBpbnQgYjQzX25waHlfY2FsX3R4X2lxX2xvKHN0 cnVjdCBiNDNfd2xkZXYKPiAqZGV2LAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbGFzdCA9IChk ZXYtPnBoeS5yZXYgPCAzKSA/IDYgOiA3Owo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAo IW1waGFzZSB8fCBucGh5LT5tcGhhc2VfY2FsX3BoYXNlX2lkID09IGxhc3QpIHsKPiAtIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIFRPRE86IFdyaXRlIGFuIE4gUEhZIFRhYmxl IHdpdGggSUQgMTUsIGxlbmd0aCA0LAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgb2Zmc2V0IDk2LCB3aWR0aCAxNiwgYW5kIGRhdGEgcG9pbnRlciBidWZm ZXIKPiAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzX250YWJfd3Jp dGVfYnVsayhkZXYsIEI0M19OVEFCMTYoMTUsIDk2KSwgNCwKPiBidWZmZXIpOwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogVE9ETzogUmVhZCBhbiBOIFBIWSBUYWJsZSB3 aXRoIElEIDE1LCBsZW5ndGggNCwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoG9mZnNldCA4MCwgd2lkdGggMTYsIGFuZCBkYXRhIHBvaW50ZXIgYnVmZmVy Cj4gKi8KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChkZXYtPnBoeS5y ZXYgPCAzKSB7Cj4gQEAgLTE5MjYsMTQgKzE5MTksMTQgQEAgc3RhdGljIGludCBiNDNfbnBoeV9j YWxfdHhfaXFfbG8oc3RydWN0IGI0M193bGRldgo+ICpkZXYsCj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBidWZmZXJbMl0gPSAwOwo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnVmZmVyWzNdID0gMDsKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIC8qIFRPRE86IFdyaXRlIGFuIE4gUEhZIFRhYmxlIHdpdGggSUQgMTUsIGxl bmd0aCA0LAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg b2Zmc2V0IDg4LCB3aWR0aCAxNiwgYW5kIGRhdGEgcG9pbnRlciBidWZmZXIKPiAqLwo+IC0gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogVE9ETzogUmVhZCBhbiBOIFBIWSBUYWJs ZSB3aXRoIElEIDE1LCBsZW5ndGggMiwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIG9mZnNldCAxMDEsIHdpZHRoIDE2LCBhbmQgZGF0YSBwb2ludGVyCj4g YnVmZmVyKi8KPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIFRPRE86IFdy aXRlIGFuIE4gUEhZIFRhYmxlIHdpdGggSUQgMTUsIGxlbmd0aCAyLAo+IC0gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb2Zmc2V0IDg1LCB3aWR0aCAxNiwgYW5k IGRhdGEgcG9pbnRlciBidWZmZXIKPiAqLwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgLyogVE9ETzogV3JpdGUgYW4gTiBQSFkgVGFibGUgd2l0aCBJRCAxNSwgbGVuZ3RoIDIs Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvZmZzZXQg OTMsIHdpZHRoIDE2LCBhbmQgZGF0YSBwb2ludGVyIGJ1ZmZlcgo+ICovCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiNDNfbnRhYl93cml0ZV9idWxrKGRldiwgQjQzX05UQUIx NigxNSwgODgpLCA0LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnVmZmVyKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGsoZGV2LCBCNDNfTlRBQjE2KDE1 LCAxMDEpLCAyLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnVmZmVyKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGsoZGV2LCBCNDNfTlRBQjE2KDE1LCA4 NSksIDIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBidWZmZXIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgYjQzX250YWJfd3JpdGVfYnVsayhkZXYsIEI0M19OVEFCMTYoMTUsIDkzKSwg MiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGJ1ZmZlcik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBsZW5ndGggPSAxMTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGlmIChkZXYtPnBoeS5yZXYgPCAzKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgbGVuZ3RoIC09IDI7Cj4gQEAgLTE5NTcsOCArMTk1MCw3IEBAIHN0YXRp YyBpbnQgYjQzX25waHlfY2FsX3R4X2lxX2xvKHN0cnVjdCBiNDNfd2xkZXYKPiAqZGV2LAo+IMKg IMKgIMKgIMKgfQo+Cj4gwqAgwqAgwqAgwqBiNDNfbnBoeV90eF9jYWxfcGh5X2NsZWFudXAoZGV2 KTsKPiAtIMKgIMKgIMKgIC8qIFRPRE86IFdyaXRlIGFuIE4gUEhZIFRhYmxlIHdpdGggSUQgNywg bGVuZ3RoIDIsIG9mZnNldCAweDExMCwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdpZHRoIDE2 LCBhbmQgZGF0YSBmcm9tIHNhdmUgKi8KPiArIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGso ZGV2LCBCNDNfTlRBQjE2KDcsIDB4MTEwKSwgMiwgc2F2ZSk7Cj4KPiDCoCDCoCDCoCDCoGlmIChk ZXYtPnBoeS5yZXYgPCAyICYmICghbXBoYXNlIHx8IG5waHktPm1waGFzZV9jYWxfcGhhc2VfaWQg PT0KPiBsYXN0KSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGI0M19ucGh5X3R4X2lxX3dvcmth cm91bmQoZGV2KTsKPiBAQCAtMjAwOCw4ICsyMDAwLDcgQEAgc3RhdGljIGludCBiNDNfbnBoeV9y ZXYyX2NhbF9yeF9pcShzdHJ1Y3QgYjQzX3dsZGV2Cj4gKmRldiwKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGI0M19ucGh5X2lxX2NhbF9nYWluX3BhcmFtcyhkZXYsIGksIHRhcmdldCwgJmNhbF9w YXJhbXNbaV0pOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2FsX2dhaW5baV0gPSBjYWxfcGFy YW1zW2ldLmNhbF9nYWluOwo+IMKgIMKgIMKgIMKgfQo+IC0gwqAgwqAgwqAgLyogVE9ETzogV3Jp dGUgYW4gTiBQSFkgVGFibGUgd2l0aCBJRCA3LCBsZW5ndGggMiwgb2Zmc2V0IDB4MTEwLAo+IC0g wqAgwqAgwqAgwqAgwqAgwqAgwqAgd2lkdGggMTYsIGFuZCBkYXRhIGZyb20gY2FsX2dhaW4gKi8K PiArIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGsoZGV2LCBCNDNfTlRBQjE2KDcsIDB4MTEw KSwgMiwgY2FsX2dhaW4pOwo+Cj4gwqAgwqAgwqAgwqBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7 Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoaSA9PSAwKSB7Cj4gQEAgLTIxNDcsOCArMjEz OCw3IEBAIHN0YXRpYyBpbnQgYjQzX25waHlfcmV2Ml9jYWxfcnhfaXEoc3RydWN0IGI0M193bGRl dgo+ICpkZXYsCj4KPiDCoCDCoCDCoCDCoC8qIFRPRE86IENhbGwgTiBQSFkgUkYgQ3RybCBPdmVy cmlkZSB3aXRoIDB4NDAwLCAwLCAzLCAxIGFzCj4gYXJndW1lbnRzKi8KPiDCoCDCoCDCoCDCoGI0 M19ucGh5X2ZvcmNlX3JmX3NlcXVlbmNlKGRldiwgQjQzX1JGU0VRX1JFU0VUMlJYKTsKPiAtIMKg IMKgIMKgIC8qIFRPRE86IFdyaXRlIGFuIE4gUEhZIFRhYmxlIHdpdGggSUQgNywgbGVuZ3RoIDIs IG9mZnNldCAweDExMCwKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdpZHRoIDE2LCBhbmQgZGF0 YSBmcm9tIGdhaW5fc2F2ZSAqLwo+ICsgwqAgwqAgwqAgYjQzX250YWJfd3JpdGVfYnVsayhkZXYs IEI0M19OVEFCMTYoNywgMHgxMTApLCAyLCBnYWluX3NhdmUpOwo+Cj4gwqAgwqAgwqAgwqBiNDNf bnBoeV9zdGF5X2luX2NhcnJpZXJfc2VhcmNoKGRldiwgMCk7Cj4KPiBAQCAtMjI5MCw4ICsyMjgw LDEwIEBAIGludCBiNDNfcGh5X2luaXRuKHN0cnVjdCBiNDNfd2xkZXYgKmRldikKPiDCoCDCoCDC oCDCoGlmIChwaHktPnJldiA+PSAzKSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBUT0RP ICovCj4gwqAgwqAgwqAgwqB9IGVsc2Ugewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogVE9E TyBXcml0ZSBhbiBOIFBIWSB0YWJsZSB3aXRoIElEIDI2LCBsZW5ndGggMTI4LCBvZmZzZXQKPiAx OTIsIHdpZHRoIDMyLCBhbmQgdGhlIGRhdGEgZnJvbSBSZXYgMiBUWCBQb3dlciBDb250cm9sIFRh YmxlICovCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBUT0RPIFdyaXRlIGFuIE4gUEhZIHRh YmxlIHdpdGggSUQgMjcsIGxlbmd0aCAxMjgsIG9mZnNldAo+IDE5Miwgd2lkdGggMzIsIGFuZCB0 aGUgZGF0YSBmcm9tIFJldiAyIFRYIFBvd2VyIENvbnRyb2wgVGFibGUgKi8KPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGsoZGV2LCBCNDNfTlRBQjMyKDI2LCAxOTIp LCAxMjgsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBiNDNfbnRhYl90eF9nYWluX3JldjBfMV8yKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGI0M19udGFiX3dyaXRlX2J1bGsoZGV2LCBCNDNfTlRBQjMyKDI3LCAxOTIpLCAxMjgs Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBiNDNfbnRhYl90eF9nYWluX3JldjBfMV8yKTsKPiDCoCDCoCDCoCDCoH0KPgo+IMKgIMKg IMKgIMKgaWYgKG5waHktPnBoeXJ4Y2hhaW4gIT0gMykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYjQzL3RhYmxlc19ucGh5LmMKPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0 My90YWJsZXNfbnBoeS5jCj4gaW5kZXggN2RmZjg1My4uZmMwOGJlMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy9iNDMvdGFibGVzX25waHkuYwo+ICsrKyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2I0My90YWJsZXNfbnBoeS5jCj4gQEAgLTI5NTIsNiArMjk1Miw0NiBAQCB2b2lk IGI0M19udGFiX3dyaXRlKHN0cnVjdCBiNDNfd2xkZXYgKmRldiwgdTMyCj4gb2Zmc2V0LCB1MzIg dmFsdWUpCj4gwqAgwqAgwqAgwqBhc3NlcnRfbnRhYl9hcnJheV9zaXplcygpOwo+IMKgfQo+Cj4g K3ZvaWQgYjQzX250YWJfd3JpdGVfYnVsayhzdHJ1Y3QgYjQzX3dsZGV2ICpkZXYsIHUzMiBvZmZz ZXQsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1bnNpZ25lZCBpbnQg bnJfZWxlbWVudHMsIGNvbnN0IHZvaWQgKl9kYXRhKQo+ICt7Cj4gKyDCoCDCoCDCoCB1MzIgdHlw ZSwgdmFsdWU7Cj4gKyDCoCDCoCDCoCBjb25zdCB1OCAqZGF0YSA9IF9kYXRhOwo+ICsgwqAgwqAg wqAgdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsgwqAgwqAgwqAgdHlwZSA9IG9mZnNldCAmIEI0M19O VEFCX1RZUEVNQVNLOwo+ICsgwqAgwqAgwqAgb2Zmc2V0ICY9IH5CNDNfTlRBQl9UWVBFTUFTSzsK PiArIMKgIMKgIMKgIEI0M19XQVJOX09OKG9mZnNldCA+IDB4RkZGRik7Cj4gKwo+ICsgwqAgwqAg wqAgYjQzX3BoeV93cml0ZShkZXYsIEI0M19OUEhZX1RBQkxFX0FERFIsIG9mZnNldCk7Cj4gKwo+ ICsgwqAgwqAgwqAgZm9yIChpID0gMDsgaSA8IG5yX2VsZW1lbnRzOyBpKyspIHsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHN3aXRjaCAodHlwZSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg Y2FzZSBCNDNfTlRBQl84QklUOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg dmFsdWUgPSAqZGF0YTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGEr KzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEI0M19XQVJOX09OKHZhbHVl ICYgfjB4RkYpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYjQzX3BoeV93 cml0ZShkZXYsIEI0M19OUEhZX1RBQkxFX0RBVEFMTywgdmFsdWUpOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNl IEI0M19OVEFCXzE2QklUOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFs dWUgPSAqKCh1MTYgKilkYXRhKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGRhdGEgKz0gMjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEI0M19XQVJO X09OKHZhbHVlICYgfjB4RkZGRik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBiNDNfcGh5X3dyaXRlKGRldiwgQjQzX05QSFlfVEFCTEVfREFUQUxPLCB2YWx1ZSk7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGNhc2UgQjQzX05UQUJfMzJCSVQ6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCB2YWx1ZSA9ICooKHUzMiAqKWRhdGEpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgZGF0YSArPSA0Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgYjQzX3BoeV93cml0ZShkZXYsIEI0M19OUEhZX1RBQkxFX0RBVEFISSwgdmFsdWUgPj4KPiAx Nik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBiNDNfcGh5X3dyaXRlKGRl diwgQjQzX05QSFlfVEFCTEVfREFUQUxPLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFsdWUgJiAweEZGRkYpOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBkZWZhdWx0Ogo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQjQzX1dBUk5f T04oMSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCB9Cj4gK30KPiAr Cj4gwqAjZGVmaW5lIG50YWJfdXBsb2FkKGRldiwgb2Zmc2V0LCBkYXRhKSBkbyB7IFwKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHVuc2lnbmVkIGludCBpOyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBmb3IgKGkgPSAwOyBpIDwgKG9mZnNldCMjX1NJWkUpOyBpKyspIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQz L3RhYmxlc19ucGh5LmgKPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My90YWJsZXNfbnBoeS5o Cj4gaW5kZXggNTE2MzZkMC4uZDU2MDVkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC93aXJl bGVzcy9iNDMvdGFibGVzX25waHkuaAo+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My90 YWJsZXNfbnBoeS5oCj4gQEAgLTE0Myw2ICsxNDMsOCBAQCBiNDNfbnBoeV9nZXRfY2hhbnRhYmVu dChzdHJ1Y3QgYjQzX3dsZGV2ICpkZXYsIHU4Cj4gY2hhbm5lbCk7Cj4gwqAjZGVmaW5lIEI0M19O VEFCX1RYX0lRTE9fQ0FMX0NNRFNfRlVMTENBTF9SRVYzIMKgIMKgIMKgIMKgIDEyCj4KPiDCoHZv aWQgYjQzX250YWJfd3JpdGUoc3RydWN0IGI0M193bGRldiAqZGV2LCB1MzIgb2Zmc2V0LCB1MzIg dmFsdWUpOwo+ICt2b2lkIGI0M19udGFiX3dyaXRlX2J1bGsoc3RydWN0IGI0M193bGRldiAqZGV2 LCB1MzIgb2Zmc2V0LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdW5z aWduZWQgaW50IG5yX2VsZW1lbnRzLCBjb25zdCB2b2lkICpfZGF0YSk7Cj4KPiDCoHZvaWQgYjQz X25waHlfcmV2MF8xXzJfdGFibGVzX2luaXQoc3RydWN0IGI0M193bGRldiAqZGV2KTsKPiDCoHZv aWQgYjQzX25waHlfcmV2M3BsdXNfdGFibGVzX2luaXQoc3RydWN0IGI0M193bGRldiAqZGV2KTsK PiAtLQo+IDEuNi40LjIKPgo+IC0tCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNl bmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXdpcmVsZXNzIiBpbgo+IHRoZSBib2R5IG9m IGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8g aW5mbyBhdCDCoGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo+CgoK Ci0tIApWaXN0YTogW1ZdaXJ1c2VzLCBbSV1udHJ1ZGVycywgW1NdcHl3YXJlLCBbVF1yb2phbnMg YW5kIFtBXWR3YXJlLiA6LSkK