From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 91C4B11A4; Mon, 25 Mar 2019 04:39:06 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Mar 2019 20:39:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,256,1549958400"; d="scan'208";a="134428412" Received: from kmsmsx155.gar.corp.intel.com ([172.21.73.106]) by fmsmga008.fm.intel.com with ESMTP; 24 Mar 2019 20:39:04 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.210]) by KMSMSX155.gar.corp.intel.com ([169.254.15.89]) with mapi id 14.03.0415.000; Mon, 25 Mar 2019 11:39:03 +0800 From: "Zhao1, Wei" To: "Yigit, Ferruh" , "dev@dpdk.org" CC: "stable@dpdk.org" , "stephen@networkplumber.org" , "Ananyev, Konstantin" Thread-Topic: [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API Thread-Index: AQHU4GFyXPe53M0yN0G4YLqSpzGFL6YXN+gAgAR/amA= Date: Mon, 25 Mar 2019 03:39:02 +0000 Message-ID: References: <1552896961-33681-1-git-send-email-wei.zhao1@intel.com> <1553224548-37749-1-git-send-email-wei.zhao1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API 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: Mon, 25 Mar 2019 03:39:07 -0000 SGksIA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFlpZ2l0LCBGZXJy dWgNCj4gU2VudDogRnJpZGF5LCBNYXJjaCAyMiwgMjAxOSAxMDo1NiBQTQ0KPiBUbzogWmhhbzEs IFdlaSA8d2VpLnpoYW8xQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogc3RhYmxlQGRw ZGsub3JnOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgQW5hbnlldiwgS29uc3RhbnRpbg0K PiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLXN0 YWJsZV0gW1BBVENIIHYzXSBhcHAvdGVzdHBtZDogZml4IHN1cHBvcnQgb2YgaGV4IHN0cmluZw0K PiBwYXJzZXIgZm9yIGZsb3cgQVBJDQo+IA0KPiBPbiAzLzIyLzIwMTkgMzoxNSBBTSwgV2VpIFpo YW8gd3JvdGU6DQo+ID4gVGhlcmUgaXMgbmVlZCBmb3IgdXNlcnMgdG8gc2V0IGNvbmZpZ3VyYXRp b24gb2YgSEVYIG51bWJlciBmb3IgUlNTDQo+ID4ga2V5LiBUaGUga2V5IGJ5dGUgc2hvdWxkIGJl IHBhc3MgZG93biBhcyBoZXggbnVtYmVyIG5vdCBhcyBjaGFyDQo+ID4gc3RyaW5nLiBUaGlzIHBh dGNoIGVuYWJsZSBjbWRsaW5lIGZsb3cgcGFyc2UgSEVYIG51bWJlciwgaW4gb3JkZXIgdG8NCj4g PiBub3QgdXNpbmcgc3RyaW5nIHdoaWNoIHBhc3MgQVNJQyBudW1iZXIuDQo+ID4NCj4gPiBGaXhl czogZjRkNjIzZjk2MTE5ICgiYXBwL3Rlc3RwbWQ6IGZpeCBtaXNzaW5nIFJTUyBmaWVsZHMgaW4g Zmxvdw0KPiA+IGFjdGlvbiIpDQo+ID4gQ2M6IHN0YWJsZUBkcGRrLm9yZw0KPiA+DQo+ID4gU2ln bmVkLW9mZi1ieTogV2VpIFpoYW8gPHdlaS56aGFvMUBpbnRlbC5jb20+DQo+ID4gVGVzdGVkLWJ5 OiBQZW5nIFl1YW4gPHl1YW4ucGVuZ0BpbnRlbC5jb20+DQo+IA0KPiA8Li4uPg0KPiANCj4gPiBA QCAtNDQ3NSw2ICs0NDg2LDEzOCBAQCBwYXJzZV9zdHJpbmcoc3RydWN0IGNvbnRleHQgKmN0eCwg Y29uc3Qgc3RydWN0DQo+IHRva2VuICp0b2tlbiwNCj4gPiAgCXJldHVybiAtMTsNCj4gPiAgfQ0K PiA+DQo+ID4gK3N0YXRpYyB1aW50MzJfdA0KPiA+ICtnZXRfaGV4X3ZhbChjaGFyIGMpDQo+ID4g K3sNCj4gPiArCXN3aXRjaCAoYykgew0KPiA+ICsJY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcy JzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzoNCj4gPiArCWNhc2UgJzYnOiBjYXNlICc3 JzogY2FzZSAnOCc6IGNhc2UgJzknOg0KPiA+ICsJCXJldHVybiBjIC0gJzAnOw0KPiA+ICsJY2Fz ZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzogY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNlICdGJzoN Cj4gPiArCQlyZXR1cm4gYyAtICdBJyArIDEwOw0KPiA+ICsJY2FzZSAnYSc6IGNhc2UgJ2InOiBj YXNlICdjJzogY2FzZSAnZCc6IGNhc2UgJ2UnOiBjYXNlICdmJzoNCj4gPiArCQlyZXR1cm4gYyAt ICdhJyArIDEwOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtwYXJzZV9oZXhfc3RyaW5nKGNvbnN0 IGNoYXIgKnNyYywgdWludDhfdCAqZHN0LCB1aW50MzJfdCAqc2l6ZSkgew0KPiA+ICsJY29uc3Qg Y2hhciAqYzsNCj4gPiArCXVpbnQzMl90IGk7DQo+ID4gKw0KPiA+ICsJLyogQ2hlY2sgaW5wdXQg cGFyYW1ldGVycyAqLw0KPiA+ICsJaWYgKChzcmMgPT0gTlVMTCkgfHwNCj4gPiArCQkoZHN0ID09 IE5VTEwpIHx8DQo+ID4gKwkJKHNpemUgPT0gTlVMTCkgfHwNCj4gPiArCQkoKnNpemUgPT0gMCkp DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJaWYgKCgqc2l6ZSAmIDEpICE9IDApDQo+ID4gKwkJ cmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCWZvciAoYyA9IHNyYywgaSA9IDA7IGkgPCAqc2l6ZTsg YysrLCBpKyspIHsNCj4gPiArCQlpZiAoaXN4ZGlnaXQoKmMpKQ0KPiA+ICsJCQljb250aW51ZTsN Cj4gPiArCQllbHNlDQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkq c2l6ZSA9ICpzaXplIC8gMjsNCj4gPiArDQo+ID4gKwkvKiBDb252ZXJ0IGNoYXJzIHRvIGJ5dGVz ICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgKnNpemU7IGkrKykNCj4gPiArCQlkc3RbaV0gPSBn ZXRfaGV4X3ZhbChzcmNbMiAqIGldKSAqIDE2ICsNCj4gPiArCQkJZ2V0X2hleF92YWwoc3JjWzIg KiBpICsgMV0pOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+IA0KPiBJIGNhbiBz ZWUgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQgYWxyZWFkeSBidXQgd2hhdCB3b3VsZCB5b3UgdGhp bmsgdXBkYXRpbmcNCj4gdGhlICdwYXJzZV9oZXhfc3RyaW5nJyBzb21ldGhpbmcgbGlrZSBmb2xs b3dpbmcsIGl0IGlzIGxlc3MgY29kZSB0byBtYWludGFpbjoNCj4gDQo+IHN0YXRpYyBpbnQNCj4g cGFyc2VfaGV4X3N0cmluZyhjb25zdCBjaGFyICpzcmMsIHVpbnQ4X3QgKmRzdCwgdWludDMyX3Qg KnNpemUpIHsNCj4gICBpbnQgbGVuOw0KPiAgIGludCBpDQo+ICAgZm9yIChpID0gMCwgbGVuID0g MDsgaSA8ICpzaXplOyBpICs9IDIpIHsNCj4gICAgIGNoYXIgdG1wWzNdOw0KPiAgICAgc25wcmlu dGYodG1wLCAzLCBzcmMgKyBpKTsNCj4gICAgIGRzdFtsZW4rK10gPSBzdHJ0b3VsKHRtcCwgTlVM TCwgMTYpOw0KPiAgIH0NCj4gICBkc3RbbGVuXSA9IDA7DQo+ICAgKnNpemUgPSBsZW47DQo+ICAg cmV0dXJuIDA7DQo+IH0NCj4gDQo+IChpbmRlZWQgd2l0aCBiZXR0ZXIgZXJyb3IgY2hlY2tpbmcg b24gc3RydG91bCA7KSApDQoNCg0KV2h5IGRlbGV0ZSB0aGVzZSBjaGVjayBmcm9tIHBhcnNlX2hl eF9zdHJpbmcoKT8NCiANCgkvKiBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzICovDQoJaWYgKChzcmMg PT0gTlVMTCkgfHwNCgkoZHN0ID09IE5VTEwpIHx8DQoJCShzaXplID09IE5VTEwpIHx8DQoJCSgq c2l6ZSA9PSAwKSkNCgkJcmV0dXJuIC0xOw0KCWlmICgoKnNpemUgJiAxKSAhPSAwKQ0KCQlyZXR1 cm4gLTE7DQoJZm9yIChjID0gc3JjLCBpID0gMDsgaSA8ICpzaXplOyBjKyssIGkrKykgew0KCQlp ZiAoaXN4ZGlnaXQoKmMpKQ0KCQkJY29udGludWU7DQoJCWVsc2UNCgkJCXJldHVybiAtMTsNCgl9 DQoNCg0KDQo+IA0KPiA8Li4uPg0KPiANCj4gPiArCS8qIE91dHB1dCBidWZmZXIgaXMgbm90IG5l Y2Vzc2FyaWx5IE5VTC10ZXJtaW5hdGVkLiAqLw0KPiA+ICsJbWVtY3B5KGJ1ZiwgaGV4X3RtcCwg aGV4bGVuKTsNCj4gPiArCW1lbXNldCgodWludDhfdCAqKWJ1ZiArIGxlbiwgMHgwMCwgc2l6ZSAt IGhleGxlbik7DQo+IA0KPiBDYW4ndCB0aGlzIG92ZXJmbG93IHRoZSAnYnVmJz8gc2luY2UgImxl biA9IDIgKiBoZXhsZW4iDQo+IEkgZ3Vlc3MgaW50ZW50aW9uIGlzICJidWYgKyBoZXhsZW4iDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id E877CA05D3 for ; Mon, 25 Mar 2019 04:39:10 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2E1A12BF7; Mon, 25 Mar 2019 04:39:09 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 91C4B11A4; Mon, 25 Mar 2019 04:39:06 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Mar 2019 20:39:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,256,1549958400"; d="scan'208";a="134428412" Received: from kmsmsx155.gar.corp.intel.com ([172.21.73.106]) by fmsmga008.fm.intel.com with ESMTP; 24 Mar 2019 20:39:04 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.210]) by KMSMSX155.gar.corp.intel.com ([169.254.15.89]) with mapi id 14.03.0415.000; Mon, 25 Mar 2019 11:39:03 +0800 From: "Zhao1, Wei" To: "Yigit, Ferruh" , "dev@dpdk.org" CC: "stable@dpdk.org" , "stephen@networkplumber.org" , "Ananyev, Konstantin" Thread-Topic: [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API Thread-Index: AQHU4GFyXPe53M0yN0G4YLqSpzGFL6YXN+gAgAR/amA= Date: Mon, 25 Mar 2019 03:39:02 +0000 Message-ID: References: <1552896961-33681-1-git-send-email-wei.zhao1@intel.com> <1553224548-37749-1-git-send-email-wei.zhao1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API 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" Message-ID: <20190325033902.htZPw9-NQGrNSidaApUk_NL1htsnDeinLyrBbPKGB_k@z> SGksIA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFlpZ2l0LCBGZXJy dWgNCj4gU2VudDogRnJpZGF5LCBNYXJjaCAyMiwgMjAxOSAxMDo1NiBQTQ0KPiBUbzogWmhhbzEs IFdlaSA8d2VpLnpoYW8xQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogc3RhYmxlQGRw ZGsub3JnOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgQW5hbnlldiwgS29uc3RhbnRpbg0K PiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLXN0 YWJsZV0gW1BBVENIIHYzXSBhcHAvdGVzdHBtZDogZml4IHN1cHBvcnQgb2YgaGV4IHN0cmluZw0K PiBwYXJzZXIgZm9yIGZsb3cgQVBJDQo+IA0KPiBPbiAzLzIyLzIwMTkgMzoxNSBBTSwgV2VpIFpo YW8gd3JvdGU6DQo+ID4gVGhlcmUgaXMgbmVlZCBmb3IgdXNlcnMgdG8gc2V0IGNvbmZpZ3VyYXRp b24gb2YgSEVYIG51bWJlciBmb3IgUlNTDQo+ID4ga2V5LiBUaGUga2V5IGJ5dGUgc2hvdWxkIGJl IHBhc3MgZG93biBhcyBoZXggbnVtYmVyIG5vdCBhcyBjaGFyDQo+ID4gc3RyaW5nLiBUaGlzIHBh dGNoIGVuYWJsZSBjbWRsaW5lIGZsb3cgcGFyc2UgSEVYIG51bWJlciwgaW4gb3JkZXIgdG8NCj4g PiBub3QgdXNpbmcgc3RyaW5nIHdoaWNoIHBhc3MgQVNJQyBudW1iZXIuDQo+ID4NCj4gPiBGaXhl czogZjRkNjIzZjk2MTE5ICgiYXBwL3Rlc3RwbWQ6IGZpeCBtaXNzaW5nIFJTUyBmaWVsZHMgaW4g Zmxvdw0KPiA+IGFjdGlvbiIpDQo+ID4gQ2M6IHN0YWJsZUBkcGRrLm9yZw0KPiA+DQo+ID4gU2ln bmVkLW9mZi1ieTogV2VpIFpoYW8gPHdlaS56aGFvMUBpbnRlbC5jb20+DQo+ID4gVGVzdGVkLWJ5 OiBQZW5nIFl1YW4gPHl1YW4ucGVuZ0BpbnRlbC5jb20+DQo+IA0KPiA8Li4uPg0KPiANCj4gPiBA QCAtNDQ3NSw2ICs0NDg2LDEzOCBAQCBwYXJzZV9zdHJpbmcoc3RydWN0IGNvbnRleHQgKmN0eCwg Y29uc3Qgc3RydWN0DQo+IHRva2VuICp0b2tlbiwNCj4gPiAgCXJldHVybiAtMTsNCj4gPiAgfQ0K PiA+DQo+ID4gK3N0YXRpYyB1aW50MzJfdA0KPiA+ICtnZXRfaGV4X3ZhbChjaGFyIGMpDQo+ID4g K3sNCj4gPiArCXN3aXRjaCAoYykgew0KPiA+ICsJY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcy JzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzoNCj4gPiArCWNhc2UgJzYnOiBjYXNlICc3 JzogY2FzZSAnOCc6IGNhc2UgJzknOg0KPiA+ICsJCXJldHVybiBjIC0gJzAnOw0KPiA+ICsJY2Fz ZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzogY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNlICdGJzoN Cj4gPiArCQlyZXR1cm4gYyAtICdBJyArIDEwOw0KPiA+ICsJY2FzZSAnYSc6IGNhc2UgJ2InOiBj YXNlICdjJzogY2FzZSAnZCc6IGNhc2UgJ2UnOiBjYXNlICdmJzoNCj4gPiArCQlyZXR1cm4gYyAt ICdhJyArIDEwOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtwYXJzZV9oZXhfc3RyaW5nKGNvbnN0 IGNoYXIgKnNyYywgdWludDhfdCAqZHN0LCB1aW50MzJfdCAqc2l6ZSkgew0KPiA+ICsJY29uc3Qg Y2hhciAqYzsNCj4gPiArCXVpbnQzMl90IGk7DQo+ID4gKw0KPiA+ICsJLyogQ2hlY2sgaW5wdXQg cGFyYW1ldGVycyAqLw0KPiA+ICsJaWYgKChzcmMgPT0gTlVMTCkgfHwNCj4gPiArCQkoZHN0ID09 IE5VTEwpIHx8DQo+ID4gKwkJKHNpemUgPT0gTlVMTCkgfHwNCj4gPiArCQkoKnNpemUgPT0gMCkp DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJaWYgKCgqc2l6ZSAmIDEpICE9IDApDQo+ID4gKwkJ cmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCWZvciAoYyA9IHNyYywgaSA9IDA7IGkgPCAqc2l6ZTsg YysrLCBpKyspIHsNCj4gPiArCQlpZiAoaXN4ZGlnaXQoKmMpKQ0KPiA+ICsJCQljb250aW51ZTsN Cj4gPiArCQllbHNlDQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkq c2l6ZSA9ICpzaXplIC8gMjsNCj4gPiArDQo+ID4gKwkvKiBDb252ZXJ0IGNoYXJzIHRvIGJ5dGVz ICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgKnNpemU7IGkrKykNCj4gPiArCQlkc3RbaV0gPSBn ZXRfaGV4X3ZhbChzcmNbMiAqIGldKSAqIDE2ICsNCj4gPiArCQkJZ2V0X2hleF92YWwoc3JjWzIg KiBpICsgMV0pOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+IA0KPiBJIGNhbiBz ZWUgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQgYWxyZWFkeSBidXQgd2hhdCB3b3VsZCB5b3UgdGhp bmsgdXBkYXRpbmcNCj4gdGhlICdwYXJzZV9oZXhfc3RyaW5nJyBzb21ldGhpbmcgbGlrZSBmb2xs b3dpbmcsIGl0IGlzIGxlc3MgY29kZSB0byBtYWludGFpbjoNCj4gDQo+IHN0YXRpYyBpbnQNCj4g cGFyc2VfaGV4X3N0cmluZyhjb25zdCBjaGFyICpzcmMsIHVpbnQ4X3QgKmRzdCwgdWludDMyX3Qg KnNpemUpIHsNCj4gICBpbnQgbGVuOw0KPiAgIGludCBpDQo+ICAgZm9yIChpID0gMCwgbGVuID0g MDsgaSA8ICpzaXplOyBpICs9IDIpIHsNCj4gICAgIGNoYXIgdG1wWzNdOw0KPiAgICAgc25wcmlu dGYodG1wLCAzLCBzcmMgKyBpKTsNCj4gICAgIGRzdFtsZW4rK10gPSBzdHJ0b3VsKHRtcCwgTlVM TCwgMTYpOw0KPiAgIH0NCj4gICBkc3RbbGVuXSA9IDA7DQo+ICAgKnNpemUgPSBsZW47DQo+ICAg cmV0dXJuIDA7DQo+IH0NCj4gDQo+IChpbmRlZWQgd2l0aCBiZXR0ZXIgZXJyb3IgY2hlY2tpbmcg b24gc3RydG91bCA7KSApDQoNCg0KV2h5IGRlbGV0ZSB0aGVzZSBjaGVjayBmcm9tIHBhcnNlX2hl eF9zdHJpbmcoKT8NCiANCgkvKiBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzICovDQoJaWYgKChzcmMg PT0gTlVMTCkgfHwNCgkoZHN0ID09IE5VTEwpIHx8DQoJCShzaXplID09IE5VTEwpIHx8DQoJCSgq c2l6ZSA9PSAwKSkNCgkJcmV0dXJuIC0xOw0KCWlmICgoKnNpemUgJiAxKSAhPSAwKQ0KCQlyZXR1 cm4gLTE7DQoJZm9yIChjID0gc3JjLCBpID0gMDsgaSA8ICpzaXplOyBjKyssIGkrKykgew0KCQlp ZiAoaXN4ZGlnaXQoKmMpKQ0KCQkJY29udGludWU7DQoJCWVsc2UNCgkJCXJldHVybiAtMTsNCgl9 DQoNCg0KDQo+IA0KPiA8Li4uPg0KPiANCj4gPiArCS8qIE91dHB1dCBidWZmZXIgaXMgbm90IG5l Y2Vzc2FyaWx5IE5VTC10ZXJtaW5hdGVkLiAqLw0KPiA+ICsJbWVtY3B5KGJ1ZiwgaGV4X3RtcCwg aGV4bGVuKTsNCj4gPiArCW1lbXNldCgodWludDhfdCAqKWJ1ZiArIGxlbiwgMHgwMCwgc2l6ZSAt IGhleGxlbik7DQo+IA0KPiBDYW4ndCB0aGlzIG92ZXJmbG93IHRoZSAnYnVmJz8gc2luY2UgImxl biA9IDIgKiBoZXhsZW4iDQo+IEkgZ3Vlc3MgaW50ZW50aW9uIGlzICJidWYgKyBoZXhsZW4iDQo=