From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AFAB1A0547; Wed, 29 Sep 2021 16:54:33 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A00E5410EC; Wed, 29 Sep 2021 16:54:33 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2077.outbound.protection.outlook.com [40.107.95.77]) by mails.dpdk.org (Postfix) with ESMTP id 3ED5B410EA for ; Wed, 29 Sep 2021 16:54:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HDquAmSbyzd4VedvJ5IYs4dm8SqBFjIDX1Ly+DxOd65kBkm/hduXpMjLTBVAxI2s9GzBxXifH44HMyitXdKzpV4coPwY2YQqB3bNO6jdt2F4cx+pf/Z6vAx9rfjI+ICyJGbopKh5qtupt6hxspc7QzhEgr7WqvbbIIIxsCgPzPk14oqRfcTK7ZcaFoFzRiEPkaAoSUGKhhjZ0N9LoVHNJPHgCyD/GGBZzT+Dkbpcvt8AbHRJ7GUGdPAZZtkPjbeiEPkAEX5W+AjfNfJ+iiBeLpAoSZ/xSo//TQN5wkuSLLz88qGFlR3BoOglnoylvi8xGuy3NkudQar2uFHbCLukaA== 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; bh=LklVuiAIyJhwV0I2l6NiBpnQj3pbXPtb6J7XuuQXX6k=; b=UhKHcVHmNCXq3nqP5lyYWDoZnlga4NGHcvt8gkBmMkQbY2r9tL2zOgFqItvOcGBNMREuTxuyRn9hPFhdZCCFzDS6Dq7on7XpMbWtVUYdUSNFI2Lx/seZgdLMcNG4xd+M/KX+jSNi3b814nt03FC874JKEMfWyGnUjhbM20MjdUmdMV3HSXjAb1p7e7/0CAL19dbFP5SgnftSZiF3S3rDyNWjzuTx2FfPC49kJoOBNbICdgGtLvAHrfm8ozBESVgjXHayNOcPRVPHWIV3IcoHLil14ner5HYIOlRlX0Ti6UDLFKsao1zdbWyBMk68V+M29gG4BZocJuSsPOumWIo1ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LklVuiAIyJhwV0I2l6NiBpnQj3pbXPtb6J7XuuQXX6k=; b=iNjBeYi7QS0CMUNOpu2m+Y80uBm7K0UBnQl0phkt96DMcL5PllRXiQML50b4n5aAUrfm90522l6tFcwNfr96zTl8VXPeV8x9tEoXtw78WwIRagPKs1msnK2ShaOCS7O7rb3+qJwCXR2kPhOnFu2ydcZXOB781hMwtPf7FZC7lryobT48u/hqGL6th30/LkicbHdT6Yb22asXeKPygtjDCF2WYopjkMaTVm9vuVmvlgNKxZIKx8NlUBIWvU4bPHnvQ+gpsJX0PtiJp0MFOIyZnIRfDEhGNvoqo5v3Z65vlHVTaDA3HvFdvWXMQ/0xcMKpbnsCFSmV5ZnptyzB727tMw== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5216.namprd12.prod.outlook.com (2603:10b6:5:398::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.14; Wed, 29 Sep 2021 14:54:30 +0000 Received: from DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::584f:672a:653f:fe25]) by DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::584f:672a:653f:fe25%5]) with mapi id 15.20.4544.022; Wed, 29 Sep 2021 14:54:30 +0000 From: "Xueming(Steven) Li" To: "jerinjacobk@gmail.com" , "konstantin.ananyev@intel.com" CC: NBU-Contact-Thomas Monjalon , "andrew.rybchenko@oktetlabs.ru" , "dev@dpdk.org" , "ferruh.yigit@intel.com" Thread-Topic: [dpdk-dev] [PATCH v1] ethdev: introduce shared Rx queue Thread-Index: AQHXjRRw90lOFVUh8UWJorWd1QGccqtrMQAAgAAFuiCAAr2ogIAAA7rAgAA/vYCARM3YgIAGeHkAgAAiNICAABZuAIAAB6MAgAADvwCAAAXcgIAACzyAgACjuwCAAJM5AIAACwAAgAAl5oCAAAe7gIAAJskA Date: Wed, 29 Sep 2021 14:54:30 +0000 Message-ID: References: <20210727034204.20649-1-xuemingl@nvidia.com> <20210809114716.22035-1-xuemingl@nvidia.com> <6d4308c307a72d62b0be4d61f70f8d0c64a4e7ba.camel@nvidia.com> <15b1590a8899d85e85bb4f7c104b9399654ee160.camel@nvidia.com> <543d0e4ac61633fa179506906f88092a6d928fe6.camel@nvidia.com> <9d75880405f107f7c2476394b33da08cf21a8fa1.camel@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.4 authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 100d07a6-bf6d-4841-d3ea-08d983590ac1 x-ms-traffictypediagnostic: DM4PR12MB5216: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 64VzTPwhc6FqAMpKFMxwU35HBm3moGoUS8VegebxIjqSYzbTSsjGjqg4UyzkJ5Np9xzfbmMN4kNg89UnvQSB8a0Bx6UXLYEcE/UZfeSZkyiaXUgsC1M9QIKx86kCnxarfoyDg1LVaRUN3tze7kQhNOVFuPMubX7xD8pJHnfxpD35D7qXY9f9dCtteIabzRDqoGKSP7xt2yicbA1NLs11nFxitP/D7/3tOBvYfeIKieJwK8OuIlRxI3J2T/ge2omSBK7zwSpIwLh/h1CuQsT/0nPSZkSr2Av5fFoklI4WRDpQPteGwkFycbGQVfC9YBNKS6jiplrpoIWFbwv//csZwAvbpUzErYWUSocRh/Vif5mNjg8iQsnqRMbhZmQj3VGz48EtGppv9UETUt8NtQyTvREgFAeR+bKicxTWCkalsR2SLBSb9Bf298OuZuR2ljtDKKsz2vdjoGw2ykkBXRft6Breu+/t9TpZJxF92sUVvQuQ90PrL5d7ncZv7kro6PLmhZLiuPK9yKpCKzxSCnfwa8Rp+czwz9Iv6c+tz3WqlgB8vDaElMCMQPJVNpP4qy6RQxyJhkzpmq3eFcyFx8kpqUZzesmCIDhwXJgKrOs7sX3JgxyHQA2qnq+iQp1yD+aE4jEvxSayHqgK4vKwah4XInv4TaIOmgkbvboQ0hJ6xyYuGsQ75R+TSMowZUv3oPwVdzgy+T8jOKHd/gIi3+QfQtqFAAkPTVF8TnEGDwUy4ZkEjNSqIrlRlLBM4jFSBzkhxChMa2BRmZGE7k9jN896CxNx6V4AvepkZpSskC8z+Nk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5373.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(966005)(54906003)(38070700005)(110136005)(2616005)(316002)(186003)(2906002)(83380400001)(8936002)(6486002)(66476007)(66556008)(76116006)(8676002)(36756003)(5660300002)(26005)(71200400001)(66446008)(64756008)(66946007)(6512007)(508600001)(38100700002)(4326008)(91956017)(122000001)(86362001)(53546011)(6506007)(30864003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MU9NS3NSQWhocWtKSERSbDR5VXZEQWxzckIxc1ZzaDBKVGpoT3N0bjV6VmhU?= =?utf-8?B?cUJIeS9RTGdaM3FGQkNtUTFCWE5pUld5Sms0eGcrd1F6anoxNmZ0cE1zVkk4?= =?utf-8?B?azR1V2dsRURGOER1UUYwZkdkanRCNTQwcWw1SVhtdko3ZlBZaCtGNkpYaFJj?= =?utf-8?B?TEx1Wm11UWp2T3pnc0pjT3UzSmJsRmtIZkZHRjBYUGdDc0wybVhtdkZpVllp?= =?utf-8?B?LzloZVVmMDh2YkFTRmsxZy9vWWJxK0lSVUdnRTg0QnM0WWdXcVpLVDJkMk5i?= =?utf-8?B?Y041WjVxWDF0c1FGZ0ZvUDJyZklZSDJVdk9mUHpQcHB1TWs0WTQxc3pEVlZz?= =?utf-8?B?WTBXMmEwMGVYb1NUQWppU3E4b1BEQ2VySmxKT1k2NDVwMHlyMkJTN2lXdS9H?= =?utf-8?B?MjJmellDS3U0cDdtdUVSZm5hRmtlVUtySkNLQis2TWJjWFczalZTNm53NkVZ?= =?utf-8?B?MUNJTngrRFYxSTlWaWc5YXhqak0ySWdpc3BieWsxRWUra2dmd3RXVzRmWHFh?= =?utf-8?B?Q3F5bjZCNzE2c1RVR1BVYVJXaGNaRDEzZ251Vi90ZGs2ZW41c1hQS0hCOExM?= =?utf-8?B?enkwMnBkZnBWVWc3ZHR0MGxZdC9rOGl6Z1VJak53VHpaclZwRGdobnNxN3lB?= =?utf-8?B?MG4yZFY1aVE4ZWNoM05acHZVNnkvK3k5ckN1d1JGWmlWQ3I4NlhGNFRiMmJm?= =?utf-8?B?RmFhZW9pNTV1bi9UdEFWd3ZVM2xrTXlRTzBjVG5BUXdPa3R0c1RTVExaekVP?= =?utf-8?B?S05BUWhiblRUYkplRjdwcTAvVDJ2YVRHaE1aU1dBcU9PbHVkaHQ3c1dVTHJ1?= =?utf-8?B?Lyt3Q0VhTHhKdHNvNnhNbTI5b3ZxNzBsdkM4QmxONWdVT0NYbW4ya3gzRlNV?= =?utf-8?B?Q0NERzc1YnpFT1Myb1JFckdFYmdKUGIrdnU1RmEwYzZMNzdYT1JjRTV3eWFN?= =?utf-8?B?UFMydWtQREtTdzV5ZXdGZE9QK2F2WFdBNis2Uk9yQ2FSeHM1NWdtVXZmUzBO?= =?utf-8?B?czFVYXcvZ2FRYkZCdFdzV0tNMGJJSW04dFJqQVBqNkRvRXBMcDBzd3c1Zzc5?= =?utf-8?B?TDBjaFFhK21DcFFTR3pBSHB3MWUwVDE5RndRNHByN1lrSHpPczF4OHlndFVw?= =?utf-8?B?Qm1jQ1pYcThUZnoxTmo4RFBxZ3VaWUZnakJHRHhmQTNUemNrQmg5ck9mOFNI?= =?utf-8?B?RWkrSXhRZGwxWmE3RzR5L3huUmtPOXpxenMzL1dDRjBPM0lrU3BBRndzQ2Zy?= =?utf-8?B?bVZ3Vjk5UU8yUnhvWXh4VGhDZlU5RXdObGRaZlZEZGFGelpiUFFEN250blk1?= =?utf-8?B?VVVoUmthVzhFVExBeHBHM25rU0FBMUlrRDQ3YlFoMGJ1UG5sQlhQZk0yN09O?= =?utf-8?B?MGdpZGp5WmQ2RHd5cWRJdys1NkJJeStQUFpzU1dYYWpXbGplNWlnYm92UllJ?= =?utf-8?B?S2JORkZCY09ZcTI1cVMyaVhSWTd4SXJMYkVmRFdVbVdzQXBBbGI3b1BqamMr?= =?utf-8?B?MG9qN3d1M3E0dG81ZTJZbVRoSGhUV0ZhVGFXZmtUWWRMdVNhbUtycHVmUlFV?= =?utf-8?B?dEJiL1JNUk9UeEY0bHpEVW0rbnJRd2dmMUt0Q2hKWlpYOW82NmI4a3hHbGtz?= =?utf-8?B?Unk3cWMxZ3QzbmRRcEtLbVVnNkVqSTNrTTVkY0xqNkNwbktpbzB5R1lZSjFJ?= =?utf-8?B?dTNKU0lZYUpVVTdPNXRJQ0JSYlBzNld6aGFxS0dFZlhBM01DaFJWeW1xMEo2?= =?utf-8?B?cXZyc1Q4UUlEcFpGK3RGS21LNExoV3o3MHZMUm9DMUZHMVhrOFpXRFcyb2Q2?= =?utf-8?B?Tk51aFY2VEsrZUdjOERTUT09?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5373.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 100d07a6-bf6d-4841-d3ea-08d983590ac1 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2021 14:54:30.4472 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7g1Z0Rl5pBYwN4+zqj/iaaDKfZZudbEjvDqKHXZOdlPyC52kZj/exzeUrI4W64UtnCBtjOBkdDGHoFtKWlFFyQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5216 Subject: Re: [dpdk-dev] [PATCH v1] ethdev: introduce shared Rx queue X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" T24gV2VkLCAyMDIxLTA5LTI5IGF0IDEyOjM1ICswMDAwLCBBbmFueWV2LCBLb25zdGFudGluIHdy b3RlOg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFh1ZW1p bmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbnZpZGlhLmNvbT4NCj4gPiBTZW50OiBXZWRuZXNkYXks IFNlcHRlbWJlciAyOSwgMjAyMSAxOjA5IFBNDQo+ID4gVG86IGplcmluamFjb2JrQGdtYWlsLmNv bTsgQW5hbnlldiwgS29uc3RhbnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4g PiBDYzogTkJVLUNvbnRhY3QtVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pjsg YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU7IGRldkBkcGRrLm9yZzsgWWlnaXQsIEZlcnJ1 aA0KPiA+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1k ZXZdIFtQQVRDSCB2MV0gZXRoZGV2OiBpbnRyb2R1Y2Ugc2hhcmVkIFJ4IHF1ZXVlPiANCj4gPiBP biBXZWQsIDIwMjEtMDktMjkgYXQgMDk6NTIgKzAwMDAsIEFuYW55ZXYsIEtvbnN0YW50aW4gd3Jv dGU6DQo+ID4gPiANCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4g RnJvbTogWHVlbWluZyhTdGV2ZW4pIExpIDx4dWVtaW5nbEBudmlkaWEuY29tPg0KPiA+ID4gPiBT ZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAyOSwgMjAyMSAxMDoxMyBBTQ0KPiA+ID4gPiBUbzog amVyaW5qYWNvYmtAZ21haWwuY29tOyBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFu YW55ZXZAaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogTkJVLUNvbnRhY3QtVGhvbWFzIE1vbmphbG9u IDx0aG9tYXNAbW9uamFsb24ubmV0PjsgYW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU7IGRl dkBkcGRrLm9yZzsgWWlnaXQsIEZlcnJ1aA0KPiA+ID4gPiA8ZmVycnVoLnlpZ2l0QGludGVsLmNv bT4NCj4gPiA+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYxXSBldGhkZXY6IGlu dHJvZHVjZSBzaGFyZWQgUnggcXVldWUNCj4gPiA+ID4gDQo+ID4gPiA+IE9uIFdlZCwgMjAyMS0w OS0yOSBhdCAwMDoyNiArMDAwMCwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSW4gY3VycmVudCBEUERLIGZyYW1ld29yaywg ZWFjaCBSWCBxdWV1ZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpcw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBwcmUtbG9hZGVkIHdpdGggbWJ1 ZnMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZm9yIGluY29taW5nIHBh Y2tldHMuIFdoZW4gbnVtYmVyIG9mDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IHJlcHJlc2VudG9ycyBzY2FsZSBvdXQgaW4gYQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBzd2l0Y2ggZG9tYWluLCB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGJlY2FtZQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzaWduaWZpY2FudC4gTW9zdA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbXBvcnRhbnQsIHBvbGxpbmcgYWxsIHBvcnRzIGxlYWRz IHRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGhpZ2gNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gY2FjaGUgbWlzcywgaGlnaA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXRlbmN5IGFuZCBsb3cgdGhyb3VnaHB1dC4N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzaGFyZWQgUlggcXVl dWUuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFBvcnRzDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdpdGggc2FtZQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjb25maWd1cmF0aW9uIGluIGEgc3dpdGNoIGRvbWFpbiBj b3VsZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzaGFyZQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBSWCBxdWV1ZSBzZXQgYnkgc3BlY2lmeWlu ZyBzaGFyaW5nIGdyb3VwLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBQ b2xsaW5nIGFueSBxdWV1ZSB1c2luZyBzYW1lIHNoYXJlZCBSWA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBxdWV1ZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiByZWNlaXZlcyBwYWNrZXRzIGZyb20NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gYWxsIG1lbWJlciBwb3J0cy4gU291cmNlIHBvcnQgaXMNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaWRlbnRpZmllZA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBieSBtYnVmLT5wb3J0Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g UG9ydCBxdWV1ZSBudW1iZXIgaW4gYSBzaGFyZWQgZ3JvdXANCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gc2hvdWxkIGJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IGlkZW50aWNhbC4gUXVldWUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gaW5kZXggaXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g MToxIG1hcHBlZCBpbiBzaGFyZWQgZ3JvdXAuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBTaGFyZSBS WCBxdWV1ZSBpcyBzdXBwb3NlZCB0byBiZSBwb2xsZWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gb24NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g c2FtZSB0aHJlYWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBNdWx0aXBsZSBncm91cHMgaXMgc3Vw cG9ydGVkIGJ5IGdyb3VwIElELg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJcyB0aGlzIG9mZmxvYWQgc3Bl Y2lmaWMgdG8gdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiByZXByZXNl bnRvcj8gSWYNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNvIGNhbiB0aGlz IG5hbWUgYmUgY2hhbmdlZCBzcGVjaWZpY2FsbHkgdG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IHJlcHJlc2VudG9yPw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFllcywgUEYgYW5kIHJlcHJl c2VudG9yIGluIHN3aXRjaCBkb21haW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBjb3VsZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRha2UgYWR2YW50YWdl Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gSWYgaXQgaXMgZm9yIGEgZ2VuZXJpYyBjYXNlLCBob3cgdGhlIGZs b3cNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IG9yZGVyaW5nIHdpbGwgYmUg bWFpbnRhaW5lZD8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBOb3QgcXVpdGUgc3VyZSB0aGF0IEkgdW5kZXJzdG9v ZCB5b3VyDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcXVlc3Rpb24uDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhlIGNvbnRyb2wgcGF0aCBvZiBpcw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFsbW9zdCBzYW1lIGFzIGJlZm9yZSwgUEYg YW5kIHJlcHJlc2VudG9yDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcG9ydA0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHN0aWxsIG5lZWRlZCwgcnRlIGZsb3dz IG5vdCBpbXBhY3RlZC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBRdWV1ZXMg c3RpbGwgbmVlZGVkIGZvciBlYWNoIG1lbWJlciBwb3J0LA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IGRlc2NyaXB0b3JzKG1idWYpIHdpbGwgYmUNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBzdXBwbGllZCBmcm9tIHNoYXJlZCBSeCBxdWV1ZSBpbiBteSBQTUQN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbXBsZW1lbnRhdGlvbi4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IE15IHF1ZXN0aW9uIHdhcyBpZiBjcmVhdGUgYSBnZW5lcmljDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IFJURV9FVEhfUlhfT0ZGTE9BRF9TSEFSRURfUlhRIG9mZmxvYWQsIG11 bHRpcGxlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGV0aGRldiByZWNlaXZlIHF1 ZXVlcyBsYW5kIGludG8NCj4gPiA+ID4gPiA+ID4gPiB0aGUgc2FtZQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiByZWNlaXZlIHF1ZXVlLCBJbiB0aGF0IGNhc2UsIGhvdyB0aGUgZmxv dyBvcmRlcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpcw0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBtYWludGFpbmVkIGZvciByZXNwZWN0aXZlIHJlY2VpdmUgcXVl dWVzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBJIGd1ZXNzIHRoZSBxdWVzdGlvbiBpcyB0ZXN0cG1kIGZvcndhcmQgc3RyZWFt Pw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBmb3J3YXJkaW5nIGxvZ2ljIGhhcyB0byBiZSBjaGFuZ2VkIHNsaWdodGx5IGlu DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjYXNlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBvZiBzaGFyZWQgcnhxLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g YmFzaWNhbGx5IGZvciBlYWNoIHBhY2tldCBpbiByeF9idXJzdCByZXN1bHQsDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBsb29rdXANCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IHNvdXJjZSBzdHJlYW0gYWNjb3JkaW5nIHRvIG1idWYtPnBvcnQsIGZvcndhcmRpbmcNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiB0YXJnZXQgZnMuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBQYWNrZXRzIGZyb20g c2FtZSBzb3VyY2UgcG9ydCBjb3VsZCBiZSBncm91cGVkIGFzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBhDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzbWFsbCBidXJzdCB0 byBwcm9jZXNzLCB0aGlzIHdpbGwgYWNjZWxlcmF0ZXMgdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBwZXJmb3JtYW5jZSBpZiB0cmFmZmljDQo+ID4gPiA+ID4gPiA+ID4gY29tZSBm cm9tDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBsaW1pdGVkIHBvcnRzLiBJJ2xsIGlu dHJvZHVjZSBzb21lIGNvbW1vbiBhcGkgdG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IGRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzaGFyZCByeHEgZm9yd2FyZGluZywg Y2FsbCBpdCB3aXRoIHBhY2tldHMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGhhbmRs aW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjYWxsYmFjaywgc28gaXQgc3VpdGVz IGZvcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYWxsIGZvcndhcmRpbmcgZW5naW5l LiBXaWxsIHNlbnQgcGF0Y2hlcyBzb29uLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gQWxsIHBvcnRzIHdpbGwgcHV0IHRoZSBwYWNrZXRzIGluIHRvIHRoZSBzYW1lIHF1ZXVlDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKHNoYXJlIHF1ZXVlKSwgcmlnaHQ/IERvZXMNCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGlzIG1lYW5zIG9ubHkgc2luZ2xlIGNvcmUgd2ls bCBwb2xsIG9ubHksIHdoYXQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB3aWxsDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaGFwcGVuIGlmIHRoZXJlIGFyZQ0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IG11bHRpcGxlIGNvcmVzIHBvbGxpbmcsIHdvbid0IGl0IGNhdXNlIHBy b2JsZW0/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gQW5kIGlmIHRoaXMgcmVxdWlyZXMgc3BlY2lmaWMgY2hhbmdlcyBpbiB0aGUNCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhcHBsaWNhdGlvbiwgSSBhbSBub3Qgc3VyZSBhYm91 dA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRoZSBzb2x1dGlvbiwgY2FuJ3QgdGhpcyB3 b3JrIGluIGEgdHJhbnNwYXJlbnQgd2F5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdG8N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGUgYXBwbGljYXRpb24/DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBEaXNjdXNzZWQgd2l0 aCBKZXJpbiwgbmV3IEFQSSBpbnRyb2R1Y2VkIGluIHYzIDIvOA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiB0aGF0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFnZ3JlZ2F0ZSBwb3J0cw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbiBzYW1lIGdyb3VwIGludG8gb25lIG5ldyBwb3J0 LiBVc2VycyBjb3VsZCBzY2hlZHVsZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBwb2xsaW5n IG9uIHRoZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhZ2dyZWdhdGVkIHBvcnQgaW5zdGVh ZCBvZiBhbGwgbWVtYmVyIHBvcnRzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBUaGUgdjMgc3RpbGwgaGFzIHRlc3RwbWQgY2hhbmdlcyBpbiBmYXN0 cGF0aC4gUmlnaHQ/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJTU8sDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBGb3IgdGhpcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZmVhdHVyZSwgd2Ug c2hvdWxkIG5vdCBjaGFuZ2UgZmFzdHBhdGggb2YgdGVzdHBtZA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gYXBwbGljYXRpb24uIEluc3RlYWQsIHRlc3RwbWQgY2FuIHVzZSBhZ2dyZWdhdGVkIHBv cnRzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBwcm9iYWJseSBhcw0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gc2VwYXJhdGUgZndkX2VuZ2luZSB0byBzaG93IGhvdyB0byB1c2UgdGhpcyBmZWF0 dXJlLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEdvb2Qg cG9pbnQgdG8gZGlzY3VzcyA6KSBUaGVyZSBhcmUgdHdvIHN0cmF0ZWdpZXMgdG8NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiBwb2xsaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYSBzaGFyZWQNCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiBSeHE6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gMS4gcG9sbGlu ZyBlYWNoIG1lbWJlciBwb3J0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgQWxsIGZvcndh cmRpbmcgZW5naW5lcyBjYW4gYmUgcmV1c2VkIHRvIHdvcmsgYXMNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBiZWZvcmUuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgTXkgdGVzdHBtZCBwYXRj aGVzIGFyZSBlZmZvcnRzIHRvd2FyZHMgdGhpcyBkaXJlY3Rpb24uDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gwqDCoMKgRG9lcyB5b3VyIFBNRCBzdXBwb3J0IHRoaXM/DQo+ID4gPiA+ID4gPiA+ID4g PiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBOb3QgdW5mb3J0dW5hdGVseS4gTW9yZSB0aGFuIHRo YXQsIGV2ZXJ5IGFwcGxpY2F0aW9uIG5lZWRzDQo+ID4gPiA+ID4gPiA+ID4gPiA+IHRvDQo+ID4g PiA+ID4gPiA+ID4gPiA+IGNoYW5nZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiB0byBzdXBwb3J0IHRo aXMgbW9kZWwuDQo+ID4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiA+IEJvdGggc3Ry YXRlZ2llcyBuZWVkIHVzZXIgYXBwbGljYXRpb24gdG8gcmVzb2x2ZSBwb3J0IElEIGZyb20NCj4g PiA+ID4gPiA+ID4gPiA+IG1idWYgYW5kDQo+ID4gPiA+ID4gPiA+ID4gPiBwcm9jZXNzIGFjY29y ZGluZ2x5Lg0KPiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBvbmUgZG9lc24ndCBkZW1hbmQgYWdncmVn YXRlZCBwb3J0LCBubyBwb2xsaW5nIHNjaGVkdWxlDQo+ID4gPiA+ID4gPiA+ID4gPiBjaGFuZ2Uu DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gSSB3YXMgdGhpbmtpbmcsIG1idWYg d2lsbCBiZSB1cGRhdGVkIGZyb20gZHJpdmVyL2FnZ3JlZ2F0b3INCj4gPiA+ID4gPiA+ID4gPiBw b3J0IGFzDQo+ID4gPiA+ID4gPiA+ID4gd2hlbiBpdA0KPiA+ID4gPiA+ID4gPiA+IGNvbWVzIHRv IGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDIuIHBvbGxpbmcgYWdncmVn YXRlZCBwb3J0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgQmVzaWRlcyBmb3J3YXJkaW5n IGVuZ2luZSwgbmVlZCBtb3JlIHdvcmsgdG8gdG8gZGVtbw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IGl0Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IMKgwqDCoFRoaXMgaXMgYW4gb3B0aW9uYWwgQVBJ LCBub3Qgc3VwcG9ydGVkIGJ5IG15IFBNRCB5ZXQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiBXZSBhcmUgdGhpbmtpbmcgb2YgaW1wbGVtZW50aW5nIHRoaXMgUE1E IHdoZW4gaXQgY29tZXMgdG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gaXQsDQo+ID4gPiA+ID4gPiA+ ID4gPiA+IGllLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiB3aXRob3V0IGFwcGxpY2F0aW9uIGNoYW5n ZSBpbiBmYXN0cGF0aA0KPiA+ID4gPiA+ID4gPiA+ID4gPiBsb2dpYy4NCj4gPiA+ID4gPiA+ID4g PiA+IA0KPiA+ID4gPiA+ID4gPiA+ID4gRmFzdHBhdGggaGF2ZSB0byByZXNvbHZlIHBvcnQgSUQg YW55d2F5IGFuZCBmb3J3YXJkaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiBhY2NvcmRpbmcNCj4gPiA+ ID4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gPiA+ID4gPiBsb2dpYy4gRm9yd2FyZGluZyBlbmdp bmUgbmVlZCB0byBhZGFwdCB0byBzdXBwb3J0IHNoYXJkIFJ4cS4NCj4gPiA+ID4gPiA+ID4gPiA+ IEZvcnR1bmF0ZWx5LCBpbiB0ZXN0cG1kLCB0aGlzIGNhbiBiZSBkb25lIHdpdGggYW4gYWJzdHJh Y3QNCj4gPiA+ID4gPiA+ID4gPiA+IEFQSS4NCj4gPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiA+ID4gTGV0J3MgZGVmZXIgcGFydCAyIHVudGlsIHNvbWUgUE1EIHJlYWxseSBzdXBwb3J0 IGl0IGFuZA0KPiA+ID4gPiA+ID4gPiA+ID4gdGVzdGVkLA0KPiA+ID4gPiA+ID4gPiA+ID4gaG93 IGRvDQo+ID4gPiA+ID4gPiA+ID4gPiB5b3UgdGhpbms/DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiA+ID4gV2UgYXJlIG5vdCBwbGFubmluZyB0byB1c2UgdGhpcyBmZWF0dXJlIHNvIGVp dGhlciB3YXkgaXQgaXMgT0sNCj4gPiA+ID4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gPiA+IG1l Lg0KPiA+ID4gPiA+ID4gPiA+IEkgbGVhdmUgdG8gZXRoZGV2IG1haW50YWluZXJzIGRlY2lkZSBi ZXR3ZWVuIDEgdnMgMi4NCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiBJIGRvIGhh dmUgYSBzdHJvbmcgb3BpbmlvbiBub3QgY2hhbmdpbmcgdGhlIHRlc3RwbWQgYmFzaWMNCj4gPiA+ ID4gPiA+ID4gPiBmb3J3YXJkDQo+ID4gPiA+ID4gPiA+ID4gZW5naW5lcw0KPiA+ID4gPiA+ID4g PiA+IGZvciB0aGlzIGZlYXR1cmUuSSB3b3VsZCBsaWtlIHRvIGtlZXAgaXQgc2ltcGxlIGFzIGZh c3RwYXRoDQo+ID4gPiA+ID4gPiA+ID4gb3B0aW1pemVkIGFuZCB3b3VsZA0KPiA+ID4gPiA+ID4g PiA+IGxpa2UgdG8gYWRkIGEgc2VwYXJhdGUgRm9yd2FyZGluZyBlbmdpbmUgYXMgbWVhbnMgdG8g dmVyaWZ5DQo+ID4gPiA+ID4gPiA+ID4gdGhpcw0KPiA+ID4gPiA+ID4gPiA+IGZlYXR1cmUuDQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiArMSB0byB0aGF0Lg0KPiA+ID4gPiA+ID4gPiBJ IGRvbid0IHRoaW5rIGl0IGEgJ2NvbW1vbicgZmVhdHVyZS4NCj4gPiA+ID4gPiA+ID4gU28gc2Vw YXJhdGUgRldEIG1vZGUgc2VlbXMgbGlrZSBhIGJlc3QgY2hvaWNlIHRvIG1lLg0KPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiAtMSA6KQ0KPiA+ID4gPiA+ID4gVGhlcmUgd2FzIHNvbWUgaW50ZXJu YWwgcmVxdWlyZW1lbnQgZnJvbSB0ZXN0IHRlYW0sIHRoZXkgbmVlZCB0bw0KPiA+ID4gPiA+ID4g dmVyaWZ5DQo+ID4gPiA+ID4gPiBhbGwgZmVhdHVyZXMgbGlrZSBwYWNrZXQgY29udGVudCwgcnNz LCB2bGFuLCBjaGVja3N1bSwgcnRlX2Zsb3cuLi4NCj4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4g PiBiZSB3b3JraW5nIGJhc2VkIG9uIHNoYXJlZCByeCBxdWV1ZS4NCj4gPiA+ID4gPiANCj4gPiA+ ID4gPiBUaGVuIEkgc3VwcG9zZSB5b3UnbGwgbmVlZCB0byB3cml0ZSByZWFsbHkgY29tcHJlaGVu c2l2ZSBmd2QtZW5naW5lDQo+ID4gPiA+ID4gdG8gc2F0aXNmeSB5b3VyIHRlc3QgdGVhbSA6KQ0K PiA+ID4gPiA+IFNwZWFraW5nIHNlcmlvdXNseSwgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHdo eSBkbyB5b3UgbmVlZCBhbGwNCj4gPiA+ID4gPiBhdmFpbGFibGUgZndkLWVuZ2luZXMgdG8gdmVy aWZ5IHRoaXMgZmVhdHVyZS4NCj4gPiA+ID4gPiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCBtYWlu IHB1cnBvc2Ugb2YgeW91ciBjaGFuZ2VzIHRvIHRlc3QtcG1kOg0KPiA+ID4gPiA+IGFsbG93IHRv IGZ3ZCBwYWNrZXQgdGhvdWdoIGRpZmZlcmVudCBmd2Rfc3RyZWFtIChUWCB0aHJvdWdoIGRpZmZl cmVudA0KPiA+ID4gPiA+IEhXIHF1ZXVlKS4NCj4gPiA+ID4gPiBJbiB0aGVvcnksIGlmIGltcGxl bWVudGVkIGluIGdlbmVyaWMgYW5kIGV4dGVuZGFibGUgd2F5IC0gdGhhdA0KPiA+ID4gPiA+IG1p Z2h0IGJlIGEgdXNlZnVsIGFkZC1vbiB0byB0ZXNwbWQgZndkIGZ1bmN0aW9uYWxpdHkuDQo+ID4g PiA+ID4gQnV0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbG9va3MgdmVyeSBjYXNlIHNwZWNpZmlj Lg0KPiA+ID4gPiA+IEFuZCBhcyBJIGRvbid0IHRoaW5rIGl0IGlzIGEgY29tbW9uIGNhc2UsIEkg ZG9uJ3Qgc2VlIG11Y2ggcG9pbnQgdG8NCj4gPiA+ID4gPiBwb2xsdXRlDQo+ID4gPiA+ID4gYmFz aWMgZndkIGNhc2VzIHdpdGggaXQuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gQlRXLCBhcyBhIHNp ZGUgbm90ZSwgdGhlIGNvZGUgYmVsb3cgbG9va3MgYm9ndXMgdG8gbWU6DQo+ID4gPiA+ID4gK3Zv aWQNCj4gPiA+ID4gPiArZm9yd2FyZF9zaGFyZWRfcnhxKHN0cnVjdCBmd2Rfc3RyZWFtICpmcywg dWludDE2X3QgbmJfcngsDQo+ID4gPiA+ID4gKwkJICAgc3RydWN0IHJ0ZV9tYnVmICoqcGt0c19i dXJzdCwgcGFja2V0X2Z3ZF9jYg0KPiA+ID4gPiA+IGZ3ZCkNCj4gPiA+ID4gPiArew0KPiA+ID4g PiA+ICsJdWludDE2X3QgaSwgbmJfZnNfcnggPSAxLCBwb3J0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArCS8qIExvY2F0ZSByZWFsIHNvdXJjZSBmcyBhY2NvcmRpbmcgdG8gbWJ1Zi0+cG9ydC4g Ki8NCj4gPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBuYl9yeDsgKytpKSB7DQo+ID4gPiA+ID4g KwkJcnRlX3ByZWZldGNoMChwa3RzX2J1cnN0W2kgKyAxXSk7DQo+ID4gPiA+ID4gDQo+ID4gPiA+ ID4geW91IGFjY2VzcyBwa3RfYnVyc3RbXSBiZXlvbmQgYXJyYXkgYm91bmRhcmllcywNCj4gPiA+ ID4gPiBhbHNvIHlvdSBhc2sgY3B1IHRvIHByZWZldGNoIHNvbWUgdW5rbm93biBhbmQgcG9zc2li bHkgaW52YWxpZA0KPiA+ID4gPiA+IGFkZHJlc3MuDQo+ID4gPiA+IA0KPiA+ID4gPiBTb3JyeSBJ IGZvcmdvdCB0aGlzIHRvcGljLiBJdCdzIHRvbyBsYXRlIHRvIHByZWZldGNoIGN1cnJlbnQgcGFj a2V0LCBzbw0KPiA+ID4gPiBwZXJmZXRjaCBuZXh0IGlzIGJldHRlci4gUHJlZmV0Y2ggYW4gaW52 YWxpZCBhZGRyZXNzIGF0IGVuZCBvZiBhIGxvb2sNCj4gPiA+ID4gZG9lc24ndCBodXJ0LCBpdCdz IGNvbW1vbiBpbiBEUERLLg0KPiA+ID4gDQo+ID4gPiBGaXJzdCBvZiBhbGwgaXQgaXMgdXN1YWxs eSBuZXZlciAnT0snIHRvIGFjY2VzcyBhcnJheSBiZXlvbmQgaXRzIGJvdW5kcy4NCj4gPiA+IFNl Y29uZCBwcmVmZXRjaGluZyBpbnZhbGlkIGFkZHJlc3MgKmRvZXMqIGh1cnQgcGVyZm9ybWFuY2Ug YmFkbHkgb24gbWFueSBDUFVzDQo+ID4gPiAoVExCIG1pc3NlcywgY29uc3VtZWQgbWVtb3J5IGJh bmR3aWR0aCBldGMuKS4NCj4gPiA+IEFzIGEgcmVmZXJlbmNlOiAgaHR0cHM6Ly9sd24ubmV0L0Fy dGljbGVzLzQ0NDM0Ni8NCj4gPiA+IElmIHNvbWUgZXhpc3RpbmcgRFBESyBjb2RlIHJlYWxseSBk b2VzIHRoYXQgLSB0aGVuIEkgYmVsaWV2ZSBpdCBpcyBhbiBpc3N1ZSBhbmQgaGFzIHRvIGJlIGFk ZHJlc3NlZC4NCj4gPiA+IE1vcmUgaW1wb3J0YW50IC0gaXQgaXMgcmVhbGx5IGJhZCBhdHRpdHVk ZSB0byBzdWJtaXQgYm9ndXMgY29kZSB0byBEUERLIGNvbW11bml0eQ0KPiA+ID4gYW5kIHByZXRl bmQgdGhhdCBpdCBpcyAnT0snLg0KPiA+IA0KPiA+IFRoYW5rcyBmb3IgdGhlIGxpbmshDQo+ID4g RnJvbSBpbnN0cnVjdGlvbiBzcGVjLCAiVGhlIFBSRUZFVENIaCBpbnN0cnVjdGlvbiBpcyBtZXJl bHkgYSBoaW50IGFuZA0KPiA+IGRvZXMgbm90IGFmZmVjdCBwcm9ncmFtIGJlaGF2aW9yLiINCj4g PiBUaGVyZSBhcmUgMyBjaG9pY2VzIGhlcmU6DQo+ID4gMTogbm8gcHJlZmV0Y2guwqBEJCBtaXNz IHdpbGwgaGFwcGVuIG9uIGVhY2ggcGFja2V0LCB0aW1lIGNvc3QgZGVwZW5kcw0KPiA+IG9uIHdo ZXJlIGRhdGEgc2l0cyhjbG9zZSBvciBmYXIpIGFuZCBidXJzdCBzaXplLg0KPiA+IDI6IHByZWZl dGNoIHdpdGggbG9vcCBlbmQgY2hlY2sgdG8gYXZvaWQgcmFuZG9tIGFkZHJlc3MuIFBybyBpcyBm cmVlIG9mDQo+ID4gVExCIG1pc3MgcGVyIGJ1cnN0LCBDb25zIGlzICJpZiIgaW5zdHJ1Y3Rpb24g cGVyIHBhY2tldC4gQ29zdCBkZXBlbmRzDQo+ID4gb24gYnVyc3Qgc2l6ZS4NCj4gPiAzOiBicnV0 ZSBmb3JjZSBwcmVmZXRjaCwgY29zdCBpcyBUTEIgbWlzcywgYnV0IG5vIGFkZHRpb25hbA0KPiA+ IGluc3RydWN0aW9ucyBwZXIgcGFja2V0LiBOb3Qgc3VyZSBob3cgcmFuZG9tIHRoZSBsYXN0IGFk ZHJlc3MgY291bGQgYmUNCj4gPiBpbiB0ZXN0cG1kIGFuZCBob3cgbWFueSBUTEIgbWlzcyBjb3Vs ZCBoYXBwZW4uDQo+IA0KPiBUaGVyZSBhcmUgcGxlbnR5IG9mIHN0YW5kYXJkIHRlY2huaXF1ZXMg dG8gYXZvaWQgdGhhdCBpc3N1ZSB3aGlsZSBrZWVwaW5nDQo+IHByZWZldGNoKCkgaW4gcGxhY2Uu DQo+IFByb2JhYmx5IHRoZSBlYXNpZXN0IG9uZToNCj4gDQo+IGZvciAoaT0wOyBpIDwgbmJfcngg LSAxOyBpKyspIHsNCj4gICAgIHByZWZldGNoKHBrdFtpKzFdOw0KPiAgICAgLyogZG8geW91ciBz dHVmZiB3aXRoIHBrdFtpWyBoZXJlICovDQo+IH0NCj4gDQo+IC8qIGRvIHlvdXIgc3R1ZmYgd2l0 aCBwa3RbbmJfcnggLSAxXTsgKi8NCg0KVGhhbmtzLCB3aWxsIHVwZGF0ZSBpbiBuZXh0IHZlcnNp b24uDQoNCj4gIA0KPiA+IEJhc2VkIG9uIG15IGV4cGVyaWNlbiBvZiBwZXJmb3JtYW5jZSBvcHRp bWl6YXRpb24sIElJUkMsIG9wdGlvbiAzIGhhcw0KPiA+IHRoZSBiZXN0IHBlcmZvcm1hbmNlLiBC dXQgZm9yIHRoaXMgY2FzZSwgcmVzdWx0IGRlcGVuZHMgb24gaG93IG1hbnkNCj4gPiBzdWItYnVy c3QgaW5zaWRlIGFuZCBob3cgc3ViLWJ1cnN0IGdldCBwcm9jZXNzZWQsIG1heWJlIGNhbGxiYWNr IHdpbGwNCj4gPiBmbHVzaCBwcmVmZXRjaCBkYXRhIGNvbXBsZXRlbHkgb3Igbm90LiBTbyBpdCdz IGhhcmQgdG8gZ2V0IGENCj4gPiBjb25jbHVzaW9uLCB3aGF0IEkgc2FpZCBpcyB0aGF0IHRoZSBj b2RlIGluIFBNRCBkcml2ZXIgc2hvdWxkIGhhdmUgYQ0KPiA+IHJlYXNvbi4NCj4gPiANCj4gPiBP biB0aGUgb3RoZXIgaGFuZCwgdGhlIGxhdGVuY3kgYW5kIHRocm91Z2hwdXQgc2F2aW5nIG9mIHRo aXMgZmVhdHVlIG9uDQo+ID4gbXVsdGlwbGUgcG9ydHMgaXMgaHVnZSwgSSBwZXJmZXIgdG8gZG93 biBwbGF5IHRoaXMgcHJlZmV0Y2ggZGlzY3Vzc2lvbg0KPiA+IGlmIHlvdSBhZ3JlZS4NCj4gPiAN Cj4gDQo+IEhvbmVzdGx5LCBJIGRvbid0IGtub3cgaG93IGVsc2UgdG8gZXhwbGFpbiB0byB5b3Ug dGhhdCB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGF0IHBpZWNlIG9mIGNvZGUuDQo+IEZyb20gbXkgcGVy c3BlY3RpdmUgaXQgaXMgYSB0cml2aWFsIGJ1Zywgd2l0aCBhIHRyaXZpYWwgZml4Lg0KPiBCdXQg eW91IHNpbXBseSBrZWVwIGlnbm9yaW5nIHRoZSBhcmd1bWVudHMuDQo+IFRpbGwgaXQgZ2V0IGZp eGVkIGFuZCBvdGhlciBjb21tZW50cyBhZGRyZXNzZWQgLSBteSB2b3RlIGlzIE5BQ0sgZm9yIHRo ZXNlIHNlcmllcy4NCj4gSSBkb24ndCB0aGluayB3ZSBuZWVkIGJvZ3VzIGNvZGUgaW4gdGVzdHBt ZC4NCj4gDQo+IA0KDQo=