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 C983046F1F; Wed, 17 Sep 2025 09:58:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5348B4027A; Wed, 17 Sep 2025 09:58:03 +0200 (CEST) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 2264E4025A for ; Wed, 17 Sep 2025 09:58:02 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4cRWJx1TKSz6LD1r; Wed, 17 Sep 2025 15:55:13 +0800 (CST) Received: from frapeml100008.china.huawei.com (unknown [7.182.85.131]) by mail.maildlp.com (Postfix) with ESMTPS id 7DC281402F2; Wed, 17 Sep 2025 15:58:01 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100008.china.huawei.com (7.182.85.131) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Wed, 17 Sep 2025 09:58:01 +0200 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.039; Wed, 17 Sep 2025 09:58:01 +0200 From: Konstantin Ananyev To: Wathsala Vithanage , Honnappa Nagarahalli CC: "dev@dpdk.org" , Ola Liljedahl , Dhruv Tripathi , Bruce Richardson Subject: RE: [PATCH 1/1] ring: safe partial ordering for head/tail update Thread-Topic: [PATCH 1/1] ring: safe partial ordering for head/tail update Thread-Index: AQHcJnJlB2Gj2xn6O0SOJRCJl7cS/rSWYP5wgABfdICAADf1oA== Date: Wed, 17 Sep 2025 07:58:00 +0000 Message-ID: <61a9d5b157be4816aa296194f9c0eabe@huawei.com> References: <20250915185451.533039-1-wathsala.vithanage@arm.com> <20250915185451.533039-2-wathsala.vithanage@arm.com> <2a611c3cf926d752a54b7655c27d6df874a2d0de.camel@arm.com> In-Reply-To: <2a611c3cf926d752a54b7655c27d6df874a2d0de.camel@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.175.53] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 VG8gYXZvaWQgaW5mb3JtYXRpb24gbG9zcyBJIGNvbWJpbmVkIHJlcGx5IHRvIHR3byBXYXRoc2Fs YSByZXBsaWVzIGludG8gb25lLg0KDQo+ID4gPiBUaGUgZnVuY3Rpb24gX19ydGVfcmluZ19oZWFk dGFpbF9tb3ZlX2hlYWQoKSBhc3N1bWVzIHRoYXQgdGhlDQo+ID4gPiBiYXJyaWVyDQo+ID4gKGZl bmNlKSBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSBoZWFkIGFuZCB0aGUgbG9hZC1hY3F1aXJlIG9m IHRoZQ0KPiA+ID4gb3Bwb3NpbmcgdGFpbCBndWFyYW50ZWVzIHRoZSBmb2xsb3dpbmc6IGlmIGEg Zmlyc3QgdGhyZWFkIHJlYWRzDQo+ID4gPiB0YWlsDQo+ID4gPiBhbmQgdGhlbiB3cml0ZXMgaGVh ZCBhbmQgYSBzZWNvbmQgdGhyZWFkIHJlYWRzIHRoZSBuZXcgdmFsdWUgb2YNCj4gPiA+IGhlYWQN Cj4gPiA+IGFuZCB0aGVuIHJlYWRzIHRhaWwsIHRoZW4gaXQgc2hvdWxkIG9ic2VydmUgdGhlIHNh bWUgKG9yIGEgbGF0ZXIpDQo+ID4gPiB2YWx1ZSBvZiB0YWlsLg0KPiA+ID4NCj4gPiA+IFRoaXMg YXNzdW1wdGlvbiBpcyBpbmNvcnJlY3QgdW5kZXIgdGhlIEMxMSBtZW1vcnkgbW9kZWwuIElmIHRo ZQ0KPiA+ID4gYmFycmllcg0KPiA+ID4gKGZlbmNlKSBpcyBpbnRlbmRlZCB0byBlc3RhYmxpc2gg YSB0b3RhbCBvcmRlcmluZyBvZiByaW5nDQo+ID4gPiBvcGVyYXRpb25zLA0KPiA+ID4gaXQgZmFp bHMgdG8gZG8gc28uIEluc3RlYWQsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkNCj4g PiA+IGVuZm9yY2VzIGENCj4gPiA+IHBhcnRpYWwgb3JkZXJpbmcsIHdoaWNoIGNhbiBsZWFkIHRv IHVuc2FmZSBpbnRlcmxlYXZpbmdzLiBJbg0KPiA+ID4gcGFydGljdWxhciwNCj4gPiA+IHNvbWUg cGFydGlhbCBvcmRlcnMgY2FuIGNhdXNlIHVuZGVyZmxvd3MgaW4gZnJlZSBzbG90IG9yIGF2YWls YWJsZQ0KPiA+ID4gZWxlbWVudCBjb21wdXRhdGlvbnMsIHBvdGVudGlhbGx5IHJlc3VsdGluZyBp biBkYXRhIGNvcnJ1cHRpb24uDQo+ID4NCj4gPiBIbW0uLi4gc291bmRzIGV4YWN0bHkgbGlrZSB0 aGUgcHJvYmxlbSBmcm9tIHRoZSBwYXRjaCB3ZSBkaXNjdXNzZWQNCj4gPiBlYXJsaWVyIHRoYXQg eWVhcjoNCj4gPiBodHRwczovL3BhdGNod29yay5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvcGF0Y2gv MjAyNTA1MjExMTE0MzIuMjA3OTM2LTQta29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb20vDQo+ ID4gSW4gdHdvIHdvcmRzOg0KPiA+ICIuLi4gdGhyZWFkIGNhbiBzZWUgJ2xhdGVzdCcgJ2NvbnMu aGVhZCcgdmFsdWUsIHdpdGggJ3ByZXZpb3VzJyB2YWx1ZQ0KPiA+IGZvciAncHJvZC50YWlsJyBv ciB2aXNhLXZlcnNhLg0KPiA+IEluIG90aGVyIHdvcmRzOiAnY29ucy5oZWFkJyB2YWx1ZSBkZXBl bmRzIG9uICdwcm9kLnRhaWwnLCBzbyBiZWZvcmUNCj4gPiBtYWtpbmcgbGF0ZXN0ICdjb25zLmhl YWQnDQo+ID4gdmFsdWUgdmlzaWJsZSB0byBvdGhlciB0aHJlYWRzLCB3ZSBuZWVkIHRvIGVuc3Vy ZSB0aGF0IGxhdGVzdA0KPiA+ICdwcm9kLnRhaWwnIGlzIGFsc28gdmlzaWJsZS4iDQo+ID4gSXMg dGhhdCB0aGUgb25lPw0KDQo+IFllcywgdGhlIGJlaGF2aW9yIG9jY3VycyB1bmRlciBSQ3BjIChM REFQUikgYnV0IG5vdCB1bmRlciBSQ3NjIChMREFSKSwNCj4gd2hpY2ggaXMgd2h5IHdlIGRpZG7i gJl0IGNhdGNoIGl0IGVhcmxpZXIuIEEgZnVsbGVyIGV4cGxhbmF0aW9uLCB3aXRoDQo+IEhlcmQ3 IHNpbXVsYXRpb25zLCBpcyBpbiB0aGUgYmxvZyBwb3N0IGxpbmtlZCBpbiB0aGUgY292ZXIgbGV0 dGVyLg0KPg0KPiBodHRwczovL2NvbW11bml0eS5hcm0uY29tL2FybS1jb21tdW5pdHktYmxvZ3Mv Yi9hcmNoaXRlY3R1cmVzLWFuZC1wcm9jZXNzb3JzLWJsb2cvcG9zdHMvd2hlbi1hLWJhcnJpZXIt ZG9lcy1ub3QtYmxvY2stdGhlLXBpdGZhbGxzLW9mLXBhcnRpYWwtb3JkZXINCg0KSSBzZWUsIHNv IG5vdyBpdCBpcyByZXByb2R1Y2libGUgd2l0aCBjb3JlIHJ0ZV9yaW5nIG9uIHJlYWwgSFcuDQoN Cj4gPg0KPiA+ID4gVGhlIGlzc3VlIG1hbmlmZXN0cyB3aGVuIGEgQ1BVIGZpcnN0IGFjdHMgYXMg YSBwcm9kdWNlciBhbmQgbGF0ZXINCj4gPiA+IGFzIGENCj4gPiA+IGNvbnN1bWVyLiBJbiB0aGlz IHNjZW5hcmlvLCB0aGUgYmFycmllciBhc3N1bXB0aW9uIG1heSBmYWlsIHdoZW4NCj4gPiA+IGFu b3RoZXINCj4gPiA+IGNvcmUgdGFrZXMgdGhlIGNvbnN1bWVyIHJvbGUuIEEgSGVyZDcgbGl0bXVz IHRlc3QgaW4gQzExIGNhbg0KPiA+ID4gZGVtb25zdHJhdGUNCj4gPiA+IHRoaXMgdmlvbGF0aW9u LiBUaGUgcHJvYmxlbSBoYXMgbm90IGJlZW4gd2lkZWx5IG9ic2VydmVkIHNvIGZhcg0KPiA+ID4g YmVjYXVzZToNCj4gPiA+ICAgKGEpIG9uIHN0cm9uZyBtZW1vcnkgbW9kZWxzIChlLmcuLCB4ODYt NjQpIHRoZSBhc3N1bXB0aW9uIGhvbGRzLA0KPiA+ID4gYW5kDQo+ID4gPiAgIChiKSBvbiByZWxh eGVkIG1vZGVscyB3aXRoIFJDc2Mgc2VtYW50aWNzIHRoZSBvcmRlcmluZyBpcyBzdGlsbA0KPiA+ ID4gc3Ryb25nDQo+ID4gPiAgICAgICBlbm91Z2ggdG8gcHJldmVudCBoYXphcmRzLg0KPiA+ID4g VGhlIHByb2JsZW0gYmVjb21lcyB2aXNpYmxlIG9ubHkgb24gd2Vha2VyIG1vZGVscywgd2hlbiBs b2FkLQ0KPiA+ID4gYWNxdWlyZSBpcw0KPiA+ID4gaW1wbGVtZW50ZWQgd2l0aCBSQ3BjIHNlbWFu dGljcyAoZS5nLiBzb21lIEFBcmNoNjQgQ1BVcyB3aGljaA0KPiA+ID4gc3VwcG9ydA0KPiA+ID4g dGhlIExEQVBSIGFuZCBMREFQVVIgaW5zdHJ1Y3Rpb25zKS4NCj4gPiA+DQo+ID4gPiBUaHJlZSBw b3NzaWJsZSBzb2x1dGlvbnMgZXhpc3Q6DQo+ID4gPiAgIDEuIFN0cmVuZ3RoZW4gb3JkZXJpbmcg YnkgdXBncmFkaW5nIHJlbGVhc2UvYWNxdWlyZSBzZW1hbnRpY3MgdG8NCj4gPiA+ICAgICAgc2Vx dWVudGlhbCBjb25zaXN0ZW5jeS4gVGhpcyByZXF1aXJlcyB1c2luZyBzZXEtY3N0IGZvcg0KPiA+ ID4gc3RvcmVzLA0KPiA+ID4gICAgICBsb2FkcywgYW5kIENBUyBvcGVyYXRpb25zLiBIb3dldmVy LCB0aGlzIGFwcHJvYWNoIGludHJvZHVjZXMgYQ0KPiA+ID4gICAgICBzaWduaWZpY2FudCBwZXJm b3JtYW5jZSBwZW5hbHR5IG9uIHJlbGF4ZWQtbWVtb3J5DQo+ID4gPiBhcmNoaXRlY3R1cmVzLg0K PiA+ID4NCj4gPiA+ICAgMi4gRXN0YWJsaXNoIGEgc2FmZSBwYXJ0aWFsIG9yZGVyIGJ5IGVuZm9y Y2luZyBhIHBhaXItd2lzZQ0KPiA+ID4gICAgICBoYXBwZW5zLWJlZm9yZSByZWxhdGlvbnNoaXAg YmV0d2VlbiB0aHJlYWQgb2Ygc2FtZSByb2xlIGJ5DQo+ID4gPiBjaGFuZ2luZw0KPiA+ID4gICAg ICB0aGUgQ0FTIGFuZCB0aGUgcHJlY2VkaW5nIGxvYWQgb2YgdGhlIGhlYWQgYnkgY29udmVydGlu ZyB0aGVtDQo+ID4gPiB0bw0KPiA+ID4gICAgICByZWxlYXNlIGFuZCBhY3F1aXJlIHJlc3BlY3Rp dmVseS4gVGhpcyBhcHByb2FjaCBtYWtlcyB0aGUNCj4gPiA+IG9yaWdpbmFsDQo+ID4gPiAgICAg IGJhcnJpZXIgYXNzdW1wdGlvbiB1bm5lY2Vzc2FyeSBhbmQgYWxsb3dzIGl0cyByZW1vdmFsLg0K PiA+DQo+ID4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHksIGNhbiB5b3Ugb3V0bGluZSB3aGF0IHdv dWxkIGJlIGV4YWN0IGNvZGUNCj4gPiBjaGFuZ2VzIGZvcg0KPiA+IGFwcHJvYWNoICMyPyBTYW1l IGFzIGluIHRoYXQgcGF0Y2g6DQo+ID4gaHR0cHM6Ly9wYXRjaHdvcmsuZHBkay5vcmcvcHJvamVj dC9kcGRrL3BhdGNoLzIwMjUwNTIxMTExNDMyLjIwNzkzNi00LQ0KPiBrb25zdGFudGluLmFuYW55 ZXZAaHVhd2VpLmNvbS8NCj4gPiBPciBzb21ldGhpbmcgZGlmZmVyZW50Pw0KPiANCj4gU29ycnks IEkgbWlzc2VkIHRoZSBsYXRlciBoYWxmIHlvdSB5b3VyIGNvbW1lbnQgYmVmb3JlLg0KPiBZZXMs IHlvdSBoYXZlIHByb3Bvc2VkIHRoZSBzYW1lIHNvbHV0aW9uIHRoZXJlLg0KDQpPaywgIHRoYW5r cyBmb3IgY29uZmlybWF0aW9uLg0KDQo+ID4NCj4gPg0KPiA+ID4gICAzLiBSZXRhaW4gcGFydGlh bCBvcmRlcmluZyBidXQgZW5zdXJlIG9ubHkgc2FmZSBwYXJ0aWFsIG9yZGVycw0KPiA+ID4gYXJl DQo+ID4gPiAgICAgIGNvbW1pdHRlZC4gVGhpcyBjYW4gYmUgZG9uZSBieSBkZXRlY3RpbmcgdW5k ZXJmbG93IGNvbmRpdGlvbnMNCj4gPiA+ICAgICAgKHByb2R1Y2VyIDwgY29uc3VtZXIpIGFuZCBx dWFzaGluZyB0aGUgdXBkYXRlIGluIHN1Y2ggY2FzZXMuDQo+ID4gPiAgICAgIFRoaXMgYXBwcm9h Y2ggbWFrZXMgdGhlIG9yaWdpbmFsIGJhcnJpZXIgYXNzdW1wdGlvbg0KPiA+ID4gdW5uZWNlc3Nh cnkNCj4gPiA+ICAgICAgYW5kIGFsbG93cyBpdHMgcmVtb3ZhbC4NCj4gPg0KPiA+ID4gVGhpcyBw YXRjaCBpbXBsZW1lbnRzIHNvbHV0aW9uICgzKSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4NCj4g PiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBXYXRoc2FsYSBWaXRoYW5hZ2UgPHdhdGhzYWxhLnZp dGhhbmFnZUBhcm0uY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogT2xhIExpbGplZGFobCA8b2xh LmxpbGplZGFobEBhcm0uY29tPg0KPiA+ID4gUmV2aWV3ZWQtYnk6IEhvbm5hcHBhIE5hZ2FyYWhh bGxpIDxob25uYXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tPg0KPiA+ID4gUmV2aWV3ZWQtYnk6IERo cnV2IFRyaXBhdGhpIDxkaHJ1di50cmlwYXRoaUBhcm0uY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAg bGliL3JpbmcvcnRlX3JpbmdfYzExX3B2dC5oIHwgMTAgKysrKysrKy0tLQ0KPiA+ID4gIDEgZmls ZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4g ZGlmZiAtLWdpdCBhL2xpYi9yaW5nL3J0ZV9yaW5nX2MxMV9wdnQuaA0KPiA+ID4gYi9saWIvcmlu Zy9ydGVfcmluZ19jMTFfcHZ0LmgNCj4gPiA+IGluZGV4IGI5Mzg4YWYwZGEuLmU1YWMxZjZiOWUg MTAwNjQ0DQo+ID4gPiAtLS0gYS9saWIvcmluZy9ydGVfcmluZ19jMTFfcHZ0LmgNCj4gPiA+ICsr KyBiL2xpYi9yaW5nL3J0ZV9yaW5nX2MxMV9wdnQuaA0KPiA+ID4gQEAgLTgzLDkgKzgzLDYgQEAg X19ydGVfcmluZ19oZWFkdGFpbF9tb3ZlX2hlYWQoc3RydWN0DQo+ID4gPiBydGVfcmluZ19oZWFk dGFpbA0KPiA+ID4gKmQsDQo+ID4gPiAgICAgICAgICAgICAvKiBSZXNldCBuIHRvIHRoZSBpbml0 aWFsIGJ1cnN0IGNvdW50ICovDQo+ID4gPiAgICAgICAgICAgICBuID0gbWF4Ow0KPiA+ID4NCj4g PiA+IC0gICAgICAgICAgIC8qIEVuc3VyZSB0aGUgaGVhZCBpcyByZWFkIGJlZm9yZSB0YWlsICov DQo+ID4gPiAtICAgICAgICAgICBydGVfYXRvbWljX3RocmVhZF9mZW5jZShydGVfbWVtb3J5X29y ZGVyX2FjcXVpcmUpOw0KPiA+ID4gLQ0KPiA+ID4gICAgICAgICAgICAgLyogbG9hZC1hY3F1aXJl IHN5bmNocm9uaXplIHdpdGggc3RvcmUtcmVsZWFzZSBvZg0KPiA+ID4gaHQtPnRhaWwNCj4gPiA+ ICAgICAgICAgICAgICAqIGluIHVwZGF0ZV90YWlsLg0KPiA+ID4gICAgICAgICAgICAgICovDQo+ ID4NCj4gPiBCdXQgdGhlbiBjb25zLmhlYWQgY2FuIGJlIHJlYWQgYSBiZWZvcmUgcHJvZC50YWls IChhbmQgdmlzYS12ZXJzYSksDQo+ID4gcmlnaHQ/DQo+IA0KPiBSaWdodCwgd2UgbGV0IGl0IGhh cHBlbiBidXQgZWxpbWluYXRlIGFueSByZXN1bHRpbmcgc3RhdGVzIHRoYXQgYXJlDQo+IHNlbWFu dGljYWxseSBpbmNvcnJlY3QgYXQgdGhlIGVuZC4NCg0KVHdvIGNvbW1lbnRzIGhlcmU6DQoxKSBJ IHRoaW5rIGl0IGlzIHByb2JhYmx5ICBzYWZlciB0byBkbyB0aGUgY2hlY2sgbGlrZSB0aGF0OiAN CklmICgqZW50cmllcyA+IHJpbmctPmNhcGFjaXR5KSAuLi4NCjIpIE15IGNvbmNlcm4gdGhhdCB3 aXRob3V0IGZvcmNpbmcgYSBwcm9wZXIgcmVhZCBvcmRlcmluZw0KKGNvbnMuaGVhZCBmaXJzdCB0 aGVuIHByb2QudGFpbCkgd2UgcmUtaW50cm9kdWNlIGEgd2luZG93IGZvciBhbGwgc29ydHMgb2YN CkFCQS1saWtlIHByb2JsZW1zLg0KcmluZzogZ3VhcmFudGVlIGxvYWQvbG9hZCBvcmRlciBpbiBl bnF1ZXVlIGFuZCBkZXF1ZXVlDQpjb21taXQgOWJjMmNiYjAwN2MwYTMzMzVjNTU4MjM1N2FlOWY2 ZDM3ZWEwYjY1NA0KQXV0aG9yOiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPg0KRGF0ZTogICBG cmkgTm92IDEwIDAzOjMwOjQyIDIwMTcgKzAwMDANCg0KPiA+DQo+ID4gPiBAQCAtOTksNiArOTYs MTMgQEAgX19ydGVfcmluZ19oZWFkdGFpbF9tb3ZlX2hlYWQoc3RydWN0DQo+ID4gPiBydGVfcmlu Z19oZWFkdGFpbA0KPiA+ID4gKmQsDQo+ID4gPiAgICAgICAgICAgICAgKi8NCj4gPiA+ICAgICAg ICAgICAgICplbnRyaWVzID0gKGNhcGFjaXR5ICsgc3RhaWwgLSAqb2xkX2hlYWQpOw0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgIC8qDQo+ID4gPiArICAgICAgICAgICAgKiBFbnN1cmUgdGhlIGVu dHJpZXMgY2FsY3VsYXRpb24gd2FzIG5vdCBiYXNlZCBvbg0KPiA+ID4gYSBzdGFsZQ0KPiA+ID4g KyAgICAgICAgICAgICogYW5kIHVuc2FmZSBzdGFpbCBvYnNlcnZhdGlvbiB0aGF0IGNhdXNlcw0K PiA+ID4gdW5kZXJmbG93Lg0KPiA+ID4gKyAgICAgICAgICAgICovDQo+ID4gPiArICAgICAgICAg ICBpZiAoKGludCkqZW50cmllcyA8IDApDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICplbnRy aWVzID0gMDsNCj4gPiA+ICsNCj4gPiA+ICAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgd2UgaGF2 ZSBlbm91Z2ggcm9vbSBpbiByaW5nICovDQo+ID4gPiAgICAgICAgICAgICBpZiAodW5saWtlbHko biA+ICplbnRyaWVzKSkNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgbiA9IChiZWhhdmlvciA9 PSBSVEVfUklOR19RVUVVRV9GSVhFRCkgPw0KPiA+ID4gLS0NCj4gPiA+IDIuNDMuMA0KPiA+ID4N Cj4gPg0KPiANCj4gSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwg YW5kIGFueSBhdHRhY2htZW50cyBhcmUNCj4gY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBw cml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2UN Cj4gbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUg Y29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwNCj4gdXNlIGl0IGZvciBhbnkgcHVycG9zZSwg b3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91 Lg0K