From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id D4440235 for ; Tue, 24 Jul 2018 10:48:40 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jul 2018 01:48:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,397,1526367600"; d="scan'208";a="218588277" Received: from irsmsx101.ger.corp.intel.com ([163.33.3.153]) by orsmga004.jf.intel.com with ESMTP; 24 Jul 2018 01:48:22 -0700 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by IRSMSX101.ger.corp.intel.com (163.33.3.153) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 24 Jul 2018 09:48:22 +0100 Received: from irsmsx107.ger.corp.intel.com ([169.254.10.193]) by irsmsx111.ger.corp.intel.com ([169.254.2.118]) with mapi id 14.03.0319.002; Tue, 24 Jul 2018 09:48:22 +0100 From: "De Lara Guarch, Pablo" To: Akhil Goyal , "Ananyev, Konstantin" , "dev@dpdk.org" CC: "Nicolau, Radu" Thread-Topic: [dpdk-dev] [PATCH 2/2] examples/ipsec-secgw: fix portmask option parsing Thread-Index: AQHUCWa4I/9g+gQfRkKac9H10xV+96Rqvg0AgAE+KICAAAKjAIAACHmAgAAT8gCAFD87gIAd6KpA Date: Tue, 24 Jul 2018 08:48:21 +0000 Message-ID: References: <1528208163-31560-1-git-send-email-konstantin.ananyev@intel.com> <1528208163-31560-2-git-send-email-konstantin.ananyev@intel.com> <36d2a552-e043-7451-ed66-70d13f0f6fe6@nxp.com> <2601191342CEEE43887BDE71AB977258C0C4009C@irsmsx105.ger.corp.intel.com> <2ff9fe7a-3965-ca79-e5e3-9890cc6ce49d@nxp.com> <2601191342CEEE43887BDE71AB977258C0C40347@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258C0C406CF@irsmsx105.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzFkNTgzZjctNDZmZS00MWUyLWEwMjktZGQ1NmFlYmRjYjE1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiN2dudUNVV3JnSmJDekUrVXh4bWswck5vWmVJemJYZGQzbTZZVWlaUko2VEZcL0htbUpcL2xPbnBEb1pzeEZiRmh0In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 2/2] examples/ipsec-secgw: fix portmask option parsing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jul 2018 08:48:41 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IFttYWlsdG86ZGV2 LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBBa2hpbCBHb3lhbA0KPiBTZW50OiBUaHVy c2RheSwgSnVseSA1LCAyMDE4IDEwOjAzIEFNDQo+IFRvOiBBbmFueWV2LCBLb25zdGFudGluIDxr b25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBOaWNvbGF1 LCBSYWR1IDxyYWR1Lm5pY29sYXVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2 XSBbUEFUQ0ggMi8yXSBleGFtcGxlcy9pcHNlYy1zZWNndzogZml4IHBvcnRtYXNrIG9wdGlvbg0K PiBwYXJzaW5nDQo+IA0KPiBIaSBLb25zdGFudGluLA0KPiANCj4gT24gNi8yMi8yMDE4IDU6MjEg UE0sIEFuYW55ZXYsIEtvbnN0YW50aW4gd3JvdGU6DQo+IA0KPiA+DQo+ID4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFraGlsIEdveWFsIFttYWlsdG86YWtoaWwuZ295 YWxAbnhwLmNvbV0NCj4gPj4gU2VudDogRnJpZGF5LCBKdW5lIDIyLCAyMDE4IDExOjQxIEFNDQo+ ID4+IFRvOiBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29t PjsgZGV2QGRwZGsub3JnDQo+ID4+IENjOiBOaWNvbGF1LCBSYWR1IDxyYWR1Lm5pY29sYXVAaW50 ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMi8yXSBleGFtcGxl cy9pcHNlYy1zZWNndzogZml4DQo+ID4+IHBvcnRtYXNrIG9wdGlvbiBwYXJzaW5nDQo+ID4+DQo+ ID4+DQo+ID4+DQo+ID4+IE9uIDYvMjIvMjAxOCAzOjQwIFBNLCBBbmFueWV2LCBLb25zdGFudGlu IHdyb3RlOg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJvbTog QWtoaWwgR295YWwgW21haWx0bzpha2hpbC5nb3lhbEBueHAuY29tXQ0KPiA+Pj4+IFNlbnQ6IEZy aWRheSwgSnVuZSAyMiwgMjAxOCAxMTowMSBBTQ0KPiA+Pj4+IFRvOiBBbmFueWV2LCBLb25zdGFu dGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsNCj4gPj4+PiBkZXZAZHBkay5vcmcN Cj4gPj4+PiBDYzogTmljb2xhdSwgUmFkdSA8cmFkdS5uaWNvbGF1QGludGVsLmNvbT4NCj4gPj4+ PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMi8yXSBleGFtcGxlcy9pcHNlYy1zZWNn dzogZml4DQo+ID4+Pj4gcG9ydG1hc2sgb3B0aW9uIHBhcnNpbmcNCj4gPj4+Pg0KPiA+Pj4+IEhp IEtvbnN0YW50aW4sDQo+ID4+Pj4NCj4gPj4+PiBPbiA2LzIxLzIwMTggODozMiBQTSwgQW5hbnll diwgS29uc3RhbnRpbiB3cm90ZToNCj4gPj4+Pg0KPiA+Pj4+PiBIaSBBa2hpbCwNCj4gPj4+Pj4N Cj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+PiBGcm9tOiBBa2hp bCBHb3lhbCBbbWFpbHRvOmFraGlsLmdveWFsQG54cC5jb21dDQo+ID4+Pj4+PiBTZW50OiBUaHVy c2RheSwgSnVuZSAyMSwgMjAxOCAyOjQ5IFBNDQo+ID4+Pj4+PiBUbzogQW5hbnlldiwgS29uc3Rh bnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47DQo+ID4+Pj4+PiBkZXZAZHBkay5v cmcNCj4gPj4+Pj4+IENjOiBOaWNvbGF1LCBSYWR1IDxyYWR1Lm5pY29sYXVAaW50ZWwuY29tPg0K PiA+Pj4+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDIvMl0gZXhhbXBsZXMvaXBz ZWMtc2VjZ3c6IGZpeA0KPiA+Pj4+Pj4gcG9ydG1hc2sgb3B0aW9uIHBhcnNpbmcNCj4gPj4+Pj4+ DQo+ID4+Pj4+PiBIaSBLb25zdGFudGluLA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9uIDYvNS8yMDE4 IDc6NDYgUE0sIEtvbnN0YW50aW4gQW5hbnlldiB3cm90ZToNCj4gPj4+Pj4+PiBwYXJzZV9wb3J0 bWFzaygpIHJldHVybnMgYm90aCBwb3J0bWFzayB2YWx1ZSBhbmQgcG9zc2libGUgZXJyb3INCj4g Pj4+Pj4+PiBjb2RlIGFzIDMyLWJpdCBpbnRlZ2VyLiBUaGF0IGNhdXNlcyBzb21lIGNvbmZ1c2lv biBmb3IgY2FsbGVycy4NCj4gPj4+Pj4+PiBTcGxpdCBlcnJvciBjb2RlIGFuZCBwb3J0bWFzayB2 YWx1ZSBpbnRvIHR3byBkaXN0aW5jdCB2YXJpYWJsZXMuDQo+ID4+Pj4+Pj4gQWxzbyBhbGxvd3Mg dG8gcnVuIHRoZSBhcHAgd2l0aCB1bnByb3RlY3RlZF9wb3J0X21hc2sgPT0gMC4NCj4gPj4+Pj4+ IFRoaXMgd291bGQgYWxzbyBhbGxvdyBjcnlwdG9kZXZfbWFzayA9PSAwIHRvIHdvcmsgd2VsbCB3 aGljaCBzaG91bGQNCj4gbm90IGJlIHRoZSBjYXNlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+PiBGaXhl czogZDI5OTEwNmU4ZTMxICgiZXhhbXBsZXMvaXBzZWMtc2VjZ3c6IGFkZCBJUHNlYyBzYW1wbGUN Cj4gPj4+Pj4+PiBhcHBsaWNhdGlvbiIpDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+ ID4+Pj4+Pj4gLS0tDQo+ID4+Pj4+Pj4gICAgICBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1z ZWNndy5jIHwgMjkgKysrKysrKysrKysrKysrLS0tLS0tLS0tDQo+IC0tLS0tDQo+ID4+Pj4+Pj4g ICAgICAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pDQo+ ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBz ZWMtc2VjZ3cuYw0KPiA+Pj4+Pj4+IGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMtc2VjZ3cu Yw0KPiA+Pj4+Pj4+IGluZGV4IGZhZmI0MTE2MS4uNWQ3MDcxNjU3IDEwMDY0NA0KPiA+Pj4+Pj4+ IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMNCj4gPj4+Pj4+PiArKysg Yi9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+ID4+Pj4+Pj4gQEAgLTk3Miwy MCArOTcyLDE5IEBAIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKnByZ25hbWUpDQo+ID4+Pj4+Pj4g ICAgICB9DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgIHN0YXRpYyBpbnQzMl90DQo+ID4+Pj4+ Pj4gLXBhcnNlX3BvcnRtYXNrKGNvbnN0IGNoYXIgKnBvcnRtYXNrKQ0KPiA+Pj4+Pj4+ICtwYXJz ZV9wb3J0bWFzayhjb25zdCBjaGFyICpwb3J0bWFzaywgdWludDMyX3QgKnBtdikNCj4gPj4+Pj4+ PiAgICAgIHsNCj4gPj4+Pj4+PiAtCWNoYXIgKmVuZCA9IE5VTEw7DQo+ID4+Pj4+Pj4gKwljaGFy ICplbmQ7DQo+ID4+Pj4+Pj4gICAgICAJdW5zaWduZWQgbG9uZyBwbTsNCj4gPj4+Pj4+Pg0KPiA+ Pj4+Pj4+ICAgICAgCS8qIHBhcnNlIGhleGFkZWNpbWFsIHN0cmluZyAqLw0KPiA+Pj4+Pj4+ICsJ ZXJybm8gPSAwOw0KPiA+Pj4+Pj4+ICAgICAgCXBtID0gc3RydG91bChwb3J0bWFzaywgJmVuZCwg MTYpOw0KPiA+Pj4+Pj4+IC0JaWYgKChwb3J0bWFza1swXSA9PSAnXDAnKSB8fCAoZW5kID09IE5V TEwpIHx8ICgqZW5kICE9ICdcMCcpKQ0KPiA+Pj4+Pj4+ICsJaWYgKGVycm5vICE9IDAgfHwgKmVu ZCAhPSAnXDAnIHx8IHBtID4gVUlOVDMyX01BWCkNCj4gPj4+Pj4+PiAgICAgIAkJcmV0dXJuIC0x Ow0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gLQlpZiAoKHBtID09IDApICYmIGVycm5vKQ0KPiA+Pj4+ Pj4+IC0JCXJldHVybiAtMTsNCj4gPj4+Pj4+PiAtDQo+ID4+Pj4+Pj4gLQlyZXR1cm4gcG07DQo+ ID4+Pj4+Pj4gKwkqcG12ID0gcG07DQo+ID4+Pj4+Pj4gKwlyZXR1cm4gMDsNCj4gPj4+Pj4+PiAg ICAgIH0NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ICAgICAgc3RhdGljIGludDMyX3QNCj4gPj4+Pj4+ PiBAQCAtMTA2Myw2ICsxMDYyLDcgQEAgcGFyc2VfYXJncyhpbnQzMl90IGFyZ2MsIGNoYXIgKiph cmd2KQ0KPiA+Pj4+Pj4+ICAgICAgCWludDMyX3Qgb3B0LCByZXQ7DQo+ID4+Pj4+Pj4gICAgICAJ Y2hhciAqKmFyZ3ZvcHQ7DQo+ID4+Pj4+Pj4gICAgICAJaW50MzJfdCBvcHRpb25faW5kZXg7DQo+ ID4+Pj4+Pj4gKwl1aW50MzJfdCB2Ow0KPiA+Pj4+Pj4+ICAgICAgCWNoYXIgKnByZ25hbWUgPSBh cmd2WzBdOw0KPiA+Pj4+Pj4+ICAgICAgCWludDMyX3QgZl9wcmVzZW50ID0gMDsNCj4gPj4+Pj4+ Pg0KPiA+Pj4+Pj4+IEBAIC0xMDczLDggKzEwNzMsOCBAQCBwYXJzZV9hcmdzKGludDMyX3QgYXJn YywgY2hhciAqKmFyZ3YpDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgIAkJc3dpdGNoIChvcHQp IHsNCj4gPj4+Pj4+PiAgICAgIAkJY2FzZSAncCc6DQo+ID4+Pj4+Pj4gLQkJCWVuYWJsZWRfcG9y dF9tYXNrID0gcGFyc2VfcG9ydG1hc2sob3B0YXJnKTsNCj4gPj4+Pj4+PiAtCQkJaWYgKGVuYWJs ZWRfcG9ydF9tYXNrID09IDApIHsNCj4gPj4+Pj4+PiArCQkJcmV0ID0gcGFyc2VfcG9ydG1hc2so b3B0YXJnLA0KPiAmZW5hYmxlZF9wb3J0X21hc2spOw0KPiA+Pj4+Pj4+ICsJCQlpZiAocmV0IDwg MCB8fCBlbmFibGVkX3BvcnRfbWFzayA9PSAwKSB7DQo+ID4+Pj4+Pj4gICAgICAJCQkJcHJpbnRm KCJpbnZhbGlkIHBvcnRtYXNrXG4iKTsNCj4gPj4+Pj4+PiAgICAgIAkJCQlwcmludF91c2FnZShw cmduYW1lKTsNCj4gPj4+Pj4+PiAgICAgIAkJCQlyZXR1cm4gLTE7DQo+ID4+Pj4+Pj4gQEAgLTEw ODUsOCArMTA4NSw4IEBAIHBhcnNlX2FyZ3MoaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndikNCj4g Pj4+Pj4+PiAgICAgIAkJCXByb21pc2N1b3VzX29uID0gMTsNCj4gPj4+Pj4+PiAgICAgIAkJCWJy ZWFrOw0KPiA+Pj4+Pj4+ICAgICAgCQljYXNlICd1JzoNCj4gPj4+Pj4+PiAtCQkJdW5wcm90ZWN0 ZWRfcG9ydF9tYXNrID0NCj4gcGFyc2VfcG9ydG1hc2sob3B0YXJnKTsNCj4gPj4+Pj4+PiAtCQkJ aWYgKHVucHJvdGVjdGVkX3BvcnRfbWFzayA9PSAwKSB7DQo+ID4+Pj4+Pj4gKwkJCXJldCA9IHBh cnNlX3BvcnRtYXNrKG9wdGFyZywNCj4gJnVucHJvdGVjdGVkX3BvcnRfbWFzayk7DQo+ID4+Pj4+ Pj4gKwkJCWlmIChyZXQgPCAwKSB7DQo+ID4+Pj4+Pj4gICAgICAJCQkJcHJpbnRmKCJpbnZhbGlk IHVucHJvdGVjdGVkDQo+IHBvcnRtYXNrXG4iKTsNCj4gPj4+Pj4+PiAgICAgIAkJCQlwcmludF91 c2FnZShwcmduYW1lKTsNCj4gPj4+Pj4+PiAgICAgIAkJCQlyZXR1cm4gLTE7DQo+ID4+Pj4+Pj4g QEAgLTExNDcsMTUgKzExNDcsMTYgQEAgcGFyc2VfYXJncyhpbnQzMl90IGFyZ2MsIGNoYXIgKiph cmd2KQ0KPiA+Pj4+Pj4+ICAgICAgCQkJCQlzaW5nbGVfc2FfaWR4KTsNCj4gPj4+Pj4+PiAgICAg IAkJCWJyZWFrOw0KPiA+Pj4+Pj4+ICAgICAgCQljYXNlIENNRF9MSU5FX09QVF9DUllQVE9ERVZf TUFTS19OVU06DQo+ID4+Pj4+Pj4gLQkJCXJldCA9IHBhcnNlX3BvcnRtYXNrKG9wdGFyZyk7DQo+ ID4+Pj4+Pj4gKwkJCXJldCA9IHBhcnNlX3BvcnRtYXNrKG9wdGFyZywgJnYpOw0KPiA+Pj4+Pj4g SSB0aGluayB0aGVyZSBpcyBubyBuZWVkIGZvciB2LCBlbmFibGVkX2NyeXB0b2Rldl9tYXNrIGNh biBiZSB1c2VkDQo+IGluc3RlYWQuDQo+ID4+Pj4+IFJpZ2h0IG5vdyAtIGl0IGNhbid0IGFzIGVu YWJsZWRfY3J5cHRvZGV2bWFzayBpcyB1aW50NjRfdC4NCj4gPj4+Pj4gVG8gZG8gd2hhdCB5b3Ug c3VnZ2VzdGluZyB3ZSBoYXZlIGVpdGhlciBkb3duZ3JhZGUNCj4gPj4+Pj4gZW5hYmxlZF9jcnlw dG9kZXZtYXNrIDMyLWJpdHMsIG9yIHVwZ3JhZGUgZW5hYmxlZF9wb3J0X21hc2sgdG8gNjQtYml0 DQo+IGFuZCBjaGFuZ2UgcGFyc2VfcG9ydG1hc2soKSB0byBhY2NlcHQgNjQtYml0IHBhcmFtZXRl ci4NCj4gPj4+PiBJIGFtIG9rIHdpdGggYW55IG9mIHRoZSBjYXNlLg0KPiA+Pj4+DQo+ID4+Pj4+ Pj4gICAgICAJCQlpZiAocmV0ID09IC0xKSB7DQo+ID4+Pj4+PiBlbmFibGVkX2NyeXB0b2Rldl9t YXNrIHNob3VsZCBub3QgYmUgMCBhbmQgc2hvdWxkIGJlIGNoZWNrZWQgaGVyZS4NCj4gPj4+Pj4g Q291bGQgeW91IGV4cGxhaW4gYSBiaXQgbW9yZSB3aHkgZW5hYmxlZF9jcnlwdG9kZXZtYXNrPT0w IGlzIG5vdA0KPiBhbGxvd2VkPw0KPiA+Pj4+IEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBvZiBlbmFi bGVkX2NyeXB0b2Rldm1hc2sgaXMgVUlOVDY0X01BWCwgd2hpY2gNCj4gPj4+PiBtZWFucyBhbGwg Y3J5cHRvIGRldmljZXMgYXJlIGVuYWJsZWQsIGFuZCBpZiBpdCBpcyBtYXJrZWQgYXMgMCwNCj4g Pj4+PiB0aGVuIGFsbCBnZXQgZGlzYWJsZWQgd2hpY2ggaXMgbm90IGNvcnJlY3QgYXMgd2UgbmVl ZCBhdGxlYXN0IDEgY3J5cHRvDQo+IGRldmljZSBpbiBpcHNlYyBhcHBsaWNhdGlvbi4NCj4gPj4+ IE1pZ2h0IGJlIHVzZXIgd291bGQgbGlrZSB0byBydW4gYXBwIHdpdGggaW5saW5lIGlwc2VjIG9u bHksIG9yIGhhdmUNCj4gPj4+IGFwcCB0byB3b3JrIGluIGJ5cGFzcyBtb2RlIG9ubHkgKG5vIGVu Y3J5cHQvZGVjcnlwdCkgYXQgYWxsLg0KPiA+Pj4gV2h5IHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVy ZWQgYXMgYSBwcm9ibGVtPw0KPiA+Pj4gS29uc3RhbnRpbg0KPiA+PiBBZ3JlZWQgd2l0aCB5b3Vy IHBvaW50LiBCdXQgaW4gY2FzZSBvZiBpbmxpbmUgaXBzZWMsIHVzZXIgbWF5IG5vdCBiZSBpbml0 aWFsaXppbmcNCj4gdGhlIGNyeXB0byBkZXZpY2UgZWl0aGVyLg0KPiA+Pg0KPiA+PiBTbyB0aGUg Y3J5cHRvZGV2X21hc2sgb3B0aW9uIHdvdWxkIGJlIHJlZHVuZGFudCBpbiB0aGF0IGNhc2UgYW5k IGl0IG1heQ0KPiBub3QgZ2l2ZSB0aGF0IHBhcmFtZXRlci4NCj4gPiBJdCBpcyBzdGlsbCBub3Qg Y2xlYXIgdG8gbWUgd2h5IHlvdSdkIGxpa2UgdG8gcHJvaGliaXQgY3J5cHRvZGV2X21hc2s9PTA/ DQo+ID4gV291bGQgYW55dGhpbmcgd2lsbCBiZSBicm9rZW4/DQo+ID4gS29uc3RhbnRpbg0KPiAN Cj4gU29ycnkgZm9yIGRlbGF5ZWQgcmVzcG9uc2UuIEkgbWlzc2VkIHRoaXMgb25lIHNvbWVob3cu DQo+IA0KPiBOb3RoaW5nIGlzIGJyb2tlbiwgYnV0IGl0IGxvb2tzIHZlcnkgcmVkdW5kYW50IGlu IGNhc2Ugb2YgaW5saW5lIG1vZGVzLCBhbmQgaXQgaXMNCj4gbm90IGEgdmFsaWQgdmFsdWUgaW4g Y2FzZSBvZiBvdGhlciBtb2Rlcy4NCg0KQW55IGZ1cnRoZXIgY29tbWVudHM/DQoNClRoYW5rcywN ClBhYmxvDQoNCj4gDQo+ID4NCj4gPj4gLUFraGlsDQo+ID4+DQo+ID4+Pj4gU28gaWYgdGhlIHVz ZXIgZG9lc24ndA0KPiA+Pj4+IHdhbnQgdG8gZ2l2ZSB0aGUgY3J5cHRvZGV2X21hc2sgdGhlbiBo ZSBtYXkgc2tpcCB0aGF0IHBhcmFtZXRlciwNCj4gPj4+PiBidXQgaWYgaXQgaXMgZ2l2aW5nLCB0 aGVuIGl0IGNhbm5vdCBiZSAwLg0KPiA+Pj4+DQo+ID4+Pj4+IEtvbnN0YW50aW4NCj4gPj4+Pj4N Cj4gPj4+Pj4NCj4gPj4+PiAtQWtoaWwNCj4gPg0K