From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: =?utf-8?q?=5BPATCH_RFC_4/7=5D_xen/x86=3A_Migrate_to_X?= =?utf-8?q?BI_structure?= Date: Sat, 9 Aug 2014 01:04:03 +0200 Message-ID: <1407539046-16910-5-git-send-email-daniel.kiper@oracle.com> References: <1407539046-16910-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XFtDS-0003M2-Hc for xen-devel@lists.xenproject.org; Fri, 08 Aug 2014 23:04:55 +0000 In-Reply-To: <1407539046-16910-1-git-send-email-daniel.kiper@oracle.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: xen-devel@lists.xenproject.org Cc: keir@xen.org, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com, ross.philipson@citrix.com, roy.franz@linaro.org, ning.sun@intel.com, jbeulich@suse.com, qiaowei.ren@intel.com, richard.l.maliszewski@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org V2UgaGF2ZSBhbGwgY29uc3RhbnRzIGFuZCBzdHJ1Y3R1cmVzIGluIHBsYWNlLiBTbywgZmluYWxs eSBicmVhayBtdWx0aWJvb3QgKHYxKQpwcm90b2NvbCBkZXBlbmRlbmN5LiBJdCBtZWFucyB0aGF0 IG1vc3Qgb2YgWGVuIGNvZGUgKGV4Y2x1ZGluZyBwcmVsb2FkZXIpCmNvdWxkIGJlIGJvb3Rsb2Fk ZXIgYWdub3N0aWMgYW5kIGRvZXMgbm90IG5lZWQgYWxtb3N0IGFueSBrbm93bGVkZ2UgYWJvdXQK Ym9vdCBwcm90b2NvbC4gQWRkaXRpb25hbGx5LCB3ZSBhcmUgYWJsZSB0byBwYXNzIGFsbCBib290 IGRhdGEgdG8gX19zdGFydF94ZW4oKQppbiBvbmUgYnVja2V0IHdpdGhvdXQgYW55IHNpZGUgY2hh bm5lbHMuIEkgZG8gbm90IG1lbnRpb24gdGhhdCB3ZSBhcmUgYWxzbwphYmxlIHRvIGVhc2lseSBp ZGVudGlmeSBib290IGRhdGEgaW4gWGVuIGNvZGUuCgpIZXJlIGlzIGJvb3QgZGF0YSBmbG93IGZv ciBsZWdhY3kgQklPUyBwbGF0Zm9ybToKCiAgQklPUyAtPiBHUlVCIC0+IG11bHRpYm9vdFsxMl0q IC0+IF9fcmVsb2MoKSAtPiBNQkQgLT4tXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8KICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0t LS0tLS0tLS08LS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgIC0tLT4gX19pbml0X3hiaSgp IC0+IFhCSV9NQiAtPiBfX3N0YXJ0X3hlbigpIC0+IFhCSQogICAgICAgICAgICAgICAgICAgICAg LwogICAgICAgICAgICAgQklPUyAtPi0vCgogICogbXVsdGlib290MiBpcyBub3QgaW1wbGVtZW50 ZWQgeWV0LiBMb29rIGZvciBpdCBpbiBuZXh0IHBhdGNoLgoKSGVyZSBpcyBib290IGRhdGEgZmxv dyBmb3IgRUZJIHBsYXRmb3JtOgoKICBFRkkgLT4gZWZpX3N0YXJ0KCkgLT4gWEJJX0VGSSAtPiBf X3N0YXJ0X3hlbigpIC0+IFhCSQoKV0FSTklORzogQVJNIGJ1aWxkIGNvdWxkIGJlIGJyb2tlbiBi eSB0aGlzIHBhdGNoLiBXZSBuZWVkIHRvIGFncmVlIFhCSQppbnRlZ3JhdGlvbiBpbnRvIEFSTS4g UGVyc29uYWxseSBJIHRoaW5rIHRoYXQgaXQgaXMgd29ydGggc3RvcmluZyBhbGwKZGF0YSBmcm9t IGFueSBib290bG9hZGVyIGFuZCBwcmVsb2FkZXIgaW4gWEJJIG9uIGFueSBhcmNoaXRlY3R1cmUu IFRoaXMKZ2l2ZSBhIGNoYW5jZSB0byBzaGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBhcmNoaXRlY3R1 cmVzLiBIb3dldmVyLCBldmVyeQphcmNoaXRlY3R1cmUgc2hvdWxkIGRlZmluZSBpdHMgb3duIFhC SSAoaW4gcmVsZXZhbnQgaW5jbHVkZS9hc20gZGlyZWN0b3J5KS4KRGVzcGl0ZSB0aGF0IGl0IGxv b2tzIHRoYXQgc29tZSBwYXJ0cyBvZiBpdCBjb3VsZCBiZSBjb21tb24sIGUuZy4gIG1vZHVsZXMK ZGF0YSwgY29tbWFuZCBsaW5lIGFyZ3VtZW50cywgYm9vdCBsb2FkZXIgbmFtZSwgRUZJIGRhdGEs IGV0Yy4sIGV2ZW4gaWYgdHlwZXMKd291bGQgbm90IGJlIHRoZSBzYW1lLiBTbywgYXMgaXQgd2Fz IHN0YXRlZCBhYm92ZSBhIGxvdCBvZiBjb2RlIGNvdWxkIGJlCnNoYXJlZCBhbW9uZyBhcmNoaXRl Y3R1cmVzLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xl LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvTWFrZWZpbGUgICAgICAgICAgICAgfCAgICAxICsKIHhl bi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUyAgICAgICB8ICAgIDkgKy0KIHhlbi9hcmNoL3g4Ni9i b290L2hlYWQuUyAgICAgICAgICB8ICAgMzEgKystLQogeGVuL2FyY2gveDg2L2Jvb3QvcmVsb2Mu YyAgICAgICAgIHwgIDE1MyArKysrKysrKysrKystLS0tLQogeGVuL2FyY2gveDg2L2Jvb3QveDg2 XzY0LlMgICAgICAgIHwgICAxMCArLQogeGVuL2FyY2gveDg2L2RtaV9zY2FuLmMgICAgICAgICAg IHwgICAgNyArLQogeGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jICAgICAgIHwgICAyNCArLS0K IHhlbi9hcmNoL3g4Ni9lZmkvYm9vdC5jICAgICAgICAgICB8ICAyMTIgKysrKysrKysrKystLS0t LS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9lZmkvZWZpLmggICAgICAgICAgICB8ICAgIDMgLQogeGVu L2FyY2gveDg2L2VmaS9ydW50aW1lLmMgICAgICAgIHwgICA1MiArKysrLS0KIHhlbi9hcmNoL3g4 Ni9pbml0X3hiaS5jICAgICAgICAgICB8ICAyNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysr CiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMgICAgICAgICAgfCAgIDM5ICsrLS0tCiB4ZW4vYXJj aC94ODYvbXBwYXJzZS5jICAgICAgICAgICAgfCAgICA5ICstCiB4ZW4vYXJjaC94ODYvcGxhdGZv cm1faHlwZXJjYWxsLmMgfCAgIDE5ICstLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAg ICAgIHwgIDM0MCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJj aC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgfCAgICA1ICstCiB4ZW4vZHJpdmVycy9hY3BpL29z bC5jICAgICAgICAgICAgfCAgICA5ICstCiB4ZW4vZHJpdmVycy92aWRlby92ZXNhLmMgICAgICAg ICAgfCAgICA1ICstCiB4ZW4vZHJpdmVycy92aWRlby92Z2EuYyAgICAgICAgICAgfCAgIDE2ICst CiB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oICAgICAgfCAgICAyIC0KIHhlbi9pbmNsdWRl L2FzbS14ODYvZTgyMC5oICAgICAgICB8ICAgIDggLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9lZGQu aCAgICAgICAgIHwgICAgNiAtCiB4ZW4vaW5jbHVkZS9hc20teDg2L3NldHVwLmggICAgICAgfCAg IDEwICstCiB4ZW4vaW5jbHVkZS94ZW4vZWZpLmggICAgICAgICAgICAgfCAgIDEwIC0tCiB4ZW4v aW5jbHVkZS94ZW4vdmdhLmggICAgICAgICAgICAgfCAgICA0IC0KIHhlbi9pbmNsdWRlL3hzbS94 c20uaCAgICAgICAgICAgICB8ICAgMTQgKy0KIHhlbi94c20veHNtX2NvcmUuYyAgICAgICAgICAg ICAgICB8ICAgIDYgKy0KIHhlbi94c20veHNtX3BvbGljeS5jICAgICAgICAgICAgICB8ICAgMTQg Ky0KIDI4IGZpbGVzIGNoYW5nZWQsIDcyMyBpbnNlcnRpb25zKCspLCA1NDkgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L2luaXRfeGJpLmMKCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggYzFl MjQ0ZC4uYmIyMjY0YSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL3hl bi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAtNDIsNiArNDIsNyBAQCBvYmoteSArPSBudW1hLm8KIG9i ai15ICs9IHBjaS5vCiBvYmoteSArPSBwZXJjcHUubwogb2JqLXkgKz0gcGh5c2Rldi5vCitvYmot eSArPSBpbml0X3hiaS5vCiBvYmoteSArPSBzZXR1cC5vCiBvYmoteSArPSBzaHV0ZG93bi5vCiBv YmoteSArPSBzbXAubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5TIGIv eGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5TCmluZGV4IDAwNjg3ZWIuLjczMTYwMTEgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUworKysgYi94ZW4vYXJjaC94ODYvYm9v dC9jbWRsaW5lLlMKQEAgLTE1MiwxNyArMTUyLDE0IEBAIGNtZGxpbmVfcGFyc2VfZWFybHk6CiAg ICAgICAgIHB1c2hhCiAKICAgICAgICAgLyogQmFpbCBpZiB0aGVyZSBpcyBubyBjb21tYW5kIGxp bmUgdG8gcGFyc2UuICovCi0gICAgICAgIG1vdiAgICAgc3ltX3BoeXMobXVsdGlib290X3B0ciks JWVieAotICAgICAgICBtb3YgICAgIE1CX2ZsYWdzKCVlYngpLCVlYXgKLSAgICAgICAgdGVzdCAg ICAkNCwlYWwKLSAgICAgICAganogICAgICAuTGNtZGxpbmVfZXhpdAotICAgICAgICBtb3YgICAg IE1CX2NtZGxpbmUoJWVieCksJWVheAorICAgICAgICBtb3YgICAgIHN5bV9waHlzKG1iZF9wdHIp LCVlYngKKyAgICAgICAgbW92ICAgICBNQkRfY21kbGluZSglZWJ4KSwlZWF4CiAgICAgICAgIHRl c3QgICAgJWVheCwlZWF4CiAgICAgICAgIGp6ICAgICAgLkxjbWRsaW5lX2V4aXQKIAogICAgICAg ICAvKiBDaGVjayBmb3IgJ25vLXJlYWwtbW9kZScgY29tbWFuZC1saW5lIG9wdGlvbi4gKi8KICAg ICAgICAgcHVzaGwgICAkc3ltX3BoeXMoLkxub19ybV9vcHQpCi0gICAgICAgIHB1c2hsICAgTUJf Y21kbGluZSglZWJ4KQorICAgICAgICBwdXNobCAgIE1CRF9jbWRsaW5lKCVlYngpCiAgICAgICAg IGNhbGwgICAgLkxmaW5kX29wdGlvbgogICAgICAgICB0ZXN0ICAgICVlYXgsJWVheAogICAgICAg ICBzZXRueiAgICVhbApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIGIveGVu L2FyY2gveDg2L2Jvb3QvaGVhZC5TCmluZGV4IDEwZWNmNTEuLjc5YmNlM2MgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMK QEAgLTg2LDE0ICs4NiwxNCBAQCBfX3N0YXJ0OgogICAgICAgICBqbmUgICAgIG5vdF9tdWx0aWJv b3QKIAogICAgICAgICAvKiBTZXQgdXAgdHJhbXBvbGluZSBzZWdtZW50IDY0ayBiZWxvdyBFQkRB ICovCi0gICAgICAgIG1vdnp3bCAgMHg0MGUsJWVheCAgICAgICAgICAvKiBFQkRBIHNlZ21lbnQg Ki8KLSAgICAgICAgY21wICAgICAkMHhhMDAwLCVlYXggICAgICAgIC8qIHNhbml0eSBjaGVjayAo aGlnaCkgKi8KKyAgICAgICAgbW92endsICAweDQwZSwlZWN4ICAgICAgICAgIC8qIEVCREEgc2Vn bWVudCAqLworICAgICAgICBjbXAgICAgICQweGEwMDAsJWVjeCAgICAgICAgLyogc2FuaXR5IGNo ZWNrIChoaWdoKSAqLwogICAgICAgICBqYWUgICAgIDBmCi0gICAgICAgIGNtcCAgICAgJDB4NDAw MCwlZWF4ICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKGxvdykgKi8KKyAgICAgICAgY21wICAgICAk MHg0MDAwLCVlY3ggICAgICAgIC8qIHNhbml0eSBjaGVjayAobG93KSAqLwogICAgICAgICBqYWUg ICAgIDFmCiAwOgotICAgICAgICBtb3Z6d2wgIDB4NDEzLCVlYXggICAgICAgICAgLyogdXNlIGJh c2UgbWVtb3J5IHNpemUgb24gZmFpbHVyZSAqLwotICAgICAgICBzaGwgICAgICQxMC00LCVlYXgK KyAgICAgICAgbW92endsICAweDQxMywlZWN4ICAgICAgICAgIC8qIHVzZSBiYXNlIG1lbW9yeSBz aXplIG9uIGZhaWx1cmUgKi8KKyAgICAgICAgc2hsICAgICAkMTAtNCwlZWN4CiAxOgogICAgICAg ICAvKgogICAgICAgICAgKiBDb21wYXJlIHRoZSB2YWx1ZSBpbiB0aGUgQkRBIHdpdGggdGhlIGlu Zm9ybWF0aW9uIGZyb20gdGhlCkBAIC0xMDUsMjIgKzEwNSwyMyBAQCBfX3N0YXJ0OgogICAgICAg ICBjbXAgICAgICQweDEwMCwlZWR4ICAgICAgICAgLyogaXMgdGhlIG11bHRpYm9vdCB2YWx1ZSB0 b28gc21hbGw/ICovCiAgICAgICAgIGpiICAgICAgMmYgICAgICAgICAgICAgICAgICAvKiBpZiBz bywgZG8gbm90IHVzZSBpdCAqLwogICAgICAgICBzaGwgICAgICQxMC00LCVlZHgKLSAgICAgICAg Y21wICAgICAlZWF4LCVlZHggICAgICAgICAgIC8qIGNvbXBhcmUgd2l0aCBCREEgdmFsdWUgKi8K LSAgICAgICAgY21vdmIgICAlZWR4LCVlYXggICAgICAgICAgIC8qIGFuZCB1c2UgdGhlIHNtYWxs ZXIgKi8KKyAgICAgICAgY21wICAgICAlZWN4LCVlZHggICAgICAgICAgIC8qIGNvbXBhcmUgd2l0 aCBCREEgdmFsdWUgKi8KKyAgICAgICAgY21vdmIgICAlZWR4LCVlY3ggICAgICAgICAgIC8qIGFu ZCB1c2UgdGhlIHNtYWxsZXIgKi8KIAogMjogICAgICAvKiBSZXNlcnZlIDY0a2IgZm9yIHRoZSB0 cmFtcG9saW5lICovCi0gICAgICAgIHN1YiAgICAgJDB4MTAwMCwlZWF4CisgICAgICAgIHN1YiAg ICAgJDB4MTAwMCwlZWN4CiAKICAgICAgICAgLyogRnJvbSBhcmNoL3g4Ni9zbXBib290LmM6IHN0 YXJ0X2VpcCBoYWQgYmV0dGVyIGJlIHBhZ2UtYWxpZ25lZCEgKi8KLSAgICAgICAgeG9yICAgICAl YWwsICVhbAotICAgICAgICBzaGwgICAgICQ0LCAlZWF4Ci0gICAgICAgIG1vdiAgICAgJWVheCxz eW1fcGh5cyh0cmFtcG9saW5lX3BoeXMpCisgICAgICAgIHhvciAgICAgJWNsLCAlY2wKKyAgICAg ICAgc2hsICAgICAkNCwgJWVjeAorICAgICAgICBtb3YgICAgICVlY3gsc3ltX3BoeXModHJhbXBv bGluZV9waHlzKQogCi0gICAgICAgIC8qIFNhdmUgdGhlIE11bHRpYm9vdCBpbmZvIHN0cnVjdCAo YWZ0ZXIgcmVsb2NhdGlvbikgZm9yIGxhdGVyIHVzZS4gKi8KKyAgICAgICAgLyogU2F2ZSB0aGUg TXVsdGlib290IGRhdGEgKGFmdGVyIHJlbG9jYXRpb24pIGZvciBsYXRlciB1c2UuICovCiAgICAg ICAgIG1vdiAgICAgJHN5bV9waHlzKGNwdTBfc3RhY2spKzEwMjQsJWVzcAotICAgICAgICBwdXNo ICAgICVlYngKLSAgICAgICAgY2FsbCAgICByZWxvYwotICAgICAgICBtb3YgICAgICVlYXgsc3lt X3BoeXMobXVsdGlib290X3B0cikKKyAgICAgICAgcHVzaCAgICAlZWF4ICAgICAgICAgICAgICAg IC8qIE11bHRpYm9vdCBtYWdpYyAqLworICAgICAgICBwdXNoICAgICVlYnggICAgICAgICAgICAg ICAgLyogTXVsdGlib290IGluZm9ybWF0aW9uIGFkZHJlc3MgKi8KKyAgICAgICAgY2FsbCAgICBy ZWxvYyAgICAgICAgICAgICAgIC8qICVlY3ggY29udGFpbnMgdHJhbXBvbGluZSBhZGRyZXNzICov CisgICAgICAgIG1vdiAgICAgJWVheCxzeW1fcGh5cyhtYmRfcHRyKQogCiAgICAgICAgIC8qIElu aXRpYWxpemUgQlNTIChubyBuYXN0eSBzdXJwcmlzZXMhKSAqLwogICAgICAgICBtb3YgICAgICRz eW1fcGh5cyhfX2Jzc19zdGFydCksJWVkaQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3Qv cmVsb2MuYyBiL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKaW5kZXggZmEwZmI2Yi4uMjlmNDg4 NyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYworKysgYi94ZW4vYXJjaC94 ODYvYm9vdC9yZWxvYy5jCkBAIC0xLDQwICsxLDU2IEBACi0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisvKgogICogcmVsb2MuYwotICogCisgKgogICogMzItYml0IGZsYXQgbWVtb3J5LW1hcCByb3V0 aW5lcyBmb3IgcmVsb2NhdGluZyBNdWx0aWJvb3Qgc3RydWN0dXJlcwogICogYW5kIG1vZHVsZXMu IFRoaXMgaXMgbW9zdCBlYXNpbHkgZG9uZSBlYXJseSB3aXRoIHBhZ2luZyBkaXNhYmxlZC4KLSAq IAorICoKICAqIENvcHlyaWdodCAoYykgMjAwOSwgQ2l0cml4IFN5c3RlbXMsIEluYy4KLSAqIAor ICogQ29weXJpZ2h0IChjKSAyMDEzLCAyMDE0IE9yYWNsZSBDby4sIERhbmllbCBLaXBlcgorICoK ICAqIEF1dGhvcnM6CiAgKiAgICBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgorICogICAgRGFu aWVsIEtpcGVyCiAgKi8KIAotLyogZW50ZXJlZCB3aXRoICVlYXggPSBCT09UX1RSQU1QT0xJTkUg Ki8KK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2 OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n IHU2NDsKKworI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUveGVuL211bHRpYm9vdC5oIgorI2lu Y2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvYXNtL21iZC5oIgorCisvKgorICogX19IRVJFX18gSVMg VFJVRSBFTlRSWSBQT0lOVCEhIQorICoKKyAqIEl0IGlzIGVudGVyZWQgZnJvbSB4ZW4vYXJjaC94 ODYvYm9vdC9oZWFkLlMgd2l0aDoKKyAqICAgLSAlZWF4ID0gTVVMVElCT09UX01BR0lDLAorICog ICAtICVlYnggPSBNVUxUSUJPT1RfSU5GT1JNQVRJT05fQUREUkVTUywKKyAqICAgLSAlZWN4ID0g Qk9PVF9UUkFNUE9MSU5FLgorICovCiBhc20gKAogICAgICIgICAgLnRleHQgICAgICAgICAgICAg ICAgICAgICAgICAgXG4iCiAgICAgIiAgICAuZ2xvYmwgX3N0YXJ0ICAgICAgICAgICAgICAgICBc biIKICAgICAiX3N0YXJ0OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgogICAgICIgICAg Y2FsbCAxZiAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAgICAgIjE6ICBwb3AgICVlYnggICAg ICAgICAgICAgICAgICAgICBcbiIKLSAgICAiICAgIG1vdiAgJWVheCxhbGxvYy0xYiglZWJ4KSAg ICAgIFxuIgotICAgICIgICAgam1wICByZWxvYyAgICAgICAgICAgICAgICAgICAgXG4iCisgICAg IiAgICBtb3YgICVlY3gsYWxsb2MtMWIoJWVieCkgICAgICBcbiIKKyAgICAiICAgIGptcCAgX19y ZWxvYyAgICAgICAgICAgICAgICAgIFxuIgogICAgICk7CiAKLS8qIFRoaXMgaXMgb3VyIGRhdGEu ICBCZWNhdXNlIHRoZSBjb2RlIG11c3QgYmUgcmVsb2NhdGFibGUsIG5vIEJTUyBpcwotICogYWxs b3dlZC4gIEFsbCBkYXRhIGlzIGFjY2Vzc2VkIFBDLXJlbGF0aXZlIHdpdGggaW5saW5lIGFzc2Vt Ymx5LgorLyoKKyAqIFRoaXMgaXMgb3VyIGRhdGEuIEJlY2F1c2UgdGhlIGNvZGUgbXVzdCBiZSBy ZWxvY2F0YWJsZSwgbm8gQlNTIGlzCisgKiBhbGxvd2VkLiBBbGwgZGF0YSBpcyBhY2Nlc3NlZCBQ Qy1yZWxhdGl2ZSB3aXRoIGlubGluZSBhc3NlbWJseS4KICAqLwogYXNtICgKICAgICAiYWxsb2M6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgogICAgICIgICAgLmxvbmcgMCAgICAgICAg ICAgICAgICAgICAgICAgXG4iCiAgICAgKTsKIAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMyOwot I2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUveGVuL211bHRpYm9vdC5oIgotCi1zdGF0aWMgdm9p ZCAqcmVsb2NfbWJpX3N0cnVjdCh2b2lkICpvbGQsIHVuc2lnbmVkIGludCBieXRlcykKK3N0YXRp YyB1MzIgYWxsb2Nfc3RydWN0KHUzMiBieXRlcykKIHsKLSAgICB2b2lkICpuZXc7CisgICAgdTMy IHM7CisKICAgICBhc20oCiAgICAgIiAgICBjYWxsIDFmICAgICAgICAgICAgICAgICAgICAgIFxu IgogICAgICIxOiAgcG9wICAlJWVkeCAgICAgICAgICAgICAgICAgICBcbiIKQEAgLTQyLDU4ICs1 OCwxMDUgQEAgc3RhdGljIHZvaWQgKnJlbG9jX21iaV9zdHJ1Y3Qodm9pZCAqb2xkLCB1bnNpZ25l ZCBpbnQgYnl0ZXMpCiAgICAgIiAgICBzdWIgICUxLCUwICAgICAgICAgICAgICAgICAgIFxuIgog ICAgICIgICAgYW5kICAkfjE1LCUwICAgICAgICAgICAgICAgICBcbiIKICAgICAiICAgIG1vdiAg JTAsYWxsb2MtMWIoJSVlZHgpICAgICAgXG4iCi0gICAgIiAgICBtb3YgICUwLCUlZWRpICAgICAg ICAgICAgICAgIFxuIgorICAgICAgIDogIj0mciIgKHMpIDogInIiIChieXRlcykgOiAiZWR4Iik7 CisKKyAgICByZXR1cm4gczsKK30KKworc3RhdGljIHZvaWQgemVyb19zdHJ1Y3QodTMyIHMsIHUz MiBieXRlcykKK3sKKyAgICBhc20gdm9sYXRpbGUoCisgICAgIiAgICBjbGQgICAgICAgICAgICAg ICAgICAgICAgICAgIFxuIgorICAgICIgICAgeG9yICAlJWVheCwlJWVheCAgICAgICAgICAgICBc biIKKyAgICAiICAgIHJlcCAgc3Rvc2IgICAgICAgICAgICAgICAgICAgXG4iCisgICAgICAgOiAi K0QiIChzKSwgIitjIiAoYnl0ZXMpIDogOiAiZWF4Iik7Cit9CisKK3N0YXRpYyB1MzIgY29weV9z dHJ1Y3QodTMyIHNyYywgdTMyIGJ5dGVzKQoreworICAgIHUzMiBkc3Q7CisKKyAgICBkc3QgPSBh bGxvY19zdHJ1Y3QoYnl0ZXMpOworCisgICAgYXNtIHZvbGF0aWxlKAorICAgICIgICAgY2xkICAg ICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAiICAgIG1vdiAgJTIsJSVlZGkgICAgICAg ICAgICAgICAgXG4iCiAgICAgIiAgICByZXAgIG1vdnNiICAgICAgICAgICAgICAgICAgIFxuIgot ICAgICAgIDogIj0mciIgKG5ldyksICIrYyIgKGJ5dGVzKSwgIitTIiAob2xkKQotCTogOiAiZWR4 IiwgImVkaSIpOwotICAgIHJldHVybiBuZXc7CisgICAgICAgOiAiK1MiIChzcmMpLCAiK2MiIChi eXRlcykgOiAiciIgKGRzdCkgOiAiZWRpIik7CisKKyAgICByZXR1cm4gZHN0OwogfQogCi1zdGF0 aWMgY2hhciAqcmVsb2NfbWJpX3N0cmluZyhjaGFyICpvbGQpCitzdGF0aWMgdTMyIGNvcHlfc3Ry aW5nKHUzMiBzcmMpCiB7CiAgICAgY2hhciAqcDsKLSAgICBmb3IgKCBwID0gb2xkOyAqcCAhPSAn XDAnOyBwKysgKQorCisgICAgaWYgKCBzcmMgPT0gMCApCisgICAgICAgIHJldHVybiAwOworCisg ICAgZm9yICggcCA9IChjaGFyICopc3JjOyAqcCAhPSAnXDAnOyBwKysgKQogICAgICAgICBjb250 aW51ZTsKLSAgICByZXR1cm4gcmVsb2NfbWJpX3N0cnVjdChvbGQsIHAgLSBvbGQgKyAxKTsKKwor ICAgIHJldHVybiBjb3B5X3N0cnVjdChzcmMsIHAgLSAoY2hhciAqKXNyYyArIDEpOwogfQogCi1t dWx0aWJvb3RfaW5mb190ICpyZWxvYyhtdWx0aWJvb3RfaW5mb190ICptYmlfb2xkKQorc3RhdGlj IG1iZF90ICptYl9tYmQobWJkX3QgKm1iZCwgbXVsdGlib290X2luZm9fdCAqbWJpKQogewotICAg IG11bHRpYm9vdF9pbmZvX3QgKm1iaSA9IHJlbG9jX21iaV9zdHJ1Y3QobWJpX29sZCwgc2l6ZW9m KCptYmkpKTsKICAgICBpbnQgaTsKKyAgICBtb2R1bGVfdCAqbWJpX21vZHM7CisgICAgYm9vdF9t b2R1bGVfdCAqbWJkX21vZHM7CisKKyAgICBpZiAoIG1iaS0+ZmxhZ3MgJiBNQklfTE9BREVSTkFN RSApCisgICAgICAgIG1iZC0+Ym9vdF9sb2FkZXJfbmFtZSA9IGNvcHlfc3RyaW5nKG1iaS0+Ym9v dF9sb2FkZXJfbmFtZSk7CiAKICAgICBpZiAoIG1iaS0+ZmxhZ3MgJiBNQklfQ01ETElORSApCi0g ICAgICAgIG1iaS0+Y21kbGluZSA9ICh1MzIpcmVsb2NfbWJpX3N0cmluZygoY2hhciAqKW1iaS0+ Y21kbGluZSk7CisgICAgICAgIG1iZC0+Y21kbGluZSA9IGNvcHlfc3RyaW5nKG1iaS0+Y21kbGlu ZSk7CisKKyAgICBpZiAoIG1iaS0+ZmxhZ3MgJiBNQklfTUVNTElNSVRTICkKKyAgICB7CisgICAg ICAgIG1iZC0+bWVtX2xvd2VyID0gbWJpLT5tZW1fbG93ZXI7CisgICAgICAgIG1iZC0+bWVtX3Vw cGVyID0gbWJpLT5tZW1fdXBwZXI7CisgICAgfQorCisgICAgaWYgKCBtYmktPmZsYWdzICYgTUJJ X01FTU1BUCApCisgICAgeworICAgICAgICBtYmQtPm1tYXBfc2l6ZSA9IG1iaS0+bW1hcF9sZW5n dGg7CisgICAgICAgIG1iZC0+bW1hcCA9IGNvcHlfc3RydWN0KG1iaS0+bW1hcF9hZGRyLCBtYmkt Pm1tYXBfbGVuZ3RoKTsKKyAgICB9CiAKICAgICBpZiAoIG1iaS0+ZmxhZ3MgJiBNQklfTU9EVUxF UyApCiAgICAgewotICAgICAgICBtb2R1bGVfdCAqbW9kcyA9IHJlbG9jX21iaV9zdHJ1Y3QoCi0g ICAgICAgICAgICAobW9kdWxlX3QgKiltYmktPm1vZHNfYWRkciwgbWJpLT5tb2RzX2NvdW50ICog c2l6ZW9mKG1vZHVsZV90KSk7CisgICAgICAgIG1iZC0+bW9kc19uciA9IG1iaS0+bW9kc19jb3Vu dDsKKyAgICAgICAgbWJkLT5tb2RzID0gYWxsb2Nfc3RydWN0KG1iaS0+bW9kc19jb3VudCAqIHNp emVvZihib290X21vZHVsZV90KSk7CiAKLSAgICAgICAgbWJpLT5tb2RzX2FkZHIgPSAodTMyKW1v ZHM7CisgICAgICAgIG1iaV9tb2RzID0gKG1vZHVsZV90ICopbWJpLT5tb2RzX2FkZHI7CisgICAg ICAgIG1iZF9tb2RzID0gKGJvb3RfbW9kdWxlX3QgKiltYmQtPm1vZHM7CiAKICAgICAgICAgZm9y ICggaSA9IDA7IGkgPCBtYmktPm1vZHNfY291bnQ7IGkrKyApCiAgICAgICAgIHsKLSAgICAgICAg ICAgIGlmICggbW9kc1tpXS5zdHJpbmcgKQotICAgICAgICAgICAgICAgIG1vZHNbaV0uc3RyaW5n ID0gKHUzMilyZWxvY19tYmlfc3RyaW5nKChjaGFyICopbW9kc1tpXS5zdHJpbmcpOworICAgICAg ICAgICAgbWJkX21vZHNbaV0uc3RhcnQgPSBtYmlfbW9kc1tpXS5tb2Rfc3RhcnQ7CisgICAgICAg ICAgICBtYmRfbW9kc1tpXS5lbmQgPSBtYmlfbW9kc1tpXS5tb2RfZW5kOworICAgICAgICAgICAg bWJkX21vZHNbaV0uY21kbGluZSA9IGNvcHlfc3RyaW5nKG1iaV9tb2RzW2ldLnN0cmluZyk7Cisg ICAgICAgICAgICBtYmRfbW9kc1tpXS5yZWxvY2F0ZWQgPSAwOwogICAgICAgICB9CiAgICAgfQog Ci0gICAgaWYgKCBtYmktPmZsYWdzICYgTUJJX01FTU1BUCApCi0gICAgICAgIG1iaS0+bW1hcF9h ZGRyID0gKHUzMilyZWxvY19tYmlfc3RydWN0KAotICAgICAgICAgICAgKG1lbW9yeV9tYXBfdCAq KW1iaS0+bW1hcF9hZGRyLCBtYmktPm1tYXBfbGVuZ3RoKTsKKyAgICByZXR1cm4gbWJkOworfQog Ci0gICAgaWYgKCBtYmktPmZsYWdzICYgTUJJX0xPQURFUk5BTUUgKQotICAgICAgICBtYmktPmJv b3RfbG9hZGVyX25hbWUgPSAodTMyKXJlbG9jX21iaV9zdHJpbmcoCi0gICAgICAgICAgICAoY2hh ciAqKW1iaS0+Ym9vdF9sb2FkZXJfbmFtZSk7Ci0KLSAgICAvKiBNYXNrIGZlYXR1cmVzIHdlIGRv bid0IHVuZGVyc3RhbmQgb3IgZG9uJ3QgcmVsb2NhdGUuICovCi0gICAgbWJpLT5mbGFncyAmPSAo TUJJX01FTUxJTUlUUyB8Ci0gICAgICAgICAgICAgICAgICAgTUJJX0JPT1RERVYgfAotICAgICAg ICAgICAgICAgICAgIE1CSV9DTURMSU5FIHwKLSAgICAgICAgICAgICAgICAgICBNQklfTU9EVUxF UyB8Ci0gICAgICAgICAgICAgICAgICAgTUJJX01FTU1BUCB8Ci0gICAgICAgICAgICAgICAgICAg TUJJX0xPQURFUk5BTUUpOwotCi0gICAgcmV0dXJuIG1iaTsKKy8qCisgKiBfX1RISVNfXyBJUyBO T1QgRU5UUlkgUE9JTlQhISEKKyAqIFBMRUFTRSBMT09LIEFUIFRIRSBCRUdJTk5JTkcgT0YgVEhJ UyBGSUxFISEhCisgKgorICogSXQgY291bGQgYmUgYSBzdGF0aWMgYnV0IHRoZW4gY29tcGlsZXIg Y29tcGxhaW5zOgorICogZXJyb3I6IOKAmF9fcmVsb2PigJkgZGVmaW5lZCBidXQgbm90IHVzZWQu CisgKi8KK21iZF90ICpfX3JlbG9jKHZvaWQgKm1iaSwgdTMyIG1iX21hZ2ljKQoreworICAgIG1i ZF90ICptYmQ7CisKKyAgICBtYmQgPSAobWJkX3QgKilhbGxvY19zdHJ1Y3Qoc2l6ZW9mKG1iZF90 KSk7CisgICAgemVyb19zdHJ1Y3QoKHUzMiltYmQsIHNpemVvZihtYmRfdCkpOworCisgICAgcmV0 dXJuIG1iX21iZChtYmQsIG1iaSk7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC94 ODZfNjQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TCmluZGV4IGJmYmFmZDIuLmVjMzlk MzggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TCisrKyBiL3hlbi9hcmNo L3g4Ni9ib290L3g4Nl82NC5TCkBAIC0yOSw4ICsyOSwxMiBAQAogICAgICAgICB0ZXN0ICAgICVl YngsJWVieAogICAgICAgICBqbnogICAgIHN0YXJ0X3NlY29uZGFyeQogCi0gICAgICAgIC8qIFBh c3Mgb2ZmIHRoZSBNdWx0aWJvb3QgaW5mbyBzdHJ1Y3R1cmUgdG8gQyBsYW5kLiAqLwotICAgICAg ICBtb3YgICAgIG11bHRpYm9vdF9wdHIoJXJpcCksJWVkaQorICAgICAgICAvKiBJbml0IFhlbiBC b290IEluZm8uICovCisgICAgICAgIG1vdiAgICAgbWJkX3B0ciglcmlwKSwlZWRpCisgICAgICAg IGNhbGwgICAgX19pbml0X3hiaQorCisgICAgICAgIC8qIFBhc3Mgb2ZmIHRoZSBYZW4gQm9vdCBJ bmZvIHRvIEMgbGFuZC4gKi8KKyAgICAgICAgbW92cSAgICAlcmF4LCVyZGkKICAgICAgICAgY2Fs bCAgICBfX3N0YXJ0X3hlbgogICAgICAgICB1ZDIgICAgIC8qIEZvcmNlIGEgcGFuaWMgKGludmFs aWQgb3Bjb2RlKS4gKi8KIApAQCAtMzgsNyArNDIsNyBAQAogCiAgICAgICAgIC5kYXRhCiAgICAg ICAgIC5hbGlnbiA4Ci1tdWx0aWJvb3RfcHRyOgorbWJkX3B0cjoKICAgICAgICAgLmxvbmcgICAw CiAKICAgICAgICAgLndvcmQgICAwCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG1pX3NjYW4u YyBiL3hlbi9hcmNoL3g4Ni9kbWlfc2Nhbi5jCmluZGV4IDUwMDEzM2EuLmNkODkzNjAgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kbWlfc2Nhbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kbWlfc2Nh bi5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8eGVuL2VmaS5oPgogI2luY2x1ZGUgPHhl bi9wY2kuaD4KICNpbmNsdWRlIDx4ZW4vcGNpX3JlZ3MuaD4KKyNpbmNsdWRlIDxhc20veGJpLmg+ CiAKICNkZWZpbmUgYnRfaW9yZW1hcChiLGwpICAoKHZvaWQgKilfX2FjcGlfbWFwX3RhYmxlKGIs bCkpCiAjZGVmaW5lIGJ0X2lvdW5tYXAoYixsKSAgKCh2b2lkKTApCkBAIC0yMTUsMTAgKzIxNiwx MCBAQCBzdGF0aWMgaW50IF9faW5pdCBkbWlfZWZpX2l0ZXJhdGUodm9pZCAoKmRlY29kZSkoc3Ry dWN0IGRtaV9oZWFkZXIgKikpCiAJY29uc3Qgc3RydWN0IHNtYmlvc19lcHMgX19pb21lbSAqcDsK IAlpbnQgcmV0ID0gLTE7CiAKLQlpZiAoZWZpLnNtYmlvcyA9PSBFRklfSU5WQUxJRF9UQUJMRV9B RERSKQorCWlmICh4YmktPnNtYmlvcyA9PSBFRklfSU5WQUxJRF9UQUJMRV9BRERSKQogCQlyZXR1 cm4gLTE7CiAKLQlwID0gYnRfaW9yZW1hcChlZmkuc21iaW9zLCBzaXplb2YoZXBzKSk7CisJcCA9 IGJ0X2lvcmVtYXAoeGJpLT5zbWJpb3MsIHNpemVvZihlcHMpKTsKIAlpZiAoIXApCiAJCXJldHVy biAtMTsKIAltZW1jcHlfZnJvbWlvKCZlcHMsIHAsIHNpemVvZihlcHMpKTsKQEAgLTIyNyw3ICsy MjgsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBkbWlfZWZpX2l0ZXJhdGUodm9pZCAoKmRlY29kZSko c3RydWN0IGRtaV9oZWFkZXIgKikpCiAJaWYgKG1lbWNtcChlcHMuYW5jaG9yLCAiX1NNXyIsIDQp KQogCQlyZXR1cm4gLTE7CiAKLQlwID0gYnRfaW9yZW1hcChlZmkuc21iaW9zLCBlcHMubGVuZ3Ro KTsKKwlwID0gYnRfaW9yZW1hcCh4YmktPnNtYmlvcywgZXBzLmxlbmd0aCk7CiAJaWYgKCFwKQog CQlyZXR1cm4gLTE7CiAJaWYgKGRtaV9jaGVja3N1bShwLCBlcHMubGVuZ3RoKSAmJgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gveDg2L2RvbWFpbl9i dWlsZC5jCmluZGV4IGQ0NDczYzEuLmUzNTI2MGIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9k b21haW5fYnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKQEAgLTc1MSw5 ICs3NTEsOSBAQCBzdGF0aWMgX19pbml0IHZvaWQgc2V0dXBfcHZfcGh5c21hcChzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIHBndGJsX3BmbiwKIAogaW50IF9faW5pdCBjb25zdHJ1Y3Rf ZG9tMCgKICAgICBzdHJ1Y3QgZG9tYWluICpkLAotICAgIGNvbnN0IG1vZHVsZV90ICppbWFnZSwg dW5zaWduZWQgbG9uZyBpbWFnZV9oZWFkcm9vbSwKLSAgICBtb2R1bGVfdCAqaW5pdHJkLAotICAg IHZvaWQgKigqYm9vdHN0cmFwX21hcCkoY29uc3QgbW9kdWxlX3QgKiksCisgICAgY29uc3QgYm9v dF9tb2R1bGVfdCAqaW1hZ2UsIHVuc2lnbmVkIGxvbmcgaW1hZ2VfaGVhZHJvb20sCisgICAgYm9v dF9tb2R1bGVfdCAqaW5pdHJkLAorICAgIHZvaWQgKigqYm9vdHN0cmFwX21hcCkoY29uc3QgYm9v dF9tb2R1bGVfdCAqKSwKICAgICBjaGFyICpjbWRsaW5lKQogewogICAgIGludCBpLCBjcHUsIHJj LCBjb21wYXRpYmxlLCBjb21wYXQzMiwgb3JkZXIsIG1hY2hpbmU7CkBAIC03NzAsOSArNzcwLDkg QEAgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMCgKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGQtPnZj cHVbMF07CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgIGNoYXIgKmltYWdlX2Jh c2UgPSBib290c3RyYXBfbWFwKGltYWdlKTsKLSAgICB1bnNpZ25lZCBsb25nIGltYWdlX2xlbiA9 IGltYWdlLT5tb2RfZW5kOworICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2VfbGVuID0gaW1hZ2UtPmVu ZDsKICAgICBjaGFyICppbWFnZV9zdGFydCA9IGltYWdlX2Jhc2UgKyBpbWFnZV9oZWFkcm9vbTsK LSAgICB1bnNpZ25lZCBsb25nIGluaXRyZF9sZW4gPSBpbml0cmQgPyBpbml0cmQtPm1vZF9lbmQg OiAwOworICAgIHVuc2lnbmVkIGxvbmcgaW5pdHJkX2xlbiA9IGluaXRyZCA/IGluaXRyZC0+ZW5k IDogMDsKICAgICBsNF9wZ2VudHJ5X3QgKmw0dGFiID0gTlVMTCwgKmw0c3RhcnQgPSBOVUxMOwog ICAgIGwzX3BnZW50cnlfdCAqbDN0YWIgPSBOVUxMLCAqbDNzdGFydCA9IE5VTEw7CiAgICAgbDJf cGdlbnRyeV90ICpsMnRhYiA9IE5VTEwsICpsMnN0YXJ0ID0gTlVMTDsKQEAgLTk4Nyw3ICs5ODcs NyBAQCBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wKAogICAgICAgICBpbml0cmRfcGZuID0gdmlu aXRyZF9zdGFydCA/CiAgICAgICAgICAgICAgICAgICAgICAodmluaXRyZF9zdGFydCAtIHZfc3Rh cnQpID4+IFBBR0VfU0hJRlQgOgogICAgICAgICAgICAgICAgICAgICAgZC0+dG90X3BhZ2VzOwot ICAgICAgICBpbml0cmRfbWZuID0gbWZuID0gaW5pdHJkLT5tb2Rfc3RhcnQ7CisgICAgICAgIGlu aXRyZF9tZm4gPSBtZm4gPSBpbml0cmQtPnN0YXJ0OwogICAgICAgICBjb3VudCA9IFBGTl9VUChp bml0cmRfbGVuKTsKICAgICAgICAgaWYgKCBkLT5hcmNoLnBoeXNhZGRyX2JpdHNpemUgJiYKICAg ICAgICAgICAgICAoKG1mbiArIGNvdW50IC0gMSkgPj4gKGQtPmFyY2gucGh5c2FkZHJfYml0c2l6 ZSAtIFBBR0VfU0hJRlQpKSApCkBAIC0xMDAyLDEyICsxMDAyLDEyIEBAIGludCBfX2luaXQgY29u c3RydWN0X2RvbTAoCiAgICAgICAgICAgICAgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlcyhwYWdl LCBvcmRlcik7CiAgICAgICAgICAgICAgICAgICAgIHBhZ2UgKz0gMVVMIDw8IG9yZGVyOwogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbWNweShwYWdlX3RvX3ZpcnQocGFnZSksIG1m bl90b192aXJ0KGluaXRyZC0+bW9kX3N0YXJ0KSwKKyAgICAgICAgICAgIG1lbWNweShwYWdlX3Rv X3ZpcnQocGFnZSksIG1mbl90b192aXJ0KGluaXRyZC0+c3RhcnQpLAogICAgICAgICAgICAgICAg ICAgIGluaXRyZF9sZW4pOwotICAgICAgICAgICAgbXB0X2FsbG9jID0gKHBhZGRyX3QpaW5pdHJk LT5tb2Rfc3RhcnQgPDwgUEFHRV9TSElGVDsKKyAgICAgICAgICAgIG1wdF9hbGxvYyA9IChwYWRk cl90KWluaXRyZC0+c3RhcnQgPDwgUEFHRV9TSElGVDsKICAgICAgICAgICAgIGluaXRfZG9taGVh cF9wYWdlcyhtcHRfYWxsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXB0X2Fs bG9jICsgUEFHRV9BTElHTihpbml0cmRfbGVuKSk7Ci0gICAgICAgICAgICBpbml0cmQtPm1vZF9z dGFydCA9IGluaXRyZF9tZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKKyAgICAgICAgICAgIGluaXRy ZC0+c3RhcnQgPSBpbml0cmRfbWZuID0gcGFnZV90b19tZm4ocGFnZSk7CiAgICAgICAgIH0KICAg ICAgICAgZWxzZQogICAgICAgICB7CkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBpbnQgX19pbml0IGNv bnN0cnVjdF9kb20wKAogICAgICAgICAgICAgICAgIGlmICggYXNzaWduX3BhZ2VzKGQsIG1mbl90 b19wYWdlKG1mbisrKSwgMCwgMCkgKQogICAgICAgICAgICAgICAgICAgICBCVUcoKTsKICAgICAg ICAgfQotICAgICAgICBpbml0cmQtPm1vZF9lbmQgPSAwOworICAgICAgICBpbml0cmQtPmVuZCA9 IDA7CiAgICAgfQogCiAgICAgcHJpbnRrKCJQSFlTSUNBTCBNRU1PUlkgQVJSQU5HRU1FTlQ6XG4i CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wKAogICAgICAg ICAgICAgICAgbnJfcGFnZXMgLSBkLT50b3RfcGFnZXMpOwogICAgIGlmICggaW5pdHJkICkKICAg ICB7Ci0gICAgICAgIG1wdF9hbGxvYyA9IChwYWRkcl90KWluaXRyZC0+bW9kX3N0YXJ0IDw8IFBB R0VfU0hJRlQ7CisgICAgICAgIG1wdF9hbGxvYyA9IChwYWRkcl90KWluaXRyZC0+c3RhcnQgPDwg UEFHRV9TSElGVDsKICAgICAgICAgcHJpbnRrKCJcbiBJbml0LiByYW1kaXNrOiAlIlBSSXBhZGRy Ii0+JSJQUklwYWRkciwKICAgICAgICAgICAgICAgIG1wdF9hbGxvYywgbXB0X2FsbG9jICsgaW5p dHJkX2xlbik7CiAgICAgfQpAQCAtMTI4MSw3ICsxMjgxLDcgQEAgaW50IF9faW5pdCBjb25zdHJ1 Y3RfZG9tMCgKICAgICAgICAgaWYgKCBwZm4gPj0gaW5pdHJkX3BmbiApCiAgICAgICAgIHsKICAg ICAgICAgICAgIGlmICggcGZuIDwgaW5pdHJkX3BmbiArIFBGTl9VUChpbml0cmRfbGVuKSApCi0g ICAgICAgICAgICAgICAgbWZuID0gaW5pdHJkLT5tb2Rfc3RhcnQgKyAocGZuIC0gaW5pdHJkX3Bm bik7CisgICAgICAgICAgICAgICAgbWZuID0gaW5pdHJkLT5zdGFydCArIChwZm4gLSBpbml0cmRf cGZuKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtZm4gLT0gUEZOX1VQKGlu aXRyZF9sZW4pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZWZpL2Jvb3Qu YyBiL3hlbi9hcmNoL3g4Ni9lZmkvYm9vdC5jCmluZGV4IDJiNTE1ZjIuLmZlYTU1OTggMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9lZmkvYm9vdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9lZmkvYm9v dC5jCkBAIC05LDcgKzksNiBAQAogI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVyLmg+CiAjaW5jbHVk ZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9tbS5oPgotI2luY2x1ZGUgPHhlbi9tdWx0aWJv b3QuaD4KICNpbmNsdWRlIDx4ZW4vcGNpX3JlZ3MuaD4KICNpbmNsdWRlIDx4ZW4vcGZuLmg+CiAj aWYgRUZJX1BBR0VfU0laRSAhPSBQQUdFX1NJWkUKQEAgLTI1LDYgKzI0LDcgQEAKICN1bmRlZiBf X0FTU0VNQkxZX18KICNpbmNsdWRlIDxhc20vbXNyLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nv ci5oPgorI2luY2x1ZGUgPGFzbS94YmkuaD4KIAogLyogVXNpbmcgU2V0VmlydHVhbEFkZHJlc3NN YXAoKSBpcyBpbmNvbXBhdGlibGUgd2l0aCBrZXhlYzogKi8KICN1bmRlZiBVU0VfU0VUX1ZJUlRV QUxfQUREUkVTU19NQVAKQEAgLTcyLDEzICs3MiwxMiBAQCBzdGF0aWMgc3RydWN0IGZpbGUgX19p bml0ZGF0YSByYW1kaXNrOwogc3RhdGljIHN0cnVjdCBmaWxlIF9faW5pdGRhdGEgdWNvZGU7CiBz dGF0aWMgc3RydWN0IGZpbGUgX19pbml0ZGF0YSB4c207CiAKLXN0YXRpYyBtdWx0aWJvb3RfaW5m b190IF9faW5pdGRhdGEgbWJpID0gewotICAgIC5mbGFncyA9IE1CSV9NT0RVTEVTIHwgTUJJX0xP QURFUk5BTUUKLX07Ci1zdGF0aWMgbW9kdWxlX3QgX19pbml0ZGF0YSBtYl9tb2R1bGVzWzNdOwot CiBzdGF0aWMgQ0hBUjE2IF9faW5pdGRhdGEgbmV3bGluZVtdID0gTCJcclxuIjsKIAorZXh0ZXJu IHVuc2lnbmVkIHNob3J0IGJvb3RfZWRpZF9jYXBzOworCitleHRlcm4geGJpX3QgX19yZWFkX21v c3RseSB4YmlfZWZpOworCiAjZGVmaW5lIFByaW50U3RyKHMpIFN0ZE91dC0+T3V0cHV0U3RyaW5n KFN0ZE91dCwgcykKICNkZWZpbmUgUHJpbnRFcnIocykgU3RkRXJyLT5PdXRwdXRTdHJpbmcoU3Rk RXJyLCBzKQogCkBAIC0yNTUsMTQgKzI1NCwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgUHJpbnRF cnJNZXNnKGNvbnN0IENIQVIxNiAqbWVzZywgRUZJX1NUQVRVUyBFcnJDb2RlKQogICAgIGJsZXhp dChtZXNnKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0IHBsYWNlX3N0cmluZyh1MzIgKmFkZHIs IGNvbnN0IGNoYXIgKnMpCitzdGF0aWMgdm9pZCBfX2luaXQgcGxhY2Vfc3RyaW5nX2NoYXIoY2hh ciAqKmFkZHIsIGNvbnN0IGNoYXIgKnMpCiB7CiAgICAgc3RhdGljIGNoYXIgKl9faW5pdGRhdGEg YWxsb2MgPSBzdGFydDsKIAogICAgIGlmICggcyAmJiAqcyApCiAgICAgewogICAgICAgICBzaXpl X3QgbGVuMSA9IHN0cmxlbihzKSArIDE7Ci0gICAgICAgIGNvbnN0IGNoYXIgKm9sZCA9IChjaGFy ICopKGxvbmcpKmFkZHI7CisgICAgICAgIGNvbnN0IGNoYXIgKm9sZCA9ICphZGRyOwogICAgICAg ICBzaXplX3QgbGVuMiA9ICphZGRyID8gc3RybGVuKG9sZCkgKyAxIDogMDsKIAogICAgICAgICBh bGxvYyAtPSBsZW4xICsgbGVuMjsKQEAgLTI3OCw3ICsyNzcsMTYgQEAgc3RhdGljIHZvaWQgX19p bml0IHBsYWNlX3N0cmluZyh1MzIgKmFkZHIsIGNvbnN0IGNoYXIgKnMpCiAgICAgICAgICAgICBt ZW1jcHkoYWxsb2MgKyBsZW4xLCBvbGQsIGxlbjIpOwogICAgICAgICB9CiAgICAgfQotICAgICph ZGRyID0gKGxvbmcpYWxsb2M7CisgICAgKmFkZHIgPSBhbGxvYzsKK30KKworc3RhdGljIHZvaWQg X19pbml0IHBsYWNlX3N0cmluZ191MzIodTMyICphZGRyLCBjb25zdCBjaGFyICpzKQoreworICAg IGNoYXIgKnNfbmV3ID0gKGNoYXIgKikobG9uZykqYWRkcjsKKworICAgIHBsYWNlX3N0cmluZ19j aGFyKCZzX25ldywgcyk7CisKKyAgICAqYWRkciA9IChsb25nKXNfbmV3OwogfQogCiBzdGF0aWMg dW5zaWduZWQgaW50IF9faW5pdCBnZXRfYXJndih1bnNpZ25lZCBpbnQgYXJnYywgQ0hBUjE2ICoq YXJndiwKQEAgLTMxMSw3ICszMTksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdCBnZXRf YXJndih1bnNpZ25lZCBpbnQgYXJnYywgQ0hBUjE2ICoqYXJndiwKICAgICAgICAgICAgICAgICB1 bmlvbiBzdHJpbmcgcmVzdCA9IHsgLncgPSBjbWRsaW5lIH07CiAKICAgICAgICAgICAgICAgICAt LWFyZ3Y7Ci0gICAgICAgICAgICAgICAgcGxhY2Vfc3RyaW5nKCZtYmkuY21kbGluZSwgdzJzKCZy ZXN0KSk7CisgICAgICAgICAgICAgICAgcGxhY2Vfc3RyaW5nX2NoYXIoJnhiaV9lZmkuY21kbGlu ZSwgdzJzKCZyZXN0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg ICAgICAgICAgICBlbHNlCkBAIC00ODAsOSArNDg4LDkgQEAgc3RhdGljIGJvb2xfdCBfX2luaXQg cmVhZF9maWxlKEVGSV9GSUxFX0hBTkRMRSBkaXJfaGFuZGxlLCBDSEFSMTYgKm5hbWUsCiAgICAg ICAgICAgICBQcmludFN0cihMIi0iKTsKICAgICAgICAgICAgIERpc3BsYXlVaW50KGZpbGUtPmFk ZHIgKyBzaXplLCAyICogc2l6ZW9mKGZpbGUtPmFkZHIpKTsKICAgICAgICAgICAgIFByaW50U3Ry KG5ld2xpbmUpOwotICAgICAgICAgICAgbWJfbW9kdWxlc1ttYmkubW9kc19jb3VudF0ubW9kX3N0 YXJ0ID0gZmlsZS0+YWRkciA+PiBQQUdFX1NISUZUOwotICAgICAgICAgICAgbWJfbW9kdWxlc1tt YmkubW9kc19jb3VudF0ubW9kX2VuZCA9IHNpemU7Ci0gICAgICAgICAgICArK21iaS5tb2RzX2Nv dW50OworICAgICAgICAgICAgeGJpX2VmaS5tb2RzW3hiaV9lZmkubW9kc19ucl0uc3RhcnQgPSBm aWxlLT5hZGRyID4+IFBBR0VfU0hJRlQ7CisgICAgICAgICAgICB4YmlfZWZpLm1vZHNbeGJpX2Vm aS5tb2RzX25yXS5lbmQgPSBzaXplOworICAgICAgICAgICAgKyt4YmlfZWZpLm1vZHNfbnI7CiAg ICAgICAgIH0KIAogICAgICAgICBmaWxlLT5zaXplID0gc2l6ZTsKQEAgLTU2OCw3ICs1NzYsNyBA QCBzdGF0aWMgdm9pZCBfX2luaXQgc3BsaXRfdmFsdWUoY2hhciAqcykKIHsKICAgICB3aGlsZSAo ICpzICYmIGlzc3BhY2UoKnMpICkKICAgICAgICAgKytzOwotICAgIHBsYWNlX3N0cmluZygmbWJf bW9kdWxlc1ttYmkubW9kc19jb3VudF0uc3RyaW5nLCBzKTsKKyAgICBwbGFjZV9zdHJpbmdfdTMy KCZ4YmlfZWZpLm1vZHNbeGJpX2VmaS5tb2RzX25yXS5jbWRsaW5lLCBzKTsKICAgICB3aGlsZSAo ICpzICYmICFpc3NwYWNlKCpzKSApCiAgICAgICAgICsrczsKICAgICAqcyA9IDA7CkBAIC04ODQs MTAgKzg5MiwxMCBAQCBlZmlfc3RhcnQoRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwgRUZJX1NZU1RF TV9UQUJMRSAqU3lzdGVtVGFibGUpCiAgICAgaWYgKCBTdGRPdXQtPlF1ZXJ5TW9kZShTdGRPdXQs IFN0ZE91dC0+TW9kZS0+TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xzLCAm cm93cykgPT0gRUZJX1NVQ0NFU1MgKQogICAgIHsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5mby52 aWRlb190eXBlID0gWEVOX1ZHQVRZUEVfVEVYVF9NT0RFXzM7Ci0gICAgICAgIHZnYV9jb25zb2xl X2luZm8udS50ZXh0X21vZGVfMy5jb2x1bW5zID0gY29sczsKLSAgICAgICAgdmdhX2NvbnNvbGVf aW5mby51LnRleHRfbW9kZV8zLnJvd3MgPSByb3dzOwotICAgICAgICB2Z2FfY29uc29sZV9pbmZv LnUudGV4dF9tb2RlXzMuZm9udF9oZWlnaHQgPSAxNjsKKyAgICAgICAgeGJpX2VmaS52Z2FfY29u c29sZV9pbmZvLnZpZGVvX3R5cGUgPSBYRU5fVkdBVFlQRV9URVhUX01PREVfMzsKKyAgICAgICAg eGJpX2VmaS52Z2FfY29uc29sZV9pbmZvLnUudGV4dF9tb2RlXzMuY29sdW1ucyA9IGNvbHM7Cisg ICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLnJvd3MgPSByb3dz OworICAgICAgICB4YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS50ZXh0X21vZGVfMy5mb250X2hl aWdodCA9IDE2OwogICAgIH0KIAogICAgIHNpemUgPSAwOwpAQCAtOTg0LDcgKzk5Miw3IEBAIGVm aV9zdGFydChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1U YWJsZSkKICAgICAgICAgbmFtZS5zID0gZ2V0X3ZhbHVlKCZjZmcsICJnbG9iYWwiLCAidWNvZGUi KTsKICAgICBpZiAoIG5hbWUucyApCiAgICAgewotICAgICAgICBtaWNyb2NvZGVfc2V0X21vZHVs ZShtYmkubW9kc19jb3VudCk7CisgICAgICAgIG1pY3JvY29kZV9zZXRfbW9kdWxlKHhiaV9lZmku bW9kc19ucik7CiAgICAgICAgIHNwbGl0X3ZhbHVlKG5hbWUucyk7CiAgICAgICAgIHJlYWRfZmls ZShkaXJfaGFuZGxlLCBzMncoJm5hbWUpLCAmdWNvZGUpOwogICAgICAgICBlZmlfYnMtPkZyZWVQ b29sKG5hbWUudyk7CkBAIC0xMDAwLDcgKzEwMDgsNyBAQCBlZmlfc3RhcnQoRUZJX0hBTkRMRSBJ bWFnZUhhbmRsZSwgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUpCiAKICAgICBuYW1lLnMg PSBnZXRfdmFsdWUoJmNmZywgc2VjdGlvbi5zLCAib3B0aW9ucyIpOwogICAgIGlmICggbmFtZS5z ICkKLSAgICAgICAgcGxhY2Vfc3RyaW5nKCZtYmkuY21kbGluZSwgbmFtZS5zKTsKKyAgICAgICAg cGxhY2Vfc3RyaW5nX2NoYXIoJnhiaV9lZmkuY21kbGluZSwgbmFtZS5zKTsKICAgICAvKiBJbnNl cnQgaW1hZ2UgbmFtZSBsYXN0LCBhcyBpdCBnZXRzIHByZWZpeGVkIHRvIHRoZSBvdGhlciBvcHRp b25zLiAqLwogICAgIGlmICggYXJnYyApCiAgICAgewpAQCAtMTAwOSw3ICsxMDE3LDcgQEAgZWZp X3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRh YmxlKQogICAgIH0KICAgICBlbHNlCiAgICAgICAgIG5hbWUucyA9ICJ4ZW4iOwotICAgIHBsYWNl X3N0cmluZygmbWJpLmNtZGxpbmUsIG5hbWUucyk7CisgICAgcGxhY2Vfc3RyaW5nX2NoYXIoJnhi aV9lZmkuY21kbGluZSwgbmFtZS5zKTsKIAogICAgIGNvbHMgPSByb3dzID0gZGVwdGggPSAwOwog ICAgIGlmICggIWJhc2VfdmlkZW8gKQpAQCAtMTA3NSwxNiArMTA4MywxMCBAQCBlZmlfc3RhcnQo RUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUpCiAg ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIG1iaS5jbWRsaW5lICkKLSAgICAgICAgbWJpLmZs YWdzIHw9IE1CSV9DTURMSU5FOwotICAgIC8qCi0gICAgICogVGhlc2UgbXVzdCBub3QgYmUgaW5p dGlhbGl6ZWQgc3RhdGljYWxseSwgc2luY2UgdGhlIHZhbHVlIG11c3QKLSAgICAgKiBub3QgZ2V0 IHJlbG9jYXRlZCB3aGVuIHByb2Nlc3NpbmcgYmFzZSByZWxvY2F0aW9ucyBiZWxvdy4KLSAgICAg Ki8KLSAgICBtYmkuYm9vdF9sb2FkZXJfbmFtZSA9IChsb25nKSJFRkkiOwotICAgIG1iaS5tb2Rz X2FkZHIgPSAobG9uZyltYl9tb2R1bGVzOworICAgIHhiaV9lZmkuZWZpX3N5c3RlbV90YWJsZSA9 IFN5c3RlbVRhYmxlOworICAgIHhiaV9lZmkuZWRpZF9jYXBzID0gYm9vdF9lZGlkX2NhcHM7CiAK LSAgICBwbGFjZV9zdHJpbmcoJm1iaS5tZW1fdXBwZXIsIE5VTEwpOworICAgIHBsYWNlX3N0cmlu Z191MzIoJnhiaV9lZmkubWVtX3VwcGVyLCBOVUxMKTsKIAogICAgIC8qIENvbGxlY3QgRUREIGlu Zm8uICovCiAgICAgQlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBlZGRfaW5mbywgZWRkX2Rl dmljZV9wYXJhbXMpICE9IEVEREVYVFNJWkUpOwpAQCAtMTEwMiw3ICsxMTA0LDcgQEAgZWZpX3N0 YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxl KQogICAgIHsKICAgICAgICAgRUZJX0JMT0NLX0lPICpiaW87CiAgICAgICAgIEVGSV9ERVZfUEFU SF9QVFIgZGV2cDsKLSAgICAgICAgc3RydWN0IGVkZF9pbmZvICppbmZvID0gYm9vdF9lZGRfaW5m byArIGJvb3RfZWRkX2luZm9fbnI7CisgICAgICAgIHN0cnVjdCBlZGRfaW5mbyAqaW5mbyA9IHhi aV9lZmkuZWRkX2luZm8gKyB4YmlfZWZpLmVkZF9pbmZvX25yOwogICAgICAgICBzdHJ1Y3QgZWRk X2RldmljZV9wYXJhbXMgKnBhcmFtcyA9ICZpbmZvLT5lZGRfZGV2aWNlX3BhcmFtczsKICAgICAg ICAgZW51bSB7IHJvb3QsIGFjcGksIHBjaSwgY3RybHIgfSBzdGF0ZSA9IHJvb3Q7CiAKQEAgLTEx MTEsMTYgKzExMTMsMTYgQEAgZWZpX3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVGSV9T WVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlKQogICAgICAgICAgICAgIGJpby0+TWVkaWEtPlJlbW92 YWJsZU1lZGlhIHx8CiAgICAgICAgICAgICAgYmlvLT5NZWRpYS0+TG9naWNhbFBhcnRpdGlvbiAp CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCBib290X2VkZF9pbmZvX25yIDwg RUREX0lORk9fTUFYICkKKyAgICAgICAgaWYgKCB4YmlfZWZpLmVkZF9pbmZvX25yIDwgRUREX0lO Rk9fTUFYICkKICAgICAgICAgewotICAgICAgICAgICAgaW5mby0+ZGV2aWNlID0gMHg4MCArIGJv b3RfZWRkX2luZm9fbnI7IC8qIGZha2UgKi8KKyAgICAgICAgICAgIGluZm8tPmRldmljZSA9IDB4 ODAgKyB4YmlfZWZpLmVkZF9pbmZvX25yOyAvKiBmYWtlICovCiAgICAgICAgICAgICBpbmZvLT52 ZXJzaW9uID0gMHgxMTsKICAgICAgICAgICAgIHBhcmFtcy0+bGVuZ3RoID0gb2Zmc2V0b2Yoc3Ry dWN0IGVkZF9kZXZpY2VfcGFyYW1zLCBkcHRlX3B0cik7CiAgICAgICAgICAgICBwYXJhbXMtPm51 bWJlcl9vZl9zZWN0b3JzID0gYmlvLT5NZWRpYS0+TGFzdEJsb2NrICsgMTsKICAgICAgICAgICAg IHBhcmFtcy0+Ynl0ZXNfcGVyX3NlY3RvciA9IGJpby0+TWVkaWEtPkJsb2NrU2l6ZTsKICAgICAg ICAgICAgIHBhcmFtcy0+ZHB0ZV9wdHIgPSB+MDsKICAgICAgICAgfQotICAgICAgICArK2Jvb3Rf ZWRkX2luZm9fbnI7CisgICAgICAgICsreGJpX2VmaS5lZGRfaW5mb19ucjsKICAgICAgICAgc3Rh dHVzID0gZWZpX2JzLT5IYW5kbGVQcm90b2NvbChoYW5kbGVzW2ldLCAmZGV2cF9ndWlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICoqKSZkZXZwKTsKICAg ICAgICAgaWYgKCBFRklfRVJST1Ioc3RhdHVzKSApCkBAIC0xMTMzLDcgKzExMzUsNyBAQCBlZmlf c3RhcnQoRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFi bGUpCiAgICAgICAgICAgICAgICAgY29uc3QgdTggKnA7CiAKICAgICAgICAgICAgIGNhc2UgQUNQ SV9ERVZJQ0VfUEFUSDoKLSAgICAgICAgICAgICAgICBpZiAoIHN0YXRlICE9IHJvb3QgfHwgYm9v dF9lZGRfaW5mb19uciA+IEVERF9JTkZPX01BWCApCisgICAgICAgICAgICAgICAgaWYgKCBzdGF0 ZSAhPSByb290IHx8IHhiaV9lZmkuZWRkX2luZm9fbnIgPiBFRERfSU5GT19NQVggKQogICAgICAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKCBEZXZpY2VQYXRo U3ViVHlwZShkZXZwLkRldlBhdGgpICkKICAgICAgICAgICAgICAgICB7CkBAIC0xMTUyLDcgKzEx NTQsNyBAQCBlZmlfc3RhcnQoRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwgRUZJX1NZU1RFTV9UQUJM RSAqU3lzdGVtVGFibGUpCiAgICAgICAgICAgICBjYXNlIEhBUkRXQVJFX0RFVklDRV9QQVRIOgog ICAgICAgICAgICAgICAgIGlmICggc3RhdGUgIT0gYWNwaSB8fAogICAgICAgICAgICAgICAgICAg ICAgRGV2aWNlUGF0aFN1YlR5cGUoZGV2cC5EZXZQYXRoKSAhPSBIV19QQ0lfRFAgfHwKLSAgICAg ICAgICAgICAgICAgICAgIGJvb3RfZWRkX2luZm9fbnIgPiBFRERfSU5GT19NQVggKQorICAgICAg ICAgICAgICAgICAgICAgeGJpX2VmaS5lZGRfaW5mb19uciA+IEVERF9JTkZPX01BWCApCiAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHN0YXRlID0gcGNpOwogICAg ICAgICAgICAgICAgIGVkZF9wdXRfc3RyaW5nKHBhcmFtcy0+aG9zdF9idXNfdHlwZSwgIlBDSSIp OwpAQCAtMTE2MCw3ICsxMTYyLDcgQEAgZWZpX3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUs IEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlKQogICAgICAgICAgICAgICAgIHBhcmFtcy0+ aW50ZXJmYWNlX3BhdGgucGNpLmZ1bmN0aW9uID0gZGV2cC5QY2ktPkZ1bmN0aW9uOwogICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBNRVNTQUdJTkdfREVWSUNFX1BBVEg6 Ci0gICAgICAgICAgICAgICAgaWYgKCBzdGF0ZSAhPSBwY2kgfHwgYm9vdF9lZGRfaW5mb19uciA+ IEVERF9JTkZPX01BWCApCisgICAgICAgICAgICAgICAgaWYgKCBzdGF0ZSAhPSBwY2kgfHwgeGJp X2VmaS5lZGRfaW5mb19uciA+IEVERF9JTkZPX01BWCApCiAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgIHN0YXRlID0gY3RybHI7CiAgICAgICAgICAgICAgICAgc3dp dGNoICggRGV2aWNlUGF0aFN1YlR5cGUoZGV2cC5EZXZQYXRoKSApCkBAIC0xMjA5LDE1ICsxMjEx LDE1IEBAIGVmaV9zdGFydChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RBQkxF ICpTeXN0ZW1UYWJsZSkKICAgICAgICAgICAgIGNhc2UgTUVESUFfREVWSUNFX1BBVEg6CiAgICAg ICAgICAgICAgICAgaWYgKCBEZXZpY2VQYXRoU3ViVHlwZShkZXZwLkRldlBhdGgpID09IE1FRElB X0hBUkREUklWRV9EUCAmJgogICAgICAgICAgICAgICAgICAgICAgZGV2cC5IYXJkRHJpdmUtPk1C UlR5cGUgPT0gTUJSX1RZUEVfUENBVCAmJgotICAgICAgICAgICAgICAgICAgICAgYm9vdF9tYnJf c2lnbmF0dXJlX25yIDwgRUREX01CUl9TSUdfTUFYICkKKyAgICAgICAgICAgICAgICAgICAgIHhi aV9lZmkubWJyX3NpZ25hdHVyZV9uciA8IEVERF9NQlJfU0lHX01BWCApCiAgICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJyX3NpZ25hdHVyZSAqc2lnID0gYm9v dF9tYnJfc2lnbmF0dXJlICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb3RfbWJyX3NpZ25hdHVyZV9ucjsKKyAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG1icl9zaWduYXR1cmUgKnNpZyA9IHhiaV9lZmkubWJyX3NpZ25hdHVyZSArCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YmlfZWZpLm1icl9zaWdu YXR1cmVfbnI7CiAKLSAgICAgICAgICAgICAgICAgICAgc2lnLT5kZXZpY2UgPSAweDgwICsgYm9v dF9lZGRfaW5mb19ucjsgLyogZmFrZSAqLworICAgICAgICAgICAgICAgICAgICBzaWctPmRldmlj ZSA9IDB4ODAgKyB4YmlfZWZpLmVkZF9pbmZvX25yOyAvKiBmYWtlICovCiAgICAgICAgICAgICAg ICAgICAgIG1lbWNweSgmc2lnLT5zaWduYXR1cmUsIGRldnAuSGFyZERyaXZlLT5TaWduYXR1cmUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc2lnLT5zaWduYXR1cmUpKTsKLSAg ICAgICAgICAgICAgICAgICAgKytib290X21icl9zaWduYXR1cmVfbnI7CisgICAgICAgICAgICAg ICAgICAgICsreGJpX2VmaS5tYnJfc2lnbmF0dXJlX25yOwogICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTEyMjUsOCArMTIyNyw4IEBA IGVmaV9zdGFydChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RBQkxFICpTeXN0 ZW1UYWJsZSkKICAgICB9CiAgICAgaWYgKCBoYW5kbGVzICkKICAgICAgICAgZWZpX2JzLT5GcmVl UG9vbChoYW5kbGVzKTsKLSAgICBpZiAoIGJvb3RfZWRkX2luZm9fbnIgPiBFRERfSU5GT19NQVgg KQotICAgICAgICBib290X2VkZF9pbmZvX25yID0gRUREX0lORk9fTUFYOworICAgIGlmICggeGJp X2VmaS5lZGRfaW5mb19uciA+IEVERF9JTkZPX01BWCApCisgICAgICAgIHhiaV9lZmkuZWRkX2lu Zm9fbnIgPSBFRERfSU5GT19NQVg7CiAKICAgICAvKiBYWFggQ29sbGVjdCBFRElEIGluZm8uICov CiAKQEAgLTEyNDUsMTcgKzEyNDcsMTcgQEAgZWZpX3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5k bGUsIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlKQogICAgICAgICBzdGF0aWMgRUZJX0dV SUQgX19pbml0ZGF0YSBzbWJpb3NfZ3VpZCA9IFNNQklPU19UQUJMRV9HVUlEOwogCiAgICAgICAg IGlmICggbWF0Y2hfZ3VpZCgmYWNwaTJfZ3VpZCwgJmVmaV9jdFtpXS5WZW5kb3JHdWlkKSApCi0J ICAgICAgIGVmaS5hY3BpMjAgPSAobG9uZyllZmlfY3RbaV0uVmVuZG9yVGFibGU7CisJICAgICAg IHhiaV9lZmkuYWNwaTIwID0gKGxvbmcpZWZpX2N0W2ldLlZlbmRvclRhYmxlOwogICAgICAgICBp ZiAoIG1hdGNoX2d1aWQoJmFjcGlfZ3VpZCwgJmVmaV9jdFtpXS5WZW5kb3JHdWlkKSApCi0JICAg ICAgIGVmaS5hY3BpID0gKGxvbmcpZWZpX2N0W2ldLlZlbmRvclRhYmxlOworCSAgICAgICB4Ymlf ZWZpLmFjcGkgPSAobG9uZyllZmlfY3RbaV0uVmVuZG9yVGFibGU7CiAgICAgICAgIGlmICggbWF0 Y2hfZ3VpZCgmbXBzX2d1aWQsICZlZmlfY3RbaV0uVmVuZG9yR3VpZCkgKQotCSAgICAgICBlZmku bXBzID0gKGxvbmcpZWZpX2N0W2ldLlZlbmRvclRhYmxlOworCSAgICAgICB4YmlfZWZpLm1wcyA9 IChsb25nKWVmaV9jdFtpXS5WZW5kb3JUYWJsZTsKICAgICAgICAgaWYgKCBtYXRjaF9ndWlkKCZz bWJpb3NfZ3VpZCwgJmVmaV9jdFtpXS5WZW5kb3JHdWlkKSApCi0JICAgICAgIGVmaS5zbWJpb3Mg PSAobG9uZyllZmlfY3RbaV0uVmVuZG9yVGFibGU7CisJICAgICAgIHhiaV9lZmkuc21iaW9zID0g KGxvbmcpZWZpX2N0W2ldLlZlbmRvclRhYmxlOwogICAgIH0KIAotICAgIGlmIChlZmkuc21iaW9z ICE9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIpCi0gICAgICAgIGRtaV9lZmlfZ2V0X3RhYmxlKCh2 b2lkICopKGxvbmcpZWZpLnNtYmlvcyk7CisgICAgaWYgKHhiaV9lZmkuc21iaW9zICE9IEVGSV9J TlZBTElEX1RBQkxFX0FERFIpCisgICAgICAgIGRtaV9lZmlfZ2V0X3RhYmxlKCh2b2lkICopKGxv bmcpeGJpX2VmaS5zbWJpb3MpOwogCiAgICAgLyogQ29sbGVjdCBQQ0kgUk9NIGNvbnRlbnRzLiAq LwogICAgIHNldHVwX2VmaV9wY2koKTsKQEAgLTEzMjIsNDAgKzEzMjQsNDAgQEAgZWZpX3N0YXJ0 KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlKQog ICAgICAgICAgICAgc3dpdGNoICggbW9kZV9pbmZvLT5QaXhlbEZvcm1hdCApCiAgICAgICAgICAg ICB7CiAgICAgICAgICAgICBjYXNlIFBpeGVsUmVkR3JlZW5CbHVlUmVzZXJ2ZWQ4Qml0UGVyQ29s b3I6Ci0gICAgICAgICAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJlZF9wb3Mg PSAwOwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yZWRfc2l6 ZSA9IDg7Ci0gICAgICAgICAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmdyZWVu X3BvcyA9IDg7Ci0gICAgICAgICAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmdy ZWVuX3NpemUgPSA4OwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xm Yi5ibHVlX3BvcyA9IDE2OwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNh X2xmYi5ibHVlX3NpemUgPSA4OwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52 ZXNhX2xmYi5yc3ZkX3BvcyA9IDI0OwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8u dS52ZXNhX2xmYi5yc3ZkX3NpemUgPSA4OworICAgICAgICAgICAgICAgIHhiaV9lZmkudmdhX2Nv bnNvbGVfaW5mby51LnZlc2FfbGZiLnJlZF9wb3MgPSAwOworICAgICAgICAgICAgICAgIHhiaV9l ZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJlZF9zaXplID0gODsKKyAgICAgICAgICAg ICAgICB4YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9wb3MgPSA4Owor ICAgICAgICAgICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmdyZWVu X3NpemUgPSA4OworICAgICAgICAgICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZl c2FfbGZiLmJsdWVfcG9zID0gMTY7CisgICAgICAgICAgICAgICAgeGJpX2VmaS52Z2FfY29uc29s ZV9pbmZvLnUudmVzYV9sZmIuYmx1ZV9zaXplID0gODsKKyAgICAgICAgICAgICAgICB4YmlfZWZp LnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yc3ZkX3BvcyA9IDI0OworICAgICAgICAgICAg ICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJzdmRfc2l6ZSA9IDg7CiAg ICAgICAgICAgICAgICAgYnBwID0gMzI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICBjYXNlIFBpeGVsQmx1ZUdyZWVuUmVkUmVzZXJ2ZWQ4Qml0UGVyQ29sb3I6Ci0gICAgICAg ICAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJlZF9wb3MgPSAxNjsKLSAgICAg ICAgICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIucmVkX3NpemUgPSA4OwotICAg ICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9wb3MgPSA4Owot ICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9zaXplID0g ODsKLSAgICAgICAgICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuYmx1ZV9wb3Mg PSAwOwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ibHVlX3Np emUgPSA4OwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yc3Zk X3BvcyA9IDI0OwotICAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5y c3ZkX3NpemUgPSA4OworICAgICAgICAgICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51 LnZlc2FfbGZiLnJlZF9wb3MgPSAxNjsKKyAgICAgICAgICAgICAgICB4YmlfZWZpLnZnYV9jb25z b2xlX2luZm8udS52ZXNhX2xmYi5yZWRfc2l6ZSA9IDg7CisgICAgICAgICAgICAgICAgeGJpX2Vm aS52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuZ3JlZW5fcG9zID0gODsKKyAgICAgICAgICAg ICAgICB4YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9zaXplID0gODsK KyAgICAgICAgICAgICAgICB4YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ibHVl X3BvcyA9IDA7CisgICAgICAgICAgICAgICAgeGJpX2VmaS52Z2FfY29uc29sZV9pbmZvLnUudmVz YV9sZmIuYmx1ZV9zaXplID0gODsKKyAgICAgICAgICAgICAgICB4YmlfZWZpLnZnYV9jb25zb2xl X2luZm8udS52ZXNhX2xmYi5yc3ZkX3BvcyA9IDI0OworICAgICAgICAgICAgICAgIHhiaV9lZmku dmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJzdmRfc2l6ZSA9IDg7CiAgICAgICAgICAgICAg ICAgYnBwID0gMzI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBp eGVsQml0TWFzazoKICAgICAgICAgICAgICAgICBicHAgPSBzZXRfY29sb3IobW9kZV9pbmZvLT5Q aXhlbEluZm9ybWF0aW9uLlJlZE1hc2ssIGJwcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yZWRfcG9zLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJlZF9zaXpl KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhiaV9lZmkudmdhX2NvbnNvbGVf aW5mby51LnZlc2FfbGZiLnJlZF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZ4YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yZWRfc2l6ZSk7CiAgICAgICAg ICAgICAgICAgYnBwID0gc2V0X2NvbG9yKG1vZGVfaW5mby0+UGl4ZWxJbmZvcm1hdGlvbi5HcmVl bk1hc2ssIGJwcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZnYV9jb25zb2xl X2luZm8udS52ZXNhX2xmYi5ncmVlbl9wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZ2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuZ3JlZW5fc2l6ZSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZ4YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xm Yi5ncmVlbl9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4YmlfZWZpLnZn YV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9zaXplKTsKICAgICAgICAgICAgICAgICBi cHAgPSBzZXRfY29sb3IobW9kZV9pbmZvLT5QaXhlbEluZm9ybWF0aW9uLkJsdWVNYXNrLCBicHAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2Z2FfY29uc29sZV9pbmZvLnUudmVz YV9sZmIuYmx1ZV9wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2Z2FfY29u c29sZV9pbmZvLnUudmVzYV9sZmIuYmx1ZV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmJsdWVfcG9zLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeGJpX2VmaS52Z2FfY29uc29sZV9pbmZv LnUudmVzYV9sZmIuYmx1ZV9zaXplKTsKICAgICAgICAgICAgICAgICBicHAgPSBzZXRfY29sb3Io bW9kZV9pbmZvLT5QaXhlbEluZm9ybWF0aW9uLlJlc2VydmVkTWFzaywgYnBwLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJzdmRf cG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmdhX2NvbnNvbGVfaW5mby51 LnZlc2FfbGZiLnJzdmRfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4 YmlfZWZpLnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yc3ZkX3BvcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZi LnJzdmRfc2l6ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCBicHAgPiAwICkKICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCkBAIC0x MzY2LDM3ICsxMzY4LDM3IEBAIGVmaV9zdGFydChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklf U1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJsZSkKICAgICAgICAgICAgIH0KICAgICAgICAgaWYgKCAh RUZJX0VSUk9SKHN0YXR1cykgKQogICAgICAgICB7Ci0gICAgICAgICAgICB2Z2FfY29uc29sZV9p bmZvLnZpZGVvX3R5cGUgPSBYRU5fVkdBVFlQRV9FRklfTEZCOwotICAgICAgICAgICAgdmdhX2Nv bnNvbGVfaW5mby51LnZlc2FfbGZiLmdibF9jYXBzID0gMjsgLyogcG9zc2libHkgbm9uLVZHQSAq LwotICAgICAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLndpZHRoID0KKyAgICAg ICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby52aWRlb190eXBlID0gWEVOX1ZHQVRZUEVf RUZJX0xGQjsKKyAgICAgICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZi LmdibF9jYXBzID0gMjsgLyogcG9zc2libHkgbm9uLVZHQSAqLworICAgICAgICAgICAgeGJpX2Vm aS52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIud2lkdGggPQogICAgICAgICAgICAgICAgIG1v ZGVfaW5mby0+SG9yaXpvbnRhbFJlc29sdXRpb247Ci0gICAgICAgICAgICB2Z2FfY29uc29sZV9p bmZvLnUudmVzYV9sZmIuaGVpZ2h0ID0gbW9kZV9pbmZvLT5WZXJ0aWNhbFJlc29sdXRpb247Ci0g ICAgICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuYml0c19wZXJfcGl4ZWwgPSBi cHA7Ci0gICAgICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuYnl0ZXNfcGVyX2xp bmUgPQorICAgICAgICAgICAgeGJpX2VmaS52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuaGVp Z2h0ID0gbW9kZV9pbmZvLT5WZXJ0aWNhbFJlc29sdXRpb247CisgICAgICAgICAgICB4YmlfZWZp LnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5iaXRzX3Blcl9waXhlbCA9IGJwcDsKKyAgICAg ICAgICAgIHhiaV9lZmkudmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmJ5dGVzX3Blcl9saW5l ID0KICAgICAgICAgICAgICAgICAobW9kZV9pbmZvLT5QaXhlbHNQZXJTY2FuTGluZSAqIGJwcCAr IDcpID4+IDM7Ci0gICAgICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIubGZiX2Jh c2UgPSBnb3AtPk1vZGUtPkZyYW1lQnVmZmVyQmFzZTsKLSAgICAgICAgICAgIHZnYV9jb25zb2xl X2luZm8udS52ZXNhX2xmYi5sZmJfc2l6ZSA9CisgICAgICAgICAgICB4YmlfZWZpLnZnYV9jb25z b2xlX2luZm8udS52ZXNhX2xmYi5sZmJfYmFzZSA9IGdvcC0+TW9kZS0+RnJhbWVCdWZmZXJCYXNl OworICAgICAgICAgICAgeGJpX2VmaS52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIubGZiX3Np emUgPQogICAgICAgICAgICAgICAgIChnb3AtPk1vZGUtPkZyYW1lQnVmZmVyU2l6ZSArIDB4ZmZm ZikgPj4gMTY7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlZmlfYnMtPkdldE1lbW9yeU1hcCgm ZWZpX21lbW1hcF9zaXplLCBOVUxMLCAmbWFwX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAmZWZpX21kZXNjX3NpemUsICZtZGVzY192ZXIpOwotICAgIG1iaS5tZW1fdXBwZXIgLT0gZWZp X21lbW1hcF9zaXplOwotICAgIG1iaS5tZW1fdXBwZXIgJj0gLV9fYWxpZ25vZl9fKEVGSV9NRU1P UllfREVTQ1JJUFRPUik7Ci0gICAgaWYgKCBtYmkubWVtX3VwcGVyIDwgeGVuX3BoeXNfc3RhcnQg KQotICAgICAgICBibGV4aXQoTCJPdXQgb2Ygc3RhdGljIG1lbW9yeSIpOwotICAgIGVmaV9tZW1t YXAgPSAodm9pZCAqKShsb25nKW1iaS5tZW1fdXBwZXI7Ci0gICAgc3RhdHVzID0gZWZpX2JzLT5H ZXRNZW1vcnlNYXAoJmVmaV9tZW1tYXBfc2l6ZSwgZWZpX21lbW1hcCwgJm1hcF9rZXksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVmaV9tZGVzY19zaXplLCAmbWRlc2NfdmVy KTsKKyAgICBlZmlfYnMtPkdldE1lbW9yeU1hcCgmeGJpX2VmaS5lZmlfbW1hcF9zaXplLCBOVUxM LCAmbWFwX2tleSwKKwkJCSAmeGJpX2VmaS5lZmlfbW1hcF9kZXNjX3NpemUsICZtZGVzY192ZXIp OworICAgIHhiaV9lZmkubWVtX3VwcGVyIC09IHhiaV9lZmkuZWZpX21tYXBfc2l6ZTsKKyAgICB4 YmlfZWZpLm1lbV91cHBlciAmPSAtX19hbGlnbm9mX18oRUZJX01FTU9SWV9ERVNDUklQVE9SKTsK KyAgICBpZiAoIHhiaV9lZmkubWVtX3VwcGVyIDwgeGVuX3BoeXNfc3RhcnQgKQorICAgICAgICBi bGV4aXQoTCJPdXQgb2Ygc3RhdGljIG1lbW9yeVxyXG4iKTsKKyAgICB4YmlfZWZpLmVmaV9tbWFw ID0gKHZvaWQgKikobG9uZyl4YmlfZWZpLm1lbV91cHBlcjsKKyAgICBzdGF0dXMgPSBlZmlfYnMt PkdldE1lbW9yeU1hcCgmeGJpX2VmaS5lZmlfbW1hcF9zaXplLCB4YmlfZWZpLmVmaV9tbWFwLCAm bWFwX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeGJpX2VmaS5lZmlf bW1hcF9kZXNjX3NpemUsICZtZGVzY192ZXIpOwogICAgIGlmICggRUZJX0VSUk9SKHN0YXR1cykg KQogICAgICAgICBQcmludEVyck1lc2coTCJDYW5ub3Qgb2J0YWluIG1lbW9yeSBtYXAiLCBzdGF0 dXMpOwogCiAgICAgLyogUG9wdWxhdGUgRTgyMCB0YWJsZSBhbmQgY2hlY2sgdHJhbXBvbGluZSBh cmVhIGF2YWlsYWJpbGl0eS4gKi8KLSAgICBlID0gZTgyMG1hcCAtIDE7Ci0gICAgZm9yICggaSA9 IDA7IGkgPCBlZmlfbWVtbWFwX3NpemU7IGkgKz0gZWZpX21kZXNjX3NpemUgKQorICAgIGUgPSB4 YmlfZWZpLmU4MjBtYXAgLSAxOworICAgIGZvciAoIGkgPSAwOyBpIDwgeGJpX2VmaS5lZmlfbW1h cF9zaXplOyBpICs9IHhiaV9lZmkuZWZpX21tYXBfZGVzY19zaXplICkKICAgICB7Ci0gICAgICAg IEVGSV9NRU1PUllfREVTQ1JJUFRPUiAqZGVzYyA9IGVmaV9tZW1tYXAgKyBpOworICAgICAgICBF RklfTUVNT1JZX0RFU0NSSVBUT1IgKmRlc2MgPSB4YmlfZWZpLmVmaV9tbWFwICsgaTsKICAgICAg ICAgdTY0IGxlbiA9IGRlc2MtPk51bWJlck9mUGFnZXMgPDwgRUZJX1BBR0VfU0hJRlQ7CiAgICAg ICAgIHUzMiB0eXBlOwogCkBAIC0xNDI3LDEwICsxNDI5LDEwIEBAIGVmaV9zdGFydChFRklfSEFO RExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJsZSkKICAgICAgICAg ICAgIHR5cGUgPSBFODIwX05WUzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg ICAgIGlmICggZTgyMG5yICYmIHR5cGUgPT0gZS0+dHlwZSAmJgorICAgICAgICBpZiAoIHhiaV9l ZmkuZTgyMG1hcF9uciAmJiB0eXBlID09IGUtPnR5cGUgJiYKICAgICAgICAgICAgICBkZXNjLT5Q aHlzaWNhbFN0YXJ0ID09IGUtPmFkZHIgKyBlLT5zaXplICkKICAgICAgICAgICAgIGUtPnNpemUg Kz0gbGVuOwotICAgICAgICBlbHNlIGlmICggIWxlbiB8fCBlODIwbnIgPj0gRTgyME1BWCApCisg ICAgICAgIGVsc2UgaWYgKCAhbGVuIHx8IHhiaV9lZmkuZTgyMG1hcF9uciA+PSBFODIwTUFYICkK ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTE0Mzgs NyArMTQ0MCw3IEBAIGVmaV9zdGFydChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVN X1RBQkxFICpTeXN0ZW1UYWJsZSkKICAgICAgICAgICAgIGUtPmFkZHIgPSBkZXNjLT5QaHlzaWNh bFN0YXJ0OwogICAgICAgICAgICAgZS0+c2l6ZSA9IGxlbjsKICAgICAgICAgICAgIGUtPnR5cGUg PSB0eXBlOwotICAgICAgICAgICAgKytlODIwbnI7CisgICAgICAgICAgICArK3hiaV9lZmkuZTgy MG1hcF9ucjsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoICF0cmFtcG9saW5lX3BoeXMgKQpA QCAtMTQ1Nyw3ICsxNDU5LDcgQEAgZWZpX3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVG SV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlKQogI2lmZGVmIFVTRV9TRVRfVklSVFVBTF9BRERS RVNTX01BUAogICAgIGVmaV9ycyA9ICh2b2lkICopZWZpX3JzICsgRElSRUNUTUFQX1ZJUlRfU1RB UlQ7CiAjZW5kaWYKLSAgICBlZmlfbWVtbWFwID0gKHZvaWQgKillZmlfbWVtbWFwICsgRElSRUNU TUFQX1ZJUlRfU1RBUlQ7CisgICAgeGJpX2VmaS5lZmlfbW1hcCA9ICh2b2lkICopeGJpX2VmaS5l ZmlfbW1hcCArIERJUkVDVE1BUF9WSVJUX1NUQVJUOwogICAgIGVmaV9md192ZW5kb3IgPSAodm9p ZCAqKWVmaV9md192ZW5kb3IgKyBESVJFQ1RNQVBfVklSVF9TVEFSVDsKIAogICAgIHJlbG9jYXRl X2ltYWdlKF9fWEVOX1ZJUlRfU1RBUlQgLSB4ZW5fcGh5c19zdGFydCk7CkBAIC0xNDkxLDcgKzE0 OTMsNyBAQCBlZmlfc3RhcnQoRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwgRUZJX1NZU1RFTV9UQUJM RSAqU3lzdGVtVGFibGUpCiAgICAgICAgICAgICAgICAgICAgICBbY3NdICJpciIgKF9fSFlQRVJW SVNPUl9DUyksCiAgICAgICAgICAgICAgICAgICAgICBbZHNdICJyIiAoX19IWVBFUlZJU09SX0RT KSwKICAgICAgICAgICAgICAgICAgICAgIFtzdGtvZmZdICJpIiAoU1RBQ0tfU0laRSAtIHNpemVv ZihzdHJ1Y3QgY3B1X2luZm8pKSwKLSAgICAgICAgICAgICAgICAgICAgICJEIiAoJm1iaSkKKyAg ICAgICAgICAgICAgICAgICAgICJEIiAoJnhiaV9lZmkpCiAgICAgICAgICAgICAgICAgICAgOiAi bWVtb3J5IiApOwogICAgIGZvciggOyA7ICk7IC8qIG5vdCByZWFjaGVkICovCiB9CkBAIC0xNTU3 LDkgKzE1NTksOSBAQCB2b2lkIF9faW5pdCBlZmlfaW5pdF9tZW1vcnkodm9pZCkKICNlbmRpZgog CiAgICAgcHJpbnRrKFhFTkxPR19JTkZPICJFRkkgbWVtb3J5IG1hcDpcbiIpOwotICAgIGZvciAo IGkgPSAwOyBpIDwgZWZpX21lbW1hcF9zaXplOyBpICs9IGVmaV9tZGVzY19zaXplICkKKyAgICBm b3IgKCBpID0gMDsgaSA8IHhiaV9lZmkuZWZpX21tYXBfc2l6ZTsgaSArPSB4YmlfZWZpLmVmaV9t bWFwX2Rlc2Nfc2l6ZSApCiAgICAgewotICAgICAgICBFRklfTUVNT1JZX0RFU0NSSVBUT1IgKmRl c2MgPSBlZmlfbWVtbWFwICsgaTsKKyAgICAgICAgRUZJX01FTU9SWV9ERVNDUklQVE9SICpkZXNj ID0geGJpX2VmaS5lZmlfbW1hcCArIGk7CiAgICAgICAgIHU2NCBsZW4gPSBkZXNjLT5OdW1iZXJP ZlBhZ2VzIDw8IEVGSV9QQUdFX1NISUZUOwogICAgICAgICB1bnNpZ25lZCBsb25nIHNtZm4sIGVt Zm47CiAgICAgICAgIHVuc2lnbmVkIGludCBwcm90ID0gUEFHRV9IWVBFUlZJU09SOwpAQCAtMTYz NCw4ICsxNjM2LDggQEAgdm9pZCBfX2luaXQgZWZpX2luaXRfbWVtb3J5KHZvaWQpCiAgICAgfQog CiAjaWZkZWYgVVNFX1NFVF9WSVJUVUFMX0FERFJFU1NfTUFQCi0gICAgZWZpX3JzLT5TZXRWaXJ0 dWFsQWRkcmVzc01hcChlZmlfbWVtbWFwX3NpemUsIGVmaV9tZGVzY19zaXplLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWRlc2NfdmVyLCBlZmlfbWVtbWFwKTsKKyAgICBlZmlf cnMtPlNldFZpcnR1YWxBZGRyZXNzTWFwKHhiaV9lZmkuZWZpX21tYXBfc2l6ZSwgeGJpX2VmaS5l ZmlfbW1hcF9kZXNjX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZGVz Y192ZXIsIHhiaV9lZmkuZWZpX21tYXApOwogI2Vsc2UKICAgICAvKiBTZXQgdXAgMToxIHBhZ2Ug dGFibGVzIHRvIGRvIHJ1bnRpbWUgY2FsbHMgaW4gInBoeXNpY2FsIiBtb2RlLiAqLwogICAgIGVm aV9sNF9wZ3RhYmxlID0gYWxsb2NfeGVuX3BhZ2V0YWJsZSgpOwpAQCAtMTY0NSw5ICsxNjQ3LDkg QEAgdm9pZCBfX2luaXQgZWZpX2luaXRfbWVtb3J5KHZvaWQpCiAgICAgY29weV9tYXBwaW5nKDAs IG1heF9wYWdlLCByYW1fcmFuZ2VfdmFsaWQpOwogCiAgICAgLyogSW5zZXJ0IG5vbi1SQU0gcnVu dGltZSBtYXBwaW5ncyBpbnNpZGUgdGhlIGRpcmVjdCBtYXAuICovCi0gICAgZm9yICggaSA9IDA7 IGkgPCBlZmlfbWVtbWFwX3NpemU7IGkgKz0gZWZpX21kZXNjX3NpemUgKQorICAgIGZvciAoIGkg PSAwOyBpIDwgeGJpX2VmaS5lZmlfbW1hcF9zaXplOyBpICs9IHhiaV9lZmkuZWZpX21tYXBfZGVz Y19zaXplICkKICAgICB7Ci0gICAgICAgIGNvbnN0IEVGSV9NRU1PUllfREVTQ1JJUFRPUiAqZGVz YyA9IGVmaV9tZW1tYXAgKyBpOworICAgICAgICBjb25zdCBFRklfTUVNT1JZX0RFU0NSSVBUT1Ig KmRlc2MgPSB4YmlfZWZpLmVmaV9tbWFwICsgaTsKIAogICAgICAgICBpZiAoIChkZXNjLT5BdHRy aWJ1dGUgJiBFRklfTUVNT1JZX1JVTlRJTUUpICYmCiAgICAgICAgICAgICAgZGVzYy0+VmlydHVh bFN0YXJ0ICE9IElOVkFMSURfVklSVFVBTF9BRERSRVNTICYmCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvZWZpL2VmaS5oIGIveGVuL2FyY2gveDg2L2VmaS9lZmkuaAppbmRleCBhODBkNWYxLi40 NjA5OWRlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZWZpL2VmaS5oCisrKyBiL3hlbi9hcmNo L3g4Ni9lZmkvZWZpLmgKQEAgLTI1LDkgKzI1LDYgQEAgZXh0ZXJuIGNvbnN0IENIQVIxNiAqZWZp X2Z3X3ZlbmRvcjsKIAogZXh0ZXJuIEVGSV9SVU5USU1FX1NFUlZJQ0VTICplZmlfcnM7CiAKLWV4 dGVybiBVSU5UTiBlZmlfbWVtbWFwX3NpemUsIGVmaV9tZGVzY19zaXplOwotZXh0ZXJuIHZvaWQg KmVmaV9tZW1tYXA7Ci0KIGV4dGVybiBsNF9wZ2VudHJ5X3QgKmVmaV9sNF9wZ3RhYmxlOwogCiBl eHRlcm4gY29uc3Qgc3RydWN0IGVmaV9wY2lfcm9tICplZmlfcGNpX3JvbXM7CmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvZWZpL3J1bnRpbWUuYyBiL3hlbi9hcmNoL3g4Ni9lZmkvcnVudGltZS5j CmluZGV4IDE2Njg1MmQuLjNlZjRiNWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9lZmkvcnVu dGltZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9lZmkvcnVudGltZS5jCkBAIC01LDYgKzUsNyBAQAog I2luY2x1ZGUgPHhlbi9pcnEuaD4KICNpbmNsdWRlIDx4ZW4vdGltZS5oPgogI2luY2x1ZGUgPGFz bS9tYzE0NjgxOHJ0Yy5oPgorI2luY2x1ZGUgPGFzbS94YmkuaD4KIAogREVGSU5FX1hFTl9HVUVT VF9IQU5ETEUoQ0hBUjE2KTsKIApAQCAtMjYsMjUgKzI3LDUwIEBAIGNvbnN0IENIQVIxNiAqX19y ZWFkX21vc3RseSBlZmlfZndfdmVuZG9yOwogRUZJX1JVTlRJTUVfU0VSVklDRVMgKl9fcmVhZF9t b3N0bHkgZWZpX3JzOwogc3RhdGljIERFRklORV9TUElOTE9DSyhlZmlfcnNfbG9jayk7CiAKLVVJ TlROIF9fcmVhZF9tb3N0bHkgZWZpX21lbW1hcF9zaXplOwotVUlOVE4gX19yZWFkX21vc3RseSBl ZmlfbWRlc2Nfc2l6ZTsKLXZvaWQgKl9fcmVhZF9tb3N0bHkgZWZpX21lbW1hcDsKLQogVUlOVDY0 IF9fcmVhZF9tb3N0bHkgZWZpX2Jvb3RfbWF4X3Zhcl9zdG9yZV9zaXplOwogVUlOVDY0IF9fcmVh ZF9tb3N0bHkgZWZpX2Jvb3RfcmVtYWluX3Zhcl9zdG9yZV9zaXplOwogVUlOVDY0IF9fcmVhZF9t b3N0bHkgZWZpX2Jvb3RfbWF4X3Zhcl9zaXplOwogCi1zdHJ1Y3QgZWZpIF9fcmVhZF9tb3N0bHkg ZWZpID0gewotCS5hY3BpICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5hY3BpMjAgPSBF RklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5tcHMgICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERS LAotCS5zbWJpb3MgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAotfTsKLQogbDRfcGdlbnRyeV90 ICpfX3JlYWRfbW9zdGx5IGVmaV9sNF9wZ3RhYmxlOwogCiBjb25zdCBzdHJ1Y3QgZWZpX3BjaV9y b20gKl9fcmVhZF9tb3N0bHkgZWZpX3BjaV9yb21zOwogCitleHRlcm4gc3RydWN0IGU4MjBlbnRy eSBlODIwbWFwW107CitleHRlcm4gc3RydWN0IGVkZF9pbmZvIGJvb3RfZWRkX2luZm9bXTsKK2V4 dGVybiBzdHJ1Y3QgbWJyX3NpZ25hdHVyZSBib290X21icl9zaWduYXR1cmVbXTsKKworZXh0ZXJu IHVuc2lnbmVkIGNoYXIgYm9vdF9lZGlkX2luZm9bMTI4XTsKKworc3RhdGljIGJvb3RfbW9kdWxl X3QgX19yZWFkX21vc3RseSB4YmlfbW9kc1szXSA9IHt9OworCit4YmlfdCBfX3JlYWRfbW9zdGx5 IHhiaV9lZmkgPSB7CisgICAgLmJvb3RfbG9hZGVyX25hbWUgPSAiRUZJIiwKKyAgICAuY21kbGlu ZSA9IE5VTEwsCisgICAgLm1tYXBfdHlwZSA9ICJFRkkiLAorICAgIC5tZW1fdXBwZXIgPSAwLAor ICAgIC5lODIwbWFwX25yID0gMCwKKyAgICAuZTgyMG1hcCA9IGU4MjBtYXAsCisgICAgLmVmaV9t bWFwX3NpemUgPSAwLAorICAgIC5lZmlfbW1hcF9kZXNjX3NpemUgPSAwLAorICAgIC5lZmlfbW1h cCA9IE5VTEwsCisgICAgLm1wcyA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisgICAgLmFjcGkg PSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAorICAgIC5hY3BpMjAgPSBFRklfSU5WQUxJRF9UQUJM RV9BRERSLAorICAgIC5zbWJpb3MgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAorICAgIC5lZmlf c3lzdGVtX3RhYmxlID0gTlVMTCwKKyAgICAudmdhX2NvbnNvbGVfaW5mbyA9IHt9LAorICAgIC5l ZGlkX2NhcHMgPSAwLAorICAgIC5lZGlkX2luZm8gPSBib290X2VkaWRfaW5mbywKKyAgICAuZWRk X2luZm9fbnIgPSAwLAorICAgIC5lZGRfaW5mbyA9IGJvb3RfZWRkX2luZm8sCisgICAgLm1icl9z aWduYXR1cmVfbnIgPSAwLAorICAgIC5tYnJfc2lnbmF0dXJlID0gYm9vdF9tYnJfc2lnbmF0dXJl LAorICAgIC5tb2RzX25yID0gMCwKKyAgICAubW9kcyA9IHhiaV9tb2RzLAorICAgIC53YXJuX21z ZyA9IE5VTEwsCisgICAgLmVycl9tc2cgPSBOVUxMCit9OworCiB1bnNpZ25lZCBsb25nIGVmaV9y c19lbnRlcih2b2lkKQogewogICAgIHN0YXRpYyBjb25zdCB1MTYgZmN3ID0gRkNXX0RFRkFVTFQ7 CkBAIC0xNzMsOSArMTk5LDkgQEAgaW50IGVmaV9nZXRfaW5mbyh1aW50MzJfdCBpZHgsIHVuaW9u IHhlbnBmX2VmaV9pbmZvICppbmZvKQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNh c2UgWEVOX0ZXX0VGSV9NRU1fSU5GTzoKLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBlZmlfbWVt bWFwX3NpemU7IGkgKz0gZWZpX21kZXNjX3NpemUgKQorICAgICAgICBmb3IgKCBpID0gMDsgaSA8 IHhiaS0+ZWZpX21tYXBfc2l6ZTsgaSArPSB4YmktPmVmaV9tbWFwX2Rlc2Nfc2l6ZSApCiAgICAg ICAgIHsKLSAgICAgICAgICAgIEVGSV9NRU1PUllfREVTQ1JJUFRPUiAqZGVzYyA9IGVmaV9tZW1t YXAgKyBpOworICAgICAgICAgICAgRUZJX01FTU9SWV9ERVNDUklQVE9SICpkZXNjID0geGJpLT5l ZmlfbW1hcCArIGk7CiAgICAgICAgICAgICB1NjQgbGVuID0gZGVzYy0+TnVtYmVyT2ZQYWdlcyA8 PCBFRklfUEFHRV9TSElGVDsKIAogICAgICAgICAgICAgaWYgKCBpbmZvLT5tZW0uYWRkciA+PSBk ZXNjLT5QaHlzaWNhbFN0YXJ0ICYmCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaW5pdF94Ymku YyBiL3hlbi9hcmNoL3g4Ni9pbml0X3hiaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmFlYmI5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvaW5pdF94Ymku YwpAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMywgMjAxNCBPcmFj bGUgQ28uLCBEYW5pZWwgS2lwZXIKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor ICovCisKKy8qCisgKiBTb21lIGlkZWFzIGFyZSB0YWtlbiAob3V0KSBmcm9tIHhlbi9hcmNoL3g4 Ni9ib290L3JlbG9jLmMsCisgKiB4ZW4vYXJjaC94ODYvZWZpL2Jvb3QuYyBhbmQgeGVuL2FyY2gv eDg2L3NldHVwLmMuCisgKi8KKworI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhl bi9jYWNoZS5oPgorI2luY2x1ZGUgPHhlbi9lZmkuaD4KKyNpbmNsdWRlIDx4ZW4vaW5pdC5oPgor I2luY2x1ZGUgPHhlbi9tdWx0aWJvb3QuaD4KKworI2luY2x1ZGUgPGFzbS9lODIwLmg+CisjaW5j bHVkZSA8YXNtL21iZC5oPgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL3hi aS5oPgorCitzdHJ1Y3QgYm9vdF92aWRlb19pbmZvIHsKKyAgICB1OCAgb3JpZ194OyAgICAgICAg ICAgICAvKiAweDAwICovCisgICAgdTggIG9yaWdfeTsgICAgICAgICAgICAgLyogMHgwMSAqLwor ICAgIHU4ICBvcmlnX3ZpZGVvX21vZGU7ICAgIC8qIDB4MDIgKi8KKyAgICB1OCAgb3JpZ192aWRl b19jb2xzOyAgICAvKiAweDAzICovCisgICAgdTggIG9yaWdfdmlkZW9fbGluZXM7ICAgLyogMHgw NCAqLworICAgIHU4ICBvcmlnX3ZpZGVvX2lzVkdBOyAgIC8qIDB4MDUgKi8KKyAgICB1MTYgb3Jp Z192aWRlb19wb2ludHM7ICAvKiAweDA2ICovCisKKyAgICAvKiBWRVNBIGdyYXBoaWMgbW9kZSAt LSBsaW5lYXIgZnJhbWUgYnVmZmVyICovCisgICAgdTMyIGNhcGFiaWxpdGllczsgICAgICAgLyog MHgwOCAqLworICAgIHUxNiBsZmJfbGluZWxlbmd0aDsgICAgIC8qIDB4MGMgKi8KKyAgICB1MTYg bGZiX3dpZHRoOyAgICAgICAgICAvKiAweDBlICovCisgICAgdTE2IGxmYl9oZWlnaHQ7ICAgICAg ICAgLyogMHgxMCAqLworICAgIHUxNiBsZmJfZGVwdGg7ICAgICAgICAgIC8qIDB4MTIgKi8KKyAg ICB1MzIgbGZiX2Jhc2U7ICAgICAgICAgICAvKiAweDE0ICovCisgICAgdTMyIGxmYl9zaXplOyAg ICAgICAgICAgLyogMHgxOCAqLworICAgIHU4ICByZWRfc2l6ZTsgICAgICAgICAgIC8qIDB4MWMg Ki8KKyAgICB1OCAgcmVkX3BvczsgICAgICAgICAgICAvKiAweDFkICovCisgICAgdTggIGdyZWVu X3NpemU7ICAgICAgICAgLyogMHgxZSAqLworICAgIHU4ICBncmVlbl9wb3M7ICAgICAgICAgIC8q IDB4MWYgKi8KKyAgICB1OCAgYmx1ZV9zaXplOyAgICAgICAgICAvKiAweDIwICovCisgICAgdTgg IGJsdWVfcG9zOyAgICAgICAgICAgLyogMHgyMSAqLworICAgIHU4ICByc3ZkX3NpemU7ICAgICAg ICAgIC8qIDB4MjIgKi8KKyAgICB1OCAgcnN2ZF9wb3M7ICAgICAgICAgICAvKiAweDIzICovCisg ICAgdTE2IHZlc2FwbV9zZWc7ICAgICAgICAgLyogMHgyNCAqLworICAgIHUxNiB2ZXNhcG1fb2Zm OyAgICAgICAgIC8qIDB4MjYgKi8KKyAgICB1MTYgdmVzYV9hdHRyaWI7ICAgICAgICAvKiAweDI4 ICovCit9OworCisvKiBUaGVzZSBzeW1ib2xzIGxpdmUgaW4gdGhlIGJvb3QgdHJhbXBvbGluZS4g QWNjZXNzIHZpYSBib290c3ltKCkuICovCitleHRlcm4gc3RydWN0IGU4MjBlbnRyeSBlODIwbWFw W107CitleHRlcm4gaW50IGU4MjBucjsKK2V4dGVybiB1bnNpZ25lZCBpbnQgbG93bWVtX2tiLCBo aWdobWVtX2tiOworCitleHRlcm4gc3RydWN0IGJvb3RfdmlkZW9faW5mbyBib290X3ZpZF9pbmZv OworCitleHRlcm4gdW5zaWduZWQgc2hvcnQgYm9vdF9lZGlkX2NhcHM7CitleHRlcm4gdW5zaWdu ZWQgY2hhciBib290X2VkaWRfaW5mb1sxMjhdOworCitleHRlcm4gc3RydWN0IGVkZF9pbmZvIGJv b3RfZWRkX2luZm9bXTsKK2V4dGVybiB1OCBib290X2VkZF9pbmZvX25yOworCitleHRlcm4gc3Ry dWN0IG1icl9zaWduYXR1cmUgYm9vdF9tYnJfc2lnbmF0dXJlW107CitleHRlcm4gdTggYm9vdF9t YnJfc2lnbmF0dXJlX25yOworCitzdGF0aWMgeGJpX3QgX19yZWFkX21vc3RseSB4YmlfbWIgPSB7 CisgICAgLmJvb3RfbG9hZGVyX25hbWUgPSAiVU5LTk9XTiIsCisgICAgLmNtZGxpbmUgPSBOVUxM LAorICAgIC5tbWFwX3R5cGUgPSBOVUxMLAorICAgIC5tZW1fdXBwZXIgPSAwLAorICAgIC5lODIw bWFwX25yID0gMCwKKyAgICAuZTgyMG1hcCA9IE5VTEwsCisgICAgLmVmaV9tbWFwX3NpemUgPSAw LAorICAgIC5lZmlfbW1hcF9kZXNjX3NpemUgPSAwLAorICAgIC5lZmlfbW1hcCA9IE5VTEwsCisg ICAgLm1wcyA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisgICAgLmFjcGkgPSBFRklfSU5WQUxJ RF9UQUJMRV9BRERSLAorICAgIC5hY3BpMjAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAorICAg IC5zbWJpb3MgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAorICAgIC5lZmlfc3lzdGVtX3RhYmxl ID0gTlVMTCwKKyAgICAudmdhX2NvbnNvbGVfaW5mbyA9IHt9LAorICAgIC5lZGlkX2NhcHMgPSAw LAorICAgIC5lZGlkX2luZm8gPSBOVUxMLAorICAgIC5lZGRfaW5mb19uciA9IDAsCisgICAgLmVk ZF9pbmZvID0gTlVMTCwKKyAgICAubWJyX3NpZ25hdHVyZV9uciA9IDAsCisgICAgLm1icl9zaWdu YXR1cmUgPSBOVUxMLAorICAgIC5tb2RzX25yID0gMCwKKyAgICAubW9kcyA9IE5VTEwsCisgICAg Lndhcm5fbXNnID0gTlVMTCwKKyAgICAuZXJyX21zZyA9IE5VTEwKK307CisKKyNkZWZpbmUgZTgy MF9yYXcgYm9vdHN5bShlODIwbWFwKQorI2RlZmluZSBlODIwX3Jhd19uciBib290c3ltKGU4MjBu cikKKworc3RhdGljIHZvaWQgX19pbml0IGluaXRfbW1hcCh4YmlfdCAqeGJpLCBtYmRfdCAqbWJk KQoreworICAgIGludCBieXRlcyA9IDA7CisgICAgbWVtb3J5X21hcF90ICptYXA7CisKKyAgICBp ZiAoIGU4MjBfcmF3X25yICkKKyAgICAgICAgeGJpLT5tbWFwX3R5cGUgPSAiWGVuLWU4MjAiOwor ICAgIGVsc2UgaWYgKCBtYmQtPm1tYXBfc2l6ZSApCisgICAgeworICAgICAgICB4YmktPm1tYXBf dHlwZSA9ICJNdWx0aWJvb3QtZTgyMCI7CisKKyAgICAgICAgd2hpbGUgKCAoYnl0ZXMgPCBtYmQt Pm1tYXBfc2l6ZSkgJiYgKGU4MjBfcmF3X25yIDwgRTgyME1BWCkgKQorICAgICAgICB7CisgICAg ICAgICAgICAvKgorICAgICAgICAgICAgICogVGhpcyBpcyBhIGdyb3NzIHdvcmthcm91bmQgZm9y IGEgQklPUyBidWcuIFNvbWUgYm9vdGxvYWRlcnMgZG8KKyAgICAgICAgICAgICAqIG5vdCB3cml0 ZSBlODIwIG1hcCBlbnRyaWVzIGludG8gcHJlLXplcm9lZCBtZW1vcnkuIFRoaXMgaXMKKyAgICAg ICAgICAgICAqIG9rYXkgaWYgdGhlIEJJT1MgZmlsbHMgaW4gYWxsIGZpZWxkcyBvZiB0aGUgbWFw IGVudHJ5LCBidXQKKyAgICAgICAgICAgICAqIHNvbWUgYnJva2VuIEJJT1NlcyBkbyBub3QgYm90 aGVyIHRvIHdyaXRlIHRoZSBoaWdoIHdvcmQgb2YKKyAgICAgICAgICAgICAqIHRoZSBsZW5ndGgg ZmllbGQgaWYgdGhlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gNEdCLiBXZQorICAgICAgICAgICAg ICogZGV0ZWN0IGFuZCBmaXggdGhpcyBieSBmbGFnZ2luZyBzZWN0aW9ucyBiZWxvdyA0R0IgdGhh dAorICAgICAgICAgICAgICogYXBwZWFyIHRvIGJlIGxhcmdlciB0aGFuIDRHQiBpbiBzaXplLgor ICAgICAgICAgICAgICovCisgICAgICAgICAgICBtYXAgPSBfX3ZhKG1iZC0+bW1hcCArIGJ5dGVz KTsKKworICAgICAgICAgICAgaWYgKCAhbWFwLT5iYXNlX2FkZHJfaGlnaCAmJiBtYXAtPmxlbmd0 aF9oaWdoICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtYXAtPmxlbmd0aF9oaWdo ID0gMDsKKyAgICAgICAgICAgICAgICB4YmktPndhcm5fbXNnID0gIldBUk5JTkc6IEJ1Z2d5IGU4 MjAgbWFwIGRldGVjdGVkIGFuZCBmaXhlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIodHJ1bmNhdGVkIGxlbmd0aCBmaWVsZHMpLlxuIjsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgZTgyMF9yYXdbZTgyMF9yYXdfbnJdLmFkZHIgPQorICAgICAgICAgICAgICAgICgo dTY0KW1hcC0+YmFzZV9hZGRyX2hpZ2ggPDwgMzIpIHwgKHU2NCltYXAtPmJhc2VfYWRkcl9sb3c7 CisgICAgICAgICAgICBlODIwX3Jhd1tlODIwX3Jhd19ucl0uc2l6ZSA9CisgICAgICAgICAgICAg ICAgKCh1NjQpbWFwLT5sZW5ndGhfaGlnaCA8PCAzMikgfCAodTY0KW1hcC0+bGVuZ3RoX2xvdzsK KyAgICAgICAgICAgIGU4MjBfcmF3W2U4MjBfcmF3X25yXS50eXBlID0gbWFwLT50eXBlOworICAg ICAgICAgICAgZTgyMF9yYXdfbnIrKzsKKworICAgICAgICAgICAgYnl0ZXMgKz0gbWFwLT5zaXpl ICsgNDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICggYm9vdHN5bShsb3dtZW1fa2Ip ICkKKyAgICB7CisgICAgICAgIHhiaS0+bW1hcF90eXBlID0gIlhlbi1lODAxIjsKKworICAgICAg ICBlODIwX3Jhd1swXS5hZGRyID0gMDsKKyAgICAgICAgZTgyMF9yYXdbMF0uc2l6ZSA9IGJvb3Rz eW0obG93bWVtX2tiKSA8PCAxMDsKKyAgICAgICAgZTgyMF9yYXdbMF0udHlwZSA9IEU4MjBfUkFN OworICAgICAgICBlODIwX3Jhd1sxXS5hZGRyID0gMHgxMDAwMDA7CisgICAgICAgIGU4MjBfcmF3 WzFdLnNpemUgPSBib290c3ltKGhpZ2htZW1fa2IpIDw8IDEwOworICAgICAgICBlODIwX3Jhd1sx XS50eXBlID0gRTgyMF9SQU07CisgICAgICAgIGU4MjBfcmF3X25yID0gMjsKKyAgICB9CisgICAg ZWxzZSBpZiAoIG1iZC0+bWVtX2xvd2VyIHx8IG1iZC0+bWVtX3VwcGVyICkKKyAgICB7CisgICAg ICAgIHhiaS0+bW1hcF90eXBlID0gIk11bHRpYm9vdC1lODAxIjsKKworICAgICAgICBlODIwX3Jh d1swXS5hZGRyID0gMDsKKyAgICAgICAgZTgyMF9yYXdbMF0uc2l6ZSA9IG1iZC0+bWVtX2xvd2Vy IDw8IDEwOworICAgICAgICBlODIwX3Jhd1swXS50eXBlID0gRTgyMF9SQU07CisgICAgICAgIGU4 MjBfcmF3WzFdLmFkZHIgPSAweDEwMDAwMDsKKyAgICAgICAgZTgyMF9yYXdbMV0uc2l6ZSA9IG1i ZC0+bWVtX3VwcGVyIDw8IDEwOworICAgICAgICBlODIwX3Jhd1sxXS50eXBlID0gRTgyMF9SQU07 CisgICAgICAgIGU4MjBfcmF3X25yID0gMjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg ICAgeGJpLT5lcnJfbXNnID0gIkJvb3Rsb2FkZXIgcHJvdmlkZWQgbm8gbWVtb3J5IGluZm9ybWF0 aW9uLlxuIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHhiaS0+bWVtX3VwcGVyID0g bWJkLT5tZW1fdXBwZXI7CisKKyAgICB4YmktPmU4MjBtYXBfbnIgPSBlODIwX3Jhd19ucjsKKyAg ICB4YmktPmU4MjBtYXAgPSBlODIwX3JhdzsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGluaXRf dmlkZW9faW5mbyh4YmlfdCAqeGJpKQoreworICAgIHN0cnVjdCBib290X3ZpZGVvX2luZm8gKmJ2 aSA9ICZib290c3ltKGJvb3RfdmlkX2luZm8pOworCisgICAgaWYgKCAoYnZpLT5vcmlnX3ZpZGVv X2lzVkdBID09IDEpICYmIChidmktPm9yaWdfdmlkZW9fbW9kZSA9PSAzKSApCisgICAgeworICAg ICAgICB4YmktPnZnYV9jb25zb2xlX2luZm8udmlkZW9fdHlwZSA9IFhFTl9WR0FUWVBFX1RFWFRf TU9ERV8zOworICAgICAgICB4YmktPnZnYV9jb25zb2xlX2luZm8udS50ZXh0X21vZGVfMy5mb250 X2hlaWdodCA9IGJ2aS0+b3JpZ192aWRlb19wb2ludHM7CisgICAgICAgIHhiaS0+dmdhX2NvbnNv bGVfaW5mby51LnRleHRfbW9kZV8zLmN1cnNvcl94ID0gYnZpLT5vcmlnX3g7CisgICAgICAgIHhi aS0+dmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLmN1cnNvcl95ID0gYnZpLT5vcmlnX3k7 CisgICAgICAgIHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLnJvd3MgPSBidmkt Pm9yaWdfdmlkZW9fbGluZXM7CisgICAgICAgIHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnRleHRf bW9kZV8zLmNvbHVtbnMgPSBidmktPm9yaWdfdmlkZW9fY29sczsKKyAgICB9CisgICAgZWxzZSBp ZiAoIGJ2aS0+b3JpZ192aWRlb19pc1ZHQSA9PSAweDIzICkKKyAgICB7CisgICAgICAgIHhiaS0+ dmdhX2NvbnNvbGVfaW5mby52aWRlb190eXBlID0gWEVOX1ZHQVRZUEVfVkVTQV9MRkI7CisgICAg ICAgIHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLndpZHRoID0gYnZpLT5sZmJfd2lk dGg7CisgICAgICAgIHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmhlaWdodCA9IGJ2 aS0+bGZiX2hlaWdodDsKKyAgICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIu Ynl0ZXNfcGVyX2xpbmUgPSBidmktPmxmYl9saW5lbGVuZ3RoOworICAgICAgICB4YmktPnZnYV9j b25zb2xlX2luZm8udS52ZXNhX2xmYi5iaXRzX3Blcl9waXhlbCA9IGJ2aS0+bGZiX2RlcHRoOwor ICAgICAgICB4YmktPnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5sZmJfYmFzZSA9IGJ2aS0+ bGZiX2Jhc2U7CisgICAgICAgIHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmxmYl9z aXplID0gYnZpLT5sZmJfc2l6ZTsKKyAgICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVz YV9sZmIucmVkX3BvcyA9IGJ2aS0+cmVkX3BvczsKKyAgICAgICAgeGJpLT52Z2FfY29uc29sZV9p bmZvLnUudmVzYV9sZmIucmVkX3NpemUgPSBidmktPnJlZF9zaXplOworICAgICAgICB4YmktPnZn YV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9wb3MgPSBidmktPmdyZWVuX3BvczsKKyAg ICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuZ3JlZW5fc2l6ZSA9IGJ2aS0+ Z3JlZW5fc2l6ZTsKKyAgICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuYmx1 ZV9wb3MgPSBidmktPmJsdWVfcG9zOworICAgICAgICB4YmktPnZnYV9jb25zb2xlX2luZm8udS52 ZXNhX2xmYi5ibHVlX3NpemUgPSBidmktPmJsdWVfc2l6ZTsKKyAgICAgICAgeGJpLT52Z2FfY29u c29sZV9pbmZvLnUudmVzYV9sZmIucnN2ZF9wb3MgPSBidmktPnJzdmRfcG9zOworICAgICAgICB4 YmktPnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5yc3ZkX3NpemUgPSBidmktPnJzdmRfc2l6 ZTsKKyAgICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuZ2JsX2NhcHMgPSBi dmktPmNhcGFiaWxpdGllczsKKyAgICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9s ZmIubW9kZV9hdHRycyA9IGJ2aS0+dmVzYV9hdHRyaWI7CisgICAgfQorCisgICAgeGJpLT5lZGlk X2NhcHMgPSBib290c3ltKGJvb3RfZWRpZF9jYXBzKTsKKyAgICB4YmktPmVkaWRfaW5mbyA9IGJv b3RzeW0oYm9vdF9lZGlkX2luZm8pOworfQorCit4YmlfdCBfX2luaXQgKl9faW5pdF94YmkodTMy IG1iZF9wdHIpCit7CisgICAgbWJkX3QgKm1iZCA9IF9fdmEobWJkX3B0cik7CisKKyAgICBpZiAo IG1iZC0+Ym9vdF9sb2FkZXJfbmFtZSApCisgICAgICAgIHhiaV9tYi5ib290X2xvYWRlcl9uYW1l ID0gX192YShtYmQtPmJvb3RfbG9hZGVyX25hbWUpOworCisgICAgaWYgKCBtYmQtPmNtZGxpbmUg KQorICAgICAgICB4YmlfbWIuY21kbGluZSA9IF9fdmEobWJkLT5jbWRsaW5lKTsKKworICAgIGlu aXRfbW1hcCgmeGJpX21iLCBtYmQpOworCisgICAgaWYgKCB4YmlfbWIuZXJyX21zZyApCisgICAg ICAgIGdvdG8gZXJyOworCisgICAgaW5pdF92aWRlb19pbmZvKCZ4YmlfbWIpOworCisgICAgeGJp X21iLmVkZF9pbmZvX25yID0gYm9vdHN5bShib290X2VkZF9pbmZvX25yKTsKKyAgICB4YmlfbWIu ZWRkX2luZm8gPSBib290c3ltKGJvb3RfZWRkX2luZm8pOworCisgICAgeGJpX21iLm1icl9zaWdu YXR1cmVfbnIgPSBib290c3ltKGJvb3RfbWJyX3NpZ25hdHVyZV9ucik7CisgICAgeGJpX21iLm1i cl9zaWduYXR1cmUgPSBib290c3ltKGJvb3RfbWJyX3NpZ25hdHVyZSk7CisKKyAgICB4YmlfbWIu bW9kc19uciA9IG1iZC0+bW9kc19ucjsKKyAgICB4YmlfbWIubW9kcyA9IF9fdmEobWJkLT5tb2Rz KTsKKworZXJyOgorICAgIHJldHVybiAmeGJpX21iOworfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21pY3JvY29kZS5jIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCmluZGV4IDA5MWQ1ZDEu LjljYWJmMGEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYworKysgYi94ZW4v YXJjaC94ODYvbWljcm9jb2RlLmMKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlIDxhc20vc2V0 dXAuaD4KICNpbmNsdWRlIDxhc20vbWljcm9jb2RlLmg+CiAKLXN0YXRpYyBtb2R1bGVfdCBfX2lu aXRkYXRhIHVjb2RlX21vZDsKLXN0YXRpYyB2b2lkICooKl9faW5pdGRhdGEgdWNvZGVfbW9kX21h cCkoY29uc3QgbW9kdWxlX3QgKik7CitzdGF0aWMgYm9vdF9tb2R1bGVfdCBfX2luaXRkYXRhIHVj b2RlX21vZDsKK3N0YXRpYyB2b2lkICooKl9faW5pdGRhdGEgdWNvZGVfbW9kX21hcCkoY29uc3Qg Ym9vdF9tb2R1bGVfdCAqKTsKIHN0YXRpYyBzaWduZWQgaW50IF9faW5pdGRhdGEgdWNvZGVfbW9k X2lkeDsKIHN0YXRpYyBib29sX3QgX19pbml0ZGF0YSB1Y29kZV9tb2RfZm9yY2VkOwogc3RhdGlj IGNwdW1hc2tfdCBfX2luaXRkYXRhIGluaXRfbWFzazsKQEAgLTk0LDEwICs5NCw5IEBAIGN1c3Rv bV9wYXJhbSgidWNvZGUiLCBwYXJzZV91Y29kZSk7CiAKIHZvaWQgX19pbml0IG1pY3JvY29kZV9z Y2FuX21vZHVsZSgKICAgICB1bnNpZ25lZCBsb25nICptb2R1bGVfbWFwLAotICAgIGNvbnN0IG11 bHRpYm9vdF9pbmZvX3QgKm1iaSwKLSAgICB2b2lkICooKmJvb3RtYXApKGNvbnN0IG1vZHVsZV90 ICopKQorICAgIGNvbnN0IHhiaV90ICp4YmksCisgICAgdm9pZCAqKCpib290bWFwKShjb25zdCBi b290X21vZHVsZV90ICopKQogewotICAgIG1vZHVsZV90ICptb2QgPSAobW9kdWxlX3QgKilfX3Zh KG1iaS0+bW9kc19hZGRyKTsKICAgICB1aW50NjRfdCAqX2Jsb2Jfc3RhcnQ7CiAgICAgdW5zaWdu ZWQgbG9uZyBfYmxvYl9zaXplOwogICAgIHN0cnVjdCBjcGlvX2RhdGEgY2Q7CkBAIC0xMTksMTMg KzExOCwxMyBAQCB2b2lkIF9faW5pdCBtaWNyb2NvZGVfc2Nhbl9tb2R1bGUoCiAgICAgLyoKICAg ICAgKiBUcnkgYWxsIG1vZHVsZXMgYW5kIHNlZSB3aGljaGV2ZXIgY291bGQgYmUgdGhlIG1pY3Jv Y29kZSBibG9iLgogICAgICAqLwotICAgIGZvciAoIGkgPSAxIC8qIElnbm9yZSBkb20wIGtlcm5l bCAqLzsgaSA8IG1iaS0+bW9kc19jb3VudDsgaSsrICkKKyAgICBmb3IgKCBpID0gMSAvKiBJZ25v cmUgZG9tMCBrZXJuZWwgKi87IGkgPCB4YmktPm1vZHNfbnI7IGkrKyApCiAgICAgewogICAgICAg ICBpZiAoICF0ZXN0X2JpdChpLCBtb2R1bGVfbWFwKSApCiAgICAgICAgICAgICBjb250aW51ZTsK IAotICAgICAgICBfYmxvYl9zdGFydCA9IGJvb3RtYXAoJm1vZFtpXSk7Ci0gICAgICAgIF9ibG9i X3NpemUgPSBtb2RbaV0ubW9kX2VuZDsKKyAgICAgICAgX2Jsb2Jfc3RhcnQgPSBib290bWFwKCZ4 YmktPm1vZHNbaV0pOworICAgICAgICBfYmxvYl9zaXplID0geGJpLT5tb2RzW2ldLmVuZDsKICAg ICAgICAgaWYgKCAhX2Jsb2Jfc3RhcnQgKQogICAgICAgICB7CiAgICAgICAgICAgICBwcmludGso IkNvdWxkIG5vdCBtYXAgbXVsdGlib290IG1vZHVsZSAjJWQgKHNpemU6ICVsZClcbiIsCkBAIC0x NjUsMjEgKzE2NCwxOSBAQCBlcnI6CiB9CiB2b2lkIF9faW5pdCBtaWNyb2NvZGVfZ3JhYl9tb2R1 bGUoCiAgICAgdW5zaWduZWQgbG9uZyAqbW9kdWxlX21hcCwKLSAgICBjb25zdCBtdWx0aWJvb3Rf aW5mb190ICptYmksCi0gICAgdm9pZCAqKCptYXApKGNvbnN0IG1vZHVsZV90ICopKQorICAgIGNv bnN0IHhiaV90ICp4YmksCisgICAgdm9pZCAqKCptYXApKGNvbnN0IGJvb3RfbW9kdWxlX3QgKikp CiB7Ci0gICAgbW9kdWxlX3QgKm1vZCA9IChtb2R1bGVfdCAqKV9fdmEobWJpLT5tb2RzX2FkZHIp OwotCiAgICAgaWYgKCB1Y29kZV9tb2RfaWR4IDwgMCApCi0gICAgICAgIHVjb2RlX21vZF9pZHgg Kz0gbWJpLT5tb2RzX2NvdW50OwotICAgIGlmICggdWNvZGVfbW9kX2lkeCA8PSAwIHx8IHVjb2Rl X21vZF9pZHggPj0gbWJpLT5tb2RzX2NvdW50IHx8CisgICAgICAgIHVjb2RlX21vZF9pZHggKz0g eGJpLT5tb2RzX25yOworICAgIGlmICggdWNvZGVfbW9kX2lkeCA8PSAwIHx8IHVjb2RlX21vZF9p ZHggPj0geGJpLT5tb2RzX25yIHx8CiAgICAgICAgICAhX190ZXN0X2FuZF9jbGVhcl9iaXQodWNv ZGVfbW9kX2lkeCwgbW9kdWxlX21hcCkgKQogICAgICAgICBnb3RvIHNjYW47Ci0gICAgdWNvZGVf bW9kID0gbW9kW3Vjb2RlX21vZF9pZHhdOworICAgIHVjb2RlX21vZCA9IHhiaS0+bW9kc1t1Y29k ZV9tb2RfaWR4XTsKICAgICB1Y29kZV9tb2RfbWFwID0gbWFwOwogc2NhbjoKICAgICBpZiAoIHVj b2RlX3NjYW4gKQotICAgICAgICBtaWNyb2NvZGVfc2Nhbl9tb2R1bGUobW9kdWxlX21hcCwgbWJp LCBtYXApOworICAgICAgICBtaWNyb2NvZGVfc2Nhbl9tb2R1bGUobW9kdWxlX21hcCwgeGJpLCBt YXApOwogfQogCiBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX29wcyAqbWljcm9jb2RlX29wczsKQEAg LTM0NSw3ICszNDIsNyBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExFX1BB UkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCiBzdGF0aWMgdm9pZCBfX2lu aXQgX2RvX21pY3JvY29kZV91cGRhdGUodW5zaWduZWQgbG9uZyBkYXRhKQogewogICAgIHZvaWQg Kl9kYXRhID0gKHZvaWQgKilkYXRhOwotICAgIHNpemVfdCBsZW4gPSB1Y29kZV9ibG9iLnNpemUg PyB1Y29kZV9ibG9iLnNpemUgOiB1Y29kZV9tb2QubW9kX2VuZDsKKyAgICBzaXplX3QgbGVuID0g dWNvZGVfYmxvYi5zaXplID8gdWNvZGVfYmxvYi5zaXplIDogdWNvZGVfbW9kLmVuZDsKIAogICAg IG1pY3JvY29kZV91cGRhdGVfY3B1KF9kYXRhLCBsZW4pOwogICAgIGNwdW1hc2tfc2V0X2NwdShz bXBfcHJvY2Vzc29yX2lkKCksICZpbml0X21hc2spOwpAQCAtMzYwLDcgKzM1Nyw3IEBAIHN0YXRp YyBpbnQgX19pbml0IG1pY3JvY29kZV9pbml0KHZvaWQpCiAgICAgaWYgKCAhbWljcm9jb2RlX29w cyApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCAhdWNvZGVfbW9kLm1vZF9lbmQgJiYg IXVjb2RlX2Jsb2Iuc2l6ZSApCisgICAgaWYgKCAhdWNvZGVfbW9kLmVuZCAmJiAhdWNvZGVfYmxv Yi5zaXplICkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBkYXRhID0gdWNvZGVfYmxvYi5zaXpl ID8gdWNvZGVfYmxvYi5kYXRhIDogdWNvZGVfbW9kX21hcCgmdWNvZGVfbW9kKTsKQEAgLTQxNCw3 ICs0MTEsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBtaWNyb2NvZGVfcHJlc21wX2luaXQodm9pZCkK IHsKICAgICBpZiAoIG1pY3JvY29kZV9vcHMgKQogICAgIHsKLSAgICAgICAgaWYgKCB1Y29kZV9t b2QubW9kX2VuZCB8fCB1Y29kZV9ibG9iLnNpemUgKQorICAgICAgICBpZiAoIHVjb2RlX21vZC5l bmQgfHwgdWNvZGVfYmxvYi5zaXplICkKICAgICAgICAgewogICAgICAgICAgICAgdm9pZCAqZGF0 YTsKICAgICAgICAgICAgIHNpemVfdCBsZW47CkBAIC00MjcsNyArNDI0LDcgQEAgc3RhdGljIGlu dCBfX2luaXQgbWljcm9jb2RlX3ByZXNtcF9pbml0KHZvaWQpCiAgICAgICAgICAgICB9CiAgICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGVuID0gdWNvZGVf bW9kLm1vZF9lbmQ7CisgICAgICAgICAgICAgICAgbGVuID0gdWNvZGVfbW9kLmVuZDsKICAgICAg ICAgICAgICAgICBkYXRhID0gdWNvZGVfbW9kX21hcCgmdWNvZGVfbW9kKTsKICAgICAgICAgICAg IH0KICAgICAgICAgICAgIGlmICggZGF0YSApCkBAIC00NDcsNyArNDQ0LDcgQEAgc3RhdGljIGlu dCBfX2luaXQgbWljcm9jb2RlX3ByZXNtcF9pbml0KHZvaWQpCiAgICAgICAgICAgICAgICAgICAg IHVjb2RlX2Jsb2IuZGF0YSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdWNvZGVfbW9kLm1vZF9lbmQgPSAwOworICAg ICAgICAgICAgICAgICAgICB1Y29kZV9tb2QuZW5kID0gMDsKICAgICAgICAgICAgIH0KICAgICAg ICAgfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbXBwYXJzZS5jIGIveGVuL2FyY2gveDg2 L21wcGFyc2UuYwppbmRleCBhMzhlMDE2Li5hOGJjYjE0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvbXBwYXJzZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tcHBhcnNlLmMKQEAgLTI5LDYgKzI5LDcg QEAKICNpbmNsdWRlIDxhc20vbXBzcGVjLmg+CiAjaW5jbHVkZSA8YXNtL2lvX2FwaWMuaD4KICNp bmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20veGJpLmg+CiAKICNpbmNsdWRlIDxt YWNoX2FwaWMuaD4KICNpbmNsdWRlIDxtYWNoX21wcGFyc2UuaD4KQEAgLTY3NiwxOCArNjc3LDE4 IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBlZmlfY2hlY2tfY29uZmlnKHZvaWQpCiB7CiAJc3RydWN0 IGludGVsX21wX2Zsb2F0aW5nICptcGY7CiAKLQlpZiAoZWZpLm1wcyA9PSBFRklfSU5WQUxJRF9U QUJMRV9BRERSKQorCWlmICh4YmktPm1wcyA9PSBFRklfSU5WQUxJRF9UQUJMRV9BRERSKQogCQly ZXR1cm47CiAKLQlfX3NldF9maXhtYXAoRklYX0VGSV9NUEYsIFBGTl9ET1dOKGVmaS5tcHMpLCBf X1BBR0VfSFlQRVJWSVNPUik7Ci0JbXBmID0gKHZvaWQgKilmaXhfdG9fdmlydChGSVhfRUZJX01Q RikgKyAoKGxvbmcpZWZpLm1wcyAmIChQQUdFX1NJWkUtMSkpOworCV9fc2V0X2ZpeG1hcChGSVhf RUZJX01QRiwgUEZOX0RPV04oeGJpLT5tcHMpLCBfX1BBR0VfSFlQRVJWSVNPUik7CisJbXBmID0g KHZvaWQgKilmaXhfdG9fdmlydChGSVhfRUZJX01QRikgKyAoKGxvbmcpeGJpLT5tcHMgJiAoUEFH RV9TSVpFLTEpKTsKIAogCWlmIChtZW1jbXAobXBmLT5tcGZfc2lnbmF0dXJlLCAiX01QXyIsIDQp ID09IDAgJiYKIAkgICAgbXBmLT5tcGZfbGVuZ3RoID09IDEgJiYKIAkgICAgbXBmX2NoZWNrc3Vt KCh2b2lkICopbXBmLCAxNikgJiYKIAkgICAgKG1wZi0+bXBmX3NwZWNpZmljYXRpb24gPT0gMSB8 fCBtcGYtPm1wZl9zcGVjaWZpY2F0aW9uID09IDQpKSB7CiAJCXNtcF9mb3VuZF9jb25maWcgPSAx OwotCQlwcmludGsoS0VSTl9JTkZPICJTTVAgTVAtdGFibGUgYXQgJTA4bHhcbiIsIGVmaS5tcHMp OworCQlwcmludGsoS0VSTl9JTkZPICJTTVAgTVAtdGFibGUgYXQgJTA4bHhcbiIsIHhiaS0+bXBz KTsKIAkJbXBmX2ZvdW5kID0gbXBmOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvcGxhdGZvcm1faHlwZXJjYWxsLmMgYi94ZW4vYXJjaC94ODYvcGxhdGZvcm1faHlwZXJjYWxs LmMKaW5kZXggMjE2MjgxMS4uYmJmY2ZkMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3BsYXRm b3JtX2h5cGVyY2FsbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wbGF0Zm9ybV9oeXBlcmNhbGwuYwpA QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGFzbS9tdHJyLmg+CiAjaW5jbHVkZSA8YXNtL2lv X2FwaWMuaD4KICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20veGJpLmg+CiAj aW5jbHVkZSAiY3B1L210cnIvbXRyci5oIgogI2luY2x1ZGUgPHhzbS94c20uaD4KIApAQCAtMjA4 LDEwICsyMDksMTAgQEAgcmV0X3QgZG9fcGxhdGZvcm1fb3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJB TSh4ZW5fcGxhdGZvcm1fb3BfdCkgdV94ZW5wZl9vcCkKICAgICAgICAgICAgIHUxNiBsZW5ndGg7 CiAKICAgICAgICAgICAgIHJldCA9IC1FU1JDSDsKLSAgICAgICAgICAgIGlmICggb3AtPnUuZmly bXdhcmVfaW5mby5pbmRleCA+PSBib290c3ltKGJvb3RfZWRkX2luZm9fbnIpICkKKyAgICAgICAg ICAgIGlmICggb3AtPnUuZmlybXdhcmVfaW5mby5pbmRleCA+PSB4YmktPmVkZF9pbmZvX25yICkK ICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaW5mbyA9IGJvb3RzeW0oYm9v dF9lZGRfaW5mbykgKyBvcC0+dS5maXJtd2FyZV9pbmZvLmluZGV4OworICAgICAgICAgICAgaW5m byA9IHhiaS0+ZWRkX2luZm8gKyBvcC0+dS5maXJtd2FyZV9pbmZvLmluZGV4OwogCiAgICAgICAg ICAgICAvKiBUcmFuc2ZlciB0aGUgRUREIGluZm8gYmxvY2suICovCiAgICAgICAgICAgICByZXQg PSAtRUZBVUxUOwpAQCAtMjQ3LDEwICsyNDgsMTAgQEAgcmV0X3QgZG9fcGxhdGZvcm1fb3AoWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fcGxhdGZvcm1fb3BfdCkgdV94ZW5wZl9vcCkKICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBtYnJfc2lnbmF0dXJlICpzaWc7CiAKICAgICAgICAgICAgIHJl dCA9IC1FU1JDSDsKLSAgICAgICAgICAgIGlmICggb3AtPnUuZmlybXdhcmVfaW5mby5pbmRleCA+ PSBib290c3ltKGJvb3RfbWJyX3NpZ25hdHVyZV9ucikgKQorICAgICAgICAgICAgaWYgKCBvcC0+ dS5maXJtd2FyZV9pbmZvLmluZGV4ID49IHhiaS0+bWJyX3NpZ25hdHVyZV9uciApCiAgICAgICAg ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIHNpZyA9IGJvb3RzeW0oYm9vdF9tYnJfc2ln bmF0dXJlKSArIG9wLT51LmZpcm13YXJlX2luZm8uaW5kZXg7CisgICAgICAgICAgICBzaWcgPSB4 YmktPm1icl9zaWduYXR1cmUgKyBvcC0+dS5maXJtd2FyZV9pbmZvLmluZGV4OwogCiAgICAgICAg ICAgICBvcC0+dS5maXJtd2FyZV9pbmZvLnUuZGlza19tYnJfc2lnbmF0dXJlLmRldmljZSA9IHNp Zy0+ZGV2aWNlOwogICAgICAgICAgICAgb3AtPnUuZmlybXdhcmVfaW5mby51LmRpc2tfbWJyX3Np Z25hdHVyZS5tYnJfc2lnbmF0dXJlID0KQEAgLTI2NSwxMyArMjY2LDExIEBAIHJldF90IGRvX3Bs YXRmb3JtX29wKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX3BsYXRmb3JtX29wX3QpIHVfeGVu cGZfb3ApCiAgICAgICAgICAgICByZXQgPSAtRVNSQ0g7CiAgICAgICAgICAgICBpZiAoIG9wLT51 LmZpcm13YXJlX2luZm8uaW5kZXggIT0gMCApCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICBpZiAoICoodTMyICopYm9vdHN5bShib290X2VkaWRfaW5mbykgPT0gMHgxMzEzMTMx MyApCisgICAgICAgICAgICBpZiAoICoodTMyICopeGJpLT5lZGlkX2luZm8gPT0gMHgxMzEzMTMx MyApCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIG9wLT51LmZpcm13YXJl X2luZm8udS52YmVkZGNfaW5mby5jYXBhYmlsaXRpZXMgPQotICAgICAgICAgICAgICAgIGJvb3Rz eW0oYm9vdF9lZGlkX2NhcHMpOwotICAgICAgICAgICAgb3AtPnUuZmlybXdhcmVfaW5mby51LnZi ZWRkY19pbmZvLmVkaWRfdHJhbnNmZXJfdGltZSA9Ci0gICAgICAgICAgICAgICAgYm9vdHN5bShi b290X2VkaWRfY2FwcykgPj4gODsKKyAgICAgICAgICAgIG9wLT51LmZpcm13YXJlX2luZm8udS52 YmVkZGNfaW5mby5jYXBhYmlsaXRpZXMgPSB4YmktPmVkaWRfY2FwczsKKyAgICAgICAgICAgIG9w LT51LmZpcm13YXJlX2luZm8udS52YmVkZGNfaW5mby5lZGlkX3RyYW5zZmVyX3RpbWUgPSB4Ymkt PmVkaWRfY2FwcyA+PiA4OwogCiAgICAgICAgICAgICByZXQgPSAwOwogICAgICAgICAgICAgaWYg KCBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QodV94ZW5wZl9vcCwgb3AsIHUuZmlybXdhcmVfaW5mby4K QEAgLTI3OSw3ICsyNzgsNyBAQCByZXRfdCBkb19wbGF0Zm9ybV9vcChYRU5fR1VFU1RfSEFORExF X1BBUkFNKHhlbl9wbGF0Zm9ybV9vcF90KSB1X3hlbnBmX29wKQogICAgICAgICAgICAgICAgICBf X2NvcHlfZmllbGRfdG9fZ3Vlc3QodV94ZW5wZl9vcCwgb3AsIHUuZmlybXdhcmVfaW5mby4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUudmJlZGRjX2luZm8uZWRpZF90 cmFuc2Zlcl90aW1lKSB8fAogICAgICAgICAgICAgICAgICBjb3B5X3RvX2NvbXBhdChvcC0+dS5m aXJtd2FyZV9pbmZvLnUudmJlZGRjX2luZm8uZWRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vdHN5bShib290X2VkaWRfaW5mbyksIDEyOCkgKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB4YmktPmVkaWRfaW5mbywgMTI4KSApCiAgICAgICAgICAgICAgICAg cmV0ID0gLUVGQVVMVDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFhFTl9GV19F RklfSU5GTzoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2 L3NldHVwLmMKaW5kZXggNTk5Y2YwNC4uYjNiZjI2YSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L3NldHVwLmMKKysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAgLTEyLDcgKzEyLDYgQEAKICNp bmNsdWRlIDx4ZW4vY29uc29sZS5oPgogI2luY2x1ZGUgPHhlbi9zZXJpYWwuaD4KICNpbmNsdWRl IDx4ZW4vdHJhY2UuaD4KLSNpbmNsdWRlIDx4ZW4vbXVsdGlib290Lmg+CiAjaW5jbHVkZSA8eGVu L2RvbWFpbl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL3ZlcnNpb24uaD4KICNpbmNsdWRlIDx4ZW4v Z2Ric3R1Yi5oPgpAQCAtNDksNiArNDgsNyBAQAogI2luY2x1ZGUgPHhlbi9jcHUuaD4KICNpbmNs dWRlIDxhc20vbm1pLmg+CiAjaW5jbHVkZSA8YXNtL2FsdGVybmF0aXZlLmg+CisjaW5jbHVkZSA8 YXNtL3hiaS5oPgogCiAvKiBvcHRfbm9zbXA6IElmIHRydWUsIHNlY29uZGFyeSBwcm9jZXNzb3Jz IGFyZSBpZ25vcmVkLiAqLwogc3RhdGljIGJvb2xfdCBfX2luaXRkYXRhIG9wdF9ub3NtcDsKQEAg LTkzLDYgKzkzLDggQEAgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIGhpZ2htZW1fc3RhcnQ7CiBz aXplX3BhcmFtKCJoaWdobWVtLXN0YXJ0IiwgaGlnaG1lbV9zdGFydCk7CiAjZW5kaWYKIAoreGJp X3QgKnhiaTsKKwogY3B1bWFza190IF9fcmVhZF9tb3N0bHkgY3B1X3ByZXNlbnRfbWFwOwogCiB1 bnNpZ25lZCBsb25nIF9fcmVhZF9tb3N0bHkgeGVuX3BoeXNfc3RhcnQ7CkBAIC0xMzgsNyArMTQw LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX2FjcGlfcGFyYW0oY2hhciAqcykKICAgICB9 CiB9CiAKLXN0YXRpYyBjb25zdCBtb2R1bGVfdCAqX19pbml0ZGF0YSBpbml0aWFsX2ltYWdlczsK K3N0YXRpYyBjb25zdCBib290X21vZHVsZV90ICpfX2luaXRkYXRhIGluaXRpYWxfaW1hZ2VzOwog c3RhdGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRhIG5yX2luaXRpYWxfaW1hZ2VzOwogCiB1bnNp Z25lZCBsb25nIF9faW5pdCBpbml0aWFsX2ltYWdlc19ucnBhZ2VzKHZvaWQpCkBAIC0xNDcsNyAr MTQ5LDcgQEAgdW5zaWduZWQgbG9uZyBfX2luaXQgaW5pdGlhbF9pbWFnZXNfbnJwYWdlcyh2b2lk KQogICAgIHVuc2lnbmVkIGludCBpOwogCiAgICAgZm9yICggbnIgPSBpID0gMDsgaSA8IG5yX2lu aXRpYWxfaW1hZ2VzOyArK2kgKQotICAgICAgICBuciArPSBQRk5fVVAoaW5pdGlhbF9pbWFnZXNb aV0ubW9kX2VuZCk7CisgICAgICAgIG5yICs9IFBGTl9VUChpbml0aWFsX2ltYWdlc1tpXS5lbmQp OwogCiAgICAgcmV0dXJuIG5yOwogfQpAQCAtMTU4LDEwICsxNjAsMTAgQEAgdm9pZCBfX2luaXQg ZGlzY2FyZF9pbml0aWFsX2ltYWdlcyh2b2lkKQogCiAgICAgZm9yICggaSA9IDA7IGkgPCBucl9p bml0aWFsX2ltYWdlczsgKytpICkKICAgICB7Ci0gICAgICAgIHVpbnQ2NF90IHN0YXJ0ID0gKHVp bnQ2NF90KWluaXRpYWxfaW1hZ2VzW2ldLm1vZF9zdGFydCA8PCBQQUdFX1NISUZUOworICAgICAg ICB1aW50NjRfdCBzdGFydCA9ICh1aW50NjRfdClpbml0aWFsX2ltYWdlc1tpXS5zdGFydCA8PCBQ QUdFX1NISUZUOwogCiAgICAgICAgIGluaXRfZG9taGVhcF9wYWdlcyhzdGFydCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgUEFHRV9BTElHTihpbml0aWFsX2ltYWdlc1tpXS5t b2RfZW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArIFBBR0VfQUxJR04o aW5pdGlhbF9pbWFnZXNbaV0uZW5kKSk7CiAgICAgfQogCiAgICAgbnJfaW5pdGlhbF9pbWFnZXMg PSAwOwpAQCAtMjYyLDE0ICsyNjQsMTQgQEAgc3RhdGljIHZvaWQgX19pbml0IG5vcm1hbGlzZV9j cHVfb3JkZXIodm9pZCkKICAqIEVuc3VyZSBhIGdpdmVuIHBoeXNpY2FsIG1lbW9yeSByYW5nZSBp cyBwcmVzZW50IGluIHRoZSBib290c3RyYXAgbWFwcGluZ3MuCiAgKiBVc2Ugc3VwZXJwYWdlIG1h cHBpbmdzIHRvIGVuc3VyZSB0aGF0IHBhZ2V0YWJsZSBtZW1vcnkgbmVlZG4ndCBiZSBhbGxvY2F0 ZWQuCiAgKi8KLXN0YXRpYyB2b2lkICpfX2luaXQgYm9vdHN0cmFwX21hcChjb25zdCBtb2R1bGVf dCAqbW9kKQorc3RhdGljIHZvaWQgKl9faW5pdCBib290c3RyYXBfbWFwKGNvbnN0IGJvb3RfbW9k dWxlX3QgKm1vZCkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXRkYXRhIG1hcF9j dXIgPSBCT09UU1RSQVBfTUFQX0JBU0U7CiAgICAgdWludDY0X3Qgc3RhcnQsIGVuZCwgbWFzayA9 ICgxTCA8PCBMMl9QQUdFVEFCTEVfU0hJRlQpIC0gMTsKICAgICB2b2lkICpyZXQ7CiAKICAgICBp ZiAoIHN5c3RlbV9zdGF0ZSAhPSBTWVNfU1RBVEVfZWFybHlfYm9vdCApCi0gICAgICAgIHJldHVy biBtb2QgPyBtZm5fdG9fdmlydChtb2QtPm1vZF9zdGFydCkgOiBOVUxMOworICAgICAgICByZXR1 cm4gbW9kID8gbWZuX3RvX3ZpcnQobW9kLT5zdGFydCkgOiBOVUxMOwogCiAgICAgaWYgKCAhbW9k ICkKICAgICB7CkBAIC0yNzgsOCArMjgwLDggQEAgc3RhdGljIHZvaWQgKl9faW5pdCBib290c3Ry YXBfbWFwKGNvbnN0IG1vZHVsZV90ICptb2QpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0K IAotICAgIHN0YXJ0ID0gKHVpbnQ2NF90KW1vZC0+bW9kX3N0YXJ0IDw8IFBBR0VfU0hJRlQ7Ci0g ICAgZW5kID0gc3RhcnQgKyBtb2QtPm1vZF9lbmQ7CisgICAgc3RhcnQgPSAodWludDY0X3QpbW9k LT5zdGFydCA8PCBQQUdFX1NISUZUOworICAgIGVuZCA9IHN0YXJ0ICsgbW9kLT5lbmQ7CiAgICAg aWYgKCBzdGFydCA+PSBlbmQgKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzA5LDI1ICsz MTEsMjUgQEAgc3RhdGljIHZvaWQgKl9faW5pdCBtb3ZlX21lbW9yeSgKIAogICAgIHdoaWxlICgg c2l6ZSApCiAgICAgewotICAgICAgICBtb2R1bGVfdCBtb2Q7CisgICAgICAgIGJvb3RfbW9kdWxl X3QgbW9kOwogICAgICAgICB1bnNpZ25lZCBpbnQgc29mZnMgPSBzcmMgJiBtYXNrOwogICAgICAg ICB1bnNpZ25lZCBpbnQgZG9mZnMgPSBkc3QgJiBtYXNrOwogICAgICAgICB1bnNpZ25lZCBpbnQg c3o7CiAgICAgICAgIHZvaWQgKmQsICpzOwogCi0gICAgICAgIG1vZC5tb2Rfc3RhcnQgPSAoc3Jj IC0gc29mZnMpID4+IFBBR0VfU0hJRlQ7Ci0gICAgICAgIG1vZC5tb2RfZW5kID0gc29mZnMgKyBz aXplOwotICAgICAgICBpZiAoIG1vZC5tb2RfZW5kID4gYmxrc3ogKQotICAgICAgICAgICAgbW9k Lm1vZF9lbmQgPSBibGtzejsKLSAgICAgICAgc3ogPSBtb2QubW9kX2VuZCAtIHNvZmZzOworICAg ICAgICBtb2Quc3RhcnQgPSAoc3JjIC0gc29mZnMpID4+IFBBR0VfU0hJRlQ7CisgICAgICAgIG1v ZC5lbmQgPSBzb2ZmcyArIHNpemU7CisgICAgICAgIGlmICggbW9kLmVuZCA+IGJsa3N6ICkKKyAg ICAgICAgICAgIG1vZC5lbmQgPSBibGtzejsKKyAgICAgICAgc3ogPSBtb2QuZW5kIC0gc29mZnM7 CiAgICAgICAgIHMgPSBib290c3RyYXBfbWFwKCZtb2QpOwogCi0gICAgICAgIG1vZC5tb2Rfc3Rh cnQgPSAoZHN0IC0gZG9mZnMpID4+IFBBR0VfU0hJRlQ7Ci0gICAgICAgIG1vZC5tb2RfZW5kID0g ZG9mZnMgKyBzaXplOwotICAgICAgICBpZiAoIG1vZC5tb2RfZW5kID4gYmxrc3ogKQotICAgICAg ICAgICAgbW9kLm1vZF9lbmQgPSBibGtzejsKLSAgICAgICAgaWYgKCBzeiA+IG1vZC5tb2RfZW5k IC0gZG9mZnMgKQotICAgICAgICAgICAgc3ogPSBtb2QubW9kX2VuZCAtIGRvZmZzOworICAgICAg ICBtb2Quc3RhcnQgPSAoZHN0IC0gZG9mZnMpID4+IFBBR0VfU0hJRlQ7CisgICAgICAgIG1vZC5l bmQgPSBkb2ZmcyArIHNpemU7CisgICAgICAgIGlmICggbW9kLmVuZCA+IGJsa3N6ICkKKyAgICAg ICAgICAgIG1vZC5lbmQgPSBibGtzejsKKyAgICAgICAgaWYgKCBzeiA+IG1vZC5lbmQgLSBkb2Zm cyApCisgICAgICAgICAgICBzeiA9IG1vZC5lbmQgLSBkb2ZmczsKICAgICAgICAgZCA9IGJvb3Rz dHJhcF9tYXAoJm1vZCk7CiAKICAgICAgICAgbWVtbW92ZShkICsgZG9mZnMsIHMgKyBzb2Zmcywg c3opOwpAQCAtMzQ2LDcgKzM0OCw3IEBAIHN0YXRpYyB2b2lkICpfX2luaXQgbW92ZV9tZW1vcnko CiB9CiAKIHN0YXRpYyB1aW50NjRfdCBfX2luaXQgY29uc2lkZXJfbW9kdWxlcygKLSAgICB1aW50 NjRfdCBzLCB1aW50NjRfdCBlLCB1aW50MzJfdCBzaXplLCBjb25zdCBtb2R1bGVfdCAqbW9kLAor ICAgIHVpbnQ2NF90IHMsIHVpbnQ2NF90IGUsIHVpbnQzMl90IHNpemUsIGNvbnN0IGJvb3RfbW9k dWxlX3QgKm1vZCwKICAgICB1bnNpZ25lZCBpbnQgbnJfbW9kcywgdW5zaWduZWQgaW50IHRoaXNf bW9kKQogewogICAgIHVuc2lnbmVkIGludCBpOwpAQCAtMzU2LDggKzM1OCw4IEBAIHN0YXRpYyB1 aW50NjRfdCBfX2luaXQgY29uc2lkZXJfbW9kdWxlcygKIAogICAgIGZvciAoIGkgPSAwOyBpIDwg bnJfbW9kcyA7ICsraSApCiAgICAgewotICAgICAgICB1aW50NjRfdCBzdGFydCA9ICh1aW50NjRf dCltb2RbaV0ubW9kX3N0YXJ0IDw8IFBBR0VfU0hJRlQ7Ci0gICAgICAgIHVpbnQ2NF90IGVuZCA9 IHN0YXJ0ICsgUEFHRV9BTElHTihtb2RbaV0ubW9kX2VuZCk7CisgICAgICAgIHVpbnQ2NF90IHN0 YXJ0ID0gKHVpbnQ2NF90KW1vZFtpXS5zdGFydCA8PCBQQUdFX1NISUZUOworICAgICAgICB1aW50 NjRfdCBlbmQgPSBzdGFydCArIFBBR0VfQUxJR04obW9kW2ldLmVuZCk7CiAKICAgICAgICAgaWYg KCBpID09IHRoaXNfbW9kICkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDA2LDc2ICs0MDgs NiBAQCB2b2lkIHNldF9wZHhfcmFuZ2UodW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25n IGVtZm4pCiAvKiBBIHRlbXBvcmFyeSBjb3B5IG9mIHRoZSBlODIwIG1hcCB0aGF0IHdlIGNhbiBt ZXNzIHdpdGggZHVyaW5nIGJvb3RzdHJhcC4gKi8KIHN0YXRpYyBzdHJ1Y3QgZTgyMG1hcCBfX2lu aXRkYXRhIGJvb3RfZTgyMDsKIAotc3RydWN0IGJvb3RfdmlkZW9faW5mbyB7Ci0gICAgdTggIG9y aWdfeDsgICAgICAgICAgICAgLyogMHgwMCAqLwotICAgIHU4ICBvcmlnX3k7ICAgICAgICAgICAg IC8qIDB4MDEgKi8KLSAgICB1OCAgb3JpZ192aWRlb19tb2RlOyAgICAvKiAweDAyICovCi0gICAg dTggIG9yaWdfdmlkZW9fY29sczsgICAgLyogMHgwMyAqLwotICAgIHU4ICBvcmlnX3ZpZGVvX2xp bmVzOyAgIC8qIDB4MDQgKi8KLSAgICB1OCAgb3JpZ192aWRlb19pc1ZHQTsgICAvKiAweDA1ICov Ci0gICAgdTE2IG9yaWdfdmlkZW9fcG9pbnRzOyAgLyogMHgwNiAqLwotCi0gICAgLyogVkVTQSBn cmFwaGljIG1vZGUgLS0gbGluZWFyIGZyYW1lIGJ1ZmZlciAqLwotICAgIHUzMiBjYXBhYmlsaXRp ZXM7ICAgICAgIC8qIDB4MDggKi8KLSAgICB1MTYgbGZiX2xpbmVsZW5ndGg7ICAgICAvKiAweDBj ICovCi0gICAgdTE2IGxmYl93aWR0aDsgICAgICAgICAgLyogMHgwZSAqLwotICAgIHUxNiBsZmJf aGVpZ2h0OyAgICAgICAgIC8qIDB4MTAgKi8KLSAgICB1MTYgbGZiX2RlcHRoOyAgICAgICAgICAv KiAweDEyICovCi0gICAgdTMyIGxmYl9iYXNlOyAgICAgICAgICAgLyogMHgxNCAqLwotICAgIHUz MiBsZmJfc2l6ZTsgICAgICAgICAgIC8qIDB4MTggKi8KLSAgICB1OCAgcmVkX3NpemU7ICAgICAg ICAgICAvKiAweDFjICovCi0gICAgdTggIHJlZF9wb3M7ICAgICAgICAgICAgLyogMHgxZCAqLwot ICAgIHU4ICBncmVlbl9zaXplOyAgICAgICAgIC8qIDB4MWUgKi8KLSAgICB1OCAgZ3JlZW5fcG9z OyAgICAgICAgICAvKiAweDFmICovCi0gICAgdTggIGJsdWVfc2l6ZTsgICAgICAgICAgLyogMHgy MCAqLwotICAgIHU4ICBibHVlX3BvczsgICAgICAgICAgIC8qIDB4MjEgKi8KLSAgICB1OCAgcnN2 ZF9zaXplOyAgICAgICAgICAvKiAweDIyICovCi0gICAgdTggIHJzdmRfcG9zOyAgICAgICAgICAg LyogMHgyMyAqLwotICAgIHUxNiB2ZXNhcG1fc2VnOyAgICAgICAgIC8qIDB4MjQgKi8KLSAgICB1 MTYgdmVzYXBtX29mZjsgICAgICAgICAvKiAweDI2ICovCi0gICAgdTE2IHZlc2FfYXR0cmliOyAg ICAgICAgLyogMHgyOCAqLwotfTsKLWV4dGVybiBzdHJ1Y3QgYm9vdF92aWRlb19pbmZvIGJvb3Rf dmlkX2luZm87Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV92aWRlb19pbmZvKHZvaWQpCi17 Ci0gICAgc3RydWN0IGJvb3RfdmlkZW9faW5mbyAqYnZpID0gJmJvb3RzeW0oYm9vdF92aWRfaW5m byk7Ci0KLSAgICAvKiBUaGUgRUZJIGxvYWRlciBmaWxscyB2Z2FfY29uc29sZV9pbmZvIGRpcmVj dGx5LiAqLwotICAgIGlmICggZWZpX2VuYWJsZWQgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp ZiAoIChidmktPm9yaWdfdmlkZW9faXNWR0EgPT0gMSkgJiYgKGJ2aS0+b3JpZ192aWRlb19tb2Rl ID09IDMpICkKLSAgICB7Ci0gICAgICAgIHZnYV9jb25zb2xlX2luZm8udmlkZW9fdHlwZSA9IFhF Tl9WR0FUWVBFX1RFWFRfTU9ERV8zOwotICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudGV4dF9t b2RlXzMuZm9udF9oZWlnaHQgPSBidmktPm9yaWdfdmlkZW9fcG9pbnRzOwotICAgICAgICB2Z2Ff Y29uc29sZV9pbmZvLnUudGV4dF9tb2RlXzMuY3Vyc29yX3ggPSBidmktPm9yaWdfeDsKLSAgICAg ICAgdmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLmN1cnNvcl95ID0gYnZpLT5vcmlnX3k7 Ci0gICAgICAgIHZnYV9jb25zb2xlX2luZm8udS50ZXh0X21vZGVfMy5yb3dzID0gYnZpLT5vcmln X3ZpZGVvX2xpbmVzOwotICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudGV4dF9tb2RlXzMuY29s dW1ucyA9IGJ2aS0+b3JpZ192aWRlb19jb2xzOwotICAgIH0KLSAgICBlbHNlIGlmICggYnZpLT5v cmlnX3ZpZGVvX2lzVkdBID09IDB4MjMgKQotICAgIHsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5m by52aWRlb190eXBlID0gWEVOX1ZHQVRZUEVfVkVTQV9MRkI7Ci0gICAgICAgIHZnYV9jb25zb2xl X2luZm8udS52ZXNhX2xmYi53aWR0aCA9IGJ2aS0+bGZiX3dpZHRoOwotICAgICAgICB2Z2FfY29u c29sZV9pbmZvLnUudmVzYV9sZmIuaGVpZ2h0ID0gYnZpLT5sZmJfaGVpZ2h0OwotICAgICAgICB2 Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuYnl0ZXNfcGVyX2xpbmUgPSBidmktPmxmYl9saW5l bGVuZ3RoOwotICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIuYml0c19wZXJfcGl4 ZWwgPSBidmktPmxmYl9kZXB0aDsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZi LmxmYl9iYXNlID0gYnZpLT5sZmJfYmFzZTsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZl c2FfbGZiLmxmYl9zaXplID0gYnZpLT5sZmJfc2l6ZTsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5m by51LnZlc2FfbGZiLnJlZF9wb3MgPSBidmktPnJlZF9wb3M7Ci0gICAgICAgIHZnYV9jb25zb2xl X2luZm8udS52ZXNhX2xmYi5yZWRfc2l6ZSA9IGJ2aS0+cmVkX3NpemU7Ci0gICAgICAgIHZnYV9j b25zb2xlX2luZm8udS52ZXNhX2xmYi5ncmVlbl9wb3MgPSBidmktPmdyZWVuX3BvczsKLSAgICAg ICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLmdyZWVuX3NpemUgPSBidmktPmdyZWVuX3Np emU7Ci0gICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ibHVlX3BvcyA9IGJ2aS0+ Ymx1ZV9wb3M7Ci0gICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5ibHVlX3NpemUg PSBidmktPmJsdWVfc2l6ZTsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2FfbGZiLnJz dmRfcG9zID0gYnZpLT5yc3ZkX3BvczsKLSAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnZlc2Ff bGZiLnJzdmRfc2l6ZSA9IGJ2aS0+cnN2ZF9zaXplOwotICAgICAgICB2Z2FfY29uc29sZV9pbmZv LnUudmVzYV9sZmIuZ2JsX2NhcHMgPSBidmktPmNhcGFiaWxpdGllczsKLSAgICAgICAgdmdhX2Nv bnNvbGVfaW5mby51LnZlc2FfbGZiLm1vZGVfYXR0cnMgPSBidmktPnZlc2FfYXR0cmliOwotICAg IH0KLX0KLQogc3RhdGljIHZvaWQgX19pbml0IGtleGVjX3Jlc2VydmVfYXJlYShzdHJ1Y3QgZTgy MG1hcCAqZTgyMCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGtkdW1wX3N0YXJ0ID0ga2V4ZWNfY3Jh c2hfYXJlYS5zdGFydDsKQEAgLTU0MCwxNSArNDcyLDEyIEBAIHN0YXRpYyBjaGFyICogX19pbml0 IGNtZGxpbmVfY29vayhjaGFyICpwLCBjaGFyICpsb2FkZXJfbmFtZSkKICAgICByZXR1cm4gcDsK IH0KIAotdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlf cCkKK3ZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHhiaV90ICp4Ymlfc3RhcnQpCiB7 Ci0gICAgY2hhciAqbWVtbWFwX3R5cGUgPSBOVUxMOwotICAgIGNoYXIgKmNtZGxpbmUsICprZXh0 cmEsICpsb2FkZXI7CisgICAgY2hhciAqY21kbGluZSwgKmtleHRyYTsKICAgICB1bnNpZ25lZCBp bnQgaW5pdHJkaWR4LCBkb21jcl9mbGFncyA9IERPTUNSRl9zM19pbnRlZ3JpdHk7Ci0gICAgbXVs dGlib290X2luZm9fdCAqbWJpID0gX192YShtYmlfcCk7Ci0gICAgbW9kdWxlX3QgKm1vZCA9ICht b2R1bGVfdCAqKV9fdmEobWJpLT5tb2RzX2FkZHIpOwogICAgIHVuc2lnbmVkIGxvbmcgbnJfcGFn ZXMsIHJhd19tYXhfcGFnZSwgbW9kdWxlc19oZWFkcm9vbSwgKm1vZHVsZV9tYXA7Ci0gICAgaW50 IGksIGosIGU4MjBfd2FybiA9IDAsIGJ5dGVzID0gMDsKKyAgICBpbnQgaSwgajsKICAgICBib29s X3QgYWNwaV9ib290X3RhYmxlX2luaXRfZG9uZSA9IDA7CiAgICAgc3RydWN0IGRvbWFpbiAqZG9t MDsKICAgICBzdHJ1Y3QgbnMxNjU1MF9kZWZhdWx0cyBuczE2NTUwID0gewpAQCAtNTczLDEzICs1 MDIsMTYgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBt YmlfcCkKIAogICAgIC8qIEZ1bGwgZXhjZXB0aW9uIHN1cHBvcnQgZnJvbSBoZXJlIG9uIGluLiAq LwogCi0gICAgbG9hZGVyID0gKG1iaS0+ZmxhZ3MgJiBNQklfTE9BREVSTkFNRSkKLSAgICAgICAg PyAoY2hhciAqKV9fdmEobWJpLT5ib290X2xvYWRlcl9uYW1lKSA6ICJ1bmtub3duIjsKKyAgICBp ZiAoICFlZmlfZW5hYmxlZCApCisgICAgICAgIHhiaSA9IHhiaV9zdGFydDsKKyAgICBlbHNlCisg ICAgeworICAgICAgICB4YmkgPSBfX3ZhKHhiaV9zdGFydCk7CisgICAgICAgIHhiaS0+Y21kbGlu ZSA9IF9fdmEoeGJpLT5jbWRsaW5lKTsKKyAgICB9CiAKICAgICAvKiBQYXJzZSB0aGUgY29tbWFu ZC1saW5lIG9wdGlvbnMuICovCi0gICAgY21kbGluZSA9IGNtZGxpbmVfY29vaygobWJpLT5mbGFn cyAmIE1CSV9DTURMSU5FKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBfX3ZhKG1iaS0+ Y21kbGluZSkgOiBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyKTsKKyAg ICBjbWRsaW5lID0gY21kbGluZV9jb29rKHhiaS0+Y21kbGluZSwgeGJpLT5ib290X2xvYWRlcl9u YW1lKTsKICAgICBpZiAoIChrZXh0cmEgPSBzdHJzdHIoY21kbGluZSwgIiAtLSAiKSkgIT0gTlVM TCApCiAgICAgewogICAgICAgICAvKgpAQCAtNTk3LDggKzUyOSw2IEBAIHZvaWQgX19pbml0IG5v cmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICogYWxsb2Npbmcg YW55IHhlbmhlYXAgc3RydWN0dXJlcyB3YW50ZWQgaW4gbG93ZXIgbWVtb3J5LiAqLwogICAgIGtl eGVjX2Vhcmx5X2NhbGN1bGF0aW9ucygpOwogCi0gICAgcGFyc2VfdmlkZW9faW5mbygpOwotCiAg ICAgaWYgKCBjcHVfaGFzX2VmZXIgKQogICAgICAgICByZG1zcmwoTVNSX0VGRVIsIHRoaXNfY3B1 KGVmZXIpKTsKICAgICBhc20gdm9sYXRpbGUgKCAibW92ICUlY3I0LCUwIiA6ICI9ciIgKHRoaXNf Y3B1KGNyNCkpICk7CkBAIC02MTMsMjcgKzU0MywzMyBAQCB2b2lkIF9faW5pdCBub3JldHVybiBf X3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIGVoY2lfZGJncF9pbml0KCk7CiAg ICAgY29uc29sZV9pbml0X3ByZWlycSgpOwogCi0gICAgcHJpbnRrKCJCb290bG9hZGVyOiAlc1xu IiwgbG9hZGVyKTsKKyAgICBpZiAoIHhiaS0+ZXJyX21zZyApCisgICAgICAgIHBhbmljKHhiaS0+ ZXJyX21zZyk7CisKKyAgICBpZiAoIHhiaS0+d2Fybl9tc2cgKQorICAgICAgICBwcmludGsoeGJp LT53YXJuX21zZyk7CisKKyAgICBwcmludGsoIkJvb3Rsb2FkZXI6ICVzXG4iLCB4YmktPmJvb3Rf bG9hZGVyX25hbWUpOwogCi0gICAgcHJpbnRrKCJDb21tYW5kIGxpbmU6ICVzXG4iLCBjbWRsaW5l KTsKKyAgICBwcmludGsoIkNvbW1hbmQgbGluZTogJXNcbiIsIHhiaS0+Y21kbGluZSA/IHhiaS0+ Y21kbGluZSA6ICJOT05FIik7CiAKICAgICBwcmludGsoIlZpZGVvIGluZm9ybWF0aW9uOlxuIik7 CiAKICAgICAvKiBQcmludCBWR0EgZGlzcGxheSBtb2RlIGluZm9ybWF0aW9uLiAqLwotICAgIHN3 aXRjaCAoIHZnYV9jb25zb2xlX2luZm8udmlkZW9fdHlwZSApCisgICAgc3dpdGNoICggeGJpLT52 Z2FfY29uc29sZV9pbmZvLnZpZGVvX3R5cGUgKQogICAgIHsKICAgICBjYXNlIFhFTl9WR0FUWVBF X1RFWFRfTU9ERV8zOgogICAgICAgICBwcmludGsoIiBWR0EgaXMgdGV4dCBtb2RlICVkeCVkLCBm b250IDh4JWRcbiIsCi0gICAgICAgICAgICAgICB2Z2FfY29uc29sZV9pbmZvLnUudGV4dF9tb2Rl XzMuY29sdW1ucywKLSAgICAgICAgICAgICAgIHZnYV9jb25zb2xlX2luZm8udS50ZXh0X21vZGVf My5yb3dzLAotICAgICAgICAgICAgICAgdmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLmZv bnRfaGVpZ2h0KTsKKyAgICAgICAgICAgICAgIHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnRleHRf bW9kZV8zLmNvbHVtbnMsCisgICAgICAgICAgICAgICB4YmktPnZnYV9jb25zb2xlX2luZm8udS50 ZXh0X21vZGVfMy5yb3dzLAorICAgICAgICAgICAgICAgeGJpLT52Z2FfY29uc29sZV9pbmZvLnUu dGV4dF9tb2RlXzMuZm9udF9oZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFhFTl9W R0FUWVBFX1ZFU0FfTEZCOgogICAgIGNhc2UgWEVOX1ZHQVRZUEVfRUZJX0xGQjoKICAgICAgICAg cHJpbnRrKCIgVkdBIGlzIGdyYXBoaWNzIG1vZGUgJWR4JWQsICVkIGJwcFxuIiwKLSAgICAgICAg ICAgICAgIHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi53aWR0aCwKLSAgICAgICAgICAgICAg IHZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5oZWlnaHQsCi0gICAgICAgICAgICAgICB2Z2Ff Y29uc29sZV9pbmZvLnUudmVzYV9sZmIuYml0c19wZXJfcGl4ZWwpOworICAgICAgICAgICAgICAg eGJpLT52Z2FfY29uc29sZV9pbmZvLnUudmVzYV9sZmIud2lkdGgsCisgICAgICAgICAgICAgICB4 YmktPnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5oZWlnaHQsCisgICAgICAgICAgICAgICB4 YmktPnZnYV9jb25zb2xlX2luZm8udS52ZXNhX2xmYi5iaXRzX3Blcl9waXhlbCk7CiAgICAgICAg IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHByaW50aygiIE5vIFZHQSBkZXRlY3RlZFxu Iik7CkBAIC02NDEsMTUgKzU3NywxNSBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hl bih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIH0KIAogICAgIC8qIFByaW50IFZCRS9EREMgRURJ RCBpbmZvcm1hdGlvbi4gKi8KLSAgICBpZiAoIGJvb3RzeW0oYm9vdF9lZGlkX2NhcHMpICE9IDB4 MTMxMyApCisgICAgaWYgKCB4YmktPmVkaWRfY2FwcyAhPSAweDEzMTMgKQogICAgIHsKLSAgICAg ICAgdTE2IGNhcHMgPSBib290c3ltKGJvb3RfZWRpZF9jYXBzKTsKKyAgICAgICAgdTE2IGNhcHMg PSB4YmktPmVkaWRfY2FwczsKICAgICAgICAgcHJpbnRrKCIgVkJFL0REQyBtZXRob2RzOiVzJXMl czsgIiwKICAgICAgICAgICAgICAgIChjYXBzICYgMSkgPyAiIFYxIiA6ICIiLAogICAgICAgICAg ICAgICAgKGNhcHMgJiAyKSA/ICIgVjIiIDogIiIsCiAgICAgICAgICAgICAgICAhKGNhcHMgJiAz KSA/ICIgbm9uZSIgOiAiIik7CiAgICAgICAgIHByaW50aygiRURJRCB0cmFuc2ZlciB0aW1lOiAl ZCBzZWNvbmRzXG4iLCBjYXBzID4+IDgpOwotICAgICAgICBpZiAoICoodTMyICopYm9vdHN5bShi b290X2VkaWRfaW5mbykgPT0gMHgxMzEzMTMxMyApCisgICAgICAgIGlmICggKih1MzIgKil4Ymkt PmVkaWRfaW5mbyA9PSAweDEzMTMxMzEzICkKICAgICAgICAgewogICAgICAgICAgICAgcHJpbnRr KCIgRURJRCBpbmZvIG5vdCByZXRyaWV2ZWQgYmVjYXVzZSAiKTsKICAgICAgICAgICAgIGlmICgg IShjYXBzICYgMykgKQpAQCAtNjYyLDEzICs1OTgsMTEgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4g X19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICB9CiAKICAgICBwcmludGsoIkRp c2MgaW5mb3JtYXRpb246XG4iKTsKLSAgICBwcmludGsoIiBGb3VuZCAlZCBNQlIgc2lnbmF0dXJl c1xuIiwKLSAgICAgICAgICAgYm9vdHN5bShib290X21icl9zaWduYXR1cmVfbnIpKTsKLSAgICBw cmludGsoIiBGb3VuZCAlZCBFREQgaW5mb3JtYXRpb24gc3RydWN0dXJlc1xuIiwKLSAgICAgICAg ICAgYm9vdHN5bShib290X2VkZF9pbmZvX25yKSk7CisgICAgcHJpbnRrKCIgRm91bmQgJWQgTUJS IHNpZ25hdHVyZXNcbiIsIHhiaS0+bWJyX3NpZ25hdHVyZV9ucik7CisgICAgcHJpbnRrKCIgRm91 bmQgJWQgRUREIGluZm9ybWF0aW9uIHN0cnVjdHVyZXNcbiIsIHhiaS0+ZWRkX2luZm9fbnIpOwog CiAgICAgLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBNdWx0aWJvb3QgbW9kdWxl LiAqLwotICAgIGlmICggIShtYmktPmZsYWdzICYgTUJJX01PRFVMRVMpIHx8IChtYmktPm1vZHNf Y291bnQgPT0gMCkgKQorICAgIGlmICggIXhiaS0+bW9kc19uciApCiAgICAgICAgIHBhbmljKCJk b20wIGtlcm5lbCBub3Qgc3BlY2lmaWVkLiBDaGVjayBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24u Iik7CiAKICAgICBpZiAoICgodW5zaWduZWQgbG9uZyljcHUwX3N0YWNrICYgKFNUQUNLX1NJWkUt MSkpICE9IDAgKQpAQCAtNjg2LDc3ICs2MjAsMTAgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19z dGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgLyogTWFrZSBib290IHBhZ2Ug dGFibGVzIG1hdGNoIG5vbi1FRkkgYm9vdC4gKi8KICAgICAgICAgbDNfYm9vdG1hcFtsM190YWJs ZV9vZmZzZXQoQk9PVFNUUkFQX01BUF9CQVNFKV0gPQogICAgICAgICAgICAgbDNlX2Zyb21fcGFk ZHIoX19wYShsMl9ib290bWFwKSwgX19QQUdFX0hZUEVSVklTT1IpOwotCi0gICAgICAgIG1lbW1h cF90eXBlID0gbG9hZGVyOwogICAgIH0KLSAgICBlbHNlIGlmICggZTgyMF9yYXdfbnIgIT0gMCAp Ci0gICAgewotICAgICAgICBtZW1tYXBfdHlwZSA9ICJYZW4tZTgyMCI7Ci0gICAgfQotICAgIGVs c2UgaWYgKCBtYmktPmZsYWdzICYgTUJJX01FTU1BUCApCi0gICAgewotICAgICAgICBtZW1tYXBf dHlwZSA9ICJNdWx0aWJvb3QtZTgyMCI7Ci0gICAgICAgIHdoaWxlICggKGJ5dGVzIDwgbWJpLT5t bWFwX2xlbmd0aCkgJiYgKGU4MjBfcmF3X25yIDwgRTgyME1BWCkgKQotICAgICAgICB7Ci0gICAg ICAgICAgICBtZW1vcnlfbWFwX3QgKm1hcCA9IF9fdmEobWJpLT5tbWFwX2FkZHIgKyBieXRlcyk7 Ci0KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBUaGlzIGlzIGEgZ3Jvc3Mgd29ya2Fy b3VuZCBmb3IgYSBCSU9TIGJ1Zy4gU29tZSBib290bG9hZGVycyBkbwotICAgICAgICAgICAgICog bm90IHdyaXRlIGU4MjAgbWFwIGVudHJpZXMgaW50byBwcmUtemVyb2VkIG1lbW9yeS4gVGhpcyBp cwotICAgICAgICAgICAgICogb2theSBpZiB0aGUgQklPUyBmaWxscyBpbiBhbGwgZmllbGRzIG9m IHRoZSBtYXAgZW50cnksIGJ1dAotICAgICAgICAgICAgICogc29tZSBicm9rZW4gQklPU2VzIGRv IG5vdCBib3RoZXIgdG8gd3JpdGUgdGhlIGhpZ2ggd29yZCBvZgotICAgICAgICAgICAgICogdGhl IGxlbmd0aCBmaWVsZCBpZiB0aGUgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiA0R0IuIFdlCi0gICAg ICAgICAgICAgKiBkZXRlY3QgYW5kIGZpeCB0aGlzIGJ5IGZsYWdnaW5nIHNlY3Rpb25zIGJlbG93 IDRHQiB0aGF0Ci0gICAgICAgICAgICAgKiBhcHBlYXIgdG8gYmUgbGFyZ2VyIHRoYW4gNEdCIGlu IHNpemUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICggKG1hcC0+YmFzZV9hZGRy X2hpZ2ggPT0gMCkgJiYgKG1hcC0+bGVuZ3RoX2hpZ2ggIT0gMCkgKQotICAgICAgICAgICAgewot ICAgICAgICAgICAgICAgIGlmICggIWU4MjBfd2FybiApCi0gICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgICBwcmludGsoIldBUk5JTkc6IEJ1Z2d5IGU4MjAgbWFwIGRldGVjdGVk IGFuZCBmaXhlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKHRydW5jYXRlZCBsZW5n dGggZmllbGRzKS5cbiIpOwotICAgICAgICAgICAgICAgICAgICBlODIwX3dhcm4gPSAxOwotICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtYXAtPmxlbmd0aF9oaWdoID0gMDsKLSAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZTgyMF9yYXdbZTgyMF9yYXdfbnJdLmFkZHIgPSAK LSAgICAgICAgICAgICAgICAoKHU2NCltYXAtPmJhc2VfYWRkcl9oaWdoIDw8IDMyKSB8ICh1NjQp bWFwLT5iYXNlX2FkZHJfbG93OwotICAgICAgICAgICAgZTgyMF9yYXdbZTgyMF9yYXdfbnJdLnNp emUgPSAKLSAgICAgICAgICAgICAgICAoKHU2NCltYXAtPmxlbmd0aF9oaWdoIDw8IDMyKSB8ICh1 NjQpbWFwLT5sZW5ndGhfbG93OwotICAgICAgICAgICAgZTgyMF9yYXdbZTgyMF9yYXdfbnJdLnR5 cGUgPSBtYXAtPnR5cGU7Ci0gICAgICAgICAgICBlODIwX3Jhd19ucisrOwotCi0gICAgICAgICAg ICBieXRlcyArPSBtYXAtPnNpemUgKyA0OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYg KCBib290c3ltKGxvd21lbV9rYikgKQotICAgIHsKLSAgICAgICAgbWVtbWFwX3R5cGUgPSAiWGVu LWU4MDEiOwotICAgICAgICBlODIwX3Jhd1swXS5hZGRyID0gMDsKLSAgICAgICAgZTgyMF9yYXdb MF0uc2l6ZSA9IGJvb3RzeW0obG93bWVtX2tiKSA8PCAxMDsKLSAgICAgICAgZTgyMF9yYXdbMF0u dHlwZSA9IEU4MjBfUkFNOwotICAgICAgICBlODIwX3Jhd1sxXS5hZGRyID0gMHgxMDAwMDA7Ci0g ICAgICAgIGU4MjBfcmF3WzFdLnNpemUgPSBib290c3ltKGhpZ2htZW1fa2IpIDw8IDEwOwotICAg ICAgICBlODIwX3Jhd1sxXS50eXBlID0gRTgyMF9SQU07Ci0gICAgICAgIGU4MjBfcmF3X25yID0g MjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIG1iaS0+ZmxhZ3MgJiBNQklfTUVNTElNSVRTICkKLSAg ICB7Ci0gICAgICAgIG1lbW1hcF90eXBlID0gIk11bHRpYm9vdC1lODAxIjsKLSAgICAgICAgZTgy MF9yYXdbMF0uYWRkciA9IDA7Ci0gICAgICAgIGU4MjBfcmF3WzBdLnNpemUgPSBtYmktPm1lbV9s b3dlciA8PCAxMDsKLSAgICAgICAgZTgyMF9yYXdbMF0udHlwZSA9IEU4MjBfUkFNOwotICAgICAg ICBlODIwX3Jhd1sxXS5hZGRyID0gMHgxMDAwMDA7Ci0gICAgICAgIGU4MjBfcmF3WzFdLnNpemUg PSBtYmktPm1lbV91cHBlciA8PCAxMDsKLSAgICAgICAgZTgyMF9yYXdbMV0udHlwZSA9IEU4MjBf UkFNOwotICAgICAgICBlODIwX3Jhd19uciA9IDI7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAg cGFuaWMoIkJvb3Rsb2FkZXIgcHJvdmlkZWQgbm8gbWVtb3J5IGluZm9ybWF0aW9uLiIpOwogCiAg ICAgLyogU2FuaXRpc2UgdGhlIHJhdyBFODIwIG1hcCB0byBwcm9kdWNlIGEgZmluYWwgY2xlYW4g dmVyc2lvbi4gKi8KLSAgICBtYXhfcGFnZSA9IHJhd19tYXhfcGFnZSA9IGluaXRfZTgyMChtZW1t YXBfdHlwZSwgZTgyMF9yYXcsICZlODIwX3Jhd19ucik7CisgICAgbWF4X3BhZ2UgPSByYXdfbWF4 X3BhZ2UgPSBpbml0X2U4MjAoeGJpLT5tbWFwX3R5cGUsIHhiaS0+ZTgyMG1hcCwgJnhiaS0+ZTgy MG1hcF9ucik7CiAKICAgICAvKiBDcmVhdGUgYSB0ZW1wb3JhcnkgY29weSBvZiB0aGUgRTgyMCBt YXAuICovCiAgICAgbWVtY3B5KCZib290X2U4MjAsICZlODIwLCBzaXplb2YoZTgyMCkpOwpAQCAt NzY5LDggKzYzNiw4IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVk IGxvbmcgbWJpX3ApCiAgICAgc2V0X2tleGVjX2NyYXNoX2FyZWFfc2l6ZSgodTY0KW5yX3BhZ2Vz IDw8IFBBR0VfU0hJRlQpOwogICAgIGtleGVjX3Jlc2VydmVfYXJlYSgmYm9vdF9lODIwKTsKIAot ICAgIGluaXRpYWxfaW1hZ2VzID0gbW9kOwotICAgIG5yX2luaXRpYWxfaW1hZ2VzID0gbWJpLT5t b2RzX2NvdW50OworICAgIG5yX2luaXRpYWxfaW1hZ2VzID0geGJpLT5tb2RzX25yOworICAgIGlu aXRpYWxfaW1hZ2VzID0geGJpLT5tb2RzOwogCiAgICAgLyoKICAgICAgKiBJdGVyYXRlIGJhY2t3 YXJkcyBvdmVyIGFsbCBzdXBlcnBhZ2UtYWxpZ25lZCBSQU0gcmVnaW9ucy4KQEAgLTc4NSwxNiAr NjUyLDE1IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcg bWJpX3ApCiAgICAgICogd2UgY2FuIHJlbG9jYXRlIHRoZSBkb20wIGtlcm5lbCBhbmQgb3RoZXIg bXVsdGlib290IG1vZHVsZXMuIEFsc28sIG9uCiAgICAgICogeDg2LzY0LCB3ZSByZWxvY2F0ZSBY ZW4gdG8gaGlnaGVyIG1lbW9yeS4KICAgICAgKi8KLSAgICBmb3IgKCBpID0gMDsgIWVmaV9lbmFi bGVkICYmIGkgPCBtYmktPm1vZHNfY291bnQ7IGkrKyApCisgICAgZm9yICggaSA9IDA7ICFlZmlf ZW5hYmxlZCAmJiBpIDwgeGJpLT5tb2RzX25yOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCBt b2RbaV0ubW9kX3N0YXJ0ICYgKFBBR0VfU0laRSAtIDEpICkKKyAgICAgICAgaWYgKCB4YmktPm1v ZHNbaV0uc3RhcnQgJiAoUEFHRV9TSVpFIC0gMSkgKQogICAgICAgICAgICAgcGFuaWMoIkJvb3Rs b2FkZXIgZGlkbid0IGhvbm9yIG1vZHVsZSBhbGlnbm1lbnQgcmVxdWVzdC4iKTsKLSAgICAgICAg bW9kW2ldLm1vZF9lbmQgLT0gbW9kW2ldLm1vZF9zdGFydDsKLSAgICAgICAgbW9kW2ldLm1vZF9z dGFydCA+Pj0gUEFHRV9TSElGVDsKLSAgICAgICAgbW9kW2ldLnJlc2VydmVkID0gMDsKKyAgICAg ICAgeGJpLT5tb2RzW2ldLmVuZCAtPSB4YmktPm1vZHNbaV0uc3RhcnQ7CisgICAgICAgIHhiaS0+ bW9kc1tpXS5zdGFydCA+Pj0gUEFHRV9TSElGVDsKICAgICB9CiAKLSAgICBtb2R1bGVzX2hlYWRy b29tID0gYnppbWFnZV9oZWFkcm9vbShib290c3RyYXBfbWFwKG1vZCksIG1vZC0+bW9kX2VuZCk7 CisgICAgbW9kdWxlc19oZWFkcm9vbSA9IGJ6aW1hZ2VfaGVhZHJvb20oYm9vdHN0cmFwX21hcCh4 YmktPm1vZHMpLCB4YmktPm1vZHMtPmVuZCk7CiAgICAgYm9vdHN0cmFwX21hcChOVUxMKTsKIAog I2lmbmRlZiBoaWdobWVtX3N0YXJ0CkBAIC04MzUsNyArNzAxLDcgQEAgdm9pZCBfX2luaXQgbm9y ZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgewogICAgICAg ICAgICAgLyogRG9uJ3Qgb3ZlcmxhcCB3aXRoIG1vZHVsZXMuICovCiAgICAgICAgICAgICBlbmQg PSBjb25zaWRlcl9tb2R1bGVzKHMsIGUsIHJlbG9jX3NpemUgKyBtYXNrLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtb2QsIG1iaS0+bW9kc19jb3VudCwgLTEpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YmktPm1vZHMsIHhiaS0+bW9kc19uciwgLTEp OwogICAgICAgICAgICAgZW5kICY9IH5tYXNrOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAg LTkyMywzNiArNzg5LDM2IEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2ln bmVkIGxvbmcgbWJpX3ApCiAgICAgICAgIH0KIAogICAgICAgICAvKiBJcyB0aGUgcmVnaW9uIHN1 aXRhYmxlIGZvciByZWxvY2F0aW5nIHRoZSBtdWx0aWJvb3QgbW9kdWxlcz8gKi8KLSAgICAgICAg Zm9yICggaiA9IG1iaS0+bW9kc19jb3VudCAtIDE7IGogPj0gMDsgai0tICkKKyAgICAgICAgZm9y ICggaiA9IHhiaS0+bW9kc19uciAtIDE7IGogPj0gMDsgai0tICkKICAgICAgICAgewogICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBoZWFkcm9vbSA9IGogPyAwIDogbW9kdWxlc19oZWFkcm9vbTsK LSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSA9IFBBR0VfQUxJR04oaGVhZHJvb20gKyBt b2Rbal0ubW9kX2VuZCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUgPSBQQUdFX0FM SUdOKGhlYWRyb29tICsgeGJpLT5tb2RzW2pdLmVuZCk7CiAKLSAgICAgICAgICAgIGlmICggbW9k W2pdLnJlc2VydmVkICkKKyAgICAgICAgICAgIGlmICggeGJpLT5tb2RzW2pdLnJlbG9jYXRlZCAp CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIERvbid0IG92ZXJs YXAgd2l0aCBvdGhlciBtb2R1bGVzLiAqLwotICAgICAgICAgICAgZW5kID0gY29uc2lkZXJfbW9k dWxlcyhzLCBlLCBzaXplLCBtb2QsIG1iaS0+bW9kc19jb3VudCwgaik7CisgICAgICAgICAgICBl bmQgPSBjb25zaWRlcl9tb2R1bGVzKHMsIGUsIHNpemUsIHhiaS0+bW9kcywgeGJpLT5tb2RzX25y LCBqKTsKIAogICAgICAgICAgICAgaWYgKCBoaWdobWVtX3N0YXJ0ICYmIGVuZCA+IGhpZ2htZW1f c3RhcnQgKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoIHMg PCBlbmQgJiYKICAgICAgICAgICAgICAgICAgKGhlYWRyb29tIHx8Ci0gICAgICAgICAgICAgICAg ICAoKGVuZCAtIHNpemUpID4+IFBBR0VfU0hJRlQpID4gbW9kW2pdLm1vZF9zdGFydCkgKQorICAg ICAgICAgICAgICAgICAgKChlbmQgLSBzaXplKSA+PiBQQUdFX1NISUZUKSA+IHhiaS0+bW9kc1tq XS5zdGFydCkgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1vdmVfbWVtb3J5KGVu ZCAtIHNpemUgKyBoZWFkcm9vbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0 X3QpbW9kW2pdLm1vZF9zdGFydCA8PCBQQUdFX1NISUZULAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1vZFtqXS5tb2RfZW5kLCAwKTsKLSAgICAgICAgICAgICAgICBtb2Rbal0ubW9kX3N0 YXJ0ID0gKGVuZCAtIHNpemUpID4+IFBBR0VfU0hJRlQ7Ci0gICAgICAgICAgICAgICAgbW9kW2pd Lm1vZF9lbmQgKz0gaGVhZHJvb207Ci0gICAgICAgICAgICAgICAgbW9kW2pdLnJlc2VydmVkID0g MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpeGJpLT5tb2RzW2pdLnN0 YXJ0IDw8IFBBR0VfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGJpLT5tb2Rz W2pdLmVuZCwgMCk7CisgICAgICAgICAgICAgICAgeGJpLT5tb2RzW2pdLnN0YXJ0ID0gKGVuZCAt IHNpemUpID4+IFBBR0VfU0hJRlQ7CisgICAgICAgICAgICAgICAgeGJpLT5tb2RzW2pdLmVuZCAr PSBoZWFkcm9vbTsKKyAgICAgICAgICAgICAgICB4YmktPm1vZHNbal0ucmVsb2NhdGVkID0gMTsK ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8qIERvbid0IG92ZXJsYXAgd2l0 aCBtb2R1bGVzLiAqLwogICAgICAgICBlID0gY29uc2lkZXJfbW9kdWxlcyhzLCBlLCBQQUdFX0FM SUdOKGtleGVjX2NyYXNoX2FyZWEuc2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZCwgbWJpLT5tb2RzX2NvdW50LCAtMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHhiaS0+bW9kcywgeGJpLT5tb2RzX25yLCAtMSk7CiAgICAgICAgIGlmICggIWtleGVjX2NyYXNo X2FyZWEuc3RhcnQgJiYgKHMgPCBlKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGUgPSAoZSAt IGtleGVjX2NyYXNoX2FyZWEuc2l6ZSkgJiBQQUdFX01BU0s7CkBAIC05NjAsMTggKzgyNiwxOCBA QCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQog ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBtb2R1bGVzX2hlYWRyb29tICYmICFtb2QtPnJl c2VydmVkICkKKyAgICBpZiAoIG1vZHVsZXNfaGVhZHJvb20gJiYgIXhiaS0+bW9kcy0+cmVsb2Nh dGVkICkKICAgICAgICAgcGFuaWMoIk5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlbG9jYXRlIHRoZSBk b20wIGtlcm5lbCBpbWFnZS4iKTsKLSAgICBmb3IgKCBpID0gMDsgaSA8IG1iaS0+bW9kc19jb3Vu dDsgKytpICkKKyAgICBmb3IgKCBpID0gMDsgaSA8IHhiaS0+bW9kc19ucjsgKytpICkKICAgICB7 Ci0gICAgICAgIHVpbnQ2NF90IHMgPSAodWludDY0X3QpbW9kW2ldLm1vZF9zdGFydCA8PCBQQUdF X1NISUZUOworICAgICAgICB1aW50NjRfdCBzID0gKHVpbnQ2NF90KXhiaS0+bW9kc1tpXS5zdGFy dCA8PCBQQUdFX1NISUZUOwogCi0gICAgICAgIHJlc2VydmVfZTgyMF9yYW0oJmJvb3RfZTgyMCwg cywgcyArIFBBR0VfQUxJR04obW9kW2ldLm1vZF9lbmQpKTsKKyAgICAgICAgcmVzZXJ2ZV9lODIw X3JhbSgmYm9vdF9lODIwLCBzLCBzICsgUEFHRV9BTElHTih4YmktPm1vZHNbaV0uZW5kKSk7CiAg ICAgfQogCiAgICAgaWYgKCAheGVuX3BoeXNfc3RhcnQgKQogICAgICAgICBwYW5pYygiTm90IGVu b3VnaCBtZW1vcnkgdG8gcmVsb2NhdGUgWGVuLiIpOwotICAgIHJlc2VydmVfZTgyMF9yYW0oJmJv b3RfZTgyMCwgZWZpX2VuYWJsZWQgPyBtYmktPm1lbV91cHBlciA6IF9fcGEoJl9zdGFydCksCisg ICAgcmVzZXJ2ZV9lODIwX3JhbSgmYm9vdF9lODIwLCBlZmlfZW5hYmxlZCA/IHhiaS0+bWVtX3Vw cGVyIDogX19wYSgmX3N0YXJ0KSwKICAgICAgICAgICAgICAgICAgICAgIF9fcGEoJl9lbmQpKTsK IAogICAgIC8qIExhdGUga2V4ZWMgcmVzZXJ2YXRpb24gKGR5bmFtaWMgc3RhcnQgYWRkcmVzcyku ICovCkBAIC0xMDE3LDEwICs4ODMsMTAgQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFydF94 ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGopOwog ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtYXBfZSA9IGJvb3RfZTgyMC5tYXBb al0uYWRkciArIGJvb3RfZTgyMC5tYXBbal0uc2l6ZTsKLSAgICAgICAgICAgICAgICBmb3IgKCBq ID0gMDsgaiA8IG1iaS0+bW9kc19jb3VudDsgKytqICkKKyAgICAgICAgICAgICAgICBmb3IgKCBq ID0gMDsgaiA8IHhiaS0+bW9kc19ucjsgKytqICkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCA9IHBmbl90b19wYWRkcihtb2Rbal0ubW9kX3N0YXJ0 KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZFtqXS5tb2RfZW5kOwor ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBlbmQgPSBwZm5fdG9fcGFkZHIoeGJpLT5tb2Rz W2pdLnN0YXJ0KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhiaS0+bW9k c1tqXS5lbmQ7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCBtYXBfZSA8IGVuZCApCiAgICAg ICAgICAgICAgICAgICAgICAgICBtYXBfZSA9IGVuZDsKQEAgLTEwOTMsMTMgKzk1OSwxMyBAQCB2 b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAg ICAgICB9CiAgICAgfQogCi0gICAgZm9yICggaSA9IDA7IGkgPCBtYmktPm1vZHNfY291bnQ7ICsr aSApCisgICAgZm9yICggaSA9IDA7IGkgPCB4YmktPm1vZHNfbnI7ICsraSApCiAgICAgewotICAg ICAgICBzZXRfcGR4X3JhbmdlKG1vZFtpXS5tb2Rfc3RhcnQsCi0gICAgICAgICAgICAgICAgICAg ICAgbW9kW2ldLm1vZF9zdGFydCArIFBGTl9VUChtb2RbaV0ubW9kX2VuZCkpOwotICAgICAgICBt YXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KG1vZFtpXS5tb2Rfc3Rh cnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIG1vZFtpXS5tb2Rfc3RhcnQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgUEZOX1VQKG1vZFtpXS5tb2RfZW5kKSwgUEFHRV9IWVBFUlZJU09S KTsKKyAgICAgICAgc2V0X3BkeF9yYW5nZSh4YmktPm1vZHNbaV0uc3RhcnQsCisgICAgICAgICAg ICAgICAgICAgICAgeGJpLT5tb2RzW2ldLnN0YXJ0ICsgUEZOX1VQKHhiaS0+bW9kc1tpXS5lbmQp KTsKKyAgICAgICAgbWFwX3BhZ2VzX3RvX3hlbigodW5zaWduZWQgbG9uZyltZm5fdG9fdmlydCh4 YmktPm1vZHNbaV0uc3RhcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHhiaS0+bW9kc1tp XS5zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQRk5fVVAoeGJpLT5tb2RzW2ldLmVu ZCksIFBBR0VfSFlQRVJWSVNPUik7CiAgICAgfQogCiAgICAgaWYgKCBrZXhlY19jcmFzaF9hcmVh LnNpemUgKQpAQCAtMTI1MywxMyArMTExOSwxMyBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0 YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogCiAgICAgaW5pdF9JUlEoKTsKIAotICAgIG1v ZHVsZV9tYXAgPSB4bWFsbG9jX2FycmF5KHVuc2lnbmVkIGxvbmcsIEJJVFNfVE9fTE9OR1MobWJp LT5tb2RzX2NvdW50KSk7Ci0gICAgYml0bWFwX2ZpbGwobW9kdWxlX21hcCwgbWJpLT5tb2RzX2Nv dW50KTsKKyAgICBtb2R1bGVfbWFwID0geG1hbGxvY19hcnJheSh1bnNpZ25lZCBsb25nLCBCSVRT X1RPX0xPTkdTKHhiaS0+bW9kc19ucikpOworICAgIGJpdG1hcF9maWxsKG1vZHVsZV9tYXAsIHhi aS0+bW9kc19ucik7CiAgICAgX19jbGVhcl9iaXQoMCwgbW9kdWxlX21hcCk7IC8qIERvbTAga2Vy bmVsIGlzIGFsd2F5cyBmaXJzdCAqLwogCi0gICAgeHNtX211bHRpYm9vdF9pbml0KG1vZHVsZV9t YXAsIG1iaSwgYm9vdHN0cmFwX21hcCk7CisgICAgeHNtX211bHRpYm9vdF9pbml0KG1vZHVsZV9t YXAsIHhiaSwgYm9vdHN0cmFwX21hcCk7CiAKLSAgICBtaWNyb2NvZGVfZ3JhYl9tb2R1bGUobW9k dWxlX21hcCwgbWJpLCBib290c3RyYXBfbWFwKTsKKyAgICBtaWNyb2NvZGVfZ3JhYl9tb2R1bGUo bW9kdWxlX21hcCwgeGJpLCBib290c3RyYXBfbWFwKTsKIAogICAgIHRpbWVyX2luaXQoKTsKIApA QCAtMTM2NCwxMiArMTIzMCwxMiBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1 bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIGRvbTAtPnRhcmdldCA9IE5VTEw7CiAKICAgICAvKiBH cmFiIHRoZSBET00wIGNvbW1hbmQgbGluZS4gKi8KLSAgICBjbWRsaW5lID0gKGNoYXIgKikobW9k WzBdLnN0cmluZyA/IF9fdmEobW9kWzBdLnN0cmluZykgOiBOVUxMKTsKKyAgICBjbWRsaW5lID0g KGNoYXIgKikoeGJpLT5tb2RzWzBdLmNtZGxpbmUgPyBfX3ZhKHhiaS0+bW9kc1swXS5jbWRsaW5l KSA6IE5VTEwpOwogICAgIGlmICggKGNtZGxpbmUgIT0gTlVMTCkgfHwgKGtleHRyYSAhPSBOVUxM KSApCiAgICAgewogICAgICAgICBzdGF0aWMgY2hhciBfX2luaXRkYXRhIGRvbTBfY21kbGluZVtN QVhfR1VFU1RfQ01ETElORV07CiAKLSAgICAgICAgY21kbGluZSA9IGNtZGxpbmVfY29vayhjbWRs aW5lLCBsb2FkZXIpOworICAgICAgICBjbWRsaW5lID0gY21kbGluZV9jb29rKGNtZGxpbmUsIHhi aS0+Ym9vdF9sb2FkZXJfbmFtZSk7CiAgICAgICAgIHNhZmVfc3RyY3B5KGRvbTBfY21kbGluZSwg Y21kbGluZSk7CiAKICAgICAgICAgaWYgKCBrZXh0cmEgIT0gTlVMTCApCkBAIC0xMzk2LDggKzEy NjIsOCBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1i aV9wKQogICAgIGlmICggeGVuX2NwdWlkbGUgKQogICAgICAgICB4ZW5fcHJvY2Vzc29yX3BtYml0 cyB8PSBYRU5fUFJPQ0VTU09SX1BNX0NYOwogCi0gICAgaW5pdHJkaWR4ID0gZmluZF9maXJzdF9i aXQobW9kdWxlX21hcCwgbWJpLT5tb2RzX2NvdW50KTsKLSAgICBpZiAoIGJpdG1hcF93ZWlnaHQo bW9kdWxlX21hcCwgbWJpLT5tb2RzX2NvdW50KSA+IDEgKQorICAgIGluaXRyZGlkeCA9IGZpbmRf Zmlyc3RfYml0KG1vZHVsZV9tYXAsIHhiaS0+bW9kc19ucik7CisgICAgaWYgKCBiaXRtYXBfd2Vp Z2h0KG1vZHVsZV9tYXAsIHhiaS0+bW9kc19ucikgPiAxICkKICAgICAgICAgcHJpbnRrKFhFTkxP R19XQVJOSU5HCiAgICAgICAgICAgICAgICAiTXVsdGlwbGUgaW5pdHJkIGNhbmRpZGF0ZXMsIHBp Y2tpbmcgbW9kdWxlICMldVxuIiwKICAgICAgICAgICAgICAgIGluaXRyZGlkeCk7CkBAIC0xNDE0 LDkgKzEyODAsOSBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBs b25nIG1iaV9wKQogICAgICAqIFdlJ3JlIGdvaW5nIHRvIHNldHVwIGRvbWFpbjAgdXNpbmcgdGhl IG1vZHVsZShzKSB0aGF0IHdlIHN0YXNoZWQgc2FmZWx5CiAgICAgICogYWJvdmUgb3VyIGhlYXAu IFRoZSBzZWNvbmQgbW9kdWxlLCBpZiBwcmVzZW50LCBpcyBhbiBpbml0cmQgcmFtZGlzay4KICAg ICAgKi8KLSAgICBpZiAoIGNvbnN0cnVjdF9kb20wKGRvbTAsIG1vZCwgbW9kdWxlc19oZWFkcm9v bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIChpbml0cmRpZHggPiAwKSAmJiAoaW5pdHJkaWR4 IDwgbWJpLT5tb2RzX2NvdW50KQotICAgICAgICAgICAgICAgICAgICAgICAgPyBtb2QgKyBpbml0 cmRpZHggOiBOVUxMLAorICAgIGlmICggY29uc3RydWN0X2RvbTAoZG9tMCwgeGJpLT5tb2RzLCBt b2R1bGVzX2hlYWRyb29tLAorICAgICAgICAgICAgICAgICAgICAgICAgKGluaXRyZGlkeCA+IDAp ICYmIChpbml0cmRpZHggPCB4YmktPm1vZHNfbnIpCisgICAgICAgICAgICAgICAgICAgICAgICA/ IHhiaS0+bW9kcyArIGluaXRyZGlkeCA6IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICBi b290c3RyYXBfbWFwLCBjbWRsaW5lKSAhPSAwKQogICAgICAgICBwYW5pYygiQ291bGQgbm90IHNl dCB1cCBET00wIGd1ZXN0IE9TIik7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQv YXNtLW9mZnNldHMuYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwppbmRleCAz OTk0ZjRkLi4yMTIzZWIzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZz ZXRzLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCkBAIC0xMiw3ICsx Miw3IEBACiAjaW5jbHVkZSA8Y29tcGF0L3hlbi5oPgogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4K ICNpbmNsdWRlIDxhc20vaGFyZGlycS5oPgotI2luY2x1ZGUgPHhlbi9tdWx0aWJvb3QuaD4KKyNp bmNsdWRlIDxhc20vbWJkLmg+CiAKICNkZWZpbmUgREVGSU5FKF9zeW0sIF92YWwpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBhc20gdm9sYXRp bGUgKCJcbi5hc2NpaVwiPT0+I2RlZmluZSAiICNfc3ltICIgJTAgLyogIiAjX3ZhbCAiICovPD09 XCIiIFwKQEAgLTE2Myw2ICsxNjMsNSBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9GRlNF VChDUFVJTkZPX2ZlYXR1cmVzLCBzdHJ1Y3QgY3B1aW5mb194ODYsIHg4Nl9jYXBhYmlsaXR5KTsK ICAgICBCTEFOSygpOwogCi0gICAgT0ZGU0VUKE1CX2ZsYWdzLCBtdWx0aWJvb3RfaW5mb190LCBm bGFncyk7Ci0gICAgT0ZGU0VUKE1CX2NtZGxpbmUsIG11bHRpYm9vdF9pbmZvX3QsIGNtZGxpbmUp OworICAgIE9GRlNFVChNQkRfY21kbGluZSwgbWJkX3QsIGNtZGxpbmUpOwogfQpkaWZmIC0tZ2l0 IGEveGVuL2RyaXZlcnMvYWNwaS9vc2wuYyBiL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMKaW5kZXgg OTNjOTgzYy4uZjAzNGUxYSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvYWNwaS9vc2wuYworKysg Yi94ZW4vZHJpdmVycy9hY3BpL29zbC5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8eGVu L2RvbWFpbl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL2VmaS5oPgogI2luY2x1ZGUgPHhlbi92bWFw Lmg+CisjaW5jbHVkZSA8YXNtL3hiaS5oPgogCiAjZGVmaW5lIF9DT01QT05FTlQJCUFDUElfT1Nf U0VSVklDRVMKIEFDUElfTU9EVUxFX05BTUUoIm9zbCIpCkBAIC02NywxMCArNjgsMTAgQEAgdm9p ZCBfX2luaXQgYWNwaV9vc192cHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQog YWNwaV9waHlzaWNhbF9hZGRyZXNzIF9faW5pdCBhY3BpX29zX2dldF9yb290X3BvaW50ZXIodm9p ZCkKIHsKIAlpZiAoZWZpX2VuYWJsZWQpIHsKLQkJaWYgKGVmaS5hY3BpMjAgIT0gRUZJX0lOVkFM SURfVEFCTEVfQUREUikKLQkJCXJldHVybiBlZmkuYWNwaTIwOwotCQllbHNlIGlmIChlZmkuYWNw aSAhPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSKQotCQkJcmV0dXJuIGVmaS5hY3BpOworCQlpZiAo eGJpLT5hY3BpMjAgIT0gRUZJX0lOVkFMSURfVEFCTEVfQUREUikKKwkJCXJldHVybiB4YmktPmFj cGkyMDsKKwkJZWxzZSBpZiAoeGJpLT5hY3BpICE9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIpCisJ CQlyZXR1cm4geGJpLT5hY3BpOwogCQllbHNlIHsKIAkJCXByaW50ayhLRVJOX0VSUiBQUkVGSVgK IAkJCSAgICAgICAiU3lzdGVtIGRlc2NyaXB0aW9uIHRhYmxlcyBub3QgZm91bmRcbiIpOwpkaWZm IC0tZ2l0IGEveGVuL2RyaXZlcnMvdmlkZW8vdmVzYS5jIGIveGVuL2RyaXZlcnMvdmlkZW8vdmVz YS5jCmluZGV4IDU3NWRiNjIuLjg5NDFhYzMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3ZpZGVv L3Zlc2EuYworKysgYi94ZW4vZHJpdmVycy92aWRlby92ZXNhLmMKQEAgLTEyLDEwICsxMiwxMSBA QAogI2luY2x1ZGUgPHhlbi92Z2EuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxh c20vcGFnZS5oPgorI2luY2x1ZGUgPGFzbS94YmkuaD4KICNpbmNsdWRlICJmb250LmgiCiAjaW5j bHVkZSAibGZiLmgiCiAKLSNkZWZpbmUgdmxmYl9pbmZvICAgIHZnYV9jb25zb2xlX2luZm8udS52 ZXNhX2xmYgorI2RlZmluZSB2bGZiX2luZm8gICAgKHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnZl c2FfbGZiKQogCiBzdGF0aWMgdm9pZCBsZmJfZmx1c2godm9pZCk7CiAKQEAgLTQzLDcgKzQ0LDcg QEAgdm9pZCBfX2luaXQgdmVzYV9lYXJseV9pbml0KHZvaWQpCiB7CiAgICAgdW5zaWduZWQgaW50 IHZyYW1fdm1vZGU7CiAKLSAgICB2Z2FfY29tcGF0ID0gISh2Z2FfY29uc29sZV9pbmZvLnUudmVz YV9sZmIuZ2JsX2NhcHMgJiAyKTsKKyAgICB2Z2FfY29tcGF0ID0gISh4YmktPnZnYV9jb25zb2xl X2luZm8udS52ZXNhX2xmYi5nYmxfY2FwcyAmIDIpOwogCiAgICAgaWYgKCAodmxmYl9pbmZvLmJp dHNfcGVyX3BpeGVsIDwgOCkgfHwgKHZsZmJfaW5mby5iaXRzX3Blcl9waXhlbCA+IDMyKSApCiAg ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZpZGVvL3ZnYS5jIGIveGVu L2RyaXZlcnMvdmlkZW8vdmdhLmMKaW5kZXggNDBlNTk2My4uZmViOWIzMSAxMDA2NDQKLS0tIGEv eGVuL2RyaXZlcnMvdmlkZW8vdmdhLmMKKysrIGIveGVuL2RyaXZlcnMvdmlkZW8vdmdhLmMKQEAg LTExLDkgKzExLDcgQEAKICNpbmNsdWRlIDx4ZW4vdmdhLmg+CiAjaW5jbHVkZSA8eGVuL3BjaS5o PgogI2luY2x1ZGUgPGFzbS9pby5oPgotCi0vKiBGaWxsZWQgaW4gYnkgYXJjaCBib290IGNvZGUu ICovCi1zdHJ1Y3QgeGVuX3ZnYV9jb25zb2xlX2luZm8gdmdhX2NvbnNvbGVfaW5mbzsKKyNpbmNs dWRlIDxhc20veGJpLmg+CiAKIHN0YXRpYyBpbnQgdmdhY29uX2tlZXA7CiBzdGF0aWMgdW5zaWdu ZWQgaW50IHhwb3MsIHlwb3M7CkBAIC03NSwxNSArNzMsMTUgQEAgdm9pZCBfX2luaXQgdmlkZW9f aW5pdCh2b2lkKQogICAgICAgICAgICAgdmdhY29uX2tlZXAgPSAxOwogICAgIH0KIAotICAgIHN3 aXRjaCAoIHZnYV9jb25zb2xlX2luZm8udmlkZW9fdHlwZSApCisgICAgc3dpdGNoICggeGJpLT52 Z2FfY29uc29sZV9pbmZvLnZpZGVvX3R5cGUgKQogICAgIHsKICAgICBjYXNlIFhFTl9WR0FUWVBF X1RFWFRfTU9ERV8zOgogICAgICAgICBpZiAoIHBhZ2VfaXNfcmFtX3R5cGUocGFkZHJfdG9fcGZu KDB4QjgwMDApLCBSQU1fVFlQRV9DT05WRU5USU9OQUwpIHx8CiAgICAgICAgICAgICAgKCh2aWRl byA9IGlvcmVtYXAoMHhCODAwMCwgMHg4MDAwKSkgPT0gTlVMTCkgKQogICAgICAgICAgICAgcmV0 dXJuOwogICAgICAgICBvdXR3KDB4MjAwYSwgMHgzZDQpOyAvKiBkaXNhYmxlIGN1cnNvciAqLwot ICAgICAgICBjb2x1bW5zID0gdmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLmNvbHVtbnM7 Ci0gICAgICAgIGxpbmVzICAgPSB2Z2FfY29uc29sZV9pbmZvLnUudGV4dF9tb2RlXzMucm93czsK KyAgICAgICAgY29sdW1ucyA9IHhiaS0+dmdhX2NvbnNvbGVfaW5mby51LnRleHRfbW9kZV8zLmNv bHVtbnM7CisgICAgICAgIGxpbmVzICAgPSB4YmktPnZnYV9jb25zb2xlX2luZm8udS50ZXh0X21v ZGVfMy5yb3dzOwogICAgICAgICBtZW1zZXQodmlkZW8sIDAsIGNvbHVtbnMgKiBsaW5lcyAqIDIp OwogICAgICAgICB2aWRlb19wdXRzID0gdmdhX3RleHRfcHV0czsKICAgICAgICAgYnJlYWs7CkBA IC05Miw3ICs5MCw3IEBAIHZvaWQgX19pbml0IHZpZGVvX2luaXQodm9pZCkKICAgICAgICAgdmVz YV9lYXJseV9pbml0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIG1l bXNldCgmdmdhX2NvbnNvbGVfaW5mbywgMCwgc2l6ZW9mKHZnYV9jb25zb2xlX2luZm8pKTsKKyAg ICAgICAgbWVtc2V0KCZ4YmktPnZnYV9jb25zb2xlX2luZm8sIDAsIHNpemVvZih4YmktPnZnYV9j b25zb2xlX2luZm8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMTYzLDcgKzE2MSw3 IEBAIHZvaWQgX19pbml0IHZpZGVvX2VuZGJvb3Qodm9pZCkKICAgICAgICAgICAgIH0KICAgICB9 CiAKLSAgICBzd2l0Y2ggKCB2Z2FfY29uc29sZV9pbmZvLnZpZGVvX3R5cGUgKQorICAgIHN3aXRj aCAoIHhiaS0+dmdhX2NvbnNvbGVfaW5mby52aWRlb190eXBlICkKICAgICB7CiAgICAgY2FzZSBY RU5fVkdBVFlQRV9URVhUX01PREVfMzoKICAgICAgICAgaWYgKCAhdmdhY29uX2tlZXAgKQpAQCAt MjA2LDYgKzIwNCw2IEBAIHN0YXRpYyB2b2lkIHZnYV90ZXh0X3B1dHMoY29uc3QgY2hhciAqcykK IAogaW50IF9faW5pdCBmaWxsX2NvbnNvbGVfc3RhcnRfaW5mbyhzdHJ1Y3QgZG9tMF92Z2FfY29u c29sZV9pbmZvICpjaSkKIHsKLSAgICBtZW1jcHkoY2ksICZ2Z2FfY29uc29sZV9pbmZvLCBzaXpl b2YoKmNpKSk7CisgICAgbWVtY3B5KGNpLCAmeGJpLT52Z2FfY29uc29sZV9pbmZvLCBzaXplb2Yo KmNpKSk7CiAgICAgcmV0dXJuIDE7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L2NvbmZpZy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaAppbmRleCAyMTBmZjU3Li5h ZTY4MzIyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmgKQEAgLTExOSw4ICsxMTksNiBAQCBleHRlcm4gdW5z aWduZWQgaW50IHRyYW1wb2xpbmVfeGVuX3BoeXNfc3RhcnQ7CiBleHRlcm4gdW5zaWduZWQgY2hh ciB0cmFtcG9saW5lX2NwdV9zdGFydGVkOwogZXh0ZXJuIGNoYXIgd2FrZXVwX3N0YXJ0W107CiBl eHRlcm4gdW5zaWduZWQgaW50IHZpZGVvX21vZGUsIHZpZGVvX2ZsYWdzOwotZXh0ZXJuIHVuc2ln bmVkIHNob3J0IGJvb3RfZWRpZF9jYXBzOwotZXh0ZXJuIHVuc2lnbmVkIGNoYXIgYm9vdF9lZGlk X2luZm9bMTI4XTsKICNlbmRpZgogCiAjZGVmaW5lIGFzbWxpbmthZ2UKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvZTgyMC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9lODIwLmgKaW5k ZXggMDhiNDEzZC4uNWQzNjgzYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9lODIw LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9lODIwLmgKQEAgLTMzLDEyICszMyw0IEBAIGV4 dGVybiBpbnQgZTgyMF9hZGRfcmFuZ2UoCiBleHRlcm4gdW5zaWduZWQgbG9uZyBpbml0X2U4MjAo Y29uc3QgY2hhciAqLCBzdHJ1Y3QgZTgyMGVudHJ5ICosIGludCAqKTsKIGV4dGVybiBzdHJ1Y3Qg ZTgyMG1hcCBlODIwOwogCi0vKiBUaGVzZSBzeW1ib2xzIGxpdmUgaW4gdGhlIGJvb3QgdHJhbXBv bGluZS4gKi8KLWV4dGVybiBzdHJ1Y3QgZTgyMGVudHJ5IGU4MjBtYXBbXTsKLWV4dGVybiBpbnQg ZTgyMG5yOwotZXh0ZXJuIHVuc2lnbmVkIGludCBsb3dtZW1fa2IsIGhpZ2htZW1fa2I7Ci0KLSNk ZWZpbmUgZTgyMF9yYXcgYm9vdHN5bShlODIwbWFwKQotI2RlZmluZSBlODIwX3Jhd19uciBib290 c3ltKGU4MjBucikKLQogI2VuZGlmIC8qX19FODIwX0hFQURFUiovCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L2VkZC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9lZGQuaAppbmRleCBh ZmFhMjM3Li5lODM2MWE1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2VkZC5oCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZWRkLmgKQEAgLTE0MywxMiArMTQzLDYgQEAgc3RydWN0 IF9fcGFja2VkIG1icl9zaWduYXR1cmUgewogICAgIHUzMiBzaWduYXR1cmU7CiB9OwogCi0vKiBU aGVzZSBhbGwgcmVzaWRlIGluIHRoZSBib290IHRyYW1wb2xpbmUuIEFjY2VzcyB2aWEgYm9vdHN5 bSgpLiAqLwotZXh0ZXJuIHN0cnVjdCBtYnJfc2lnbmF0dXJlIGJvb3RfbWJyX3NpZ25hdHVyZVtd OwotZXh0ZXJuIHU4IGJvb3RfbWJyX3NpZ25hdHVyZV9ucjsKLWV4dGVybiBzdHJ1Y3QgZWRkX2lu Zm8gYm9vdF9lZGRfaW5mb1tdOwotZXh0ZXJuIHU4IGJvb3RfZWRkX2luZm9fbnI7Ci0KICNlbmRp ZiAvKiBfX0FTU0VNQkxZX18gKi8KIAogLyogTWF4aW11bSBudW1iZXIgb2YgRUREIGluZm9ybWF0 aW9uIHN0cnVjdHVyZXMgYXQgYm9vdF9lZGRfaW5mby4gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvc2V0dXAuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc2V0dXAuaAppbmRleCA4 ZjhjNmYzLi44OGU5MTI0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3NldHVwLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zZXR1cC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRl ZiBfX1g4Nl9TRVRVUF9IXwogI2RlZmluZSBfX1g4Nl9TRVRVUF9IXwogCi0jaW5jbHVkZSA8eGVu L211bHRpYm9vdC5oPgorI2luY2x1ZGUgPGFzbS94YmkuaD4KIAogZXh0ZXJuIHVuc2lnbmVkIGxv bmcgeGVuaGVhcF9pbml0aWFsX3BoeXNfc3RhcnQ7CiAKQEAgLTI3LDkgKzI3LDkgQEAgdm9pZCB2 ZXNhX210cnJfaW5pdCh2b2lkKTsKIAogaW50IGNvbnN0cnVjdF9kb20wKAogICAgIHN0cnVjdCBk b21haW4gKmQsCi0gICAgY29uc3QgbW9kdWxlX3QgKmtlcm5lbCwgdW5zaWduZWQgbG9uZyBrZXJu ZWxfaGVhZHJvb20sCi0gICAgbW9kdWxlX3QgKmluaXRyZCwKLSAgICB2b2lkICooKmJvb3RzdHJh cF9tYXApKGNvbnN0IG1vZHVsZV90ICopLAorICAgIGNvbnN0IGJvb3RfbW9kdWxlX3QgKmtlcm5l bCwgdW5zaWduZWQgbG9uZyBrZXJuZWxfaGVhZHJvb20sCisgICAgYm9vdF9tb2R1bGVfdCAqaW5p dHJkLAorICAgIHZvaWQgKigqYm9vdHN0cmFwX21hcCkoY29uc3QgYm9vdF9tb2R1bGVfdCAqKSwK ICAgICBjaGFyICpjbWRsaW5lKTsKIAogdW5zaWduZWQgbG9uZyBpbml0aWFsX2ltYWdlc19ucnBh Z2VzKHZvaWQpOwpAQCAtMzgsNyArMzgsNyBAQCB2b2lkIGRpc2NhcmRfaW5pdGlhbF9pbWFnZXMo dm9pZCk7CiBpbnQgeGVuX2luX3JhbmdlKHVuc2lnbmVkIGxvbmcgbWZuKTsKIAogdm9pZCBtaWNy b2NvZGVfZ3JhYl9tb2R1bGUoCi0gICAgdW5zaWduZWQgbG9uZyAqLCBjb25zdCBtdWx0aWJvb3Rf aW5mb190ICosIHZvaWQgKigqKShjb25zdCBtb2R1bGVfdCAqKSk7CisgICAgdW5zaWduZWQgbG9u ZyAqLCBjb25zdCB4YmlfdCAqLCB2b2lkICooKikoY29uc3QgYm9vdF9tb2R1bGVfdCAqKSk7CiAK IGV4dGVybiB1aW50OF90IGtiZF9zaGlmdF9mbGFnczsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL2VmaS5oIGIveGVuL2luY2x1ZGUveGVuL2VmaS5oCmluZGV4IDhhMmI3ODguLjY0ZDJk ZWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9lZmkuaAorKysgYi94ZW4vaW5jbHVkZS94 ZW4vZWZpLmgKQEAgLTksMTYgKzksNiBAQCBleHRlcm4gY29uc3QgYm9vbF90IGVmaV9lbmFibGVk OwogCiAjZGVmaW5lIEVGSV9JTlZBTElEX1RBQkxFX0FERFIgKH4wVUwpCiAKLS8qIEFkZCBmaWVs ZHMgaGVyZSBvbmx5IGlmIHRoZXkgbmVlZCB0byBiZSByZWZlcmVuY2VkIGZyb20gbm9uLUVGSSBj b2RlLiAqLwotc3RydWN0IGVmaSB7Ci0gICAgdW5zaWduZWQgbG9uZyBtcHM7ICAgICAgICAgIC8q IE1QUyB0YWJsZSAqLwotICAgIHVuc2lnbmVkIGxvbmcgYWNwaTsgICAgICAgICAvKiBBQ1BJIHRh YmxlIChJQTY0IGV4dCAwLjcxKSAqLwotICAgIHVuc2lnbmVkIGxvbmcgYWNwaTIwOyAgICAgICAv KiBBQ1BJIHRhYmxlIChBQ1BJIDIuMCkgKi8KLSAgICB1bnNpZ25lZCBsb25nIHNtYmlvczsgICAg ICAgLyogU00gQklPUyB0YWJsZSAqLwotfTsKLQotZXh0ZXJuIHN0cnVjdCBlZmkgZWZpOwotCiAj aWZuZGVmIF9fQVNTRU1CTFlfXwogCiB1bmlvbiB4ZW5wZl9lZmlfaW5mbzsKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3hlbi92Z2EuaCBiL3hlbi9pbmNsdWRlL3hlbi92Z2EuaAppbmRleCBmNzJi NjNkLi4zZDVjMzMxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vdmdhLmgKKysrIGIveGVu L2luY2x1ZGUveGVuL3ZnYS5oCkBAIC0xMSw4ICsxMSw0IEBACiAKICNpbmNsdWRlIDx4ZW4vdmlk ZW8uaD4KIAotI2lmZGVmIENPTkZJR19WR0EKLWV4dGVybiBzdHJ1Y3QgeGVuX3ZnYV9jb25zb2xl X2luZm8gdmdhX2NvbnNvbGVfaW5mbzsKLSNlbmRpZgotCiAjZW5kaWYgLyogX1hFTl9WR0FfSCAq LwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hz bS5oCmluZGV4IGE4NTA0NWQuLjg3ZjM3MjkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS94 c20uaAorKysgYi94ZW4vaW5jbHVkZS94c20veHNtLmgKQEAgLTE2LDcgKzE2LDcgQEAKICNkZWZp bmUgX19YU01fSF9fCiAKICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KLSNpbmNsdWRlIDx4ZW4vbXVs dGlib290Lmg+CisjaW5jbHVkZSA8YXNtL3hiaS5oPgogCiB0eXBlZGVmIHZvaWQgeHNtX29wX3Q7 CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4c21fb3BfdCk7CkBAIC02NTksMTEgKzY1OSwxMSBA QCBzdGF0aWMgaW5saW5lIGludCB4c21faW9wb3J0X21hcHBpbmcgKHhzbV9kZWZhdWx0X3QgZGVm LCBzdHJ1Y3QgZG9tYWluICpkLCB1aW50MwogCiAjaWZkZWYgQ09ORklHX01VTFRJQk9PVAogZXh0 ZXJuIGludCB4c21fbXVsdGlib290X2luaXQodW5zaWduZWQgbG9uZyAqbW9kdWxlX21hcCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpYm9vdF9pbmZvX3QgKm1iaSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqYm9vdHN0cmFwX21hcCkoY29u c3QgbW9kdWxlX3QgKikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeGJp X3QgKnhiaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqYm9vdHN0cmFw X21hcCkoY29uc3QgYm9vdF9tb2R1bGVfdCAqKSk7CiBleHRlcm4gaW50IHhzbV9tdWx0aWJvb3Rf cG9saWN5X2luaXQodW5zaWduZWQgbG9uZyAqbW9kdWxlX21hcCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aWJvb3RfaW5mb190ICptYmksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKCpib290c3RyYXBfbWFwKShjb25z dCBtb2R1bGVfdCAqKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgeGJpX3QgKnhiaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICooKmJvb3RzdHJhcF9tYXApKGNvbnN0IGJvb3RfbW9kdWxlX3QgKikpOwogI2VuZGlmCiAKICNp ZmRlZiBIQVNfREVWSUNFX1RSRUUKQEAgLTY4Myw4ICs2ODMsOCBAQCBleHRlcm4gdm9pZCB4c21f Zml4dXBfb3BzKHN0cnVjdCB4c21fb3BlcmF0aW9ucyAqb3BzKTsKIAogI2lmZGVmIENPTkZJR19N VUxUSUJPT1QKIHN0YXRpYyBpbmxpbmUgaW50IHhzbV9tdWx0aWJvb3RfaW5pdCAodW5zaWduZWQg bG9uZyAqbW9kdWxlX21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgbXVsdGlib290X2luZm9fdCAqbWJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICooKmJvb3RzdHJhcF9tYXApKGNvbnN0IG1vZHVsZV90ICopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4YmlfdCAqeGJpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICooKmJvb3RzdHJhcF9tYXAp KGNvbnN0IGJvb3RfbW9kdWxlX3QgKikpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg YS94ZW4veHNtL3hzbV9jb3JlLmMgYi94ZW4veHNtL3hzbV9jb3JlLmMKaW5kZXggMGFjNmQwMy4u ODVkNGQzMyAxMDA2NDQKLS0tIGEveGVuL3hzbS94c21fY29yZS5jCisrKyBiL3hlbi94c20veHNt X2NvcmUuYwpAQCAtNjAsOCArNjAsOCBAQCBzdGF0aWMgaW50IF9faW5pdCB4c21fY29yZV9pbml0 KHZvaWQpCiAKICNpZmRlZiBDT05GSUdfTVVMVElCT09UCiBpbnQgX19pbml0IHhzbV9tdWx0aWJv b3RfaW5pdCh1bnNpZ25lZCBsb25nICptb2R1bGVfbWFwLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbXVsdGlib290X2luZm9fdCAqbWJpLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqKCpib290c3RyYXBfbWFwKShjb25zdCBtb2R1bGVfdCAqKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhiaV90ICp4YmksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2b2lkICooKmJvb3RzdHJhcF9tYXApKGNvbnN0IGJvb3RfbW9k dWxlX3QgKikpCiB7CiAgICAgaW50IHJldCA9IDA7CiAKQEAgLTY5LDcgKzY5LDcgQEAgaW50IF9f aW5pdCB4c21fbXVsdGlib290X2luaXQodW5zaWduZWQgbG9uZyAqbW9kdWxlX21hcCwKIAogICAg IGlmICggWFNNX01BR0lDICkKICAgICB7Ci0gICAgICAgIHJldCA9IHhzbV9tdWx0aWJvb3RfcG9s aWN5X2luaXQobW9kdWxlX21hcCwgbWJpLCBib290c3RyYXBfbWFwKTsKKyAgICAgICAgcmV0ID0g eHNtX211bHRpYm9vdF9wb2xpY3lfaW5pdChtb2R1bGVfbWFwLCB4YmksIGJvb3RzdHJhcF9tYXAp OwogICAgICAgICBpZiAoIHJldCApCiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb3RzdHJhcF9t YXAoTlVMTCk7CmRpZmYgLS1naXQgYS94ZW4veHNtL3hzbV9wb2xpY3kuYyBiL3hlbi94c20veHNt X3BvbGljeS5jCmluZGV4IDZlMGJiNzguLjU3MDBlYWMgMTAwNjQ0Ci0tLSBhL3hlbi94c20veHNt X3BvbGljeS5jCisrKyBiL3hlbi94c20veHNtX3BvbGljeS5jCkBAIC0xOSw5ICsxOSw2IEBACiAg Ki8KIAogI2luY2x1ZGUgPHhzbS94c20uaD4KLSNpZmRlZiBDT05GSUdfTVVMVElCT09UCi0jaW5j bHVkZSA8eGVuL211bHRpYm9vdC5oPgotI2VuZGlmCiAjaW5jbHVkZSA8eGVuL2JpdG9wcy5oPgog I2lmZGVmIEhBU19ERVZJQ0VfVFJFRQogIyBpbmNsdWRlIDxhc20vc2V0dXAuaD4KQEAgLTMzLDEx ICszMCwxMCBAQCB1MzIgX19pbml0ZGF0YSBwb2xpY3lfc2l6ZSA9IDA7CiAKICNpZmRlZiBDT05G SUdfTVVMVElCT09UCiBpbnQgX19pbml0IHhzbV9tdWx0aWJvb3RfcG9saWN5X2luaXQodW5zaWdu ZWQgbG9uZyAqbW9kdWxlX21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBtdWx0aWJvb3RfaW5mb190ICptYmksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqKCpib290c3RyYXBfbWFwKShjb25zdCBtb2R1bGVfdCAqKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4YmlfdCAqeGJpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqYm9vdHN0cmFwX21hcCko Y29uc3QgYm9vdF9tb2R1bGVfdCAqKSkKIHsKICAgICBpbnQgaTsKLSAgICBtb2R1bGVfdCAqbW9k ID0gKG1vZHVsZV90ICopX192YShtYmktPm1vZHNfYWRkcik7CiAgICAgaW50IHJjID0gMDsKICAg ICB1MzIgKl9wb2xpY3lfc3RhcnQ7CiAgICAgdW5zaWduZWQgbG9uZyBfcG9saWN5X2xlbjsKQEAg LTQ2LDEzICs0MiwxMyBAQCBpbnQgX19pbml0IHhzbV9tdWx0aWJvb3RfcG9saWN5X2luaXQodW5z aWduZWQgbG9uZyAqbW9kdWxlX21hcCwKICAgICAgKiBUcnkgYWxsIG1vZHVsZXMgYW5kIHNlZSB3 aGljaGV2ZXIgY291bGQgYmUgdGhlIGJpbmFyeSBwb2xpY3kuCiAgICAgICogQWRqdXN0IG1vZHVs ZV9tYXAgZm9yIHRoZSBtb2R1bGUgdGhhdCBpcyB0aGUgYmluYXJ5IHBvbGljeS4KICAgICAgKi8K LSAgICBmb3IgKCBpID0gbWJpLT5tb2RzX2NvdW50LTE7IGkgPj0gMTsgaS0tICkKKyAgICBmb3Ig KCBpID0geGJpLT5tb2RzX25yIC0gMTsgaSA+PSAxOyBpLS0gKQogICAgIHsKICAgICAgICAgaWYg KCAhdGVzdF9iaXQoaSwgbW9kdWxlX21hcCkgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg ICAgICAgX3BvbGljeV9zdGFydCA9IGJvb3RzdHJhcF9tYXAobW9kICsgaSk7Ci0gICAgICAgIF9w b2xpY3lfbGVuICAgPSBtb2RbaV0ubW9kX2VuZDsKKyAgICAgICAgX3BvbGljeV9zdGFydCA9IGJv b3RzdHJhcF9tYXAoeGJpLT5tb2RzICsgaSk7CisgICAgICAgIF9wb2xpY3lfbGVuICAgPSB4Ymkt Pm1vZHNbaV0uZW5kOwogCiAgICAgICAgIGlmICggKHhzbV9tYWdpY190KSgqX3BvbGljeV9zdGFy dCkgPT0gWFNNX01BR0lDICkKICAgICAgICAgewotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=