From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8 02/25] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Wed, 13 Apr 2016 17:09:33 -0400 Message-ID: <1460581796-30071-3-git-send-email-konrad.wilk@oracle.com> References: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqS3L-0006BN-FV for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:10:23 +0000 In-Reply-To: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Wei Liu , Daniel De Graaf , Stefano Stabellini , Ian Jackson , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGRvIGFueSBwYXRjaGluZy4KCkl0 IGp1c3QgYWRkcyB0aGUgZnJhbWV3b3JrIGZvciBkb2luZyB0aGUgaHlwZXJjYWxscywKa2VlcGlu ZyB0cmFjayBvZiBFTEYgcGF5bG9hZHMsIGFuZCB0aGUgYmFzaWMgb3BlcmF0aW9uczoKIC0gcXVl cnkgd2hpY2ggcGF5bG9hZHMgZXhpc3QsCiAtIHF1ZXJ5IGZvciBzcGVjaWZpYyBwYXlsb2FkcywK IC0gY2hlY2sqMSwgYXBwbHkqMSwgcmVwbGFjZSoxLCBhbmQgdW5sb2FkIHBheWxvYWRzLgoKKjE6 IFdoaWNoIG9mIGNvdXJzZSBpbiB0aGlzIHBhdGNoIGFyZSBub3BzLgoKVGhlIGZ1bmN0aW9uYWxp dHkgaXMgZGlzYWJsZWQgb24gQVJNIHVudGlsIGFsbCBhcmNoCmNvbXBvbmVudHMgYXJlIGltcGxl bWVudGVkLgoKQWxzbyBieSBkZWZhdWx0IGl0IGlzIGRpc2FibGVkIHVudGlsIHRoZSBpbXBsZW1l bnRhdGlvbgppcyBpbiBwbGFjZS4KCldlIGFsc28gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MgdG8g c28gdGhhdCB0aGUgZmluZF9wYXlsb2FkCmZ1bmN0aW9uIGRvZXMgbm90IG5lZWQgdG8gaGF2ZSBh ICdsb2NrJyBhbmQgJ25vbi1sb2NrJyB2YXJpYW50LgoKU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6 ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb3Nz IExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBEYW5pZWwgRGUg R3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KCi0tLQpDYzogRGFuaWVsIERlIEdyYWFmIDxk Z2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0 cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4K Q2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cgp2MjogUmViYXNlZCBvbiBrZXloYW5k bGVyOiByZXdvcmsga2V5aGFuZGxlciBpbmZyYXN0cnVjdHVyZQp2MzogRml4ZWQgWFNNLgogLSBS ZW1vdmVkIFJFVkVSVEVEIHN0YXRlLgogICAgU3BsaXQgc3RhdHVzIGFuZCBlcnJvciBjb2RlLgog ICAgQWRkIFJFUExBQ0UgYWN0aW9uLgogICAgU2VwYXJhdGUgcGF5bG9hZCBkYXRhIGZyb20gdGhl IHBheWxvYWQgc3RydWN0dXJlLgogICAgcy9YU1BMSUNFX0lEXy4uL1hTUExJQ0VfTkFNRV8uLi8K IC0gQWRkIHhzcGxpY2UgYW5kIENPTkZJR19YU1BMSUNFIGJ1aWxkIHRvcHRpb24uCiAgICBGaXgg Y29kZSBwZXIgSmFuJ3MgcmV2aWV3LgogICAgVXBkYXRlIHRoZSBzeXNjdGwuaCAoY2hhbmdlIGJp dHMgdG8gZW51bSBsaWtlKQogLSBSZWJhc2Ugb24gS2NvbmZpZyBjaGFuZ2VzLgogLSBBZGQgbWlz c2luZyBwYWQgY2hlY2tzLiBSZS1vcmRlciBrZXloYW5kbGVyLmggdG8gYnVpbGQgb24gQVJNLgog LSBSZWJhc2Ugb24gYnVpbGQ6IGhvb2sgdGhlIHNjaGVkdWxlcnMgaW50byBLY29uZmlnCiAtIHMv aWQvbmFtZS87IHMvcGF5bG9hZF9saXN0X2xvY2svcGF5bG9hZF9sb2NrLwogLSBQdXQgI2lmZGVm IENPTkZJR19YU1BMSUNFIGluIGhlYWRlciBmaWxlIHBlciBEb3VnIHJldmlldy4KIC0gQW5kcmV3 IHJldmlldzoKICAgIC0gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MsIGNoYW5nZSBuYW1lIHRvIHhz cGxpY2Vfb3AsCiAgICAgIHNwcmlua2xlIG5ldy1saW5lcywgYWRkIGxvY2FsIHZhcmlhYmxlIGJs b2NrLCBpbmNsdWRlCiAgICAgIHN0YXRlIGRpYWdyYW0sIHNxdWFzaCB0d28gZ290byBsYWJlbHMs IHVzZSB2emFsbG9jIGluc3RlYWQgb2YKICAgICAgYWxsb2NfeGVuaGVhcF9wYWdlcy4KICAgIC0g Y2hhbmdlICdzdGF0ZScgZnJvbSBpbnQzMiB0byB1aW50MzJfdAogICAgLSByZW1vdmUgdGhlIGVy ciBsYWJlbCBvdXQgb2YgeHNwbGljZV91cGxvYWQKICAgIC0gdXNlIHZvaWQqIGluc3RhZWQgb2Yg dWludDhfdAogICAgLSBtb3ZlIGNvZGUgYXJvdW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQu CiAgICAtIEFkZCB2bWFwLmggdG8gY29tcGlsZXIgdW5kZXIgQVJNLgogLSBBZGQgbWlzc2luZyBD b3B5cmlnaHQgaW4gaGVhZGVyIGZpbGUKIC0gRHJvcHBlZCBMT0FERUQgc3RhdGUsIG1ha2UgdGhl IHBheWxvYWQgZ28gaW4gQ0hFQ0tFRC4KdjQ6IE1hZGUgaXQgb25seSB3b3JrIG9uIHg4NiBwZXIg SnVsaWVuJ3MgKEFSTSkgbWFpbnRhaW5lciByZXF1ZXN0Lgp2NTogRHJvcHBlZCB0aGUgbG9hZC0+ Y2hlY2sgc3RhdGUgZXhhbXBsZSBpbiBzeXNjdGwuaAogICAgTWFkZSB0aGUgLT5ucj0wIGNhbGwg d29yay4gUmVtb3ZlIHJjPTAgaW4gbG90cyBvZiBjYXNlcy4gVXBkYXRlCiAgICBoZWFkZXIgZnJv bSBkZXNpZ24gZG9jLgp2NjogVXBkYXRlIHdoYXQgJ2lkeCcgbWVhbnMuIERvbid0IGRyb3AgbG9j ayBpbiBmaW5kX3BheWxvYWQuIE1ha2UKICAgIGZpbmRfbmFtZSBjb3B5IGRhdGEuCnY3OiBEb24n dCBwcmludCAtRUlOVkFMIHdoZW4gcGF5bG9hZF9jbnQgaXMgemVybyAoYW5kIHRvb2xzdGFjayBw cm92aWRlcwogICAgaWR4IGFzIHplcm8pLiBDaGFuZ2UgcmV0dXJuIGNvZGUgdG8gLUVOT1NZUywg c28gY2hhbmdlIGNhbGxiYWNrIHNldHRpbmcKICAgIGJhc2VkIG9uIC1FTk9TWVMgYW5kIC1FT1BO T1RTVVBQLgogICAgQWRkIGV4dHJhIHByaW50ayBpbiBrZXloYW5kbGVyLgogICAgVXNlIGlmICgu LikgZWxzZSBpbiAgeHNwbGljZV91cGxvYWQgaW5zdGVhZCBvZiB0d28gJ2lmJy4KICAgIFJlbW92 ZSAjaWZkZWYgaW4gWFNNIG1hY2hpbmVyeS4KICAgIEFkZCBBbmRyZXcncyBSZXZpZXdlZC1ieS4K ICAgIFJlYmFzZSBvbiB4ODYvY3B1OiBTeXNjdGwgYW5kIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBm b3IgbGV2ZWxsaW5nIGNvbnRleHQgc3dpdGNoaW5nCiAgICBhbmQgeGVuK3Rvb2xzOiBFeHBvcnQg bWF4aW11bSBob3N0IGFuZCBndWVzdCBjcHUgZmVhdHVyZXNldHMgdmlhIFNZU0NUTAotLS0KLS0t CiB0b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSB8ICAgMSArCiB4 ZW4vY29tbW9uL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiB4ZW4v Y29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29t bW9uL3N5c2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiB4ZW4vY29tbW9u L3hzcGxpY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwNCArKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCAgICAgICAgICAgICAgICAg IHwgMTY2ICsrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oICAgICAgICAgICAg ICAgICAgICB8ICAzNSArKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA0ICsKIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzICAgICAg ICAgIHwgICAyICsKIDkgZmlsZXMgY2hhbmdlZCwgNjMxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vY29tbW9uL3hzcGxpY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9p bmNsdWRlL3hlbi94c3BsaWNlLmgKCmRpZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xpY3kvcG9s aWN5L21vZHVsZXMveGVuL3hlbi50ZSBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxl cy94ZW4veGVuLnRlCmluZGV4IGE1NTE3NTYuLjM0ZmNmYjkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zs YXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCisrKyBiL3Rvb2xzL2ZsYXNrL3Bv bGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCkBAIC03NCw2ICs3NCw3IEBAIGFsbG93IGRv bTBfdCB4ZW5fdDp4ZW4yIHsKICAgICBnZXRfc3ltYm9sCiAgICAgZ2V0X2NwdV9sZXZlbGxpbmdf Y2FwcwogICAgIGdldF9jcHVfZmVhdHVyZXNldAorICAgIHhzcGxpY2Vfb3AKIH07CiAKICMgQWxs b3cgZG9tMCB0byB1c2UgYWxsIFhFTlZFUl8gc3Vib3BzIGFuZCBWRVJTSU9OIHN1Ym9wcyB0aGF0 IGhhdmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1v bi9LY29uZmlnCmluZGV4IGFkOWY3YmYuLmZlYTMzZDMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v S2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTE4OCw0ICsxODgsMTYgQEAgY29u ZmlnIFNDSEVEX0RFRkFVTFQKIAogZW5kbWVudQogCisjIEVuYWJsZS9EaXNhYmxlIHhzcGxpY2Ug c3VwcG9ydAorY29uZmlnIFhTUExJQ0UKKwlib29sICJ4U3BsaWNlIGxpdmUgcGF0Y2hpbmcgc3Vw cG9ydCIKKwlkZWZhdWx0IG4KKwlkZXBlbmRzIG9uIFg4NgorCS0tLWhlbHAtLS0KKwkgIEFsbG93 cyBhIHJ1bm5pbmcgWGVuIGh5cGVydmlzb3IgdG8gYmUgZHluYW1pY2FsbHkgcGF0Y2hlZCB1c2lu ZworCSAgYmluYXJ5IHBhdGNoZXMgd2l0aG91dCByZWJvb3RpbmcuIFRoaXMgaXMgcHJpbWFyaWx5 IHVzZWQgdG8gYmluYXJpbHkKKwkgIHBhdGNoIGluIHRoZSBmaWVsZCBhbiBoeXBlcnZpc29yIHdp dGggWFNBIGZpeGVzLgorCisJICBJZiB1bnN1cmUsIHNheSBZLgorCiBlbmRtZW51CmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCA3N2Rl MjdlLi45MTBhYzY5IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9j b21tb24vTWFrZWZpbGUKQEAgLTU3LDYgKzU3LDcgQEAgb2JqLXkgKz0gdnNwcmludGYubwogb2Jq LXkgKz0gd2FpdC5vCiBvYmotJChDT05GSUdfWEVOT1BST0YpICs9IHhlbm9wcm9mLm8KIG9iai15 ICs9IHhtYWxsb2NfdGxzZi5vCitvYmotJChDT05GSUdfWFNQTElDRSkgKz0geHNwbGljZS5vCiAK IG9iai1iaW4tJChDT05GSUdfWDg2KSArPSAkKGZvcmVhY2ggbixkZWNvbXByZXNzIGJ1bnppcDIg dW54eiB1bmx6bWEgdW5sem8gdW5sejQgZWFybHljcGlvLCQobikuaW5pdC5vKQogCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3N5c2N0bC5jIGIveGVuL2NvbW1vbi9zeXNjdGwuYwppbmRleCAyNTNi N2M4Li5kMDRkNTI5IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3N5c2N0bC5jCisrKyBiL3hlbi9j b21tb24vc3lzY3RsLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx4c20veHNtLmg+CiAj aW5jbHVkZSA8eGVuL3Btc3RhdC5oPgogI2luY2x1ZGUgPHhlbi9nY292Lmg+CisjaW5jbHVkZSA8 eGVuL3hzcGxpY2UuaD4KIAogbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogewpAQCAtNDYwLDYgKzQ2MSwxMSBAQCBsb25nIGRvX3N5 c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxfdCkgdV9zeXNjdGwpCiAgICAg ICAgIHJldCA9IHRtZW1fY29udHJvbCgmb3AtPnUudG1lbV9vcCk7CiAgICAgICAgIGJyZWFrOwog CisgICAgY2FzZSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3A6CisgICAgICAgIHJldCA9IHhzcGxpY2Vf b3AoJm9wLT51LnhzcGxpY2UpOworICAgICAgICBjb3B5YmFjayA9IChyZXQgPT0gLUVOT1NZUyB8 fCByZXQgPT0gLUVPUE5PVFNVUFApID8gMCA6IDE7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVm YXVsdDoKICAgICAgICAgcmV0ID0gYXJjaF9kb19zeXNjdGwob3AsIHVfc3lzY3RsKTsKICAgICAg ICAgY29weWJhY2sgPSAwOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4v Y29tbW9uL3hzcGxpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDE1 MWU5Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKQEAgLTAsMCArMSw0 MDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxp YXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi9lcnIu aD4KKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL2tleWhhbmRs ZXIuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNs dWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vc21w Lmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNp bmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCisjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+CisjaW5jbHVk ZSA8cHVibGljL3N5c2N0bC5oPgorCisvKiBQcm90ZWN0cyBhZ2FpbnN0IHBheWxvYWRfbGlzdCBv cGVyYXRpb25zLiAqLworc3RhdGljIERFRklORV9TUElOTE9DSyhwYXlsb2FkX2xvY2spOworc3Rh dGljIExJU1RfSEVBRChwYXlsb2FkX2xpc3QpOworCitzdGF0aWMgdW5zaWduZWQgaW50IHBheWxv YWRfY250Oworc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3ZlcnNpb24gPSAxOworCitzdHJ1 Y3QgcGF5bG9hZCB7CisgICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAgICAgIC8q IE9uZSBvZiB0aGUgWFNQTElDRV9TVEFURV8qLiAqLworICAgIGludDMyX3QgcmM7ICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiAwIG9yIC1YRU5fRVhYLiAqLworICAgIHN0cnVjdCBsaXN0X2hl YWQgbGlzdDsgICAgICAgICAgICAgICAvKiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcuICovCisg ICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICov Cit9OworCitzdGF0aWMgaW50IHZlcmlmeV9uYW1lKGNvbnN0IHhlbl94c3BsaWNlX25hbWVfdCAq bmFtZSwgY2hhciAqbikKK3sKKyAgICBpZiAoICFuYW1lLT5zaXplIHx8IG5hbWUtPnNpemUgPiBY RU5fWFNQTElDRV9OQU1FX1NJWkUgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlm ICggbmFtZS0+cGFkWzBdIHx8IG5hbWUtPnBhZFsxXSB8fCBuYW1lLT5wYWRbMl0gKQorICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hhbmRsZV9va2F5KG5hbWUtPm5h bWUsIG5hbWUtPnNpemUpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIF9f Y29weV9mcm9tX2d1ZXN0KG4sIG5hbWUtPm5hbWUsIG5hbWUtPnNpemUpICkKKyAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CisKKyAgICBpZiAoIG5bbmFtZS0+c2l6ZSAtIDFdICkKKyAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2ZXJpZnlfcGF5 bG9hZChjb25zdCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCwgY2hhciAqbikK K3sKKyAgICBpZiAoIHZlcmlmeV9uYW1lKCZ1cGxvYWQtPm5hbWUsIG4pICkKKyAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICF1cGxvYWQtPnNpemUgKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIGlmICggdXBsb2FkLT5zaXplID4gTUIoMikgKQorICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hhbmRsZV9va2F5KHVwbG9hZC0+cGF5bG9h ZCwgdXBsb2FkLT5zaXplKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmluZF9wYXlsb2FkKGNvbnN0IGNoYXIg Km5hbWUpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGEsICpmb3VuZCA9IE5VTEw7CisKKyAg ICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOworICAgIGxpc3RfZm9yX2Vh Y2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlm ICggIXN0cmNtcChkYXRhLT5uYW1lLCBuYW1lKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv dW5kID0gZGF0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg cmV0dXJuIGZvdW5kOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3BheWxvYWQoc3RydWN0IHBheWxv YWQgKmRhdGEpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwYXlsb2FkX2xvY2spKTsK KyAgICBsaXN0X2RlbCgmZGF0YS0+bGlzdCk7CisgICAgcGF5bG9hZF9jbnQtLTsKKyAgICBwYXls b2FkX3ZlcnNpb24rKzsKKyAgICB4ZnJlZShkYXRhKTsKK30KKworc3RhdGljIGludCB4c3BsaWNl X3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKK3sKKyAgICBzdHJ1 Y3QgcGF5bG9hZCAqZGF0YSA9IE5VTEwsICpmb3VuZDsKKyAgICBjaGFyIG5bWEVOX1hTUExJQ0Vf TkFNRV9TSVpFXTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHZlcmlmeV9wYXlsb2FkKHVwbG9h ZCwgbik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9j aygmcGF5bG9hZF9sb2NrKTsKKworICAgIGZvdW5kID0gZmluZF9wYXlsb2FkKG4pOworICAgIGlm ICggSVNfRVJSKGZvdW5kKSApCisgICAgeworICAgICAgICByYyA9IFBUUl9FUlIoZm91bmQpOwor ICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgZWxzZSBpZiAoIGZvdW5kICkKKyAgICB7Cisg ICAgICAgIHJjID0gLUVFWElTVDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgZGF0 YSA9IHh6YWxsb2Moc3RydWN0IHBheWxvYWQpOworICAgIGlmICggIWRhdGEgKQorICAgIHsKKyAg ICAgICAgcmMgPSAtRU5PTUVNOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByYyA9 IDA7CisKKyAgICBtZW1jcHkoZGF0YS0+bmFtZSwgbiwgc3RybGVuKG4pKTsKKyAgICBkYXRhLT5z dGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+ bGlzdCk7CisKKyAgICBsaXN0X2FkZF90YWlsKCZkYXRhLT5saXN0LCAmcGF5bG9hZF9saXN0KTsK KyAgICBwYXlsb2FkX2NudCsrOworICAgIHBheWxvYWRfdmVyc2lvbisrOworCisgb3V0OgorICAg IHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgaWYgKCByYyApCisgICAgICAgIHhm cmVlKGRhdGEpOworCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfZ2V0 KHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCAqZ2V0KQoreworICAgIHN0cnVjdCBwYXlsb2FkICpk YXRhOworICAgIGludCByYzsKKyAgICBjaGFyIG5bWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsKKwor ICAgIHJjID0gdmVyaWZ5X25hbWUoJmdldC0+bmFtZSwgbik7CisgICAgaWYgKCByYyApCisgICAg ICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgIGRh dGEgPSBmaW5kX3BheWxvYWQobik7CisgICAgaWYgKCBJU19FUlJfT1JfTlVMTChkYXRhKSApCisg ICAgeworICAgICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgICAgICBpZiAo ICFkYXRhICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgICAgIHJldHVybiBQ VFJfRVJSKGRhdGEpOworICAgIH0KKworICAgIGdldC0+c3RhdHVzLnN0YXRlID0gZGF0YS0+c3Rh dGU7CisgICAgZ2V0LT5zdGF0dXMucmMgPSBkYXRhLT5yYzsKKworICAgIHNwaW5fdW5sb2NrKCZw YXlsb2FkX2xvY2spOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9s aXN0KHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QgKmxpc3QpCit7CisgICAgeGVuX3hzcGxpY2Vf c3RhdHVzX3Qgc3RhdHVzOworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIHVuc2lnbmVk IGludCBpZHggPSAwLCBpID0gMDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgaWYgKCBsaXN0LT5u ciA+IDEwMjQgKQorICAgICAgICByZXR1cm4gLUUyQklHOworCisgICAgaWYgKCBsaXN0LT5wYWQg KQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggbGlzdC0+bnIgJiYKKyAgICAg ICAgICghZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+c3RhdHVzLCBsaXN0LT5ucikgfHwKKyAgICAg ICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+bmFtZSwgWEVOX1hTUExJQ0VfTkFNRV9TSVpF ICogbGlzdC0+bnIpIHx8CisgICAgICAgICAgIWd1ZXN0X2hhbmRsZV9va2F5KGxpc3QtPmxlbiwg bGlzdC0+bnIpKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgc3Bpbl9sb2NrKCZw YXlsb2FkX2xvY2spOworICAgIGlmICggbGlzdC0+aWR4ID49IHBheWxvYWRfY250ICYmIHBheWxv YWRfY250ICkKKyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIGxpc3QtPm5yICkKKyAgICB7 CisgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3Qg KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCBsZW47CisKKyAgICAgICAgICAgIGlm ICggbGlzdC0+aWR4ID4gaSsrICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg ICAgICAgc3RhdHVzLnN0YXRlID0gZGF0YS0+c3RhdGU7CisgICAgICAgICAgICBzdGF0dXMucmMg PSBkYXRhLT5yYzsKKyAgICAgICAgICAgIGxlbiA9IHN0cmxlbihkYXRhLT5uYW1lKSArIDE7CisK KyAgICAgICAgICAgIC8qIE4uQi4gJ2lkeCcgIT0gJ2knLiAqLworICAgICAgICAgICAgaWYgKCBf X2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPm5hbWUsIGlkeCAqIFhFTl9YU1BMSUNFX05BTUVf U0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5uYW1l LCBsZW4pIHx8CisgICAgICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0X29mZnNldChsaXN0LT5s ZW4sIGlkeCwgJmxlbiwgMSkgfHwKKyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zm c2V0KGxpc3QtPnN0YXR1cywgaWR4LCAmc3RhdHVzLCAxKSApCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICBpZHgrKzsKKworICAgICAgICAgICAgaWYgKCAoaWR4ID49 IGxpc3QtPm5yKSB8fCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBsaXN0LT5uciA9IHBheWxvYWRfY250IC0g aTsgLyogUmVtYWluaW5nIGFtb3VudC4gKi8KKyAgICBsaXN0LT52ZXJzaW9uID0gcGF5bG9hZF92 ZXJzaW9uOworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgLyogQW5kIGhv dyBtYW55IHdlIGhhdmUgcHJvY2Vzc2VkLiAqLworICAgIHJldHVybiByYyA/IDogaWR4OworfQor CitzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAq YWN0aW9uKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhOworICAgIGNoYXIgbltYRU5fWFNQ TElDRV9OQU1FX1NJWkVdOworICAgIGludCByYzsKKworICAgIHJjID0gdmVyaWZ5X25hbWUoJmFj dGlvbi0+bmFtZSwgbik7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAg IHNwaW5fbG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgIGRhdGEgPSBmaW5kX3BheWxvYWQobik7 CisgICAgaWYgKCBJU19FUlJfT1JfTlVMTChkYXRhKSApCisgICAgeworICAgICAgICBzcGluX3Vu bG9jaygmcGF5bG9hZF9sb2NrKTsKKworICAgICAgICBpZiAoICFkYXRhICkKKyAgICAgICAgICAg IHJldHVybiAtRU5PRU5UOworCisgICAgICAgIHJldHVybiBQVFJfRVJSKGRhdGEpOworICAgIH0K KworICAgIHN3aXRjaCAoIGFjdGlvbi0+Y21kICkKKyAgICB7CisgICAgY2FzZSBYU1BMSUNFX0FD VElPTl9DSEVDSzoKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NI RUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQu ICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAg ICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAg IGNhc2UgWFNQTElDRV9BQ1RJT05fVU5MT0FEOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09 IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyZWVfcGF5 bG9hZChkYXRhKTsKKyAgICAgICAgICAgIC8qIE5vIHRvdWNoaW5nICdkYXRhJyBmcm9tIGhlcmUg b24hICovCisgICAgICAgICAgICBkYXRhID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBicmVh azsKKworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgorICAgICAgICBpZiAoIGRhdGEt PnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCisgICAgICAgIHsKKyAgICAgICAgICAg IC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0g WFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAg ICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9BUFBMWToKKyAg ICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQorICAgICAg ICB7CisgICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCisgICAgICAgICAg ICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKKyAgICAgICAgICAgIGRhdGEt PnJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgWFNQTElDRV9B Q1RJT05fUkVQTEFDRToKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRF X0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5 ZXQuICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsK KyAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKwor ICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7CisgICAgICAgIGJyZWFrOwor ICAgIH0KKworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgcmV0dXJuIHJj OworfQorCitpbnQgeHNwbGljZV9vcCh4ZW5fc3lzY3RsX3hzcGxpY2Vfb3BfdCAqeHNwbGljZSkK K3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIHhzcGxpY2UtPnBhZCApCisgICAgICAgIHJldHVy biAtRUlOVkFMOworCisgICAgc3dpdGNoICggeHNwbGljZS0+Y21kICkKKyAgICB7CisgICAgY2Fz ZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEOgorICAgICAgICByYyA9IHhzcGxpY2VfdXBsb2Fk KCZ4c3BsaWNlLT51LnVwbG9hZCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lT Q1RMX1hTUExJQ0VfR0VUOgorICAgICAgICByYyA9IHhzcGxpY2VfZ2V0KCZ4c3BsaWNlLT51Lmdl dCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVDoK KyAgICAgICAgcmMgPSB4c3BsaWNlX2xpc3QoJnhzcGxpY2UtPnUubGlzdCk7CisgICAgICAgIGJy ZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OOgorICAgICAgICByYyA9 IHhzcGxpY2VfYWN0aW9uKCZ4c3BsaWNlLT51LmFjdGlvbik7CisgICAgICAgIGJyZWFrOworCisg ICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgYnJlYWs7Cisg ICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzdGF0ZTJzdHIo dWludDMyX3Qgc3RhdGUpCit7CisjZGVmaW5lIFNUQVRFKHgpIFtYU1BMSUNFX1NUQVRFXyMjeF0g PSAjeAorICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geworICAgICAgICAg ICAgU1RBVEUoQ0hFQ0tFRCksCisgICAgICAgICAgICBTVEFURShBUFBMSUVEKSwKKyAgICB9Owor I3VuZGVmIFNUQVRFCisKKyAgICBpZiAoc3RhdGUgPj0gQVJSQVlfU0laRShuYW1lcykgfHwgIW5h bWVzW3N0YXRlXSkKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKworICAgIHJldHVybiBuYW1l c1tzdGF0ZV07Cit9CisKK3N0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hh ciBrZXkpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisKKyAgICBwcmludGsoIicldScg cHJlc3NlZCAtIER1bXBpbmcgYWxsIHhzcGxpY2UgcGF0Y2hlc1xuIiwga2V5KTsKKworICAgIGlm ICggIXNwaW5fdHJ5bG9jaygmcGF5bG9hZF9sb2NrKSApCisgICAgeworICAgICAgICBwcmludGso IkxvY2sgaGVsZC4gVHJ5IGFnYWluLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCisgICAg ICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpXG4iLCBkYXRhLT5uYW1lLAorICAgICAg ICAgICAgICAgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+c3RhdGUpOworCisgICAgc3Bp bl91bmxvY2soJnBheWxvYWRfbG9jayk7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IHhzcGxpY2Vf aW5pdCh2b2lkKQoreworICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4c3BsaWNlX3ByaW50 YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKyAgICByZXR1cm4gMDsKK30KK19faW5p dGNhbGwoeHNwbGljZV9pbml0KTsKKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lz Y3RsLmgKaW5kZXggNDU5NmQyMC4uMDkwZmQyMSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaApAQCAtODEyLDYg KzgxMiwxNzAgQEAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2ZlYXR1cmVzZXQgewogdHlwZWRlZiBz dHJ1Y3QgeGVuX3N5c2N0bF9mZWF0dXJlc2V0IHhlbl9zeXNjdGxfZmVhdHVyZXNldF90OwogREVG SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0dXJlc2V0X3QpOwogCisvKgorICog WEVOX1NZU0NUTF9YU1BMSUNFX29wCisgKgorICogUmVmZXIgdG8gdGhlIGRvY3MvdW5zdGFibGUv bWlzYy94c3BsaWNlLm1hcmtkb3duCisgKiBmb3IgdGhlIGRlc2lnbiBkZXRhaWxzIG9mIHRoaXMg aHlwZXJjYWxsLgorICoKKyAqIFRoZXJlIGFyZSBmb3VyIHN1Yi1vcHM6CisgKiAgWEVOX1NZU0NU TF9YU1BMSUNFX1VQTE9BRCAoMCkKKyAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUICgxKQorICog IFhFTl9TWVNDVExfWFNQTElDRV9MSVNUICgyKQorICogIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJ T04gKDMpCisgKgorICogVGhlIG5vcm1hbCBzZXF1ZW5jZSBvZiBzdWItb3BzIGlzIHRvOgorICog IDEpIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgdG8gdXBsb2FkIHRoZSBwYXlsb2FkLiBJZiBl cnJvcnMgU1RPUC4KKyAqICAyKSBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUIHRvIGNoZWNrIHRoZSBg LT5yY2AuIElmIC1YRU5fRUFHQUlOIHNwaW4uCisgKiAgICAgSWYgemVybyBnbyB0byBuZXh0IHN0 ZXAuCisgKiAgMykgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiB3aXRoIFhTUExJQ0VfQUNUSU9O X0FQUExZIHRvIGFwcGx5IHRoZSBwYXRjaC4KKyAqICA0KSBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VU IHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmIGluIC1YRU5fRUFHQUlOIHNwaW4uCisgKiAgICAgSWYg emVybyBleGl0IHdpdGggc3VjY2Vzcy4KKyAqLworCisvKgorICogU3RydWN0dXJlIGRlc2NyaWJp bmcgYW4gRUxGIHBheWxvYWQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlCisgKiBwYXlsb2FkLiBT aG91bGQgYmUgaHVtYW4gcmVhZGFibGUuCisgKiBSZWNvbW1lbmRlZCBsZW5ndGggaXMgdXB0byBY RU5fWFNQTElDRV9OQU1FX1NJWkUuCisgKiBJbmNsdWRlcyB0aGUgTlVMIHRlcm1pbmF0b3IuCisg Ki8KKyNkZWZpbmUgWEVOX1hTUExJQ0VfTkFNRV9TSVpFIDEyOAorc3RydWN0IHhlbl94c3BsaWNl X25hbWUgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQoY2hhcikgbmFtZTsgICAgICAgICAvKiBJ TjogcG9pbnRlciB0byBuYW1lLiAqLworICAgIHVpbnQxNl90IHNpemU7ICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBJTjogc2l6ZSBvZiBuYW1lLiBNYXkgYmUgdXB0bworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fWFNQTElDRV9OQU1FX1NJWkUu ICovCisgICAgdWludDE2X3QgcGFkWzNdOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBN VVNUIGJlIHplcm8uICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3hzcGxpY2VfbmFtZSB4ZW5f eHNwbGljZV9uYW1lX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5feHNwbGljZV9uYW1l X3QpOworCisvKgorICogVXBsb2FkIGEgcGF5bG9hZCB0byB0aGUgaHlwZXJ2aXNvci4gVGhlIHBh eWxvYWQgaXMgdmVyaWZpZWQKKyAqIGFnYWluc3QgYmFzaWMgY2hlY2tzIGFuZCBpZiB0aGVyZSBh cmUgYW55IGlzc3VlcyB0aGUgcHJvcGVyIHJldHVybiBjb2RlCisgKiB3aWxsIGJlIHJldHVybmVk LiBUaGUgcGF5bG9hZCBpcyBub3QgYXBwbGllZCBhdCB0aGlzIHRpbWUgLSB0aGF0IGlzCisgKiBj b250cm9sbGVkIGJ5IFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04uCisgKgorICogVGhlIHJldHVy biB2YWx1ZSBpcyB6ZXJvIGlmIHRoZSBwYXlsb2FkIHdhcyBzdWNjZXNmdWxseSB1cGxvYWRlZC4K KyAqIE90aGVyd2lzZSBhbiBFWFggcmV0dXJuIHZhbHVlIGlzIHByb3ZpZGVkLiBEdXBsaWNhdGUg YG5hbWVgIGFyZSBub3QKKyAqIHN1cHBvcnRlZC4KKyAqCisgKiBUaGUgcGF5bG9hZCBhdCB0aGlz IHBvaW50IGlzIHZlcmlmaWVkIGFnYWluc3QgYmFzaWMgY2hlY2tzLgorICoKKyAqIFRoZSBgcGF5 bG9hZGAgaXMgdGhlIEVMRiBwYXlsb2FkIGFzIG1lbnRpb25lZCBpbiB0aGUgYFBheWxvYWQgZm9y bWF0YAorICogc2VjdGlvbiBpbiB0aGUgeFNwbGljZSBkZXNpZ24gZG9jdW1lbnQuCisgKi8KKyNk ZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAwCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX3VwbG9hZCB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAgICAgICAgICAgICAg IC8qIElOLCBuYW1lIG9mIHRoZSBwYXRjaC4gKi8KKyAgICB1aW50NjRfdCBzaXplOyAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogSU4sIHNpemUgb2YgdGhlIEVMRiBmaWxlLiAqLworICAgIFhF Tl9HVUVTVF9IQU5ETEVfNjQodWludDgpIHBheWxvYWQ7ICAgICAvKiBJTiwgdGhlIEVMRiBmaWxl LiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWQgeGVuX3N5 c2N0bF94c3BsaWNlX3VwbG9hZF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0 bF94c3BsaWNlX3VwbG9hZF90KTsKKworLyoKKyAqIFJldHJpZXZlIGFuIHN0YXR1cyBvZiBhbiBz cGVjaWZpYyBwYXlsb2FkLgorICoKKyAqIFVwb24gY29tcGxldGlvbiB0aGUgYHN0cnVjdCB4ZW5f eHNwbGljZV9zdGF0dXNgIGlzIHVwZGF0ZWQuCisgKgorICogVGhlIHJldHVybiB2YWx1ZSBpcyB6 ZXJvIG9uIHN1Y2Nlc3MgYW5kIFhFTl9FWFggb24gZmFpbHVyZS4gVGhpcyBvcGVyYXRpb24KKyAq IGlzIHN5bmNocm9ub3VzIGFuZCBkb2VzIG5vdCByZXF1aXJlIHByZWVtcHRpb24uCisgKi8KKyNk ZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCAxCisKK3N0cnVjdCB4ZW5feHNwbGljZV9zdGF0 dXMgeworI2RlZmluZSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgICAgICAxCisjZGVmaW5lIFhTUExJ Q0VfU1RBVEVfQVBQTElFRCAgICAgIDIKKyAgICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAg ICAgLyogT1VUOiBYU1BMSUNFX1NUQVRFXyouICovCisgICAgaW50MzJfdCByYzsgICAgICAgICAg ICAgICAgICAgIC8qIE9VVDogMCBpZiBubyBlcnJvciwgb3RoZXJ3aXNlIC1YRU5fRVhYLiAqLwor fTsKK3R5cGVkZWYgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1cyB4ZW5feHNwbGljZV9zdGF0dXNf dDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNlX3N0YXR1c190KTsKKworc3Ry dWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeworICAgIHhlbl94c3BsaWNlX25hbWVfdCBuYW1l OyAgICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF5bG9hZC4gKi8KKyAgICB4ZW5f eHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7ICAgICAgICAgICAgLyogSU4vT1VULCBzdGF0ZSBvZiBp dC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0IHhlbl9zeXNj dGxfeHNwbGljZV9nZXRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfeHNw bGljZV9nZXRfdCk7CisKKy8qCisgKiBSZXRyaWV2ZSBhbiBhcnJheSBvZiBhYmJyZXZpYXRlZCBz dGF0dXMgYW5kIG5hbWVzIG9mIHBheWxvYWRzIHRoYXQgYXJlCisgKiBsb2FkZWQgaW4gdGhlIGh5 cGVydmlzb3IuCisgKgorICogSWYgdGhlIGh5cGVyY2FsbCByZXR1cm5zIGFuIHBvc2l0aXZlIG51 bWJlciwgaXQgaXMgdGhlIG51bWJlciAodXAgdG8gYG5yYCkKKyAqIG9mIHRoZSBwYXlsb2FkcyBy ZXR1cm5lZCwgYWxvbmcgd2l0aCBgbnJgIHVwZGF0ZWQgd2l0aCB0aGUgbnVtYmVyIG9mIHJlbWFp bmluZworICogcGF5bG9hZHMsIGB2ZXJzaW9uYCB1cGRhdGVkIChpdCBtYXkgYmUgdGhlIHNhbWUg YWNyb3NzIGh5cGVyY2FsbHMuIElmIGl0CisgKiB2YXJpZXMgdGhlIGRhdGEgaXMgc3RhbGUgYW5k IGZ1cnRoZXIgY2FsbHMgY291bGQgZmFpbCkuIFRoZSBgc3RhdHVzYCwKKyAqIGBuYW1lYCwgYW5k IGBsZW5gJyBhcmUgdXBkYXRlZCBhdCB0aGVpciBkZXNpZ25lZCBpbmRleCB2YWx1ZSAoYGlkeGAp IHdpdGgKKyAqIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiBkYXRhLgorICoKKyAqIElmIHRoZSBoeXBl cmNhbGwgcmV0dXJucyBFMkJJRyB0aGUgYG5yYCBpcyB0b28gYmlnIGFuZCBzaG91bGQgYmUKKyAq IGxvd2VyZWQuIFRoZSB1cHBlciBsaW1pdCBvZiBgbnJgIGlzIGxlZnQgdG8gdGhlIGltcGxlbWVu dGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgZHVlIHRvIHRoZSBhc3luY2hyb25vdXMgbmF0dXJlIG9m IGh5cGVyY2FsbHMgdGhlIGRvbWFpbiBtaWdodCBoYXZlCisgKiBhZGRlZCBvciByZW1vdmVkIHRo ZSBudW1iZXIgb2YgcGF5bG9hZHMgbWFraW5nIHRoaXMgaW5mb3JtYXRpb24gc3RhbGUuIEl0IGlz CisgKiB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRvb2xzdGFjayB0byB1c2UgdGhlIGB2ZXJz aW9uYCBmaWVsZCB0byBjaGVjaworICogYmV0d2VlbiBlYWNoIGludm9jYXRpb24uIGlmIHRoZSB2 ZXJzaW9uIGRpZmZlcnMgaXQgc2hvdWxkIGRpc2NhcmQgdGhlIHN0YWxlCisgKiBkYXRhIGFuZCBz dGFydCBmcm9tIHNjcmF0Y2guIEl0IGlzIE9LIGZvciB0aGUgdG9vbHN0YWNrIHRvIHVzZSB0aGUg bmV3CisgKiBgdmVyc2lvbmAgZmllbGQuCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNF X0xJU1QgMgorc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9saXN0IHsKKyAgICB1aW50MzJfdCB2 ZXJzaW9uOyAgICAgICAgICAgICAgICAgICAgICAgLyogT1VUOiBIeXBlcnZpc29yIHN0YW1wcyB2 YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg dmFyaWVzIGJldHdlZW4gY2FsbHMsIHdlIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKiBnZXR0aW5nIHN0YWxlIGRhdGEuICovCisgICAgdWludDMyX3Qg aWR4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBJbmRleCBpbnRvIGh5cGVydmlz b3IgbGlzdC4gKi8KKyAgICB1aW50MzJfdCBucjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogSU46IEhvdyBtYW55IHN0YXR1cywgbmFtZSwgYW5kIGxlbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgZmlsbCBvdXQuIENhbiBiZSB6ZXJv IHRvIGdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh bW91bnQgb2YgcGF5bG9hZHMgYW5kIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9VVDogSG93IG1hbnkgcGF5bG9hZHMgbGVmdC4gKi8KKyAg ICB1aW50MzJfdCBwYWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IE11c3QgYmUg emVyby4gKi8KKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHhlbl94c3BsaWNlX3N0YXR1c190KSBz dGF0dXM7ICAvKiBPVVQuIE11c3QgaGF2ZSBlbm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UgYWxsb2NhdGUgZm9yIG5yIG9mIHRoZW0uICov CisgICAgWEVOX0dVRVNUX0hBTkRMRV82NChjaGFyKSBuYW1lOyAgICAgICAgIC8qIE9VVDogQXJy YXkgb2YgbmFtZXMuIEVhY2ggbWVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1VU1QgWEVOX1hTUExJQ0VfTkFNRV9TSVpFIGluIHNpemUuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgaGF2ZSBuciBv ZiB0aGVtLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDMyKSBsZW47ICAgICAgICAv KiBPVVQ6IEFycmF5IG9mIGxlbmd0aHMgb2YgbmFtZSdzLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGhhdmUgbnIgb2YgdGhlbS4gKi8KK307Cit0 eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf bGlzdF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX2xpc3Rf dCk7CisKKy8qCisgKiBQZXJmb3JtIGFuIG9wZXJhdGlvbiBvbiB0aGUgcGF5bG9hZCBzdHJ1Y3R1 cmUgcmVmZXJlbmNlZCBieSB0aGUgYG5hbWVgIGZpZWxkLgorICogVGhlIG9wZXJhdGlvbiByZXF1 ZXN0IGlzIGFzeW5jaHJvbm91cyBhbmQgdGhlIHN0YXR1cyBzaG91bGQgYmUgcmV0cmlldmVkCisg KiBieSB1c2luZyBlaXRoZXIgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCBvciBYRU5fU1lTQ1RMX1hT UExJQ0VfTElTVCBoeXBlcmNhbGwuCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX0FD VElPTiAzCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbiB7CisgICAgeGVuX3hzcGxp Y2VfbmFtZV90IG5hbWU7ICAgICAgICAgICAgICAgIC8qIElOLCBuYW1lIG9mIHRoZSBwYXRjaC4g Ki8KKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fQ0hFQ0sgICAgICAgIDEKKyNkZWZpbmUgWFNQTElD RV9BQ1RJT05fVU5MT0FEICAgICAgIDIKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fUkVWRVJUICAg ICAgIDMKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fQVBQTFkgICAgICAgIDQKKyNkZWZpbmUgWFNQ TElDRV9BQ1RJT05fUkVQTEFDRSAgICAgIDUKKyAgICB1aW50MzJfdCBjbWQ7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogSU46IFhTUExJQ0VfQUNUSU9OXyouICovCisgICAgdWludDMyX3Qg dGltZW91dDsgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBaZXJvIGlmIG5vIHRpbWVvdXQu ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9yIHVw cGVyIGJvdW5kIG9mIHRpbWUgKG1zKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBmb3Igb3BlcmF0aW9uIHRvIHRha2UuICovCit9OwordHlwZWRlZiBz dHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbiB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9u X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3Qp OworCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wIHsKKyAgICB1aW50MzJfdCBjbWQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IFhFTl9TWVNDVExfWFNQTElDRV8qLiAqLwor ICAgIHVpbnQzMl90IHBhZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogQWx3YXlz IHplcm8uICovCisgICAgdW5pb24geworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2Fk X3QgdXBsb2FkOworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90IGxpc3Q7CisgICAg ICAgIHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCBnZXQ7CisgICAgICAgIHhlbl9zeXNjdGxfeHNw bGljZV9hY3Rpb25fdCBhY3Rpb247CisgICAgfSB1OworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9z eXNjdGxfeHNwbGljZV9vcCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3BfdDsKK0RFRklORV9YRU5fR1VF U1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9vcF90KTsKKwogc3RydWN0IHhlbl9zeXNjdGwg ewogICAgIHVpbnQzMl90IGNtZDsKICNkZWZpbmUgWEVOX1NZU0NUTF9yZWFkY29uc29sZSAgICAg ICAgICAgICAgICAgICAgMQpAQCAtODM5LDYgKzEwMDMsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7 CiAjZGVmaW5lIFhFTl9TWVNDVExfdG1lbV9vcCAgICAgICAgICAgICAgICAgICAgICAgMjQKICNk ZWZpbmUgWEVOX1NZU0NUTF9nZXRfY3B1X2xldmVsbGluZ19jYXBzICAgICAgICAyNQogI2RlZmlu ZSBYRU5fU1lTQ1RMX2dldF9jcHVfZmVhdHVyZXNldCAgICAgICAgICAgIDI2CisjZGVmaW5lIFhF Tl9TWVNDVExfeHNwbGljZV9vcCAgICAgICAgICAgICAgICAgICAgMjcKICAgICB1aW50MzJfdCBp bnRlcmZhY2VfdmVyc2lvbjsgLyogWEVOX1NZU0NUTF9JTlRFUkZBQ0VfVkVSU0lPTiAqLwogICAg IHVuaW9uIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfcmVhZGNvbnNvbGUgICAgICAgcmVh ZGNvbnNvbGU7CkBAIC04NjYsNiArMTAzMSw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICAg ICAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCAgICAgICAgICAgdG1lbV9vcDsKICAgICAgICAg c3RydWN0IHhlbl9zeXNjdGxfY3B1X2xldmVsbGluZ19jYXBzIGNwdV9sZXZlbGxpbmdfY2FwczsK ICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2ZlYXR1cmVzZXQgICAgY3B1X2ZlYXR1cmVz ZXQ7CisgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgICAgICAgIHhzcGxpY2U7 CiAgICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOwog ICAgIH0gdTsKIH07CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oIGIveGVu L2luY2x1ZGUveGVuL3hzcGxpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iOWYwOGNkCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApA QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpZm5kZWYg X19YRU5fWFNQTElDRV9IX18KKyNkZWZpbmUgX19YRU5fWFNQTElDRV9IX18KKworc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV9vcDsKKworI2lmZGVmIENPTkZJR19YU1BMSUNFCisKK2ludCB4c3Bs aWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKik7CisKKyNlbHNlCisKKyNpbmNs dWRlIDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHhz cGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqb3ApCit7CisgICAgcmV0dXJu IC1FTk9TWVM7Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfWFNQTElDRSAqLworCisjZW5kaWYgLyog X19YRU5fWFNQTElDRV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXgg MjMzNjEyZS4uMTRjYTE2MyAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBi L3hlbi94c20vZmxhc2svaG9va3MuYwpAQCAtODE0LDYgKzgxNCwxMCBAQCBzdGF0aWMgaW50IGZs YXNrX3N5c2N0bChpbnQgY21kKQogICAgIGNhc2UgWEVOX1NZU0NUTF9nZXRfY3B1X2ZlYXR1cmVz ZXQ6CiAgICAgICAgIHJldHVybiBkb21haW5faGFzX3hlbihjdXJyZW50LT5kb21haW4sIFhFTjJf X0dFVF9DUFVfRkVBVFVSRVNFVCk7CiAKKyAgICBjYXNlIFhFTl9TWVNDVExfeHNwbGljZV9vcDoK KyAgICAgICAgcmV0dXJuIGF2Y19jdXJyZW50X2hhc19wZXJtKFNFQ0lOSVRTSURfWEVOLCBTRUND TEFTU19YRU4yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOMl9fWFNQ TElDRV9PUCwgTlVMTCk7CisKICAgICBkZWZhdWx0OgogICAgICAgICBwcmludGsoImZsYXNrX3N5 c2N0bDogVW5rbm93biBvcCAlZFxuIiwgY21kKTsKICAgICAgICAgcmV0dXJuIC1FUEVSTTsKZGlm ZiAtLWdpdCBhL3hlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzIGIveGVuL3hzbS9m bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKaW5kZXggMGViYjU2Yi4uNmMwY2U3YyAxMDA2NDQK LS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKKysrIGIveGVuL3hzbS9m bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKQEAgLTk3LDYgKzk3LDggQEAgY2xhc3MgeGVuMgog ICAgIGdldF9jcHVfbGV2ZWxsaW5nX2NhcHMKICMgWEVOX1NZU0NUTF9nZXRfY3B1X2ZlYXR1cmVz ZXQKICAgICBnZXRfY3B1X2ZlYXR1cmVzZXQKKyMgWEVOX1NZU0NUTF94c3BsaWNlX29wCisgICAg eHNwbGljZV9vcAogfQogCiAjIENsYXNzZXMgZG9tYWluIGFuZCBkb21haW4yIGNvbnNpc3Qgb2Yg b3BlcmF0aW9ucyB0aGF0IGEgZG9tYWluIHBlcmZvcm1zIG9uCi0tIAoyLjUuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==