Return-path: Received: from py-out-1112.google.com ([64.233.166.179]:21997 "EHLO py-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755275AbYDBXTJ (ORCPT ); Wed, 2 Apr 2008 19:19:09 -0400 Received: by py-out-1112.google.com with SMTP id u52so4109183pyb.10 for ; Wed, 02 Apr 2008 16:19:08 -0700 (PDT) Message-ID: <43e72e890804021619k4e8fea71i152c5dafe010ddfc@mail.gmail.com> (sfid-20080403_001920_349249_494DA15A) Date: Wed, 2 Apr 2008 19:19:07 -0400 From: "Luis R. Rodriguez" To: jt@hpl.hp.com Subject: Re: [PATCH] mac80211: use hardware flags for signal/noise units Cc: "Bruno Randolf" , ath5k-devel@lists.ath5k.org, jirislaby@gmail.com, mickflemm@gmail.com, linux-wireless@vger.kernel.org, linville@tuxdriver.com, johannes@sipsolutions.net, flamingice@sourmilk.net, jbenc@suse.cz, "Ivan Seskar" , "Haris Kremo" , "Kishore Ramachandran" , "Sanjit Kaul" In-Reply-To: <20080327001909.GA17555@bougret.hpl.hp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 References: <20080326123042.11233.80949.stgit@localhost> <43e72e890803261559keb944a1g48d93645db2f2e73@mail.gmail.com> <20080327001909.GA17555@bougret.hpl.hp.com> Sender: linux-wireless-owner@vger.kernel.org List-ID: T24gV2VkLCBNYXIgMjYsIDIwMDggYXQgODoxOSBQTSwgSmVhbiBUb3VycmlsaGVzIDxqdEBocGwu aHAuY29tPiB3cm90ZToKPiBPbiBXZWQsIE1hciAyNiwgMjAwOCBhdCAwNjo1OToxMVBNIC0wNDAw LCBMdWlzIFIuIFJvZHJpZ3VleiB3cm90ZToKPiAgPiBKZWFuIGEgcXVlc3Rpb24gb3IgdHdvIGZv ciB5b3UgYmVsb3cuCj4gID4KPiAgPiBPSyBJIGtub3cgSSBzZWVtZWQgaGFwcHkgd2l0aCB0aGUg b3JpZ2luYWwgcGF0Y2ggYnV0IGFmdGVyIHNvbWUKPiAgPiB0aG91Z2h0IEkgaGF2ZSBzb21lIGNv bmNlcm5zLiBUaGV5IGFyZSBiZWxvdy4KPgo+ICAgICAgICAgSGkgdGhlcmUsCj4KPiAgICAgICAg IEknbSwgY3VycmVudGx5IG9uIGJ1c2luZXNzIHRyaXAuIEknbGwgdHJ5IHRvIGFuc3dlciB0aGUg YmVzdCBJCj4gIGNhbi4gUGluZyBtZSBhZ2FpbiBuZXh0IHdlZWsuCj4gICAgICAgICBOb3RlIHRo YXQgSSBkaWQgbm90IGRlZmluZSB3aGF0IHdlbnQgaW50byBtYWM4MDIxMS5oLCBhbmQgSQo+ICBk aXNjbGFpbSBhbnkgcmVzcG9uc2FiaWxpdHkgZnJvbSB0aGF0LgoKSSdtIHZlcnkgd2VsbCBhd2Fy ZSB5b3UgZGlkIG5vdCBkZWZpbmUgd2hhdCB3ZW50IGludG8gbWFjODAyMTEuaC4gQWxzbwpJJ20g bm90IGJsYW1pbmcgYW55b25lIGZvciBhbnl0aGluZywgSSBqdXN0IHdhbnRlZCB0byBhc2sgeW91 IHNvbWUKZGV0YWlscyBvZiBpbnRlbnRpb25zIGJlaGluZCBhIHZhbHVlIHVzZWQgaW4gV0Ugc28g d2UgY2FuIGJldHRlcgppbXBsZW1lbnQgdGhpbmdzIG1vdmluZyBmb3J3YXJkLgoKPiAgICAgICAg IE15IGlkZWEgaXMgdGhhdCB0aGUgQVBJIHNob3VsZCBiZSBiYXNlZCBvbiByZWFsIHBoeXNpY2Fs Cj4gIG1lYXN1cmFibGUgdmFsdWVzIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSB0cmFkZW9mZiBp cyB0aGF0IHRob3NlCj4gIHZhbHVlcyBzaG91bGQgYWxzbyBiZSB1c2VmdWwsIG9mdGVuIHJhdyB2 YWx1ZXMgYXJlIHVzZWxlc3MuCgpBQ0sKCj4gICAgICAgICBUaGUgbW9zdCBjb21tb24gdW5pdCBm b3IgdGhlIFJTU0kgaXMgZEJtLCBidXQgSSBzZWUgdGhhdCBJRUVFCj4gIGlzIHVzaW5nIFJDUFRJ LiBJIHBlcnNvbmFsbHkgZG9uJ3QgbGlrZSBSQ1BUSSBiZWNhdXNlIGl0J3MgbW9yZQo+ICBvcGFx dWUsIHBlb3BsZSBhcmUgcGh5c2ljYWxseSBtZWFzdXJpbmcgZEJtLCBhbmQgYXJlIGhhdmluZyB0 cmFuc21pdCwKPiAgZ2FpbiBhbmQgbG9zcyBtZWFzdXJlZCBpbiBkQnMuIFRoYXQncyB3aHkgSSB0 aGluayBpdCdzIGltcG9ydGFudCB0aGF0Cj4gIHRoZSB1bml0IHVzZWQgZm9yIHRoYXQgdmFsdWUg YmUgZEJtLgoKSSB0aGluayB5b3UgbWVhbnQgUkNQSSwgYW5kIGl0IHNlZW1zIHRvIGJlIHdlbGwg ZGVmaW5lZCBhY3R1YWxseS4gVGhlCnZhbHVlIGlzIG9wYXF1ZSBidXQgaXQgaXMgYSByZXByZXNl bnRhdGlvbiBvZiBhIGRibSB2YWx1ZS4gQWdhaW4sCnF1b3RpbmcgZnJvbSBTaW1vbidzIGNvbW1l bnQgb24gUkNQSToKCiJUaGUgYWxsb3dlZCB2YWx1ZXMgZm9yIHRoZSBSZWNlaXZlZCBDaGFubmVs IFBvd2VyIEluZGljYXRvciAoUkNQSSkgcGFyYW1ldGVyCnNoYWxsIGJlIGFuIDggYml0IHZhbHVl IGluIHRoZSByYW5nZSBmcm9tIDAgdGhyb3VnaCAyMjAsIHdpdGggaW5kaWNhdGVkCnZhbHVlcyBy b3VuZGVkIHRvIHRoZSBuZWFyZXN0IDAuNSBkQiBhcyBmb2xsb3dzOgoKMDogUG93ZXIgPCAtMTEw IGRCbQoxOiBQb3dlciA9IC0xMDkuNSBkQm0KMjogUG93ZXIgPSAtMTA5LjAgZEJtCgphbmQgc28g b24gd2hlcmUKClJDUEkgPSBpbnR7KFBvd2VyIGluIGRCbSArMTEwKSoyfSBmb3IgMGRibSA+IFBv d2VyID4gLTExMGRCbQoKMjIwOiBQb3dlciA+IC0wIGRCbQoyMjEtMjU0OiByZXNlcnZlZAoyNTU6 IE1lYXN1cmVtZW50IG5vdCBhdmFpbGFibGUKClJDUEkgc2hhbGwgZXF1YWwgdGhlIHJlY2VpdmVk IFJGIHBvd2VyIHdpdGhpbiBhbiBhY2N1cmFjeSBvZiArLy01IGRCCig5NSUgY29uZmlkZW5jZSBp bnRlcnZhbCkgd2l0aGluIHRoZSBzcGVjaWZpZWQgZHluYW1pYyByYW5nZSBvZiB0aGUKcmVjZWl2 ZXIuIFRoZSByZWNlaXZlZCBSRiBwb3dlciBzaGFsbCBiZSBkZXRlcm1pbmVkIGFzc3VtaW5nIGEg cmVjZWl2ZXIKbm9pc2UgZXF1aXZhbGVudCBiYW5kd2lkdGggZXF1YWwgdG8gdGhlIGNoYW5uZWwg YmFuZHdpZHRoIG11bHRpcGxpZWQgYnkKMS4xLiIKCkJ1dCBhcyBkaXNjdXNzZWQgYWxyZWFkeSBv biB0aGUgbGlzdHMgdGhlIHByb2JsZW0gd2l0aCBSQ1BJIHdpbGwgYmUKZ2V0dGluZyBoYXJkd2Fy ZSB0byBzdXBwb3J0IGl0IGFuZCBpdHMgYWNjdXJhY3kuIEluIHRlcm1zIGFjY3VyYWN5IGZvcgpS Q1BJIHlvdSBuZWVkIHRvIHN1cHBvcnQgInJlY2VpdmVkIFJGIHBvd2VyIGluIHRoZSBzZWxlY3Rl ZCBjaGFubmVsCmZvciBhIHJlY2VpdmVkIGZyYW1lLiBUaGlzIHBhcmFtZXRlciBzaGFsbCBiZSBh IG1lYXN1cmUgYnkgdGhlIFBIWQpzdWJsYXllciBvZiB0aGUgcmVjZWl2ZWQgUkYgcG93ZXIgaW4g dGhlIGNoYW5uZWwgbWVhc3VyZWQgb3ZlciB0aGUKZW50aXJlIHJlY2VpdmVkIGZyYW1lIG9yIGJ5 IG90aGVyIGVxdWl2YWxlbnQgbWVhbnMgd2hpY2ggbWVldCB0aGUKc3BlY2lmaWVkIGFjY3VyYWN5 Ii4gSSBkb24ndCBiZWxpZXZlIHdlIGhhdmUgaGFyZHdhcmUgdGhhdCBjYW4gZml0CnRoaXMgZGVm aW5pdGlvbiB5ZXQuIEF0aGVyb3MnIHJzc2kgdmFsdWUgaXMgbWVhc3VyZWQgZHVyaW5nIHRoZSB0 aGUKaW5pdGlhbCA0dXMgb2YgZGV0ZWN0aW9uLCBkdXJpbmcgdGhlIHByZWFtYmxlIGFuZCBQTENQ LCBub3Qgc3VyZSBpZgp0aGlzIGZpdHMgdGhlIGRlZmluaXRpb24gb24gdGhlICJvciIgY2xhdXNl ICgib3IgYnkgb3RoZXIgZXF1aXZhbGVudAptZWFucyB3aGljaCBtZWV0IHRoZSBzcGVjaWZpZWQg YWNjdXJhY3kiKS4gSSBhbHNvIHdpc2ggYW5kIHdvbmRlciBpZgp3ZSBjb3VsZCBtb2RpZnkgdGhp cyBkdXJhdGlvbiBvZiA0dXMgZHVyaW5nIHdoaWNoIHRoZSBTTlIgaXMgbWVhc3VyZWQuCgo+ICAg ICAgICAgTm93LCB3ZSB3b3VsZCBsaWtlIGFsbCBoYXJkd2FyZSB0byByZXBvcnQgUlNTSSBpbiBk Qm0sIGFuZCBnZXQKPiAgZG9uZSB3aXRoIGl0LiBIb3dldmVyLCBzb21lIGhhcmR3YXJlIChBdGhl cm9zKSBjYW4gbm90IGRvIGl0LCBiZWNhdXNlCj4gIHRoZWlyIFJTU0kgaGFyZHdhcmUgaXMgdW5j YWxpYnJhdGVkLiBTbywgd2hhdCBkbyB5b3UgZG8gd2l0aCB0aG9zZQo+ICBoYXJkd2FyZSA/IFJl cG9ydGluZyBhICJyZWxhdGl2ZSIgc2lnbmFsIHN0cmVuZ3RoIGlzIHByb2JhYmx5IGJldHRlcgo+ ICB0aGFuIG5vdGhpbmcuCgpXaGF0IDgwMi4xMSBoYXJkd2FyZSBkb2VzIHJlcG9ydCBleGFjdCBk Ym0gc2lnbmFsIHN0cmVuZ3RoCm1lYXN1cmVtZW50cz8gQXQgbGVhc3QgZm9yIEF0aGVyb3MgQVI1 MjEyIGhhcmR3YXJlIHRoZXJlIHNlZW1zIHRvIGJlCmFuIG9mZnNldCB2YWx1ZSBiZXR3ZWVuIHRo ZSBhY3R1YWwgc2lnbmFsIHN0cmVuZ3RoIGFuZCB0aGUgbWVhc3VyZWQKc2lnbmFsIHN0cmVndGgu IEF0IE9yYml0IHdlIHVzZSBhIGxvdCBvZiBBdGhlcm9zIGhhcmR3YXJlICg4MDAKd2lyZWxlc3Mg Y2FyZHMgb24gdGhlIGdyaWQpIGFuZCBhdCBvbmUgcG9pbnQgaXQgc2VlbXMgdGhlcmUgd2FzIGEg YmlnCmNvbmNlcm4gb3ZlciB0aGUgdmFsdWUgb2Ygc2lnbmFsIHN0cmVuZ3RoIHJlcG9ydGVkIGFu ZCBob3cgaXQgZGlmZmVyZWQKYW1vbmdzdCBjYXJkcyBjb21wYXJlZCB0byBhIHJlYWwgY29udHJv bGxlZCB2YWx1ZS4gSSBqdXN0IHRyaWVkIHRvCmdhdGhlciB0b2dldGhlciBhIGJpdCBvZiB0aGUg ZXhwZXJpZW5jZSBzbyBmYXIgYW5kIGl0IHNlZW1zIHRoYXQgaW4KZ2VuZXJhbCB0aGUgb2Zmc2V0 IHdhcyBzbWFsbCBhbmQgZGlkbid0IHZhcnkgdG9vIG11Y2guIFNvIGFjdHVhbGx5LAp1bmxlc3Mg SSBhbSBtaXNyZXByZXNlbnRpbmcgdGhlIGV4cGVyaWVuY2UgZXhwbGFpbmVkIHNvIGZhciBBdGhl cm9zCmhhcmR3YXJlIHNlZW1zIHByb3ZpZGUgcmVsaWFibGUgcmVzdWx0cywgYWNyb3NzIGRpZmZl cmVudCBleHBlcmltZW50cywKYWNyb3NzIGRpZmZlcmVudCBjYXJkcy4gQW4gb2Zmc2V0IGV4aXN0 cyBidXQgaXQgc2VlbXMgdG8gYmUKbmVnbGlnaWJsZS4gSWYgeW91IHdhbnQgdG8gYmUgc3VyZ2lj YWxseSBwcmVjaXNlIHlvdSBkbyBoYXZlIHRvCmFjY291bnQgZm9yIGl0IGJ1dCBpdCBzZWVtcyBp dCBjbG9zZSBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KCj4gICAgICAgICBOb3RlIHRoYXQgaXQg Y291bGQgYmUgdW5jYWxpYnJhdGVkIGluIHR3byB3YXkuIE9uZSB3YXkgaXMgdGhlCj4gIG9mZnNl dCAobGlrZSB0aGUgQXRoZXJvcyksIHRoZSBvdGhlciBpcyB0aGUgc2xvcGUgKG9sZGVyIGhhcmR3 YXJlKS4gSXQKPiAgbWVhbnMgdGhhdCBmb3Igc29tZSBoYXJkd2FyZSwgaXQgZG9lcyBub3QgZXZl biBmb2xsb3cgYSBkQgo+ICBjdXJ2ZS4gVW5jYWxpYnJhdGVkIHVzdWFsbHkgbWVhbnMgdGhhdCBl dmVyeSBpbnN0YW5jZSBvZiB0aGUgaGFyZHdhcmUKPiAgaXMgZGlmZmVyZW50IGFuZCB5b3UgY2Fu J3QgaGF2ZSBhIGdsb2JhbCBjb3JyZWN0aW9uIGZhY3Rvci4KCklzIHRoZXJlIHN0YW5kYXJkIDgw Mi4xMSBoYXJkd2FyZSBvdXQgdGhlcmUgdGhhdCBpcyBub3QgY2FsaWJyYXRlZAp1bmRlciB0aGlz IGRlZmluaXRpb24/Cgo+ICAgICAgICAgRm9yIGV4YW1wbGUsIGNoZWNrIHRoZSBBaXJvbmV0IGRy aXZlci4gVGhlIGRyaXZlciBoYXMgYSBSU1NJCj4gIGNvcnJlY3Rpb24gdGFibGUsIGZvciBldmVy eSByYXcgUlNTSSB2YWx1ZSwgdGhlIGRyaXZlciBjaGVjayBpbiBhCj4gIHRhYmxlIHRvIGdldCB0 aGUgUlNTSSBpbiBkQm0uIFRoZSB0YWJsZSBpcyBzdG9yZWQgaW4gdGhlIEVQUk9NIG9mIHRoZQo+ ICBjYXJkLCBhbmQgSSBiZWxpZXZlIHNwZWNpZmljIHRvIGVhY2ggY2FyZC4gVGhlIGNvcnJlY3Rp b24gY3VydmUgaXMgbm90Cj4gIGV2ZW4gbGluZWFyICEKPiAgICAgICAgIEZvciB0aGUgQXRoZXJv cywgdGhlcmUgaXMgYW5vdGhlciBpc3N1ZSwgdGhlIG9mZnNldCBjaGFuZ2VzCj4gIG92ZXIgdGlt ZSBhbmQgaXMgbm90IGNvbnN0YW50IGZvciB0aGUgY2FyZC4KCkkgd291bGRuJ3QgYmUgc3VycHJp c2VkIGlmIHRoZSBvZmZzZXQgY2hhbmdlcyBvdmVyIHRpbWUgYnV0IEkgZG91YnQKaXRzIGJ5IGEg bG90LiBIb3cgbXVjaCBoYXZlIHlvdSBzZWVuIHRoZSBvZmZzZXQgY2hhbmdlIG92ZXIgdGltZT8g SSBkbwpub3QgdGhpbmsgd2UgaGF2ZSB0ZXN0ZWQgdGhpcy4gSSB3aWxsIGNoZWNrLgoKPiAgICAg ICAgIE5vdGUgYWxzbyB0aGF0IG1hbnkgaGFyZHdhcmUgYXJlIG5vdCB0cnVseSBjYWxpYnJhdGVk LCBidXQKPiAgInNvcnQgb2YiIGNhbGlicmF0ZWQgKE9yaW5vY28sIEhvc3RBUCkuIEdvb2QgbWVh c3VyZW1lbnQgaXMgZXhwZW5zaXZlLAo+ICB0aGF0J3Mgd2h5IG1vc3QgaW1wbGVtZW50YXRpb24g ZG8gbWVhc3VyZW1lbnQgb24gdGhlIGNoZWFwLiBJdCBtZWFucwo+ICB0aGUgdmFsdWUgd2lsbCBi ZSBjb3JyZWN0IHdpdGhpbiBzb21lIGZldyBwZXJjZW50cyBmb3IgYSBsYXJnZSBwYXJ0Cj4gIHJh bmdlLiBVcCB0byBub3csIHdlIHByZXRlbnRlZCB0aGF0IHRob3NlIGRldmljZXMgcmVwb3J0IGRC bQo+ICBwcm9wZXJseS4gVGhhdCdzIHdoeSBSQ1BUSSB0YWxrIG9mIGV4cGVjdGVkIGFjY3VyYWN5 IG9mIG1lYXN1cmVtZW50Lgo+Cj4gICAgICAgICBTbywgaW4gV0Ugd2UgaGF2ZSA6Cj4gICAgICAg ICAgICAgICAgIG8gc2lnbmFsIGlzIFJTU0kgaW4gZEJtLCB3aGljaCBpcyB0aGUgbW9zdCB1c2Vm dWwgdG8gYXBwcy4KPiAgICAgICAgICAgICAgICAgbyBpZiBjYW4ndCBkbyBkQm0sIGRvIHJlbGF0 aXZlLCB3aGljaCBoYXMgbm8gZXhwZWN0YXRpb25zLgo+Cj4gICAgICAgICBOb3csIGJhY2sgdG8g eW91ciBxdWVzdGlvbi4KPiAgICAgICAgIFRoaXMgYWRkaXRpb25hbCB2YWx1ZSB3b3VsZCBiZSBj YXNlcyB3aGVyZSBvbmx5IHRoZSBvZmZzZXQgaXMKPiAgdW5jYWxpYnJhdGVkIGFuZCB0aGUgc2xv cGUgaXMgY29ycmVjdCwgbGlrZSB0aGUgQXRoZXJvcy4gV2hhdCBpdCB3b3VsZAo+ICBhbGxvdyBp cyB0byBjYWxjdWxhdGUgU05SIGluIGRCLCB3aGljaCBhICJ1bnNwZWMiIHdvdWxkIG5vdCBhbGxv dy4gSWYKPiAgdGhlIG9mZnNldCBpcyBjb25zdGFudCAoYXMgc3BlY2lmaWVkIGFib3ZlLCBidXQg bm90IHRoZSBjYXNlIGZvcgo+ICBBdGhlcm9zKSwgeW91IGNvdWxkIGNvbXBhcmUgZGlmZmVyZW50 IHZhbHVlIG92ZXIgdGltZSBhbmQgbWFrZSBhCj4gIGRpZmZlcmVuY2UgaW4gZEIuCgpJbiBBdGhl cm9zJyBjYXNlIHdlIHdhbnQgdG8gdXNlIGRibSBhcyB3ZSBhbHNvIGtub3cgdGhlIG5vaXNlLCBz byB3ZQpjYW4ganVzdCB3b3JrIHdpdGggc2lnbmFsLiBJcyB0aGVyZSBoYXJkd2FyZSB3aGVyZSB3 ZSBtaWdodCBoYXZlIFNOUgpidXQgbm90IG5vaXNlPwoKPiAgICAgICAgIENsZWFybHksIHlvdSBo YXZlIHRvIHRoaW5rIGhhcmQgYW5kIGRlZmluZSBpcyB0aGUgcmVmZXJlbmNlIGlzCj4gIGZpeGVk IChhcyBzdGF0ZWQgYWJvdmUpIG9yIHZhcmlhYmxlIChBdGhlcm9zKS4gVGhlIGZpeGVkIHJlZmVy ZW5jZQo+ICBjb3VsZCBiZSBtb3JlIHVzZWZ1bCB0byBhcHBzLCBidXQgSSBkb24ndCBrbm93IGhv dyBtYW55IEhXIHdvdWxkIGZpdAo+ICB0aGF0IGRlZmluaXRpb24uIFRoZSB2YXJpYWJsZSByZWZl cmVuY2Ugd291bGQgYWNjb21vZGF0ZSB0aGUgQXRoZXJvcwo+ICBuaWNlbHkuCj4gICAgICAgICBB bHNvLCB3aXRoIHJlc3BlY3QgdG8gInNvcnQgb2YgY2FsaWJyYXRlZCIgZGV2aWNlLCB5b3Ugd291 bGQKPiAgaGF2ZSB0byBkZXZpY2UgaWYgdGhleSBhcmUgZEJtIG9yIGRCLiBXaGF0IGlzIHRoZSBh Y2N1cmFjeSB5b3UgZXhwZWN0Lgo+Cj4gICAgICAgICBBbmQgb2YgY291cnNlLCB0aGUgbWFpbiBx dWVzdGlvbiB0byBhc2sgaXMsIGlzIHRoaXMgZXh0cmEKPiAgZnVuY3Rpb25hbGl0eSB3b3J0aCB0 aGUgYWRkaXRpb25hbCBjb21wbGV4aXR5IG9mIHRoZSBBUEksIGFuZCB0aGUKPiAgcG90ZW50aWFs IGNvbmZ1c2lvbiB0byB1c2Vycy4gSSBkb24ndCBrbm93LCBidXQgZm9yIFdFIHRoZSBhbnN3ZXIg d2FzCj4gIG5vLgoKSXRzIGEgZ29vZCBwb2ludCBidXQgZm9yIHRob3NlIHdobyB3YW50IHByZWNp c2UgcmVzdWx0cyBhbmQgaWYgd2UKKmNhbiogcHJvdmlkZSBiZXR0ZXIgYW5kIG1vcmUgYWNjdXJh dGUgcmVzdWx0cyBJIGRvbid0IHNlZSB3aHkgbm90LgpVbHRpbWF0ZWx5IEknZCBsaWtlIHRvIHNl ZSBSQ1BJIGVtYnJhY2VkIGJ1dCB3ZSBoYXZlIHRvIHlldCBzZWUKaGFyZHdhcmUgd2hvIGNhbiBm aXQgaXRzIGRlZmluaXRpb24gb24gYWNjdXJhY3kuCgo8LS0gc25pcCAtLT4KCj4gID4gPiAgKyAq IEBJRUVFODAyMTFfSFdfU0lHTkFMX0RCTToKPiAgPiA+ICArICogICAgIEhhcmR3YXJlIGdpdmVz IHNpZ25hbCB2YWx1ZXMgaW4gZEJtLCBkZWNpYmVsIGRpZmZlcmVuY2UgZnJvbQo+ICA+ID4gICsg KiAgICAgb25lIG1pbGxpd2F0dC4gVGhpcyBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBzaW5jZSBp dCBpcyBzdGFuZGFyZGl6ZWQKPiAgPiA+ICArICogICAgIGJldHdlZW4gZGlmZmVyZW50IGRldmlj ZXMuCj4gID4gPiAgKyAqCj4gID4gPiAgKyAqIEBJRUVFODAyMTFfSFdfTk9JU0VfREJNOgo+ICA+ ID4gICsgKiAgICAgSGFyZHdhcmUgY2FuIHByb3ZpZGUgbm9pc2UgZmxvb3IgdmFsdWVzIGluIHVu aXRzIGRCbSwgZGVjaWJlbCBkaWZmZXJlbmNlCj4gID4gPiAgKyAqICAgICBmcm9tIG9uZSBtaWxs aXdhdHQuCj4KPiAgICAgICAgIE5vaXNlIG9ubHkgZGVmaW5lZCBpbiBkQm0gPyBTb21lIG9sZGVy IGRldmljZXMgaGF2ZSBub2lzZSBpbgo+ICAidW5zcGVjIi4gSSBhbHNvIGRvbid0IGtub3cgd2hh dCBBdGhlcm9zIGRvZXMgaGVyZS4KCldlIGRvbid0IGhhdmUgZG9jdW1lbnRhdGlvbiBmb3IgdGhp cyBidXQgd2UgY2FuIHNlZSB3aGF0IHdhcyAqZG9uZSogb24KTWFkV2lmaS4gT24gTWFkV2lmaSB0 aGUgbm9pc2UgaXMgb2J0YWluZWQgZHVyaW5nIGludGVycnVwdHMgb24KaW5jb21pbmcgc2V0IG9m IGZyYW1lcyBhbmQgdGhpcyBpcyBzYXZlZCBvbiBhIHZhcmlhYmxlLiBUaGlzIG5vaXNlIGlzCmlz IHN1YnRyYWN0ZWQgZnJvbSB0aGUgU05SIChyc3NpKSB0byBnZXQgdGhlIHNpZ25hbC4gSSBndWVz cyB0aGlzCmFzc3VtZXMgdGhhdCBpZiB0aGVyZSBpcyBhIHN0YXRpYyBub2lzZSBkdXJpbmcgU0lG cyB0aGVuIHlvdSBzaG91bGQKc3VidHJhY3QgdGhhdCBub2lzZSBhcyB3ZWxsLiBJIGNhbm5vdCBz YXkgd2UgaGF2ZSBtZWFzdXJlZCB0aGlzCm1ldGhvZCdzIGFjY3VyYWN5IGJ1dCBob3BlIGl0cyBi ZXR0ZXIgdGhhbiBhc3N1bWluZyBhIHN0YXRpYyBub2lzZSBhcwppdHMgd2hhdCB3ZSB1c2UgaW4g YXRoNWsgYXMgd2VsbC4KCjwtLSBzbmlwIC0tPgoKPiAgPiBJJ20gcHJldHR5IHBlcnBsZXhlZCBi eSB0aGUgb3JpZ2luYWwgaW50ZW50aW9uIG9mIFdpcmVsZXNzIEV4dGVuc2lvbnMKPiAgPiBtYXhf cXVhbC4gVGhlIGRvY3VtZW50YXRpb24gd2UgaGF2ZSBmb3IgdGhpcyBzdGF0ZXM6Cj4gID4KPiAg PiAgICAgICAgIC8qIFF1YWxpdHkgb2YgbGluayAmIFNOUiBzdHVmZiAqLwo+ICA+ICAgICAgICAg LyogUXVhbGl0eSByYW5nZSAobGluaywgbGV2ZWwsIG5vaXNlKQo+ICA+ICAgICAgICAgICogSWYg dGhlIHF1YWxpdHkgaXMgYWJzb2x1dGUsIGl0IHdpbGwgYmUgaW4gdGhlIHJhbmdlIFswIDsgbWF4 X3F1YWxdLAo+ICA+ICAgICAgICAgICogaWYgdGhlIHF1YWxpdHkgaXMgZEJtLCBpdCB3aWxsIGJl IGluIHRoZSByYW5nZSBbbWF4X3F1YWwgOyAwXS4KPiAgPiAgICAgICAgICAqIERvbid0IGZvcmdl dCB0aGF0IHdlIHVzZSA4IGJpdCBhcml0aG1ldGljcy4uLiAqLwo+ICA+ICAgICAgICAgc3RydWN0 IGl3X3F1YWxpdHkgICAgICAgbWF4X3F1YWw7ICAgICAgIC8qIFF1YWxpdHkgb2YgdGhlIGxpbmsg Ki8KPiAgPgo+ICA+IG1heF9xdWFsIGlzIGEgc3RydWN0IHRob3VnaCwgaXdfcXVhbGl0eSB3aGlj aCBpczoKPiAgPgo+ICA+IC8qCj4gID4gICogICAgICBRdWFsaXR5IG9mIHRoZSBsaW5rCj4gID4g ICovCj4gID4gc3RydWN0ICBpd19xdWFsaXR5Cj4gID4gewo+ICA+ICAgICAgICAgX191OCAgICAg ICAgICAgIHF1YWw7ICAgICAgICAgICAvKiBsaW5rIHF1YWxpdHkgKCVyZXRyaWVzLCBTTlIsCj4g ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVtaXNzZWQgYmVh Y29ucyBvciBiZXR0ZXIuLi4pICovCj4gID4gICAgICAgICBfX3U4ICAgICAgICAgICAgbGV2ZWw7 ICAgICAgICAgIC8qIHNpZ25hbCBsZXZlbCAoZEJtKSAqLwo+ICA+ICAgICAgICAgX191OCAgICAg ICAgICAgIG5vaXNlOyAgICAgICAgICAvKiBub2lzZSBsZXZlbCAoZEJtKSAqLwo+ICA+ICAgICAg ICAgX191OCAgICAgICAgICAgIHVwZGF0ZWQ7ICAgICAgICAvKiBGbGFncyB0byBrbm93IGlmIHVw ZGF0ZWQgKi8KPiAgPiB9Owo+ICA+Cj4gID4gSmVhbiwgaWYgcmFuZ2UtPm1heF9xdWFsLmxldmVs IGlzIHNldCB0byAtMTEwIGRvZXMgdGhpcyBtZWFuIHNpZ25hbAo+ICA+IGxldmVsIGNhbiBiZSBz ZXQgb25seSBmcm9tIC0xMTAgdXAgdG8gMCA/IElzIG1heF9xdWFsLmxldmVsIHN1cHBvc2VkCj4g ID4gdG8gYmUgdGhlIHdlYWtlc3Qgc2lnbmFsIHBvc3NpYmx5IGRldGVjdGVkPwo+Cj4gICAgICAg ICBZZXMuIFRoaXMgaXMgd2hhdCBtYWtlIG1vc3Qgc2Vuc2UuCgpIb3cgc28/IEkgdGhpbmsgSSBt dXN0IHN0aWxsIGJlIHNlcmlvdXNseSBtaXN1bmRlcnN0YW5kaW5nIHNvbWV0aGluZwp0aGVuLiBJ ZiB0aGUgd2Vha2VzdCBzaWduYWwgcG9zc2libHkgZGV0ZWN0ZWQgaXMgLTExMCBkYm0gaXQgZG9l cyBub3QKaW1wbHkgdGhlIHN0cm9uZ2VzdCBzaWduYWwgd2lsbCBiZSAwIGRibS4gT24gdGhlIGNv bnRyYXJ5LCBJIGV4cGVjdCB0bwpiZSBhYmxlIHRvIHJlY2VpdmUgZnJhbWVzIHdpdGggcG9zaXRp dmUgZGJtIHZhbHVlcy4gRm9yIGV4YW1wbGUsIGlmIEkKaG9vayB1cCBhIGNhcmQncyBhbnRlbm5h IHdoaWNoIGlzIHRyYW5zbWl0dGluZyBhdCAyMGRibSB0byBhbm90aGVyCmNhcmQncyBhbnRlbm5h IGRpcmVjdGx5IHdpdGggY2FibGVzIHdpdGggMTAgZGJtIGF0dGVudWF0b3IgaW4gdGhlCm1pZGRs ZSBJIGV4cGVjdCB0byBzZWUgMTAgZGJtIG9uIHRoZSByZWNlcHRpb24gc2lkZS4gVGhlcmVmb3Jl CnNob3VsZG4ndCB0aGUgbWF4IGJlIGNsb3NlIHRoZSBtYXggYWxsb3dlZCwgb3IgYXQgbGVhc3Qg ZXhwZWN0ZWQsCkVJUlA/Cgo+ICAgICAgICAgUmVtZW1iZXIgd2UgYWxzbyBoYXZlICJhdmdfcXVh bCIuCj4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGlmIHdlIHdhbnQgdG8gZ3JhcGhpY2FsbHkg cmVwcmVzZW50IHRoZSB2YWx1ZQo+ICBvbiBhIGdyYXBoLCB3ZSBuZWVkIHRvIGtub3cgdGhlIGJv dW5kcy4gVGhpbmsgYWJvdXQgYQo+ICB0aGVybW9tZXRlci4gTW9zdCB0aGVybW9tZXRlcnMgc2hv dyBhIHJhbmdlIG9mIHRlbXBlcmF0dXJlIGZyb20gLTIwQwo+ICB0byArMTAwQy4KPiAgICAgICAg IFVzdWFsbHksIGxldmVsIGFuZCBub2lzZSB3aWxsIGhhdmUgdGhlIHNhbWUgcmFuZ2UgWy0xMTA7 MF0sCgpJIGV4cGVjdCBub2lzZSB0byBoYXZlIHRoZSByYW5nZSBbbWluaW1hbCBwb3NzaWJseSBk ZXRlY3RlZCBzaWduYWwKLS0tLSBtYXggZXhwZWN0ZWQgRUlSUCBdClRoZSBzYW1lIGFwcGxpZXMg dG8gc2lnbmFsLCB3aGljaCB5b3Ugc2VlbSB0byBoYXZlIGxhYmVsZWQgYXMgImxldmVsIi4KCkFn YWluLCBJIHRoaW5rIEknbSBwcm9iYWJseSBqdXN0IHJlYWxseSBub3QgdW5kZXJzdGFuZGluZyB0 aGlzIHNvCnBsZWFzZSBjbGFyaWZ5IGEgYml0IG1vcmUuCgo+ICBhbmQgcXVhbCB3aWxsIGhhdmUg aXRzIG93biByYW5nZSBbMC0xMDBdIG9yIHdoYXRldmVyLgoKU3VyZSwgd2UgdXNlIHF1YWwgYXMg YSBwZXJjZW50YWdlIG9mIHRoZSBiZXN0IHNpZ25hbCByaWdodCBub3cuIFRoaXMKaXMgZHJpdmVy IGRlcGVuZGVudDsgZm9yIEF0aGVyb3MgaGFyZHdhcmUsIGZvciBleGFtcGxlLCB3ZSBhc3N1bWUg YQptYXggcnNzaSB2YWx1ZSBvZiA2NC4KCj4gID4gQWxzbywgdGVjaG5pY2FsbHkgdGhlIG5vaXNl IHNob3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSBjaGFubmVsIGJhbmR3aWR0aC4KPiAgPgo+ ICA+IElFRUUtODAyLjExICBDaGFubmVsIGJhbmR3aWR0aAo+ICA+IDgwMi4xMWEgICAgICAgIDIw TUh6Cj4gID4gODAyLjExYiAgICAgICAgMjJNSHoKPiAgPiA4MDIuMTFnICAgICAgICAyME1IeiAo ZXhjZXB0IHdoZW4gb3BlcmF0aW5nIGluIDgwMi4xMWIgcmF0ZXMpCj4gID4gODAyLjExbiAgICAg ICAgMjBNSHosIDQwTUh6IChleGNlcHQgd2hlbiBvcGVyYXRpbmcgaW4gODAyLjExYiByYXRlcykK PiAgPgo+ICA+IEFwcGx5aW5nIHRoZSBub2lzZSBwb3dlciBmb3JtdWxhOgo+ICA+Cj4gID4gUG4g PSBrVEIKPiAgPgo+ICA+IHdoZXJlOgo+ICA+Cj4gID4gayBpcyBCb2x0em1hbm4ncyBjb25zdGFu dCwgMS4zOCoxMF4tMjMgSi9LCj4gID4gVCBpcyB0aGUgdGVtcGVyYXR1cmUgaW4gS2VsdmluIChy b29tIHRlbXBlcmF0dXJlLCAyOTAgSykKPiAgPiBCIGlzIHRoZSBzeXN0ZW0gYmFuZHdpZHRoLCBp biBIego+ICA+Cj4gID4gTm90ZTogV2F0dCA9IEovcwo+ICA+Cj4gID4gRm9yIGEgMSBIeiBiYW5k d2lkdGggYW5kIGF0IDI5MCBLOgo+ICA+Cj4gID4gUG4gPSAxLjM4ICogMTAtMjMgSi9LICogMjkw IEsgKiAxIEh6Cj4gID4gUG4gPSA0LjAwMjAwICogMTBeLTIxIEpIego+ICA+IFBuID0gNC4wMDIw MCAqIDEwXi0yMSBKL3MKPiAgPiBQbiA9IDQuMDAyMDAgKiAxMF4tMjEgVwo+ICA+IFBuID0gNC4w MDIwMCDDlyAxMC0xOCBtVwo+ICA+Cj4gID4gVG8gY29udmVydCB0byBCZWxsLCB3ZSBkbyBsb2cg KGZvbyksIHRvIGRlY2lCZWxsIHdlIGRvIDEwICogbG9nIChmb28pCj4gID4gc286IChkQm0gPT0g ZEJtVykKPiAgPgo+ICA+IFBuID0gMTAgKiBsb2cgKDQuMDAyMDAgKiAxMF4tMTgpIGRCbQo+ICA+ IFBuID0gfi0xNzMuOTc3MjI5MTU2OTk4MDc0MDEyNzcgZEJtCj4gID4gUG4gPSB+LTE3NCBkQm0K PiAgPgo+ICA+IE5vdyBhcHBseWluZyB0aGUgc2FtZSBub2lzZSBwb3dlciBmb3JtdWxhLCBQbiA9 IGtUQiwgYW5kIGtub3dpbmcKPiAgPiBhbHJlYWR5IC0xNzRkQm0gYXBwbGllcyBmb3IgZWFjaCAx IEh6IHdlIGNhbiBjb21wdXRlIHRoZSBwb3dlciBub2lzZQo+ICA+IGZvciBlYWNoIGRpZmZlcmlu ZyBiYW5kd2lkdGggZm9yIDgwMi4xMToKPiAgPgo+ICA+IFBuID0gLTE3NCBkQm0gLyBIeiArIDEw ICogbG9nIChCYW5kd2lkdGgpCj4gID4KPiAgPiBtY2dyb2ZAbW9uc3Rlcjp+JCBjYWxjCj4gID4g Qy1zdHlsZSBhcmJpdHJhcnkgcHJlY2lzaW9uIGNhbGN1bGF0b3IgKHZlcnNpb24gMi4xMi4xLjEz KQo+ICA+IENhbGMgaXMgb3BlbiBzb2Z0d2FyZS4gRm9yIGxpY2Vuc2UgZGV0YWlscyB0eXBlOiAg aGVscCBjb3B5cmlnaHQKPiAgPiBbVHlwZSAiZXhpdCIgdG8gZXhpdCwgb3IgImhlbHAiIGZvciBo ZWxwLl0KPiAgPgo+ICA+Cj4gID4gOyAtMTc0ICsgKDEwICogbG9nKDIwICogMTBeNikpCj4gID4g ICAgICAgICB+LTEwMC45ODk3MDAwNDMzNjAxODgwNDc5NAo+ICA+IDsgLTE3NCArICgxMCAqIGxv ZygyMiAqIDEwXjYpKQo+ICA+ICAgICAgICAgfi0xMDAuNTc1NzczMTkxNzc3OTM3NjQwNDEKPiAg PiA7IC0xNzQgKyAoMTAgKiBsb2coNDAgKiAxMF42KSkKPiAgPiAgICAgICAgIH4tOTcuOTc5NDAw MDg2NzIwMzc2MDk1NzkKPiAgPgo+ICA+IFNvIEkgZG9uJ3Qgc2VlIHdoeSBub2lzZSBwb3dlciBz aG91bGQgYmUgLTExMCwgaW5zdGVhZCBob3cgYWJvdXQKPiAgPiBoYXZpbmcgaXQgc2V0IHRvIC0x MDEgZEJtIGZvciAyMCBNSHogYW5kIDIyIE1IeiBjaGFubmVsIGJhbmR3aWR0aCBhbmQKPiAgPiAt OTggZEJtIGZvciA0MCBNSHogY2hhbm5lbCBiYW5kd2lkdGggd2hlbiB1c2VkPyBJZiB3ZSB3YW50 IHRvIGJlIGV2ZW4KPiAgPiBtb3JlIGV4YWN0IHdlIGNhbiB0YWtlIGludG8gY29uc2lkZXJhdGlv biB0aGUgbm9pc2UgZnJvbSB0aGUgYW1wbGlmaWVyCj4gID4gY2hhaW4gZm9yIHRoZSBoYXJkd2Fy ZSB3aGVuIGtub3duOyBmb3IgZXhhbXBsZSBmb3IgQXRoZXJvcyBpdCBzZWVtcyB0bwo+ICA+IGJl IGtub3duIHRvIGJlIDVkQm0gWzFdIHNvIHRoZSBub2lzZSBmb3IgQXRoZXJvcyBoYXJkd2FyZSBz aG91bGQKPiAgPiBjaGFuZ2UgdG8gLTk2IGRCbS4KPgo+ICAgICAgICAgUmVtZW1iZXIsIHdoYXQg d2UgY2FyZSBtb3N0IGhlcmUgaXMgdG8gZ2l2ZSBhIHJhbmdlIHNvIHRoYXQKPiAgZ3JhcGhpY2Fs IGFwcGxpY2F0aW9ucyBrbm93IHRoZSBib3VuZCBvZiB0aGUgdmFsdWUuIFdlIGRvbid0IG5lZWQg dG8KPiAgYmUgYWJzb2x1dGVseSBhY2N1cmF0ZSBoZXJlLiBUaGluayBhYm91dCB0aGUgdGhlcm1v bWV0ZXIgZXhhbXBsZS4KClBvaW50IHRha2VuLiBJbiB0aGF0IGNhc2UgcmVwcmVzZW50YXRpb24t d2lzZSB3ZSBzaG91bGQgdGFrZSB0aGUKbG93ZXN0IG51bWJlciBmb3IgdGhlIGxvd2VzdCBwb3Nz aWJsZSB2YWx1ZS4gRm9yIDgwMi4xMSB0aG91Z2ggaXQKc2VlbXMgdGhlIGxvd2VzdCB2YWx1ZSBz aG91bGQgYmUgLTEwMSAoMjAgTUh6IGJhbmR3aWR0aCkgYXMgSQppbGx1c3RyYXRlZCBidXQgc29t ZSBmdW5reSBoYXJkd2FyZSAoQXRoZXJvcykgYWxsb3dzIGV2ZW4gZm9yIDUgTUh6CmNoYW5uZWwg d2lkdGhzIHNvIGJlY2F1c2Ugb2YgdGhhdCB0aGlzIGNvbWVzIGRvd24gdG8gMTA3OgoKOyAtMTc0 ICsgKDEwICogbG9nKDUgKiAxMF42KSkKICAgICAgICB+LTEwNy4wMTAyOTk5NTY2Mzk4MTE5NTIx OQoKRm9yIDFNSHogd2UgZ2V0IGEgY2xlYW4gLTExNDoKCjsgLTE3NCArICgxMCAqIGxvZygxICog MTBeNikpCiAgICAgICAgLTExNAoKV2hhdGV2ZXIsIEkgZ3Vlc3MgLTExMCBvciAtMTE0IGlzIE9L IHRoZW4gOikgSSBzZWUgeW91ciBwb2ludCB0aG91Z2guCgo+ICAgICAgICAgTm93LCB3aGF0IHlv dSBhcmUgdGFsa2luZyBpcyB0aGUgY2hhbm5lbCBub2lzZS4gUmVjZWl2ZXIgbm9pc2UKPiAgaXMg ZGlmZmVyZW50LCBhcyB0aGUgcmVjZWl2ZXIgY2hhaW4gYWRkcyBpdHMgb3duIG5vaXNlLiBUaGVu LCBpZiB5b3UKPiAgdXNlIERTICgxIE1CL3MpIG9yIG90aGVyIGNvbXBsZXggbW9kdWxhdGlvbiwg eW91IGNhbiBoYXZlIGEgcHJvY2Vzc2luZwo+ICBnYWluIHdoaWNoIGxvd2VyIHRoZSBub2lzZSBm bG9vci4gV2hlbiBJIGxvb2tlZCBhdCB0aGUgT3Jpbm9jbyBhdAo+ICAxTWIvcywgSSBiZWxpZXZl IHRoZSAtMTEwIGRCbSB3YXMgY29ycmVjdCwgYnV0IEkgbWF5IGhhdmUgZ290IGl0Cj4gIHdyb25n Lgo+ICAgICAgICAgSSB0aGluayBpdCB3b3VsZCBiZSB3aXNlIHRvIHVzZSBhIHZhbHVlIHRoYXQg Y2hhbmdlIGFzIGxpdHRsZQo+ICBhcyBwb3NzaWJsZSwgc28gdGhhdCB0aGUgdmFyaW91cyBhcHBs aWNhdGlvbnMgY2FuIGNhY2hlIGl0ICh3ZWxsLCB0aGV5Cj4gIHdpbGwgZG8gaXQgYW55d2F5KS4K PiAgICAgICAgIEJ1dCB5ZWFoLCBwbGVhc2UgdXNlIHdoYXRldmVyIHZhbHVlIG1ha2Ugc2Vuc2Ug YW5kIGdpdmUgZ29vZAo+ICByZXN1bHQgaW4gdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy4KClN1cmUu CgogIEx1aXMK