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 6D9E6A052A; Wed, 23 Dec 2020 06:28:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C58F3CA34; Wed, 23 Dec 2020 06:28:25 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 540C7CA32 for ; Wed, 23 Dec 2020 06:28:23 +0100 (CET) IronPort-SDR: cUKOQF57f3xJ3MOwDfjUVcuQxqXHOW1nDcfKGiNzzoygkOvaZR5v0jEtGmLL8qO1bEkzg+WQf+ JbgBDdVN9Nhg== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="175188471" X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="175188471" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2020 21:28:20 -0800 IronPort-SDR: a23IkfM9PLQ6e/UOGEXf7lTRxZq5u/rRibQM+7NioJ9RX77DDBjhH22ePZD7oeOQjrgTsW058X MLsifUJIgo1w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="390395515" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga004.fm.intel.com with ESMTP; 22 Dec 2020 21:28:20 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 22 Dec 2020 21:28:19 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 22 Dec 2020 21:28:19 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 22 Dec 2020 21:28:19 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 22 Dec 2020 21:28:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z6so6ADYpeY0WsUS9Tjf+EKK3hvGUbtb79PwFmLaF3JxN0l2jziqojX45ufwwvT8ifHf0pe0pOg+4atVa7ViScM1XPxtCYWw3lwQ+G6aQYiOQsl4YpRI75hGE5wEqTI57vh5/vMKyhyCpBYL/wh+/uO6mQ2S+FUeTsRCMxab1WogxI9I1FJsVmshp2KbDa5f6SCz7p+QSZKwz7dP0sYHFMFoHeGXkpfQT5LsdCLRiiQFRqxTlauAwAOW7+o9mEmGD43uS3vuZVlpsTyPoYCDTD5cAXflho8EZ/5HIJDWdPbGSXeUlvW3/Fq9PArSgG1auZdSDHJVLXOwdV6mHut0aA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bnrjfJW/PygguaR5CloUWFj/pkRzqp8lV5Cn6zd7byY=; b=ddZZsH2ra+GRSnpds4V5VYT85PS1KVOkOP0ToY6yymIZNJTxJlLWuTkJrpMlhM4US55Frrr85AQaoJnHWjloGE0RxfBAlLRPqp0D3Qx+y/6DCHALxVq5eTt3Q5TszOAiw5Fm5kQi2T/1XJPsb9RmMeftzsftK52RTJqQNagAwmOpsb5oLvkOoZ0uYKE9hriYHVp0Optbq4IUmuUE32sv1Mn3HYUtVksP4X9O7VSDSEQvOCme4cGsVC1Bc7bW9Zsrda5YuYGQ1uGkHEoS3wLBFXDQsMiY0+JZTX9odal7dgQWfKxMExu/q80JsY2tNSX/fk5OcDneX0q0K4lxnGGmmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bnrjfJW/PygguaR5CloUWFj/pkRzqp8lV5Cn6zd7byY=; b=KB7Yzx5iJ9vE9+HzwcQdsYNQHVYGVaHTADC8xKw+57lGdb6NaBIrCB6+e43XPtpBahdNyh+DEdUhhCG3Up8DAeAquborYkmxpQYQjK44pRnuAv2w/DKJ5RD7+OstjAijdJ6uJ2RXq0NwWXXpHJXNj2VTbHb5Wb3dAE9mMthM1tg= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3583.namprd11.prod.outlook.com (2603:10b6:208:ea::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.33; Wed, 23 Dec 2020 05:28:17 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::74f2:ba7f:cb22:5272]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::74f2:ba7f:cb22:5272%7]) with mapi id 15.20.3700.026; Wed, 23 Dec 2020 05:28:17 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , Thomas Monjalon , David Marchand , "Wu, Jingjing" CC: dev , Stephen Hemminger , "Liang, Cunming" , "Lu, Xiuchun" , "Li, Miao" Thread-Topic: [dpdk-dev] [PATCH 0/8] Introduce emudev library and iavf emudev driver Thread-Index: AQHW1SPBjdFrB9819EmLcELy/92ny6n97niwgANlKoCAACQvgIAA7I0ggABv3ACAAVjWUA== Date: Wed, 23 Dec 2020 05:28:17 +0000 Message-ID: References: <20201218074736.93999-1-chenbo.xia@intel.com> <22c05dc3-bee9-4662-3f8d-a4dcd7635b42@redhat.com> <33a01a88-327b-844b-9f3c-03660bc2ceb3@redhat.com> In-Reply-To: <33a01a88-327b-844b-9f3c-03660bc2ceb3@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-Mentions: jingjing.wu@intel.com X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dd0ade8d-fd09-4782-82a6-08d8a7038dc3 x-ms-traffictypediagnostic: MN2PR11MB3583: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BUWyG6m7/OiqNZaKbNdpNwLsYSOhVEH5HmbikIlHV2EVFpaViwq3UqimP5dL5kBfvJLGS5xiTvnpcU5yFER24L0j8gi/ImsL13CpHDqoGssW/hUprRsMTcDPvtqiXonrOXz83/tX7Q2Nc/UxoKX812EiroeWFMm88bduWxySyIeGd6ZgDH+6bp9VO/y4EnlPX/X5t77EhcL4Jcy1leXpLNxC4ce6fXrDqmYucBHI7e4FF9uc8uEuNeV5/MFXNBNp4E3t7slkBhqJN2Y0EAnSNwvWIz86oMHrHUgtniS/D2Ugmc/2W5COeQMPeS0xFcp9/k21a4lBCU4XHz30QD7i2AIJEDWrrSLzpQLkco/s4L9M5QRLVOZiBFYzalcBVs5BnFnlUm/sChtCctLWQaU6oSHy6Q7TkXlpCErccEfNfX6+oUfeybef6bdqVkuLDyigSI8NzrUNNUuWq0zd2b9yHQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39860400002)(396003)(366004)(376002)(136003)(478600001)(66476007)(6636002)(5660300002)(2906002)(186003)(54906003)(52536014)(83380400001)(26005)(64756008)(33656002)(8936002)(9686003)(6506007)(107886003)(316002)(8676002)(66946007)(4326008)(966005)(86362001)(55016002)(66556008)(66446008)(30864003)(7696005)(110136005)(53546011)(76116006)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?dGJIK1BSWDRjZWU5SzdOK3h3dVBuU29PWGtpN05yMHFzejBNOWF6dlY2NFdp?= =?utf-8?B?cXNac20wRVU4aDZ6MG8wWDFTSm5rWXBGZmJyQ1NsQmFFdHZuQmYxNVNSa2dV?= =?utf-8?B?ZmNwNFhpcFZpUXJFM29iRk5nRXlPNGwzMSt5M1JLdGIzeHh5OHFoV0RSRUlM?= =?utf-8?B?clh2N2J2b0w5RU8wYjErbUFoMkQyNnpPaklHbldOZ3dZTVJod1pNckdiMTRm?= =?utf-8?B?bEFBSFRxdTFRaGlIRU9sZHRKaVI4VWZpanh1cGVoNXRXeXp2SjdtZmtQU0xw?= =?utf-8?B?VU84R0dWcFZIQ3Bra29na21KeG9Zc2VMS3pyOThuNDdGdmFSVWMreitvK0Nu?= =?utf-8?B?bEVsSDI0Rlg1VTlVaTk2a2VhM3dWTVhiUWROLzluV1NkQ0x4MG1ENEt1RnRz?= =?utf-8?B?TUR6ak9KNGRwNUxOUGJ1OXRvOXNtcWQzS0hIMFdXVTBYUTd2TURxamZlSTVj?= =?utf-8?B?SWRrdFAySzJpd09abHVKVkNHL2lvcGozM050ZWpXMk9lT3g3VGNFUUVocE9i?= =?utf-8?B?SUFJRDBDb2N6bUNDT0VBWTBnZG1wdUFHN0pNMUZyRWowS29RTXZhdUU4Rm9i?= =?utf-8?B?Z0VSM3BtbHJ3YmJBVXNGWHNzZmtBck42NTJ2Ny9rQ3ZPcE92MUdlOW9uQlVX?= =?utf-8?B?WlhUblFyaTdOMzhxZjZ5U2F3d2RkOUJybVk2YWRQUWN2NXJvZEtSOFlxajY1?= =?utf-8?B?WUduNlc3S0RwdWkrWXg0eExVZUk1cEJWemJIMFZhVTR4eGV2c3JGS2JQRjlH?= =?utf-8?B?dVFvY0xtdTNCZi9GQ01ob2YrR1piRktjODRBQWxkWm5oYTc3NE8vdnVzYkdu?= =?utf-8?B?cUMvUm5YZVlvYjdRM2dEK3ZhTk1Ma3VkL1pLOVozNnpHRlZMSzJxaEU5Z0Iw?= =?utf-8?B?SkNPVjAvYnhuZDVYOGR4cHp1MnlIdHIrR3gvMCtVUWFmYVIxbHZDM3VSbkxm?= =?utf-8?B?Q3JQNFI4c1lpNUIxdkcxR21vTk5oWFN4UFB1V1I4Q1o2dDJOMVZPMmtPaDhj?= =?utf-8?B?WjY3VzVpeHIvU3NxNzFyRG05aGhDbmtxdjBTcGxSeW4ya1FQeFVSanVXMWww?= =?utf-8?B?Mk9DdCtCL3M5ejEydDJPSjBURHhEQ2VGNXVlVGFYMnBicmFzOU5yUFJVZ3pj?= =?utf-8?B?TlZyQVY2blhkQXk5SGZNaVdZWDFqL2lQUzk1WTFhZVdGb2lHZ0N6UXFYUWJR?= =?utf-8?B?NHlmL01TTXhlWTVwUysxYVRkVlczaW55azBUbzU3Z3JubGJ6UGdFSXNiNGVx?= =?utf-8?B?VTRROGxhbDRBdE9Bb1hJK1c4MUJmK0FPa0tBb3p2dk0wY0hxYzl3R1Nud1Jn?= =?utf-8?Q?/18dLIoYpEP2E=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4063.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd0ade8d-fd09-4782-82a6-08d8a7038dc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Dec 2020 05:28:17.6566 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qinD6SQFTJMw6BR3QOIJMg6kIlaw97B82RBZHn5N+N3rOq9jzTj6t+5Cn1pOOZmOG7a7ov8yhRGge/iQAXr1xA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3583 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 0/8] Introduce emudev library and iavf emudev driver 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" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXks IERlY2VtYmVyIDIyLCAyMDIwIDQ6NDkgUE0NCj4gVG86IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlh QGludGVsLmNvbT47IFRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47DQo+IERh dmlkIE1hcmNoYW5kIDxkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tPg0KPiBDYzogZGV2IDxkZXZA ZHBkay5vcmc+OyBTdGVwaGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+ OyBMaWFuZywNCj4gQ3VubWluZyA8Y3VubWluZy5saWFuZ0BpbnRlbC5jb20+OyBMdSwgWGl1Y2h1 biA8eGl1Y2h1bi5sdUBpbnRlbC5jb20+OyBMaSwNCj4gTWlhbyA8bWlhby5saUBpbnRlbC5jb20+ OyBXdSwgSmluZ2ppbmcgPGppbmdqaW5nLnd1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW1BBVENIIDAvOF0gSW50cm9kdWNlIGVtdWRldiBsaWJyYXJ5IGFuZCBpYXZmIGVt dWRldg0KPiBkcml2ZXINCj4gDQo+IEhpIENoZW5ibywNCj4gDQo+IFRoYW5rcyBmb3IgdGhlIGRl dGFpbGVkIHJlcGx5Lg0KPiANCj4gT24gMTIvMjIvMjAgNDowOSBBTSwgWGlhLCBDaGVuYm8gd3Jv dGU6DQo+ID4gSGkgTWF4aW1lLA0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4+IEZyb206IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+ DQo+ID4+IFNlbnQ6IE1vbmRheSwgRGVjZW1iZXIgMjEsIDIwMjAgODowMiBQTQ0KPiA+PiBUbzog WGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPjsgVGhvbWFzIE1vbmphbG9uDQo+IDx0 aG9tYXNAbW9uamFsb24ubmV0PjsNCj4gPj4gRGF2aWQgTWFyY2hhbmQgPGRhdmlkLm1hcmNoYW5k QHJlZGhhdC5jb20+DQo+ID4+IENjOiBkZXYgPGRldkBkcGRrLm9yZz47IFN0ZXBoZW4gSGVtbWlu Z2VyIDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz47DQo+IExpYW5nLA0KPiA+PiBDdW5taW5n IDxjdW5taW5nLmxpYW5nQGludGVsLmNvbT47IEx1LCBYaXVjaHVuIDx4aXVjaHVuLmx1QGludGVs LmNvbT47IExpLA0KPiA+PiBNaWFvIDxtaWFvLmxpQGludGVsLmNvbT47IFd1LCBKaW5namluZyA8 amluZ2ppbmcud3VAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFU Q0ggMC84XSBJbnRyb2R1Y2UgZW11ZGV2IGxpYnJhcnkgYW5kIGlhdmYNCj4gZW11ZGV2DQo+ID4+ IGRyaXZlcg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiBPbiAxMi8yMS8yMCAxMDo1MiBBTSwgTWF4 aW1lIENvcXVlbGluIHdyb3RlOg0KPiA+Pj4gSGkgQ2hlbmJvLA0KPiA+Pj4NCj4gPj4+IE9uIDEy LzE5LzIwIDc6MTEgQU0sIFhpYSwgQ2hlbmJvIHdyb3RlOg0KPiA+Pj4+IEhpIERhdmlkLA0KPiA+ Pj4+DQo+ID4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+IEZyb206IERh dmlkIE1hcmNoYW5kIDxkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tPg0KPiA+Pj4+PiBTZW50OiBG cmlkYXksIERlY2VtYmVyIDE4LCAyMDIwIDU6NTQgUE0NCj4gPj4+Pj4gVG86IFhpYSwgQ2hlbmJv IDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gPj4+Pj4gQ2M6IGRldiA8ZGV2QGRwZGsub3JnPjsg VGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgU3RlcGhlbg0KPiA+Pj4+PiBI ZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPjsgTGlhbmcsIEN1bm1pbmcNCj4g Pj4+Pj4gPGN1bm1pbmcubGlhbmdAaW50ZWwuY29tPjsgTHUsIFhpdWNodW4gPHhpdWNodW4ubHVA aW50ZWwuY29tPjsgTGksIE1pYW8NCj4gPj4+Pj4gPG1pYW8ubGlAaW50ZWwuY29tPjsgV3UsIEpp bmdqaW5nIDxqaW5namluZy53dUBpbnRlbC5jb20+DQo+ID4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggMC84XSBJbnRyb2R1Y2UgZW11ZGV2IGxpYnJhcnkgYW5kIGlhdmYgZW11ZGV2IGRyaXZlcg0K PiA+Pj4+Pg0KPiA+Pj4+PiBPbiBGcmksIERlYyAxOCwgMjAyMCBhdCA5OjAyIEFNIENoZW5ibyBY aWEgPGNoZW5iby54aWFAaW50ZWwuY29tPiB3cm90ZToNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGlz IHNlcmllcyBpbnRyb2R1Y2VzIGEgbmV3IGRldmljZSBhYnN0cmFjdGlvbiBjYWxsZWQgZW11ZGV2 IGZvcg0KPiA+Pj4+PiBlbXVsYXRlZA0KPiA+Pj4+Pj4gZGV2aWNlcy4gQSBuZXcgbGlicmFyeSAo bGlicnRlX2VtdWRldikgaXMgaW1wbGVtZW50ZWQuIFRoZSBmaXJzdCBlbXVkZXYNCj4gPj4+Pj4+ IGRyaXZlciBpcyBhbHNvIGludHJvZHVjZWQsIHdoaWNoIGVtdWxhdGVzIEludGVsIEFkYXB0aXZl IFZpcnR1YWwNCj4gPj4+Pj4gRnVuY3Rpb24NCj4gPj4+Pj4+IChpYXZmKSBhcyBhIHNvZnR3YXJl IG5ldHdvcmsgZGV2aWNlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoaXMgc2VyaWVzIGhhcyBhIGRl cGVuZGVuY3kgb24gbGlicnRlX3ZmaW9fdXNlciBwYXRjaCBzZXJpZXM6DQo+ID4+Pj4+PiBodHRw Oi8vcGF0Y2h3b3JrLmRwZGsub3JnL2NvdmVyLzg1Mzg5Lw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEJh Y2tncm91bmQgJiBNb3RpdmF0aW9uDQo+ID4+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+Pj4+Pj4gVGhlIGRpc2FnZ3JlZ2F0ZWQvbXVsdGktcHJvY2VzcyBRRU1VIGlzIHVzaW5nIFZG SU8tb3Zlci1zb2NrZXQvdmZpby0NCj4gdXNlcg0KPiA+Pj4+Pj4gYXMgdGhlIG1haW4gdHJhbnNw b3J0IG1lY2hhbmlzbSB0byBkaXNhZ2dyZWdhdGUgSU8gc2VydmljZXMgZnJvbSBRRU1VLg0KPiA+ Pj4+Pj4gVGhlcmVmb3JlLCBsaWJydGVfdmZpb191c2VyIGlzIGludHJvZHVjZWQgaW4gRFBESyB0 byBhY2NvbW1vZGF0ZQ0KPiA+Pj4+Pj4gZW11bGF0ZWQgZGV2aWNlcyBmb3IgaGlnaCBwZXJmb3Jt YW5jZSBJL08uIEFsdGhvdWdoIHZmaW8tdXNlciBsaWJyYXJ5DQo+ID4+Pj4+PiBwcm92aWRlcyBw b3NzaWJpbGl0eSBvZiBlbXVsYXRpbmcgZGV2aWNlcyBpbiBEUERLLCBEUERLIGRvZXMgbm90IGhh dmUNCj4gPj4+Pj4+IGEgZGV2aWNlIGFic3RyYWN0aW9uIGZvciBlbXVsYXRlZCBkZXZpY2VzLiBB IGdvb2QgZGV2aWNlIGFic3RyYWN0aW9uDQo+ID4+Pj4+IHdpbGwNCj4gPj4+Pj4+IGJlIHVzZWZ1 bCBmb3IgYXBwbGljYXRpb25zIG9yIGhpZ2ggcGVyZm9ybWFuY2UgZGF0YSBwYXRoIGRyaXZlci4g V2l0aA0KPiA+Pj4+Pj4gdGhpcyBjb25zaWRlcmF0aW9uLCBlbXVkZXYgbGlicmFyeSBpcyBkZXNp Z25lZCBhbmQgaW1wbGVtZW50ZWQuIEl0IGFsc28NCj4gPj4+Pj4+IG1ha2UgaXQgcG9zc2JpbGUg dG8ga2VlcCBtb2R1bGFyIGRlc2lnbiBvbiBlbXVsYXRlZCBkZXZpY2VzIGJ5DQo+ID4+Pj4+IGlt cGxlbWVudGluZw0KPiA+Pj4+Pj4gZGF0YSBwYXRoIHJlbGF0ZWQgbG9naWMgaW4gYSBzdGFuZGFs b25lIGRyaXZlciAoZS5nLiwgYW4gZXRoZGV2IGRyaXZlcikNCj4gPj4+Pj4+IGFuZCBrZWVwcyB0 aGUgdW5yZWxhdGVkIGxvZ2ljIGluIHRoZSBlbXVkZXYgZHJpdmVyLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBTaW5jZSB5b3UgbWVudGlvbiBwZXJmb3JtYW5jZSwgaG93IGRvZXMgaXQgY29tcGFyZSB0byB2 aG9zdC11c2VyL3ZpcnRpbz8NCj4gPj4+Pg0KPiA+Pj4+IEkgdGhpbmsgaXQgZGVwZW5kcyBvbiB0 aGUgZGV2aWNlIHNwZWNpZmljYXRpb24gKGkuZS4sIGhvdyBjb21wbGV4IGl0cw0KPiBkYXRhDQo+ ID4+IHBhdGgNCj4gPj4+PiBoYW5kbGluZyBpcykuIEEgZmlyc3QgdHJ5IG9uIGlhdmYgc3BlYyBz aG93cyBiZXR0ZXIgcGVyZm9ybWFuY2UgdGhhbg0KPiB2aXJ0aW8NCj4gPj4+PiBpbiBvdXIgc2lt cGxlIHRlc3RzLg0KPiA+Pj4NCj4gPj4+IFRoYXQncyBpbnRlcmVzdGluZyEgSG93IGJpZyBpcyB0 aGUgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZT8gQW5kIGhvdyBkbw0KPiA+Pj4gd2UgZXhwbGFpbiBp dD8NCj4gPj4+DQo+ID4+PiBJZiB0aGVyZSBhcmUgaW1wcm92ZW1lbnRzIHRoYXQgY291bGQgYmUg ZG9uZSBpbiB0aGUgVmlydGlvDQo+ID4+PiBzcGVjaWZpY2F0aW9uLCBpdCB3b3VsZCBiZSBncmVh dCB0byBrbm93IGFuZCB3b3JrIG9uIHRoZWlyDQo+ID4+PiBpbXBsZW1lbnRhdGlvbnMuIEl0IHdv cnJpZXMgbWUgYSBiaXQgdGhhdCBldmVyeSBvbmUgaXMgY29taW5nIHdpdGgNCj4gPj4+IGhpcyBu ZXcgZGV2aWNlIGVtdWxhdGlvbiBldmVyeSByZWxlYXNlLCBtYWtpbmcgdGhpbmdzIGxpa2UgbGl2 ZS0NCj4gPj4+IG1pZ3JhdGlvbiBkaWZmaWN1bHQgdG8gYWNoaWV2ZSBpbiB0aGUgZnV0dXJlLg0K PiA+Pg0KPiA+PiBJIGRpZCBhIHF1aWNrIHJldmlldyBvZiB0aGUgSUFWRiBlbXVkZXYgZHJpdmVy IHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlcg0KPiA+PiBmYWN0b3JzIHRoYW4gcmluZyBsYXlvdXQg Y291bGQgZXhwbGFpbiBhIHBlcmZvcm1hbmNlIGdhaW4uDQo+ID4+DQo+ID4+IE15IHVuZGVyc3Rh bmRpbmcgaXMgdGhhdCBwYXJ0IG9mIHRoZSBwZXJmb3JtYW5jZSBnYWluIG1heSBjb21lIGZyb20N Cj4gPj4gZm9sbG93aW5nIHRoaW5ncyB0aGF0IGFyZSBzdXBwb3J0ZWQvaW1wbGVtZW50ZWQgaW4g Vmhvc3QtdXNlciBiYWNrZW5kDQo+ID4+IGFuZCBub3QgaW4gSUFWRiBkcml2ZXI6DQo+ID4+IDEu IE1lbW9yeSBob3RwbHVnLiBJdCBzZWVtcyB0aGUgZGF0YXBhdGggaXMgbm90IHNhZmUgYWdhaW5z dCBtZW1vcnkNCj4gPj4gaG90cGx1ZyBpbiB0aGUgVk0sIHdoaWNoIGNhdXNlcyB0aGUgbWVtb3J5 IHRhYmxlcyB0byBiZSB1cGRhdGVkDQo+ID4+IGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGRhdGFw YXRoLiBJbiBvcmRlciB0byBzdXBwb3J0IGl0IGluIFZob3N0LXVzZXINCj4gPj4gbGlicmFyeSwg d2UgaGFkIHRvIGludHJvZHVjZSBsb2NrcyB0byBlbnN1cmUgdGhlIGRhdGFwYXRoIGlzbid0DQo+ ID4+IGFjY2Vzc2luZyB0aGUgc2hhcmVkIG1lbW9yeSB3aGlsZSBpdCBpcyBiZWluZyByZW1hcHBl ZC4NCj4gPg0KPiA+IEkgdGhpbmsgbm93IGl0IHVzZXMgdGhlIHNpbWlsYXIgd2F5IHRoYXQgdmhv c3QtdXNlciBkb2VzLg0KPiA+DQo+ID4gRmlyc3QsIGluIHRoZSB2ZmlvLXVzZXIgcGF0Y2ggc2Vy aWVzLCB3ZSBpbnRyb2R1Y2UgYSBjYWxsYmFjayBsb2NrX2RwIHRvDQo+IGxvY2sNCj4gPiB0aGUg ZGF0YSBwYXRoIHdoZW4gbWVzc2FnZXMgbGlrZSBETUEgTUFQL1VOTUFQIGNvbWUuIEl0IHdpbGwg bG9jayBkYXRhcGF0aA0KPiA+IGluIG91ciBkYXRhIHBhdGggZHJpdmVyLg0KPiA+DQo+ID4gTm90 ZSB0aGF0IHRoZSBkYXRhIHBhdGggaGFuZGxpbmcgaXMgaW4gb3VyIGRhdGEgcGF0aCBkcml2ZXI6 DQo+ID4gaHR0cDovL3BhdGNod29yay5kcGRrLm9yZy9jb3Zlci84NTUwMC8NCj4gPg0KPiA+IEZv ciBtb2R1bGFyIGRlc2lnbiwgaWF2Zl9lbXUgZHJpdmVyIGVtdWxhdGVzIHRoZSBkZXZpY2UgYnV0 IHRoZSBpYXZmIGJhY2stDQo+IGVuZA0KPiA+IGRyaXZlciBkb2VzIGRhdGEgcGF0aCBoYW5kbGlu Zy4NCj4gDQo+IE15IGFuYWx5c2lzIHdhcyBhY3R1YWxseSBiYXNlZCBvbiB0aGUgZGF0YSBwYXRo IGRyaXZlciBzZXJpZXMuDQo+IA0KPiBNeSBwb2ludCB3YXMgdGhhdCBpYXZmYmVfcmVjdl9wa3Rz KCkgYW5kIGlhdmZiZV94bWl0X3BrdHMoKSBhcmUgbm90IHNhZmUNCj4gYWdhaW5zdCBhc3luY2hy b25vdXMgY2hhbmdlcyBsaWtlIG1lbW9yeSB0YWJsZSB1cGRhdGVzLg0KPiANCj4gQXMgZmFyIGFz IEkgY2FuIHNlZSwgdGhlIGFjY2Vzc19sb2NrIGFyZW4ndCB0YWtlbiBieSB0aGVzZSBmdW5jdGlv bnMsIHNvDQo+IGlmIGZvciBleGFtcGxlIGEgbWVtb3J5IHRhYmxlIHVwZGF0ZSBoYXBwZW4gZHVy aW5nIHRoZSB0aGVzZSBmdW5jdGlvbnMNCj4gZXhlY3V0aW9uLCBpdCBjb3VsZCBsZWFkIHRvIHVu ZGVmaW5lZCBiZWhhdmlvdXIuIE9ubHkgdGhpbmdzIGNoZWNrZWQNCj4gdGhlcmUgaXMgd2hldGhl ciB0aGUgcXVldWUgaXMgZW5hYmxlZCB3aGVuIGVudGVyaW5nIHRoZSBmdW5jdGlvbiwgYnV0DQo+ IHRoaXMgdmFsdWUgY2FuIGJlIGNoYW5nZWQgcmlnaHQgYWZ0ZXIgaGF2aW5nIGJlaW5nIGNoZWNr ZWQuDQo+IA0KPiBGb3IgZXhhbXBsZSwgaW4gVmhvc3QtdXNlciBsaWIsIHdlIHByb3RlY3RlZCBy dGVfdmhvc3RfZGVxdWV1ZV9idXJzdCgpDQo+IGFuZCBydGVfdmhvc3RfZW5xdWV1ZV9idXJzdCgp IHdpdGggYSBzcGlubG9jay4gTm90ZSB0aGF0IHRoaXMgc3BpbmxvY2sNCj4gaXMgcGVyLXZpcnRx dWV1ZSBpbiBvcmRlciB0byBhdm9pZCBjb250ZW50aW9uIGJldHdlZW4gdGhlIGRpZmZlcmVudA0K PiBxdWV1ZXMuDQo+IA0KDQpPb3BzLCBJIGRpZG4ndCByZWFsaXplIHRoZSBkYXRhIHBhdGggZHJp dmVyIG1pc3NlZCB0aGF0LiBBbmQgeWVzLCB0aGUgZGF0YSBwYXRoDQpkcml2ZXIgc2hvdWxkIGRv IHRoYXQgbGlrZSB5b3Ugc2FpZC4NCg0KPiA+Pg0KPiA+PiAyLiBMaXZlLW1pZ3JhdGlvbi4gVGhp cyBmZWF0dXJlIGRvZXMgbm90IHNlZW0gc3VwcG9ydGVkIGluIHRoZSBkcml2ZXIsDQo+ID4+IGFz IEkgY291bGQgbm90IGZpbmQgZGlydHkgcGFnZXMgdHJhY2tpbmcgbWVjaGFuaXNtLiBPbiBWaG9z dC11c2VyIHNpZGUsDQo+ID4+IHN1cHBvcnRpbmcgaW1wbGllcyBhZGRpbmcgbW9yZSBicmFuY2gg Y29uZGl0aW9ucyBpbiB0aGUgaG90IHBhdGgsIGV2ZW4NCj4gPj4gd2hlbiBpdCBpcyBub3QgdXNl ZC4NCj4gPg0KPiA+IFllcywgd2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIG5vdyBpbiB0aGlzIHZlcnNp b24uIEFuZCB5ZXMsIHdoZW4gd2Ugc3VwcG9ydA0KPiB0aGlzDQo+ID4gZmVhdHVyZSwgaXQgd2ls bCBpbnRyb2R1Y2UgY29tcGxleGl0eSBpbiBkYXRhIHBhdGguDQo+ID4NCj4gPj4NCj4gPj4gMy4g Tm8gSU9NTVUgc3VwcG9ydC4gU2FtZSBoZXJlLCB0aGlzIGlzIHN1cHBvcnRlZCBpbiBWaG9zdC11 c2VyIGxpYnJhcnksDQo+ID4+IGFuZCBhZGRpbmcgaXRzIHN1cHBvcnQgaW4gSUFWRiBkcml2ZXIg d291bGQgaW50cm9kdWNlIHNvbWUgbW9yZSBicmFuY2hlcw0KPiA+PiBpbiB0aGUgaG90IHBhdGgg ZXZlbiB3aGVuIG5vdCB1c2VkLg0KPiA+DQo+ID4gWWVzLCB2SU9NTVUgaXMgbm90IGZ1bGx5IHN1 cHBvcnRlZCBpbiB2ZmlvLXVzZXIgc3BlYyBmb3Igbm93IGFuZCBJIGFsc28NCj4gYWdyZWUNCj4g PiB3aGVuIHdlIGhhdmUgdG8gc3VwcG9ydCBpdCwgaXQgd2lsbCBzbG93IGRvd24gdGhlIGRhdGEg cGF0aC4NCj4gPg0KPiA+Pg0KPiA+PiA0LiBPdXQgb2YgYm91bmQgbWVtb3J5IGFjY2Vzc2VzIGNo ZWNrcy4gV2hpbGUNCj4gPj4gcnRlX2lhdmZfZW11X2dldF9kbWFfdmFkZHIoKSBwcm92aWRlcyBh IHdheSB0byBlbnN1cmUgdGhlIGZ1bGwgcmVxdWVzdGVkDQo+ID4+IGxlbmd0aCBpcyBtYXBwZWQs IHRoZSBkYXRhIHBhdGggZG9lcyBub3QgdXNlIGl0LiBJdCBkb2VzIG5vdCBldmVuIGVuc3VyZQ0K PiA+DQo+ID4gSW4gZmFjdCwgaXQgdXNlcyBpdCDwn5iKLiBJIHRoaW5rIHlvdSBtYXkgbWlzcyBv dXIgZGF0YSBwYXRoIGRyaXZlci4gSGVyZSdzIGENCj4gPiB1c2U6IGh0dHA6Ly9wYXRjaHdvcmsu ZHBkay5vcmcvcGF0Y2gvODU1MDQvDQo+IA0KPiBTb3JyeSwgSSB3YXMgbm90IGNsZWFyLiBXaGF0 IEkgbWVhbnQgaXMgdGhhdA0KPiBydGVfaWF2Zl9lbXVfZ2V0X2RtYV92YWRkcigpIGlzIGluZGVl ZCB1c2VkLCBidXQgaXRzIG91dHB1dHMgYXJlbid0DQo+IGNoZWNrZWQgcHJvcGVybHkuDQo+IA0K PiA+PiB0aGUgdHJhbnNsYXRlZCBhZGRyZXNzIGlzIG5vbi1OVUxMLiBJdCBtYWtlcyBpdCB0cml2 aWFsIGZvciBhIG1hbGljaW91cw0KPiA+PiBndWVzdCB0byBtYWtlIHRoZSBoeXBlcnZpc29yJ3Mg dlN3aXRjaCB0byBjcmFzaCBieSBzaW1wbHkgcGFzc2luZyByYW5kb20NCj4gPj4gdmFsdWVzIGFz IGJ1ZmZlcidzIGFkZHJlc3MgYW5kIGxlbmd0aC4gRml4aW5nIGl0IGlzIHRyaXZpYWwsIGJ1dCBp dCB3aWxsDQo+ID4+IGFkZCBzZXZlcmFsIG1vcmUgY2hlY2tzIGFuZCBsb29wcyAoaWYgYSBidWZm ZXIgaXMgc3Bhbm5lZCBhY3Jvc3MgdHdvDQo+ID4+IHBhZ2VzKSBpbiB0aGUgaG90IHBhdGguDQo+ ID4NCj4gPiBJIGRvbid0IHF1aXRlIHVuZGVyc3RhbmQgdGhpcyBvbmUuIEZpcnN0LCBydGVfaWF2 Zl9lbXVfZ2V0X2RtYV92YWRkcigpIGlzDQo+IHRoZQ0KPiA+IG9ubHkgd2F5IHRvIHRyYW5zbGF0 ZSBhZGRyZXNzLiBBbmQgSSB0aGluayB0aGlzIGZ1bmN0aW9uIHdpbGwgZW5zdXJlIHRoZQ0KPiBp bnB1dA0KPiA+IGFkZHJlc3MgaXMgdmFsaWQuIExvb2tpbmcgYXQgdGhlIHZob3N0IHNpZGUsIHZo b3N0X2lvdmFfdG9fdnZhKCkgZG9lcw0KPiBzaW1pbGFyDQo+ID4gdGhpbmdzIHdoZW4gdklPTU1V IGlzIG5vdCB1c2VkLiBEbyBJIG1pc3Mgc29tZXRoaW5nPyBKdXN0IGNvcnJlY3QgbWUgaWYgSSBh bQ0KPiA+IHdyb25nLg0KPiANCj4gSSB0aGluayBydGVfaWF2Zl9lbXVfZ2V0X2RtYV92YWRkcigp IGlzIGdvb2QsIHRoZSBpc3N1ZSBpcyB0aGUgd2F5IGl0IGlzDQo+IHVzZWQgaW4gaWF2ZmJlX3Jl Y3ZfcGt0cygpIGFuZCBpYXZmYmVfeG1pdF9wa3RzKCkuDQo+IA0KPiBGaXJzdCB0aGUgcmV0dXJu ZWQgYWRkcmVzcyAoZGVzY19hZGRyKSBpcyBub3QgY2hlY2tlZC4gU28gaWYgdGhlIHN0YXJ0DQo+ IGFkZHJlc3Mgb2YgdGhlIGJ1ZmZlciBpcyBvdXQgb2YgZ3Vlc3QgbWVtb3J5IHJhbmdlcywgdGhl IGhvc3QgYXBwIHdpbGwNCj4gY3Jhc2ggd2l0aCBhIHNlZ21lbnRhdGlvbiBmYXVsdC4gSXQgY2Fu IGhhcHBlbiBpbiBjYXNlIG9mIGJ1ZyBpbiB0aGUNCj4gZ3Vlc3QgZHJpdmVyLCBvciB3aXRoIGEg bWFsaWNpb3VzbHkgY3JhZnRlZCBkZXNjcmlwdG9yLg0KPiANCj4gVGhlbiwgcnRlX2lhdmZfZW11 X2dldF9kbWFfdmFkZHIoKSBsZW4gcGFyYW1ldGVyIGlzIGEgcG9pbnRlci4gVGhlDQo+IGNhbGxl ciBoYXMgdG8gcGFzcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgaXQgd2FudHMgdG8gbWFwLiBP bmNlDQo+IHJ0ZV9pYXZmX2VtdV9nZXRfZG1hX3ZhZGRyKCkgaXMgdXBkYXRlZCB3aXRoIHRoZSBj b250aWd1b3VzIGxlbmd0aCB0aGF0DQo+IGlzIG1hcHBlZC4NCj4gDQo+IFRoZSBjYWxsZXIgbmVl ZHMgdG8gY2hlY2sgd2hldGhlciBhbGwgcmVxdWVzdGVkIGxlbmd0aCBpcyBtYXBwZWQsIGFuZA0K PiBsb29wIHVudGlsIGl0IGlzIGFsbCBtYXBwZWQ6DQo+IGh0dHA6Ly9jb2RlLmRwZGsub3JnL2Rw ZGsvbGF0ZXN0L3NvdXJjZS9saWIvbGlicnRlX3Zob3N0L3ZpcnRpb19uZXQuYyNMNDg0DQo+IA0K PiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgYSBidWZmZXIgY29udGlndW91cyBpbiBJT1ZBIChn dWVzdCBwaHlzaWNhbA0KPiBhZGRyZXNzIHNwYWNlIGluIHRoaXMgY2FzZSkgaXMgbm90IG5lY2Vz c2FyaWx5IGNvbnRpZ3VvdXMgaW4gSG9zdA0KPiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIEFsc28s IHRoaXMgaXMgcmVxdWlyZWQgdG8gYmUgc2FmZSBhZ2FpbnN0DQo+IHVudHJ1c3RlZCBndWVzdHMs IGFzIGEgbWFsaWNpb3VzIGd1ZXN0IGNvdWxkIHBhc3MgfjBVTEwgaW4gdGhlDQo+IGRlc2NyaXB0 b3IgYnVmZmVyIGxlbiBvZiB0aGUgVHggcGF0aCB0byBjcmFzaCB0aGUgaG9zdCBhcHBsaWNhdGlv biBvcg0KPiBvdmVyd3JpdGUgaXRzIG1lbW9yeS4NCj4gDQo+IEN1cnJlbnRseSwgaW4gdGhlIGRy aXZlciwgZGVzY3JpcHRvciBidWYgbGVuIGlzIHBhc3NlZCB0byB0aGUgRE1BIG1hcA0KPiBmdW5j dGlvbiwgYnV0IGl0cyB2YWx1ZSBpcyBub3QgY2hlY2tlZCBhZnRlcndhcmQsIHNvIGl0IG9ubHkg ZW5zdXJlDQo+IGZpcnN0IGJ5dGUgaXMgbWFwcGVkLiBGb3IgVHgsIDEgYnl0ZXMgbGVuZ3RoIGlz IHJlcXVlc3RlZCBhdCBETUEgbWFwLCBzbw0KPiBhbHNvIG9ubHkgZmlyc3QgYnl0ZSBvZiB0aGUg YnVmZmVyIGlzIGVuc3VyZWQgdG8gYmUgbWFwcGVkIChpZiBkZXNjX2FkZHINCj4gaXMgbm90IE5V TEwsIHdoaWNoIGlzIG5vdCBjaGVja2VkKS4NCj4NCg0KQ29ycmVjdCEgSSBhbHNvIG1pc3NlZCB0 aGF0IHJ0ZV9pYXZmX2VtdV9nZXRfZG1hX3ZhZGRyKCkgaXMgbm90IHByb3Blcmx5IHVzZWQNCmlu IGRhdGEgcGF0aCBkcml2ZXIuIEZvciB0aGUgbG9jayBpc3N1ZSBhbmQgdGhpcywgQFd1LCBKaW5n amluZyBjb3VsZCB3ZSBmaXgNCmluIFYyPw0KDQpUaGFua3MgZm9yIHRoZSBnb29kIGNhdGNoZXMh DQpDaGVuYm8NCiANCj4gPj4NCj4gPj4gT3RoZXIgdGhhbiB0aGF0LCB0aGVyZSBpcyBmb3Igc3Vy ZSBhIHBlcmZvcm1hbmNlIGdhaW4gZHVlIHRvIGFsbCB0aGUNCj4gPj4gZmVhdHVyZXMgVmlydGlv LW5ldCBzdXBwb3J0cyB0aGF0IHdlIGhhdmUgdG8gY2hlY2sgYW5kIGhhbmRsZSBpbiB0aGUNCj4g Pj4gaG90cGF0aCwgbGlrZSBpbmRpcmVjdCBkZXNjcmlwdG9ycyBvciBtZXJnZWFibGUgYnVmZmVy cyBmb3IgZXhhbXBsZS4NCj4gPg0KPiA+IEkgdGhpbmsgaWF2ZiBoYXMgc2ltaWxhciBmZWF0dXJl cyBsaWtlIGluZGlyZWN0IGFuZCBtZXJnZWFibGUgdG8gcmVjdi94bWl0DQo+ID4gbGFyZ2UgcGt0 cy4gQnV0IEkgYmVsaWV2ZSB0aGVyZSB3aWxsIGJlIHNvbWUgZmVhdHVyZSBkaWZmZXJlbmNlIGJl dHdlZW4NCj4gPiBpYXZmIGFuZCB2aXJ0aW8vdmhvc3QuDQo+IA0KPiBTdXJlLCBidXQgSSBtZWFu dCBpdCBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IHRvIGltcGxlbWVudCBhbGwgdGhvc2UNCj4gZmVh dHVyZXMgKGlmIHRoZXkgYXJlIG9wdGlvbmFsIGluIHRoZSBzcGVjKSBpbiB5b3VyIGRyaXZlciwg anVzdCB0aGF0IGluDQo+IHRoZSBjYXNlIG9mIFZob3N0IHdlIGhhdmUgYSBsZWdhY3kgdG8gc3Vw cG9ydC4NCj4gDQo+ID4gSSB0aGluayB5b3UgYXJlIGNvcnJlY3QgdGhhdCBmb3IgdGhpcyB2ZXJz aW9uLCBpdCdzIG5vdCBmYWlyIHRvIGNvbXBhcmUNCj4gdmlydGlvL3Zob3N0DQo+ID4gd2l0aCBp YXZmIGJhY2stZW5kIGJlY2F1c2UgaWF2ZiBiYWNrLWVuZCBoYXMgbm90IHN1cHBvcnRlZCBzb21l IGZlYXR1cmVzLA0KPiBhbmQgYmVzaWRlcywNCj4gPiB3ZSBoYXZlIG5vdCBvcHRpbWl6ZWQgdGhl IGRhdGEgcGF0aCBvZiBpYXZmIGJhY2stZW5kLiBXZSBleHBlY3QgdGhlDQo+IHBlcmZvcm1hbmNl IG9mDQo+ID4gaWF2ZiBiYWNrLWVuZCBpbiB0aGUgc2FtZSBsZXZlbCBvZiB2aXJ0aW8gMS4xIGFu ZCBob3BlZnVsbHkgYmV0dGVyIGJlY2F1c2UNCj4gb2YgdGhlIHJpbmcNCj4gPiBsYXlvdXQuIEJ1 dCBsZXQncyBzZWUgd2hlbiB3ZSBjYW4gZG8gY29tcGxldGUgcGVyZm9ybWFuY2UgYW5hbHlzaXMg 8J+Yii4NCj4gDQo+IFRoYW5rcyENCj4gTWF4aW1lDQo+IA0KPiA+IFRoYW5rcyENCj4gPiBDaGVu Ym8NCj4gPg0KPiA+Pg0KPiA+PiBCZXN0IHJlZ2FyZHMsDQo+ID4+IE1heGltZQ0KPiA+Pg0KPiA+ Pj4gUmVnYXJkcywNCj4gPj4+IE1heGltZQ0KPiA+Pj4NCj4gPj4+PiBUaGFua3MhDQo+ID4+Pj4g Q2hlbmJvDQo+ID4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gLS0NCj4gPj4+Pj4gRGF2 aWQgTWFyY2hhbmQNCj4gPj4+Pg0KPiA+DQoNCg==