From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v9 06/11] x86/entry: Organise the use of MSR_SPEC_CTRL at each entry/exit point Date: Thu, 18 Jan 2018 15:46:05 +0000 Message-ID: <1516290370-14958-7-git-send-email-andrew.cooper3@citrix.com> References: <1516290370-14958-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1516290370-14958-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org V2UgbmVlZCB0byBiZSBhYmxlIHRvIGVpdGhlciBzZXQgb3IgY2xlYXIgSUJSUyBpbiBYZW4gY29u dGV4dCwgYXMgd2VsbCBhcwpyZXN0b3JlIGFwcHJvcHJpYXRlIGd1ZXN0IHZhbHVlcyBpbiBndWVz dCBjb250ZXh0LiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGluCmFzbS14ODYvc3BlY19jdHJsX2Fz bS5oIGZvciBkZXRhaWxzLgoKV3JpdGVzIHRvICVjcjMgYXJlIHNsb3dlciB3aGVuIFNQRUNfQ1RS TC5JQlJTIGlzIHNldCwgc28gdGhlClNQRUNfQ1RSTF97RU5UUlkvRVhJVH0qIHBvc2l0aW9uaW5n IGlzIGltcG9ydGFudCwgYW5kIG9wdGltaXNlZCBmb3IgdGhlCmV4cGVjdGVkIGNvbW1vbiBjYXNl IG9mIFhlbiBub3QgdXNpbmcgSUJSUyBpdHNlbGYuCgpUaGVyZSBpcyBhIHNlbWktdW5yZWxhdGVk IGJ1Z2ZpeCwgd2hlcmUgdmFyaW91cyBhc21fZGVmbi5oIG1hY3JvcyBoYXZlIGEKaGlkZGVuIGRl cGVuZGVuY3kgb24gUEFHRV9TSVpFLCB3aGljaCByZXN1bHRzIGluIGFuIGFzc2VtYmxlciBlcnJv ciBpZiB1c2VkIGluCmEgLm1hY3JvIGRlZmluaXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxK QmV1bGljaEBzdXNlLmNvbT4KCnY3OgogKiBTcGVsbGluZyBmaXhlcwogKiBSZXBvc2l0aW9uIHRo ZSBzZW1pY29sb24gZml4Lgp2OToKICogUmViYXNlIG92ZXIgWFBUSS4gIE1vZGVyYXRlIGNoYW5n ZXMgaW4gdGhlIGV4aXQtdG8tUFYgcGF0aHMuCiAqIFN3YXAgY21wdyBmb3IgdGVzdGIgd2hlbiBs b29raW5nIGZvciBjcGwwCi0tLQogeGVuL2FyY2gveDg2L2h2bS9zdm0vZW50cnkuUyAgICAgICAg fCAgIDggKy0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L2VudHJ5LlMgICAgICAgIHwgIDExICsrCiB4 ZW4vYXJjaC94ODYvc2V0dXAuYyAgICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYv c21wYm9vdC5jICAgICAgICAgICAgICB8ICAgMiArCiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1v ZmZzZXRzLmMgICB8ICAgNiArCiB4ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TICB8 ICAxNCArKysKIHhlbi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUyAgICAgICAgIHwgIDM0ICsrKysr KwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaCAgICAgfCAgIDMgKwogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9jdXJyZW50LmggICAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9u b3BzLmggICAgICAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0cmwuaCAg ICAgfCAgIDkgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvc3BlY19jdHJsX2FzbS5oIHwgMjI3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwgMzI2 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5j bHVkZS9hc20teDg2L3NwZWNfY3RybF9hc20uaAoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vc3ZtL2VudHJ5LlMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9lbnRyeS5TCmluZGV4IGRmODZk YTAuLmZiMTA0OGIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2VudHJ5LlMKKysr IGIveGVuL2FyY2gveDg2L2h2bS9zdm0vZW50cnkuUwpAQCAtNzksNiArNzksOSBAQCBVTkxJS0VM WV9FTkQoc3ZtX3RyYWNlKQogICAgICAgICBvciAgICRYODZfRUZMQUdTX01CUywlcmF4CiAgICAg ICAgIG1vdiAgJXJheCxWTUNCX3JmbGFncyglcmN4KQogCisgICAgICAgIC8qIFdBUk5JTkchIGBy ZXRgLCBgY2FsbCAqYCwgYGptcCAqYCBub3Qgc2FmZSBiZXlvbmQgdGhpcyBwb2ludC4gKi8KKyAg ICAgICAgU1BFQ19DVFJMX0VYSVRfVE9fR1VFU1QgLyogUmVxOiBiPWN1cnIgJXJzcD1yZWdzL2Nw dWluZm8sIENsb2I6IGFjZCAqLworCiAgICAgICAgIHBvcCAgJXIxNQogICAgICAgICBwb3AgICVy MTQKICAgICAgICAgcG9wICAlcjEzCkBAIC0xMDEsOCArMTA0LDExIEBAIFVOTElLRUxZX0VORChz dm1fdHJhY2UpCiAgICAgICAgIFNBVkVfQUxMCiAKICAgICAgICAgR0VUX0NVUlJFTlQoYngpCi0g ICAgICAgIG1vdiAgVkNQVV9zdm1fdm1jYiglcmJ4KSwlcmN4CiAKKyAgICAgICAgU1BFQ19DVFJM X0VOVFJZX0ZST01fVk1FWElUIC8qIFJlcTogYj1jdXJyICVyc3A9cmVncy9jcHVpbmZvLCBDbG9i OiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5v dCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCisgICAgICAgIG1vdiAgVkNQVV9zdm1fdm1j YiglcmJ4KSwlcmN4CiAgICAgICAgIG1vdmIgJDAsVkNQVV9zdm1fdm1jYl9pbl9zeW5jKCVyYngp CiAgICAgICAgIG1vdiAgVk1DQl9yYXgoJXJjeCksJXJheAogICAgICAgICBtb3YgICVyYXgsVVJF R1NfcmF4KCVyc3ApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC9lbnRyeS5TIGIv eGVuL2FyY2gveDg2L2h2bS92bXgvZW50cnkuUwppbmRleCBiMmY5OGJlLi4yMWU5NTlmIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vdm14L2VudHJ5LlMKQEAgLTM4LDYgKzM4LDkgQEAgRU5UUlkodm14X2FzbV92bWV4aXRfaGFu ZGxlcikKICAgICAgICAgbW92YiAkMSxWQ1BVX3ZteF9sYXVuY2hlZCglcmJ4KQogICAgICAgICBt b3YgICVyYXgsVkNQVV9odm1fZ3Vlc3RfY3IyKCVyYngpCiAKKyAgICAgICAgU1BFQ19DVFJMX0VO VFJZX0ZST01fVk1FWElUIC8qIFJlcTogYj1jdXJyICVyc3A9cmVncy9jcHVpbmZvLCBDbG9iOiBh Y2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5vdCBz YWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCiAgICAgICAgIG1vdiAgJXJzcCwlcmRpCiAgICAg ICAgIGNhbGwgdm14X3ZtZXhpdF9oYW5kbGVyCiAKQEAgLTY4LDYgKzcxLDEwIEBAIFVOTElLRUxZ X0VORChyZWFsbW9kZSkKICAgICAgICAgY2FsbCB2bXhfdm1lbnRlcl9oZWxwZXIKICAgICAgICAg dGVzdCAlYWwsICVhbAogICAgICAgICBqeiAuTHZteF92bWVudHJ5X3Jlc3RhcnQKKworICAgICAg ICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmV5b25kIHRo aXMgcG9pbnQuICovCisgICAgICAgIFNQRUNfQ1RSTF9FWElUX1RPX0dVRVNUIC8qIFJlcTogYj1j dXJyICVyc3A9cmVncy9jcHVpbmZvLCBDbG9iOiBhY2QgKi8KKwogICAgICAgICBtb3YgIFZDUFVf aHZtX2d1ZXN0X2NyMiglcmJ4KSwlcmF4CiAKICAgICAgICAgcG9wICAlcjE1CkBAIC05OSw2ICsx MDYsMTAgQEAgVU5MSUtFTFlfRU5EKHJlYWxtb2RlKQogLkx2bXhfdm1lbnRyeV9mYWlsOgogICAg ICAgICBzdGkKICAgICAgICAgU0FWRV9BTEwKKworICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJP TV9QViAvKiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvIENsb2I6IGFjZCAqLworICAgICAgICAvKiBX QVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMgcG9p bnQuICovCisKICAgICAgICAgY2FsbCB2bXhfdm1lbnRyeV9mYWlsdXJlCiAgICAgICAgIEJVRyAg Lyogdm14X3ZtZW50cnlfZmFpbHVyZSgpIHNob3VsZG4ndCByZXR1cm4uICovCiAKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5kZXggYjY4 ODhjNy4uNDFhZmQyYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysrIGIveGVu L2FyY2gveDg2L3NldHVwLmMKQEAgLTY3OCw2ICs2NzgsNyBAQCB2b2lkIF9faW5pdCBub3JldHVy biBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIHNldF9wcm9jZXNzb3JfaWQo MCk7CiAgICAgc2V0X2N1cnJlbnQoSU5WQUxJRF9WQ1BVKTsgLyogZGVidWcgc2FuaXR5LiAqLwog ICAgIGlkbGVfdmNwdVswXSA9IGN1cnJlbnQ7CisgICAgaW5pdF9zaGFkb3dfc3BlY19jdHJsX3N0 YXRlKCk7CiAKICAgICBwZXJjcHVfaW5pdF9hcmVhcygpOwogCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvc21wYm9vdC5jIGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwppbmRleCAyY2RkNDMxLi4x OTZlZTdlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCisrKyBiL3hlbi9hcmNo L3g4Ni9zbXBib290LmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxhc20vZ3Vlc3QuaD4K ICNpbmNsdWRlIDxhc20vbXNyLmg+CiAjaW5jbHVkZSA8YXNtL210cnIuaD4KKyNpbmNsdWRlIDxh c20vc3BlY19jdHJsLmg+CiAjaW5jbHVkZSA8YXNtL3RpbWUuaD4KICNpbmNsdWRlIDxhc20vdGJv b3QuaD4KICNpbmNsdWRlIDxtYWNoX2FwaWMuaD4KQEAgLTMwOSw2ICszMTAsNyBAQCB2b2lkIHN0 YXJ0X3NlY29uZGFyeSh2b2lkICp1bnVzZWQpCiAgICAgc2V0X2N1cnJlbnQoaWRsZV92Y3B1W2Nw dV0pOwogICAgIHRoaXNfY3B1KGN1cnJfdmNwdSkgPSBpZGxlX3ZjcHVbY3B1XTsKICAgICByZG1z cmwoTVNSX0VGRVIsIHRoaXNfY3B1KGVmZXIpKTsKKyAgICBpbml0X3NoYWRvd19zcGVjX2N0cmxf c3RhdGUoKTsKIAogICAgIC8qCiAgICAgICogSnVzdCBhcyBkdXJpbmcgZWFybHkgYm9vdHN0cmFw LCBpdCBpcyBjb252ZW5pZW50IGhlcmUgdG8gZGlzYWJsZQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0 cy5jCmluZGV4IGIxYTQzMTAuLjE3ZjFkNzcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZf NjQvYXNtLW9mZnNldHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMK QEAgLTg4LDYgKzg4LDcgQEAgdm9pZCBfX2R1bW15X18odm9pZCkKICAgICBPRkZTRVQoVkNQVV9r ZXJuZWxfc3MsIHN0cnVjdCB2Y3B1LCBhcmNoLnB2X3ZjcHUua2VybmVsX3NzKTsKICAgICBPRkZT RVQoVkNQVV9pb3BsLCBzdHJ1Y3QgdmNwdSwgYXJjaC5wdl92Y3B1LmlvcGwpOwogICAgIE9GRlNF VChWQ1BVX2d1ZXN0X2NvbnRleHRfZmxhZ3MsIHN0cnVjdCB2Y3B1LCBhcmNoLnZnY19mbGFncyk7 CisgICAgT0ZGU0VUKFZDUFVfYXJjaF9tc3IsIHN0cnVjdCB2Y3B1LCBhcmNoLm1zcik7CiAgICAg T0ZGU0VUKFZDUFVfbm1pX3BlbmRpbmcsIHN0cnVjdCB2Y3B1LCBubWlfcGVuZGluZyk7CiAgICAg T0ZGU0VUKFZDUFVfbWNlX3BlbmRpbmcsIHN0cnVjdCB2Y3B1LCBtY2VfcGVuZGluZyk7CiAgICAg T0ZGU0VUKFZDUFVfbm1pX29sZF9tYXNrLCBzdHJ1Y3QgdmNwdSwgbm1pX3N0YXRlLm9sZF9tYXNr KTsKQEAgLTEzOSw2ICsxNDAsOCBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9GRlNFVChD UFVJTkZPX2NyNCwgc3RydWN0IGNwdV9pbmZvLCBjcjQpOwogICAgIE9GRlNFVChDUFVJTkZPX3hl bl9jcjMsIHN0cnVjdCBjcHVfaW5mbywgeGVuX2NyMyk7CiAgICAgT0ZGU0VUKENQVUlORk9fcHZf Y3IzLCBzdHJ1Y3QgY3B1X2luZm8sIHB2X2NyMyk7CisgICAgT0ZGU0VUKENQVUlORk9fc2hhZG93 X3NwZWNfY3RybCwgc3RydWN0IGNwdV9pbmZvLCBzaGFkb3dfc3BlY19jdHJsKTsKKyAgICBPRkZT RVQoQ1BVSU5GT191c2Vfc2hhZG93X3NwZWNfY3RybCwgc3RydWN0IGNwdV9pbmZvLCB1c2Vfc2hh ZG93X3NwZWNfY3RybCk7CiAgICAgREVGSU5FKENQVUlORk9fc2l6ZW9mLCBzaXplb2Yoc3RydWN0 IGNwdV9pbmZvKSk7CiAgICAgQkxBTksoKTsKIApAQCAtMTU0LDYgKzE1Nyw5IEBAIHZvaWQgX19k dW1teV9fKHZvaWQpCiAgICAgT0ZGU0VUKFRSQVBCT1VOQ0VfZWlwLCBzdHJ1Y3QgdHJhcF9ib3Vu Y2UsIGVpcCk7CiAgICAgQkxBTksoKTsKIAorICAgIE9GRlNFVChWQ1BVTVNSX3NwZWNfY3RybF9y YXcsIHN0cnVjdCBtc3JfdmNwdV9wb2xpY3ksIHNwZWNfY3RybC5yYXcpOworICAgIEJMQU5LKCk7 CisKICNpZmRlZiBDT05GSUdfUEVSRl9DT1VOVEVSUwogICAgIERFRklORShBU01fUEVSRkNfZXhj ZXB0aW9ucywgUEVSRkNfZXhjZXB0aW9ucyk7CiAgICAgQkxBTksoKTsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2Nv bXBhdC9lbnRyeS5TCmluZGV4IGU2NjhmMDAuLjQzMGI1Y2UgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21w YXQvZW50cnkuUwpAQCAtMTgsNiArMTgsMTAgQEAgRU5UUlkoZW50cnlfaW50ODIpCiAgICAgICAg IHB1c2hxICQwCiAgICAgICAgIG1vdmwgICRIWVBFUkNBTExfVkVDVE9SLCA0KCVyc3ApCiAgICAg ICAgIFNBVkVfQUxMIGNvbXBhdD0xIC8qIERQTDEgZ2F0ZSwgcmVzdHJpY3RlZCB0byAzMmJpdCBQ ViBndWVzdHMgb25seS4gKi8KKworICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJPTV9QViAvKiBS ZXE6ICVyc3A9cmVncy9jcHVpbmZvLCBDbG9iOiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEg YHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5vdCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLwor CiAgICAgICAgIENSNF9QVjMyX1JFU1RPUkUKIAogICAgICAgICBHRVRfQ1VSUkVOVChieCkKQEAg LTE0Miw2ICsxNDYsMTMgQEAgRU5UUlkoY29tcGF0X3Jlc3RvcmVfYWxsX2d1ZXN0KQogICAgICAg ICAucG9wc2VjdGlvbgogICAgICAgICBvciAgICAkWDg2X0VGTEFHU19JRiwlcjExCiAgICAgICAg IG1vdiAgICVyMTFkLFVSRUdTX2VmbGFncyglcnNwKQorCisgICAgICAgIG1vdiBWQ1BVX2FyY2hf bXNyKCVyYngpLCAlcmF4CisgICAgICAgIG1vdiBWQ1BVTVNSX3NwZWNfY3RybF9yYXcoJXJheCks ICVlYXgKKworICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90 IHNhZmUgYmV5b25kIHRoaXMgcG9pbnQuICovCisgICAgICAgIFNQRUNfQ1RSTF9FWElUX1RPX0dV RVNUIC8qIFJlcTogYT1zcGVjX2N0cmwgJXJzcD1yZWdzL2NwdWluZm8sIENsb2I6IGFjZCAqLwor CiAgICAgICAgIFJFU1RPUkVfQUxMIGFkaj04IGNvbXBhdD0xCiAuTGZ0MDogIGlyZXRxCiAgICAg ICAgIF9BU01fUFJFX0VYVEFCTEUoLkxmdDAsIGhhbmRsZV9leGNlcHRpb24pCkBAIC0yMDAsNiAr MjExLDkgQEAgRU5UUlkoY3N0YXJfZW50ZXIpCiAgICAgICAgIG1vdmwgICRUUkFQX3N5c2NhbGws IDQoJXJzcCkKICAgICAgICAgU0FWRV9BTEwKIAorICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJP TV9QViAvKiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvLCBDbG9iOiBhY2QgKi8KKyAgICAgICAgLyog V0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5vdCBzYWZlIGJlZm9yZSB0aGlzIHBv aW50LiAqLworCiAgICAgICAgIEdFVF9TVEFDS19FTkQoYngpCiAgICAgICAgIG1vdiAgIFNUQUNL X0NQVUlORk9fRklFTEQoeGVuX2NyMykoJXJieCksICVyY3gKICAgICAgICAgbmVnICAgJXJjeApk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TIGIveGVuL2FyY2gveDg2L3g4 Nl82NC9lbnRyeS5TCmluZGV4IDcxMGMwNjEuLmI3NWIyOTIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfNjQvZW50cnkuUworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKQEAg LTM4LDYgKzM4LDEwIEBAIEVOVFJZKHN3aXRjaF90b19rZXJuZWwpCiByZXN0b3JlX2FsbF9ndWVz dDoKICAgICAgICAgQVNTRVJUX0lOVEVSUlVQVFNfRElTQUJMRUQKIAorICAgICAgICAvKiBTdGFz aCBndWVzdCBTUEVDX0NUUkwgdmFsdWUgd2hpbGUgd2UgY2FuIHJlYWQgc3RydWN0IHZjcHUuICov CisgICAgICAgIG1vdiBWQ1BVX2FyY2hfbXNyKCVyYngpLCAlcmR4CisgICAgICAgIG1vdiBWQ1BV TVNSX3NwZWNfY3RybF9yYXcoJXJkeCksICVyMTVkCisKICAgICAgICAgLyogQ29weSBndWVzdCBt YXBwaW5ncyBhbmQgc3dpdGNoIHRvIHBlci1DUFUgcm9vdCBwYWdlIHRhYmxlLiAqLwogICAgICAg ICBtb3YgICAlY3IzLCAlcjkKICAgICAgICAgR0VUX1NUQUNLX0VORChkeCkKQEAgLTY1LDYgKzY5 LDEyIEBAIHJlc3RvcmVfYWxsX2d1ZXN0OgogICAgICAgICB3cml0ZV9jcjMgcmF4LCByZGksIHJz aQogLkxyYWdfa2VlcF9jcjM6CiAKKyAgICAgICAgLyogUmVzdG9yZSBzdGFzaGVkIFNQRUNfQ1RS TCB2YWx1ZS4gKi8KKyAgICAgICAgbW92ICAgJXIxNWQsICVlYXgKKworICAgICAgICAvKiBXQVJO SU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmV5b25kIHRoaXMgcG9pbnQu ICovCisgICAgICAgIFNQRUNfQ1RSTF9FWElUX1RPX0dVRVNUIC8qIFJlcTogYT1zcGVjX2N0cmwg JXJzcD1yZWdzL2NwdWluZm8sIENsb2I6IGFjZCAqLworCiAgICAgICAgIFJFU1RPUkVfQUxMCiAg ICAgICAgIHRlc3R3ICRUUkFQX3N5c2NhbGwsNCglcnNwKQogICAgICAgICBqeiAgICBpcmV0X2V4 aXRfdG9fZ3Vlc3QKQEAgLTExNSw2ICsxMjUsOSBAQCBVTkxJS0VMWV9TVEFSVChnLCBleGl0X2Ny MykKICAgICAgICAgd3JpdGVfY3IzIHJheCwgcmRpLCByc2kKIFVOTElLRUxZX0VORChleGl0X2Ny MykKIAorICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNh ZmUgYmV5b25kIHRoaXMgcG9pbnQuICovCisgICAgICAgIFNQRUNfQ1RSTF9FWElUX1RPX1hFTiAv KiBSZXE6IG5vdGhpbmcsIENsb2I6IGFjZCAqLworCiAgICAgICAgIFJFU1RPUkVfQUxMIGFkaj04 CiAgICAgICAgIGlyZXRxCiAKQEAgLTE0NSw2ICsxNTgsOSBAQCBFTlRSWShsc3Rhcl9lbnRlcikK ICAgICAgICAgbW92bCAgJFRSQVBfc3lzY2FsbCwgNCglcnNwKQogICAgICAgICBTQVZFX0FMTAog CisgICAgICAgIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX1BWIC8qIFJlcTogJXJzcD1yZWdzL2NwdWlu Zm8sIENsb2I6IGFjZCAqLworICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBq bXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMgcG9pbnQuICovCisKICAgICAgICAgR0VUX1NUQUNL X0VORChieCkKICAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5fY3IzKSglcmJ4 KSwgJXJjeAogICAgICAgICBuZWcgICAlcmN4CkBAIC0yNDgsNiArMjY0LDkgQEAgR0xPQkFMKHN5 c2VudGVyX2VmbGFnc19zYXZlZCkKICAgICAgICAgbW92bCAgJFRSQVBfc3lzY2FsbCwgNCglcnNw KQogICAgICAgICBTQVZFX0FMTAogCisgICAgICAgIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX1BWIC8q IFJlcTogJXJzcD1yZWdzL2NwdWluZm8sIENsb2I6IGFjZCAqLworICAgICAgICAvKiBXQVJOSU5H ISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMgcG9pbnQuICov CisKICAgICAgICAgR0VUX1NUQUNLX0VORChieCkKICAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5G T19GSUVMRCh4ZW5fY3IzKSglcmJ4KSwgJXJjeAogICAgICAgICBuZWcgICAlcmN4CkBAIC0yOTQs NiArMzEzLDkgQEAgRU5UUlkoaW50ODBfZGlyZWN0X3RyYXApCiAgICAgICAgIG1vdmwgICQweDgw LCA0KCVyc3ApCiAgICAgICAgIFNBVkVfQUxMCiAKKyAgICAgICAgU1BFQ19DVFJMX0VOVFJZX0ZS T01fUFYgLyogUmVxOiAlcnNwPXJlZ3MvY3B1aW5mbywgQ2xvYjogYWNkICovCisgICAgICAgIC8q IFdBUk5JTkchIGByZXRgLCBgY2FsbCAqYCwgYGptcCAqYCBub3Qgc2FmZSBiZWZvcmUgdGhpcyBw b2ludC4gKi8KKwogICAgICAgICBHRVRfU1RBQ0tfRU5EKGJ4KQogICAgICAgICBtb3YgICBTVEFD S19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMpKCVyYngpLCAlcmN4CiAgICAgICAgIG5lZyAgICVyY3gK QEAgLTQ2OCw2ICs0OTAsOSBAQCBFTlRSWShkb21fY3Jhc2hfc3luY19leHRhYmxlKQogRU5UUlko Y29tbW9uX2ludGVycnVwdCkKICAgICAgICAgU0FWRV9BTEwgQ0xBQwogCisgICAgICAgIFNQRUNf Q1RSTF9FTlRSWV9GUk9NX0lOVFIgLyogUmVxOiAlcnNwPXJlZ3MsIENsb2I6IGFjZCAqLworICAg ICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3Jl IHRoaXMgcG9pbnQuICovCisKICAgICAgICAgR0VUX1NUQUNLX0VORCgxNCkKICAgICAgICAgbW92 ICAgU1RBQ0tfQ1BVSU5GT19GSUVMRCh4ZW5fY3IzKSglcjE0KSwgJXJjeAogICAgICAgICBtb3Yg ICAlcmN4LCAlcjE1CkBAIC01MDYsNiArNTMxLDkgQEAgRU5UUlkocGFnZV9mYXVsdCkKIEdMT0JB TChoYW5kbGVfZXhjZXB0aW9uKQogICAgICAgICBTQVZFX0FMTCBDTEFDCiAKKyAgICAgICAgU1BF Q19DVFJMX0VOVFJZX0ZST01fSU5UUiAvKiBSZXE6ICVyc3A9cmVncywgQ2xvYjogYWNkICovCisg ICAgICAgIC8qIFdBUk5JTkchIGByZXRgLCBgY2FsbCAqYCwgYGptcCAqYCBub3Qgc2FmZSBiZWZv cmUgdGhpcyBwb2ludC4gKi8KKwogICAgICAgICBHRVRfU1RBQ0tfRU5EKDE0KQogICAgICAgICBt b3YgICBTVEFDS19DUFVJTkZPX0ZJRUxEKHhlbl9jcjMpKCVyMTQpLCAlcmN4CiAgICAgICAgIG1v diAgICVyY3gsICVyMTUKQEAgLTcwMCw2ICs3MjgsOSBAQCBFTlRSWShkb3VibGVfZmF1bHQpCiAg ICAgICAgIC8qIFNldCBBQyB0byByZWR1Y2UgY2hhbmNlIG9mIGZ1cnRoZXIgU01BUCBmYXVsdHMg Ki8KICAgICAgICAgU0FWRV9BTEwgU1RBQwogCisgICAgICAgIFNQRUNfQ1RSTF9FTlRSWV9GUk9N X0lOVFIgLyogUmVxOiAlcnNwPXJlZ3MsIENsb2I6IGFjZCAqLworICAgICAgICAvKiBXQVJOSU5H ISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMgcG9pbnQuICov CisKICAgICAgICAgR0VUX1NUQUNLX0VORChieCkKICAgICAgICAgbW92ICAgU1RBQ0tfQ1BVSU5G T19GSUVMRCh4ZW5fY3IzKSglcmJ4KSwgJXJieAogICAgICAgICB0ZXN0ICAlcmJ4LCAlcmJ4CkBA IC03MjksNiArNzYwLDkgQEAgRU5UUlkobm1pKQogaGFuZGxlX2lzdF9leGNlcHRpb246CiAgICAg ICAgIFNBVkVfQUxMIENMQUMKIAorICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJPTV9JTlRSIC8q IFJlcTogJXJzcD1yZWdzLCBDbG9iOiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAs IGBjYWxsICpgLCBgam1wICpgIG5vdCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCiAgICAg ICAgIEdFVF9TVEFDS19FTkQoMTQpCiAgICAgICAgIG1vdiAgIFNUQUNLX0NQVUlORk9fRklFTEQo eGVuX2NyMykoJXIxNCksICVyY3gKICAgICAgICAgbW92ICAgJXJjeCwgJXIxNQpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv YXNtX2RlZm5zLmgKaW5kZXggZDJkOTFjYS4uYjc0YWM4MSAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2FzbV9kZWZu cy5oCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgPGFzbS9hc20tb2Zmc2V0cy5oPgogI2VuZGlm CiAjaW5jbHVkZSA8YXNtL2J1Zy5oPgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8 YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9wZXJjcHUuaD4KICNpbmNsdWRlIDx4ZW4v c3RyaW5naWZ5Lmg+CkBAIC0zODYsNCArMzg3LDYgQEAgc3RhdGljIGFsd2F5c19pbmxpbmUgdm9p ZCBzdGFjKHZvaWQpCiA0OiAgLnAyYWxpZ24gMiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 IFwKICAgICAucG9wc2VjdGlvbgogCisjaW5jbHVkZSA8YXNtL3NwZWNfY3RybF9hc20uaD4KKwog I2VuZGlmIC8qIF9fWDg2X0FTTV9ERUZOU19IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvY3VycmVudC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmgKaW5kZXgg YjkyOWM0OC4uMTAwOWQwNSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50 LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmgKQEAgLTUzLDYgKzUzLDEyIEBA IHN0cnVjdCBjcHVfaW5mbyB7CiAgICAgICovCiAgICAgdW5zaWduZWQgbG9uZyB4ZW5fY3IzOwog ICAgIHVuc2lnbmVkIGxvbmcgcHZfY3IzOworCisgICAgLyogU2VlIGFzbS14ODYvc3BlY19jdHJs X2FzbS5oIGZvciB1c2FnZS4gKi8KKyAgICB1bnNpZ25lZCBpbnQgc2hhZG93X3NwZWNfY3RybDsK KyAgICBib29sICAgICAgICAgdXNlX3NoYWRvd19zcGVjX2N0cmw7CisKKyAgICB1bnNpZ25lZCBs b25nIF9fcGFkOwogICAgIC8qIGdldF9zdGFja19ib3R0b20oKSBtdXN0IGJlIDE2LWJ5dGUgYWxp Z25lZCAqLwogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ub3BzLmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L25vcHMuaAppbmRleCAxYTQ2Yjk3Li5iYjViNWQ1IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L25vcHMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2 L25vcHMuaApAQCAtNjUsNiArNjUsMTIgQEAKICNkZWZpbmUgQVNNX05PUDggX0FTTV9NS19OT1Ao UDZfTk9QOCkKICNkZWZpbmUgQVNNX05PUDkgX0FTTV9NS19OT1AoUDZfTk9QOSkKIAorI2RlZmlu ZSBBU01fTk9QMjIgQVNNX05PUDg7IEFTTV9OT1A4OyBBU01fTk9QNgorI2RlZmluZSBBU01fTk9Q MjQgQVNNX05PUDg7IEFTTV9OT1A4OyBBU01fTk9QOAorI2RlZmluZSBBU01fTk9QMjYgQVNNX05P UDg7IEFTTV9OT1A4OyBBU01fTk9QODsgQVNNX05PUDIKKyNkZWZpbmUgQVNNX05PUDMyIEFTTV9O T1A4OyBBU01fTk9QODsgQVNNX05PUDg7IEFTTV9OT1A4CisjZGVmaW5lIEFTTV9OT1AzNiBBU01f Tk9QODsgQVNNX05PUDg7IEFTTV9OT1A4OyBBU01fTk9QODsgQVNNX05PUDQKKwogI2RlZmluZSBB U01fTk9QX01BWCA5CiAKICNlbmRpZiAvKiBfX1g4Nl9BU01fTk9QU19IX18gKi8KZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvc3BlY19jdHJsLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L3NwZWNfY3RybC5oCmluZGV4IGUwODhhNTUuLmI0NTEyNTAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS14ODYvc3BlY19jdHJsLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0 cmwuaApAQCAtMjAsOCArMjAsMTcgQEAKICNpZm5kZWYgX19YODZfU1BFQ19DVFJMX0hfXwogI2Rl ZmluZSBfX1g4Nl9TUEVDX0NUUkxfSF9fCiAKKyNpbmNsdWRlIDxhc20vY3VycmVudC5oPgorCiB2 b2lkIGluaXRfc3BlY3VsYXRpb25fbWl0aWdhdGlvbnModm9pZCk7CiAKK3N0YXRpYyBpbmxpbmUg dm9pZCBpbml0X3NoYWRvd19zcGVjX2N0cmxfc3RhdGUodm9pZCkKK3sKKyAgICBzdHJ1Y3QgY3B1 X2luZm8gKmluZm8gPSBnZXRfY3B1X2luZm8oKTsKKworICAgIGluZm8tPnNoYWRvd19zcGVjX2N0 cmwgPSBpbmZvLT51c2Vfc2hhZG93X3NwZWNfY3RybCA9IDA7Cit9CisKICNlbmRpZiAvKiAhX19Y ODZfU1BFQ19DVFJMX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9zcGVjX2N0cmxfYXNtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3NwZWNfY3RybF9hc20uaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFhNWFkOQotLS0gL2Rldi9udWxs CisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc3BlY19jdHJsX2FzbS5oCkBAIC0wLDAgKzEsMjI3 IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBpbmNsdWRlL2FzbS14ODYvc3BlY19jdHJs LmgKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogQ29weXJpZ2h0IChj KSAyMDE3LTIwMTggQ2l0cml4IFN5c3RlbXMgTHRkLgorICovCisKKyNpZm5kZWYgX19YODZfU1BF Q19DVFJMX0FTTV9IX18KKyNkZWZpbmUgX19YODZfU1BFQ19DVFJMX0FTTV9IX18KKworI2lmZGVm IF9fQVNTRU1CTFlfXworI2luY2x1ZGUgPGFzbS9tc3IuaD4KKworLyoKKyAqIFNhdmluZyBhbmQg cmVzdG9yaW5nIE1TUl9TUEVDX0NUUkwgc3RhdGUgaXMgYSBsaXR0bGUgdHJpY2t5LgorICoKKyAq IFdlIHdhbnQgdGhlIGd1ZXN0cyBjaG9pY2Ugb2YgU1BFQ19DVFJMIHdoaWxlIGluIGd1ZXN0IGNv bnRleHQsIGFuZCBJQlJTCisgKiAoc2V0IG9yIGNsZWFyLCBkZXBlbmRpbmcgb24gdGhlIGhhcmR3 YXJlKSB3aGlsZSBydW5uaW5nIGluIFhlbiBjb250ZXh0LgorICogVGhlcmVmb3JlLCBhIHNpbXBs aXN0aWMgYWxnb3JpdGhtIGlzOgorICoKKyAqICAtIFNldC9jbGVhciBJQlJTIG9uIGVudHJ5IHRv IFhlbgorICogIC0gU2V0IHRoZSBndWVzdHMnIGNob2ljZSBvbiBleGl0IHRvIGd1ZXN0CisgKiAg LSBMZWF2ZSBTUEVDX0NUUkwgdW5jaGFuZ2VkIG9uIGV4aXQgdG8geGVuCisgKgorICogVGhlcmUg YXJlIHR3byBjb21wbGljYXRpbmcgZmFjdG9yczoKKyAqICAxKSBIVk0gZ3Vlc3RzIGNhbiBoYXZl IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIE1TUiwgc28gaXQgY2FuIGNoYW5nZQorICogICAgIGJlaGlu ZCBYZW4ncyBiYWNrLgorICogIDIpIEFuIE5NSSBvciBNQ0UgY2FuIGludGVycnVwdCBhdCBhbnkg cG9pbnQsIGluY2x1ZGluZyBlYXJseSBpbiB0aGUgZW50cnkKKyAqICAgICBwYXRoLCBvciBsYXRl IGluIHRoZSBleGl0IHBhdGggYWZ0ZXIgcmVzdG9yaW5nIHRoZSBndWVzdCB2YWx1ZS4gIFRoaXMK KyAqICAgICB3aWxsIGNvcnJ1cHQgdGhlIGd1ZXN0IHZhbHVlLgorICoKKyAqIEZhY3RvciAxIGlz IGRlYWx0IHdpdGggYnkgcmVseWluZyBvbiBOTUlzL01DRXMgYmVpbmcgYmxvY2tlZCBpbW1lZGlh dGVseQorICogYWZ0ZXIgVk1FWElULiAgVGhlIFZNRVhJVC1zcGVjaWZpYyBjb2RlIHJlYWRzIE1T Ul9TUEVDX0NUUkwgYW5kIHVwZGF0ZXMKKyAqIGN1cnJlbnQgYmVmb3JlIGxvYWRpbmcgWGVuJ3Mg TVNSX1NQRUNfQ1RSTCBzZXR0aW5nLgorICoKKyAqIEZhY3RvciAyIGlzIGhhcmRlci4gIFdlIG1h aW50YWluIGEgc2hhZG93X3NwZWNfY3RybCB2YWx1ZSwgYW5kCisgKiB1c2Vfc2hhZG93X3NwZWNf Y3RybCBib29sZWFuIHBlciBjcHUuICBUaGUgc3luY2hyb25vdXMgdXNlIGlzOgorICoKKyAqICAx KSBTdG9yZSBndWVzdCB2YWx1ZSBpbiBzaGFkb3dfc3BlY19jdHJsCisgKiAgMikgU2V0IHVzZV9z aGFkb3dfc3BlY19jdHJsIGJvb2xlYW4KKyAqICAzKSBMb2FkIGd1ZXN0IHZhbHVlIGludG8gTVNS X1NQRUNfQ1RSTAorICogIDQpIEV4aXQgdG8gZ3Vlc3QKKyAqICA1KSBFbnRyeSBmcm9tIGd1ZXN0 CisgKiAgNikgQ2xlYXIgdXNlX3NoYWRvd19zcGVjX2N0cmwgYm9vbGVhbgorICoKKyAqIFRoZSBh c3luY2hyb25vdXMgdXNlIGZvciBpbnRlcnJ1cHRzL2V4Y2VwdGlvbnMgaXM6CisgKiAgLSAgU2V0 L2NsZWFyIElCUlMgb24gZW50cnkgdG8gWGVuCisgKiAgLSAgT24gZXhpdCB0byBYZW4sIGNoZWNr IHVzZV9zaGFkb3dfc3BlY19jdHJsCisgKiAgLSAgSWYgc2V0LCBsb2FkIHNoYWRvd19zcGVjX2N0 cmwKKyAqCisgKiBUaGVyZWZvcmUsIGFuIGludGVycnVwdC9leGNlcHRpb24gd2hpY2ggaGl0cyB0 aGUgc3luY2hyb25vdXMgcGF0aCBiZXR3ZWVuCisgKiBzdGVwcyAyIGFuZCA2IHdpbGwgcmVzdG9y ZSB0aGUgc2hhZG93IHZhbHVlIHJhdGhlciB0aGFuIGxlYXZpbmcgWGVuJ3MgdmFsdWUKKyAqIGxv YWRlZCBhbmQgY29ycnVwdGluZyB0aGUgdmFsdWUgdXNlZCBpbiBndWVzdCBjb250ZXh0LgorICoK KyAqIFRoZSBmb2xsb3dpbmcgQVNNIGZyYWdtZW50cyBpbXBsZW1lbnQgdGhpcyBhbGdvcml0aG0u ICBTZWUgdGhlaXIgbG9jYWwKKyAqIGNvbW1lbnRzIGZvciBmdXJ0aGVyIGRldGFpbHMuCisgKiAg LSBTUEVDX0NUUkxfRU5UUllfRlJPTV9WTUVYSVQKKyAqICAtIFNQRUNfQ1RSTF9FTlRSWV9GUk9N X1BWCisgKiAgLSBTUEVDX0NUUkxfRU5UUllfRlJPTV9JTlRSCisgKiAgLSBTUEVDX0NUUkxfRVhJ VF9UT19YRU4KKyAqICAtIFNQRUNfQ1RSTF9FWElUX1RPX0dVRVNUCisgKi8KKworLm1hY3JvIERP X1NQRUNfQ1RSTF9FTlRSWV9GUk9NX1ZNRVhJVCBpYnJzX3ZhbDpyZXEKKy8qCisgKiBSZXF1aXJl cyAlcmJ4PWN1cnJlbnQsICVyc3A9cmVncy9jcHVpbmZvCisgKiBDbG9iYmVycyAlcmF4LCAlcmN4 LCAlcmR4CisgKgorICogVGhlIGNvbW1vbiBjYXNlIGlzIHRoYXQgYSBndWVzdCBoYXMgZGlyZWN0 IGFjY2VzcyB0byBNU1JfU1BFQ19DVFJMLCBhdAorICogd2hpY2ggcG9pbnQgd2UgbmVlZCB0byBz YXZlIHRoZSBndWVzdCB2YWx1ZSBiZWZvcmUgc2V0dGluZyBJQlJTIGZvciBYZW4uCisgKiBVbmls YXRlcmFsbHkgc2F2aW5nIHRoZSBndWVzdCB2YWx1ZSBpcyBzaG9ydGVyIGFuZCBmYXN0ZXIgdGhh biBjaGVja2luZy4KKyAqLworICAgIG1vdiAkTVNSX1NQRUNfQ1RSTCwgJWVjeAorICAgIHJkbXNy CisKKyAgICAvKiBTdGFzaCB0aGUgdmFsdWUgZnJvbSBoYXJkd2FyZS4gKi8KKyAgICBtb3YgVkNQ VV9hcmNoX21zciglcmJ4KSwgJXJkeAorICAgIG1vdiAlYWwsIFZDUFVNU1Jfc3BlY19jdHJsX3Jh dyglcmR4KQorICAgIHhvciAlZWR4LCAlZWR4CisKKyAgICAvKiBDbGVhciBTUEVDX0NUUkwgc2hh ZG93aW5nICpiZWZvcmUqIGxvYWRpbmcgWGVuJ3MgdmFsdWUuICovCisgICAgbW92YiAlZGwsIENQ VUlORk9fdXNlX3NoYWRvd19zcGVjX2N0cmwoJXJzcCkKKworICAgIC8qIExvYWQgWGVuJ3MgaW50 ZW5kZWQgdmFsdWUuICovCisgICAgbW92ICRcaWJyc192YWwsICVlYXgKKyAgICB3cm1zcgorLmVu ZG0KKworLm1hY3JvIERPX1NQRUNfQ1RSTF9FTlRSWSBtYXliZXhlbjpyZXEgaWJyc192YWw6cmVx CisvKgorICogUmVxdWlyZXMgJXJzcD1yZWdzIChhbHNvIGNwdWluZm8gaWYgIW1heWJleGVuKQor ICogQ2xvYmJlcnMgJXJheCwgJXJjeCwgJXJkeAorICoKKyAqIFBWIGd1ZXN0cyBjYW4ndCB1cGRh dGUgTVNSX1NQRUNfQ1RSTCBiZWhpbmQgWGVuJ3MgYmFjaywgc28gbm8gbmVlZCB0byByZWFkCisg KiBpdCBiYWNrLiAgRW50cmllcyBmcm9tIGd1ZXN0IGNvbnRleHQgbmVlZCB0byBjbGVhciBTUEVD X0NUUkwgc2hhZG93aW5nLAorICogd2hpbGUgZW50cmllcyBmcm9tIFhlbiBtdXN0IGxlYXZlIHNo YWRvd2luZyBpbiBpdHMgY3VycmVudCBzdGF0ZS4KKyAqLworICAgIG1vdiAkTVNSX1NQRUNfQ1RS TCwgJWVjeAorCisgICAgLmlmIFxtYXliZXhlbgorICAgICAgICB0ZXN0YiAkMywgVVJFR1NfY3Mo JXJzcCkKKyAgICAgICAganogLkxcQF9lbnRyeV9mcm9tX3hlbgorICAgIC5lbmRpZgorCisgICAg LyoKKyAgICAgKiBDbGVhciBTUEVDX0NUUkwgc2hhZG93aW5nICpiZWZvcmUqIGxvYWRpbmcgWGVu J3MgdmFsdWUuICBJZiBlbnRlcmluZworICAgICAqIGZyb20gYSBwb3NzaWJseS14ZW4gY29udGV4 dCwgJXJzcCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGFsaWFzIHRoZSBjcHVpbmZvCisgICAgICogYmxv Y2sgc28gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBkaXJlY3RseS4KKyAgICAgKi8KKyAgICAuaWYg XG1heWJleGVuCisgICAgICAgIEdFVF9TVEFDS19FTkQoZHgpCisgICAgICAgIG1vdmIgJDAsIFNU QUNLX0NQVUlORk9fRklFTEQodXNlX3NoYWRvd19zcGVjX2N0cmwpKCVyZHgpCisgICAgLmVsc2UK KyAgICAgICAgbW92YiAkMCwgQ1BVSU5GT191c2Vfc2hhZG93X3NwZWNfY3RybCglcnNwKQorICAg IC5lbmRpZgorCisuTFxAX2VudHJ5X2Zyb21feGVuOgorICAgIC8qIExvYWQgWGVuJ3MgaW50ZW5k ZWQgdmFsdWUuICovCisgICAgbW92ICRcaWJyc192YWwsICVlYXgKKyAgICB4b3IgJWVkeCwgJWVk eAorICAgIHdybXNyCisuZW5kbQorCisubWFjcm8gRE9fU1BFQ19DVFJMX0VYSVRfVE9fWEVOCisv KgorICogUmVxdWlyZXMgbm90aGluZworICogQ2xvYmJlcnMgJXJheCwgJXJjeCwgJXJkeAorICoK KyAqIFdoZW4gcmV0dXJuaW5nIHRvIFhlbiBjb250ZXh0LCBsb29rIHRvIHNlZSB3aGV0aGVyIFNQ RUNfQ1RSTCBzaGFkb3dpbmcgaXMKKyAqIGluIGVmZmVjdCwgYW5kIHJlbG9hZCB0aGUgc2hhZG93 IHZhbHVlLiAgVGhpcyBjb3ZlcnMgcmFjZSBjb25kaXRpb25zIHdoaWNoCisgKiBleGlzdCB3aXRo IGFuIE5NSS9NQ0UvZXRjIGhpdHRpbmcgbGF0ZSBpbiB0aGUgcmV0dXJuLXRvLWd1ZXN0IHBhdGgu CisgKi8KKyAgICBHRVRfU1RBQ0tfRU5EKGR4KQorICAgIGNtcGIgJDAsIFNUQUNLX0NQVUlORk9f RklFTEQodXNlX3NoYWRvd19zcGVjX2N0cmwpKCVyZHgpCisgICAgamUgLkxcQF9za2lwCisKKyAg ICBtb3YgU1RBQ0tfQ1BVSU5GT19GSUVMRChzaGFkb3dfc3BlY19jdHJsKSglcmR4KSwgJWVheAor ICAgIG1vdiAkTVNSX1NQRUNfQ1RSTCwgJWVjeAorICAgIHhvciAlZWR4LCAlZWR4CisgICAgd3Jt c3IKKworLkxcQF9za2lwOgorLmVuZG0KKworLm1hY3JvIERPX1NQRUNfQ1RSTF9FWElUX1RPX0dV RVNUCisvKgorICogUmVxdWlyZXMgJWVheD1zcGVjX2N0cmwsICVyc3A9cmVncy9jcHVpbmZvCisg KiBDbG9iYmVycyAlcmF4LCAlcmN4LCAlcmR4CisgKgorICogV2hlbiByZXR1cm5pbmcgdG8gZ3Vl c3QgY29udGV4dCwgc2V0IHVwIFNQRUNfQ1RSTCBzaGFkb3dpbmcgYW5kIGxvYWQgdGhlCisgKiBn dWVzdCB2YWx1ZS4KKyAqLworICAgIC8qIFNldCB1cCBzaGFkb3cgdmFsdWUgKmJlZm9yZSogZW5h Ymxpbmcgc2hhZG93aW5nLiAqLworICAgIG1vdiAlZWF4LCBDUFVJTkZPX3NoYWRvd19zcGVjX2N0 cmwoJXJzcCkKKworICAgIC8qIFNldCBTUEVDX0NUUkwgc2hhZG93aW5nICpiZWZvcmUqIGxvYWRp bmcgdGhlIGd1ZXN0IHZhbHVlLiAqLworICAgIG1vdmIgJDEsIENQVUlORk9fdXNlX3NoYWRvd19z cGVjX2N0cmwoJXJzcCkKKworICAgIG1vdiAkTVNSX1NQRUNfQ1RSTCwgJWVjeAorICAgIHhvciAl ZWR4LCAlZWR4CisgICAgd3Jtc3IKKy5lbmRtCisKKy8qIFVzZSBhZnRlciBhIFZNRVhJVCBmcm9t IGFuIEhWTSBndWVzdC4gKi8KKyNkZWZpbmUgU1BFQ19DVFJMX0VOVFJZX0ZST01fVk1FWElUICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBTFRFUk5BVElWRV8yIF9f c3RyaW5naWZ5KEFTTV9OT1AzMiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgX19zdHJpbmdpZnkoRE9fU1BFQ19DVFJMX0VOVFJZX0ZST01fVk1FWElUICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgaWJyc192YWw9U1BFQ19DVFJMX0lC UlMpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWDg2X0ZFQVRVUkVfWEVO X0lCUlNfU0VULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgX19zdHJpbmdpZnkoRE9fU1BFQ19DVFJMX0VOVFJZX0ZST01fVk1FWElUICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgaWJyc192YWw9MCksICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWDg2X0ZFQVRVUkVfWEVOX0lC UlNfQ0xFQVIKKworLyogVXNlIGFmdGVyIGFuIGVudHJ5IGZyb20gUFYgY29udGV4dCAoc3lzY2Fs bC9zeXNlbnRlci9pbnQ4MC9pbnQ4Mi9ldGMpLiAqLworI2RlZmluZSBTUEVDX0NUUkxfRU5UUllf RlJPTV9QViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFM VEVSTkFUSVZFXzIgX19zdHJpbmdpZnkoQVNNX05PUDIyKSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBfX3N0cmluZ2lmeShET19TUEVDX0NUUkxfRU5UUlkgbWF5YmV4 ZW49MCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBpYnJzX3Zh bD1TUEVDX0NUUkxfSUJSUyksICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBY ODZfRkVBVFVSRV9YRU5fSUJSU19TRVQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICBfX3N0cmluZ2lmeShET19TUEVDX0NUUkxfRU5UUlkgbWF5YmV4ZW49 MCBpYnJzX3ZhbD0wKSwgICAgICAgICAgXAorICAgICAgICBYODZfRkVBVFVSRV9YRU5fSUJSU19D TEVBUgorCisvKiBVc2UgaW4gaW50ZXJydXB0L2V4Y2VwdGlvbiBjb250ZXh0LiAgTWF5IGludGVy cnVwdCBYZW4gb3IgUFYgY29udGV4dC4gKi8KKyNkZWZpbmUgU1BFQ19DVFJMX0VOVFJZX0ZST01f SU5UUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBTFRFUk5B VElWRV8yIF9fc3RyaW5naWZ5KEFTTV9OT1AzNiksICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgX19zdHJpbmdpZnkoRE9fU1BFQ19DVFJMX0VOVFJZIG1heWJleGVuPTEg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgaWJyc192YWw9U1BF Q19DVFJMX0lCUlMpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWDg2X0ZF QVRVUkVfWEVOX0lCUlNfU0VULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgX19zdHJpbmdpZnkoRE9fU1BFQ19DVFJMX0VOVFJZIG1heWJleGVuPTEgaWJy c192YWw9MCksICAgICAgICAgIFwKKyAgICAgICAgWDg2X0ZFQVRVUkVfWEVOX0lCUlNfQ0xFQVIK KworLyogVXNlIHdoZW4gZXhpdGluZyB0byBYZW4gY29udGV4dC4gKi8KKyNkZWZpbmUgU1BFQ19D VFJMX0VYSVRfVE9fWEVOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICBBTFRFUk5BVElWRV8yIF9fc3RyaW5naWZ5KEFTTV9OT1AyNiksICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRE9fU1BFQ19DVFJMX0VYSVRfVE9fWEVOLCBY ODZfRkVBVFVSRV9YRU5fSUJSU19TRVQsICAgICAgICAgICAgIFwKKyAgICAgICAgRE9fU1BFQ19D VFJMX0VYSVRfVE9fWEVOLCBYODZfRkVBVFVSRV9YRU5fSUJSU19DTEVBUgorCisvKiBVc2Ugd2hl biBleGl0aW5nIHRvIGd1ZXN0IGNvbnRleHQuICovCisjZGVmaW5lIFNQRUNfQ1RSTF9FWElUX1RP X0dVRVNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQUxU RVJOQVRJVkVfMiBfX3N0cmluZ2lmeShBU01fTk9QMjQpLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgICAgIERPX1NQRUNfQ1RSTF9FWElUX1RPX0dVRVNULCBYODZfRkVBVFVS RV9YRU5fSUJSU19TRVQsICAgICAgICAgICBcCisgICAgICAgIERPX1NQRUNfQ1RSTF9FWElUX1RP X0dVRVNULCBYODZfRkVBVFVSRV9YRU5fSUJSU19DTEVBUgorCisjZW5kaWYgLyogX19BU1NFTUJM WV9fICovCisjZW5kaWYgLyogIV9fWDg2X1NQRUNfQ1RSTF9BU01fSF9fICovCisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu aWwKKyAqIEVuZDoKKyAqLwotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs