From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v4 07/14] argo: implement the register op Date: Tue, 15 Jan 2019 01:27:39 -0800 Message-ID: <1547544466-21135-8-git-send-email-christopher.w.clark@gmail.com> References: <1547544466-21135-1-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 1gjL17-0003Ye-3o for xen-devel@lists.xenproject.org; Tue, 15 Jan 2019 09:28:17 +0000 Received: by mail-io1-xd36.google.com with SMTP id s22so1507981ioc.8 for ; Tue, 15 Jan 2019 01:28:14 -0800 (PST) In-Reply-To: <1547544466-21135-1-git-send-email-christopher.w.clark@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhlIHJlZ2lzdGVyIG9wIGlzIHVzZWQgYnkgYSBkb21haW4gdG8gcmVnaXN0ZXIgYSByZWdpb24g b2YgbWVtb3J5IGZvcgpyZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBlaXRoZXIgYSBzcGVjaWZpZWQg b3RoZXIgZG9tYWluLCBvciwgaWYgc3BlY2lmeWluZyBhCndpbGRjYXJkLCBhbnkgZG9tYWluLgoK VGhpcyBvcGVyYXRpb24gY3JlYXRlcyBhIG1hcHBpbmcgd2l0aGluIFhlbidzIHByaXZhdGUgYWRk cmVzcyBzcGFjZSB0aGF0CndpbGwgcmVtYWluIHJlc2lkZW50IGZvciB0aGUgbGlmZXRpbWUgb2Yg dGhlIHJpbmcuIEluIHN1YnNlcXVlbnQgY29tbWl0cywKdGhlIGh5cGVydmlzb3Igd2lsbCB1c2Ug dGhpcyBtYXBwaW5nIHRvIGNvcHkgZGF0YSBmcm9tIGEgc2VuZGluZyBkb21haW4gaW50bwp0aGlz IHJlZ2lzdGVyZWQgcmluZywgbWFraW5nIGl0IGFjY2Vzc2libGUgdG8gdGhlIGRvbWFpbiB0aGF0 IHJlZ2lzdGVyZWQgdGhlCnJpbmcgdG8gcmVjZWl2ZSBkYXRhLgoKV2lsZGNhcmQgYW55LXNlbmRl ciByaW5ncyBhcmUgZGVmYXVsdCBkaXNhYmxlZCBhbmQgcmVnaXN0cmF0aW9uIHdpbGwgYmUKcmVm dXNlZCB3aXRoIEVQRVJNIHVubGVzcyB0aGV5IGhhdmUgYmVlbiBzcGVjaWZpY2FsbHkgZW5hYmxl ZCB3aXRoIHRoZQphcmdvLW1hYyBib290IG9wdGlvbiBpbnRyb2R1Y2VkIGhlcmUuIFRoZSByZWFz b24gd2h5IHRoZSBkZWZhdWx0IGZvcgp3aWxkY2FyZCByaW5ncyBpcyAnZGVueScgaXMgdGhhdCB0 aGVyZSBpcyBjdXJyZW50bHkgbm8gbWVhbnMgdG8gcHJvdGVjdCB0aGUKcmluZyBmcm9tIERvUyBi eSBhIG5vaXN5IGRvbWFpbiBzcGFtbWluZyB0aGUgcmluZywgYWZmZWN0aW5nIG90aGVyIGRvbWFp bnMKYWJpbGl0eSB0byBzZW5kIHRvIGl0LiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIHdpdGggWFNN IHBvbGljeSBjb250cm9scyBpbgpzdWJzZXF1ZW50IHdvcmsuCgpTaW5jZSBkZW55aW5nIGFjY2Vz cyB0byBhbnktc2VuZGVyIHJpbmdzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbApjb25zdHJh aW50LCBhIG5ldyBib290cGFyYW0gaXMgcHJvdmlkZWQgdG8gZW5hYmxlIG92ZXJyaWRpbmcgdGhp czoKICJhcmdvLW1hYyIgdmFyaWFibGUgaGFzIGFsbG93ZWQgdmFsdWVzOiAncGVybWlzc2l2ZScg YW5kICdlbmZvcmNpbmcnLgpFdmVuIHRob3VnaCB0aGlzIGlzIGEgYm9vbGVhbiB2YXJpYWJsZSwg dXNlIHRoZXNlIGRlc2NyaXB0aXZlIHN0cmluZ3MgaW4Kb3JkZXIgdG8gbWFrZSBpdCBvYnZpb3Vz IHRvIGFuIGFkbWluaXN0cmF0b3IgdGhhdCB0aGlzIGhhcyBwb3RlbnRpYWwKc2VjdXJpdHkgaW1w YWN0LgoKVGhlIHAybSB0eXBlIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgYnkgdGhlIGd1ZXN0IGZv ciB0aGUgcmluZyBtdXN0IGJlCnAybV9yYW1fcncgYW5kIHRoZSBtZW1vcnkgd2lsbCBiZSBwaW5u ZWQgYXMgUEdUX3dyaXRhYmxlX3BhZ2Ugd2hpbGUgdGhlIHJpbmcKaXMgcmVnaXN0ZXJlZC4KCnhl bl9hcmdvX2dmbl90IHR5cGUgaXMgZGVmaW5lZCBhbmQgaXMgNjQtYml0IG9uIGFsbCBhcmNoaXRl Y3R1cmVzIHdoaWNoCmFzc2lzdHMgd2l0aCBhdm9pZGluZyB0aGUgbmVlZCBmb3IgY29tcGF0IGNv ZGUgdG8gdHJhbnNsYXRlIGh5cGVyY2FsbCBhcmdzLgpUaGlzIGh5cGVyY2FsbCBvcCBhbmQgaXRz IGludGVyZmFjZSBjdXJyZW50bHkgb25seSBzdXBwb3J0cyA0Sy1zaXplZCBwYWdlcy4KCmFycmF5 X2luZGV4X25vc3BlYyBpcyB1c2VkIHRvIGd1YXJkIHRoZSByZXN1bHQgb2YgdGhlIHJpbmcgaWQg aGFzaCBmdW5jdGlvbi4KVGhpcyBpcyBvdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIHNp bmNlIHRoaXMgaXMgYSB2ZXJ5IGJhc2ljIGhhc2gKZnVuY3Rpb24gYW5kIGl0IG9wZXJhdGVzIHVw b24gdmFsdWVzIHN1cHBsaWVkIGJ5IHRoZSBndWVzdCBqdXN0IGJlZm9yZQpiZWluZyB1c2VkIGFz IGFuIGFycmF5IGluZGV4LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xhcmsgPGNocmlz dG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KCi1UaGlzIHZlcnNpb24gY29udGFpbnMgRklY TUVzIGZvciA0LjEyOgogKiBmaW5kX3JpbmdfbWZuOiBpbnZlc3RpZ2F0ZSB1c2luZyBjaGVja19n ZXRfcGFnZV9mcm9tX2dmbigpCiAgIGFuZCByZXdyaXRlIHRoaXMgZnVuY3Rpb24gdXNpbmcgaXQg b3Igd2l0aCBhZG9wdGVkIGxvZ2ljCgogKiBzaHJpbmsgY3JpdGljYWwgc2VjdGlvbnM6IG1vdmUg YWNxdWlyZS9yZWxlYXNlIG9mIHRoZSBnbG9iYWwgbG9jay4KICogc2ltcGxpZnkgdGhlIG91dCBs YWJlbCBwYXRoIHdoZW4gbG9jayByZWxlYXNlIGhhcyBiZWVuIG1vdmVkLgoKICogLSBkcm9wIHVz ZSBvZiB1bnNpZ25lZCBsb25nIHR5cGUgYXMgaHlwZXJjYWxsIGFyZ3M6IG5vdCBjb21wYXQtZnJp ZW5kbHkKICogLSBkcm9wIFVMIHN1ZmZpeCBvbiBYRU5fQVJHT19SRUdJU1RFUl9GTEFHX01BU0sK ICogLSBndWFyZCBYRU5fQVJHT19SRUdJU1RFUl9GTEFHX01BU0sgKHBlcmhhcHMgZnJhbWVkIGJ5 ICIjaWZkZWYgX19YRU5fXyIpCiAqIC0gZGVmaW5lIFhFTl9BUkdPX1JFR0lTVEVSX0ZMQUdfTUFT SyBpbiB0ZXJtcyBvZiBvdGhlciBmbGFncyBkZWZpbmVkCgogKiByZWdpc3Rlcl9yaW5nOiBwdWxs IHdyaXRlX3VubG9jayB1cCBhYm92ZSB0aGUgY2xlYW51cCBhY3Rpb25zIGFib3ZlCiAgIGFuZCBh ZGQgYW5vdGhlciBsYWJlbCB0byBhYm9yYiB0aGUgdHdvIHNlcGFyYXRlIHB1dF9kb21haW4oKSBj YWxscyBvbgogICB0aGUgZXJyb3IgcGF0aHMuCi0tLQp2MyAjMDcgSmFuOiBjb21tZW50OiBtaW5p bXVtIHJpbmcgc2l6ZSBpcyBiYXNlZCBvbiBtaW5pbXVtLXNpemVkIG1lc3NhZ2UKdjMgIzA0IEFu ZHJldzogcmVmZXJlbmNlIENPTkZJR19BUkdPIGluIHRoZSBjb21tYW5kIGxpbmUgZG9jdW1lbnRh dGlvbgp2MyAjMDcgSmFuOiByZWdpc3Rlcl9yaW5nOiBmb2xkIGVsc2UsIGlmIGludG8gZWxzZS1p ZiB0byBkcm9wIGluZGVudAp2MyAjMDcgSmFuOiByZW1vdmUgbm8gbG9uZ2VyIHVzZWQgZ3Vlc3Rf aGFuZGxlX2lzX2FsaWduZWQgbWFjcm9zCnYzICMwNyBKYW46IHJlbW92ZSBkZWFkIGNvZGUgZnJv bSBmaW5kX3JpbmdfbWZucwp2MyAjMDcgSmFuOiBmaXggZm9ybWF0IHN0cmluZyBpbmRlbnRpb24g aW4gcHJpbnRrcwp2MyAjMDcgSmFuOiByZW1vdmUgcmVkdW5kYW50IGJvdW5kcyBjaGVjayBvbiBu cGFnZSBpbiBmaW5kX3JpbmdfbWZucwp2MyAjMDggc2VsZi9Sb2dlcjogaW1wcm92ZSBkcHJpbnRr IG91dHB1dCBpbiBmaW5kX3JpbmdfaW5mbyBsaWtlIGZpbmRfc2VuZF9pbmZvCnYzICMwNyBKYW46 IHJlbmFtZSByaW5nX2ZpbmRfaW5mbyB0byBmaW5kX3JpbmdfaW5mbwp2MyAjMDcgSmFuOiB1c2Ug YXJyYXlfaW5kZXhfbm9zcGVjIGluIHJpbmdfbWFwX3BhZ2UKdjMgIzA3IEphbjogZml4IG51bWVy aWMgZW50cmllcyBpbiBwcmludGsgZm9ybWF0IHN0cmluZ3MKdjMgIzcgSmFuOiBkcm9wIHVubmVl ZGVkIHBhcmVudGhlc2VzIGZyb20gUk9VTkRVUF9NRVNTQUdFIGRlZm4KdjMgIzEwIFJvZ2VyOiBt b3ZlIGZpbmQgZnVuY3Rpb25zIHRvIHRvcCBvZiBmaWxlIGFuZCBkcm9wIHByb3RvdHlwZXMKdjMg IzAzIG1lbGQgY29tcGF0IGNoZWNrIGZvciBoeXBlcmNhbGwgYXJnIHJlZ2lzdGVyIHN0cnVjdAp2 MyAjMDQgUm9nZXIvSmFuOiBtYWtlIGxvY2sgbmFtZXMgY2xlYXJlciBhbmQgYXNzZXJ0IHRoZWly IHN0YXRlCnYzICMwNCBKYW46IHBvcnQgLT4gYXBvcnQgd2l0aCB0eXBlOyBkaXN0aW5ndWlzaCBh cmdvIHBvcnQgZnJvbSBldnRjaG4KdjMgZmVlZGJhY2sgIzA3IEVyaWM6IGZpeCBoZWFkZXIgbWF4 IHJpbmcgc2l6ZSBjb21tZW50IHVuaXRzCnYzIGZlZWRiYWNrICMwNCBSb2dlcjogbWZuX21hcHBp bmc6IHZvaWQqIGluc3RlYWQgb2YgdWludDhfdCoKdjMgdXNlICV1IGZvciBwcmludGluZyB1bnNp Z25lZCBpbnRzIGluIGZpbmRfcmluZ19tZm5zCnYzIGZlZWRiYWNrICMwNCBKYW46IHVpbnQzMl90 IC0+IHVuc2lnbmVkIGludCBmb3IgbnBhZ2UgaW4gcmVnaXN0ZXJfcmluZwp2MyBmZWVkYmFjayAj MDQgUm9nZXI6IGRyb3AgbnBhZ2VzIHN0cnVjdCBtZW1iZXIsIGNhbGN1bGF0ZSBmcm9tIGxlbgp2 MyA6IHJlZ2lzdGVyX3Jpbmc6IHVpbnQzMl90IC0+IHVuc2lnbmVkIGludCBmb3IgcHJpdmF0ZV90 eF9wdHIKdjMgZmVlZGJhY2sgUm9nZXIvSmFuOiBBU1NFUlQgY3VycmQgaXMgY3VycmVudC0+ZG9t YWluIG9yIHVzZSAnZCcgdmFyaWFibGUgbmFtZQp2MyBmZWVkYmFjayAjMDcgUm9nZXI6IHVzZSBv cHRfYXJnb19tYWNfcGVybWlzc2l2ZSA6IGEgYm9vbGVhbiBvcHQKdjMgZmVlZGJhY2sgIzA0IFJv Z2VyOiByZW9yZGVyICNpbmNsdWRlcyB0byBhbHBoYWJldGljYWwgb3JkZXIKdjMgZmVlZGJhY2sg IzA3IFJvZ2VyOiBkcm9wIGNvbW1lbnQgcmU6IEludGVsIEVQVC9BTUQgTlBUIGZvciB3cml0ZS1v bmx5IG1hcHBpbmcKdjMgZmVlZGJhY2sgIzA3IFJvZ2VyOiBkcm9wIHB0ciBhcml0aG1ldGljIGlu IHVwZGF0ZV90eF9wdHIsIHVzZSByaW5nIHN0cnVjdCBjYXN0CnYzIGZlZWRiYWNrICMwNyBSb2dl cjogZHJvcCBuZXdsaW5lIGluIHJpbmdfbWFwX3BhZ2UKdjMgZmVlZGJhY2sgIzA3IFJvZ2VyOiBk cm9wIHVubmVlZGVkIG51bGwgY2hlY2sgYmVmb3JlIHhmcmVlCnYzIGZlZWRiYWNrICMwNyBSb2dl cjogdXNlIHJldHVybiBhbmQgZHJvcCBvdXQgbGFiZWwgaW4gcmVnaXN0ZXJfcmluZwp2MyBTdGVm YW5vOiBhZGQgNEsgcGFnZSBjb25zdHJhaW50IHRvIGhlYWRlciBmaWxlIGNvbW1lbnQgJiBjb21t aXQgbXNnCnYzIEp1bGllbi9TdGVmYW5vOiA0SyBncmFudWxhcml0eSBvazogdXNlIDY0LWJpdCBn Zm5zIGluIHJlZ2lzdGVyIGludGVyZmFjZQoKdjIgc2VsZjogZGlzYWxsb3cgcmluZyByZXNpemUg dmlhIHJlcmVnaXN0ZXIKdjIgZmVlZGJhY2sgSmFuOiBkcm9wIGNvb2tpZSwgaW1wbGVtZW50IHRl YXJkb3duCnYyIGZlZWRiYWNrIEphbjogZHJvcCBtZXNzYWdlIGZyb20gYXJnb19tZXNzYWdlX29w CnYyIHNlbGY6IG1vdmUgaGFzaF9pbmRleCBmdW5jdGlvbiBiZWxvdyBsb2NraW5nIGNvbW1lbnQK djIgc2VsZjogT1ZFUkhBVUwKdjIgc2VsZi9KYW46IHJlbW92ZSB1c2Ugb2YgbWFnaWMgdmVyaWZp Y2F0aW9uIGZpZWxkIGFuZCB0aWR5IHVwCnYyIHNlbGY6IG1lcmdlIG1heCBhbmQgbWluIHJpbmcg c2l6ZSBjaGVjayBjbGF1c2VzCnYyIGZlZWRiYWNrIHYxIzEzIFJvZ2VyOiB1c2UgT1Mtc3VwcGxp ZWQgcm91bmR1cDsgZHJvcCBmcm9tIHB1YmxpYyBoZWFkZXIKdjIgZmVlZGJhY2sgIzksIEphbjog dXNlIHRoZSBhcmdvLW1hYyBib290cGFyYW0gYXQgcG9pbnQgb2YgaW50cm9kdWN0aW9uCnYyIGZl ZWRiYWNrICM5LCBKYW46IHJlbmFtZSBib290IG9wdCB2YXJpYWJsZSB0byBjb21wbHkgd2l0aCBj b252ZW50aW9uCnYyIGZlZWRiYWNrICM5LCBKYW46IHJlbmFtZSB0aGUgYXJnb19tYWMgYm9vdHBh cmFtIHRvIGFyZ28tbWFjCnYyIGZlZWRiYWNrICM5IEphbjogZG9jdW1lbnQgYXJnbyBib290IG9w dCBpbiB4ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCnYxLDIgZmVlZGJhY2sgSmFuL1JvZ2VyL1Bh dWw6IGRyb3AgZXJybm8gcmV0dXJuaW5nIGd1ZXN0IGFjY2VzcyBmdW5jdGlvbnMKdjEgZmVlZGJh Y2sgUm9nZXIsIEphbjogZHJvcCBhcmdvIHByZWZpeCBvbiBzdGF0aWMgZnVuY3Rpb25zCnYxIGZl ZWRiYWNrIFJvZ2VyOiBzL3Bmbi9nZm4vIGFuZCByZXRpcmUgYWx3YXlzLTY0LWJpdCB0eXBlCnYy LiBmZWVkYmFjayBKYW46IGRvY3VtZW50IHRoZSBhcmdvLW1hYyBib290IG9wdAp2Mi4gZmVlZGJh Y2sgSmFuOiBzaW1wbGlmeSByZS1yZWdpc3RlciwgZHJvcCBtYXBwaW5ncwp2MSAjMTMgZmVlZGJh Y2sgSmFuOiByZXZpc2UgdXNlIG9mIGd1ZXN0X2hhbmRsZV9va2F5IHZzIF9fY29weSBvcHMKCnYx ICMxMyBmZWVkYmFjaywgSmFuOiByZWdpc3RlciBvcCA6IHMvRUNPTk5SRUZVU0VEL0VTUkNILwp2 MSAjNSAoIzEzKSBmZWVkYmFjayBQYXVsOiByZWdpc3RlciBvcDogdXNlIGN1cnJkIGluIGRvX21l c3NhZ2Vfb3AKdjEgIzEzIGZlZWRiYWNrLCBQYXVsOiByZWdpc3RlciBvcDogdXNlIG1mbl9lcSBj b21wYXJhdG9yCnYxICM1ICgjMTMpIGZlZWRiYWNrIFBhdWw6IHJlZ2lzdGVyIG9wOiB1c2UgY3Vy cmQgaW4gYXJnb19yZWdpc3Rlcl9yaW5nCnYxICMxMyBmZWVkYmFjayBQYXVsOiByZWdpc3RlciBv cDogd2hpdGVzcGFjZSwgdW5zaWduZWQsIGJvdW5kcyBjaGVjawp2MSAjMTMgZmVlZGJhY2sgUGF1 bDogdXNlIG9mIGhleCBpbiBsaW1pdCBjb25zdGFudCBkZWZpbml0aW9uCnYxICMxMyBmZWVkYmFj ayBQYXVsLCByZWdpc3RlciBvcDogc2V0IG5tZm5zIG9uIGxvb3AgdGVybWluYXRpb24KdjEgIzEz IGZlZWRiYWNrIFBhdWw6IHJlZ2lzdGVyIG9wOiBkby93aGlsZSAtPiBnb3RvcywgcmVpbmRlbnQK djEgYXJnb19yaW5nX21hcF9wYWdlOiBkcm9wIHVpbnQzMl90IGZvciB1bnNpZ25lZCBpbnQKdjEu ICMxMyBmZWVkYmFjayBKdWxpZW46IHVzZSBwYWdlIGRlc2NyaXB0b3JzIGluc3RlYWQgb2YgZ3Bm bnMuCiAgIC0gYWRkcyBBQkkgc3VwcG9ydCBmb3IgcGFnZXMgd2l0aCBkaWZmZXJlbnQgZ3JhbnVs YXJpdHkuCnYxIGZlZWRiYWNrICMxMywgUGF1bDogYWRqdXN0IGxvZyBsZXZlbCBvZiBtZXNzYWdl CnYxIGZlZWRiYWNrICMxMywgUGF1bDogdXNlIGdwcmludGsgZm9yIGd1ZXN0LXRyaWdnZXJlZCB3 YXJuaW5nCnYxIGZlZWRiYWNrICMxMywgUGF1bDogZ3ByaW50ayBhbmQgWEVOTE9HX0RFQlVHIGZv ciByaW5nIHJlZ2lzdHJhdGlvbgp2MSBmZWVkYmFjayAjMTMsIFBhdWw6IHVzZSBncHJpbnRrIGZv ciBlcnJzIGluIGFyZ29fcmluZ19tYXBfcGFnZQp2MSBmZWVkYmFjayAjMTMsIFBhdWw6IHVzZSBF Tk9NRU0gaWYgZ2xvYmFsIG1hcHBpbmcgZmFpbHMKdjEgZmVlZGJhY2sgUGF1bDogb3ZlcmZsb3cg Y2hlY2sgYmVmb3JlIHNoaWZ0CnYxOiBhZGQgZGVmaW5lIGZvciBjb3B5X2ZpZWxkX3RvX2d1ZXN0 X2Vycm5vCnYxOiBmaXggZ3ByaW50ayB1c2UgZm9yIEFSTSBhcyBpdHMgZGVmbiBkaXNsaWtlcyBz cGxpdCBmb3JtYXQgc3RyaW5ncwp2MTogdXNlIGNvcHlfZmllbGRfdG9fZ3Vlc3RfZXJybm8KdjEg ZmVlZGJhY2sgIzEzLCBKYW46IGFyZ29faGFzaF9mbjogbm8gaW5saW5lLCByZW5hbWUsIGNoYW5n ZSB0eXBlCnYxIGZlZWRiYWNrICMxMywgUGF1bCwgSmFuOiBFRkFVTFQgLT4gRU5PTUVNIGluIGFy Z29fcmluZ19tYXBfcGFnZQp2MSBmZWVkYmFjayAjMTMsIEphbjogcmVuYW1lIHBhZ2UgdmFyIGlu IGFyZ29fcmluZ19tYXBfcGFnZQp2MSBmZWVkYmFjayAjMTMsIEphbjogc3dpdGNoIHVpbnQ4X3Qq IHRvIHZvaWQqIGFuZCBkcm9wIGNhc3QKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHN3aXRjaCBtZW1v cnkgYmFycmllciB0byBzbXBfd21iCnYxIGZlZWRiYWNrICMxMywgSmFuOiBtYWtlICdyaW5nJyBj b21tZW50IGNvbXBseSB3aXRoIHNpbmdsZS1saW5lIHN0eWxlCnYxIGZlZWRiYWNrICMxMywgSmFu OiB1c2UgeHphbGxvY19hcnJheSwgZHJvcCBsb29wIE5VTEwgaW5pdAp2MSBmZWVkYmFjayAjMTMs IEphbjogaW5pdCBib29sIHdpdGggZmFsc2UgcmF0aGVyIHRoYW4gMAp2MSBmZWVkYmFjayAjMTMg SmFuOiB1c2UgX19jb3B5OyBkZWZpbmUgYW5kIHVzZSBfX2NvcHlfZmllbGRfdG9fZ3Vlc3RfZXJy bm8KdjEgZmVlZGJhY2sgIzEzLCBKYW46IHVzZSB4emFsbG9jLCBkcm9wIGluZGl2aWR1YWwgaW5p dCB6ZXJvZXMKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHByZWZpeCBwdWJsaWMgbmFtZXNwYWNlIHdp dGggeGVuCnYxIGZlZWRiYWNrICMxMywgSmFuOiBibGFuayBsaW5lIGFmdGVyIG9wIGNhc2UgaW4g ZG9fYXJnb19tZXNzYWdlX29wCnYxIHNlbGY6IHJlZmxvdyBjb21tZW50IGluIGFyZ29fcmluZ19t YXBfcGFnZSB0byB3aXRoaW4gODAgY2hhciBsZW4KdjEgZmVlZGJhY2sgIzEzLCBSb2dlcjogdXNl IHRydWUgbm90IDEgaW4gYXNzaWduIHRvIHVwZGF0ZV90eF9wdHIgYm9vbAp2MSBmZWVkYmFjayAj MjEsIEphbjogZm9sZCBpbiB0aGUgYXJyYXlfaW5kZXhfbm9zcGVjIGhhc2ggZnVuY3Rpb24gZ3Vh cmRzCnYxIGZlZWRiYWNrICMxOCwgSmFuOiBmb2xkIHRoZSBtYXggcmluZyBjb3VudCBsaW1pdCBp bnRvIHRoZSBzZXJpZXMKdjEgc2VsZjogdXNlIHVuc2lnbmVkIGxvbmcgdHlwZSBmb3IgWEVOX0FS R09fUkVHSVNURVJfRkxBR19NQVNLCnYxOiBmZWVkYmFjayAjMTUgSmFuOiBoYW5kbGUgdXBwZXIt aGFsdmVzIG9mIGh5cGVyY2FsbCBhcmdzCnYxLiBmZWVkYmFjayAjMTMgSmFuOiBhZGQgY29tbWVu dCByZTogcGFnZSBhbGlnbm1lbnQKdjEuIHNlbGY6IGNvbmZpcm0gcmluZyBtYWdpYyBwcmVzZW5j ZSBpbiBzdXBwbGllZCBwYWdlIGFycmF5CnYxLiBmZWVkYmFjayAjMTMgSmFuOiBhZGQgY29tbWVu dCByZTogbWluaW11bSByaW5nIHNpemUKdjEuIGZlZWRiYWNrICMxMyBSb2dlcjogdXNlIEFTU0VS VF9VTlJFQUNIQUJMRQp2MS4gZmVlZGJhY2sgUm9nZXI6IGFkZCBjb21tZW50IHRvIGhhc2ggZnVu Y3Rpb24KCiBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5wYW5kb2MgfCAgMTcgKysKIHhlbi9j b21tb24vYXJnby5jICAgICAgICAgICAgICAgICB8IDQ3NSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQogeGVuL2NvbW1vbi9jb21wYXQvYXJnby5jICAgICAgICAgIHwgICAx ICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggICAgICAgICB8ICA3NyArKysrKysKIHhlbi9p bmNsdWRlL3hsYXQubHN0ICAgICAgICAgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDU3 MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hl bi1jb21tYW5kLWxpbmUucGFuZG9jIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9j CmluZGV4IDA4YzI4ZjkuLjA5OWM0YjYgMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy94ZW4tY29tbWFu ZC1saW5lLnBhbmRvYworKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5wYW5kb2MKQEAg LTE5NSw2ICsxOTUsMjMgQEAgVGhpcyBhbGxvd3MgZG9tYWlucyBhY2Nlc3MgdG8gdGhlIEFyZ28g aHlwZXJjYWxsLCB3aGljaCBzdXBwb3J0cyByZWdpc3RyYXRpb24KIG9mIG1lbW9yeSByaW5ncyB3 aXRoIHRoZSBoeXBlcnZpc29yIHRvIHJlY2VpdmUgbWVzc2FnZXMsIHNlbmRpbmcgbWVzc2FnZXMg dG8KIG90aGVyIGRvbWFpbnMgYnkgaHlwZXJjYWxsIGFuZCBxdWVyeWluZyB0aGUgcmluZyBzdGF0 dXMgb2Ygb3RoZXIgZG9tYWlucy4KIAorIyMjIGFyZ28tbWFjLXBlcm1pc3NpdmUKKz4gYD0gPGJv b2xlYW4+YAorCis+IERlZmF1bHQ6IGBmYWxzZWAKKworQ29uc3RyYWluIHRoZSBhY2Nlc3MgY29u dHJvbCBhcHBsaWVkIHRvIHRoZSBBcmdvIGNvbW11bmljYXRpb24gbWVjaGFuaXNtLgorCitPbmx5 IGF2YWlsYWJsZSBpZiBYZW4gaXMgY29tcGlsZWQgd2l0aCBgQ09ORklHX0FSR09gIGVuYWJsZWQu CisKK1doZW4gYGZhbHNlYCwgZG9tYWlucyBtYXkgbm90IHJlZ2lzdGVyIHJpbmdzIHRoYXQgaGF2 ZSB3aWxkY2FyZCBzcGVjaWZpZWQKK2ZvciB0aGUgc2VuZGVyIHdoaWNoIHdvdWxkIGFsbG93IG1l c3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIHJpbmcgYnkgYW55IGRvbWFpbi4KK1RoaXMgaXMgdG8g cHJvdGVjdCByaW5ncyBhbmQgdGhlIHNlcnZpY2VzIHRoYXQgdXRpbGl6ZSB0aGVtIGFnYWluc3Qg RG9TIGJ5IGEKK21hbGljaW91cyBvciBidWdneSBkb21haW4gc3BhbW1pbmcgdGhlIHJpbmcuCisK K1doZW4gdGhlIGJvb3Qgb3B0aW9uIGlzIHNldCB0byBgdHJ1ZWAsIHRoaXMgY29uc3RyYWludCBp cyByZWxheGVkIGFuZAord2lsZGNhcmQgYW55LXNlbmRlciByaW5ncyBhcmUgYWxsb3dlZCB0byBi ZSByZWdpc3RlcmVkLgorCiAjIyMgYXNpZCAoeDg2KQogPiBgPSA8Ym9vbGVhbj5gCiAKZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vYXJnby5jIGIveGVuL2NvbW1vbi9hcmdvLmMKaW5kZXggMTk1OGZk Yy4uMDc2ZWU2YyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9hcmdvLmMKKysrIGIveGVuL2NvbW1v bi9hcmdvLmMKQEAgLTIyLDE5ICsyMiwzNiBAQAogI2luY2x1ZGUgPHhlbi9lcnJuby5oPgogI2lu Y2x1ZGUgPHhlbi9ldmVudC5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNs dWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL25vc3BlYy5oPgogI2luY2x1ZGUgPHhlbi9z Y2hlZC5oPgogI2luY2x1ZGUgPHhlbi90aW1lLmg+CiAKICNpbmNsdWRlIDxwdWJsaWMvYXJnby5o PgogCisjZGVmaW5lIE1BWF9SSU5HU19QRVJfRE9NQUlOICAgICAgICAgICAgMTI4VQorCisvKiBB bGwgbWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIHRoZSBz bG90IHNpemUuICovCisjZGVmaW5lIFJPVU5EVVBfTUVTU0FHRShhKSBST1VORFVQKChhKSwgWEVO X0FSR09fTVNHX1NMT1RfU0laRSkKKworLyogTnVtYmVyIG9mIFBBR0VzIG5lZWRlZCB0byBob2xk IGEgcmluZyBvZiBhIGdpdmVuIHNpemUgaW4gYnl0ZXMgKi8KKyNkZWZpbmUgTlBBR0VTX1JJTkco cmluZ19sZW4pIFwKKyAgICAoUk9VTkRVUCgoUk9VTkRVUF9NRVNTQUdFKHJpbmdfbGVuKSArIHNp emVvZih4ZW5fYXJnb19yaW5nX3QpKSwgUEFHRV9TSVpFKSBcCisgICAgID4+IFBBR0VfU0hJRlQp CisKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX2FkZHJfdCk7CitERUZJTkVfWEVO X0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19nZm5fdCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2Fy Z29fcmluZ190KTsKIAogLyogWGVuIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxlIGFyZ28g Ki8KIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgb3B0X2FyZ29fZW5hYmxlZDsKIGJvb2xlYW5f cGFyYW0oImFyZ28iLCBvcHRfYXJnb19lbmFibGVkKTsKIAorLyogWGVuIGNvbW1hbmQgbGluZSBv cHRpb24gZm9yIGNvbnNlcnZhdGl2ZSBvciByZWxheGVkIGFjY2VzcyBjb250cm9sICovCitzdGF0 aWMgYm9vbCBfX3JlYWRfbW9zdGx5IG9wdF9hcmdvX21hY19wZXJtaXNzaXZlOworYm9vbGVhbl9w YXJhbSgiYXJnby1tYWMtcGVybWlzc2l2ZSIsIG9wdF9hcmdvX21hY19wZXJtaXNzaXZlKTsKKwog dHlwZWRlZiBzdHJ1Y3QgYXJnb19yaW5nX2lkCiB7CiAgICAgeGVuX2FyZ29fcG9ydF90IGFwb3J0 OwpAQCAtMzA0LDcgKzMyMSw4IEBAIGZpbmRfcmluZ19pbmZvKGNvbnN0IHN0cnVjdCBkb21haW4g KmQsIGNvbnN0IHN0cnVjdCBhcmdvX3JpbmdfaWQgKmlkKQogICAgICAgICAgICAgcmV0dXJuIHJp bmdfaW5mbzsKICAgICAgICAgfQogICAgIH0KLSAgICBhcmdvX2RwcmludGsoIm5vIHJpbmdfaW5m byBmb3VuZFxuIik7CisgICAgYXJnb19kcHJpbnRrKCJubyByaW5nX2luZm8gZm91bmQgZm9yIHJp bmcoJXU6JXggJXUpXG4iLAorICAgICAgICAgICAgICAgICBpZC0+ZG9tYWluX2lkLCBpZC0+YXBv cnQsIGlkLT5wYXJ0bmVyX2lkKTsKIAogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMzMyLDYgKzM1 MCw2NiBAQCByaW5nX3VubWFwKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3Jp bmdfaW5mbyAqcmluZ19pbmZvKQogICAgIH0KIH0KIAorc3RhdGljIGludAorcmluZ19tYXBfcGFn ZShjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5m bywKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGksIHZvaWQgKipvdXRfcHRyKQoreworICAg IEFTU0VSVChMT0NLSU5HX0wzKGQsIHJpbmdfaW5mbykpOworCisgICAgaWYgKCBpID49IHJpbmdf aW5mby0+bm1mbnMgKQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAg ICAgICAgICAgImFyZ286IHJpbmcgKHZtJXU6JXggdm0ldSkgJXAgYXR0ZW1wdGVkIHRvIG1hcCBw YWdlICV1IG9mICV1XG4iLAorICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQuZG9tYWluX2lk LCByaW5nX2luZm8tPmlkLmFwb3J0LAorICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucGFy dG5lcl9pZCwgcmluZ19pbmZvLCBpLCByaW5nX2luZm8tPm5tZm5zKTsKKyAgICAgICAgcmV0dXJu IC1FTk9NRU07CisgICAgfQorICAgIGkgPSBhcnJheV9pbmRleF9ub3NwZWMoaSwgcmluZ19pbmZv LT5ubWZucyk7CisKKyAgICBpZiAoICFyaW5nX2luZm8tPm1mbnMgfHwgIXJpbmdfaW5mby0+bWZu X21hcHBpbmcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg cmluZ19pbmZvLT5sZW4gPSAwOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAg ICBpZiAoICFyaW5nX2luZm8tPm1mbl9tYXBwaW5nW2ldICkKKyAgICB7CisgICAgICAgIHJpbmdf aW5mby0+bWZuX21hcHBpbmdbaV0gPSBtYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHJpbmdfaW5mby0+ bWZuc1tpXSk7CisgICAgICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0gKQorICAg ICAgICB7CisgICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJhcmdvOiByaW5nICh2bSV1 OiV4IHZtJXUpICVwIGF0dGVtcHRlZCB0byBtYXAgIgorICAgICAgICAgICAgICAgICAgICAicGFn ZSAldSBvZiAldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5kb21haW5f aWQsIHJpbmdfaW5mby0+aWQuYXBvcnQsCisgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+ aWQucGFydG5lcl9pZCwgcmluZ19pbmZvLCBpLCByaW5nX2luZm8tPm5tZm5zKTsKKyAgICAgICAg ICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICB9CisgICAgICAgIGFyZ29fZHByaW50aygibWFw cGluZyBwYWdlICUiUFJJX21mbiIgdG8gJXBcbiIsCisgICAgICAgICAgICAgICAgICAgICBtZm5f eChyaW5nX2luZm8tPm1mbnNbaV0pLCByaW5nX2luZm8tPm1mbl9tYXBwaW5nW2ldKTsKKyAgICB9 CisKKyAgICBpZiAoIG91dF9wdHIgKQorICAgICAgICAqb3V0X3B0ciA9IHJpbmdfaW5mby0+bWZu X21hcHBpbmdbaV07CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3VwZGF0ZV90 eF9wdHIoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5n X2luZm8sCisgICAgICAgICAgICAgIHVpbnQzMl90IHR4X3B0cikKK3sKKyAgICB4ZW5fYXJnb19y aW5nX3QgKnJpbmdwOworCisgICAgQVNTRVJUKExPQ0tJTkdfTDMoZCwgcmluZ19pbmZvKSk7Cisg ICAgQVNTRVJUKHJpbmdfaW5mby0+bWZuX21hcHBpbmdbMF0pOworCisgICAgcmluZ19pbmZvLT50 eF9wdHIgPSB0eF9wdHI7CisgICAgcmluZ3AgPSByaW5nX2luZm8tPm1mbl9tYXBwaW5nWzBdOwor CisgICAgd3JpdGVfYXRvbWljKCZyaW5ncC0+dHhfcHRyLCB0eF9wdHIpOworICAgIHNtcF93bWIo KTsKK30KKwogc3RhdGljIHZvaWQKIHdpbGRjYXJkX3BlbmRpbmdfbGlzdF9yZW1vdmUoZG9taWRf dCBkb21haW5faWQsIHN0cnVjdCBwZW5kaW5nX2VudCAqZW50KQogewpAQCAtNDkyLDExICs1NzAs Mzc0IEBAIHBhcnRuZXJfcmluZ3NfcmVtb3ZlKHN0cnVjdCBkb21haW4gKnNyY19kKQogICAgIH0K IH0KIAorLyoKKyAqIEZJWE1FIGZvciA0LjEyOiBpbnZlc3RpZ2F0ZSB1c2luZyBjaGVja19nZXRf cGFnZV9mcm9tX2dmbigpCisgKiAgICAgICAgICAgICAgICAgYW5kIHJld3JpdGUgdGhpcyBmdW5j dGlvbiB1c2luZyBpdCBvciB3aXRoIGFkb3B0ZWQgbG9naWMKKyAqLworc3RhdGljIGludAorZmlu ZF9yaW5nX21mbihzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIG1mbl90ICptZm4pCit7Cisg ICAgcDJtX3R5cGVfdCBwMm10OworICAgIGludCByZXQgPSAwOworCisjaWZkZWYgQ09ORklHX1g4 NgorICAgICptZm4gPSBnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ2ZuX3goZ2ZuKSwgJnAybXQpOworI2Vs c2UKKyAgICAqbWZuID0gcDJtX2xvb2t1cChkLCBnZm4sICZwMm10KTsKKyNlbmRpZgorCisgICAg aWYgKCAhbWZuX3ZhbGlkKCptZm4pICkKKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyNpZmRlZiBD T05GSUdfWDg2CisgICAgZWxzZSBpZiAoIHAybV9pc19wYWdpbmcocDJtdCkgfHwgKHAybXQgPT0g cDJtX3JhbV9sb2dkaXJ0eSkgKQorICAgICAgICByZXQgPSAtRUFHQUlOOworI2VuZGlmCisgICAg ZWxzZSBpZiAoIChwMm10ICE9IHAybV9yYW1fcncpIHx8CisgICAgICAgICAgICAgICFnZXRfcGFn ZV9hbmRfdHlwZShtZm5fdG9fcGFnZSgqbWZuKSwgZCwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAg ICAgICAgcmV0ID0gLUVJTlZBTDsKKworI2lmZGVmIENPTkZJR19YODYKKyAgICBwdXRfZ2ZuKGQs IGdmbl94KGdmbikpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 CitmaW5kX3JpbmdfbWZucyhzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8g KnJpbmdfaW5mbywKKyAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBucGFnZSwKKyAg ICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29fZ2ZuX3QpIGdmbl9o bmQsCisgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbGVuKQoreworICAgIHVuc2ln bmVkIGludCBpOworICAgIGludCByZXQgPSAwOworICAgIG1mbl90ICptZm5zOworICAgIHZvaWQg KiptZm5fbWFwcGluZzsKKworICAgIEFTU0VSVChMT0NLSU5HX1dyaXRlX3JpbmdzX0wyKGQpKTsK KworICAgIGlmICggcmluZ19pbmZvLT5tZm5zICkKKyAgICB7CisgICAgICAgIC8qIFJpbmcgYWxy ZWFkeSBleGlzdGVkOiBkcm9wIHRoZSBwcmV2aW91cyBtYXBwaW5nLiAqLworICAgICAgICBncHJp bnRrKFhFTkxPR19JTkZPLCAiYXJnbzogdm0ldSByZS1yZWdpc3RlciBleGlzdGluZyByaW5nICIK KyAgICAgICAgICAgICAgICAiKHZtJXU6JXggdm0ldSkgY2xlYXJzIG1hcHBpbmdcbiIsCisgICAg ICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByaW5nX2luZm8tPmlkLmRvbWFpbl9pZCwKKyAgICAg ICAgICAgICAgICByaW5nX2luZm8tPmlkLmFwb3J0LCByaW5nX2luZm8tPmlkLnBhcnRuZXJfaWQp OworCisgICAgICAgIHJpbmdfcmVtb3ZlX21mbnMoZCwgcmluZ19pbmZvKTsKKyAgICAgICAgQVNT RVJUKCFyaW5nX2luZm8tPm1mbnMpOworICAgIH0KKworICAgIG1mbnMgPSB4bWFsbG9jX2FycmF5 KG1mbl90LCBucGFnZSk7CisgICAgaWYgKCAhbWZucyApCisgICAgICAgIHJldHVybiAtRU5PTUVN OworCisgICAgZm9yICggaSA9IDA7IGkgPCBucGFnZTsgaSsrICkKKyAgICAgICAgbWZuc1tpXSA9 IElOVkFMSURfTUZOOworCisgICAgbWZuX21hcHBpbmcgPSB4emFsbG9jX2FycmF5KHZvaWQgKiwg bnBhZ2UpOworICAgIGlmICggIW1mbl9tYXBwaW5nICkKKyAgICB7CisgICAgICAgIHhmcmVlKG1m bnMpOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAgICByaW5nX2luZm8tPm1m bnMgPSBtZm5zOworICAgIHJpbmdfaW5mby0+bWZuX21hcHBpbmcgPSBtZm5fbWFwcGluZzsKKwor ICAgIGZvciAoIGkgPSAwOyBpIDwgbnBhZ2U7IGkrKyApCisgICAgeworICAgICAgICB4ZW5fYXJn b19nZm5fdCBhcmdvX2dmbjsKKyAgICAgICAgbWZuX3QgbWZuOworCisgICAgICAgIHJldCA9IF9f Y29weV9mcm9tX2d1ZXN0X29mZnNldCgmYXJnb19nZm4sIGdmbl9obmQsIGksIDEpID8gLUVGQVVM VCA6IDA7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg IHJldCA9IGZpbmRfcmluZ19tZm4oZCwgX2dmbihhcmdvX2dmbiksICZtZm4pOworICAgICAgICBp ZiAoIHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgImFy Z286IHZtJXU6IGludmFsaWQgZ2ZuICUiUFJJX2dmbiIgIgorICAgICAgICAgICAgICAgICAgICAi cjoodm0ldToleCB2bSV1KSAlcCAldS8ldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZC0+ZG9t YWluX2lkLCBnZm5feChfZ2ZuKGFyZ29fZ2ZuKSksCisgICAgICAgICAgICAgICAgICAgIHJpbmdf aW5mby0+aWQuZG9tYWluX2lkLCByaW5nX2luZm8tPmlkLmFwb3J0LAorICAgICAgICAgICAgICAg ICAgICByaW5nX2luZm8tPmlkLnBhcnRuZXJfaWQsIHJpbmdfaW5mbywgaSwgbnBhZ2UpOworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByaW5nX2luZm8tPm1mbnNbaV0g PSBtZm47CisKKyAgICAgICAgYXJnb19kcHJpbnRrKCIldTogJSJQUklfZ2ZuIiAtPiAlIlBSSV9t Zm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgaSwgZ2ZuX3goX2dmbihhcmdvX2dmbikpLCBt Zm5feChyaW5nX2luZm8tPm1mbnNbaV0pKTsKKyAgICB9CisKKyAgICByaW5nX2luZm8tPm5tZm5z ID0gaTsKKworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmluZ19yZW1vdmVfbWZucyhkLCByaW5n X2luZm8pOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVChyaW5nX2luZm8tPm5tZm5z ID09IE5QQUdFU19SSU5HKGxlbikpOworCisgICAgICAgIGdwcmludGsoWEVOTE9HX0RFQlVHLCAi YXJnbzogdm0ldSByaW5nICh2bSV1OiV4IHZtJXUpICVwICIKKyAgICAgICAgICAgICAgICAibWZu X21hcHBpbmcgJXAgbGVuICV1IG5tZm5zICV1XG4iLAorICAgICAgICAgICAgICAgIGQtPmRvbWFp bl9pZCwgcmluZ19pbmZvLT5pZC5kb21haW5faWQsCisgICAgICAgICAgICAgICAgcmluZ19pbmZv LT5pZC5hcG9ydCwgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkLCByaW5nX2luZm8sCisgICAgICAg ICAgICAgICAgcmluZ19pbmZvLT5tZm5fbWFwcGluZywgcmluZ19pbmZvLT5sZW4sIHJpbmdfaW5m by0+bm1mbnMpOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKKy8qCisgKiBGSVhNRSBm b3IgNC4xMjoKKyAqICogc2hyaW5rIGNyaXRpY2FsIHNlY3Rpb25zOiBtb3ZlIGFjcXVpcmUvcmVs ZWFzZSBvZiB0aGUgZ2xvYmFsIGxvY2suCisgKiAqIHNpbXBsaWZ5IHRoZSBvdXQgbGFiZWwgcGF0 aCB3aGVuIGxvY2sgcmVsZWFzZSBoYXMgYmVlbiBtb3ZlZC4KKyAqLworc3RhdGljIGxvbmcKK3Jl Z2lzdGVyX3Jpbmcoc3RydWN0IGRvbWFpbiAqY3VycmQsCisgICAgICAgICAgICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29fcmVnaXN0ZXJfcmluZ190KSByZWdfaG5kLAorICAgICAg ICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX2dmbl90KSBnZm5faG5kLAor ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnBhZ2UsIGJvb2wgZmFpbF9leGlzdCkKK3sKKyAg ICB4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QgcmVnOworICAgIHN0cnVjdCBhcmdvX3JpbmdfaWQg cmluZ19pZDsKKyAgICB2b2lkICptYXBfcmluZ3A7CisgICAgeGVuX2FyZ29fcmluZ190ICpyaW5n cDsKKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKKyAgICBzdHJ1Y3QgYXJn b19zZW5kX2luZm8gKnNlbmRfaW5mbyA9IE5VTEw7CisgICAgc3RydWN0IGRvbWFpbiAqZHN0X2Qg PSBOVUxMOworICAgIGludCByZXQgPSAwOworICAgIHVuc2lnbmVkIGludCBwcml2YXRlX3R4X3B0 cjsKKworICAgIEFTU0VSVChjdXJyZCA9PSBjdXJyZW50LT5kb21haW4pOworCisgICAgaWYgKCBj b3B5X2Zyb21fZ3Vlc3QoJnJlZywgcmVnX2huZCwgMSkgKQorICAgICAgICByZXR1cm4gLUVGQVVM VDsKKworICAgIC8qCisgICAgICogQSByaW5nIG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIHRyYW5z bWl0IG1lc3NhZ2VzLCBzbyByZXF1aXJlcyBzcGFjZSBmb3I6CisgICAgICogKiAxIG1lc3NhZ2Ug aGVhZGVyLCBwbHVzCisgICAgICogKiAxIHBheWxvYWQgc2xvdCAocGF5bG9hZCBpcyBhbHdheXMg cm91bmRlZCB0byBhIG11bHRpcGxlIG9mIDE2IGJ5dGVzKQorICAgICAqICAgZm9yIHRoZSBtZXNz YWdlIHBheWxvYWQgdG8gYmUgd3JpdHRlbiBpbnRvLCBwbHVzCisgICAgICogKiAxIG1vcmUgc2xv dCwgc28gdGhhdCB0aGUgcmluZyBjYW5ub3QgYmUgZmlsbGVkIHRvIGNhcGFjaXR5IHdpdGggYQor ICAgICAqICAgc2luZ2xlIG1pbmltdW0tc2l6ZSBtZXNzYWdlIC0tIHNlZSB0aGUgbG9naWMgaW4g cmluZ2J1Zl9pbnNlcnQgLS0KKyAgICAgKiAgIGFsbG93aW5nIGZvciB0aGlzIGVuc3VyZXMgdGhh dCB0aGVyZSBjYW4gYmUgc3BhY2UgcmVtYWluaW5nIHdoZW4gYQorICAgICAqICAgbWVzc2FnZSBp cyBwcmVzZW50LgorICAgICAqIFRoZSBhYm92ZSBkZXRlcm1pbmVzIHRoZSBtaW5pbXVtIGFjY2Vw dGFibGUgcmluZyBzaXplLgorICAgICAqLworICAgIGlmICggKHJlZy5sZW4gPCAoc2l6ZW9mKHN0 cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyKQorICAgICAgICAgICAgICAgICAgICAg ICsgUk9VTkRVUF9NRVNTQUdFKDEpICsgUk9VTkRVUF9NRVNTQUdFKDEpKSkgfHwKKyAgICAgICAg IChyZWcubGVuID4gWEVOX0FSR09fTUFYX1JJTkdfU0laRSkgfHwKKyAgICAgICAgIChyZWcubGVu ICE9IFJPVU5EVVBfTUVTU0FHRShyZWcubGVuKSkgfHwKKyAgICAgICAgIChOUEFHRVNfUklORyhy ZWcubGVuKSAhPSBucGFnZSkgfHwKKyAgICAgICAgIChyZWcucGFkICE9IDApICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICByaW5nX2lkLnBhcnRuZXJfaWQgPSByZWcucGFydG5lcl9p ZDsKKyAgICByaW5nX2lkLmFwb3J0ID0gcmVnLmFwb3J0OworICAgIHJpbmdfaWQuZG9tYWluX2lk ID0gY3VycmQtPmRvbWFpbl9pZDsKKworICAgIHJlYWRfbG9jaygmTDFfZ2xvYmFsX2FyZ29fcnds b2NrKTsKKworICAgIGlmICggIWN1cnJkLT5hcmdvICkKKyAgICB7CisgICAgICAgIHJldCA9IC1F Tk9ERVY7CisgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICB9CisKKyAgICBpZiAoIHJlZy5w YXJ0bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCisgICAgeworICAgICAgICBpZiAoICFv cHRfYXJnb19tYWNfcGVybWlzc2l2ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IC1F UEVSTTsKKyAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICAgICAgfQorICAgIH0KKyAg ICBlbHNlCisgICAgeworICAgICAgICBkc3RfZCA9IGdldF9kb21haW5fYnlfaWQocmVnLnBhcnRu ZXJfaWQpOworICAgICAgICBpZiAoICFkc3RfZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGFy Z29fZHByaW50aygiIWRzdF9kLCBFU1JDSFxuIik7CisgICAgICAgICAgICByZXQgPSAtRVNSQ0g7 CisgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgICAgIH0KKworICAgICAgICBpZiAo ICFkc3RfZC0+YXJnbyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGFyZ29fZHByaW50aygiIWRz dF9kLT5hcmdvLCBFQ09OTlJFRlVTRURcbiIpOworICAgICAgICAgICAgcmV0ID0gLUVDT05OUkVG VVNFRDsKKyAgICAgICAgICAgIHB1dF9kb21haW4oZHN0X2QpOworICAgICAgICAgICAgZ290byBv dXRfdW5sb2NrOworICAgICAgICB9CisKKyAgICAgICAgc2VuZF9pbmZvID0geHphbGxvYyhzdHJ1 Y3QgYXJnb19zZW5kX2luZm8pOworICAgICAgICBpZiAoICFzZW5kX2luZm8gKQorICAgICAgICB7 CisgICAgICAgICAgICByZXQgPSAtRU5PTUVNOworICAgICAgICAgICAgcHV0X2RvbWFpbihkc3Rf ZCk7CisgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgICAgIH0KKyAgICAgICAgc2Vu ZF9pbmZvLT5pZCA9IHJpbmdfaWQ7CisgICAgfQorCisgICAgd3JpdGVfbG9jaygmY3VycmQtPmFy Z28tPnJpbmdzX0wyX3J3bG9jayk7CisKKyAgICBpZiAoIGN1cnJkLT5hcmdvLT5yaW5nX2NvdW50 ID49IE1BWF9SSU5HU19QRVJfRE9NQUlOICkKKyAgICB7CisgICAgICAgIHJldCA9IC1FTk9TUEM7 CisgICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAgfQorCisgICAgcmluZ19pbmZvID0gZmlu ZF9yaW5nX2luZm8oY3VycmQsICZyaW5nX2lkKTsKKyAgICBpZiAoICFyaW5nX2luZm8gKQorICAg IHsKKyAgICAgICAgcmluZ19pbmZvID0geHphbGxvYyhzdHJ1Y3QgYXJnb19yaW5nX2luZm8pOwor ICAgICAgICBpZiAoICFyaW5nX2luZm8gKQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSAt RU5PTUVNOworICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICAgICAgfQorCisgICAg ICAgIHNwaW5fbG9ja19pbml0KCZyaW5nX2luZm8tPkwzX2xvY2spOworCisgICAgICAgIHJpbmdf aW5mby0+aWQgPSByaW5nX2lkOworICAgICAgICBJTklUX0hMSVNUX0hFQUQoJnJpbmdfaW5mby0+ cGVuZGluZyk7CisKKyAgICAgICAgaGxpc3RfYWRkX2hlYWQoJnJpbmdfaW5mby0+bm9kZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgJmN1cnJkLT5hcmdvLT5yaW5nX2hhc2hbaGFzaF9pbmRleCgm cmluZ19pbmZvLT5pZCldKTsKKworICAgICAgICBncHJpbnRrKFhFTkxPR19ERUJVRywgImFyZ286 IHZtJXUgcmVnaXN0ZXJpbmcgcmluZyAodm0ldToleCB2bSV1KVxuIiwKKyAgICAgICAgICAgICAg ICBjdXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRvbWFpbl9pZCwgcmluZ19pZC5hcG9ydCwKKyAg ICAgICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJfaWQpOworICAgIH0KKyAgICBlbHNlIGlmICgg cmluZ19pbmZvLT5sZW4gKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgdGhlIGNh bGxlciBzcGVjaWZpZWQgdGhhdCB0aGUgcmluZyBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0LAorICAg ICAgICAgKiBmYWlsIGF0IGF0dGVtcHQgdG8gYWRkIGEgY29tcGxldGVkIHJpbmcgd2hpY2ggYWxy ZWFkeSBleGlzdHMuCisgICAgICAgICAqLworICAgICAgICBpZiAoIGZhaWxfZXhpc3QgKQorICAg ICAgICB7CisgICAgICAgICAgICBhcmdvX2RwcmludGsoImRpc2FsbG93ZWQgcmVyZWdpc3RyYXRp b24gb2YgZXhpc3RpbmcgcmluZ1xuIik7CisgICAgICAgICAgICByZXQgPSAtRUVYSVNUOworICAg ICAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggcmlu Z19pbmZvLT5sZW4gIT0gcmVnLmxlbiApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAg ICAgICAgICAgKiBDaGFuZ2Ugb2YgcmluZyBzaXplIGNvdWxkIHJlc3VsdCBpbiBlbnRyaWVzIG9u IHRoZSBwZW5kaW5nCisgICAgICAgICAgICAgKiBub3RpZmljYXRpb25zIGxpc3QgdGhhdCB3aWxs IG5ldmVyIHRyaWdnZXIuCisgICAgICAgICAgICAgKiBTaW1wbGUgYmx1bnQgc29sdXRpb246IGRp c2FsbG93IHJpbmcgcmVzaXplIGZvciBub3cuCisgICAgICAgICAgICAgKiBUT0RPOiBpbnZlc3Rp Z2F0ZSBlbmFibGluZyByaW5nIHJlc2l6ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAg Z3ByaW50ayhYRU5MT0dfRVJSLCAiYXJnbzogdm0ldSBhdHRlbXB0ZWQgdG8gY2hhbmdlIHJpbmcg c2l6ZSAiCisgICAgICAgICAgICAgICAgICAgICIodm0ldToleCB2bSV1KVxuIiwKKyAgICAgICAg ICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgcmluZ19pZC5kb21haW5faWQsIHJpbmdfaWQu YXBvcnQsCisgICAgICAgICAgICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9pZCk7CisgICAgICAg ICAgICAvKgorICAgICAgICAgICAgICogQ291bGQgcmV0dXJuIEVJTlZBTCBoZXJlLCBidXQgaWYg dGhlIHJpbmcgZGlkbid0IGFscmVhZHkKKyAgICAgICAgICAgICAqIGV4aXN0IHRoZW4gdGhlIGFy Z3VtZW50cyB3b3VsZCBoYXZlIGJlZW4gdmFsaWQsIHNvOiBFRVhJU1QuCisgICAgICAgICAgICAg Ki8KKyAgICAgICAgICAgIHJldCA9IC1FRVhJU1Q7CisgICAgICAgICAgICBnb3RvIG91dF91bmxv Y2syOworICAgICAgICB9CisKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfREVCVUcsCisgICAgICAg ICAgICAgICAgImFyZ286IHZtJXUgcmUtcmVnaXN0ZXJpbmcgZXhpc3RpbmcgcmluZyAodm0ldTol eCB2bSV1KVxuIiwKKyAgICAgICAgICAgICAgICBjdXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRv bWFpbl9pZCwgcmluZ19pZC5hcG9ydCwKKyAgICAgICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJf aWQpOworICAgIH0KKworICAgIHJldCA9IGZpbmRfcmluZ19tZm5zKGN1cnJkLCByaW5nX2luZm8s IG5wYWdlLCBnZm5faG5kLCByZWcubGVuKTsKKyAgICBpZiAoIHJldCApCisgICAgeworICAgICAg ICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAgImFyZ286IHZtJXUgZmFpbGVk IHRvIGZpbmQgcmluZyBtZm5zICh2bSV1OiV4IHZtJXUpXG4iLAorICAgICAgICAgICAgICAgIGN1 cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9tYWluX2lkLCByaW5nX2lkLmFwb3J0LAorICAgICAg ICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9pZCk7CisKKyAgICAgICAgcmluZ19yZW1vdmVfaW5m byhjdXJyZCwgcmluZ19pbmZvKTsKKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisK KyAgICAvKgorICAgICAqIFRoZSBmaXJzdCBwYWdlIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgZm9y IHRoZSByaW5nIGhhcyB0aGUgeGVuX2FyZ29fcmluZworICAgICAqIHN0cnVjdHVyZSBhdCBpdHMg aGVhZCwgd2hpY2ggaXMgd2hlcmUgdGhlIHJpbmcgaW5kZXhlcyByZXNpZGUuCisgICAgICovCisg ICAgcmV0ID0gcmluZ19tYXBfcGFnZShjdXJyZCwgcmluZ19pbmZvLCAwLCAmbWFwX3JpbmdwKTsK KyAgICBpZiAoIHJldCApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAg ICAgICAgICAgICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIG1hcCByaW5nIG1mbiAwICh2bSV1OiV4 IHZtJXUpXG4iLAorICAgICAgICAgICAgICAgIGN1cnJkLT5kb21haW5faWQsIHJpbmdfaWQuZG9t YWluX2lkLCByaW5nX2lkLmFwb3J0LAorICAgICAgICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9p ZCk7CisKKyAgICAgICAgcmluZ19yZW1vdmVfaW5mbyhjdXJyZCwgcmluZ19pbmZvKTsKKyAgICAg ICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisgICAgcmluZ3AgPSBtYXBfcmluZ3A7CisKKyAg ICBwcml2YXRlX3R4X3B0ciA9IHJlYWRfYXRvbWljKCZyaW5ncC0+dHhfcHRyKTsKKworICAgIGlm ICggKHByaXZhdGVfdHhfcHRyID49IHJlZy5sZW4pIHx8CisgICAgICAgICAoUk9VTkRVUF9NRVNT QUdFKHByaXZhdGVfdHhfcHRyKSAhPSBwcml2YXRlX3R4X3B0cikgKQorICAgIHsKKyAgICAgICAg LyoKKyAgICAgICAgICogU2luY2UgdGhlIHJpbmcgaXMgYSBtZXNzLCBhdHRlbXB0IHRvIGZsdXNo IHRoZSBjb250ZW50cyBvZiBpdAorICAgICAgICAgKiBoZXJlIGJ5IHNldHRpbmcgdGhlIHR4X3B0 ciB0byB0aGUgbmV4dCBhbGlnbmVkIG1lc3NhZ2Ugc2xvdCBwYXN0CisgICAgICAgICAqIHRoZSBs YXRlc3QgcnhfcHRyIHdlIGhhdmUgb2JzZXJ2ZWQuIEhhbmRsZSByaW5nIHdyYXAgY29ycmVjdGx5 LgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZV90eF9wdHIgPSBST1VORFVQX01FU1NBR0Uo cmVhZF9hdG9taWMoJnJpbmdwLT5yeF9wdHIpKTsKKworICAgICAgICBpZiAoIHByaXZhdGVfdHhf cHRyID49IHJlZy5sZW4gKQorICAgICAgICAgICAgcHJpdmF0ZV90eF9wdHIgPSAwOworCisgICAg ICAgIHVwZGF0ZV90eF9wdHIoY3VycmQsIHJpbmdfaW5mbywgcHJpdmF0ZV90eF9wdHIpOworICAg IH0KKworICAgIHJpbmdfaW5mby0+dHhfcHRyID0gcHJpdmF0ZV90eF9wdHI7CisgICAgcmluZ19p bmZvLT5sZW4gPSByZWcubGVuOworICAgIGN1cnJkLT5hcmdvLT5yaW5nX2NvdW50Kys7CisKKyAg ICBpZiAoIHNlbmRfaW5mbyApCisgICAgeworICAgICAgICBzcGluX2xvY2soJmRzdF9kLT5hcmdv LT5zZW5kX0wyX2xvY2spOworCisgICAgICAgIGhsaXN0X2FkZF9oZWFkKCZzZW5kX2luZm8tPm5v ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICZkc3RfZC0+YXJnby0+c2VuZF9oYXNoW2hhc2hf aW5kZXgoJnNlbmRfaW5mby0+aWQpXSk7CisKKyAgICAgICAgc3Bpbl91bmxvY2soJmRzdF9kLT5h cmdvLT5zZW5kX0wyX2xvY2spOworICAgIH0KKworIG91dF91bmxvY2syOgorICAgIGlmICggIXJl dCApCisgICAgICAgIHhmcmVlKHNlbmRfaW5mbyk7CisKKyAgICBpZiAoIGRzdF9kICkKKyAgICAg ICAgcHV0X2RvbWFpbihkc3RfZCk7CisKKyAgICAvKgorICAgICAqIEZJWE1FIGZvciA0LjEyOiBw dWxsIHRoaXMgd3JpdGVfdW5sb2NrIHVwIGFib3ZlIHRoZSBjbGVhbnVwIGFjdGlvbnMgYWJvdmUK KyAgICAgKiBhbmQgYWRkIGFub3RoZXIgbGFiZWwgdG8gYWJvcmIgdGhlIHR3byBzZXBhcmF0ZSBw dXRfZG9tYWluKCkgY2FsbHMgb24KKyAgICAgKiB0aGUgZXJyb3IgcGF0aHMuCisgICAgICovCisg ICAgd3JpdGVfdW5sb2NrKCZjdXJyZC0+YXJnby0+cmluZ3NfTDJfcndsb2NrKTsKKworIG91dF91 bmxvY2s6CisgICAgcmVhZF91bmxvY2soJkwxX2dsb2JhbF9hcmdvX3J3bG9jayk7CisKKyAgICBy ZXR1cm4gcmV0OworfQorCiBsb25nCiBkb19hcmdvX29wKHVuc2lnbmVkIGludCBjbWQsIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMSwKICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh2b2lkKSBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsCiAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYXJnNCkKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRv bWFpbjsKICAgICBsb25nIHJjID0gLUVGQVVMVDsKIAogICAgIGFyZ29fZHByaW50aygiLT5kb19h cmdvX29wKCV1LCVwLCVwLCVsdSwweCVseClcbiIsIGNtZCwKQEAgLTUwNyw2ICs5NDgsMzggQEAg ZG9fYXJnb19vcCh1bnNpZ25lZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQp IGFyZzEsCiAKICAgICBzd2l0Y2ggKGNtZCkKICAgICB7CisgICAgY2FzZSBYRU5fQVJHT19PUF9y ZWdpc3Rlcl9yaW5nOgorICAgIHsKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5f YXJnb19yZWdpc3Rlcl9yaW5nX3QpIHJlZ19obmQgPQorICAgICAgICAgICAgZ3Vlc3RfaGFuZGxl X2Nhc3QoYXJnMSwgeGVuX2FyZ29fcmVnaXN0ZXJfcmluZ190KTsKKyAgICAgICAgWEVOX0dVRVNU X0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19nZm5fdCkgZ2ZuX2huZCA9CisgICAgICAgICAgICBndWVz dF9oYW5kbGVfY2FzdChhcmcyLCB4ZW5fYXJnb19nZm5fdCk7CisgICAgICAgIC8qIGFyZzMgaXMg bnBhZ2UgKi8KKyAgICAgICAgLyogYXJnNCBpcyBmbGFncyAqLworICAgICAgICBib29sIGZhaWxf ZXhpc3QgPSBhcmc0ICYgWEVOX0FSR09fUkVHSVNURVJfRkxBR19GQUlMX0VYSVNUOworCisgICAg ICAgIGlmICggdW5saWtlbHkoYXJnMyA+IChYRU5fQVJHT19NQVhfUklOR19TSVpFID4+IFBBR0Vf U0hJRlQpKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIGFjY2Vz cyB0byB0aGUgd2hvbGUgYXJyYXkgaGVyZSBzbyB3ZSBjYW4gdXNlIHRoZSBmYXN0ZXIgX19jb3B5 CisgICAgICAgICAqIG9wZXJhdGlvbnMgdG8gcmVhZCBlYWNoIGVsZW1lbnQgbGF0ZXIuCisgICAg ICAgICAqLworICAgICAgICBpZiAoIHVubGlrZWx5KCFndWVzdF9oYW5kbGVfb2theShnZm5faG5k LCBhcmczKSkgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIGFyZzQ6IHJlc2VydmUg Y3VycmVudGx5LXVuZGVmaW5lZCBiaXRzLCByZXF1aXJlIHplcm8uICAqLworICAgICAgICBpZiAo IHVubGlrZWx5KGFyZzQgJiB+WEVOX0FSR09fUkVHSVNURVJfRkxBR19NQVNLKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisKKyAgICAgICAgcmMgPSByZWdpc3Rlcl9yaW5nKGN1cnJkLCByZWdfaG5kLCBnZm5faG5k LCBhcmczLCBmYWlsX2V4aXN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVs dDoKICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL2NvbXBhdC9hcmdvLmMgYi94ZW4vY29tbW9uL2NvbXBhdC9hcmdvLmMKaW5k ZXggOGVkYjllOC4uOTQzN2E3YSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9jb21wYXQvYXJnby5j CisrKyBiL3hlbi9jb21tb24vY29tcGF0L2FyZ28uYwpAQCAtMjAsNCArMjAsNSBAQAogI2luY2x1 ZGUgPGNvbXBhdC9hcmdvLmg+CiAKIENIRUNLX2FyZ29fYWRkcjsKK0NIRUNLX2FyZ29fcmVnaXN0 ZXJfcmluZzsKIENIRUNLX2FyZ29fcmluZzsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy9hcmdvLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCmluZGV4IDUzMGJiODIuLmJkMjMz NzMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL2FyZ28uaApAQCAtMzMsOSArMzMsMTkgQEAKIAogI2RlZmluZSBYRU5fQVJHT19E T01JRF9BTlkgICAgICAgRE9NSURfSU5WQUxJRAogCisvKgorICogVGhlIG1heGltdW0gc2l6ZSBv ZiBhbiBBcmdvIHJpbmcgaXMgZGVmaW5lZCB0byBiZTogMTZNQgorICogIC0tIHdoaWNoIGlzIDB4 MTAwMDAwMCBieXRlcy4KKyAqIEEgYnl0ZSBpbmRleCBpbnRvIHRoZSByaW5nIGlzIGF0IG1vc3Qg MjQgYml0cy4KKyAqLworI2RlZmluZSBYRU5fQVJHT19NQVhfUklOR19TSVpFICAoMHgxMDAwMDAw VUxMKQorCiAvKiBGaXhlZC13aWR0aCB0eXBlIGZvciAiYXJnbyBwb3J0IiBudW1iZXIuIE5vdGhp bmcgdG8gZG8gd2l0aCBldnRjaG5zLiAqLwogdHlwZWRlZiB1aW50MzJfdCB4ZW5fYXJnb19wb3J0 X3Q7CiAKKy8qIGdmbiB0eXBlOiA2NC1iaXQgb24gYWxsIGFyY2hpdGVjdHVyZXMgdG8gYWlkIGF2 b2lkaW5nIGEgY29tcGF0IEFCSSAqLwordHlwZWRlZiB1aW50NjRfdCB4ZW5fYXJnb19nZm5fdDsK KwogdHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fYWRkcgogewogICAgIHhlbl9hcmdvX3BvcnRfdCBh cG9ydDsKQEAgLTYxLDQgKzcxLDcxIEBAIHR5cGVkZWYgc3RydWN0IHhlbl9hcmdvX3JpbmcKICNl bmRpZgogfSB4ZW5fYXJnb19yaW5nX3Q7CiAKK3R5cGVkZWYgc3RydWN0IHhlbl9hcmdvX3JlZ2lz dGVyX3JpbmcKK3sKKyAgICB4ZW5fYXJnb19wb3J0X3QgYXBvcnQ7CisgICAgZG9taWRfdCBwYXJ0 bmVyX2lkOworICAgIHVpbnQxNl90IHBhZDsKKyAgICB1aW50MzJfdCBsZW47Cit9IHhlbl9hcmdv X3JlZ2lzdGVyX3JpbmdfdDsKKworLyogTWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRlZCB0 byBhIG11bHRpcGxlIG9mIHRoaXMgc2l6ZS4gKi8KKyNkZWZpbmUgWEVOX0FSR09fTVNHX1NMT1Rf U0laRSAweDEwCisKK3N0cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyCit7CisgICAg dWludDMyX3QgbGVuOworICAgIHhlbl9hcmdvX2FkZHJfdCBzb3VyY2U7CisgICAgdWludDMyX3Qg bWVzc2FnZV90eXBlOworI2lmIGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgX19TVERDX1ZF UlNJT05fXyA+PSAxOTk5MDFMCisgICAgdWludDhfdCBkYXRhW107CisjZWxpZiBkZWZpbmVkKF9f R05VQ19fKQorICAgIHVpbnQ4X3QgZGF0YVswXTsKKyNlbmRpZgorfTsKKworLyoKKyAqIEh5cGVy Y2FsbCBvcGVyYXRpb25zCisgKi8KKworLyogRklYTUUgZm9yIDQuMTI6CisgKiAtIGRyb3AgdXNl IG9mIHVuc2lnbmVkIGxvbmcgdHlwZSBhcyBoeXBlcmNhbGwgYXJnczogbm90IGNvbXBhdC1mcmll bmRseQorICogLSBkcm9wIFVMIHN1ZmZpeCBvbiBYRU5fQVJHT19SRUdJU1RFUl9GTEFHX01BU0sK KyAqIC0gZ3VhcmQgWEVOX0FSR09fUkVHSVNURVJfRkxBR19NQVNLIChwZXJoYXBzIGZyYW1lZCBi eSAiI2lmZGVmIF9fWEVOX18iKQorICogLSBkZWZpbmUgWEVOX0FSR09fUkVHSVNURVJfRkxBR19N QVNLIGluIHRlcm1zIG9mIG90aGVyIGZsYWdzIGRlZmluZWQKKyAqLworLyoKKyAqIFhFTl9BUkdP X09QX3JlZ2lzdGVyX3JpbmcKKyAqCisgKiBSZWdpc3RlciBhIHJpbmcgdXNpbmcgdGhlIGd1ZXN0 LXN1cHBsaWVkIG1lbW9yeSBwYWdlcy4KKyAqIEFsc28gdXNlZCB0byByZXJlZ2lzdGVyIGFuIGV4 aXN0aW5nIHJpbmcgKGVnLiBhZnRlciByZXN1bWUgZnJvbSBoaWJlcm5hdGUpLgorICoKKyAqIFRo ZSBmaXJzdCBhcmd1bWVudCBzdHJ1Y3QgaW5kaWNhdGVzIHRoZSBwb3J0IG51bWJlciBmb3IgdGhl IHJpbmcgdG8gcmVnaXN0ZXIKKyAqIGFuZCB0aGUgcGFydG5lciBkb21haW4sIGlmIGFueSwgdGhh dCBpcyB0byBiZSBhbGxvd2VkIHRvIHNlbmQgdG8gdGhlIHJpbmcuCisgKiBBIHdpbGRjYXJkIChY RU5fQVJHT19ET01JRF9BTlkpIG1heSBiZSBzdXBwbGllZCBpbnN0ZWFkIG9mIGEgcGFydG5lciBk b21pZCwKKyAqIGFuZCBpZiB0aGUgaHlwZXJ2aXNvciBoYXMgd2lsZGNhcmQgc2VuZGVyIHJpbmdz IGVuYWJsZWQsIHRoaXMgd2lsbCBhbGxvdworICogYW55IGRvbWFpbiAoWFNNIG5vdHdpdGhzdGFu ZGluZykgdG8gc2VuZCB0byB0aGUgcmluZy4KKyAqCisgKiBUaGUgc2Vjb25kIGFyZ3VtZW50IGlz IGFuIGFycmF5IG9mIGd1ZXN0IGZyYW1lIG51bWJlcnMgYW5kIHRoZSB0aGlyZCBhcmd1bWVudAor ICogaW5kaWNhdGVzIHRoZSBzaXplIG9mIHRoZSBhcnJheS4gVGhpcyBvcGVyYXRpb24gb25seSBz dXBwb3J0cyA0Sy1zaXplZCBwYWdlcy4KKyAqCisgKiBhcmcxOiBYRU5fR1VFU1RfSEFORExFKHhl bl9hcmdvX3JlZ2lzdGVyX3JpbmdfdCkKKyAqIGFyZzI6IFhFTl9HVUVTVF9IQU5ETEUoeGVuX2Fy Z29fZ2ZuX3QpCisgKiBhcmczOiB1bnNpZ25lZCBsb25nIG5wYWdlcworICogYXJnNDogdW5zaWdu ZWQgbG9uZyBmbGFncworICovCisjZGVmaW5lIFhFTl9BUkdPX09QX3JlZ2lzdGVyX3JpbmcgICAg IDEKKworLyogUmVnaXN0ZXIgb3AgZmxhZ3MgKi8KKy8qCisgKiBGYWlsIGV4aXN0OgorICogSWYg c2V0LCByZWplY3QgYXR0ZW1wdHMgdG8gKHJlKXJlZ2lzdGVyIGFuIGV4aXN0aW5nIGVzdGFibGlz aGVkIHJpbmcuCisgKiBJZiBjbGVhciwgcmVyZWdpc3RyYXRpb24gb2NjdXJzIGlmIHRoZSByaW5n IGV4aXN0cywgd2l0aCB0aGUgbmV3IHJpbmcKKyAqIHRha2luZyB0aGUgcGxhY2Ugb2YgdGhlIG9s ZCwgcHJlc2VydmluZyB0eF9wdHIgaWYgaXQgcmVtYWlucyB2YWxpZC4KKyAqLworI2RlZmluZSBY RU5fQVJHT19SRUdJU1RFUl9GTEFHX0ZBSUxfRVhJU1QgIDB4MQorCisvKiBNYXNrIGZvciBhbGwg ZGVmaW5lZCBmbGFncy4gdW5zaWduZWQgbG9uZyB0eXBlIHNvIG9rIGZvciBib3RoIDMyLzY0LWJp dCAqLworI2RlZmluZSBYRU5fQVJHT19SRUdJU1RFUl9GTEFHX01BU0sgMHgxVUwKKwogI2VuZGlm CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0 CmluZGV4IDlmNjE2ZTQuLjljOWQzM2YgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0 CisrKyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CkBAIC0xNTAsMyArMTUwLDQgQEAKID8JZmxhc2tf dHJhbnNpdGlvbgkJeHNtL2ZsYXNrX29wLmgKID8JYXJnb19hZGRyCQkJYXJnby5oCiA/CWFyZ29f cmluZwkJCWFyZ28uaAorPwlhcmdvX3JlZ2lzdGVyX3JpbmcJCWFyZ28uaAotLSAKMi43LjQKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs