From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: Re: [PATCH v7 06/14] libxl_qmp: Implementation of libxl__ev_qmp_* Date: Thu, 3 Jan 2019 12:40:18 +0000 Message-ID: <20190103124018.GE1288@perard.uk.xensource.com> References: <20181123135355.6001-1-anthony.perard@citrix.com> <20181123135355.6001-7-anthony.perard@citrix.com> <23581.2162.571088.595084@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gf2IW-0001Y1-MY for xen-devel@lists.xenproject.org; Thu, 03 Jan 2019 12:40:28 +0000 Content-Disposition: inline In-Reply-To: <23581.2162.571088.595084@mariner.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Ian Jackson Cc: xen-devel@lists.xenproject.org, Wei Liu List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBEZWMgMjEsIDIwMTggYXQgMDM6MzY6MThQTSArMDAwMCwgSWFuIEphY2tzb24gd3Jv dGU6Cj4gQW50aG9ueSBQRVJBUkQgd3JpdGVzICgiW1BBVENIIHY3IDA2LzE0XSBsaWJ4bF9xbXA6 IEltcGxlbWVudGF0aW9uIG9mIGxpYnhsX19ldl9xbXBfKiIpOgo+ID4gVGhpcyBwYXRjaCBpbXBs ZW1lbnQgdGhlIEFQSSBsaWJ4bF9fZXZfcW1wIGRvY3VtZW50ZWQgaW4gdGhlIHByZXZpb3VzCj4g PiBwYXRjaCwgImxpYnhsOiBEZXNpZ24gb2YgYW4gYXN5bmMgQVBJIHRvIGlzc3VlIFFNUCBjb21t YW5kcyB0byBRRU1VIi4KPiA+IAo+ID4gU2luY2UgdGhpcyBBUEkgaXMgdG8gaW50ZXJhY3Qgd2l0 aCBRRU1VIHZpYSB0aGUgUU1QIHByb3RvY29sLCBpdCBhbHNvCj4gPiBpbXBsZW1lbnQgYSBRTVAg Y2xpZW50LiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFFFTVUgTWFjaGluZSBQcm90b2NvbAo+ ID4gKFFNUCkgY2FuIGJlIGZvdW5kIGluIHRoZSBRRU1VIHJlcG9zaXRvcnkgYXQ6Cj4gPiBodHRw czovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWJsb2JfcGxhaW47Zj1kb2NzL2ludGVyb3Av cW1wLXNwZWMudHh0Cj4gCj4gVGhhbmtzLgo+IAo+IEkgaGF2ZSBvbmx5IGZhaXJseSBtaW5vciBj b21tZW50cyBub3cuICBUaGUgYmlnZ2VzdCBvbmUgcmVtYWluaW5nIGlzCj4gYWJvdXQgdGhlIHVz ZSBvZiBFR0NfR0Mgd2hpY2ggSSB0aGluayBwcm9iYWJseSB3YW50cyB0byBiZWNvbWUKPiBTVEFU RV9BT19HQyB0aHJvdWdob3V0LiAgU2VlIGJlbG93Li4uCj4gCj4gCj4gPiBkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmgKPiA+IGluZGV4IDFjN2EzYjIyZjQuLjA1NmRlOWRlMmYgMTAwNjQ0Cj4gPiAtLS0gYS90b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCj4gPiArKysgYi90b29scy9saWJ4bC9saWJ4bF9pbnRl cm5hbC5oCj4gPiBAQCAtNDEyLDYgKzQxMiwxOSBAQCBfaGlkZGVuIGludCBsaWJ4bF9fZXZfcW1w X3NlbmQobGlieGxfX2djICpnYywgbGlieGxfX2V2X3FtcCAqZXYsCj4gCj4gPiArICAgIC8qIHJl Y2VpdmUgYnVmZmVyICovCj4gPiArICAgIGNoYXIgKnJ4X2J1ZjsKPiAKPiByeF9idWYgbmVlZHMg YSBjb21tZW50IHNheWluZyBpdCBjb21lcyBmcm9tIE5PR0Mgc2luY2Ugb3RoZXJ3aXNlIG9uZQo+ IHdvdWxkIGFzc3VtZSBpdCBjYW1lIGZyb20gdGhlIGFvIGdjIGxpa2UgdGhlIG90aGVyIGJ1ZmZl cnMuCj4gCj4gKENvdWxkIGl0IGNvbWUgZnJvbSB0aGUgYW8gZ2MgaW5zdGVhZD8pCgpJIGd1ZXNz IGl0J3MgZmluZSB0byBoYXZlIHRoZSByeF9idWYgY29tZXMgZnJvbSBhbyBnYy4gVGhlIGJ1ZmZl ciBpc24ndAp0aGF0IGJpZyAobWF5YmUgMTAwa0IgaW4gd29yc2UgY2FzZXMpLgoKPiAKPiA+ICtz dGF0aWMgdm9pZCBxbXBfZXZfZW5zdXJlX3JlYWRpbmdfd3JpdGluZyhsaWJ4bF9fZ2MgKmdjLCBs aWJ4bF9fZXZfcW1wICpldikKPiA+ICsgICAgLyogVXBkYXRlIHRoZSBzdGF0ZSBvZiBgZWZkYCB0 byBtYXRjaCB0aGUgcGVybWl0ZWQgc3RhdGUgKi8KPiA+ICt7Cj4gCj4gVGhpcyBmdW5jdGlvbiBp cyBsZWdhbCBvbmx5IGluIHN0YXRlcyBvdGhlciB0aGFuIGRpc2Nvbm5lY3RlZC4KPiBOZWVkcyB0 byBiZSBkb2N1bWVudGVkLgoKV2lsbCBkby4KCj4gPiArc3RhdGljIHZvaWQgcW1wX2V2X3NldF9z dGF0ZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fZXZfcW1wICpldiwKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpYnhsX19xbXBfc3RhdGUgbmV3X3N0YXRlKQo+ID4gKyAgICAvKiBv biBlbnRyeTogIWJyb2tlbiBhbmQgIWRpc2Nvbm5lY3RlZCAqLwo+ID4gK3sKPiA+ICsgICAgc3dp dGNoIChuZXdfc3RhdGUpIHsKPiA+ICsgICAgY2FzZSBxbXBfc3RhdGVfZGlzY29ubmVjdGVkOgo+ ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIGNhc2UgcW1wX3N0YXRlX2Nvbm5lY3Rpbmc6Cj4g PiArICAgICAgICBhc3NlcnQoZXYtPnN0YXRlID09IHFtcF9zdGF0ZV9kaXNjb25uZWN0ZWQpOwo+ ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArICAgIGNhc2UgcW1wX3N0YXRlX2NhcGFiaWxpdHlfbmVn b3RpYXRpb246Cj4gPiArICAgICAgICBhc3NlcnQoZXYtPnN0YXRlID09IHFtcF9zdGF0ZV9jb25u ZWN0aW5nKTsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlIHFtcF9zdGF0ZV93YWl0 aW5nX3JlcGx5Ogo+ID4gKyAgICAgICAgYXNzZXJ0KGV2LT5zdGF0ZSA9PSBxbXBfc3RhdGVfY2Fw YWJpbGl0eV9uZWdvdGlhdGlvbiB8fAo+ID4gKyAgICAgICAgICAgICAgIGV2LT5zdGF0ZSA9PSBx bXBfc3RhdGVfY29ubmVjdGVkKTsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlIHFt cF9zdGF0ZV9jb25uZWN0ZWQ6Cj4gPiArICAgICAgICBhc3NlcnQoZXYtPnN0YXRlID09IHFtcF9z dGF0ZV93YWl0aW5nX3JlcGx5KTsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKyAgICB9Cj4gPiAr Cj4gPiArICAgIGV2LT5zdGF0ZSA9IG5ld19zdGF0ZTsKPiAKPiBJIHRoaW5rIHRoaXMgZnVuY3Rp b24gbmVlZHMgdG8gdXBkYXRlIGVmZCA/ICBXaGF0IGFtIEkgbWlzc2luZyA/CgpZZXMsIEkgdGhp bmsgaXQncyBmaW5lIHRvIGNhbGwgcW1wX2V2X2Vuc3VyZV9yZWFkaW5nX3dyaXRpbmcgaGVyZSAo IG9yCmV2ZW4gaW5saW5lIGl0KSBhbmQgcW1wX2V2X2Vuc3VyZV9yZWFkaW5nX3dyaXRpbmcgd29u J3QgbmVlZHMgdG8gYmUKY2FsbCBmcm9tIG90aGVyIHBsYWNlcy4KCj4gVGhlIGNvbW1lbnQgZG9l c24ndCBzYXkgd2hhdCB0aGUgb3V0cHV0IHN0YXRlIGlzIGJ1dCBuYXR1cmFsbHkgSQo+IGFzc3Vt ZSB0aGF0IGl0IGlzIHByZWNpc2VseSBuZXdfc3RhdGUsIGFuZCBub3Qgc29tZSB0cmFuc2l0aW9u YWwKPiBtaXh0dXJlLiAgSWYgaXQgaXMgaW50ZW5kZWQgdG8gcHJvZHVjZSBhIHRyYW5zaXRpb25h bCBtaXh0dXJlIHRoYXQKPiBvdWdodCB0byBiZSBkb2N1bWVudGVkLgo+IAo+IEZvciBhIGNvbmNy ZXRlIGV4YW1wbGU6IGlmIG9uIGVudHJ5LCB3aXRoIG5ld19zdGF0ZT09ZGlzY29ubmVjdGVkLCB3 ZQo+IGFyZSBgY29ubmVjdGluZycgdGhlbjogZWZkIHdpbGwgYmUgbG9va2luZyBmb3IgUE9MTElO LiAgQnV0IGl0IG5lZWRzCj4gdG8gYmVjb21lIElkbGUuCgpPbmNlIEkgdXBkYXRlIGVmZCB3aXRo IHRoaXMgZnVuY3Rpb24sIEkgdGhpbmsgcW1wX2V2X3NldF9zdGF0ZSBzaG91bGQKYWx3YXlzIG91 dHB1dCBwcmVjaXNlbHkgbmV3X3N0YXRlLiBCdXQgbmV3X3N0YXRlIGFsb25lIG1pZ2h0IG5vdCBi ZQplbm91Z2ggaW4gZmV3IGNhc2VzICh3YWl0aW5nX3JlcGx5KSB0byBkZXNjcmliZSBhIGZ1bGwg c3RhdGUsIGJ1dCBpdAp3aWxsIGJlIG9uZSBvZiB0aGUgcG9zc2libGUgaW50ZXJuYWwgc3RhdGUg YXMgZGVzY3JpYmUgaW4gdGhlIHN0YXRlCmRvY3VtZW50YXRpb24gb2YgdGhlIGltcGxlbWVudGF0 aW9uLgoKPiAKPiA+ICsvKiBTZXR1cCBjb25uZWN0aW9uICovCj4gPiArCj4gPiArc3RhdGljIGlu dCBxbXBfZXZfY29ubmVjdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fZXZfcW1wICpldikKPiA+ICsg ICAgLyogZGlzY29ubmVjdGVkIC0+IGNvbm5lY3RpbmcgYnV0IHdpdGggYG1zZ2AgZnJlZQo+ID4g KyAgICAgKiBvbiBlcnJvcjogYnJva2VuICovCj4gPiArewo+IAo+IFRoaXMgZnVuY3Rpb24gbG9v a3MgZmluZSB0byBtZS4gIEhvd2V2ZXIsIGVhcmxpZXIgSSB3cm90ZSB0aGlzOgo+IAo+ICAgICAg IENvbnRyYXJ5IHRvIHRoZSBzdGF0ZSBkZXNjcmlwdGlvbiwgdGhpcyBmdW5jdGlvbiBkb2VzIG5v dAo+ICAgICAgIHRyYW5zaXRpb24gcnhfYnVmIGZyb20gZnJlZSB0byB1c2VkLiAgSG93ZXZlciwg SSB0aGluayB0aGlzCj4gICAgICAgd291bGQgcHJvYmFibHkgYmUgbW9yZSBlYXNpbHkgcmVtZWRp ZWQgYnkgY2hhbmdpbmcgdGhlCj4gICAgICAgZGVmaW5pdGlvbiBvZiBgdXNlZCcgdG8gcGVybWl0 IE5VTEwvMC8wLiAgWW91IG1pZ2h0IHdhbnQgdG8gdXNlCj4gICAgICAgYSBkaWZmZXJlbnQgd29y ZCB0byBgdXNlZCcsIGBpbnVzZScgcGVyaGFwcyA/Cj4gCj4gVGhpcyBpcyBzdGlsbCB0cnVlLiAg VGhhdCBpcywgeW91ciBzdGF0ZSBkZXNjcmlwdGlvbiBmb3IgYGNvbm5lY3RpbmcnCj4gc2F5cyB0 aGF0IHJ4X2J1ZiBpcyBgdXNlZCcuICBBbmQgeW91ciBkZXNjcmlwdGlvbiBsb3dlciBhYm91dCB3 aGF0Cj4gcnhfYnVmIGJlaW5nIGB1c2VkJyBtZWFucyBzYXlzIHRoYXQgcnhfYnVmIG11c3QgYmUg YGFsbG9jYXRlZCcuCj4gCj4gSSB0aGluayB0aGlzIHdvdWxkIHByb2JhYmx5IGJlIGJlc3QgcmVz b2x2ZWQgYnkgd3JpdGluZzoKPiAKPiAgICogICAgICAgICAgICAgICAgICAgICBmcmVlICAgdXNl ZAo+IC0gKiAgICAgcnhfYnVmICAgICAgICAgICBOVUxMICAgYWxsb2NhdGVkCj4gKyAqICAgICBy eF9idWYgICAgICAgICAgIE5VTEwgICBOVUxMIG9yIGFsbG9jYXRlZAo+ICAgKiAgICAgcnhfYnVm X3NpemUgICAgICAwICAgICAgYWxsb2NhdGlvbiBzaXplIG9mIGByeF9idWZgCj4gICAqICAgICBy eF9idWZfdXNlZCAgICAgIDAgICAgICA8PSByeF9idWZfc2l6ZSwgYWN0dWFsIGRhdGEgaW4gdGhl Cj4gICAqICAgICBidWZmZXIKCkknbGwgbWFrZSB0aGlzIGNoYW5nZS4KCj4gSWUganVzdCB0byBj aGFuZ2UgdGhlIGludGVybmFsIHNwZWMuICBJIGFtIGdvaW5nIHRvIGFzc3VtZSBmb3IgdGhlCj4g cmVzdCBvZiB0aGUgcmV2aWV3IHRoYXQgdGhlIGNvZGUgaXMgcmlnaHQgYW5kIHRoZSBpbnRlcm5h bCBzcGVjIHdpbGwKPiBiZSB1cGRhdGVkLiAgKEkgZG9uJ3QgdGhpbmsgaXQgaXMgbmVjZXNzYXJ5 IHRvIGNoYW5nZSB0aGUgZGVzY3JpcHRpb25zCj4gb2YgcnhfYnVmX3NpemUgYW5kIHJ4X2J1Zl91 c2VkOyBpdCB3aWxsIGJlIGNsZWFyIHRoYXQgdGhlIGBhbGxvY2F0aW9uCj4gc2l6ZScgb2YgYSBO VUxMIG11c3QgYmUgMC4pCj4gCj4gCj4gPiArLyogUU1QIEZEIGNhbGxiYWNrcyAqLwo+ID4gKwo+ ID4gK3N0YXRpYyB2b2lkIHFtcF9ldl9mZF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhs X19ldl9mZCAqZXZfZmQsCj4gLi4uCj4gCj4gPiArc3RhdGljIGludCBxbXBfZXZfY2FsbGJhY2tf d3JpdGFibGUobGlieGxfX2djICpnYywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9fZXZfcW1wICpldiwgaW50IGZkKQo+ID4gKyAgICAvKiBvbiBlbnRyeTog IWRpc2Nvbm5lY3RlZAo+ID4gKyAgICAgKiBvbiByZXR1cm4sIG9uZSBvZiB0aGVzZSBzdGF0ZSB0 cmFuc2l0aW9uOgo+ID4gKyAgICAgKiAgIHdhaXRpbmdfcmVwbHkgKHdpdGggbXNnIHNldCkgLT4g d2FpdGluZ19yZXBseSAod2l0aCBtc2cgZnJlZSkKPiA+ICsgICAgICogICB0eF9idWYgc2V0IC0+ IHNhbWUgc3RhdGUgb3IgdHhfYnVmIGZyZWUKPiA+ICsgICAgICogICB0eF9idWYgZnJlZSAtPiBu byBzdGF0ZSBjaGFuZ2UKPiA+ICsgICAgICogb24gZXJyb3I6IGJyb2tlbiAqLwo+ID4gK3sKPiAu Li4KPiA+ICsgICAgYXNzZXJ0KGV2LT50eF9idWYpOwo+ID4gKyAgICBpZiAoIWV2LT50eF9idWYp Cj4gPiArICAgICAgICByZXR1cm4gMDsKPiAKPiBJIHRoaW5rIHRoZSBpZiBpcyB2ZXN0aWdpYWwu CgpJJ2xsIHJlbW92ZSBpdC4KCj4gPiArICAgIHdoaWxlIChldi0+dHhfYnVmX29mZiA8IGV2LT50 eF9idWZfbGVuKSB7Cj4gPiArICAgICAgICByID0gd3JpdGUoZmQsIGV2LT50eF9idWYgKyBldi0+ dHhfYnVmX29mZiwKPiA+ICsgICAgICAgICAgICAgICAgICBldi0+dHhfYnVmX2xlbiAtIGV2LT50 eF9idWZfb2ZmKTsKPiA+ICsgICAgICAgIGlmIChyIDwgMCkgewo+ID4gKyAgICAgICAgICAgIGlm IChlcnJubyA9PSBFSU5UUikKPiA+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArICAg ICAgICAgICAgaWYgKGVycm5vID09IEVXT1VMREJMT0NLKQo+ID4gKyAgICAgICAgICAgICAgICBi cmVhazsKPiA+ICsgICAgICAgICAgICBMT0dFRChFUlJPUiwgZXYtPmRvbWlkLCAiZmFpbGVkIHRv IHdyaXRlIHRvIFFNUCBzb2NrZXQiKTsKPiA+ICsgICAgICAgICAgICByZXR1cm4gRVJST1JfRkFJ TDsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGV2LT50eF9idWZfb2ZmICs9IHI7Cj4gCj4g Q2FuIHlvdSBhc3NlcnQgdGhhdCB0aGUgdmFsdWUgb2YgciB3YXMgd2l0aGluIHJhbmdlID8gIChQ ZXJoYXBzIHRoaXMKPiBpcyBwYXJhbm9pYSBvbiBteSBwYXJ0LCBidXQsIHN0aWxsLikKCkkgZG8g YXNzZXJ0IHRoZSB2YWx1ZSBvZiB0eF9idWZfb2ZmIHdoaWNoIGRvZXMgaW5jbHVkZSByLgpCdXQg SSBjYW4gYWRkCmBhc3NlcnQociA+IDAgJiYgciA8PSAoZXYtPnJ4X2J1Zl9zaXplIC0gZXYtPnJ4 X2J1Zl91c2VkKSk7Jy4KCj4gPiArc3RhdGljIGludCBxbXBfZXZfZ2V0X25leHRfbXNnKGxpYnhs X19lZ2MgKmVnYywgbGlieGxfX2V2X3FtcCAqZXYsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnhsX19qc29uX29iamVjdCAqKm9fcikKPiA+ICsgICAgLyogRmluZCBhIEpT T04gb2JqZWN0IGFuZCBzdG9yZSBpdCBpbiBvX3IuCj4gPiArICAgICAqIHJldHVybiBFUlJPUl9O T1RGT1VORCBpZiBubyBvYmplY3QgaXMgZm91bmQuCj4gPiArICAgICAqIGBvX3JgIGlzIGFsbG9j YXRlZCB3aXRoaW4gYGVnY2AuCj4gCj4gV2h5IG5vdCBhbGxvY2F0ZSBvX3IgZnJvbSB3aXRoaW4g QU9fR0MgPwo+IAo+IElTVE0gdGhhdCB0YWtpbmcgaXQgZnJvbSBlZ2MgaXMgYSBiZWFydHJhcC4g IElmIHlvdSBkbyB3YW50IHRvCj4gYWxsb2NhdGUgaXQgZnJvbSBlZ2MsIHRoaXMgc2hvdWxkIGRl ZmluaXRlbHkgYmUgZG9jdW1lbnRlZCBpbiB0aGUKPiBpbnRlcm5hbCBwdWJsaWMgYXBpIGZvciBs aWJ4bF9fZXZfcW1wX2NhbGxiYWNrLiAgUmlnaHQgbm93IGEgY2FsbGVyCj4gbWlnaHQgd2VsbCBy ZWFzb25hYmx5IGFzc3VtZSB0aGF0IHRoZSBsaWJ4bF9fanNvbl9vYmplY3QgKnJlc3BvbnNlCj4g dGhleSBnZXQgaXMgdXNlYWJsZSBmb3IgdGhlIHdob2xlIGFvLiAgSW5kZWVkIGZ1dHVyZSBjYWxs ZXJzIG1pZ2h0Cj4gZXZlbiBuZWVkIHRoYXQgc2VtYW50aWMuCgpJbmRlZWQsIHRoYXQgY2FuIGJl IGFuIGlzc3VlLiBJJ2xsIG1ha2UgdGhlIGNoYW5nZXMgdG8gdXNlIGFvIGdjIGluc3RlYWQKb2Yg ZWdjLgoKPiBUbyBkbyB0aGlzLCB1c2UgU1RBVEVfQU9fR0MgaW5zdGVhZCBvZiBFR0NfR0MuCj4g VEJIIEkgdGhpbmsgeW91IHNob3VsZCBwcm9iYWJseSBkbyB0aGF0IHRocm91Z2hvdXQuCj4gCj4g PiArc3RhdGljIGludCBxbXBfZXZfcGFyc2VfZXJyb3JfbWVzc2FnZXMobGlieGxfX2VnYyAqZWdj LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19ldl9x bXAgKmV2LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGxpYnhsX19qc29uX29iamVjdCAqcmVzcCkKPiA+ICsgICAgLyogbm8gc3RhdGUgY2hhbmdlICov Cj4gPiArewo+ID4gKyAgICBFR0NfR0M7Cj4gPiArICAgIGludCByYzsKPiA+ICsgICAgY29uc3Qg Y2hhciAqczsKPiA+ICsgICAgY29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpvOwo+ID4gKyAgICBj b25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKmVycjsKPiA+ICsKPiA+ICsgICAgLyoKPiA+ICsgICAg ICogeyAiZXJyb3IiOiB7ICJjbGFzcyI6IHN0cmluZywgImRlc2MiOiBzdHJpbmcgfSB9Cj4gPiAr ICAgICAqLwo+ID4gKwo+ID4gKyAgICBlcnIgPSBsaWJ4bF9fanNvbl9tYXBfZ2V0KCJlcnJvciIs IHJlc3AsIEpTT05fTUFQKTsKPiA+ICsKPiA+ICsgICAgbyA9IGxpYnhsX19qc29uX21hcF9nZXQo ImNsYXNzIiwgZXJyLCBKU09OX1NUUklORyk7Cj4gCj4gSSB3b25kZXJlZDogc3VyZWx5IGVyciBj YW4gYmUgTlVMTCA/ICBJIGRpZG4ndCBmaW5kIGFueSBkb2NzIHNheWluZwo+IHRoYXQgaXQgY291 bGRuJ3Q7IG5vciB0aGF0IGl0IHRvbGVyYXRlZCBOVUxMIGZvciBvIG9uIGlucHV0Lgo+IAo+IEhv d2V2ZXIsIHJlYWRpbmcgdGhlIGltcGxlbWVudGF0aW9uIEkgc2VlIHRoYXQgbGlieGxfX2pzb25f bWFwX2dldAo+IGNhbGxzIGxpYnhsX19qc29uX29iamVjdF9pc19tYXAgd2hpY2ggZG9lcyBpbmRl ZWQgaGFuZGxlIG89PTAuCj4gQ291bGQgeW91IHBlcmhhcHMgYWRkIGEgY29tbWVudCAoaW4gbGli eGxfaW50ZXJuYWwuaCBuZWFyCj4gbGlieGxfX2pzb25fbWFwX2dldCkgZXQgYWwgYWJvdXQgdGhp cyA/CgpJJ2xsIGFkZCB0aGUgY29tbWVudHMuCgo+ID4gK3N0YXRpYyBpbnQgcW1wX2V2X2hhbmRs ZV9tZXNzYWdlKGxpYnhsX19lZ2MgKmVnYywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJ4bF9fZXZfcW1wICpldiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKnJlc3ApCj4gLi4uCj4gPiArICAgICAg ICAvKiBQcmVwYXJlIG5leHQgbWVzc2FnZSB0byBzZW5kICovCj4gPiArICAgICAgICBhc3NlcnQo IWV2LT50eF9idWYpOwo+ID4gKyAgICAgICAgZXYtPmlkID0gZXYtPm5leHRfaWQrKzsKPiA+ICsg ICAgICAgIGJ1ZiA9IHFtcF9wcmVwYXJlX2NtZChsaWJ4bF9fYW9faW5wcm9ncmVzc19nYyhldi0+ YW8pLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxbXBfY2FwYWJpbGl0aWVz IiwgTlVMTCwgZXYtPmlkKTsKPiAKPiBFcmssIEkgZG9uJ3QgbGlrZSB0aGUgb3BlbiBjb2RlZCBj YWxsIHRvIGxpYnhsX19hb19pbnByb2dyZXNzX2djLiAgSSdtCj4gYmVjb21pbmcgbW9yZSBjb252 aW5jZWQgeW91IGp1c3Qgd2FudGVkIEFPX0dDIG9yIFNUQVRFX0FPX0dDCj4gZXZlcnl3aGVyZS4K PiAKPiA+ICt2b2lkIGxpYnhsX19ldl9xbXBfZGlzcG9zZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9f ZXZfcW1wICpldikKPiA+ICsgICAgLyogKiAtPiBkaXNjb25uZWN0ZWQgKi8KPiA+ICt7Cj4gPiAr ICAgIExPR0QoREVCVUcsIGV2LT5kb21pZCwgIiBldiAlcCIsIGV2KTsKPiA+ICsKPiA+ICsgICAg ZnJlZShldi0+cnhfYnVmKTsKPiA+ICsKPiA+ICsgICAgbGlieGxfX2V2X2ZkX2RlcmVnaXN0ZXIo Z2MsICZldi0+ZWZkKTsKPiA+ICsgICAgbGlieGxfX2NhcmVmZF9jbG9zZShldi0+Y2ZkKTsKPiA+ ICsKPiA+ICsgICAgbGlieGxfX2V2X3FtcF9pbml0KGV2KTsKPiA+ICt9Cj4gCj4gSXQncyBhIHNt YWxsIHBvaW50LCBidXQgaXQgd291bGQgYmUgbmljZXIgdG8gbW92ZSB0aGUgZnJlZSBvZiByeF9i dWYKPiBuZWFyZXIgdGhlIGNhbGwgdG8gbGlieGxfX2V2X3FtcF9pbml0IHdoaWNoIHplcm9lcyBp dC4KCkFzIHJ4X2J1ZiBpcyBwcm9iYWJseSBnb2luZyB0byBiZSBhbGxvY2F0ZWQgZnJvbSBhbyBn YywgdGhlIGZyZWUgd29uJ3QKYmUgbmVlZGVkIGFueW1vcmUuIE9yLCBJIGNvdWxkIHJlYWxsb2Mg d2l0aCBhIG5ldyBzaXplIG9mIDA6CiAgICBsaWJ4bF9fcmVhbGxvYyhtYXliZV9nYywgZXYtPnJ4 X2J1ZiwgMCk7CmFuZCB0aGF0IHdvdWxkIGZyZWUgdGhlIG1lbW9yeS4gSSd2ZSBjaGVjayByZWFs bG9jLCBsaWJ4bF9fcmVhbGxvYyBhbmQKbGlieGxfX2ZyZWVfYWxsLCBhbmQgdGhleSBhbGwgc2Vl bXMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5ncyB3aGVuIHRoZSBuZXcKc2l6ZSBpcyAwLgoKVGhhbmtz LAoKLS0gCkFudGhvbnkgUEVSQVJECgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs