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 786526930 for ; Tue, 4 Feb 2014 12:20:09 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 04 Feb 2014 03:21:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.95,779,1384329600"; d="scan'208";a="477749714" Received: from irsmsx104.ger.corp.intel.com ([163.33.3.159]) by orsmga002.jf.intel.com with ESMTP; 04 Feb 2014 03:21:27 -0800 Received: from irsmsx105.ger.corp.intel.com (163.33.3.28) by IRSMSX104.ger.corp.intel.com (163.33.3.159) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 4 Feb 2014 11:21:26 +0000 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.67]) by IRSMSX105.ger.corp.intel.com ([169.254.7.202]) with mapi id 14.03.0123.003; Tue, 4 Feb 2014 11:21:26 +0000 From: "Burakov, Anatoly" To: "dev@dpdk.org" Thread-Topic: [dpdk-dev] How to debug packet sends to virtual functions Thread-Index: AQHPHRuI8bgzdh5jzkyOgfTBecAYapqfKtwAgAQ84oCAAYA8gIAABN+AgAAFVQCAAAiWwA== Date: Tue, 4 Feb 2014 11:21:25 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: [dpdk-dev] How to debug packet sends to virtual functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Feb 2014 11:20:10 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91 bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIE1hdHMgTGlsamVncmVuDQo+IFNlbnQ6IFR1ZXNk YXksIEZlYnJ1YXJ5IDA0LCAyMDE0IDEwOjQ1IEFNDQo+IFRvOiBqaWdzYXcNCj4gQ2M6IGRldkBk cGRrLm9yZw0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBIb3cgdG8gZGVidWcgcGFja2V0IHNl bmRzIHRvIHZpcnR1YWwgZnVuY3Rpb25zDQo+IA0KPiBIaSBRaW5nbGFpLA0KPiANCj4gVGhhbmtz IGZvciB0aGUgcmVzcG9uc2UhDQo+IA0KPiBNeSBwcmV2aW91cyBhdHRlbXB0IHdhcyB3aXRoIGl4 Z2JlIGxvYWRlZCBpbiB0aGUgaG9zdC4gSSBhbHNvIG5lZWRlZCB0byBsb2FkDQo+IGl4Z2JldmYs IGJ1dCB0aGlzIHNlZW1zIHRvIGJlIGJlY2F1c2Ugb2YgYSBzaG9ydC1jb21pbmcgaW4gbGlidmly dC4gTWF5YmUNCj4gbG9hZGluZyBpeGdiZXZmIGFuZCB0aGVuIHVuYmluZCBpdCB3aGVuIHJ1bm5p bmcgdGhlIGd1ZXN0IGlzIHdoYXQgY2F1c2VzIG15DQo+IHByb2JsZW1zLiBJIGNvdWxkIHJlY2Vp dmUgcGFja2V0cyB3aXRoIHRoaXMgc2V0dXAsIGJ1dCBub3QgdHJhbnNtaXQuIEkgdXNlZA0KPiBl eHRyYSBkZWJ1ZyB0byBzeXNsb2csIGFuZCBpdCBzaG93ZWQgdGhhdCBwYWNrZXRzIHdhcyBwbGFj ZWQgaW4gdGhlIHRyYW5zbWl0DQo+IHF1ZXVlLCBidXQgdGhlc2UgcGFja2V0cyB3YXMgbmV2ZXIg c2VudC4NCj4gDQo+IEknbGwgc2VlIGlmIEkgY2FuIGdldCB0aGlzIHdvcmtpbmcgd2l0aG91dCBs b2FkaW5nIGl4Z2JldmYgaW4gdGhlIGhvc3QuDQo+IA0KPiBXaGF0IGluc3RydWN0aW9ucyBkaWQg eW91IGZvbGxvdyB0byBnZXQgdGhpcyB3b3JraW5nPyBEaWQgeW91IGRvIGFueQ0KPiBkZXZpYXRp b24gZnJvbSB0aGUgaW5zdHJ1Y3Rpb25zPw0KPiANCj4gUmVnYXJkcw0KPiBNYXRzDQo+IA0KPiBP biBUdWUsIEZlYiA0LCAyMDE0IGF0IDExOjI2IEFNLCBqaWdzYXcgPGppZ3Nhd0BnbWFpbC5jb20+ IHdyb3RlOg0KPiA+IEhpIE1hdHMsDQo+ID4NCj4gPiBJJ3ZlIHRyaWVkIHZmIHdpdGggODI1OTlF QiBhbmQgaXQgd29ya3MgZmluZS4gQXMgbG9uZyBhcyB0aGUgVkYgaXMNCj4gPiB2aXNpYmxlIGlu IGd1ZXN0LCBEUERLJ3MgVkYgZHJpdmVyIHNob3VsZCB3b3JrIGp1c3QgYXMgaXhnYmV2Ziwgd2hp Y2gNCj4gPiBzaGFyZXMgbW9yZSBvciBsZXNzIHRoZSBzYW1lIGNvZGUuDQo+ID4NCj4gPiBJIGRv bid0IHVuZGVyc3RhbmQgd2h5IHlvdSB3b3VsZCBleHBlY3QgRFBES0BndWVzdCB0byB3b3JrIGFz IFZGLA0KPiA+IHdoaWxlIHRoZSBob3N0IGhhcyBubyBpeGdiZSBsb2FkZWQuDQo+ID4gVG8gbWFr ZSBmdXJ0aGVyIGRlYnVnIEknZCBzdWdnZXN0IGNvbXBpbGUgaXhnYmUgZHJpdmVyIHdpdGggeW91 ciBvd24NCj4gPiBzeXNsb2dzLiBBdCBsZWFzdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUg c2lnbmFsbGluZyBiZXR3ZWVuIHZmDQo+ID4gYW5kIGl4Z2JlIGRyaXZlcnMuDQo+ID4NCj4gPiAt UWluZ2xhaQ0KPiA+DQo+ID4NCj4gPiBPbiBUdWUsIEZlYiA0LCAyMDE0IGF0IDEyOjA4IFBNLCBN YXRzIExpbGplZ3Jlbg0KPiA+IDxsaWxqZWdyZW4ubWF0czJAZ21haWwuY29tPiB3cm90ZToNCj4g Pj4gVGhpcyBpcyBteSBmb3VydGggbWFpbCBpbiBteSBkZXNwZXJhdGUgYXR0ZW1wdCB0byBnZXQg RFBESyBydW5uaW5nIGluDQo+ID4+IEtWTSBhbmQgbm8gY29tbWVudHMgc28gZmFyLCBub3QgZXZl biBhbnkgIml0IHdvcmtzIGZvciBtZSIuIEFtIEkgdGhlDQo+ID4+IG9ubHkgb25lIGNyYXp5IGVu b3VnaCB0byBiZWxpZXZlIHRoYXQgdGhpcyBjYW4gYmUgZG9uZT8NCj4gPj4NCj4gPj4gQW55d2F5 LCBvdXQgb2YgZGVzcGVyYXRpb24gSSB0cmllZCB0byBnZXQgaXQgcnVubmluZyB3aXRob3V0IGhh dmluZw0KPiA+PiBpeGdiZSBvciBpeGdiZXZmIGtlcm5lbCBtb2R1bGVzIGxvYWRlZCBpbiBob3N0 IG5vciBndWVzdC4gSSBmb2xsb3dlZA0KPiA+PiB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBQcm9n cmFtbWVyJ3MgR3VpZGUsIGNoYXB0ZXIgIlNldHRpbmcgVXAgYSBLVk0NCj4gPj4gVmlydHVhbCBN YWNoaW5lIE1vbml0b3IiLCB1c2luZyB0aGUgUE1EIHZlcnNpb24gb2YgdGhlIGluc3RydWN0aW9u cy4NCj4gPj4NCj4gPj4gSSBnZXQgYXMgZmFyIGFzIGJlaW5nIGFibGUgdG8gc2VlIG15IGZvdXIg dmlydHVhbCBmdW5jdGlvbnMgaW4gdGhlDQo+ID4+IGd1ZXN0IHVzaW5nICJsc3BjaSIuIEJ1dCBz dGFydGluZyB0aGUgRFBESyBhcHBsaWNhdGlvbiBnaXZlcyBtZSB0aGUNCj4gPj4gZm9sbG93aW5n IGVycm9yOg0KPiA+Pg0KPiA+PiBQTUQ6ICAgIFRoZSBNQUMgYWRkcmVzcyBpcyBub3QgdmFsaWQu DQo+ID4+ICAgICAgICAgVGhlIG1vc3QgbGlrZWx5IGNhdXNlIG9mIHRoaXMgZXJyb3IgaXMgdGhh dCB0aGUgVk0gaG9zdA0KPiA+PiAgICAgICAgIGhhcyBub3QgYXNzaWduZWQgYSB2YWxpZCBNQUMg YWRkcmVzcyB0byB0aGlzIFZGIGRldmljZS4NCj4gPj4gICAgICAgICBQbGVhc2UgY29uc3VsdCB0 aGUgRFBESyBSZWxlYXNlIE5vdGVzIChGQVEgc2VjdGlvbikgZm9yDQo+ID4+ICAgICAgICAgYSBw b3NzaWJsZSBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0uDQo+ID4+DQo+ID4+IFRoaXMgbWF5IGJl IHRydWUsIGJ1dCB3aXRob3V0IGFueSBrZXJuZWwgbW9kdWxlcyBsb2FkZWQsIGhvdyBhbSBJDQo+ ID4+IHN1cHBvc2VkIHRvIGNoYW5nZSBhbnkgTUFDIGFkZHJlc3Nlcz8gQ2FuIHRoaXMgYmUgZG9u ZSBmcm9tIHdpdGhpbg0KPiA+PiBEUERLPw0KPiA+Pg0KPiA+PiBBcyBhIHNpZGUtbm90ZSwgSSBk aWQgdHJ5IHRvIGxvYWQgaXhnYmV2ZiBpbiB0aGUgZ3Vlc3QsIGJ1dCBpdA0KPiA+PiBwcm9kdWNl ZCBubyBpbnRlcmZhY2VzLiBUaGVyZSB3YXMgbm8gZXJyb3IgbWVzc2FnZXMgaW4gdGhlIHN5c2xv Zw0KPiA+PiB0aG91Z2guDQo+ID4+DQo+ID4+IElzIGl0IHBvc3NpYmxlIHRvIGdldCBYNTQwIHdv cmtpbmcgaW4gYSBndWVzdCBvciBzaG91bGQgSSBzd2l0Y2ggaGFyZHdhcmU/DQo+ID4+DQo+ID4+ IFNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgYXNzdW1lcyBJIGtub3cgdGhlIGNvbW1hbmQgbGluZSB0 byBLVk0gdG8NCj4gPj4gc3RhcnQgbXkgZ3Vlc3QgKHdoaWNoIEkgZG8gbm90KSwgSSBjYW5ub3Qg Zm9sbG93ZWQgdGhlbSBwcmVjaXNlbHkuIEkNCj4gPj4gdXNlIHZpcnNoIGFuZCBYTUwgZmlsZSwg YW5kIG1heWJlIEkndmUgbWlzdW5kZXJzdG9vZCBob3cgdG8gdHJhbnNsYXRlDQo+ID4+IHRoZSBw Y2ktYXNzaWduIHBhcmFtZXRlciB0byBYTUwgY29kZS4gSSBjdXJyZW50bHkgdXNlIGEgPGhvc3Rk ZXY+DQo+ID4+IGVudHJ5LCBidXQgSSd2ZSBhbHNvIHRyaWVkIDxpbnRlcmZhY2UgdHlwZT0naG9z dGRldic+LiBOZWl0aGVyIGhhcw0KPiA+PiBiZWVuIHdvcmtpbmcgZm9yIG1lIHNvIGZhciwgdGhv dWdoIHRoZSA8aW50ZXJmYWNlPiB2ZXJzaW9uIGdvdCBtZSBhcw0KPiA+PiBmYXIgYXMgYmVpbmcg YWJsZSB0byByZWNlaXZlIHBhY2tldHMgYXQgbGVhc3QsIGJ1dCBub3QgdHJhbnNtaXR0aW5nLg0K PiA+Pg0KPiA+PiBSZWdhcmRzDQo+ID4+IE1hdHMNCj4gPj4NCj4gPj4NCj4gPj4gT24gTW9uLCBG ZWIgMywgMjAxNCBhdCAxMjoxMyBQTSwgTWF0cyBMaWxqZWdyZW4NCj4gPj4gPGxpbGplZ3Jlbi5t YXRzMkBnbWFpbC5jb20+IHdyb3RlOg0KPiA+Pj4gTmV2ZXIgbWluZCwgSSB3YXMgaGl0IGJ5IHRo ZSBpbmZhbW91cyBNQUMgc3Bvb2ZpbmcuLi4gSSBnb3QgaXQNCj4gPj4+IHdvcmtpbmcgb24gYm90 aCB0aGUgaG9zdCBhbmQgdGhlIGd1ZXN0IHVzaW5nIGl4Z2JldmYgZHJpdmVyLCBzbw0KPiA+Pj4g YXBwYXJlbnRseSB0aGUgY2FibGVzIGFyZSBjb3JyZWN0bHkgYXR0YWNoZWQuDQo+ID4+Pg0KPiA+ Pj4gVXNpbmcgRFBESyBpcyBzdGlsbCBuby1nby4gSXQgY2FuIHJlY2VpdmUgcGFja2V0cywgYnV0 IHdoZW4gc2VuZGluZw0KPiA+Pj4gdGhlIHBhY2tldHMgdGhlIGZ1bmN0aW9uIHJldHVybnMgc3Vj Y2VzcywgYnV0IHRoZSBkcml2ZXIgcmVwb3J0cw0KPiA+Pj4gbm90aGluZyAoaS5lLiBubyBlcnJv cnMsIG5vIHNlbnQgcGFja2V0cywgbm8gbm90aGluZywgZXhjZXB0IGZvcg0KPiA+Pj4gcmVjZWl2 ZWQgcGFja2V0cyBvZiBjb3Vyc2UpLg0KPiA+Pj4NCj4gPj4+IFdoYXQgY291bGQgY2F1c2UgdGhp cyBiZWhhdmlvcj8NCj4gPj4+DQo+ID4+PiBSZWdhcmRzDQo+ID4+PiBNYXRzDQo+ID4+Pg0KPiA+ Pj4gT24gRnJpLCBKYW4gMzEsIDIwMTQgYXQgNzozMCBQTSwgTWF0cyBMaWxqZWdyZW4NCj4gPj4+ IDxsaWxqZWdyZW4ubWF0czJAZ21haWwuY29tPiB3cm90ZToNCj4gPj4+PiBJIGhhdmUgYSBmb2xs b3ctdXAgb24gdGhpczoNCj4gPj4+Pg0KPiA+Pj4+IGl4Z2JlIHZlcnNpb24gMy4xMy4xMC1rDQo+ ID4+Pj4gaXhnYmV2ZiB2ZXJzaW9uIDIuNy4xMi1rDQo+ID4+Pj4NCj4gPj4+PiAoVGhlc2UgYXJl IHdoYXQgd2FzIHByb3ZpZGVkIGJ5IFVidW50dSAxMy4xMCkNCj4gPj4+Pg0KPiA+Pj4+IEkgdHJp ZWQgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvbiB0aGUgaG9zdCwgYmVmb3JlIHN0YXJ0aW5nIHRo ZSBndWVzdDoNCj4gPj4+PiAxKSBzdWRvIHJtbW9kIGl4Z2JlDQo+ID4+Pj4gMikgc3VkbyBtb2Rw cm9iZSBpeGdiZSBtYXhfdmZzPTINCj4gPj4+PiAzKSBzdWRvIGlmY29uZmlnIGVtMSB1cCAgIyBU aGlzIGlzIHRoZSBwaHlzaWNhbCBmdW5jdGlvbg0KPiA+Pj4+IDQpIHN1ZG8gaWZjb25maWcgZW0x XzAgMTkyLjE2OC4yLjIgICMgVGhpcyBpcyB0aGUgdmlydHVhbCBmdW5jdGlvbg0KPiA+Pj4+IDUp IHBpbmcgMTkyLjE2OC4yLjENCj4gPj4+Pg0KPiA+Pj4+IEkgY2FuIHNlZSB0aGF0IHRoZSBwaW5n IHJlcXVlc3QgcmVhY2hlcyBpdHMgdGFyZ2V0LCBhbmQgYSByZXBseSBpcw0KPiA+Pj4+IHNlbnQg YmFjay4gQnV0IHRoaXMgcmVwbHkgaXMgbm90IHJlY2VpdmVkIGJ5IHRoZSBwaW5nIHNoZWxsIGNv bW1hbmQuDQo+ID4+Pj4NCj4gPj4+PiBXaHk/DQo+ID4+Pj4NCj4gPj4+PiBSZWdhcmRzLA0KPiA+ Pj4+IE1hdHMNCj4gPj4+Pg0KPiA+Pj4+IE9uIFdlZCwgSmFuIDI5LCAyMDE0IGF0IDY6NTYgUE0s IE1hdHMgTGlsamVncmVuDQo+ID4+Pj4gPGxpbGplZ3Jlbi5tYXRzMkBnbWFpbC5jb20+IHdyb3Rl Og0KPiA+Pj4+PiBJJ20gdHJ5aW5nIHRvIGdldCBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIGwy ZndkIGV4YW1wbGUgcnVubmluZywNCj4gPj4+Pj4gYW5kIGhhdmUgcHJvYmxlbXMgd2l0aCBwYWNr ZXRzIGJlaW5nIHNpbGVudGx5IHRocm93biBhd2F5LiBJIGNhbg0KPiA+Pj4+PiByZWNlaXZlIHBh Y2tldHMsIGFuZCBteSBwcmludGYncyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGFja2V0cyBhcmUNCj4g Pj4+Pj4gYmVpbmcgc2VudCB0byB0aGUgY29ycmVjdCBwb3J0LCB1c2luZyBjb3JyZWN0IE1BQyBh ZGRyZXNzIGFzDQo+ID4+Pj4+IHNvdXJjZSBhZGRyZXNzLiBBbmQgc3RpbGwsIHRoZSBwYWNrZXRz IGFyZSBsb3N0Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBTaW5jZSB0aGUgcG9ydCBpcyBhIHZpcnR1YWwg ZnVuY3Rpb24sIGl0IHNlZW1zIGxpa2UgSSBjYW5ub3QgdXNlDQo+ID4+Pj4+IHRjcGR1bXAgb24g aXQgdG8gc2VlIHRoZSBuZXR3b3JrIHRyYWZmaWMuIFRoZXJlIGlzIG5vdGhpbmcgY29taW5nDQo+ ID4+Pj4+IG91dCBvZiB0aGUgY2FibGUgKGFjdGl2aXR5IGxpZ2h0IG5vdCBmbGFzaGluZywgdGhl IHJlY2VpdmluZyBlbmQNCj4gPj4+Pj4gcnVubmluZyB0Y3BkdW1wIGRvZXMgbm90IHNlZSBhbnkg dHJhZmZpYykuDQo+ID4+Pj4+DQo+ID4+Pj4+IEknbSB1c2luZyB0d28gWDU0MCB3aXRoIHR3byB2 aXJ0dWFsIGZ1bmN0aW9ucyBlYWNoLiBUaGUNCj4gPj4+Pj4gYXBwbGljYXRpb24gcnVucyBpbiBh IEtWTS9RZW11IGVudmlyb25tZW4uDQo+ID4+Pj4+DQo+ID4+Pj4+IEFueSBzdWdnZXN0aW9ucyBo b3cgdG8gZGVidWcgdGhpcz8NCj4gPj4+Pj4NCj4gPj4+Pj4gUmVnYXJkcywNCj4gPj4+Pj4gTWF0 cw0KDQpIaSBNYXRzDQoNCkJhc2ljYWxseSwgdGhlcmUgaXMgbm8gd2F5IHRvIGNoYW5nZSBNQUMg YWRkcmVzcyBvZiBhIFZGIGRldmljZSBmcm9tIHdpdGhpbiB0aGUgVk0sIHlvdSBoYXZlIHRvIGRv IGl0IG9uIHRoZSBob3N0LiBTbywgd2hhdGV2ZXIgdGhlIEZBUSBzZWN0aW9uIGRlc2NyaWJlcyAo aS5lLiBpcCBsaW5rIC4uLikgaGFzIHRvIGJlIGRvbmUgb24gdGhlIGhvc3QsIG5vdCBpbnNpZGUg dGhlIFZNLiBUaGF0IGlzLCB5b3UgaGF2ZSB0byBsb2FkIGl4Z2JlIGtlcm5lbCBtb2R1bGUgb24g dGhlIGhvc3Qgd2l0aCBtYXhfdmZzPSBzZXQgdG8gd2hhdGV2ZXIgbnVtYmVyIG9mIFZGIGRldmlj ZXMgeW91IG5lZWQsIGFuZCB0aGVuIGdvIHRocm91Z2ggZWFjaCBWRiBkZXZpY2UgYW5kIGFzc2ln biBhIE1BQyBhZGRyZXNzIHZpYSB0aGUgImlwIGxpbmsiIGNvbW1hbmQsIGFzIGRlc2NyaWJlZCBp biB0aGUgRkFRIHNlY3Rpb24gb2YgdGhlIERQREsgUmVsZWFzZSBOb3Rlcy4gWW91IGNhbiB0aGVu IGxvYWQgZWl0aGVyIGl4Z2JldmYgb3IgRFBESyBWRiBkcml2ZXJzIG9uIHRoZSBndWVzdCwgYW5k IHRoZXkgd2lsbCBpbml0aWFsaXplIGNvcnJlY3RseS4NCg0KQmVzdCByZWdhcmRzLA0KQW5hdG9s eSBCdXJha292DQpEUERLIFNXIEVuZ2luZWVyDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbnRlbCBTaGFubm9uIExpbWl0ZWQK UmVnaXN0ZXJlZCBpbiBJcmVsYW5kClJlZ2lzdGVyZWQgT2ZmaWNlOiBDb2xsaW5zdG93biBJbmR1 c3RyaWFsIFBhcmssIExlaXhsaXAsIENvdW50eSBLaWxkYXJlClJlZ2lzdGVyZWQgTnVtYmVyOiAz MDgyNjMKQnVzaW5lc3MgYWRkcmVzczogRHJvbW9yZSBIb3VzZSwgRWFzdCBQYXJrLCBTaGFubm9u LCBDby4gQ2xhcmUKClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgbWF5IGNvbnRhaW4g Y29uZmlkZW50aWFsIG1hdGVyaWFsIGZvciB0aGUgc29sZSB1c2Ugb2YgdGhlIGludGVuZGVkIHJl Y2lwaWVudChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24gYnkgb3RoZXJzIGlzIHN0cmlj dGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBs ZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwgY29waWVzLgoK