From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 76B94A2EEB for ; Tue, 10 Sep 2019 17:17:42 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 62C1B1EC19; Tue, 10 Sep 2019 17:17:41 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 2BFF41EC16 for ; Tue, 10 Sep 2019 17:17:38 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Sep 2019 08:17:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,489,1559545200"; d="scan'208";a="184197319" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga008.fm.intel.com with ESMTP; 10 Sep 2019 08:17:38 -0700 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 10 Sep 2019 08:17:37 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 10 Sep 2019 08:17:37 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.113]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.32]) with mapi id 14.03.0439.000; Tue, 10 Sep 2019 23:17:35 +0800 From: "Wang, Haiyue" To: "Yigit, Ferruh" , "Richardson, Bruce" CC: Ray Kinsella , "dev@dpdk.org" , "Sun, Chenmin" Thread-Topic: [dpdk-dev] [RFC v2 1/3] ethdev: add the API for getting trace information Thread-Index: AQHVUYTDT/0YGy+MOU67JpkccwCfnab35B0AgACeXoCAJdFBAIABT/vQgAM1LQCAABWGAIAAAtKAgAAHf4CAAYRhMP//tyMAgACHaSD//4uOAIAAqB1A//+4eoAAEU+qUA== Date: Tue, 10 Sep 2019 15:17:35 +0000 Message-ID: References: <1565665572-65495-1-git-send-email-haiyue.wang@intel.com> <1565665572-65495-2-git-send-email-haiyue.wang@intel.com> <20190812202436.662e6ca8@hermes.lan> <75f88e4b-97ca-7e1f-1385-8e69f659be7f@intel.com> <20190909124038.GA1889@bricha3-MOBL.ger.corp.intel.com> <8268b844-2815-5e0d-87cf-c6e9ca5c9f34@intel.com> <4672dfa1-a553-28fc-686e-1e14186a040a@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNTI1MzRiZGEtNjFlMy00MWNjLTg0NjYtNzMxNGU4YjRlMjk2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiajNtUGZkU0k4YVJGTmNoaHJFRlc2VWM5clIzQ0pxbVFySm9SR2pQZjRITXNBa1BLcHROQmR2VFJvZWgyd1FmNyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC v2 1/3] ethdev: add the API for getting trace information 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+IFNl bnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxMCwgMjAxOSAyMzowMA0KPiBUbzogV2FuZywgSGFpeXVl IDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFy ZHNvbkBpbnRlbC5jb20+DQo+IENjOiBSYXkgS2luc2VsbGEgPG1kckBhc2hyb2UuZXU+OyBkZXZA ZHBkay5vcmc7IFN1biwgQ2hlbm1pbiA8Y2hlbm1pbi5zdW5AaW50ZWwuY29tPg0KPiBTdWJqZWN0 OiBSZTogW2RwZGstZGV2XSBbUkZDIHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3IgZ2V0 dGluZyB0cmFjZSBpbmZvcm1hdGlvbg0KPiANCj4gT24gOS8xMC8yMDE5IDEyOjQxIFBNLCBXYW5n LCBIYWl5dWUgd3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZy b206IFlpZ2l0LCBGZXJydWgNCj4gPj4gU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDEwLCAyMDE5 IDE3OjE1DQo+ID4+IFRvOiBXYW5nLCBIYWl5dWUgPGhhaXl1ZS53YW5nQGludGVsLmNvbT47IFJp Y2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT4NCj4gPj4gQ2M6IFJh eSBLaW5zZWxsYSA8bWRyQGFzaHJvZS5ldT47IGRldkBkcGRrLm9yZzsgU3VuLCBDaGVubWluIDxj aGVubWluLnN1bkBpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtSRkMg djIgMS8zXSBldGhkZXY6IGFkZCB0aGUgQVBJIGZvciBnZXR0aW5nIHRyYWNlIGluZm9ybWF0aW9u DQo+ID4+DQo+ID4+IE9uIDkvMTAvMjAxOSA5OjM3IEFNLCBXYW5nLCBIYWl5dWUgd3JvdGU6DQo+ ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBZaWdpdCwgRmVy cnVoDQo+ID4+Pj4gU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDEwLCAyMDE5IDE2OjA3DQo+ID4+ Pj4gVG86IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgUmljaGFyZHNvbiwg QnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBSYXkgS2luc2Vs bGEgPG1kckBhc2hyb2UuZXU+OyBkZXZAZHBkay5vcmc7IFN1biwgQ2hlbm1pbiA8Y2hlbm1pbi5z dW5AaW50ZWwuY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtSRkMgdjIgMS8z XSBldGhkZXY6IGFkZCB0aGUgQVBJIGZvciBnZXR0aW5nIHRyYWNlIGluZm9ybWF0aW9uDQo+ID4+ Pj4NCj4gPj4+PiBPbiA5LzEwLzIwMTkgNTozNiBBTSwgV2FuZywgSGFpeXVlIHdyb3RlOg0KPiA+ Pj4+PiBUaGFua3MgRmVycnVoLCBCcnVjZS4NCj4gPj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+PiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+ID4+Pj4+PiBT ZW50OiBNb25kYXksIFNlcHRlbWJlciA5LCAyMDE5IDIxOjE4DQo+ID4+Pj4+PiBUbzogUmljaGFy ZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+Pj4+Pj4gQ2M6IFdh bmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgUmF5IEtpbnNlbGxhIDxtZHJAYXNo cm9lLmV1PjsgZGV2QGRwZGsub3JnOyBTdW4sDQo+ID4+IENoZW5taW4NCj4gPj4+Pj4+IDxjaGVu bWluLnN1bkBpbnRlbC5jb20+DQo+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUkZD IHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3IgZ2V0dGluZyB0cmFjZSBpbmZvcm1hdGlv bg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9uIDkvOS8yMDE5IDE6NTAgUE0sIEZlcnJ1aCBZaWdpdCB3 cm90ZToNCj4gPj4+Pj4+PiBPbiA5LzkvMjAxOSAxOjQwIFBNLCBCcnVjZSBSaWNoYXJkc29uIHdy b3RlOg0KPiA+Pj4+Pj4+PiBPbiBNb24sIFNlcCAwOSwgMjAxOSBhdCAxMjoyMzozNlBNICswMTAw LCBGZXJydWggWWlnaXQgd3JvdGU6DQo+ID4+Pj4+Pj4+PiBPbiA5LzcvMjAxOSAzOjQyIEFNLCBX YW5nLCBIYWl5dWUgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+Pj4+Pj4+Pj4+IEZyb206IFlpZ2l0LCBGZXJydWgNCj4gPj4+Pj4+Pj4+Pj4gU2Vu dDogRnJpZGF5LCBTZXB0ZW1iZXIgNiwgMjAxOSAyMjoyMg0KPiA+Pj4+Pj4+Pj4+PiBUbzogUmF5 IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1PjsgV2FuZywgSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRl bC5jb20+DQo+ID4+Pj4+Pj4+Pj4+IENjOiBkZXZAZHBkay5vcmcNCj4gPj4+Pj4+Pj4+Pj4gU3Vi amVjdDogUmU6IFtkcGRrLWRldl0gW1JGQyB2MiAxLzNdIGV0aGRldjogYWRkIHRoZSBBUEkgZm9y IGdldHRpbmcgdHJhY2UgaW5mb3JtYXRpb24NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4g T24gOC8xMy8yMDE5IDE6NTEgUE0sIFJheSBLaW5zZWxsYSB3cm90ZToNCj4gPj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gT24gMTMvMDgvMjAxOSAwNDoyNCwgU3Rl cGhlbiBIZW1taW5nZXIgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+Pj4gT24gVHVlLCAxMyBBdWcgMjAx OSAxMTowNjoxMCArMDgwMA0KPiA+Pj4+Pj4+Pj4+Pj4+IEhhaXl1ZSBXYW5nIDxoYWl5dWUud2Fu Z0BpbnRlbC5jb20+IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IEVu aGFuY2UgdGhlIFBNRCB0byBzdXBwb3J0IHJldHJpZXZpbmcgdHJhY2UgaW5mb3JtYXRpb24gbGlr ZQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiBSeC9UeCBidXJzdCBzZWxlY3Rpb24gZXRjLg0KPiA+Pj4+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBIYWl5dWUgV2FuZyA8aGFp eXVlLndhbmdAaW50ZWwuY29tPg0KPiA+Pj4+Pj4+Pj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pj4+Pj4+ Pj4gIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuYyAgICAgIHwgMTggKysrKysrKysrKysr KysrKysrDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICBsaWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2Lmgg ICAgICB8ICA5ICsrKysrKysrKw0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgbGliL2xpYnJ0ZV9ldGhkZXYv cnRlX2V0aGRldl9jb3JlLmggfCAgNCArKysrDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICAzIGZpbGVzIGNo YW5nZWQsIDMxIGluc2VydGlvbnMoKykNCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ Pj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9saWJy dGVfZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBpbmRleCAxN2QxODNlLi42 MDk4ZmFkIDEwMDY0NA0KPiA+Pj4+Pj4+Pj4+Pj4+PiAtLS0gYS9saWIvbGlicnRlX2V0aGRldi9y dGVfZXRoZGV2LmMNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRl X2V0aGRldi5jDQo+ID4+Pj4+Pj4+Pj4+Pj4+IEBAIC00MDgzLDYgKzQwODMsMjQgQEAgcnRlX2V0 aF90eF9xdWV1ZV9pbmZvX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwN Cj4gPj4+Pj4+Pj4+Pj4+Pj4gIH0NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4g IGludA0KPiA+Pj4+Pj4+Pj4+Pj4+PiArcnRlX2V0aF90cmFjZV9pbmZvX2dldCh1aW50MTZfdCBw b3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKwkJICAgICAgIGVu dW0gcnRlX2V0aF90cmFjZSB0eXBlLCBjaGFyICpidWYsIGludCBzeikNCj4gPj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4gQmV0dGVyIHRvIHVzZSBzdHJ1Y3QgYXMgYXJndW1lbnQgaW5zdGVhZCBv ZiBpbmRpdmlkdWFsIHZhcmlhYmxlcyBiZWNhdXNlIGl0IGlzDQo+ID4+Pj4+Pj4+Pj4+IGVhc2ll ciB0byBleHRlbmQgdGhlIHN0cnVjdCBsYXRlciBpZiBuZWVkZWQuDQo+ID4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXY7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKwlSVEVfRVRIX1ZB TElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0KPiA+Pj4+Pj4+Pj4+Pj4+ PiArDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsJaWYgKGJ1ZiA9PSBOVUxMKQ0KPiA+Pj4+Pj4+Pj4+Pj4+ PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+Pj4+ PiArCWRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsN Cj4gPj4+Pj4+Pj4+Pj4+Pj4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3Bz LT50cmFjZV9pbmZvX2dldCwgLUVOT1RTVVApOw0KPiA+Pj4+Pj4+Pj4+Pj4+PiArDQo+ID4+Pj4+ Pj4+Pj4+Pj4+ICsJcmV0dXJuIGRldi0+ZGV2X29wcy0+dHJhY2VfaW5mb19nZXQoZGV2LCBxdWV1 ZV9pZCwgdHlwZSwgYnVmLCBzeik7DQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBX aGF0IGlmIHF1ZXVlaWQgaXMgb3V0IG9mIGJvdW5kcz8NCj4gPj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+Pj4+IFRoZSBiaWdnZXIgcHJvYmxlbSBpcyB0aGF0IHRoaXMgaW5mb3JtYXRpb24gaXMg bGlrZSBhIGxvZyBtZXNzYWdlDQo+ID4+Pj4+Pj4+Pj4+Pj4gYW5kIHVuc3RydWN0dXJlZCwgd2hp Y2ggbWFrZXMgaXQgZGV2aWNlIHNwZWNpZmljIGFuZCB1c2VsZXNzIGZvciBhdXRvbWF0aW9uLg0K PiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IElNSE8gLSB0aGlzIGlzIG11Y2ggYmV0dGVy IGltcGxlbWVudGVkIGFzIGEgY2FwYWJpbGl0eSBiaXRmaWVsZCwgdGhhdA0KPiA+Pj4+Pj4+Pj4+ Pj4gY2FuIGJlIHF1ZXJpZWQuDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+ICsxIHRvIHJl dHVybiB0aGUgZGF0YXBhdGggY2FwYWJpbGl0eSBhcyBiaXRmaWVsZC4NCj4gPj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4gQWxzbyArMSB0byBoYXZlIGEgbmV3IEFQSSwNCj4gPj4+Pj4+Pj4+Pj4g LSBJIGFtIG5vdCBzdXJlIGFib3V0IHRoZSBBUEkgbmFtZSwgJ3J0ZV9ldGhfdHJhY2VfaW5mb19n ZXQoKScsIGNhbiB3ZSBmaW5kDQo+ID4+Pj4+Pj4+Pj4+IHNvbWV0aGluZyBiZXR0ZXIgaW5zdGVh ZCBvZiAndHJhY2UnIHRoZXJlLg0KPiA+Pj4+Pj4+Pj4+PiAtIEkgdGhpbmsgd2Ugc2hvdWxkIGxp bWl0IHRoaXMgQVBJIG9ubHkgdG8gZ2V0IGN1cnJlbnQgZGF0YXBhdGggY29uZmlndXJhdGlvbiwN Cj4gPj4+Pj4+Pj4+Pj4gZm9yIGNsYXJpdHkgb2YgdGhlIEFQSSBkb24ndCByZXR1cm4gY2FwYWJp bGl0eSBvciBub3QgZGF0YXBhdGggcmVsYXRlZCBjb25maWcuDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4+IEFsc28gdGhpcyBpbmZvcm1hdGlvbiBub3QgYWx3YXlzIHN1cHBvcnRlZCBpbiBx dWV1ZSBsZXZlbCwgd2hhdCBkbyB5b3UgdGhpbmsNCj4gPj4+Pj4+Pj4+Pj4gaGF2aW5nIGFiaWxp dHkgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24gaW4gcG9ydCBsZXZlbCwNCj4gPj4+Pj4+Pj4+Pj4g bGlrZSB0aGlzIEFQSSBjYW4gcmV0dXJuIGEgc3RydWN0LCB3aGljaCBtYXkgaGF2ZSBhIGZpZWxk IHRoYXQgc2F5cyBpZiB0aGUNCj4gPj4+Pj4+Pj4+Pj4gb3V0cHV0IGlzIGZvciBxdWV1ZSBvciBw b3J0LCBvciB0aGlzIGNhbiBiZSBhbm90aGVyIGJpdGZpZWxkLCB3aGF0IGRvIHlvdSB0aGluaz8N Cj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ICNkZWZpbmUgUlhfU0NB TEFSCSgxVUxMIDwgMCkNCj4gPj4+Pj4+Pj4+PiAjZGVmaW5lIFJYX1ZFQ1RPUl9BVlgyICAuLi4N Cj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBXaGF0IGFib3V0IGhhdmluZyBSWF9WRUNUT1IgdmFs dWUsIGxhdGVyIGFub3RoZXIgYml0IGdyb3VwIGZvciB0aGUgZGV0YWlscyBvZg0KPiA+Pj4+Pj4+ Pj4gdGhlIHZlY3Rvcml6YXRpb246DQo+ID4+Pj4+Pj4+PiBTU0UNCj4gPj4+Pj4+Pj4+IEFWWDIN Cj4gPj4+Pj4+Pj4+IEFWWDUxMg0KPiA+Pj4+Pj4+Pj4gTkVPTg0KPiA+Pj4+Pj4+Pj4gQUxUSVZF Qw0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFNpbmNlIGFib3ZlIG9wdGlvbnMgY2FuIGV4aXN0 IHRvZ2V0aGVyLCB3aGF0IGFib3V0IHVzaW5nIHZhbHVlcyBmb3IgdGhlbSBpbnN0ZWFkDQo+ID4+ Pj4+Pj4+PiBvZiBiaXRmaWVsZHM/IFJlc2VydmluZyA0IGJpdHMsIDJeNCA9IDE2LCBjYW4gYmUg ZW5vdWdoIEkgdGhpbmsgZm9yIGxvbmcgdGVybS4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFJh dGhlciB0aGFuIGhhdmluZyBuYW1lZCB2ZWN0b3IgdHlwZXMsIHdlIGp1c3QgbmVlZCB0byB3b3Jy eSBhYm91dCB0aGUgb25lcw0KPiA+Pj4+Pj4+PiBmb3IgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJl LiBUaGVyZWZvcmUgSSdkIHN1Z2dlc3QganVzdCB1c2luZyB2ZWN0b3INCj4gPj4+Pj4+Pj4gd2lk dGhzLCBvbmUgYml0IGVhY2ggZm9yIDE2QiwgMzJCIGFuZCA2NEIgdmVjdG9yIHN1cHBvcnQuIEZv ciBzdXBwb3J0aW5nDQo+ID4+Pj4+Pj4+IG11bHRpcGxlIHZhbHVlcywgMTYgY29tYmluYXRpb25z IGlzIG5vdCBlbm91Z2ggZm9yIGFsbCB0aGUgcG9zc2liaWxpdGllcy4NCj4gPj4+Pj4+Pj4NCj4g Pj4+Pj4+Pg0KPiA+Pj4+Pj4+IHZlY3RvciB3aWR0aCBjYW4gYmUgYW4gb3B0aW9uIHRvbywgbm8g b2JqZWN0aW9uIHRoZXJlLiBCdXQgdGhpcyBpcyBvbmx5IGZvcg0KPiA+Pj4+Pj4+IGN1cnJlbnQg Y29uZmlndXJhdGlvbiwgc28gaXQgY2FuIGJlIGEgY29tYmluYXRpb24sIHdlIGhhdmUgbm93IDUg dHlwZXMgYW5kDQo+ID4+Pj4+Pj4gYWxsb2NhdGluZyBzcGFjZSBmb3IgMTYuDQo+ID4+Pj4+Pj4N Cj4gPj4+Pj4+DQo+ID4+Pj4+PiBjb3JyZWN0aW9uOiBpdCBjYW4gKm5vdCogYmUgYSBjb21iaW5h dGlvbg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIHRoaW5rIHdlIGNhbiBtZXJnZSB0aGUgUlhfVkVDVE9S IGFuZCBUWF9WRUNUT1IgdG9nZXRoZXIsIHVzZSA2IGJpdHMgZm9yIHZlY3Rvcg0KPiA+Pj4+PiBt b2RlIGRldGFpbC4gQW5kIGZvciB2ZWN0b3Igd2lkdGgsIHRoZSBTU0UsIE5FT04gbmFtZSBzaG91 bGQgaW5kaWNhdGVzIGl0ID8NCj4gPj4+Pj4NCj4gPj4+Pj4gSSByZW5hbWVkIHRoZSBkZWZpbml0 aW9ucyB0byB0cnkgdG8gbWFrZSB0aGluZ3MgY2xlYXIuDQo+ID4+Pj4+DQo+ID4+Pj4+IGVudW0g cnRlX2V0aF9idXJzdF9tb2RlX29wdGlvbiB7DQo+ID4+Pj4+IAlCVVJTVF9TQ0FMQVIgPSAoMSA8 PCAwKSwNCj4gPj4+Pj4gCUJVUlNUX1ZFQ1RPUiA9ICgxIDw8IDEpLA0KPiA+Pj4+Pg0KPiA+Pj4+ PiAJQlVSU1RfVkVDVE9SX01PREVfTUFTSyA9ICgweDNGIDw8IDIpLA0KPiA+Pj4+PiAJQlVSU1Rf QUxUSVZFQyAgICAgICAgICA9ICgxIDw8IDIpLA0KPiA+Pj4+PiAJQlVSU1RfTkVPTiAgICAgICAg ICAgICA9ICgyIDw8IDIpLA0KPiA+Pj4+PiAJQlVSU1RfU1NFICAgICAgICAgICAgICA9ICgzIDw8 IDIpLA0KPiA+Pj4+PiAJQlVSU1RfQVZYMiAgICAgICAgICAgICA9ICg0IDw8IDIpLA0KPiA+Pj4+ PiAJQlVSU1RfQVZYNTEyICAgICAgICAgICA9ICg1IDw8IDIpLA0KPiA+Pj4+DQo+ID4+Pj4gRG8g d2UgbmVlZCB0byBoYXZlIGJpdGZpZWxkcyBmb3IgdGhpcywgSSB3YXMgc3VnZ2VzdGluZyByZXNl cnZlIDQgYml0cywgYml0IDItNQ0KPiA+Pj4+IChpbmNsdXNpdmUpIGFuZCB1c2UgdGhlaXIgdmFs dWU6DQo+ID4+Pj4NCj4gPj4+PiBCVVJTVF9WRUNUT1JfTU9ERV9JRFggID0gMg0KPiA+Pj4+IEJV UlNUX1ZFQ1RPUl9NT0RFX1NJWkUgPSA0DQo+ID4+Pj4gQlVSU1RfVkVDVE9SX01PREVfTUFTSyA9 DQo+ID4+Pj4gCSgoMSA8PCBCVVJTVF9WRUNUT1JfTU9ERV9TSVpFKSAtIDEpIDw8IEJVUlNUX1ZF Q1RPUl9NT0RFX0lEWA0KPiA+Pj4+DQo+ID4+Pj4gdmVjdG9yX21vZGUgPSAob3B0aW9ucyAmIEJV UlNUX1ZFQ1RPUl9NT0RFX01BU0spID4+IEJVUlNUX1ZFQ1RPUl9NT0RFX0lEWA0KPiA+Pj4+DQo+ ID4+Pj4gaWYgKHZlY3Rvcl9tb2RlID09IDApIC8vIEJVUlNUX1NTRQ0KPiA+Pj4+IGlmICh2ZWN0 b3JfbW9kZSA9PSAxKSAvLyBCVVJTVF9BVlgyDQo+ID4+Pj4gaWYgKHZlY3Rvcl9tb2RlID09IDIp IC8vIEJVUlNUX0FWWDUxMg0KPiA+Pj4+IGlmICh2ZWN0b3JfbW9kZSA9PSAzKSAvLyBCVVJTVF9O RU9ODQo+ID4+Pj4gLi4uLg0KPiA+Pj4+DQo+ID4+Pj4gQ2FuIGFueSB2ZWN0b3IgbW9kZSBiZSBj b21iaW5hdGlvbiBvZiBhYm92ZSwgaWYgbm90IHdoeSB1c2UgYml0ZmllbGRzPw0KPiA+Pj4+DQo+ ID4+Pg0KPiA+Pj4gSSB1c2UgaXQgYXMgdGhpcyB0byAqc2V0KiAuLi4NCj4gPj4+DQo+ID4+PiAJ ZWxzZSBpZiAocGt0X2J1cnN0ID09IGk0MGVfcmVjdl9zY2F0dGVyZWRfcGt0c192ZWNfYXZ4MikN Cj4gPj4+IAkJb3B0aW9ucyA9IEJVUlNUX1ZFQ1RPUiB8IEJVUlNUX0FWWDIgfCBCVVJTVF9TQ0FU VEVSRUQ7DQo+ID4+PiAJZWxzZSBpZiAocGt0X2J1cnN0ID09IGk0MGVfcmVjdl9wa3RzX3ZlY19h dngyKQ0KPiA+Pj4gCQlvcHRpb25zID0gQlVSU1RfVkVDVE9SIHwgQlVSU1RfQVZYMjsNCj4gPj4+ IAllbHNlIGlmIChwa3RfYnVyc3QgPT0gaTQwZV9yZWN2X3NjYXR0ZXJlZF9wa3RzX3ZlYykNCj4g Pj4+IAkJb3B0aW9ucyA9IEJVUlNUX1ZFQ1RPUiB8IEJVUlNUX1NTRSB8IEJVUlNUX1NDQVRURVJF RDsNCj4gPj4+IAllbHNlIGlmIChwa3RfYnVyc3QgPT0gaTQwZV9yZWN2X3BrdHNfdmVjKQ0KPiA+ Pj4gCQlvcHRpb25zID0gQlVSU1RfVkVDVE9SIHwgQlVSU1RfU1NFOw0KPiA+Pj4NCj4gPj4+IFRo ZW4gKmdldCogbGlrZSB0aGlzLCBzaW5jZSB3ZSByZXNlcnZlIHRoZSBiaXQgZ3JvdXAuDQo+ID4+ Pg0KPiA+Pj4gc3RhdGljIHZvaWQNCj4gPj4+IGJ1cnN0X21vZGVfb3B0aW9uc19kaXNwbGF5KHVp bnQ2NF90IG9wdGlvbnMpDQo+ID4+PiB7DQo+ID4+PiAJdWludDY0X3QgdmVjX21vZGUgPSBvcHRp b25zICYgQlVSU1RfVkVDVE9SX01PREVfTUFTSzsNCj4gPj4+IAl1aW50NjRfdCBvcHQ7DQo+ID4+ Pg0KPiA+Pj4gCW9wdGlvbnMgJj0gfkJVUlNUX1ZFQ1RPUl9NT0RFX01BU0s7DQo+ID4+Pg0KPiA+ Pj4gCWZvciAob3B0ID0gMTsgb3B0aW9ucyAhPSAwOyBvcHQgPDw9IDEsIG9wdGlvbnMgPj49IDEp IHsNCj4gPj4+IAkJaWYgKCEob3B0aW9ucyAmIDEpKQ0KPiA+Pj4gCQkJY29udGludWU7DQo+ID4+ Pg0KPiA+Pj4gCQlwcmludGYoIiAlcyIsIHJ0ZV9ldGhfYnVyc3RfbW9kZV9vcHRpb25fbmFtZShv cHQpKTsNCj4gPj4+DQo+ID4+PiAJCWlmIChvcHQgPT0gQlVSU1RfVkVDVE9SKQ0KPiA+Pj4gCQkJ cHJpbnRmKCIoJXMpIiwNCj4gPj4+IAkJCSAgICAgICBydGVfZXRoX2J1cnN0X21vZGVfb3B0aW9u X25hbWUodmVjX21vZGUpKTsNCj4gPj4+IAl9DQo+ID4+PiB9DQo+ID4+Pg0KPiA+Pg0KPiA+PiBJ IGNhbiBzZWUgaG93IHlvdSBpbnRlbmRlZCB1c2UgaXQsIG9ubHkgdGhleSBkb24ndCBuZWVkIHRv IGJlIGJpdGZpZWxkIGFuZCB1c2luZw0KPiA+PiB3aXRoIHZhbHVlIHNhdmVzIGJpdHMuDQo+ID4+ IEFsc28gSSB0aGluayBnb29kIHRvIHJlc2VydmUgc29tZSBiaXRzIGZvciBmdXR1cmUgbW9kZXMu DQo+ID4+DQo+ID4NCj4gPiAiQlVSU1RfVkVDVE9SX01PREVfTUFTSyA9ICgweDNGIDw8IDIpIiBo YXMgcmVzZXJ2ZWQgNjMgbm9uLXplcm8gYml0cyBvbiBwb3NpdGlvbiAyIH4gNy4NCj4gPiBUaGVu IGZyb20gYml0IDgsIGEgbmV3IGRlZmluaXRpb246IEJVUlNUX1NDQVRURVJFRCA9ICgxIDw8IDgp Lg0KPiA+DQo+ID4gInVzaW5nIHdpdGggdmFsdWUgc2F2ZXMgYml0cyIgLS0gU29ycnksIEkgZGlk bid0IGdldCB0aGUgcG9pbnQuIDotKA0KPiA+IHZlY3Rvcl9tb2RlID0gKG9wdGlvbnMgJiBCVVJT VF9WRUNUT1JfTU9ERV9NQVNLKSA+PiBCVVJTVF9WRUNUT1JfTU9ERV9JRFgNCj4gPg0KPiA+IEZy b20gYWJvdmUsICd2ZWN0b3JfbW9kZSdzIGJpdHMgYXJlIGZyb20gJ29wdGlvbnMnIGJpdHMgc3Ry ZWFtLCBob3cgdG8gc2F2ZSBiaXRzID8NCj4gPiBJbiBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlz IHNvbWUga2luZCBvZiBtb3JlLWJpdC1maWVsZCwgbm90IGVhY2gtYml0LWZpZWxkLg0KPiA+DQo+ ID4gSSBkZWZpbmVkIHRoZW0gdG9nZXRoZXIsIHNvIGNhbiBxdWljayBjaGVjayB0aGUgdmVjdG9y IHR5cGUsIGxpa2UNCj4gPiAob3B0aW9ucyAmIEJVUlNUX1ZFQ1RPUl9NT0RFX01BU0spID09IEJV UlNUX05FT04uDQo+ID4NCj4gPj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiAJQlVSU1RfU0NBVFRFUkVE ID0gKDEgPDwgOCksDQo+ID4+Pj4+IAlCVVJTVF9CVUxLX0FMTE9DID0gKDEgPDwgOSksDQo+ID4+ Pj4+IAlCVVJTVF9OT1JNQUwgPSAoMSA8PCAxMCksDQo+ID4+Pj4NCj4gPj4+PiBOb3Qgc3VyZSBh Ym91dCB0aGlzIG9uZSwgd2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNjYWxhcj8NCj4g Pj4+Pg0KPiA+Pj4NCj4gPj4+IEV4dHJhY3QgaXQgZnJvbSB0aGUgZnVuY3Rpb24gbmFtZSBhbmQg dGhlIGRlYnVnIG1lc3NhZ2UuDQo+ID4+Pg0KPiA+Pj4gCWlmIChwa3RfYnVyc3QgPT0gaTQwZV9y ZWN2X3NjYXR0ZXJlZF9wa3RzKQ0KPiA+Pj4gCQlvcHRpb25zID0gQlVSU1RfU0NBTEFSIHwgQlVS U1RfU0NBVFRFUkVEOw0KPiA+Pj4gCWVsc2UgaWYgKHBrdF9idXJzdCA9PSBpNDBlX3JlY3ZfcGt0 c19idWxrX2FsbG9jKQ0KPiA+Pj4gCQlvcHRpb25zID0gQlVSU1RfU0NBTEFSIHwgQlVSU1RfQlVM S19BTExPQzsNCj4gPj4+IAllbHNlIGlmIChwa3RfYnVyc3QgPT0gaTQwZV9yZWN2X3BrdHMpDQo+ ID4+PiAJCW9wdGlvbnMgPSBCVVJTVF9TQ0FMQVIgfCBCVVJTVF9OT1JNQUw7DQo+ID4+DQo+ID4+ IFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAnQlVSU1RfU0NBTEFSJyAmICJCVVJTVF9T Q0FMQVIgfCBCVVJTVF9OT1JNQUwiID8NCj4gPg0KPiA+IElNTywgIlNDQUxBUiIgc2hvdWxkIGJl ICJub24tVmVjdG9yIiA/IExpa2UgIkJVUlNUX1ZFQ1RPUiIgd2lsbCBhcHBlbmQgd2l0aA0KPiA+ ICJTU0UvQVZYMiIgZXRjLCAiU0NBTEFSIiB3aWxsIGFwcGVuZCB3aXRoIG90aGVyIG9wdGlvbiBi aXRzLiAiTm9ybWFsIiBpcyBqdXN0DQo+ID4gaGFuZGluZyB0aGUgRGVzY3JpcHRvciBvbmUgYnkg b25lIGFzICpub3JtYWwqLiBBcyBJIHNhaWQsIEkgZ290IHRoaXMgbmFtZSBpZGVhDQo+ID4gZnJv bSB0aGUgb3JpZ2luYWwgbG9nIHRvIHRyeSBjb3ZlciB0aGUgcmlnaHQgYnVyc3QgYmVoYXZpb3Jz LiA6KQ0KPiANCj4gV2h5IHVzaW5nIGFuIGFkZGl0aW9uYWwgZmxhZyB0byBzYXkgdGhlcmUgaXMg bm90IGFkZGl0aW9uYWwgZmVhdHVyZS4NCj4gSWYgbWJ1ZiBidWxrIGFsbG9jIHN1cHBvcnRlZCBp dCBpczogU0NBTEFSIHwgQlVMS19BTExPQw0KPiBpZiBzY2F0dGVyZWQgcGFja2V0cyBzdXBwb3J0 ZWQgaXQgaXM6IFNDQUxBUiB8IFNDQVRURVJFRA0KPiBJZiBubyBhZGRpdGlvbmFsIGZlYXR1cmUg c3VwcG9ydGVkLCB3aHkgbm90IGp1c3QgU0NBTEFSID8NCj4gDQoNCklmIEkgdW5kZXJzdGFuZCBj b3JyZWN0bHksIHJlbW92ZWQgdGhlIHVubmVjZXNzYXJ5ICdCVVJTVF9OT1JNQUwnID8NCg==