From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v5 05/16] livepatch: Initial ARM64 support. Date: Wed, 21 Sep 2016 13:32:23 -0400 Message-ID: <1474479154-20991-6-git-send-email-konrad.wilk@oracle.com> References: <1474479154-20991-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bmlOQ-0003m5-BV for xen-devel@lists.xenproject.org; Wed, 21 Sep 2016 17:33:10 +0000 In-Reply-To: <1474479154-20991-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, sstabellini@kernel.org, julien.grall@arm.com Cc: Andrew Cooper , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org QXMgY29tcGFyZWQgdG8geDg2IHRoZSB2YSBvZiB0aGUgaHlwZXJ2aXNvciAudGV4dAppcyBsb2Nr ZWQgZG93biAtIHdlIGNhbm5vdCBtb2RpZnkgdGhlIHJ1bm5pbmcgcGFnZXRhYmxlcwp0byBoYXZl IHRoZSAucm8gZmxhZyB1bnNldC4gV2UgYm9ycm93IHRoZSBzYW1lIGlkZWEgdGhhdAphbHRlcm5h dGl2ZSBwYXRjaGluZyBoYXMgLSB3aGljaCBpcyB0byB2bWFwIHRoZSBlbnRpcmUKLnRleHQgcmVn aW9uIGFuZCB1c2UgdGhlIGFsdGVybmF0aXZlIHZpcnR1YWwgYWRkcmVzcwpmb3IgcGF0Y2hpbmcu CgpTaW5jZSB3ZSBhcmUgZG9pbmcgdm1hcCB3ZSBtYXkgZmFpbCwgaGVuY2UgdGhlCmFyY2hfbGl2 ZXBhdGNoX3F1aWVzY2Ugd2FzIGNoYW5nZWQgKHNlZSAieDg2LGFybToKQ2hhbmdlIGFyY2hfbGl2 ZXBhdGNoX3F1aWVzY2UoKSBkZWNsYXJhdGlvbiIpIHRvIHJldHVybgphbiBlcnJvciB2YWx1ZSB3 aGljaCB3aWxsIGJlIGJ1YmJsZWQgaW4gcGF5bG9hZC0+cmMgYW5kCnByb3ZpZGVkIHRvIHRoZSB1 c2VyIChhbG9uZyB3aXRoIG1lc3NhZ2VzIGluIHRoZSByaW5nIGJ1ZmZlcikuCgpUaGUgbGl2ZXBh dGNoIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSAod2hlcmUgdGhlIG5ldyBmdW5jdGlvbnMKYXJlKSBu ZWVkcyB0byBiZSBjbG9zZSB0byB0aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3MKc28gdGhh dCB0aGUgdHJhbXBvbGluZSBjYW4gcmVhY2ggaXQuIEFzIHN1Y2ggd2UgcmUtdXNlCnRoZSBCT09U X1JFTE9DX1ZJUlRfU1RBUlQgd2hpY2ggaXMgbm90IHVzZWQgYWZ0ZXIgYm9vdHVwCihhbHRlcm5h dGl2ZWx5IHdlIGNhbiBhbHNvIHVzZSB0aGUgc3BhY2UgYWZ0ZXIgdGhlIF9lbmQgdG8KRklYTUFQ X0FERFIoMCksIGJ1dCB0aGF0IG1heSBiZSB0b28gc21hbGwpLgoKVGhlIEVMRiByZWxvY2F0aW9u IGVuZ2luZSBhdCB0aGUgc3RhcnQgd2FzIGNvZGVkIGZyb20KdGhlICJFTEYgZm9yIHRoZSBBUk0g NjQtYml0IEFyY2hpdGVjdHVyZSAoQUFyY2g2NCkiCihodHRwOi8vaW5mb2NlbnRlci5hcm0uY29t L2hlbHAvdG9waWMvY29tLmFybS5kb2MuaWhpMDA1NmIvSUhJMDA1NkJfYWFlbGY2NC5wZGYpCmJ1 dCBhZnRlciBhIHdoaWxlIG9mIHRyeWluZyB0byB3cml0ZSB0aGUgY29ycmVjdCBiaXQgc2hpZnRp bmcKYW5kIG1hc2tpbmcgZnJvbSBzY3JhdGNoIEkgZW5kZWQgdXAgYm9ycm93aW5nIGZyb20gTGlu dXgsIHRoZQoncmVsb2NfaW5zbl9pbW0nIChMaW51eCB2NC43IGFyY2gvYXJtNjQva2VybmVsL21v ZHVsZS5jIGZ1bmN0aW9uLgpTZWUgMjU3Y2IyNTE5MjVmODU0ZGE0MzVjYmY3OWIxNDA5ODQ0MTM4 NzFhYyAiYXJtNjQ6IExvYWRhYmxlIG1vZHVsZXMiKQoKQW5kIHdoaWxlIGF0IGl0IC0gd2UgYWxz byB1dGlsaXplIGNvZGUgZnJvbSBMaW51eCB0byBjb25zdHJ1Y3QKdGhlIHJpZ2h0IGJyYW5jaCBp bnN0cnVjdGlvbiAoc2VlICJhcm02NC9pbnNuOiBpbnRyb2R1Y2UKYWFyY2g2NF9pbnNuX2dlbl97 bm9wfGJyYW5jaF9pbW19KCkgaGVscGVyIGZ1bmN0aW9ucyIpLgoKSW4gdGhlIGxpdmVwYXRjaCBw YXlsb2FkIGxvYWRpbmcgY29kZSB3ZSB0d2VhayB0aGUgI2lmZGVmIHRvCm9ubHkgZXhjbHVkZSBB Uk1fMzIuIFRoZSBleGNlcHRpb25zIGFyZSBub3QgcGFydCBvZiBBUk0gMzIvNjQgaGVuY2UKdGhl eSBhcmUgc3RpbGwgYmVoaW5kIHRoZSAjaWZkZWYuCgpXZSBhbHNvIGV4cGFuZCB0aGUgTUFJTlRB SU5FUlMgZmlsZSB0byBpbmNsdWRlIHRoZSBhcm02NCBhbmQgYXJtMzIKcGxhdGZvcm0gc3BlY2lm aWMgbGl2ZXBhdGNoIGZpbGUuCgpBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2Uu Y29tPiBbbm9uLWFybSBwYXJ0c10KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCkNjOiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5s YWdlcndhbGxAY2l0cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlA a2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjICBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu Y29vcGVyM0BjaXRyaXguY29tPgoKUkZDOiBXaG9seSBjb3chIEl0IHdvcmtzIQp2MTogRmluaXNo ZWQgdGhlIHZhcmlvdXMgVE9ET3MgYW5kIHJldmlld3Mgb3V0bGluZWQgYnkgSnVsaWVuIGluIFJG Qy4KdjI6IENhbGwgY2hlY2tfZm9yX2xpdmVwYXRjaF93b3JrIGluIGxlYXZlX2h5cGVydmlzb3Jf dGFpbCBub3QgaW4KICAgIHJlc2V0X3N0YWNrX2FuZF9qdW1wCiAgIC0gTW92ZSBBUk0gMzIgY29t cG9uZW50cyBpbiBvdGhlciBwYXRjaAogICAtIEJsYWNrbGlzdCBwbGF0Zm9ybSBvcHRpb25zIGlu IEtjb25maWcKICAgLSBBZGRlZCBSX0FBUkNINjRfTERTVDEyOF9BQlNfTE8xMl9OQywgUl9BQVJD SDY0X1RTVEJSMTQsIGFuZAogICAgIFJfQUFSQ0g2NF9BRFJfUFJFTF9QR19ISTIxX05DCiAgIC0g QWRkZWQgZG9fcmVsb2MgYW5kIHJlbG9jX2RhdGEgYWxvbmcgd2l0aCBvdmVyZmxvdyBjaGVja3Mg ZnJvbSBMaW51eC4KICAgLSBVc2UgYXBwbHlfYWx0ZXJuYXRpdmVzIHdpdGhvdXQgYW55ICNpZmRl ZgogICAtIFVzZSBsZWF2ZV9oeXBlcnZpc29yX3RhaWwgdG8gY2FsbCBjaGVja19mb3JfbGl2ZXBh dGNoX3dvcmsKICAgLSBBZGQgQVNTRVJUIHRoYXQgaXNucyBpcyBub3QgQUFSQ0g2NF9CUkVBS19G QVVMVAogICAtIFNwdW4gb3V0IGFyY2hfbGl2ZXBhdGNoX3F1aWVzY2UgY2hhbmdlcyBpbiBzZXBl cmF0ZSBwYXRjaC4KICAgLSBTcHVuIG91dCBjaGFuZ2VzIHRvIGNvbmZpZy5oIChkb2N1bWVudCBv bmVzKSB0byBzZXBlcmF0ZSBwYXRjaC4KICAgLSBNb3ZlIHRoZSBsaXZlcGF0Y2guaCB0byBpbmNs dWRlL3hlbi9hc20tYXJtLgogICAtIEFkZCBMSVZFUEFUQ0hfVk1BUF9FTkQgYW5kIExJVkVQQVRD SF9WTUFQX1NUQVJUIGluIGNvbmZpZy5oCiAgIC0gSW4gYXJjaF9saXZlcGF0Y2hfc2VjdXJlIHVz ZSBzd2l0Y2ggZm9yIHZhX3R5cGUuCiAgIC0gRHJvcCB0aGUgI2lmbmRlZiBDT05GSUdfQVJNIGZv ciAuZXhfdGFibGUgKHNlZQogICAgICJhcm0veDg2OiBBZGQgSEFTX0FMVEVSTkFUSVZFIGFuZCBI QVNfRVhfVEFCTEUiKQogICAtIFBpZ2d5YmFjayBvbiAieDg2OiBjaGFuZ2UgbW9kaWZ5X3hlbl9t YXBwaW5ncyB0byByZXR1cm4gZXJyb3IiCiAgICAgIHNvIHRoYXQgYXJjaF9saXZlcGF0Y2hfc2Vj dXJlIGNhbiByZXR1cm4gZXJyb3JzLgogICAtIE1vdmVzIGNvbW1lbnQgYWJvdXQgYnJhbmNoIHBy ZWRpY3RvciBvdXQgb2YgdGhpcyBwYXRjaC4KdjM6IEZpeCBTdHlsZUd1aWRlIHZpb2xhdGlvbnMg KHN3aXRjaCBzdGF0ZW1lbnRzKQogICAtIEZpeCBpbmNvcnJlY3QgY2FzdCBvZiBhZGRyIHdoZW4g cmV2ZXJ0aW5nLgogICAtIERyb3Agb2xkX3B0ciB2YXJpYWJsZS4KICAgLSBVc2UgYm9vbF90IHZh bHVlcyBpbnN0ZWFkIG9mIG51bWJlcnMuCiAgIC0gU3ByaW5rbGUgXG4gYXMgcmVxdWVzdGVkIGJ5 IEp1bGllbi4KICAgLSBJbiBhcmNoX2xpdmVwYXRjaF9xdWllc2NlIHVzZSAxVSBpbnN0ZWFkIG9m IDEuCiAgIC0gVXNlIEM5OSAjZGVmaW5lcyBmb3IgW1UsXUlOVFsxNiwzMl1fW01JTixNQVhdIGlu c3RlYWQgb2YgTGludXgKICAgICBrZXJuZWwgb25lcyAoW1MsVV1bMTYsMzJdX1tNSU4sTUFYXSku CiAgIC0gSW5jbHVkZSB0aGUgRUxGIHJlbG9jYXRpb25zIGZvciBSX0FBUkNINjRfW0FCUyxQUkVd MTYsIGFuZAogICAgIGFsbCB0aGUgdmFyaW91cyBncm91cGluZ3MgZm9yIFJfQUFSQ0g2NF9NT1ZX X1tVQUJTLFNBQlMsUFJFTF1fKgogICAgIGZhbWlseS4KICAgLSBSZWRvIHRoZSBOT1AgcGF0Y2hp bmcgdG8gdXNlIG1vcmUgb2YgdGhlIG9wYXF1ZSBzaXplIChzbyB1cCB0byA3CiAgICAgaW5zdHJ1 Y3Rpb25zIGluIG9uZSBnbykuCiAgIC0gRHJvcCB0aGUgY3B1X3RvX2xlMzIgbWFjcm9zIGFzIHRo ZXkgYXJlIG5vdCBuZWVkZWQgKGFuZCBjYW4gYWxsb3cKICAgICB1c2UgdG8gc2hhcmUgbW9yZSBj b2RlIHdpdGggQVJNMzIpLgogICAtIEZsdXNoIG91dCBmdW5jLT5vbGRfYWRkciBpbnN0ZWFkIG9m IHZtYXAgcG9pbnRlciB3aGVuIHJldmVydGluZy4KdjQ6IEFkZGVkIEphbidzIEFjawogICBzL1BB VENIX0lOU05fU0laRS9BUkNIX1BBVENIX0lOU05fU0laRS8KICAgcy9hcmNoX2xpdmVwYXRjaF9p bnNuX2xlbi9saXZlcGF0Y2hfaW5zbl9sZW4vCnY1OiBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1l bnRzIG9uIHRoZSBzd2l0Y2ggc3RhdGVtZW50cy4KICAgLSBBZGRlZCBtb3JlIGludmFsaWRhdGUg b2YgZGNhY2hlIG9uIHRoZSBvbGRfYWRkciBhbmQgdGhlIHZtYXAgYXJlYS4KICAgLSBSZWJhc2Vk IG9uICJsaXZlcGF0Y2g6IERyb3AgX2ptcCBmcm9tIGFyY2hfbGl2ZXBhdGNoX1thcHBseSxyZXZl cnRdX2ptcCIKICAgLSBNb3ZlIG1vc3Qgb2YgIGRvY3MgcGFydCBmcm9tICJsaXZlcGF0Y2g6IEFS TS94ODY6IENoZWNrIGRpc3BsYWNlbWVudCBvZgogICAgIG9sZF9hZGRyIGFuZCBuZXdfYWRkciIg aW4gdGhpcyBwYXRjaC4KICAgLSBBZGRlZCBzeW5jaW5nIG9mIGRhdGEgY2FjaGUgYWxvbmcgd2l0 aCBleHBsYW5hdGlvbiBmb3IgaXRzIHVzYWdlLgotLS0KIE1BSU5UQUlORVJTICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93biAgICB8ICAxNCAr LQogeGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICB8ICAxMyArLQogeGVuL2FyY2gvYXJt L2FybTMyL01ha2VmaWxlICAgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNo LmMgIHwgIDM4ICsrKysKIHhlbi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZSAgICAgfCAgIDEgKwog eGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jICB8IDQ4OCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vZG9tYWluLmMgICAgICAgICAgIHwg ICA2ICsKIHhlbi9hcmNoL2FybS9saXZlcGF0Y2guYyAgICAgICAgfCAxMDMgKysrKysrKy0tCiB4 ZW4vYXJjaC9hcm0vdHJhcHMuYyAgICAgICAgICAgIHwgICA2ICsKIHhlbi9jb21tb24vS2NvbmZp ZyAgICAgICAgICAgICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vY29uZmlnLmggICAg fCAgIDUgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9saXZlcGF0Y2guaCB8ICAyOCArKysKIHhlbi9p bmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmggICAgfCAgNTcgKysrKy0KIHhlbi9pbmNsdWRlL3hlbi90 eXBlcy5oICAgICAgICAgfCAgIDkgKwogMTUgZmlsZXMgY2hhbmdlZCwgNzQ2IGluc2VydGlvbnMo KyksIDI2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9hcm0z Mi9saXZlcGF0Y2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9hcm02NC9saXZl cGF0Y2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vbGl2ZXBhdGNo LmgKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDliMzA2MDAu LjFjMzkxNDYgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0y NjksNiArMjY5LDcgQEAgUzogIFN1cHBvcnRlZAogRjogIGRvY3MvbWlzYy9saXZlcGF0Y2gubWFy a2Rvd24KIEY6ICB0b29scy9taXNjL3hlbi1saXZlcGF0Y2guYwogRjogIHhlbi9hcmNoLyovbGl2 ZXBhdGNoKgorRjogIHhlbi9hcmNoLyovKi9saXZlcGF0Y2gqCiBGOiAgeGVuL2NvbW1vbi9saXZl cGF0Y2gqCiBGOiAgeGVuL2luY2x1ZGUvYXNtLSovbGl2ZXBhdGNoLmgKIEY6ICB4ZW4vaW5jbHVk ZS94ZW4vbGl2ZXBhdGNoKgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93 biBiL2RvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24KaW5kZXggZjJhZTUyYS4uZmYyY2ZiOCAx MDA2NDQKLS0tIGEvZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93bgorKysgYi9kb2NzL21pc2Mv bGl2ZXBhdGNoLm1hcmtkb3duCkBAIC0xMTA4LDcgKzExMDgsNyBAQCBhbmQgbm8gLmRhdGEgb3Ig LmJzcyBzZWN0aW9ucy4KIFRoZSBoeXBlcnZpc29yIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGUgaW4t cGxhY2UgcGF0Y2hpbmcgd291bGQgZml0IHdpdGhpbgogdGhlIGNvZGUgb3IgZGF0YS4KIAotIyMj IFRyYW1wb2xpbmUgKGU5IG9wY29kZSkKKyMjIyBUcmFtcG9saW5lIChlOSBvcGNvZGUpLCB4ODYK IAogVGhlIGU5IG9wY29kZSB1c2VkIGZvciBqbXBxIHVzZXMgYSAzMi1iaXQgc2lnbmVkIGRpc3Bs YWNlbWVudC4gVGhhdCBtZWFucwogd2UgYXJlIGxpbWl0ZWQgdG8gdXAgdG8gMkdCIG9mIHZpcnR1 YWwgYWRkcmVzcyB0byBwbGFjZSB0aGUgbmV3IGNvZGUKQEAgLTExNDMsMyArMTE0MywxNSBAQCB0 aGF0IGluIHRoZSBoeXBlcnZpc29yIGlzIGFkdmlzZWQuCiBUaGUgdG9vbCBmb3IgZ2VuZXJhdGlu ZyBwYXlsb2FkcyBjdXJyZW50bHkgZG9lcyBwZXJmb3JtIGEgY29tcGlsZS10aW1lCiBjaGVjayB0 byBlbnN1cmUgdGhhdCB0aGUgZnVuY3Rpb24gdG8gYmUgcmVwbGFjZWQgaXMgbGFyZ2UgZW5vdWdo LgogCisjIyMjIFRyYW1wb2xpbmUgKGVhIG9wY29kZSksIEFSTQorCitUaGUgdW5jb25kaXRpb25h bCBicmFuY2ggaW5zdHJ1Y3Rpb24gKGZvciB0aGUgZW5jb2Rpbmcgc2VlIHRoZQorRERJIDA0MDZD LmMgYW5kIERESSAwNDg3QS5qIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFsJ3MpLgord2l0 aCBwcm9wZXIgb2Zmc2V0IGlzIHVzZWQgZm9yIGFuIHVuY29uZGl0aW9uYWwgYnJhbmNoIHRvIHRo ZSBuZXcgY29kZS4KK1RoaXMgbWVhbnMgdGhhdCB0aGF0IGBvbGRfc2l6ZWAgKipNVVNUKiogYmUg YXQgbGVhc3QgZm91ciBieXRlcyBpZiBwYXRjaGluZworaW4gdHJhbXBvbGluZS4KKworVGhlIG5l dyBjb2RlIGlzIHBsYWNlZCBpbiB0aGUgOE0gLSAxME0gdmlydHVhbCBhZGRyZXNzIHNwYWNlIHdo aWxlIHRoZQorWGVuIGNvZGUgaXMgaW4gMk0gLSA0TS4gVGhhdCBnaXZlcyB1cyBlbm91Z2ggc3Bh Y2UuCisKK1RoZSBoeXBlcnZpc29yIGFsc28gY2hlY2tzIHRoZSBkaXNwbGFjZW1lbnQgZHVyaW5n IGxvYWRpbmcgb2YgdGhlIHBheWxvYWQuCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZp bGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggNjFlNjU1Yi4uNWNlZTg0ZCAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpA QCAtNTksNiArNTksMTUgQEAgQUxMX09CSlMgOj0gJChUQVJHRVRfU1VCQVJDSCkvaGVhZC5vICQo QUxMX09CSlMpCiAKIERFUFMgKz0gJChUQVJHRVRfU1VCQVJDSCkvLmhlYWQuby5kCiAKK2lmZGVm IENPTkZJR19MSVZFUEFUQ0gKK2FsbF9zeW1ib2xzID0gLS1hbGwtc3ltYm9scworaWZkZWYgQ09O RklHX0ZBU1RfU1lNQk9MX0xPT0tVUAorYWxsX3N5bWJvbHMgPSAtLWFsbC1zeW1ib2xzIC0tc29y dC1ieS1uYW1lCitlbmRpZgorZWxzZQorYWxsX3N5bWJvbHMgPQorZW5kaWYKKwogJChUQVJHRVQp OiAkKFRBUkdFVCktc3ltcyAkKFRBUkdFVCkuYXhmCiAJJChPQkpDT1BZKSAtTyBiaW5hcnkgLVMg JDwgJEAKIGlmZXEgKCQoQ09ORklHX0FSTV82NCkseSkKQEAgLTk0LDEyICsxMDMsMTIgQEAgJChU QVJHRVQpLXN5bXM6IHByZWxpbmsubyB4ZW4ubGRzICQoQkFTRURJUikvY29tbW9uL3N5bWJvbHMt ZHVtbXkubwogCSQoTEQpICQoTERGTEFHUykgLVQgeGVuLmxkcyAtTiBwcmVsaW5rLm8gXAogCSAg ICAkKEJBU0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8gLW8gJChARCkvLiQoQEYpLjAKIAkk KE5NKSAtcGEgLS1mb3JtYXQ9c3lzdiAkKEBEKS8uJChARikuMCBcCi0JCXwgJChCQVNFRElSKS90 b29scy9zeW1ib2xzIC0tc3lzdiAtLXNvcnQgPiQoQEQpLy4kKEBGKS4wLlMKKwkJfCAkKEJBU0VE SVIpL3Rvb2xzL3N5bWJvbHMgJChhbGxfc3ltYm9scykgLS1zeXN2IC0tc29ydCA+JChARCkvLiQo QEYpLjAuUwogCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMC5v CiAJJChMRCkgJChMREZMQUdTKSAtVCB4ZW4ubGRzIC1OIHByZWxpbmsubyBcCiAJICAgICQoQEQp Ly4kKEBGKS4wLm8gLW8gJChARCkvLiQoQEYpLjEKIAkkKE5NKSAtcGEgLS1mb3JtYXQ9c3lzdiAk KEBEKS8uJChARikuMSBcCi0JCXwgJChCQVNFRElSKS90b29scy9zeW1ib2xzIC0tc3lzdiAtLXNv cnQgPiQoQEQpLy4kKEBGKS4xLlMKKwkJfCAkKEJBU0VESVIpL3Rvb2xzL3N5bWJvbHMgJChhbGxf c3ltYm9scykgLS1zeXN2IC0tc29ydCA+JChARCkvLiQoQEYpLjEuUwogCSQoTUFLRSkgLWYgJChC QVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMS5vCiAJJChMRCkgJChMREZMQUdTKSAtVCB4 ZW4ubGRzIC1OIHByZWxpbmsubyAkKGJ1aWxkX2lkX2xpbmtlcikgXAogCSAgICAkKEBEKS8uJChA RikuMS5vIC1vICRACmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUgYi94 ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUKaW5kZXggYjIwZGI2NC4uNDM5NTY5MyAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9hcm0z Mi9NYWtlZmlsZQpAQCAtNCw2ICs0LDcgQEAgb2JqLSQoRUFSTFlfUFJJTlRLKSArPSBkZWJ1Zy5v CiBvYmoteSArPSBkb21jdGwubwogb2JqLXkgKz0gZG9tYWluLm8KIG9iai15ICs9IGVudHJ5Lm8K K29iai0kKENPTkZJR19MSVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5vCiBvYmoteSArPSBwcm9jLXY3 Lm8gcHJvYy1jYXh4Lm8KIG9iai15ICs9IHNtcGJvb3Qubwogb2JqLXkgKz0gdHJhcHMubwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTMyL2xpdmVwYXRjaC5jIGIveGVuL2FyY2gvYXJtL2Fy bTMyL2xpdmVwYXRjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjk2 NDYKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvbGl2ZXBhdGNoLmMKQEAg LTAsMCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBp dHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaW5jbHVkZSA8eGVu L2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2hf ZWxmLmg+CisjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaC5oPgorCit2b2lkIGFyY2hfbGl2ZXBhdGNo X2FwcGx5KHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKK3sKK30KKwordm9pZCBhcmNoX2xp dmVwYXRjaF9yZXZlcnQoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQoreworfQor CitpbnQgYXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Vs ZiAqZWxmKQoreworICAgIHJldHVybiAtRU9QTk9UU1VQUDsKK30KKworaW50IGFyY2hfbGl2ZXBh dGNoX3BlcmZvcm1fcmVsYShzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKmJhc2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZWxmX3NlYyAqcmVsYSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworLyoKKyAqIExvY2Fs IHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFz aWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAor ICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUgYi94 ZW4vYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUKaW5kZXggYzFmYTQzZi4uMTQ5YjZiMyAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9hcm02 NC9NYWtlZmlsZQpAQCAtNiw2ICs2LDcgQEAgb2JqLXkgKz0gZG9tY3RsLm8KIG9iai15ICs9IGRv bWFpbi5vCiBvYmoteSArPSBlbnRyeS5vCiBvYmoteSArPSBpbnNuLm8KK29iai0kKENPTkZJR19M SVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5vCiBvYmoteSArPSBzbXBib290Lm8KIG9iai15ICs9IHRy YXBzLm8KIG9iai15ICs9IHZmcC5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2 ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uN2NiMTgxMgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNo L2FybS9hcm02NC9saXZlcGF0Y2guYwpAQCAtMCwwICsxLDQ4OCBAQAorLyoKKyAqICBDb3B5cmln aHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqLworCisjaW5jbHVkZSA8eGVuL2JpdG9wcy5oPgorI2luY2x1ZGUgPHhlbi9lcnJu by5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoX2VsZi5o PgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNs dWRlIDx4ZW4vdm1hcC5oPgorCisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorI2luY2x1ZGUgPGFz bS9ieXRlb3JkZXIuaD4KKyNpbmNsdWRlIDxhc20vaW5zbi5oPgorI2luY2x1ZGUgPGFzbS9saXZl cGF0Y2guaD4KKwordm9pZCBhcmNoX2xpdmVwYXRjaF9hcHBseShzdHJ1Y3QgbGl2ZXBhdGNoX2Z1 bmMgKmZ1bmMpCit7CisgICAgdWludDMyX3QgaW5zbjsKKyAgICB1aW50MzJfdCAqbmV3X3B0cjsK KyAgICB1bnNpZ25lZCBpbnQgaSwgbGVuOworCisgICAgQlVJTERfQlVHX09OKEFSQ0hfUEFUQ0hf SU5TTl9TSVpFID4gc2l6ZW9mKGZ1bmMtPm9wYXF1ZSkpOworICAgIEJVSUxEX0JVR19PTihBUkNI X1BBVENIX0lOU05fU0laRSAhPSBzaXplb2YoaW5zbikpOworCisgICAgQVNTRVJUKHZtYXBfb2Zf eGVuX3RleHQpOworCisgICAgbGVuID0gbGl2ZXBhdGNoX2luc25fbGVuKGZ1bmMpOworICAgIGlm ICggIWxlbiApCisgICAgICAgIHJldHVybjsKKworICAgIC8qIFNhdmUgb2xkIG9uZXMuICovCisg ICAgbWVtY3B5KGZ1bmMtPm9wYXF1ZSwgZnVuYy0+b2xkX2FkZHIsIGxlbik7CisKKyAgICBpZiAo IGZ1bmMtPm5ld19hZGRyICkKKyAgICAgICAgaW5zbiA9IGFhcmNoNjRfaW5zbl9nZW5fYnJhbmNo X2ltbSgodW5zaWduZWQgbG9uZylmdW5jLT5vbGRfYWRkciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylmdW5jLT5uZXdfYWRkciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fQlJB TkNIX05PTElOSyk7CisgICAgZWxzZQorICAgICAgICBpbnNuID0gYWFyY2g2NF9pbnNuX2dlbl9u b3AoKTsKKworICAgIEFTU0VSVChpbnNuICE9IEFBUkNINjRfQlJFQUtfRkFVTFQpOworCisgICAg bmV3X3B0ciA9IGZ1bmMtPm9sZF9hZGRyIC0gKHZvaWQgKilfc3RhcnQgKyB2bWFwX29mX3hlbl90 ZXh0OworICAgIGxlbiA9IGxlbiAvIHNpemVvZih1aW50MzJfdCk7CisKKyAgICAvKiBQQVRDSCEg Ki8KKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkKKyAgICAgICAgKihuZXdfcHRyICsg aSkgPSBpbnNuOworCisgICAgLyoKKyAgICAqIFdoZW4gd2UgdXBsb2FkIHRoZSBwYXlsb2FkLCBp dCB3aWxsIGdvIHRocm91Z2ggdGhlIGRhdGEgY2FjaGUKKyAgICAqICh0aGUgcmVnaW9uIGlzIGNh Y2hlYWJsZSkuIFVudGlsIHRoZSBkYXRhIGNhY2hlIGlzIGNsZWFuZWQsIHRoZSBkYXRhCisgICAg KiBtYXkgbm90IHJlYWNoIHRoZSBtZW1vcnkuIEFuZCBpbiB0aGUgY2FzZSB0aGUgZGF0YSBhbmQg aW5zdHJ1Y3Rpb24gY2FjaGUKKyAgICAqIGFyZSBzZXBhcmF0ZWQsIHdlIG1heSByZWFkIGludmFs aWQgaW5zdHJ1Y3Rpb24gZnJvbSB0aGUgbWVtb3J5IGJlY2F1c2UKKyAgICAqIHRoZSBkYXRhIGNh Y2hlIGhhdmUgbm90IHlldCBzeW5jZWQgd2l0aCB0aGUgbWVtb3J5LiBIZW5jZSBzeW5jIGl0Lgor ICAgICovCisgICAgaWYgKCBmdW5jLT5uZXdfYWRkciApCisgICAgICAgIGNsZWFuX2FuZF9pbnZh bGlkYXRlX2RjYWNoZV92YV9yYW5nZShmdW5jLT5uZXdfYWRkciwgZnVuYy0+bmV3X3NpemUpOwor fQorCit2b2lkIGFyY2hfbGl2ZXBhdGNoX3JldmVydChjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1 bmMgKmZ1bmMpCit7CisgICAgdWludDMyX3QgKm5ld19wdHI7CisgICAgdW5zaWduZWQgaW50IGks IGxlbjsKKworICAgIG5ld19wdHIgPSBmdW5jLT5vbGRfYWRkciAtICh2b2lkICopX3N0YXJ0ICsg dm1hcF9vZl94ZW5fdGV4dDsKKyAgICBsZW4gPSBsaXZlcGF0Y2hfaW5zbl9sZW4oZnVuYykgLyBz aXplb2YodWludDMyX3QpOworICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKQorICAgIHsK KyAgICAgICAgdWludDMyX3QgaW5zbjsKKworICAgICAgICBtZW1jcHkoJmluc24sIGZ1bmMtPm9w YXF1ZSArIChpICogc2l6ZW9mKHVpbnQzMl90KSksIEFSQ0hfUEFUQ0hfSU5TTl9TSVpFKTsKKyAg ICAgICAgLyogUEFUQ0ghICovCisgICAgICAgICoobmV3X3B0ciArIGkpID0gaW5zbjsKKyAgICB9 Cit9CisKK2ludCBhcmNoX2xpdmVwYXRjaF92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCBsaXZlcGF0 Y2hfZWxmICplbGYpCit7CisgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOworCisg ICAgaWYgKCBoZHItPmVfbWFjaGluZSAhPSBFTV9BQVJDSDY0IHx8CisgICAgICAgICBoZHItPmVf aWRlbnRbRUlfQ0xBU1NdICE9IEVMRkNMQVNTNjQgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhY RU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBVbnN1cHBvcnRlZCBFTEYgTWFjaGluZSB0eXBlIVxu IiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVPUE5PVFNV UFA7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2VudW0gYWFyY2g2NF9yZWxvY19vcCB7 CisgICAgUkVMT0NfT1BfTk9ORSwKKyAgICBSRUxPQ19PUF9BQlMsCisgICAgUkVMT0NfT1BfUFJF TCwKKyAgICBSRUxPQ19PUF9QQUdFLAorfTsKKworc3RhdGljIHU2NCBkb19yZWxvYyhlbnVtIGFh cmNoNjRfcmVsb2Nfb3AgcmVsb2Nfb3AsIHZvaWQgKnBsYWNlLCB1NjQgdmFsKQoreworICAgIHN3 aXRjaCAoIHJlbG9jX29wICkKKyAgICB7CisgICAgY2FzZSBSRUxPQ19PUF9BQlM6CisgICAgICAg IHJldHVybiB2YWw7CisKKyAgICBjYXNlIFJFTE9DX09QX1BSRUw6CisgICAgICAgIHJldHVybiB2 YWwgLSAodTY0KXBsYWNlOworCisgICAgY2FzZSBSRUxPQ19PUF9QQUdFOgorICAgICAgICByZXR1 cm4gKHZhbCAmIH4weGZmZikgLSAoKHU2NClwbGFjZSAmIH4weGZmZik7CisKKyAgICBjYXNlIFJF TE9DX09QX05PTkU6CisgICAgICAgIHJldHVybiAwOworCisgICAgfQorCisgICAgZHByaW50ayhY RU5MT0dfREVCVUcsIExJVkVQQVRDSCAiZG9fcmVsb2M6IHVua25vd24gcmVsb2NhdGlvbiBvcGVy YXRpb24gJWRcbiIsIHJlbG9jX29wKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHJlbG9jX2RhdGEoZW51bSBhYXJjaDY0X3JlbG9jX29wIG9wLCB2b2lkICpwbGFjZSwgdTY0IHZh bCwgaW50IGxlbikKK3sKKyAgICBzNjQgc3ZhbCA9IGRvX3JlbG9jKG9wLCBwbGFjZSwgdmFsKTsK KworICAgIHN3aXRjaCAoIGxlbiApCisgICAgeworICAgIGNhc2UgMTY6CisgICAgICAgICooczE2 ICopcGxhY2UgPSBzdmFsOworICAgICAgICBpZiAoIHN2YWwgPCBJTlQxNl9NSU4gfHwgc3ZhbCA+ IFVJTlQxNl9NQVggKQorCSAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSAzMjoKKyAgICAgICAgKihzMzIgKilwbGFjZSA9IHN2YWw7CisgICAgICAg IGlmICggc3ZhbCA8IElOVDMyX01JTiB8fCBzdmFsID4gVUlOVDMyX01BWCApCisJICAgICAgICBy ZXR1cm4gLUVPVkVSRkxPVzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDY0OgorICAgICAg ICAqKHM2NCAqKXBsYWNlID0gc3ZhbDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor ICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBBVENIICJJbnZhbGlkIGxlbmd0aCAo JWQpIGZvciBkYXRhIHJlbG9jYXRpb25cbiIsIGxlbik7CisgICAgICAgIHJldHVybiAwOworICAg IH0KKworICAgIHJldHVybiAwOworfQorCitlbnVtIGFhcmNoNjRfaW5zbl9tb3Z3X2ltbV90eXBl IHsKKyAgICBBQVJDSDY0X0lOU05fSU1NX01PVk5aLAorICAgIEFBUkNINjRfSU5TTl9JTU1fTU9W S1osCit9OworCitzdGF0aWMgaW50IHJlbG9jX2luc25fbW92dyhlbnVtIGFhcmNoNjRfcmVsb2Nf b3Agb3AsIHZvaWQgKmRlc3QsIHU2NCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgbHNiLCBlbnVtIGFhcmNoNjRfaW5zbl9tb3Z3X2ltbV90eXBlIGltbV90eXBlKQoreworICAg IHU2NCBpbW07CisgICAgczY0IHN2YWw7CisgICAgdTMyIGluc24gPSAqKHUzMiAqKWRlc3Q7CisK KyAgICBzdmFsID0gZG9fcmVsb2Mob3AsIGRlc3QsIHZhbCk7CisgICAgaW1tID0gc3ZhbCA+PiBs c2I7CisKKyAgICBpZiAoIGltbV90eXBlID09IEFBUkNINjRfSU5TTl9JTU1fTU9WTlogKQorICAg IHsKKyAgICAgICAgLyoKKyAgICAgICAgICogRm9yIHNpZ25lZCBNT1ZXIHJlbG9jYXRpb25zLCB3 ZSBoYXZlIHRvIG1hbmlwdWxhdGUgdGhlCisgICAgICAgICAqIGluc3RydWN0aW9uIGVuY29kaW5n IGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUKKyAgICAgICAgICogaW1tZWRpYXRlIGlz IGxlc3MgdGhhbiB6ZXJvLgorICAgICAgICAgKi8KKyAgICAgICAgaW5zbiAmPSB+KDMgPDwgMjkp OworICAgICAgICBpZiAoIHN2YWwgPj0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qID49 MDogU2V0IHRoZSBpbnN0cnVjdGlvbiB0byBNT1ZaIChvcGNvZGUgMTBiKS4gKi8KKyAgICAgICAg ICAgIGluc24gfD0gMiA8PCAyOTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK KyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiA8MDogU2V0IHRoZSBpbnN0cnVjdGlvbiB0 byBNT1ZOIChvcGNvZGUgMDBiKS4KKyAgICAgICAgICAgICAqICAgICBTaW5jZSB3ZSd2ZSBtYXNr ZWQgdGhlIG9wY29kZSBhbHJlYWR5LCB3ZQorICAgICAgICAgICAgICogICAgIGRvbid0IG5lZWQg dG8gZG8gYW55dGhpbmcgb3RoZXIgdGhhbgorICAgICAgICAgICAgICogICAgIGludmVydGluZyB0 aGUgbmV3IGltbWVkaWF0ZSBmaWVsZC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaW1t ID0gfmltbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFVwZGF0ZSB0aGUgaW5zdHJ1Y3Rp b24gd2l0aCB0aGUgbmV3IGVuY29kaW5nLiAqLworICAgIGluc24gPSBhYXJjaDY0X2luc25fZW5j b2RlX2ltbWVkaWF0ZShBQVJDSDY0X0lOU05fSU1NXzE2LCBpbnNuLCBpbW0pOworICAgICoodTMy ICopZGVzdCA9IGluc247CisKKyAgICBpZiAoIGltbSA+IFVJTlQxNl9NQVggKQorICAgICAgICBy ZXR1cm4gLUVPVkVSRkxPVzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJlbG9j X2luc25faW1tKGVudW0gYWFyY2g2NF9yZWxvY19vcCBvcCwgdm9pZCAqZGVzdCwgdTY0IHZhbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxzYiwgaW50IGxlbiwgZW51bSBhYXJjaDY0 X2luc25faW1tX3R5cGUgaW1tX3R5cGUpCit7CisgICAgdTY0IGltbSwgaW1tX21hc2s7CisgICAg czY0IHN2YWw7CisgICAgdTMyIGluc24gPSAqKHUzMiAqKWRlc3Q7CisKKyAgICAvKiBDYWxjdWxh dGUgdGhlIHJlbG9jYXRpb24gdmFsdWUuICovCisgICAgc3ZhbCA9IGRvX3JlbG9jKG9wLCBkZXN0 LCB2YWwpOworICAgIHN2YWwgPj49IGxzYjsKKworICAgIC8qIEV4dHJhY3QgdGhlIHZhbHVlIGJp dHMgYW5kIHNoaWZ0IHRoZW0gdG8gYml0IDAuICovCisgICAgaW1tX21hc2sgPSAoQklUKGxzYiAr IGxlbikgLSAxKSA+PiBsc2I7CisgICAgaW1tID0gc3ZhbCAmIGltbV9tYXNrOworCisgICAgLyog VXBkYXRlIHRoZSBpbnN0cnVjdGlvbidzIGltbWVkaWF0ZSBmaWVsZC4gKi8KKyAgICBpbnNuID0g YWFyY2g2NF9pbnNuX2VuY29kZV9pbW1lZGlhdGUoaW1tX3R5cGUsIGluc24sIGltbSk7CisgICAg Kih1MzIgKilkZXN0ID0gaW5zbjsKKworICAgIC8qCisgICAgICogRXh0cmFjdCB0aGUgdXBwZXIg dmFsdWUgYml0cyAoaW5jbHVkaW5nIHRoZSBzaWduIGJpdCkgYW5kCisgICAgICogc2hpZnQgdGhl bSB0byBiaXQgMC4KKyAgICAgKi8KKyAgICBzdmFsID0gKHM2NCkoc3ZhbCAmIH4oaW1tX21hc2sg Pj4gMSkpID4+IChsZW4gLSAxKTsKKworICAgIC8qCisgICAgICogT3ZlcmZsb3cgaGFzIG9jY3Vy cmVkIGlmIHRoZSB1cHBlciBiaXRzIGFyZSBub3QgYWxsIGVxdWFsIHRvCisgICAgICogdGhlIHNp Z24gYml0IG9mIHRoZSB2YWx1ZS4KKyAgICAgKi8KKyAgICBpZiAoICh1NjQpKHN2YWwgKyAxKSA+ PSAyICkKKyAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7CisgICAgcmV0dXJuIDA7Cit9CisKK2lu dCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbGEoc3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9l bGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnJlbGEpCit7CisgICAgY29uc3QgRWxmX1JlbEEgKnI7Cisg ICAgdW5zaWduZWQgaW50IHN5bW5keCwgaTsKKyAgICB1aW50NjRfdCB2YWw7CisgICAgdm9pZCAq ZGVzdDsKKyAgICBib29sX3Qgb3ZlcmZsb3dfY2hlY2s7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8 IChyZWxhLT5zZWMtPnNoX3NpemUgLyByZWxhLT5zZWMtPnNoX2VudHNpemUpOyBpKysgKQorICAg IHsKKyAgICAgICAgaW50IG92ZiA9IDA7CisKKyAgICAgICAgciA9IHJlbGEtPmRhdGEgKyBpICog cmVsYS0+c2VjLT5zaF9lbnRzaXplOworCisgICAgICAgIHN5bW5keCA9IEVMRjY0X1JfU1lNKHIt PnJfaW5mbyk7CisKKyAgICAgICAgaWYgKCBzeW1uZHggPiBlbGYtPm5zeW0gKQorICAgICAgICB7 CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IFJlbGF0aXZl IHJlbG9jYXRpb24gd2FudHMgc3ltYm9sQCV1IHdoaWNoIGlzIHBhc3QgZW5kIVxuIiwKKyAgICAg ICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBzeW1uZHgpOworICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgICAgIH0KKworICAgICAgICBkZXN0ID0gYmFzZS0+bG9hZF9hZGRyICsgci0+ cl9vZmZzZXQ7IC8qIFAgKi8KKyAgICAgICAgdmFsID0gZWxmLT5zeW1bc3ltbmR4XS5zeW0tPnN0 X3ZhbHVlICsgIHItPnJfYWRkZW5kOyAvKiBTK0EgKi8KKworICAgICAgICBvdmVyZmxvd19jaGVj ayA9IHRydWU7CisKKyAgICAgICAgLyogQVJNNjQgb3BlcmF0aW9ucyBhdCBtaW5pbXVtIGFyZSBh bHdheXMgMzItYml0LiAqLworICAgICAgICBpZiAoIHItPnJfb2Zmc2V0ID49IGJhc2UtPnNlYy0+ c2hfc2l6ZSB8fAorICAgICAgICAgICAgKHItPnJfb2Zmc2V0ICsgc2l6ZW9mKHVpbnQzMl90KSkg PiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAgZ290byBiYWRfb2Zmc2V0OworCisg ICAgICAgIHN3aXRjaCAoIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pICkKKyAgICAgICAgeworICAg ICAgICAvKiBEYXRhICovCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X0FCUzY0OgorICAgICAgICAg ICAgaWYgKCByLT5yX29mZnNldCArIHNpemVvZih1aW50NjRfdCkgPiBiYXNlLT5zZWMtPnNoX3Np emUgKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX29mZnNldDsKKyAgICAgICAgICAgIG92ZXJm bG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19kYXRhKFJFTE9DX09Q X0FCUywgZGVzdCwgdmFsLCA2NCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl IFJfQUFSQ0g2NF9BQlMzMjoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2RhdGEoUkVMT0NfT1Bf QUJTLCBkZXN0LCB2YWwsIDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug Ul9BQVJDSDY0X0FCUzE2OgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfZGF0YShSRUxPQ19PUF9B QlMsIGRlc3QsIHZhbCwgMTYpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBS X0FBUkNINjRfUFJFTDY0OgorICAgICAgICAgICAgaWYgKCByLT5yX29mZnNldCArIHNpemVvZih1 aW50NjRfdCkgPiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAgICAgIGdvdG8gYmFk X29mZnNldDsKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAg ICBvdmYgPSByZWxvY19kYXRhKFJFTE9DX09QX1BSRUwsIGRlc3QsIHZhbCwgNjQpOworICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfUFJFTDMyOgorICAgICAgICAg ICAgb3ZmID0gcmVsb2NfZGF0YShSRUxPQ19PUF9QUkVMLCBkZXN0LCB2YWwsIDMyKTsKKyAgICAg ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X1BSRUwxNjoKKyAgICAgICAg ICAgIG92ZiA9IHJlbG9jX2RhdGEoUkVMT0NfT1BfUFJFTCwgZGVzdCwgdmFsLCAxNik7CisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAvKiBNT1ZXIGluc3RydWN0aW9uIHJlbG9jYXRpb25z LiAqLworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9NT1ZXX1VBQlNfRzBfTkM6CisgICAgICAgICAg ICBvdmVyZmxvd19jaGVjayA9IGZhbHNlOworICAgICAgICAgICAgLyogRmFsbHRocm91Z2guICov CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19VQUJTX0cwOgorICAgICAgICAgICAgb3Zm ID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX0FCUywgZGVzdCwgdmFsLCAwLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WS1opOworICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19VQUJTX0cxX05DOgor ICAgICAgICAgICAgb3ZlcmZsb3dfY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIC8qIEZhbGx0 aHJvdWdoLiAqLworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldfVUFCU19HMToKKyAgICAg ICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMTYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUFSQ0g2NF9JTlNOX0lNTV9NT1ZL Wik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9NT1ZXX1VB QlNfRzJfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVjayA9IGZhbHNlOworICAgICAgICAg ICAgLyogRmFsbHRocm91Z2guICovCisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19VQUJT X0cyOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX0FCUywgZGVz dCwgdmFsLCAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lO U05fSU1NX01PVktaKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJD SDY0X01PVldfVUFCU19HMzoKKyAgICAgICAgICAgIC8qIFdlJ3JlIHVzaW5nIHRoZSB0b3AgYml0 cyBzbyB3ZSBjYW4ndCBvdmVyZmxvdy4gKi8KKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0g ZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX21vdncoUkVMT0NfT1BfQUJTLCBk ZXN0LCB2YWwsIDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRf SU5TTl9JTU1fTU9WS1opOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FB UkNINjRfTU9WV19TQUJTX0cwOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJF TE9DX09QX0FCUywgZGVzdCwgdmFsLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WTlopOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBSX0FBUkNINjRfTU9WV19TQUJTX0cxOgorICAgICAgICAgICAgb3ZmID0gcmVsb2Nf aW5zbl9tb3Z3KFJFTE9DX09QX0FCUywgZGVzdCwgdmFsLCAxNiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX01PVk5aKTsKKyAgICAgICAgICAgIGJy ZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldfU0FCU19HMjoKKyAgICAgICAgICAg IG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMzIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUFSQ0g2NF9JTlNOX0lNTV9NT1ZOWik7Cisg ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzBf TkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVjayA9IGZhbHNlOworICAgICAgICAgICAgb3Zm ID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX1BSRUwsIGRlc3QsIHZhbCwgMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX01PVktaKTsKKyAgICAg ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldfUFJFTF9HMDoKKyAg ICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxPQ19PUF9QUkVMLCBkZXN0LCB2YWws IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUFSQ0g2NF9JTlNOX0lNTV9N T1ZOWik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9NT1ZX X1BSRUxfRzFfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVjayA9IGZhbHNlOworICAgICAg ICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX1BSRUwsIGRlc3QsIHZhbCwgMTYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUFSQ0g2NF9JTlNOX0lNTV9NT1ZL Wik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9NT1ZXX1BS RUxfRzE6CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX21vdncoUkVMT0NfT1BfUFJFTCwg ZGVzdCwgdmFsLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0 X0lOU05fSU1NX01PVk5aKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9B QVJDSDY0X01PVldfUFJFTF9HMl9OQzoKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFs c2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX21vdncoUkVMT0NfT1BfUFJFTCwgZGVz dCwgdmFsLCAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lO U05fSU1NX01PVktaKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJD SDY0X01PVldfUFJFTF9HMjoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxP Q19PUF9QUkVMLCBkZXN0LCB2YWwsIDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WTlopOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBSX0FBUkNINjRfTU9WV19QUkVMX0czOgorICAgICAgICAgICAgLyogV2UncmUgdXNp bmcgdGhlIHRvcCBiaXRzIHNvIHdlIGNhbid0IG92ZXJmbG93LiAqLworICAgICAgICAgICAgb3Zl cmZsb3dfY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhS RUxPQ19PUF9QUkVMLCBkZXN0LCB2YWwsIDQ4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WTlopOworICAgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgLyogSW5zdHJ1Y3Rpb25zLiAqLworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9BRFJfUFJF TF9MTzIxOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9pbW0oUkVMT0NfT1BfUFJFTCwg ZGVzdCwgdmFsLCAwLCAyMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNI NjRfSU5TTl9JTU1fQURSKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9B QVJDSDY0X0FEUl9QUkVMX1BHX0hJMjFfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVjayA9 IGZhbHNlOworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9BRFJfUFJFTF9QR19ISTIxOgorICAgICAg ICAgICAgb3ZmID0gcmVsb2NfaW5zbl9pbW0oUkVMT0NfT1BfUEFHRSwgZGVzdCwgdmFsLCAxMiwg MjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX0FE Uik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9MRFNUOF9B QlNfTE8xMl9OQzoKKyAgICAgICAgICAgIC8qIEZhbGx0aHJvdWdoLiAqLworCisgICAgICAgIGNh c2UgUl9BQVJDSDY0X0FERF9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNr ID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9BQlMs IGRlc3QsIHZhbCwgMCwgMTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJD SDY0X0lOU05fSU1NXzEyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9B QVJDSDY0X0xEU1QxNl9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0g ZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9BQlMsIGRl c3QsIHZhbCwgMSwgMTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0 X0lOU05fSU1NXzEyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJD SDY0X0xEU1QzMl9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFs c2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9BQlMsIGRlc3Qs IHZhbCwgMiwgMTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lO U05fSU1NXzEyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0 X0xEU1Q2NF9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7 CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9BQlMsIGRlc3QsIHZh bCwgMywgOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9J TU1fMTIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTERT VDEyOF9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7Cisg ICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwg NCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1f MTIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfVFNUQlIx NDoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25faW1tKFJFTE9DX09QX1BSRUwsIGRlc3Qs IHZhbCwgMiwgMTksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lO U05fSU1NXzE0KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0 X0NPTkRCUjE5OgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9pbW0oUkVMT0NfT1BfUFJF TCwgZGVzdCwgdmFsLCAyLCAxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFB UkNINjRfSU5TTl9JTU1fMTkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBS X0FBUkNINjRfSlVNUDI2OgorICAgICAgICBjYXNlIFJfQUFSQ0g2NF9DQUxMMjY6CisgICAgICAg ICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9QUkVMLCBkZXN0LCB2YWwsIDIsIDI2 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUFSQ0g2NF9JTlNOX0lNTV8yNik7 CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZHBy aW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBVbmhhbmRsZWQgcmVsb2NhdGlvbiAlbHVc biIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgRUxGNjRfUl9UWVBFKHItPnJfaW5m bykpOworICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworICAgICAgICB9CisKKyAgICAg ICAgaWYgKCBvdmVyZmxvd19jaGVjayAmJiBvdmYgPT0gLUVPVkVSRkxPVyApCisgICAgICAgIHsK KyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogT3ZlcmZsb3cg aW4gcmVsb2NhdGlvbiAldSBpbiAlcyBmb3IgJXMhXG4iLAorICAgICAgICAgICAgICAgICAgICBl bGYtPm5hbWUsIGksIHJlbGEtPm5hbWUsIGJhc2UtPm5hbWUpOworICAgICAgICAgICAgcmV0dXJu IG92ZjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKKworIGJhZF9vZmZzZXQ6Cisg ICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBSZWxhdGl2ZSByZWxvY2F0aW9u IG9mZnNldCBpcyBwYXN0ICVzIHNlY3Rpb24hXG4iLAorICAgICAgICAgICAgZWxmLT5uYW1lLCBi YXNlLT5uYW1lKTsKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworLyoKKyAqIExvY2FsIHZhcmlh YmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zm c2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5k OgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMgYi94ZW4vYXJjaC9hcm0v ZG9tYWluLmMKaW5kZXggMjBiYjJiYS4uNjA3ZWU1OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwpAQCAtMTMsNiArMTMsNyBAQAog I2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1 ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAjaW5jbHVkZSA8eGVu L3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vd2FpdC5o PgpAQCAtNTUsNiArNTYsMTEgQEAgdm9pZCBpZGxlX2xvb3Aodm9pZCkKIAogICAgICAgICBkb190 YXNrbGV0KCk7CiAgICAgICAgIGRvX3NvZnRpcnEoKTsKKyAgICAgICAgLyoKKyAgICAgICAgICog V2UgTVVTVCBiZSBsYXN0IChvciBiZWZvcmUgZHNiLCB3ZmkpLiBPdGhlcndpc2UgYWZ0ZXIgd2Ug Z2V0IHRoZQorICAgICAgICAgKiBzb2Z0aXJxIHdlIHdvdWxkIGV4ZWN1dGUgZHNiLHdmaSAoYW5k IHNsZWVwKSBhbmQgbm90IHBhdGNoLgorICAgICAgICAgKi8KKyAgICAgICAgY2hlY2tfZm9yX2xp dmVwYXRjaF93b3JrKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbGl2 ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMKaW5kZXggN2YwNjdhMC4uOTI4NDc2 NiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jCisrKyBiL3hlbi9hcmNoL2Fy bS9saXZlcGF0Y2guYwpAQCAtNiw0NCArNiw4MiBAQAogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNp bmNsdWRlIDx4ZW4vbGl2ZXBhdGNoX2VsZi5oPgogI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4K KyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorCisjaW5jbHVkZSA8YXNtL2xpdmVwYXRjaC5oPgorI2lu Y2x1ZGUgPGFzbS9tbS5oPgorCit2b2lkICp2bWFwX29mX3hlbl90ZXh0OwogCiBpbnQgYXJjaF9s aXZlcGF0Y2hfcXVpZXNjZSh2b2lkKQogewotICAgIHJldHVybiAtRU5PU1lTOworICAgIG1mbl90 IHRleHRfbWZuOworICAgIHVuc2lnbmVkIGludCB0ZXh0X29yZGVyOworCisgICAgaWYgKCB2bWFw X29mX3hlbl90ZXh0ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICB0ZXh0X21mbiA9 IF9tZm4odmlydF90b19tZm4oX3N0YXJ0KSk7CisgICAgdGV4dF9vcmRlciA9IGdldF9vcmRlcl9m cm9tX2J5dGVzKF9lbmQgLSBfc3RhcnQpOworCisgICAgLyoKKyAgICAgKiBUaGUgdGV4dCBzZWN0 aW9uIGlzIHJlYWQtb25seS4gU28gcmUtbWFwIFhlbiB0byBiZSBhYmxlIHRvIHBhdGNoCisgICAg ICogdGhlIGNvZGUuCisgICAgICovCisgICAgdm1hcF9vZl94ZW5fdGV4dCA9IF9fdm1hcCgmdGV4 dF9tZm4sIDFVIDw8IHRleHRfb3JkZXIsIDEsIDEsIFBBR0VfSFlQRVJWSVNPUiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZNQVBfREVGQVVMVCk7CisKKyAgICBpZiAoICF2bWFwX29m X3hlbl90ZXh0ICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIExJVkVQQVRDSCAi RmFpbGVkIHRvIHNldHVwIHZtYXAgb2YgaHlwZXJ2aXNvciEgKG9yZGVyPSV1KVxuIiwKKyAgICAg ICAgICAgICAgIHRleHRfb3JkZXIpOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisK KyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBhcmNoX2xpdmVwYXRjaF9yZXZpdmUodm9pZCkKIHsK KyAgICAvKgorICAgICAqIE51a2UgdGhlIGluc3RydWN0aW9uIGNhY2hlLiBEYXRhIGNhY2hlIGhh cyBiZWVuIGNsZWFuZWQgYmVmb3JlIGluCisgICAgICogYXJjaF9saXZlcGF0Y2hfYXBwbHkuCisg ICAgICovCisgICAgaW52YWxpZGF0ZV9pY2FjaGUoKTsKKworICAgIGlmICggdm1hcF9vZl94ZW5f dGV4dCApCisgICAgICAgIHZ1bm1hcCh2bWFwX29mX3hlbl90ZXh0KTsKKworICAgIHZtYXBfb2Zf eGVuX3RleHQgPSBOVUxMOwogfQogCiBpbnQgYXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2Z1bmMoY29u c3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQogewotICAgIHJldHVybiAtRU5PU1lTOwot fQorICAgIC8qIElmIE5PUGluZyBvbmx5IGRvIHVwIHRvIG1heGltdW0gYW1vdW50IHdlIGNhbiBw dXQgaW4gdGhlIC0+b3BhcXVlLiAqLworICAgIGlmICggIWZ1bmMtPm5ld19hZGRyICYmIGZ1bmMt Pm5ld19zaXplID4gc2l6ZW9mKGZ1bmMtPm9wYXF1ZSkgJiYKKyAgICAgICAgIGZ1bmMtPm5ld19z aXplICUgQVJDSF9QQVRDSF9JTlNOX1NJWkUgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7 CiAKLXZvaWQgYXJjaF9saXZlcGF0Y2hfYXBwbHkoc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5j KQotewotfQorICAgIGlmICggZnVuYy0+b2xkX3NpemUgPCBBUkNIX1BBVENIX0lOU05fU0laRSAp CisgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi12b2lkIGFyY2hfbGl2ZXBhdGNoX3JldmVydChj b25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCi17CisgICAgcmV0dXJuIDA7CiB9CiAK IHZvaWQgYXJjaF9saXZlcGF0Y2hfcG9zdF9hY3Rpb24odm9pZCkKIHsKKyAgICAvKiBhcmNoX2xp dmVwYXRjaF9yZXZpdmUgaGFzIG51a2VkIHRoZSBpbnN0cnVjdGlvbiBjYWNoZS4gKi8KIH0KIAog dm9pZCBhcmNoX2xpdmVwYXRjaF9tYXNrKHZvaWQpCiB7CisgICAgLyogTWFzayBTeXN0ZW0gRXJy b3IgKFNFcnJvcikgKi8KKyAgICBsb2NhbF9hYm9ydF9kaXNhYmxlKCk7CiB9CiAKIHZvaWQgYXJj aF9saXZlcGF0Y2hfdW5tYXNrKHZvaWQpCiB7Ci19Ci0KLWludCBhcmNoX2xpdmVwYXRjaF92ZXJp ZnlfZWxmKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYpCi17Ci0gICAgcmV0dXJuIC1F Tk9TWVM7CisgICAgbG9jYWxfYWJvcnRfZW5hYmxlKCk7CiB9CiAKIGludCBhcmNoX2xpdmVwYXRj aF9wZXJmb3JtX3JlbChzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxmLApAQCAtNTMsMjAgKzkxLDQz IEBAIGludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbChzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAq ZWxmLAogICAgIHJldHVybiAtRU5PU1lTOwogfQogCi1pbnQgYXJjaF9saXZlcGF0Y2hfcGVyZm9y bV9yZWxhKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmX3NlYyAqYmFzZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpy ZWxhKQotewotICAgIHJldHVybiAtRU5PU1lTOwotfQotCiBpbnQgYXJjaF9saXZlcGF0Y2hfc2Vj dXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVudW0gdmFfdHlwZSB0eXBl KQogewotICAgIHJldHVybiAtRU5PU1lTOworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQgPSAodW5z aWduZWQgbG9uZyl2YTsKKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3MgPSAwOworCisgICAgQVNTRVJU KHZhKTsKKyAgICBBU1NFUlQocGFnZXMpOworCisgICAgc3dpdGNoICggdHlwZSApCisgICAgewor ICAgIGNhc2UgTElWRVBBVENIX1ZBX1JYOgorICAgICAgICBmbGFncyA9IFBURV9STzsgLyogUiBz ZXQsIE5YIGNsZWFyICovCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMSVZFUEFUQ0hfVkFf Ulc6CisgICAgICAgIGZsYWdzID0gUFRFX05YOyAvKiBSIGNsZWFyLCBOWCBzZXQgKi8KKyAgICAg ICAgYnJlYWs7CisKKyAgICBjYXNlIExJVkVQQVRDSF9WQV9STzoKKyAgICAgICAgZmxhZ3MgPSBQ VEVfTlggfCBQVEVfUk87IC8qIFIgc2V0LCBOWCBzZXQgKi8KKyAgICAgICAgYnJlYWs7CisKKyAg ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICByZXR1cm4g bW9kaWZ5X3hlbl9tYXBwaW5ncyhzdGFydCwgc3RhcnQgKyBwYWdlcyAqIFBBR0VfU0laRSwgZmxh Z3MpOwogfQogCiB2b2lkIF9faW5pdCBhcmNoX2xpdmVwYXRjaF9pbml0KHZvaWQpCiB7CisgICAg dm9pZCAqc3RhcnQsICplbmQ7CisKKyAgICBzdGFydCA9ICh2b2lkICopTElWRVBBVENIX1ZNQVBf U1RBUlQ7CisgICAgZW5kID0gKHZvaWQgKilMSVZFUEFUQ0hfVk1BUF9FTkQ7CisKKyAgICB2bV9p bml0X3R5cGUoVk1BUF9YRU4sIHN0YXJ0LCBlbmQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwppbmRleCAzOWEwNWZkLi5j ZDZjMjIyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdHJhcHMuYworKysgYi94ZW4vYXJjaC9h cm0vdHJhcHMuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+CiAj aW5jbHVkZSA8eGVuL2lycS5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4v bGl2ZXBhdGNoLmg+CiAjaW5jbHVkZSA8eGVuL21tLmg+CiAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+ CiAjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgpAQCAtMjY4OSw2ICsyNjkwLDExIEBAIGFzbWxp bmthZ2Ugdm9pZCBsZWF2ZV9oeXBlcnZpc29yX3RhaWwodm9pZCkKICAgICAgICAgfQogICAgICAg ICBsb2NhbF9pcnFfZW5hYmxlKCk7CiAgICAgICAgIGRvX3NvZnRpcnEoKTsKKyAgICAgICAgLyoK KyAgICAgICAgICogTXVzdCBiZSB0aGUgbGFzdCBvbmUgLSBhcyB0aGUgSVBJIHdpbGwgdHJpZ2dl ciB1cyB0byBjb21lIGhlcmUKKyAgICAgICAgICogYW5kIHdlIHdhbnQgdG8gcGF0Y2ggdGhlIGh5 cGVydmlzb3Igd2l0aCBhbG1vc3Qgbm8gc3RhY2suCisgICAgICAgICAqLworICAgICAgICBjaGVj a19mb3JfbGl2ZXBhdGNoX3dvcmsoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vS2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZpZwppbmRleCA4MWUwMDE3Li4wZjI2MDI3IDEw MDY0NAotLS0gYS94ZW4vY29tbW9uL0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBA IC0yMTcsNyArMjE3LDcgQEAgY29uZmlnIENSWVBUTwogY29uZmlnIExJVkVQQVRDSAogCWJvb2wg IkxpdmUgcGF0Y2hpbmcgc3VwcG9ydCAoVEVDSCBQUkVWSUVXKSIKIAlkZWZhdWx0IG4KLQlkZXBl bmRzIG9uIFg4NiAmJiBIQVNfQlVJTERfSUQgPSAieSIKKwlkZXBlbmRzIG9uICFBUk1fMzIgJiYg SEFTX0JVSUxEX0lEID0gInkiCiAJLS0taGVscC0tLQogCSAgQWxsb3dzIGEgcnVubmluZyBYZW4g aHlwZXJ2aXNvciB0byBiZSBkeW5hbWljYWxseSBwYXRjaGVkIHVzaW5nCiAJICBiaW5hcnkgcGF0 Y2hlcyB3aXRob3V0IHJlYm9vdGluZy4gVGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byBiaW5hcmls eQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaCBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vY29uZmlnLmgKaW5kZXggNjc3MjU1NS4uYmE2MWY2NSAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS9jb25maWcuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2NvbmZp Zy5oCkBAIC04MCw2ICs4MCw3IEBACiAgKiAgIDRNIC0gICA2TSAgIEZpeG1hcDogc3BlY2lhbC1w dXJwb3NlIDRLIG1hcHBpbmcgc2xvdHMKICAqICAgNk0gLSAgIDhNICAgRWFybHkgYm9vdCBtYXBw aW5nIG9mIEZEVAogICogICA4TSAtICAxME0gICBFYXJseSByZWxvY2F0aW9uIGFkZHJlc3MgKHVz ZWQgd2hlbiByZWxvY2F0aW5nIFhlbikKKyAqICAgICAgICAgICAgICAgYW5kIGxhdGVyIGZvciBs aXZlcGF0Y2ggdm1hcCAoaWYgY29tcGlsZWQgaW4pCiAgKgogICogQVJNMzIgbGF5b3V0OgogICog ICAwICAtICAxME0gICA8Q09NTU9OPgpAQCAtMTEzLDYgKzExNCwxMCBAQAogI2RlZmluZSBGSVhN QVBfQUREUihuKSAgICAgICAgKF9BVCh2YWRkcl90LDB4MDA0MDAwMDApICsgKG4pICogUEFHRV9T SVpFKQogI2RlZmluZSBCT09UX0ZEVF9WSVJUX1NUQVJUICAgIF9BVCh2YWRkcl90LDB4MDA2MDAw MDApCiAjZGVmaW5lIEJPT1RfUkVMT0NfVklSVF9TVEFSVCAgX0FUKHZhZGRyX3QsMHgwMDgwMDAw MCkKKyNpZmRlZiBDT05GSUdfTElWRVBBVENICisjZGVmaW5lIExJVkVQQVRDSF9WTUFQX1NUQVJU ICAgX0FUKHZhZGRyX3QsMHgwMDgwMDAwMCkKKyNkZWZpbmUgTElWRVBBVENIX1ZNQVBfRU5EICAg ICAoTElWRVBBVENIX1ZNQVBfU1RBUlQgKyBNQigyKSkKKyNlbmRpZgogCiAjZGVmaW5lIEhZUEVS VklTT1JfVklSVF9TVEFSVCAgWEVOX1ZJUlRfU1RBUlQKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9saXZlcGF0Y2guaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbGl2ZXBhdGNoLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5YzdkOQotLS0gL2Rldi9udWxs CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbGl2ZXBhdGNoLmgKQEAgLTAsMCArMSwyOCBAQAor LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaWZuZGVmIF9fWEVOX0FSTV9MSVZFUEFU Q0hfSF9fCisjZGVmaW5lIF9fWEVOX0FSTV9MSVZFUEFUQ0hfSF9fCisKKy8qIE9uIEFSTTMyLDY0 IGluc3RydWN0aW9ucyBhcmUgYWx3YXlzIDQgYnl0ZXMgbG9uZy4gKi8KKyNkZWZpbmUgQVJDSF9Q QVRDSF9JTlNOX1NJWkUgNAorCisvKgorICogVGhlIHZhIG9mIHRoZSBoeXBlcnZpc29yIC50ZXh0 IHJlZ2lvbi4gV2UgbmVlZCB0aGlzIGFzIHRoZQorICogbm9ybWFsIHZhIGFyZSB3cml0ZSBwcm90 ZWN0ZWQuCisgKi8KK2V4dGVybiB2b2lkICp2bWFwX29mX3hlbl90ZXh0OworCisjZW5kaWYgLyog X19YRU5fQVJNX0xJVkVQQVRDSF9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAq IG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cisg KiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIGIveGVuL2luY2x1ZGUveGVu L2VsZnN0cnVjdHMuaAppbmRleCA1ZjIwODJlLi43MzI5OTg3IDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS94ZW4vZWxmc3RydWN0cy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgK QEAgLTE3Nyw2ICsxNzcsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVmaW5lIEVNX0lBXzY0CTUw CQkvKiBJbnRlbCBNZXJjZWQgKi8KICNkZWZpbmUgRU1fWDg2XzY0CTYyCQkvKiBBTUQgeDg2LTY0 IGFyY2hpdGVjdHVyZSAqLwogI2RlZmluZSBFTV9WQVgJCTc1CQkvKiBERUMgVkFYICovCisjZGVm aW5lIEVNX0FBUkNINjQJMTgzCQkvKiBBUk0gNjQtYml0ICovCiAKIC8qIFZlcnNpb24gKi8KICNk ZWZpbmUgRVZfTk9ORQkJMAkJLyogSW52YWxpZCAqLwpAQCAtMzUzLDEyICszNTQsNjYgQEAgdHlw ZWRlZiBzdHJ1Y3QgewogI2RlZmluZQlFTEY2NF9SX1RZUEUoaW5mbykJKChpbmZvKSAmIDB4RkZG RkZGRkYpCiAjZGVmaW5lIEVMRjY0X1JfSU5GTyhzLHQpIAkoKChzKSA8PCAzMikgKyAodV9pbnQz Ml90KSh0KSkKIAotLyogeDg2LTY0IHJlbG9jYXRpb24gdHlwZXMuIFdlIGxpc3Qgb25seSB0aGUg b25lcyBMaXZlIFBhdGNoIGltcGxlbWVudHMuICovCisvKgorICogUmVsb2NhdGlvbiB0eXBlcyBm b3IgeDg2XzY0IGFuZCBBUk0gNjQuIFdlIGxpc3Qgb25seSB0aGUgb25lcyBMaXZlIFBhdGNoCisg KiBpbXBsZW1lbnRzLgorICovCiAjZGVmaW5lIFJfWDg2XzY0X05PTkUJCTAJLyogTm8gcmVsb2Mg Ki8KICNkZWZpbmUgUl9YODZfNjRfNjQJICAgIAkxCS8qIERpcmVjdCA2NCBiaXQgICovCiAjZGVm aW5lIFJfWDg2XzY0X1BDMzIJCTIJLyogUEMgcmVsYXRpdmUgMzIgYml0IHNpZ25lZCAqLwogI2Rl ZmluZSBSX1g4Nl82NF9QTFQzMgkJNAkvKiAzMiBiaXQgUExUIGFkZHJlc3MgKi8KIAorLyoKKyAq IFMgLSBhZGRyZXNzIG9mIHN5bWJvbC4KKyAqIEEgLSBhZGRlbmQgZm9yIHJlbG9jYXRpb24gKHJf YWRkZW5kKQorICogUCAtIGFkZHJlc3Mgb2YgdGhlIGRlc3QgYmVpbmcgcmVsb2NhdGVkIChkZXJp ZXZlZCBmcm9tIHJfb2Zmc2V0KQorICogTkMgLSAgTm8gY2hlY2sgZm9yIG92ZXJmbG93LgorICoK KyAqIFRoZSBkZWZpbmVzIGFsc28gdXNlIF9QUkVMIGZvciBQQy1yZWxhdGl2ZSBhZGRyZXNzLCBh bmQgX05DIGlzIE5vIENoZWNrLgorICovCisjZGVmaW5lIFJfQUFSQ0g2NF9BQlM2NAkJCTI1NyAv KiBEaXJlY3QgNjQgYml0LiBTK0EsIE5DKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0FCUzMyCQkJMjU4 IC8qIERpcmVjdCAzMiBiaXQuIFMrQSAqLworI2RlZmluZSBSX0FBUkNINjRfQUJTMTYJCQkyNTkg LyogRGlyZWN0IDE2IGJpdCwgUytBICovCisjZGVmaW5lIFJfQUFSQ0g2NF9QUkVMNjQJCTI2MCAv KiBTK0EtUCwgTkMgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X1BSRUwzMgkJMjYxIC8qIFMrQS1QICov CisjZGVmaW5lIFJfQUFSQ0g2NF9QUkVMMTYJCTI2MiAvKiBTK0EtUCAqLworCisvKiBJbnN0cnVj dGlvbnMuICovCisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1VBQlNfRzAJCTI2MworI2RlZmluZSBS X0FBUkNINjRfTU9WV19VQUJTX0cwX05DCTI2NAorI2RlZmluZSBSX0FBUkNINjRfTU9WV19VQUJT X0cxCQkyNjUKKyNkZWZpbmUgUl9BQVJDSDY0X01PVldfVUFCU19HMV9OQwkyNjYKKyNkZWZpbmUg Ul9BQVJDSDY0X01PVldfVUFCU19HMgkJMjY3CisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1VBQlNf RzJfTkMJMjY4CisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1VBQlNfRzMJCTI2OQorCisjZGVmaW5l IFJfQUFSQ0g2NF9NT1ZXX1NBQlNfRzAJCTI3MAorI2RlZmluZSBSX0FBUkNINjRfTU9WV19TQUJT X0cxCQkyNzEKKyNkZWZpbmUgUl9BQVJDSDY0X01PVldfU0FCU19HMgkJMjcyCisKKyNkZWZpbmUg Ul9BQVJDSDY0X0FEUl9QUkVMX0xPMjEJCTI3NCAvKiBBRFIgaW1tLCBbMjA6MF0uIFMrQS1QICov CisjZGVmaW5lIFJfQUFSQ0g2NF9BRFJfUFJFTF9QR19ISTIxCTI3NSAvKiBBRFJQIGltbSwgWzMy OjEyXS4gUGFnZShTK0EpIC0gUGFnZShQKS4qLworI2RlZmluZSBSX0FBUkNINjRfQURSX1BSRUxf UEdfSEkyMV9OQwkyNzYKKyNkZWZpbmUgUl9BQVJDSDY0X0FERF9BQlNfTE8xMl9OQwkyNzcgLyog QUREIGltbS4gWzExOjBdLiBTK0EsIE5DICovCisKKyNkZWZpbmUgUl9BQVJDSDY0X1RTVEJSMTQJ CTI3OQorI2RlZmluZSBSX0FBUkNINjRfQ09OREJSMTkJCTI4MCAvKiBCaXRzIDIwOjIsIFMrQS1Q ICovCisjZGVmaW5lIFJfQUFSQ0g2NF9KVU1QMjYJCTI4MiAvKiBCaXRzIDI3OjIsIFMrQS1QICov CisjZGVmaW5lIFJfQUFSQ0g2NF9DQUxMMjYJCTI4MyAvKiBCaXRzIDI3OjIsIFMrQS1QICovCisj ZGVmaW5lIFJfQUFSQ0g2NF9MRFNUMTZfQUJTX0xPMTJfTkMJMjg0IC8qIExEL1NUIHRvIGJpdHMg MTE6MSwgUytBLCBOQyAqLworI2RlZmluZSBSX0FBUkNINjRfTERTVDMyX0FCU19MTzEyX05DCTI4 NSAvKiBMRC9TVCB0byBiaXRzIDExOjIsIFMrQSwgTkMgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0xE U1Q2NF9BQlNfTE8xMl9OQwkyODYgLyogTEQvU1QgdG8gYml0cyAxMTozLCBTK0EsIE5DICovCisj ZGVmaW5lIFJfQUFSQ0g2NF9MRFNUOF9BQlNfTE8xMl9OQwkyNzggLyogTEQvU1QgdG8gYml0cyAx MTowLCBTK0EsIE5DICovCisjZGVmaW5lIFJfQUFSQ0g2NF9MRFNUMTI4X0FCU19MTzEyX05DCTI5 OQorCisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzAJCTI4NworI2RlZmluZSBSX0FBUkNI NjRfTU9WV19QUkVMX0cwX05DCTI4OAorI2RlZmluZSBSX0FBUkNINjRfTU9WV19QUkVMX0cxCQky ODkKKyNkZWZpbmUgUl9BQVJDSDY0X01PVldfUFJFTF9HMV9OQwkyOTAKKyNkZWZpbmUgUl9BQVJD SDY0X01PVldfUFJFTF9HMgkJMjkxCisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzJfTkMJ MjkyCisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzMJCTI5MworCiAvKiBQcm9ncmFtIEhl YWRlciAqLwogdHlwZWRlZiBzdHJ1Y3QgewogCUVsZjMyX1dvcmQJcF90eXBlOwkJLyogc2VnbWVu dCB0eXBlICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdHlwZXMuaCBiL3hlbi9pbmNs dWRlL3hlbi90eXBlcy5oCmluZGV4IDdiZGM4M2IuLmM3OWMzNTMgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3hlbi90eXBlcy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi90eXBlcy5oCkBAIC0xNCw2 ICsxNCwxNSBAQAogI2RlZmluZSBOVUxMICgodm9pZCopMCkKICNlbmRpZgogCisjZGVmaW5lIElO VDE2X01JTiAgICAgICAoLTMyNzY3LTEpCisjZGVmaW5lIElOVDMyX01JTiAgICAgICAoLTIxNDc0 ODM2NDctMSkKKworI2RlZmluZSBJTlQxNl9NQVggICAgICAgKDMyNzY3KQorI2RlZmluZSBJTlQz Ml9NQVggICAgICAgKDIxNDc0ODM2NDcpCisKKyNkZWZpbmUgVUlOVDE2X01BWCAgICAgICg2NTUz NSkKKyNkZWZpbmUgVUlOVDMyX01BWCAgICAgICg0Mjk0OTY3Mjk1VSkKKwogI2RlZmluZSBJTlRf TUFYICAgICAgICAgKChpbnQpKH4wVT4+MSkpCiAjZGVmaW5lIElOVF9NSU4gICAgICAgICAoLUlO VF9NQVggLSAxKQogI2RlZmluZSBVSU5UX01BWCAgICAgICAgKH4wVSkKLS0gCjIuNC4xMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=