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 0C59FA2EEB for ; Tue, 10 Sep 2019 17:35:37 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D6BF31EF72; Tue, 10 Sep 2019 17:35:36 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 5AB171EF71 for ; Tue, 10 Sep 2019 17:35:34 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Sep 2019 08:35:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,489,1559545200"; d="scan'208";a="191848868" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by FMSMGA003.fm.intel.com with ESMTP; 10 Sep 2019 08:35:32 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 10 Sep 2019 08:35:32 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.113]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.140]) with mapi id 14.03.0439.000; Tue, 10 Sep 2019 23:35:31 +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+qUP//ftIA//95m+A= Date: Tue, 10 Sep 2019 15:35:30 +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> <167f00f2-134e-3a6d-9346-88d85f2060fb@intel.com> In-Reply-To: <167f00f2-134e-3a6d-9346-88d85f2060fb@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNjA1YmU3MTctYzM0Ny00YjAyLWI2ZDQtYTFmNzJjOTJkMTJkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiditiSDdlY25SbkNwamxKekJkS29MNDRmMVRVY2xVRTI2Y3Z4SDRuRGRROERGelRrMzlZa0ZVeFpRcGRcL0ZqV2sifQ== 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 bnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxMCwgMjAxOSAyMzozNA0KPiBUbzogV2FuZywgSGFpeXVl IDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFy ZHNvbkBpbnRlbC5jb20+DQo+IENjOiBSYXkgS2luc2VsbGEgPG1kckBhc2hyb2UuZXU+OyBkZXZA ZHBkay5vcmc7IFN1biwgQ2hlbm1pbiA8Y2hlbm1pbi5zdW5AaW50ZWwuY29tPg0KPiBTdWJqZWN0 OiBSZTogW2RwZGstZGV2XSBbUkZDIHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3IgZ2V0 dGluZyB0cmFjZSBpbmZvcm1hdGlvbg0KPiANCj4gT24gOS8xMC8yMDE5IDQ6MTcgUE0sIFdhbmcs IEhhaXl1ZSB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJv bTogWWlnaXQsIEZlcnJ1aA0KPiA+PiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMTAsIDIwMTkg MjM6MDANCj4gPj4gVG86IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgUmlj aGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+PiBDYzogUmF5 IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1PjsgZGV2QGRwZGsub3JnOyBTdW4sIENoZW5taW4gPGNo ZW5taW4uc3VuQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1JGQyB2 MiAxLzNdIGV0aGRldjogYWRkIHRoZSBBUEkgZm9yIGdldHRpbmcgdHJhY2UgaW5mb3JtYXRpb24N Cj4gPj4NCj4gPj4gT24gOS8xMC8yMDE5IDEyOjQxIFBNLCBXYW5nLCBIYWl5dWUgd3JvdGU6DQo+ ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBZaWdpdCwgRmVy cnVoDQo+ID4+Pj4gU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDEwLCAyMDE5IDE3OjE1DQo+ID4+ Pj4gVG86IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgUmljaGFyZHNvbiwg QnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBSYXkgS2luc2Vs bGEgPG1kckBhc2hyb2UuZXU+OyBkZXZAZHBkay5vcmc7IFN1biwgQ2hlbm1pbiA8Y2hlbm1pbi5z dW5AaW50ZWwuY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtSRkMgdjIgMS8z XSBldGhkZXY6IGFkZCB0aGUgQVBJIGZvciBnZXR0aW5nIHRyYWNlIGluZm9ybWF0aW9uDQo+ID4+ Pj4NCj4gPj4+PiBPbiA5LzEwLzIwMTkgOTozNyBBTSwgV2FuZywgSGFpeXVlIHdyb3RlOg0KPiA+ Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+IEZyb206IFlpZ2l0LCBG ZXJydWgNCj4gPj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxMCwgMjAxOSAxNjowNw0K PiA+Pj4+Pj4gVG86IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgUmljaGFy ZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+Pj4+Pj4gQ2M6IFJh eSBLaW5zZWxsYSA8bWRyQGFzaHJvZS5ldT47IGRldkBkcGRrLm9yZzsgU3VuLCBDaGVubWluIDxj aGVubWluLnN1bkBpbnRlbC5jb20+DQo+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBb UkZDIHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3IgZ2V0dGluZyB0cmFjZSBpbmZvcm1h dGlvbg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9uIDkvMTAvMjAxOSA1OjM2IEFNLCBXYW5nLCBIYWl5 dWUgd3JvdGU6DQo+ID4+Pj4+Pj4gVGhhbmtzIEZlcnJ1aCwgQnJ1Y2UuDQo+ID4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+Pj4gRnJvbTogWWln aXQsIEZlcnJ1aA0KPiA+Pj4+Pj4+PiBTZW50OiBNb25kYXksIFNlcHRlbWJlciA5LCAyMDE5IDIx OjE4DQo+ID4+Pj4+Pj4+IFRvOiBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBp bnRlbC5jb20+DQo+ID4+Pj4+Pj4+IENjOiBXYW5nLCBIYWl5dWUgPGhhaXl1ZS53YW5nQGludGVs LmNvbT47IFJheSBLaW5zZWxsYSA8bWRyQGFzaHJvZS5ldT47IGRldkBkcGRrLm9yZzsgU3VuLA0K PiA+Pj4+IENoZW5taW4NCj4gPj4+Pj4+Pj4gPGNoZW5taW4uc3VuQGludGVsLmNvbT4NCj4gPj4+ Pj4+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1JGQyB2MiAxLzNdIGV0aGRldjogYWRkIHRo ZSBBUEkgZm9yIGdldHRpbmcgdHJhY2UgaW5mb3JtYXRpb24NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4gT24gOS85LzIwMTkgMTo1MCBQTSwgRmVycnVoIFlpZ2l0IHdyb3RlOg0KPiA+Pj4+Pj4+Pj4g T24gOS85LzIwMTkgMTo0MCBQTSwgQnJ1Y2UgUmljaGFyZHNvbiB3cm90ZToNCj4gPj4+Pj4+Pj4+ PiBPbiBNb24sIFNlcCAwOSwgMjAxOSBhdCAxMjoyMzozNlBNICswMTAwLCBGZXJydWggWWlnaXQg d3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+IE9uIDkvNy8yMDE5IDM6NDIgQU0sIFdhbmcsIEhhaXl1ZSB3 cm90ZToNCj4gPj4+Pj4+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+ Pj4+Pj4+Pj4+IEZyb206IFlpZ2l0LCBGZXJydWgNCj4gPj4+Pj4+Pj4+Pj4+PiBTZW50OiBGcmlk YXksIFNlcHRlbWJlciA2LCAyMDE5IDIyOjIyDQo+ID4+Pj4+Pj4+Pj4+Pj4gVG86IFJheSBLaW5z ZWxsYSA8bWRyQGFzaHJvZS5ldT47IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29t Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IENjOiBkZXZAZHBkay5vcmcNCj4gPj4+Pj4+Pj4+Pj4+PiBTdWJq ZWN0OiBSZTogW2RwZGstZGV2XSBbUkZDIHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3Ig Z2V0dGluZyB0cmFjZSBpbmZvcm1hdGlvbg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+ Pj4gT24gOC8xMy8yMDE5IDE6NTEgUE0sIFJheSBLaW5zZWxsYSB3cm90ZToNCj4gPj4+Pj4+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gT24gMTMvMDgvMjAxOSAw NDoyNCwgU3RlcGhlbiBIZW1taW5nZXIgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+Pj4+PiBPbiBUdWUs IDEzIEF1ZyAyMDE5IDExOjA2OjEwICswODAwDQo+ID4+Pj4+Pj4+Pj4+Pj4+PiBIYWl5dWUgV2Fu ZyA8aGFpeXVlLndhbmdAaW50ZWwuY29tPiB3cm90ZToNCj4gPj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4+Pj4+Pj4gRW5oYW5jZSB0aGUgUE1EIHRvIHN1cHBvcnQgcmV0cmlldmluZyB0cmFj ZSBpbmZvcm1hdGlvbiBsaWtlDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gUngvVHggYnVyc3Qgc2VsZWN0 aW9uIGV0Yy4NCj4gPj4+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IFNpZ25lZC1v ZmYtYnk6IEhhaXl1ZSBXYW5nIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+Pj4+ Pj4+Pj4gLS0tDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhk ZXYuYyAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIGxp Yi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaCAgICAgIHwgIDkgKysrKysrKysrDQo+ID4+Pj4+ Pj4+Pj4+Pj4+Pj4gIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXZfY29yZS5oIHwgIDQgKysr Kw0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICAzIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKykN Cj4gPj4+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIv bGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMgYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2 LmMNCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBpbmRleCAxN2QxODNlLi42MDk4ZmFkIDEwMDY0NA0KPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+ICsrKyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ Pj4+Pj4+Pj4+Pj4+Pj4+IEBAIC00MDgzLDYgKzQwODMsMjQgQEAgcnRlX2V0aF90eF9xdWV1ZV9p bmZvX2dldCh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1ZV9pZCwNCj4gPj4+Pj4+Pj4+ Pj4+Pj4+PiAgfQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gIGludA0K PiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICtydGVfZXRoX3RyYWNlX2luZm9fZ2V0KHVpbnQxNl90IHBvcnRf aWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCSAgICAgICBlbnVt IHJ0ZV9ldGhfdHJhY2UgdHlwZSwgY2hhciAqYnVmLCBpbnQgc3opDQo+ID4+Pj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4+PiBCZXR0ZXIgdG8gdXNlIHN0cnVjdCBhcyBhcmd1bWVudCBpbnN0ZWFk IG9mIGluZGl2aWR1YWwgdmFyaWFibGVzIGJlY2F1c2UgaXQgaXMNCj4gPj4+Pj4+Pj4+Pj4+PiBl YXNpZXIgdG8gZXh0ZW5kIHRoZSBzdHJ1Y3QgbGF0ZXIgaWYgbmVlZGVkLg0KPiA+Pj4+Pj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCXN0cnVjdCBy dGVfZXRoX2RldiAqZGV2Ow0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+Pj4+Pj4+ PiArCVJURV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQocG9ydF9pZCwgLUVOT0RFVik7DQo+ ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJaWYgKGJ1ZiA9PSBOVUxM KQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4+Pj4+Pj4+Pj4+ Pj4+ICsNCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArCWRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9p ZF07DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4+ICsJUlRFX0ZVTkNf UFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0+dHJhY2VfaW5mb19nZXQsIC1FTk9UU1VQKTsN Cj4gPj4+Pj4+Pj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gKwlyZXR1cm4gZGV2LT5k ZXZfb3BzLT50cmFjZV9pbmZvX2dldChkZXYsIHF1ZXVlX2lkLCB0eXBlLCBidWYsIHN6KTsNCj4g Pj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+PiBXaGF0IGlmIHF1ZXVlaWQgaXMgb3V0 IG9mIGJvdW5kcz8NCj4gPj4+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+PiBUaGUgYmln Z2VyIHByb2JsZW0gaXMgdGhhdCB0aGlzIGluZm9ybWF0aW9uIGlzIGxpa2UgYSBsb2cgbWVzc2Fn ZQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pj4gYW5kIHVuc3RydWN0dXJlZCwgd2hpY2ggbWFrZXMgaXQgZGV2 aWNlIHNwZWNpZmljIGFuZCB1c2VsZXNzIGZvciBhdXRvbWF0aW9uLg0KPiA+Pj4+Pj4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiBJTUhPIC0gdGhpcyBpcyBtdWNoIGJldHRlciBpbXBsZW1lbnRl ZCBhcyBhIGNhcGFiaWxpdHkgYml0ZmllbGQsIHRoYXQNCj4gPj4+Pj4+Pj4+Pj4+Pj4gY2FuIGJl IHF1ZXJpZWQuDQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiArMSB0byByZXR1cm4g dGhlIGRhdGFwYXRoIGNhcGFiaWxpdHkgYXMgYml0ZmllbGQuDQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+Pj4+PiBBbHNvICsxIHRvIGhhdmUgYSBuZXcgQVBJLA0KPiA+Pj4+Pj4+Pj4+Pj4+ IC0gSSBhbSBub3Qgc3VyZSBhYm91dCB0aGUgQVBJIG5hbWUsICdydGVfZXRoX3RyYWNlX2luZm9f Z2V0KCknLCBjYW4gd2UgZmluZA0KPiA+Pj4+Pj4+Pj4+Pj4+IHNvbWV0aGluZyBiZXR0ZXIgaW5z dGVhZCBvZiAndHJhY2UnIHRoZXJlLg0KPiA+Pj4+Pj4+Pj4+Pj4+IC0gSSB0aGluayB3ZSBzaG91 bGQgbGltaXQgdGhpcyBBUEkgb25seSB0byBnZXQgY3VycmVudCBkYXRhcGF0aCBjb25maWd1cmF0 aW9uLA0KPiA+Pj4+Pj4+Pj4+Pj4+IGZvciBjbGFyaXR5IG9mIHRoZSBBUEkgZG9uJ3QgcmV0dXJu IGNhcGFiaWxpdHkgb3Igbm90IGRhdGFwYXRoIHJlbGF0ZWQgY29uZmlnLg0KPiA+Pj4+Pj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4gQWxzbyB0aGlzIGluZm9ybWF0aW9uIG5vdCBhbHdheXMgc3Vw cG9ydGVkIGluIHF1ZXVlIGxldmVsLCB3aGF0IGRvIHlvdSB0aGluaw0KPiA+Pj4+Pj4+Pj4+Pj4+ IGhhdmluZyBhYmlsaXR5IHRvIGdldCB0aGlzIGluZm9ybWF0aW9uIGluIHBvcnQgbGV2ZWwsDQo+ ID4+Pj4+Pj4+Pj4+Pj4gbGlrZSB0aGlzIEFQSSBjYW4gcmV0dXJuIGEgc3RydWN0LCB3aGljaCBt YXkgaGF2ZSBhIGZpZWxkIHRoYXQgc2F5cyBpZiB0aGUNCj4gPj4+Pj4+Pj4+Pj4+PiBvdXRwdXQg aXMgZm9yIHF1ZXVlIG9yIHBvcnQsIG9yIHRoaXMgY2FuIGJlIGFub3RoZXIgYml0ZmllbGQsIHdo YXQgZG8geW91IHRoaW5rPw0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+Pj4gI2RlZmluZSBSWF9TQ0FMQVIJKDFVTEwgPCAwKQ0KPiA+Pj4+Pj4+Pj4+Pj4gI2Rl ZmluZSBSWF9WRUNUT1JfQVZYMiAgLi4uDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IFdo YXQgYWJvdXQgaGF2aW5nIFJYX1ZFQ1RPUiB2YWx1ZSwgbGF0ZXIgYW5vdGhlciBiaXQgZ3JvdXAg Zm9yIHRoZSBkZXRhaWxzIG9mDQo+ID4+Pj4+Pj4+Pj4+IHRoZSB2ZWN0b3JpemF0aW9uOg0KPiA+ Pj4+Pj4+Pj4+PiBTU0UNCj4gPj4+Pj4+Pj4+Pj4gQVZYMg0KPiA+Pj4+Pj4+Pj4+PiBBVlg1MTIN Cj4gPj4+Pj4+Pj4+Pj4gTkVPTg0KPiA+Pj4+Pj4+Pj4+PiBBTFRJVkVDDQo+ID4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+IFNpbmNlIGFib3ZlIG9wdGlvbnMgY2FuIGV4aXN0IHRvZ2V0aGVyLCB3 aGF0IGFib3V0IHVzaW5nIHZhbHVlcyBmb3IgdGhlbSBpbnN0ZWFkDQo+ID4+Pj4+Pj4+Pj4+IG9m IGJpdGZpZWxkcz8gUmVzZXJ2aW5nIDQgYml0cywgMl40ID0gMTYsIGNhbiBiZSBlbm91Z2ggSSB0 aGluayBmb3IgbG9uZyB0ZXJtLg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IFJhdGhlciB0 aGFuIGhhdmluZyBuYW1lZCB2ZWN0b3IgdHlwZXMsIHdlIGp1c3QgbmVlZCB0byB3b3JyeSBhYm91 dCB0aGUgb25lcw0KPiA+Pj4+Pj4+Pj4+IGZvciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUuIFRo ZXJlZm9yZSBJJ2Qgc3VnZ2VzdCBqdXN0IHVzaW5nIHZlY3Rvcg0KPiA+Pj4+Pj4+Pj4+IHdpZHRo cywgb25lIGJpdCBlYWNoIGZvciAxNkIsIDMyQiBhbmQgNjRCIHZlY3RvciBzdXBwb3J0LiBGb3Ig c3VwcG9ydGluZw0KPiA+Pj4+Pj4+Pj4+IG11bHRpcGxlIHZhbHVlcywgMTYgY29tYmluYXRpb25z IGlzIG5vdCBlbm91Z2ggZm9yIGFsbCB0aGUgcG9zc2liaWxpdGllcy4NCj4gPj4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IHZlY3RvciB3aWR0aCBjYW4gYmUgYW4gb3B0aW9uIHRv bywgbm8gb2JqZWN0aW9uIHRoZXJlLiBCdXQgdGhpcyBpcyBvbmx5IGZvcg0KPiA+Pj4+Pj4+Pj4g Y3VycmVudCBjb25maWd1cmF0aW9uLCBzbyBpdCBjYW4gYmUgYSBjb21iaW5hdGlvbiwgd2UgaGF2 ZSBub3cgNSB0eXBlcyBhbmQNCj4gPj4+Pj4+Pj4+IGFsbG9jYXRpbmcgc3BhY2UgZm9yIDE2Lg0K PiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gY29ycmVjdGlvbjogaXQgY2FuICpu b3QqIGJlIGEgY29tYmluYXRpb24NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEkgdGhpbmsgd2UgY2Fu IG1lcmdlIHRoZSBSWF9WRUNUT1IgYW5kIFRYX1ZFQ1RPUiB0b2dldGhlciwgdXNlIDYgYml0cyBm b3IgdmVjdG9yDQo+ID4+Pj4+Pj4gbW9kZSBkZXRhaWwuIEFuZCBmb3IgdmVjdG9yIHdpZHRoLCB0 aGUgU1NFLCBORU9OIG5hbWUgc2hvdWxkIGluZGljYXRlcyBpdCA/DQo+ID4+Pj4+Pj4NCj4gPj4+ Pj4+PiBJIHJlbmFtZWQgdGhlIGRlZmluaXRpb25zIHRvIHRyeSB0byBtYWtlIHRoaW5ncyBjbGVh ci4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IGVudW0gcnRlX2V0aF9idXJzdF9tb2RlX29wdGlvbiB7 DQo+ID4+Pj4+Pj4gCUJVUlNUX1NDQUxBUiA9ICgxIDw8IDApLA0KPiA+Pj4+Pj4+IAlCVVJTVF9W RUNUT1IgPSAoMSA8PCAxKSwNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IAlCVVJTVF9WRUNUT1JfTU9E RV9NQVNLID0gKDB4M0YgPDwgMiksDQo+ID4+Pj4+Pj4gCUJVUlNUX0FMVElWRUMgICAgICAgICAg PSAoMSA8PCAyKSwNCj4gPj4+Pj4+PiAJQlVSU1RfTkVPTiAgICAgICAgICAgICA9ICgyIDw8IDIp LA0KPiA+Pj4+Pj4+IAlCVVJTVF9TU0UgICAgICAgICAgICAgID0gKDMgPDwgMiksDQo+ID4+Pj4+ Pj4gCUJVUlNUX0FWWDIgICAgICAgICAgICAgPSAoNCA8PCAyKSwNCj4gPj4+Pj4+PiAJQlVSU1Rf QVZYNTEyICAgICAgICAgICA9ICg1IDw8IDIpLA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IERvIHdlIG5l ZWQgdG8gaGF2ZSBiaXRmaWVsZHMgZm9yIHRoaXMsIEkgd2FzIHN1Z2dlc3RpbmcgcmVzZXJ2ZSA0 IGJpdHMsIGJpdCAyLTUNCj4gPj4+Pj4+IChpbmNsdXNpdmUpIGFuZCB1c2UgdGhlaXIgdmFsdWU6 DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gQlVSU1RfVkVDVE9SX01PREVfSURYICA9IDINCj4gPj4+Pj4+ IEJVUlNUX1ZFQ1RPUl9NT0RFX1NJWkUgPSA0DQo+ID4+Pj4+PiBCVVJTVF9WRUNUT1JfTU9ERV9N QVNLID0NCj4gPj4+Pj4+IAkoKDEgPDwgQlVSU1RfVkVDVE9SX01PREVfU0laRSkgLSAxKSA8PCBC VVJTVF9WRUNUT1JfTU9ERV9JRFgNCj4gPj4+Pj4+DQo+ID4+Pj4+PiB2ZWN0b3JfbW9kZSA9IChv cHRpb25zICYgQlVSU1RfVkVDVE9SX01PREVfTUFTSykgPj4gQlVSU1RfVkVDVE9SX01PREVfSURY DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gaWYgKHZlY3Rvcl9tb2RlID09IDApIC8vIEJVUlNUX1NTRQ0K PiA+Pj4+Pj4gaWYgKHZlY3Rvcl9tb2RlID09IDEpIC8vIEJVUlNUX0FWWDINCj4gPj4+Pj4+IGlm ICh2ZWN0b3JfbW9kZSA9PSAyKSAvLyBCVVJTVF9BVlg1MTINCj4gPj4+Pj4+IGlmICh2ZWN0b3Jf bW9kZSA9PSAzKSAvLyBCVVJTVF9ORU9ODQo+ID4+Pj4+PiAuLi4uDQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4gQ2FuIGFueSB2ZWN0b3IgbW9kZSBiZSBjb21iaW5hdGlvbiBvZiBhYm92ZSwgaWYgbm90IHdo eSB1c2UgYml0ZmllbGRzPw0KPiA+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gSSB1c2UgaXQgYXMg dGhpcyB0byAqc2V0KiAuLi4NCj4gPj4+Pj4NCj4gPj4+Pj4gCWVsc2UgaWYgKHBrdF9idXJzdCA9 PSBpNDBlX3JlY3Zfc2NhdHRlcmVkX3BrdHNfdmVjX2F2eDIpDQo+ID4+Pj4+IAkJb3B0aW9ucyA9 IEJVUlNUX1ZFQ1RPUiB8IEJVUlNUX0FWWDIgfCBCVVJTVF9TQ0FUVEVSRUQ7DQo+ID4+Pj4+IAll bHNlIGlmIChwa3RfYnVyc3QgPT0gaTQwZV9yZWN2X3BrdHNfdmVjX2F2eDIpDQo+ID4+Pj4+IAkJ b3B0aW9ucyA9IEJVUlNUX1ZFQ1RPUiB8IEJVUlNUX0FWWDI7DQo+ID4+Pj4+IAllbHNlIGlmIChw a3RfYnVyc3QgPT0gaTQwZV9yZWN2X3NjYXR0ZXJlZF9wa3RzX3ZlYykNCj4gPj4+Pj4gCQlvcHRp b25zID0gQlVSU1RfVkVDVE9SIHwgQlVSU1RfU1NFIHwgQlVSU1RfU0NBVFRFUkVEOw0KPiA+Pj4+ PiAJZWxzZSBpZiAocGt0X2J1cnN0ID09IGk0MGVfcmVjdl9wa3RzX3ZlYykNCj4gPj4+Pj4gCQlv cHRpb25zID0gQlVSU1RfVkVDVE9SIHwgQlVSU1RfU1NFOw0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGVu ICpnZXQqIGxpa2UgdGhpcywgc2luY2Ugd2UgcmVzZXJ2ZSB0aGUgYml0IGdyb3VwLg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBzdGF0aWMgdm9pZA0KPiA+Pj4+PiBidXJzdF9tb2RlX29wdGlvbnNfZGlzcGxh eSh1aW50NjRfdCBvcHRpb25zKQ0KPiA+Pj4+PiB7DQo+ID4+Pj4+IAl1aW50NjRfdCB2ZWNfbW9k ZSA9IG9wdGlvbnMgJiBCVVJTVF9WRUNUT1JfTU9ERV9NQVNLOw0KPiA+Pj4+PiAJdWludDY0X3Qg b3B0Ow0KPiA+Pj4+Pg0KPiA+Pj4+PiAJb3B0aW9ucyAmPSB+QlVSU1RfVkVDVE9SX01PREVfTUFT SzsNCj4gPj4+Pj4NCj4gPj4+Pj4gCWZvciAob3B0ID0gMTsgb3B0aW9ucyAhPSAwOyBvcHQgPDw9 IDEsIG9wdGlvbnMgPj49IDEpIHsNCj4gPj4+Pj4gCQlpZiAoIShvcHRpb25zICYgMSkpDQo+ID4+ Pj4+IAkJCWNvbnRpbnVlOw0KPiA+Pj4+Pg0KPiA+Pj4+PiAJCXByaW50ZigiICVzIiwgcnRlX2V0 aF9idXJzdF9tb2RlX29wdGlvbl9uYW1lKG9wdCkpOw0KPiA+Pj4+Pg0KPiA+Pj4+PiAJCWlmIChv cHQgPT0gQlVSU1RfVkVDVE9SKQ0KPiA+Pj4+PiAJCQlwcmludGYoIiglcykiLA0KPiA+Pj4+PiAJ CQkgICAgICAgcnRlX2V0aF9idXJzdF9tb2RlX29wdGlvbl9uYW1lKHZlY19tb2RlKSk7DQo+ID4+ Pj4+IAl9DQo+ID4+Pj4+IH0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEkgY2FuIHNlZSBob3cg eW91IGludGVuZGVkIHVzZSBpdCwgb25seSB0aGV5IGRvbid0IG5lZWQgdG8gYmUgYml0ZmllbGQg YW5kIHVzaW5nDQo+ID4+Pj4gd2l0aCB2YWx1ZSBzYXZlcyBiaXRzLg0KPiA+Pj4+IEFsc28gSSB0 aGluayBnb29kIHRvIHJlc2VydmUgc29tZSBiaXRzIGZvciBmdXR1cmUgbW9kZXMuDQo+ID4+Pj4N Cj4gPj4+DQo+ID4+PiAiQlVSU1RfVkVDVE9SX01PREVfTUFTSyA9ICgweDNGIDw8IDIpIiBoYXMg cmVzZXJ2ZWQgNjMgbm9uLXplcm8gYml0cyBvbiBwb3NpdGlvbiAyIH4gNy4NCj4gPj4+IFRoZW4g ZnJvbSBiaXQgOCwgYSBuZXcgZGVmaW5pdGlvbjogQlVSU1RfU0NBVFRFUkVEID0gKDEgPDwgOCku DQo+ID4+Pg0KPiA+Pj4gInVzaW5nIHdpdGggdmFsdWUgc2F2ZXMgYml0cyIgLS0gU29ycnksIEkg ZGlkbid0IGdldCB0aGUgcG9pbnQuIDotKA0KPiA+Pj4gdmVjdG9yX21vZGUgPSAob3B0aW9ucyAm IEJVUlNUX1ZFQ1RPUl9NT0RFX01BU0spID4+IEJVUlNUX1ZFQ1RPUl9NT0RFX0lEWA0KPiA+Pj4N Cj4gPj4+IEZyb20gYWJvdmUsICd2ZWN0b3JfbW9kZSdzIGJpdHMgYXJlIGZyb20gJ29wdGlvbnMn IGJpdHMgc3RyZWFtLCBob3cgdG8gc2F2ZSBiaXRzID8NCj4gPj4+IEluIG15IHVuZGVyc3RhbmRp bmcsIHRoaXMgaXMgc29tZSBraW5kIG9mIG1vcmUtYml0LWZpZWxkLCBub3QgZWFjaC1iaXQtZmll bGQuDQo+ID4+Pg0KPiA+Pj4gSSBkZWZpbmVkIHRoZW0gdG9nZXRoZXIsIHNvIGNhbiBxdWljayBj aGVjayB0aGUgdmVjdG9yIHR5cGUsIGxpa2UNCj4gPj4+IChvcHRpb25zICYgQlVSU1RfVkVDVE9S X01PREVfTUFTSykgPT0gQlVSU1RfTkVPTi4NCj4gPj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ ID4+Pj4+Pj4gCUJVUlNUX1NDQVRURVJFRCA9ICgxIDw8IDgpLA0KPiA+Pj4+Pj4+IAlCVVJTVF9C VUxLX0FMTE9DID0gKDEgPDwgOSksDQo+ID4+Pj4+Pj4gCUJVUlNUX05PUk1BTCA9ICgxIDw8IDEw KSwNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBOb3Qgc3VyZSBhYm91dCB0aGlzIG9uZSwgd2hhdCBpcyB0 aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNjYWxhcj8NCj4gPj4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+ IEV4dHJhY3QgaXQgZnJvbSB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGRlYnVnIG1lc3NhZ2Uu DQo+ID4+Pj4+DQo+ID4+Pj4+IAlpZiAocGt0X2J1cnN0ID09IGk0MGVfcmVjdl9zY2F0dGVyZWRf cGt0cykNCj4gPj4+Pj4gCQlvcHRpb25zID0gQlVSU1RfU0NBTEFSIHwgQlVSU1RfU0NBVFRFUkVE Ow0KPiA+Pj4+PiAJZWxzZSBpZiAocGt0X2J1cnN0ID09IGk0MGVfcmVjdl9wa3RzX2J1bGtfYWxs b2MpDQo+ID4+Pj4+IAkJb3B0aW9ucyA9IEJVUlNUX1NDQUxBUiB8IEJVUlNUX0JVTEtfQUxMT0M7 DQo+ID4+Pj4+IAllbHNlIGlmIChwa3RfYnVyc3QgPT0gaTQwZV9yZWN2X3BrdHMpDQo+ID4+Pj4+ IAkJb3B0aW9ucyA9IEJVUlNUX1NDQUxBUiB8IEJVUlNUX05PUk1BTDsNCj4gPj4+Pg0KPiA+Pj4+ IFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAnQlVSU1RfU0NBTEFSJyAmICJCVVJTVF9T Q0FMQVIgfCBCVVJTVF9OT1JNQUwiID8NCj4gPj4+DQo+ID4+PiBJTU8sICJTQ0FMQVIiIHNob3Vs ZCBiZSAibm9uLVZlY3RvciIgPyBMaWtlICJCVVJTVF9WRUNUT1IiIHdpbGwgYXBwZW5kIHdpdGgN Cj4gPj4+ICJTU0UvQVZYMiIgZXRjLCAiU0NBTEFSIiB3aWxsIGFwcGVuZCB3aXRoIG90aGVyIG9w dGlvbiBiaXRzLiAiTm9ybWFsIiBpcyBqdXN0DQo+ID4+PiBoYW5kaW5nIHRoZSBEZXNjcmlwdG9y IG9uZSBieSBvbmUgYXMgKm5vcm1hbCouIEFzIEkgc2FpZCwgSSBnb3QgdGhpcyBuYW1lIGlkZWEN Cj4gPj4+IGZyb20gdGhlIG9yaWdpbmFsIGxvZyB0byB0cnkgY292ZXIgdGhlIHJpZ2h0IGJ1cnN0 IGJlaGF2aW9ycy4gOikNCj4gPj4NCj4gPj4gV2h5IHVzaW5nIGFuIGFkZGl0aW9uYWwgZmxhZyB0 byBzYXkgdGhlcmUgaXMgbm90IGFkZGl0aW9uYWwgZmVhdHVyZS4NCj4gPj4gSWYgbWJ1ZiBidWxr IGFsbG9jIHN1cHBvcnRlZCBpdCBpczogU0NBTEFSIHwgQlVMS19BTExPQw0KPiA+PiBpZiBzY2F0 dGVyZWQgcGFja2V0cyBzdXBwb3J0ZWQgaXQgaXM6IFNDQUxBUiB8IFNDQVRURVJFRA0KPiA+PiBJ ZiBubyBhZGRpdGlvbmFsIGZlYXR1cmUgc3VwcG9ydGVkLCB3aHkgbm90IGp1c3QgU0NBTEFSID8N Cj4gPj4NCj4gPg0KPiA+IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHJlbW92ZWQgdGhlIHVu bmVjZXNzYXJ5ICdCVVJTVF9OT1JNQUwnID8NCj4gPg0KPiANCj4gWWVzLCB0aGF0IGlzIHdoYXQg SSBzdWdnZXN0Lg0KDQpHb3QgaXQsIHRoZSBjb2RlIGlzIGNsZWFuIG5vdy4NCg==