From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Stefan ISAILA Subject: Ping: [PATCH v2] x86/mm: Suppresses vm_events caused by page-walks Date: Tue, 20 Feb 2018 12:34:24 +0000 Message-ID: <1519130064.4963.34.camel@bitdefender.com> References: <1515415784-28744-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1515415784-28744-1-git-send-email-aisaila@bitdefender.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "xen-devel@lists.xen.org" Cc: "sstabellini@kernel.org" , "wei.liu2@citrix.com" , "rcojocaru@bitdefender.com" , "George.Dunlap@eu.citrix.com" , "andrew.cooper3@citrix.com" , "ian.jackson@eu.citrix.com" , "tim@xen.org" , "tamas@tklengyel.com" , "jbeulich@suse.com" List-Id: xen-devel@lists.xenproject.org QW55IHRob3VnaHRzIGFyZSBhcHByZWNpYXRlZC4NCg0KPiBUaGlzIHBhdGNoIGlzIGFkZGluZyBh IHdheSB0byBlbmFibGUvZGlzYWJsZSBuZXN0ZWQgcGFnZWZhdWx0DQo+IGV2ZW50cy4gSXQgaW50 cm9kdWNlcyB0aGUgeGNfbW9uaXRvcl9uZXN0ZWRfcGFnZWZhdWx0IGZ1bmN0aW9uDQo+IGFuZCBh ZGRzIHRoZSBuZXN0ZWRfcGFnZWZhdWx0X2Rpc2FibGVkIGluIHRoZSBtb25pdG9yIHN0cnVjdHVy ZS4NCj4gVGhpcyBpcyBuZWVkZWQgYnkgdGhlIGludHJvc3BlY3Rpb24gc28gaXQgd2lsbCBvbmx5 IGdldCBnbGENCj4gZmF1bHRzIGFuZCBub3QgZ2V0IHNwYW1tZWQgd2l0aCBvdGhlciBmYXVsdHMu DQo+IEluIHAybV9zZXRfYWRfYml0cyB0aGUgdi0+YXJjaC5zc2VfcGdfZGlydHkuZWlwIGFuZA0K PiB2LT5hcmNoLnNzZV9wZ19kaXJ0eS5nbGEgYXJlIHVzZWQgdG8gbWFyayB0aGF0IHRoaXMgaXMg dGhlDQo+IHNlY29uZCB0aW1lIGEgZmF1bHQgb2NjdXJzIGFuZCB0aGUgZGlydHkgYml0IGlzIHNl dC4NCj4NCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IElzYWlsYSA8YWlzYWlsYUBiaXRkZWZl bmRlci5jb20+DQo+DQo+IC0tLQ0KPiBDaGFuZ2VzIHNpbmNlIFYxOg0KPiAgICAgICAgIC0gUmIg VjENCj4gLSBBZGQgY29tbWVudCBpbiBkb21jdGwuaA0KPiAtLS0NCj4gIHRvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oIHwgIDIgKysNCj4gIHRvb2xzL2xpYnhjL3hjX21vbml0b3IuYyAgICAg IHwgMTQgKysrKysrKysrKysrKysNCj4gIHhlbi9hcmNoL3g4Ni9tbS9tZW1fYWNjZXNzLmMgIHwg MjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICB4ZW4vYXJjaC94ODYvbW9uaXRvci5j ICAgICAgICB8IDEzICsrKysrKysrKysrKysNCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWlu LmggIHwgIDYgKysrKysrDQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L21vbml0b3IuaCB8ICAzICsr LQ0KPiAgeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAgfCAgMiArKw0KPiAgNyBmaWxlcyBj aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+DQo+IGRpZmYgLS1naXQg YS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaA0KPiBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUv eGVuY3RybC5oDQo+IGluZGV4IDA5ZTEzNjMuLjExMmM5NzQgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xz L2xpYnhjL2luY2x1ZGUveGVuY3RybC5oDQo+ICsrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oDQo+IEBAIC0yMDU2LDYgKzIwNTYsOCBAQCBpbnQgeGNfbW9uaXRvcl9kZXNjcmlwdG9y X2FjY2Vzcyh4Y19pbnRlcmZhY2UNCj4gKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUpOw0KPiAgaW50IHhjX21v bml0b3JfZ3Vlc3RfcmVxdWVzdCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lk LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZSwgYm9vbCBzeW5j LCBib29sDQo+IGFsbG93X3VzZXJzcGFjZSk7DQo+ICtpbnQgeGNfbW9uaXRvcl9uZXN0ZWRfcGFn ZWZhdWx0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdA0KPiBkb21haW5faWQsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzYWJsZSk7DQo+ICBpbnQgeGNfbW9u aXRvcl9kZWJ1Z19leGNlcHRpb25zKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdA0KPiBkb21h aW5faWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlLCBi b29sIHN5bmMpOw0KPiAgaW50IHhjX21vbml0b3JfY3B1aWQoeGNfaW50ZXJmYWNlICp4Y2gsIHVp bnQzMl90IGRvbWFpbl9pZCwgYm9vbA0KPiBlbmFibGUpOw0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMveGNfbW9uaXRvci5jIGIvdG9vbHMvbGlieGMveGNfbW9uaXRvci5jDQo+IGluZGV4IDAy MzNiODcuLmU5NmM1NmQgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX21vbml0b3IuYw0K PiArKysgYi90b29scy9saWJ4Yy94Y19tb25pdG9yLmMNCj4gQEAgLTE2Myw2ICsxNjMsMjAgQEAg aW50IHhjX21vbml0b3JfZ3Vlc3RfcmVxdWVzdCh4Y19pbnRlcmZhY2UgKnhjaCwNCj4gdWludDMy X3QgZG9tYWluX2lkLCBib29sIGVuYWJsZSwNCj4gICAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwg JmRvbWN0bCk7DQo+ICB9DQo+DQo+ICtpbnQgeGNfbW9uaXRvcl9uZXN0ZWRfcGFnZWZhdWx0KHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdA0KPiBkb21haW5faWQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzYWJsZSkNCj4gK3sNCj4gKyAgICBERUNMQVJFX0RP TUNUTDsNCj4gKw0KPiArICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX21vbml0b3Jfb3A7DQo+ ICsgICAgZG9tY3RsLmRvbWFpbiA9IGRvbWFpbl9pZDsNCj4gKyAgICBkb21jdGwudS5tb25pdG9y X29wLm9wID0gZGlzYWJsZSA/IFhFTl9ET01DVExfTU9OSVRPUl9PUF9FTkFCTEUNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWEVOX0RPTUNUTF9NT05JVE9SX09QX0RJ U0FCTEU7DQo+ICsgICAgZG9tY3RsLnUubW9uaXRvcl9vcC5ldmVudCA9DQo+IFhFTl9ET01DVExf TU9OSVRPUl9FVkVOVF9ORVNURURfUEFHRUZBVUxUOw0KPiArDQo+ICsgICAgcmV0dXJuIGRvX2Rv bWN0bCh4Y2gsICZkb21jdGwpOw0KPiArfQ0KPiArDQo+ICBpbnQgeGNfbW9uaXRvcl9lbXVsYXRl X2VhY2hfcmVwKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdA0KPiBkb21haW5faWQsDQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlKQ0KPiAgew0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYw0KPiBiL3hlbi9hcmNoL3g4Ni9t bS9tZW1fYWNjZXNzLmMNCj4gaW5kZXggYzBjZDAxNy4uMDdhMzM0YiAxMDA2NDQNCj4gLS0tIGEv eGVuL2FyY2gveDg2L21tL21lbV9hY2Nlc3MuYw0KPiArKysgYi94ZW4vYXJjaC94ODYvbW0vbWVt X2FjY2Vzcy5jDQo+IEBAIC0xMzcsNiArMTM3LDIzIEBAIGJvb2wgcDJtX21lbV9hY2Nlc3NfZW11 bGF0ZV9jaGVjayhzdHJ1Y3QgdmNwdQ0KPiAqdiwNCj4gICAgICByZXR1cm4gdmlvbGF0aW9uOw0K PiAgfQ0KPg0KPiArc3RhdGljIHZvaWQgcDJtX3NldF9hZF9iaXRzKHN0cnVjdCB2Y3B1ICp2LCBw YWRkcl90IGdhKQ0KPiArew0KPiArICAgIHN0cnVjdCBodm1faHdfY3B1IGN0eHQ7DQo+ICsgICAg dWludDMyX3QgcGZlYyA9IDA7DQo+ICsNCj4gKyAgICBodm1fZnVuY3Muc2F2ZV9jcHVfY3R4dCh2 LCAmY3R4dCk7DQo+ICsNCj4gKyAgICBpZiAoIGd1ZXN0X2NwdV91c2VyX3JlZ3MoKS0+ZWlwID09 IHYtPmFyY2gucGdfZGlydHkuZWlwDQo+ICsgICAgICAgICAmJiBnYSA9PSB2LT5hcmNoLnBnX2Rp cnR5LmdsYSApDQo+ICsgICAgICAgIHBmZWMgPSBQRkVDX3dyaXRlX2FjY2VzczsNCj4gKw0KPiAr ICAgIHBhZ2luZ19nYV90b19nZm5fY3IzKHYsIGN0eHQuY3IzLCBnYSwgJnBmZWMsIE5VTEwpOw0K PiArDQo+ICsgICAgdi0+YXJjaC5wZ19kaXJ0eS5laXAgPSBndWVzdF9jcHVfdXNlcl9yZWdzKCkt PmVpcDsNCj4gKyAgICB2LT5hcmNoLnBnX2RpcnR5LmdsYSA9IGdhOw0KPiArfQ0KPiArDQo+ICBi b29sIHAybV9tZW1fYWNjZXNzX2NoZWNrKHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5wZmVjIG5wZmVjLA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2bV9ldmVudF9yZXF1ZXN0X3QgKipyZXFfcHRyKQ0KPiBA QCAtMjA4LDYgKzIyNSwxNiBAQCBib29sIHAybV9tZW1fYWNjZXNzX2NoZWNrKHBhZGRyX3QgZ3Bh LCB1bnNpZ25lZA0KPiBsb25nIGdsYSwNCj4gICAgICAgICAgfQ0KPiAgICAgIH0NCj4NCj4gKyAg ICBpZiAoIHZtX2V2ZW50X2NoZWNrX3JpbmcoZC0+dm1fZXZlbnRfbW9uaXRvcikgJiYNCj4gKyAg ICAgICAgIGQtPmFyY2gubW9uaXRvci5uZXN0ZWRfcGFnZWZhdWx0X2Rpc2FibGVkICYmDQo+ICsg ICAgICAgICBucGZlYy5raW5kICE9IG5wZmVjX2tpbmRfd2l0aF9nbGEgKSAvKiBkb24ndCBzZW5k IGENCj4gbWVtX2V2ZW50ICovDQo+ICsgICAgew0KPiArICAgICAgICB2LT5hcmNoLnZtX2V2ZW50 LT5lbXVsYXRlX2ZsYWdzID0gMDsNCj4gKyAgICAgICAgcDJtX3NldF9hZF9iaXRzKHYsIGdsYSk7 DQo+ICsNCj4gKyAgICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgfQ0KPiArDQo+ICAgICAgKnJl cV9wdHIgPSBOVUxMOw0KPiAgICAgIHJlcSA9IHh6YWxsb2Modm1fZXZlbnRfcmVxdWVzdF90KTsN Cj4gICAgICBpZiAoIHJlcSApDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW9uaXRvci5j IGIveGVuL2FyY2gveDg2L21vbml0b3IuYw0KPiBpbmRleCBmMjI5ZTY5Li5lMzViNjE5IDEwMDY0 NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvbW9uaXRvci5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9t b25pdG9yLmMNCj4gQEAgLTI0MSw2ICsyNDEsMTkgQEAgaW50IGFyY2hfbW9uaXRvcl9kb21jdGxf ZXZlbnQoc3RydWN0IGRvbWFpbiAqZCwNCj4gICAgICAgICAgYnJlYWs7DQo+ICAgICAgfQ0KPg0K PiArICAgIGNhc2UgWEVOX0RPTUNUTF9NT05JVE9SX0VWRU5UX05FU1RFRF9QQUdFRkFVTFQ6DQo+ ICsgICAgew0KPiArICAgICAgICBib29sIG9sZF9zdGF0dXMgPSBhZC0+bW9uaXRvci5uZXN0ZWRf cGFnZWZhdWx0X2Rpc2FibGVkOw0KPiArDQo+ICsgICAgICAgIGlmICggdW5saWtlbHkob2xkX3N0 YXR1cyA9PSByZXF1ZXN0ZWRfc3RhdHVzKSApDQo+ICsgICAgICAgICAgICByZXR1cm4gLUVFWElT VDsNCj4gKw0KPiArICAgICAgICBkb21haW5fcGF1c2UoZCk7DQo+ICsgICAgICAgIGFkLT5tb25p dG9yLm5lc3RlZF9wYWdlZmF1bHRfZGlzYWJsZWQgPSByZXF1ZXN0ZWRfc3RhdHVzOw0KPiArICAg ICAgICBkb21haW5fdW5wYXVzZShkKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiAr DQo+ICAgICAgY2FzZSBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfREVTQ19BQ0NFU1M6DQo+ICAg ICAgew0KPiAgICAgICAgICBib29sIG9sZF9zdGF0dXMgPSBhZC0+bW9uaXRvci5kZXNjcmlwdG9y X2FjY2Vzc19lbmFibGVkOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21h aW4uaCBiL3hlbi9pbmNsdWRlL2FzbS0NCj4geDg2L2RvbWFpbi5oDQo+IGluZGV4IDQ2NzlkNTQu LjA5OWFmN2MgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgNCj4g KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaA0KPiBAQCAtNDEyLDYgKzQxMiw3IEBA IHN0cnVjdCBhcmNoX2RvbWFpbg0KPiAgICAgICAgICB1bnNpZ25lZCBpbnQNCj4gZGVzY3JpcHRv cl9hY2Nlc3NfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOw0KPiAgICAg ICAgICB1bnNpZ25lZCBpbnQNCj4gZ3Vlc3RfcmVxdWVzdF91c2Vyc3BhY2VfZW5hYmxlZCAgICAg ICAgICAgICAgICAgICAgICAgOiAxOw0KPiAgICAgICAgICB1bnNpZ25lZCBpbnQNCj4gZW11bF91 bmltcGxlbWVudGVkX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOw0KPiAr ICAgICAgICB1bnNpZ25lZCBpbnQNCj4gbmVzdGVkX3BhZ2VmYXVsdF9kaXNhYmxlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOiAxOw0KPiAgICAgICAgICBzdHJ1Y3QgbW9uaXRvcl9tc3Jf Yml0bWFwICptc3JfYml0bWFwOw0KPiAgICAgICAgICB1aW50NjRfdCB3cml0ZV9jdHJscmVnX21h c2tbNF07DQo+ICAgICAgfSBtb25pdG9yOw0KPiBAQCAtNTc5LDYgKzU4MCwxMSBAQCBzdHJ1Y3Qg YXJjaF92Y3B1DQo+ICAgICAgLyogQSBzZWNvbmRhcnkgY29weSBvZiB0aGUgdmNwdSB0aW1lIGlu Zm8uICovDQo+ICAgICAgWEVOX0dVRVNUX0hBTkRMRSh2Y3B1X3RpbWVfaW5mb190KSB0aW1lX2lu Zm9fZ3Vlc3Q7DQo+DQo+ICsgICAgc3RydWN0IHsNCj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBl aXA7DQo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2xhOw0KPiArICAgIH0gcGdfZGlydHk7DQo+ ICsNCj4gICAgICBzdHJ1Y3QgYXJjaF92bV9ldmVudCAqdm1fZXZlbnQ7DQo+DQo+ICAgICAgc3Ry dWN0IG1zcl92Y3B1X3BvbGljeSAqbXNyOw0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9tb25pdG9yLmggYi94ZW4vaW5jbHVkZS9hc20tDQo+IHg4Ni9tb25pdG9yLmgNCj4gaW5k ZXggYTA0NDRkMS4uYTdhMGI1NiAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t b25pdG9yLmgNCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tb25pdG9yLmgNCj4gQEAgLTg0 LDcgKzg0LDggQEAgc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiBhcmNoX21vbml0b3JfZ2V0X2Nh cGFiaWxpdGllcyhzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgICAgICAgICAgICAgICAgICgxVSA8 PCBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfREVCVUdfRVhDRVBUSU9OKQ0KPiB8DQo+ICAgICAg ICAgICAgICAgICAgICAgKDFVIDw8IFhFTl9ET01DVExfTU9OSVRPUl9FVkVOVF9DUFVJRCkgfA0K PiAgICAgICAgICAgICAgICAgICAgICgxVSA8PCBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfSU5U RVJSVVBUKSB8DQo+IC0gICAgICAgICAgICAgICAgICAgKDFVIDw8DQo+IFhFTl9ET01DVExfTU9O SVRPUl9FVkVOVF9FTVVMX1VOSU1QTEVNRU5URUQpOw0KPiArICAgICAgICAgICAgICAgICAgICgx VSA8PA0KPiBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfRU1VTF9VTklNUExFTUVOVEVEKSB8DQo+ ICsgICAgICAgICAgICAgICAgICAgKDFVIDw8DQo+IFhFTl9ET01DVExfTU9OSVRPUl9FVkVOVF9O RVNURURfUEFHRUZBVUxUKTsNCj4NCj4gICAgICAvKiBTaW5jZSB3ZSBrbm93IHRoaXMgaXMgb24g Vk1YLCB3ZSBjYW4ganVzdCBjYWxsIHRoZSBodm0gZnVuYw0KPiAqLw0KPiAgICAgIGlmICggaHZt X2lzX3NpbmdsZXN0ZXBfc3VwcG9ydGVkKCkgKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv cHVibGljL2RvbWN0bC5oDQo+IGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oDQo+IGluZGV4 IDlhZTcyOTU5Li43MDZjNmVhIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9t Y3RsLmgNCj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oDQo+IEBAIC0xMDE0LDYg KzEwMTQsOCBAQCBzdHJ1Y3QgeGVuX2RvbWN0bF9wc3JfY210X29wIHsNCj4gICNkZWZpbmUgWEVO X0RPTUNUTF9NT05JVE9SX0VWRU5UX0lOVEVSUlVQVCAgICAgICAgICAgICA4DQo+ICAjZGVmaW5l IFhFTl9ET01DVExfTU9OSVRPUl9FVkVOVF9ERVNDX0FDQ0VTUyAgICAgICAgICAgOQ0KPiAgI2Rl ZmluZSBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfRU1VTF9VTklNUExFTUVOVEVEICAgIDEwDQo+ ICsvKiBFbmFibGVkIGJ5IGRlZmF1bHQgKi8NCj4gKyNkZWZpbmUgWEVOX0RPTUNUTF9NT05JVE9S X0VWRU5UX05FU1RFRF9QQUdFRkFVTFQgICAgICAxMQ0KPg0KPiAgc3RydWN0IHhlbl9kb21jdGxf bW9uaXRvcl9vcCB7DQo+ICAgICAgdWludDMyX3Qgb3A7IC8qIFhFTl9ET01DVExfTU9OSVRPUl9P UF8qICovDQoNCl9fX19fX19fX19fX19fX19fX19fX19fXw0KVGhpcyBlbWFpbCB3YXMgc2Nhbm5l ZCBieSBCaXRkZWZlbmRlcg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==