From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: [PATCH XEN v8 02/29] tools: Refactor /dev/xen/evtchn wrappers into libxenevtchn. Date: Fri, 15 Jan 2016 13:22:41 +0000 Message-ID: <1452864188-2417-3-git-send-email-ian.campbell@citrix.com> References: <1452864168.32341.97.camel@citrix.com> <1452864188-2417-1-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1452864188-2417-1-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, xen-devel@lists.xen.org Cc: Ian Campbell List-Id: xen-devel@lists.xenproject.org bGlieGVuZXZ0Y2huIHdpbGwgcHJvdmlkZSBhIHN0YWJsZSBBUEkgYW5kIEFCSSBmb3IgYWNjZXNz aW5nIHRoZQpldnRjaG4gZGV2aWNlLgoKVGhlIGZ1bmN0aW9ucyBhcmUgbW92ZWQgaW50byB0aGUg eGVuZXZ0Y2huIG5hbWVzcGFjZSB0byBtYWtlIGEgY2xlYW4KYnJlYWsgZnJvbSBsaWJ4YyBhbmQg YXZvaWQgYW1iaWd1aXR5IHJlZ2FyZGluZyB3aGljaCBpbnRlcmZhY2VzIGFyZQpzdGFibGUuCgpB bGwgaW4tdHJlZSB1c2VycyBhcmUgdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBuYW1lcy4KClVwb24g cmVxdWVzdCAodmlhICNkZWZpbmUgWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSSkgbGlieGVuY3Ry bCB3aWxsCnByb3ZpZGUgYSBjb21wYXQgQVBJIGZvciB0aGUgb2xkIG5hbWVzLiBUaGlzIGlzIHVz ZWQgYnkgcWVtdS14ZW4gZm9yCnRoZSB0aW1lIGJlaW5nLiBxZW11LXhlbi10cmFkaXRpb25hbCBp cyB1cGRhdGVkIGluIGxvY2tzdGVwLgoKVGhpcyBsZWF2ZXMgYSBmZXcgZXZlbnQgY2hhbm5lbCBy ZWxhdGVkIGZ1bmN0aW9ucyB3aGljaCBnbyB2aWEgcHJpdmNtZAooRVZUQ0hOT1ApIHJhdGhlciB0 aGFuIGlvY3RscyBvbiB0aGUgL2Rldi94ZW4vZXZ0Y2huIGRldmljZSBpbgpsaWJ4ZW5jdHJsLiBT cGVjaWZpY2FsbHk6CgogLSB4Y19ldnRjaG5fYWxsb2NfdW5ib3VuZAogLSB4Y19ldnRjaG5fcmVz ZXQKIC0geGNfZXZ0Y2huX3N0YXR1cwoKTm90ZSB0aGF0IHhjX2V2dGNobl9hbGxvY191bmJvdW5k J3MgZnVuY3Rpb25hbGl0eSBpcyBhbHNvIHByb3ZpZGVkIGJ5CnhlbmV2dGNobl9iaW5kX3VuYm91 bmRfcG9ydCgpIChuw6llIHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCkgYW5kIGlzCnByb2Jh Ymx5IHJlZHVuZGFudC4KClRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgYXBwZWFyIHRvIGJlIG5lZWRl ZCBieSBxZW11LWRtLCBxZW11LXB2Cihwcm92aXNpb24gb2YgZGV2aWNlIG1vZGVsIHRvIEhWTSBn dWVzdHMgYW5kIFBWIGJhY2tlbmRzIHJlc3BlY3RpdmVseSkKb3IgYnkgbGlidmNoYW4gc3VnZ2Vz dGluZyB0aGV5IGFyZSBub3QgbmVlZGVkIGJ5IG5vbi10b29sc3RhY2sgdXNlcyBvZgpldmVudCBj aGFubmVscy4gUUVNVSBkb2VzIHVzZSB0aGVzZSBpbiBody94ZW5wdi94ZW5fZG9tYWluYnVpbGQu YyBidXQKdGhhdCBpcyBhICJ0b29sc3RhY2sgdXNlIi4KClRoZSBuZXcgbGlicmFyeSB1c2VzIGEg dmVyc2lvbiBzY3JpcHQgdG8gZW5zdXJlIHRoYXQgb25seSBleHBlY3RlZApzeW1ib2xzIGFyZSBl eHBvcnRlZCBhbmQgdG8gdmVyc2lvbiB0aGVtIHN1Y2ggdGhhdCBBQkkgZ3VhcmFudGVlcyBjYW4K YmUga2VwdCBpbiB0aGUgZnV0dXJlLgoKU2lnbmVkLW9mZi1ieTogSWFuIENhbXBiZWxsIDxpYW4u Y2FtcGJlbGxAY2l0cml4LmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5j b20+CkFja2VkLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0t CgpNdXN0IGJlIGFwcGxpZWQgd2l0aDoKCiAtICJxZW11LXhlbi10cmFkaXRpb25hbDogVXNlIGxp YnhlbmV2dGNobiIgYW5kIGEgY29ycmVzcG9uZGluZwogICBRRU1VX1RBRyB1cGRhdGUgZm9sZGVk IGhlcmUuCiAtICJtaW5pLW9zOiBJbmNsdWRlIGxpYnhlbmV2dGNobiB3aXRoIGxpYnhjIiIgYW5k IGEgY29ycmVzcG9uZGluZwogICBidW1wIHRvIE1JTklPU19VUFNUUkVBTV9SRVZJU0lPTiBmb2xk ZWQgaW4gaGVyZS4KCnYyOiBVcGRhdGUgZG9jIGF0IHNhbWUgdGltZQogICAgUmVtb3ZlZCBzb21l IHN0cmF5IGNvbXBhdCB0aGluZwp2MzogTW92ZWQgdG8gdG9vbHMvbGlicy9ldnRjaG4KdjQ6IHR5 cGVkZWYgdGhlIHhlbmV2dGNobl9oYW5kbGUgaW4geGVuZ3Vlc3QuaCBpbnN0ZWFkIG9mICNpbmNs dWRlLCB0bwogICAgYXZvaWQgbGVha2luZyB0aGUgbGlieGVuZXZ0Y2huIG5hbWVzcGFjZSBpbnRv IGNhbGxlcnMgd2hvIG1heSBub3QKICAgIHdhbnQgaXQuIChBbmQgYWxzbyB0byBhdm9pZCBhZGRp bmcgbG90cyBvZiAtSSB0byBwbGFjZXMgbGlrZQogICAgc3R1YmRvbSBidWlsZHMpCnY1OiBIYW5k bGUgTlVMTCBwYXNzZWQgdG8gX2Nsb3NlKCkKdjY6IFByb3Blcmx5IHBvcnQgeGVuLWFjY2VzcyB0 byBuZXcgQVBJIChpbnN0ZWFkIG9mIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwpCnY3OiBBZGRlZCBt ay1oZWFkZXJzLSQoWEVOX1RBUkdFVF9BUkNIKSBidWlsZCBkZXBlbmRlbmN5IGluc3RlYWQgb2YK ICAgIG9wZW4gY29kaW5nIHRoZSByZWN1cnNpb24uCnY4OiBSZW1vdmUgKi5zbyBvbiBjbGVhbiwg YWRkIGRpc3RjbGVhbiB0YXJnZXQuCi0tLQogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHN0dWJkb20vTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxNyArLQogdG9vbHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA1ICstCiB0b29scy9SdWxlcy5tayAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTQgKy0KIHRvb2xzL2NvbnNvbGUvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArCiB0b29scy9jb25zb2xlL2RhZW1vbi9pby5jICAgICAgICAgICAg ICAgICAgICAgfCAgNDMgKystLQogdG9vbHMvbGlicy9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHRvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICA2OSArKysrKysrCiB0b29scy9saWJzL2V2dGNobi9jb3JlLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgNzIgKysrKysrKwogdG9vbHMvbGlicy9ldnRjaG4vZnJlZWJzZC5jICAg ICAgICAgICAgICAgICAgIHwgMTM4ICsrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZXZ0Y2huL2lu Y2x1ZGUveGVuZXZ0Y2huLmggICAgICAgICB8IDE1MCArKysrKysrKysrKysrKwogdG9vbHMvbGli cy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcCAgICAgICAgICAgIHwgIDE5ICsrCiB0b29scy9saWJz L2V2dGNobi9saW51eC5jICAgICAgICAgICAgICAgICAgICAgfCAxMzYgKysrKysrKysrKysrKwog dG9vbHMvbGlicy9ldnRjaG4vbWluaW9zLmMgICAgICAgICAgICAgICAgICAgIHwgMjY5ICsrKysr KysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJzL2V2dGNobi9uZXRic2QuYyAgICAgICAg ICAgICAgICAgICAgfCAxNDcgKysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZXZ0Y2huL3ByaXZh dGUuaCAgICAgICAgICAgICAgICAgICB8ICAyNSArKysKIHRvb2xzL2xpYnMvZXZ0Y2huL3NvbGFy aXMuYyAgICAgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrKysrCiB0b29scy9saWJzL3Rv b2xsb2cvaW5jbHVkZS94ZW50b29sbG9nLmggICAgICAgfCAgMTAgKwogdG9vbHMvbGlicy90b29s bG9nL3h0bF9jb3JlLmMgICAgICAgICAgICAgICAgIHwgIDEwICsKIHRvb2xzL2xpYnMvdG9vbGxv Zy94dGxfbG9nZ2VyX3N0ZGlvLmMgICAgICAgICB8ICAxMCArCiB0b29scy9saWJ2Y2hhbi9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHRvb2xzL2xpYnZjaGFuL2luaXQu YyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQogdG9vbHMvbGlidmNoYW4vaW8uYyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiB0b29scy9saWJ2Y2hhbi9saWJ4ZW52 Y2hhbi5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHRvb2xzL2xpYnhjL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmggICAgICAgICAgICAgICAgIHwgIDk5ICstLS0tLS0tLS0KIHRvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybF9jb21wYXQuaCAgICAgICAgICB8ICA0OCArKysrKwogdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5ndWVzdC5oICAgICAgICAgICAgICAgIHwgIDE0ICstCiB0b29scy9saWJ4Yy94Y19l dnRjaG5fY29tcGF0LmMgICAgICAgICAgICAgICAgfCAgNzUgKysrKysrKwogdG9vbHMvbGlieGMv eGNfZnJlZWJzZF9vc2RlcC5jICAgICAgICAgICAgICAgIHwgMTAxIC0tLS0tLS0tLS0KIHRvb2xz L2xpYnhjL3hjX2xpbnV4X29zZGVwLmMgICAgICAgICAgICAgICAgICB8ICA5NSAtLS0tLS0tLS0K IHRvb2xzL2xpYnhjL3hjX21pbmlvcy5jICAgICAgICAgICAgICAgICAgICAgICB8IDIyMSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL2xpYnhjL3hjX25ldGJzZC5jICAgICAgICAgICAgICAg ICAgICAgICB8IDEwOSAtLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jICAgICAg ICAgICAgICAgICAgICAgIHwgIDQwIC0tLS0KIHRvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaCAgICAg ICAgICAgICAgICAgICAgICB8ICAgNyAtCiB0b29scy9saWJ4Yy94Y19zb2xhcmlzLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgOTcgLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfc3VzcGVuZC5j ICAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiB0b29scy9saWJ4bC9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHRvb2xzL2xpYnhsL2xpYnhsLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3Bl bmQuYyAgICAgICAgICAgICAgIHwgICA0ICstCiB0b29scy9saWJ4bC9saWJ4bF9ldmVudC5jICAg ICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogdG9vbHMvbWlzYy9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA3ICstCiB0b29scy9taXNjL3hlbi1ocHRvb2wuYyAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTMgKy0KIHRvb2xzL21pc2MveGVuLWxvd21lbWQuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAxNSArLQogdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi9NYWtlZmls ZSAgICAgICAgICAgIHwgICA0ICstCiB0b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL3hlbmV2ZW50 Y2huX3N0dWJzLmMgfCAgMjAgKy0KIHRvb2xzL3B5dGhvbi9zZXR1cC5weSAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNyArLQogdG9vbHMvdGVzdHMveGVuLWFjY2Vzcy9NYWtlZmlsZSAgICAg ICAgICAgICAgIHwgICAzICstCiB0b29scy90ZXN0cy94ZW4tYWNjZXNzL3hlbi1hY2Nlc3MuYyAg ICAgICAgICAgfCAgMjEgKy0KIHRvb2xzL3hjdXRpbHMvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNCArLQogdG9vbHMveGVubW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIHRvb2xzL3hlbm1vbi94ZW5iYWtlZC5jICAgICAgICAgICAgICAgICAg ICAgICB8ICAxMyArLQogdG9vbHMveGVucGFnaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgIHwgICA0ICstCiB0b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmMgICAgICAgICAgICAgICAg ICAgfCAgMTggKy0KIHRvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuaCAgICAgICAgICAgICAgICAg ICB8ICAgMyArLQogdG9vbHMveGVuc3RvcmUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAg IHwgICA1ICstCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICAgICAgICAgICAgICAg fCAgIDYgKy0KIHRvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYyAgICAgICAgICAgICB8 ICAyNSArLS0KIHRvb2xzL3hlbnRyYWNlL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNSArLQogdG9vbHMveGVudHJhY2UveGVudHJhY2UuYyAgICAgICAgICAgICAgICAgICAgIHwg IDEzICstCiA2MSBmaWxlcyBjaGFuZ2VkLCAxNTM5IGluc2VydGlvbnMoKyksIDkyNSBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9NYWtlZmlsZQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL2ZyZWVic2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29s cy9saWJzL2V2dGNobi9saWJ4ZW5ldnRjaG4ubWFwCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv bGlicy9ldnRjaG4vbGludXguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2hu L21pbmlvcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy9ldnRjaG4vbmV0YnNkLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9wcml2YXRlLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9zb2xhcmlzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3Jl IGIvLmdpdGlnbm9yZQppbmRleCAwMmIyMTAwLi5mNzlhN2IzIDEwMDY0NAotLS0gYS8uZ2l0aWdu b3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTYyLDYgKzYyLDcgQEAgc3R1YmRvbS9pb2VtdQogc3R1 YmRvbS9pb2VtdS8KIHN0dWJkb20vbGlicy0qCiBzdHViZG9tL2xpYnhjLSoKK3N0dWJkb20vbGli eGVuZXZ0Y2huLSoKIHN0dWJkb20vbGlieGVudG9vbGxvZy0qCiBzdHViZG9tL2x3aXAtKgogc3R1 YmRvbS9sd2lwLwpkaWZmIC0tZ2l0IGEvc3R1YmRvbS9NYWtlZmlsZSBiL3N0dWJkb20vTWFrZWZp bGUKaW5kZXggOWM3NzIwNS4uNzAyZDY2YiAxMDA2NDQKLS0tIGEvc3R1YmRvbS9NYWtlZmlsZQor KysgYi9zdHViZG9tL01ha2VmaWxlCkBAIC0zMTksNiArMzE5LDEyIEBAIG1rLWhlYWRlcnMtJChY RU5fVEFSR0VUX0FSQ0gpOiAkKElPRU1VX0xJTktGQVJNX1RBUkdFVCkKIAkgIGxuIC1zZiAkKFhF Tl9ST09UKS90b29scy9saWJzL3Rvb2xsb2cvaW5jbHVkZS8qLmggLiAmJiBcCiAJICBsbiAtc2Yg JChYRU5fUk9PVCkvdG9vbHMvbGlicy90b29sbG9nLyouYyAuICYmIFwKIAkgIGxuIC1zZiAkKFhF Tl9ST09UKS90b29scy9saWJzL3Rvb2xsb2cvTWFrZWZpbGUgLiApCisJbWtkaXIgLXAgbGlicy0k KFhFTl9UQVJHRVRfQVJDSCkvZXZ0Y2huL2luY2x1ZGUKKwlbIC1oIGxpYnMtJChYRU5fVEFSR0VU X0FSQ0gpL2V2dGNobi9NYWtlZmlsZSBdIHx8ICggY2QgbGlicy0kKFhFTl9UQVJHRVRfQVJDSCkv ZXZ0Y2huICYmIFwKKwkgIGxuIC1zZiAkKFhFTl9ST09UKS90b29scy9saWJzL2V2dGNobi8qLmgg LiAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVkZS8q LmggaW5jbHVkZS8gJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZXZ0Y2hu LyouYyAuICYmIFwKKwkgIGxuIC1zZiAkKFhFTl9ST09UKS90b29scy9saWJzL2V2dGNobi9NYWtl ZmlsZSAuICkKIAlta2RpciAtcCBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkKIAlbIC1oIGxpYnhj LSQoWEVOX1RBUkdFVF9BUkNIKS9NYWtlZmlsZSBdIHx8ICggY2QgbGlieGMtJChYRU5fVEFSR0VU X0FSQ0gpICYmIFwKIAkgIGxuIC1zZiAkKFhFTl9ST09UKS90b29scy9saWJ4Yy8qLmggLiAmJiBc CkBAIC0zNTEsMTIgKzM1NywyMSBAQCBsaWJzLSQoWEVOX1RBUkdFVF9BUkNIKS90b29sbG9nL2xp YnhlbnRvb2xsb2cuYTogbWstaGVhZGVycy0kKFhFTl9UQVJHRVRfQVJDSCkgJAogCUNQUEZMQUdT PSIkKFRBUkdFVF9DUFBGTEFHUykiIENGTEFHUz0iJChUQVJHRVRfQ0ZMQUdTKSIgJChNQUtFKSBE RVNURElSPSAtQyBsaWJzLSQoWEVOX1RBUkdFVF9BUkNIKS90b29sbG9nCiAKICMjIyMjIyMKKyMg bGlieGVuZXZ0Y2huCisjIyMjIyMjCisKKy5QSE9OWTogbGlieGVuZXZ0Y2huCitsaWJ4ZW5ldnRj aG46IGxpYnMtJChYRU5fVEFSR0VUX0FSQ0gpL2V2dGNobi9saWJ4ZW5ldnRjaG4uYQorbGlicy0k KFhFTl9UQVJHRVRfQVJDSCkvZXZ0Y2huL2xpYnhlbmV2dGNobi5hOiBtay1oZWFkZXJzLSQoWEVO X1RBUkdFVF9BUkNIKSAkKE5FV0xJQl9TVEFNUEZJTEUpCisJQ1BQRkxBR1M9IiQoVEFSR0VUX0NQ UEZMQUdTKSIgQ0ZMQUdTPSIkKFRBUkdFVF9DRkxBR1MpIiAkKE1BS0UpIERFU1RESVI9IC1DIGxp YnMtJChYRU5fVEFSR0VUX0FSQ0gpL2V2dGNobgorCisjIyMjIyMjCiAjIGxpYnhjCiAjIyMjIyMj CiAKIC5QSE9OWTogbGlieGMKIGxpYnhjOiBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkvbGlieGVu Y3RybC5hIGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5ndWVzdC5hCi1saWJ4Yy0kKFhF Tl9UQVJHRVRfQVJDSCkvbGlieGVuY3RybC5hOiBtay1oZWFkZXJzLSQoWEVOX1RBUkdFVF9BUkNI KSBsaWJ4ZW50b29sbG9nIGNyb3NzLXpsaWIKK2xpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4 ZW5jdHJsLmE6IG1rLWhlYWRlcnMtJChYRU5fVEFSR0VUX0FSQ0gpIGxpYnhlbnRvb2xsb2cgbGli eGVuZXZ0Y2huIGNyb3NzLXpsaWIKIAlDUFBGTEFHUz0iJChUQVJHRVRfQ1BQRkxBR1MpIiBDRkxB R1M9IiQoVEFSR0VUX0NGTEFHUykiICQoTUFLRSkgREVTVERJUj0gQ09ORklHX0xJQlhDX01JTklP Uz15IC1DIGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKQogCiAgbGlieGMtJChYRU5fVEFSR0VUX0FS Q0gpL2xpYnhlbmd1ZXN0LmE6IGxpYnhjLSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5jdHJsLmEK ZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2VmaWxlIGIvdG9vbHMvTWFrZWZpbGUKaW5kZXggOWY3NGFj Ny4uOTllMDE2YSAxMDA2NDQKLS0tIGEvdG9vbHMvTWFrZWZpbGUKKysrIGIvdG9vbHMvTWFrZWZp bGUKQEAgLTI0OCw4ICsyNDgsMTAgQEAgc3ViZGlyLWFsbC1xZW11LXhlbi1kaXI6IHFlbXUteGVu LWRpci1maW5kCiAJCS0tbGliZGlyPSQoTElCRVhFQ19MSUIpIFwKIAkJLS1pbmNsdWRlZGlyPSQo TElCRVhFQ19JTkMpIFwKIAkJLS1zb3VyY2UtcGF0aD0kJHNvdXJjZSBcCi0JCS0tZXh0cmEtY2Zs YWdzPSItSSQoWEVOX1JPT1QpL3Rvb2xzL2luY2x1ZGUgXAorCQktLWV4dHJhLWNmbGFncz0iLURY Q19XQU5UX0NPTVBBVF9FVlRDSE5fQVBJPTEgXAorCQktSSQoWEVOX1JPT1QpL3Rvb2xzL2luY2x1 ZGUgXAogCQktSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlIFwKKwkJLUkk KFhFTl9ST09UKS90b29scy9saWJzL2V2dGNobi9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90 b29scy9saWJ4Yy9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29scy94ZW5zdG9yZS9pbmNs dWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29scy94ZW5zdG9yZS9jb21wYXQvaW5jbHVkZSBcCkBA IC0yNTcsNiArMjU5LDcgQEAgc3ViZGlyLWFsbC1xZW11LXhlbi1kaXI6IHFlbXUteGVuLWRpci1m aW5kCiAJCS0tZXh0cmEtbGRmbGFncz0iLUwkKFhFTl9ST09UKS90b29scy9saWJ4YyBcCiAJCS1M JChYRU5fUk9PVCkvdG9vbHMveGVuc3RvcmUgXAogCQktV2wsLXJwYXRoLWxpbms9JChYRU5fUk9P VCkvdG9vbHMvbGlicy90b29sbG9nIFwKKwkJLVdsLC1ycGF0aC1saW5rPSQoWEVOX1JPT1QpL3Rv b2xzL2xpYnMvZXZ0Y2huIFwKIAkJJChRRU1VX1VQU1RSRUFNX1JQQVRIKSIgXAogCQktLWJpbmRp cj0kKExJQkVYRUNfQklOKSBcCiAJCS0tZGF0YWRpcj0kKFNIQVJFRElSKS9xZW11LXhlbiBcCmRp ZmYgLS1naXQgYS90b29scy9SdWxlcy5tayBiL3Rvb2xzL1J1bGVzLm1rCmluZGV4IDA2NTJlNGIu Ljc1ZDAyYzQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL1J1bGVzLm1rCisrKyBiL3Rvb2xzL1J1bGVzLm1r CkBAIC0xMSw2ICsxMSw3IEBAIElOU1RBTEwgPSAkKFhFTl9ST09UKS90b29scy9jcm9zcy1pbnN0 YWxsCiAKIFhFTl9JTkNMVURFICAgICAgICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2luY2x1ZGUKIFhF Tl9MSUJYRU5UT09MTE9HICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZworWEVOX0xJ QlhFTkVWVENITiAgID0gJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRjaG4KIFhFTl9MSUJYQyAg ICAgICAgICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCiBYRU5fWEVOTElHSFQgICAgICAgPSAk KFhFTl9ST09UKS90b29scy9saWJ4bAogWEVOX1hFTlNUT1JFICAgICAgID0gJChYRU5fUk9PVCkv dG9vbHMveGVuc3RvcmUKQEAgLTgyLDEzICs4MywxOCBAQCBTSERFUFNfbGlieGVudG9vbGxvZyA9 CiBMRExJQlNfbGlieGVudG9vbGxvZyA9ICQoWEVOX0xJQlhFTlRPT0xMT0cpL2xpYnhlbnRvb2xs b2ckKGxpYmV4dGVuc2lvbikKIFNITElCX2xpYnhlbnRvb2xsb2cgID0gLVdsLC1ycGF0aC1saW5r PSQoWEVOX0xJQlhFTlRPT0xMT0cpCiAKK0NGTEFHU19saWJ4ZW5ldnRjaG4gPSAtSSQoWEVOX0xJ QlhFTkVWVENITikvaW5jbHVkZSAkKENGTEFHU194ZW5pbmNsdWRlKQorU0hERVBTX2xpYnhlbmV2 dGNobiA9CitMRExJQlNfbGlieGVuZXZ0Y2huID0gJChYRU5fTElCWEVORVZUQ0hOKS9saWJ4ZW5l dnRjaG4kKGxpYmV4dGVuc2lvbikKK1NITElCX2xpYnhlbmV2dGNobiAgPSAtV2wsLXJwYXRoLWxp bms9JChYRU5fTElCWEVORVZUQ0hOKQorCiBDRkxBR1NfbGlieGVuY3RybCA9IC1JJChYRU5fTElC WEMpL2luY2x1ZGUgJChDRkxBR1NfbGlieGVudG9vbGxvZykgJChDRkxBR1NfeGVuaW5jbHVkZSkK LVNIREVQU19saWJ4ZW5jdHJsID0gJChTSExJQl9saWJ4ZW50b29sbG9nKQorU0hERVBTX2xpYnhl bmN0cmwgPSAkKFNITElCX2xpYnhlbnRvb2xsb2cpICQoU0hMSUJfbGlieGVuZXZ0Y2huKQogTERM SUJTX2xpYnhlbmN0cmwgPSAkKFNIREVQU19saWJ4ZW5jdHJsKSAkKFhFTl9MSUJYQykvbGlieGVu Y3RybCQobGliZXh0ZW5zaW9uKQogU0hMSUJfbGlieGVuY3RybCAgPSAkKFNIREVQU19saWJ4ZW5j dHJsKSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCWEMpCiAKLUNGTEFHU19saWJ4ZW5ndWVzdCA9 IC1JJChYRU5fTElCWEMpL2luY2x1ZGUgJChDRkxBR1NfeGVuaW5jbHVkZSkKLVNIREVQU19saWJ4 ZW5ndWVzdCA9CitDRkxBR1NfbGlieGVuZ3Vlc3QgPSAtSSQoWEVOX0xJQlhDKS9pbmNsdWRlICQo Q0ZMQUdTX2xpYnhlbmV2dGNobikgJChDRkxBR1NfeGVuaW5jbHVkZSkKK1NIREVQU19saWJ4ZW5n dWVzdCA9ICQoU0hMSUJfbGlieGVuZXZ0Y2huKQogTERMSUJTX2xpYnhlbmd1ZXN0ID0gJChTSERF UFNfbGlieGVuZ3Vlc3QpICQoWEVOX0xJQlhDKS9saWJ4ZW5ndWVzdCQobGliZXh0ZW5zaW9uKQog U0hMSUJfbGlieGVuZ3Vlc3QgID0gJChTSERFUFNfbGlieGVuZ3Vlc3QpIC1XbCwtcnBhdGgtbGlu az0kKFhFTl9MSUJYQykKIApAQCAtMTAzLDcgKzEwOSw3IEBAIExETElCU19saWJ4ZW5zdGF0ICA9 ICQoU0hERVBTX2xpYnhlbnN0YXQpICQoWEVOX0xJQlhFTlNUQVQpL2xpYnhlbnN0YXQkKGxpYmV4 dGVuCiBTSExJQl9saWJ4ZW5zdGF0ICAgPSAkKFNIREVQU19saWJ4ZW5zdGF0KSAtV2wsLXJwYXRo LWxpbms9JChYRU5fTElCWEVOU1RBVCkKIAogQ0ZMQUdTX2xpYnhlbnZjaGFuID0gLUkkKFhFTl9M SUJWQ0hBTikKLVNIREVQU19saWJ4ZW52Y2hhbiA9ICQoU0hMSUJfbGlieGVuY3RybCkgJChTSExJ Ql9saWJ4ZW5zdG9yZSkKK1NIREVQU19saWJ4ZW52Y2hhbiA9ICQoU0hMSUJfbGlieGVuY3RybCkg JChTSExJQl9saWJ4ZW5zdG9yZSkgJChTSExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGlieGVu dmNoYW4gPSAkKFNIREVQU19saWJ4ZW52Y2hhbikgJChYRU5fTElCVkNIQU4pL2xpYnhlbnZjaGFu JChsaWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW52Y2hhbiAgPSAkKFNIREVQU19saWJ4ZW52Y2hh bikgLVdsLC1ycGF0aC1saW5rPSQoWEVOX0xJQlZDSEFOKQogCmRpZmYgLS1naXQgYS90b29scy9j b25zb2xlL01ha2VmaWxlIGIvdG9vbHMvY29uc29sZS9NYWtlZmlsZQppbmRleCA3N2U4ZjI5Li40 YjNhNDkyIDEwMDY0NAotLS0gYS90b29scy9jb25zb2xlL01ha2VmaWxlCisrKyBiL3Rvb2xzL2Nv bnNvbGUvTWFrZWZpbGUKQEAgLTMsOCArMywxMCBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xz L1J1bGVzLm1rCiAKIENGTEFHUyAgKz0gLVdlcnJvcgogCitDRkxBR1MgICs9ICQoQ0ZMQUdTX2xp YnhlbmV2dGNobikKIENGTEFHUyAgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKIENGTEFHUyAgKz0g JChDRkxBR1NfbGlieGVuc3RvcmUpCitMRExJQlMgKz0gJChMRExJQlNfbGlieGVuZXZ0Y2huKQog TERMSUJTICs9ICQoTERMSUJTX2xpYnhlbmN0cmwpCiBMRExJQlMgKz0gJChMRExJQlNfbGlieGVu c3RvcmUpCiBMRExJQlMgKz0gJChTT0NLRVRfTElCUykKZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbnNv bGUvZGFlbW9uL2lvLmMgYi90b29scy9jb25zb2xlL2RhZW1vbi9pby5jCmluZGV4IGNhZmM3Yjcu LjJmMmU5YzUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKKysrIGIvdG9v bHMvY29uc29sZS9kYWVtb24vaW8uYwpAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5jbHVkZSAidXRp bHMuaCIKICNpbmNsdWRlICJpby5oIgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUg PHhlbnN0b3JlLmg+CiAjaW5jbHVkZSA8eGVuL2lvL2NvbnNvbGUuaD4KICNpbmNsdWRlIDx4ZW4v Z3JhbnRfdGFibGUuaD4KQEAgLTEwMSw3ICsxMDIsNyBAQCBzdHJ1Y3QgZG9tYWluIHsKIAlpbnQg cmluZ19yZWY7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBsb2NhbF9wb3J0OwogCWV2dGNobl9w b3J0X29yX2Vycm9yX3QgcmVtb3RlX3BvcnQ7Ci0JeGNfZXZ0Y2huICp4Y2VfaGFuZGxlOworCXhl bmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGU7CiAJaW50IHhjZV9wb2xsZmRfaWR4OwogCXN0cnVj dCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZXJmYWNlOwogCWludCBldmVudF9jb3VudDsKQEAgLTE4 NSw3ICsxODYsNyBAQCBzdGF0aWMgdm9pZCBidWZmZXJfYXBwZW5kKHN0cnVjdCBkb21haW4gKmRv bSkKIAogCXhlbl9tYigpOwogCWludGYtPm91dF9jb25zID0gY29uczsKLQl4Y19ldnRjaG5fbm90 aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKKwl4ZW5ldnRjaG5fbm90aWZ5 KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKIAogCS8qIEdldCB0aGUgZGF0YSB0 byB0aGUgbG9nZmlsZSBhcyBlYXJseSBhcyBwb3NzaWJsZSBiZWNhdXNlIGlmCiAJICogbm8gb25l IGlzIGxpc3RlbmluZyBvbiB0aGUgY29uc29sZSBwdHkgdGhlbiBpdCB3aWxsIGZpbGwgdXAKQEAg LTU4NCwyMiArNTg1LDIyIEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBk b21haW4gKmRvbSkKIAlkb20tPmxvY2FsX3BvcnQgPSAtMTsKIAlkb20tPnJlbW90ZV9wb3J0ID0g LTE7CiAJaWYgKGRvbS0+eGNlX2hhbmRsZSAhPSBOVUxMKQotCQl4Y19ldnRjaG5fY2xvc2UoZG9t LT54Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CiAKIAkv KiBPcGVuaW5nIGV2dGNobiBpbmRlcGVuZGVudGx5IGZvciBlYWNoIGNvbnNvbGUgaXMgYSBiaXQK IAkgKiB3YXN0ZWZ1bCwgYnV0IHRoYXQncyBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZC4uLiAq LwotCWRvbS0+eGNlX2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworCWRvbS0+eGNl X2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogCWlmIChkb20tPnhjZV9oYW5kbGUg PT0gTlVMTCkgewogCQllcnIgPSBlcnJubzsKIAkJZ290byBvdXQ7CiAJfQogIAotCXJjID0geGNf ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oZG9tLT54Y2VfaGFuZGxlLAorCXJjID0geGVuZXZ0Y2hu X2JpbmRfaW50ZXJkb21haW4oZG9tLT54Y2VfaGFuZGxlLAogCQlkb20tPmRvbWlkLCByZW1vdGVf cG9ydCk7CiAKIAlpZiAocmMgPT0gLTEpIHsKIAkJZXJyID0gZXJybm87Ci0JCXhjX2V2dGNobl9j bG9zZShkb20tPnhjZV9oYW5kbGUpOworCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxl KTsKIAkJZG9tLT54Y2VfaGFuZGxlID0gTlVMTDsKIAkJZ290byBvdXQ7CiAJfQpAQCAtNjA5LDcg KzYxMCw3IEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRv bSkKIAlpZiAoZG9tLT5tYXN0ZXJfZmQgPT0gLTEpIHsKIAkJaWYgKCFkb21haW5fY3JlYXRlX3R0 eShkb20pKSB7CiAJCQllcnIgPSBlcnJubzsKLQkJCXhjX2V2dGNobl9jbG9zZShkb20tPnhjZV9o YW5kbGUpOworCQkJeGVuZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CiAJCQlkb20tPnhj ZV9oYW5kbGUgPSBOVUxMOwogCQkJZG9tLT5sb2NhbF9wb3J0ID0gLTE7CiAJCQlkb20tPnJlbW90 ZV9wb3J0ID0gLTE7CkBAIC03NDksNyArNzUwLDcgQEAgc3RhdGljIHZvaWQgc2h1dGRvd25fZG9t YWluKHN0cnVjdCBkb21haW4gKmQpCiAJd2F0Y2hfZG9tYWluKGQsIGZhbHNlKTsKIAlkb21haW5f dW5tYXBfaW50ZXJmYWNlKGQpOwogCWlmIChkLT54Y2VfaGFuZGxlICE9IE5VTEwpCi0JCXhjX2V2 dGNobl9jbG9zZShkLT54Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKGQtPnhjZV9oYW5k bGUpOwogCWQtPnhjZV9oYW5kbGUgPSBOVUxMOwogfQogCkBAIC04MzksNyArODQwLDcgQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3R0eV9yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAkJfQogCQl4ZW5f d21iKCk7CiAJCWludGYtPmluX3Byb2QgPSBwcm9kOwotCQl4Y19ldnRjaG5fbm90aWZ5KGRvbS0+ eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKKwkJeGVuZXZ0Y2huX25vdGlmeShkb20tPnhj ZV9oYW5kbGUsIGRvbS0+bG9jYWxfcG9ydCk7CiAJfSBlbHNlIHsKIAkJZG9tYWluX2Nsb3NlX3R0 eShkb20pOwogCQlzaHV0ZG93bl9kb21haW4oZG9tKTsKQEAgLTg3MSw3ICs4NzIsNyBAQCBzdGF0 aWMgdm9pZCBoYW5kbGVfcmluZ19yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAlpZiAoZG9tLT5p c19kZWFkKQogCQlyZXR1cm47CiAKLQlpZiAoKHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyhkb20t PnhjZV9oYW5kbGUpKSA9PSAtMSkKKwlpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhkb20t PnhjZV9oYW5kbGUpKSA9PSAtMSkKIAkJcmV0dXJuOwogCiAJZG9tLT5ldmVudF9jb3VudCsrOwpA QCAtODc5LDcgKzg4MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9yaW5nX3JlYWQoc3RydWN0IGRv bWFpbiAqZG9tKQogCWJ1ZmZlcl9hcHBlbmQoZG9tKTsKIAogCWlmIChkb20tPmV2ZW50X2NvdW50 IDwgUkFURV9MSU1JVF9BTExPV0FOQ0UpCi0JCSh2b2lkKXhjX2V2dGNobl91bm1hc2soZG9tLT54 Y2VfaGFuZGxlLCBwb3J0KTsKKwkJKHZvaWQpeGVuZXZ0Y2huX3VubWFzayhkb20tPnhjZV9oYW5k bGUsIHBvcnQpOwogfQogCiBzdGF0aWMgdm9pZCBoYW5kbGVfeHModm9pZCkKQEAgLTkwNiw3ICs5 MDcsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfeHModm9pZCkKIAlmcmVlKHZlYyk7CiB9CiAKLXN0 YXRpYyB2b2lkIGhhbmRsZV9odl9sb2dzKHhjX2V2dGNobiAqeGNlX2hhbmRsZSwgYm9vbCBmb3Jj ZSkKK3N0YXRpYyB2b2lkIGhhbmRsZV9odl9sb2dzKHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5k bGUsIGJvb2wgZm9yY2UpCiB7CiAJc3RhdGljIGNoYXIgYnVmZmVyWzEwMjQqMTZdOwogCWNoYXIg KmJ1ZnB0ciA9IGJ1ZmZlcjsKQEAgLTkxNCw3ICs5MTUsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVf aHZfbG9ncyh4Y19ldnRjaG4gKnhjZV9oYW5kbGUsIGJvb2wgZm9yY2UpCiAJc3RhdGljIHVpbnQz Ml90IGluZGV4ID0gMDsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHBvcnQgPSAtMTsKIAotCWlm ICghZm9yY2UgJiYgKChwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0x KSkKKwlpZiAoIWZvcmNlICYmICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUp KSA9PSAtMSkpCiAJCXJldHVybjsKIAogCWRvCkBAIC05MzgsNyArOTM5LDcgQEAgc3RhdGljIHZv aWQgaGFuZGxlX2h2X2xvZ3MoeGNfZXZ0Y2huICp4Y2VfaGFuZGxlLCBib29sIGZvcmNlKQogCX0g d2hpbGUgKHNpemUgPT0gc2l6ZW9mKGJ1ZmZlcikpOwogCiAJaWYgKHBvcnQgIT0gLTEpCi0JCSh2 b2lkKXhjX2V2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CisJCSh2b2lkKXhlbmV2dGNo bl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZV9sb2df cmVsb2FkKHZvaWQpCkBAIC0xMDA2LDEwICsxMDA3LDEwIEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQp CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBsb2dfaHZfZXZ0Y2huID0gLTE7CiAJaW50IHhjZV9w b2xsZmRfaWR4ID0gLTE7CiAJaW50IHhzX3BvbGxmZF9pZHggPSAtMTsKLQl4Y19ldnRjaG4gKnhj ZV9oYW5kbGUgPSBOVUxMOworCXhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwog CiAJaWYgKGxvZ19odikgewotCQl4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7 CisJCXhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAkJaWYgKHhjZV9oYW5k bGUgPT0gTlVMTCkgewogCQkJZG9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuIHhjZSBoYW5k bGU6ICVkICglcykiLAogCQkJICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xMDE4 LDcgKzEwMTksNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQlsb2dfaHZfZmQgPSBjcmVhdGVf aHZfbG9nKCk7CiAJCWlmIChsb2dfaHZfZmQgPT0gLTEpCiAJCQlnb3RvIG91dDsKLQkJbG9nX2h2 X2V2dGNobiA9IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9DT05fUklORyk7 CisJCWxvZ19odl9ldnRjaG4gPSB4ZW5ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFf Q09OX1JJTkcpOwogCQlpZiAobG9nX2h2X2V2dGNobiA9PSAtMSkgewogCQkJZG9sb2coTE9HX0VS UiwgIkZhaWxlZCB0byBiaW5kIHRvIFZJUlFfQ09OX1JJTkc6ICIKIAkJCSAgICAgICIlZCAoJXMp IiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xMDQ3LDcgKzEwNDgsNyBAQCB2b2lkIGhh bmRsZV9pbyh2b2lkKQogCQl4c19wb2xsZmRfaWR4ID0gc2V0X2Zkcyh4c19maWxlbm8oeHMpLCBQ T0xMSU58UE9MTFBSSSk7CiAKIAkJaWYgKGxvZ19odikKLQkJCXhjZV9wb2xsZmRfaWR4ID0gc2V0 X2Zkcyh4Y19ldnRjaG5fZmQoeGNlX2hhbmRsZSksCisJCQl4Y2VfcG9sbGZkX2lkeCA9IHNldF9m ZHMoeGVuZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpLAogCQkJCQkJIFBPTExJTnxQT0xMUFJJKTsKIAog CQlpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0cykgPCAwKQpAQCAtMTA2Niw3 ICsxMDY3LDcgQEAgdm9pZCBoYW5kbGVfaW8odm9pZCkKIAkJCWlmICgobm93KzUpID4gZC0+bmV4 dF9wZXJpb2QpIHsKIAkJCQlkLT5uZXh0X3BlcmlvZCA9IG5vdyArIFJBVEVfTElNSVRfUEVSSU9E OwogCQkJCWlmIChkLT5ldmVudF9jb3VudCA+PSBSQVRFX0xJTUlUX0FMTE9XQU5DRSkgewotCQkJ CQkodm9pZCl4Y19ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGQtPmxvY2FsX3BvcnQpOwor CQkJCQkodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGQtPmxvY2FsX3BvcnQp OwogCQkJCX0KIAkJCQlkLT5ldmVudF9jb3VudCA9IDA7CiAJCQl9CkBAIC0xMDgyLDcgKzEwODMs NyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQkJCWlmIChkaXNjYXJkX292ZXJmbG93ZWRfZGF0 YSB8fAogCQkJCSAgICAhZC0+YnVmZmVyLm1heF9jYXBhY2l0eSB8fAogCQkJCSAgICBkLT5idWZm ZXIuc2l6ZSA8IGQtPmJ1ZmZlci5tYXhfY2FwYWNpdHkpIHsKLQkJCQkJaW50IGV2dGNobl9mZCA9 IHhjX2V2dGNobl9mZChkLT54Y2VfaGFuZGxlKTsKKwkJCQkJaW50IGV2dGNobl9mZCA9IHhlbmV2 dGNobl9mZChkLT54Y2VfaGFuZGxlKTsKIAkJCQkJZC0+eGNlX3BvbGxmZF9pZHggPSBzZXRfZmRz KGV2dGNobl9mZCwKIAkJCQkJCQkJICAgIFBPTExJTnxQT0xMUFJJKTsKIAkJCQl9CkBAIC0xMjAy LDcgKzEyMDMsNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQlsb2dfaHZfZmQgPSAtMTsKIAl9 CiAJaWYgKHhjZV9oYW5kbGUgIT0gTlVMTCkgewotCQl4Y19ldnRjaG5fY2xvc2UoeGNlX2hhbmRs ZSk7CisJCXhlbmV2dGNobl9jbG9zZSh4Y2VfaGFuZGxlKTsKIAkJeGNlX2hhbmRsZSA9IE5VTEw7 CiAJfQogCWlmICh4Y2dfaGFuZGxlICE9IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMv TWFrZWZpbGUgYi90b29scy9saWJzL01ha2VmaWxlCmluZGV4IDczYmU1MDAuLjBlM2Y1MjMgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvTWFrZWZpbGUKKysrIGIvdG9vbHMvbGlicy9NYWtlZmlsZQpA QCAtMyw1ICszLDYgQEAgaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5tawogCiBTVUJE SVJTLXkgOj0KIFNVQkRJUlMteSArPSB0b29sbG9nCitTVUJESVJTLXkgKz0gZXZ0Y2huCiAKIGFs bCBjbGVhbiBpbnN0YWxsIGRpc3RjbGVhbjogJTogc3ViZGlycy0lCmRpZmYgLS1naXQgYS90b29s cy9saWJzL2V2dGNobi9NYWtlZmlsZSBiL3Rvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YTgwN2YKLS0tIC9kZXYvbnVsbAorKysg Yi90b29scy9saWJzL2V2dGNobi9NYWtlZmlsZQpAQCAtMCwwICsxLDY5IEBACitYRU5fUk9PVCA9 ICQoQ1VSRElSKS8uLi8uLi8uLgoraW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5tawor CitNQUpPUiAgICA9IDEKK01JTk9SICAgID0gMAorU0hMSUJfTERGTEFHUyArPSAtV2wsLS12ZXJz aW9uLXNjcmlwdD1saWJ4ZW5ldnRjaG4ubWFwCisKK0NGTEFHUyAgICs9IC1XZXJyb3IgLVdtaXNz aW5nLXByb3RvdHlwZXMKK0NGTEFHUyAgICs9IC1JLi9pbmNsdWRlICQoQ0ZMQUdTX3hlbmluY2x1 ZGUpCitDRkxBR1MgICArPSAkKENGTEFHU19saWJ4ZW50b29sbG9nKQorCitTUkNTLXkgICAgICAg ICAgICAgICAgICs9IGNvcmUuYworU1JDUy0kKENPTkZJR19MaW51eCkgICArPSBsaW51eC5jCitT UkNTLSQoQ09ORklHX0ZyZWVCU0QpICs9IGZyZWVic2QuYworU1JDUy0kKENPTkZJR19TdW5PUykg ICArPSBzb2xhcmlzLmMKK1NSQ1MtJChDT05GSUdfTmV0QlNEKSAgKz0gbmV0YnNkLmMKK1NSQ1Mt JChDT05GSUdfTWluaU9TKSAgKz0gbWluaW9zLmMKKworTElCX09CSlMgOj0gJChwYXRzdWJzdCAl LmMsJS5vLCQoU1JDUy15KSkKK1BJQ19PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCUub3BpYywkKFNS Q1MteSkpCisKK0xJQiA6PSBsaWJ4ZW5ldnRjaG4uYQoraWZuZXEgKCQobm9zaGFyZWRsaWJzKSx5 KQorTElCICs9IGxpYnhlbmV2dGNobi5zbworZW5kaWYKKworLlBIT05ZOiBhbGwKK2FsbDogYnVp bGQKKworLlBIT05ZOiBidWlsZAorYnVpbGQ6CisJJChNQUtFKSBsaWJzCisKKy5QSE9OWTogbGli cworbGliczogJChMSUIpCisKKworbGlieGVuZXZ0Y2huLmE6ICQoTElCX09CSlMpCisJJChBUikg cmMgJEAgJF4KKworbGlieGVuZXZ0Y2huLnNvOiBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikKKwkk KFNZTUxJTktfU0hMSUIpICQ8ICRACitsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUik6IGxpYnhlbmV2 dGNobi5zby4kKE1BSk9SKS4kKE1JTk9SKQorCSQoU1lNTElOS19TSExJQikgJDwgJEAKKworbGli eGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQoTUlOT1IpOiAkKFBJQ19PQkpTKSBsaWJ4ZW5ldnRjaG4u bWFwCisJJChDQykgJChMREZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVuZXZ0 Y2huLnNvLiQoTUFKT1IpICQoU0hMSUJfTERGTEFHUykgLW8gJEAgJChQSUNfT0JKUykgJChMRExJ QlNfbGlieGVudG9vbGxvZykgJChBUFBFTkRfTERGTEFHUykKKworLlBIT05ZOiBpbnN0YWxsCitp bnN0YWxsOiBidWlsZAorCSQoSU5TVEFMTF9ESVIpICQoREVTVERJUikkKGxpYmRpcikKKwkkKElO U1RBTExfRElSKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKQorCSQoSU5TVEFMTF9TSExJQikgbGli eGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxpYmRpcikKKwkkKElO U1RBTExfREFUQSkgbGlieGVuZXZ0Y2huLmEgJChERVNURElSKSQobGliZGlyKQorCSQoU1lNTElO S19TSExJQikgbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxp YmRpcikvbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpCisJJChTWU1MSU5LX1NITElCKSBsaWJ4ZW5l dnRjaG4uc28uJChNQUpPUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW5ldnRjaG4uc28KKwkk KElOU1RBTExfREFUQSkgaW5jbHVkZS94ZW5ldnRjaG4uaCAkKERFU1RESVIpJChpbmNsdWRlZGly KQorCisuUEhPTlk6IFRBR1MKK1RBR1M6CisJZXRhZ3MgLXQgKi5jICouaAorCisuUEhPTlk6IGNs ZWFuCitjbGVhbjoKKwlybSAtcmYgKi5ycG0gJChMSUIpICp+ICQoREVQUykgJChMSUJfT0JKUykg JChQSUNfT0JKUykKKwlybSAtZiBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikuJChNSU5PUikgbGli eGVuZXZ0Y2huLnNvLiQoTUFKT1IpCisKKy5QSE9OWTogZGlzdGNsZWFuCitkaXN0Y2xlYW46IGNs ZWFuCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9jb3JlLmMgYi90b29scy9saWJzL2V2 dGNobi9jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMxZTA4Ywot LS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYwpAQCAtMCwwICsxLDcy IEBACisvKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgor ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3Rk bGliLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKK3hlbmV2dGNobl9oYW5kbGUgKnhlbmV2 dGNobl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsIHVuc2lnbmVkIG9wZW5fZmxhZ3Mp Cit7CisgICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlID0gbWFsbG9jKHNpemVvZigqeGNlKSk7Cisg ICAgaW50IHJjOworCisgICAgaWYgKCF4Y2UpIHJldHVybiBOVUxMOworCisgICAgeGNlLT5mZCA9 IC0xOworICAgIHhjZS0+bG9nZ2VyID0gbG9nZ2VyOworICAgIHhjZS0+bG9nZ2VyX3RvZnJlZSAg PSBOVUxMOworCisgICAgaWYgKCF4Y2UtPmxvZ2dlcikgeworICAgICAgICB4Y2UtPmxvZ2dlciA9 IHhjZS0+bG9nZ2VyX3RvZnJlZSA9CisgICAgICAgICAgICAoeGVudG9vbGxvZ19sb2dnZXIqKQor ICAgICAgICAgICAgeHRsX2NyZWF0ZWxvZ2dlcl9zdGRpb3N0cmVhbShzdGRlcnIsIFhUTF9QUk9H UkVTUywgMCk7CisgICAgICAgIGlmICgheGNlLT5sb2dnZXIpIGdvdG8gZXJyOworICAgIH0KKwor ICAgIHJjID0gb3NkZXBfZXZ0Y2huX29wZW4oeGNlKTsKKyAgICBpZiAoIHJjICA8IDAgKSBnb3Rv IGVycjsKKworICAgIHJldHVybiB4Y2U7CisKK2VycjoKKyAgICBvc2RlcF9ldnRjaG5fY2xvc2Uo eGNlKTsKKyAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNlLT5sb2dnZXJfdG9mcmVlKTsKKyAgICBm cmVlKHhjZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2ludCB4ZW5ldnRjaG5fY2xvc2UoeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCByYzsKKworICAgIGlmICggIXhjZSApCisg ICAgICAgIHJldHVybiAwOworCisgICAgcmMgPSBvc2RlcF9ldnRjaG5fY2xvc2UoeGNlKTsKKyAg ICB4dGxfbG9nZ2VyX2Rlc3Ryb3koeGNlLT5sb2dnZXJfdG9mcmVlKTsKKyAgICBmcmVlKHhjZSk7 CisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTog QworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13 aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL2ZyZWVic2QuYyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2ZyZWVi c2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzZmMDUyCi0tLSAvZGV2 L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRjaG4vZnJlZWJzZC5jCkBAIC0wLDAgKzEsMTM4IEBA CisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIENvcHlyaWdodCAyMDA2IFN1biBNaWNy b3N5c3RlbXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0 byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogU3BsaXQgb2ZmIGZyb20geGNfZnJl ZWJzZF9vc2RlcC5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3Rk Lmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhlbi9zeXMvZXZ0Y2hu Lmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKKyNkZWZpbmUgRVZUQ0hOX0RFViAgICAgICIv ZGV2L3hlbi9ldnRjaG4iCisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFuZGxl ICp4Y2UpCit7CisgICAgaW50IGZkID0gb3BlbihFVlRDSE5fREVWLCBPX1JEV1IpOworICAgIGlm ICggZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgeGNlLT5mZCA9IGZkOworICAg IHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9oYW5kbGUg KnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKworaW50IHhlbmV2dGNobl9mZCh4ZW5ldnRj aG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7Cit9CisKK2ludCB4ZW5ldnRj aG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQorewor ICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9ub3RpZnkgbm90 aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJ T0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQg ZG9taWQpCit7CisgICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9l dnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9 IGRvbWlkOworCisgICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9VTkRf UE9SVCwgJmJpbmQpOworICAgIHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7 Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9iaW5kX2ludGVyZG9tYWlu KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLCBldnRjaG5fcG9ydF90IHJlbW90ZV9w b3J0KQoreworICAgIGludCByZXQsIGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRv bWlkOworICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKKworICAgIHJldCA9IGlv Y3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9JTlRFUkRPTUFJTiwgJmJpbmQpOworICAgIHJldHVy biAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vy cm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2lnbmVk IGludCB2aXJxKQoreworICAgIGludCByZXQsIGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9j dGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOworCisgICAgYmluZC52aXJxID0gdmlycTsKKworICAg IHJldCA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7CisgICAgcmV0 dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKK30KKworaW50IHhlbmV2dGNobl91 bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAg aW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1bmJpbmQ7 CisKKyAgICB1bmJpbmQucG9ydCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhl bmV2dGNobl9wZW5kaW5nKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQgZmQgPSB4 Y2UtPmZkOworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKKworICAgIGlmICggcmVhZChmZCwgJnBv cnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0dXJuIC0xOwor CisgICAgcmV0dXJuIHBvcnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9o YW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7 CisKKyAgICBpZiAoIHdyaXRlKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9y dCkgKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMb2Nh bCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJh c2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwK KyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVkZS94ZW5l dnRjaG4uaCBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4MGZhMwotLS0gL2Rldi9udWxsCisrKyBiL3Rv b2xzL2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKQEAgLTAsMCArMSwxNTAgQEAKKy8q CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICog VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorICoKKyAqIFNwbGl0IG9mZiBmcm9tOgorICogeGVuY3RybC5oCisgKgorICogQSBs aWJyYXJ5IGZvciBsb3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBYZW4gY29udHJvbCBpbnRlcmZhY2Vz LgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBLIEEgRnJhc2VyLgorICovCisKKyNp Zm5kZWYgWEVORVZUQ0hOX0gKKyNkZWZpbmUgWEVORVZUQ0hOX0gKKworI2luY2x1ZGUgPHN0ZGlu dC5oPgorCisjaW5jbHVkZSA8eGVuL2V2ZW50X2NoYW5uZWwuaD4KKworLyogQSBwb3J0IGlkZW50 aWZpZXIgaXMgZ3VhcmFudGVlZCB0byBmaXQgaW4gMzEgYml0cy4gKi8KK3R5cGVkZWYgaW50IGV2 dGNobl9wb3J0X29yX2Vycm9yX3Q7CisKK3R5cGVkZWYgc3RydWN0IHhlbmV2dGNobl9oYW5kbGUg eGVuZXZ0Y2huX2hhbmRsZTsKKworLyogQ2FsbGVycyB3aG8gZG9uJ3QgY2FyZSBkb24ndCBuZWVk IHRvICNpbmNsdWRlIDx4ZW50b29sbG9nLmg+ICovCit0eXBlZGVmIHN0cnVjdCB4ZW50b29sbG9n X2xvZ2dlciB4ZW50b29sbG9nX2xvZ2dlcjsKKworLyoKKyAqIEVWRU5UIENIQU5ORUwgRlVOQ1RJ T05TCisgKgorICogTm9uZSBvZiB0aGVzZSBkbyBhbnkgbG9nZ2luZy4KKyAqLworCisvKgorICog UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBldmVudCBjaGFubmVsIGRyaXZlciwgb3IgTlVMTCBvbiBm YWlsdXJlLCBpbgorICogd2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5 LgorICoKKyAqIE5vdGU6CisgKiBBZnRlciBmb3JrIGEgY2hpbGQgcHJvY2VzcyBtdXN0IG5vdCB1 c2UgYW55IG9wZW5lZCB4YyBldnRjaG4KKyAqIGhhbmRsZSBpbmhlcml0ZWQgZnJvbSB0aGVpciBw YXJlbnQuIFRoZXkgbXVzdCBvcGVuIGEgbmV3IGhhbmRsZSBpZgorICogdGhleSB3YW50IHRvIGlu dGVyYWN0IHdpdGggeGMuCisgKgorICogQmVmb3JlIFhlbiBwcmUtNC4xIHRoaXMgZnVuY3Rpb24g d291bGQgc29tZXRpbWVzIHJlcG9ydCBlcnJvcnMgd2l0aCBwZXJyb3IuCisgKi8KKy8qIEN1cnJl bnRseSBubyBmbGFncyBhcmUgZGVmaW5lZCAqLworeGVuZXZ0Y2huX2hhbmRsZSAqeGVuZXZ0Y2hu X29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWduZWQgb3Blbl9mbGFncyk7CisK Ky8qCisgKiBDbG9zZSBhIGhhbmRsZSBwcmV2aW91c2x5IGFsbG9jYXRlZCB3aXRoIHhlbmV2dGNo bl9vcGVuKCkuCisgKi8KK2ludCB4ZW5ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNl KTsKKworLyoKKyAqIFJldHVybiBhbiBmZCB0aGF0IGNhbiBiZSBzZWxlY3QoKWVkIG9uLgorICoK KyAqIE5vdGUgdGhhdCBkdWUgdG8gYnVncywgc2V0dGluZyB0aGlzIGZkIHRvIG5vbiBibG9ja2lu ZyBtYXkgbm90CisgKiB3b3JrOiB5b3Ugd291bGQgaG9wZSB0aGF0IGl0IHdvdWxkIHJlc3VsdCBp biB4ZW5ldnRjaG5fcGVuZGluZworICogZmFpbGluZyB3aXRoIEVXT1VMREJMT0NLIGlmIHRoZXJl IGFyZSBubyBldmVudHMgc2lnbmFsZWQsIGJ1dCBpbgorICogZmFjdCBpdCBtYXkgYmxvY2suICAo QnVnIGlzIHByZXNlbnQgaW4gYXQgbGVhc3QgTGludXggMy4xMiwgYW5kCisgKiBwZXJoYXBzIG9u IG90aGVyIHBsYXRmb3JtcyBvciBsYXRlciB2ZXJzaW9uLikKKyAqCisgKiBUbyBiZSBzYWZlLCB5 b3UgbXVzdCB1c2UgcG9sbCgpIG9yIHNlbGVjdCgpIGJlZm9yZSBlYWNoIGNhbGwgdG8KKyAqIHhl bmV2dGNobl9wZW5kaW5nLiAgSWYgeW91IGhhdmUgbXVsdGlwbGUgdGhyZWFkcyAob3IgcHJvY2Vz c2VzKQorICogc2hhcmluZyBhIHNpbmdsZSB4Y2UgaGFuZGxlIHRoaXMgd2lsbCBub3Qgd29yaywg YW5kIHRoZXJlIGlzIG5vCisgKiBzdHJhaWdodGZvcndhcmQgd29ya2Fyb3VuZC4gIFBsZWFzZSBk ZXNpZ24geW91ciBwcm9ncmFtIHNvbWUgb3RoZXIKKyAqIHdheS4KKyAqLworaW50IHhlbmV2dGNo bl9mZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpOworCisvKgorICogTm90aWZ5IHRoZSBnaXZlbiBl dmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UKKyAqIGVy cm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2ludCB4ZW5ldnRjaG5fbm90aWZ5 KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKKworLyoKKyAqIFJl dHVybnMgYSBuZXcgZXZlbnQgcG9ydCBhd2FpdGluZyBpbnRlcmRvbWFpbiBjb25uZWN0aW9uIGZy b20gdGhlIGdpdmVuCisgKiBkb21haW4gSUQsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNh c2UgZXJybm8gd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqLworZXZ0Y2huX3BvcnRfb3Jf ZXJyb3JfdAoreGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNobl9oYW5kbGUgKnhj ZSwgaW50IGRvbWlkKTsKKworLyoKKyAqIFJldHVybnMgYSBuZXcgZXZlbnQgcG9ydCBib3VuZCB0 byB0aGUgcmVtb3RlIHBvcnQgZm9yIHRoZSBnaXZlbiBkb21haW4gSUQsCisgKiBvciAtMSBvbiBm YWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisg Ki8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhl bmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCk7CisKKy8qCisgKiBCaW5kIGFuIGV2ZW50IGNo YW5uZWwgdG8gdGhlIGdpdmVuIFZJUlEuIFJldHVybnMgdGhlIGV2ZW50IGNoYW5uZWwgYm91bmQg dG8KKyAqIHRoZSBWSVJRLCBvciAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdp bGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hl bmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCB1bnNpZ25lZCBpbnQgdmly cSk7CisKKy8qCisgKiBVbmJpbmQgdGhlIGdpdmVuIGV2ZW50IGNoYW5uZWwuIFJldHVybnMgLTEg b24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubworICogd2lsbCBiZSBzZXQgYXBwcm9wcmlh dGVseS4KKyAqLworaW50IHhlbmV2dGNobl91bmJpbmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBl dnRjaG5fcG9ydF90IHBvcnQpOworCisvKgorICogUmV0dXJuIHRoZSBuZXh0IGV2ZW50IGNoYW5u ZWwgdG8gYmVjb21lIHBlbmRpbmcsIG9yIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoCisgKiBjYXNl IGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKgorICogQXQgdGhlIGh5cGVydmlz b3IgbGV2ZWwgdGhlIGV2ZW50IGNoYW5uZWwgd2lsbCBoYXZlIGJlZW4gbWFza2VkLAorICogYW5k IHRoZW4gY2xlYXJlZCwgYnkgdGhlIHVuZGVybHlpbmcgbWFjaGluZXJ5IChldnRjaG4ga2VybmVs CisgKiBkcml2ZXIsIG9yIGVxdWl2YWxlbnQpLiAgU28gaWYgdGhlIGV2ZW50IGNoYW5uZWwgaXMg c2lnbmFsZWQgYWdhaW4KKyAqIGFmdGVyIGl0IGlzIHJldHVybmVkIGhlcmUsIGl0IHdpbGwgYmUg cXVldWVkIHVwLCBhbmQgZGVsaXZlcmVkCisgKiBhZ2FpbiBhZnRlciB5b3UgdW5tYXNrIGl0LiAg KFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgWGVuCisgKiBwdWJsaWMgaGVhZGVyIGV2ZW50 X2NoYW5uZWwuaC4pCisgKgorICogT24gcmVjZWl2aW5nIHRoZSBub3RpZmljYXRpb24gZnJvbSB4 ZW5ldnRjaG5fcGVuZGluZywgeW91IHNob3VsZAorICogbm9ybWFsbHk6IGNoZWNrIChieSBvdGhl ciBtZWFucykgd2hhdCB3b3JrIG5lZWRzIGRvaW5nOyBkbyB0aGUKKyAqIG5lY2Vzc2FyeSB3b3Jr IChpZiBhbnkpOyB1bm1hc2sgdGhlIGV2ZW50IGNoYW5uZWwgd2l0aAorICogeGVuZXZ0Y2huX3Vu bWFzayAoaWYgeW91IHdhbnQgdG8gcmVjZWl2ZSBhbnkgZnVydGhlcgorICogbm90aWZpY2F0aW9u cykuCisgKi8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9wZW5kaW5nKHhlbmV2 dGNobl9oYW5kbGUgKnhjZSk7CisKKy8qCisgKiBVbm1hc2sgdGhlIGdpdmVuIGV2ZW50IGNoYW5u ZWwuIFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubworICogd2lsbCBi ZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqLworaW50IHhlbmV2dGNobl91bm1hc2soeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisjZW5kaWYKKworLyoKKyAqIExv Y2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9saWJ4ZW5ldnRj aG4ubWFwIGIvdG9vbHMvbGlicy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjVhMWUyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMv bGlicy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcApAQCAtMCwwICsxLDE5IEBACitWRVJTXzEuMCB7 CisJZ2xvYmFsOgorCQl4ZW5ldnRjaG5fb3BlbjsKKwkJeGVuZXZ0Y2huX2Nsb3NlOworCisJCXhl bmV2dGNobl9mZDsKKworCQl4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQ7CisJCXhlbmV2dGNo bl9iaW5kX2ludGVyZG9tYWluOworCQl4ZW5ldnRjaG5fYmluZF92aXJxOworCisJCXhlbmV2dGNo bl9ub3RpZnk7CisKKwkJeGVuZXZ0Y2huX3VuYmluZDsKKwkJeGVuZXZ0Y2huX3VubWFzazsKKwor CQl4ZW5ldnRjaG5fcGVuZGluZzsKKwlsb2NhbDogKjsgLyogRG8gbm90IGV4cG9zZSBhbnl0aGlu ZyBieSBkZWZhdWx0ICovCit9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vbGludXgu YyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2xpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMjdmZDZlOQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2xp bnV4LmMKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIFNwbGl0IG91dCBmcm9t IHhjX2xpbnVzX29zZGVwLmM6CisgKgorICogQ29weXJpZ2h0IDIwMDYgU3VuIE1pY3Jvc3lzdGVt cywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaW5jbHVkZSA8ZXJybm8uaD4K KyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxp Yi5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNo bi5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCitpbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IG9wZW4oIi9kZXYveGVuL2V2dGNo biIsIE9fUkRXUik7CisgICAgaWYgKCBmZCA9PSAtMSApCisgICAgICAgIHJldHVybiAtMTsKKyAg ICB4Y2UtPmZkID0gZmQ7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fY2xv c2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGlmICggeGNlLT5mZCA9PSAtMSApCisg ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQpOworfQorCitpbnQg eGVuZXZ0Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICByZXR1cm4geGNlLT5m ZDsKK30KKworaW50IHhlbmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBldnRj aG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9j dGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7CisKKyAgICBub3RpZnkucG9ydCA9IHBvcnQ7CisKKyAg ICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkpOworfQorCitl dnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4ZW5ldnRj aG5faGFuZGxlICp4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZG9taWQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1 Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7CisKKyAgICBiaW5kLnJlbW90 ZV9kb21haW4gPSBkb21pZDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJ TkRfVU5CT1VORF9QT1JULCAmYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVu ZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0 X3QgcmVtb3RlX3BvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9j dGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFp biA9IGRvbWlkOworICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKKworICAgIHJl dHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKK30K KworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9o YW5kbGUgKnhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgdmlycSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBp b2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7CisKKyAgICBiaW5kLnZpcnEgPSB2aXJxOworCisg ICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Cit9CisK K2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRf dCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNo bl91bmJpbmQgdW5iaW5kOworCisgICAgdW5iaW5kLnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJu IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKK30KKworZXZ0Y2huX3Bv cnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7 CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7CisKKyAgICBp ZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVvZihwb3J0KSApCisgICAg ICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBwb3J0OworfQorCitpbnQgeGVuZXZ0Y2huX3Vu bWFzayh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBp bnQgZmQgPSB4Y2UtPmZkOworCisgICAgaWYgKCB3cml0ZShmZCwgJnBvcnQsIHNpemVvZihwb3J0 KSkgIT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAwOwor fQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxl OiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0 Y2huL21pbmlvcy5jIGIvdG9vbHMvbGlicy9ldnRjaG4vbWluaW9zLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZmI5MTNhMgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xp YnMvZXZ0Y2huL21pbmlvcy5jCkBAIC0wLDAgKzEsMjY5IEBACisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKgorICogQ29weXJpZ2h0IDIwMDctMjAwOCBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50 aGliYXVsdEBldS5jaXRyaXguY29tPi4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2Ug aXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogU3BsaXQgb2Zm IGZyb20geGNfbWluaW9zLmMKKyAqLworCisjaW5jbHVkZSAieGVuLWV4dGVybmFsL2JzZC1zeXMt cXVldWUuaCIKKyNpbmNsdWRlIDxtaW5pLW9zL3R5cGVzLmg+CisjaW5jbHVkZSA8bWluaS1vcy9v cy5oPgorI2luY2x1ZGUgPG1pbmktb3MvbGliLmg+CisjaW5jbHVkZSA8bWluaS1vcy9ldmVudHMu aD4KKyNpbmNsdWRlIDxtaW5pLW9zL3dhaXQuaD4KKworI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4K KworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNu dGwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUg PGludHR5cGVzLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgi CisKK2V4dGVybiB2b2lkIG1pbmlvc19ldnRjaG5fY2xvc2VfZmQoaW50IGZkKTsKKworZXh0ZXJu IHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgZXZlbnRfcXVldWU7CisKKy8vdm9pZCBtaW5pb3NfZXZ0 Y2huX2Nsb3NlX2ZkKGludCBmZCk7CisKKy8qIFhYWCBOb3RlOiBUaGlzIGlzIG5vdCB0aHJlYWRz YWZlICovCitzdGF0aWMgc3RydWN0IGV2dGNobl9wb3J0X2luZm8qIHBvcnRfYWxsb2MoaW50IGZk KSB7CisgICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBwb3J0X2lu Zm8gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvKSk7CisgICAgaWYgKHBv cnRfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwb3J0X2luZm8tPnBl bmRpbmcgPSAwOworICAgIHBvcnRfaW5mby0+cG9ydCA9IC0xOworICAgIHBvcnRfaW5mby0+Ym91 bmQgPSAwOworCisgICAgTElTVF9JTlNFUlRfSEVBRCgmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywg cG9ydF9pbmZvLCBsaXN0KTsKKyAgICByZXR1cm4gcG9ydF9pbmZvOworfQorCitzdGF0aWMgdm9p ZCBwb3J0X2RlYWxsb2Moc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbykgeworICAg IGlmIChwb3J0X2luZm8tPmJvdW5kKQorICAgICAgICB1bmJpbmRfZXZ0Y2huKHBvcnRfaW5mby0+ cG9ydCk7CisgICAgTElTVF9SRU1PVkUocG9ydF9pbmZvLCBsaXN0KTsKKyAgICBmcmVlKHBvcnRf aW5mbyk7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFuZGxlICp4Y2Up Cit7CisgICAgaW50IGZkID0gYWxsb2NfZmQoRlRZUEVfRVZUQ0hOKTsKKyAgICBpZiAoIGZkID09 IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIExJU1RfSU5JVCgmZmlsZXNbZmRdLmV2dGNo bi5wb3J0cyk7CisgICAgeGNlLT5mZCA9IGZkOworICAgIHByaW50ZigiZXZ0Y2huX29wZW4oKSAt PiAlZFxuIiwgZmQpOworICAgIHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3Nl KHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAg ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKwordm9pZCBt aW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCkKK3sKKyAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRf aW5mbyAqcG9ydF9pbmZvLCAqdG1wOworICAgIExJU1RfRk9SRUFDSF9TQUZFKHBvcnRfaW5mbywg JmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QsIHRtcCkKKyAgICAgICAgcG9ydF9kZWFsbG9j KHBvcnRfaW5mbyk7CisKKyAgICBmaWxlc1tmZF0udHlwZSA9IEZUWVBFX05PTkU7Cit9CisKK2lu dCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIHJldHVybiB4Y2Ut PmZkOworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2 dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gbm90aWZ5X3Jl bW90ZV92aWFfZXZ0Y2huKHBvcnQpOworCisgICAgaWYgKHJldCA8IDApIHsKKwllcnJubyA9IC1y ZXQ7CisJcmV0ID0gLTE7CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lk IGV2dGNobl9oYW5kbGVyKGV2dGNobl9wb3J0X3QgcG9ydCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHZvaWQgKmRhdGEpCit7CisgICAgaW50IGZkID0gKGludCkoaW50cHRyX3QpZGF0YTsKKyAgICBz dHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGFzc2VydChmaWxlc1tmZF0u dHlwZSA9PSBGVFlQRV9FVlRDSE4pOworICAgIG1hc2tfZXZ0Y2huKHBvcnQpOworICAgIExJU1Rf Rk9SRUFDSChwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0KSB7CisgICAg ICAgIGlmIChwb3J0X2luZm8tPnBvcnQgPT0gcG9ydCkKKyAgICAgICAgICAgIGdvdG8gZm91bmQ7 CisgICAgfQorICAgIHByaW50aygiVW5rbm93biBwb3J0IGZvciBoYW5kbGUgJWRcbiIsIGZkKTsK KyAgICByZXR1cm47CisKKyBmb3VuZDoKKyAgICBwb3J0X2luZm8tPnBlbmRpbmcgPSAxOworICAg IGZpbGVzW2ZkXS5yZWFkID0gMTsKKyAgICB3YWtlX3VwKCZldmVudF9xdWV1ZSk7Cit9CisKK2V2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNo bl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAg c3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBpbnQgcmV0OworICAgIGV2 dGNobl9wb3J0X3QgcG9ydDsKKworICAgIGFzc2VydChnZXRfY3VycmVudCgpID09IG1haW5fdGhy ZWFkKTsKKyAgICBwb3J0X2luZm8gPSBwb3J0X2FsbG9jKGZkKTsKKyAgICBpZiAocG9ydF9pbmZv ID09IE5VTEwpCisJcmV0dXJuIC0xOworCisgICAgcHJpbnRmKCJ4ZW5ldnRjaG5fYmluZF91bmJv dW5kX3BvcnQoJWQpIiwgZG9taWQpOworICAgIHJldCA9IGV2dGNobl9hbGxvY191bmJvdW5kKGRv bWlkLCBldnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCwgJnBvcnQpOworICAgIHBy aW50ZigiID0gJWRcbiIsIHJldCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworCXBvcnRfZGVhbGxv Yyhwb3J0X2luZm8pOworCWVycm5vID0gLXJldDsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIHBv cnRfaW5mby0+Ym91bmQgPSAxOworICAgIHBvcnRfaW5mby0+cG9ydCA9IHBvcnQ7CisgICAgdW5t YXNrX2V2dGNobihwb3J0KTsKKyAgICByZXR1cm4gcG9ydDsKK30KKworZXZ0Y2huX3BvcnRfb3Jf ZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2Us IGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZk OworICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87CisgICAgZXZ0Y2huX3Bv cnRfdCBsb2NhbF9wb3J0OworICAgIGludCByZXQ7CisKKyAgICBhc3NlcnQoZ2V0X2N1cnJlbnQo KSA9PSBtYWluX3RocmVhZCk7CisgICAgcG9ydF9pbmZvID0gcG9ydF9hbGxvYyhmZCk7CisgICAg aWYgKHBvcnRfaW5mbyA9PSBOVUxMKQorCXJldHVybiAtMTsKKworICAgIHByaW50ZigieGVuZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4oJWQsICUiUFJJZDMyIikiLCBkb21pZCwgcmVtb3RlX3BvcnQp OworICAgIHJldCA9IGV2dGNobl9iaW5kX2ludGVyZG9tYWluKGRvbWlkLCByZW1vdGVfcG9ydCwg ZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQsICZsb2NhbF9wb3J0KTsKKyAgICBw cmludGYoIiA9ICVkXG4iLCByZXQpOworCisgICAgaWYgKHJldCA8IDApIHsKKwlwb3J0X2RlYWxs b2MocG9ydF9pbmZvKTsKKwllcnJubyA9IC1yZXQ7CisJcmV0dXJuIC0xOworICAgIH0KKyAgICBw b3J0X2luZm8tPmJvdW5kID0gMTsKKyAgICBwb3J0X2luZm8tPnBvcnQgPSBsb2NhbF9wb3J0Owor ICAgIHVubWFza19ldnRjaG4obG9jYWxfcG9ydCk7CisgICAgcmV0dXJuIGxvY2FsX3BvcnQ7Cit9 CisKK2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3Bv cnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGV2dGNobl9w b3J0X2luZm8gKnBvcnRfaW5mbzsKKworICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxl c1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0KSB7CisgICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQg PT0gcG9ydCkgeworICAgICAgICAgICAgcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7CisgICAgICAg ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcmludGYoIldhcm5pbmc6IGNv dWxkbid0IGZpbmQgcG9ydCAlIlBSSWQzMiIgZm9yIHhjIGhhbmRsZSAleFxuIiwgcG9ydCwgZmQp OworICAgIGVycm5vID0gRUlOVkFMOworICAgIHJldHVybiAtMTsKK30KKworZXZ0Y2huX3BvcnRf b3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgdW5z aWduZWQgaW50IHZpcnEpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgZXZ0 Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKKworICAg IGFzc2VydChnZXRfY3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKKyAgICBwb3J0X2luZm8gPSBw b3J0X2FsbG9jKGZkKTsKKyAgICBpZiAocG9ydF9pbmZvID09IE5VTEwpCisJcmV0dXJuIC0xOwor CisgICAgcHJpbnRmKCJ4ZW5ldnRjaG5fYmluZF92aXJxKCVkKSIsIHZpcnEpOworICAgIHBvcnQg PSBiaW5kX3ZpcnEodmlycSwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQpOwor CisgICAgaWYgKHBvcnQgPCAwKSB7CisJcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7CisJZXJybm8g PSAtcG9ydDsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOwor ICAgIHBvcnRfaW5mby0+cG9ydCA9IHBvcnQ7CisgICAgdW5tYXNrX2V2dGNobihwb3J0KTsKKyAg ICByZXR1cm4gcG9ydDsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fcGVu ZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAg ICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisgICAgZXZ0Y2huX3BvcnRfdCByZXQgPSAtMTsKKworICAgIGxvY2FsX2lycV9zYXZl KGZsYWdzKTsKKyAgICBmaWxlc1tmZF0ucmVhZCA9IDA7CisKKyAgICBMSVNUX0ZPUkVBQ0gocG9y dF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgeworICAgICAgICBpZiAocG9y dF9pbmZvLT5wb3J0ICE9IC0xICYmIHBvcnRfaW5mby0+cGVuZGluZykgeworICAgICAgICAgICAg aWYgKHJldCA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldCA9IHBvcnRfaW5mby0+cG9ydDsK KyAgICAgICAgICAgICAgICBwb3J0X2luZm8tPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICBmaWxlc1tmZF0ucmVhZCA9IDE7CisgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbG9jYWxfaXJx X3Jlc3RvcmUoZmxhZ3MpOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5t YXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIHVu bWFza19ldnRjaG4ocG9ydCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJp YWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9m ZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVu ZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vbmV0YnNkLmMgYi90b29scy9s aWJzL2V2dGNobi9uZXRic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j NDEyM2ZlCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRjaG4vbmV0YnNkLmMKQEAg LTAsMCArMSwxNDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQg MjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNl IGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIFNwbGl0IG91 dCBmcm9tIHhjX25ldGJzZC5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8 dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPHhlbi9zeXMv ZXZ0Y2huLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKKyNkZWZpbmUgRVZUQ0hOX0RFVl9O QU1FICAiL2Rldi94ZW5ldnQiCisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRjaG5faGFu ZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0gb3BlbihFVlRDSE5fREVWX05BTUUsIE9fTk9OQkxP Q0t8T19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworICAg IHhjZS0+ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNobl9jbG9z ZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0xICkKKyAg ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisKK2ludCB4 ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIHJldHVybiB4Y2UtPmZk OworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKKworICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKKworICAg IHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Cit9CisKK2V2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhlbmV2dGNo bl9oYW5kbGUgKiB4Y2UsIGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAg IHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKKyAgICBpbnQgcmV0 OworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisKKyAgICByZXQgPSBpb2N0bChm ZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmluZCk7CisgICAgaWYgKHJldCA9 PSAwKQorCXJldHVybiBiaW5kLnBvcnQ7CisgICAgZWxzZQorCXJldHVybiAtMTsKK30KKworZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5f aGFuZGxlICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICBpbnQg ZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBi aW5kOworICAgIGludCByZXQ7CisKKyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKKyAg ICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7CisKKyAgICByZXQgPSBpb2N0bChmZCwg SU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKKyAgICBpZiAocmV0ID09IDAp CisJcmV0dXJuIGJpbmQucG9ydDsKKyAgICBlbHNlCisJcmV0dXJuIC0xOworfQorCitpbnQgeGVu ZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkK K3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5k IHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChm ZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vy cm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2lnbmVk IGludCB2aXJxKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2 dGNobl9iaW5kX3ZpcnEgYmluZDsKKyAgICBpbnQgZXJyOworCisgICAgYmluZC52aXJxID0gdmly cTsKKworICAgIGVyciA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7 CisgICAgaWYgKGVycikKKwlyZXR1cm4gLTE7CisgICAgZWxzZQorCXJldHVybiBiaW5kLnBvcnQ7 Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgZXZ0Y2huX3BvcnRf dCBwb3J0OworCisgICAgaWYgKCByZWFkX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2Yo cG9ydCkpID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIHBvcnQ7Cit9 CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3Bv cnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgcmV0dXJuIHdyaXRlX2V4 YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpOworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL3ByaXZhdGUuaCBiL3Rv b2xzL2xpYnMvZXZ0Y2huL3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5mY2QwZTk2Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRjaG4vcHJpdmF0 ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKyNpZm5kZWYgWEVORVZUQ0hOX1BSSVZBVEVfSAorI2RlZmlu ZSBYRU5FVlRDSE5fUFJJVkFURV9ICisKKyNpbmNsdWRlIDx4ZW50b29sbG9nLmg+CisjaW5jbHVk ZSA8eGVuZXZ0Y2huLmg+CisKK3N0cnVjdCB4ZW5ldnRjaG5faGFuZGxlIHsKKyAgICB4ZW50b29s bG9nX2xvZ2dlciAqbG9nZ2VyLCAqbG9nZ2VyX3RvZnJlZTsKKyAgICBpbnQgZmQ7Cit9OworCitp bnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKK2ludCBvc2RlcF9l dnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKKworI2VuZGlmCisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vc29sYXJpcy5j IGIvdG9vbHMvbGlicy9ldnRjaG4vc29sYXJpcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjExNGNlZmIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9z b2xhcmlzLmMKQEAgLTAsMCArMSwxMzUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg KiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoK KyAqIFNwbGl0IG91dCBmcm9tIHhjX3NvbGFyaXMuYworICovCisKKyNpbmNsdWRlIDxmY250bC5o PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNs dWRlIDx4ZW4vc3lzL2V2dGNobi5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCitpbnQgb3Nk ZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZDsKKwor ICAgIGlmICggKGZkID0gb3BlbigiL2Rldi94ZW4vZXZ0Y2huIiwgT19SRFdSKSkgPT0gLTEgKQor ICAgIHsKKyAgICAgICAgUEVSUk9SKCJDb3VsZCBub3Qgb3BlbiBldmVudCBjaGFubmVsIGludGVy ZmFjZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgeGNlLT5mZCA9IGZkOwor ICAgIHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9oYW5k bGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gMDsK KworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKworaW50IHhlbmV2dGNobl9mZCh4ZW5l dnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7Cit9CisKK2ludCB4ZW5l dnRjaG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQor eworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9ub3RpZnkg bm90aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAgcmV0dXJuIGlvY3RsKGZk LCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJy b3JfdCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBp bnQgZG9taWQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7CisKKyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBk b21pZDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9Q T1JULCAmYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRf aW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQgZG9taWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVt b3RlX3BvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKKworICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRv bWlkOworICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKKworICAgIHJldHVybiBp b2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKK30KKworZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5kbGUg KnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBz dHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOworCisgICAgYmluZC52aXJxID0gdmly cTsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQp OworfQorCitpbnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKKworICAg IHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9CisKK2V2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVuZXZ0Y2huX2hhbmRsZSAq eGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgZXZ0Y2huX3BvcnRfdCBwb3J0Owor CisgICAgaWYgKCByZWFkX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpID09 IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIHBvcnQ7Cit9CisKK2ludCB4 ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0 KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgcmV0dXJuIHdyaXRlX2V4YWN0KGZkLCAo Y2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaCBi L3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaAppbmRleCA4NTNlOWM3Li43 NmYxN2ZlIDEwMDY0NAotLS0gYS90b29scy9saWJzL3Rvb2xsb2cvaW5jbHVkZS94ZW50b29sbG9n LmgKKysrIGIvdG9vbHMvbGlicy90b29sbG9nL2luY2x1ZGUveGVudG9vbGxvZy5oCkBAIC0xMzQs MyArMTM0LDEzIEBAIGNvbnN0IGNoYXIgKnh0bF9sZXZlbF90b19zdHJpbmcoeGVudG9vbGxvZ19s ZXZlbCk7IC8qIG5ldmVyIGZhaWxzICovCiAKIAogI2VuZGlmIC8qIFhFTlRPT0xMT0dfSCAqLwor CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAi QlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRh YnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvdG9vbGxv Zy94dGxfY29yZS5jIGIvdG9vbHMvbGlicy90b29sbG9nL3h0bF9jb3JlLmMKaW5kZXggYzQ3MjRh MC4uMDk5ZDJmMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy90b29sbG9nL3h0bF9jb3JlLmMKKysr IGIvdG9vbHMvbGlicy90b29sbG9nL3h0bF9jb3JlLmMKQEAgLTgxLDMgKzgxLDEzIEBAIHZvaWQg eHRsX2xvZ2dlcl9kZXN0cm95KHN0cnVjdCB4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2VyKSB7CiAg ICAgaWYgKCFsb2dnZXIpIHJldHVybjsKICAgICBsb2dnZXItPmRlc3Ryb3kobG9nZ2VyKTsKIH0K KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10 YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL3Rvb2xs b2cveHRsX2xvZ2dlcl9zdGRpby5jIGIvdG9vbHMvbGlicy90b29sbG9nL3h0bF9sb2dnZXJfc3Rk aW8uYwppbmRleCAwY2Q5MjA2Li5mOWM1YmQ4IDEwMDY0NAotLS0gYS90b29scy9saWJzL3Rvb2xs b2cveHRsX2xvZ2dlcl9zdGRpby5jCisrKyBiL3Rvb2xzL2xpYnMvdG9vbGxvZy94dGxfbG9nZ2Vy X3N0ZGlvLmMKQEAgLTE5MCwzICsxOTAsMTMgQEAgeGVudG9vbGxvZ19sb2dnZXJfc3RkaW9zdHJl YW0gKnh0bF9jcmVhdGVsb2dnZXJfc3RkaW9zdHJlYW0KIAogICAgIHJldHVybiBYVExfTkVXX0xP R0dFUihzdGRpb3N0cmVhbSwgbmV3bG9nZ2VyKTsKIH0KKworLyoKKyAqIExvY2FsIHZhcmlhYmxl czoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0 OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgor ICovCmRpZmYgLS1naXQgYS90b29scy9saWJ2Y2hhbi9NYWtlZmlsZSBiL3Rvb2xzL2xpYnZjaGFu L01ha2VmaWxlCmluZGV4IDNjNTBmZTYuLjg0MTI4YTMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnZj aGFuL01ha2VmaWxlCisrKyBiL3Rvb2xzL2xpYnZjaGFuL01ha2VmaWxlCkBAIC0xMCw5ICsxMCw5 IEBAIE5PREVfT0JKUyA9IG5vZGUubwogTk9ERTJfT0JKUyA9IG5vZGUtc2VsZWN0Lm8KIAogTElC VkNIQU5fUElDX09CSlMgPSAkKHBhdHN1YnN0ICUubywlLm9waWMsJChMSUJWQ0hBTl9PQkpTKSkK LUxJQlZDSEFOX0xJQlMgPSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChMRExJQlNfbGlieGVuY3Ry bCkKLSQoTElCVkNIQU5fT0JKUykgJChMSUJWQ0hBTl9QSUNfT0JKUyk6IENGTEFHUyArPSAkKENG TEFHU19saWJ4ZW5zdG9yZSkgJChDRkxBR1NfbGlieGVuY3RybCkKLSQoTk9ERV9PQkpTKSAkKE5P REUyX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKK0xJQlZDSEFOX0xJQlMg PSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGli eGVuZXZ0Y2huKQorJChMSUJWQ0hBTl9PQkpTKSAkKExJQlZDSEFOX1BJQ19PQkpTKTogQ0ZMQUdT ICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19s aWJ4ZW5ldnRjaG4pCiskKE5PREVfT0JKUykgJChOT0RFMl9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZM QUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIAogTUFKT1IgPSAxLjAKIE1J Tk9SID0gMApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlidmNoYW4vaW5pdC5jIGIvdG9vbHMvbGlidmNo YW4vaW5pdC5jCmluZGV4IDc3YmU0ZTcuLjY2Y2IxMDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnZj aGFuL2luaXQuYworKysgYi90b29scy9saWJ2Y2hhbi9pbml0LmMKQEAgLTIxNiwyNSArMjE2LDI1 IEBAIHN0YXRpYyBpbnQgaW5pdF9ldnRfc3J2KHN0cnVjdCBsaWJ4ZW52Y2hhbiAqY3RybCwgaW50 IGRvbWFpbiwgeGVudG9vbGxvZ19sb2dnZXIKIHsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHBv cnQ7CiAKLQljdHJsLT5ldmVudCA9IHhjX2V2dGNobl9vcGVuKGxvZ2dlciwgMCk7CisJY3RybC0+ ZXZlbnQgPSB4ZW5ldnRjaG5fb3Blbihsb2dnZXIsIDApOwogCWlmICghY3RybC0+ZXZlbnQpCiAJ CXJldHVybiAtMTsKIAotCXBvcnQgPSB4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoY3RybC0+ ZXZlbnQsIGRvbWFpbik7CisJcG9ydCA9IHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydChjdHJs LT5ldmVudCwgZG9tYWluKTsKIAlpZiAocG9ydCA8IDApCiAJCWdvdG8gZmFpbDsKIAljdHJsLT5l dmVudF9wb3J0ID0gcG9ydDsKIAotCWlmICh4Y19ldnRjaG5fdW5tYXNrKGN0cmwtPmV2ZW50LCBj dHJsLT5ldmVudF9wb3J0KSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFzayhjdHJsLT5ldmVudCwgY3Ry bC0+ZXZlbnRfcG9ydCkpCiAJCWdvdG8gZmFpbDsKIAogCXJldHVybiAwOwogCiBmYWlsOgogCWlm IChwb3J0ID49IDApCi0JCXhjX2V2dGNobl91bmJpbmQoY3RybC0+ZXZlbnQsIHBvcnQpOworCQl4 ZW5ldnRjaG5fdW5iaW5kKGN0cmwtPmV2ZW50LCBwb3J0KTsKIAotCXhjX2V2dGNobl9jbG9zZShj dHJsLT5ldmVudCk7CisJeGVuZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2ZW50KTsKIAljdHJsLT5ldmVu dCA9IE5VTEw7CiAKIAlyZXR1cm4gLTE7CkBAIC0zNDYsMjYgKzM0NiwyNiBAQCBzdGF0aWMgaW50 IGluaXRfZXZ0X2NsaShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwsIGludCBkb21haW4sIHhlbnRv b2xsb2dfbG9nZ2VyCiB7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBwb3J0OwogCi0JY3RybC0+ ZXZlbnQgPSB4Y19ldnRjaG5fb3Blbihsb2dnZXIsIDApOworCWN0cmwtPmV2ZW50ID0geGVuZXZ0 Y2huX29wZW4obG9nZ2VyLCAwKTsKIAlpZiAoIWN0cmwtPmV2ZW50KQogCQlyZXR1cm4gLTE7CiAK LQlwb3J0ID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oY3RybC0+ZXZlbnQsCisJcG9ydCA9 IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKGN0cmwtPmV2ZW50LAogCQlkb21haW4sIGN0cmwt PmV2ZW50X3BvcnQpOwogCWlmIChwb3J0IDwgMCkKIAkJZ290byBmYWlsOwogCWN0cmwtPmV2ZW50 X3BvcnQgPSBwb3J0OwogCi0JaWYgKHhjX2V2dGNobl91bm1hc2soY3RybC0+ZXZlbnQsIGN0cmwt PmV2ZW50X3BvcnQpKQorCWlmICh4ZW5ldnRjaG5fdW5tYXNrKGN0cmwtPmV2ZW50LCBjdHJsLT5l dmVudF9wb3J0KSkKIAkJZ290byBmYWlsOwogCiAJcmV0dXJuIDA7CiAKIGZhaWw6CiAJaWYgKHBv cnQgPj0gMCkKLQkJeGNfZXZ0Y2huX3VuYmluZChjdHJsLT5ldmVudCwgcG9ydCk7CisJCXhlbmV2 dGNobl91bmJpbmQoY3RybC0+ZXZlbnQsIHBvcnQpOwogCi0JeGNfZXZ0Y2huX2Nsb3NlKGN0cmwt PmV2ZW50KTsKKwl4ZW5ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQpOwogCWN0cmwtPmV2ZW50ID0g TlVMTDsKIAogCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnZjaGFuL2lvLmMgYi90 b29scy9saWJ2Y2hhbi9pby5jCmluZGV4IDM4MWNjMDUuLjUzMzkzYTUgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnZjaGFuL2lvLmMKKysrIGIvdG9vbHMvbGlidmNoYW4vaW8uYwpAQCAtMTA1LDcgKzEw NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNlbmRfbm90aWZ5KHN0cnVjdCBsaWJ4ZW52Y2hhbiAq Y3RybCwgdWludDhfdCBiaXQpCiAJbm90aWZ5ID0gY3RybC0+aXNfc2VydmVyID8gJmN0cmwtPnJp bmctPnNydl9ub3RpZnkgOiAmY3RybC0+cmluZy0+Y2xpX25vdGlmeTsKIAlwcmV2ID0gX19zeW5j X2ZldGNoX2FuZF9hbmQobm90aWZ5LCB+Yml0KTsKIAlpZiAocHJldiAmIGJpdCkKLQkJcmV0dXJu IHhjX2V2dGNobl9ub3RpZnkoY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpOworCQlyZXR1 cm4geGVuZXZ0Y2huX25vdGlmeShjdHJsLT5ldmVudCwgY3RybC0+ZXZlbnRfcG9ydCk7CiAJZWxz ZQogCQlyZXR1cm4gMDsKIH0KQEAgLTE5NiwxMCArMTk2LDEwIEBAIGludCBsaWJ4ZW52Y2hhbl9i dWZmZXJfc3BhY2Uoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsKQogCiBpbnQgbGlieGVudmNoYW5f d2FpdChzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiB7Ci0JaW50IHJldCA9IHhjX2V2dGNobl9w ZW5kaW5nKGN0cmwtPmV2ZW50KTsKKwlpbnQgcmV0ID0geGVuZXZ0Y2huX3BlbmRpbmcoY3RybC0+ ZXZlbnQpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gLTE7Ci0JeGNfZXZ0Y2huX3VubWFzayhj dHJsLT5ldmVudCwgcmV0KTsKKwl4ZW5ldnRjaG5fdW5tYXNrKGN0cmwtPmV2ZW50LCByZXQpOwog CXJldHVybiAwOwogfQogCkBAIC0zNTIsNyArMzUyLDcgQEAgaW50IGxpYnhlbnZjaGFuX2lzX29w ZW4oc3RydWN0IGxpYnhlbnZjaGFuKiBjdHJsKQogCiBpbnQgbGlieGVudmNoYW5fZmRfZm9yX3Nl bGVjdChzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiB7Ci0JcmV0dXJuIHhjX2V2dGNobl9mZChj dHJsLT5ldmVudCk7CisJcmV0dXJuIHhlbmV2dGNobl9mZChjdHJsLT5ldmVudCk7CiB9CiAKIHZv aWQgbGlieGVudmNoYW5fY2xvc2Uoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsKQpAQCAtMzc0LDgg KzM3NCw4IEBAIHZvaWQgbGlieGVudmNoYW5fY2xvc2Uoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJs KQogCX0KIAlpZiAoY3RybC0+ZXZlbnQpIHsKIAkJaWYgKGN0cmwtPnJpbmcpCi0JCQl4Y19ldnRj aG5fbm90aWZ5KGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KTsKLQkJeGNfZXZ0Y2huX2Ns b3NlKGN0cmwtPmV2ZW50KTsKKwkJCXhlbmV2dGNobl9ub3RpZnkoY3RybC0+ZXZlbnQsIGN0cmwt PmV2ZW50X3BvcnQpOworCQl4ZW5ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQpOwogCX0KIAlpZiAo Y3RybC0+aXNfc2VydmVyKSB7CiAJCWlmIChjdHJsLT5nbnRzaHIpCmRpZmYgLS1naXQgYS90b29s cy9saWJ2Y2hhbi9saWJ4ZW52Y2hhbi5oIGIvdG9vbHMvbGlidmNoYW4vbGlieGVudmNoYW4uaApp bmRleCAwOTQ0YTBlLi4xNTQ0Mzc4IDEwMDY0NAotLS0gYS90b29scy9saWJ2Y2hhbi9saWJ4ZW52 Y2hhbi5oCisrKyBiL3Rvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFuLmgKQEAgLTQ0LDYgKzQ0LDcg QEAKIAogI2luY2x1ZGUgPHhlbi9pby9saWJ4ZW52Y2hhbi5oPgogI2luY2x1ZGUgPHhlbi9zeXMv ZXZ0Y2huLmg+CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgog CiBzdHJ1Y3QgbGlieGVudmNoYW5fcmluZyB7CkBAIC03MSw3ICs3Miw3IEBAIHN0cnVjdCBsaWJ4 ZW52Y2hhbiB7CiAJLyogUG9pbnRlciB0byBzaGFyZWQgcmluZyBwYWdlICovCiAJc3RydWN0IHZj aGFuX2ludGVyZmFjZSAqcmluZzsKIAkvKiBldmVudCBjaGFubmVsIGludGVyZmFjZSAqLwotCXhj X2V2dGNobiAqZXZlbnQ7CisJeGVuZXZ0Y2huX2hhbmRsZSAqZXZlbnQ7CiAJdWludDMyX3QgZXZl bnRfcG9ydDsKIAkvKiBpbmZvcm1hdGl2ZSBmbGFnczogYXJlIHdlIGFjdGluZyBhcyBzZXJ2ZXI/ ICovCiAJaW50IGlzX3NlcnZlcjoxOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvTWFrZWZpbGUg Yi90b29scy9saWJ4Yy9NYWtlZmlsZQppbmRleCA5NDA3MDhmLi5iOGZjNmE1IDEwMDY0NAotLS0g YS90b29scy9saWJ4Yy9NYWtlZmlsZQorKysgYi90b29scy9saWJ4Yy9NYWtlZmlsZQpAQCAtNDgs NiArNDgsNyBAQCBDVFJMX1NSQ1MtJChDT05GSUdfU3VuT1MpICs9IHhjX3NvbGFyaXMuYwogQ1RS TF9TUkNTLSQoQ09ORklHX05ldEJTRCkgKz0geGNfbmV0YnNkLmMKIENUUkxfU1JDUy0kKENPTkZJ R19OZXRCU0RSdW1wKSArPSB4Y19uZXRic2QuYwogQ1RSTF9TUkNTLSQoQ09ORklHX01pbmlPUykg Kz0geGNfbWluaW9zLmMKK0NUUkxfU1JDUy15ICAgICAgICs9IHhjX2V2dGNobl9jb21wYXQuYwog CiBHVUVTVF9TUkNTLXkgOj0KIEdVRVNUX1NSQ1MteSArPSB4Z19wcml2YXRlLmMgeGNfc3VzcGVu ZC5jCkBAIC0xMTEsNiArMTEyLDcgQEAgQ0ZMQUdTLSQoQ09ORklHX0xpbnV4KSArPSAtRF9HTlVf U09VUkNFCiAKIENGTEFHUwkrPSAkKFBUSFJFQURfQ0ZMQUdTKQogQ0ZMQUdTCSs9ICQoQ0ZMQUdT X2xpYnhlbnRvb2xsb2cpCitDRkxBR1MJKz0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKQogCiBDVFJM X0xJQl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCUubywkKENUUkxfU1JDUy15KSkKIENUUkxfUElD X09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJS5vcGljLCQoQ1RSTF9TUkNTLXkpKQpAQCAtMTY0LDcg KzE2Niw3IEBAIGluc3RhbGw6IGJ1aWxkCiAJJChJTlNUQUxMX0RBVEEpIGxpYnhlbmN0cmwuYSAk KERFU1RESVIpJChsaWJkaXIpCiAJJChTWU1MSU5LX1NITElCKSBsaWJ4ZW5jdHJsLnNvLiQoTUFK T1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxpYmRpcikvbGlieGVuY3RybC5zby4kKE1BSk9SKQog CSQoU1lNTElOS19TSExJQikgbGlieGVuY3RybC5zby4kKE1BSk9SKSAkKERFU1RESVIpJChsaWJk aXIpL2xpYnhlbmN0cmwuc28KLQkkKElOU1RBTExfREFUQSkgaW5jbHVkZS94ZW5jdHJsLmggaW5j bHVkZS94ZW5jdHJsb3NkZXAuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKQorCSQoSU5TVEFMTF9E QVRBKSBpbmNsdWRlL3hlbmN0cmwuaCBpbmNsdWRlL3hlbmN0cmxfY29tcGF0LmggaW5jbHVkZS94 ZW5jdHJsb3NkZXAuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKQogCSQoSU5TVEFMTF9TSExJQikg bGlieGVuZ3Vlc3Quc28uJChNQUpPUikuJChNSU5PUikgJChERVNURElSKSQobGliZGlyKQogCSQo SU5TVEFMTF9EQVRBKSBsaWJ4ZW5ndWVzdC5hICQoREVTVERJUikkKGxpYmRpcikKIAkkKFNZTUxJ TktfU0hMSUIpIGxpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxp YmRpcikvbGlieGVuZ3Vlc3Quc28uJChNQUpPUikKQEAgLTIwNyw3ICsyMDksNyBAQCBsaWJ4ZW5j dHJsLnNvLiQoTUFKT1IpOiBsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpLiQoTUlOT1IpCiAJJChTWU1M SU5LX1NITElCKSAkPCAkQAogCiBsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpLiQoTUlOT1IpOiAkKENU UkxfUElDX09CSlMpCi0JJChDQykgJChMREZMQUdTKSAkKFBUSFJFQURfTERGTEFHUykgLVdsLCQo U09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmN0cmwuc28uJChNQUpPUikgJChTSExJQl9MREZMQUdT KSAtbyAkQCAkXiAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKERMT1BFTl9MSUJTKSAkKFBUSFJF QURfTElCUykgJChBUFBFTkRfTERGTEFHUykKKwkkKENDKSAkKExERkxBR1MpICQoUFRIUkVBRF9M REZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVuY3RybC5zby4kKE1BSk9SKSAk KFNITElCX0xERkxBR1MpIC1vICRAICReICQoTERMSUJTX2xpYnhlbnRvb2xsb2cpICQoTERMSUJT X2xpYnhlbmV2dGNobikgJChETE9QRU5fTElCUykgJChQVEhSRUFEX0xJQlMpICQoQVBQRU5EX0xE RkxBR1MpCiAKICMgbGlieGVuZ3Vlc3QKIApAQCAtMjMwLDcgKzIzMiw3IEBAIHhjX2RvbV9iemlt YWdlbG9hZGVyLm9waWM6IENGTEFHUyArPSAkKGNhbGwgemxpYi1vcHRpb25zLEQpCiAKIGxpYnhl bmd1ZXN0LnNvLiQoTUFKT1IpLiQoTUlOT1IpOiBDT01QUkVTU0lPTl9MSUJTID0gJChjYWxsIHps aWItb3B0aW9ucyxsKQogbGlieGVuZ3Vlc3Quc28uJChNQUpPUikuJChNSU5PUik6ICQoR1VFU1Rf UElDX09CSlMpIGxpYnhlbmN0cmwuc28KLQkkKENDKSAkKExERkxBR1MpIC1XbCwkKFNPTkFNRV9M REZMQUcpIC1XbCxsaWJ4ZW5ndWVzdC5zby4kKE1BSk9SKSAkKFNITElCX0xERkxBR1MpIC1vICRA ICQoR1VFU1RfUElDX09CSlMpICQoQ09NUFJFU1NJT05fTElCUykgLWx6ICQoTERMSUJTX2xpYnhl bmN0cmwpICQoUFRIUkVBRF9MSUJTKSAkKEFQUEVORF9MREZMQUdTKQorCSQoQ0MpICQoTERGTEFH UykgLVdsLCQoU09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpICQoU0hM SUJfTERGTEFHUykgLW8gJEAgJChHVUVTVF9QSUNfT0JKUykgJChDT01QUkVTU0lPTl9MSUJTKSAt bHogJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKFBUSFJFQURf TElCUykgJChBUFBFTkRfTERGTEFHUykKIAogeGVuY3RybF9vc2RlcF9FTk9TWVMuc286ICQoT1NE RVBfUElDX09CSlMpIGxpYnhlbmN0cmwuc28KIAkkKENDKSAkKExERkxBR1MpICQoU0hMSUJfTERG TEFHUykgLW8gJEAgJChPU0RFUF9QSUNfT0JKUykgJChMRExJQlNfbGlieGVuY3RybCkgJChBUFBF TkRfTERGTEFHUykKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIv dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggODgxZGNkNS4uOGYzMWM0ZCAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysrIGIvdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5jdHJsLmgKQEAgLTExNyw3ICsxMTcsNiBAQAogICovCiAKIHR5cGVkZWYgc3Ry dWN0IHhjX2ludGVyZmFjZV9jb3JlIHhjX2ludGVyZmFjZTsKLXR5cGVkZWYgc3RydWN0IHhlbmV2 dGNobl9oYW5kbGUgeGNfZXZ0Y2huOwogdHlwZWRlZiBzdHJ1Y3QgeGNfaW50ZXJmYWNlX2NvcmUg eGNfZ250dGFiOwogdHlwZWRlZiBzdHJ1Y3QgeGNfaW50ZXJmYWNlX2NvcmUgeGNfZ250c2hyOwog CkBAIC0xMDg1LDcgKzEwODQsNiBAQCBpbnQgeGNfY3B1cG9vbF9tb3ZlZG9tYWluKHhjX2ludGVy ZmFjZSAqeGNoLAogICovCiB4Y19jcHVtYXBfdCB4Y19jcHVwb29sX2ZyZWVpbmZvKHhjX2ludGVy ZmFjZSAqeGNoKTsKIAotCiAvKgogICogRVZFTlQgQ0hBTk5FTCBGVU5DVElPTlMKICAqCkBAIC0x MTIwLDEwMSArMTExOCw3IEBAIGludCB4Y19ldnRjaG5fcmVzZXQoeGNfaW50ZXJmYWNlICp4Y2gs CiB0eXBlZGVmIHN0cnVjdCBldnRjaG5fc3RhdHVzIHhjX2V2dGNobl9zdGF0dXNfdDsKIGludCB4 Y19ldnRjaG5fc3RhdHVzKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG5fc3RhdHVzX3QgKnN0 YXR1cyk7CiAKLS8qCi0gKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGV2ZW50IGNoYW5uZWwgZHJp dmVyLCBvciBOVUxMIG9uIGZhaWx1cmUsIGluCi0gKiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUg c2V0IGFwcHJvcHJpYXRlbHkuCi0gKgotICogTm90ZToKLSAqIEFmdGVyIGZvcmsgYSBjaGlsZCBw cm9jZXNzIG11c3Qgbm90IHVzZSBhbnkgb3BlbmVkIHhjIGV2dGNobgotICogaGFuZGxlIGluaGVy aXRlZCBmcm9tIHRoZWlyIHBhcmVudC4gVGhleSBtdXN0IG9wZW4gYSBuZXcgaGFuZGxlIGlmCi0g KiB0aGV5IHdhbnQgdG8gaW50ZXJhY3Qgd2l0aCB4Yy4KLSAqCi0gKiBCZWZvcmUgWGVuIHByZS00 LjEgdGhpcyBmdW5jdGlvbiB3b3VsZCBzb21ldGltZXMgcmVwb3J0IGVycm9ycyB3aXRoIHBlcnJv ci4KLSAqLwoteGNfZXZ0Y2huICp4Y19ldnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAqbG9n Z2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGVuX2ZsYWdzKTsK IAotLyoKLSAqIENsb3NlIGEgaGFuZGxlIHByZXZpb3VzbHkgYWxsb2NhdGVkIHdpdGggeGNfZXZ0 Y2huX29wZW4oKS4KLSAqLwotaW50IHhjX2V2dGNobl9jbG9zZSh4Y19ldnRjaG4gKnhjZSk7Ci0K LS8qCi0gKiBSZXR1cm4gYW4gZmQgdGhhdCBjYW4gYmUgc2VsZWN0KCllZCBvbi4KLSAqCi0gKiBO b3RlIHRoYXQgZHVlIHRvIGJ1Z3MsIHNldHRpbmcgdGhpcyBmZCB0byBub24gYmxvY2tpbmcgbWF5 IG5vdAotICogd29yazogeW91IHdvdWxkIGhvcGUgdGhhdCBpdCB3b3VsZCByZXN1bHQgaW4geGNf ZXZ0Y2huX3BlbmRpbmcKLSAqIGZhaWxpbmcgd2l0aCBFV09VTERCTE9DSyBpZiB0aGVyZSBhcmUg bm8gZXZlbnRzIHNpZ25hbGVkLCBidXQgaW4KLSAqIGZhY3QgaXQgbWF5IGJsb2NrLiAgKEJ1ZyBp cyBwcmVzZW50IGluIGF0IGxlYXN0IExpbnV4IDMuMTIsIGFuZAotICogcGVyaGFwcyBvbiBvdGhl ciBwbGF0Zm9ybXMgb3IgbGF0ZXIgdmVyc2lvbi4pCi0gKgotICogVG8gYmUgc2FmZSwgeW91IG11 c3QgdXNlIHBvbGwoKSBvciBzZWxlY3QoKSBiZWZvcmUgZWFjaCBjYWxsIHRvCi0gKiB4Y19ldnRj aG5fcGVuZGluZy4gIElmIHlvdSBoYXZlIG11bHRpcGxlIHRocmVhZHMgKG9yIHByb2Nlc3NlcykK LSAqIHNoYXJpbmcgYSBzaW5nbGUgeGNlIGhhbmRsZSB0aGlzIHdpbGwgbm90IHdvcmssIGFuZCB0 aGVyZSBpcyBubwotICogc3RyYWlnaHRmb3J3YXJkIHdvcmthcm91bmQuICBQbGVhc2UgZGVzaWdu IHlvdXIgcHJvZ3JhbSBzb21lIG90aGVyCi0gKiB3YXkuCi0gKi8KLWludCB4Y19ldnRjaG5fZmQo eGNfZXZ0Y2huICp4Y2UpOwotCi0vKgotICogTm90aWZ5IHRoZSBnaXZlbiBldmVudCBjaGFubmVs LiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UKLSAqIGVycm5vIHdpbGwgYmUg c2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAq eGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOwotCi0vKgotICogUmV0dXJucyBhIG5ldyBldmVudCBw b3J0IGF3YWl0aW5nIGludGVyZG9tYWluIGNvbm5lY3Rpb24gZnJvbSB0aGUgZ2l2ZW4KLSAqIGRv bWFpbiBJRCwgb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNl dCBhcHByb3ByaWF0ZWx5LgotICovCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90Ci14Y19ldnRjaG5f YmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCk7Ci0KLS8qCi0gKiBS ZXR1cm5zIGEgbmV3IGV2ZW50IHBvcnQgYm91bmQgdG8gdGhlIHJlbW90ZSBwb3J0IGZvciB0aGUg Z2l2ZW4gZG9tYWluIElELAotICogb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJu byB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90 Ci14Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCk7Ci0K LS8qCi0gKiBCaW5kIGFuIGV2ZW50IGNoYW5uZWwgdG8gdGhlIGdpdmVuIFZJUlEuIFJldHVybnMg dGhlIGV2ZW50IGNoYW5uZWwgYm91bmQgdG8KLSAqIHRoZSBWSVJRLCBvciAtMSBvbiBmYWlsdXJl LCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWV2 dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9iaW5kX3ZpcnEoeGNfZXZ0Y2huICp4Y2Us IHVuc2lnbmVkIGludCB2aXJxKTsKLQotLyoKLSAqIFVuYmluZCB0aGUgZ2l2ZW4gZXZlbnQgY2hh bm5lbC4gUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vCi0gKiB3aWxs IGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1pbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19ldnRj aG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKLQotLyoKLSAqIFJldHVybiB0aGUgbmV4dCBl dmVudCBjaGFubmVsIHRvIGJlY29tZSBwZW5kaW5nLCBvciAtMSBvbiBmYWlsdXJlLCBpbiB3aGlj aAotICogY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICoKLSAqIEF0IHRo ZSBoeXBlcnZpc29yIGxldmVsIHRoZSBldmVudCBjaGFubmVsIHdpbGwgaGF2ZSBiZWVuIG1hc2tl ZCwKLSAqIGFuZCB0aGVuIGNsZWFyZWQsIGJ5IHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVyeSAoZXZ0 Y2huIGtlcm5lbAotICogZHJpdmVyLCBvciBlcXVpdmFsZW50KS4gIFNvIGlmIHRoZSBldmVudCBj aGFubmVsIGlzIHNpZ25hbGVkIGFnYWluCi0gKiBhZnRlciBpdCBpcyByZXR1cm5lZCBoZXJlLCBp dCB3aWxsIGJlIHF1ZXVlZCB1cCwgYW5kIGRlbGl2ZXJlZAotICogYWdhaW4gYWZ0ZXIgeW91IHVu bWFzayBpdC4gIChTZWUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIFhlbgotICogcHVibGljIGhl YWRlciBldmVudF9jaGFubmVsLmguKQotICoKLSAqIE9uIHJlY2VpdmluZyB0aGUgbm90aWZpY2F0 aW9uIGZyb20geGNfZXZ0Y2huX3BlbmRpbmcsIHlvdSBzaG91bGQKLSAqIG5vcm1hbGx5OiBjaGVj ayAoYnkgb3RoZXIgbWVhbnMpIHdoYXQgd29yayBuZWVkcyBkb2luZzsgZG8gdGhlCi0gKiBuZWNl c3Nhcnkgd29yayAoaWYgYW55KTsgdW5tYXNrIHRoZSBldmVudCBjaGFubmVsIHdpdGgKLSAqIHhj X2V2dGNobl91bm1hc2sgKGlmIHlvdSB3YW50IHRvIHJlY2VpdmUgYW55IGZ1cnRoZXIKLSAqIG5v dGlmaWNhdGlvbnMpLgotICovCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90Ci14Y19ldnRjaG5fcGVu ZGluZyh4Y19ldnRjaG4gKnhjZSk7Ci0KLS8qCi0gKiBVbm1hc2sgdGhlIGdpdmVuIGV2ZW50IGNo YW5uZWwuIFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubwotICogd2ls bCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0 Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CiAKIGludCB4Y19waHlzZGV2X3BjaV9hY2Nl c3NfbW9kaWZ5KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgZG9taWQsCkBAIC0yODUxLDYgKzI3NTUsOSBAQCBpbnQgeGNfcHNyX2Nh dF9nZXRfbDNfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpOwogI2VuZGlmCiAKKy8qIENv bXBhdCBzaGltcyAqLworI2luY2x1ZGUgInhlbmN0cmxfY29tcGF0LmgiCisKICNlbmRpZiAvKiBY RU5DVFJMX0ggKi8KIAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3Ry bF9jb21wYXQuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybF9jb21wYXQuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGRhZWIyCi0tLSAvZGV2L251bGwKKysrIGIv dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oCkBAIC0wLDAgKzEsNDggQEAKKy8q CisgKiBDb21wYXQgc2hpbXMgZm9yIHVzZSBvZiAzcmQgcGFydHkgY29uc3VtZXJzIG9mIGxpYnhl bmN0cmwKKyAqIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFzIGJlZW4gc3BsaXQgaW50byBzZXBhcmF0 ZSBsaWJyYXJpZXMuCisgKgorICogTmV3IGNvZGUgc2hvdWxkIHVzZSB0aGUgc2VwYXJhdGUgbGli cmFyaWVzLgorICoKKyAqIEVhY2ggaW50ZXJmYWNlIG11c3QgYmUgb3B0ZWQtaW50byBzZXBhcmF0 ZWx5IGJ5IGRlZmluaW5nOgorICoKKyAqIFhDX1dBTlRfQ09NUEFUX0VWVENITl9BUEkKKyAqICAt IEZ1bmN0aW9ucyByZWxhdGluZyB0byAvZGV2L3hlbi9ldnRjaG4KKyAqLworI2lmbmRlZiBYRU5D VFJMX0NPTVBBVF9ICisjZGVmaW5lIFhFTkNUUkxfQ09NUEFUX0gKKworI2lmZGVmIFhDX1dBTlRf Q09NUEFUX0VWVENITl9BUEkKKwordHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB4Y19l dnRjaG47CisKK3hjX2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxv Z2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Blbl9mbGFncyk7 CitpbnQgeGNfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4Y19ldnRjaG5fZmQo eGNfZXZ0Y2huICp4Y2UpOworaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2 dGNobl9wb3J0X3QgcG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmlu ZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCk7CitldnRjaG5fcG9ydF9v cl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50 IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVf cG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2 dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSk7CitpbnQgeGNfZXZ0Y2huX3VuYmluZCh4Y19l dnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QK K3hjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4Y19ldnRjaG5fdW5tYXNr KHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisjZW5kaWYgLyogWENfV0FO VF9DT01QQVRfRVZUQ0hOX0FQSSAqLworCisjZW5kaWYKKworLyoKKyAqIExvY2FsIHZhcmlhYmxl czoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0 OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgor ICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmggYi90b29scy9s aWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKaW5kZXggOGY5MThiMS4uMDUwYTUzNyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuZ3Vlc3QuaApAQCAtMzQsNiArMzQsMTIgQEAKICNkZWZpbmUgWDg2XzY0X0JfU0laRSAg IDY0IAogI2RlZmluZSBYODZfMzJfQl9TSVpFICAgMzIKIAorLyoKKyAqIFVzZXIgbm90IHVzaW5n IHhjX3N1c3BlbmRfKiAvIHhjX2F3YWl0X3N1c3BlbnQgbWF5IG5vdCB3YW50IHRvCisgKiBpbmNs dWRlIHRoZSBmdWxsIGxpYnhlbmV2dGNobiBBUEkgaGVyZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg eGVuZXZ0Y2huX2hhbmRsZSB4ZW5ldnRjaG5faGFuZGxlOworCiAvKiBjYWxsYmFja3MgcHJvdmlk ZWQgYnkgeGNfZG9tYWluX3NhdmUgKi8KIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyB7CiAgICAgLyog Q2FsbGVkIGFmdGVyIGV4cGlyYXRpb24gb2YgY2hlY2twb2ludCBpbnRlcnZhbCwKQEAgLTE2MSwx OCArMTY3LDE4IEBAIHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxlIHsKICAqIFNldHMgKmxv Y2tmZCB0byAtMS4KICAqIEhhcyBkZWFsbG9jYXRlZCBldmVyeXRoaW5nIGV2ZW4gb24gZXJyb3Iu CiAgKi8KLWludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVyZmFjZSAqeGNoLCB4 Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLCBpbnQgc3VzcGVuZF9ldnRjaG4sIGludCAqbG9ja2Zk KTsKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwgaW50IHN1c3BlbmRfZXZ0Y2huLCBpbnQgKmxv Y2tmZCk7CiAKIC8qKgogICogVGhpcyBmdW5jdGlvbiBlYXRzIHRoZSBpbml0aWFsIG5vdGlmaWNh dGlvbi4KICAqIHhjZSBtdXN0IG5vdCBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlCiAgKiBTZWUg eGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lIHJlIGxvY2tmZC4KICAqLwotaW50IHhjX3N1c3Bl bmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhj ZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X2V4Y2x1c2l2ZSh4Y19pbnRlcmZhY2UgKnhj aCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBkb21pZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsKIAogLyogeGNlIG11c3Qg bm90IGJlIHVzZWQgZm9yIGFueXRoaW5nIGVsc2UgKi8KLWludCB4Y19hd2FpdF9zdXNwZW5kKHhj X2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3BlbmRfZXZ0Y2huKTsKK2lu dCB4Y19hd2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4 Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAKIC8qKgogICogVGhlIHBvcnQgd2lsbCBiZSBzaWdu YWxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIGNhbGwKQEAgLTE4MSw3ICsxODcsNyBAQCBpbnQg eGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsIGludCBz dXNwZW5kX2V2dGNobik7CiAgKiBhbmQgZmVkIHRvIHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2Uu ICAoT24gZXJyb3IgKmxvY2tmZCBpcwogICogdW5kZWZpbmVkIGFuZCB4Y19zdXNwZW5kX2V2dGNo bl9yZWxlYXNlIGlzIG5vdCBhbGxvd2VkLikKICAqLwotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX2lu aXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsCitpbnQgeGNfc3VzcGVu ZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4 Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHBvcnQs IGludCAqbG9ja2ZkKTsKIAogaW50IHhjX21hcmtfcGFnZV9vbmxpbmUoeGNfaW50ZXJmYWNlICp4 Y2gsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19ldnRj aG5fY29tcGF0LmMgYi90b29scy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzZTRiYQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xz L2xpYnhjL3hjX2V2dGNobl9jb21wYXQuYwpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29tcGF0 IHNoaW1zIGZvciB1c2Ugb2YgM3JkIHBhcnR5IGNvbnN1bWVycyBvZiBsaWJ4ZW5jdHJsIHhjX2V2 dGNobgorICogZnVuY3Rpb25hbGl0eSB3aGljaCBoYXMgYmVlbiBzcGxpdCBpbnRvIHNlcGFyYXRl IGxpYnJhcmllcy4KKyAqLworCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisKKyNkZWZpbmUgWENf V0FOVF9DT01QQVRfRVZUQ0hOX0FQSQorI2luY2x1ZGUgInhlbmN0cmwuaCIKKworeGNfZXZ0Y2hu ICp4Y19ldnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2VyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBvcGVuX2ZsYWdzKQoreworICAgIHJldHVybiB4ZW5ldnRj aG5fb3Blbihsb2dnZXIsIG9wZW5fZmxhZ3MpOworfQorCitpbnQgeGNfZXZ0Y2huX2Nsb3NlKHhj X2V2dGNobiAqeGNlKQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsKK30KKwor aW50IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2hu X2ZkKHhjZSk7Cit9CisKK2ludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRj aG5fcG9ydF90IHBvcnQpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9ub3RpZnkoeGNlLCBwb3J0 KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9w b3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9i aW5kX3VuYm91bmRfcG9ydCh4Y2UsIGRvbWlkKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dAoreGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCit7 CisgICAgcmV0dXJuIHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjZSwgZG9taWQsIHJlbW90 ZV9wb3J0KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGNfZXZ0Y2huX2JpbmRfdmly cSh4Y19ldnRjaG4gKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCit7CisgICAgcmV0dXJuIHhlbmV2 dGNobl9iaW5kX3ZpcnEoeGNlLCB2aXJxKTsKK30KKworaW50IHhjX2V2dGNobl91bmJpbmQoeGNf ZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2hu X3VuYmluZCh4Y2UsIHBvcnQpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRj aG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX3BlbmRp bmcoeGNlKTsKK30KKworaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX3VubWFzayh4Y2UsIHBvcnQp OworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0 eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5k ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX2ZyZWVic2Rfb3NkZXAuYyBiL3Rvb2xzL2xpYnhjL3hjX2ZyZWVic2Rfb3NkZXAuYwppbmRl eCA0MzIzZTE2Li4zMzk5OTdjIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19mcmVlYnNkX29z ZGVwLmMKKysrIGIvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9vc2RlcC5jCkBAIC0zMSwxMyArMzEs MTEgQEAKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIAogI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4K LSNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgogCiAjaW5jbHVkZSAieGVuY3RybC5oIgogI2lu Y2x1ZGUgInhlbmN0cmxvc2RlcC5oIgogCiAjZGVmaW5lIFBSSVZDTURfREVWICAgICAiL2Rldi94 ZW4vcHJpdmNtZCIKLSNkZWZpbmUgRVZUQ0hOX0RFViAgICAgICIvZGV2L3hlbi9ldnRjaG4iCiAK ICNkZWZpbmUgUEVSUk9SKF9tLCBfYS4uLikgeGNfb3NkZXBfbG9nKHhjaCxYVExfRVJST1IsWENf SU5URVJOQUxfRVJST1IsX20gXAogICAgICAgICAgICAgICAgICAgIiAoJWQgPSAlcykiLCAjIyBf YSAsIGVycm5vLCB4Y19zdHJlcnJvcih4Y2gsIGVycm5vKSkKQEAgLTI1MSwxMDUgKzI0OSw2IEBA IHN0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3BzIGZyZWVic2RfcHJpdmNtZF9vcHMgPSB7CiAgICAg fSwKIH07CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZ0Y2huIGRldmljZSBpbnRl cmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1pbnQgb3NkZXBfZXZ0Y2huX29wZW4o eGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0gb3BlbihFVlRDSE5fREVWLCBPX1JEV1Ip OwotICAgIGlmICggZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgeGNlLT5mZCA9 IGZkOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNo biAqeGNlKQotewotICAgIGlmICggeGNlLT5mZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAwOwot Ci0gICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQpOwotfQotCi1pbnQgeGNfZXZ0Y2huX2ZkKHhjX2V2 dGNobiAqeGNlKQotewotICAgIHJldHVybiB4Y2UtPmZkOwotfQotCi0vKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBFdnRjaG4gaW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwotaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0 X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRj aG5fbm90aWZ5IG5vdGlmeTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVy biBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9w b3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNl LCBpbnQgZG9taWQpCi17Ci0gICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBp b2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKLQotICAgIGJpbmQucmVtb3RlX2Rv bWFpbiA9IGRvbWlkOwotCi0gICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VO Qk9VTkRfUE9SVCwgJmJpbmQpOwotICAgIHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQg OiByZXQ7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9iaW5kX2ludGVy ZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsIGV2dGNobl9wb3J0X3QgcmVtb3RlX3Bv cnQpCi17Ci0gICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRj aG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9t aWQ7Ci0gICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwotCi0gICAgcmV0ID0gaW9j dGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7Ci0gICAgcmV0dXJu ICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJy b3JfdCB4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmly cSkKLXsKLSAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNo bl9iaW5kX3ZpcnEgYmluZDsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7Ci0KLSAgICByZXQgPSBp b2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQpOwotICAgIHJldHVybiAoIHJl dCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5iaW5kKHhj X2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5m ZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1bmJpbmQ7Ci0KLSAgICB1bmJpbmQu cG9ydCA9IHBvcnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9VTkJJTkQs ICZ1bmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5n KHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgZXZ0Y2huX3Bv cnRfdCBwb3J0OwotCi0gICAgaWYgKCByZWFkKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBz aXplb2YocG9ydCkgKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gcG9ydDsKLX0K LQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9y dCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotCi0gICAgaWYgKCB3cml0ZShmZCwgJnBvcnQs IHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKLSAgICAgICAgcmV0dXJuIC0xOwotICAg IHJldHVybiAwOwotfQotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnJlZUJTRCBp bnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogc3RhdGljIHN0cnVjdCB4 Y19vc2RlcF9vcHMgKgogZnJlZWJzZF9vc2RlcF9pbml0KHhjX2ludGVyZmFjZSAqeGNoLCBlbnVt IHhjX29zZGVwX3R5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2xpbnV4X29z ZGVwLmMgYi90b29scy9saWJ4Yy94Y19saW51eF9vc2RlcC5jCmluZGV4IDkwNTQ0ZmIuLjY1Mjk5 ZDAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2xpbnV4X29zZGVwLmMKKysrIGIvdG9vbHMv bGlieGMveGNfbGludXhfb3NkZXAuYwpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPHN5cy9p b2N0bC5oPgogCiAjaW5jbHVkZSA8eGVuL21lbW9yeS5oPgotI2luY2x1ZGUgPHhlbi9zeXMvZXZ0 Y2huLmg+CiAjaW5jbHVkZSA8eGVuL3N5cy9nbnRkZXYuaD4KICNpbmNsdWRlIDx4ZW4vc3lzL2du dGFsbG9jLmg+CiAKQEAgLTQ2MSwxMDAgKzQ2MCw2IEBAIHN0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBf b3BzIGxpbnV4X3ByaXZjbWRfb3BzID0gewogCiAjZGVmaW5lIERFVlhFTiAiL2Rldi94ZW4vIgog Ci1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0g b3BlbihERVZYRU4gImV2dGNobiIsIE9fUkRXUik7Ci0gICAgaWYgKCBmZCA9PSAtMSApCi0gICAg ICAgIHJldHVybiAtMTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlu dCBvc2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaWYgKCB4Y2UtPmZk ID09IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7 Ci19Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgcmV0dXJuIHhj ZS0+ZmQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRjaG5f cG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxf ZXZ0Y2huX25vdGlmeSBub3RpZnk7Ci0KLSAgICBub3RpZnkucG9ydCA9IHBvcnQ7Ci0KLSAgICBy ZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkpOwotfQotCi1ldnRj aG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4g KnhjZSwgaW50IGRvbWlkKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlv Y3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9t YWluID0gZG9taWQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VO Qk9VTkRfUE9SVCwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNo bl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVt b3RlX3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKLQotICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRv bWlkOwotICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKLQotICAgIHJldHVybiBp b2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKLX0KLQotZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1 bnNpZ25lZCBpbnQgdmlycSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBp b2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7Ci0KLSAgICBiaW5kLnZpcnEgPSB2aXJxOwotCi0g ICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Ci19Ci0K LWludCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQp Ci17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmlu ZCB1bmJpbmQ7Ci0KLSAgICB1bmJpbmQucG9ydCA9IHBvcnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwo ZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9 IHhjZS0+ZmQ7Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgaWYgKCByZWFkKGZkLCAm cG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQotICAgICAgICByZXR1cm4gLTE7 Ci0KLSAgICByZXR1cm4gcG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2hu ICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotCi0g ICAgaWYgKCB3cml0ZShmZCwgJnBvcnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkK LSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgeGNfb3NkZXBf aGFuZGxlIGxpbnV4X2dudHRhYl9vcGVuKHhjX2dudHRhYiAqeGNnKQogewogICAgIGludCBmZCA9 IG9wZW4oREVWWEVOICJnbnRkZXYiLCBPX1JEV1IpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMv eGNfbWluaW9zLmMgYi90b29scy9saWJ4Yy94Y19taW5pb3MuYwppbmRleCA0YWNlMWI1Li5kYjdi MzQ0IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19taW5pb3MuYworKysgYi90b29scy9saWJ4 Yy94Y19taW5pb3MuYwpAQCAtMTksMTQgKzE5LDExIEBACiAgKi8KIAogI3VuZGVmIE5ERUJVRwot I2luY2x1ZGUgInhlbi1leHRlcm5hbC9ic2Qtc3lzLXF1ZXVlLmgiCiAjaW5jbHVkZSA8bWluaS1v cy90eXBlcy5oPgogI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4KICNpbmNsdWRlIDxtaW5pLW9zL21t Lmg+CiAjaW5jbHVkZSA8bWluaS1vcy9saWIuaD4KICNpbmNsdWRlIDxtaW5pLW9zL2dudG1hcC5o PgotI2luY2x1ZGUgPG1pbmktb3MvZXZlbnRzLmg+Ci0jaW5jbHVkZSA8bWluaS1vcy93YWl0Lmg+ CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KIAogI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KQEAgLTQx LDEzICszOCw5IEBACiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgogCiB2b2lkIG1pbmlvc19pbnRl cmZhY2VfY2xvc2VfZmQoaW50IGZkKTsKLXZvaWQgbWluaW9zX2V2dGNobl9jbG9zZV9mZChpbnQg ZmQpOwogdm9pZCBtaW5pb3NfZ250dGFiX2Nsb3NlX2ZkKGludCBmZCk7CiAKIGV4dGVybiB2b2lk IG1pbmlvc19pbnRlcmZhY2VfY2xvc2VfZmQoaW50IGZkKTsKLWV4dGVybiB2b2lkIG1pbmlvc19l dnRjaG5fY2xvc2VfZmQoaW50IGZkKTsKLQotZXh0ZXJuIHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQg ZXZlbnRfcXVldWU7CiAKIHN0YXRpYyB4Y19vc2RlcF9oYW5kbGUgbWluaW9zX3ByaXZjbWRfb3Bl bih4Y19pbnRlcmZhY2UgKnhjaCkKIHsKQEAgLTE5NywyMjAgKzE5MCw2IEBAIHN0YXRpYyBzdHJ1 Y3QgeGNfb3NkZXBfb3BzIG1pbmlvc19wcml2Y21kX29wcyA9IHsKICAgICB9LAogfTsKIAotCi0v KiBYWFggTm90ZTogVGhpcyBpcyBub3QgdGhyZWFkc2FmZSAqLwotc3RhdGljIHN0cnVjdCBldnRj aG5fcG9ydF9pbmZvKiBwb3J0X2FsbG9jKGludCBmZCkgewotICAgIHN0cnVjdCBldnRjaG5fcG9y dF9pbmZvICpwb3J0X2luZm87Ci0gICAgcG9ydF9pbmZvID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qg ZXZ0Y2huX3BvcnRfaW5mbykpOwotICAgIGlmIChwb3J0X2luZm8gPT0gTlVMTCkKLSAgICAgICAg cmV0dXJuIE5VTEw7Ci0gICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMDsKLSAgICBwb3J0X2luZm8t PnBvcnQgPSAtMTsKLSAgICBwb3J0X2luZm8tPmJvdW5kID0gMDsKLQotICAgIExJU1RfSU5TRVJU X0hFQUQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIHBvcnRfaW5mbywgbGlzdCk7Ci0gICAgcmV0 dXJuIHBvcnRfaW5mbzsKLX0KLQotc3RhdGljIHZvaWQgcG9ydF9kZWFsbG9jKHN0cnVjdCBldnRj aG5fcG9ydF9pbmZvICpwb3J0X2luZm8pIHsKLSAgICBpZiAocG9ydF9pbmZvLT5ib3VuZCkKLSAg ICAgICAgdW5iaW5kX2V2dGNobihwb3J0X2luZm8tPnBvcnQpOwotICAgIExJU1RfUkVNT1ZFKHBv cnRfaW5mbywgbGlzdCk7Ci0gICAgZnJlZShwb3J0X2luZm8pOwotfQotCi1pbnQgb3NkZXBfZXZ0 Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0gYWxsb2NfZmQoRlRZUEVf RVZUQ0hOKTsKLSAgICBpZiAoIGZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIExJ U1RfSU5JVCgmZmlsZXNbZmRdLmV2dGNobi5wb3J0cyk7Ci0gICAgeGNlLT5mZCA9IGZkOwotICAg IHByaW50ZigiZXZ0Y2huX29wZW4oKSAtPiAlZFxuIiwgZmQpOwotICAgIHJldHVybiAwOwotfQot Ci1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlLCB4Y19vc2RlcF9oYW5kbGUg aCkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gMDsKLQotICAg IHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotdm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2Zk KGludCBmZCkKLXsKLSAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvLCAqdG1w OwotICAgIExJU1RfRk9SRUFDSF9TQUZFKHBvcnRfaW5mbywgJmZpbGVzW2ZkXS5ldnRjaG4ucG9y dHMsIGxpc3QsIHRtcCkKLSAgICAgICAgcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7Ci0KLSAgICBm aWxlc1tmZF0udHlwZSA9IEZUWVBFX05PTkU7Ci19Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0 Y2huICp4Y2UpCi17Ci0gICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fbm90 aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IHJldDsK LQotICAgIHJldCA9IG5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobihwb3J0KTsKLQotICAgIGlmIChy ZXQgPCAwKSB7Ci0JZXJybm8gPSAtcmV0OwotCXJldCA9IC0xOwotICAgIH0KLSAgICByZXR1cm4g cmV0OwotfQotCi1zdGF0aWMgdm9pZCBldnRjaG5faGFuZGxlcihldnRjaG5fcG9ydF90IHBvcnQs IHN0cnVjdCBwdF9yZWdzICpyZWdzLCB2b2lkICpkYXRhKQotewotICAgIGludCBmZCA9IChpbnQp KGludHB0cl90KWRhdGE7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsK LSAgICBhc3NlcnQoZmlsZXNbZmRdLnR5cGUgPT0gRlRZUEVfRVZUQ0hOKTsKLSAgICBtYXNrX2V2 dGNobihwb3J0KTsKLSAgICBMSVNUX0ZPUkVBQ0gocG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNo bi5wb3J0cywgbGlzdCkgewotICAgICAgICBpZiAocG9ydF9pbmZvLT5wb3J0ID09IHBvcnQpCi0g ICAgICAgICAgICBnb3RvIGZvdW5kOwotICAgIH0KLSAgICBwcmludGsoIlVua25vd24gcG9ydCBm b3IgaGFuZGxlICVkXG4iLCBmZCk7Ci0gICAgcmV0dXJuOwotCi0gZm91bmQ6Ci0gICAgcG9ydF9p bmZvLT5wZW5kaW5nID0gMTsKLSAgICBmaWxlc1tmZF0ucmVhZCA9IDE7Ci0gICAgd2FrZV91cCgm ZXZlbnRfcXVldWUpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5k X3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKQotewotICAgIGludCBmZCA9 IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKLSAgICBp bnQgcmV0OwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAgIGFzc2VydChnZXRfY3VycmVu dCgpID09IG1haW5fdGhyZWFkKTsKLSAgICBwb3J0X2luZm8gPSBwb3J0X2FsbG9jKGZkKTsKLSAg ICBpZiAocG9ydF9pbmZvID09IE5VTEwpCi0JcmV0dXJuIC0xOwotCi0gICAgcHJpbnRmKCJ4Y19l dnRjaG5fYmluZF91bmJvdW5kX3BvcnQoJWQpIiwgZG9taWQpOwotICAgIHJldCA9IGV2dGNobl9h bGxvY191bmJvdW5kKGRvbWlkLCBldnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCwg JnBvcnQpOwotICAgIHByaW50ZigiID0gJWRcbiIsIHJldCk7Ci0KLSAgICBpZiAocmV0IDwgMCkg ewotCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOwotCWVycm5vID0gLXJldDsKLQlyZXR1cm4gLTE7 Ci0gICAgfQotICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOwotICAgIHBvcnRfaW5mby0+cG9ydCA9 IHBvcnQ7Ci0gICAgdW5tYXNrX2V2dGNobihwb3J0KTsKLSAgICByZXR1cm4gcG9ydDsKLX0KLQot ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRj aG4gKnhjZSwgaW50IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KQotewotICAgIGludCBmZCA9 IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKLSAgICBl dnRjaG5fcG9ydF90IGxvY2FsX3BvcnQ7Ci0gICAgaW50IHJldDsKLQotICAgIGFzc2VydChnZXRf Y3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKLSAgICBwb3J0X2luZm8gPSBwb3J0X2FsbG9jKGZk KTsKLSAgICBpZiAocG9ydF9pbmZvID09IE5VTEwpCi0JcmV0dXJuIC0xOwotCi0gICAgcHJpbnRm KCJ4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiglZCwgJSJQUklkMzIiKSIsIGRvbWlkLCByZW1v dGVfcG9ydCk7Ci0gICAgcmV0ID0gZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oZG9taWQsIHJlbW90 ZV9wb3J0LCBldnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCwgJmxvY2FsX3BvcnQp OwotICAgIHByaW50ZigiID0gJWRcbiIsIHJldCk7Ci0KLSAgICBpZiAocmV0IDwgMCkgewotCXBv cnRfZGVhbGxvYyhwb3J0X2luZm8pOwotCWVycm5vID0gLXJldDsKLQlyZXR1cm4gLTE7Ci0gICAg fQotICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOwotICAgIHBvcnRfaW5mby0+cG9ydCA9IGxvY2Fs X3BvcnQ7Ci0gICAgdW5tYXNrX2V2dGNobihsb2NhbF9wb3J0KTsKLSAgICByZXR1cm4gbG9jYWxf cG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9w b3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBldnRjaG5f cG9ydF9pbmZvICpwb3J0X2luZm87Ci0KLSAgICBMSVNUX0ZPUkVBQ0gocG9ydF9pbmZvLCAmZmls ZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgewotICAgICAgICBpZiAocG9ydF9pbmZvLT5wb3J0 ID09IHBvcnQpIHsKLSAgICAgICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOwotICAgICAg ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHJpbnRmKCJXYXJuaW5nOiBj b3VsZG4ndCBmaW5kIHBvcnQgJSJQUklkMzIiIGZvciB4YyBoYW5kbGUgJXhcbiIsIHBvcnQsIGZk KTsKLSAgICBlcnJubyA9IEVJTlZBTDsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWV2dGNobl9wb3J0 X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgdW5zaWduZWQg aW50IHZpcnEpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgZXZ0Y2huX3Bv cnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAgIGFzc2Vy dChnZXRfY3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKLSAgICBwb3J0X2luZm8gPSBwb3J0X2Fs bG9jKGZkKTsKLSAgICBpZiAocG9ydF9pbmZvID09IE5VTEwpCi0JcmV0dXJuIC0xOwotCi0gICAg cHJpbnRmKCJ4Y19ldnRjaG5fYmluZF92aXJxKCVkKSIsIHZpcnEpOwotICAgIHBvcnQgPSBiaW5k X3ZpcnEodmlycSwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQpOwotCi0gICAg aWYgKHBvcnQgPCAwKSB7Ci0JcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7Ci0JZXJybm8gPSAtcG9y dDsKLQlyZXR1cm4gLTE7Ci0gICAgfQotICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOwotICAgIHBv cnRfaW5mby0+cG9ydCA9IHBvcnQ7Ci0gICAgdW5tYXNrX2V2dGNobihwb3J0KTsKLSAgICByZXR1 cm4gcG9ydDsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fcGVuZGluZyh4 Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBldnRj aG5fcG9ydF9pbmZvICpwb3J0X2luZm87Ci0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICBl dnRjaG5fcG9ydF90IHJldCA9IC0xOwotCi0gICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotICAg IGZpbGVzW2ZkXS5yZWFkID0gMDsKLQotICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxl c1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0KSB7Ci0gICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQg IT0gLTEgJiYgcG9ydF9pbmZvLT5wZW5kaW5nKSB7Ci0gICAgICAgICAgICBpZiAocmV0ID09IC0x KSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gcG9ydF9pbmZvLT5wb3J0OwotICAgICAgICAgICAg ICAgIHBvcnRfaW5mby0+cGVuZGluZyA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICAgIGZpbGVzW2ZkXS5yZWFkID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFn cyk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2hu ICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICB1bm1hc2tfZXZ0Y2huKHBvcnQpOwot ICAgIHJldHVybiAwOwotfQotCiAvKiBPcHRpb25hbGx5IGZsdXNoIGZpbGUgdG8gZGlzayBhbmQg ZGlzY2FyZCBwYWdlIGNhY2hlICovCiB2b2lkIGRpc2NhcmRfZmlsZV9jYWNoZSh4Y19pbnRlcmZh Y2UgKnhjaCwgaW50IGZkLCBpbnQgZmx1c2gpCiB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94 Y19uZXRic2QuYyBiL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jCmluZGV4IGIxYjgyOGYuLmZlNGYw YTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jCisrKyBiL3Rvb2xzL2xpYnhj L3hjX25ldGJzZC5jCkBAIC0xOSw3ICsxOSw2IEBACiAKICNpbmNsdWRlICJ4Y19wcml2YXRlLmgi CiAKLSNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2lu Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC0yMjMsMTE0ICsyMjIsNiBA QCBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyBuZXRic2RfcHJpdmNtZF9vcHMgPSB7CiAgICAg fSwKIH07CiAKLSNkZWZpbmUgRVZUQ0hOX0RFVl9OQU1FICAiL2Rldi94ZW5ldnQiCi0KLWludCBv c2RlcF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSBvcGVuKEVW VENITl9ERVZfTkFNRSwgT19OT05CTE9DS3xPX1JEV1IpOwotICAgIGlmICggZmQgPT0gLTEgKQot ICAgICAgICByZXR1cm4gLTE7Ci0gICAgeGNlLT5mZCA9IGZkOwotICAgIHJldHVybiAwOwotfQot Ci1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlLCB4Y19vc2RlcF9oYW5kbGUg aCkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gMDsKLQotICAg IHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4g KnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotaW50IHhjX2V2dGNobl9ub3RpZnko eGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2Ut PmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKLQotICAgIG5vdGlm eS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElG WSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRf dW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqIHhjZSwgaW50IGRvbWlkKQotewotICAgIGludCBmZCA9 IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5k OwotICAgIGludCByZXQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKLQotICAg IHJldCA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsK LSAgICBpZiAocmV0ID09IDApCi0JcmV0dXJuIGJpbmQucG9ydDsKLSAgICBlbHNlCi0JcmV0dXJu IC0xOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX2ludGVyZG9t YWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCi17Ci0g ICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4gYmluZDsKLSAgICBpbnQgcmV0OwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9t aWQ7Ci0gICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwotCi0gICAgcmV0ID0gaW9j dGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmluZCk7Ci0gICAgaWYgKHJl dCA9PSAwKQotCXJldHVybiBiaW5kLnBvcnQ7Ci0gICAgZWxzZQotCXJldHVybiAtMTsKLX0KLQot aW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkK LXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5k IHVuYmluZDsKLQotICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChm ZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vy cm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgdW5zaWduZWQgaW50IHZp cnEpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2Jp bmRfdmlycSBiaW5kOwotICAgIGludCBlcnI7Ci0KLSAgICBiaW5kLnZpcnEgPSB2aXJxOwotCi0g ICAgZXJyID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEsICZiaW5kKTsKLSAgICBp ZiAoZXJyKQotCXJldHVybiAtMTsKLSAgICBlbHNlCi0JcmV0dXJuIGJpbmQucG9ydDsKLX0KLQot ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkK LXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAg IGlmICggcmVhZF9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9mKHBvcnQpKSA9PSAtMSAp Ci0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBwb3J0OwotfQotCi1pbnQgeGNfZXZ0 Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQotewotICAgIGlu dCBmZCA9IHhjZS0+ZmQ7Ci0gICAgcmV0dXJuIHdyaXRlX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0 LCBzaXplb2YocG9ydCkpOwotfQotCiAvKiBPcHRpb25hbGx5IGZsdXNoIGZpbGUgdG8gZGlzayBh bmQgZGlzY2FyZCBwYWdlIGNhY2hlICovCiB2b2lkIGRpc2NhcmRfZmlsZV9jYWNoZSh4Y19pbnRl cmZhY2UgKnhjaCwgaW50IGZkLCBpbnQgZmx1c2gpIAogewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGMveGNfcHJpdmF0ZS5jIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jCmluZGV4IGNiNzlmMjIu LjU2ZDU0YjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuYworKysgYi90b29s cy9saWJ4Yy94Y19wcml2YXRlLmMKQEAgLTI1MSw0NiArMjUxLDYgQEAgaW50IGRvX3hlbl9oeXBl cmNhbGwoeGNfaW50ZXJmYWNlICp4Y2gsIHByaXZjbWRfaHlwZXJjYWxsX3QgKmh5cGVyY2FsbCkK ICAgICByZXR1cm4geGNoLT5vcHMtPnUucHJpdmNtZC5oeXBlcmNhbGwoeGNoLCB4Y2gtPm9wc19o YW5kbGUsIGh5cGVyY2FsbCk7CiB9CiAKLXhjX2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9v bGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWduZWQgb3Blbl9mbGFncykKLXsKLSAgICB4Y19ldnRj aG4gKnhjZSA9IG1hbGxvYyhzaXplb2YoKnhjZSkpOwotICAgIGludCByYzsKLQotICAgIGlmICgh eGNlKSByZXR1cm4gTlVMTDsKLQotICAgIHhjZS0+ZmQgPSAtMTsKLSAgICB4Y2UtPmxvZ2dlciA9 IGxvZ2dlcjsKLSAgICB4Y2UtPmxvZ2dlcl90b2ZyZWUgID0gTlVMTDsKLQotICAgIGlmICgheGNl LT5sb2dnZXIpIHsKLSAgICAgICAgeGNlLT5sb2dnZXIgPSB4Y2UtPmxvZ2dlcl90b2ZyZWUgPQot ICAgICAgICAgICAgKHhlbnRvb2xsb2dfbG9nZ2VyKikKLSAgICAgICAgICAgIHh0bF9jcmVhdGVs b2dnZXJfc3RkaW9zdHJlYW0oc3RkZXJyLCBYVExfUFJPR1JFU1MsIDApOwotICAgICAgICBpZiAo IXhjZS0+bG9nZ2VyKSBnb3RvIGVycjsKLSAgICB9Ci0KLSAgICByYyA9IG9zZGVwX2V2dGNobl9v cGVuKHhjZSk7Ci0gICAgaWYgKCByYyAgPCAwICkgZ290byBlcnI7Ci0KLSAgICByZXR1cm4geGNl OwotCi1lcnI6Ci0gICAgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7Ci0gICAgeHRsX2xvZ2dlcl9k ZXN0cm95KHhjZS0+bG9nZ2VyX3RvZnJlZSk7Ci0gICAgZnJlZSh4Y2UpOwotICAgIHJldHVybiBO VUxMOwotfQotCi1pbnQgeGNfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKQotewotICAgIGlu dCByYzsKLQotICAgIHJjID0gb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7Ci0gICAgeHRsX2xvZ2dl cl9kZXN0cm95KHhjZS0+bG9nZ2VyX3RvZnJlZSk7Ci0gICAgZnJlZSh4Y2UpOwotICAgIHJldHVy biByYzsKLX0KLQogeGNfZ250dGFiICp4Y19nbnR0YWJfb3Blbih4ZW50b29sbG9nX2xvZ2dlciAq bG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGVuX2ZsYWdz KQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oIGIvdG9vbHMvbGlieGMv eGNfcHJpdmF0ZS5oCmluZGV4IGY0ZDE1NWEuLmEzMmFjY2IgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhjL3hjX3ByaXZhdGUuaAorKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKQEAgLTEyMywx MyArMTIzLDYgQEAgc3RydWN0IHhjX2ludGVyZmFjZV9jb3JlIHsKICAgICB4Y19vc2RlcF9oYW5k bGUgIG9wc19oYW5kbGU7IC8qIG9wYXF1ZSBkYXRhIGZvciB4Y19vc2RlcF9vcHMgKi8KIH07CiAK LXN0cnVjdCB4ZW5ldnRjaG5faGFuZGxlIHsKLSAgICB4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2Vy LCAqbG9nZ2VyX3RvZnJlZTsKLSAgICBpbnQgZmQ7Ci19OwotaW50IG9zZGVwX2V2dGNobl9vcGVu KHhjX2V2dGNobiAqeGNlKTsKLWludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2Up OwotCiB2b2lkIHhjX3JlcG9ydF9lcnJvcih4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGNvZGUsIGNv bnN0IGNoYXIgKmZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsMyw0 KSkpOwogdm9pZCB4Y19yZXBvcnR2KHhjX2ludGVyZmFjZSAqeGNoLCB4ZW50b29sbG9nX2xvZ2dl ciAqbGcsIHhlbnRvb2xsb2dfbGV2ZWwsCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zb2xh cmlzLmMgYi90b29scy9saWJ4Yy94Y19zb2xhcmlzLmMKaW5kZXggMDg4MjI4YS4uZWQ3OTg3YyAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfc29sYXJpcy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hj X3NvbGFyaXMuYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIKIAog I2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KLSNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgogI2lu Y2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+ CkBAIC0xOTQsMTAyICsxOTMsNiBAQCBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyBzb2xhcmlz X3ByaXZjbWRfb3BzID0gewogICAgIH0sCiB9OwogCi1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNf ZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkOwotCi0gICAgaWYgKCAoZmQgPSBvcGVuKCIvZGV2 L3hlbi9ldnRjaG4iLCBPX1JEV1IpKSA9PSAtMSApCi0gICAgewotICAgICAgICBQRVJST1IoIkNv dWxkIG5vdCBvcGVuIGV2ZW50IGNoYW5uZWwgaW50ZXJmYWNlIik7Ci0gICAgICAgIHJldHVybiAt MTsKLSAgICB9Ci0KLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBv c2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaWYgKCB4Y2UtPmZkID09 IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Ci19 Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgcmV0dXJuIHhjZS0+ ZmQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9y dF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX25vdGlmeSBub3RpZnk7Ci0KLSAgICBub3RpZnkucG9ydCA9IHBvcnQ7Ci0KLSAgICByZXR1 cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkpOwotfQotCi1ldnRjaG5f cG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKnhj ZSwgaW50IGRvbWlkKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3Rs X2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOwotCi0gICAgYmluZC5yZW1vdGVfZG9tYWlu ID0gZG9taWQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1VOQk9V TkRfUE9SVCwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9i aW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3Rl X3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2hu X2JpbmRfaW50ZXJkb21haW4gYmluZDsKLQotICAgIGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlk OwotICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKLQotICAgIHJldHVybiBpb2N0 bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKLX0KLQotZXZ0Y2hu X3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNp Z25lZCBpbnQgdmlycSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7Ci0KLSAgICBiaW5kLnZpcnEgPSB2aXJxOwotCi0gICAg cmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAmYmluZCk7Ci19Ci0KLWlu dCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17 Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1 bmJpbmQ7Ci0KLSAgICB1bmJpbmQucG9ydCA9IHBvcnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQs IElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJv cl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IHhj ZS0+ZmQ7Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgaWYgKCByZWFkX2V4YWN0KGZk LCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpID09IC0xICkKLSAgICAgICAgcmV0dXJuIC0x OwotCi0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5tYXNrKHhjX2V2dGNo biAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICByZXR1cm4gd3JpdGVfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNpemVvZihwb3J0KSk7Ci19 Ci0KIC8qIE9wdGlvbmFsbHkgZmx1c2ggZmlsZSB0byBkaXNrIGFuZCBkaXNjYXJkIHBhZ2UgY2Fj aGUgKi8KIHZvaWQgZGlzY2FyZF9maWxlX2NhY2hlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgZmQs IGludCBmbHVzaCkgCiB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zdXNwZW5kLmMgYi90 b29scy9saWJ4Yy94Y19zdXNwZW5kLmMKaW5kZXggYmJhMzZlNy4uODM2MWM3YiAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfc3VzcGVuZC5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3N1c3BlbmQu YwpAQCAtMTYsNiArMTYsOCBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRs Lmg+CiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KKwogI2luY2x1ZGUgInhjX3ByaXZhdGUuaCIK ICNpbmNsdWRlICJ4ZW5ndWVzdC5oIgogCkBAIC0xMjQsMTIgKzEyNiwxMiBAQCBzdGF0aWMgaW50 IHVubG9ja19zdXNwZW5kX2V2ZW50KHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgZG9taWQsIGludCAq bG9ja2ZkKQogICAgIHJldHVybiAtMTsKIH0KIAotaW50IHhjX2F3YWl0X3N1c3BlbmQoeGNfaW50 ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgc3VzcGVuZF9ldnRjaG4pCitpbnQgeGNf YXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBp bnQgc3VzcGVuZF9ldnRjaG4pCiB7CiAgICAgaW50IHJjOwogCiAgICAgZG8gewotICAgICAgICBy YyA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZSk7CisgICAgICAgIHJjID0geGVuZXZ0Y2huX3BlbmRp bmcoeGNlKTsKICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAgICAgRVJST1IoImVycm9y IHBvbGxpbmcgc3VzcGVuZCBub3RpZmljYXRpb24gY2hhbm5lbDogJWQiLCByYyk7CiAgICAgICAg ICAgICByZXR1cm4gLTE7CkBAIC0xMzcsNyArMTM5LDcgQEAgaW50IHhjX2F3YWl0X3N1c3BlbmQo eGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgc3VzcGVuZF9ldnRjaG4pCiAg ICAgfSB3aGlsZSAocmMgIT0gc3VzcGVuZF9ldnRjaG4pOwogCiAgICAgLyogaGFybWxlc3MgZm9y IG9uZS1vZmYgc3VzcGVuZCAqLwotICAgIGlmICh4Y19ldnRjaG5fdW5tYXNrKHhjZSwgc3VzcGVu ZF9ldnRjaG4pIDwgMCkKKyAgICBpZiAoeGVuZXZ0Y2huX3VubWFzayh4Y2UsIHN1c3BlbmRfZXZ0 Y2huKSA8IDApCiAgICAgICAgIEVSUk9SKCJmYWlsZWQgdG8gdW5tYXNrIHN1c3BlbmQgbm90aWZp Y2F0aW9uIGNoYW5uZWw6ICVkIiwgcmMpOwogCiAgICAgcmV0dXJuIDA7CkBAIC0xNDUsMTYgKzE0 NywxNiBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2hu ICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobikKIAogLyogSW50ZXJuYWwgY2FsbGVycyBhcmUgYWxs b3dlZCB0byBjYWxsIHRoaXMgd2l0aCBzdXNwZW5kX2V2dGNobjwwCiAgKiBidXQgKmxvY2tmZD4w LiAqLwotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2UoeGNfaW50ZXJmYWNlICp4Y2gsIHhj X2V2dGNobiAqeGNlLAoraW50IHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2UoeGNfaW50ZXJmYWNl ICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBkb21pZCwgaW50IHN1c3BlbmRfZXZ0Y2huLCBpbnQgKmxvY2tmZCkKIHsKICAgICBp ZiAoc3VzcGVuZF9ldnRjaG4gPj0gMCkKLSAgICAgICAgeGNfZXZ0Y2huX3VuYmluZCh4Y2UsIHN1 c3BlbmRfZXZ0Y2huKTsKKyAgICAgICAgeGVuZXZ0Y2huX3VuYmluZCh4Y2UsIHN1c3BlbmRfZXZ0 Y2huKTsKIAogICAgIHJldHVybiB1bmxvY2tfc3VzcGVuZF9ldmVudCh4Y2gsIGRvbWlkLCBsb2Nr ZmQpOwogfQogCi1pbnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFjZSAq eGNoLCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X3NhbmUoeGNf aW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGRvbWlkLCBpbnQgcG9ydCwgaW50ICpsb2NrZmQpCiB7CiAgICAg aW50IHJjLCBzdXNwZW5kX2V2dGNobiA9IC0xOwpAQCAtMTY0LDcgKzE2Niw3IEBAIGludCB4Y19z dXNwZW5kX2V2dGNobl9pbml0X3NhbmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNl LAogICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogCi0gICAgc3VzcGVuZF9ldnRjaG4gPSB4 Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2UsIGRvbWlkLCBwb3J0KTsKKyAgICBzdXNwZW5k X2V2dGNobiA9IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjZSwgZG9taWQsIHBvcnQpOwog ICAgIGlmIChzdXNwZW5kX2V2dGNobiA8IDApIHsKICAgICAgICAgRVJST1IoImZhaWxlZCB0byBi aW5kIHN1c3BlbmQgZXZlbnQgY2hhbm5lbDogJWQiLCBzdXNwZW5kX2V2dGNobik7CiAgICAgICAg IGdvdG8gY2xlYW51cDsKQEAgLTE4NCw3ICsxODYsNyBAQCBjbGVhbnVwOgogICAgIHJldHVybiAt MTsKIH0KIAotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVyZmFj ZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X2V4Y2x1 c2l2ZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHBvcnQsIGludCAqbG9j a2ZkKQogewogICAgIGludCBzdXNwZW5kX2V2dGNobjsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L01ha2VmaWxlIGIvdG9vbHMvbGlieGwvTWFrZWZpbGUKaW5kZXggMmFiYWUwYy4uMTBiMTc0MSAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUKKysrIGIvdG9vbHMvbGlieGwvTWFrZWZp bGUKQEAgLTIwLDEyICsyMCwxMyBAQCBMSUJVVUlEX0xJQlMgKz0gLWx1dWlkCiBlbmRpZgogCiBM SUJYTF9MSUJTID0KLUxJQlhMX0xJQlMgPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElC U19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVuc3RvcmUp ICQoTERMSUJTX2xpYmJsa3RhcGN0bCkgJChQVFlGVU5DU19MSUJTKSAkKExJQlVVSURfTElCUykK K0xJQlhMX0xJQlMgPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElCU19saWJ4ZW5ldnRj aG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0KSAkKExETElCU19s aWJ4ZW5zdG9yZSkgJChMRExJQlNfbGliYmxrdGFwY3RsKSAkKFBUWUZVTkNTX0xJQlMpICQoTElC VVVJRF9MSUJTKQogaWZlcSAoJChDT05GSUdfUkVNVVNfTkVUQlVGKSx5KQogTElCWExfTElCUyAr PSAkKExJQk5MM19MSUJTKQogZW5kaWYKIAogQ0ZMQUdTX0xJQlhMICs9ICQoQ0ZMQUdTX2xpYnhl bnRvb2xsb2cpCitDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKQogQ0ZMQUdT X0xJQlhMICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiBDRkxBR1NfTElCWEwgKz0gJChDRkxBR1Nf bGlieGVuZ3Vlc3QpCiBDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGlieGVuc3RvcmUpCkBAIC0x NTksNyArMTYwLDcgQEAgJChYRU5fSU5JVF9ET00wX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1Nf bGlieGVuY3RybCkKICQoWEVOX0lOSVRfRE9NMF9PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xp YnhlbnN0b3JlKQogCiBTQVZFX0hFTFBFUl9PQkpTID0gbGlieGxfc2F2ZV9oZWxwZXIubyBfbGli eGxfc2F2ZV9tc2dzX2hlbHBlci5vCi0kKFNBVkVfSEVMUEVSX09CSlMpOiBDRkxBR1MgKz0gJChD RkxBR1NfbGlieGVuY3RybCkKKyQoU0FWRV9IRUxQRVJfT0JKUyk6IENGTEFHUyArPSAkKENGTEFH U19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiAKIFBLR19DT05GSUcgPSB4ZW5s aWdodC5wYyB4bHV0aWwucGMKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuYyBiL3Rv b2xzL2xpYnhsL2xpYnhsLmMKaW5kZXggOTIwNzYyMS4uMjQ5ZmVkOCAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGwvbGlieGwuYworKysgYi90b29scy9saWJ4bC9saWJ4bC5jCkBAIC0xODYsNyArMTg2 LDcgQEAgaW50IGxpYnhsX2N0eF9mcmVlKGxpYnhsX2N0eCAqY3R4KQogICAgIGlmIChjdHgtPnhj aCkgeGNfaW50ZXJmYWNlX2Nsb3NlKGN0eC0+eGNoKTsKICAgICBsaWJ4bF92ZXJzaW9uX2luZm9f ZGlzcG9zZSgmY3R4LT52ZXJzaW9uX2luZm8pOwogICAgIGlmIChjdHgtPnhzaCkgeHNfZGFlbW9u X2Nsb3NlKGN0eC0+eHNoKTsKLSAgICBpZiAoY3R4LT54Y2UpIHhjX2V2dGNobl9jbG9zZShjdHgt PnhjZSk7CisgICAgaWYgKGN0eC0+eGNlKSB4ZW5ldnRjaG5fY2xvc2UoY3R4LT54Y2UpOwogCiAg ICAgbGlieGxfX3BvbGxlcl9wdXQoY3R4LCBjdHgtPnBvbGxlcl9hcHApOwogICAgIGN0eC0+cG9s bGVyX2FwcCA9IE5VTEw7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kb21fc3VzcGVu ZC5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYwppbmRleCAzMzEzYWQxLi4xNmY2 MDNmIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5jCisrKyBiL3Rv b2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMKQEAgLTEwOSw5ICsxMDksOSBAQCBzdGF0aWMg dm9pZCBkb21haW5fc3VzcGVuZF9jYWxsYmFja19jb21tb24obGlieGxfX2VnYyAqZWdjLAogICAg IGlmICgoaHZtX3Nfc3RhdGUgPT0gMCkgJiYgKGRzcy0+Z3Vlc3RfZXZ0Y2huLnBvcnQgPj0gMCkp IHsKICAgICAgICAgTE9HKERFQlVHLCAiaXNzdWluZyAlcyBzdXNwZW5kIHJlcXVlc3QgdmlhIGV2 ZW50IGNoYW5uZWwiLAogICAgICAgICAgICAgZHNzLT5odm0gPyAiUFZIVk0iIDogIlBWIik7Ci0g ICAgICAgIHJldCA9IHhjX2V2dGNobl9ub3RpZnkoQ1RYLT54Y2UsIGRzcy0+Z3Vlc3RfZXZ0Y2hu LnBvcnQpOworICAgICAgICByZXQgPSB4ZW5ldnRjaG5fbm90aWZ5KENUWC0+eGNlLCBkc3MtPmd1 ZXN0X2V2dGNobi5wb3J0KTsKICAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIExP RyhFUlJPUiwgInhjX2V2dGNobl9ub3RpZnkgZmFpbGVkIHJldD0lZCIsIHJldCk7CisgICAgICAg ICAgICBMT0coRVJST1IsICJ4ZW5ldnRjaG5fbm90aWZ5IGZhaWxlZCByZXQ9JWQiLCByZXQpOwog ICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAg ICAgIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50LmMgYi90b29scy9saWJ4 bC9saWJ4bF9ldmVudC5jCmluZGV4IDEzOWU0OWEuLjg1NDgzNjUgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhsL2xpYnhsX2V2ZW50LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZXZlbnQuYwpAQCAt NzM5LDcgKzczOSw3IEBAIHN0YXRpYyB2b2lkIGV2dGNobl9mZF9jYWxsYmFjayhsaWJ4bF9fZWdj ICplZ2MsIGxpYnhsX19ldl9mZCAqZXYsCiAgICAgICAgIC8qIE9LLCB0aGF0J3MgdGhhdCB3b3Jr YXJvdW5kIGRvbmUuICBXZSBjYW4gYWN0dWFsbHkgY2hlY2sgZm9yCiAgICAgICAgICAqIHdvcmsg Zm9yIHVzIHRvIGRvOiAqLwogCi0gICAgICAgIHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyhDVFgt PnhjZSk7CisgICAgICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhDVFgtPnhjZSk7CiAgICAg ICAgIGlmIChwb3J0IDwgMCkgewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKICAg ICAgICAgICAgICAgICBicmVhazsKQEAgLTc2NSwyMCArNzY1LDIwIEBAIHN0YXRpYyB2b2lkIGV2 dGNobl9mZF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9mZCAqZXYsCiB9CiAK IGludCBsaWJ4bF9fY3R4X2V2dGNobl9pbml0KGxpYnhsX19nYyAqZ2MpIHsKLSAgICB4Y19ldnRj aG4gKnhjZTsKKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2U7CiAgICAgaW50IHJjLCBmZDsKIAog ICAgIGlmIChDVFgtPnhjZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB4Y2UgPSB4Y19ldnRj aG5fb3BlbihDVFgtPmxnLCAwKTsKKyAgICB4Y2UgPSB4ZW5ldnRjaG5fb3BlbihDVFgtPmxnLCAw KTsKICAgICBpZiAoIXhjZSkgewogICAgICAgICBMT0dFKEVSUk9SLCJjYW5ub3Qgb3BlbiBsaWJ4 YyBldnRjaG4gaGFuZGxlIik7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290 byBvdXQ7CiAgICAgfQogCi0gICAgZmQgPSB4Y19ldnRjaG5fZmQoeGNlKTsKKyAgICBmZCA9IHhl bmV2dGNobl9mZCh4Y2UpOwogICAgIGFzc2VydChmZCA+PSAwKTsKIAogICAgIHJjID0gbGlieGxf ZmRfc2V0X25vbmJsb2NrKENUWCwgZmQsIDEpOwpAQCAtNzg4LDcgKzc4OCw3IEBAIGludCBsaWJ4 bF9fY3R4X2V2dGNobl9pbml0KGxpYnhsX19nYyAqZ2MpIHsKICAgICByZXR1cm4gMDsKIAogIG91 dDoKLSAgICB4Y19ldnRjaG5fY2xvc2UoeGNlKTsKKyAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsK ICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTgxMCwxNCArODEwLDE0IEBAIGludCBsaWJ4bF9fZXZf ZXZ0Y2huX3dhaXQobGlieGxfX2djICpnYywgbGlieGxfX2V2X2V2dGNobiAqZXZldikKIAogICAg IGlmICghbGlieGxfX2V2X2ZkX2lzcmVnaXN0ZXJlZCgmQ1RYLT5ldnRjaG5fZWZkKSkgewogICAg ICAgICByYyA9IGxpYnhsX19ldl9mZF9yZWdpc3RlcihnYywgJkNUWC0+ZXZ0Y2huX2VmZCwgZXZ0 Y2huX2ZkX2NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19l dnRjaG5fZmQoQ1RYLT54Y2UpLCBQT0xMSU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4ZW5ldnRjaG5fZmQoQ1RYLT54Y2UpLCBQT0xMSU4pOwogICAgICAgICBpZiAocmMp IGdvdG8gb3V0OwogICAgIH0KIAogICAgIGlmIChldmV2LT53YWl0aW5nKQogICAgICAgICByZXR1 cm4gMDsKIAotICAgIHIgPSB4Y19ldnRjaG5fdW5tYXNrKENUWC0+eGNlLCBldmV2LT5wb3J0KTsK KyAgICByID0geGVuZXZ0Y2huX3VubWFzayhDVFgtPnhjZSwgZXZldi0+cG9ydCk7CiAgICAgaWYg KHIpIHsKICAgICAgICAgTE9HRShFUlJPUiwiY2Fubm90IHVubWFzayBldmVudCBjaGFubmVsICVk IixldmV2LT5wb3J0KTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwpkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgK aW5kZXggYTU1NmEzOC4uNzdiZjI1MSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50 ZXJuYWwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC00OCw2ICs0OCw3 IEBACiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIAorI2lu Y2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbnN0b3JlLmg+CiAjaW5jbHVkZSA8eGVu Y3RybC5oPgogI2luY2x1ZGUgPHhlbmd1ZXN0Lmg+CkBAIC00NDgsNyArNDQ5LDcgQEAgc3RydWN0 IGxpYnhsX19jdHggewogICAgIHVpbnQzMl90IHdhdGNoX2NvdW50ZXI7IC8qIGhlbHBzIGRpc2Ft YmlndWF0ZSBzbG90IHJldXNlICovCiAgICAgbGlieGxfX2V2X2ZkIHdhdGNoX2VmZDsKIAotICAg IHhjX2V2dGNobiAqeGNlOyAvKiB3YWl0aW5nIG11c3QgYmUgZG9uZSBvbmx5IHdpdGggbGlieGxf X2V2X2V2dGNobiogKi8KKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2U7IC8qIHdhaXRpbmcgbXVz dCBiZSBkb25lIG9ubHkgd2l0aCBsaWJ4bF9fZXZfZXZ0Y2huKiAqLwogICAgIExJQlhMX0xJU1Rf SEVBRCgsIGxpYnhsX19ldl9ldnRjaG4pIGV2dGNobnNfd2FpdGluZzsKICAgICBsaWJ4bF9fZXZf ZmQgZXZ0Y2huX2VmZDsKIApAQCAtOTI1LDcgKzkyNiw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGxp YnhsX19ldl94c3dhdGNoX2lzcmVnaXN0ZXJlZChjb25zdCBsaWJ4bF9fZXZfeHN3YXRjaCAqeHcp CiAgKiBXaGVuIHRoZSBldmVudCBpcyBzaWduYWxlZCB0aGVuIHRoZSBjYWxsYmFjayB3aWxsIGJl IG1hZGUsIG9uY2UuCiAgKiBUaGVuIHlvdSBtdXN0IGNhbGwgbGlieGxfX2V2X2V2dGNobl93YWl0 IGFnYWluLCBpZiBkZXNpcmVkLgogICoKLSAqIFlvdSBtdXN0IE5PVCBjYWxsIHhjX2V2dGNobl91 bm1hc2suICB3YWl0IHdpbGwgZG8gdGhhdCBmb3IgeW91LgorICogWW91IG11c3QgTk9UIGNhbGwg eGVuZXZ0Y2huX3VubWFzay4gIHdhaXQgd2lsbCBkbyB0aGF0IGZvciB5b3UuCiAgKgogICogQ2Fs bGluZyBsaWJ4bF9fZXZfZXZ0Y2huX2NhbmNlbCB3aWxsIGFycmFuZ2UgZm9yIGxpYnhsIHRvIGRp c3JlZ2FyZAogICogZnV0dXJlIG9jY3VycmVuY2VzIG9mIGV2ZW50LiAgQm90aCBsaWJ4bF9fZXZf ZXZ0Y2huX3dhaXQgYW5kCmRpZmYgLS1naXQgYS90b29scy9taXNjL01ha2VmaWxlIGIvdG9vbHMv bWlzYy9NYWtlZmlsZQppbmRleCBjNDQ5MGYzLi5jZjZhNDc1IDEwMDY0NAotLS0gYS90b29scy9t aXNjL01ha2VmaWxlCisrKyBiL3Rvb2xzL21pc2MvTWFrZWZpbGUKQEAgLTQsNiArNCw3IEBAIGlu Y2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIENGTEFHUyArPSAtV2Vycm9yCiAjIElu Y2x1ZGUgY29uZmlndXJlIG91dHB1dCAoY29uZmlnLmgpCiBDRkxBR1MgKz0gLWluY2x1ZGUgJChY RU5fUk9PVCkvdG9vbHMvY29uZmlnLmgKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4p CiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKIENGTEFHUyArPSAkKENGTEFHU194ZW5p bmNsdWRlKQogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQpAQCAtODgsMTggKzg5LDE4 IEBAIHhlbmxvY2twcm9mOiB4ZW5sb2NrcHJvZi5vCiAjIHhlbi1ocHRvb2wgaW5jb3JyZWN0bHkg dXNlcyBsaWJ4YyBpbnRlcm5hbHMKIHhlbi1ocHRvb2wubzogQ0ZMQUdTICs9IC1JJChYRU5fUk9P VCkvdG9vbHMvbGlieGMKIHhlbi1ocHRvb2w6IHhlbi1ocHRvb2wubwotCSQoQ0MpICQoTERGTEFH UykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQo TERMSUJTX2xpYnhlbnN0b3JlKSAkKEFQUEVORF9MREZMQUdTKQorCSQoQ0MpICQoTERGTEFHUykg LW8gJEAgJDwgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExE TElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1Mp CiAKICMgeGVuLW1mbmR1bXAgaW5jb3JyZWN0bHkgdXNlcyBsaWJ4YyBpbnRlcm5hbHMKIHhlbi1t Zm5kdW1wLm86IENGTEFHUyArPSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCiB4ZW4tbWZuZHVt cDogeGVuLW1mbmR1bXAubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGli eGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykg JChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhl bmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0KSAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW53YXRj aGRvZ2Q6IHhlbndhdGNoZG9nZC5vCiAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElC U19saWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW4tbG93bWVtZDogeGVuLWxvd21l bWQubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuY3RybCkgJChM RExJQlNfbGlieGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJChMREZMQUdTKSAt byAkQCAkPCAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERM SUJTX2xpYnhlbnN0b3JlKSAkKEFQUEVORF9MREZMQUdTKQogCiBndHJhY2V2aWV3OiBndHJhY2V2 aWV3Lm8KIAkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoQ1VSU0VTX0xJQlMpICQoVElORk9f TElCUykgJChBUFBFTkRfTERGTEFHUykKZGlmZiAtLWdpdCBhL3Rvb2xzL21pc2MveGVuLWhwdG9v bC5jIGIvdG9vbHMvbWlzYy94ZW4taHB0b29sLmMKaW5kZXggYzc1NjFhOS4uZWJjYzllOCAxMDA2 NDQKLS0tIGEvdG9vbHMvbWlzYy94ZW4taHB0b29sLmMKKysrIGIvdG9vbHMvbWlzYy94ZW4taHB0 b29sLmMKQEAgLTEsMyArMSw0IEBACisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8 eGVuY3RybC5oPgogI2luY2x1ZGUgPHhjX3ByaXZhdGUuaD4KICNpbmNsdWRlIDx4Y19jb3JlLmg+ CkBAIC05OCw3ICs5OSw3IEBAIHN0YXRpYyBpbnQgaHBfbWVtX3F1ZXJ5X2Z1bmMoaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHN1c3BlbmRf Z3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCitzdGF0 aWMgaW50IHN1c3BlbmRfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUg KnhjZSwgaW50IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZXZ0Y2huLCBp bnQgKmxvY2tmZCkKIHsKICAgICBpbnQgcG9ydCwgcmMsIHN1c3BlbmRfZXZ0Y2huID0gLTE7CkBA IC0xMjMsNyArMTI0LDcgQEAgc3RhdGljIGludCBzdXNwZW5kX2d1ZXN0KHhjX2ludGVyZmFjZSAq eGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAogICAgIH0KICAgICAqZXZ0Y2huID0gc3Vz cGVuZF9ldnRjaG47CiAKLSAgICByYyA9IHhjX2V2dGNobl9ub3RpZnkoeGNlLCBzdXNwZW5kX2V2 dGNobik7CisgICAgcmMgPSB4ZW5ldnRjaG5fbm90aWZ5KHhjZSwgc3VzcGVuZF9ldnRjaG4pOwog ICAgIGlmIChyYyA8IDApCiAgICAgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0 byBub3RpZnkgc3VzcGVuZCBjaGFubmVsOiBlcnJubyAlZFxuIiwgcmMpOwpAQCAtMTk4LDggKzE5 OSw4IEBAIHN0YXRpYyBpbnQgaHBfbWVtX29mZmxpbmVfZnVuYyhpbnQgYXJnYywgY2hhciAqYXJn dltdKQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyAmIFBHX09GRkxJTkVfT1dORUQp CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0LCBzdXNw ZW5kX2V2dGNobiA9IC0xLCBzdXNwZW5kX2xvY2tmZCA9IC0xOwotICAgICAgICAgICAgICAgICAg ICB4Y19ldnRjaG4gKnhjZTsKLSAgICAgICAgICAgICAgICAgICAgeGNlID0geGNfZXZ0Y2huX29w ZW4oTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZTsK KyAgICAgICAgICAgICAgICAgICAgeGNlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAKICAg ICAgICAgICAgICAgICAgICAgaWYgKHhjZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICB7 CkBAIC0yMTQsNyArMjE1LDcgQEAgc3RhdGljIGludCBocF9tZW1fb2ZmbGluZV9mdW5jKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHN1c3BlbmQgZ3Vlc3QgJWQgZm9y IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIG1mbiAlbHhcbiIsIGRvbWlkLCBt Zm4pOwotICAgICAgICAgICAgICAgICAgICAgICAgeGNfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAg ICAgICAgICAgICAgICAgICAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsKICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgfQogCkBAIC0yMzgsNyAr MjM5LDcgQEAgc3RhdGljIGludCBocF9tZW1fb2ZmbGluZV9mdW5jKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAgICAgICAgICAgICAgICAgICAgIHhjX2RvbWFpbl9yZXN1bWUoeGNoLCBkb21pZCwg MSk7CiAgICAgICAgICAgICAgICAgICAgIHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2UoeGNoLCB4 Y2UsIGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN1c3BlbmRfZXZ0Y2huLCAmc3VzcGVuZF9sb2NrZmQpOwotICAgICAgICAgICAgICAgICAgICB4 Y19ldnRjaG5fY2xvc2UoeGNlKTsKKyAgICAgICAgICAgICAgICAgICAgeGVuZXZ0Y2huX2Nsb3Nl KHhjZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy94ZW4tbG93bWVtZC5jIGIvdG9vbHMvbWlz Yy94ZW4tbG93bWVtZC5jCmluZGV4IDgyZmZkNzUuLjMyMDA0MDQgMTAwNjQ0Ci0tLSBhL3Rvb2xz L21pc2MveGVuLWxvd21lbWQuYworKysgYi90b29scy9taXNjL3hlbi1sb3dtZW1kLmMKQEAgLTQs MjIgKzQsMjMgQEAKICAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx4ZW5ldnRj aG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5jbHVkZSA8eGVuc3RvcmUuaD4KICNpbmNs dWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogc3RhdGljIGV2dGNobl9wb3J0 X3QgdmlycV9wb3J0ICAgICAgPSAtMTsKLXN0YXRpYyB4Y19ldnRjaG4gKnhjZV9oYW5kbGUgICAg ICAgID0gTlVMTDsKK3N0YXRpYyB4ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlID0gTlVMTDsK IHN0YXRpYyB4Y19pbnRlcmZhY2UgKnhjaCAgICAgICAgICAgID0gTlVMTDsKIHN0YXRpYyBzdHJ1 Y3QgeHNfaGFuZGxlICp4c19oYW5kbGUgID0gTlVMTDsKIAogdm9pZCBjbGVhbnVwKHZvaWQpCiB7 CiAgICAgaWYgKHZpcnFfcG9ydCA+IC0xKQotICAgICAgICB4Y19ldnRjaG5fdW5iaW5kKHhjZV9o YW5kbGUsIHZpcnFfcG9ydCk7CisgICAgICAgIHhlbmV2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwg dmlycV9wb3J0KTsKICAgICBpZiAoeGNlX2hhbmRsZSkKLSAgICAgICAgeGNfZXZ0Y2huX2Nsb3Nl KHhjZV9oYW5kbGUpOworICAgICAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlX2hhbmRsZSk7CiAgICAg aWYgKHhjaCkKICAgICAgICAgeGNfaW50ZXJmYWNlX2Nsb3NlKHhjaCk7CiAgICAgaWYgKHhzX2hh bmRsZSkKQEAgLTk0LDcgKzk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK ICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0JeGNlX2hhbmRsZSA9IHhjX2V2dGNobl9vcGVu KE5VTEwsIDApOworCXhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAlpZiAo eGNlX2hhbmRsZSA9PSBOVUxMKQogICAgIHsKICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gb3Bl biBldnRjaG4gZGV2aWNlIik7CkBAIC0xMDgsNyArMTA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgcmV0dXJuIDM7CiAgICAgfQogCi0JaWYgKChyYyA9IHhj X2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9FTk9NRU0pKSA9PSAtMSkKKwlpZiAo KHJjID0geGVuZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX0VOT01FTSkpID09IC0x KQogICAgIHsKICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gYmluZCB0byBkb21haW4gZXhjZXB0 aW9uIHZpcnEgcG9ydCIpOwogICAgICAgICByZXR1cm4gNDsKQEAgLTEyMCw3ICsxMjEsNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIHsKICAgICAgICAgZXZ0Y2huX3Bv cnRfdCBwb3J0OwogCi0gICAgICAgIGlmICgocG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZV9o YW5kbGUpKSA9PSAtMSkKKyAgICAgICAgaWYgKChwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNl X2hhbmRsZSkpID09IC0xKQogICAgICAgICB7CiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0 byBsaXN0ZW4gZm9yIHBlbmRpbmcgZXZlbnQgY2hhbm5lbCIpOwogICAgICAgICAgICAgcmV0dXJu IDU7CkBAIC0xMzQsNyArMTM1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK ICAgICAgICAgICAgIHJldHVybiA2OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHhjX2V2dGNo bl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCkgPT0gLTEpCisgICAgICAgIGlmICh4ZW5ldnRjaG5f dW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQogICAgICAgICB7CiAgICAgICAgICAgICBw ZXJyb3IoIkZhaWxlZCB0byB1bm1hc2sgcG9ydCIpOwogICAgICAgICAgICAgcmV0dXJuIDc7CmRp ZmYgLS1naXQgYS90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL01ha2VmaWxlIGIvdG9vbHMvb2Nh bWwvbGlicy9ldmVudGNobi9NYWtlZmlsZQppbmRleCAyZDhkNjE4Li4xNTRlZmQ0IDEwMDY0NAot LS0gYS90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL01ha2VmaWxlCisrKyBiL3Rvb2xzL29jYW1s L2xpYnMvZXZlbnRjaG4vTWFrZWZpbGUKQEAgLTIsMTMgKzIsMTMgQEAgVE9QTEVWRUw9JChDVVJE SVIpLy4uLy4uCiBYRU5fUk9PVD0kKFRPUExFVkVMKS8uLi8uLgogaW5jbHVkZSAkKFRPUExFVkVM KS9jb21tb24ubWFrZQogCi1DRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1Nf eGVuaW5jbHVkZSkKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pICQoQ0ZMQUdTX3hl bmluY2x1ZGUpCiAKIE9CSlMgPSB4ZW5ldmVudGNobgogSU5URiA9ICQoZm9yZWFjaCBvYmosICQo T0JKUyksJChvYmopLmNtaSkKIExJQlMgPSB4ZW5ldmVudGNobi5jbWEgeGVuZXZlbnRjaG4uY214 YQogCi1MSUJTX3hlbmV2ZW50Y2huID0gJChMRExJQlNfbGlieGVuY3RybCkKK0xJQlNfeGVuZXZl bnRjaG4gPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCiAKIGFsbDogJChJTlRGKSAkKExJQlMpICQo UFJPR1JBTVMpCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4veGVuZXZl bnRjaG5fc3R1YnMuYyBiL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4veGVuZXZlbnRjaG5fc3R1 YnMuYwppbmRleCA1OTM5ZTdjLi5jMmQ0NzM3IDEwMDY0NAotLS0gYS90b29scy9vY2FtbC9saWJz L2V2ZW50Y2huL3hlbmV2ZW50Y2huX3N0dWJzLmMKKysrIGIvdG9vbHMvb2NhbWwvbGlicy9ldmVu dGNobi94ZW5ldmVudGNobl9zdHVicy5jCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSA8eGVu L3N5c2N0bC5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNo bi5oPgotI2luY2x1ZGUgPHhlbmN0cmwuaD4KKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KIAogI2Rl ZmluZSBDQU1MX05BTUVfU1BBQ0UKICNpbmNsdWRlIDxjYW1sL21sdmFsdWVzLmg+CkBAIC0zNCwx NCArMzQsMTQgQEAKICNpbmNsdWRlIDxjYW1sL2NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8Y2FtbC9m YWlsLmg+CiAKLSNkZWZpbmUgX0goX19oKSAoKHhjX2V2dGNobiAqKShfX2gpKQorI2RlZmluZSBf SChfX2gpICgoeGVuZXZ0Y2huX2hhbmRsZSAqKShfX2gpKQogCiBDQU1McHJpbSB2YWx1ZSBzdHVi X2V2ZW50Y2huX2luaXQodm9pZCkKIHsKIAlDQU1McGFyYW0wKCk7CiAJQ0FNTGxvY2FsMShyZXN1 bHQpOwogCi0JeGNfZXZ0Y2huICp4Y2UgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCBYQ19PUEVORkxB R19OT05fUkVFTlRSQU5UKTsKKwl4ZW5ldnRjaG5faGFuZGxlICp4Y2UgPSB4ZW5ldnRjaG5fb3Bl bihOVUxMLCAwKTsKIAlpZiAoeGNlID09IE5VTEwpCiAJCWNhbWxfZmFpbHdpdGgoIm9wZW4gZmFp bGVkIik7CiAKQEAgLTU1LDcgKzU1LDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl9m ZCh2YWx1ZSB4Y2UpCiAJQ0FNTGxvY2FsMShyZXN1bHQpOwogCWludCBmZDsKIAotCWZkID0geGNf ZXZ0Y2huX2ZkKF9IKHhjZSkpOworCWZkID0geGVuZXZ0Y2huX2ZkKF9IKHhjZSkpOwogCWlmIChm ZCA9PSAtMSkKIAkJY2FtbF9mYWlsd2l0aCgiZXZ0Y2huIGZkIGZhaWxlZCIpOwogCkBAIC02OSw3 ICs2OSw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fbm90aWZ5KHZhbHVlIHhjZSwg dmFsdWUgcG9ydCkKIAlDQU1McGFyYW0yKHhjZSwgcG9ydCk7CiAJaW50IHJjOwogCi0JcmMgPSB4 Y19ldnRjaG5fbm90aWZ5KF9IKHhjZSksIEludF92YWwocG9ydCkpOworCXJjID0geGVuZXZ0Y2hu X25vdGlmeShfSCh4Y2UpLCBJbnRfdmFsKHBvcnQpKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNhbWxf ZmFpbHdpdGgoImV2dGNobiBub3RpZnkgZmFpbGVkIik7CiAKQEAgLTgzLDcgKzgzLDcgQEAgQ0FN THByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl9iaW5kX2ludGVyZG9tYWluKHZhbHVlIHhjZSwgdmFs dWUgZG9taWQsCiAJQ0FNTGxvY2FsMShwb3J0KTsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHJj OwogCi0JcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihfSCh4Y2UpLCBJbnRfdmFsKGRv bWlkKSwgSW50X3ZhbChyZW1vdGVfcG9ydCkpOworCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4oX0goeGNlKSwgSW50X3ZhbChkb21pZCksIEludF92YWwocmVtb3RlX3BvcnQpKTsKIAlp ZiAocmMgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiBiaW5kX2ludGVyZG9tYWluIGZh aWxlZCIpOwogCXBvcnQgPSBWYWxfaW50KHJjKTsKQEAgLTk3LDcgKzk3LDcgQEAgQ0FNTHByaW0g dmFsdWUgc3R1Yl9ldmVudGNobl9iaW5kX2RvbV9leGNfdmlycSh2YWx1ZSB4Y2UpCiAJQ0FNTGxv Y2FsMShwb3J0KTsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHJjOwogCi0JcmMgPSB4Y19ldnRj aG5fYmluZF92aXJxKF9IKHhjZSksIFZJUlFfRE9NX0VYQyk7CisJcmMgPSB4ZW5ldnRjaG5fYmlu ZF92aXJxKF9IKHhjZSksIFZJUlFfRE9NX0VYQyk7CiAJaWYgKHJjID09IC0xKQogCQljYW1sX2Zh aWx3aXRoKCJldnRjaG4gYmluZF9kb21fZXhjX3ZpcnEgZmFpbGVkIik7CiAJcG9ydCA9IFZhbF9p bnQocmMpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5f dW5iaW5kKHZhbHVlIHhjZSwgdmFsdWUgcG9ydCkKIAlDQU1McGFyYW0yKHhjZSwgcG9ydCk7CiAJ aW50IHJjOwogCi0JcmMgPSB4Y19ldnRjaG5fdW5iaW5kKF9IKHhjZSksIEludF92YWwocG9ydCkp OworCXJjID0geGVuZXZ0Y2huX3VuYmluZChfSCh4Y2UpLCBJbnRfdmFsKHBvcnQpKTsKIAlpZiAo cmMgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiB1bmJpbmQgZmFpbGVkIik7CiAKQEAg LTEyMyw3ICsxMjMsNyBAQCBDQU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2huX3BlbmRpbmcodmFs dWUgeGNlKQogCUNBTUxsb2NhbDEocmVzdWx0KTsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHBv cnQ7CiAKLQlwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoX0goeGNlKSk7CisJcG9ydCA9IHhlbmV2 dGNobl9wZW5kaW5nKF9IKHhjZSkpOwogCWlmIChwb3J0ID09IC0xKQogCQljYW1sX2ZhaWx3aXRo KCJldnRjaG4gcGVuZGluZyBmYWlsZWQiKTsKIAlyZXN1bHQgPSBWYWxfaW50KHBvcnQpOwpAQCAt MTM3LDcgKzEzNyw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fdW5tYXNrKHZhbHVl IHhjZSwgdmFsdWUgX3BvcnQpCiAJZXZ0Y2huX3BvcnRfdCBwb3J0OwogCiAJcG9ydCA9IEludF92 YWwoX3BvcnQpOwotCWlmICh4Y19ldnRjaG5fdW5tYXNrKF9IKHhjZSksIHBvcnQpKQorCWlmICh4 ZW5ldnRjaG5fdW5tYXNrKF9IKHhjZSksIHBvcnQpKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4g dW5tYXNrIGZhaWxlZCIpOwogCUNBTUxyZXR1cm4oVmFsX3VuaXQpOwogfQpkaWZmIC0tZ2l0IGEv dG9vbHMvcHl0aG9uL3NldHVwLnB5IGIvdG9vbHMvcHl0aG9uL3NldHVwLnB5CmluZGV4IDYwNGIz MTQuLjhmYWYxYzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3B5dGhvbi9zZXR1cC5weQorKysgYi90b29s cy9weXRob24vc2V0dXAucHkKQEAgLTgsMTMgKzgsMTggQEAgZXh0cmFfY29tcGlsZV9hcmdzICA9 IFsgIi1mbm8tc3RyaWN0LWFsaWFzaW5nIiwgIi1XZXJyb3IiIF0KIAogUEFUSF9YRU4gICAgICA9 IFhFTl9ST09UICsgIi90b29scy9pbmNsdWRlIgogUEFUSF9MSUJYRU5UT09MTE9HID0gWEVOX1JP T1QgKyAiL3Rvb2xzL2xpYnMvdG9vbGxvZyIKK1BBVEhfTElCWEVORVZUQ0hOID0gWEVOX1JPT1Qg KyAiL3Rvb2xzL2xpYnMvZXZ0Y2huIgogUEFUSF9MSUJYQyAgICA9IFhFTl9ST09UICsgIi90b29s cy9saWJ4YyIKIFBBVEhfTElCWEwgICAgPSBYRU5fUk9PVCArICIvdG9vbHMvbGlieGwiCiBQQVRI X1hFTlNUT1JFID0gWEVOX1JPT1QgKyAiL3Rvb2xzL3hlbnN0b3JlIgogCiB4YyA9IEV4dGVuc2lv bigieGMiLAogICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gZXh0cmFfY29tcGls ZV9hcmdzLAotICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzICAgICAgID0gWyBQQVRIX1hFTiwg UEFUSF9MSUJYRU5UT09MTE9HICsgIi9pbmNsdWRlIiwgUEFUSF9MSUJYQyArICIvaW5jbHVkZSIs ICJ4ZW4vbG93bGV2ZWwveGMiIF0sCisgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnMgICAgICAg PSBbIFBBVEhfWEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRI X0xJQlhFTlRPT0xMT0cgKyAiL2luY2x1ZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQVRIX0xJQlhFTkVWVENITiArICIvaW5jbHVkZSIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhfTElCWEMgKyAiL2luY2x1ZGUiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieGVuL2xvd2xldmVsL3hjIiBdLAogICAg ICAgICAgICAgICAgbGlicmFyeV9kaXJzICAgICAgID0gWyBQQVRIX0xJQlhDIF0sCiAgICAgICAg ICAgICAgICBsaWJyYXJpZXMgICAgICAgICAgPSBbICJ4ZW5jdHJsIiwgInhlbmd1ZXN0IiBdLAog ICAgICAgICAgICAgICAgZGVwZW5kcyAgICAgICAgICAgID0gWyBQQVRIX0xJQlhDICsgIi9saWJ4 ZW5jdHJsLnNvIiwgUEFUSF9MSUJYQyArICIvbGlieGVuZ3Vlc3Quc28iIF0sCmRpZmYgLS1naXQg YS90b29scy90ZXN0cy94ZW4tYWNjZXNzL01ha2VmaWxlIGIvdG9vbHMvdGVzdHMveGVuLWFjY2Vz cy9NYWtlZmlsZQppbmRleCBkZDcwZjlmLi4yNWZmNDY5IDEwMDY0NAotLS0gYS90b29scy90ZXN0 cy94ZW4tYWNjZXNzL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MvTWFrZWZp bGUKQEAgLTUsNiArNSw3IEBAIENGTEFHUyArPSAtV2Vycm9yCiAKIENGTEFHUyArPSAkKENGTEFH U19saWJ4ZW5jdHJsKQogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmd1ZXN0KQorQ0ZMQUdTICs9 ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyArPSAkKENGTEFHU194ZW5pbmNsdWRlKQog CiBUQVJHRVRTLXkgOj0geGVuLWFjY2VzcwpAQCAtMjQsNiArMjUsNiBAQCBjbGVhbjoKIGRpc3Rj bGVhbjogY2xlYW4KIAogeGVuLWFjY2VzczogeGVuLWFjY2Vzcy5vIE1ha2VmaWxlCi0JJChDQykg LW8gJEAgJDwgJChMREZMQUdTKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5n dWVzdCkKKwkkKENDKSAtbyAkQCAkPCAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmN0cmwpICQo TERMSUJTX2xpYnhlbmd1ZXN0KSAkKExETElCU19saWJ4ZW5ldnRjaG4pCiAKIC1pbmNsdWRlICQo REVQUykKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3MveGVuLWFjY2Vzcy5jIGIv dG9vbHMvdGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMKaW5kZXggYTUyY2E2ZS4uNzk5Mzk0 NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMKKysrIGIv dG9vbHMvdGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNp bmNsdWRlIDxzeXMvcG9sbC5oPgogCiAjaW5jbHVkZSA8eGVuY3RybC5oPgorI2luY2x1ZGUgPHhl bmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbi92bV9ldmVudC5oPgogCiAjaWYgZGVmaW5lZChfX2Fy bV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQpAQCAtNTQsNyArNTUsNyBAQAogCiB0eXBlZGVm IHN0cnVjdCB2bV9ldmVudCB7CiAgICAgZG9taWRfdCBkb21haW5faWQ7Ci0gICAgeGNfZXZ0Y2hu ICp4Y2VfaGFuZGxlOworICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGU7CiAgICAgaW50 IHBvcnQ7CiAgICAgdm1fZXZlbnRfYmFja19yaW5nX3QgYmFja19yaW5nOwogICAgIHVpbnQzMl90 IGV2dGNobl9wb3J0OwpAQCAtNzcsOSArNzgsOSBAQCBzdGF0aWMgdm9pZCBjbG9zZV9oYW5kbGVy KGludCBzaWcpCiAgICAgaW50ZXJydXB0ZWQgPSBzaWc7CiB9CiAKLWludCB4Y193YWl0X2Zvcl9l dmVudF9vcl90aW1lb3V0KHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgdW5zaWdu ZWQgbG9uZyBtcykKK2ludCB4Y193YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHhjX2ludGVyZmFj ZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIHVuc2lnbmVkIGxvbmcgbXMpCiB7Ci0gICAg c3RydWN0IHBvbGxmZCBmZCA9IHsgLmZkID0geGNfZXZ0Y2huX2ZkKHhjZSksIC5ldmVudHMgPSBQ T0xMSU4gfCBQT0xMRVJSIH07CisgICAgc3RydWN0IHBvbGxmZCBmZCA9IHsgLmZkID0geGVuZXZ0 Y2huX2ZkKHhjZSksIC5ldmVudHMgPSBQT0xMSU4gfCBQT0xMRVJSIH07CiAgICAgaW50IHBvcnQ7 CiAgICAgaW50IHJjOwogCkBAIC05NSwxNCArOTYsMTQgQEAgaW50IHhjX3dhaXRfZm9yX2V2ZW50 X29yX3RpbWVvdXQoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBs b24KIAogICAgIGlmICggcmMgPT0gMSApCiAgICAgewotICAgICAgICBwb3J0ID0geGNfZXZ0Y2hu X3BlbmRpbmcoeGNlKTsKKyAgICAgICAgcG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKHhjZSk7CiAg ICAgICAgIGlmICggcG9ydCA9PSAtMSApCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUk9SKCJG YWlsZWQgdG8gcmVhZCBwb3J0IGZyb20gZXZlbnQgY2hhbm5lbCIpOwogICAgICAgICAgICAgZ290 byBlcnI7CiAgICAgICAgIH0KIAotICAgICAgICByYyA9IHhjX2V2dGNobl91bm1hc2soeGNlLCBw b3J0KTsKKyAgICAgICAgcmMgPSB4ZW5ldnRjaG5fdW5tYXNrKHhjZSwgcG9ydCk7CiAgICAgICAg IGlmICggcmMgIT0gMCApCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUk9SKCJGYWlsZWQgdG8g dW5tYXNrIGV2ZW50IGNoYW5uZWwgcG9ydCIpOwpAQCAtMTQzLDcgKzE0NCw3IEBAIGludCB4ZW5h Y2Nlc3NfdGVhcmRvd24oeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmFjY2Vzc190ICp4ZW5hY2Nlc3Mp CiAgICAgLyogVW5iaW5kIFZJUlEgKi8KICAgICBpZiAoIGV2dGNobl9iaW5kICkKICAgICB7Ci0g ICAgICAgIHJjID0geGNfZXZ0Y2huX3VuYmluZCh4ZW5hY2Nlc3MtPnZtX2V2ZW50LnhjZV9oYW5k bGUsCisgICAgICAgIHJjID0geGVuZXZ0Y2huX3VuYmluZCh4ZW5hY2Nlc3MtPnZtX2V2ZW50Lnhj ZV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5hY2Nlc3MtPnZtX2V2 ZW50LnBvcnQpOwogICAgICAgICBpZiAoIHJjICE9IDAgKQogICAgICAgICB7CkBAIC0xNTUsNyAr MTU2LDcgQEAgaW50IHhlbmFjY2Vzc190ZWFyZG93bih4Y19pbnRlcmZhY2UgKnhjaCwgeGVuYWNj ZXNzX3QgKnhlbmFjY2VzcykKICAgICAvKiBDbG9zZSBldmVudCBjaGFubmVsICovCiAgICAgaWYg KCBldnRjaG5fb3BlbiApCiAgICAgewotICAgICAgICByYyA9IHhjX2V2dGNobl9jbG9zZSh4ZW5h Y2Nlc3MtPnZtX2V2ZW50LnhjZV9oYW5kbGUpOworICAgICAgICByYyA9IHhlbmV2dGNobl9jbG9z ZSh4ZW5hY2Nlc3MtPnZtX2V2ZW50LnhjZV9oYW5kbGUpOwogICAgICAgICBpZiAoIHJjICE9IDAg KQogICAgICAgICB7CiAgICAgICAgICAgICBFUlJPUigiRXJyb3IgY2xvc2luZyBldmVudCBjaGFu bmVsIik7CkBAIC0yMjMsNyArMjI0LDcgQEAgeGVuYWNjZXNzX3QgKnhlbmFjY2Vzc19pbml0KHhj X2ludGVyZmFjZSAqKnhjaF9yLCBkb21pZF90IGRvbWFpbl9pZCkKICAgICBtZW1fYWNjZXNzX2Vu YWJsZSA9IDE7CiAKICAgICAvKiBPcGVuIGV2ZW50IGNoYW5uZWwgKi8KLSAgICB4ZW5hY2Nlc3Mt PnZtX2V2ZW50LnhjZV9oYW5kbGUgPSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsKKyAgICB4ZW5h Y2Nlc3MtPnZtX2V2ZW50LnhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKICAg ICBpZiAoIHhlbmFjY2Vzcy0+dm1fZXZlbnQueGNlX2hhbmRsZSA9PSBOVUxMICkKICAgICB7CiAg ICAgICAgIEVSUk9SKCJGYWlsZWQgdG8gb3BlbiBldmVudCBjaGFubmVsIik7CkBAIC0yMzIsNyAr MjMzLDcgQEAgeGVuYWNjZXNzX3QgKnhlbmFjY2Vzc19pbml0KHhjX2ludGVyZmFjZSAqKnhjaF9y LCBkb21pZF90IGRvbWFpbl9pZCkKICAgICBldnRjaG5fb3BlbiA9IDE7CiAKICAgICAvKiBCaW5k IGV2ZW50IG5vdGlmaWNhdGlvbiAqLwotICAgIHJjID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21h aW4oeGVuYWNjZXNzLT52bV9ldmVudC54Y2VfaGFuZGxlLAorICAgIHJjID0geGVuZXZ0Y2huX2Jp bmRfaW50ZXJkb21haW4oeGVuYWNjZXNzLT52bV9ldmVudC54Y2VfaGFuZGxlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuYWNjZXNzLT52bV9ldmVudC5kb21haW5faWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5hY2Nlc3MtPnZtX2V2ZW50 LmV2dGNobl9wb3J0KTsKICAgICBpZiAoIHJjIDwgMCApCkBAIC02NzgsNyArNjc5LDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgfQogCiAgICAgICAgIC8qIFRl bGwgWGVuIHBhZ2UgaXMgcmVhZHkgKi8KLSAgICAgICAgcmMgPSB4Y19ldnRjaG5fbm90aWZ5KHhl bmFjY2Vzcy0+dm1fZXZlbnQueGNlX2hhbmRsZSwKKyAgICAgICAgcmMgPSB4ZW5ldnRjaG5fbm90 aWZ5KHhlbmFjY2Vzcy0+dm1fZXZlbnQueGNlX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhlbmFjY2Vzcy0+dm1fZXZlbnQucG9ydCk7CiAKICAgICAgICAgaWYgKCByYyAh PSAwICkKZGlmZiAtLWdpdCBhL3Rvb2xzL3hjdXRpbHMvTWFrZWZpbGUgYi90b29scy94Y3V0aWxz L01ha2VmaWxlCmluZGV4IGZmZjUxOWQuLjJkMWYxMTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hjdXRp bHMvTWFrZWZpbGUKKysrIGIvdG9vbHMveGN1dGlscy9NYWtlZmlsZQpAQCAtMTYsOCArMTYsOCBA QCBQUk9HUkFNUyA9IHJlYWRub3RlcyBsc2V2dGNobgogQ0ZMQUdTICs9IC1XZXJyb3IKIAogIyBp bmNvcnJlY3RseSB1c2VzIGxpYnhjIGludGVybmFscwotQ0ZMQUdTX3JlYWRub3Rlcy5vICA6PSAk KENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ndWVzdCkgLUkkKFhFTl9ST09UKS90 b29scy9saWJ4YwotQ0ZMQUdTX2xzZXZ0Y2huLm8gICA6PSAkKENGTEFHU19saWJ4ZW5jdHJsKQor Q0ZMQUdTX3JlYWRub3Rlcy5vICA6PSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pICQoQ0ZMQUdTX2xp YnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmd1ZXN0KSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhj CitDRkxBR1NfbHNldnRjaG4ubyAgIDo9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikgJChDRkxBR1Nf bGlieGVuY3RybCkKIAogLlBIT05ZOiBhbGwKIGFsbDogYnVpbGQKZGlmZiAtLWdpdCBhL3Rvb2xz L3hlbm1vbi9NYWtlZmlsZSBiL3Rvb2xzL3hlbm1vbi9NYWtlZmlsZQppbmRleCAyMGVhMTAwLi45 ODA1NmYyIDEwMDY0NAotLS0gYS90b29scy94ZW5tb24vTWFrZWZpbGUKKysrIGIvdG9vbHMveGVu bW9uL01ha2VmaWxlCkBAIC0xNCw4ICsxNCwxMCBAQCBYRU5fUk9PVD0kKENVUkRJUikvLi4vLi4K IGluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIAogQ0ZMQUdTICArPSAtV2Vycm9y CitDRkxBR1MgICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyAgKz0gJChDRkxBR1Nf bGlieGVuY3RybCkKIExETElCUyAgKz0gJChMRExJQlNfbGlieGVuY3RybCkKK0xETElCUyAgKz0g JChMRExJQlNfbGlieGVuZXZ0Y2huKQogCiBTQ1JJUFRTID0geGVubW9uLnB5CiAKZGlmZiAtLWdp dCBhL3Rvb2xzL3hlbm1vbi94ZW5iYWtlZC5jIGIvdG9vbHMveGVubW9uL3hlbmJha2VkLmMKaW5k ZXggMWRkYjI5Yi4uZTQ2MDJlZiAxMDA2NDQKLS0tIGEvdG9vbHMveGVubW9uL3hlbmJha2VkLmMK KysrIGIvdG9vbHMveGVubW9uL3hlbmJha2VkLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl IDx1bmlzdGQuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2lu Y2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbmN0cmwuaD4KICNpbmNsdWRlIDx4ZW4v eGVuLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yNjcsNyArMjY4LDcgQEAgc3RhdGljIHZv aWQgbG9nX2V2ZW50KGludCBldmVudF9pZCkKIH0KIAogaW50IHZpcnFfcG9ydDsKLXhjX2V2dGNo biAqeGNlX2hhbmRsZSA9IE5VTEw7Cit4ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlID0gTlVM TDsKIAogLyogUmV0dXJucyB0aGUgZXZlbnQgY2hhbm5lbCBoYW5kbGUuICovCiAvKiBTdG9sZW4g ZnJvbSB4ZW5zdG9yZSBjb2RlICovCkBAIC0yNzksMTIgKzI4MCwxMiBAQCBzdGF0aWMgaW50IGV2 ZW50Y2huX2luaXQodm9pZCkKICAgICBpZiAoMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAKLSAg ICB4Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgeGNlX2hhbmRsZSA9 IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogCiAgICAgaWYgKHhjZV9oYW5kbGUgPT0gTlVMTCkK ICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gb3BlbiBldnRjaG4gZGV2aWNlIik7CiAgIAotICAg IGlmICgocmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFfVEJVRikpID09 IC0xKQorICAgIGlmICgocmMgPSB4ZW5ldnRjaG5fYmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFf VEJVRikpID09IC0xKQogICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byBiaW5kIHRvIGRvbWFpbiBl eGNlcHRpb24gdmlycSBwb3J0Iik7CiAgICAgdmlycV9wb3J0ID0gcmM7CiAgIApAQCAtMzA0LDcg KzMwNSw3IEBAIHN0YXRpYyB2b2lkIHdhaXRfZm9yX2V2ZW50KHZvaWQpCiAgICAgICAgIHJldHVy bjsKICAgICB9CiAKLSAgICBldnRjaG5fZmQgPSB4Y19ldnRjaG5fZmQoeGNlX2hhbmRsZSk7Cisg ICAgZXZ0Y2huX2ZkID0geGVuZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpOwogCiAgICAgRkRfWkVSTygm aW5zZXQpOwogICAgIEZEX1NFVChldnRjaG5fZmQsICZpbnNldCk7CkBAIC0zMTQsMTMgKzMxNSwx MyBAQCBzdGF0aWMgdm9pZCB3YWl0X2Zvcl9ldmVudCh2b2lkKQogICAgIHJldCA9IHNlbGVjdChl dnRjaG5fZmQrMSwgJmluc2V0LCBOVUxMLCBOVUxMLCAmdHYpOwogICAKICAgICBpZiAoIChyZXQg PT0gMSkgJiYgRkRfSVNTRVQoZXZ0Y2huX2ZkLCAmaW5zZXQpKSB7Ci0gICAgICAgIGlmICgocG9y dCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkKKyAgICAgICAgaWYgKChw b3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKQogICAgICAgICAgICAg cGVycm9yKCJGYWlsZWQgdG8gcmVhZCBmcm9tIGV2ZW50IGZkIik7CiAgICAgCiAgICAgICAgIC8v ICAgIGlmIChwb3J0ID09IHZpcnFfcG9ydCkKICAgICAgICAgLy8gICAgICBwcmludGYoImdvdCB0 aGUgZXZlbnQgSSB3YXMgbG9va2luZyBmb3JcclxuIik7CiAKLSAgICAgICAgaWYgKHhjX2V2dGNo bl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCkgPT0gLTEpCisgICAgICAgIGlmICh4ZW5ldnRjaG5f dW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQogICAgICAgICAgICAgcGVycm9yKCJGYWls ZWQgdG8gd3JpdGUgdG8gZXZlbnQgZmQiKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS90b29scy94 ZW5wYWdpbmcvTWFrZWZpbGUgYi90b29scy94ZW5wYWdpbmcvTWFrZWZpbGUKaW5kZXggZTYzZDg5 NC4uZDQ5MTg2NyAxMDA2NDQKLS0tIGEvdG9vbHMveGVucGFnaW5nL01ha2VmaWxlCisrKyBiL3Rv b2xzL3hlbnBhZ2luZy9NYWtlZmlsZQpAQCAtMiw4ICsyLDggQEAgWEVOX1JPT1Q9JChDVVJESVIp Ly4uLy4uCiBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKICMgeGVucGFnaW5n LmMgYW5kIGZpbGVfb3BzLmMgaW5jb3JyZWN0bHkgdXNlIGxpYnhjIGludGVybmFscwotQ0ZMQUdT ICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKSAkKFBUSFJFQURf Q0ZMQUdTKSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCi1MRExJQlMgKz0gJChMRExJQlNfbGli eGVudG9vbGxvZykgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQo UFRIUkVBRF9MSUJTKQorQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cpICQoQ0ZMQUdT X2xpYnhlbmV2dGNobikgJChDRkxBR1NfbGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVuc3RvcmUp ICQoUFRIUkVBRF9DRkxBR1MpIC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKK0xETElCUyArPSAk KExETElCU19saWJ4ZW50b29sbG9nKSAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xp YnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKFBUSFJFQURfTElCUykKIExERkxBR1Mg Kz0gJChQVEhSRUFEX0xERkxBR1MpCiAKIFBPTElDWSAgICA9IGRlZmF1bHQKZGlmZiAtLWdpdCBh L3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuYyBiL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcu YwppbmRleCBiNWZmZWU2Li5kZjk5YzZhIDEwMDY0NAotLS0gYS90b29scy94ZW5wYWdpbmcveGVu cGFnaW5nLmMKKysrIGIvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5jCkBAIC03Myw3ICs3Myw3 IEBAIHN0YXRpYyB2b2lkIHhlbnBhZ2luZ19tZW1fcGFnaW5nX2ZsdXNoX2lvZW11X2NhY2hlKHN0 cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZykKIHN0YXRpYyBpbnQgeGVucGFnaW5nX3dhaXRfZm9yX2V2 ZW50X29yX3RpbWVvdXQoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogewogICAgIHhjX2ludGVy ZmFjZSAqeGNoID0gcGFnaW5nLT54Y19oYW5kbGU7Ci0gICAgeGNfZXZ0Y2huICp4Y2UgPSBwYWdp bmctPnZtX2V2ZW50LnhjZV9oYW5kbGU7CisgICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlID0gcGFn aW5nLT52bV9ldmVudC54Y2VfaGFuZGxlOwogICAgIGNoYXIgKip2ZWMsICp2YWw7CiAgICAgdW5z aWduZWQgaW50IG51bTsKICAgICBzdHJ1Y3QgcG9sbGZkIGZkWzJdOwpAQCAtODIsNyArODIsNyBA QCBzdGF0aWMgaW50IHhlbnBhZ2luZ193YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHN0cnVjdCB4 ZW5wYWdpbmcgKnBhZ2luZykKICAgICBpbnQgdGltZW91dDsKIAogICAgIC8qIFdhaXQgZm9yIGV2 ZW50IGNoYW5uZWwgYW5kIHhlbnN0b3JlICovCi0gICAgZmRbMF0uZmQgPSB4Y19ldnRjaG5fZmQo eGNlKTsKKyAgICBmZFswXS5mZCA9IHhlbmV2dGNobl9mZCh4Y2UpOwogICAgIGZkWzBdLmV2ZW50 cyA9IFBPTExJTiB8IFBPTExFUlI7CiAgICAgZmRbMV0uZmQgPSB4c19maWxlbm8ocGFnaW5nLT54 c19oYW5kbGUpOwogICAgIGZkWzFdLmV2ZW50cyA9IFBPTExJTiB8IFBPTExFUlI7CkBAIC0xNDYs NyArMTQ2LDcgQEAgc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91 dChzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAgICAgaWYgKCByYyAmJiBmZFswXS5yZXZlbnRz ICYgUE9MTElOICkKICAgICB7CiAgICAgICAgIERQUklOVEYoIkdvdCBldmVudCBmcm9tIGV2dGNo blxuIik7Ci0gICAgICAgIHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyh4Y2UpOworICAgICAgICBw b3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNlKTsKICAgICAgICAgaWYgKCBwb3J0ID09IC0xICkK ICAgICAgICAgewogICAgICAgICAgICAgUEVSUk9SKCJGYWlsZWQgdG8gcmVhZCBwb3J0IGZyb20g ZXZlbnQgY2hhbm5lbCIpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBpbnQgeGVucGFnaW5n X3dhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQoc3RydWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogICAg ICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KIAotICAgICAgICByYyA9IHhjX2V2dGNobl91 bm1hc2soeGNlLCBwb3J0KTsKKyAgICAgICAgcmMgPSB4ZW5ldnRjaG5fdW5tYXNrKHhjZSwgcG9y dCk7CiAgICAgICAgIGlmICggcmMgPCAwICkKICAgICAgICAgewogICAgICAgICAgICAgUEVSUk9S KCJGYWlsZWQgdG8gdW5tYXNrIGV2ZW50IGNoYW5uZWwgcG9ydCIpOwpAQCAtMzkzLDcgKzM5Myw3 IEBAIHN0YXRpYyBzdHJ1Y3QgeGVucGFnaW5nICp4ZW5wYWdpbmdfaW5pdChpbnQgYXJnYywgY2hh ciAqYXJndltdKQogICAgIH0KIAogICAgIC8qIE9wZW4gZXZlbnQgY2hhbm5lbCAqLwotICAgIHBh Z2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworICAg IHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwog ICAgIGlmICggcGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlID09IE5VTEwgKQogICAgIHsKICAg ICAgICAgUEVSUk9SKCJGYWlsZWQgdG8gb3BlbiBldmVudCBjaGFubmVsIik7CkBAIC00MDEsNyAr NDAxLDcgQEAgc3RhdGljIHN0cnVjdCB4ZW5wYWdpbmcgKnhlbnBhZ2luZ19pbml0KGludCBhcmdj LCBjaGFyICphcmd2W10pCiAgICAgfQogCiAgICAgLyogQmluZCBldmVudCBub3RpZmljYXRpb24g Ki8KLSAgICByYyA9IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHBhZ2luZy0+dm1fZXZlbnQu eGNlX2hhbmRsZSwKKyAgICByYyA9IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHBhZ2luZy0+ dm1fZXZlbnQueGNlX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZ2luZy0+dm1fZXZlbnQuZG9tYWluX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFnaW5nLT52bV9ldmVudC5ldnRjaG5fcG9ydCk7CiAgICAgaWYgKCByYyA8IDAg KQpAQCAtNTMxLDcgKzUzMSw3IEBAIHN0YXRpYyB2b2lkIHhlbnBhZ2luZ190ZWFyZG93bihzdHJ1 Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAgICAgfQogCiAgICAgLyogVW5iaW5kIFZJUlEgKi8KLSAg ICByYyA9IHhjX2V2dGNobl91bmJpbmQocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLCBwYWdp bmctPnZtX2V2ZW50LnBvcnQpOworICAgIHJjID0geGVuZXZ0Y2huX3VuYmluZChwYWdpbmctPnZt X2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7CiAgICAgaWYgKCByYyAh PSAwICkKICAgICB7CiAgICAgICAgIFBFUlJPUigiRXJyb3IgdW5iaW5kaW5nIGV2ZW50IHBvcnQi KTsKQEAgLTUzOSw3ICs1MzksNyBAQCBzdGF0aWMgdm9pZCB4ZW5wYWdpbmdfdGVhcmRvd24oc3Ry dWN0IHhlbnBhZ2luZyAqcGFnaW5nKQogICAgIHBhZ2luZy0+dm1fZXZlbnQucG9ydCA9IC0xOwog CiAgICAgLyogQ2xvc2UgZXZlbnQgY2hhbm5lbCAqLwotICAgIHJjID0geGNfZXZ0Y2huX2Nsb3Nl KHBhZ2luZy0+dm1fZXZlbnQueGNlX2hhbmRsZSk7CisgICAgcmMgPSB4ZW5ldnRjaG5fY2xvc2Uo cGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlKTsKICAgICBpZiAoIHJjICE9IDAgKQogICAgIHsK ICAgICAgICAgUEVSUk9SKCJFcnJvciBjbG9zaW5nIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTY5Miw3 ICs2OTIsNyBAQCBzdGF0aWMgaW50IHhlbnBhZ2luZ19yZXN1bWVfcGFnZShzdHJ1Y3QgeGVucGFn aW5nICpwYWdpbmcsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKgogICAgIH0KIAogICAgIC8qIFRlbGwg WGVuIHBhZ2UgaXMgcmVhZHkgKi8KLSAgICByZXR1cm4geGNfZXZ0Y2huX25vdGlmeShwYWdpbmct PnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7CisgICAgcmV0dXJu IHhlbmV2dGNobl9ub3RpZnkocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLCBwYWdpbmctPnZt X2V2ZW50LnBvcnQpOwogfQogCiBzdGF0aWMgaW50IHhlbnBhZ2luZ19wb3B1bGF0ZV9wYWdlKHN0 cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZywgdW5zaWduZWQgbG9uZyBnZm4sIGludCBpKQpkaWZmIC0t Z2l0IGEvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5oIGIvdG9vbHMveGVucGFnaW5nL3hlbnBh Z2luZy5oCmluZGV4IGM2YWI3N2MuLmQwZjhkMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnBhZ2lu Zy94ZW5wYWdpbmcuaAorKysgYi90b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmgKQEAgLTI0LDYg KzI0LDcgQEAKICNkZWZpbmUgX19YRU5fUEFHSU5HMl9IX18KIAogCisjaW5jbHVkZSA8eGVuZXZ0 Y2huLmg+CiAjaW5jbHVkZSA8eGNfcHJpdmF0ZS5oPgogI2luY2x1ZGUgPHhlbi9ldmVudF9jaGFu bmVsLmg+CiAjaW5jbHVkZSA8eGVuL3ZtX2V2ZW50Lmg+CkBAIC0zMiw3ICszMyw3IEBACiAKIHN0 cnVjdCB2bV9ldmVudCB7CiAgICAgZG9taWRfdCBkb21haW5faWQ7Ci0gICAgeGNfZXZ0Y2huICp4 Y2VfaGFuZGxlOworICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGU7CiAgICAgaW50IHBv cnQ7CiAgICAgdm1fZXZlbnRfYmFja19yaW5nX3QgYmFja19yaW5nOwogICAgIHVpbnQzMl90IGV2 dGNobl9wb3J0OwpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUvTWFrZWZpbGUgYi90b29scy94 ZW5zdG9yZS9NYWtlZmlsZQppbmRleCAxYjRhNDk0Li5jMTYxMDQ2IDEwMDY0NAotLS0gYS90b29s cy94ZW5zdG9yZS9NYWtlZmlsZQorKysgYi90b29scy94ZW5zdG9yZS9NYWtlZmlsZQpAQCAtOSw2 ICs5LDcgQEAgQ0ZMQUdTICs9IC1JLgogIyBJbmNsdWRlIGNvbmZpZ3VyZSBvdXRwdXQgKGNvbmZp Zy5oKQogQ0ZMQUdTICs9IC1pbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL2NvbmZpZy5oCiBDRkxB R1MgKz0gLUkuL2luY2x1ZGUKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxB R1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKIENGTEFHUyArPSAtRFhFTl9MSUJfU1RPUkVEPSJc IiQoWEVOX0xJQl9TVE9SRUQpXCIiCiAKQEAgLTc1LDEwICs3NiwxMCBAQCBlbmRpZgogaW5pdC14 ZW5zdG9yZS1kb21haW4ubzogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmd1ZXN0KQogCiBpbml0 LXhlbnN0b3JlLWRvbWFpbjogaW5pdC14ZW5zdG9yZS1kb21haW4ubyAkKExJQlhFTlNUT1JFKQot CSQoQ0MpICReICQoTERGTEFHUykgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVu Z3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAtbyAkQCAkKEFQUEVORF9MREZMQUdTKQorCSQo Q0MpICReICQoTERGTEFHUykgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5j dHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVuc3RvcmUpIC1vICRAICQo QVBQRU5EX0xERkxBR1MpCiAKIHhlbnN0b3JlZDogJChYRU5TVE9SRURfT0JKUykKLQkkKENDKSAk XiAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmN0cmwpICQoU09DS0VUX0xJQlMpIC1vICRAICQo QVBQRU5EX0xERkxBR1MpCisJJChDQykgJF4gJChMREZMQUdTKSAkKExETElCU19saWJ4ZW5ldnRj aG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoU09DS0VUX0xJQlMpIC1vICRAICQoQVBQRU5EX0xE RkxBR1MpCiAKIHhlbnN0b3JlZC5hOiAkKFhFTlNUT1JFRF9PQkpTKQogCSQoQVIpIGNyICRAICRe CmRpZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jIGIvdG9vbHMveGVu c3RvcmUveGVuc3RvcmVkX2NvcmUuYwppbmRleCAzYzAzMDdlLi5mNjJjMTkyIDEwMDY0NAotLS0g YS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hl bnN0b3JlZF9jb3JlLmMKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNp bmNsdWRlIDxzZXRqbXAuaD4KIAorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgorCiAjaW5jbHVkZSAi dXRpbHMuaCIKICNpbmNsdWRlICJsaXN0LmgiCiAjaW5jbHVkZSAidGFsbG9jLmgiCkBAIC02Myw3 ICs2NSw3IEBACiAjaW5jbHVkZSA8c3lzdGVtZC9zZC1kYWVtb24uaD4KICNlbmRpZgogCi1leHRl cm4geGNfZXZ0Y2huICp4Y2VfaGFuZGxlOyAvKiBpbiB4ZW5zdG9yZWRfZG9tYWluLmMgKi8KK2V4 dGVybiB4ZW5ldnRjaG5faGFuZGxlICp4Y2VfaGFuZGxlOyAvKiBpbiB4ZW5zdG9yZWRfZG9tYWlu LmMgKi8KIHN0YXRpYyBpbnQgeGNlX3BvbGxmZF9pZHggPSAtMTsKIHN0YXRpYyBzdHJ1Y3QgcG9s bGZkICpmZHM7CiBzdGF0aWMgdW5zaWduZWQgaW50IGN1cnJlbnRfYXJyYXlfc2l6ZTsKQEAgLTM3 Miw3ICszNzQsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2ZkcyhpbnQgc29jaywgaW50ICpw X3NvY2tfcG9sbGZkX2lkeCwKIAkJCXNldF9mZChyZW9wZW5fbG9nX3BpcGVbMF0sIFBPTExJTnxQ T0xMUFJJKTsKIAogCWlmICh4Y2VfaGFuZGxlICE9IE5VTEwpCi0JCXhjZV9wb2xsZmRfaWR4ID0g c2V0X2ZkKHhjX2V2dGNobl9mZCh4Y2VfaGFuZGxlKSwKKwkJeGNlX3BvbGxmZF9pZHggPSBzZXRf ZmQoeGVuZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpLAogCQkJCQlQT0xMSU58UE9MTFBSSSk7CiAKIAls aXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm4sICZjb25uZWN0aW9ucywgbGlzdCkgewpkaWZmIC0tZ2l0 IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jIGIvdG9vbHMveGVuc3RvcmUveGVu c3RvcmVkX2RvbWFpbi5jCmluZGV4IGRjZDY1ODEuLjZjZWVjMjkgMTAwNjQ0Ci0tLSBhL3Rvb2xz L3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYworKysgYi90b29scy94ZW5zdG9yZS94ZW5zdG9y ZWRfZG9tYWluLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJ4ZW5zdG9yZWRfdHJhbnNh Y3Rpb24uaCIKICNpbmNsdWRlICJ4ZW5zdG9yZWRfd2F0Y2guaCIKIAorI2luY2x1ZGUgPHhlbmV2 dGNobi5oPgogI2luY2x1ZGUgPHhlbmN0cmwuaD4KICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUu aD4KIApAQCAtMzYsNyArMzcsNyBAQCBzdGF0aWMgeGNfaW50ZXJmYWNlICoqeGNfaGFuZGxlOwog eGNfZ250dGFiICoqeGNnX2hhbmRsZTsKIHN0YXRpYyBldnRjaG5fcG9ydF90IHZpcnFfcG9ydDsK IAoteGNfZXZ0Y2huICp4Y2VfaGFuZGxlID0gTlVMTDsKK3hlbmV2dGNobl9oYW5kbGUgKnhjZV9o YW5kbGUgPSBOVUxMOwogCiBzdHJ1Y3QgZG9tYWluCiB7CkBAIC0xMjgsNyArMTI5LDcgQEAgc3Rh dGljIGludCB3cml0ZWNobihzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwKIAl4ZW5fbWIoKTsKIAlp bnRmLT5yc3BfcHJvZCArPSBsZW47CiAKLQl4Y19ldnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGNv bm4tPmRvbWFpbi0+cG9ydCk7CisJeGVuZXZ0Y2huX25vdGlmeSh4Y2VfaGFuZGxlLCBjb25uLT5k b21haW4tPnBvcnQpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0 aWMgaW50IHJlYWRjaG4oc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHVuc2ln bmVkIGludCBsZW4pCiAJeGVuX21iKCk7CiAJaW50Zi0+cmVxX2NvbnMgKz0gbGVuOwogCi0JeGNf ZXZ0Y2huX25vdGlmeSh4Y2VfaGFuZGxlLCBjb25uLT5kb21haW4tPnBvcnQpOworCXhlbmV2dGNo bl9ub3RpZnkoeGNlX2hhbmRsZSwgY29ubi0+ZG9tYWluLT5wb3J0KTsKIAogCXJldHVybiBsZW47 CiB9CkBAIC0xOTAsNyArMTkxLDcgQEAgc3RhdGljIGludCBkZXN0cm95X2RvbWFpbih2b2lkICpf ZG9tYWluKQogCWxpc3RfZGVsKCZkb21haW4tPmxpc3QpOwogCiAJaWYgKGRvbWFpbi0+cG9ydCkg ewotCQlpZiAoeGNfZXZ0Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCBkb21haW4tPnBvcnQpID09IC0x KQorCQlpZiAoeGVuZXZ0Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCBkb21haW4tPnBvcnQpID09IC0x KQogCQkJZXByaW50ZigiPiBVbmJpbmRpbmcgcG9ydCAlaSBmYWlsZWQhXG4iLCBkb21haW4tPnBv cnQpOwogCX0KIApAQCAtMjM5LDEzICsyNDAsMTMgQEAgdm9pZCBoYW5kbGVfZXZlbnQodm9pZCkK IHsKIAlldnRjaG5fcG9ydF90IHBvcnQ7CiAKLQlpZiAoKHBvcnQgPSB4Y19ldnRjaG5fcGVuZGlu Zyh4Y2VfaGFuZGxlKSkgPT0gLTEpCisJaWYgKChwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNl X2hhbmRsZSkpID09IC0xKQogCQliYXJmX3BlcnJvcigiRmFpbGVkIHRvIHJlYWQgZnJvbSBldmVu dCBmZCIpOwogCiAJaWYgKHBvcnQgPT0gdmlycV9wb3J0KQogCQlkb21haW5fY2xlYW51cCgpOwog Ci0JaWYgKHhjX2V2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCkgPT0gLTEpCisJaWYgKHhl bmV2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCkgPT0gLTEpCiAJCWJhcmZfcGVycm9yKCJG YWlsZWQgdG8gd3JpdGUgdG8gZXZlbnQgZmQiKTsKIH0KIApAQCAtMjg3LDcgKzI4OCw3IEBAIHN0 YXRpYyBzdHJ1Y3QgZG9tYWluICpuZXdfZG9tYWluKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGlu dCBkb21pZCwKIAl0YWxsb2Nfc2V0X2Rlc3RydWN0b3IoZG9tYWluLCBkZXN0cm95X2RvbWFpbik7 CiAKIAkvKiBUZWxsIGtlcm5lbCB3ZSdyZSBpbnRlcmVzdGVkIGluIHRoaXMgZXZlbnQuICovCi0J cmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2VfaGFuZGxlLCBkb21pZCwgcG9ydCk7 CisJcmMgPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2VfaGFuZGxlLCBkb21pZCwgcG9y dCk7CiAJaWYgKHJjID09IC0xKQogCSAgICByZXR1cm4gTlVMTDsKIAlkb21haW4tPnBvcnQgPSBy YzsKQEAgLTM5Miw4ICszOTMsOCBAQCB2b2lkIGRvX2ludHJvZHVjZShzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogCX0gZWxzZSBpZiAoKGRvbWFpbi0+ bWZuID09IG1mbikgJiYgKGRvbWFpbi0+Y29ubiAhPSBjb25uKSkgewogCQkvKiBVc2UgWFNfSU5U Uk9EVUNFIGZvciByZWNyZWF0aW5nIHRoZSB4ZW5idXMgZXZlbnQtY2hhbm5lbC4gKi8KIAkJaWYg KGRvbWFpbi0+cG9ydCkKLQkJCXhjX2V2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwgZG9tYWluLT5w b3J0KTsKLQkJcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2VfaGFuZGxlLCBkb21p ZCwgcG9ydCk7CisJCQl4ZW5ldnRjaG5fdW5iaW5kKHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCk7 CisJCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNlX2hhbmRsZSwgZG9taWQsIHBv cnQpOwogCQlkb21haW4tPnBvcnQgPSAocmMgPT0gLTEpID8gMCA6IHJjOwogCQlkb21haW4tPnJl bW90ZV9wb3J0ID0gcG9ydDsKIAl9IGVsc2UgewpAQCAtNjE0LDcgKzYxNSw3IEBAIHN0YXRpYyBp bnQgZG9tMF9pbml0KHZvaWQpCiAKIAl0YWxsb2Nfc3RlYWwoZG9tMC0+Y29ubiwgZG9tMCk7IAog Ci0JeGNfZXZ0Y2huX25vdGlmeSh4Y2VfaGFuZGxlLCBkb20wLT5wb3J0KTsgCisJeGVuZXZ0Y2hu X25vdGlmeSh4Y2VfaGFuZGxlLCBkb20wLT5wb3J0KTsgCiAKIAlyZXR1cm4gMDsgCiB9CkBAIC02 NDMsNyArNjQ0LDcgQEAgdm9pZCBkb21haW5faW5pdCh2b2lkKQogCWVsc2UKIAkJdGFsbG9jX3Nl dF9kZXN0cnVjdG9yKHhjZ19oYW5kbGUsIGNsb3NlX3hjZ19oYW5kbGUpOwogCi0JeGNlX2hhbmRs ZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworCXhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3Bl bihOVUxMLCAwKTsKIAogCWlmICh4Y2VfaGFuZGxlID09IE5VTEwpCiAJCWJhcmZfcGVycm9yKCJG YWlsZWQgdG8gb3BlbiBldnRjaG4gZGV2aWNlIik7CkBAIC02NTEsNyArNjUyLDcgQEAgdm9pZCBk b21haW5faW5pdCh2b2lkKQogCWlmIChkb20wX2luaXQoKSAhPSAwKSAKIAkJYmFyZl9wZXJyb3Io IkZhaWxlZCB0byBpbml0aWFsaXplIGRvbTAgc3RhdGUiKTsgCiAKLQlpZiAoKHJjID0geGNfZXZ0 Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX0RPTV9FWEMpKSA9PSAtMSkKKwlpZiAoKHJj ID0geGVuZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX0RPTV9FWEMpKSA9PSAtMSkK IAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byBiaW5kIHRvIGRvbWFpbiBleGNlcHRpb24gdmlycSBw b3J0Iik7CiAJdmlycV9wb3J0ID0gcmM7CiB9CmRpZmYgLS1naXQgYS90b29scy94ZW50cmFjZS9N YWtlZmlsZSBiL3Rvb2xzL3hlbnRyYWNlL01ha2VmaWxlCmluZGV4IDZjMTNjZDEuLjAxNTdiZTIg MTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnRyYWNlL01ha2VmaWxlCisrKyBiL3Rvb2xzL3hlbnRyYWNl L01ha2VmaWxlCkBAIC0zLDggKzMsMTEgQEAgaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxl cy5tawogCiBDRkxBR1MgKz0gLVdlcnJvcgogCitDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuZXZ0 Y2huKQogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCi1MRExJQlMgKz0gJChMRExJQlNf bGlieGVuY3RybCkgJChBUkdQX0xERkxBR1MpCitMRExJQlMgKz0gJChMRExJQlNfbGlieGVuZXZ0 Y2huKQorTERMSUJTICs9ICQoTERMSUJTX2xpYnhlbmN0cmwpCitMRExJQlMgKz0gJChBUkdQX0xE RkxBR1MpCiAKIEJJTi0kKENPTkZJR19YODYpID0geGVuYWx5emUKIEJJTiAgICAgID0gJChCSU4t eSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnRyYWNlL3hlbnRyYWNlLmMgYi90b29scy94ZW50cmFj ZS94ZW50cmFjZS5jCmluZGV4IDRlZTE0NTguLmM5NzBkNDIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hl bnRyYWNlL3hlbnRyYWNlLmMKKysrIGIvdG9vbHMveGVudHJhY2UveGVudHJhY2UuYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4K IAorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbmN0cmwuaD4KIAogI2RlZmlu ZSBQRVJST1IoX20sIF9hLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKQEAgLTc0LDcgKzc1LDcgQEAgc2V0dGluZ3NfdCBvcHRzOwogaW50IGludGVycnVwdGVkID0g MDsgLyogZ2V0cyBzZXQgaWYgd2UgZ2V0IGEgU0lHSFVQICovCiAKIHN0YXRpYyB4Y19pbnRlcmZh Y2UgKnhjX2hhbmRsZTsKLXN0YXRpYyB4Y19ldnRjaG4gKnhjZV9oYW5kbGUgPSBOVUxMOworc3Rh dGljIHhlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogc3RhdGljIGludCB2aXJx X3BvcnQgPSAtMTsKIHN0YXRpYyBpbnQgb3V0ZmQgPSAxOwogCkBAIC02MDIsMTMgKzYwMywxMyBA QCBzdGF0aWMgdm9pZCBldmVudF9pbml0KHZvaWQpCiB7CiAgICAgaW50IHJjOwogCi0gICAgeGNl X2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworICAgIHhjZV9oYW5kbGUgPSB4ZW5l dnRjaG5fb3BlbihOVUxMLCAwKTsKICAgICBpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKSB7CiAgICAg ICAgIHBlcnJvcigiZXZlbnQgY2hhbm5lbCBvcGVuIik7CiAgICAgICAgIGV4aXQoRVhJVF9GQUlM VVJFKTsKICAgICB9CiAKLSAgICByYyA9IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwg VklSUV9UQlVGKTsKKyAgICByYyA9IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklS UV9UQlVGKTsKICAgICBpZiAocmMgPT0gLTEpIHsKICAgICAgICAgUEVSUk9SKCJmYWlsZWQgdG8g YmluZCB0byBWSVJRIHBvcnQiKTsKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAtNjIz LDcgKzYyNCw3IEBAIHN0YXRpYyB2b2lkIGV2ZW50X2luaXQodm9pZCkKIHN0YXRpYyB2b2lkIHdh aXRfZm9yX2V2ZW50X29yX3RpbWVvdXQodW5zaWduZWQgbG9uZyBtaWxsaXNlY29uZHMpCiB7CiAg ICAgaW50IHJjOwotICAgIHN0cnVjdCBwb2xsZmQgZmQgPSB7IC5mZCA9IHhjX2V2dGNobl9mZCh4 Y2VfaGFuZGxlKSwKKyAgICBzdHJ1Y3QgcG9sbGZkIGZkID0geyAuZmQgPSB4ZW5ldnRjaG5fZmQo eGNlX2hhbmRsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgLmV2ZW50cyA9IFBPTExJTiB8 IFBPTExFUlIgfTsKICAgICBpbnQgcG9ydDsKIApAQCAtNjM2LDcgKzYzNyw3IEBAIHN0YXRpYyB2 b2lkIHdhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQodW5zaWduZWQgbG9uZyBtaWxsaXNlY29uZHMp CiAgICAgfQogCiAgICAgaWYgKHJjID09IDEpIHsKLSAgICAgICAgcG9ydCA9IHhjX2V2dGNobl9w ZW5kaW5nKHhjZV9oYW5kbGUpOworICAgICAgICBwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNl X2hhbmRsZSk7CiAgICAgICAgIGlmIChwb3J0ID09IC0xKSB7CiAgICAgICAgICAgICBQRVJST1Io ImZhaWxlZCB0byByZWFkIHBvcnQgZnJvbSBldnRjaG4iKTsKICAgICAgICAgICAgIGV4aXQoRVhJ VF9GQUlMVVJFKTsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBzdGF0aWMgdm9pZCB3YWl0X2Zvcl9ldmVu dF9vcl90aW1lb3V0KHVuc2lnbmVkIGxvbmcgbWlsbGlzZWNvbmRzKQogICAgICAgICAgICAgICAg ICAgICBwb3J0LCB2aXJxX3BvcnQpOwogICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwog ICAgICAgICB9Ci0gICAgICAgIHJjID0geGNfZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0 KTsKKyAgICAgICAgcmMgPSB4ZW5ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpOwogICAg ICAgICBpZiAocmMgPT0gLTEpIHsKICAgICAgICAgICAgIFBFUlJPUigiZmFpbGVkIHRvIHdyaXRl IHBvcnQgdG8gZXZ0Y2huIik7CiAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0tIAoy LjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==