Return-Path: From: Steve Gladden To: Jason Anderssen CC: Joseph Hwang , Hieu Le , Barry Byford <31baz66@gmail.com>, "linux-bluetooth@vger.kernel.org" Date: Mon, 17 Oct 2016 00:15:40 -0400 Subject: RE: How can you set Transmit power level in Bluetooth LE mode for an LE beacon? Message-ID: References: In-Reply-To: Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: SGkgSmFzb24gYW5kIHRoYW5rcyENCg0KTm8sIGZ1bGx5IGFncmVlIHdpdGggd2hhdCB5b3Ugc2F5 Lg0KDQpJJ20gd2lsbGluZyB0byBkbyB0aGUgZXh0cmEgcmVzZWFyY2guDQpqdXN0IGEgbGl0dGxl IGJ1bW1lZCB0aGF0IHRoZSBpbmZvcm1hdGlvbiBJIHNlZWsgc2VlbWluZ2x5IGp1c3QgaXMgbm90 IHRoZXJlIGFueXdoZXJlLg0KDQpBbmQgSSBhbHNvIHdvdWxkIHRoaW5nIHRoYXQgbWFueSBvdGhl ciBhcHBsaWNhdGlvbnMgKGFuZCBwZW9wbGUpIHdvdWxkIHdhbnQgdG8gYmUgYWJsZSB0byBhZGp1 c3QgdGhlIHBvd2VyIGZvciBvdGhlciB1c2VzIGFzIHdlbGwuDQpFc3BlY2lhbGx5IHRvIGdldCBm dWxsIHJhbmdlIGF2YWlsYWJsZSB3aXRoIGZ1bGwgVFggb3V0cHV0IHBvd2VyIHZlcnN1cyB0aGUg InVua25vd24gZGVmYXVsdCIuICBPciBmaXJtd2FyZSBzZXQgdW5rbm93biBkZWZhdWx0IGV0Yy4N Cg0KSSB0aG91Z2h0IHRoZXJlJ2QgYmUgbW9yZSBwZW9wbGUgb3V0IGhlcmUgdGhhdCB3YW50ZWQg YW5kIGtuZXcgaG93IHRvIHNldC9jaGFuZ2UgdHJhbnNtaXQgcG93ZXIgbGV2ZWwuDQoNClRoYW5r cyBmb3IgcmVwbHlpbmcgYW5kIGl0IHdhcyBlbmpveWFibGUgdG8gaGVhciBmcm9tIHlvdSENCg0K VGFrZSBjYXJlIQ0KDQoNClN0ZXZlIEdsYWRkZW4NCg0KTWljaGlnYW4gQnJvYWRiYW5kIFN5c3Rl bXMNCkNvbm5lY3RpbmcgWW91ciBCdXNpbmVzcyENCg0KDQoNCisxIDczNC41MjcuNzE1MCBEaXJl Y3QNCisxIDI0OC4zMjcuNDM4OSBGYXgNCnN0ZXZlQG1pY2hpZ2FuYnJvYWRiYW5kLmNvbQ0Kd3d3 Lm1pY2hpZ2FuYnJvYWRiYW5kLmNvbQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJv bTogSmFzb24gQW5kZXJzc2VuIFttYWlsdG86akBrZXlpbml0aWF0aXZlLmNvbV0NClNlbnQ6IFN1 bmRheSwgT2N0b2JlciAxNiwgMjAxNiA2OjQ5IFBNDQpUbzogU3RldmUgR2xhZGRlbg0KQ2M6IEpv c2VwaCBId2FuZzsgSGlldSBMZTsgQmFycnkgQnlmb3JkOyBsaW51eC1ibHVldG9vdGhAdmdlci5r ZXJuZWwub3JnDQpTdWJqZWN0OiBSZTogSG93IGNhbiB5b3Ugc2V0IFRyYW5zbWl0IHBvd2VyIGxl dmVsIGluIEJsdWV0b290aCBMRSBtb2RlIGZvciBhbiBMRSBiZWFjb24/DQoNCkhpIFN0ZXZlLA0K DQpJIGhhdmUgYmVlbiByZWFkaW5nIGFuZCB3YXRjaGluZyB5b3VyIGVtYWlscywgYW5kIGhhdmUg bm90IHJlcGxpZWQgYXMgSSBwcm9iYWJseSBkb27igJl0IGhhdmUgYW55IGFuc3dlcnMsIGJ1dCBt eSBndWVzcyBpcyBhcyBmb2xsb3dzIDoNCg0KTW9zdCBwZW9wbGUsIG15c2VsZiBpbmNsdWRlZCwg YXJlIHVzaW5nIExpbnV4IGFuZCBoYXJkd2FyZSBsaWtlIFJhc3BiZXJyeSBwaSB0byBwaWNrIHVw IGJlYWNvbnMsIG5vdCBhY3R1YWxseSBiZSBhIGJlYWNvbiwgSSBrbm93IHlvdSBjYW4gY3JlYXRl IGEgYmVhY29uIHdpdGggbGludXgsIGJ1dCBpdCBpcyBub3QgcmVhbGx5IHRoZSBtYWluIGZvY3Vz IGZvciBhIGxvdCBvZiBwZW9wbGUuDQpUaGUgaGFyZHdhcmUgSSB1c2UgZm9yIEJMRSBhZHZlcnRp c2luZyBjb21wbGV0ZWx5IGxldHMgbWUgYW5kIG90aGVycyB0byBwcm9ncmFtIHRoZSBwb3dlciBs ZXZlbCwgd2hpY2ggdGhlbiBpcyByZWNlaXZlZCBmcm9tIHRoZSBSYXNwYmVycnkgcGkgb3IgbGlr ZSBoYXJkd2FyZSwgc28gSSBkb27igJl0IGhhdmUgeW91ciBpc3N1ZSBvciBmcnVzdHJhdGlvbi4N Cg0KU28gbXkgc3VtbWFyeSBpczogeW91IG1heWJlIGEgbWlub3JpdHkgaW4geW91ciB3b3JrIDot KSAgTm90aGluZyB3cm9uZyB3aXRoIHRoYXQsIGJ1dCBpdCBkb2VzIG1lYW4gZXh0cmEgZGV2ZWxv cG1lbnQgYW5kIHJlc2VhcmNoIG9uIHlvdXIgYmVoYWxmIEkgd291bGQgc2F5Lg0KDQpBbnl3YXks IEkgaGVhciB5b3VyIGZydXN0cmF0aW9uLCBhbmQgSSBhZGQgbm8gdmFsdWUgdG8geW91ciBxdWVz dGlvbiwgaG9wZWZ1bGx5IHNvbWUgaW5zaWdodCBhcyBob3cgSSBzZWUgdGhpbmdzIGZpdCBpbiBs aWZlIGFuZCBtaWdodCBleHBsYWluIHlvdXIgY3VycmVudCBzaXR1YXRpb24uDQoNClJlbWVtYmVy IHRoaXMgaXMgc2ltcGx5IG15IG9waW5pb24sIGFuZCBpcyBwcm9iYWJseSB3cm9uZyB0b28gOikN Cg0KQ2hlZXJzDQpKYXNvbg0KDQo+IE9uIDE3IE9jdCAyMDE2LCBhdCA3OjU2IEFNLCBTdGV2ZSBH bGFkZGVuIDxzdGV2ZUBtaWNoaWdhbmJyb2FkYmFuZC5jb20+IHdyb3RlOg0KPg0KPiBPaywgdGhp cyBpcyBnZXR0aW5nIHJlYWxseSBmcnVzdHJhdGluZy4NCj4gV2h5IHdvdWxkIHNvbWV0aGluZyBz byBzaW1wbGUgbGlrZSB0aGlzIGJlIHNvIGRpZmZpY3VsdD8NCj4NCj4gQW0gSSByZWFsbHkgdGhl IG9ubHkgc2hlZXAgb3V0IGhlcmUgdGhhdCBoYXMgYW55IGludGVyZXN0IHdoYXRzb2V2ZXIgaW4g dGhlIHBhc3QgNSB5ZWFycyBvbiBob3cgdG8gYWN0dWFsbHkgc2V0IExFIHRyYW5zbWl0IHBvd2Vy IG9uIGEgVVNCIGRldmljZT8NCj4gRG8gSSBqdXN0IG5vdCBnZXQgaXQ/DQo+IFJlYWxseSBJIGRv buKAmXQgZ2V0IGl0Lg0KPg0KPiBBIHJlYWxseSBzaW1wbGUgdGFzayBhbmQgbm9ib2R5IG91dCBo ZXJlIGVpdGhlciBrbm93cyBvciBoYXMgYW55IGludGVyZXN0IGluIGRvaW5nIGl0Lg0KPg0KPiBN eSBxdWVzdGlvbiBpcyBub3QgZXZlbiB0ZWNobmljYWwgYXQgYWxsLiAgIElmIEkgYWN0dWFsbHkg YXNrZWQgc29tZXRoaW5nIHRlY2huaWNhbCBvdXQgaGVyZSB3b3VsZCB3b3VsZCBoYXBwZW4/DQo+ DQo+IE5vIG9mZmVuc2UgdG8gYW55b25lIG91dCBoZXJlIGp1c3QgdG8gbXlzZWxmIHJlYWxseSBi dXQgd2hhdCBnaXZlcz8NCj4NCj4gSG93IGNvdWxkIHBlb3BsZSB3b3JraW5nIHdpdGggdGhpcyBz dHVmZiBOT1QgYmUgaW50ZXJlc3RlZCBpbiBzaW1wbHkNCj4gY29udHJvbGxpbmcgdGhlIFRYIHBv d2VyIG91dHB1dCB2ZXJzdXMganVzdCBsaXZpbmcgd2l0aCBzb21lIFVOS05PV04gREVGQVVMVCB0 aGF0IGp1c3Qgc29ydGEgd29ya3MgaWYgeW914oCZcmUgaGFwcHkgd2l0aCBvbmx5IDIwIGZlZXQg b2YgcmFuZ2UgYWx0aG91Z2ggdGhlIGNoaXAgY2FuIHB1dCBvdXQgKzEwZGJtIGFuZCBnbyBmdXJ0 aGVyIE9yIHNldCBpdCB3YXkgYmFjayB0byAtNDBkYm0gYW5kIGdldCBqc3R1IGEgZmV3IGZlZXQg YW5kIHllYXJzIG9mIGJhdHRlcnkgbGlmZS4NCj4NCj4gSG93IHRoZSBhY3R1YWwgRi0gYXJlIHBl b3BsZSBOT1QgaW50ZXJlc3RlZCBpbiB0aGlzIGFuZCB0YWxraW5nIGFib3V0IGl0IGFuZCB3b3Jr aW5nIHdpdGggaXQ/ICAg4pi6DQo+DQo+IEFsbCBJIGhhdmUgZm91bmQgb24gYmNjbWQgaXMgYSBQ REYgZG9jdW1lbnQgZnJvbSAyMDA1IHRoYXQgcHJlZGF0ZXMgQU5ZIGtpbmQgb2YgQlRMRSBzdHVm Zi4NCj4NCj4gQW5kIHRoYXTigJlzIGp1c3QgZm9yIHRoZSBDU1IgY2hpcHNldHMgdGhlIE9ORSB0 aGF0IEkgY291bGQgZmluZCBkb2N1bWVudGF0aW9uIG9uLg0KPg0KPiBXaGF0IGFib3V0IGFsbCB0 aGUgb3RoZXJzPw0KPg0KPiBXaGF0IGdpdmVzIGhlcmUgbWFuPw0KPg0KPiBBbSBJIGNvbXBsZXRl bHkgaW4gdGhlIHdyb25nIHBsYWNlIHRvIGJlIGFza2luZyBhYm91dCB0aGlzPw0KPg0KPiBJIGRv buKAmXQgbWVhbiBhbnkgZGlzcmVzcGVjdCwgcmVhbGx5IEkgZG9u4oCZdCENCj4NCj4gQnV0IHdo ZXJlIGluIHRoZSB3b3JsZCBkbyBJIGdvIHRvIGdldCB0aGlzIGJhc2ljIGluZm9ybWF0aW9uPw0K Pg0KPiBBbmQgd2h5IGRvZXMgbm9ib2R5IGNhcmUgb2YgaGF2ZSBhbnkgaGFuZHMtb24gZXhwZXJp ZW5jZSBoZXJlIGFuZC9vciBpbnRlcmVzdD8NCj4NCj4gVGhhbmtzISENCj4NCj4gU3RldmUNCj4N Cj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4NCj4gVHJpZWQgdGhhdCBvZiBjb3Vy c2UgYWxyZWFkeSBkYXlzIGFnby4NCj4gQXMgd2VsbCBhcyBhbnl0aGluZyBlbHNlIGEgc2ltcGxl IGdvb2dsZSBzZWFyY2ggdHVybnMgdXAuDQo+DQo+IFRvIHNldCBNYXggdHggcG93ZXI6DQo+IHN1 ZG8gYmNjbWQgcHNzZXQgLXMgMHgwMDAwIDB4MDAxNyAxMA0KPiBUbyBzZXQgZGVmYXVsdCB0eCBw b3dlcjoNCj4gc3VkbyBiY2NtZCBwc3NldCAtcyAweDAwMDAgMHgwMDJkIDEwDQo+DQo+IEl0IGVh dHMgYm90aCBvZiB0aG9zZSBjb21tYW5kcyBhbmQgZG9lcyBub3QgY29tcGxhaW4gbm8gZXJyb3Jz IGJ1dCBhbHNvIG5vIGNoYW5nZSBpbiBUWCBwb3dlciBvdXRwdXQuDQo+IEnigJltIHdhdGNoaW5n IHRoZSBiZWFjb25zIG9uIGEgcmVjZWl2ZXIgYW5kIGEgc3BlY3RydW0gYW5hbHlzZXIuDQo+DQo+ IElmIEkgaXNzdWU6IH4jIGhjaWNvbmZpZyBoY2kwIGlucXRwbA0KPiBoY2kwOiAgIFR5cGU6IEJS L0VEUiAgQnVzOiBVU0INCj4gICAgICAgICBCRCBBZGRyZXNzOiAwMDoxNTo4MzpFQTowQTpCOSAg QUNMIE1UVTogMzEwOjEwICBTQ08gTVRVOiA2NDo4DQo+ICAgICAgICAgSW5xdWlyeSB0cmFuc21p dCBwb3dlciBsZXZlbDogNA0KPg0KPiBBbHdheXMgcmVhZHMgYmFjayB0aGF0IOKAnDTigJ0NCj4N Cj4gSXNzdWluZyBlaXRoZXI6DQo+DQo+ICMgYmNjbWQgd2FybXJlc2V0DQo+IC1vcg0KPiAjIGJj Y21kIGNvbGRyZXNldA0KPg0KPiByZXN1bHRzIGluIHRyYW5zbWl0dGVyIG9mZiBhbmQgaGF2ZSB0 byBkbzoNCj4NCj4gaGNpdG9vbCAtaSBoY2kwIGNtZCAweDA4IDB4MDAwOCAxRSAwMiAwMSAxQSAx QSBGRiA0QyAwMCAwMiAxNSBFMiAwQSAzOQ0KPiBGNCA3MyBGNSA0QiBDNCBBMSAyRiAwMSA3MyA0 NSAyNyA3MSA1MCAwQSAyOCAwQSAyOCAwMSBGRiAtYW5kIH4jDQo+IGhjaWNvbmZpZyBoY2kwIGxl YWR2Mw0KPg0KPiBUbyBnZXQgaXQgdHJhbnNtaXR0aW5nIGFnYWluIChhdCB0aGUgc2FtZSBub24g Y2hhbmdlZCBsZXZlbC4NCj4NCj4gQW5kDQo+DQo+IH4jIGhjaWNvbmZpZyBoY2kwIGlucXRwbA0K Pg0KPiBoY2kwOiAgIFR5cGU6IEJSL0VEUiAgQnVzOiBVU0INCj4gICAgICAgICBCRCBBZGRyZXNz OiAwMDoxNTo4MzpFQTowQTpCOSAgQUNMIE1UVTogMzEwOjEwICBTQ08gTVRVOiA2NDo4DQo+ICAg ICAgICAgSW5xdWlyeSB0cmFuc21pdCBwb3dlciBsZXZlbDogNA0KPg0KPiBBbHdheXMgc2hvd3Mg 4oCcNOKAnQ0KPg0KPiBPbiB0b3Agb2YgZXZlcnl0aGluZyBJIGhhdmUgc3RhdGVkIGFuZCB0cmll ZCBoZXJlLi4NCj4gSSBkb27igJl0IHRoaW5rIHRoYXQgc2V0dGluZyAoaWYgaXQgZXZlbiB3b3Jr ZWQpIGhhcyBhbnkgcmVsYXRpb24gdG8gTEUgR0ZTSyBhZHZlcnRpc2luZyBtb2RlLg0KPg0KPiBQ cmV0dHkgc3VyZSBpdCBkb2VzIG5vdC4NCj4gVGhhdCAoaWYgaXQgd29ya2VkKSBzZXRzIHBvd2Vy IG9uIEJhc2ljIFJhdGUgYW5kIEVEUiBhcyBzZWVuIGluIHRoZSByZXN1bHQg4oCcaGNpMDogICBU eXBlOiBCUi9FRFIgIEJ1czogVVNC4oCdIHdoZW4gaXNzdWluZyB0aGUgaGNpY29uZmlnIGhjaTAg aW5xdHBsIGNvbW1hbmQuDQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQo+ DQo+IFN0ZXZlIEdsYWRkZW4NCj4NCj4gTWljaGlnYW4gQnJvYWRiYW5kIFN5c3RlbXMNCj4gQ29u bmVjdGluZyBZb3VyIEJ1c2luZXNzIQ0KPg0KPg0KPg0KPiArMSA3MzQuNTI3LjcxNTAgRGlyZWN0 DQo+ICsxIDI0OC4zMjcuNDM4OSBGYXgNCj4gc3RldmVAbWljaGlnYW5icm9hZGJhbmQuY29tDQo+ IHd3dy5taWNoaWdhbmJyb2FkYmFuZC5jb20NCj4NCj4gRnJvbTogSm9zZXBoIEh3YW5nIFttYWls dG86am9zZXBoc2loQGdvb2dsZS5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxMiwg MjAxNiAxMTo1NSBBTQ0KPiBUbzogU3RldmUgR2xhZGRlbg0KPiBDYzogSGlldSBMZTsgQmFycnkg Qnlmb3JkOyBsaW51eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBI b3cgY2FuIHlvdSBzZXQgVHJhbnNtaXQgcG93ZXIgbGV2ZWwgaW4gQmx1ZXRvb3RoIExFIG1vZGUg Zm9yIGFuIExFIGJlYWNvbj8NCj4NCj4gSGkgU3RldmU6DQo+DQo+ICAgTWF5YmUgeW91IGNhbiB0 cnkgQ1NSJ3MgY29tbWFuZCBsaW5lIHV0aWxpdHksIGJjY21kLiBUaGUgc3lzdGVtIGNvbnRyb2wg Y29tbWFuZCBNYXhfVHhfUG93ZXIgYW5kIERlZmF1bHRfVHhfUG93ZXIgYWxsb3cgeW91IHRvIHNl dCB0eCBwb3dlci4NCj4NCj4gR29vZCBsdWNrIQ0KPg0KPiBKb3NlcGgNCj4NCj4NCj4gT24gV2Vk LCBPY3QgMTIsIDIwMTYgYXQgMTE6MzMgUE0sIFN0ZXZlIEdsYWRkZW4gPHN0ZXZlQG1pY2hpZ2Fu YnJvYWRiYW5kLmNvbT4gd3JvdGU6DQo+IFRoYW5rcywNCj4gSSB3YXMgaG9waW5nIHRoZXJlIHdh cyBhbiBlYXNpZXIgd2F5IGFuZCBzb21laG93IGF0IHRoZSBjb21tYW5kIGxpbmUgYnV0IEknbGwg ZG8gd2hhdCBJIG5lZWQgdG8gZG8gYW5kIGZpZ3VyZSBpdCBvdXQgc29tZWhvdy4NCj4gSSB1c3Vh bGx5IGVuZCB1cCBvbiAxMCBvdGhlciByYWJiaXQgdHJhaWxzIHdoZW4gaXQgY29tZXMgdG8gaGF2 aW5nIHRvDQo+IHJlY29tcGlsZSBhbnl0aGluZyBiZWNhdXNlIGl0IHVzdWFsbHkganVzdCBmYWls cyBmb3IgbWUgYW5kIEknbSBub3QgeWV0IHdlbGwgdmVyc2VkIGluIHRyb3VibGVzaG9vdGluZyB3 aGVuIHRoaW5ncyB3b24ndCBjb21waWxlIHN1Y2Nlc3NmdWxseSBhc2lkZSBmcm9tIHdoYXQgSSBj YW4gZWFzaWx5IGdvb2dsZS4NCj4NCj4gSSBhbHNvIHRoaW5rIGl0J3MgYSBsaXR0bGUgbW9yZSBj b21wbGljYXRlZCB0aGFuIGp1c3Qgc2V0dGluZyB0aGUgcG93ZXIuDQo+IEkgaGF2ZSBnYXRoZXJl ZCBhdCBsZWFzdCB3aXQgaHRoZSBDU1IgY2hpcHNldCB0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCAz IHNlcGFyYXRlIHBvd2VyIHNldHRpbmdzIHRoYXQgY2FuIGJlIGFkanVzdGVkIGFuZCBub3QgYW55 IG92ZXJhbGwgcG93ZXIgc2V0dGluZy4NCj4gU28gdGhlIHZhcmlvdXMgbW9kdWxhdGlvbiBtb2Rl cyAoaW5jbHVkaW5nIEdGU0sgLUxFIGFkdmVydGlzaW5nLSkgbmVlZCB0byBiZSBhZGRyZXNzZWQg YW5kIHNldCBpbmRpdmlkdWFsbHkuDQo+IFRoZXJlJ3Mgbm90IGEgbWFzdGVyIHRyYW5zbWl0IGxl dmVsIHRoYXQgc2V0cyB0aGVtIGFsbC4NCj4NCj4NCj4gU3RldmUgR2xhZGRlbg0KPg0KPiBNaWNo aWdhbiBCcm9hZGJhbmQgU3lzdGVtcw0KPiBDb25uZWN0aW5nIFlvdXIgQnVzaW5lc3MhDQo+DQo+ DQo+DQo+ICsxIDczNC41MjcuNzE1MCBEaXJlY3QNCj4gKzEgMjQ4LjMyNy40Mzg5IEZheA0KPiBz dGV2ZUBtaWNoaWdhbmJyb2FkYmFuZC5jb20NCj4gd3d3Lm1pY2hpZ2FuYnJvYWRiYW5kLmNvbQ0K Pg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIaWV1IExlIFttYWlsdG86 aGlldS5sZUB2ZXJpa3N5c3RlbXMuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMTIs IDIwMTYgMTowMCBBTQ0KPiBUbzogU3RldmUgR2xhZGRlbg0KPiBDYzogQmFycnkgQnlmb3JkOyBs aW51eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBIb3cgY2FuIHlv dSBzZXQgVHJhbnNtaXQgcG93ZXIgbGV2ZWwgaW4gQmx1ZXRvb3RoIExFIG1vZGUgZm9yIGFuIExF IGJlYWNvbj8NCj4NCj4gSGksDQo+DQo+IEluIG15IG9waW5pb24sIHRoZSBvbmx5IHdheSBJIGNh biBmaW5kIHRvIGluY3JlYXNlIHRoZSB0eF9wb3dlciBpcyB0bw0KPiByZWNvbXBpbGUgdGhlIGxp bnV4IGtlcm5lbC4gVGhlcmUgbWF5IGJlIGEgYmV0dGVyIHdheQ0KPg0KPiBJdCBzZWVtcyB0aGF0 IGJsdWV0b290aCBzdGFjayB3aXRoaW4ga2VybmVsIHNlcGFyYXRlZCBpbnRvIHR3byBjbGFzc2Vz Og0KPiAxLiBJbnF1aXJ5IFR4X3Bvd2VyLg0KPiAyLiBBZHZlcnRpc2UgVHhfcG93ZXIuDQo+DQo+ IEFuZCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAwLg0KPg0KPiBZb3UgY2FuIHRha2UgYSBsb29rIGF0 Og0KPiAqaGNpX2FsbG9jX2Rldih2b2lkKSAgZnVuY3Rpb24gd2l0aGluIG5ldC9ibHVldG9vdGgv aGNpX2NvcmUuYyBmaWxlDQo+IGhkZXYtPmlucV90eF9wb3dlciA9IEhDSV9UWF9QT1dFUl9JTlZB TElEOyBhZHZfdHhfcG93ZXIgPQ0KPiBoZGV2LT5IQ0lfVFhfUE9XRVJfSU5WQUxJRDsNCj4NCj4g SG9wZSBpdCB3aWxsIGJlIGhlbHBmdWwgdG8geW91Lg0KPg0KPiBSZWdhcmRzLA0KPiBIaWV1Lg0K Pg0KPiBPbiBXZWQsIE9jdCAxMiwgMjAxNiBhdCAxMjo1MiBBTSwgU3RldmUgR2xhZGRlbiA8c3Rl dmVAbWljaGlnYW5icm9hZGJhbmQuY29tPiB3cm90ZToNCj4+IFRoYW5rcyEhDQo+PiBZZXMgaXQn cyBuaWNlIHRvIGhlYXIgZnJvbSBzb21lYm9keS4NCj4+DQo+PiBJJ3ZlIGJlZW4gc2NvdXJpbmcg dGhlIHdlYiBzbyBmYXIgdG8gbm8gYXZhaWwgb24gd2hhdCBJIHRoaW5rIHNob3VsZCBiZSBhIHNp bXBsZSBhbmQgYWNjZXNzaWJsZSBzZXR0aW5nLg0KPj4gSXQncyBvYnZpb3VzIGZyb20gdGhlIHNw ZWNzIHRoYXQgbW9zdCBjaGlwcyBoYXZlIGEgcHJvZ3JhbW1hYmxlIChzZXR0YWJsZSkgdHJhbnNt aXR0ZXIgcG93ZXIuDQo+PiBBbmQgd2l0aCBiZWFjb25zIGl0IGlzIHZlcnkgaW1wb3J0YW50IGFu ZCBleHBlY3RlZCB0aGF0IG9uZSBzaG91bGQgYmUgYWJsZSB0byBhZGp1c3QgdGhlIHRyYW5zbWl0 dGVyIGxldmVsLg0KPj4gQWxsIG9mIHRoZSBzZXJpYWwgYm9hcmRzIGRvIGl0IHdpdGggc2ltcGxl IEFUIGNvbW1hbmRzLg0KPj4NCj4+IEkganVzdCBkb24ndCBnZXQgd2h5IHRoZXJlJ3Mgbm8gZG9j dW1lbnRhdGlvbiBvbiBob3cgdG8gZG8gaXQgd2l0aCBhIFVTQiBkZXZpY2UhIQ0KPj4NCj4+IFRo ZXkgc2VsbCBjbGFzcyAxIGJsdWV0b290aCB1c2IgZG9uZ2xlcyBmb3IgYXBwbGljYXRpb25zIHRo YXQgcmVxdWlyZSBtb3JlIHJhbmdlICgxMDBtKSBpcyBxdW90ZWQgb24gbW9zdCBjbGFzcyAxIHBy b2R1Y3RzLg0KPj4NCj4+IEknZCBleHBlY3QgdGhlcmUgc2hvdWxkIGJlIGEgc3RyYWlnaHQgZm9y d2FyZCBlYXN5IHRvIHNldCBwb3dlciBpbiBMRSBtb2RlIHRvIGdldCBtb3JlIHJhbmdlIG9yIHNh dmUgcG93ZXIgYW5kIGxpbWl0IHJhbmdlIHdoZW4gd2FudGVkLg0KPj4NCj4+IEJ1dCBJJ20gcmVh bGx5IG5vdCBmaW5kaW5nIHRoaXMgaW5mb3JtYXRpb24gb3V0IHRoZXJlIQ0KPj4NCj4+IEkgZG9u O3QgdW5kZXJzdGFuZCB3aGF0IEkgYW0gZG9pbmcgd3Jvbmcgb3Igd2h5IHRoaXMgaXMgc28gZGlm ZmljdWx0DQo+PiB0byBmaW5kLiAgOikNCj4+DQo+Pg0KPj4NCj4+DQo+Pg0KPj4NCj4+DQo+PiBP biAxMSBPY3RvYmVyIDIwMTYgYXQgMTc6NTAsIFN0ZXZlIEdsYWRkZW4gPHN0ZXZlQG1pY2hpZ2Fu YnJvYWRiYW5kLmNvbT4gd3JvdGU6DQo+Pj4gSXMgdGhpcyB0aGlzIGxpc3QganVzdCBzb21lIGtp bmQgb2YgYXV0b21hdGVkIHBhdGNoIGFubm91bmNlbWVudCBsb2cgYW5kIG5vdCBhbiBhY3R1YWwg bWFpbGluZyBsaXN0IHdoZXJlIHlvdSBjYW4gYXNrIGFueXRoaW5nIGFib3V0IGJsdWV0b290aC4N Cj4+PiBUaGlzIGlzIGFsbCBJIGhhdmUgc2VlbiBoZXJlIGZvciB0aGUgcGFzdCBmZXcgZGF5cz8N Cj4+PiBXaGVyZSBjYW4gSSBhc2sgYW4gYWN0dWFsIHF1ZXN0aW9uIGFib3V0IGJsdWV0b290aD8N Cj4+DQo+PiBUaGVyZSBhcmUgc29tZSByZWFsIGh1bWFucyBoZXJlIHRvbyEgIDotKQ0KPj4NCj4+ IElmIHlvdSBsb29rIGJhY2sgb24gdGhlIGFyY2hpdmUgb2YgdGhpcyBsaXN0IHlvdSB3aWxsIHNl ZSBhIG1peHR1cmUNCj4+IG9mIHF1ZXN0aW9ucyBhbmQgcGF0Y2ggcmVxdWVzdHMuDQo+PiBtYXJj LmluZm8vP2w9bGludXgtYmx1ZXRvb3RoDQo+Pg0KPj4gSSd2ZSBrZXB0IHF1aWV0IGFzIEknbSBu b3Qgc3VyZSBJIGNhbiBhbnN3ZXIgcXVlc3Rpb25zLiBUbyBvZmZlciBzb21lDQo+PiBzaGFyZWQg ZXhwZXJpZW5jZSwgSSBjYW4gc2F5IHRoYXQgSSd2ZSBiZWVuIGV4cGVyaW1lbnRpbmcgd2l0aA0K Pj4gKEVkZHlzdG9uZSkgYmVhY29ucyBvbiBMaW51eCBzaW5nbGUgYm9hcmQgY29tcHV0ZXJzIGFj Y2Vzc2luZyBCbHVlWg0KPj4gdGhyb3VnaCB0aGUgREJ1cyBBUEkgdXNpbmcgUHl0aG9uLiBJIGFs c28gaGF2ZSBub3QgZm91bmQgYSB3YXkgdG8NCj4+IGNoYW5nZSB0aGUgcG93ZXIgbGV2ZWwgb2Yg YWR2ZXJ0aXNlbWVudHMgZWl0aGVyLiBGb3Igd2hhdCBJJ20gZG9pbmcsDQo+PiBqdXN0IG1ha2lu ZyBzdXJlIHRoZSBUWCBwb3dlciBpbiB0aGUgRWRkeXN0b25lIGFkdmVydCBtYXRjaGVzIHdoYXQN Cj4+IHRoZSBkb25nbGUgaXMgYWN0dWFsbHkgYnJvYWRjYXN0aW5nIGhhcyBiZWVuIGdvb2QgZW5v dWdoLg0KPj4NCj4+IFNvcnJ5IEkgY291bGRuJ3QgYmUgb2YgbW9yZSBoZWxwLg0KPj4NCj4+IFJl Z2FyZHMsDQo+PiBCYXJyeQ0KPj4NCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4+IFN0ZXZlIEdsYWRk ZW4NCj4+Pg0KPj4+IE1pY2hpZ2FuIEJyb2FkYmFuZCBTeXN0ZW1zDQo+Pj4gQ29ubmVjdGluZyBZ b3VyIEJ1c2luZXNzIQ0KPj4+DQo+Pj4NCj4+Pg0KPj4+ICsxIDczNC41MjcuNzE1MCBEaXJlY3QN Cj4+PiArMSAyNDguMzI3LjQzODkgRmF4DQo+Pj4gc3RldmVAbWljaGlnYW5icm9hZGJhbmQuY29t DQo+Pj4gd3d3Lm1pY2hpZ2FuYnJvYWRiYW5kLmNvbQ0KPj4+DQo+Pj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4+IEZyb206IFN0ZXZlIEdsYWRkZW4NCj4+PiBT ZW50OiBTdW5kYXksIE9jdG9iZXIgMDksIDIwMTYgMTI6MTEgUE0NCj4+PiBUbzogbGludXgtYmx1 ZXRvb3RoQHZnZXIua2VybmVsLm9yZw0KPj4+IFN1YmplY3Q6IEhvdyBjYW4geW91IHNldCBUcmFu c21pdCBwb3dlciBsZXZlbCBpbiBCbHVldG9vdGggTEUgbW9kZSBmb3IgYW4gTEUgYmVhY29uPw0K Pj4+DQo+Pj4gSGksDQo+Pj4gTXkgbmFtZSBpcyBTdGV2ZSBhbmQgSSBhbSBsb2NhdGVkIGluIEFu biBBcmJvciBNaWNoaWdhbiBVU0EuDQo+Pj4NCj4+PiBJIGFtIG5ldyAgYmx1ZXRvb3RoIExFIGFu ZCBsYXRlbHkgYW0gb2JzZXNzZWQgd2l0aCBCbHVldG9vdGggTEUgYmVhY29ucyBhbmQgdHJ5aW5n IHRoZW0gb3V0Lg0KPj4+DQo+Pj4gSSBoYXZlIHJlYWQgYXJ0aWNsZSBhZnRlciBhcnRpY2xlIGFu ZCBwYWdlIGFmdGVyIHBhZ2UgYWJvdXQgaG93DQo+Pj4gcGVvcGxlIGhhdmUgc2V0dXAgdXAgYmVh Y29ucyB3aXRoIFVTQiBCVCA0LjAgaW50ZXJmYWNlcyBhcyB3ZWxsIGFzIHNlcmlhbCBibHVldG9v dGggYm9hcmRzLg0KPj4+DQo+Pj4gSSBhbSBjdXJyZW50bHkgZXhwZXJpbWVudGluZyB3aXRoIGEg YmVhY29uIHJ1bm5pbmcgb24gYSBSYXNwYmVycnkgUGktQiBhbmQgdXNpbmcgYW4gZXh0ZXJuYWwg VVNCIEJsdWV0b290aCA0LjAgY2xhc3MgMSBkb25nbGUuDQo+Pj4NCj4+PiBNeSBmcnVzdHJhdGlv biBpcyB0aGF0IEkgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIGZpbmQgYW55IHVzZWZ1bA0KPj4+IGlu Zm9ybWF0aW9uIGluIGhvdyB0byBjaGFuZ2UgdGhlIFRyYW5zbWl0dGVyIHBvd2VyIGxldmVsIHdo ZW4gaW4gTEUgbW9kZS4NCj4+Pg0KPj4+IFRoZSBkb25nbGUgYXBwZWFycyB0byBiZSB3b3JraW5n IGF0IGRlZmF1bHQgbGV2ZWwgYmVsb3cgemVybyBkYm0uDQo+Pj4NCj4+PiBUaGUgd2hvbGUgcG9p bnQgb2YgYnVpbGRpbmcgeW91ciBvd24gYmVhY29uIHRoaXMgd2F5IGlzIHRvIGJlIGFibGUNCj4+ PiB0byBjdXN0b21pemUgaXQgYW5kIHNldHRpbmcgdGhlIHBvd2VyIGxldmVsIGlzIGFuIGltcG9y dGFudCBrZXkgaXRlbSB0aGF0IHNob3VsZCBiZSBlYXNpbHkgYWNjZXNzaWJsZSB5ZXQgSSBmaW5k IHRoYXQgTk9CT0RZIGV2ZXIgZXZlbiBtZW50aW9ucyBpdCBsZXQgYWxvbmUgZG8gdGhleSBleHBs YWluIG9yIHByb3ZpZGUgYSB3YXkgdG8gc2V0IHRoZSBwb3dlci4NCj4+Pg0KPj4+DQo+Pj4gRXZl cnkgdGV4dCB0aGF0IEkgaGF2ZSBmb3VuZCB0aGF0IGRldGFpbHMgYmVhY29uIHNldHVwcyBmcm9t IGNvbW1hbmQgbGluZSBuZXZlciBib3RoZXIgdG8gbWVudGlvbiBzZXR0aW5nIGJlYWNvbiBUWCBw b3dlci4NCj4+Pg0KPj4+IEFsbCB0aGUgcGFnZXMgSSBoYXZlIGZvdW5kIHNlZW0gdG8gY29weSBl YWNoIG90aGVyIGFuZCByZXBlYXQgdGhlDQo+Pj4gc2FtZSBpbmZvcm1hdGlvbiBvdmVyICYgb3Zl ciBCdXQgbmV2ZXIgZ2V0IGFyb3VuZCB0byBldmVuIG1lbnRpb25pbmcgb3IgZGlzY3Vzc2luZyBz ZXR0aW5nIHRoZSBwb3dlciBvdXRwdXQgbGV2ZWwgb2YgdGhlIGJsdXRvb3RoIGRvbmdsZS4NCj4+ Pg0KPj4+IHN1ZG8gaGNpdG9vbCAtaSBoY2kwIGNtZCAweDA4IDB4MDAwOCAxRSAwMiAwMSAxQSAx QSBGRiA0QyAwMCAwMiAxNSBbDQo+Pj4gOTIgNzcgODMgMEEgQjIgRUIgNDkgMEYgQTEgREQgN0Yg RTMgOEMgNDkgMkUgREUgXSBbIDAwIDAwIF0gWyAwMCAwMA0KPj4+IF0NCj4+PiBDNSAwMA0KPj4+ DQo+Pj4gVGhlIGJ5dGUganVzdCBsZWZ0IG9mIHRoZSBsYXN0IG9uZSBpcyB0aGUgInJlcG9ydGVk IiBUWCBsZXZlbCB0aGF0IHlvdSBhcmUgdHJhbnNtaXR0aW5nIGF0Lg0KPj4+IFdoaWNoIG1lYW5z IHlvdSdyZSBzdXBwb3NlZCB0byBrbm93IChvciBndWVzcz8pIHdoYXQgZGJtIGxldmVsIHlvdSBh cmUgYWN0dWFsbHkgdHJhbnNtaXR0aW5nIGF0IGFuZCBzZXQgaXQgaGVyZSB0byBkaXNwbGF5IHRv IHRoZSB3b3JsZCB3aGF0IHlvdXIgdHJhbnNtaXR0ZXIgbGV2ZWwgaXMgc2V0IHRvIHNvIHRoZXkg Y2FuIHJhbmdlIChndWVzcyBvciBlc3RpbWF0ZSBkaXN0YW5jZSBmcm9tIFRYKS4NCj4+PiBUaGlz IHZhbHVlIGRvZXMgbm90IGluZmx1ZW5jZSBvciByZWZsZWN0IGFjdHVhbCB0cmFuc21pdCBwb3dl ci4NCj4+Pg0KPj4+IFBsZWFzZSBoZWxwISENCj4+Pg0KPj4+IENvdWxkIHVzZSBhbnkgcG9pbnRl cnMuDQo+Pj4NCj4+PiBJJ20gYSBoYXJkd2FyZSBndXkgYXMgd2VsbCBzbyBub3QgdmVyeSBleHBl cmllbmNlZCBpbiBzb2Z0d2FyZS9wcm9ncmFtbWluZyBidXQgSSdtIHdpbGxpbmcgdG8gdHJ5IGFu eXRoaW5nIHRvIGdldCBjb250cm9sIG9mIHRoaXMuDQo+Pj4NCj4+PiBCZWVuIGF0IHRoaXMgZm9y IG92ZXIgYSB3ZWVrIGFuZCBoYXZlIHNvbWUgd29ya2luZyBiZWFjb25zIGJ1dCBubyBjb250cm9s IG9mIHRyYW5zbWl0IHBvd2VyIGxldmVsLg0KPj4+DQo+Pj4gQW0gdXNpbmcgVHJlbmRuZXQgVVNC IGRvbmdsZXMgd2hpY2ggYXBwZWFyIHRvIHVzZSBhIENhbWJyaWRnZSBDaGlwLiAgQnV0IEknbSBu b3QgZXhhY3RseSBzdXJlIHdoaWNoIGNoaXAuDQo+Pj4NCj4+Pg0KPj4+IDp+IyBsc3VzYg0KPj4+ IEJ1cyAwMDEgRGV2aWNlIDAwNzogSUQgMGExMjowMDAxIENhbWJyaWRnZSBTaWxpY29uIFJhZGlv LCBMdGQNCj4+PiBCbHVldG9vdGggRG9uZ2xlIChIQ0kgbW9kZSkNCj4+Pg0KPj4+DQo+Pj4gcm9v dEByYXNwYmVycnlwaTp+IyBoY2ljb25maWcgaGNpMA0KPj4+IGhjaTA6ICAgVHlwZTogQlIvRURS ICBCdXM6IFVTQg0KPj4+ICAgICAgICAgIEJEIEFkZHJlc3M6IDAwOjE1OjgzOkVBOjBBOkI5ICBB Q0wgTVRVOiAzMTA6MTAgIFNDTyBNVFU6IDY0OjgNCj4+PiAgICAgICAgICBVUCBSVU5OSU5HDQo+ Pj4gICAgICAgICAgUlggYnl0ZXM6NzgwIGFjbDowIHNjbzowIGV2ZW50czo1MCBlcnJvcnM6MA0K Pj4+ICAgICAgICAgIFRYIGJ5dGVzOjExMTAgYWNsOjAgc2NvOjAgY29tbWFuZHM6NTAgZXJyb3Jz OjANCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4+ DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4gLS0NCj4+PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUNCj4+PiBsaW51eC1ibHVldG9vdGgiIGluIHRo ZSBib2R5IG9mIGEgbWVzc2FnZSB0bw0KPj4+IG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9y ZSBtYWpvcmRvbW8gaW5mbyBhdA0KPj4+IGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21v LWluZm8uaHRtbA0KPj4gLS0NCj4+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5k IHRoZSBsaW5lICJ1bnN1YnNjcmliZQ0KPj4gbGludXgtYmx1ZXRvb3RoIiBpbiB0aGUgYm9keSBv ZiBhIG1lc3NhZ2UgdG8NCj4+IG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9yZSBtYWpvcmRv bW8gaW5mbyBhdA0KPj4gaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s DQo+DQo+DQo+DQo+IC0tDQo+IC0tLS0gSGlldSBMZSAtLS0NCj4NCj4NCj4NCj4NCj4gLS0NCj4N Cj4gSm9zZXBoIFNoeWgtSW4gSHdhbmcNCj4gRW1haWw6IGpvc2VwaHNpaEBnb29nbGUuY29tDQo+ DQo+IE4gICByIHkgICBiIFggx6d2IF4gKd66ey5uICsgeyBuWyAtICkgICB3KmpnIB4gIN2iai8g ICB6IN6WICAyIN6ZICAgJiAp36EgYQ0KPiAgIH8gHiBHICBoIA8gajordiB3INmlDQoNCg==