From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4 01/14] libxc: Rework extra module initialisation Date: Tue, 15 Mar 2016 20:06:44 -0400 Message-ID: <20160316000644.GG29495@char.us.oracle.com> References: <1457978150-27201-1-git-send-email-anthony.perard@citrix.com> <1457978150-27201-2-git-send-email-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1457978150-27201-2-git-send-email-anthony.perard@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Anthony PERARD Cc: Ian Jackson , Stefano Stabellini , Wei Liu , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBNYXIgMTQsIDIwMTYgYXQgMDU6NTU6MzZQTSArMDAwMCwgQW50aG9ueSBQRVJBUkQg d3JvdGU6Cj4gVGhpcyBwYXRjaCB1c2UgeGNfZG9tX2FsbG9jX3NlZ21lbnQoKSB0byBhbGxvY2F0 ZSB0aGUgbWVtb3J5IHNwYWNlIGZvciB0aGUKPiBBQ1BJIG1vZHVsZXMgYW5kIHRoZSBTTUJJT1Mg bW9kdWxlcy4gVGhpcyBpcyB0byByZXBsYWNlIHRoZSBhcmJpdHJhcnkKPiBwbGFjZW1lbnQgb2Yg MU1CIGFmdGVyIHRoZSBodm1sb2FkZXIgaW1hZ2UuCgpzL29mL2F0LyA/CgpPciBhcmUgeW91IHJh dGhlciBzdGF5aW5nIHRoYXQgdGhlIG1lbW9yeSBmb3IgQUNQSSBtb2R1bGVzIGFuZCBzdWNoCmlz IG9mZnNldCBieSBvbmUgMU1CIGFmdGVyIGh2bWxvYWRlciBpbWFnZT8KCkluIG90aGVyIHdvcmRz OgoKLy0tLS0tLS0tLS0tXCA8LSAwCnwgICAgICAgICAgIHwKfCBodm1sb2FkZXIgfAp8IGJpbmFy eSAgICB8CistLS0tLS0tLS0tLXwgPC0gODAwa0IKfCAgICAgICAgICAgfAp8ICBlbXB0eSAgICB8 CistLS0tLS0tLS0tLSsgPC0gMS44TUIKfCBBQ1BJIERBVEEgfAp8ICAgICAgICAgICB8CistLS0t LS0tLS0tLSsgPC0gMi44TUIKfCAgICAgICAgICAgfAp8IC4uLi4uICAgICB8CistLS0tLS0tLS0t LXwgPC0gNE1CCnwgIHNjcmF0Y2ggIHwKfCBzcGFjZSBmb3IgfAp8IGh2bWxvYWRlciB8ClwtLS0t LS0tLS0tLS8gPC0gOE1CCgpJcyB3aGF0IGNhbiBoYXBwZW4gbm93PyBCdXQgcHJpb3IgdG8gdGhp cyB5b3UgaGFkOgoKLy0tLS0tLS0tLS0tXCA8LSAwCnwgICAgICAgICAgIHwKfCBodm1sb2FkZXIg fAp8IGJpbmFyeSAgICB8CistLS0tLS0tLS0tLXwgPC0gODAwa0IKfCAgICAgICAgICAgfAp8ICBl bXB0eSAgICB8CistLS0tLS0tLS0tLSsgPC0gMU1CCnwgQUNQSSBEQVRBIHwKfCAgICAgICAgICAg fAorLS0tLS0tLS0tLS0rIDwtIDJNQiAKfCAgICAgICAgICAgfAp8IC4uLi4uICAgICB8CistLS0t LS0tLS0tLXwgPC0gNE1CCnwgIHNjcmF0Y2ggIHwKfCBzcGFjZSBmb3IgfAp8IGh2bWxvYWRlciB8 ClwtLS0tLS0tLS0tLS8gPC0gOE1CCgo/Cgo+IAo+IEluIGxhdGVyIHBhdGNoZXMsIHdoaWxlIHRy eWluZyB0byBsb2FkIGEgZmlybXdhcmUgc3VjaCBhcyBPVk1GLCB0aGUgbGF0ZXIKCi4uIHdoYXQg bGF0ZXIgcGF0Y2hlcz8gVGhlc2Ugb25lcz8gWW91IG1heSB3YW50IHRvIG1lbnRpb24gd2hpY2gg b25lcy4KCj4gY291bGQgZWFzaWx5IGJlIGxvYWRlZCBwYXN0IHRoZSBhZGRyZXNzIDRNQiAoT1ZN RiBpcyBhIDJNQiBiaW5hcnkpLCBidXQKIApXaHkgd291bGQgaXQgYmUgbG9hZGVkIHBhc3QgNE1C PyBXaHkgbm90IGluIHRoZSBzcGFjZSByaWdodCBhZnRlciBBQ1BJCkRTRFQgYW5kIHN1Y2g/CgoK PiBodm1sb2FkZXIgdXNlIGEgcmFuZ2Ugb2YgbWVtb3J5IGZyb20gNE1CIHRvIDhNQiB0byBwZXJm b3JtIHRlc3RzIGFuZCBpbiB0aGUKPiBwcm9jZXNzLCBjbGVhciB0aGUgbWVtb3J5LCBiZWZvcmUg bG9hZGluZyB0aGUgbW9kdWxlcy4KCnMvY2xlYXIvY2xlYXJzLwoKPiAKPiBTaWduZWQtb2ZmLWJ5 OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KPiAtLS0KPiBDaGFu Z2VzIGluIFY0Ogo+IC0gY2hlY2sgdGhhdCBndWVzdF9hZGRyX291dCBoYXZlIGEgcmVhc29uYWJs ZSB2YWx1ZS4KPiAKPiBOZXcgcGF0Y2ggaW4gVjMuCj4gLS0tCj4gIHRvb2xzL2xpYnhjL3hjX2Rv bV9odm1sb2FkZXIuYyB8IDEzMSArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgOTMgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9odm1sb2FkZXIuYyBiL3Rvb2xz L2xpYnhjL3hjX2RvbV9odm1sb2FkZXIuYwo+IGluZGV4IDMzMGQ1ZTguLjdjZjU4NTQgMTAwNjQ0 Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2h2bWxvYWRlci5jCj4gKysrIGIvdG9vbHMvbGli eGMveGNfZG9tX2h2bWxvYWRlci5jCj4gQEAgLTEyOSw5OCArMTI5LDUyIEBAIHN0YXRpYyBlbGZf ZXJyb3JzdGF0dXMgeGNfZG9tX3BhcnNlX2h2bV9rZXJuZWwoc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tKQo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IG1vZHVsZXNfaW5p dChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IHZlbmQsIHN0cnVjdCBlbGZfYmluYXJ5ICplbGYsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90ICptc3RhcnRfb3V0LCB1aW50NjRfdCAqbWVuZF9vdXQpCj4gK3N0YXRp YyBpbnQgbW9kdWxlX2luaXRfb25lKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2h2bV9maXJtd2FyZV9tb2R1bGUgKm1vZHVs ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSkKPiAgewo+IC0jZGVm aW5lIE1PRFVMRV9BTElHTiAxVUwgPDwgNwo+IC0jZGVmaW5lIE1CX0FMSUdOICAgICAxVUwgPDwg MjAKPiAtI2RlZmluZSBNS0FMSUdOKHgsIGEpICgoKHVpbnQ2NF90KSh4KSArIChhKSAtIDEpICYg fih1aW50NjRfdCkoKGEpIC0gMSkpCj4gLSAgICB1aW50NjRfdCB0b3RhbF9sZW4gPSAwLCBvZmZz ZXQxID0gMDsKPiArICAgIHN0cnVjdCB4Y19kb21fc2VnIHNlZzsKPiArICAgIHZvaWQgKmRlc3Q7 Cj4gIAo+IC0gICAgaWYgKCBkb20tPmFjcGlfbW9kdWxlLmxlbmd0aCA9PSAwICYmIGRvbS0+c21i aW9zX21vZHVsZS5sZW5ndGggPT0gMCApCj4gLSAgICAgICAgcmV0dXJuIDA7Cj4gLQo+IC0gICAg LyogRmluZCB0aGUgdG90YWwgbGVuZ3RoIGZvciB0aGUgZmlybXdhcmUgbW9kdWxlcyB3aXRoIGEg cmVhc29uYWJsZSBsYXJnZQo+IC0gICAgICogYWxpZ25tZW50IHNpemUgdG8gYWxpZ24gZWFjaCB0 aGUgbW9kdWxlcy4KPiAtICAgICAqLwo+IC0gICAgdG90YWxfbGVuID0gTUtBTElHTihkb20tPmFj cGlfbW9kdWxlLmxlbmd0aCwgTU9EVUxFX0FMSUdOKTsKPiAtICAgIG9mZnNldDEgPSB0b3RhbF9s ZW47Cj4gLSAgICB0b3RhbF9sZW4gKz0gTUtBTElHTihkb20tPnNtYmlvc19tb2R1bGUubGVuZ3Ro LCBNT0RVTEVfQUxJR04pOwo+IC0KPiAtICAgIC8qIFdhbnQgdG8gcGxhY2UgdGhlIG1vZHVsZXMg MU1iK2NoYW5nZSBiZWhpbmQgdGhlIGxvYWRlciBpbWFnZS4gKi8KPiAtICAgICptc3RhcnRfb3V0 ID0gTUtBTElHTihlbGYtPnBlbmQsIE1CX0FMSUdOKSArIChNQl9BTElHTik7Cj4gLSAgICAqbWVu ZF9vdXQgPSAqbXN0YXJ0X291dCArIHRvdGFsX2xlbjsKPiAtCj4gLSAgICBpZiAoICptZW5kX291 dCA+IHZlbmQgKQo+IC0gICAgICAgIHJldHVybiAtMTsKPiAtCj4gLSAgICBpZiAoIGRvbS0+YWNw aV9tb2R1bGUubGVuZ3RoICE9IDAgKQo+IC0gICAgICAgIGRvbS0+YWNwaV9tb2R1bGUuZ3Vlc3Rf YWRkcl9vdXQgPSAqbXN0YXJ0X291dDsKPiAtICAgIGlmICggZG9tLT5zbWJpb3NfbW9kdWxlLmxl bmd0aCAhPSAwICkKPiAtICAgICAgICBkb20tPnNtYmlvc19tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQg PSAqbXN0YXJ0X291dCArIG9mZnNldDE7Cj4gKyAgICBpZiAoIG1vZHVsZS0+bGVuZ3RoICkKPiAr ICAgIHsKPiArICAgICAgICBpZiAoIHhjX2RvbV9hbGxvY19zZWdtZW50KGRvbSwgJnNlZywgbmFt ZSwgMCwgbW9kdWxlLT5sZW5ndGgpICkKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAg ICAgZGVzdCA9IHhjX2RvbV9zZWdfdG9fcHRyKGRvbSwgJnNlZyk7Cj4gKyAgICAgICAgaWYgKCBk ZXN0ID09IE5VTEwgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgRE9NUFJJTlRGKCIlczog eGNfZG9tX3NlZ190b19wdHIoZG9tLCAmc2VnKSA9PiBOVUxMIiwKPiArICAgICAgICAgICAgICAg ICAgICAgIF9fRlVOQ1RJT05fXyk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAg IH0KPiArICAgICAgICBtZW1jcHkoZGVzdCwgbW9kdWxlLT5kYXRhLCBtb2R1bGUtPmxlbmd0aCk7 Cj4gKyAgICAgICAgbW9kdWxlLT5ndWVzdF9hZGRyX291dCA9IHNlZy52c3RhcnQ7Cj4gKyAgICAg ICAgaWYgKCBtb2R1bGUtPmd1ZXN0X2FkZHJfb3V0ID4gVUlOVDMyX01BWCB8fAo+ICsgICAgICAg ICAgICAgbW9kdWxlLT5ndWVzdF9hZGRyX291dCArIG1vZHVsZS0+bGVuZ3RoID4gVUlOVDMyX01B WCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBET01QUklOVEYoIiVzOiBNb2R1bGUgJXMg d291bGQgYmUgbG9hZGVkIGFicm92ZSA0R0IiLAo+ICsgICAgICAgICAgICAgICAgICAgICAgX19G VU5DVElPTl9fLCBuYW1lKTsKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ ICsgICAgfQo+ICAKPiAgICAgIHJldHVybiAwOwo+ICtlcnI6Cj4gKyAgICByZXR1cm4gLTE7Cj4g IH0KPiAgCj4gLXN0YXRpYyBpbnQgbG9hZG1vZHVsZXMoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9t LAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1zdGFydCwgdWludDY0X3QgbWVu ZCwKPiAtICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkb21pZCkKPiArc3RhdGljIGlu dCBtb2R1bGVzX2luaXQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQo+ICB7Cj4gLSAgICBwcml2 Y21kX21tYXBfZW50cnlfdCAqZW50cmllcyA9IE5VTEw7Cj4gLSAgICB1bnNpZ25lZCBsb25nIHBm bl9zdGFydDsKPiAtICAgIHVuc2lnbmVkIGxvbmcgcGZuX2VuZDsKPiAtICAgIHNpemVfdCBwYWdl czsKPiAtICAgIHVpbnQzMl90IGk7Cj4gLSAgICB1aW50OF90ICpkZXN0Owo+IC0gICAgaW50IHJj ID0gLTE7Cj4gLSAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGRvbS0+eGNoOwo+IC0KPiAtICAgIGlm ICggbXN0YXJ0ID09IDAgfHwgbWVuZCA9PSAwICkKPiAtICAgICAgICByZXR1cm4gMDsKPiAtCj4g LSAgICBwZm5fc3RhcnQgPSAodW5zaWduZWQgbG9uZykobXN0YXJ0ID4+IFBBR0VfU0hJRlQpOwo+ IC0gICAgcGZuX2VuZCA9ICh1bnNpZ25lZCBsb25nKSgobWVuZCArIFBBR0VfU0laRSAtIDEpID4+ IFBBR0VfU0hJRlQpOwo+IC0gICAgcGFnZXMgPSBwZm5fZW5kIC0gcGZuX3N0YXJ0Owo+IC0KPiAt ICAgIC8qIE1hcCBhZGRyZXNzIHNwYWNlIGZvciBtb2R1bGUgbGlzdC4gKi8KPiAtICAgIGVudHJp ZXMgPSBjYWxsb2MocGFnZXMsIHNpemVvZihwcml2Y21kX21tYXBfZW50cnlfdCkpOwo+IC0gICAg aWYgKCBlbnRyaWVzID09IE5VTEwgKQo+IC0gICAgICAgIGdvdG8gZXJyb3Jfb3V0Owo+IC0KPiAt ICAgIGZvciAoIGkgPSAwOyBpIDwgcGFnZXM7IGkrKyApCj4gLSAgICAgICAgZW50cmllc1tpXS5t Zm4gPSAobXN0YXJ0ID4+IFBBR0VfU0hJRlQpICsgaTsKPiAtCj4gLSAgICBkZXN0ID0geGNfbWFw X2ZvcmVpZ25fcmFuZ2VzKAo+IC0gICAgICAgIHhjaCwgZG9taWQsIHBhZ2VzIDw8IFBBR0VfU0hJ RlQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIDEgPDwgUEFHRV9TSElGVCwKPiAtICAgICAgICBl bnRyaWVzLCBwYWdlcyk7Cj4gLSAgICBpZiAoIGRlc3QgPT0gTlVMTCApCj4gLSAgICAgICAgZ290 byBlcnJvcl9vdXQ7Cj4gLQo+IC0gICAgLyogWmVybyB0aGUgcmFuZ2Ugc28gcGFkZGluZyBpcyBj bGVhciBiZXR3ZWVuIG1vZHVsZXMgKi8KPiAtICAgIG1lbXNldChkZXN0LCAwLCBwYWdlcyA8PCBQ QUdFX1NISUZUKTsKPiAtCj4gLSAgICAvKiBMb2FkIG1vZHVsZXMgaW50byByYW5nZSAqLwo+IC0g ICAgaWYgKCBkb20tPmFjcGlfbW9kdWxlLmxlbmd0aCAhPSAwICkKPiAtICAgIHsKPiAtICAgICAg ICBtZW1jcHkoZGVzdCwKPiAtICAgICAgICAgICAgICAgZG9tLT5hY3BpX21vZHVsZS5kYXRhLAo+ IC0gICAgICAgICAgICAgICBkb20tPmFjcGlfbW9kdWxlLmxlbmd0aCk7Cj4gLSAgICB9Cj4gLSAg ICBpZiAoIGRvbS0+c21iaW9zX21vZHVsZS5sZW5ndGggIT0gMCApCj4gLSAgICB7Cj4gLSAgICAg ICAgbWVtY3B5KGRlc3QgKyAoZG9tLT5zbWJpb3NfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0IC0gbXN0 YXJ0KSwKPiAtICAgICAgICAgICAgICAgZG9tLT5zbWJpb3NfbW9kdWxlLmRhdGEsCj4gLSAgICAg ICAgICAgICAgIGRvbS0+c21iaW9zX21vZHVsZS5sZW5ndGgpOwo+IC0gICAgfQo+IC0KPiAtICAg IG11bm1hcChkZXN0LCBwYWdlcyA8PCBQQUdFX1NISUZUKTsKPiAtICAgIHJjID0gMDsKPiArICAg IGludCByYzsKPiAgCj4gLSBlcnJvcl9vdXQ6Cj4gLSAgICBmcmVlKGVudHJpZXMpOwo+ICsgICAg cmMgPSBtb2R1bGVfaW5pdF9vbmUoZG9tLCAmZG9tLT5hY3BpX21vZHVsZSwgImFjcGkgbW9kdWxl Iik7Cj4gKyAgICBpZiAoIHJjICkgZ290byBlcnI7Cj4gKyAgICByYyA9IG1vZHVsZV9pbml0X29u ZShkb20sICZkb20tPnNtYmlvc19tb2R1bGUsICJzbWJpb3MgbW9kdWxlIik7Cj4gKyAgICBpZiAo IHJjICkgZ290byBlcnI7CgpZb3UgY2FuJ3QgYmUgdGhhdCBjb2RlIHRob3VnaHQuIFRoYXQgaXMg c29tZSBuaWNlIGRlbGV0aW9uIG9mIGNvZGUuCgpOb3cgaXMgdGhpcyBzYWZlIGZvciBtaWdyYXRp b24/CkkgcHJlc3VtZSBzbyBzaW5jZSB0aGlzIGlzIGFsbCBFODIwX1JFU0VSVkVEIHJpZ2hUPyBO byBmdW5ueSBidXNpbmVzcwp0aGVyZT8KCj4gIAo+IC0gICAgcmV0dXJuIHJjOwo+ICsgICAgcmV0 dXJuIDA7Cj4gK2VycjoKPiArICAgIHJldHVybiAtMTsKPiAgfQo+ICAKPiAgc3RhdGljIGVsZl9l cnJvcnN0YXR1cyB4Y19kb21fbG9hZF9odm1fa2VybmVsKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRv bSkKPiBAQCAtMjI5LDcgKzE4Myw2IEBAIHN0YXRpYyBlbGZfZXJyb3JzdGF0dXMgeGNfZG9tX2xv YWRfaHZtX2tlcm5lbChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCj4gICAgICBwcml2Y21kX21t YXBfZW50cnlfdCAqZW50cmllcyA9IE5VTEw7Cj4gICAgICBzaXplX3QgcGFnZXMgPSAoZWxmLT5w ZW5kIC0gZWxmLT5wc3RhcnQgKyBQQUdFX1NJWkUgLSAxKSA+PiBQQUdFX1NISUZUOwo+ICAgICAg ZWxmX2Vycm9yc3RhdHVzIHJjOwo+IC0gICAgdWludDY0X3QgbV9zdGFydCA9IDAsIG1fZW5kID0g MDsKPiAgICAgIGludCBpOwo+ICAKPiAgICAgIC8qIE1hcCBhZGRyZXNzIHNwYWNlIGZvciBpbml0 aWFsIGVsZiBpbWFnZS4gKi8KPiBAQCAtMjYyLDE1ICsyMTUsNyBAQCBzdGF0aWMgZWxmX2Vycm9y c3RhdHVzIHhjX2RvbV9sb2FkX2h2bV9rZXJuZWwoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQo+ ICAKPiAgICAgIG11bm1hcChlbGYtPmRlc3RfYmFzZSwgZWxmLT5kZXN0X3NpemUpOwo+ICAKPiAt ICAgIHJjID0gbW9kdWxlc19pbml0KGRvbSwgZG9tLT50b3RhbF9wYWdlcyA8PCBQQUdFX1NISUZU LCBlbGYsICZtX3N0YXJ0LAo+IC0gICAgICAgICAgICAgICAgICAgICAgJm1fZW5kKTsKPiAtICAg IGlmICggcmMgIT0gMCApCj4gLSAgICB7Cj4gLSAgICAgICAgRE9NUFJJTlRGKCIlczogaW5zdWZm aWNpZW50IHNwYWNlIHRvIGxvYWQgbW9kdWxlcy4iLCBfX2Z1bmNfXyk7Cj4gLSAgICAgICAgZ290 byBlcnJvcjsKPiAtICAgIH0KPiAtCj4gLSAgICByYyA9IGxvYWRtb2R1bGVzKGRvbSwgbV9zdGFy dCwgbV9lbmQsIGRvbS0+Z3Vlc3RfZG9taWQpOwo+ICsgICAgcmMgPSBtb2R1bGVzX2luaXQoZG9t KTsKPiAgICAgIGlmICggcmMgIT0gMCApCj4gICAgICB7Cj4gICAgICAgICAgRE9NUFJJTlRGKCIl czogdW5hYmxlIHRvIGxvYWQgbW9kdWxlcy4iLCBfX2Z1bmNfXyk7Cj4gLS0gCj4gQW50aG9ueSBQ RVJBUkQKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IFhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+ IGh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK