From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: Re: [PATCH v3 04/15] argo: init, destroy and soft-reset, with enable command line opt Date: Tue, 8 Jan 2019 22:48:13 -0800 Message-ID: References: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> <1546846968-7372-5-git-send-email-christopher.w.clark@gmail.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 1gh7fC-00020v-N7 for xen-devel@lists.xenproject.org; Wed, 09 Jan 2019 06:48:30 +0000 Received: by mail-lj1-x242.google.com with SMTP id n18-v6so5527392lji.7 for ; Tue, 08 Jan 2019 22:48:28 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Jason Andryuk Cc: Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , xen-devel , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBKYW4gOCwgMjAxOSBhdCAyOjU0IFBNIEphc29uIEFuZHJ5dWsgPGphbmRyeXVrQGdt YWlsLmNvbT4gd3JvdGU6Cj4KPiBPbiBNb24sIEphbiA3LCAyMDE5IGF0IDI6NDMgQU0gQ2hyaXN0 b3BoZXIgQ2xhcmsKPiA8Y2hyaXN0b3BoZXIudy5jbGFya0BnbWFpbC5jb20+IHdyb3RlOgo+ID4K PiA+IEluaXRpYWxpc2VzIGJhc2ljIGRhdGEgc3RydWN0dXJlcyBhbmQgcGVyZm9ybXMgdGVhcmRv d24gb2YgYXJnbyBzdGF0ZQo+ID4gZm9yIGRvbWFpbiBzaHV0ZG93bi4KPiA+Cj4gPiBJbmNsdXNp b24gb2YgdGhlIEFyZ28gaW1wbGVtZW50YXRpb24gaXMgZGVwZW5kZW50IG9uIENPTkZJR19BUkdP Lgo+ID4KPiA+IEludHJvZHVjZXMgYSBuZXcgWGVuIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgJ2Fy Z28nOiBib29sIHRvIGVuYWJsZS9kaXNhYmxlCj4gPiB0aGUgYXJnbyBoeXBlcmNhbGwuIERlZmF1 bHRzIHRvIGRpc2FibGVkLgo+ID4KPiA+IE5ldyBoZWFkZXJzOgo+ID4gICBwdWJsaWMvYXJnby5o OiB3aXRoIGRlZmluaW9ucyBvZiBhZGRyZXNzZXMgYW5kIHJpbmcgc3RydWN0dXJlLCBpbmNsdWRp bmcKPiA+ICAgaW5kZXhlcyBmb3IgYXRvbWljIHVwZGF0ZSBmb3IgY29tbXVuaWNhdGlvbiBiZXR3 ZWVuIGRvbWFpbiBhbmQgaHlwZXJ2aXNvci4KPiA+Cj4gPiAgIHhlbi9hcmdvLmg6IHRvIGV4cG9z ZSB0aGUgaG9va3MgZm9yIGludGVncmF0aW9uIGludG8gZG9tYWluIGxpZmVjeWNsZToKPiA+ICAg ICBhcmdvX2luaXQ6IHBlci1kb21haW4gaW5pdCBvZiBhcmdvIGRhdGEgc3RydWN0dXJlcyBmb3Ig ZG9tYWluX2NyZWF0ZS4KPiA+ICAgICBhcmdvX2Rlc3Ryb3k6IHRlYXJkb3duIGZvciBkb21haW5f ZGVzdHJveSBhbmQgdGhlIGVycm9yIGV4aXQKPiA+ICAgICAgICAgICAgICAgICAgIHBhdGggb2Yg ZG9tYWluX2NyZWF0ZS4KPiA+ICAgICBhcmdvX3NvZnRfcmVzZXQ6IHJlc2V0IG9mIGRvbWFpbiBz dGF0ZSBmb3IgZG9tYWluX3NvZnRfcmVzZXQuCj4gPgo+ID4gQWRkcyB0d28gbmV3IGZpZWxkcyB0 byBzdHJ1Y3QgZG9tYWluOgo+ID4gICAgIHJ3bG9ja190IGFyZ29fbG9jazsKPiA+ICAgICBzdHJ1 Y3QgYXJnb19kb21haW4gKmFyZ287Cj4gPgo+ID4gSW4gYWNjb3JkYW5jZSB3aXRoIHJlY2VudCB3 b3JrIG9uIF9kb21haW5fZGVzdHJveSwgYXJnb19kZXN0cm95IGlzCj4gPiBpZGVtcG90ZW50LiBJ dCB3aWxsIHRlYXIgZG93bjogYWxsIHJpbmdzIHJlZ2lzdGVyZWQgYnkgdGhpcyBkb21haW4sIGFs bAo+ID4gcmluZ3Mgd2hlcmUgdGhpcyBkb21haW4gaXMgdGhlIHNpbmdsZSBzZW5kZXIgKGllLiBz cGVjaWZpZWQgcGFydG5lciwKPiA+IG5vbi13aWxkY2FyZCByaW5ncyksIGFuZCBhbGwgcGVuZGlu ZyBub3RpZmljYXRpb25zIHdoZXJlIHRoaXMgZG9tYWluIGlzCj4gPiBhd2FpdGluZyBzaWduYWwg YWJvdXQgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSByaW5ncyBvZiBvdGhlciBkb21haW5zLgo+ID4K PiA+IEEgY291bnQgd2lsbCBiZSBtYWludGFpbmVkIG9mIHRoZSBudW1iZXIgb2YgcmluZ3MgdGhh dCBhIGRvbWFpbiBoYXMKPiA+IHJlZ2lzdGVyZWQgaW4gb3JkZXIgdG8gbGltaXQgaXQgYmVsb3cg dGhlIGZpeGVkIG1heGltdW0gbGltaXQgZGVmaW5lZCBoZXJlLgo+ID4KPiA+IFRoZSBzb2Z0d2Fy ZSBsaWNlbnNlIG9uIHRoZSBwdWJsaWMgaGVhZGVyIGlzIHRoZSBCU0QgbGljZW5zZSwgc3RhbmRh cmQKPiA+IHByb2NlZHVyZSBmb3IgdGhlIHB1YmxpYyBYZW4gaGVhZGVycy4gVGhlIHB1YmxpYyBo ZWFkZXIgd2FzIG9yaWdpbmFsbHkKPiA+IHBvc3RlZCB1bmRlciBhIEdQTCBsaWNlbnNlIGF0OiBb MV06Cj4gPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRl dmVsLzIwMTMtMDUvbXNnMDI3MTAuaHRtbAo+ID4KPiA+IFRoZSBmb2xsb3dpbmcgQUNLIGJ5IExh cnMgS3VydGggaXMgdG8gY29uZmlybSB0aGF0IG9ubHkgcGVvcGxlIGJlaW5nCj4gPiBlbXBsb3ll ZXMgb2YgQ2l0cml4IGNvbnRyaWJ1dGVkIHRvIHRoZSBoZWFkZXIgZmlsZXMgaW4gdGhlIHNlcmll cyBwb3N0ZWQgYXQKPiA+IFsxXSBhbmQgdGhhdCB0aHVzIHRoZSBjb3B5cmlnaHQgb2YgdGhlIGZp bGVzIGluIHF1ZXN0aW9uIGlzIGZ1bGx5IG93bmVkIGJ5Cj4gPiBDaXRyaXguIFRoZSBBQ0sgYWxz byBjb25maXJtcyB0aGF0IENpdHJpeCBpcyBoYXBweSBmb3IgdGhlIGhlYWRlciBmaWxlcyB0bwo+ ID4gYmUgcHVibGlzaGVkIHVuZGVyIGEgQlNEIGxpY2Vuc2UgaW4gdGhpcyBzZXJpZXMgKHdoaWNo IGlzIGJhc2VkIG9uIFsxXSkuCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xh cmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KPiA+IEFja2VkLWJ5OiBMYXJz IEt1cnRoIDxsYXJzLmt1cnRoQGNpdHJpeC5jb20+Cj4gPiAtLS0KPiA+IHYyIHJld3JpdGUgbG9j a2luZyBleHBsYW5hdGlvbiBjb21tZW50Cj4gPiB2MiBoZWFkZXIgY29weXJpZ2h0IGxpbmUgbm93 IGluY2x1ZGVzIDIwMTkKPiA+IHYyIHNlbGY6IHVzZSByaW5nX2luZm8gYmFja3BvaW50ZXIgaW4g cGVuZGluZ19lbnQgdG8gbWFpbnRhaW4gbnBlbmRpbmcKPiA+IHYyIHNlbGY6IHJlbmFtZSBhbGxf cmluZ3NfcmVtb3ZlX2luZm8gdG8gZG9tYWluX3JpbmdzX3JlbW92ZV9hbGwKPiA+IHYyIGZlZWRi YWNrIEphbjogZHJvcCBjb29raWUsIGltcGxlbWVudCB0ZWFyZG93bgo+ID4gdjIgc2VsZjogYWRk IG5wZW5kaW5nIHRvIHRyYWNrIG51bWJlciBvZiBwZW5kaW5nIGVudHJpZXMgcGVyIHJpbmcKPiA+ IHYyIHNlbGY6IGFtZW5kIGNvbW1lbnQgb24gbG9ja2luZzsgZHJvcCBzZWN0aW9uIGNvbW1lbnRz Cj4gPiB2MiBjb29raWVfZXE6IHRlc3QgbG93IGJpdHMgZmlyc3QgYW5kIHVzZSBsaWtlbHkgb24g aGlnaCBiaXRzCj4gPiB2MiBzZWxmOiBPVkVSSEFVTAo+ID4gdjIgc2VsZjogcy9hcmdvX3BlbmRp bmdfZW50L3BlbmRpbmdfZW50L2cKPiA+IHYyIHNlbGY6IGRyb3AgcGVuZGluZ19yZW1vdmVfZW50 LCBpbmxpbmUgYXQgc2luZ2xlIGNhbGwgc2l0ZQo+ID4gdjEgZmVlZGJhY2sgUm9nZXIsIEphbjog ZHJvcCBhcmdvIHByZWZpeCBvbiBzdGF0aWMgZnVuY3Rpb25zCj4gPiB2MiAjNCBMYXJzOiBhZGQg QWNrZWQtYnkgYW5kIGRldGFpbHMgdG8gY29tbWl0IG1lc3NhZ2UuCj4gPiB2MiBmZWVkYmFjayAj OSBKYW46IGRvY3VtZW50IGFyZ28gYm9vdCBvcHQgaW4geGVuLWNvbW1hbmQtbGluZS5tYXJrZG93 bgo+ID4gdjIgYnVnZml4OiB4c20gdXNlIGluIHNvZnQtcmVzZXQgcHJpb3IgdG8gaW50cm9kdWN0 aW9uCj4gPiB2MiBmZWVkYmFjayAjOSBKYW46IGRyb3AgJ21lc3NhZ2UnIGZyb20gZG9fYXJnb19t ZXNzYWdlX29wCj4gPiB2MSAjNSBmZWVkYmFjayBQYXVsOiBpbml0L2Rlc3Ryb3kgdW5zaWduZWQs IGJyYWNrZXRzIGFuZCB3aGl0ZXNwYWNlIGZpeGVzCj4gPiB2MSAjNSBmZWVkYmFjayBQYXVsOiBV c2UgbWZuX2VxIGZvciBjb21wYXJpbmcgbWZucy4KPiA+IHYxICM1IGZlZWRiYWNrIFBhdWw6IGlu aXQvZGVzdHJveSA6IHVzZSBjdXJyZAo+ID4gdjEgIzYgKCM1KSBmZWVkYmFjayBKYW46IGluaXQv ZGVzdHJveTogcy9FTk9TWVMvRU9QTk9UU1VQUC8KPiA+IHYxICM2IGZlZWRiYWNrIFBhdWw6IEZv bGRlZCBwYXRjaCA2IGludG8gcGF0Y2ggNS4KPiA+IHYxICM2IGZlZWRiYWNrIEphbjogZHJvcCBv cHRfYXJnb19lbmFibGVkIGluaXRpYWxpemVyCj4gPiB2MSAkNiBmZWVkYmFjayBKYW46IHMvRU5P U1lTL0VPUE5PVFNVUFAvZyBhbmQgZHJvcCB1c2VsZXNzIGRwcmludGsKPiA+IHYxLiAjNSBmZWVk YmFjayBQYXVsOiBjaGFuZ2UgdGhlIGxpY2Vuc2Ugb24gcHVibGljIGhlYWRlciB0byBCU0QKPiA+ IC0gYWNrIGZyb20gTGFycyBhdCBDaXRyaXguCj4gPiB2MS4gc2VsZiwgSmFuOiBkcm9wIHVubmVj ZXNzYXJ5IHhlbiBpbmNsdWRlIGZyb20gc2NoZWQuaAo+ID4gdjEuIHNlbGYsIEphbjogZHJvcCBp bmNsdXNpb24gb2YgcHVibGljIGFyZ28uaCBpbiBwcml2YXRlIG9uZQo+ID4gdjEuIHNlbGYsIEph bjogYWRkIGluY2x1ZGUgb2YgcHVibGljIGFyZ28uaCB0byBhcmdvLmMKPiA+IHYxLiBzZWxmLCBK YW46IGRyb3AgZndkIGRlY2wgb2YgYXJnb19kb21haW4gaW4gcHJpdiBoZWFkZXIKPiA+IHYxLiBQ YXVsL3NlbGYvSmFuOiBhZGQgZGF0YSBzdHJ1Y3R1cmVzIHRvIHhsYXQubHN0IGFuZCBjb21wYXQv YXJnby5oIHRvIE1ha2VmaWxlCj4gPiB2MS4gc2VsZjogcmVtb3ZlZCBhbGxvY2F0aW9uIG9mIGV2 ZW50IGNoYW5uZWwgc2luY2Ugc3dpdGNoaW5nIHRvIFZJUlEKPiA+IHYxLiBzZWxmOiBkcm9wIHR5 cGVzLmggaW5jbHVkZSBmcm9tIHByaXZhdGUgYXJnby5oCj4gPiB2MTogcmVvcmRlciBwdWJsaWMg YXJnbyBpbmNsdWRlIHBvc2l0aW9uCj4gPiB2MTogIzEzIGZlZWRiYWNrIEphbjogcHVibGljIG5h bWVzcGFjZTogcHJlZml4IHdpdGggeGVuCj4gPiB2MTogc2VsZjogcmVuYW1lIHBlbmRpbmcgZW50 ICJpZCIgdG8gImRvbWFpbl9pZCIKPiA+IHYxOiBzZWxmOiBhZGQgZG9tYWluX2Nvb2tpZSB0byBl bnQgc3RydWN0Cj4gPiB2MS4gIzE1IGZlZWRiYWNrIEphbjogbWFrZSBjbWQgdW5zaWduZWQKPiA+ IHYxLiAjMTUgZmVlZGJhY2sgSmFuOiBtYWtlIGkgbG9vcCB2YXJpYWJsZSB1bnNpZ25lZAo+ID4g djE6IHNlbGY6IGFkanVzdCBkcHJpbnRrcyBpbiBpbml0LCBkZXN0cm95Cj4gPiB2MTogIzE4IGZl ZWRiYWNrIEphbjogbWVsZCBtYXggcmluZyBjb3VudCBsaW1pdAo+ID4gdjE6IHNlbGY6IHVzZSB0 eXBlIG5vdCBzdHJ1Y3QgaW4gcHVibGljIGRlZm4sIGFmZmVjdHMgY29tcGF0IGdlbiBoZWFkZXIK PiA+IHYxOiBmZWVkYmFjayAjMTUgSmFuOiBoYW5kbGUgdXBwZXItaGFsdmVzIG9mIGh5cGVyY2Fs bCBhcmdzCj4gPiB2MTogYWRkIGNvbW1lbnQgZXhwbGFpbmluZyB0aGUgJ21hZ2ljJyBmaWVsZAo+ ID4gdjE6IHNlbGYgKyBKYW4gZmVlZGJhY2s6IGltcGxlbWVudCBzb2Z0IHJlc2V0Cj4gPiB2MTog ZmVlZGJhY2sgIzEzIFJvZ2VyOiB1c2UgQVNTRVJUX1VOUkVBQ0hBQkxFCj4gPgo+ID4gIGRvY3Mv bWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyB8ICAxMSArCj4gPiAgeGVuL2NvbW1vbi9hcmdv LmMgICAgICAgICAgICAgICAgIHwgNDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCj4gPiAgeGVuL2NvbW1vbi9kb21haW4uYyAgICAgICAgICAgICAgIHwgIDIwICsrCj4g PiAgeGVuL2luY2x1ZGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsKPiA+ICB4ZW4vaW5j bHVkZS9wdWJsaWMvYXJnby5oICAgICAgICAgfCAgNTkgKysrKysKPiA+ICB4ZW4vaW5jbHVkZS94 ZW4vYXJnby5oICAgICAgICAgICAgfCAgMjMgKysKPiA+ICB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQu aCAgICAgICAgICAgfCAgIDYgKwo+ID4gIHhlbi9pbmNsdWRlL3hsYXQubHN0ICAgICAgICAgICAg ICB8ICAgMiArCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA1ODIgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5o Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9hcmdvLmgKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jIGIvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUucGFuZG9jCj4gPiBpbmRleCBhNzU1YTY3Li5hZWExM2ViIDEwMDY0 NAo+ID4gLS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jCj4gPiArKysgYi9k b2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5wYW5kb2MKPiA+IEBAIC0xODIsNiArMTgyLDE3IEBA IFBlcm1pdCBYZW4gdG8gdXNlICJBbHdheXMgUnVubmluZyBBUElDIFRpbWVyIiBzdXBwb3J0IG9u IGNvbXBhdGlibGUgaGFyZHdhcmUKPiA+ICBpbiBjb21iaW5hdGlvbiB3aXRoIGNwdWlkbGUuICBU aGlzIG9wdGlvbiBpcyBvbmx5IGV4cGVjdGVkIHRvIGJlIHVzZWZ1bCBmb3IKPiA+ICBkZXZlbG9w ZXJzIHdpc2hpbmcgWGVuIHRvIGZhbGwgYmFjayB0byBvbGRlciB0aW1pbmcgbWV0aG9kcyBvbiBu ZXdlciBoYXJkd2FyZS4KPiA+Cj4gPiArIyMjIGFyZ28KPiA+ICs+IGA9IDxib29sZWFuPmAKPiA+ ICsKPiA+ICs+IERlZmF1bHQ6IGBmYWxzZWAKPiA+ICsKPiA+ICtFbmFibGUgdGhlIEFyZ28gaHlw ZXJ2aXNvci1tZWRpYXRlZCBpbnRlcmRvbWFpbiBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbS4KPiA+ ICsKPiA+ICtUaGlzIGFsbG93cyBkb21haW5zIGFjY2VzcyB0byB0aGUgQXJnbyBoeXBlcmNhbGws IHdoaWNoIHN1cHBvcnRzIHJlZ2lzdHJhdGlvbgo+ID4gK29mIG1lbW9yeSByaW5ncyB3aXRoIHRo ZSBoeXBlcnZpc29yIHRvIHJlY2VpdmUgbWVzc2FnZXMsIHNlbmRpbmcgbWVzc2FnZXMgdG8KPiA+ ICtvdGhlciBkb21haW5zIGJ5IGh5cGVyY2FsbCBhbmQgcXVlcnlpbmcgdGhlIHJpbmcgc3RhdHVz IG9mIG90aGVyIGRvbWFpbnMuCj4gPiArCj4KPiBEbyB3ZSB3YW50IHRvIHNheSBpdCdzIG9ubHkg YXZhaWxhYmxlIHdoZW4gWGVuIGlzIGNvbXBpbGVkIHdpdGggQ09ORklHX0FSR08/CgpJdCdzIGEg ZmFpciBxdWVzdGlvbiBhbmQgSSBjYW4gcmVzcGluIHdpdGggdGhhdCBhZGRlZCwgaWYgbmVlZGVk LgpIb3dldmVyLCB0aGVyZSBhcmUgb3RoZXIgYm9vdCBvcHRpb25zIHRoYXQgYXJlIGRlcGVuZGVu dCBvbiBLQ09ORklHCm9wdGlvbnMgdGhhdCBkb24ndCBtYWtlIHN1Y2ggYSBzdGF0ZW1lbnQgKGFs dHAybSwgZWZpLCBlcHQsIGZsYXNrLApoYXJkd2FyZV9kb20sIHRtZW0sIC4uLiksIHNvIEknbSBu b3Qgc3VyZSBpZiBpdCBpcyByZXF1aXJlZC4KCgo+Cj4gPiAgIyMjIGFzaWQgKHg4NikKPiA+ICA+ IGA9IDxib29sZWFuPmAKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9hcmdvLmMgYi94 ZW4vY29tbW9uL2FyZ28uYwo+ID4gaW5kZXggNmY3ODJmNy4uODYxOTVkMyAxMDA2NDQKPiA+IC0t LSBhL3hlbi9jb21tb24vYXJnby5jCj4gPiArKysgYi94ZW4vY29tbW9uL2FyZ28uYwo+ID4gQEAg LTE3LDcgKzE3LDE3NyBAQAo+ID4gICAqLwo+ID4KPiA+ICAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+ Cj4gPiArI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgo+ID4gKyNpbmNsdWRlIDx4ZW4vZG9tYWluLmg+ Cj4gPiArI2luY2x1ZGUgPHhlbi9hcmdvLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9ldmVudC5oPgo+ ID4gKyNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KPiA+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0 X2FjY2Vzcy5oPgo+ID4gKyNpbmNsdWRlIDx4ZW4vdGltZS5oPgo+ID4gKyNpbmNsdWRlIDxwdWJs aWMvYXJnby5oPgo+ID4gKwo+ID4gK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX2Fk ZHJfdCk7Cj4gPiArREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ190KTsKPiA+ ICsKPiA+ICsvKiBYZW4gY29tbWFuZCBsaW5lIG9wdGlvbiB0byBlbmFibGUgYXJnbyAqLwo+ID4g K3N0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgb3B0X2FyZ29fZW5hYmxlZDsKPiA+ICtib29sZWFu X3BhcmFtKCJhcmdvIiwgb3B0X2FyZ29fZW5hYmxlZCk7Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1 Y3QgYXJnb19yaW5nX2lkCj4gPiArewo+ID4gKyAgICB1aW50MzJfdCBwb3J0Owo+ID4gKyAgICBk b21pZF90IHBhcnRuZXJfaWQ7Cj4gPiArICAgIGRvbWlkX3QgZG9tYWluX2lkOwo+ID4gK30gYXJn b19yaW5nX2lkOwo+ID4gKwo+ID4gKy8qIERhdGEgYWJvdXQgYSBkb21haW4ncyBvd24gcmluZyB0 aGF0IGl0IGhhcyByZWdpc3RlcmVkICovCj4gPiArc3RydWN0IGFyZ29fcmluZ19pbmZvCj4gPiAr ewo+ID4gKyAgICAvKiBuZXh0IG5vZGUgaW4gdGhlIGhhc2gsIHByb3RlY3RlZCBieSBMMiAqLwo+ ID4gKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOwo+ID4gKyAgICAvKiB0aGlzIHJpbmcncyBp ZCwgcHJvdGVjdGVkIGJ5IEwyICovCj4gPiArICAgIHN0cnVjdCBhcmdvX3JpbmdfaWQgaWQ7Cj4g PiArICAgIC8qIEwzICovCj4gPiArICAgIHNwaW5sb2NrX3QgbG9jazsKPiA+ICsgICAgLyogbGVu Z3RoIG9mIHRoZSByaW5nLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiA+ICsgICAgdWludDMyX3QgbGVu Owo+ID4gKyAgICAvKiBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIHJpbmcsIHByb3RlY3RlZCBieSBM MyAqLwo+ID4gKyAgICB1aW50MzJfdCBucGFnZTsKPiA+ICsgICAgLyogbnVtYmVyIG9mIHBhZ2Vz IHRyYW5zbGF0ZWQgaW50byBtZm5zLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiA+ICsgICAgdWludDMy X3Qgbm1mbnM7Cj4gPiArICAgIC8qIGNhY2hlZCB0eCBwb2ludGVyIGxvY2F0aW9uLCBwcm90ZWN0 ZWQgYnkgTDMgKi8KPiA+ICsgICAgdWludDMyX3QgdHhfcHRyOwo+ID4gKyAgICAvKiBtYXBwZWQg cmluZyBwYWdlcyBwcm90ZWN0ZWQgYnkgTDMgKi8KPiA+ICsgICAgdWludDhfdCAqKm1mbl9tYXBw aW5nOwo+ID4gKyAgICAvKiBsaXN0IG9mIG1mbnMgb2YgZ3Vlc3QgcmluZywgcHJvdGVjdGVkIGJ5 IEwzICovCj4gPiArICAgIG1mbl90ICptZm5zOwo+ID4gKyAgICAvKiBsaXN0IG9mIHN0cnVjdCBw ZW5kaW5nX2VudCBmb3IgdGhpcyByaW5nLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiA+ICsgICAgc3Ry dWN0IGhsaXN0X2hlYWQgcGVuZGluZzsKPiA+ICsgICAgLyogbnVtYmVyIG9mIHBlbmRpbmcgZW50 cmllcyBxdWV1ZWQgZm9yIHRoaXMgcmluZywgcHJvdGVjdGVkIGJ5IEwzICovCj4gPiArICAgIHVp bnQzMl90IG5wZW5kaW5nOwo+ID4gK307Cj4gPiArCj4gPiArLyogRGF0YSBhYm91dCBhIHNpbmds ZS1zZW5kZXIgcmluZywgaGVsZCBieSB0aGUgc2VuZGVyIChwYXJ0bmVyKSBkb21haW4gKi8KPiA+ ICtzdHJ1Y3QgYXJnb19zZW5kX2luZm8KPiA+ICt7Cj4gPiArICAgIC8qIG5leHQgbm9kZSBpbiB0 aGUgaGFzaCwgcHJvdGVjdGVkIGJ5IExzZW5kICovCj4gPiArICAgIHN0cnVjdCBobGlzdF9ub2Rl IG5vZGU7Cj4gPiArICAgIC8qIHRoaXMgcmluZydzIGlkLCBwcm90ZWN0ZWQgYnkgTHNlbmQgKi8K PiA+ICsgICAgc3RydWN0IGFyZ29fcmluZ19pZCBpZDsKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIEEg c3BhY2UtYXZhaWxhYmxlIG5vdGlmaWNhdGlvbiB0aGF0IGlzIGF3YWl0aW5nIHN1ZmZpY2llbnQg c3BhY2UgKi8KPiA+ICtzdHJ1Y3QgcGVuZGluZ19lbnQKPiA+ICt7Cj4gPiArICAgIC8qIExpc3Qg bm9kZSB3aXRoaW4gYXJnb19yaW5nX2luZm8ncyBwZW5kaW5nIGxpc3QgKi8KPiA+ICsgICAgc3Ry dWN0IGhsaXN0X25vZGUgbm9kZTsKPiA+ICsgICAgLyoKPiA+ICsgICAgICogTGlzdCBub2RlIHdp dGhpbiBhcmdvX2RvbWFpbidzIHdpbGRjYXJkX3BlbmRfbGlzdC4gT25seSB1c2VkIGlmIHRoZQo+ ID4gKyAgICAgKiByaW5nIGlzIG9uZSB3aXRoIGEgd2lsZGNhcmQgcGFydG5lciAoaWUuIHRoYXQg YW55IGRvbWFpbiBtYXkgc2VuZCB0bykKPiA+ICsgICAgICogdG8gZW5hYmxlIGNhbmNlbGxpbmcg c2lnbmFscyBvbiB3aWxkY2FyZCByaW5ncyBvbiBkb21haW4gZGVzdHJveS4KPiA+ICsgICAgICov Cj4gPiArICAgIHN0cnVjdCBobGlzdF9ub2RlIHdpbGRjYXJkX25vZGU7Cj4gPiArICAgIC8qCj4g PiArICAgICAqIFBvaW50ZXIgdG8gdGhlIHJpbmdfaW5mbyB0aGF0IHRoaXMgZW50IHBlcnRhaW5z IHRvLiBVc2VkIHRvIGVuc3VyZSB0aGF0Cj4gPiArICAgICAqIHJpbmdfaW5mby0+bnBlbmRpbmcg aXMgZGVjcmVtZW50ZWQgd2hlbiBlbnRzIGZvciB3aWxkY2FyZCByaW5ncyBhcmUKPiA+ICsgICAg ICogY2FuY2VsbGVkIGZvciBkb21haW4gZGVzdHJveS4KPiA+ICsgICAgICogQ2F1dGlvbjogTXVz dCBob2xkIHRoZSBjb3JyZWN0IGxvY2tzIGJlZm9yZSBhY2Nlc3NpbmcgcmluZ19pbmZvIHZpYSB0 aGlzLgo+Cj4gSXQgd291bGQgYmUgY2xlYXJlciBpZiB0aGlzIHN0YXRlZCB0aGUgY29ycmVjdCBs b2Nrcy4KCm9rIC0gaXQgd291bGQgbWVhbiBkdXBsaWNhdGluZyB0aGUgc3RhdGVtZW50IGFib3V0 IHdoaWNoIGxvY2tzIGFyZQpuZWVkZWQgdGhvdWdoLCBzaW5jZSBpdCBpcyBleHBsYWluZWQgZWxz ZXdoZXJlIGluIHRoZSBmaWxlLCB3aGljaCBtZWFucwppdCB3aWxsIG5lZWQgdXBkYXRpbmcgaW4g dHdvIHBsYWNlcyBpZiB0aGUgbG9ja2luZyByZXF1aXJlbWVudHMgY2hhbmdlLgpUaGF0IHdhcyB3 aHkgSSB3b3JkZWQgaXQgdGhhdCB3YXksIGFzIGFuIGluZGljYXRvciB0byBnbyBhbmQgZmluZCB3 aGVyZQppdCBpcyBhbHJlYWR5IGRlc2NyaWJlZCwgdG8gYXZvaWQgdGhhdC4KCgo+Cj4gPiArICAg ICAqLwo+ID4gKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKPiA+ICsgICAg LyogZG9tYWluIHRvIGJlIG5vdGlmaWVkIHdoZW4gc3BhY2UgaXMgYXZhaWxhYmxlICovCj4gPiAr ICAgIGRvbWlkX3QgZG9tYWluX2lkOwo+ID4gKyAgICB1aW50MTZfdCBwYWQ7Cj4KPiBDYW4gd2Ug b3JkZXIgZG9tYWluX2lkIGFmdGVyIGxlbiBhbmQgZHJvcCB0aGUgcGFkPwoKSSdtIG5vdCBzdXJl IHRoYXQgd291bGQgYmUgcmlnaHQgdG8gZG8gdGhhdC4gSSB0aGluayB0aGF0IHRoZSBwYWQKZW5z dXJlcyB0aGF0IGxlbiBpcyB3b3JkIGFsaWduZWQgdG8gMzItYml0IGJvdW5kYXJ5LiAgSSB3YXMg YXNrZWQgdG8KaW5zZXJ0IGEgcGFkIGZpZWxkIGZvciBzdWNoIGEgc3RydWN0IGxpa2UgdGhpcyBp biBhbiBlYXJsaWVyIHJldmlldyBoZXJlOgoKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9h cmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE4LTEyL21zZzAwMjM5Lmh0bWwKCj4KPiA+ICsgICAg LyogbWluaW11bSByaW5nIHNwYWNlIGF2YWlsYWJsZSB0aGF0IHRoaXMgc2lnbmFsIGlzIHdhaXRp bmcgdXBvbiAqLwo+ID4gKyAgICB1aW50MzJfdCBsZW47Cj4gPiArfTsKPiA+ICsKPiA+ICsvKgo+ ID4gKyAqIFRoZSB2YWx1ZSBvZiB0aGUgYXJnbyBlbGVtZW50IGluIGEgc3RydWN0IGRvbWFpbiBp cwo+ID4gKyAqIHByb3RlY3RlZCBieSB0aGUgZ2xvYmFsIGxvY2sgYXJnb19sb2NrOiBMMQo+ID4g KyAqLwo+ID4gKyNkZWZpbmUgQVJHT19IVEFCTEVfU0laRSAzMgo+ID4gK3N0cnVjdCBhcmdvX2Rv bWFpbgo+ID4gK3sKPiA+ICsgICAgLyogTDIgKi8KPiA+ICsgICAgcndsb2NrX3QgbG9jazsKPiA+ ICsgICAgLyoKPiA+ICsgICAgICogSGFzaCB0YWJsZSBvZiBhcmdvX3JpbmdfaW5mbyBhYm91dCBy aW5ncyB0aGlzIGRvbWFpbiBoYXMgcmVnaXN0ZXJlZC4KPiA+ICsgICAgICogUHJvdGVjdGVkIGJ5 IEwyLgo+ID4gKyAgICAgKi8KPiA+ICsgICAgc3RydWN0IGhsaXN0X2hlYWQgcmluZ19oYXNoW0FS R09fSFRBQkxFX1NJWkVdOwo+ID4gKyAgICAvKiBDb3VudGVyIG9mIHJpbmdzIHJlZ2lzdGVyZWQg YnkgdGhpcyBkb21haW4uIFByb3RlY3RlZCBieSBMMi4gKi8KPiA+ICsgICAgdWludDMyX3Qgcmlu Z19jb3VudDsKPiA+ICsKPiA+ICsgICAgLyogTHNlbmQgKi8KPiA+ICsgICAgc3BpbmxvY2tfdCBz ZW5kX2xvY2s7Cj4gPiArICAgIC8qCj4gPiArICAgICAqIEhhc2ggdGFibGUgb2YgYXJnb19zZW5k X2luZm8gYWJvdXQgcmluZ3Mgb3RoZXIgZG9tYWlucyBoYXZlIHJlZ2lzdGVyZWQKPiA+ICsgICAg ICogZm9yIHRoaXMgZG9tYWluIHRvIHNlbmQgdG8uIFNpbmdsZSBwYXJ0bmVyLCBub24td2lsZGNh cmQgcmluZ3MuCj4gPiArICAgICAqIFByb3RlY3RlZCBieSBMc2VuZC4KPiA+ICsgICAgICovCj4g PiArICAgIHN0cnVjdCBobGlzdF9oZWFkIHNlbmRfaGFzaFtBUkdPX0hUQUJMRV9TSVpFXTsKPiA+ ICsKPiA+ICsgICAgLyogTHdpbGRjYXJkICovCj4gPiArICAgIHNwaW5sb2NrX3Qgd2lsZGNhcmRf bG9jazsKPiA+ICsgICAgLyoKPiA+ICsgICAgICogTGlzdCBvZiBwZW5kaW5nIHNwYWNlLWF2YWls YWJsZSBzaWduYWxzIGZvciB0aGlzIGRvbWFpbiBhYm91dCB3aWxkY2FyZAo+ID4gKyAgICAgKiBy aW5ncyByZWdpc3RlcmVkIGJ5IG90aGVyIGRvbWFpbnMuIFByb3RlY3RlZCBieSBMd2lsZGNhcmQu Cj4gPiArICAgICAqLwo+ID4gKyAgICBzdHJ1Y3QgaGxpc3RfaGVhZCB3aWxkY2FyZF9wZW5kX2xp c3Q7Cj4gPiArfTsKPiA+ICsKPiA+ICsvKgo+ID4gKyAqIExvY2tpbmcgaXMgb3JnYW5pemVkIGFz IGZvbGxvd3M6Cj4gPiArICoKPiA+ICsgKiBUZXJtaW5vbG9neTogUig8bG9jaz4pIG1lYW5zIHRh a2luZyBhIHJlYWQgbG9jayBvbiB0aGUgc3BlY2lmaWVkIGxvY2s7Cj4gPiArICogICAgICAgICAg ICAgIFcoPGxvY2s+KSBtZWFucyB0YWtpbmcgYSB3cml0ZSBsb2NrIG9uIGl0Lgo+ID4gKyAqCj4g PiArICogTDEgOiBUaGUgZ2xvYmFsIGxvY2s6IGFyZ29fbG9jawo+ID4gKyAqIFByb3RlY3RzIHRo ZSBhcmdvIGVsZW1lbnRzIG9mIGFsbCBzdHJ1Y3QgZG9tYWluICpkIGluIHRoZSBzeXN0ZW0uCj4g PiArICogSXQgZG9lcyBub3QgcHJvdGVjdCBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mIGQtPmFyZ28s IG9ubHkgdGhlaXIKPiA+ICsgKiBhZGRyZXNzZXMuCj4gPiArICoKPiA+ICsgKiBCeSBleHRlbnNp b24gc2luY2UgdGhlIGRlc3RydWN0aW9uIG9mIGEgZG9tYWluIHdpdGggYSBub24tTlVMTAo+ID4g KyAqIGQtPmFyZ28gd2lsbCBuZWVkIHRvIGZyZWUgdGhlIGQtPmFyZ28gcG9pbnRlciwgaG9sZGlu ZyBXKEwxKQo+ID4gKyAqIGd1YXJhbnRlZXMgdGhhdCBubyBkb21haW5zIHBvaW50ZXJzIHRoYXQg YXJnbyBpcyBpbnRlcmVzdGVkIGluCj4gPiArICogYmVjb21lIGludmFsaWQgd2hpbHN0IHRoaXMg bG9jayBpcyBoZWxkLgo+ID4gKyAqLwo+ID4gKwo+ID4gK3N0YXRpYyBERUZJTkVfUldMT0NLKGFy Z29fbG9jayk7IC8qIEwxICovCj4gPiArCj4gPiArLyoKPiA+ICsgKiBMMiA6IFRoZSBwZXItZG9t YWluIHJpbmcgaGFzaCBsb2NrOiBkLT5hcmdvLT5sb2NrCj4gPiArICogSG9sZGluZyBhIHJlYWQg bG9jayBvbiBMMiBwcm90ZWN0cyB0aGUgcmluZyBoYXNoIHRhYmxlIGFuZAo+ID4gKyAqIHRoZSBl bGVtZW50cyBpbiB0aGUgaGFzaF90YWJsZSBkLT5hcmdvLT5yaW5nX2hhc2gsIGFuZAo+ID4gKyAq IHRoZSBub2RlIGFuZCBpZCBmaWVsZHMgaW4gc3RydWN0IGFyZ29fcmluZ19pbmZvIGluIHRoZQo+ ID4gKyAqIGhhc2ggdGFibGUuCj4gPiArICogSG9sZGluZyBhIHdyaXRlIGxvY2sgb24gTDIgcHJv dGVjdHMgYWxsIG9mIHRoZSBlbGVtZW50cyBvZgo+ID4gKyAqIHN0cnVjdCBhcmdvX3JpbmdfaW5m by4KPiA+ICsgKgo+ID4gKyAqIFRvIHRha2UgTDIgeW91IG11c3QgYWxyZWFkeSBoYXZlIFIoTDEp LiBXKEwxKSBpbXBsaWVzIFcoTDIpIGFuZCBMMy4KPiA+ICsgKgo+ID4gKyAqIEwzIDogVGhlIHJp bmdpbmZvIGxvY2s6IGFyZ29fcmluZ19pbmZvICpyaW5naW5mbzsgcmluZ2luZm8tPmxvY2sKPiA+ ICsgKiBQcm90ZWN0cyBhbGwgdGhlIGZpZWxkcyB3aXRoaW4gdGhlIGFyZ29fcmluZ19pbmZvLCBh c2lkZSBmcm9tIHRoZSBvbmVzIHRoYXQKPiA+ICsgKiBMMiBhbHJlYWR5IHByb3RlY3RzOiBub2Rl LCBpZCwgbG9jay4KPiA+ICsgKgo+ID4gKyAqIFRvIGFxdWlyZSBMMyB5b3UgbXVzdCBhbHJlYWR5 IGhhdmUgUihMMikuIFcoTDIpIGltcGxpZXMgTDMuCj4gPiArICoKPiA+ICsgKiBMc2VuZCA6IFRo ZSBwZXItZG9tYWluIHNpbmdsZS1zZW5kZXIgcGFydG5lciByaW5ncyBsb2NrOiBkLT5hcmdvLT5z ZW5kX2xvY2sKPiA+ICsgKiBQcm90ZWN0cyB0aGUgcGVyLWRvbWFpbiBzZW5kIGhhc2ggdGFibGUg OiBkLT5hcmdvLT5zZW5kX2hhc2gKPiA+ICsgKiBhbmQgdGhlIGVsZW1lbnRzIGluIHRoZSBoYXNo IHRhYmxlLCBhbmQgdGhlIG5vZGUgYW5kIGlkIGZpZWxkcwo+ID4gKyAqIGluIHN0cnVjdCBhcmdv X3NlbmRfaW5mbyBpbiB0aGUgaGFzaCB0YWJsZS4KPiA+ICsgKgo+ID4gKyAqIFRvIHRha2UgTHNl bmQsIHlvdSBtdXN0IGFscmVhZHkgaGF2ZSBSKEwxKS4gVyhMMSkgaW1wbGllcyBMc2VuZC4KPiA+ ICsgKiBEbyBub3QgYXR0ZW1wdCB0byBhY3F1aXJlIGEgTDIgb24gYW55IGRvbWFpbiBhZnRlciB0 YWtpbmcgYW5kIHdoaWxlCj4gPiArICogaG9sZGluZyBhIExzZW5kIGxvY2sgLS0gYWNxdWlyZSB0 aGUgTDIgKGlmIG9uZSBpcyBuZWVkZWQpIGJlZm9yZWhhbmQuCj4gPiArICoKPiA+ICsgKiBMd2ls ZGNhcmQgOiBUaGUgcGVyLWRvbWFpbiB3aWxkY2FyZCBwZW5kaW5nIGxpc3QgbG9jazogZC0+YXJn by0+d2lsZGNhcmRfbG9jawo+ID4gKyAqIFByb3RlY3RzIHRoZSBwZXItZG9tYWluIGxpc3Qgb2Yg b3V0c3RhbmRpbmcgc2lnbmFscyBmb3Igc3BhY2UgYXZhaWxhYmlsaXR5Cj4gPiArICogb24gd2ls ZGNhcmQgcmluZ3MuCj4gPiArICoKPiA+ICsgKiBUbyB0YWtlIEx3aWxkY2FyZCwgeW91IG11c3Qg YWxyZWFkeSBoYXZlIFIoTDEpLiBXKEwxKSBpbXBsaWVzIEx3aWxkY2FyZC4KPiA+ICsgKiBObyBv dGhlciBsb2NrcyBhcmUgYWNxdWlyZWQgYWZ0ZXIgb2J0YWluaW5nIEx3aWxkY2FyZC4KPiA+ICsg Ki8KPiA+Cj4gPiAgLyogQ2hhbmdlIHRoaXMgdG8gI2RlZmluZSBBUkdPX0RFQlVHIGhlcmUgdG8g ZW5hYmxlIG1vcmUgZGVidWcgbWVzc2FnZXMgKi8KPiA+ICAjdW5kZWYgQVJHT19ERUJVRwo+ID4g QEAgLTI4LDEwICsxOTgsMjk5IEBACj4gPiAgI2RlZmluZSBhcmdvX2RwcmludGsoZm9ybWF0LCAu Li4gKSAoKHZvaWQpMCkKPiA+ICAjZW5kaWYKPiA+Cj4gPiArc3RhdGljIHZvaWQKPiA+ICtyaW5n X3VubWFwKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQo+ID4gK3sKPiA+ICsgICAg dW5zaWduZWQgaW50IGk7Cj4gPiArCj4gPiArICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBp bmcgKQo+ID4gKyAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8 IHJpbmdfaW5mby0+bm1mbnM7IGkrKyApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGlmICggIXJp bmdfaW5mby0+bWZuX21hcHBpbmdbaV0gKQo+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4g KyAgICAgICAgaWYgKCByaW5nX2luZm8tPm1mbnMgKQo+ID4gKyAgICAgICAgICAgIGFyZ29fZHBy aW50ayhYRU5MT0dfRVJSICJhcmdvOiB1bm1hcHBpbmcgcGFnZSAlIlBSSV9tZm4iIGZyb20gJXBc biIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KHJpbmdfaW5mby0+bWZuc1tp XSksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+bWZuX21hcHBpbmdb aV0pOwo+ID4gKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHJpbmdfaW5mby0+bWZu X21hcHBpbmdbaV0pOwo+ID4gKyAgICAgICAgcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSA9IE5V TEw7Cj4gPiArICAgIH0KPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQKPiA+ICt3aWxkY2Fy ZF9wZW5kaW5nX2xpc3RfcmVtb3ZlKGRvbWlkX3QgZG9tYWluX2lkLCBzdHJ1Y3QgcGVuZGluZ19l bnQgKmVudCkKPiA+ICt7Cj4gPiArICAgIHN0cnVjdCBkb21haW4gKmQgPSBnZXRfZG9tYWluX2J5 X2lkKGRvbWFpbl9pZCk7Cj4gPiArICAgIGlmICggIWQgKQo+ID4gKyAgICAgICAgcmV0dXJuOwo+ ID4gKwo+ID4gKyAgICBpZiAoIGQtPmFyZ28gKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBzcGlu X2xvY2soJmQtPmFyZ28tPndpbGRjYXJkX2xvY2spOwo+ID4gKyAgICAgICAgaGxpc3RfZGVsKCZl bnQtPndpbGRjYXJkX25vZGUpOwo+ID4gKyAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFyZ28tPndp bGRjYXJkX2xvY2spOwo+ID4gKyAgICB9Cj4gPiArICAgIHB1dF9kb21haW4oZCk7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArcGVuZGluZ19yZW1vdmVfYWxsKHN0cnVjdCBhcmdv X3JpbmdfaW5mbyAqcmluZ19pbmZvKQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGhsaXN0X25vZGUg Km5vZGUsICpuZXh0Owo+ID4gKyAgICBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVudDsKPiA+ICsKPiA+ ICsgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5vZGUsIG5leHQsICZyaW5nX2lu Zm8tPnBlbmRpbmcsIG5vZGUpCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGlmICggcmluZ19pbmZv LT5pZC5wYXJ0bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCj4gPiArICAgICAgICAgICAg d2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShlbnQtPmRvbWFpbl9pZCwgZW50KTsKPiA+ICsg ICAgICAgIGhsaXN0X2RlbCgmZW50LT5ub2RlKTsKPiA+ICsgICAgICAgIHhmcmVlKGVudCk7Cj4g PiArICAgIH0KPiA+ICsgICAgcmluZ19pbmZvLT5ucGVuZGluZyA9IDA7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyB2b2lkCj4gPiArd2lsZGNhcmRfcmluZ3NfcGVuZGluZ19yZW1vdmUoc3RydWN0 IGRvbWFpbiAqZCkKPiA+ICt7Cj4gPiArICAgIHN0cnVjdCBobGlzdF9ub2RlICpub2RlLCAqbmV4 dDsKPiA+ICsgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQ7Cj4gPiArCj4gPiArICAgIEFTU0VS VChyd19pc193cml0ZV9sb2NrZWQoJmFyZ29fbG9jaykpOwo+ID4gKwo+ID4gKyAgICBobGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGVudCwgbm9kZSwgbmV4dCwgJmQtPmFyZ28tPndpbGRjYXJkX3Bl bmRfbGlzdCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlKQo+ID4gKyAg ICB7Cj4gPiArICAgICAgICBobGlzdF9kZWwoJmVudC0+bm9kZSk7Cj4gPiArICAgICAgICBlbnQt PnJpbmdfaW5mby0+bnBlbmRpbmctLTsKPiA+ICsgICAgICAgIGhsaXN0X2RlbCgmZW50LT53aWxk Y2FyZF9ub2RlKTsKPiA+ICsgICAgICAgIHhmcmVlKGVudCk7Cj4gPiArICAgIH0KPiA+ICt9Cj4g PiArCj4KPiBNYXliZSBtb3ZlIHJpbmdfdW5tYXAoKSBoZXJlIHNvIGl0J3MgY2xvc2VyIHRvIHdo ZXJlIGl0IGlzIHVzZWQ/CgpJJ20gZmluZSB3aXRoIG1vdmluZyBpdCBpZiBpdCBuZWVkcyBpdCwg YnV0IGl0J3MgbG9jYXRlZCB3aGVyZSBpdCBpcyBpbgpvcmRlciB0byBwdXQgaXQgcmlnaHQgbmV4 dCB0byB0aGUgY29ycmVzcG9uZGluZyByaW5nX21hcF9wYWdlIGZ1bmN0aW9uIC0KdGhlIHR3byBh cmUgcGFpcmVkIHJlYWxseSwgd2l0aCBvbmUgZG9pbmcgbWFwX2RvbWFpbl9wYWdlX2dsb2JhbCBh bmQgdGhlCm90aGVyIHVuZG9pbmcgaXQgd2l0aCB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwuIFRo YXQncyBob3cgaXQgZW5kcyB1cAp3aGVuIHRoZSBmdWxsIHNlcmllcyBpcyBhcHBsaWVkLgoKPgo+ ID4gK3N0YXRpYyB2b2lkCj4gPiArcmluZ19yZW1vdmVfbWZucyhjb25zdCBzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKPiA+ICt7Cj4gPiArICAgIHVu c2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZk LT5hcmdvLT5sb2NrKSB8fAo+ID4gKyAgICAgICAgICAgcndfaXNfd3JpdGVfbG9ja2VkKCZhcmdv X2xvY2spKTsKPiA+ICsKPiA+ICsgICAgaWYgKCAhcmluZ19pbmZvLT5tZm5zICkKPiA+ICsgICAg ICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgaWYgKCAhcmluZ19pbmZvLT5tZm5fbWFwcGluZyAp Cj4gPiArICAgIHsKPiA+ICsgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOwo+ID4gKyAgICAg ICAgcmV0dXJuOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJpbmdfdW5tYXAocmluZ19pbmZv KTsKPiA+ICsKPiA+ICsgICAgZm9yICggaSA9IDA7IGkgPCByaW5nX2luZm8tPm5tZm5zOyBpKysg KQo+ID4gKyAgICAgICAgaWYgKCAhbWZuX2VxKHJpbmdfaW5mby0+bWZuc1tpXSwgSU5WQUxJRF9N Rk4pICkKPiA+ICsgICAgICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShyaW5n X2luZm8tPm1mbnNbaV0pKTsKPiA+ICsKPiA+ICsgICAgeGZyZWUocmluZ19pbmZvLT5tZm5zKTsK PiA+ICsgICAgcmluZ19pbmZvLT5tZm5zID0gTlVMTDsKPiA+ICsgICAgcmluZ19pbmZvLT5ucGFn ZSA9IDA7Cj4gPiArICAgIHhmcmVlKHJpbmdfaW5mby0+bWZuX21hcHBpbmcpOwo+ID4gKyAgICBy aW5nX2luZm8tPm1mbl9tYXBwaW5nID0gTlVMTDsKPiA+ICsgICAgcmluZ19pbmZvLT5ubWZucyA9 IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArcmluZ19yZW1vdmVfaW5mbyhz dHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKPiA+ICt7 Cj4gPiArICAgIEFTU0VSVChyd19pc193cml0ZV9sb2NrZWQoJmQtPmFyZ28tPmxvY2spIHx8Cj4g PiArICAgICAgICAgICByd19pc193cml0ZV9sb2NrZWQoJmFyZ29fbG9jaykpOwo+ID4gKwo+ID4g KyAgICBwZW5kaW5nX3JlbW92ZV9hbGwocmluZ19pbmZvKTsKPiA+ICsgICAgaGxpc3RfZGVsKCZy aW5nX2luZm8tPm5vZGUpOwo+ID4gKyAgICByaW5nX3JlbW92ZV9tZm5zKGQsIHJpbmdfaW5mbyk7 Cj4gPiArICAgIHhmcmVlKHJpbmdfaW5mbyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk Cj4gPiArZG9tYWluX3JpbmdzX3JlbW92ZV9hbGwoc3RydWN0IGRvbWFpbiAqZCkKPiA+ICt7Cj4g PiArICAgIHVuc2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFS R09fSFRBQkxFX1NJWkU7ICsraSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHN0cnVjdCBobGlz dF9ub2RlICpub2RlLCAqbmV4dDsKPiA+ICsgICAgICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAq cmluZ19pbmZvOwo+ID4gKwo+ID4gKyAgICAgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShy aW5nX2luZm8sIG5vZGUsIG5leHQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZkLT5hcmdvLT5yaW5nX2hhc2hbaV0sIG5vZGUpCj4gPiArICAgICAgICAgICAgcmluZ19y ZW1vdmVfaW5mbyhkLCByaW5nX2luZm8pOwo+ID4gKyAgICB9Cj4gPiArICAgIGQtPmFyZ28tPnJp bmdfY291bnQgPSAwOwo+ID4gK30KPiA+ICsKPiA+ICsvKgo+ID4gKyAqIFRlYXIgZG93biBhbGwg cmluZ3Mgb2Ygb3RoZXIgZG9tYWlucyB3aGVyZSBzcmNfZCBkb21haW4gaXMgdGhlIHBhcnRuZXIu Cj4gPiArICogKGllLiBpdCBpcyB0aGUgc2luZ2xlIGRvbWFpbiB0aGF0IGNhbiBzZW5kIHRvIHRo b3NlIHJpbmdzLikKPiA+ICsgKiBUaGlzIHdpbGwgYWxzbyBjYW5jZWwgYW55IHBlbmRpbmcgbm90 aWZpY2F0aW9ucyBhYm91dCB0aG9zZSByaW5ncy4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgdm9pZAo+ ID4gK3BhcnRuZXJfcmluZ3NfcmVtb3ZlKHN0cnVjdCBkb21haW4gKnNyY19kKQo+ID4gK3sKPiA+ ICsgICAgdW5zaWduZWQgaW50IGk7Cj4gPiArCj4gPiArICAgIEFTU0VSVChyd19pc193cml0ZV9s b2NrZWQoJmFyZ29fbG9jaykpOwo+ID4gKwo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSR09f SFRBQkxFX1NJWkU7ICsraSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHN0cnVjdCBobGlzdF9u b2RlICpub2RlLCAqbmV4dDsKPiA+ICsgICAgICAgIHN0cnVjdCBhcmdvX3NlbmRfaW5mbyAqc2Vu ZF9pbmZvOwo+ID4gKwo+ID4gKyAgICAgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZW5k X2luZm8sIG5vZGUsIG5leHQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzcmNfZC0+YXJnby0+c2VuZF9oYXNoW2ldLCBub2RlKQo+ID4gKyAgICAgICAgewo+ID4gKyAg ICAgICAgICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOwo+ID4gKyAgICAgICAg ICAgIHN0cnVjdCBkb21haW4gKmRzdF9kOwo+ID4gKwo+ID4gKyAgICAgICAgICAgIGRzdF9kID0g Z2V0X2RvbWFpbl9ieV9pZChzZW5kX2luZm8tPmlkLmRvbWFpbl9pZCk7Cj4gPiArICAgICAgICAg ICAgaWYgKCBkc3RfZCApCj4gPiArICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICBy aW5nX2luZm8gPSByaW5nX2ZpbmRfaW5mbyhkc3RfZCwgJnNlbmRfaW5mby0+aWQpOwo+ID4gKyAg ICAgICAgICAgICAgICBpZiAoIHJpbmdfaW5mbyApCj4gPiArICAgICAgICAgICAgICAgIHsKPiA+ ICsgICAgICAgICAgICAgICAgICAgIHJpbmdfcmVtb3ZlX2luZm8oZHN0X2QsIHJpbmdfaW5mbyk7 Cj4gPiArICAgICAgICAgICAgICAgICAgICBkc3RfZC0+YXJnby0+cmluZ19jb3VudC0tOwo+ID4g KyAgICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgIHB1dF9kb21haW4o ZHN0X2QpOwo+ID4gKyAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICBobGlzdF9k ZWwoJnNlbmRfaW5mby0+bm9kZSk7Cj4gPiArICAgICAgICAgICAgeGZyZWUoc2VuZF9pbmZvKTsK PiA+ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ID4gK30KPiA+ICsKPiA+ICBsb25nCj4gPiAgZG9f YXJnb19vcCh1bnNpZ25lZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFy ZzEsCj4gPiAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzIsIHVu c2lnbmVkIGxvbmcgYXJnMywKPiA+ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnNCkKPiA+ ICB7Cj4gPiAtICAgIHJldHVybiAtRU5PU1lTOwo+ID4gKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJy ZCA9IGN1cnJlbnQtPmRvbWFpbjsKPiA+ICsgICAgbG9uZyByYyA9IC1FRkFVTFQ7Cj4gPiArCj4g PiArICAgIGFyZ29fZHByaW50aygiLT5kb19hcmdvX29wKCV1LCVwLCVwLCVkLCVkKVxuIiwgY21k LAo+ID4gKyAgICAgICAgICAgICAgICAgKHZvaWQgKilhcmcxLnAsICh2b2lkICopYXJnMi5wLCAo aW50KSBhcmczLCAoaW50KSBhcmc0KTsKPiA+ICsKPiA+ICsgICAgaWYgKCB1bmxpa2VseSghb3B0 X2FyZ29fZW5hYmxlZCkgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICByYyA9IC1FT1BOT1RTVVBQ Owo+ID4gKyAgICAgICAgcmV0dXJuIHJjOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGRvbWFp bl9sb2NrKGN1cnJkKTsKPiA+ICsKPiA+ICsgICAgc3dpdGNoIChjbWQpCj4gPiArICAgIHsKPiA+ ICsgICAgZGVmYXVsdDoKPiA+ICsgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7Cj4gPiArICAgICAg ICBicmVhazsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBkb21haW5fdW5sb2NrKGN1cnJkKTsK PiA+ICsKPiA+ICsgICAgYXJnb19kcHJpbnRrKCI8LWRvX2FyZ29fb3AoJXUpPSVsZFxuIiwgY21k LCByYyk7Cj4gPiArCj4gPiArICAgIHJldHVybiByYzsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IHZvaWQKPiA+ICthcmdvX2RvbWFpbl9pbml0KHN0cnVjdCBhcmdvX2RvbWFpbiAqYXJnbykKPiA+ ICt7Cj4gPiArICAgIHVuc2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICByd2xvY2tfaW5pdCgm YXJnby0+bG9jayk7Cj4gPiArICAgIHNwaW5fbG9ja19pbml0KCZhcmdvLT5zZW5kX2xvY2spOwo+ ID4gKyAgICBzcGluX2xvY2tfaW5pdCgmYXJnby0+d2lsZGNhcmRfbG9jayk7Cj4gPiArICAgIGFy Z28tPnJpbmdfY291bnQgPSAwOwo+ID4gKwo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSR09f SFRBQkxFX1NJWkU7ICsraSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIElOSVRfSExJU1RfSEVB RCgmYXJnby0+cmluZ19oYXNoW2ldKTsKPiA+ICsgICAgICAgIElOSVRfSExJU1RfSEVBRCgmYXJn by0+c2VuZF9oYXNoW2ldKTsKPiA+ICsgICAgfQo+ID4gKyAgICBJTklUX0hMSVNUX0hFQUQoJmFy Z28tPndpbGRjYXJkX3BlbmRfbGlzdCk7Cj4gPiArfQo+ID4gKwo+ID4gK2ludAo+ID4gK2FyZ29f aW5pdChzdHJ1Y3QgZG9tYWluICpkKQo+ID4gK3sKPiA+ICsgICAgc3RydWN0IGFyZ29fZG9tYWlu ICphcmdvOwo+ID4gKwo+ID4gKyAgICBpZiAoICFvcHRfYXJnb19lbmFibGVkICkKPiA+ICsgICAg ewo+ID4gKyAgICAgICAgYXJnb19kcHJpbnRrKCJhcmdvIGRpc2FibGVkLCBkb21pZDogJWRcbiIs IGQtPmRvbWFpbl9pZCk7Cj4gPiArICAgICAgICByZXR1cm4gMDsKPiA+ICsgICAgfQo+ID4gKwo+ ID4gKyAgICBhcmdvX2RwcmludGsoImluaXQ6IGRvbWlkOiAlZFxuIiwgZC0+ZG9tYWluX2lkKTsK PiA+ICsKPiA+ICsgICAgYXJnbyA9IHhtYWxsb2Moc3RydWN0IGFyZ29fZG9tYWluKTsKPiA+ICsg ICAgaWYgKCAhYXJnbyApCj4gPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsg ICAgd3JpdGVfbG9jaygmYXJnb19sb2NrKTsKPiA+ICsKPiA+ICsgICAgYXJnb19kb21haW5faW5p dChhcmdvKTsKPiA+ICsKPiA+ICsgICAgZC0+YXJnbyA9IGFyZ287Cj4gPiArCj4gPiArICAgIHdy aXRlX3VubG9jaygmYXJnb19sb2NrKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiArfQo+ ID4gKwo+ID4gK3ZvaWQKPiA+ICthcmdvX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKPiA+ICt7 Cj4gPiArICAgIEJVR19PTighZC0+aXNfZHlpbmcpOwo+ID4gKwo+ID4gKyAgICB3cml0ZV9sb2Nr KCZhcmdvX2xvY2spOwo+ID4gKwo+ID4gKyAgICBhcmdvX2RwcmludGsoImRlc3Ryb3k6IGRvbWlk ICVkIGQtPmFyZ289JXBcbiIsIGQtPmRvbWFpbl9pZCwgZC0+YXJnbyk7Cj4gPiArCj4gPiArICAg IGlmICggZC0+YXJnbyApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGRvbWFpbl9yaW5nc19yZW1v dmVfYWxsKGQpOwo+ID4gKyAgICAgICAgcGFydG5lcl9yaW5nc19yZW1vdmUoZCk7Cj4gPiArICAg ICAgICB3aWxkY2FyZF9yaW5nc19wZW5kaW5nX3JlbW92ZShkKTsKPiA+ICsgICAgICAgIHhmcmVl KGQtPmFyZ28pOwo+ID4gKyAgICAgICAgZC0+YXJnbyA9IE5VTEw7Cj4gPiArICAgIH0KPiA+ICsg ICAgd3JpdGVfdW5sb2NrKCZhcmdvX2xvY2spOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkCj4gPiAr YXJnb19zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCj4gPiArewo+ID4gKyAgICB3cml0ZV9s b2NrKCZhcmdvX2xvY2spOwo+ID4gKwo+ID4gKyAgICBhcmdvX2RwcmludGsoInNvZnQgcmVzZXQg ZD0lZCBkLT5hcmdvPSVwXG4iLCBkLT5kb21haW5faWQsIGQtPmFyZ28pOwo+ID4gKwo+ID4gKyAg ICBpZiAoIGQtPmFyZ28gKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBkb21haW5fcmluZ3NfcmVt b3ZlX2FsbChkKTsKPiA+ICsgICAgICAgIHBhcnRuZXJfcmluZ3NfcmVtb3ZlKGQpOwo+ID4gKyAg ICAgICAgd2lsZGNhcmRfcmluZ3NfcGVuZGluZ19yZW1vdmUoZCk7Cj4gPiArCj4gPiArICAgICAg ICBpZiAoICFvcHRfYXJnb19lbmFibGVkICkKPgo+IFNob3VsZG4ndCB0aGlzIGZ1bmN0aW9uIGp1 c3QgZXhpdCBlYXJseSBpZiBhcmdvIGlzIGRpc2FibGVkPwoKVGhlcmUgaGFzIGJlZW4gc3VwcG9y dCBhZGRlZCB0byBYZW4gd2l0aCBhIGh5cGVyY2FsbCB0byBtYWtlIGEgc3Vic2V0IG9mCmJvb3Qg cGFyYW1ldGVycyBtb2RpZmlhYmxlIGF0IHJ1bnRpbWUuIEFyZ28tZW5hYmxlZCBpc24ndCBjdXJy ZW50bHkgb25lCm9mIHRoZW0sIGJ1dCB0aGF0IG1heSBiZSBjaGFuZ2VkIGxhdGVyIHNvIEkgZGlk IG5vdCB3YW50IHRvIGJha2UgaW50bwp0aGlzIGZ1bmN0aW9uIHRoZSBhc3N1bXB0aW9uIHRoYXQg dGhlIGVuYWJsZWQvZGlzYWJsZWQgY29uZmlndXJhdGlvbgpjb3VsZCBub3QgY2hhbmdlIGFmdGVy IGJlaW5nIGluaXRpYWxseSBldmFsdWF0ZWQgYXQgdGhlIHRpbWUgdGhlIGRvbWFpbgp3YXMgbGF1 bmNoZWQuIFRoYXQncyBwb3NzaWJseSBhIGNvbnNlcnZhdGl2ZSBjaG9pY2UgdGhvdWdoLgoKaHR0 cDovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9eGVuLmdpdDthPWNvbW1pdDtoPTgyY2Y3ODQ2 OGU5NmRlMWU0ZDE0MDBiYmY1NTA4ZjhiMTExNjUwYzMKClRoYW5rcyBmb3IgdGhlIHJldmlldy4K CkNocmlzdG9waGVyCgo+Cj4gPiArICAgICAgICB7Cj4gPiArICAgICAgICAgICAgeGZyZWUoZC0+ YXJnbyk7Cj4gPiArICAgICAgICAgICAgZC0+YXJnbyA9IE5VTEw7Cj4gPiArICAgICAgICB9Cj4g PiArICAgICAgICBlbHNlCj4gPiArICAgICAgICAgICAgYXJnb19kb21haW5faW5pdChkLT5hcmdv KTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICB3cml0ZV91bmxvY2soJmFyZ29fbG9jayk7Cj4g PiAgfQo+Cj4gPHNuaXA+Cj4KPiBSZWdhcmRzLAo+IEphc29uCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs