From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v5 02/15] iommu: introduce the concept of BFN... Date: Fri, 3 Aug 2018 18:22:07 +0100 Message-ID: <20180803172220.1657-3-paul.durrant@citrix.com> References: <20180803172220.1657-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fldmV-0006pw-Vu for xen-devel@lists.xenproject.org; Fri, 03 Aug 2018 17:22:28 +0000 In-Reply-To: <20180803172220.1657-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Stefano Stabellini , Suravee Suthikulpanit , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnYnVzIGZyYW1lIG51bWJlcicgaS5lLiBhIGZyYW1lIG51bWJlciBtYXBwZWQg aW4gdGhlIElPTU1VCnJhdGhlciB0aGFuIHRoZSBNTVUuCgpUaGlzIHBhdGNoIGlzIGEgbGFyZ2Vs eSBjb3NtZXRpYyBjaGFuZ2UgdGhhdCBzdWJzdGl0dXRlcyB0aGUgdGVybXMgJ2dmbicKYW5kICdn YWRkcicgZm9yICdiZm4nIGFuZCAnYmFkZHInIGluIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoZSBm cmFtZSBudW1iZXIKb3IgYWRkcmVzcyByZWxhdGUgdG8gdGhlIElPTU1VIHJhdGhlciB0aGFuIHRo ZSBNTVUuCgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0 aGUgaW50cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGJmbl90IGFuZCBk ZWZpbml0aW9uIG9mCiAgIElOVkFMSURfQkZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBn Zm5feChJTlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Jm bl90b19iYWRkciBhbmQgX19iYWRkcl90b19iZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMg d2l0aG91dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vi c2VxdWVudCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2Fm ZSBCRk5zLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4KUmV2aWV3ZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpDYzog U3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6 IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBH cmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnYzOgogLSBHZXQg cmlkIG9mIGludGVybWVkaWF0ZSAnZnJhbWUnIHZhcmlhYmxlcyBhZ2Fpbi4KCnYyOgogLSBBZGRy ZXNzZWQgY29tbWVudHMgZnJvbSBKYW4uCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X2NtZC5jICAgICB8IDE4ICsrKy0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9pb21tdV9tYXAuYyAgICAgfCA3NiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogeGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYyB8ICAyICstCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jICAgICAgICAgIHwgMTYgKysrLS0tCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgICAgIHwgMjggKysrKystLS0tLS0KIHhl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAgICAgfCAzMCArKysrKystLS0t LS0KIHhlbi9pbmNsdWRlL3hlbi9pb21tdS5oICAgICAgICAgICAgICAgICAgICAgfCAzOCArKysr KysrKysrKystLS0KIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAgICAgICAgICAgICAgICAgICAgICAg fCAxMCArKystCiA4IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21k LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMKaW5kZXggMDgyNDdm YTM1NC4uZjkzYmVjZDZlMSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X2NtZC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQu YwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgaW52YWxpZGF0ZV9pb21tdV9hbGwoc3RydWN0IGFt ZF9pb21tdSAqaW9tbXUpCiB9CiAKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKHU4IGRldmZu LCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90IGdhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBiYWRkcl90IGJhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7CiAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKICAgICBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdTsKQEAgLTMxNSwxMiAr MzE1LDEyIEBAIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKHU4IGRldmZuLCBjb25zdCBzdHJ1 Y3QgcGNpX2RldiAqcGRldiwKIAogICAgIC8qIHNlbmQgSU5WQUxJREFURV9JT1RMQl9QQUdFUyBj b21tYW5kICovCiAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvbW11LT5sb2NrLCBmbGFncyk7Ci0g ICAgaW52YWxpZGF0ZV9pb3RsYl9wYWdlcyhpb21tdSwgbWF4cGVuZCwgMCwgcXVldWVpZCwgZ2Fk ZHIsIHJlcV9pZCwgb3JkZXIpOworICAgIGludmFsaWRhdGVfaW90bGJfcGFnZXMoaW9tbXUsIG1h eHBlbmQsIDAsIHF1ZXVlaWQsIGJhZGRyLCByZXFfaWQsIG9yZGVyKTsKICAgICBmbHVzaF9jb21t YW5kX2J1ZmZlcihpb21tdSk7CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxv Y2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMo c3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgZ2FkZHIsCitzdGF0aWMgdm9pZCBhbWRfaW9tbXVf Zmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWluICpkLCBiYWRkcl90IGJhZGRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9yZGVyKQogewog ICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwpAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyB2b2lk IGFtZF9pb21tdV9mbHVzaF9hbGxfaW90bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdh ZGRyLAogICAgICAgICB1OCBkZXZmbiA9IHBkZXYtPmRldmZuOwogCiAgICAgICAgIGRvIHsKLSAg ICAgICAgICAgIGFtZF9pb21tdV9mbHVzaF9pb3RsYihkZXZmbiwgcGRldiwgZ2FkZHIsIG9yZGVy KTsKKyAgICAgICAgICAgIGFtZF9pb21tdV9mbHVzaF9pb3RsYihkZXZmbiwgcGRldiwgYmFkZHIs IG9yZGVyKTsKICAgICAgICAgICAgIGRldmZuICs9IHBkZXYtPnBoYW50b21fc3RyaWRlOwogICAg ICAgICB9IHdoaWxlICggZGV2Zm4gIT0gcGRldi0+ZGV2Zm4gJiYKICAgICAgICAgICAgICAgICAg IFBDSV9TTE9UKGRldmZuKSA9PSBQQ0lfU0xPVChwZGV2LT5kZXZmbikgKTsKQEAgLTM0Miw3ICsz NDIsNyBAQCBzdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9t YWluICpkLCB1aW50NjRfdCBnYWRkciwKIAogLyogRmx1c2ggaW9tbXUgY2FjaGUgYWZ0ZXIgcDJt IGNoYW5nZXMuICovCiBzdGF0aWMgdm9pZCBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVjdCBk b21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGdh ZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJhZGRyX3QgYmFkZHIsIHVuc2lnbmVkIGludCBvcmRlcikKIHsKICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOwogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11OwpAQCAtMzUyLDEzICszNTIs MTMgQEAgc3RhdGljIHZvaWQgX2FtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpk LAogICAgIGZvcl9lYWNoX2FtZF9pb21tdSAoIGlvbW11ICkKICAgICB7CiAgICAgICAgIHNwaW5f bG9ja19pcnFzYXZlKCZpb21tdS0+bG9jaywgZmxhZ3MpOwotICAgICAgICBpbnZhbGlkYXRlX2lv bW11X3BhZ2VzKGlvbW11LCBnYWRkciwgZG9tX2lkLCBvcmRlcik7CisgICAgICAgIGludmFsaWRh dGVfaW9tbXVfcGFnZXMoaW9tbXUsIGJhZGRyLCBkb21faWQsIG9yZGVyKTsKICAgICAgICAgZmx1 c2hfY29tbWFuZF9idWZmZXIoaW9tbXUpOwogICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZpb21tdS0+bG9jaywgZmxhZ3MpOwogICAgIH0KIAogICAgIGlmICggYXRzX2VuYWJsZWQgKQot ICAgICAgICBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhkLCBnYWRkciwgb3JkZXIpOworICAg ICAgICBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhkLCBiYWRkciwgb3JkZXIpOwogfQogCiB2 b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCkKQEAgLTM2Nyw5 ICszNjcsOSBAQCB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfcGFnZXMoc3RydWN0IGRvbWFpbiAq ZCkKIH0KIAogdm9pZCBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBpbnQg b3JkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwgdW5z aWduZWQgaW50IG9yZGVyKQogewotICAgIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgKHVpbnQ2 NF90KSBnZm4gPDwgUEFHRV9TSElGVCwgb3JkZXIpOworICAgIF9hbWRfaW9tbXVfZmx1c2hfcGFn ZXMoZCwgX19iZm5fdG9fYmFkZHIoYmZuKSwgb3JkZXIpOwogfQogCiB2b2lkIGFtZF9pb21tdV9m bHVzaF9kZXZpY2Uoc3RydWN0IGFtZF9pb21tdSAqaW9tbXUsIHVpbnQxNl90IGJkZikKZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwppbmRleCA3MGI0MzQ1YjM3Li40ZGVhYjlj ZDJmIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMK KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCkBAIC0zNSwxMiAr MzUsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGludCBwZm5fdG9fcGRlX2lkeCh1bnNpZ25lZCBsb25n IHBmbiwgdW5zaWduZWQgaW50IGxldmVsKQogICAgIHJldHVybiBpZHg7CiB9CiAKLXZvaWQgY2xl YXJfaW9tbXVfcHRlX3ByZXNlbnQodW5zaWduZWQgbG9uZyBsMV9tZm4sIHVuc2lnbmVkIGxvbmcg Z2ZuKQordm9pZCBjbGVhcl9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIGwxX21mbiwg dW5zaWduZWQgbG9uZyBiZm4pCiB7CiAgICAgdTY0ICp0YWJsZSwgKnB0ZTsKIAogICAgIHRhYmxl ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obDFfbWZuKSk7Ci0gICAgcHRlID0gdGFibGUgKyBwZm5f dG9fcGRlX2lkeChnZm4sIElPTU1VX1BBR0lOR19NT0RFX0xFVkVMXzEpOworICAgIHB0ZSA9IHRh YmxlICsgcGZuX3RvX3BkZV9pZHgoYmZuLCBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8xKTsKICAg ICAqcHRlID0gMDsKICAgICB1bm1hcF9kb21haW5fcGFnZSh0YWJsZSk7CiB9CkBAIC0xMDQsNyAr MTA0LDcgQEAgc3RhdGljIGJvb2xfdCBzZXRfaW9tbXVfcGRlX3ByZXNlbnQodTMyICpwZGUsIHVu c2lnbmVkIGxvbmcgbmV4dF9tZm4sCiAgICAgcmV0dXJuIG5lZWRfZmx1c2g7CiB9CiAKLXN0YXRp YyBib29sX3Qgc2V0X2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcHRfbWZuLCB1bnNp Z25lZCBsb25nIGdmbiwgCitzdGF0aWMgYm9vbF90IHNldF9pb21tdV9wdGVfcHJlc2VudCh1bnNp Z25lZCBsb25nIHB0X21mbiwgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfbWZuLCBpbnQgcGRlX2xldmVsLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCBpdywgYm9vbF90IGly KQogewpAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBib29sX3Qgc2V0X2lvbW11X3B0ZV9wcmVz ZW50KHVuc2lnbmVkIGxvbmcgcHRfbWZuLCB1bnNpZ25lZCBsb25nIGdmbiwKIAogICAgIHRhYmxl ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocHRfbWZuKSk7CiAKLSAgICBwZGUgPSAodTMyKikodGFi bGUgKyBwZm5fdG9fcGRlX2lkeChnZm4sIHBkZV9sZXZlbCkpOworICAgIHBkZSA9ICh1MzIqKSh0 YWJsZSArIHBmbl90b19wZGVfaWR4KGJmbiwgcGRlX2xldmVsKSk7CiAKICAgICBuZWVkX2ZsdXNo ID0gc2V0X2lvbW11X3BkZV9wcmVzZW50KHBkZSwgbmV4dF9tZm4sIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMCwgaXcsIGly KTsKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBzZXRfcGRlX2NvdW50KHU2NCAqcGRl LCB1bnNpZ25lZCBpbnQgY291bnQpCiAgKiBvdGhlcndpc2UgaW5jcmVhc2UgcGRlIGNvdW50IGlm IG1mbiBpcyBjb250aWdvdXMgd2l0aCBtZm4gLSAxCiAgKi8KIHN0YXRpYyBpbnQgaW9tbXVfdXBk YXRlX3BkZV9jb3VudChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWdu ZWQgbG9uZyBtZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBtZXJnZV9sZXZlbCkKIHsKICAgICB1bnNpZ25lZCBpbnQgcGRl X2NvdW50LCBuZXh0X2xldmVsOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBpbnQgaW9tbXVf dXBkYXRlX3BkZV9jb3VudChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwK IAogICAgIC8qIGdldCBwZGUgYXQgbWVyZ2UgbGV2ZWwgKi8KICAgICB0YWJsZSA9IG1hcF9kb21h aW5fcGFnZShfbWZuKHB0X21mbikpOwotICAgIHBkZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgo Z2ZuLCBtZXJnZV9sZXZlbCk7CisgICAgcGRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChiZm4s IG1lcmdlX2xldmVsKTsKIAogICAgIC8qIGdldCBwYWdlIHRhYmxlIG9mIG5leHQgbGV2ZWwgKi8K ICAgICBudGFibGVfbWFkZHIgPSBhbWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJvbV9wdGUoKHUz MiopcGRlKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgaW50IGlvbW11X3VwZGF0ZV9wZGVf Y291bnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAgICAgbWFzayA9 ICgxVUxMPDwgKFBURV9QRVJfVEFCTEVfU0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxOwogCiAgICAg aWYgKCAoKGZpcnN0X21mbiAmIG1hc2spID09IDApICYmCi0gICAgICAgICAoKChnZm4gJiBtYXNr KSB8IGZpcnN0X21mbikgPT0gbWZuKSApCisgICAgICAgICAoKChiZm4gJiBtYXNrKSB8IGZpcnN0 X21mbikgPT0gbWZuKSApCiAgICAgewogICAgICAgICBwZGVfY291bnQgPSBnZXRfcGRlX2NvdW50 KCpwZGUpOwogCkBAIC0zODcsNyArMzg3LDcgQEAgb3V0OgogfQogCiBzdGF0aWMgaW50IGlvbW11 X21lcmdlX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRfbWZuLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50 IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwg dW5zaWduZWQgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgbWVyZ2VfbGV2ZWwpCiB7CiAgICAgdTY0ICp0YWJsZSwgKnBkZSwgKm50YWJsZTsKQEAg LTM5OCw3ICszOTgsNyBAQCBzdGF0aWMgaW50IGlvbW11X21lcmdlX3BhZ2VzKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRfbWZuLAogICAgIEFTU0VSVCggc3Bpbl9pc19sb2NrZWQo JmhkLT5hcmNoLm1hcHBpbmdfbG9jaykgJiYgcHRfbWZuICk7CiAKICAgICB0YWJsZSA9IG1hcF9k b21haW5fcGFnZShfbWZuKHB0X21mbikpOwotICAgIHBkZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9p ZHgoZ2ZuLCBtZXJnZV9sZXZlbCk7CisgICAgcGRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChi Zm4sIG1lcmdlX2xldmVsKTsKIAogICAgIC8qIGdldCBmaXJzdCBtZm4gKi8KICAgICBudGFibGVf bWZuID0gYW1kX2lvbW11X2dldF9uZXh0X3RhYmxlX2Zyb21fcHRlKCh1MzIqKXBkZSkgPj4gUEFH RV9TSElGVDsKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgaW50IGlvbW11X21lcmdlX3BhZ2Vz KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRfbWZuLAogICoge1JlLCB1bn1tYXBw aW5nIHN1cGVyIHBhZ2UgZnJhbWVzIGNhdXNlcyByZS1hbGxvY2F0aW9uIG9mIGlvCiAgKiBwYWdl IHRhYmxlcy4KICAqLwotc3RhdGljIGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBwZm4sIAorc3RhdGljIGludCBpb21tdV9wZGVfZnJvbV9iZm4o c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHB0X21mbltdKQogewogICAgIHU2NCAqcGRlLCAqbmV4 dF90YWJsZV92YWRkcjsKQEAgLTQ3NywxMSArNDc3LDExIEBAIHN0YXRpYyBpbnQgaW9tbXVfcGRl X2Zyb21fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAgICAgICAg ICAgIG5leHRfdGFibGVfbWZuICE9IDAgKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgaTsK LSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCBnZm47CisgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1mbiwgYmZuOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vfc3o7CiAKICAg ICAgICAgICAgIHBhZ2Vfc3ogPSAxIDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICogKG5leHRfbGV2 ZWwgLSAxKSk7Ci0gICAgICAgICAgICBnZm4gPSAgcGZuICYgfigoMSA8PCAoUFRFX1BFUl9UQUJM RV9TSElGVCAqIG5leHRfbGV2ZWwpKSAtIDEpOworICAgICAgICAgICAgYmZuID0gIHBmbiAmIH4o KDEgPDwgKFBURV9QRVJfVEFCTEVfU0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxKTsKICAgICAgICAg ICAgIG1mbiA9IG5leHRfdGFibGVfbWZuOwogCiAgICAgICAgICAgICAvKiBhbGxvY2F0ZSBsb3dl ciBsZXZlbCBwYWdlIHRhYmxlICovCkBAIC00OTksMTAgKzQ5OSwxMCBAQCBzdGF0aWMgaW50IGlv bW11X3BkZV9mcm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKIAog ICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBQVEVfUEVSX1RBQkxFX1NJWkU7IGkrKyApCiAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2V0X2lvbW11X3B0ZV9wcmVzZW50KG5leHRf dGFibGVfbWZuLCBnZm4sIG1mbiwgbmV4dF9sZXZlbCwKKyAgICAgICAgICAgICAgICBzZXRfaW9t bXVfcHRlX3ByZXNlbnQobmV4dF90YWJsZV9tZm4sIGJmbiwgbWZuLCBuZXh0X2xldmVsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIUlPTU1VRl93cml0YWJsZSwgISFJ T01NVUZfcmVhZGFibGUpOwogICAgICAgICAgICAgICAgIG1mbiArPSBwYWdlX3N6OwotICAgICAg ICAgICAgICAgIGdmbiArPSBwYWdlX3N6OworICAgICAgICAgICAgICAgIGJmbiArPSBwYWdlX3N6 OwogICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2FsbF9wYWdl cyhkKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKICAgICByZXR1cm4gMDsKIH0KIAot c3RhdGljIGludCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm4pCitzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGJmbikKIHsKICAgICB1MTYgYmRmOwogICAgIHZvaWQgKmRldmljZV9l bnRyeTsKQEAgLTU1NCwxMyArNTU0LDEzIEBAIHN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2Rl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIHVuc2lnbmVkIGxvbmcg b2xkX3Jvb3RfbWZuOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQp OwogCi0gICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKKyAgICBpZiAoIGJmbiA9 PSBiZm5feChJTlZBTElEX0JGTikgKQogICAgICAgICByZXR1cm4gLUVBRERSTk9UQVZBSUw7Ci0g ICAgQVNTRVJUKCEoZ2ZuID4+IERFRkFVTFRfRE9NQUlOX0FERFJFU1NfV0lEVEgpKTsKKyAgICBB U1NFUlQoIShiZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwogCiAgICAgbGV2 ZWwgPSBoZC0+YXJjaC5wYWdpbmdfbW9kZTsKICAgICBvbGRfcm9vdCA9IGhkLT5hcmNoLnJvb3Rf dGFibGU7Ci0gICAgb2Zmc2V0ID0gZ2ZuID4+IChQVEVfUEVSX1RBQkxFX1NISUZUICogKGxldmVs IC0gMSkpOworICAgIG9mZnNldCA9IGJmbiA+PiAoUFRFX1BFUl9UQUJMRV9TSElGVCAqIChsZXZl bCAtIDEpKTsKIAogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmaGQtPmFyY2gubWFwcGluZ19s b2NrKSAmJiBpc19odm1fZG9tYWluKGQpKTsKIApAQCAtNjMxLDcgKzYzMSw3IEBAIHN0YXRpYyBp bnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2Zu KQogICAgIHJldHVybiAwOwogfQogCi1pbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKK2ludCBhbWRfaW9t bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVk IGxvbmcgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 CiAgICAgYm9vbF90IG5lZWRfZmx1c2ggPSAwOwpAQCAtNjUxLDM0ICs2NTEsMzQgQEAgaW50IGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgbG9uZyBtZm4sCiAgICAgaWYgKCByYyApCiAgICAgewogICAgICAgICBzcGluX3VubG9j aygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJSb290 IHRhYmxlIGFsbG9jIGZhaWxlZCwgZ2ZuID0gJWx4XG4iLCBnZm4pOworICAgICAgICBBTURfSU9N TVVfREVCVUcoIlJvb3QgdGFibGUgYWxsb2MgZmFpbGVkLCBiZm4gPSAlbHhcbiIsIGJmbik7CiAg ICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAg IC8qIFNpbmNlIEhWTSBkb21haW4gaXMgaW5pdGlhbGl6ZWQgd2l0aCAyIGxldmVsIElPIHBhZ2Ug dGFibGUsCi0gICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdl ciBnZm4gbm93ICovCisgICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZv ciB3aWRlciBiZm4gbm93ICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKICAgICB7Ci0g ICAgICAgIGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGdmbikgKQorICAgICAgICBpZiAoIHVw ZGF0ZV9wYWdpbmdfbW9kZShkLCBiZm4pICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91 bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgICAgICBBTURfSU9NTVVfREVC VUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAg ICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgYmZuID0gJWx4XG4i LCBiZm4pOwogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2dm bihkLCBnZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCisgICAgaWYgKCBpb21tdV9w ZGVfZnJvbV9iZm4oZCwgYmZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQogICAgIHsK ICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFN RF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgZ2ZuID0gJWx4XG4iLCBn Zm4pOworICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5 IGJmbiA9ICVseFxuIiwgYmZuKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICBy ZXR1cm4gLUVGQVVMVDsKICAgICB9CiAKICAgICAvKiBJbnN0YWxsIDRrIG1hcHBpbmcgZmlyc3Qg Ki8KLSAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZ2Zu LCBtZm4sIAorICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFd LCBiZm4sIG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V X1BBR0lOR19NT0RFX0xFVkVMXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIShmbGFncyAmIElPTU1VRl93cml0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl9yZWFkYWJsZSkpOwpAQCAtNjkwLDcg KzY5MCw3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIC8qIDRLIG1hcHBpbmcgZm9yIFBW IGd1ZXN0cyBuZXZlciBjaGFuZ2VzLCAKICAgICAgKiBubyBuZWVkIHRvIGZsdXNoIGlmIHdlIHRy dXN0IG5vbi1wcmVzZW50IGJpdHMgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgKQotICAg ICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZ2ZuLCAwKTsKKyAgICAgICAgYW1kX2lvbW11 X2ZsdXNoX3BhZ2VzKGQsIGJmbiwgMCk7CiAKICAgICBmb3IgKCBtZXJnZV9sZXZlbCA9IElPTU1V X1BBR0lOR19NT0RFX0xFVkVMXzI7CiAgICAgICAgICAgbWVyZ2VfbGV2ZWwgPD0gaGQtPmFyY2gu cGFnaW5nX21vZGU7IG1lcmdlX2xldmVsKysgKQpAQCAtNjk4LDE1ICs2OTgsMTUgQEAgaW50IGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgbG9uZyBtZm4sCiAgICAgICAgIGlmICggcHRfbWZuW21lcmdlX2xldmVsXSA9PSAwICkK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoICFpb21tdV91cGRhdGVfcGRlX2NvdW50 KGQsIHB0X21mblttZXJnZV9sZXZlbF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ZuLCBtZm4sIG1lcmdlX2xldmVsKSApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmZuLCBtZm4sIG1lcmdlX2xldmVsKSApCiAgICAgICAgICAgICBicmVhazsK IAotICAgICAgICBpZiAoIGlvbW11X21lcmdlX3BhZ2VzKGQsIHB0X21mblttZXJnZV9sZXZlbF0s IGdmbiwgCisgICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRfbWZuW21lcmdlX2xl dmVsXSwgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBtZXJnZV9s ZXZlbCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFw cGluZ19sb2NrKTsKICAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiTWVyZ2UgaW9tbXUgcGFn ZSBmYWlsZWQgYXQgbGV2ZWwgJWQsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2Zu ID0gJWx4IG1mbiA9ICVseFxuIiwgbWVyZ2VfbGV2ZWwsIGdmbiwgbWZuKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYmZuID0gJWx4IG1mbiA9ICVseFxuIiwgbWVyZ2VfbGV2ZWwsIGJm biwgbWZuKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVy biAtRUZBVUxUOwogICAgICAgICB9CkBAIC03MjAsNyArNzIwLDcgQEAgb3V0OgogICAgIHJldHVy biAwOwogfQogCi1pbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4pCitpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBiZm4pCiB7CiAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bN107CiAg ICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CkBAIC03MzksMzQgKzcz OSwzNCBAQCBpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4pCiAgICAgfQogCiAgICAgLyogU2luY2UgSFZNIGRvbWFpbiBpcyBpbml0aWFs aXplZCB3aXRoIDIgbGV2ZWwgSU8gcGFnZSB0YWJsZSwKLSAgICAgKiB3ZSBtaWdodCBuZWVkIGEg ZGVlcGVyIHBhZ2UgdGFibGUgZm9yIGxhZ2VyIGdmbiBub3cgKi8KKyAgICAgKiB3ZSBtaWdodCBu ZWVkIGEgZGVlcGVyIHBhZ2UgdGFibGUgZm9yIGxhZ2VyIGJmbiBub3cgKi8KICAgICBpZiAoIGlz X2h2bV9kb21haW4oZCkgKQogICAgIHsKLSAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19t b2RlKGQsIGdmbik7CisgICAgICAgIGludCByYyA9IHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBiZm4p OwogCiAgICAgICAgIGlmICggcmMgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9j aygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygi VXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZ2ZuID0gJWx4XG4iLCBnZm4pOworICAgICAgICAgICAg QU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBiZm4gPSAlbHhcbiIsIGJm bik7CiAgICAgICAgICAgICBpZiAoIHJjICE9IC1FQUREUk5PVEFWQUlMICkKICAgICAgICAgICAg ICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgIH0K ICAgICB9CiAKLSAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2dmbihkLCBnZm4sIHB0X21mbikgfHwg KHB0X21mblsxXSA9PSAwKSApCisgICAgaWYgKCBpb21tdV9wZGVfZnJvbV9iZm4oZCwgYmZuLCBw dF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxp ZCBJTyBwYWdldGFibGUgZW50cnkgZ2ZuID0gJWx4XG4iLCBnZm4pOworICAgICAgICBBTURfSU9N TVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGJmbiA9ICVseFxuIiwgYmZuKTsK ICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICB9 CiAKICAgICAvKiBtYXJrIFBURSBhcyAncGFnZSBub3QgcHJlc2VudCcgKi8KLSAgICBjbGVhcl9p b21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGdmbik7CisgICAgY2xlYXJfaW9tbXVfcHRlX3By ZXNlbnQocHRfbWZuWzFdLCBiZm4pOwogICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5n X2xvY2spOwogCi0gICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGdmbiwgMCk7CisgICAgYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGJmbiwgMCk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4IDEyZDI2OTViODku LmQ2MDg2MzFlNmUgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lf YW1kX2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9t bXUuYwpAQCAtNTc4LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIGFtZF9kdW1wX3AybV90YWJsZV9s ZXZlbChzdHJ1Y3QgcGFnZV9pbmZvKiBwZywgaW50IGxldmVsLAogICAgICAgICAgICAgICAgIG1h ZGRyX3RvX3BhZ2UobmV4dF90YWJsZV9tYWRkciksIG5leHRfbGV2ZWwsCiAgICAgICAgICAgICAg ICAgYWRkcmVzcywgaW5kZW50ICsgMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50 aygiJSpzZ2ZuOiAlMDhseCAgbWZuOiAlMDhseFxuIiwKKyAgICAgICAgICAgIHByaW50aygiJSpz YmZuOiAlMDhseCAgbWZuOiAlMDhseFxuIiwKICAgICAgICAgICAgICAgICAgICBpbmRlbnQsICIi LAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKVBGTl9ET1dOKGFkZHJlc3MpLAog ICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKVBGTl9ET1dOKG5leHRfdGFibGVfbWFk ZHIpKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IDc0YzA5YjA5OTEuLjFlNGQ1 NjFiNDcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKKysr IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAtMjU1MSw3ICsyNTUxLDcg QEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVj dCBkb21haW4gKmQpCiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxi X2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7 CiAJLyogQVJNIFNNTVUgdjEgZG9lc24ndCBoYXZlIGZsdXNoIGJ5IFZNQSBhbmQgVk1JRCAqLwpA QCAtMjczNyw3ICsyNzM3LDcgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfaW9tbXVfZG9tYWluX3Rl YXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiAJeGZyZWUoeGVuX2RvbWFpbik7CiB9CiAKLXN0YXRp YyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgZ2ZuLAorc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sCiAJCQl1bnNpZ25lZCBsb25n IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXAybV90eXBlX3QgdDsKQEAgLTI3NDgsMTAg KzI3NDgsMTAgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAJICogcHJvdGVjdGVkIGJ5IGFuIElP TU1VLCBYZW4gbmVlZHMgdG8gYWRkIGEgMToxIG1hcHBpbmcgaW4gdGhlIGRvbWFpbgogCSAqIHAy bSB0byBhbGxvdyBETUEgcmVxdWVzdCB0byB3b3JrLgogCSAqIFRoaXMgaXMgb25seSB2YWxpZCB3 aGVuIHRoZSBkb21haW4gaXMgZGlyZWN0ZWQgbWFwcGVkLiBIZW5jZSB0aGlzCi0JICogZnVuY3Rp b24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aXRoIGdmbiA9PSBtZm4uCisJ ICogZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aXRoIGdmbiA9 PSBtZm4gPT0gYmZuLgogCSAqLwogCUJVR19PTighaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkp OwotCUJVR19PTihtZm4gIT0gZ2ZuKTsKKwlCVUdfT04obWZuICE9IGJmbik7CiAKIAkvKiBXZSBv bmx5IHN1cHBvcnQgcmVhZGFibGUgYW5kIHdyaXRhYmxlIGZsYWdzICovCiAJaWYgKCEoZmxhZ3Mg JiAoSU9NTVVGX3JlYWRhYmxlIHwgSU9NTVVGX3dyaXRhYmxlKSkpCkBAIC0yNzYzLDE5ICsyNzYz LDE5IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogCSAqIFRoZSBmdW5jdGlvbiBndWVzdF9waHlz bWFwX2FkZF9lbnRyeSByZXBsYWNlcyB0aGUgY3VycmVudCBtYXBwaW5nCiAJICogaWYgdGhlcmUg aXMgYWxyZWFkeSBvbmUuLi4KIAkgKi8KLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnko ZCwgX2dmbihnZm4pLCBfbWZuKG1mbiksIDAsIHQpOworCXJldHVybiBndWVzdF9waHlzbWFwX2Fk ZF9lbnRyeShkLCBfZ2ZuKGJmbiksIF9tZm4oYmZuKSwgMCwgdCk7CiB9CiAKLXN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4pCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogewogCS8qCiAJICogVGhpcyBm dW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdoZW4gdGhlIGRvbWFp bgotCSAqIGlzIGRpcmVjdCBtYXBwZWQKKwkgKiBpcyBkaXJlY3QgbWFwcGVkIChpLmUuIGdmbiA9 PSBtZm4gPT0gYmZuKS4KIAkgKi8KIAlpZiAoICFpc19kb21haW5fZGlyZWN0X21hcHBlZChkKSAp CiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2Uo ZCwgX2dmbihnZm4pLCBfbWZuKGdmbiksIDApOworCXJldHVybiBndWVzdF9waHlzbWFwX3JlbW92 ZV9wYWdlKGQsIF9nZm4oYmZuKSwgX21mbihiZm4pLCAwKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBpb21tdV9vcHMgYXJtX3NtbXVfaW9tbXVfb3BzID0gewpkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11 LmMKaW5kZXggNDk5NzRlNTYzNC4uMGZhYWIxOGU4OCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5j CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChz dHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBwYWdlX2xpc3RfZm9yX2VhY2ggKCBwYWdlLCAmZC0+ cGFnZV9saXN0ICkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBt Zm5feChwYWdlX3RvX21mbihwYWdlKSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9 IG1mbl90b19nbWZuKGQsIG1mbik7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiA9IG1m bl90b19nbWZuKGQsIG1mbik7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFwcGluZyA9IElP TU1VRl9yZWFkYWJsZTsKICAgICAgICAgICAgIGludCByZXQ7CiAKQEAgLTE5NCw3ICsxOTQsNyBA QCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAg ICAgICAgICAgICAgICAgICA9PSBQR1Rfd3JpdGFibGVfcGFnZSkgKQogICAgICAgICAgICAgICAg IG1hcHBpbmcgfD0gSU9NTVVGX3dyaXRhYmxlOwogCi0gICAgICAgICAgICByZXQgPSBoZC0+cGxh dGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1mbiwgbWFwcGluZyk7CisgICAgICAgICAgICBy ZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBiZm4sIG1mbiwgbWFwcGluZyk7CiAg ICAgICAgICAgICBpZiAoICFyYyApCiAgICAgICAgICAgICAgICAgcmMgPSByZXQ7CiAKQEAgLTI1 NSw3ICsyNTUsNyBAQCB2b2lkIGlvbW11X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQp CiAgICAgYXJjaF9pb21tdV9kb21haW5fZGVzdHJveShkKTsKIH0KIAotaW50IGlvbW11X21hcF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1m biwKK2ludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJm biwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZs YWdzKQogewogICAgIGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQp OwpAQCAtMjY0LDEzICsyNjQsMTMgQEAgaW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBpZiAoICFpb21t dV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg ICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLCBmbGFncyk7Cisg ICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBiZm4sIG1mbiwgZmxhZ3MpOwog ICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlmICggIWQtPmlzX3NodXR0 aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKICAgICAgICAgICAgIHByaW50ayhYRU5M T0dfRVJSCi0gICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgbWFwcGluZyBnZm4gJSNseCB0 byBtZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9p ZCwgZ2ZuLCBtZm4sIHJjKTsKKyAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBtYXBwaW5n IGJmbiAlI2x4IHRvIG1mbiAlI2x4IGZhaWxlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAg ZC0+ZG9tYWluX2lkLCBiZm4sIG1mbiwgcmMpOwogCiAgICAgICAgIGlmICggIWlzX2hhcmR3YXJl X2RvbWFpbihkKSApCiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CkBAIC0yNzksNyArMjc5 LDcgQEAgaW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBpb21tdV91 bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQoraW50IGlvbW11 X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pCiB7CiAgICAg Y29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CiAgICAgaW50IHJj OwpAQCAtMjg3LDEzICsyODcsMTMgQEAgaW50IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQt PnBsYXRmb3JtX29wcyApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZv cm1fb3BzLT51bm1hcF9wYWdlKGQsIGdmbik7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT51 bm1hcF9wYWdlKGQsIGJmbik7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAg ICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQogICAg ICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKLSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01N VSB1bm1hcHBpbmcgZ2ZuICUjbHggZmFpbGVkOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICBk LT5kb21haW5faWQsIGdmbiwgcmMpOworICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIHVu bWFwcGluZyBiZm4gJSNseCBmYWlsZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRv bWFpbl9pZCwgYmZuLCByYyk7CiAKICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQp ICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0 aWMgdm9pZCBpb21tdV9mcmVlX3BhZ2V0YWJsZXModW5zaWduZWQgbG9uZyB1bnVzZWQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19jeWNsZShzbXBfcHJvY2Vzc29yX2lkKCks ICZjcHVfb25saW5lX21hcCkpOwogfQogCi1pbnQgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHBhZ2VfY291bnQpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAq aGQgPSBkb21faW9tbXUoZCk7CkBAIC0zMjgsMTMgKzMyOCwxMyBAQCBpbnQgaW9tbXVfaW90bGJf Zmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgaWYgKCAhaW9t bXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyB8fCAhaGQtPnBsYXRmb3JtX29wcy0+aW90 bGJfZmx1c2ggKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29w cy0+aW90bGJfZmx1c2goZCwgZ2ZuLCBwYWdlX2NvdW50KTsKKyAgICByYyA9IGhkLT5wbGF0Zm9y bV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGJmbiwgcGFnZV9jb3VudCk7CiAgICAgaWYgKCB1bmxpa2Vs eShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmlu dGtfcmF0ZWxpbWl0KCkgKQogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKLSAgICAgICAg ICAgICAgICAgICAiZCVkOiBJT01NVSBJT1RMQiBmbHVzaCBmYWlsZWQ6ICVkLCBnZm4gJSNseCwg cGFnZSBjb3VudCAldVxuIiwKLSAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjLCBn Zm4sIHBhZ2VfY291bnQpOworICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIElPVExCIGZs dXNoIGZhaWxlZDogJWQsIGJmbiAlI2x4LCBwYWdlIGNvdW50ICV1XG4iLAorICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgcmMsIGJmbiwgcGFnZV9jb3VudCk7CiAKICAgICAgICAgaWYg KCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsK ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggMTcxMDI1NjgyMy4uNDhmNjJlMGU4 ZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU4NSw3ICs1ODUsNyBAQCBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkKIH0KIAogc3RhdGlj IGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2Zu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3Qg ZG1hX29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewpAQCAtNjEyLDEyICs2MTIsMTIgQEAg c3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAq ZCwKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250aW51 ZTsKIAotICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBnZm4gPT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKKyAgICAgICAgaWYgKCBwYWdlX2NvdW50ICE9IDEgfHwgYmZuID09IGJmbl94KElO VkFMSURfQkZOKSApCiAgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21t dSwgaW9tbXVfZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LCBmbHVzaF9kZXZfaW90bGIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByYyA9IGlvbW11 X2ZsdXNoX2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYmZuX3RvX2JhZGRyKGJmbiksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRtYV9vbGRfcHRlX3ByZXNlbnQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9kZXZfaW90bGIp OwpAQCAtNjMzLDE1ICs2MzMsMTUgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1 c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sg aW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKLSAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIo ZCwgZ2ZuLCAxLCBwYWdlX2NvdW50KTsKKyAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwg YmZuLCAxLCBwYWdlX2NvdW50KTsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVf Zmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgcmV0dXJuIGlvbW11X2Zs dXNoX2lvdGxiKGQsIGdmbl94KElOVkFMSURfR0ZOKSwgMCwgMCk7CisgICAgcmV0dXJuIGlvbW11 X2ZsdXNoX2lvdGxiKGQsIGJmbl94KElOVkFMSURfQkZOKSwgMCwgMCk7CiB9CiAKIC8qIGNsZWFy IG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAqLwpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgc3RhdGljIHZv aWQgaW9tbXVfZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHN0YXRpYyBp bnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CkBAIC0xNzg2LDE0ICsxNzg2LDE0IEBA IHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsCiAKICAgICBzcGluX2xvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAgICBw Z19tYWRkciA9IGFkZHJfdG9fZG1hX3BhZ2VfbWFkZHIoZCwgKHBhZGRyX3QpZ2ZuIDw8IFBBR0Vf U0hJRlRfNEssIDEpOworICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCBf X2Jmbl90b19iYWRkcihiZm4pLCAxKTsKICAgICBpZiAoIHBnX21hZGRyID09IDAgKQogICAgIHsK ICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgIHJl dHVybiAtRU5PTUVNOwogICAgIH0KICAgICBwYWdlID0gKHN0cnVjdCBkbWFfcHRlICopbWFwX3Z0 ZF9kb21haW5fcGFnZShwZ19tYWRkcik7Ci0gICAgcHRlID0gcGFnZSArIChnZm4gJiBMRVZFTF9N QVNLKTsKKyAgICBwdGUgPSBwYWdlICsgKGJmbiAmIExFVkVMX01BU0spOwogICAgIG9sZCA9ICpw dGU7CiAgICAgZG1hX3NldF9wdGVfYWRkcihuZXcsIChwYWRkcl90KW1mbiA8PCBQQUdFX1NISUZU XzRLKTsKICAgICBkbWFfc2V0X3B0ZV9wcm90KG5ldywKQEAgLTE4MTcsMjIgKzE4MTcsMjIgQEAg c3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwKICAgICB1bm1hcF92dGRfZG9tYWluX3BhZ2UocGFnZSk7CiAKICAgICBpZiAoICF0aGlz X2NwdShpb21tdV9kb250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIHJjID0gaW9tbXVfZmx1c2hf aW90bGIoZCwgZ2ZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CisgICAgICAgIHJjID0gaW9t bXVfZmx1c2hfaW90bGIoZCwgYmZuLCBkbWFfcHRlX3ByZXNlbnQob2xkKSwgMSk7CiAKICAgICBy ZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuKQogewogICAgIC8qIERv IG5vdGhpbmcgaWYgaGFyZHdhcmUgZG9tYWluIGFuZCBpb21tdSBzdXBwb3J0cyBwYXNzIHRocnUu ICovCiAgICAgaWYgKCBpb21tdV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21haW4oZCkg KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29uZShkLCAo cGFkZHJfdClnZm4gPDwgUEFHRV9TSElGVF80Syk7CisgICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJf b25lKGQsIF9fYmZuX3RvX2JhZGRyKGJmbikpOwogfQogCi1pbnQgaW9tbXVfcHRlX2ZsdXNoKHN0 cnVjdCBkb21haW4gKmQsIHU2NCBnZm4sIHU2NCAqcHRlLAoraW50IGlvbW11X3B0ZV9mbHVzaChz dHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBiZm4sIHVpbnQ2NF90ICpwdGUsCiAgICAgICAgICAg ICAgICAgICAgIGludCBvcmRlciwgaW50IHByZXNlbnQpCiB7CiAgICAgc3RydWN0IGFjcGlfZHJo ZF91bml0ICpkcmhkOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgaW50IGlvbW11X3B0ZV9mbHVzaChz dHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQgKnB0ZSwKICAgICAgICAgICAgIGNvbnRpbnVl OwogCiAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21p ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3QpZ2ZuIDw8IFBB R0VfU0hJRlRfNEssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYmZuX3Rv X2JhZGRyKGJmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyLCAh cHJlc2VudCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAgaWYgKCByYyA+IDAgKQogICAgICAg ICB7CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCBzdGF0aWMgdm9pZCB2dGRfZHVtcF9wMm1fdGFibGVf bGV2ZWwocGFkZHJfdCBwdF9tYWRkciwgaW50IGxldmVsLCBwYWRkcl90IGdwYSwKICAgICAgICAg ICAgIHZ0ZF9kdW1wX3AybV90YWJsZV9sZXZlbChkbWFfcHRlX2FkZHIoKnB0ZSksIG5leHRfbGV2 ZWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIGluZGVu dCArIDEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGsoIiUqc2dmbjogJTA4bHgg bWZuOiAlMDhseFxuIiwKKyAgICAgICAgICAgIHByaW50aygiJSpzYmZuOiAlMDhseCBtZm46ICUw OGx4XG4iLAogICAgICAgICAgICAgICAgICAgIGluZGVudCwgIiIsCiAgICAgICAgICAgICAgICAg ICAgKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MgPj4gUEFHRV9TSElGVF80SyksCiAgICAgICAgICAg ICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGRtYV9wdGVfYWRkcigqcHRlKSA+PiBQQUdFX1NISUZU XzRLKSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCBiL3hlbi9pbmNsdWRl L3hlbi9pb21tdS5oCmluZGV4IDZiNDJlM2I4NzYuLjE0YWRhMGMxNGUgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL3hlbi9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCkBAIC0y MywxMSArMjMsMzcgQEAKICNpbmNsdWRlIDx4ZW4vcGFnZS1kZWZzLmg+CiAjaW5jbHVkZSA8eGVu L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8eGVuL3BjaS5oPgorI2luY2x1ZGUgPHhlbi90eXBlc2Fm ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vaW9yZXEuaD4KICNpbmNsdWRlIDxwdWJsaWMvZG9t Y3RsLmg+CiAjaW5jbHVkZSA8YXNtL2RldmljZS5oPgogI2luY2x1ZGUgPGFzbS9pb21tdS5oPgog CitUWVBFX1NBRkUodWludDY0X3QsIGJmbik7CisjZGVmaW5lIFBSSV9iZm4gICAgIFBSSXg2NAor I2RlZmluZSBJTlZBTElEX0JGTiBfYmZuKH4wVUwpCisKKyNpZm5kZWYgYmZuX3QKKyNkZWZpbmUg YmZuX3QgLyogR3JlcCBmb2RkZXI6IGJmbl90LCBfYmZuKCkgYW5kIGJmbl94KCkgYXJlIGRlZmlu ZWQgYWJvdmUgKi8KKyNkZWZpbmUgX2JmbgorI2RlZmluZSBiZm5feAorI3VuZGVmIGJmbl90Cisj dW5kZWYgX2JmbgorI3VuZGVmIGJmbl94CisjZW5kaWYKKworI2RlZmluZSBJT01NVV9QQUdFX1NI SUZUIDEyCisjZGVmaW5lIElPTU1VX1BBR0VfU0laRSAgKF9BQygxLEwpIDw8IElPTU1VX1BBR0Vf U0hJRlQpCisjZGVmaW5lIElPTU1VX1BBR0VfTUFTSyAgKH4oSU9NTVVfUEFHRV9TSVpFIC0gMSkp CisKK3R5cGVkZWYgdWludDY0X3QgYmFkZHJfdDsKKworI2RlZmluZSBfX2Jmbl90b19iYWRkcihi Zm4pICgoYmFkZHJfdCkoYmZuKSA8PCBJT01NVV9QQUdFX1NISUZUKQorI2RlZmluZSBfX2JhZGRy X3RvX2JmbihiYWRkcikgKCh1aW50NjRfdCkoYmFkZHIgPj4gSU9NTVVfUEFHRV9TSElGVCkpCisK KyNkZWZpbmUgYmZuX3RvX2JhZGRyKGJmbikgX19iZm5fdG9fYmFkZHIoYmZuX3goYmZuKSkKKyNk ZWZpbmUgYmFkZHJfdG9fYmZuKGJhZGRyKSBfYmZuKF9fYmFkZHJfdG9fYmZuKGJhZGRyKSkKKwog ZXh0ZXJuIGJvb2xfdCBpb21tdV9lbmFibGUsIGlvbW11X2VuYWJsZWQ7CiBleHRlcm4gYm9vbF90 IGZvcmNlX2lvbW11LCBpb21tdV9kb20wX3N0cmljdCwgaW9tbXVfdmVyYm9zZTsKIGV4dGVybiBi b29sX3QgaW9tbXVfd29ya2Fyb3VuZF9iaW9zX2J1ZywgaW9tbXVfaWdmeCwgaW9tbXVfcGFzc3Ro cm91Z2g7CkBAIC02MCw5ICs4Niw5IEBAIHZvaWQgaW9tbXVfdGVhcmRvd24oc3RydWN0IGRvbWFp biAqZCk7CiAjZGVmaW5lIElPTU1VRl9yZWFkYWJsZSAgKDF1PDxfSU9NTVVGX3JlYWRhYmxlKQog I2RlZmluZSBfSU9NTVVGX3dyaXRhYmxlIDEKICNkZWZpbmUgSU9NTVVGX3dyaXRhYmxlICAoMXU8 PF9JT01NVUZfd3JpdGFibGUpCi1pbnQgX19tdXN0X2NoZWNrIGlvbW11X21hcF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAoraW50IF9fbXVzdF9jaGVjayBpb21tdV9t YXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFn cyk7Ci1pbnQgX19tdXN0X2NoZWNrIGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnZm4pOworaW50IF9fbXVzdF9jaGVjayBpb21tdV91bm1hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKTsKIAogZW51bSBpb21tdV9mZWF0dXJl CiB7CkBAIC0xNTIsOSArMTc4LDkgQEAgc3RydWN0IGlvbW11X29wcyB7CiAjZW5kaWYgLyogSEFT X1BDSSAqLwogCiAgICAgdm9pZCAoKnRlYXJkb3duKShzdHJ1Y3QgZG9tYWluICpkKTsKLSAgICBp bnQgX19tdXN0X2NoZWNrICgqbWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgZ2ZuLAorICAgIGludCBfX211c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKLSAgICBpbnQgX19tdXN0X2No ZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pOwor ICAgIGludCBfX211c3RfY2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGJmbik7CiAgICAgdm9pZCAoKmZyZWVfcGFnZV90YWJsZSkoc3RydWN0IHBhZ2Vf aW5mbyAqKTsKICNpZmRlZiBDT05GSUdfWDg2CiAgICAgdm9pZCAoKnVwZGF0ZV9pcmVfZnJvbV9h cGljKSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZh bHVlKTsKQEAgLTE2NSw3ICsxOTEsNyBAQCBzdHJ1Y3QgaW9tbXVfb3BzIHsKICAgICB2b2lkICgq cmVzdW1lKSh2b2lkKTsKICAgICB2b2lkICgqc2hhcmVfcDJtKShzdHJ1Y3QgZG9tYWluICpkKTsK ICAgICB2b2lkICgqY3Jhc2hfc2h1dGRvd24pKHZvaWQpOwotICAgIGludCBfX211c3RfY2hlY2sg KCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCisgICAg aW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBwYWdlX2NvdW50KTsKICAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2hfYWxs KShzdHJ1Y3QgZG9tYWluICpkKTsKICAgICBpbnQgKCpnZXRfcmVzZXJ2ZWRfZGV2aWNlX21lbW9y eSkoaW9tbXVfZ3JkbV90ICosIHZvaWQgKik7CkBAIC0xODcsNyArMjEzLDcgQEAgaW50IGlvbW11 X2RvX3BjaV9kb21jdGwoc3RydWN0IHhlbl9kb21jdGwgKiwgc3RydWN0IGRvbWFpbiAqZCwKIGlu dCBpb21tdV9kb19kb21jdGwoc3RydWN0IHhlbl9kb21jdGwgKiwgc3RydWN0IGRvbWFpbiAqZCwK ICAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3Qp KTsKIAotaW50IF9fbXVzdF9jaGVjayBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfaW90bGJfZmx1c2go c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KTsKIGludCBfX211c3RfY2hl Y2sgaW9tbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4gKmQpOwogCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS94ZW4vbW0uaCBiL3hlbi9pbmNsdWRlL3hlbi9tbS5oCmluZGV4IDI0NjU0 ZThlMjIuLjRlYmY5MWYxN2UgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oCisrKyBi L3hlbi9pbmNsdWRlL3hlbi9tbS5oCkBAIC0xNCw4ICsxNCw5IEBACiAgKiBzaG91bGQgYmUgYWRo ZXJlZCB0by4KICAqCiAgKiBtZm46IE1hY2hpbmUgRnJhbWUgTnVtYmVyCi0gKiAgIFRoZSB2YWx1 ZXMgWGVuIHB1dHMgaW50byBpdHMgb3duIHBhZ2V0YWJsZXMuICBUaGlzIGlzIHRoZSBob3N0IHBo eXNpY2FsCi0gKiAgIG1lbW9yeSBhZGRyZXNzIHNwYWNlIHdpdGggUkFNLCBNTUlPIGV0Yy4KKyAq ICAgVGhlIHZhbHVlcyBYZW4gcHV0cyBpbnRvIGl0cyBvd24gcGFnZXRhYmxlcywgMm5kIHN0YWdl IHBhZ2V0YWJsZXMgKHdoZXJlCisgKiAgIGhhcmR3YXJlIGFzc2lzdGVkIDJuZCBzdGFnZSB0cmFu c2xhdGlvbiBpcyB1c2VkKSBvciBJT01NVSBwYWdlIHRhYmxlcy4KKyAqICAgVGhpcyBpcyB0aGUg aG9zdCBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcyBzcGFjZSB3aXRoIFJBTSwgTU1JTyBldGMuCiAg KgogICogZ2ZuOiBHdWVzdCBGcmFtZSBOdW1iZXIKICAqICAgVGhlIHZhbHVlcyBhIGd1ZXN0IHB1 dHMgaW4gaXRzIG93biBwYWdldGFibGVzLiAgRm9yIGFuIGF1dG8tdHJhbnNsYXRlZApAQCAtMjYs NiArMjcsMTEgQEAKICAqICAgQSBsaW5lYXIgaWRlYSBvZiBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJl c3Mgc3BhY2UuIEZvciBhbiBhdXRvLXRyYW5zbGF0ZWQKICAqICAgZ3Vlc3QsIHBmbiA9PSBnZm4g d2hpbGUgZm9yIGEgbm9uLXRyYW5zbGF0ZWQgZ3Vlc3QsIHBmbiAhPSBnZm4uCiAgKgorICogYmZu OiBCdXMgRnJhbWUgTnVtYmVyIChkZWZpbml0aW9ucyBpbiBpbmNsdWRlL3hlbi9pb21tdS5oKQor ICogICBUaGUgbGluZWFyIGZyYW1lIG51bWJlcnMgb2YgSU9NTVUgYWRkcmVzcyBzcGFjZS4gQWxs IGluaXRpYXRvcnMgZm9yIGEKKyAqICAgZ2l2ZW4gZG9tYWluIHNoYXJlIGEgc2luZ2xlIElPTU1V IGFkZHJlc3Mgc3BhY2UgYW5kLCBieSBkZWZhdWx0LCBYZW4gd2lsbAorICogICBlbnN1cmUgYmZu ID09IHBmbi4KKyAqCiAgKiBXQVJOSU5HOiBTb21lIG9mIHRoZXNlIHRlcm1zIGhhdmUgY2hhbmdl ZCBvdmVyIHRpbWUgd2hpbGUgb3RoZXJzIGhhdmUgYmVlbgogICogdXNlZCBpbmNvbnNpc3RlbnRs eSwgbWVhbmluZyB0aGF0IGEgbG90IG9mIGV4aXN0aW5nIGNvZGUgZG9lcyBub3QgbWF0Y2ggdGhl CiAgKiBkZWZpbml0aW9ucyBhYm92ZS4gIE5ldyBjb2RlIHNob3VsZCB1c2UgdGhlc2UgdGVybXMg YXMgZGVzY3JpYmVkIGhlcmUsIGFuZAotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==