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 34F4CA0032; Sat, 15 Oct 2022 08:57:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CBEF540E25; Sat, 15 Oct 2022 08:57:12 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id A3E0540042 for ; Sat, 15 Oct 2022 08:57:11 +0200 (CEST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v6 3/4] mempool: fix cache flushing algorithm Date: Sat, 15 Oct 2022 08:57:02 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D873E6@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v6 3/4] mempool: fix cache flushing algorithm Thread-Index: AdjgBkK4Aj5ZpECoTdWZcKs4b0nJhAAWvK0g References: <98CBD80474FA8B44BF855DF32C47DC35D86DB2@smartserver.smartshare.dk> <20221009133737.795377-1-andrew.rybchenko@oktetlabs.ru> <20221009133737.795377-4-andrew.rybchenko@oktetlabs.ru> <98CBD80474FA8B44BF855DF32C47DC35D873B6@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D873B8@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D873E3@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Olivier Matz" Cc: "Andrew Rybchenko" , , "Bruce Richardson" 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 PiBGcm9tOiBPbGl2aWVyIE1hdHogW21haWx0bzpvbGl2aWVyLm1hdHpANndpbmQuY29tXQ0KPiBT ZW50OiBGcmlkYXksIDE0IE9jdG9iZXIgMjAyMiAyMS41MQ0KPiANCj4gT24gRnJpLCBPY3QgMTQs IDIwMjIgYXQgMDU6NTc6MzlQTSArMDIwMCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4gPiBG cm9tOiBPbGl2aWVyIE1hdHogW21haWx0bzpvbGl2aWVyLm1hdHpANndpbmQuY29tXQ0KPiA+ID4g U2VudDogRnJpZGF5LCAxNCBPY3RvYmVyIDIwMjIgMTYuMDENCj4gPiA+DQo+ID4gPiBIaSBNb3J0 ZW4sIEFuZHJldywNCj4gPiA+DQo+ID4gPiBPbiBTdW4sIE9jdCAwOSwgMjAyMiBhdCAwNTowODoz OVBNICswMjAwLCBNb3J0ZW4gQnLDuHJ1cCB3cm90ZToNCj4gPiA+ID4gPiBGcm9tOiBBbmRyZXcg UnliY2hlbmtvIFttYWlsdG86YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnVdDQo+ID4gPiA+ ID4gU2VudDogU3VuZGF5LCA5IE9jdG9iZXIgMjAyMiAxNi41Mg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gT24gMTAvOS8yMiAxNzozMSwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4gPiA+ID4gPj4g RnJvbTogQW5kcmV3IFJ5YmNoZW5rbw0KPiBbbWFpbHRvOmFuZHJldy5yeWJjaGVua29Ab2t0ZXRs YWJzLnJ1XQ0KPiA+ID4gPiA+ID4+IFNlbnQ6IFN1bmRheSwgOSBPY3RvYmVyIDIwMjIgMTUuMzgN Cj4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFy dHNoYXJlc3lzdGVtcy5jb20+DQo+ID4gPiA+ID4gPj4NCj4gPiA+ID4NCj4gPiA+ID4gWy4uLl0N Cj4gPiA+DQo+ID4gPiBJIGZpbmFsbHkgdG9vayBhIGNvdXBsZSBvZiBob3VycyB0byBjYXJlZnVs bHkgcmV2aWV3IHRoZSBtZW1wb29sLQ0KPiA+ID4gcmVsYXRlZA0KPiA+ID4gc2VyaWVzIChpbmNs dWRpbmcgdGhlIG9uZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBwdXNoZWQpLg0KPiA+ID4NCj4g PiA+IFRoZSBuZXcgYmVoYXZpb3IgbG9va3MgYmV0dGVyIHRvIG1lIGluIGFsbCBzaXR1YXRpb25z IEkgY2FuIHRoaW5rDQo+ID4gPiBhYm91dC4NCj4gPg0KPiA+IEV4dHJlbWUgY2FyZSBpcyByZXF1 aXJlZCB3aGVuIHRvdWNoaW5nIGEgY29yZSBsaWJyYXJ5IGxpa2UgdGhlDQo+IG1lbXBvb2wuDQo+ ID4NCj4gPiBUaGFuayB5b3UsIE9saXZpZXIuDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ ID4gPj4gLS0tIGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0KPiA+ID4gPiA+ID4+ICsrKyBi L2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gPiA+ID4gPiA+PiBAQCAtOTAsNyArOTAsNyBA QCBzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgew0KPiA+ID4gPiA+ID4+ICAgCSAqIENhY2hlIGlz IGFsbG9jYXRlZCB0byB0aGlzIHNpemUgdG8gYWxsb3cgaXQgdG8NCj4gb3ZlcmZsb3cNCj4gPiA+ IGluDQo+ID4gPiA+ID4gPj4gY2VydGFpbg0KPiA+ID4gPiA+ID4+ICAgCSAqIGNhc2VzIHRvIGF2 b2lkIG5lZWRsZXNzIGVtcHR5aW5nIG9mIGNhY2hlLg0KPiA+ID4gPiA+ID4+ICAgCSAqLw0KPiA+ ID4gPiA+ID4+IC0Jdm9pZCAqb2Jqc1tSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSAqIDNdOyAv Kio8DQo+IENhY2hlDQo+ID4gPiBvYmplY3RzICovDQo+ID4gPiA+ID4gPj4gKwl2b2lkICpvYmpz W1JURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFICogMl07IC8qKjwNCj4gQ2FjaGUNCj4gPiA+IG9i amVjdHMgKi8NCj4gPiA+ID4gPiA+PiAgIH0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiBIb3cgbXVjaCBhcmUgd2UgYWxsb3dlZCB0byBicmVhayB0aGUgQUJJ IGhlcmU/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhpcyBwYXRjaCByZWR1Y2VzIHRoZSBz aXplIG9mIHRoZSBzdHJ1Y3R1cmUgYnkgcmVtb3ZpbmcgYQ0KPiBub3cNCj4gPiA+IHVudXNlZA0K PiA+ID4gPiA+IHBhcnQgYXQgdGhlIGVuZCwgd2hpY2ggc2hvdWxkIGJlIGhhcm1sZXNzLg0KPiA+ ID4NCj4gPiA+IEl0IGlzIGFuIEFCSSBicmVha2FnZTogYW4gZXhpc3RpbmcgYXBwbGljYXRpb24g d2lsbCB1c2UgdGhlIG5ldw0KPiAyMi4xMQ0KPiA+ID4gZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBt ZW1wb29sICh3aXRoIGEgc21hbGxlciBjYWNoZSksIGJ1dCB3aWxsIHVzZQ0KPiB0aGUNCj4gPiA+ IG9sZCBpbmxpbmVkIGdldC9wdXQgdGhhdCBjYW4gZXhjZWVkIE1BWF9TSVpFIHggMiB3aWxsIHJl bWFpbi4NCj4gPiA+DQo+ID4gPiBCdXQgdGhpcyBpcyBhIG5pY2UgbWVtb3J5IGNvbnN1bXB0aW9u IGltcHJvdmVtZW50LCBpbiBteSBvcGluaW9uIHdlDQo+ID4gPiBzaG91bGQgYWNjZXB0IGl0IGZv ciAyMi4xMSB3aXRoIGFuIGVudHJ5IGluIHRoZSByZWxlYXNlIG5vdGUuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJZiB3ZSBtYXkgYWxzbyBtb3ZlIHRoZSBwb3NpdGlv biBvZiB0aGUgb2JqcyBhcnJheSwgSSB3b3VsZA0KPiBhZGQNCj4gPiA+ID4gPiBfX3J0ZV9jYWNo ZV9hbGlnbmVkIHRvIHRoZSBvYmpzIGFycmF5LiBJdCBtYWtlcyBubyBkaWZmZXJlbmNlDQo+IGlu DQo+ID4gPiB0aGUNCj4gPiA+ID4gPiBnZW5lcmFsIGNhc2UsIGJ1dCBpZiBnZXQvcHV0IG9wZXJh dGlvbnMgYXJlIGFsd2F5cyAzMiBvYmplY3RzLA0KPiBpdA0KPiA+ID4gd2lsbA0KPiA+ID4gPiA+ IHJlZHVjZSB0aGUgbnVtYmVyIG9mIG1lbW9yeSAob3IgbGFzdCBsZXZlbCBjYWNoZSkgYWNjZXNz ZXMgZnJvbQ0KPiA+ID4gZml2ZSB0bw0KPiA+ID4gPiA+IGZvdXIgNjQgQiBjYWNoZSBsaW5lcyBm b3IgZXZlcnkgZ2V0L3B1dCBvcGVyYXRpb24uDQo+ID4gPg0KPiA+ID4gV2lsbCBpdCByZWFsbHkg YmUgdGhlIGNhc2U/IFNpbmNlIGNhY2hlLT5sZW4gaGFzIHRvIGJlIGFjY2Vzc2VkDQo+IHRvbywN Cj4gPiA+IEkgZG9uJ3QgdGhpbmsgaXQgd291bGQgbWFrZSBhIGRpZmZlcmVuY2UuDQo+ID4NCj4g PiBZZXMsIHRoZSBmaXJzdCBjYWNoZSBsaW5lLCBjb250YWluaW5nIGNhY2hlLT5sZW4sIHdpbGwg YmUgYWNjZXNzZWQNCj4gYWx3YXlzLiBJIGZvcmdvdCB0byBjb3VudCB0aGF0OyBzbyB0aGUgaW1w cm92ZW1lbnQgYnkgYWxpZ25pbmcgY2FjaGUtDQo+ID5vYmpzIHdpbGwgYmUgZml2ZSBjYWNoZSBs aW5lIGFjY2Vzc2VzIGluc3RlYWQgb2Ygc2l4Lg0KPiA+DQo+ID4gTGV0IG1lIHRyeSB0byBleHBs YWluIHRoZSBzY2VuYXJpbyBpbiBvdGhlciB3b3JkczoNCj4gPg0KPiA+IEluIGFuIGFwcGxpY2F0 aW9uIHdoZXJlIGEgbWVtcG9vbCBjYWNoZSBpcyBvbmx5IGFjY2Vzc2VkIGluIGJ1cnN0cyBvZg0K PiAzMiBvYmplY3RzICgyNTYgQiksIGl0IG1hdHRlcnMgaWYgdGhvc2UgMjU2IEIgYWNjZXNzZXMg aW4gdGhlIG1lbXBvb2wNCj4gY2FjaGUgc3RhcnQgYXQgYSBjYWNoZSBsaW5lIGFsaWduZWQgYWRk cmVzcyBvciBub3QuIElmIGNhY2hlIGxpbmUNCj4gYWxpZ25lZCwgYWNjZXNzaW5nIHRob3NlIDI1 NiBCIGluIHRoZSBtZW1wb29sIGNhY2hlIHdpbGwgb25seSB0b3VjaCA0DQo+IGNhY2hlIGxpbmVz OyBpZiBub3QsIDUgY2FjaGUgbGluZXMgd2lsbCBiZSB0b3VjaGVkLiAoRm9yIGFyY2hpdGVjdHVy ZXMNCj4gd2l0aCAxMjggQiBjYWNoZSBsaW5lLCBpdCB3aWxsIGJlIDIgaW5zdGVhZCBvZiAzIHRv dWNoZWQgY2FjaGUgbGluZXMNCj4gcGVyIG1lbXBvb2wgY2FjaGUgZ2V0L3B1dCBvcGVyYXRpb24g aW4gYXBwbGljYXRpb25zIHVzaW5nIG9ubHkgYnVyc3RzDQo+IG9mIDMyIG9iamVjdHMuKQ0KPiA+ DQo+ID4gSWYgd2UgY2FjaGUgbGluZSBhbGlnbiBjYWNoZS0+b2JqcywgdGhvc2UgYnVyc3RzIG9m IDMyIG9iamVjdHMgKDI1Ng0KPiBCKSB3aWxsIGJlIGNhY2hlIGxpbmUgYWxpZ25lZDogQW55IGFk ZHJlc3MgYXQgY2FjaGUtPm9ianNbTiAqIDMyDQo+IG9iamVjdHNdIGlzIGNhY2hlIGxpbmUgYWxp Z25lZCBpZiBvYmpzLT5vYmpzWzBdIGlzIGNhY2hlIGxpbmUgYWxpZ25lZC4NCj4gPg0KPiA+IEN1 cnJlbnRseSwgdGhlIGNhY2hlLT5vYmpzIGRpcmVjdGx5IGZvbGxvd3MgY2FjaGUtPmxlbiwgd2hp Y2ggbWFrZXMNCj4gY2FjaGUtPm9ianNbMF0gY2FjaGUgbGluZSB1bmFsaWduZWQuDQo+ID4NCj4g PiBJZiB3ZSBkZWNpZGUgdG8gYnJlYWsgdGhlIG1lbXBvb2wgY2FjaGUgQUJJLCB3ZSBtaWdodCBh cyB3ZWxsIGluY2x1ZGUNCj4gbXkgc3VnZ2VzdGVkIGNhY2hlIGxpbmUgYWxpZ25tZW50IHBlcmZv cm1hbmNlIGltcHJvdmVtZW50LiBJdCBkb2Vzbid0DQo+IGRlZ3JhZGUgcGVyZm9ybWFuY2UgZm9y IG1lbXBvb2wgY2FjaGVzIG5vdCBvbmx5IGFjY2Vzc2VkIGluIGJ1cnN0cyBvZg0KPiAzMiBvYmpl Y3RzLg0KPiANCj4gSSBkb24ndCBmb2xsb3cgeW91LiBDdXJyZW50bHksIHdpdGggMTYgb2JqZWN0 cyAoMTI4QiksIHdlIGFjY2VzcyB0byAzDQo+IGNhY2hlIGxpbmVzOg0KPiANCj4gICAgICAg4pSM 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQDQo+ICAgICAgIOKUgmxlbiAgICAg4pSCDQo+IGNh Y2hlIOKUgioqKioqKioq4pSCLS0tDQo+IGxpbmUwIOKUgioqKioqKioq4pSCIF4NCj4gICAgICAg 4pSCKioqKioqKirilIIgfA0KPiAgICAgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilKQg fCAxNiBvYmplY3RzDQo+ICAgICAgIOKUgioqKioqKioq4pSCIHwgMTI4Qg0KPiBjYWNoZSDilIIq KioqKioqKuKUgiB8DQo+IGxpbmUxIOKUgioqKioqKioq4pSCIHwNCj4gICAgICAg4pSCKioqKioq KirilIIgfA0KPiAgICAgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilKQgfA0KPiAgICAg ICDilIIqKioqKioqKuKUgl92Xw0KPiBjYWNoZSDilIIgICAgICAgIOKUgg0KPiBsaW5lMiDilIIg ICAgICAgIOKUgg0KPiAgICAgICDilIIgICAgICAgIOKUgg0KPiAgICAgICDilJTilIDilIDilIDi lIDilIDilIDilIDilIDilJgNCj4gDQo+IFdpdGggdGhlIGFsaWdubWVudCwgaXQgaXMgYWxzbyAz IGNhY2hlIGxpbmVzOg0KPiANCj4gICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQ DQo+ICAgICAgIOKUgmxlbiAgICAg4pSCDQo+IGNhY2hlIOKUgiAgICAgICAg4pSCDQo+IGxpbmUw IOKUgiAgICAgICAg4pSCDQo+ICAgICAgIOKUgiAgICAgICAg4pSCDQo+ICAgICAgIOKUnOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUpC0tLQ0KPiAgICAgICDilIIqKioqKioqKuKUgiBeDQo+IGNh Y2hlIOKUgioqKioqKioq4pSCIHwNCj4gbGluZTEg4pSCKioqKioqKirilIIgfA0KPiAgICAgICDi lIIqKioqKioqKuKUgiB8DQo+ICAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpCB8 IDE2IG9iamVjdHMNCj4gICAgICAg4pSCKioqKioqKirilIIgfCAxMjhCDQo+IGNhY2hlIOKUgioq KioqKioq4pSCIHwNCj4gbGluZTIg4pSCKioqKioqKirilIIgfA0KPiAgICAgICDilIIqKioqKioq KuKUgiB2DQo+ICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmC0tLQ0KPiANCj4g DQo+IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/DQoNCkFjY2Vzc2luZyB0aGUgb2JqZWN0cyBhdCB0 aGUgYm90dG9tIG9mIHRoZSBtZW1wb29sIGNhY2hlIGlzIGEgc3BlY2lhbCBjYXNlLCB3aGVyZSBj YWNoZSBsaW5lMCBpcyBhbHNvIHVzZWQgZm9yIG9iamVjdHMuDQoNCkNvbnNpZGVyIHRoZSBuZXh0 IGJ1cnN0IChhbmQgYW55IGZvbGxvd2luZyBidXJzdHMpOg0KDQpDdXJyZW50Og0KICAgICAg4pSM 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQDQogICAgICDilIJsZW4gICAgIOKUgg0KY2FjaGUg 4pSCICAgICAgICDilIINCmxpbmUwIOKUgiAgICAgICAg4pSCDQogICAgICDilIIgICAgICAgIOKU gg0KICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkDQogICAgICDilIIgICAgICAg IOKUgg0KY2FjaGUg4pSCICAgICAgICDilIINCmxpbmUxIOKUgiAgICAgICAg4pSCDQogICAgICDi lIIgICAgICAgIOKUgg0KICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkDQogICAg ICDilIIgICAgICAgIOKUgg0KY2FjaGUg4pSCKioqKioqKirilIItLS0NCmxpbmUyIOKUgioqKioq Kioq4pSCIF4NCiAgICAgIOKUgioqKioqKioq4pSCIHwNCiAgICAgIOKUnOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUpCB8IDE2IG9iamVjdHMNCiAgICAgIOKUgioqKioqKioq4pSCIHwgMTI4Qg0K Y2FjaGUg4pSCKioqKioqKirilIIgfA0KbGluZTMg4pSCKioqKioqKirilIIgfA0KICAgICAg4pSC KioqKioqKirilIIgfA0KICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkIHwNCiAg ICAgIOKUgioqKioqKioq4pSCX3ZfDQpjYWNoZSDilIIgICAgICAgIOKUgg0KbGluZTQg4pSCICAg ICAgICDilIINCiAgICAgIOKUgiAgICAgICAg4pSCDQogICAgICDilJTilIDilIDilIDilIDilIDi lIDilIDilIDilJgNCjQgY2FjaGUgbGluZXMgdG91Y2hlZCwgaW5jbC4gbGluZTAgZm9yIGxlbi4N Cg0KV2l0aCB0aGUgcHJvcG9zZWQgYWxpZ25tZW50Og0KICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSQDQogICAgICDilIJsZW4gICAgIOKUgg0KY2FjaGUg4pSCICAgICAgICDilIIN CmxpbmUwIOKUgiAgICAgICAg4pSCDQogICAgICDilIIgICAgICAgIOKUgg0KICAgICAg4pSc4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkDQogICAgICDilIIgICAgICAgIOKUgg0KY2FjaGUg4pSC ICAgICAgICDilIINCmxpbmUxIOKUgiAgICAgICAg4pSCDQogICAgICDilIIgICAgICAgIOKUgg0K ICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkDQogICAgICDilIIgICAgICAgIOKU gg0KY2FjaGUg4pSCICAgICAgICDilIINCmxpbmUyIOKUgiAgICAgICAg4pSCDQogICAgICDilIIg ICAgICAgIOKUgg0KICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkDQogICAgICDi lIIqKioqKioqKuKUgi0tLQ0KY2FjaGUg4pSCKioqKioqKirilIIgXg0KbGluZTMg4pSCKioqKioq KirilIIgfA0KICAgICAg4pSCKioqKioqKirilIIgfCAxNiBvYmplY3RzDQogICAgICDilJzilIDi lIDilIDilIDilIDilIDilIDilIDilKQgfCAxMjhCDQogICAgICDilIIqKioqKioqKuKUgiB8DQpj YWNoZSDilIIqKioqKioqKuKUgiB8DQpsaW5lNCDilIIqKioqKioqKuKUgiB8DQogICAgICDilIIq KioqKioqKuKUgl92Xw0KICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYDQpPbmx5 IDMgY2FjaGUgbGluZXMgdG91Y2hlZCwgaW5jbC4gbGluZTAgZm9yIGxlbi4NCg0KDQo+IA0KPiA+ DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAJdWludDMyX3QgbGVuOwkg ICAgICAvKio8IEN1cnJlbnQgY2FjaGUgY291bnQgKi8NCj4gPiA+ID4gPiA+IC0JLyoNCj4gPiA+ ID4gPiA+IC0JICogQ2FjaGUgaXMgYWxsb2NhdGVkIHRvIHRoaXMgc2l6ZSB0byBhbGxvdyBpdCB0 byBvdmVyZmxvdw0KPiA+ID4gaW4NCj4gPiA+ID4gPiBjZXJ0YWluDQo+ID4gPiA+ID4gPiAtCSAq IGNhc2VzIHRvIGF2b2lkIG5lZWRsZXNzIGVtcHR5aW5nIG9mIGNhY2hlLg0KPiA+ID4gPiA+ID4g LQkgKi8NCj4gPiA+ID4gPiA+IC0Jdm9pZCAqb2Jqc1tSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0la RSAqIDNdOyAvKio8IENhY2hlDQo+ID4gPiBvYmplY3RzICovDQo+ID4gPiA+ID4gPiArCS8qKg0K PiA+ID4gPiA+ID4gKwkgKiBDYWNoZSBvYmplY3RzDQo+ID4gPiA+ID4gPiArCSAqDQo+ID4gPiA+ ID4gPiArCSAqIENhY2hlIGlzIGFsbG9jYXRlZCB0byB0aGlzIHNpemUgdG8gYWxsb3cgaXQgdG8g b3ZlcmZsb3cNCj4gPiA+IGluDQo+ID4gPiA+ID4gY2VydGFpbg0KPiA+ID4gPiA+ID4gKwkgKiBj YXNlcyB0byBhdm9pZCBuZWVkbGVzcyBlbXB0eWluZyBvZiBjYWNoZS4NCj4gPiA+ID4gPiA+ICsJ ICovDQo+ID4gPiA+ID4gPiArCXZvaWQgKm9ianNbUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUg KiAyXQ0KPiA+ID4gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPiA+ID4gPiA+IH0gX19ydGVfY2Fj aGVfYWxpZ25lZDsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgdGhpbmsgYWxpZ25pbmcgb2JqcyBv biBjYWNoZWxpbmUgc2hvdWxkIGJlIGEgc2VwYXJhdGUgcGF0Y2guDQo+ID4gPiA+DQo+ID4gPiA+ IEdvb2QgcG9pbnQuIEknbGwgbGV0IHlvdSBkbyBpdC4gOi0pDQo+ID4gPiA+DQo+ID4gPiA+IFBT OiBUaGFuayB5b3UgZm9yIGZvbGxvd2luZyB1cCBvbiB0aGlzIHBhdGNoIHNlcmllcywgQW5kcmV3 IQ0KPiA+ID4NCj4gPiA+IE1hbnkgdGhhbmtzIGZvciB0aGlzIHJld29yay4NCj4gPiA+DQo+ID4g PiBBY2tlZC1ieTogT2xpdmllciBNYXR6IDxvbGl2aWVyLm1hdHpANndpbmQuY29tPg0KPiA+DQo+ ID4gUGVyaGFwcyBSZXZpZXdlZC1ieSB3b3VsZCBiZSBhcHByb3ByaWF0ZT8NCj4gDQo+IEkgd2Fz IHRoaW5raW5nIHRoYXQgIkFja2VkLWJ5IiB3YXMgY29tbW9ubHkgdXNlZCBieSBtYWludGFpbmVy cywgYW5kDQo+ICJSZXZpZXdlZC1ieSIgZm9yIHJldmlld3MgYnkgY29tbXVuaXR5IG1lbWJlcnMu IEFmdGVyIHJlYWRpbmcgdGhlDQo+IGRvY3VtZW50YXRpb24gYWdhaW4sIGl0J3Mgbm90IHRoYXQg Y2xlYXIgbm93IGluIG15IG1pbmQgOikNCj4gDQo+IFRoYW5rcywNCj4gT2xpdmllcg0KDQo=