From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 03F704AAD for ; Thu, 14 Apr 2016 15:50:48 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP; 14 Apr 2016 06:50:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,484,1455004800"; d="scan'208";a="932404783" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga001.jf.intel.com with ESMTP; 14 Apr 2016 06:50:47 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 14 Apr 2016 06:50:47 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.211]) by fmsmsx117.amr.corp.intel.com ([169.254.3.77]) with mapi id 14.03.0248.002; Thu, 14 Apr 2016 06:50:47 -0700 From: "Wiles, Keith" To: Olivier Matz , "dev@dpdk.org" CC: "Richardson, Bruce" , "stephen@networkplumber.org" Thread-Topic: [dpdk-dev] [PATCH 00/36] mempool: rework memory allocation Thread-Index: AQHRljdbPZMvgEhXTE21dRhAwrQWJ5+JnmGA Date: Thu, 14 Apr 2016 13:50:46 +0000 Message-ID: References: <1457540381-20274-1-git-send-email-olivier.matz@6wind.com> <1460629199-32489-1-git-send-email-olivier.matz@6wind.com> In-Reply-To: <1460629199-32489-1-git-send-email-olivier.matz@6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.81.124] Content-Type: text/plain; charset="utf-8" Content-ID: <625E09612B91FF44A0E88A19C78180A5@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 00/36] mempool: rework memory allocation 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: Thu, 14 Apr 2016 13:50:49 -0000 PlRoaXMgc2VyaWVzIGlzIGEgcmV3b3JrIG9mIG1lbXBvb2wuIEZvciB0aG9zZSB3aG8gZG9uJ3Qg d2FudCB0byByZWFkDQo+YWxsIHRoZSBjb3ZlciBsZXR0ZXIsIGhlcmUgaXMgYSBzdW1hcnk6DQo+ DQo+LSBpdCBpcyBub3QgcG9zc2libGUgdG8gYWxsb2NhdGUgbGFyZ2UgbWVtcG9vbHMgaWYgdGhl cmUgaXMgbm90IGVub3VnaA0KPiAgY29udGlndW91cyBtZW1vcnksIHRoaXMgc2VyaWVzIHNvbHZl cyB0aGlzIGlzc3VlDQo+LSBpbnRyb2R1Y2UgbmV3IEFQSXMgd2l0aCBsZXNzIGFyZ3VtZW50czog ImNyZWF0ZSwgcG9wdWxhdGUsIG9ial9pbml0Ig0KPi0gYWxsb3cgdG8gZnJlZSBhIG1lbXBvb2wN Cj4tIHNwbGl0IGNvZGUgaW4gc21hbGxlciBmdW5jdGlvbnMsIHdpbGwgZWFzZSB0aGUgaW50cm9k dWN0aW9uIG9mIGV4dF9oYW5kbGVyDQo+LSByZW1vdmUgdGVzdC1wbWQgYW5vbnltb3VzIG1lbXBv b2wgY3JlYXRpb24NCj4tIHJlbW92ZSBtb3N0IG9mIGRvbTAtc3BlY2lmaWMgbWVtcG9vbCBjb2Rl DQo+LSBvcGVucyB0aGUgZG9vciBmb3IgYSBlYWxfbWVtb3J5IHJld29yazogd2UgcHJvYmFibHkg ZG9uJ3QgbmVlZCBsYXJnZQ0KPiAgY29udGlndW91cyBtZW1vcnkgYXJlYSBhbnltb3JlLCB3b3Jr aW5nIHdpdGggcGFnZXMgd291bGQgd29yay4NCj4NCj5UaGlzIGJyZWFrcyB0aGUgQUJJIGFzIGl0 IHdhcyBpbmRpY2F0ZWQgaW4gdGhlIGRlcHJlY2F0aW9uIGZvciAxNi4wNC4NCj5UaGUgQVBJIHN0 YXlzIGFsbW9zdCB0aGUgc2FtZSwgbm8gbW9kaWZpY2F0aW9uIGlzIG5lZWRlZCBpbiBleGFtcGxl cyBhcHANCj5vciBpbiB0ZXN0LXBtZC4gT25seSBrbmkgYW5kIG1lbGxhbm94IGRyaXZlcnMgYXJl IHNsaWdodGx5IG1vZGlmaWVkLg0KPg0KPlRoaXMgcGF0Y2ggYXBwbGllcyBvbiB0b3Agb2YgMTYu MDQgKyB2NSBvZiBLZWl0aCdzIHBhdGNoOg0KPiJtZW1wb29sOiByZWR1Y2UgcnRlX21lbXBvb2wg c3RydWN0dXJlIHNpemUiDQoNCkkgaGF2ZSBub3QgZGlnZXN0ZWQgdGhpcyBjb21wbGV0ZSBwYXRj aCB5ZXQsIGJ1dCB0aGlzIG9uZSBwb3BwZWQgb3V0IGF0IG1lIGFzIHRoZSBFeHRlcm5hbCBNZW1v cnkgTWFuYWdlciBzdXBwb3J0IGlzIHNldHRpbmcgaW4gdGhlIHdpbmdzIGZvciAxNi4wNyByZWxl YXNlLiBJZiB0aGlzIGNhdXNlcyB0aGUgRU1NIHBhdGNoIHRvIGJlIHJld3JpdHRlbiBvciB1cGRh dGVkIHRoYXQgc2VlbXMgbGlrZSBhIHByb2JsZW0gdG8gbWUuIERvZXMgdGhpcyBwYXRjaCBhZGQg dGhlIEV4dGVybmFsIE1lbW9yeSBNYW5hZ2VyIHN1cHBvcnQ/DQpodHRwOi8vdGhyZWFkLmdtYW5l Lm9yZy9nbWFuZS5jb21wLm5ldHdvcmtpbmcuZHBkay5kZXZlbC8zMjAxNS9mb2N1cz0zNTEwNw0K DQoNCj4NCj5DaGFuZ2VzIFJGQyAtPiB2MToNCj4NCj4tIHJlbW92ZSB0aGUgcnRlX2RlY29uc3Qg bWFjcm8sIGFuZCByZW1vdmUgc29tZSBjb25zdCBxdWFsaWZpZXIgaW4NCj4gIGR1bXAvYXVkaXQg ZnVuY3Rpb25zDQo+LSByZXdvcmsgbW9kaWZpY2F0aW9ucyBpbiBtZWxsYW5veCBkcml2ZXJzIHRv IGVuc3VyZSB0aGUgbWVtcG9vbCBpcw0KPiAgdmlydHVhbGx5IGNvbnRpZ3VvdXMNCj4tIGZpeCBt ZW1wb29sIG1lbW9yeSBjaHVuayBpdGVyYXRpb24gKGJhZCBwb2ludGVyIHdhcyB1c2VkKQ0KPi0g Zml4IGNvbXBpbGF0aW9uIG9uIGZyZWVic2Q6IHJlcGxhY2UgTUFQX0xPQ0tFRCBmbGFnIGJ5IG1s b2NrKCkNCj4tIGZpeCBjb21waWxhdGlvbiBvbiB0aWxlcmEgKHBvaW50ZXIgYXJpdGhtZXRpY3Mp DQo+LSBzbGlnaHRseSByZXdvcmsgYW5kIGNsZWFuIHRoZSBtZW1wb29sIGF1dG90ZXN0DQo+LSBm aXggbWVtcG9vbCBhdXRvdGVzdCBvbiBic2QNCj4tIG1vcmUgdmFsaWRhdGlvbiAoZXNwZWNpYWxs eSBtZWxsYW5veCBkcml2ZXJzIGFuZCBrbmkgdGhhdCB3ZXJlIG5vdA0KPiAgdGVzdGVkIGluIFJG QykNCj4tIHBhc3NlZCBhdXRvdGVzdHMgKHg4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjIGFuZCB4 ODZfNjQtbmF0aXZlLWJzZGFwcC1nY2MpDQo+LSByZWJhc2Ugb24gaGVhZCwgcmVvcmRlciB0aGUg cGF0Y2hlcyBhIGJpdCBhbmQgZml4IG1pbm9yIHNwbGl0IGlzc3Vlcw0KPg0KPg0KPkRlc2NyaXB0 aW9uIG9mIHRoZSBpbml0aWFsIGlzc3VlDQo+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4NCj5UaGUgYWxsb2NhdGlvbiBvZiBtYnVmIHBvb2wgY2FuIGZhaWwgZXZlbiBpZiB0aGVy ZSBpcyBlbm91Z2ggbWVtb3J5Lg0KPlRoZSBwcm9ibGVtIGlzIHJlbGF0ZWQgdG8gdGhlIHdheSB0 aGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBhbmQgdXNlZCBpbg0KPmRwZGsuIEl0IGlzIHBhcnRpY3Vs YXJseSBhbm5veWluZyB3aXRoIG1idWYgcG9vbHMsIGJ1dCBpdCBjYW4gYWxzbyBmYWlsDQo+aW4g b3RoZXIgdXNlIGNhc2VzIGFsbG9jYXRpbmcgYSBsYXJnZSBhbW91bnQgb2YgbWVtb3J5Lg0KPg0K Pi0gcnRlX21hbGxvYygpIGFsbG9jYXRlcyBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5LCB3 aGljaCBpcyBuZWVkZWQNCj4gIGZvciBtZW1wb29scywgYnV0IHVzZWxlc3MgbW9zdCBvZiB0aGUg dGltZS4NCj4NCj4gIEFsbG9jYXRpbmcgYSBsYXJnZSBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgem9u ZSBpcyBvZnRlbiBpbXBvc3NpYmxlDQo+ICBiZWNhdXNlIHRoZSBzeXN0ZW0gcHJvdmlkZSBodWdl cGFnZXMgd2hpY2ggbWF5IG5vdCBiZSBjb250aWd1b3VzLg0KPg0KPi0gcnRlX21lbXBvb2xfY3Jl YXRlKCkgKGFuZCB0aGVyZWZvcmUgcnRlX3BrdG1idWZfcG9vbF9jcmVhdGUoKSkNCj4gIHJlcXVp cmVzIGEgcGh5c2ljYWxseSBjb250aWd1b3VzIHpvbmUuDQo+DQo+LSBydGVfbWVtcG9vbF94bWVt X2NyZWF0ZSgpIGRvZXMgbm90IHNvbHZlIHRoZSBpc3N1ZSBhcyBpdCBzdGlsbA0KPiAgbmVlZHMg dGhlIG1lbW9yeSB0byBiZSB2aXJ0dWFsbHkgY29udGlndW91cywgYW5kIHRoZXJlIGlzIG5vDQo+ ICB3YXkgaW4gZHBkayB0byBhbGxvY2F0ZSBhIHZpcnR1YWxseSBjb250aWd1b3VzIG1lbW9yeSB0 aGF0IGlzDQo+ICBub3QgYWxzbyBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMuDQo+DQo+SG93IHRvIHJl cHJvZHVjZSB0aGUgaXNzdWUNCj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPg0KPi0gc3Rh cnQgdGhlIGRwZGsgd2l0aCBzb21lIDJNQiBodWdlcGFnZXMgKGl0IGNhbiBhbHNvIG9jY3VyIHdp dGggMUdCKQ0KPi0gYWxsb2NhdGUgYSBsYXJnZSBtZW1wb29sDQo+LSBldmVuIGlmIHRoZXJlIGlz IGVub3VnaCBtZW1vcnksIHRoZSBhbGxvY2F0aW9uIGNhbiBmYWlsDQo+DQo+RXhhbXBsZToNCj4N Cj4gIGdpdCBjbG9uZSBodHRwOi8vZHBkay5vcmcvZ2l0L2RwZGsNCj4gIGNkIGRwZGsNCj4gIG1h a2UgY29uZmlnIFQ9eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MNCj4gIG1ha2UgLWozMg0KPiAg bWtkaXIgLXAgL21udC9odWdlDQo+ICBtb3VudCAtdCBodWdldGxiZnMgbm9kZXYgL21udC9odWdl DQo+ICBlY2hvIDI1NiA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlMC9odWdlcGFnZXMv aHVnZXBhZ2VzLTIwNDhrQi9ucl9odWdlcGFnZXMNCj4NCj4gICMgd2UgdHJ5IHRvIGFsbG9jYXRl IGEgbWVtcG9vbCB3aG9zZSBzaXplIGlzIH40NTBNQiwgaXQgZmFpbHMNCj4gIC4vYnVpbGQvYXBw L3Rlc3RwbWQgLWwgMiw0IC0tIC0tdG90YWwtbnVtLW1idWZzPTIwMDAwMCAtaQ0KPg0KPlRoZSBF QUwgbG9ncyAiRUFMOiBWaXJ0dWFsIGFyZWEgZm91bmQgYXQuLi4iIHNob3dzIHRoYXQgdGhlcmUg YXJlDQo+c2V2ZXJhbCB6b25lcywgYnV0IGFsbCBzbWFsbGVyIHRoYW4gNDUwTUIuDQo+DQo+V29y a2Fyb3VuZHM6DQo+DQo+LSBVc2UgMUdCIGh1Z2VwYWdlczogaXQgc29tZXRpbWVzIHdvcmssIGJ1 dCBmb3IgdmVyeSBsYXJnZQ0KPiAgcG9vbHMgKG1pbGxpb25zIG9mIG1idWZzKSB0aGVyZSBpcyB0 aGUgc2FtZSBpc3N1ZS4gTW9yZW92ZXIsDQo+ICBpdCB3b3VsZCBjb25zdW1lIDFHQiBtZW1vcnkg YXQgbGVhc3Qgd2hpY2ggY2FuIGJlIGEgbG90DQo+ICBpbiBzb21lIGNhc2VzLg0KPg0KPi0gUmVi b290IHRoZSBtYWNoaW5lIG9yIGFsbG9jYXRlIGh1Z2VwYWdlcyBhdCBib290IHRpbWU6IHRoaXMg aW5jcmVhc2VzDQo+ICB0aGUgY2hhbmNlcyB0byBoYXZlIG1vcmUgY29udGlndW91cyBtZW1vcnks IGJ1dCBkb2VzIG5vdCBjb21wbGV0ZWx5DQo+ICBzb2x2ZSB0aGUgaXNzdWUNCj4NCj5Tb2x1dGlv bnMNCj4tLS0tLS0tLS0NCj4NCj5CZWxvdyBpcyBhIGxpc3Qgb2YgcHJvcG9zZWQgc29sdXRpb25z LiBJIGltcGxlbWVudGVkIGEgcXVpY2sgYW5kIGRpcnR5DQo+UG9DIG9mIHNvbHV0aW9uIDEsIGJ1 dCBpdCdzIG5vdCB3b3JraW5nIGluIGFsbCBjb25kaXRpb25zIGFuZCBpdCdzDQo+cmVhbGx5IGFu IHVnbHkgaGFjay4gIFRoaXMgc2VyaWVzIGltcGxlbWVudCB0aGUgc29sdXRpb24gNCB3aGljaCBs b29rcw0KPnRoZSBiZXN0IHRvIG1lLCBrbm93aW5nIGl0IGRvZXMgbm90IHByZXZlbnQgdG8gZG8g bW9yZSBlbmhhbmNlbWVudHMNCj5pbiBkcGRrIG1lbW9yeSBpbiB0aGUgZnV0dXJlIChzb2x1dGlv biAzIGZvciBpbnN0YW5jZSkuDQo+DQo+U29sdXRpb24gMTogaW4gYXBwbGljYXRpb24NCj4tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPg0KPi0gYWxsb2NhdGUgc2V2ZXJhbCBodWdlcGFnZXMg dXNpbmcgcnRlX21hbGxvYygpIG9yIHJ0ZV9tZW16b25lX3Jlc2VydmUoKQ0KPiAgKG9ubHkga2Vl cGluZyBjb21wbGV0ZSBodWdlcGFnZXMpDQo+LSBwYXJzZSBtZW1zZWdzIGFuZCAvcHJvYy9tYXBz IHRvIGNoZWNrIHdoaWNoIGZpbGVzIG1tYXBzIHRoZXNlIHBhZ2VzDQo+LSBtbWFwIHRoZSBmaWxl cyBpbiBhIGNvbnRpZ3VvdXMgdmlydHVhbCBhcmVhDQo+LSB1c2UgcnRlX21lbXBvb2xfeG1lbV9j cmVhdGUoKQ0KPg0KPkNvbnM6DQo+DQo+LSAxYS4gcGFyc2luZyB0aGUgbWVtc2VncyBvZiBydGUg Y29uZmlnIGluIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdA0KPiAgdXNlIGEgcHVibGljIEFQSSwg YW5kIGNhbiBiZSBicm9rZW4gaWYgaW50ZXJuYWwgZHBkayBjb2RlIGNoYW5nZXMNCj4tIDFiLiBz b21lIG1lbW9yeSBpcyBsb3N0IGR1ZSB0byBtYWxsb2MgaGVhZGVycy4gQWxzbywgaWYgdGhlIG1l bW9yeSBpcw0KPiAgdmVyeSBmcmFnbWVudGVkIChleDogYWxsIDJNQiBwYWdlcyBhcmUgcGh5c2lj YWxseSBzZXBhcmF0ZWQpLCBpdCBkb2VzDQo+ICBub3Qgd29yayBhdCBhbGwgYmVjYXVzZSB3ZSBj YW5ub3QgZ2V0IGFueSBjb21wbGV0ZSBwYWdlLiBJdCBpcyBub3QNCj4gIHBvc3NpYmxlIHRvIHVz ZSBhIGxvd2VyIGxldmVsIGFsbG9jYXRvciBzaW5jZSBjb21taXQgZmFmY2MxMTk4NWEuDQo+LSAx Yy4gd2UgY2Fubm90IHVzZSBydGVfcGt0bWJ1Zl9wb29sX2NyZWF0ZSgpLCBzbyB3ZSBuZWVkIHRv IHVzZSBtZW1wb29sDQo+ICBhcGkgYW5kIGRvIGEgcGFydCBvZiB0aGUgam9iIG1hbnVhbGx5DQo+ LSAxZC4gaXQgYnJlYWtzIHNlY29uZGFyeSBwcm9jZXNzZXMgYXMgdGhlIHZpcnR1YWwgYWRkcmVz c2VzIHdvbid0IGJlDQo+ICBtbWFwJ2QgYXQgdGhlIHNhbWUgcGxhY2UgaW4gc2Vjb25kYXJ5IHBy b2Nlc3MNCj4tIDFlLiBpdCBvbmx5IGZpeGVzIHRoZSBpc3N1ZSBmb3IgdGhlIG1idWYgcG9vbCBv ZiB0aGUgYXBwbGljYXRpb24sDQo+ICBpbnRlcm5hbCBwb29scyBpbiBkcGRrIGxpYnJhcmllcyBh cmUgbm90IG1vZGlmaWVkDQo+LSAxZi4gdGhpcyBpcyBhIHB1cmUgbGludXggc29sdXRpb24gKHJ0 ZV9tYXAgZmlsZXMpDQo+LSAxZy4gVGhlIGFwcGxpY2F0aW9uIGhhcyB0byBiZSBhd2FyZSBvZiBS VEVfRUFMX1NJTkdMRV9TRUdNRU5UUyBvcHRpb24NCj4gIHRoYXQgY2hhbmdlcyB0aGUgd2F5IGh1 Z2VwYWdlcyBhcmUgbWFwcGVkLiBCeSB0aGUgd2F5LCBpdCdzIHN0cmFuZ2UNCj4gIHRvIGhhdmUg c3VjaCBhIGNvbXBpbGUtdGltZSBvcHRpb24sIHdlIHNob3VsZCBwcm9iYWJseSBoYXZlIG9ubHkN Cj4gIG9uZSBiZWhhdmlvciB0aGF0IHdvcmtzIGFsbCB0aGUgdGltZS4NCj4NCj5Tb2x1dGlvbiAy OiBpbiBkcGRrIG1lbW9yeSBhbGxvY2F0b3INCj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4NCj4tIGRvIHRoZSBzYW1lIHRoYW4gc29sdXRpb24gMSBpbiBhIG5ldyBmdW5j dGlvbiBydGVfbWFsbG9jX25vbl9jb250aWcoKToNCj4gIGFsbG9jYXRlIHNldmVyYWwgY2h1bmtz IGFuZCBtbWFwIHRoZW0gaW4gYSBjb250aWd1b3VzIHZpcnR1YWwgbWVtb3J5DQo+LSBhIGZsYWcg aGFzIHRvIGJlIGFkZGVkIGluIG1hbGxvYyBoZWFkZXIgdG8gZG8gdGhlIHByb3BlciBjbGVhbnVw IGluDQo+ICBydGVfZnJlZSgpIChmcmVlIGFsbCB0aGUgY2h1bmtzLCBtdW5tYXAgdGhlIG1lbW9y eSkNCj4tIGludHJvZHVjZSBhIG5ldyBydGVfbWVtX2dldF9waHlzbWFwKCpwaHlzbWFwLGFkZHIs IGxlbikgdGhhdCByZXR1cm5zDQo+ICB0aGUgdmlydDJwaHlzIG1hcHBpbmcgb2YgYSB2aXJ0dWFs IGFyZWEgaW4gZHBkaw0KPi0gYWRkIGEgbWVtcG9vbCBmbGFnIE1FTVBPT0xfRl9OT05fUEhZU19D T05USUcgdG8gdXNlDQo+ICBydGVfbWFsbG9jX25vbl9jb250aWcoKSB0byBhbGxvY2F0ZSB0aGUg YXJlYSBzdG9yaW5nIHRoZSBvYmplY3RzDQo+DQo+Q29uczoNCj4NCj4tIDJhLiBzYW1lIHRoYW4g MWI6IGl0IGJyZWFrcyBzZWNvbmRhcnkgcHJvY2Vzc2VzIGlmIHRoZSBtZW1wb29sIGZsYWcgaXMN Cj4gIHVzZWQuDQo+LSAyYi4gc2FtZSBhcyAxZDogc29tZSBtZW1vcnkgaXMgbG9zdCBkdWUgdG8g bWFsbG9jIGhlYWRlcnMsIGFuZCBpdA0KPiAgY2Fubm90IHdvcmsgaWYgbWVtb3J5IGlzIHRvbyBm cmFnbWVudGVkLg0KPi0gMmMuIHJ0ZV9tYWxsb2NfdmlydDJwaHkoKSBjYW5ub3QgYmUgdXNlZCBv biB0aGVzZSB6b25lcy4gSXQgd291bGQNCj4gIHJldHVybiB0aGUgcGh5c2ljYWwgYWRkcmVzcyBv ZiB0aGUgZmlyc3QgcGFnZS4gSXQgd291bGQgYmUgYmV0dGVyIHRvDQo+ICByZXR1cm4gYW4gZXJy b3IgaW4gdGhpcyBjYXNlLg0KPi0gMmQuIG5lZWQgdG8gY2hlY2sgaG93IHRvIGltcGxlbWVudCB0 aGlzIG9uIGJzZCAoVEJEKQ0KPg0KPlNvbHV0aW9uIDM6IGluIGRwZGsgZWFsIG1lbW9yeQ0KPi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPg0KPi0gUmV3b3JrIHRoZSB3YXkgaHVnZXBh Z2VzIGFyZSBtbWFwJ2QgaW4gZHBkazogaW5zdGVhZCBvZiBoYXZpbmcgc2V2ZXJhbA0KPiAgcnRl X21hcCogZmlsZXMsIGp1c3QgbW1hcCBvbmUgZmlsZSBwZXIgbm9kZS4gSXQgbWF5IGRyYXN0aWNh bGx5DQo+ICBzaW1wbGlmeSBFQUwgbWVtb3J5IG1hbmFnZW1lbnQgaW4gZHBkay4NCj4tIEFuIEFQ SSBzaG91bGQgYmUgYWRkZWQgdG8gcmV0cmlldmUgdGhlIHBoeXNpY2FsIG1hcHBpbmcgb2YgYSB2 aXJ0dWFsDQo+ICBhcmVhIChleDogcnRlX21lbV9nZXRfcGh5c21hcCgqcGh5c21hcCwgYWRkciwg bGVuKSkNCj4tIHJ0ZV9tYWxsb2MoKSBhbmQgcnRlX21lbXpvbmVfcmVzZXJ2ZSgpIHdvbid0IGFs bG9jYXRlIHBoeXNpY2FsbHkNCj4gIGNvbnRpZ3VvdXMgbWVtb3J5IGFueW1vcmUgKFRCRCkNCj4t IFVwZGF0ZSBtZW1wb29sIHRvIGFsd2F5cyB1c2UgdGhlIHJ0ZV9tZW1wb29sX3htZW1fY3JlYXRl KCkgdmVyc2lvbg0KPg0KPkNvbnM6DQo+DQo+LSAzYS4gbG90IG9mIHJld29yayBpbiBlYWwgbWVt b3J5LCBpdCB3aWxsIGluZHVjZSBzb21lIGJlaGF2aW9yIGNoYW5nZXMNCj4gIGFuZCBtYXliZSBh cGkgY2hhbmdlcw0KPi0gM2IuIHBvc3NpYmxlIGNvbmZsaWN0cyB3aXRoIHhlbl9kb20wIG1lbXBv b2wNCj4NCj5Tb2x1dGlvbiA0OiBpbiBtZW1wb29sDQo+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Pg0KPi0gSW50cm9kdWNlIGEgbmV3IEFQSSB0byBmaWxsIGEgbWVtcG9vbCB3aXRoIHpvbmVzIHRo YXQgYXJlIG5vdA0KPiAgdmlydHVhbGx5IGNvbnRpZ3VvdXMuIEl0IHJlcXVpcmVzIHRvIGFkZCBu ZXcgZnVuY3Rpb25zIHRvIGNyZWF0ZSBhbmQNCj4gIHBvcHVsYXRlIGEgbWVtcG9vbC4gRXhhbXBs ZSAoVEJEKToNCj4NCj4gIC0gcnRlX21lbXBvb2xfY3JlYXRlX2VtcHR5KG5hbWUsIG4sIGVsdF9z aXplLCBjYWNoZV9zaXplLCBwcml2X3NpemUpDQo+ICAtIHJ0ZV9tZW1wb29sX3BvcHVsYXRlKG1w LCBhZGRyLCBsZW4pOiBhZGQgdmlydHVhbCBtZW1vcnkgZm9yIG9iamVjdHMNCj4gIC0gcnRlX21l bXBvb2xfbWVtcG9vbF9vYmpfaXRlcihtcCwgb2JqX2NiLCBhcmcpOiBjYWxsIGEgY2IgZm9yIGVh Y2ggb2JqZWN0DQo+DQo+LSB1cGRhdGUgcnRlX21lbXBvb2xfY3JlYXRlKCkgdG8gYWxsb2NhdGUg b2JqZWN0cyBpbiBzZXZlcmFsIG1lbW9yeQ0KPiAgY2h1bmtzIGJ5IGRlZmF1bHQgaWYgdGhlcmUg aXMgbm8gbGFyZ2UgZW5vdWdoIHBoeXNpY2FsbHkgY29udGlndW91cw0KPiAgbWVtb3J5Lg0KPg0K PlRlc3RzIGRvbmUNCj4tLS0tLS0tLS0tDQo+DQo+Q29tcGlsYXRpb24NCj5+fn5+fn5+fn5+fg0K Pg0KPlRoZSBmb2xsb3dpbmcgdGFyZ2V0czoNCj4NCj4geDg2XzY0LW5hdGl2ZS1saW51eGFwcC1n Y2MNCj4gaTY4Ni1uYXRpdmUtbGludXhhcHAtZ2NjDQo+IHg4Nl94MzItbmF0aXZlLWxpbnV4YXBw LWdjYw0KPiB4ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWNsYW5nDQo+IHg4Nl82NC1uYXRpdmUtYnNk YXBwLWdjYw0KPiBwcGNfNjQtcG93ZXI4LWxpbnV4YXBwLWdjYw0KPiB0aWxlLXRpbGVneC1saW51 eGFwcC1nY2MgKG9ubHkgdGhlIG1lbXBvb2wgZmlsZXMsIHRoZSB0YXJnZXQgZG9lcyBub3QgY29t cGlsZSkNCj4NCj5MaWJyYXJpZXMgd2l0aCBhbmQgd2l0aG91dCBkZWJ1ZywgaW4gc3RhdGljIGFu ZCBzaGFyZWQgbW9kZSArIGV4YW1wbGVzLg0KPg0KPmF1dG90ZXN0cw0KPn5+fn5+fn5+fg0KPg0K PlBhc3NlZCBhbGwgYXV0b3Rlc3RzIG9uIHg4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjIChpbmNs dWRpbmcga25pKSBhbmQNCj5tZW1wb29sLXJlbGF0ZWQgYXV0b3Rlc3RzIG9uIHg4Nl82NC1uYXRp dmUtYnNkYXBwLWdjYy4NCj4NCj50ZXN0LXBtZA0KPn5+fn5+fn5+DQo+DQo+IyBub3cgc3RhcnRz IGZpbmUsIHdhcyBmYWlsaW5nIGJlZm9yZSBpZiBtZW1wb29sIHdhcyB0b28gZnJhZ21lbnRlZA0K Pi4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYXBwL3Rlc3RwbWQgLWwgMCwyLDQgLW4gNCAt LSAtaSAtLXBvcnQtdG9wb2xvZ3k9Y2hhaW5lZA0KPg0KPiMgc3RpbGwgb2sNCj4uL3g4Nl82NC1u YXRpdmUtbGludXhhcHAtZ2NjL2FwcC90ZXN0cG1kIC1sIDAsMiw0IC1uIDQgLW0gMjU2IC0tIC1p IC0tcG9ydC10b3BvbG9neT1jaGFpbmVkIC0tbXAtYW5vbg0KPnNldCBmd2QgdHhvbmx5DQo+c3Rh cnQNCj5zdG9wDQo+DQo+IyBmYWlsLCBidXQgd2FzIGZhaWxpbmcgYmVmb3JlIHRvby4gVGhlIHBy b2JsZW0gaXMgYmVjYXVzZSB0aGUgcGh5c2ljYWwNCj4jIGFkZHJlc3NlcyBhcmUgbm90IHByb3Bl cmx5IHNldCB3aGVuIHVzaW5nIC0tbm8taHVnZS4gVGhlIG1lbXBvb2wgcGh5cyBhZGRyDQo+IyBh cmUgbm93IGNvcnJlY3QsIGJ1dCB0aGUgem9uZXMgYWxsb2NhdGVkIHRocm91Z2ggbWVtem9uZV9y ZXNlcnZlKCkgYXJlDQo+IyBzdGlsbCB3cm9uZy4gVGhpcyBjb3VsZCBiZSBmaXhlZCBpbiBhIGZ1 dHVyZSBzZXJpZXMuDQo+Li94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAt bCAwLDIsNCAtbiA0IC1tIDI1NiAtLW5vLWh1Z2UgLS0gLWkgLS0tcG9ydC10b3BvbG9neT1jaGFp bmVkDQo+c2V0IGZ3ZCB0eG9ubHkNCj5zdGFydA0KPnN0b3ANCj4NCj4NCj5PbGl2aWVyIE1hdHog KDM2KToNCj4gIG1lbXBvb2w6IGZpeCBjb21tZW50cyBhbmQgc3R5bGUNCj4gIG1lbXBvb2w6IHJl cGxhY2UgZWx0X3NpemUgYnkgdG90YWxfZWx0X3NpemUNCj4gIG1lbXBvb2w6IHVuaW5saW5lIGZ1 bmN0aW9uIHRvIGNoZWNrIGNvb2tpZXMNCj4gIG1lbXBvb2w6IHVzZSBzaXplb2YgdG8gZ2V0IHRo ZSBzaXplIG9mIGhlYWRlciBhbmQgdHJhaWxlcg0KPiAgbWVtcG9vbDogcmVuYW1lIG1lbXBvb2xf b2JqX2N0b3JfdCBhcyBtZW1wb29sX29ial9jYl90DQo+ICBtZW1wb29sOiB1cGRhdGUgbGlicmFy eSB2ZXJzaW9uDQo+ICBtZW1wb29sOiBsaXN0IG9iamVjdHMgd2hlbiBhZGRlZCBpbiB0aGUgbWVt cG9vbA0KPiAgbWVtcG9vbDogcmVtb3ZlIGNvbnN0IGF0dHJpYnV0ZSBpbiBtZW1wb29sX3dhbGsN Cj4gIG1lbXBvb2w6IHJlbW92ZSBjb25zdCBxdWFsaWZpZXIgaW4gZHVtcCBhbmQgYXVkaXQNCj4g IG1lbXBvb2w6IHVzZSB0aGUgbGlzdCB0byBpdGVyYXRlIHRoZSBtZW1wb29sIGVsZW1lbnRzDQo+ ICBtZW1wb29sOiB1c2UgdGhlIGxpc3QgdG8gYXVkaXQgYWxsIGVsZW1lbnRzDQo+ICBtZW1wb29s OiB1c2UgdGhlIGxpc3QgdG8gaW5pdGlhbGl6ZSBtZW1wb29sIG9iamVjdHMNCj4gIG1lbXBvb2w6 IGNyZWF0ZSB0aGUgaW50ZXJuYWwgcmluZyBpbiBhIHNwZWNpZmljIGZ1bmN0aW9uDQo+ICBtZW1w b29sOiBzdG9yZSBwaHlzYWRkciBpbiBtZW1wb29sIG9iamVjdHMNCj4gIG1lbXBvb2w6IHJlbW92 ZSBNRU1QT09MX0lTX0NPTlRJRygpDQo+ICBtZW1wb29sOiBzdG9yZSBtZW1vcnkgY2h1bmtzIGlu IGEgbGlzdA0KPiAgbWVtcG9vbDogbmV3IGZ1bmN0aW9uIHRvIGl0ZXJhdGUgdGhlIG1lbW9yeSBj aHVua3MNCj4gIG1lbXBvb2w6IHNpbXBsaWZ5IHhtZW1fdXNhZ2UNCj4gIG1lbXBvb2w6IGludHJv ZHVjZSBhIGZyZWUgY2FsbGJhY2sgZm9yIG1lbW9yeSBjaHVua3MNCj4gIG1lbXBvb2w6IG1ha2Ug cGFnZSBzaXplIG9wdGlvbmFsIHdoZW4gZ2V0dGluZyB4bWVtIHNpemUNCj4gIG1lbXBvb2w6IGRl ZmF1bHQgYWxsb2NhdGlvbiBpbiBzZXZlcmFsIG1lbW9yeSBjaHVua3MNCj4gIGVhbDogbG9jayBt ZW1vcnkgd2hlbiB1c2luZyBuby1odWdlDQo+ICBtZW1wb29sOiBzdXBwb3J0IG5vLWh1Z2VwYWdl IG1vZGUNCj4gIG1lbXBvb2w6IHJlcGxhY2UgbWVtcG9vbCBwaHlzYWRkciBieSBhIG1lbXpvbmUg cG9pbnRlcg0KPiAgbWVtcG9vbDogaW50cm9kdWNlIGEgZnVuY3Rpb24gdG8gZnJlZSBhIG1lbXBv b2wNCj4gIG1lbXBvb2w6IGludHJvZHVjZSBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBlbXB0eSBt ZW1wb29sDQo+ICBlYWwveGVuOiByZXR1cm4gbWFjaGluZSBhZGRyZXNzIHdpdGhvdXQga25vd2lu ZyBtZW1zZWcgaWQNCj4gIG1lbXBvb2w6IHJld29yayBzdXBwb3J0IG9mIHhlbiBkb20wDQo+ICBt ZW1wb29sOiBjcmVhdGUgdGhlIGludGVybmFsIHJpbmcgd2hlbiBwb3B1bGF0aW5nDQo+ICBtZW1w b29sOiBwb3B1bGF0ZSBhIG1lbXBvb2wgd2l0aCBhbm9ueW1vdXMgbWVtb3J5DQo+ICBtZW1wb29s OiBtYWtlIG1lbXBvb2wgcG9wdWxhdGUgYW5kIGZyZWUgYXBpIHB1YmxpYw0KPiAgdGVzdC1wbWQ6 IHJlbW92ZSBzcGVjaWZpYyBhbm9uIG1lbXBvb2wgY29kZQ0KPiAgbWVtOiBhdm9pZCBtZW16b25l L21lbXBvb2wvcmluZyBuYW1lIHRydW5jYXRpb24NCj4gIG1lbXBvb2w6IG5ldyBmbGFnIHdoZW4g cGh5cyBjb250aWcgbWVtIGlzIG5vdCBuZWVkZWQNCj4gIGFwcC90ZXN0OiByZXdvcmsgbWVtcG9v bCB0ZXN0DQo+ICBtZW1wb29sOiB1cGRhdGUgY29weXJpZ2h0DQo+DQo+IGFwcC90ZXN0LXBtZC9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtDQo+IGFwcC90ZXN0LXBtZC9t ZW1wb29sX2Fub24uYyAgICAgICAgICAgICAgICAgIHwgIDIwMSAtLS0tLQ0KPiBhcHAvdGVzdC1w bWQvbWVtcG9vbF9vc2RlcC5oICAgICAgICAgICAgICAgICB8ICAgNTQgLS0NCj4gYXBwL3Rlc3Qt cG1kL3Rlc3RwbWQuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIzICstDQo+IGFwcC90ZXN0 L3Rlc3RfbWVtcG9vbC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDI0MyArKystLS0NCj4gZG9j L2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8xNl8wNC5yc3QgICAgICAgfCAgICAyICstDQo+IGRy aXZlcnMvbmV0L21seDQvbWx4NC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDE0MCArKy0tDQo+ IGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmMgICAgICAgICAgICAgICAgIHwgIDE0MCArKy0t DQo+IGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmggICAgICAgICAgICAgICAgIHwgICAgNCAr LQ0KPiBkcml2ZXJzL25ldC94ZW52aXJ0L3J0ZV9ldGhfeGVudmlydC5oICAgICAgICB8ICAgIDIg Ky0NCj4gZHJpdmVycy9uZXQveGVudmlydC9ydGVfbWVtcG9vbF9nbnRhbGxvYy5jICAgfCAgICA0 ICstDQo+IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX2xvZy5jICAgICAgIHwgICAg MiArLQ0KPiBsaWIvbGlicnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9tZW16b25lLmMgICB8ICAg MTAgKy0NCj4gbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvcnRlX21lbW9yeS5oICAgfCAg IDExICstDQo+IGxpYi9saWJydGVfZWFsL2xpbnV4YXBwL2VhbC9lYWxfbWVtb3J5LmMgICAgIHwg ICAgMiArLQ0KPiBsaWIvbGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX3hlbl9tZW1vcnkuYyB8 ICAgMTcgKy0NCj4gbGliL2xpYnJ0ZV9rbmkvcnRlX2tuaS5jICAgICAgICAgICAgICAgICAgICAg fCAgIDEyICstDQo+IGxpYi9saWJydGVfbWVtcG9vbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAg IHwgICAgNSArLQ0KPiBsaWIvbGlicnRlX21lbXBvb2wvcnRlX2RvbTBfbWVtcG9vbC5jICAgICAg ICB8ICAxMzMgLS0tLQ0KPiBsaWIvbGlicnRlX21lbXBvb2wvcnRlX21lbXBvb2wuYyAgICAgICAg ICAgICB8IDEwNDIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4gbGliL2xpYnJ0ZV9tZW1w b29sL3J0ZV9tZW1wb29sLmggICAgICAgICAgICAgfCAgNTk0ICsrKysrKystLS0tLS0tLQ0KPiBs aWIvbGlicnRlX21lbXBvb2wvcnRlX21lbXBvb2xfdmVyc2lvbi5tYXAgICB8ICAgMTggKy0NCj4g bGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nLmMgICAgICAgICAgICAgICAgICAgfCAgIDE2ICstDQo+ IDIzIGZpbGVzIGNoYW5nZWQsIDEzNzcgaW5zZXJ0aW9ucygrKSwgMTMwMiBkZWxldGlvbnMoLSkN Cj4gZGVsZXRlIG1vZGUgMTAwNjQ0IGFwcC90ZXN0LXBtZC9tZW1wb29sX2Fub24uYw0KPiBkZWxl dGUgbW9kZSAxMDA2NDQgYXBwL3Rlc3QtcG1kL21lbXBvb2xfb3NkZXAuaA0KPiBkZWxldGUgbW9k ZSAxMDA2NDQgbGliL2xpYnJ0ZV9tZW1wb29sL3J0ZV9kb20wX21lbXBvb2wuYw0KPg0KPi0tIA0K PjIuMS40DQo+DQo+DQoNCg0KUmVnYXJkcywNCktlaXRoDQoNCg0KDQoNCg==