From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from m15-12.126.com (m15-12.126.com [220.181.15.12]) by dpdk.org (Postfix) with ESMTP id 9BFAEC3B2 for ; Mon, 27 Apr 2015 02:40:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=F7ZJM qTlEb1b4vifzqOUNgvfiqaY0+ZcQF1/lzamQxQ=; b=J9cs2nqcVoQ346IwoAOBs GVEREgjFbs4Wq271TuzTWhYqQp14LW/MW+psReHx4PraguWbCHw7/qOvZeQT2NiX kj5zDUe8xfeMiSvW2sUoOHGMXJ/QNP4P11JMnUp/OEmSxa/BaAHpOsty3xFGsbCv T7d3FDbiTG66rhOeBWQtAQ= Received: from dpdkdev$126.com ( [111.202.68.2] ) by ajax-webmail-wmsvr12 (Coremail) ; Mon, 27 Apr 2015 08:40:55 +0800 (CST) X-Originating-IP: [111.202.68.2] Date: Mon, 27 Apr 2015 08:40:55 +0800 (CST) From: "Tim Deng" To: "dev@dpdk.org" X-Priority: 3 X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 20150119(59087.7062) Copyright (c) 2002-2015 www.mailtech.cn 126com X-CM-CTRLDATA: Z664OGZvb3Rlcl9odG09NDM1Ojgx MIME-Version: 1.0 Message-ID: <6b690a61.1257.14cf851d7fc.Coremail.dpdkdev@126.com> X-CM-TRANSID: DMqowACHj9+YhT1VM_sFAA--.22763W X-CM-SenderInfo: pgsgyvlhy6ij2wof0z/1tbi9ADook0vUzrHNAABsH X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] how to dump rte_mbuf in gdb 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: Mon, 27 Apr 2015 00:40:59 -0000 SGksCgoKV2hlbiBJIHRyaWVkIHRvIGR1bXAgYSBydGVfbWJ1ZiwgZ2RiIGNvbXBsaWFuZWQgIkF0 dGVtcHQgdG8gcmVzb2x2ZSBhIHZhcmlhYmx5LXNpemVkIHR5cGUgd2hpY2ggYXBwZWFycyBpbiB0 aGUgaW50ZXJpb3Igb2YgYSBzdHJ1Y3R1cmUgdHlwZSIsIGFuZCBydGVfbWJ1ZiBpbmRlZWQgaW5j bHVkZXMgc29tZSB2YXJpYWJseS1zaXplZCB0eXBlIGxpa2UgTUFSS0VSLgoKCkNvdWxkIGFueW9u ZSBzaGFyZSBhIHdvcmthcm91bmQ/CgoKVGhhbmtzLApUaW0= >From keith.wiles@intel.com Mon Apr 27 03:41:14 2015 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 3A6F6C2DC for ; Mon, 27 Apr 2015 03:41:13 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 26 Apr 2015 18:41:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,654,1422950400"; d="scan'208";a="719534321" Received: from orsmsx110.amr.corp.intel.com ([10.22.240.8]) by orsmga002.jf.intel.com with ESMTP; 26 Apr 2015 18:41:12 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by ORSMSX110.amr.corp.intel.com (10.22.240.8) with Microsoft SMTP Server (TLS) id 14.3.224.2; Sun, 26 Apr 2015 18:41:12 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.26]) by fmsmsx156.amr.corp.intel.com ([169.254.13.121]) with mapi id 14.03.0224.002; Sun, 26 Apr 2015 18:41:11 -0700 From: "Wiles, Keith" To: Neil Horman Thread-Topic: [dpdk-dev] Beyond DPDK 2.0 Thread-Index: AdB4KSdm1ftzhuzCQX2G2XNq9ZOWFAGdIAoAABSrQYAAAGfdAAApMFwA///YNYCAAkd+gP//6uAA Date: Mon, 27 Apr 2015 01:41:11 +0000 Message-ID: References: <26FA93C7ED1EAA44AB77D62FBE1D27BA54D1A917@IRSMSX102.ger.corp.intel.com> <20150424175124.GA30624@mhcomputing.net> <553B9706.1060904@bisdn.de> <20150426215644.GA9021@neilslaptop.think-freely.org> In-Reply-To: <20150426215644.GA9021@neilslaptop.think-freely.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.255.69.36] Content-Type: text/plain; charset="utf-8" Content-ID: <288A3A393822904C9F7DE862E2A67FCA@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] Beyond DPDK 2.0 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: Mon, 27 Apr 2015 01:41:14 -0000 DQoNCk9uIDQvMjYvMTUsIDQ6NTYgUE0sICJOZWlsIEhvcm1hbiIgPG5ob3JtYW5AdHV4ZHJpdmVy LmNvbT4gd3JvdGU6DQoNCj5PbiBTYXQsIEFwciAyNSwgMjAxNSBhdCAwNDowODoyM1BNICswMDAw LCBXaWxlcywgS2VpdGggd3JvdGU6DQo+PiANCj4+IA0KPj4gT24gNC8yNS8xNSwgODozMCBBTSwg Ik1hcmMgU3VuZSIgPG1hcmMuc3VuZUBiaXNkbi5kZT4gd3JvdGU6DQo+PiANCj4+ID4NCj4+ID4N Cj4+ID5PbiAyNC8wNC8xNSAxOTo1MSwgTWF0dGhldyBIYWxsIHdyb3RlOg0KPj4gPj4gT24gRnJp LCBBcHIgMjQsIDIwMTUgYXQgMTI6Mzk6NDdQTSAtMDUwMCwgSmF5IFJvbGV0dGUgd3JvdGU6DQo+ PiA+Pj4gSSBjYW4gdGVsbCB5b3UgdGhhdCBpZiBEUERLIHdlcmUgR1BMLWJhc2VkLCBteSBjb21w YW55IHdvdWxkbid0IGJlDQo+PiA+Pj51c2luZw0KPj4gPj4+IGl0LiBJIHN1c3BlY3Qgd2Ugd291 bGRuJ3QgYmUgdGhlIG9ubHkgb25lcy4uLg0KPj4gPj4+DQo+PiA+Pj4gSmF5DQo+PiA+PiBJIGNv dWxkIHNlY29uZCB0aGlzLCBmcm9tIHRoZSBwYXN0IGVtcGxveWVyIHdoZXJlIEkgdXNlZCBpdC4g UmlnaHQNCj4+bm93DQo+PiA+PkkgYW0NCj4+ID4+IHVzaW5nIGl0IGluIGFuIG9wZW4gc291cmNl IGFwcCwgSSBoYXZlIGEgYml0IG9mIEdQTCBoZXJlIGFuZCB0aGVyZQ0KPj5idXQNCj4+ID4+SSdt DQo+PiA+PiB0cnlpbmcgdG8gZ2V0IHJpZCBvZiBpdCBvciBjb25maW5lIGl0IHRvIHNlcGFyYXRl IGFkZHJlc3Mgc3BhY2VzLA0KPj53aGVyZQ0KPj4gPj5pdA0KPj4gPj4gd29uJ3QgaW1wYWN0IHRo ZSBjb3JlIGNvZGUgd3JpdHRlbiBhcm91bmQgRFBESywgYXMgSSBkb24ndCB3YW50IHRvDQo+PmNh dXNlDQo+PiA+PiBoZWFkYWNoZXMgZm9yIGFueSBkb3duc3RyZWFtIHVzZXJzIEkgYXR0cmFjdCBz b21lZGF5Lg0KPj4gPj4NCj4+ID4+IEhhcmQtY29yZSBHUEwgd291bGQgbm90IGJlIHBvc3NpYmxl IGZvciBtb3N0LiBMR1BMIGNvdWxkIGJlIHBvc3NpYmxlLA0KPj4gPj5idXQgSQ0KPj4gPj4gZG9u J3QgdGhpbmsgaXQgY291bGQgYmUgd29ydGggdGhlIHJlbGljZW5zaW5nIGhlYWRhY2hlIGZvciB0 aGF0IHNtYWxsDQo+PiA+PmNoYW5nZS4NCj4+ID4+DQo+PiA+PiBJbnN0ZWFkIHdlIHNob3VsZCBt YWtlIHRoZSBwYXRjaCBwcm9jZXNzIGFzIGVhc3kgYXMgaHVtYW5seSBwb3NzaWJsZQ0KPj5zbw0K Pj4gPj5wZW9wbGUNCj4+ID4+IGFyZSBlbmNvdXJhZ2VkIHRvIHNlbmQgdXMgdGhlIGZpeGVzIGFu ZCBub3QgY2FydCB0aGVtIGFyb3VuZCB0aGVpcg0KPj4gPj5jb21wYW5pZXMNCj4+ID4+IGNvbnN0 YW50bHkuDQo+PiANCj4+ICsxIGFuZCBiZXNpZGVzIHRoZSBHUEwgb3IgTEdQTCBzaGlwIGhhcyBz YWlsZWQgSU1ITyBhbmQgd2UgY2FuIG5vdCBnbw0KPj5iYWNrLg0KPkFjdHVhbGx5LCBJQU5BTCwg YnV0IEkgdGhpbmsgd2UgY2FuLiAgVGhlIEJTRCBsaWNlbnNlIGFsbG93cyB1cyB0byBmb3JrDQo+ YW5kDQo+cmVsaWNlbnNlIHRoZSBjb2RlIEkgdGhpbmssIHVuZGVyIEdQTCBvciBhbnkgb3RoZXIg bGljZW5zZS4gIEknbSBub3QNCj5hZHZvY2F0aW5nDQo+Zm9yIHRoYXQgbWluZCB5b3UsIGp1c3Qg c3VnZ2VzdGluZyB0aGF0IGl0cyBwb3NzaWJsZSBzaG91bGQgaXQgZXZlciBiZWNvbWUNCj5uZWVk ZWQuDQo+DQo+PiA+DQo+PiA+SSBhZ3JlZS4gTXkgZmVlbGluZyBpcyB0aGF0IGFzIHRoZSBudW1i ZXIgb2YgcGF0Y2hlcyBpbiB0aGUgbWFpbGluZw0KPj5saXN0DQo+PiA+Z3Jvd3MsIGtlZXBpbmcg dHJhY2sgb2YgdGhlbSBnZXRzIG1vcmUgYW5kIG1vcmUgY29tcGxpY2F0ZWQuIFBhdGNod29yaw0K Pj4gPndlYnNpdGUgd2FzIGEgd2F5IHRvIHRyeSB0byBhZGRyZXNzIHRoaXMgaXNzdWUuIEkgdGhp bmsgaXQgd2FzIGFuDQo+PiA+aW1wcm92ZW1lbnQsIGJ1dCB0byBiZSBob25lc3QsIHBhdGNod29y ayBsYWNrcyBhIGxvdCBvZiBmdW5jdGlvbmFsaXR5LA0KPj4gPnN1Y2ggYXMgcHJvcGVybHkgdHJh Y2tpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHBhdGNoIChzdXBlcnNlZGluZw0KPj4gPnRo ZW0gYXV0b21hdGljYWxseSksIGFuZCBpdCBsYWNrcyBzb21lIGZpbHRlcmluZyBjYXBhYmlsaXRp ZXMgZS5nLiBwZXINCj4+ID51c2VyLCBwZXIgdGFnL2xhYmVsIG9yIGxpYnJhcnksIGF1dG9tYXRp Y2FsbHkgdHJhY2sgaWYgaXQgaGFzIGJlZW4NCj4+ID5tZXJnZWQsIGdpdmUgYW4gb3ZlcmFsbCBz dGF0dXMgb2YgdGhlIHBlbmRpbmcgdnMgbWVyZ2VkIHBhdGNoZXMsIHNldA0KPj4gPm1pbGVzdG9u ZXMuLi4gSXMgdGhlcmUgYW55IGFsdGVybmF0aXZlIHRvb2wgb3IgaW1wcm92ZWQgdmVyc2lvbiBm b3INCj4+dGhhdD8NCj4+IA0KPkFncmVlZCwgdGhpcyBoYXMgY29tZSB1cCBiZWZvcmUsIG9mZiBs aXN0IHVuZm9ydHVuYXRlbHkuICBUaGUgdm9sdW1lIG9mDQo+cGF0Y2hlcw0KPnNlZW1zIHRvIGJl IGluY3JlYXNpbmcgYXQgc3VjaCBhIHJhdGUgdGhhdCBhIHNpbmdsZSBtYWludGFpbmVyIGhhcw0K PmRpZmZpY3VsdHkNCj5rZWVwaW5nIHVwLiAgSSBwcm9wb3NlZCB0aGF0IHRoZSB3b3JrbG9hZCBi ZSBzcGxpdCBvdXQgdG8gbXVsdGlwbGUNCj5zdWJ0cmVlcywNCj53aXRoIHByZWZpeGVzIGJlaW5n IGFkZGVkIHRvIHBhdGNoIHN1YmplY3RzIG9uIHRoZSBsaXN0IGZvciBsb2NhbA0KPmZpbHRlcmlu ZyB0bw0KPnN0ZW0gdGhlIHRpZGUuICBTcGVjaWZpY2FsbHkgSSBoYWQgcHJvcG9zZWQgdGhhdCB0 aGUgUE1EJ3MgYmUgc3BsaXQgaW50byBhDQo+c2VwYXJhdGUgc3VidHJlZSwgYnV0IHRoYXQgcmVj ZWl2ZWQgcHVzaGJhY2sgaW4gZmF2b3Igb2YgaGF2aW5nIGVhY2gNCj5saWJyYXJ5DQo+aGF2aW5n IGl0cyBvd24gc2VwYXJhdGUgc3VidHJlZSwgd2l0aCBhIHBpbG90IHByb2dyYW0gYmVpbmcgbWFk ZSBvdXQgb2YNCj50aGUgSTQwZQ0KPmRyaXZlciAod2hpY2ggeW91IG1pZ2h0IG5vdGUgc2VuZHMg cHVsbCByZXF1ZXN0cyB0byB0aGUgbGlzdCBub3cpLiAgSSdkDQo+c3RpbGwNCj5saWtlIHRvIHNl ZSBhbGwgUE1EJ3MgY29tZSB1bmRlciBhIHNpbmdsZSBzdWJ0cmVlLCBidXQgdGhhdHMgbGlrZWx5 IGFuDQo+YXJndW1lbnQNCj5mb3IgbGF0ZXIuDQo+DQo+VGhhdCBzYWlkLCBEbyB5b3UgdGhpbmsg dGhhdCB0aGlzIHBhdGNoIGxhdGVuY3kgaXMgcmVhbGx5IGEgY29udHJpYnV0b3INCj50byBsb3cN Cj5wcm9qZWN0IHBhcnRpY2lwYXRpb24/ICBJdCBkZWZpbmF0ZWx5IGEgcHJvYmxlbSwgYnV0IGl0 IHNlZW1zIHRvIG1lIHRoYXQNCj50aGlzDQo+c29ydCBvZiBpc3N1ZSB3b3VsZCBsZWFkIHRvIHBl b3BsZSB0cnlpbmcgdG8gcGFyY2l0aXBhdGUsIHRoZW4gZ2l2aW5nIHVwDQo+KGkuZS4NCj53ZSB3 b3VsZCBzZWUgMS0yIGVtYWlscyBmcm9tIGFuIGluZGl2aWR1YWwsIHRoZW4gbm90IHNlZSB0aGVt IGFnYWluKS4NCj5JJ2QgbmVlZA0KPnRvIGxvb2sgdGhyb3VnaCB0aGUgbWFpbGluZyBsaXN0IGZv ciBzdWNoIGEgcGF0dGVybiwgYnV0IGFuZWNkb3RhbGx5IEkndmUNCj5ub3QNCj5zZWVuIHRoYXQg aGFwcGVuLiAgVGhlIHByb2JsZW0geW91IGRlc2NyaWJlIGFib3ZlIGlzIGRlZmluYXRlbHkgYQ0K PnByb2JsZW0sIGJ1dA0KPml0cyBvbmUgZm9yIHRob3NlIGluZGl2aWR1YWxzIHdobyBhcmUgcGFy dGljaXBhdGluZywgbm90IGZvciB0aG9zZSB3aG8gYXJlDQo+c2ltcGx5IGNob29zaW5nIG5vdCB0 by4gIEFuZCBJIHRoaW5rIHdlIG5lZWQgdG8gYWRkcmVzcyBib3RoLg0KPg0KPj4gSSBhZ3JlZSBw YXRjaHdvcmsgaGFzIHNvbWUgbGltaXRhdGlvbiwgYnV0IEkgdGhpbmsgdGhlIGJpZ2dlc3QgaXNz dWUgaXMNCj4+IGtlZXBpbmcgdXAgd2l0aCB0aGUgcGF0Y2hlcy4gR2V0dGluZyBwYXRjaGVzIGlu dHJvZHVjZWQgaW50byB0aGUgbWFpbg0KPj5saW5lDQo+PiBpcyB2ZXJ5IHNsb3cuIEEgcGF0Y2gg c3VibWl0dGVkIHRvZGF5IG1heSBub3QgZ2V0IGFwcGxpZWQgZm9yIHdlZWtzIG9yDQo+PiBtb250 aHMsIHRoZW4gd2hlbiBhbm90aGVyIHBlcnNvbiBzdWJtaXRzIGEgcGF0Y2ggaGUgaXMgc3RhcnRp bmcgdG8gcnVuIGENCj4+IHZlcnkgaGlnaCByaXNrIG9mIGhhdmluZyB0byByZWRvIHRoYXQgcGF0 Y2gsIGJlY2F1c2UgYSBwZXJ2aW91cyBwYXRjaA0KPj4gbWFrZXMgaGlzIGZhaWwgd2Vla3MvbW9u dGhzIGxhdGVyLiBJIHdvdWxkIGxvdmUgdG8gc2VlIGEgYmV0dGVyIHRvb2wNCj4+dGhlbg0KPj4g cGF0Y2h3b3JrLCBidXQgdGhlIGJpZ2dlc3QgaXNzdWUgaXMgd2UgaGF2ZSBhIGh1Z2UgYmFja2xv ZyBvZiBwYXRjaGVzLg0KPj4gUGVyc29uYWxseSBJIGFtIG5vdCBzdXJlIGhvdyBUaG9tYXMgb3Ig YW55IGlzIGFibGUgdG8ga2VlcCB1cCB3aXRoIHRoZQ0KPj4gcGF0Y2hlcy4NCj4+IA0KPlRoaXMg aXMgYWJzb2x1dGVseSBhIHByb2JsZW0uICBJJ2QgbGlrZSB0byB0aGluaywgbW9yZSB0aGFuIGEg dG9vbCBsaWtlDQo+cGF0Y2h3b3JrLCBhIHN1YnRyZWUgb3JnYW5pemF0aW9uIHRvIGFsbG93IHNv bWUgbW9kaWN1bSBvZiBwYXJhbGxlbA0KPnJldmlldyBhbmQNCj5pbnRlZ3JhdGlvbiB3b3VsZCBy ZWFsbHkgYmUgYSBiZW5lZml0IGhlcmUuDQpTdWJ0cmVlcyBjb3VsZCB3b3JrLCBidXQgdGhlIHJl YWwgcHJvYmxlbSBJIHRoaW5rIGlzIHRoZSBudW1iZXIgb2YNCmNvbW1pdHRlcnMgbXVzdCBiZSBo aWdoZXIgdGhlbiBvbmUuIFNvbWV0aGluZyBsaWtlIEdpdEh1YiAoYW5kIEkgYXNzdW1lDQpMaW51 eCBGb3VuZGF0aW9uKSBoYXZlIGEgbWV0aG9kIHRvIGFkZCBjb21taXR0ZXJzIHRvIGEgcHJvamVj dC4gSW4gdGhlDQpjYXNlIG9mIEdpdEh1YiB0aGV5IGp1c3QgaGF2ZSB0byBoYXZlIGEgZnJlZSBH aXRIdWIgYWNjb3VudCBhbmQgdGhleSBjYW4NCmJlY29tZSBjb21taXR0ZXJzIG9mIHRoZSBwcm9q ZWN0IGJ1eWluZyB0aGUgb3duZXIgb2YgdGhlIHByb2plY3QgZW5hYmxlcw0KdGhlbS4NCg0KT24g R2l0SHViIHRoZXkgaGF2ZSBwZXJzb25hbCBhY2NvdW50cyBhbmQgb3JnYW5pemF0aW9uIGFjY291 bnRzIEkga25vdw0Kb25seSBhYm91dCB0aGUgcGVyc29uYWwgYWNjb3VudHMsIGJ1dCB0aGV5IGFs bG93IGZvciA1IHByaXZhdGUgcmVwb3MgYW5kDQphbnkgbnVtYmVyIG9mIHB1YmxpYyByZXBvcy4g VGhlIG9yZ2FuaXphdGlvbiBhY2NvdW50IGhhcyBhIGxvdCBvZiBleHRyYQ0KZmVhdHVyZXMgdGhh dCBzZWVtIGJldHRlciBmb3IgYSBEUERLIGNvbW11bml0eSBJTU8gYW5kIHNob3VsZCBiZSB0aGUg b25lDQp3ZSB1c2UgaWYgd2UgZGVjaWRlIGl0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24uIFdlIGNh biBhbHdheXMgZ2l2ZSBpdCBhDQpzaG90IGZvciB3aGlsZSBhbmQga2VlcCB0aGUgZHBkay5vcmcg YW5kIHVzZSBkZXZAZHBkay5vcmcgYW5kIGl0cyByZXBvDQptaXJyb3JlZCBmcm9tIEdpdEh1YiBh cyBhIHRyYW5zaXRpb24gcGhhc2UuIFRoaXMgd2F5IHdlIGNhbiBmYWxsIGJhY2sgdG8NCmRwZGsu b3JnIG9yIG1vdmUgb25lIHRvIHNvbWV0aGluZyBlbHNlIGlmIHdlIGxpa2UuDQoNCmh0dHBzOi8v aGVscC5naXRodWIuY29tL2NhdGVnb3JpZXMvb3JnYW5pemF0aW9ucy8NCg0KVGhlIGRldmVsb3Bl cnMgY291bGQgc3RpbGwgc2VuZCBwYXRjaGVzIHZpYSBlbWFpbCBsaXN0LCBidXQgY3JlYXRpbmcg YQ0KcmVwbyBhbmQgZm9ya2luZyBkcGRrIGlzIGVhc3ksIHRoZW4gc2VuZCBhIHB1bGwgcmVxdWVz dC4NCg0KDQo+DQo+PiBUaGUgb3RoZXIgcHJvYmxlbSBJIHNlZSBpcyBob3cgcGF0Y2hlcyBhcmUg YWdyZWVkIG9uIHRvIGJlIGluY2x1ZGVkIGluDQo+PnRoZQ0KPj4gbWFpbmxpbmUuIFRvZGF5IGl0 IGlzIGp1c3QgYW4gQUNLIG9yIGEgTkFLIG9uIHRoZSBtYWlsaW5nIGxpc3QuIFRoZW4gSQ0KPj5z ZWUNCj4+IHdoYXQgSSB0aGluayB0byBiZSBvbmx5IGEgZmV3IHBlb3BsZSBBQ0tpbmcgb3IgTkFL aW5nIHBhdGNoZXMuIFRoaXMNCj4+IHByb2Nlc3MgaGFzIGEgbG90IG9mIHByb2JsZW1zIGZyb20g YSBwYXRjaCBiZWluZyBpZ25vcmUgZm9yIHNvbWUgcmVhc29uDQo+Pm9yDQo+PiBzb21lb25lIGhh dmluZyBuZWdhdGl2ZSBmZWVkIGJhY2sgb24gdmVyeSBtaW5vciBkZXRhaWwgb3Igbm8gd2F5IHRv DQo+PnB1c2ggYQ0KPj4gcGF0Y2ggZm9yd2FyZCBhIHNpbmdsZSBOQUsgb3IgY29tbWVudC4NCj4+ IA0KPg0KPlNvLCB0aGlzIGlzIGFuIGludGVyZXN0aW5nIGlzc3VlIGluIGlkZWFsIG1lcml0b2Ny YWNpZXMuICBDdXJyZW50bHkNCj5pcy9zaG91bGQgYmUNCj5sb29raW5nIGZvciBBQ0tzL05BSy9z IGZyb20gdGhlIGluZGl2aWR1YWxzIGxpc3RlZCBpbiB0aGUgTUFJTlRBSU5FUg0KPmZpbGVzLCBh bmQNCj50aG9zZSBwZW9wbGUgc2hvdWxkIGJlIHRoZSBkZWZpbml0aXZlIHN1YmplY3QgbWF0dGVy IGV4cGVydHMgb24gdGhlIGNvZGUNCj50aGV5DQo+Y292ZXIuICBBcyBzdWNoLCBJIHdvdWxkIGFn cnVlIHRoYXQgdGhleSBzaG91bGQgYmUgZW50aXRsZWQgdG8gYSBtb2RpY3VtDQo+b2YNCj5zdHls aXN0aWMvdHJpdmlhbCBsZWV3YXkuICBUaGF0IGlzIHRvIHNheSwgaWYgdGhleSBjaG9vc2UgdG8g YmxvY2sgYSBwYXRjaA0KPmFyb3VuZCBhIHZlcnkgbWlub3IgZGV0YWlsLCB0aGVuIGJldHdlZW4g dGhlbSBjaGFuZ2luZyB0aGVpciBwb3NpdGlvbiwNCj5hbmQgdGhlDQo+cGF0Y2ggYXV0aG9yIGNo YW5naW5nIHRoZSBjb2RlLCB0aGUgbGF0dGVyIGlzIGxpa2VseSB0aGUgZWFzaWVyIGNvdXJzZSBv Zg0KPmFjdGlvbiwgZXNwZWNpYWxseSBpZiB0aGUgYXV0aG9yIGNhbid0IG1ha2UgYW4gYXJndW1l bnQgZm9yIHRoZWlyDQo+cG9zaXRpb24uDQo+VGhhdCBzYWlkLCBpZiBzdWNoIHBhdGNoIGJsb2Nr YWdlIGJlY29tZXMgc28gZWdyZWdpb3VzIHRoYXQgaW5kaXZpZHVhbHMNCj5zdG9wDQo+Y29udHJp YnV0aW5nLCB0aGF0IG5lZWRzIHRvIGJlIGtub3duIGFzIHdlbGwuICBJZiB5b3UgYXMgYSBwYXRj aCBhdXRob3I6DQo+DQo+MSkgSGF2ZSB0cmllZCB0byBzdWJtaXQgcGF0Y2hlcw0KPjIpIEhhZCB0 aGVtIGJsb2NrZWQgZm9yIHdoYXQgeW91IGNvbnNpZGVyIHRyaXZpYWwgcmVhc29ucw0KPjMpIFBs YW4gdG8gbm90IGNvbnRyaWJ1dGUgZnVydGhlciBiZWNhdXNlIG9mIHRoaXMNCj40KSBTdGlsbCBy ZWx5IG9uIHRoZSBEUERLIGZvciB5b3VyIHByb2R1Y3QNCj4NCj5QbGVhc2UsIHNheSBzb21ldGhp bmcuICBQZW9wbGUgaW4gY2hhcmdlIG5lZWQgdG8ga25vdyB3aGVuIHRoZXkncmUgcHVzaGluZw0K PmNvbnRyaWJ1dG9ycyBhd2F5Lg0KPg0KPkZXSVcsIEkndmUgdHJpZWQgdG8gZG8gc29tZSBjb3Jy ZWxhdGlvbiBiZXR3ZWVuIHRoZSBnaXQgaGlzdG9yeSBhbmQgdGhlDQo+bWFpbGluZw0KPmxpc3Qu ICBJIG5lZWQgdG8gZG8gbW9yZSBzZWFyY2hlcywgYnV0IEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBl YXJseSBvbiwgdGhlDQo+bWFqb3JpdHkgb2YgcGVvcGxlIHdobyBzdG9wcGVkIGNvbnRyaWJ1dGlu ZywgZGlkIHNvIGJlY2F1c2UgdGhlaXIgcGF0Y2hlcw0KPndlcmVuJ3QgZXhwcmVzc2VseSBibG9j a2VkLCBidXQgcmF0aGVyIGJlY2F1c2UgdGhleSB3ZXJlIHNpbXBseSBpZ25vcmVkLg0KPk5vIG9u ZQ0KPndvcmtpbmcgb24gRFBESyBib3RoZXJlZCB0byByZXZpZXcgdGhvc2UgcGF0Y2hlcywgYW5k IHNvIHRoZXkgbmV2ZXIgZ290DQo+bWVyZ2VkLg0KPkhvcGVmdWxseSB0aGF0IHByb2JsZW0gaGFz IGJlZW4gYWRkcmVzc2VkIHNvbWV3aGF0IG5vdy4NCj4NCj4+IEkgd291bGQgbGlrZSB0byBzZWUg c29tZSB0eXBlIG9mIGxheWVyaW5nIHByb2Nlc3MgdG8gYWxsb3cgcGF0Y2hlcyB0byBiZQ0KPj4g YXBwbGllZCBpbiBhIHRpbWVseSBtYW5uZXIgYSBmZXcgd2Vla3Mgbm90IG1vbnRocyBvciBjb21w bGV0ZWx5IGlnbm9yZWQuDQo+PiBNYXliZSBzb21lIHR5cGUgb2Ygdm90aW5nIGlzIHJlYXNvbmFi bGUsIGJ1dCB3ZSBuZWVkIHRvIGRvIHNvbWV0aGluZyB0bw0KPj4gdHVybiBhcm91bmQgdGhlIHBh dGNoZXMgaW4gY2xlYW4gcmVhc29uYWJsZSBtYW5uZXIuDQo+PiANCj4+IFRoaW5rIHdlIG5lZWQg c29tZSB0eXBlIG9mIGdyb3VwIG1lZXRpbmcgZXZlcnkgd2VlayB0byBsb29rIGF0IHRoZQ0KPj5w YXRjaGVzDQo+PiBhbmQgZGV0ZXJtaW5pbmcgd2hpY2ggb25lcyBnZXQgYXBwbGllZCwgdGhpcyBn aXZlcyBxdWljayBmZWVkYmFjayB0byB0aGUNCj4+IHN1Ym1pdHRlciBhcyB0byB0aGUgc3RhdHVz IG9mIHRoZSBwYXRjaC4NCj4+IA0KPkkgdGhpbmsgYSBncm91cCBtZWV0aW5nIGlzIGdvaW5nIHRv IGJlIHdheSB0b28gbXVjaCBvdmVyaGVhZCB0byBtYW5hZ2UNCj5wcm9wZXJseS4NCj5Zb3UnbGwg Z2V0IGRpZmZlcmVudCBwZW9wbGUgZXZlcnkgd2VlayB3aXRoIGFnZW5kYSB0aGF0IG1heSBub3Qg bGluZSB1cA0KPndpdGgNCj5jb2RlIHF1YWxpdHksIHdoaWNoIGlzIHJlYWxseSB3aGF0IHRoZSBy ZXZpZXcgaXMgbWVhbnQgdG8gcHJvdmlkZS4gIEkNCj50aGluaw0KDQpJIHdhcyBvbmx5IHN1Z2dl c3RpbmcgdGhlIG1haW50YWluZXJzIGF0dGVuZCB0aGUgbWVldGluZy4gT2YgY291cnNlIHRoZXkN CmhhdmUgdG8gYXR0ZW5kIG9yIGhhdmUgc29tZW9uZSBhdHRlbmQgZm9yIHRoZW0sIGp1c3QgdG8g Z2V0IHRoZSB2b3RpbmcNCmRvbmUuIElmIHlvdSBkbyBub3QgYXR0ZW5kIHRoZW4geW91IGRvIG5v dCBnZXQgdG8gdm90ZSBvciBzb21ldGhpbmcgbGlrZQ0KdGhhdCBpcyByZWFzb25hYmxlLiBOb3Qg dGhhdCB3ZSBzaG91bGQgdHJ5IGFuZCBkZWZpbmUgdGhlIHByb2Nlc3MgaGVyZS4NCg0KPnBlcmhh cHMgYSBiZXR0ZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gcmVxdWlyZSB0aGF0IHRoYXQgY29kZSBv d25lcnMgZnJvbQ0KPnRoZQ0KPm1haW50YWluZXIgZmlsZSBwcm92aWRlIGFuZCBBQ0svTkFLIG9u IHRoZWlyIHBhdGNoZXMgd2l0aGluIDMtNCBkYXlzLCBhbmQNCj5yZXF1aXJlIGEgY29ycmVzcG9u ZGluZyB0cmVlIG1haW50YWluZXIgdG8gYXBwbHkgdGhlIHBhdGNoIHdpdGhpbiA3IG9yDQo+c28u ICBUaGF0DQo+d291bGQgY2FwIG91ciBwYXRjaCBsYXRlbmN5LiAgTGlrZXdpc2UsIGlmIGEgcGF0 Y2ggc2xpcHMgaW4gY3JlYXRpbmcgYQ0KPnJlZ3Jlc3Npb24sIHRoZSBhdXRob3IgbmVlZHMgdG8g YmUgYWxlcnRlZCBhbmQgZ2l2ZW4gYSB0aW1lIHdpbmRvdyBpbg0KPndoaWNoIHRvDQo+Zml4IHRo ZSBwcm9ibGVtIGJlZm9yZSB0aGUgb2ZmZW5kaW5nIHBhdGNoIGlzIHJldmVydGVkIGR1cmluZyB0 aGUgUUUNCj5jeWNsZS4NCj4NCj4NCj4+ID4NCj4+ID5PbiB0aGUgb3RoZXIgc2lkZSwgc2luY2Ug dXNlciBxdWVzdGlvbnMsIGNvbW11bml0eSBkaXNjdXNzaW9ucyBhbmQNCj4+ID5kZXZlbG9wbWVu dCBoYXBwZW5zIGluIHRoZSBzYW1lIG1haWxpbmcgbGlzdCwgdGhpbmdzIGdldCByZWFsbHkNCj4+ ID5jb21wbGljYXRlZCwgc3BlY2lhbGx5IGZvciB1c2VycyBzZWVraW5nIGZvciBoZWxwLiBFdmVu IHRob3VnaCBJIHRoaW5rDQo+PiA+dGhlIGF2ZXJhZ2Ugc2tpbGxzIG9mIHRoZSB1c2VycyBvZiBE UERLIGlzIGdlbmVyYWxseSBoaWdoZXIgdGhhbiBpbg0KPj4gPm90aGVyIHNvZnR3YXJlIHByb2pl Y3RzLCBpZiBEUERLIHdhbnRzIHRvIGF0dHJhY3QgbW9yZSB1c2VycywgaGF2aW5nIGENCj4+ID5i ZXR0ZXIgdXNlciBzdXBwb3J0IGlzIGtleSwgSU1ITy4NCj4+ID4NCj4+ID5TbyBJIHdvdWxkIHNl ZSB3aXRoIGdvb2QgZXllcyBhIHNlcGFyYXRpb24gYmV0d2VlbiwgYXQgbGVhc3QsIGRwZGstdXNl cg0KPj4gPmFuZCBkcGRrLWRldi4NCj4+IA0KPkkgd291bGRuJ3QgYXJndWUgd2l0aCB0aGlzIHNl cGFyYXRpb24sIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFwcHJvYWNoLg0KPg0KPj4gSSBkbyBu b3QgcmVtZW1iZXIgc2VlaW5nIHRvbyBtYW55IHVzZXJzIG9uIHRoZSBsaXN0IGFuZCBtYWtpbmcg YSBsaXN0DQo+Pmp1c3QNCj4+IGZvciB0aGVuIGlzIE9LIGlmIGV2ZXJ5b25lIGlzIGZpbmUgd2l0 aCBhIGxpc3QgdGhhdCBoYXMgdmVyeSBmZXcgZW1haWxzLg0KPj4gPg0KPj4gPklmIHRoZSBudW1i ZXIgb2YgcGF0Y2hlcyBrZWVwcyBncm93aW5nLCBzcGxpdHRpbmcgdGhlICJkZXYiIG1haWxpbmcN Cj4+ID5saXN0cyBpbnRvIGRpZmZlcmVudCBjYXRlZ29yaWVzIChlYWwgYW5kIGNvbW1vbiwgcG1k cywgaGlnaGVyIGxldmVsDQo+PiA+YWJzdHJhY3Rpb25zLi4uKSBjb3VsZCBiZSBhbiBvcHRpb24u IEhvd2V2ZXIsIHRoaXMgbGFzdCBwb2ludCBvcGVucyBhDQo+PiA+bG90IG9mIHF1ZXN0aW9ucyBv biBob3cgdG8gbWluaW1pemUgaW50ZXJmZXJlbmNlIGJldHdlZW4gdGhlIGRpZmZlcmVudA0KPj4g PnBhcnRzIGFuZCBBUEkvQUJJIGNvbXBhdGliaWxpdHkgZHVyaW5nIHRoZSBkZXZlbG9wbWVudC4N Cj4+IA0KPj4gSSBiZWxpZXZlIGlmIHdlIGp1c3QgbWFrZSBzdXJlIHdlIHVzZSB0YWdzIGluIHRo ZSBzdWJqZWN0IGxpbmUgdGhlbiB3ZQ0KPj5jYW4NCj4+IGhhdmUgb3VyIGVtYWlsIGNsaWVudHMg ZG8gdGhlIHNwbGl0dGluZyBvZiB0aGUgZW1haWxzIGluc3RlYWQgb2YgYWRkaW5nDQo+PiBtb3Jl IGVtYWlscyBsaXN0cy4NCj4+IA0KPkFncmVlZA0KPg0KPj4gPg0KPj4gPj4NCj4+ID4+IFBlcmhh cHMgaXQgbWVhbnMgaGF2aW5nIHNvbWUgUmV2aWV3Qm9hcmQgdHlwZSBvZiB0b29scywgYSBjbG9u ZSBpbg0KPj4gPj5HaXRodWIgb3INCj4+ID4+IEJpdGJ1Y2tldCB3aGVyZSB0aGUgbGVzcyBoYXJk Y29yZSBrZXJuZWwtd29ya2Zsb3cgdHlwZXMgY291bGQgc2VuZA0KPj5iYWNrDQo+PiA+PnRoZWly DQo+PiA+PiBzbWFsbCBidWcgZml4ZXMgYSBiaXQgbW9yZSBlYXNpbHksIHRoaXMga2luZCBvZiBz dHVmZi4gR29vZ2xlIGhhcw0KPj5iZWVuDQo+PiA+PmdldHRpbmcNCj4+ID4+IGdvb2QgdXB0YWtl IHNpbmNlIHRoZXkgbW92ZWQgbW9zdCBvZiB0aGVpciBvcGVuIHNvdXJjZSBhY3Jvc3MgdG8NCj4+ R2l0aHViLA0KPj4gPj4gYmVjYXVzZSB0aGUgY29udHJpYnV0aW9uIHdvcmtmbG93IHdhcyBtb3Jl IGNvbnZlbmllbnQgdGhhbiBHb29nbGUNCj4+Q29kZQ0KPj4gPj53YXMuDQo+PiANCj4+IEkgbGlr ZSBHaXRIdWIgaXQgaXMgYSBtdWNoIGJldHRlciBkZXNpZ25lZCB0b29sIHRoZW4gcGF0Y2h3b3Jr LCBwbHVzIGl0DQo+PiBjb3VsZCBnZXQgbW9yZSBleWVzIGFzIGl0IGlzIHZlcnkgd2VsbCBrbm93 IHRvIHRoZSBkZXZlbG9wZXIgY29tbXVuaXR5DQo+PmluDQo+PiBnZW5lcmFsLiBJIGZlZWwgR2l0 SHViIGhhcyBtYW55IGFkdmFudGFnZXMgb3ZlciB0aGUgY3VycmVudCBzeXN0ZW1zIGluDQo+PiBw bGFjZSBidXQsIGl0IGRvZXMgbm90IHNvbHZlIHRoZSBhbGwgcGF0Y2ggaXNzdWVzLg0KPj4gDQo+ R2l0aHViIGlzIGFjdHVhbGx5IGEgYml0IGlycml0YXRpbmcgZm9yIHRoaXMgc29ydCBvZiB0aGlu ZywgYXMgaXQNCj5wcmVzdW1lcyBhIHdlYg0KPmJhc2VkIGludGVyZmFjZSBmb3IgZGlzY3Vzc2lv bi4gIFRoZXkgaGF2ZSBzb21lIG1vZGljdW0gb2YgZW1haWwNCj5mb3J3YXJkaW5nDQo+ZW5hYmxl ZCwgYnV0IGl0IGhhcyBuZXZlciBxdWl0ZSB3b3JrZWQgcmlnaHQsIG9yIGludGVncmF0ZWQgcHJv cGVybHkuDQoNCkVtYWlsIGZvcndhcmRpbmcgaGFzIHNlZW1lZCB0byB3b3JrIGZvciBtZSBhbmQg aW4gb25lIGNhc2UgaXQgdG9vayBhIGJpdA0KdG8gaGF2ZSBHaXRIdWIgc3RvcCBzZW5kaW5nIG1l IGVtYWlscyBvbiBhIHJlcG8gSSBkaWQgbm90IHdhbnQgYW55bW9yZSA6LSkNCj4NCj4+IFRoZSBv bmx5IHdheSB3ZSBjYW4gZ2V0IHBhdGNoIGlzc3VlcyByZXNvbHZlZCBpcyB0byBwdXQgYSBiaXQg bW9yZQ0KPj5wcm9jZXNzDQo+PiBpbiBwbGFjZS4NCj4+ID4NCj4+ID5BbHRob3VnaCBJIGFncmVl LCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgb24gaG93IGdpdGh1YiBvciBiaXRidWNrZXQgaXMNCj4+ ID51c2VkLiBIYXZpbmcgaXNzdWVzIG9yIGV2ZW4gKGUuZy4gZ2l0aHViKSBwdWxsIHJlcXVlc3Rz ICppbiBhZGRpdGlvbioNCj4+dG8NCj4+ID50aGUgbm9ybWFsIGNvbnRyaWJ1dGlvbiB3b3JrZmxv dyBjYW4gYmUgYSBuaWdodG1hcmUgdG8gZGVhbCB3aXRoLCBpbg0KPj4gPnRlcm1zIG9mIHN5bmNo cm9uaXphdGlvbiBhbmQgcHJldmVudGluZyBkb3VibGUgd29yay4gU28gSSBndWVzcyBzZXR0aW5n DQo+PiA+dXAgYW4gb2ZmaWNpYWwgZ2l0aHViIG9yIGJpdGJ1Y2tldCBtaXJyb3Igd291bGQgYmUg ZmluZSwgdmlhIHNvbWUNCj4+c2ltcGxlDQo+PiA+Y3JvbmpvYiwgYnV0IEkgZ3Vlc3MgaXQgd291 bGQgZW5kLXVwIG5vdCB1c2luZyBQUnMgb3IgaXNzdWVzIGluIGdpdGh1Yg0KPj4gPmxpa2UgdGhl IExpbnV4IGtlcm5lbCBkb2VzLg0KPj4gDQo+MTAwJSBhZ3JlZSwgd2UgY2FuJ3QgYmUgc3BsaXQg YWJvdXQgdGhpcy4gIEFsbG93aW5nIGNvbnRyaWJ1dGlvbnMgZnJvbSBuDQo+Y2hhbm5lbHMganVz dCBtZWFucyBtb3N0IGRldmVsb3BlcnMgd2lsbCBvbmx5IHNlZS9yZXZpZXdzIDEvbnRoIG9mIHRo ZQ0KPnBhdGNoZXMNCj5vZiBpbnRlcmVzdCB0byB0aGVtLg0KDQpJZiB3ZSBzZXR1cCBhIEdpdEh1 YiBvciBzb21lIG90aGVyIHNpdGUsIHdlIHdvdWxkIG5lZWQgdG8gbWFrZSBHaXRodWIgdGhlDQpw cmltYXJ5IHNpdGUgdG8gcmVtb3ZlIHRoaXMgdHlwZSBvZiBwcm9ibGVtIElNTy4NCj4NCj4+IEZy b20gd2hhdCBJIGNhbiB0ZWxsIEdpdEh1YiBzZWVtcyB0byBiZSBhIGJldHRlciBzb2x1dGlvbiBm b3IgYSBmcmVlDQo+Pm9wZW4NCj4+IGVudmlyb25tZW50LiBCaXRidWNrZXQgSSBoYXZlIG5ldmVy IHVzZWQgYW5kIEdpdEh1YiBzZWVtcyBtb3JlIHBvcHVsYXINCj4+IGZyb20gb25lIGFydGljbGUg SSByZWFkLg0KPj4gDQo+PiANCj4+aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS93ZWJocD9zb3VyY2Vp ZD1jaHJvbWUtaW5zdGFudCZpb249MSZlc3B2PTImaWU9VVRGLQ0KPj44Iw0KPj4gcT1iaXRidWNr ZXQlMjB2cyUyMGdpdGh1Yg0KPj4gDQo+PiANCj4+ID5CdHcsIGlzIHRoaXMgZ2l0aHViIG9yZ2Fu aXphdGlvbiBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgSW50ZWwgb3Igc29tZQ0KPj4gPm90aGVyIGNv bXBhbnkgb2YgdGhlIGNvbW11bml0eT8NCj4+ID4NCj4+ID5odHRwczovL2dpdGh1Yi5jb20vZHBk aw0KPj4gPg0KDQpJIHdhcyBob3Bpbmcgc29tZW9uZSB3b3VsZCBvd24gdXAgdG8gdGhlIEdpdEh1 YiBkcGRrIHNpdGUuDQoNCj4+ID5NYXJjDQo+PiANCj4+IElmIHdlIGNhbiB1c2VkIHRoZSBhYm92 ZSB0aGF0IHdvdWxkIGJlIGdyZWF0LCBidXQgYSBuYW1lIGxpa2UNCj4+IMWSZHBkay1jb21tdW5p dHnCuSBvciBzb21ldGhpbmcgY291bGQgd29yayB0b28uDQo+PiANCj4+IFdlIGNhbiBob3N0IHRo ZSB3ZWIgc2l0ZSBoZXJlIGFuZCBoYXZlIG1hbnkgc3ViLXByb2plY3RzIGxpa2UNCj4+UGt0Z2Vu LURQREsNCj4+IDotKSB1bmRlciB0aGUgc2FtZSBwYWdlLiBOb3QgdG8gc2F5IGFueXRoaW5nIGJh ZCBhYm91dCBvdXIgY3VycmVudCB3ZWINCj4+IHBhZ2VzIGFzIEkgZmluZCBpdCBkaWZmaWN1bHQg dG8gdXNlIHNvbWV0aW1lcyBhbmQgZmluZCB0aGluZ3MgbGlrZQ0KPj4gcGF0Y2h3b3JrIGxpbmsu IE1haW50YWluaW5nIGEgd2ViIHNpdGUgaXMgYSBmdWxsIHRpbWUgam9iIGFuZCBHaXRIdWINCj4+ ZG9lcw0KPj4gbWFpbnRhaW4gdGhlIHNpdGUsIHBsdXMgd2UgY2FuIGNvbGxhYm9yYXRlIG9uIGhv c3Qgd2ViIHBhZ2Ugb24gdGhlDQo+PkdpdEh1Yg0KPj4gc2l0ZSBlYXNpZXIuDQo+PiANCj4+IE1v dmluZyB0byB0aGUgTGludXggRm91bmRhdGlvbiBpcyBhbiBvcHRpb24gYXMgd2VsbCBhcyBpdCBp cyB2ZXJ5IHdlbGwNCj4+IGtub3cgYW5kIGhhcyBzb21lIG5pY2Ugd2F5cyB0byBnZXQgeW91ciBw cm9qZWN0IHByb21vdGVkLiBJdCBkb2VzIGhhdmUgYQ0KPj4gZmV3IGRyYXdiYWNrcyBpbiBwcm9j ZXNzIGhhbmRsaW5nIGFuZCBjb3N0IHRvIHN0YXRlIGEgZmV3LiBUaGUgcHJvY2Vzcw0KPj4gbW9k ZWwgaXMgYWxsIHJlYWR5IGRlZmluZWQsIHdoaWNoIGlzIGdvb2QgYW5kIGJhZCBpdCBqdXN0IGRl cGVuZHMgb24NCj4+eW91cg0KPj4gbmVlZHMgSU1PLg0KPj4gDQo+PiBSZWdhcmRzLA0KPj4gKytL ZWl0aA0KPj4gDQo+PiA+DQo+PiA+Pg0KPj4gPj4gTWF0dGhldy4NCj4+ID4NCj4+IA0KPj4gDQoN Cg==