From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: Re: [PATCH v6.2 05/11] libxl_qmp: Implementation of libxl__ev_qmp_* Date: Fri, 16 Nov 2018 17:10:46 +0000 Message-ID: <20181116171046.GP1302@perard.uk.xensource.com> References: <23532.22098.906750.732501@mariner.uk.xensource.com> <20181115111510.11628-1-anthony.perard@citrix.com> <23533.48525.832090.502837@mariner.uk.xensource.com> <20181116145336.GO1302@perard.uk.xensource.com> <23534.60319.808138.50737@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gNhdr-0002gd-Bd for xen-devel@lists.xenproject.org; Fri, 16 Nov 2018 17:10:51 +0000 Content-Disposition: inline In-Reply-To: <23534.60319.808138.50737@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 T24gRnJpLCBOb3YgMTYsIDIwMTggYXQgMDQ6MDk6MDNQTSArMDAwMCwgSWFuIEphY2tzb24gd3Jv dGU6Cj4gQW50aG9ueSBQRVJBUkQgd3JpdGVzICgiUmU6IFtQQVRDSCB2Ni4yIDA1LzExXSBsaWJ4 bF9xbXA6IEltcGxlbWVudGF0aW9uIG9mIGxpYnhsX19ldl9xbXBfKiIpOgo+ID4gT24gVGh1LCBO b3YgMTUsIDIwMTggYXQgMDY6NDA6MTNQTSArMDAwMCwgSWFuIEphY2tzb24gd3JvdGU6Cj4gPiA+ IEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGUgaWQgY29sdW1uIHN0YXRlZCBzb21ldGhpbmcgbW9y ZSB1c2VmdWwgdGhhbgo+ID4gPiBgc2V0Jy4gIGBuZXh0JyBtYXliZSwgd2hlcmUgYXBwbGljYWJs ZSA/Cj4gPiAKPiA+IFdoZW4gJ3NldCcsIGlkIGlzIHRoZSBpZCBvZiB0aGUgdXNlciBjb21tYW5k IHdlIGludGVuZCB0byBzZW5kIG9yIGhhdmUKPiA+IGFscmVhZHkgc2VudCBhbmQgd2FpdGluZyBm b3IgdGhlIGFzc29jaWF0ZWQgcmVwbHkuIEknbSBub3Qgc3VyZSB3aGljaAo+ID4gd29yZCBvciBz ZXQgb2Ygd29yZCB3b3VsZCBkZXNjcmliZSBlbm91Z2guIEkgbWlnaHQgbmVlZCB0byBhZGQgYSBj b21tZW50Cj4gPiBiZWxvdyB0aGUgdGFibGUuCj4gCj4gWW91IGNvdWxkIHVzZSBgc2VudCcsIGBu ZXh0JywgYWxvbmdzaWRlIHlvdXIgZXhpc3RpbmcgYHByZXYnID8KCldpbGwgZG8uCgo+ID4gPiA+ ICsgKiAtIEFsbG93ZWQgaW50ZXJuYWwgc3RhdGUgdHJhbnNpdGlvbjoKPiA+ID4gPiArICogZGlz Y29ubmVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgIC0+IGNvbm5lY3RpbmcKPiA+ID4gPiAr ICogY29ubmVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IGNhcGFiaWxpdHlfbmVn b3RpYXRpb24KPiA+ID4gPiArICogY2FwYWJpbGl0eV9uZWdvdGlhdGlvbi93YWl0aW5nX3JlcGx5 IC0+IGNvbm5lY3RlZAo+ID4gPiA+ICsgKiBjb25uZWN0ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gd2FpdGluZ19yZXBseQo+ID4gPiA+ICsgKiBhbnkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gZGlzY29ubmVjdGVkCj4gPiA+IAo+ID4gPiBUaGlzIGRvZXMgbm90 IG1lbnRpb24gdGhlIHN0YXRlIGBicm9rZW4nIGFuZCBpdCBzaG91bGQuCj4gPiAKPiA+IE1heWJl Ogo+ID4gICBhbnkgLT4gYnJva2VuCj4gCj4gRmluZSBieSBtZS4gIFlvdSB3YW50IHRvIG1lbnRp b24gYnJva2VuIC0+IGRpc2Nvbm5lY3RlZCB0b28gOi0pLgoKV2lsbCwgdGhhdCBwYXJ0IG9mIGFu eS0+ZGlzY29ubmVjdGVkLCBidXQgaXQgZG9lc24ndCBodXJ0IHRvIGFkZCBpdC4KCj4gPiA+ID4g K3N0YXRpYyBpbnQgcW1wX2V2X3ByZXBhcmVfY21kKGxpYnhsX19nYyAqZ2MsCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19ldl9xbXAgKmV2LAo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjbWQsCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19qc29uX29iamVjdCAqYXJn cykKPiAuLi4KPiA+ID4gPiArICAgIGV2LT5pZCsrOwo+ID4gPiA+ICsgICAgYnVmID0gcW1wX3By ZXBhcmVfY21kKGdjLCBjbWQsIGFyZ3MsIGV2LT5pZCwgJmxlbik7Cj4gPiA+ID4gKyAgICBpZiAo IWJ1Zikgewo+ID4gPiA+ICsgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwo+ID4gPiA+ICsgICAg fQo+ID4gPiAKPiA+ID4gVGhlcmUgaXMgbm8gZG9jIGNvbW1lbnQgZm9yIHFtcF9wcmVwYXJlX2Nt ZCBzYXlpbmcgd2hldGhlciBpdCBsb2dzIG9uCj4gPiA+IGVycm9yLiAgU28gaXQgZG9lc24ndCA/ ICBJbiB3aGljaCBjYXNlIG1heWJlIHlvdSBzaG91bGQgZG8gc28gaGVyZS4KPiA+ID4gCj4gPiA+ IEFsdGVybmF0aXZlbHkgaWYgaXQgY2FuIG9ubHkgcmVhbGx5IGZhaWwgZHVlIHRvIG1lbW9yeSBh bGxvY2F0aW9uCj4gPiA+IGZhaWx1cmUsIG1heWJlIGl0IHNob3VsZCByZXR1cm4gdm9pZCAoYW5k IGNhbGwgbGlieGxfX2FsbG9jX2ZhaWxlZAo+ID4gPiBvbiBhbGxvY2F0aW9uIGZhaWx1cmUpIGlu c3RlYWQgPwo+ID4gCj4gPiBTbyB3ZSBjYW4gaGF2ZSB0aGUgYWxsb2NhdGlvbiBiZWVuIGRvbmUg YnkgbGlieGwncyBmdW5jdGlvbnMsIGFzCj4gPiB5YWpsX2dlbl9hbGxvYyBjYW4gdXNlIG90aGVy IGZ1bmN0aW9ucyB0aGF0IG1hbGxvYy9mcmVlL3JlYWxsb2MsIHRoYXQKPiA+IHdvdWxkIHJlbW92 ZSB0aGUgYWxsb2NhdGlvbiBmYWlsdXJlLgo+IAo+IFJpZ2h0Lgo+IAo+ID4gQnV0IHRoZW4gSSB0 aGluayB0aGF0IHFtcF9wcmVwYXJlX2NtZCBjb3VsZCBmYWlsIGFuZCByZXR1cm4gbnVsbCBpZgo+ ID4gJ2NtZCcgb3IgJ2FyZ3MnIGNvbnRhaW5zIGJhZCBqc29uIG9iamVjdHMsIG9yIGEgd3Jvbmcg c3RyaW5nLgo+ID4gCj4gPiBTbyB3ZSBzdGlsbCBuZWVkcyB0byBkZXRlY3QgZmFpbHVyZS4KPiAK PiBPSy4KPiAKPiA+IEkgbG9nIGhlcmUgYXMgSSBjYW4gYWRkIHRoZSBkb21pZC4KPiAKPiBJJ20g bm90IHN1cmUgd2hhdCB5b3UgbWVhbi4gIFdoZXJlIGRvIHlvdSBsb2cgPyAgTm90IGhlcmUuCgpO b3QgeWV0IDopLiBUaGVyZSBpcyBtYXliZSBtaXNzaW5nIHdvcmRzIGluIG15IHNlbnRlbmNlLi4u Cgo+ID4gPiA+ICsvKiBTZXR1cCBjb25uZWN0aW9uICovCj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0 aWMgaW50IHFtcF9ldl9jb25uZWN0KGxpYnhsX19nYyAqZ2MsIGxpYnhsX19ldl9xbXAgKmV2KQo+ ID4gPiA+ICsgICAgLyogZGlzY29ubmVjdGVkIC0+IGNvbm5lY3RpbmcgYnV0IHdpdGggYG1zZ2Ag ZnJlZQo+ID4gPiA+ICsgICAgICogb24gZXJyb3I6IGRpc2Nvbm5lY3RlZAo+ID4gPiA+ICsgICAg ICogSWYgdGhlIGluaXRpYWwgc3RhdGUgaXNuJ3QgZGlzY29ubmVjdGVkLCB0aGVuIG5vdGhpbmcg aXMgZG9uZSAqLwo+ID4gPiAKPiA+ID4gTWF5YmUgaXQgYmUgYmV0dGVyIGZvciB0aGlzIGZ1bmN0 aW9uIHRvIHJldHVybiBgYnJva2VuJyBvbiBlcnJvciA/Cj4gPiAKPiA+IFRoYXQgbm90IHRoZSBj YXNlLCBidXQgSSBjb3VsZCBjaGFuZ2UgdG8gcmV0dXJuIGJyb2tlbiBvbiBlcnJvciwgYW5kIGxl dAo+ID4gdGhlIGNhbGxlciBjbGVhbiB0aGUgc3RhdGUuCj4gCj4gVGhhdCdzIHdoYXQgSSBtZWFu LiAgVGhhdCBtaWdodCBzaW1wbGlmeSB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgY2FsbGVyCj4gcHJv YmFibHkgaGFzIHRoZSByZWxldmFudCBjbGVhbnVwIHBhdGggYWxyZWFkeS4gIChJIGhhdmVuJ3Qg Y2hlY2tlZC4pCgpJdCBkb2VzLCBhbmQgeWVzLCB0aGF0IHdpbGwgbWFrZSB0aGUgZnVuY3Rpb24g c2ltcGxlci4KCj4gPiA+ID4gKyAgICBpZiAocmV2ZW50cyAmIFBPTExPVVQpIHsKPiA+ID4gPiAr ICAgICAgICByYyA9IHFtcF9ldl9jYWxsYmFja193cml0YWJsZShnYywgZXYsIGZkKTsKPiA+ID4g Li4uCj4gPiA+ID4gKyAgICBpZiAocmV2ZW50cyAmIFBPTExJTikgewo+ID4gPiA+ICsgICAgICAg IHJjID0gcW1wX2V2X2NhbGxiYWNrX3JlYWRhYmxlKGVnYywgZXYsIGZkKTsKPiA+ID4gPiArICAg ICAgICBpZiAocmMpCj4gPiA+ID4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPiA+ICsKPiA+ ID4gPiArICAgICAgICAvKiBwYXJzZSBpbnB1dCAqLwo+ID4gPiAKPiA+ID4gSSBmaW5kIGl0IG9k ZCB0aGF0IHRoaXMgaW5wdXQgcGFyc2luZyBpcyBub3QgcGFydCBvZgo+ID4gPiBxbXBfZXZfY2Fs bGJhY2tfcmVhZGFibGUuICBXaGF0IGRvIHlvdSB0aGluayBhYm91dCBtb3ZpbmcgaXQgdGhlcmUg Pwo+ID4gCj4gPiBJIHdhbnRlZCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBmdW5jdGlvbiBjYWxs cyBiZXR3ZWVuIHdoZW4gYSB1c2VyCj4gPiBjYWxsYmFjayBpcyBjYWxsZWQgYW5kIHdoZW4gZXZf cW1wJ3MgY29udHJvbCBwYXNzZXMgb3V0c2l0ZSBvZiBldl9xbXAncwo+ID4gaW1wbGVtZW50YXRp b24uIFNvIEkgbW92ZWQgcW1wX2V2X2hhbmRsZV9tZXNzYWdlKCkgY2FsbCBoZXJlLgo+IAo+IFdo eSBkaWQgeW91IHdhbnQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgPwoK V2VsbCwgdGhlcmUgaXMgYSBuZWVkIHRvIHRyYWNrIHRoYXQgYGV2YCBtaWdodCBiZSBkaXNjYXJk ZWQsIGFuZCB0aGUKb25seSB3YXkgbGVmdCBpcyB2aWEgYSByZXR1cm4gdmFsdWUuIEl0IGlzIHBy b2JhYmx5IGVhc2llciB0byBmb2xsb3cgaWYKbGVzcyBmdW5jdGlvbiBoYXZlIHRoZSBwb3NzaWJp bGl0eSB0aGF0IGEgdXNlciBjYWxsYmFjayBoYXZlIGJlZW4KY2FsbGVkLgoKPiA+ID4gPiArICAg IC8qCj4gPiA+ID4gKyAgICAgKiBXZSB3aWxsIHNlbmQgYSBmaWxlIGRlc2NyaXB0b3IgYXNzb2Np YXRlZCB3aXRoIGEgY29tbWFuZCBvbiB0aGUKPiA+ID4gPiArICAgICAqIGZpcnN0IGJ5dGUgb2Yg dGhpcyBjb21tYW5kLgo+ID4gPiA+ICsgICAgICovCj4gPiA+ID4gKyAgICBpZiAoZXYtPnFtcF9z dGF0ZSA9PSBxbXBfc3RhdGVfd2FpdGluZ19yZXBseSAmJgo+ID4gPiA+ICsgICAgICAgIGV2LT5m ZCA+PSAwICYmCj4gPiA+ID4gKyAgICAgICAgZXYtPnR4X2J1Zl9vZmYgPT0gMCkgewo+ID4gPiAK PiA+ID4gQWNjb3JkaW5nIHRvIHRoZSBkb2MgY29tbWVudHMsIHN0YXRlIHdhaXRpbmdfcmVwbHkg bWlnaHQgaGF2ZSB0eF9idWYKPiA+ID4gZnJlZSwgaW4gd2hpY2ggY2FzZSBpdCB3b3VsZCB0cnkg dG8gZXhlY3V0ZSB0aGlzIGNvZGUuICBJIGRvbid0IHRoaW5rCj4gPiA+IHRoYXQgY2FuIGJlIHJp Z2h0Lgo+ID4gCj4gPiBXaGVuIHR4X2J1ZiBpcyBmcmVlLCB0aGF0IGZ1bmN0aW9uIHJldHVybnMg ZWFybGllci4gU28gdGhpcyBjb2RlIGlzbid0Cj4gPiBleGVjdXRlZC4KPiAKPiBPaCB5ZXMsIHNv IGl0IGRvZXMuICBCdXQgd2h5IGFyZSB3ZSBlbnRlcmluZyB0aGlzIGNhbGxiYWNrIHdpdGggYSBm cmVlCj4gdHhfYnVmIGF0IGFsbCA/ICBJZiB3ZSBqdXN0IHJldHVybiwgd2UgYXJlIGxpa2VseSB0 byBnZXQgY2FsbGVkIGFnYWluLAo+IGllIGFuIGluZmluaXRlIGxvb3AuICBUaGlzIGNhbiBvbmx5 IG9jY3VyIGFzIGEgcmVzdWx0IG9mIGEgYnVnID8KPiBJbiB3aGljaCBjYXNlIG1heWJlIGl0IHNo b3VsZCBiZSBhbiBhc3NlcnQgPwoKWWVzLCBJIGNhbiBwcm9iYWJseSBhZGQgdGhlIGFzc2VydC4K Cj4gPiA+IEkgd3JvdGU6Cj4gPiA+IAo+ID4gPiAgIEJ1dCBJIHRoaW5rIHlvdSBzaG91bGQgdHJl YXQgb25seSBgXG4nIGFzIHRoZSBkZWxpbWl0ZXIuICBUaGlzIHdpbGwKPiA+ID4gICBjb25zaWRl cmFibHkgc2ltcGxpZnkgdGhlIGJ1ZmZlciBoYW5kbGluZy4gIChZb3Ugc2hvdWxkIGNoZWNrIGFu ZCB0cmltCj4gPiA+ICAgdGhlIHByZWNlZGluZyBgXHInIGJlZm9yZSBwYXNzaW5nIHRoaW5ncyB0 byBsaWJ4bF9fanNvbl9wYXJzZSBvZgo+ID4gPiAgIGNvdXJzZS4pCj4gPiA+IAo+ID4gPiBCdXQg eW91IGRvbid0IHNlZW0gdG8gaGF2ZSBkb25lIHRoYXQsIG9yIHJlcGxpZWQgPwo+ID4gCj4gPiBU aGlzIGlzIHN0aWxsIHNpbXBsZXIgdGhhbiB3aGF0IHdlIGhhZCBiZWZvcmUsIGFuZCBpZiBJIGxv b2sgZm9yIG9ubHkKPiA+ICdcbicsIEkgd291bGQgbmVlZCBhIGxvb3AgaW4gY2FzZXMgd2hlcmUg XG4gaXNuJ3QgcHJlY2VkZGVkIGJ5IFxyLiBJCj4gPiBhbHNvIGNoZWNrIHRoZSB3aG9sZSBidWZm ZXIgcmF0aGVyIHRoYW4gbmV3IGRhdGEsIHNvIGxvb2tpbmcgZm9yIFxyIGFuZAo+ID4gY2hlY2sg aWYgaXQgaXMgZm9sbG93ZWQgYnkgYSBcbiBpcyBzaW1pbGFyLgo+IAo+IEkgdGhpbmsgYSBiYXJl IFxuIGlzIG5vdCBsZWdhbCBhbmQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBwcm90b2NvbAo+IGVy cm9yLiAgRG9uJ3QgeW91IGFncmVlID8gIEdpdmVuIHRoYXQsIHlvdSBjYW4gc2VhcmNoIGZvciBc biwgYW5kIGlmCj4gaXQgaXMgbm90IHByZWNlZGVkIGJ5IFxyLCBjYWxsIGl0IGFuIGVycm9yLgoK SSBjYW4ndCBmaW5kIGFueXRoaW5nIHRoYXQgc2F5IGJhcmUgXG4gYXJlIG5vdCBsZWdhbC4gXG4g aXMgcGFydCBvZgpyZmM3MTU5LCB3aGljaCB0aGUgcW1wLXNwZWMgbWVudGlvbnMgd2hlbiBzcGVh a2luZyBhYm91dCBKU09OIGRhdGEKc3RydWN0dXJlcy4gSXQgaXMgZXZlbiBwb3NzaWJsZSB0byBh c2sgUUVNVSB0byBhZGQgYmFyZSBcbiwgdGhpcyBpcyBkb25lCndpdGggcHJldHR5PW9uLgoKPiA+ ID4gPiArICAgIGNhc2UgTElCWExfX1FNUF9NRVNTQUdFX1RZUEVfUU1QOgo+ID4gPiAuLi4KPiA+ ID4gPiArICAgICAgICBhc3NlcnQoIWV2LT50eF9idWYpOwo+ID4gPiA+ICsgICAgICAgIGV2LT50 eF9idWYgPSBxbXBfcHJlcGFyZV9jbWQoZ2MsICJxbXBfY2FwYWJpbGl0aWVzIiwgTlVMTCwKPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1QX0NBUEFCSUxJVFlfTkVHT1RJ QVRJT05fTVNHSUQsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldi0+ dHhfYnVmX2xlbik7Cj4gPiA+ID4gKyAgICAgICAgZXYtPnR4X2J1Zl9vZmYgPSAwOwo+ID4gPiAK PiA+ID4gV2h5IGRvIHlvdSBub3QgdXNlIHFtcF9ldl9wcmVwYXJlX2NtZCBmb3IgdGhpcyA/Cj4g PiAKPiA+IEJlY2F1c2UgcW1wX2V2X3ByZXBhcmVfY21kIGRvZXMgbW9yZSBsaWtlIGluY3JlYXNp bmcgdGhlIGlkLiBUaGlzCj4gPiBxbXBfY2FwYWJpbGl0aWVzIGlzIGEgc3BlY2lhbCBjb21tYW5k IHRoYXQgaXMgcGFydCBvZiB0aGUKPiA+IGluaXRpYWxpc2F0aW9uLiBJIG5lZWQgdG8ga25vdyB3 aGljaCBpZCBpcyB1c2VkIHNvIHRoYXQgSSBjYW4gdHJhY2sgaXQKPiA+IGxhdGVyIGFuZCBmb3Vu ZCBvdXQgd2hlbiBRRU1VIGlzIHJlYWR5IHRvIHJlY2VpdmUgb3RoZXIgY29tbWFuZHMuCj4gCj4g QnV0IHNlZSBiZWxvdyBhYm91dCB0aGUgaWQuICBJIHRoaW5rIHlvdSBzaG91bGQgYmUgdXNpbmcg dGhlIG5vcm1hbAo+IGlkLgo+IAo+IEluIGFub3RoZXIgdGhyZWFkIHlvdSB3ZXJlIHRhbGtpbmcg YWJvdXQgcG9zc2libHkgdHJ5aW5nIHRvIHJldXNlIGFuCj4gZXhpc3Rpbmcgc2Vzc2lvbiBhbmQg cHV0dGluZyB0aGUgcGlkIGluIHRoZSBpZCBvciBzb21ldGhpbmcuICBJbiB0aGlzCj4gY2FzZSBh IGZpeGVkIGlkIGZvciB0aGUgY2FwYWJpbGl0aWVzIGNvbW1hbmQgaXMgbm90IGdvb2QgZWl0aGVy Lgo+IAo+IExldCBtZSBicmluZyBmb3J3YXJkIHRoZSBwYXJ0IHdoZXJlIHdlIGhhbmRsZSB0aGUg cmVzdWxzOgo+IAo+ID4gPiA+ICsgICAgICAgIGlkID0gbGlieGxfX2pzb25fb2JqZWN0X2dldF9p bnRlZ2VyKG8pOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICBpZiAoaWQgPT0gUU1QX0NBUEFC SUxJVFlfTkVHT1RJQVRJT05fTVNHSUQpIHsKPiA+ID4gPiArICAgICAgICAgICAgLyogV2UgaGF2 ZSBhIHJlc3BvbnNlIHRvIG91ciBxbXBfY2FwYWJpbGl0aWVzIGNtZCAqLwo+ID4gPiA+ICsgICAg ICAgICAgICBpZiAoZXYtPnFtcF9zdGF0ZSAhPSBxbXBfc3RhdGVfY2FwYWJpbGl0eV9uZWdvdGlh dGlvbiB8fAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgdHlwZSAhPSBMSUJYTF9fUU1QX01FU1NB R0VfVFlQRV9SRVRVUk4pCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBnb3RvIG91dF91bmtub3du X2lkOwo+ID4gPiA+ICsgICAgICAgICAgICBxbXBfZXZfc2V0X3N0YXRlKGdjLCBldiwgcW1wX3N0 YXRlX2Nvbm5lY3RlZCk7Cj4gPiA+ID4gKyAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPiA+ICsg ICAgICAgIH0KPiA+ID4gCj4gPiA+IEknbSBhIGJpdCBwdXp6bGVkIGFib3V0IHRoZSBjYXBhYmls aXR5IG5lZ290YXRpb24sIGl0cyBpZCwgZXRjLjoKPiA+ID4gCj4gPiA+ICogV2h5IGRvZXMgUU1Q X0NBUEFCSUxJVFlfTkVHT1RJQVRJT05fTVNHSUQgZXhpc3QgYXQgYWxsID8gIFlvdQo+ID4gPiAg IGNvdWxkIGp1c3QgdXNlIGEgbm9ybWFsIGlkLCBjb3VsZG4ndCB5b3UgPyAgQW5kIHlvdSdkIGJl IGFibGUgdG8KPiA+ID4gICB0ZWxsIGZyb20geW91ciBvd24gc3RhdGUgdGhhdCBpdCB3YXMgdGhl IHJpZ2h0IHZhbHVlLgo+ID4gCj4gPiBCdXQgSSB3b3VsZCB0aGVuIG5lZWRzIHRvIHRyYWNrIHR3 byBkaWZmZXJlbnQgaWRzLCBvbmUgZm9yIHRoZQo+ID4gcW1wX2NhcGFiaWxpdGllcyBjb21tYW5k LCBhbmQgb25lIGZvciB0aGUgdXNlcidzIGNvbW1hbmQuCj4gCj4gQnV0IHlvdSBvbmx5IGNvbnN0 cnVjdCB0aGUgaWQgd2hlbiB5b3UgcHJlcGFyZSB0aGUgY29tbWFuZCBpbnRvCj4gdHhfYnVmLiAg U28geW91IG9ubHkgaGF2ZSBvbmUgaWQgYXQgYSB0aW1lOiB0aGUgaWQgb2YgdGhlIG1vc3QKPiBy ZWNlbnRseSBwcmVwYXJlZCBjb21tYW5kLiAgT3IgYW0gSSB3cm9uZyA/Cj4gCj4gLi4uCj4gCj4g SSBoYXZlIGxvb2tlZCBhdCB0aGlzIGNvZGUgYWdhaW4gYW5kIEkgd2FzIHdyb25nLiAgWW91IGZv cm1hdCB0aGUKPiB1c2VyJ3MgbWVzc2FnZSwgd2l0aCBpZCwgcmlnaHQgYXQgdGhlIGJlZ2lubmlu Zy4gIChUaGUgc2VxdWVuY2luZyBvZgo+IGV2ZW50cyBpbiB0aGUgY29kZSBzdHJ1Y3R1cmUgaXMg c2xpZ2h0bHkgb2RkLCBpbiB0aGF0IHRoZSBjYXBhYmlsaXRpZXMKPiBtZXNzYWdlIGlzIGZvcm1h dHRlZCBhZnRlciB0aGUgdXNlcidzIG1lc3NhZ2UsIGJ1dCBzZW50IGJlZm9yZWhhbmQuKQo+IAo+ IEkgc3RpbGwgdGhpbmsgZm9yIHRoZSByZWFzb25zIGFib3ZlIHRoYXQgeW91IHByb2JhYmx5IGNh bid0IGhhdmUgYQo+IGZpeGVkIFFNUF9DQVBBQklMSVRZX05FR09USUFUSU9OX01TR0lEIGJlY2F1 c2Ugd2UgbWF5IHdhbnQgdG8gYmUgYWJsZQo+IHRvIHJldXNlIGFuIG9sZCB0cmFuc3BvcnQgY29u bmVjdGlvbiBpbiB0aGUgZnV0dXJlLgo+IAo+IFNvIHRoYXQgbWVhbnMgeW91IGRvIG5lZWQgdHdv IGlkcy4gIChJIHRoaW5rIHlvdSBjYW4ndCBkZWZlcgo+IGZvcm1hdHRpbmcgdGhlIHVzZXIncyBt ZXNzYWdlLCBiYWtpbmcgYW4gaWQgaW50byBpdCwgYmVjYXVzZSB0aGUKPiBsaWZldGltZSBvZiB0 aGUgY2FsbGVycycganNvbiBvYmplY3QgaXMgdG9vIHNob3J0IGZvciB5b3UgdG8gc2F2ZSBpdC4p Cj4gCj4gSSdtIG5vdCBzdXJlIEkgY2FuIHNlZSBzZW5zaWJsZSBhIHdheSBvZiBkb2luZyB0aGlz IHRoYXQgZG9lc24ndCBoYXZlCj4gKnRocmVlKiBpZCB2YXJpYWJsZXM6Cj4gICAtIGEgY291bnRl ciBmb3IgZ2VuZXJhdGluZyBuZXcgaWRzCj4gICAtIHRoZSBpZCBwdXQgaW4gdGhlIGNhcGFiaWxp dGllcyBjb21tYW5kCj4gICAtIHRoZSBpZCBwdXQgaW4gdGhlIHVzZXIncyBjb21tYW5kCgpUaGF0 IHNvdW5kcyBmaW5lLgoKPiA+IFdlIGNvdWxkIGNhbGwgcW1wX2V2X3ByZXBhcmVfY21kLCBxbXBf ZXZfcHJlcGFyZV91c2VyX2NtZC4KPiA+IAo+ID4gPiA+ICsgICAgY2FzZSBMSUJYTF9fUU1QX01F U1NBR0VfVFlQRV9SRVRVUk46Cj4gPiA+ID4gKyAgICBjYXNlIExJQlhMX19RTVBfTUVTU0FHRV9U WVBFX0VSUk9SOgo+ID4gPiAuLi4KPiA+ID4gPiArICAgICAgICBvID0gbGlieGxfX2pzb25fbWFw X2dldCgiaWQiLCByZXNwLCBKU09OX0lOVEVHRVIpOwo+ID4gPiA+ICsgICAgICAgIGlmICghbykg ewo+ID4gPiA+ICsgICAgICAgICAgICAvKgo+ID4gPiA+ICsgICAgICAgICAgICAgKiBJZiAiaWQi IGlzbid0IHByZXNlbnQsIGFuIGVycm9yIG9jY3VyIG9uIHRoZSBzZXJ2ZXIgYmVmb3JlCj4gPiA+ ID4gKyAgICAgICAgICAgICAqIGl0IGhhcyByZWFkIHRoZSAiaWQiIHByb3ZpZGVkIGJ5IGxpYnhs Lgo+ID4gPiA+ICsgICAgICAgICAgICAgKi8KPiA+ID4gPiArICAgICAgICAgICAgcW1wX2V2X3Bh cnNlX2Vycm9yX21lc3NhZ2VzKGVnYywgZXYsIHJlc3ApOwo+ID4gPiA+ICsgICAgICAgICAgICBy ZXR1cm4gRVJST1JfUFJPVE9DT0xfRVJST1JfUU1QOwo+ID4gPiAKPiA+ID4gSSB0aGluayB5b3Ug d2FudGVkIHRvIHJldHVybiB0aGUgZXJyb3IgY29kZSBmcm9tCj4gPiA+IHFtcF9ldl9wYXJzZV9l cnJvcl9tZXNzYWdlcyA/Cj4gPiAKPiA+IFllYWgsIGJ1dCB0aGVuIEkndmUgYWRkZWQgdG8gdGhl IHB1YmxpYyBkb2N1bWVudGF0aW9uIHRoYXQgRVJST1JfUU1QXyoKPiA+IG1lYW5zIHRoYXQgZXZf cW1wIGlzIHN0aWxsIENvbm5lY3RlZC4KPiAKPiBPaC4gIFJpZ2h0LiAgSSBzZWUuICBOb3cgdGhh dCB5b3UgaGF2ZSBleHBsYWluZWQgSSB0aGluayB0aGUgY29kZSBpcwo+IGNvcnJlY3QuICBDYW4g eW91IGFkZCBhIGNvbW1lbnQgYWJvdXQgdGhpcyA/ICBTb21ldGhpbmcgbGlrZSB0aGlzOgo+ICAg IC8qCj4gICAgICogRGVsaWJlcmF0ZWx5IHNxdWFzaCBhbGwgZXJyb3JzIGludG8gRVJST1JfUFJP VE9DT0xfRVJST1JfUU1QLgo+ICAgICAqIHFtcF9ldl9wYXJzZV9lcnJvcl9tZXNzYWdlcyB3aWxs IG9ubHkgcmV0dXJuIHRoYXQsIG9yCj4gICAgICogRVJST1JfUU1QXyo7IGJ1dCBFUlJPUl9RTVBf KiBpcyByZXNlcnZlZCBmb3IgZXJyb3JzIHJlc3VsdGluZwo+ICAgICAqIGZyb20gdGhlIGNhbGxl cidzIGNvbW1hbmQsIGFuZCB3aGVuIHdlIHJldHVybiB0aGF0IHdlIHByb21pc2UKPiAgICAgKiB0 aGF0IHRoZSBldl9xbXAgaXMgQ29ubmVjdGVkLgo+ICAgICAqLwoKV2lsbCBkby4KCj4gPiA+ICog V2h5IGFyZSB3ZSBldmVuIGRvaW5nIGNhcGFiaWxpdHkgbmVnb3RhdGlvbiB3aGVuIHdlIHRocm93 IHRoZSBhbnN3ZXIKPiA+ID4gICBhd2F5ID8KPiA+IAo+ID4gSXQgaXMgcGFydCBvZiB0aGUgcHJv dG9jb2wuCj4gPiAKPiA+IEFuZCBxbXBfY2FwYWJpbGl0aWVzIGRvZXNuJ3QgcmV0dXJuIGFueXRo aW5nIChqdXN0IGFuIGVtcHR5IG9iamVjdCkuCj4gCj4gT2gsIGlzIHRoZSBwdXJwb3NlIHRvIGlu Zm9ybSBxZW11IHdoYXQgb3VyIGNhcGFiaWxpdGllcyBhcmUgPwoKSXQgYWN0dWFsbHkgaW5mb3Jt IHFlbXUgb2YgdGhlIGNhcGFiaWxpdGllcyB3ZSB3YW50LiBUaGUgUU1QIHNlcnZlciB3aWxsCm5v dCBhY2NlcHQgYW55IG90aGVyIGNvbW1hbmRzIGJlZm9yZSB0aGUgY2xpZW50IGV4ZWN1dGUgcW1w X2NhcGFiaWxpdGllcy4KClRoZSBjb252ZXJzYXRpb24gYmV0d2VlbiBRRU1VIGFuZCBsaWJ4bCBn b2VzIGxpa2UgdGhpczoKClFFTVU6IEhpLCBJJ20gUUVNVSAzLjAsIEkgY2FuIGRvICJvb2IiLgps aWJ4bDogSGksIEkgZG9uJ3QgbmVlZCBhbnkgY2FwYWJpbGl0aWVzLgpRRU1VOiBUaGFua3MsIHlv dSBjYW4gbm93IHJ1biBhbnkgb3RoZXIgY29tbWFuZCB5b3UgbGlrZS4KbGlieGwgc2VuZHMgdGhl IHVzZXIgY29tbWFuZC4KCk9yIGluIHRlcm0gb2YgZWRpdGVkIEpTT046ClFFTVU6ICB7ICJRTVAi OiB7InZlcnNpb24iOiBYWFgsICJjYXBhYmlsaXRpZXMiOiBbIm9vYiJdIH0gfQpsaWJ4bDogeyAi ZXhlY3V0ZSI6ICJxbXBfY2FwYWJpbGl0aWVzIiwgImFyZ3VtZW50cyI6IHt9IH0KUUVNVTogIHsg InJldHVybiI6IHt9fQoKQW5kIGhlcmUgaXMgYSBsaW5rIHRvIHRoZSBleGFtcGxlIGluIHRoZSBR TVAgc3BlYyBkb2N1bWVudAooMy4gUU1QIEV4YW1wbGVzKToKaHR0cHM6Ly9naXQucWVtdS5vcmcv P3A9cWVtdS5naXQ7YT1ibG9iO2Y9ZG9jcy9pbnRlcm9wL3FtcC1zcGVjLnR4dDtoPThmN2RhMDI0 NWQ1MTQ0N2JlN2RmMmIzZDRiMTA1YmFkOWZiZWMwYjM7aGI9SEVBRCNsMjQ0CgpNYXliZSBJIHNo b3VsZCBhZGQgc29tZXdoZXJlIGluIGEgY29tbWVudCB3aGVyZSB0byBmaW5kIHRoZSBRTVAgc3Bl YywKZXZlbiBzbyB3ZSBhbHJlYWR5IGhhdmUgIlRoaXMgZmlsZSBpbXBsZW1lbnQgYSBjbGllbnQg Zm9yIFFNUCAoUUVNVQpNb25pdG9yIFByb3RvY29sKS4gRm9yIHRoZSBTcGVjaWZpY2F0aW9uLCBz ZWUgaW4gdGhlIFFFTVUgcmVwb3NpdG9yeS4iCmF0IHRoZSB0b3Agb2YgbGlieGxfcW1wLmMKCgpU aGFua3MsCgotLSAKQW50aG9ueSBQRVJBUkQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=