From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: [aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993). Date: Sat, 27 Jun 2026 23:58:35 GMT Message-ID: <178260471579.1.7015006956896943228.rpms-gdb-397c8a592234@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 397c8a592234f888ebadca9b3c5c628cb1540754 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMzk3YzhhNTkyMjM0Zjg4OGViYWRjYTliM2M1 YzYyOGNiMTU0MDc1NApBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxOC0wNS0wNVQxODo1NDoyOCswMjowMApTdGF0cyAgOiArMTI4 NC8tODkgaW4gMyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3Jn L3JwbXMvZ2RiL2MvMzk3YzhhNTkyMjM0Zjg4OGViYWRjYTliM2M1YzYyOGNiMTU0MDc1ND9icmFu Y2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgpbYWFyY2g2NF0gRml4IG1pc3NlZCB1bmFsaWdu ZWQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgoKLS0tCmRpZmYgLS1naXQg YS9nZGItcmhiejEzNDc5OTMtYWFyY2g2NC1ody13YXRjaHBvaW50LnBhdGNoIGIvZ2RiLXJoYnox MzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43NWJkMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxMzQ3OTkz LWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaApAQCAtMCwwICsxLDExODggQEAKK2NvbW1pdCBh M2I2MGU0NTg4NjA2MzU0YjkzNTA4YTAwMDhhNWNhMDRiNjhmYWQ4CitBdXRob3I6IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorRGF0ZTogICBGcmkgTWF5IDQgMjI6 MjI6MDQgMjAxOCArMDIwMAorCisgICAgYWFyY2g2NDogUFIgMTk4MDY6IHdhdGNocG9pbnRzOiBm YWxzZSBuZWdhdGl2ZXMgKyBQUiAyMDIwNyBjb250aWd1b3VzIG9uZXMKKyAgICAKKyAgICBTb21l IHVuYWxpZ25lZCB3YXRjaHBvaW50cyB3ZXJlIGN1cnJlbnRseSBtaXNzZWQuCisgICAgCisgICAg T24gb2xkIGtlcm5lbHMgYXMgc3BlY2lmaWVkIGluCisgICAgICAgICAgICBrZXJuZWwgUkZFOiBh YXJjaDY0OiBwdHJhY2U6IEJBUzogU3VwcG9ydCBhbnkgY29udGlndW91cyByYW5nZSAoZWRpdCkK KyAgICAgICAgICAgIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dp P2lkPTIwMjA3CisgICAgYWZ0ZXIgdGhpcyBwYXRjaCBzb21lIG90aGVyIHVuYWxpZ25lZCB3YXRj aHBvaW50cyB3aWxsIGdldCByZXBvcnRlZCBhcyBmYWxzZQorICAgIHBvc2l0aXZlcy4KKyAgICAK KyAgICBXaXRoIG5ldyBrZXJuZWxzIGFsbCB0aGUgd2F0Y2hwb2ludHMgc2hvdWxkIHdvcmsgZXhh Y3RseS4KKyAgICAKKyAgICBUaGVyZSBtYXkgYmUgYSByZWdyZXNpb24gdGhhdCBpdCBub3cgbGVz cyBtZXJnZXMgd2F0Y2hwb2ludHMgc28gdGhhdCB3aXRoCisgICAgbXVsdGlwbGUgb3ZlcmxhcHBp bmcgd2F0Y2hwb2ludHMgaXQgbWF5IHJ1biBvdXQgb2YgdGhlIDQgaGFyZHdhcmUgd2F0Y2hwb2lu dAorICAgIHJlZ2lzdGVycy4gIEJ1dCBhcyBkaXNjdXNzZWQgaW4gdGhlIG9yaWdpbmFsIHRocmVh ZCBHREIgbmVlZHMgc29tZSBnZW5lcmljCisgICAgd2F0Y2hwb2ludHMgbWVyZ2luZyBmcmFtZXdv cmsgdG8gYmUgdXNlZCBieSBhbGwgdGhlIHRhcmdldCBzcGVjaWZpYyBjb2RlLgorICAgIEV2ZW4g Y3VycmVudCBGU0YgR0RCIGNvZGUgZG9lcyBub3QgbWVyZ2UgaXQgcGVyZmVjdGx5LiAgQWxzbyB3 aXRoIHRoZSBtb3JlCisgICAgcHJlY2lzZSB3YXRjaHBvaW50cyBvbmUgY2FuIHRlY2huaWNhbGx5 IG1lcmdlIHRoZW0gbGVzcy4gIEFuZCBJIGRvIG5vdCB0aGluaworICAgIGl0IG1hdHRlcnMgdG9v IG11Y2ggdG8gaW1wcm92ZSBtZXJnZWFiaWxpdHkgb25seSBmb3Igb2xkIGtlcm5lbHMuCisgICAg U3RpbGwgZXZlbiBvbiBuZXcga2VybmVscyBzb21lIGJldHRlciBtZXJnaW5nIGxvZ2ljIHdvdWxk IG1ha2Ugc2Vuc2UuCisgICAgCisgICAgVGhlcmUgcmVtYWlucyBvbmUgaXNzdWU6CisgICAgICAg ICAgICBrZXJuZWwtNC4xNS4xNC0zMDAuZmMyNy5hcm12N2hsCisgICAgICAgICAgICBGQUlMOiBn ZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCisgICAgICAgICAgICBG QUlMOiBnZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCisgICAgICAg ICAgICAoZ2RiKSBjb250aW51ZQorICAgICAgICAgICAgQ29udGludWluZy4KKyAgICAgICAgICAg IFVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyB3YXRjaHBvaW50OiBJbnZhbGlkIGFyZ3VtZW50Lgor ICAgICAgICAgICAgKGdkYikgRkFJTDogZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhw OiBjb250aW51ZQorICAgIEJ1dCB0aGF0IGxvb2tzIGFzIGEga2VybmVsIGJ1ZyB0byBtZS4KKyAg ICAoMSkgSXQgaXMgbm90IGEgcmVncmVzc2lvbiBieSB0aGlzIHBhdGNoLgorICAgICgyKSBJdCBp cyB1bnJlbGF0ZWQgdG8gdGhpcyBwYXRjaC4KKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nCisgICAg MjAxOC0wNS0wNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgor ICAgICAgICAgICAgICAgIFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAgICAKKyAg ICAgICAgICAgIFBSIGJyZWFrcG9pbnRzLzE5ODA2IGFuZCBzdXBwb3J0IGZvciBQUiBleHRlcm5h bC8yMDIwNy4KKyAgICAgICAgICAgICogTkVXUzogTWVudGlvbiBBYXJjaDY0IHdhdGNocG9pbnQg aW1wcm92ZW1lbnRzLgorICAgICAgICAgICAgKiBhYXJjaDY0LWxpbnV4LW5hdC5jIChhYXJjaDY0 X2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNzKTogRml4IG1pc3NlZAorICAgICAgICAgICAgd2F0 Y2hwb2ludHMgYW5kIFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9pbnRzLgorICAgICAgICAgICAg KiBuYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCisgICAgICAgICAgICAoa2VybmVsX3N1cHBv cnRzX2FueV9jb250aWd1b3VzX3JhbmdlKTogTmV3LgorICAgICAgICAgICAgKGFhcmNoNjRfd2F0 Y2hwb2ludF9vZmZzZXQpOiBOZXcuCisgICAgICAgICAgICAoYWFyY2g2NF93YXRjaHBvaW50X2xl bmd0aCk6IFN1cHBvcnQgUFIgZXh0ZXJuYWwvMjAyMDcgd2F0Y2hwb2ludHMuCisgICAgICAgICAg ICAoYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcpOiBOZXcgcGFyYW1ldGVyIG9mZnNldCwg bmV3IGFzc2VydHMuCisgICAgICAgICAgICAoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkKTogU3Vw cG9ydCBQUiBleHRlcm5hbC8yMDIwNyB3YXRjaHBvaW50cy4KKyAgICAgICAgICAgIChhYXJjaDY0 X2FsaWduX3dhdGNocG9pbnQpOiBOZXcgcGFyYW1ldGVycyBhbGlnbmVkX29mZnNldF9wIGFuZAor ICAgICAgICAgICAgbmV4dF9hZGRyX29yaWdfcC4gIFN1cHBvcnQgUFIgZXh0ZXJuYWwvMjAyMDcg d2F0Y2hwb2ludHMuCisgICAgICAgICAgICAoYWFyY2g2NF9kb3duZ3JhZGVfcmVncyk6IE5ldy4K KyAgICAgICAgICAgIChhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQpOiBOZXcgcGFy YW1ldGVycyBvZmZzZXQgYW5kCisgICAgICAgICAgICBhZGRyX29yaWcuCisgICAgICAgICAgICAo YWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50KTogTGlrZXdpc2UuCisgICAgICAgICAg ICAoYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCk6IFVwZGF0ZSBjYWxsZXIuCisgICAgICAgICAg ICAoYWFyY2g2NF9oYW5kbGVfYWxpZ25lZF93YXRjaHBvaW50KTogTGlrZXdpc2UuCisgICAgICAg ICAgICAoYWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQpOiBTdXBwb3J0IGFkZHJf b3JpZyBhbmQKKyAgICAgICAgICAgIGFsaWduZWRfb2Zmc2V0LgorICAgICAgICAgICAgKGFhcmNo NjRfbGludXhfc2V0X2RlYnVnX3JlZ3MpOiBSZW1vdmUgY29uc3QgZnJvbSBzdGF0ZS4gIENhbGwK KyAgICAgICAgICAgIGFhcmNoNjRfZG93bmdyYWRlX3JlZ3MuCisgICAgICAgICAgICAoYWFyY2g2 NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSk6IFByaW50IGFsc28gZHJfYWRkcl9vcmlnX3dwLgorICAg ICAgICAgICAgKiBuYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oIChEUl9DT05UUk9MX0xFTkdU SCk6IFJlbmFtZSB0byAuLi4KKyAgICAgICAgICAgIChEUl9DT05UUk9MX01BU0spOiAuLi4gdGhp cy4KKyAgICAgICAgICAgIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUpOiBOZXcgZmll bGQgZHJfYWRkcl9vcmlnX3dwLgorICAgICAgICAgICAgKHVuc2lnbmVkIGludCBhYXJjaDY0X3dh dGNocG9pbnRfb2Zmc2V0KTogTmV3IHByb3RvdHlwZS4KKyAgICAgICAgICAgIChhYXJjaDY0X2xp bnV4X3NldF9kZWJ1Z19yZWdzKTogUmVtb3ZlIGNvbnN0IGZyb20gc3RhdGUuCisgICAgICAgICAg ICAqIHV0aWxzLmMgKGFsaWduX3VwLCBhbGlnbl9kb3duKTogTW92ZSB0byAuLi4KKyAgICAgICAg ICAgICogY29tbW9uL2NvbW1vbi11dGlscy5jIChhbGlnbl91cCwgYWxpZ25fZG93bik6IC4uLiBo ZXJlLgorICAgICAgICAgICAgKiB1dGlscy5oIChhbGlnbl91cCwgYWxpZ25fZG93bik6IE1vdmUg dG8gLi4uCisgICAgICAgICAgICAqIGNvbW1vbi9jb21tb24tdXRpbHMuaCAoYWxpZ25fdXAsIGFs aWduX2Rvd24pOiAuLi4gaGVyZS4KKyAgICAKKyAgICBnZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwor ICAgIDIwMTgtMDUtMDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKyAgICAgICAgICAgICAgICBQZWRybyBBbHZlcyA8cGFsdmVzQHJlZGhhdC5jb20+CisgICAg CisgICAgICAgICAgICAqIGxpbnV4LWFhcmNoNjQtbG93LmMgKGFhcmNoNjRfc3RvcHBlZF9kYXRh X2FkZHJlc3MpOgorICAgICAgICAgICAgTGlrZXdpc2UuCisgICAgCisgICAgZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cKKyAgICAyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisgICAgICAgICAgICAgICAgUGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRo YXQuY29tPgorICAgIAorICAgICAgICAgICAgUFIgYnJlYWtwb2ludHMvMTk4MDYgYW5kIHN1cHBv cnQgZm9yIFBSIGV4dGVybmFsLzIwMjA3LgorICAgICAgICAgICAgKiBnZGIuYmFzZS93YXRjaHBv aW50LXVuYWxpZ25lZC5jOiBOZXcgZmlsZS4KKyAgICAgICAgICAgICogZ2RiLmJhc2Uvd2F0Y2hw b2ludC11bmFsaWduZWQuZXhwOiBOZXcgZmlsZS4KKworLS0tIC4vZ2RiL05FV1MJMjAxOC0wMS0z MSAwMzo1ODo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9ORVdTCTIwMTgtMDUtMDUgMTc6 NTQ6MTQuMTA4MTQ4MTUyICswMjAwCitAQCAtMSw2ICsxLDE2IEBACisgCQlXaGF0IGhhcyBjaGFu Z2VkIGluIEdEQj8KKyAJICAgICAoT3JnYW5pemVkIHJlbGVhc2UgYnkgcmVsZWFzZSkKKyAKKysq IEFhcmNoNjQvTGludXggaGFyZHdhcmUgd2F0Y2hwb2ludHMgaW1wcm92ZW1lbnRzCisrCisrICBI YXJkd2FyZSB3YXRjaHBvaW50cyBvbiB1bmFsaWduZWQgYWRkcmVzc2VzIGFyZSBub3cgcHJvcGVy bHkKKysgIHN1cHBvcnRlZCB3aGVuIHJ1bm5pbmcgTGludXgga2VybmVsIDQuMTAgb3IgaGlnaGVy OiByZWFkIGFuZCBhY2Nlc3MKKysgIHdhdGNocG9pbnRzIGFyZSBubyBsb25nZXIgc3B1cmlvdXNs eSBtaXNzZWQsIGFuZCBhbGwgd2F0Y2hwb2ludHMKKysgIGxlbmd0aHMgYmV0d2VlbiAxIGFuZCA4 IGJ5dGVzIGFyZSBzdXBwb3J0ZWQuICBPbiBvbGRlciBrZXJuZWxzLAorKyAgd2F0Y2hwb2ludHMg c2V0IG9uIHVuYWxpZ25lZCBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciBtaXNzZWQsIHdpdGgKKysg IHRoZSB0cmFkZW9mZiB0aGF0IHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgZmFsc2UgaGl0cyBi ZWluZworKyAgcmVwb3J0ZWQuCisrCisgKioqIENoYW5nZXMgaW4gR0RCIDguMQorIAorICogR0RC IG5vdyBzdXBwb3J0cyBkeW5hbWljYWxseSBjcmVhdGluZyBhcmJpdHJhcnkgcmVnaXN0ZXIgZ3Jv dXBzIHNwZWNpZmllZAorLS0tIC4vZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMJMjAxOC0wMS0wNSAw NTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCTIw MTgtMDUtMDUgMTc6NTQ6NTMuMjI4NTA2ODIyICswMjAwCitAQCAtNzM1LDE2ICs3MzUsMzggQEAg YWFyY2g2NF9saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydQorICAgc3RhdGUgPSBhYXJj aDY0X2dldF9kZWJ1Z19yZWdfc3RhdGUgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOwor ICAgZm9yIChpID0gYWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0gMDsgLS1pKQorICAgICB7 CisrICAgICAgY29uc3QgdW5zaWduZWQgaW50IG9mZnNldAorKwk9IGFhcmNoNjRfd2F0Y2hwb2lu dF9vZmZzZXQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25zdCB1bnNpZ25lZCBp bnQgbGVuID0gYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0p OworICAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3RyYXAgPSAoQ09SRV9BRERSKSBzaWdpbmZv LnNpX2FkZHI7CistICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJf YWRkcl93cFtpXTsKKysgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaCA9IHN0YXRlLT5k cl9hZGRyX3dwW2ldICsgb2Zmc2V0OworKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNo X2FsaWduZWQgPSBhbGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwgOCk7CisrICAgICAg Y29uc3QgQ09SRV9BRERSIGFkZHJfb3JpZyA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3BbaV07Cisg CisgICAgICAgaWYgKHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0KKyAJICAmJiBEUl9DT05UUk9M X0VOQUJMRUQgKHN0YXRlLT5kcl9jdHJsX3dwW2ldKQorLQkgICYmIGFkZHJfdHJhcCA+PSBhZGRy X3dhdGNoCisrCSAgJiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2hfYWxpZ25lZAorIAkgICYmIGFk ZHJfdHJhcCA8IGFkZHJfd2F0Y2ggKyBsZW4pCisgCXsKKy0JICAqYWRkcl9wID0gYWRkcl90cmFw OworKwkgIC8qIEFERFJfVFJBUCByZXBvcnRzIHRoZSBmaXJzdCBhZGRyZXNzIG9mIHRoZSBtZW1v cnkgcmFuZ2UKKysJICAgICBhY2Nlc3NlZCBieSB0aGUgQ1BVLCByZWdhcmRsZXNzIG9mIHdoYXQg d2FzIHRoZSBtZW1vcnkKKysJICAgICByYW5nZSB3YXRjaGVkLiAgVGh1cywgYSBsYXJnZSBDUFUg YWNjZXNzIHRoYXQgc3RyYWRkbGVzCisrCSAgICAgdGhlIEFERFJfV0FUQ0guLkFERFJfV0FUQ0gr TEVOIHJhbmdlIG1heSByZXN1bHQgaW4gYW4KKysJICAgICBBRERSX1RSQVAgdGhhdCBpcyBsb3dl ciB0aGFuIHRoZQorKwkgICAgIEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOIHJhbmdlLiAgRS5n LjoKKysKKysJICAgICBhZGRyOiB8ICAgNCAgIHwgICA1ICAgfCAgIDYgICB8ICAgNyAgIHwgICA4 ICAgfAorKwkJCQkgICB8LS0tLSByYW5nZSB3YXRjaGVkIC0tLS18CisrCQkgICB8LS0tLS0tLS0t LS0gcmFuZ2UgYWNjZXNzZWQgLS0tLS0tLS0tLS0tfAorKworKwkgICAgIEluIHRoaXMgY2FzZSwg QUREUl9UUkFQIHdpbGwgYmUgNC4KKysKKysJICAgICBUbyBtYXRjaCBhIHdhdGNocG9pbnQga25v d24gdG8gR0RCIGNvcmUsIHdlIG11c3QgbmV2ZXIKKysJICAgICByZXBvcnQgKkFERFJfUCBvdXRz aWRlIG9mIGFueSBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTgorKwkgICAgIHJhbmdlLiAgQURE Ul9XQVRDSCA8PSBBRERSX1RSQVAgPCBBRERSX09SSUcgaXMgYSBmYWxzZQorKwkgICAgIHBvc2l0 aXZlIG9uIGtlcm5lbHMgb2xkZXIgdGhhbiA0LjEwLiAgU2VlIFBSCisrCSAgICAgZXh0ZXJuYWwv MjAyMDcuICAqLworKwkgICphZGRyX3AgPSBhZGRyX29yaWc7CisgCSAgcmV0dXJuIDE7CisgCX0K KyAgICAgfQorLS0tIC4vZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYwkyMDE4LTAxLTA1IDA1OjA3 OjIzLjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYwkyMDE4 LTA1LTA1IDE3OjU0OjE0LjEwOTE0ODE2MSArMDIwMAorQEAgLTQwOCwzICs0MDgsMjMgQEAgc3Ry aW5naWZ5X2FyZ3YgKGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXIgKgorIAorICAgcmV0dXJuIHJldDsK KyB9CisrCisrLyogU2VlIGNvbW1vbi9jb21tb24tdXRpbHMuaC4gICovCisrCisrVUxPTkdFU1QK KythbGlnbl91cCAoVUxPTkdFU1QgdiwgaW50IG4pCisreworKyAgLyogQ2hlY2sgdGhhdCBOIGlz IHJlYWxseSBhIHBvd2VyIG9mIHR3by4gICovCisrICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4t MSkpID09IDApOworKyAgcmV0dXJuICh2ICsgbiAtIDEpICYgLW47CisrfQorKworKy8qIFNlZSBj b21tb24vY29tbW9uLXV0aWxzLmguICAqLworKworK1VMT05HRVNUCisrYWxpZ25fZG93biAoVUxP TkdFU1QgdiwgaW50IG4pCisreworKyAgLyogQ2hlY2sgdGhhdCBOIGlzIHJlYWxseSBhIHBvd2Vy IG9mIHR3by4gICovCisrICBnZGJfYXNzZXJ0IChuICYmIChuICYgKG4tMSkpID09IDApOworKyAg cmV0dXJuICh2ICYgLW4pOworK30KKy0tLSAuL2dkYi9jb21tb24vY29tbW9uLXV0aWxzLmgJMjAx OC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9jb21tb24vY29tbW9u LXV0aWxzLmgJMjAxOC0wNS0wNSAxNzo1NDoxNC4xMTAxNDgxNzAgKzAyMDAKK0BAIC0xNDYsNCAr MTQ2LDM2IEBAIGluX2luY2x1c2l2ZV9yYW5nZSAoVCB2YWx1ZSwgVCBsb3csIFQgaGkKKyAgIHJl dHVybiB2YWx1ZSA+PSBsb3cgJiYgdmFsdWUgPD0gaGlnaDsKKyB9CisgCisrLyogRW5zdXJlIHRo YXQgViBpcyBhbGlnbmVkIHRvIGFuIE4gYnl0ZSBib3VuZGFyeSAoQidzIGFzc3VtZWQgdG8gYmUg YQorKyAgIHBvd2VyIG9mIDIpLiAgUm91bmQgdXAvZG93biB3aGVuIG5lY2Vzc2FyeS4gIEV4YW1w bGVzIG9mIGNvcnJlY3QKKysgICB1c2UgaW5jbHVkZToKKysKKysgICAgYWRkciA9IGFsaWduX3Vw IChhZGRyLCA4KTsgLS0gVkFMVUUgbmVlZHMgOCBieXRlIGFsaWdubWVudAorKyAgICB3cml0ZV9t ZW1vcnkgKGFkZHIsIHZhbHVlLCBsZW4pOworKyAgICBhZGRyICs9IGxlbjsKKysKKysgICBhbmQ6 CisrCisrICAgIHNwID0gYWxpZ25fZG93biAoc3AgLSBsZW4sIDE2KTsgLS0gS2VlcCBTUCAxNiBi eXRlIGFsaWduZWQKKysgICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsdWUsIGxlbik7CisrCisrICAg Tm90ZSB0aGF0IHVzZXMgc3VjaCBhczoKKysKKysgICAgd3JpdGVfbWVtb3J5IChhZGRyLCB2YWx1 ZSwgbGVuKTsKKysgICAgYWRkciArPSBhbGlnbl91cCAobGVuLCA4KTsKKysKKysgICBhbmQ6Cisr CisrICAgIHNwIC09IGFsaWduX3VwIChsZW4sIDgpOworKyAgICB3cml0ZV9tZW1vcnkgKHNwLCB2 YWx1ZSwgbGVuKTsKKysKKysgICBhcmUgdHlwaWNhbGx5IG5vdCBjb3JyZWN0IGFzIHRoZXkgZG9u J3QgZW5zdXJlIHRoYXQgdGhlIGFkZHJlc3MgKFNQCisrICAgb3IgQUREUikgaXMgY29ycmVjdGx5 IGFsaWduZWQgKHJlbHlpbmcgb24gcHJldmlvdXMgYWxpZ25tZW50IHRvCisrICAga2VlcCB0aGlu Z3MgcmlnaHQpLiAgVGhpcyBpcyBhbHNvIHdoeSB0aGUgbWV0aG9kcyBhcmUgY2FsbGVkCisrICAg ImFsaWduXy4uLiIgaW5zdGVhZCBvZiAicm91bmRfLi4uIiBhcyB0aGUgbGF0dGVyIHJlYWRzIGJl dHRlciB3aXRoCisrICAgdGhpcyBpbmNvcnJlY3QgY29kaW5nIHN0eWxlLiAgKi8KKysKKytleHRl cm4gVUxPTkdFU1QgYWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKTsKKytleHRlcm4gVUxPTkdF U1QgYWxpZ25fZG93biAoVUxPTkdFU1QgdiwgaW50IG4pOworKworICNlbmRpZgorLS0tIC4vZ2Ri L2dkYnNlcnZlci9saW51eC1hYXJjaDY0LWxvdy5jCTIwMTgtMDEtMDUgMDU6MDc6MjMuMDAwMDAw MDAwICswMTAwCisrKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtbG93LmMJMjAxOC0w NS0wNSAxNzo1NDoxNC4xMTAxNDgxNzAgKzAyMDAKK0BAIC0zNjAsMTQgKzM2MCwzOSBAQCBhYXJj aDY0X3N0b3BwZWRfZGF0YV9hZGRyZXNzICh2b2lkKQorICAgc3RhdGUgPSBhYXJjaDY0X2dldF9k ZWJ1Z19yZWdfc3RhdGUgKHBpZF9vZiAoY3VycmVudF90aHJlYWQpKTsKKyAgIGZvciAoaSA9IGFh cmNoNjRfbnVtX3dwX3JlZ3MgLSAxOyBpID49IDA7IC0taSkKKyAgICAgeworKyAgICAgIGNvbnN0 IHVuc2lnbmVkIGludCBvZmZzZXQKKysJPSBhYXJjaDY0X3dhdGNocG9pbnRfb2Zmc2V0IChzdGF0 ZS0+ZHJfY3RybF93cFtpXSk7CisgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGxlbiA9IGFhcmNo NjRfd2F0Y2hwb2ludF9sZW5ndGggKHN0YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25z dCBDT1JFX0FERFIgYWRkcl90cmFwID0gKENPUkVfQUREUikgc2lnaW5mby5zaV9hZGRyOworLSAg ICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNoID0gc3RhdGUtPmRyX2FkZHJfd3BbaV07Cisr ICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJfYWRkcl93cFtpXSAr IG9mZnNldDsKKysgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaF9hbGlnbmVkID0gYWxp Z25fZG93biAoc3RhdGUtPmRyX2FkZHJfd3BbaV0sIDgpOworKyAgICAgIGNvbnN0IENPUkVfQURE UiBhZGRyX29yaWcgPSBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ldOworKworICAgICAgIGlmIChz dGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldCisgCSAgJiYgRFJfQ09OVFJPTF9FTkFCTEVEIChzdGF0 ZS0+ZHJfY3RybF93cFtpXSkKKy0JICAmJiBhZGRyX3RyYXAgPj0gYWRkcl93YXRjaAorKwkgICYm IGFkZHJfdHJhcCA+PSBhZGRyX3dhdGNoX2FsaWduZWQKKyAJICAmJiBhZGRyX3RyYXAgPCBhZGRy X3dhdGNoICsgbGVuKQorLQlyZXR1cm4gYWRkcl90cmFwOworKwl7CisrCSAgLyogQUREUl9UUkFQ IHJlcG9ydHMgdGhlIGZpcnN0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByYW5nZQorKwkgICAgIGFj Y2Vzc2VkIGJ5IHRoZSBDUFUsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB3YXMgdGhlIG1lbW9yeQorKwkg ICAgIHJhbmdlIHdhdGNoZWQuICBUaHVzLCBhIGxhcmdlIENQVSBhY2Nlc3MgdGhhdCBzdHJhZGRs ZXMKKysJICAgICB0aGUgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UgbWF5IHJlc3Vs dCBpbiBhbgorKwkgICAgIEFERFJfVFJBUCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlCisrCSAgICAg QUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UuICBFLmcuOgorKworKwkgICAgIGFkZHI6 IHwgICA0ICAgfCAgIDUgICB8ICAgNiAgIHwgICA3ICAgfCAgIDggICB8CisrCQkJCSAgIHwtLS0t IHJhbmdlIHdhdGNoZWQgLS0tLXwKKysJCSAgIHwtLS0tLS0tLS0tLSByYW5nZSBhY2Nlc3NlZCAt LS0tLS0tLS0tLS18CisrCisrCSAgICAgSW4gdGhpcyBjYXNlLCBBRERSX1RSQVAgd2lsbCBiZSA0 LgorKworKwkgICAgIFRvIG1hdGNoIGEgd2F0Y2hwb2ludCBrbm93biB0byBHREIgY29yZSwgd2Ug bXVzdCBuZXZlcgorKwkgICAgIHJlcG9ydCAqQUREUl9QIG91dHNpZGUgb2YgYW55IEFERFJfV0FU Q0guLkFERFJfV0FUQ0grTEVOCisrCSAgICAgcmFuZ2UuICBBRERSX1dBVENIIDw9IEFERFJfVFJB UCA8IEFERFJfT1JJRyBpcyBhIGZhbHNlCisrCSAgICAgcG9zaXRpdmUgb24ga2VybmVscyBvbGRl ciB0aGFuIDQuMTAuICBTZWUgUFIKKysJICAgICBleHRlcm5hbC8yMDIwNy4gICovCisrCSAgcmV0 dXJuIGFkZHJfb3JpZzsKKysJfQorICAgICB9CisgCisgICByZXR1cm4gKENPUkVfQUREUikgMDsK Ky0tLSAuL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCTIwMTgtMDEtMDUgMDU6MDc6 MjMuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQu YwkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMDE0ODE3MCArMDIwMAorQEAgLTM0LDI5ICszNCw1MiBA QAorIGludCBhYXJjaDY0X251bV9icF9yZWdzOworIGludCBhYXJjaDY0X251bV93cF9yZWdzOwor IAorKy8qIFRydWUgaWYgdGhpcyBrZXJuZWwgZG9lcyBub3QgaGF2ZSB0aGUgYnVnIGRlc2NyaWJl ZCBieSBQUgorKyAgIGV4dGVybmFsLzIwMjA3IChMaW51eCA+PSA0LjEwKS4gIEEgZml4ZWQga2Vy bmVsIHN1cHBvcnRzIGFueQorKyAgIGNvbnRpZ3VvdXMgcmFuZ2Ugb2YgYml0cyBpbiA4LWJpdCBi eXRlIERSX0NPTlRST0xfTUFTSy4gIEEgYnVnZ3kKKysgICBrZXJuZWwgc3VwcG9ydHMgb25seSAw eDAxLCAweDAzLCAweDBmIGFuZCAweGZmLiAgV2Ugc3RhcnQgYnkKKysgICBhc3N1bWluZyB0aGUg YnVnIGlzIGZpeGVkLCBhbmQgdGhlbiBkZXRlY3QgdGhlIGJ1ZyBhdAorKyAgIFBUUkFDRV9TRVRS RUdTRVQgdGltZS4gICovCisrc3RhdGljIGJvb2wga2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1 b3VzX3JhbmdlID0gdHJ1ZTsKKysKKysvKiBSZXR1cm4gc3RhcnRpbmcgYnl0ZSAwLi43IGluY2wu IG9mIGEgd2F0Y2hwb2ludCBlbmNvZGVkIGJ5IENUUkwuICAqLworKworK3Vuc2lnbmVkIGludAor K2FhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQgKHVuc2lnbmVkIGludCBjdHJsKQorK3sKKysgIHVp bnQ4X3QgbWFzayA9IERSX0NPTlRST0xfTUFTSyAoY3RybCk7CisrICB1bnNpZ25lZCByZXR2YWw7 CisrCisrICAvKiBTaGlmdCBvdXQgYm90dG9tIHplcm9zLiAgKi8KKysgIGZvciAocmV0dmFsID0g MDsgbWFzayAmJiAobWFzayAmIDEpID09IDA7ICsrcmV0dmFsKQorKyAgICBtYXNrID4+PSAxOwor KworKyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCisgLyogVXRpbGl0eSBmdW5jdGlvbiB0aGF0IHJl dHVybnMgdGhlIGxlbmd0aCBpbiBieXRlcyBvZiBhIHdhdGNocG9pbnQKKyAgICBhY2NvcmRpbmcg dG8gdGhlIGNvbnRlbnQgb2YgYSBoYXJkd2FyZSBkZWJ1ZyBjb250cm9sIHJlZ2lzdGVyIENUUkwu CistICAgTm90ZSB0aGF0IHRoZSBrZXJuZWwgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgdGhlIGZv bGxvd2luZyBCeXRlCistICAgQWRkcmVzcyBTZWxlY3QgKEJBUykgdmFsdWVzOiAweDEsIDB4Mywg MHhmIGFuZCAweGZmLCB3aGljaCBtZWFucworLSAgIHRoYXQgZm9yIGEgaGFyZHdhcmUgd2F0Y2hw b2ludCwgaXRzIHZhbGlkIGxlbmd0aCBjYW4gb25seSBiZSAxCistICAgYnl0ZSwgMiBieXRlcywg NCBieXRlcyBvciA4IGJ5dGVzLiAgKi8KKysgICBBbnkgY29udGlndW91cyByYW5nZSBvZiBieXRl cyBpbiBDVFJMIGlzIHN1cHBvcnRlZC4gIFRoZSByZXR1cm5lZAorKyAgIHZhbHVlIGNhbiBiZSBi ZXR3ZWVuIDAuLjggKGluY2x1c2l2ZSkuICAqLworIAorIHVuc2lnbmVkIGludAorIGFhcmNoNjRf d2F0Y2hwb2ludF9sZW5ndGggKHVuc2lnbmVkIGludCBjdHJsKQorIHsKKy0gIHN3aXRjaCAoRFJf Q09OVFJPTF9MRU5HVEggKGN0cmwpKQorLSAgICB7CistICAgIGNhc2UgMHgwMToKKy0gICAgICBy ZXR1cm4gMTsKKy0gICAgY2FzZSAweDAzOgorLSAgICAgIHJldHVybiAyOworLSAgICBjYXNlIDB4 MGY6CistICAgICAgcmV0dXJuIDQ7CistICAgIGNhc2UgMHhmZjoKKy0gICAgICByZXR1cm4gODsK Ky0gICAgZGVmYXVsdDoKKy0gICAgICByZXR1cm4gMDsKKy0gICAgfQorKyAgdWludDhfdCBtYXNr ID0gRFJfQ09OVFJPTF9NQVNLIChjdHJsKTsKKysgIHVuc2lnbmVkIHJldHZhbDsKKysKKysgIC8q IFNoaWZ0IG91dCBib3R0b20gemVyb3MuICAqLworKyAgbWFzayA+Pj0gYWFyY2g2NF93YXRjaHBv aW50X29mZnNldCAoY3RybCk7CisrCisrICAvKiBDb3VudCBib3R0b20gb25lcy4gICovCisrICBm b3IgKHJldHZhbCA9IDA7IChtYXNrICYgMSkgIT0gMDsgKytyZXR2YWwpCisrICAgIG1hc2sgPj49 IDE7CisrCisrICBpZiAobWFzayAhPSAwKQorKyAgICBlcnJvciAoXygiVW5leHBlY3RlZCBoYXJk d2FyZSB3YXRjaHBvaW50IGxlbmd0aCByZWdpc3RlciB2YWx1ZSAweCV4IiksCisrCSAgIERSX0NP TlRST0xfTUFTSyAoY3RybCkpOworKworKyAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisgLyogR2l2 ZW4gdGhlIGhhcmR3YXJlIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCB0eXBlIFRZUEUgYW5kIGl0 cworQEAgLTY0LDEwICs4NywxMyBAQCBhYXJjaDY0X3dhdGNocG9pbnRfbGVuZ3RoICh1bnNpZ25l ZCBpbnQKKyAgICBicmVha3BvaW50L3dhdGNocG9pbnQgY29udHJvbCByZWdpc3Rlci4gICovCisg Cisgc3RhdGljIHVuc2lnbmVkIGludAorLWFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnIChl bnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCisrYWFyY2g2NF9wb2ludF9lbmNv ZGVfY3RybF9yZWcgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgaW50IG9mZnNldCwgaW50 IGxlbikKKyB7CisgICB1bnNpZ25lZCBpbnQgY3RybCwgdHR5cGU7CisgCisrICBnZGJfYXNzZXJ0 IChvZmZzZXQgPT0gMCB8fCBrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpOwor KyAgZ2RiX2Fzc2VydCAob2Zmc2V0ICsgbGVuIDw9IEFBUkNINjRfSFdQX01BWF9MRU5fUEVSX1JF Ryk7CisrCisgICAvKiB0eXBlICovCisgICBzd2l0Y2ggKHR5cGUpCisgICAgIHsKK0BAIC04OSw4 ICsxMTUsOCBAQCBhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoZW51bSB0YXJnCisgCisg ICBjdHJsID0gdHR5cGUgPDwgMzsKKyAKKy0gIC8qIGxlbmd0aCBiaXRtYXNrICovCistICBjdHJs IHw9ICgoMSA8PCBsZW4pIC0gMSkgPDwgNTsKKysgIC8qIG9mZnNldCBhbmQgbGVuZ3RoIGJpdG1h c2sgKi8KKysgIGN0cmwgfD0gKCgxIDw8IGxlbikgLSAxKSA8PCAoNSArIG9mZnNldCk7CisgICAv KiBlbmFibGVkIGF0IGVsMCAqLworICAgY3RybCB8PSAoMiA8PCAxKSB8IDE7CisgCitAQCAtMTM0 LDU4ICsxNjAsNjUgQEAgYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkIChpbnQgaXNfd2F0Y2hwbwor ICAgaWYgKGFkZHIgJiAoYWxpZ25tZW50IC0gMSkpCisgICAgIHJldHVybiAwOworIAorLSAgaWYg KGxlbiAhPSA4ICYmIGxlbiAhPSA0ICYmIGxlbiAhPSAyICYmIGxlbiAhPSAxKQorKyAgaWYgKCgh a2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3JhbmdlCisrICAgICAgICYmIGxlbiAhPSA4 ICYmIGxlbiAhPSA0ICYmIGxlbiAhPSAyICYmIGxlbiAhPSAxKQorKyAgICAgIHx8IChrZXJuZWxf c3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UKKysJICAmJiAobGVuIDwgMSB8fCBsZW4gPiA4 KSkpCisgICAgIHJldHVybiAwOworIAorICAgcmV0dXJuIDE7CisgfQorIAorIC8qIEdpdmVuIHRo ZSAocG90ZW50aWFsbHkgdW5hbGlnbmVkKSB3YXRjaHBvaW50IGFkZHJlc3MgaW4gQUREUiBhbmQK Ky0gICBsZW5ndGggaW4gTEVOLCByZXR1cm4gdGhlIGFsaWduZWQgYWRkcmVzcyBhbmQgYWxpZ25l ZCBsZW5ndGggaW4KKy0gICAqQUxJR05FRF9BRERSX1AgYW5kICpBTElHTkVEX0xFTl9QLCByZXNw ZWN0aXZlbHkuICBUaGUgcmV0dXJuZWQKKy0gICBhbGlnbmVkIGFkZHJlc3MgYW5kIGxlbmd0aCB3 aWxsIGJlIHZhbGlkIHZhbHVlcyB0byB3cml0ZSB0byB0aGUKKy0gICBoYXJkd2FyZSB3YXRjaHBv aW50IHZhbHVlIGFuZCBjb250cm9sIHJlZ2lzdGVycy4KKysgICBsZW5ndGggaW4gTEVOLCByZXR1 cm4gdGhlIGFsaWduZWQgYWRkcmVzcywgb2Zmc2V0IGZyb20gdGhhdCBiYXNlCisrICAgYWRkcmVz cywgYW5kIGFsaWduZWQgbGVuZ3RoIGluICpBTElHTkVEX0FERFJfUCwgKkFMSUdORURfT0ZGU0VU X1AKKysgICBhbmQgKkFMSUdORURfTEVOX1AsIHJlc3BlY3RpdmVseS4gIFRoZSByZXR1cm5lZCB2 YWx1ZXMgd2lsbCBiZQorKyAgIHZhbGlkIHZhbHVlcyB0byB3cml0ZSB0byB0aGUgaGFyZHdhcmUg d2F0Y2hwb2ludCB2YWx1ZSBhbmQgY29udHJvbAorKyAgIHJlZ2lzdGVycy4KKyAKKyAgICBUaGUg Z2l2ZW4gd2F0Y2hwb2ludCBtYXkgZ2V0IHRydW5jYXRlZCBpZiBtb3JlIHRoYW4gb25lIGhhcmR3 YXJlCisgICAgcmVnaXN0ZXIgaXMgbmVlZGVkIHRvIGNvdmVyIHRoZSB3YXRjaGVkIHJlZ2lvbi4g ICpORVhUX0FERFJfUAorICAgIGFuZCAqTkVYVF9MRU5fUCwgaWYgbm9uLU5VTEwsIHdpbGwgcmV0 dXJuIHRoZSBhZGRyZXNzIGFuZCBsZW5ndGgKKyAgICBvZiB0aGUgcmVtYWluaW5nIHBhcnQgb2Yg dGhlIHdhdGNocG9pbnQgKHdoaWNoIGNhbiBiZSBwcm9jZXNzZWQKKy0gICBieSBjYWxsaW5nIHRo aXMgcm91dGluZSBhZ2FpbiB0byBnZW5lcmF0ZSBhbm90aGVyIGFsaWduZWQgYWRkcmVzcworLSAg IGFuZCBsZW5ndGggcGFpci4KKysgICBieSBjYWxsaW5nIHRoaXMgcm91dGluZSBhZ2FpbiB0byBn ZW5lcmF0ZSBhbm90aGVyIGFsaWduZWQgYWRkcmVzcywKKysgICBvZmZzZXQgYW5kIGxlbmd0aCB0 dXBsZS4KKyAKKyAgICBFc3NlbnRpYWxseSwgdW5hbGlnbmVkIHdhdGNocG9pbnQgaXMgYWNoaWV2 ZWQgYnkgbWluaW1hbGx5CisgICAgZW5sYXJnaW5nIHRoZSB3YXRjaGVkIGFyZWEgdG8gbWVldCB0 aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50LCBhbmQKKyAgICBpZiBuZWNlc3NhcnksIHNwbGl0dGlu ZyB0aGUgd2F0Y2hwb2ludCBvdmVyIHNldmVyYWwgaGFyZHdhcmUKKy0gICB3YXRjaHBvaW50IHJl Z2lzdGVycy4gIFRoZSB0cmFkZS1vZmYgaXMgdGhhdCB0aGVyZSB3aWxsIGJlCistICAgZmFsc2Ut cG9zaXRpdmUgaGl0cyBmb3IgdGhlIHJlYWQtdHlwZSBvciB0aGUgYWNjZXNzLXR5cGUgaGFyZHdh cmUKKy0gICB3YXRjaHBvaW50czsgZm9yIHRoZSB3cml0ZSB0eXBlLCB3aGljaCBpcyBtb3JlIGNv bW1vbmx5IHVzZWQsIHRoZXJlCistICAgd2lsbCBiZSBubyBzdWNoIGlzc3VlcywgYXMgdGhlIGhp Z2hlci1sZXZlbCBicmVha3BvaW50IG1hbmFnZW1lbnQKKy0gICBpbiBnZGIgYWx3YXlzIGV4YW1p bmVzIHRoZSBleGFjdCB3YXRjaGVkIHJlZ2lvbiBmb3IgYW55IGNvbnRlbnQKKy0gICBjaGFuZ2Us IGFuZCB0cmFuc3BhcmVudGx5IHJlc3VtZXMgYSB0aHJlYWQgZnJvbSBhIHdhdGNocG9pbnQgdHJh cAorLSAgIGlmIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgd2F0Y2hlZCByZWdpb24uCisrICAg d2F0Y2hwb2ludCByZWdpc3RlcnMuCisrCisrICAgT24ga2VybmVscyB0aGF0IHByZWRhdGUgdGhl IHN1cHBvcnQgZm9yIEJ5dGUgQWRkcmVzcyBTZWxlY3QgKEJBUykKKysgICBpbiB0aGUgaGFyZHdh cmUgd2F0Y2hwb2ludCBjb250cm9sIHJlZ2lzdGVyLCB0aGUgb2Zmc2V0IGZyb20gdGhlCisrICAg YmFzZSBhZGRyZXNzIGlzIGFsd2F5cyB6ZXJvLCBhbmQgc28gaW4gdGhhdCBjYXNlIHRoZSB0cmFk ZS1vZmYgaXMKKysgICB0aGF0IHRoZXJlIHdpbGwgYmUgZmFsc2UtcG9zaXRpdmUgaGl0cyBmb3Ig dGhlIHJlYWQtdHlwZSBvciB0aGUKKysgICBhY2Nlc3MtdHlwZSBoYXJkd2FyZSB3YXRjaHBvaW50 czsgZm9yIHRoZSB3cml0ZSB0eXBlLCB3aGljaCBpcyBtb3JlCisrICAgY29tbW9ubHkgdXNlZCwg dGhlcmUgd2lsbCBiZSBubyBzdWNoIGlzc3VlcywgYXMgdGhlIGhpZ2hlci1sZXZlbAorKyAgIGJy ZWFrcG9pbnQgbWFuYWdlbWVudCBpbiBnZGIgYWx3YXlzIGV4YW1pbmVzIHRoZSBleGFjdCB3YXRj aGVkCisrICAgcmVnaW9uIGZvciBhbnkgY29udGVudCBjaGFuZ2UsIGFuZCB0cmFuc3BhcmVudGx5 IHJlc3VtZXMgYSB0aHJlYWQKKysgICBmcm9tIGEgd2F0Y2hwb2ludCB0cmFwIGlmIHRoZXJlIGlz IG5vIGNoYW5nZSB0byB0aGUgd2F0Y2hlZCByZWdpb24uCisgCisgICAgQW5vdGhlciBsaW1pdGF0 aW9uIGlzIHRoYXQgYmVjYXVzZSB0aGUgd2F0Y2hlZCByZWdpb24gaXMgZW5sYXJnZWQsCistICAg dGhlIHdhdGNocG9pbnQgZmF1bHQgYWRkcmVzcyByZXR1cm5lZCBieQorKyAgIHRoZSB3YXRjaHBv aW50IGZhdWx0IGFkZHJlc3MgZGlzY292ZXJlZCBieQorICAgIGFhcmNoNjRfc3RvcHBlZF9kYXRh X2FkZHJlc3MgbWF5IGJlIG91dHNpZGUgb2YgdGhlIG9yaWdpbmFsIHdhdGNoZWQKKyAgICByZWdp b24sIGVzcGVjaWFsbHkgd2hlbiB0aGUgdHJpZ2dlcmluZyBpbnN0cnVjdGlvbiBpcyBhY2Nlc3Np bmcgYQorICAgIGxhcmdlciByZWdpb24uICBXaGVuIHRoZSBmYXVsdCBhZGRyZXNzIGlzIG5vdCB3 aXRoaW4gYW55IGtub3duCisgICAgcmFuZ2UsIHdhdGNocG9pbnRzX3RyaWdnZXJlZCBpbiBnZGIg d2lsbCBnZXQgY29uZnVzZWQsIGFzIHRoZQorICAgIGhpZ2hlci1sZXZlbCB3YXRjaHBvaW50IG1h bmFnZW1lbnQgaXMgb25seSBhd2FyZSBvZiBvcmlnaW5hbAorICAgIHdhdGNoZWQgcmVnaW9ucywg YW5kIHdpbGwgdGhpbmsgdGhhdCBzb21lIHVua25vd24gd2F0Y2hwb2ludCBoYXMKKy0gICBiZWVu IHRyaWdnZXJlZC4gIEluIHN1Y2ggYSBjYXNlLCBnZGIgbWF5IHN0b3Agd2l0aG91dCBkaXNwbGF5 aW5nCistICAgYW55IGRldGFpbGVkIGluZm9ybWF0aW9uLgorLQorLSAgIE9uY2UgdGhlIGtlcm5l bCBwcm92aWRlcyB0aGUgZnVsbCBzdXBwb3J0IGZvciBCeXRlIEFkZHJlc3MgU2VsZWN0CistICAg KEJBUykgaW4gdGhlIGhhcmR3YXJlIHdhdGNocG9pbnQgY29udHJvbCByZWdpc3RlciwgdGhlc2UK Ky0gICBsaW1pdGF0aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxheGVkIHdpdGggc29tZSBmdXJ0aGVy IHdvcmsuICAqLworKyAgIGJlZW4gdHJpZ2dlcmVkLiAgVG8gcHJldmVudCBzdWNoIGEgY2FzZSwK KysgICBhYXJjaDY0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIGltcGxlbWVudGF0aW9ucyBpbiBnZGIg YW5kIGdkYnNlcnZlcgorKyAgIHRyeSB0byBtYXRjaCB0aGUgdHJhcHBlZCBhZGRyZXNzIHdpdGgg YSB3YXRjaGVkIHJlZ2lvbiwgYW5kIHJldHVybgorKyAgIGFuIGFkZHJlc3Mgd2l0aGluIHRoZSBs YXR0ZXIuICovCisgCisgc3RhdGljIHZvaWQKKyBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLCBDT1JFX0FERFIgKmFsaWduZWRfYWRkcl9wLAorLQkJCSAg aW50ICphbGlnbmVkX2xlbl9wLCBDT1JFX0FERFIgKm5leHRfYWRkcl9wLAorLQkJCSAgaW50ICpu ZXh0X2xlbl9wKQorKwkJCSAgaW50ICphbGlnbmVkX29mZnNldF9wLCBpbnQgKmFsaWduZWRfbGVu X3AsCisrCQkJICBDT1JFX0FERFIgKm5leHRfYWRkcl9wLCBpbnQgKm5leHRfbGVuX3AsCisrCQkJ ICBDT1JFX0FERFIgKm5leHRfYWRkcl9vcmlnX3ApCisgeworICAgaW50IGFsaWduZWRfbGVuOwor LSAgdW5zaWduZWQgaW50IG9mZnNldDsKKysgIHVuc2lnbmVkIGludCBvZmZzZXQsIGFsaWduZWRf b2Zmc2V0OworICAgQ09SRV9BRERSIGFsaWduZWRfYWRkcjsKKyAgIGNvbnN0IHVuc2lnbmVkIGlu dCBhbGlnbm1lbnQgPSBBQVJDSDY0X0hXUF9BTElHTk1FTlQ7CisgICBjb25zdCB1bnNpZ25lZCBp bnQgbWF4X3dwX2xlbiA9IEFBUkNINjRfSFdQX01BWF9MRU5fUEVSX1JFRzsKK0BAIC0xOTYsMTAg KzIyOSwxMiBAQCBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCisgICBp ZiAobGVuIDw9IDApCisgICAgIHJldHVybjsKKyAKKy0gIC8qIEFkZHJlc3MgdG8gYmUgcHV0IGlu dG8gdGhlIGhhcmR3YXJlIHdhdGNocG9pbnQgdmFsdWUgcmVnaXN0ZXIKKy0gICAgIG11c3QgYmUg YWxpZ25lZC4gICovCisrICAvKiBUaGUgYWRkcmVzcyBwdXQgaW50byB0aGUgaGFyZHdhcmUgd2F0 Y2hwb2ludCB2YWx1ZSByZWdpc3RlciBtdXN0CisrICAgICBiZSBhbGlnbmVkLiAgKi8KKyAgIG9m ZnNldCA9IGFkZHIgJiAoYWxpZ25tZW50IC0gMSk7CisgICBhbGlnbmVkX2FkZHIgPSBhZGRyIC0g b2Zmc2V0OworKyAgYWxpZ25lZF9vZmZzZXQKKysgICAgPSBrZXJuZWxfc3VwcG9ydHNfYW55X2Nv bnRpZ3VvdXNfcmFuZ2UgPyBhZGRyICYgKGFsaWdubWVudCAtIDEpIDogMDsKKyAKKyAgIGdkYl9h c3NlcnQgKG9mZnNldCA+PSAwICYmIG9mZnNldCA8IGFsaWdubWVudCk7CisgICBnZGJfYXNzZXJ0 IChhbGlnbmVkX2FkZHIgPj0gMCAmJiBhbGlnbmVkX2FkZHIgPD0gYWRkcik7CitAQCAtMjA3LDkg KzI0MiwxMCBAQCBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCisgCisg ICBpZiAob2Zmc2V0ICsgbGVuID49IG1heF93cF9sZW4pCisgICAgIHsKKy0gICAgICAvKiBOZWVk IG1vcmUgdGhhbiBvbmUgd2F0Y2hwb2ludCByZWdpc3RlcnM7IHRydW5jYXRlIGl0IGF0IHRoZQor KyAgICAgIC8qIE5lZWQgbW9yZSB0aGFuIG9uZSB3YXRjaHBvaW50IHJlZ2lzdGVyOyB0cnVuY2F0 ZSBhdCB0aGUKKyAJIGFsaWdubWVudCBib3VuZGFyeS4gICovCistICAgICAgYWxpZ25lZF9sZW4g PSBtYXhfd3BfbGVuOworKyAgICAgIGFsaWduZWRfbGVuCisrCT0gbWF4X3dwX2xlbiAtIChrZXJu ZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UgPyBvZmZzZXQgOiAwKTsKKyAgICAgICBs ZW4gLT0gKG1heF93cF9sZW4gLSBvZmZzZXQpOworICAgICAgIGFkZHIgKz0gKG1heF93cF9sZW4g LSBvZmZzZXQpOworICAgICAgIGdkYl9hc3NlcnQgKChhZGRyICYgKGFsaWdubWVudCAtIDEpKSA9 PSAwKTsKK0BAIC0yMjIsMTkgKzI1OCwyNCBAQCBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyCisgCWFsaWduZWRfbGVuX2FycmF5W0FBUkNINjRfSFdQX01BWF9MRU5fUEVS X1JFR10gPQorIAl7IDEsIDIsIDQsIDQsIDgsIDgsIDgsIDggfTsKKyAKKy0gICAgICBhbGlnbmVk X2xlbiA9IGFsaWduZWRfbGVuX2FycmF5W29mZnNldCArIGxlbiAtIDFdOworKyAgICAgIGFsaWdu ZWRfbGVuID0gKGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZQorKwkJICAgICA/ IGxlbiA6IGFsaWduZWRfbGVuX2FycmF5W29mZnNldCArIGxlbiAtIDFdKTsKKyAgICAgICBhZGRy ICs9IGxlbjsKKyAgICAgICBsZW4gPSAwOworICAgICB9CisgCisgICBpZiAoYWxpZ25lZF9hZGRy X3ApCisgICAgICphbGlnbmVkX2FkZHJfcCA9IGFsaWduZWRfYWRkcjsKKysgIGlmIChhbGlnbmVk X29mZnNldF9wKQorKyAgICAqYWxpZ25lZF9vZmZzZXRfcCA9IGFsaWduZWRfb2Zmc2V0OworICAg aWYgKGFsaWduZWRfbGVuX3ApCisgICAgICphbGlnbmVkX2xlbl9wID0gYWxpZ25lZF9sZW47Cisg ICBpZiAobmV4dF9hZGRyX3ApCisgICAgICpuZXh0X2FkZHJfcCA9IGFkZHI7CisgICBpZiAobmV4 dF9sZW5fcCkKKyAgICAgKm5leHRfbGVuX3AgPSBsZW47CisrICBpZiAobmV4dF9hZGRyX29yaWdf cCkKKysgICAgKm5leHRfYWRkcl9vcmlnX3AgPSBhbGlnbl9kb3duICgqbmV4dF9hZGRyX29yaWdf cCArIGFsaWdubWVudCwgYWxpZ25tZW50KTsKKyB9CisgCisgc3RydWN0IGFhcmNoNjRfZHJfdXBk YXRlX2NhbGxiYWNrX3BhcmFtCitAQCAtMzI0LDE3ICszNjUsNzMgQEAgYWFyY2g2NF9ub3RpZnlf ZGVidWdfcmVnX2NoYW5nZSAoY29uc3QgcworICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHBpZF9wdGlk LCBkZWJ1Z19yZWdfY2hhbmdlX2NhbGxiYWNrLCAodm9pZCAqKSAmcGFyYW0pOworIH0KKyAKKysv KiBSZWNvbmZpZ3VyZSBTVEFURSB0byBiZSBjb21wYXRpYmxlIHdpdGggTGludXgga2VybmVscyB3 aXRoIHRoZSBQUgorKyAgIGV4dGVybmFsLzIwMjA3IGJ1Zy4gIFRoaXMgaXMgY2FsbGVkIHdoZW4K KysgICBLRVJORUxfU1VQUE9SVFNfQU5ZX0NPTlRJR1VPVVNfUkFOR0UgdHJhbnNpdGlvbnMgdG8g ZmFsc2UuICBOb3RlIHdlCisrICAgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgY29tYmluaW5nIHdhdGNo cG9pbnRzIHdpdGggbWF0Y2hpbmcgKGFuZCB0aHVzCisrICAgc2hhcmVkKSBtYXNrcywgYXMgaXQn cyB0b28gbGF0ZSB3aGVuIHdlIGdldCBoZXJlLiAgT24gYnVnZ3kKKysgICBrZXJuZWxzLCBHREIg d2lsbCB0cnkgdG8gZmlyc3Qgc2V0dXAgdGhlIHBlcmZlY3QgbWF0Y2hpbmcgcmFuZ2VzLAorKyAg IHdoaWNoIHdpbGwgcnVuIG91dCBvZiByZWdpc3RlcnMgYmVmb3JlIHRoaXMgZnVuY3Rpb24gY2Fu IG1lcmdlCisrICAgdGhlbS4gIEl0IGRvZXNuJ3QgbG9vayBsaWtlIHdvcnRoIHRoZSBlZmZvcnQg dG8gaW1wcm92ZSB0aGF0LCBnaXZlbgorKyAgIGV2ZW50dWFsbHkgYnVnZ3kga2VybmVscyB3aWxs IGJlIHBoYXNlZCBvdXQuICAqLworKworK3N0YXRpYyB2b2lkCisrYWFyY2g2NF9kb3duZ3JhZGVf cmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSkKKyt7CisrICBmb3Ig KGludCBpID0gMDsgaSA8IGFhcmNoNjRfbnVtX3dwX3JlZ3M7ICsraSkKKysgICAgaWYgKChzdGF0 ZS0+ZHJfY3RybF93cFtpXSAmIDEpICE9IDApCisrICAgICAgeworKwlnZGJfYXNzZXJ0IChzdGF0 ZS0+ZHJfcmVmX2NvdW50X3dwW2ldICE9IDApOworKwl1aW50OF90IG1hc2tfb3JpZyA9IChzdGF0 ZS0+ZHJfY3RybF93cFtpXSA+PiA1KSAmIDB4ZmY7CisrCWdkYl9hc3NlcnQgKG1hc2tfb3JpZyAh PSAwKTsKKysJc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb2xkX3ZhbGlkW10gPSB7IDB4MDEsIDB4MDMs IDB4MGYsIDB4ZmYgfTsKKysJdWludDhfdCBtYXNrID0gMDsKKysJZm9yIChjb25zdCB1aW50OF90 IG9sZF9tYXNrIDogb2xkX3ZhbGlkKQorKwkgIGlmIChtYXNrX29yaWcgPD0gb2xkX21hc2spCisr CSAgICB7CisrCSAgICAgIG1hc2sgPSBvbGRfbWFzazsKKysJICAgICAgYnJlYWs7CisrCSAgICB9 CisrCWdkYl9hc3NlcnQgKG1hc2sgIT0gMCk7CisrCisrCS8qIE5vIHVwZGF0ZSBuZWVkZWQgZm9y IHRoaXMgd2F0Y2hwb2ludD8gICovCisrCWlmIChtYXNrID09IG1hc2tfb3JpZykKKysJICBjb250 aW51ZTsKKysJc3RhdGUtPmRyX2N0cmxfd3BbaV0gfD0gbWFzayA8PCA1OworKwlzdGF0ZS0+ZHJf YWRkcl93cFtpXQorKwkgID0gYWxpZ25fZG93biAoc3RhdGUtPmRyX2FkZHJfd3BbaV0sIEFBUkNI NjRfSFdQX0FMSUdOTUVOVCk7CisrCisrCS8qIFRyeSB0byBtYXRjaCBkdXBsaWNhdGUgZW50cmll cy4gICovCisrCWZvciAoaW50IGogPSAwOyBqIDwgaTsgKytqKQorKwkgIGlmICgoc3RhdGUtPmRy X2N0cmxfd3Bbal0gJiAxKSAhPSAwCisrCSAgICAgICYmIHN0YXRlLT5kcl9hZGRyX3dwW2pdID09 IHN0YXRlLT5kcl9hZGRyX3dwW2ldCisrCSAgICAgICYmIHN0YXRlLT5kcl9hZGRyX29yaWdfd3Bb al0gPT0gc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXQorKwkgICAgICAmJiBzdGF0ZS0+ZHJfY3Ry bF93cFtqXSA9PSBzdGF0ZS0+ZHJfY3RybF93cFtpXSkKKysJICAgIHsKKysJICAgICAgc3RhdGUt PmRyX3JlZl9jb3VudF93cFtqXSArPSBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldOworKwkgICAg ICBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldID0gMDsKKysJICAgICAgc3RhdGUtPmRyX2FkZHJf d3BbaV0gPSAwOworKwkgICAgICBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dwW2ldID0gMDsKKysJICAg ICAgc3RhdGUtPmRyX2N0cmxfd3BbaV0gJj0gfjE7CisrCSAgICAgIGJyZWFrOworKwkgICAgfQor KworKwlhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChzdGF0ZSwgMSAvKiBpc193YXRj aHBvaW50ICovLCBpKTsKKysgICAgICB9CisrfQorKworIC8qIFJlY29yZCB0aGUgaW5zZXJ0aW9u IG9mIG9uZSBicmVha3BvaW50L3dhdGNocG9pbnQsIGFzIHJlcHJlc2VudGVkCisgICAgYnkgQURE UiBhbmQgQ1RSTCwgaW4gdGhlIHByb2Nlc3MnIGFyY2gtc3BlY2lmaWMgZGF0YSBhcmVhICpTVEFU RS4gICovCisgCisgc3RhdGljIGludAorIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2lu dCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgZW51bSB0 YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAorLQkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikK KysJCQkJICAgQ09SRV9BRERSIGFkZHIsIGludCBvZmZzZXQsIGludCBsZW4sCisrCQkJCSAgIENP UkVfQUREUiBhZGRyX29yaWcpCisgeworICAgaW50IGksIGlkeCwgbnVtX3JlZ3MsIGlzX3dhdGNo cG9pbnQ7CisgICB1bnNpZ25lZCBpbnQgY3RybCwgKmRyX2N0cmxfcCwgKmRyX3JlZl9jb3VudDsK Ky0gIENPUkVfQUREUiAqZHJfYWRkcl9wOworKyAgQ09SRV9BRERSICpkcl9hZGRyX3AsICpkcl9h ZGRyX29yaWdfcDsKKyAKKyAgIC8qIFNldCB1cCBzdGF0ZSBwb2ludGVycy4gICovCisgICBpc193 YXRjaHBvaW50ID0gKHR5cGUgIT0gaHdfZXhlY3V0ZSk7CitAQCAtMzQzLDYgKzQ0MCw3IEBAIGFh cmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMKKyAgICAgeworICAgICAgIG51 bV9yZWdzID0gYWFyY2g2NF9udW1fd3BfcmVnczsKKyAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ ZHJfYWRkcl93cDsKKysgICAgICBkcl9hZGRyX29yaWdfcCA9IHN0YXRlLT5kcl9hZGRyX29yaWdf d3A7CisgICAgICAgZHJfY3RybF9wID0gc3RhdGUtPmRyX2N0cmxfd3A7CisgICAgICAgZHJfcmVm X2NvdW50ID0gc3RhdGUtPmRyX3JlZl9jb3VudF93cDsKKyAgICAgfQorQEAgLTM1MCwxMSArNDQ4 LDEyIEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWMKKyAgICAgewor ICAgICAgIG51bV9yZWdzID0gYWFyY2g2NF9udW1fYnBfcmVnczsKKyAgICAgICBkcl9hZGRyX3Ag PSBzdGF0ZS0+ZHJfYWRkcl9icDsKKysgICAgICBkcl9hZGRyX29yaWdfcCA9IG51bGxwdHI7Cisg ICAgICAgZHJfY3RybF9wID0gc3RhdGUtPmRyX2N0cmxfYnA7CisgICAgICAgZHJfcmVmX2NvdW50 ID0gc3RhdGUtPmRyX3JlZl9jb3VudF9icDsKKyAgICAgfQorIAorLSAgY3RybCA9IGFhcmNoNjRf cG9pbnRfZW5jb2RlX2N0cmxfcmVnICh0eXBlLCBsZW4pOworKyAgY3RybCA9IGFhcmNoNjRfcG9p bnRfZW5jb2RlX2N0cmxfcmVnICh0eXBlLCBvZmZzZXQsIGxlbik7CisgCisgICAvKiBGaW5kIGFu IGV4aXN0aW5nIG9yIGZyZWUgcmVnaXN0ZXIgaW4gb3VyIGNhY2hlLiAgKi8KKyAgIGlkeCA9IC0x OworQEAgLTM2Niw3ICs0NjUsOSBAQCBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQg KHN0cnVjCisgCSAgaWR4ID0gaTsKKyAJICAvKiBubyBicmVhazsgY29udGludWUgaHVudGluZyBm b3IgYW4gZXhpc2luZyBvbmUuICAqLworIAl9CistICAgICAgZWxzZSBpZiAoZHJfYWRkcl9wW2ld ID09IGFkZHIgJiYgZHJfY3RybF9wW2ldID09IGN0cmwpCisrICAgICAgZWxzZSBpZiAoZHJfYWRk cl9wW2ldID09IGFkZHIKKysJICAgICAgICYmIChkcl9hZGRyX29yaWdfcCA9PSBudWxscHRyIHx8 IGRyX2FkZHJfb3JpZ19wW2ldID09IGFkZHJfb3JpZykKKysJICAgICAgICYmIGRyX2N0cmxfcFtp XSA9PSBjdHJsKQorIAl7CisgCSAgZ2RiX2Fzc2VydCAoZHJfcmVmX2NvdW50W2ldICE9IDApOwor IAkgIGlkeCA9IGk7CitAQCAtMzgzLDYgKzQ4NCw4IEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0 X29uZV9wb2ludCAoc3RydWMKKyAgICAgeworICAgICAgIC8qIG5ldyBlbnRyeSAqLworICAgICAg IGRyX2FkZHJfcFtpZHhdID0gYWRkcjsKKysgICAgICBpZiAoZHJfYWRkcl9vcmlnX3AgIT0gbnVs bHB0cikKKysJZHJfYWRkcl9vcmlnX3BbaWR4XSA9IGFkZHJfb3JpZzsKKyAgICAgICBkcl9jdHJs X3BbaWR4XSA9IGN0cmw7CisgICAgICAgZHJfcmVmX2NvdW50W2lkeF0gPSAxOworICAgICAgIC8q IE5vdGlmeSB0aGUgY2hhbmdlLiAgKi8KK0BAIC00MDMsMTEgKzUwNiwxMiBAQCBhYXJjaDY0X2Ry X3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0cnVjCisgc3RhdGljIGludAorIGFhcmNoNjRfZHJf c3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpz dGF0ZSwKKyAJCQkJICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAorLQkJCQkgICBDT1JF X0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgQ09SRV9BRERSIGFkZHIsIGludCBvZmZzZXQs IGludCBsZW4sCisrCQkJCSAgIENPUkVfQUREUiBhZGRyX29yaWcpCisgeworICAgaW50IGksIG51 bV9yZWdzLCBpc193YXRjaHBvaW50OworICAgdW5zaWduZWQgaW50IGN0cmwsICpkcl9jdHJsX3As ICpkcl9yZWZfY291bnQ7CistICBDT1JFX0FERFIgKmRyX2FkZHJfcDsKKysgIENPUkVfQUREUiAq ZHJfYWRkcl9wLCAqZHJfYWRkcl9vcmlnX3A7CisgCisgICAvKiBTZXQgdXAgc3RhdGUgcG9pbnRl cnMuICAqLworICAgaXNfd2F0Y2hwb2ludCA9ICh0eXBlICE9IGh3X2V4ZWN1dGUpOworQEAgLTQx NSw2ICs1MTksNyBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0cnVjCisg ICAgIHsKKyAgICAgICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX3dwX3JlZ3M7CisgICAgICAgZHJf YWRkcl9wID0gc3RhdGUtPmRyX2FkZHJfd3A7CisrICAgICAgZHJfYWRkcl9vcmlnX3AgPSBzdGF0 ZS0+ZHJfYWRkcl9vcmlnX3dwOworICAgICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9jdHJsX3dw OworICAgICAgIGRyX3JlZl9jb3VudCA9IHN0YXRlLT5kcl9yZWZfY291bnRfd3A7CisgICAgIH0K K0BAIC00MjIsMTUgKzUyNywxOCBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQg KHN0cnVjCisgICAgIHsKKyAgICAgICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX2JwX3JlZ3M7Cisg ICAgICAgZHJfYWRkcl9wID0gc3RhdGUtPmRyX2FkZHJfYnA7CisrICAgICAgZHJfYWRkcl9vcmln X3AgPSBudWxscHRyOworICAgICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9jdHJsX2JwOworICAg ICAgIGRyX3JlZl9jb3VudCA9IHN0YXRlLT5kcl9yZWZfY291bnRfYnA7CisgICAgIH0KKyAKKy0g IGN0cmwgPSBhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAodHlwZSwgbGVuKTsKKysgIGN0 cmwgPSBhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAodHlwZSwgb2Zmc2V0LCBsZW4pOwor IAorICAgLyogRmluZCB0aGUgZW50cnkgdGhhdCBtYXRjaGVzIHRoZSBBRERSIGFuZCBDVFJMLiAg Ki8KKyAgIGZvciAoaSA9IDA7IGkgPCBudW1fcmVnczsgKytpKQorLSAgICBpZiAoZHJfYWRkcl9w W2ldID09IGFkZHIgJiYgZHJfY3RybF9wW2ldID09IGN0cmwpCisrICAgIGlmIChkcl9hZGRyX3Bb aV0gPT0gYWRkcgorKwkmJiAoZHJfYWRkcl9vcmlnX3AgPT0gbnVsbHB0ciB8fCBkcl9hZGRyX29y aWdfcFtpXSA9PSBhZGRyX29yaWcpCisrCSYmIGRyX2N0cmxfcFtpXSA9PSBjdHJsKQorICAgICAg IHsKKyAJZ2RiX2Fzc2VydCAoZHJfcmVmX2NvdW50W2ldICE9IDApOworIAlicmVhazsKK0BAIC00 NDYsNiArNTU0LDggQEAgYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdHJ1Ywor ICAgICAgIC8qIENsZWFyIHRoZSBlbmFibGUgYml0LiAgKi8KKyAgICAgICBjdHJsICY9IH4xOwor ICAgICAgIGRyX2FkZHJfcFtpXSA9IDA7CisrICAgICAgaWYgKGRyX2FkZHJfb3JpZ19wICE9IG51 bGxwdHIpCisrCWRyX2FkZHJfb3JpZ19wW2ldID0gMDsKKyAgICAgICBkcl9jdHJsX3BbaV0gPSBj dHJsOworICAgICAgIC8qIE5vdGlmeSB0aGUgY2hhbmdlLiAgKi8KKyAgICAgICBhYXJjaDY0X25v dGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChzdGF0ZSwgaXNfd2F0Y2hwb2ludCwgaSk7CitAQCAtNDcy LDEwICs1ODIsMTAgQEAgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRfaAor ICAgICAgIGlmICghYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkICgwIC8qIGlzX3dhdGNocG9pbnQg Ki8gLCBhZGRyLCBsZW4pKQorIAlyZXR1cm4gLTE7CisgCistICAgICAgcmV0dXJuIGFhcmNoNjRf ZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIGxlbik7CisrICAg ICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUs IGFkZHIsIDAsIGxlbiwgLTEpOworICAgICB9CisgICBlbHNlCistICAgIHJldHVybiBhYXJjaDY0 X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCBsZW4pOworKyAg ICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwg YWRkciwgMCwgbGVuLCAtMSk7CisgfQorIAorIC8qIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNh bWUgYXMgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCwgYXBhcnQKK0BAIC00ODcsOSArNTk3LDkg QEAgYWFyY2g2NF9oYW5kbGVfYWxpZ25lZF93YXRjaHBvaW50IChlbnVtCisgCQkJCSAgIHN0cnVj dCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpCisgeworICAgaWYgKGlzX2luc2VydCkK Ky0gICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5 cGUsIGFkZHIsIGxlbik7CisrICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVf cG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBsZW4sIGFkZHIpOworICAgZWxzZQorLSAgICBy ZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWRk ciwgbGVuKTsKKysgICAgcmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAo c3RhdGUsIHR5cGUsIGFkZHIsIDAsIGxlbiwgYWRkcik7CisgfQorIAorIC8qIEluc2VydC9yZW1v dmUgdW5hbGlnbmVkIHdhdGNocG9pbnQgYnkgY2FsbGluZworQEAgLTUwNCwyOSArNjE0LDQyIEBA IGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChlbnUKKyAJCQkJICAgICBDT1JF X0FERFIgYWRkciwgaW50IGxlbiwgaW50IGlzX2luc2VydCwKKyAJCQkJICAgICBzdHJ1Y3QgYWFy Y2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlKQorIHsKKysgIENPUkVfQUREUiBhZGRyX29yaWcg PSBhZGRyOworKworICAgd2hpbGUgKGxlbiA+IDApCisgICAgIHsKKyAgICAgICBDT1JFX0FERFIg YWxpZ25lZF9hZGRyOworLSAgICAgIGludCBhbGlnbmVkX2xlbiwgcmV0OworKyAgICAgIGludCBh bGlnbmVkX29mZnNldCwgYWxpZ25lZF9sZW4sIHJldDsKKysgICAgICBDT1JFX0FERFIgYWRkcl9v cmlnX25leHQgPSBhZGRyX29yaWc7CisgCistICAgICAgYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50 IChhZGRyLCBsZW4sICZhbGlnbmVkX2FkZHIsICZhbGlnbmVkX2xlbiwKKy0JCQkJJmFkZHIsICZs ZW4pOworKyAgICAgIGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoYWRkciwgbGVuLCAmYWxpZ25l ZF9hZGRyLCAmYWxpZ25lZF9vZmZzZXQsCisrCQkJCSZhbGlnbmVkX2xlbiwgJmFkZHIsICZsZW4s ICZhZGRyX29yaWdfbmV4dCk7CisgCisgICAgICAgaWYgKGlzX2luc2VydCkKKyAJcmV0ID0gYWFy Y2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50IChzdGF0ZSwgdHlwZSwgYWxpZ25lZF9hZGRy LAorLQkJCQkJCSBhbGlnbmVkX2xlbik7CisrCQkJCQkJIGFsaWduZWRfb2Zmc2V0LAorKwkJCQkJ CSBhbGlnbmVkX2xlbiwgYWRkcl9vcmlnKTsKKyAgICAgICBlbHNlCisgCXJldCA9IGFhcmNoNjRf ZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFsaWduZWRfYWRkciwKKy0J CQkJCQkgYWxpZ25lZF9sZW4pOworKwkJCQkJCSBhbGlnbmVkX29mZnNldCwKKysJCQkJCQkgYWxp Z25lZF9sZW4sIGFkZHJfb3JpZyk7CisgCisgICAgICAgaWYgKHNob3dfZGVidWdfcmVncykKKyAJ ZGVidWdfcHJpbnRmICgiaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50OiBpc19pbnNlcnQ6ICVk XG4iCisgCQkgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgCQkgICAgICAi YWxpZ25lZF9hZGRyOiAlcywgYWxpZ25lZF9sZW46ICVkXG4iCisgCQkgICAgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiCistCQkgICAgICAibmV4dF9hZGRyOiAlcywgICAgbmV4 dF9sZW46ICVkXG4iLAorKwkJICAgICAgImFkZHJfb3JpZzogJXNcbiIKKysJCSAgICAgICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKysJCSAgICAgICJuZXh0X2FkZHI6ICVzLCAg ICBuZXh0X2xlbjogJWRcbiIKKysJCSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAi CisrCQkgICAgICAiYWRkcl9vcmlnX25leHQ6ICVzXG4iLAorIAkJICAgICAgaXNfaW5zZXJ0LCBj b3JlX2FkZHJfdG9fc3RyaW5nX256IChhbGlnbmVkX2FkZHIpLAorLQkJICAgICAgYWxpZ25lZF9s ZW4sIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4pOworKwkJICAgICAgYWxpZ25l ZF9sZW4sIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHJfb3JpZyksCisrCQkgICAgICBjb3Jl X2FkZHJfdG9fc3RyaW5nX256IChhZGRyKSwgbGVuLAorKwkJICAgICAgY29yZV9hZGRyX3RvX3N0 cmluZ19ueiAoYWRkcl9vcmlnX25leHQpKTsKKysKKysgICAgICBhZGRyX29yaWcgPSBhZGRyX29y aWdfbmV4dDsKKyAKKyAgICAgICBpZiAocmV0ICE9IDApCisgCXJldHVybiByZXQ7CitAQCAtNTUy LDcgKzY3NSw3IEBAIGFhcmNoNjRfaGFuZGxlX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2gKKyAg ICByZWdpc3RlcnMgd2l0aCBkYXRhIGZyb20gKlNUQVRFLiAgKi8KKyAKKyB2b2lkCistYWFyY2g2 NF9saW51eF9zZXRfZGVidWdfcmVncyAoY29uc3Qgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0 YXRlICpzdGF0ZSwKKythYXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChzdHJ1Y3QgYWFyY2g2 NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAorIAkJCSAgICAgIGludCB0aWQsIGludCB3YXRjaHBv aW50KQorIHsKKyAgIGludCBpLCBjb3VudDsKK0BAIC01ODAsNyArNzAzLDE4IEBAIGFhcmNoNjRf bGludXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0IHN0cnUKKyAgIGlmIChwdHJhY2UgKFBUUkFDRV9T RVRSRUdTRVQsIHRpZCwKKyAJICAgICAgd2F0Y2hwb2ludCA/IE5UX0FSTV9IV19XQVRDSCA6IE5U X0FSTV9IV19CUkVBSywKKyAJICAgICAgKHZvaWQgKikgJmlvdikpCistICAgIGVycm9yIChfKCJV bmV4cGVjdGVkIGVycm9yIHNldHRpbmcgaGFyZHdhcmUgZGVidWcgcmVnaXN0ZXJzIikpOworKyAg ICB7CisrICAgICAgLyogSGFuZGxlIExpbnV4IGtlcm5lbHMgd2l0aCB0aGUgUFIgZXh0ZXJuYWwv MjAyMDcgYnVnLiAgKi8KKysgICAgICBpZiAod2F0Y2hwb2ludCAmJiBlcnJubyA9PSBFSU5WQUwK KysJICAmJiBrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpCisrCXsKKysJICBr ZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UgPSBmYWxzZTsKKysJICBhYXJjaDY0 X2Rvd25ncmFkZV9yZWdzIChzdGF0ZSk7CisrCSAgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVn cyAoc3RhdGUsIHRpZCwgd2F0Y2hwb2ludCk7CisrCSAgcmV0dXJuOworKwl9CisrICAgICAgZXJy b3IgKF8oIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBoYXJkd2FyZSBkZWJ1ZyByZWdpc3RlcnMi KSk7CisrICAgIH0KKyB9CisgCisgLyogUHJpbnQgdGhlIHZhbHVlcyBvZiB0aGUgY2FjaGVkIGJy ZWFrcG9pbnQvd2F0Y2hwb2ludCByZWdpc3RlcnMuICAqLworQEAgLTYxMSw4ICs3NDUsOSBAQCBh YXJjaDY0X3Nob3dfZGVidWdfcmVnX3N0YXRlIChzdHJ1Y3QgYWFyCisgCisgICBkZWJ1Z19wcmlu dGYgKCJcdFdBVENIUE9JTlRzOlxuIik7CisgICBmb3IgKGkgPSAwOyBpIDwgYWFyY2g2NF9udW1f d3BfcmVnczsgaSsrKQorLSAgICBkZWJ1Z19wcmludGYgKCJcdFdQJWQ6IGFkZHI9JXMsIGN0cmw9 MHglMDh4LCByZWYuY291bnQ9JWRcbiIsCisrICAgIGRlYnVnX3ByaW50ZiAoIlx0V1AlZDogYWRk cj0lcyAob3JpZz0lcyksIGN0cmw9MHglMDh4LCByZWYuY291bnQ9JWRcbiIsCisgCQkgIGksIGNv cmVfYWRkcl90b19zdHJpbmdfbnogKHN0YXRlLT5kcl9hZGRyX3dwW2ldKSwKKysJCSAgY29yZV9h ZGRyX3RvX3N0cmluZ19ueiAoc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXSksCisgCQkgIHN0YXRl LT5kcl9jdHJsX3dwW2ldLCBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldKTsKKyB9CisgCistLS0g Li9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAkyMDE4LTAxLTA1IDA1OjA3OjIzLjAw MDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmgJMjAx OC0wNS0wNSAxNzo1NDoxNC4xMTExNDgxNzkgKzAyMDAKK0BAIC03NywxMyArNzcsMTMgQEAKKyAK KyAgICAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMgICAgICAgICAgNSAgICAgIDMg ICAgICAxICAgICAwCisgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tKworLSAgIHwgICAgICAgICBSRVNFUlZFRCAoU0JaKSAg ICAgICAgIHwgIExFTkdUSCAgfCBUWVBFIHwgUFJJViB8IEVOIHwKKysgICB8ICAgICAgICAgUkVT RVJWRUQgKFNCWikgICAgICAgICB8ICAgTUFTSyAgIHwgVFlQRSB8IFBSSVYgfCBFTiB8CisgICAg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tKy0tLS0t LSstLS0tKworIAorICAgIFRoZSBUWVBFIGZpZWxkIGlzIGlnbm9yZWQgZm9yIGJyZWFrcG9pbnRz LiAgKi8KKyAKKyAjZGVmaW5lIERSX0NPTlRST0xfRU5BQkxFRChjdHJsKQkoKChjdHJsKSAmIDB4 MSkgPT0gMSkKKy0jZGVmaW5lIERSX0NPTlRST0xfTEVOR1RIKGN0cmwpCQkoKChjdHJsKSA+PiA1 KSAmIDB4ZmYpCisrI2RlZmluZSBEUl9DT05UUk9MX01BU0soY3RybCkJCSgoKGN0cmwpID4+IDUp ICYgMHhmZikKKyAKKyAvKiBFYWNoIGJpdCBvZiBhIHZhcmlhYmxlIG9mIHRoaXMgdHlwZSBpcyB1 c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYQorICAgIGhhcmR3YXJlIGJyZWFrcG9pbnQgb3Igd2F0 Y2hwb2ludCBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UKK0BAIC0xNDcsNyArMTQ3LDEw IEBAIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZQorICAgdW5zaWduZWQgaW50IGRyX3Jl Zl9jb3VudF9icFtBQVJDSDY0X0hCUF9NQVhfTlVNXTsKKyAKKyAgIC8qIGhhcmR3YXJlIHdhdGNo cG9pbnQgKi8KKysgIC8qIEFkZHJlc3MgYWxpZ25lZCBkb3duIHRvIEFBUkNINjRfSFdQX0FMSUdO TUVOVC4gICovCisgICBDT1JFX0FERFIgZHJfYWRkcl93cFtBQVJDSDY0X0hXUF9NQVhfTlVNXTsK KysgIC8qIEFkZHJlc3MgYXMgZW50ZXJlZCBieSB1c2VyIHdpdGhvdXQgYW55IGZvcmNlZCBhbGln bm1lbnQuICAqLworKyAgQ09SRV9BRERSIGRyX2FkZHJfb3JpZ193cFtBQVJDSDY0X0hXUF9NQVhf TlVNXTsKKyAgIHVuc2lnbmVkIGludCBkcl9jdHJsX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOwor ICAgdW5zaWduZWQgaW50IGRyX3JlZl9jb3VudF93cFtBQVJDSDY0X0hXUF9NQVhfTlVNXTsKKyB9 OworQEAgLTE2Niw2ICsxNjksNyBAQCBzdHJ1Y3QgYXJjaF9sd3BfaW5mbworIGV4dGVybiBpbnQg YWFyY2g2NF9udW1fYnBfcmVnczsKKyBleHRlcm4gaW50IGFhcmNoNjRfbnVtX3dwX3JlZ3M7Cisg CisrdW5zaWduZWQgaW50IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQgKHVuc2lnbmVkIGludCBj dHJsKTsKKyB1bnNpZ25lZCBpbnQgYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAodW5zaWduZWQg aW50IGN0cmwpOworIAorIGludCBhYXJjaDY0X2hhbmRsZV9icmVha3BvaW50IChlbnVtIHRhcmdl dF9od19icF90eXBlIHR5cGUsIENPUkVfQUREUiBhZGRyLAorQEAgLTE3NSw3ICsxNzksNyBAQCBp bnQgYWFyY2g2NF9oYW5kbGVfd2F0Y2hwb2ludCAoZW51bSB0YXJnCisgCQkJICAgICAgIGludCBs ZW4sIGludCBpc19pbnNlcnQsCisgCQkJICAgICAgIHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19z dGF0ZSAqc3RhdGUpOworIAorLXZvaWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoY29u c3Qgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyt2b2lkIGFhcmNoNjRf bGludXhfc2V0X2RlYnVnX3JlZ3MgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3Rh dGUsCisgCQkJCSAgIGludCB0aWQsIGludCB3YXRjaHBvaW50KTsKKyAKKyB2b2lkIGFhcmNoNjRf c2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3Rh dGUsCistLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmMJ MTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuYwkyMDE4LTA1LTA1IDE3OjU0OjE0LjExMTE0 ODE3OSArMDIwMAorQEAgLTAsMCArMSw5NiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMTctMjAxOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNsdWRlIDxhc3Nl cnQuaD4KKysKKytzdGF0aWMgaW50IGFnYWluOworKworK3N0YXRpYyB2b2xhdGlsZSBzdHJ1Y3QK Kyt7CisrICB1aW50NjRfdCBhbGlnbm1lbnQ7CisrICB1bmlvbgorKyAgICB7CisrICAgICAgdWlu dDY0X3Qgc2l6ZThbMV07CisrICAgICAgdWludDMyX3Qgc2l6ZTRbMl07CisrICAgICAgdWludDE2 X3Qgc2l6ZTJbNF07CisrICAgICAgdWludDhfdCBzaXplMVs4XTsKKysgICAgICB1aW50NjRfdCBz aXplOHR3aWNlWzJdOworKyAgICB9CisrICB1OworK30gZGF0YTsKKysKKytzdGF0aWMgaW50IHNp emUgPSAwOworK3N0YXRpYyBpbnQgb2Zmc2V0OworKworK3N0YXRpYyB2b2lkCisrd3JpdGVfc2l6 ZTh0d2ljZSAodm9pZCkKKyt7CisrICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmlyc3QgPSAxOwor KyAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNlY29uZCA9IDI7CisrCisrI2lmZGVmIF9fYWFyY2g2 NF9fCisrICBhc20gdm9sYXRpbGUgKCJzdHAgJTEsICUyLCBbJTBdIgorKwkJOiAvKiBvdXRwdXQg Ki8KKysJCTogInIiIChkYXRhLnUuc2l6ZTh0d2ljZSksICJyIiAoZmlyc3QpLCAiciIgKHNlY29u ZCkgLyogaW5wdXQgKi8KKysJCTogIm1lbW9yeSIgLyogY2xvYmJlciAqLyk7CisrI2Vsc2UKKysg IGRhdGEudS5zaXplOHR3aWNlWzBdID0gZmlyc3Q7CisrICBkYXRhLnUuc2l6ZTh0d2ljZVsxXSA9 IHNlY29uZDsKKysjZW5kaWYKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICB2b2xh dGlsZSB1aW50NjRfdCBsb2NhbDsKKysKKysgIGFzc2VydCAoc2l6ZW9mIChkYXRhKSA9PSA4ICsg MiAqIDgpOworKworKyAgd3JpdGVfc2l6ZTh0d2ljZSAoKTsKKysKKysgIHdoaWxlIChzaXplKQor KyAgICB7CisrICAgICAgc3dpdGNoIChzaXplKQorKwl7CisrLyogX19zMzkweF9fIGFsc28gZGVm aW5lcyBfX3MzOTBfXyAqLworKyNpZmRlZiBfX3MzOTBfXworKyMgZGVmaW5lIEFDQ0VTUyh2YXIp IHZhciA9IH52YXIKKysjZWxzZQorKyMgZGVmaW5lIEFDQ0VTUyh2YXIpIGxvY2FsID0gdmFyCisr I2VuZGlmCisrCWNhc2UgODoKKysJICBBQ0NFU1MgKGRhdGEudS5zaXplOFtvZmZzZXRdKTsKKysJ ICBicmVhazsKKysJY2FzZSA0OgorKwkgIEFDQ0VTUyAoZGF0YS51LnNpemU0W29mZnNldF0pOwor KwkgIGJyZWFrOworKwljYXNlIDI6CisrCSAgQUNDRVNTIChkYXRhLnUuc2l6ZTJbb2Zmc2V0XSk7 CisrCSAgYnJlYWs7CisrCWNhc2UgMToKKysJICBBQ0NFU1MgKGRhdGEudS5zaXplMVtvZmZzZXRd KTsKKysJICBicmVhazsKKysjdW5kZWYgQUNDRVNTCisrCWRlZmF1bHQ6CisrCSAgYXNzZXJ0ICgw KTsKKysJfQorKyAgICAgIHNpemUgPSAwOworKyAgICAgIHNpemUgPSBzaXplOyAvKiBzdGFydF9h Z2FpbiAqLworKyAgICB9CisrICByZXR1cm4gMDsgLyogZmluYWxfcmV0dXJuICovCisrfQorLS0t IC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHAJMTk3MC0w MS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTExMTQ4MTc5 ICswMjAwCitAQCAtMCwwICsxLDE4NCBAQAorKyMgQ29weXJpZ2h0IDIwMTctMjAxOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyMKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgorKworKyMg VGVzdCBpbnNlcnRpbmcgcmVhZCB3YXRjaHBvaW50cyBvbiB1bmFsaWduZWQgYWRkcmVzc2VzLgor KworK3N0YW5kYXJkX3Rlc3RmaWxlCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7CisrICAgIHJldHVybiAtMQorK30K KysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8g bWFpbiIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJzdGFydF9hZ2FpbiJdICJCcmVha3BvaW50ICRkZWNpbWFsIGF0ICRoZXgiICJz dGFydF9hZ2FpbiIKKysKKytzZXQgc2l6ZXMgezEgMiA0IDh9CisrYXJyYXkgc2V0IGFsaWduZWRl bmQgezEgMSAgMiAyICAzIDQgIDQgNCAgNSA4ICA2IDggIDcgOCAgOCA4fQorKworK3NldCByd2F0 Y2ggInJ3YXRjaCIKKytzZXQgcndhdGNoX2V4cCAiSGFyZHdhcmUgcmVhZCB3YXRjaHBvaW50Igor K2lmIHtbaXN0YXJnZXQgInMzOTAqLSotKiJdfSB7CisrICAgICMgVGFyZ2V0IGRvZXMgbm90IHN1 cHBvcnQgdGhpcyB0eXBlIG9mIGhhcmR3YXJlIHdhdGNocG9pbnQuIgorKyAgICBzZXQgcndhdGNo ICJ3YXRjaCIKKysgICAgc2V0IHJ3YXRjaF9leHAgIkhhcmR3YXJlIHdhdGNocG9pbnQiCisrfQor KworK2ZvcmVhY2ggd3BzaXplICRzaXplcyB7CisrICAgIGZvciB7c2V0IHdwb2Zmc2V0IDB9IHsk d3BvZmZzZXQgPCA4IC8gJHdwc2l6ZX0ge2luY3Igd3BvZmZzZXR9IHsKKysJc2V0IHdwc3RhcnQg W2V4cHIgJHdwb2Zmc2V0ICogJHdwc2l6ZV0KKysJc2V0IHdwZW5kIFtleHByICgkd3BvZmZzZXQg KyAxKSAqICR3cHNpemVdCisrCXNldCB3cGVuZGFsaWduZWQgJGFsaWduZWRlbmQoJHdwZW5kKQor Kwlmb3JlYWNoIHJkc2l6ZSAkc2l6ZXMgeworKwkgICAgZm9yIHtzZXQgcmRvZmZzZXQgMH0geyRy ZG9mZnNldCA8IDggLyAkcmRzaXplfSB7aW5jciByZG9mZnNldH0geworKwkJc2V0IHJkc3RhcnQg W2V4cHIgJHJkb2Zmc2V0ICogJHJkc2l6ZV0KKysJCXNldCByZGVuZCBbZXhwciAoJHJkb2Zmc2V0 ICsgMSkgKiAkcmRzaXplXQorKwkJc2V0IGV4cGVjdF9oaXQgW2V4cHIgbWF4ICgkd3BzdGFydCwg JHJkc3RhcnQpIDwgbWluICgkd3BlbmQsICRyZGVuZCldCisrCQlzZXQgdGVzdCAiJHJ3YXRjaCBk YXRhLnUuc2l6ZSR3cHNpemVcWyR3cG9mZnNldFxdIgorKwkJc2V0IHdwbnVtICIiCisrCQlnZGJf dGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrCQkgICAgLXJlICIkcndhdGNoX2V4cCAoXFsw LTlcXSspOiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCQkJc2V0IHdwbnVtICRleHBlY3Rfb3V0 KDEsc3RyaW5nKQorKwkJICAgIH0KKysJCSAgICAtcmUgIkV4cHJlc3Npb24gY2Fubm90IGJlIGlt cGxlbWVudGVkIHdpdGggcmVhZC9hY2Nlc3Mgd2F0Y2hwb2ludC5cclxuJGdkYl9wcm9tcHQgJCIg eworKwkJCWlmIHskd3BzaXplID09IDggJiYgW2lzdGFyZ2V0ICJhcm0qLSotKiJdfSB7CisrCQkJ ICAgIHVudGVzdGVkICR0ZXN0CisrCQkJICAgIGNvbnRpbnVlCisrCQkJfQorKwkJCWZhaWwgJHRl c3QKKysJCSAgICB9CisrCQl9CisrCQlnZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJsZSBz aXplID0gJHJkc2l6ZSIgIiIKKysJCWdkYl90ZXN0X25vX291dHB1dCAic2V0IHZhcmlhYmxlIG9m ZnNldCA9ICRyZG9mZnNldCIgIiIKKysJCXNldCB0ZXN0ICJjb250aW51ZSIKKysJCXNldCBnb3Rf aGl0IDAKKysJCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysJCSAgICAtcmUgIiRy d2F0Y2hfZXhwICR3cG51bTouKmFsdWUgPSAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCQkJc2V0 IGdvdF9oaXQgMQorKwkJCXNlbmRfZ2RiICJjb250aW51ZVxuIgorKwkJCWV4cF9jb250aW51ZQor KwkJICAgIH0KKysJCSAgICAtcmUgIiBzdGFydF9hZ2FpbiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCQkgICAgfQorKwkJfQorKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkZWxldGUgJHdwbnVtIiAi IgorKwkJc2V0IHRlc3QgIndwKHNpemU9JHdwc2l6ZSBvZmZzZXQ9JHdwb2Zmc2V0KSByZChzaXpl PSRyZHNpemUgb2Zmc2V0PSRyZG9mZnNldCkgZXhwZWN0PSRleHBlY3RfaGl0IgorKwkJaWYgeyRl eHBlY3RfaGl0ID09ICRnb3RfaGl0fSB7CisrCQkgICAgcGFzcyAkdGVzdAorKwkJfSBlbHNlIHsK KysJCSAgICAjIFdlIGRvIG5vdCBrbm93IGlmIHdlIHJ1biBvbiBhIGZpeGVkIExpbnV4IGtlcm5l bAorKwkJICAgICMgb3Igbm90LiAgUmVwb3J0IFhGQUlMIG9ubHkgaW4gdGhlIEZBSUwgY2FzZS4K KysJCSAgICBpZiB7JGV4cGVjdF9oaXQgPT0gMCAmJiAkcmRzdGFydCA8ICR3cGVuZGFsaWduZWR9 IHsKKysJCQlzZXR1cF94ZmFpbCBleHRlcm5hbC8yMDIwNyAiYWFyY2g2NCotKi1saW51eCoiCisr CQkgICAgfQorKwkJICAgIGlmIHshJGV4cGVjdF9oaXQgJiYgW2V4cHIgbWF4ICgkd3BzdGFydCAv IDgsICRyZHN0YXJ0IC8gOCkgPCBtaW4gKCgkd3BlbmQgKyA3KSAvIDgsICgkcmRlbmQgKyA3KSAv IDgpXX0geworKwkJCXNldHVwX3hmYWlsIGJyZWFrcG9pbnRzLzIzMTMxICJwb3dlcnBjKi0qLSoi CisrCQkgICAgfQorKwkJICAgIGZhaWwgJHRlc3QKKysJCX0KKysJICAgIH0KKysJfQorKyAgICB9 CisrfQorKworK2ZvcmVhY2ggd3Bjb3VudCB7NCA3fSB7CisrICAgIGFycmF5IHNldCB3cG9mZnNl dF90b193cG51bSB7fQorKyAgICBmb3Ige3NldCB3cG9mZnNldCAxfSB7JHdwb2Zmc2V0IDw9ICR3 cGNvdW50fSB7aW5jciB3cG9mZnNldH0geworKwlzZXQgdGVzdCAiJHJ3YXRjaCBkYXRhLnUuc2l6 ZTFcWyR3cG9mZnNldFxdIgorKwlzZXQgd3BudW0gIiIKKysJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRl c3QgJHRlc3QgeworKwkgICAgLXJlICIkcndhdGNoX2V4cCAoXFswLTlcXSspOiAuKlxyXG4kZ2Ri X3Byb21wdCAkIiB7CisrCQlzZXQgd3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KSAkZXhwZWN0 X291dCgxLHN0cmluZykKKysJICAgIH0KKysJICAgIC1yZSAiVGhlcmUgYXJlIG5vdCBlbm91Z2gg YXZhaWxhYmxlIGhhcmR3YXJlIHJlc291cmNlcyBmb3IgdGhpcyB3YXRjaHBvaW50LlxyXG4kZ2Ri X3Byb21wdCAkIiB7CisrCQlpZiB7JHdwb2Zmc2V0ID4gMX0geworKwkJICAgIHNldHVwX3hmYWls IGJyZWFrcG9pbnRzLzIzMTMxICJwb3dlcnBjKi0qLSoiCisrCQkgICAgc2V0dXBfeGZhaWwgYnJl YWtwb2ludHMvMjMxMzEgImFybSotKi0qIgorKwkJfQorKwkJZmFpbCAkdGVzdAorKwkJc2V0IHdw b2Zmc2V0X3RvX3dwbnVtKCR3cG9mZnNldCkgMAorKwkgICAgfQorKwl9CisrICAgIH0KKysgICAg Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgc2l6ZSA9IDEiICIiCisrICAgIGdkYl90 ZXN0X25vX291dHB1dCAic2V0IHZhcmlhYmxlIG9mZnNldCA9IDEiICIiCisrICAgIHNldCB0ZXN0 ICJjb250aW51ZSIKKysgICAgc2V0IGdvdF9oaXQgMAorKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAk dGVzdCAkdGVzdCB7CisrCS1yZSAiXHJcbkNvdWxkIG5vdCBpbnNlcnQgaGFyZHdhcmUgd2F0Y2hw b2ludCAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCX0KKysJLXJlICIkcndhdGNoX2V4cCAkd3Bv ZmZzZXRfdG9fd3BudW0oMSk6LiphbHVlID0gLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAg c2V0IGdvdF9oaXQgMQorKwkgICAgc2VuZF9nZGIgImNvbnRpbnVlXG4iCisrCSAgICBleHBfY29u dGludWUKKysJfQorKwktcmUgIiBzdGFydF9hZ2FpbiAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Cisr CX0KKysgICAgfQorKyAgICBmb3Ige3NldCB3cG9mZnNldCAxfSB7JHdwb2Zmc2V0IDw9ICR3cGNv dW50fSB7aW5jciB3cG9mZnNldH0geworKwlpZiB7JHdwb2Zmc2V0X3RvX3dwbnVtKCR3cG9mZnNl dCl9IHsKKysJICAgIGdkYl90ZXN0X25vX291dHB1dCAiZGVsZXRlICR3cG9mZnNldF90b193cG51 bSgkd3BvZmZzZXQpIiAiIgorKwl9CisrICAgIH0KKysgICAgc2V0IHRlc3QgIndwY291bnQoJHdw Y291bnQpIgorKyAgICBpZiB7ISR3cG9mZnNldF90b193cG51bShbZXhwciAkd3Bjb3VudCAtIDFd KX0geworKwl1bnRlc3RlZCAkdGVzdAorKwljb250aW51ZQorKyAgICB9CisrICAgIGlmIHskd3Bj b3VudCA+IDR9IHsKKysJaWYgeyFbaXN0YXJnZXQgInMzOTAqLSotKiJdfSB7CisrCSAgICBzZXR1 cF9rZmFpbCB0ZGVwLzIyMzg5ICotKi0qCisrCX0KKysgICAgfQorKyAgICBnZGJfYXNzZXJ0ICRn b3RfaGl0ICR0ZXN0CisrfQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1cm4gLTEK Kyt9CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZpbmFsX3JldHVybiJd ICJCcmVha3BvaW50ICRkZWNpbWFsIGF0ICRoZXgiICJmaW5hbF9yZXR1cm4iCisrc2V0IHRlc3Qg e3dhdGNoIGRhdGEudS5zaXplOHR3aWNlWzFdfQorK3NldCB3cG51bSAiIgorK2dkYl90ZXN0X211 bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJIYXJkd2FyZSB3YXRjaHBvaW50IChcWzAt OVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJc2V0IHdwbnVtICRleHBlY3Rfb3V0KDEs c3RyaW5nKQorKyAgICB9CisrICAgIC1yZSAiV2F0Y2hwb2ludCAoXFswLTlcXSspOiAuKlxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCWlmIHtbaXN0YXJnZXQgImFybSotKi0qIl19IHsKKysJICAgIHVu dGVzdGVkICR0ZXN0CisrCSAgICBzZXQgd3BudW0gMAorKwl9CisrICAgIH0KKyt9CisraWYgeyR3 cG51bX0geworKyAgICBzZXQgdGVzdCAiY29udGludWUiCisrICAgIHNldCBnb3RfaGl0IDAKKysg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwktcmUgIlxyXG5Db3VsZCBub3Qg aW5zZXJ0IGhhcmR3YXJlIHdhdGNocG9pbnQgLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwl9Cisr CS1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCAkd3BudW06LipOZXcgdmFsdWUgPSAuKlxyXG4kZ2Ri X3Byb21wdCAkIiB7CisrCSAgICBzZXQgZ290X2hpdCAxCisrCSAgICBzZW5kX2dkYiAiY29udGlu dWVcbiIKKysJICAgIGV4cF9jb250aW51ZQorKwl9CisrCS1yZSAiIGZpbmFsX3JldHVybiAuKlxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCX0KKysgICAgfQorKyAgICBnZGJfYXNzZXJ0ICRnb3RfaGl0 ICJzaXplOHR3aWNlIHdyaXRlIgorK30KKy0tLSAuL2dkYi91dGlscy5jCTIwMTgtMDEtMDUgMDU6 MDc6MjMuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdXRpbHMuYwkyMDE4LTA1LTA1IDE3OjU0 OjE0LjExMTE0ODE3OSArMDIwMAorQEAgLTI5OTMsMjIgKzI5OTMsNiBAQCBnZGJfYWJzcGF0aCAo Y29uc3QgY2hhciAqcGF0aCkKKyAJICAgICBwYXRoLCAoY2hhciAqKSBOVUxMKSk7CisgfQorIAor LVVMT05HRVNUCistYWxpZ25fdXAgKFVMT05HRVNUIHYsIGludCBuKQorLXsKKy0gIC8qIENoZWNr IHRoYXQgTiBpcyByZWFsbHkgYSBwb3dlciBvZiB0d28uICAqLworLSAgZ2RiX2Fzc2VydCAobiAm JiAobiAmIChuLTEpKSA9PSAwKTsKKy0gIHJldHVybiAodiArIG4gLSAxKSAmIC1uOworLX0KKy0K Ky1VTE9OR0VTVAorLWFsaWduX2Rvd24gKFVMT05HRVNUIHYsIGludCBuKQorLXsKKy0gIC8qIENo ZWNrIHRoYXQgTiBpcyByZWFsbHkgYSBwb3dlciBvZiB0d28uICAqLworLSAgZ2RiX2Fzc2VydCAo biAmJiAobiAmIChuLTEpKSA9PSAwKTsKKy0gIHJldHVybiAodiAmIC1uKTsKKy19CistCisgLyog QWxsb2NhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGxpYmliZXJ0eSBoYXNoIHRhYmxlIHdoaWNoIHVz ZXMgYW4KKyAgICBvYnN0YWNrLiAgVGhlIG9ic3RhY2sgaXMgcGFzc2VkIGFzIERBVEEuICAqLwor IAorLS0tIC4vZ2RiL3V0aWxzLmgJMjAxOC0wMS0wNSAwNTowNzoyMy4wMDAwMDAwMDAgKzAxMDAK KysrKyAuL2dkYi91dGlscy5oCTIwMTgtMDUtMDUgMTc6NTQ6MTQuMTEyMTQ4MTg4ICswMjAwCitA QCAtNDk4LDM4ICs0OTgsNiBAQCBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0 IChwCisgCisgZXh0ZXJuIGludCBteXJlYWQgKGludCwgY2hhciAqLCBpbnQpOworIAorLS8qIEVu c3VyZSB0aGF0IFYgaXMgYWxpZ25lZCB0byBhbiBOIGJ5dGUgYm91bmRhcnkgKEIncyBhc3N1bWVk IHRvIGJlIGEKKy0gICBwb3dlciBvZiAyKS4gIFJvdW5kIHVwL2Rvd24gd2hlbiBuZWNlc3Nhcnku ICBFeGFtcGxlcyBvZiBjb3JyZWN0CistICAgdXNlIGluY2x1ZGU6CistCistICAgYWRkciA9IGFs aWduX3VwIChhZGRyLCA4KTsgLS0gVkFMVUUgbmVlZHMgOCBieXRlIGFsaWdubWVudAorLSAgIHdy aXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7CistICAgYWRkciArPSBsZW47CistCistICAg YW5kOgorLQorLSAgIHNwID0gYWxpZ25fZG93biAoc3AgLSBsZW4sIDE2KTsgLS0gS2VlcCBTUCAx NiBieXRlIGFsaWduZWQKKy0gICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKKy0KKy0g ICBOb3RlIHRoYXQgdXNlcyBzdWNoIGFzOgorLQorLSAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFs dWUsIGxlbik7CistICAgYWRkciArPSBhbGlnbl91cCAobGVuLCA4KTsKKy0KKy0gICBhbmQ6Cist CistICAgc3AgLT0gYWxpZ25fdXAgKGxlbiwgOCk7CistICAgd3JpdGVfbWVtb3J5IChzcCwgdmFs dWUsIGxlbik7CistCistICAgYXJlIHR5cGljYWxseSBub3QgY29ycmVjdCBhcyB0aGV5IGRvbid0 IGVuc3VyZSB0aGF0IHRoZSBhZGRyZXNzIChTUAorLSAgIG9yIEFERFIpIGlzIGNvcnJlY3RseSBh bGlnbmVkIChyZWx5aW5nIG9uIHByZXZpb3VzIGFsaWdubWVudCB0bworLSAgIGtlZXAgdGhpbmdz IHJpZ2h0KS4gIFRoaXMgaXMgYWxzbyB3aHkgdGhlIG1ldGhvZHMgYXJlIGNhbGxlZAorLSAgICJh bGlnbl8uLi4iIGluc3RlYWQgb2YgInJvdW5kXy4uLiIgYXMgdGhlIGxhdHRlciByZWFkcyBiZXR0 ZXIgd2l0aAorLSAgIHRoaXMgaW5jb3JyZWN0IGNvZGluZyBzdHlsZS4gICovCistCistZXh0ZXJu IFVMT05HRVNUIGFsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbik7CistZXh0ZXJuIFVMT05HRVNU IGFsaWduX2Rvd24gKFVMT05HRVNUIHYsIGludCBuKTsKKy0KKyAvKiBSZXNvdXJjZSBsaW1pdHMg dXNlZCBieSBnZXRybGltaXQgYW5kIHNldHJsaW1pdC4gICovCisgCisgZW51bSByZXNvdXJjZV9s aW1pdF9raW5kCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRj aCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2gKaW5kZXggMWJkNmRjYS4uMDIx NGI4MyAxMDA2NDQKLS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaAorKysg Yi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoCkBAIC0xMTcsMTEgKzExNywxMSBA QCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3Mtd3AucGF0 Y2gKICBnZGIvdGFyZ2V0LmggICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KICAxMCBmaWxl cyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdp dCBhL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKLWlu ZGV4IDA4ZTZmNGQ0ZmQuLmYwOGJmMDM5ZTQgMTAwNjQ0Ci0tLS0gYS9nZGIvYWFyY2g2NC1saW51 eC1uYXQuYwotKysrIGIvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKLUBAIC03NjcsNyArNzY3LDcg QEAgYWFyY2g2NF9saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMpCitJbmRleDogZ2RiLTguMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi04LjEub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3 OjU4OjMxLjA2MTQ5Njc0MSArMDIwMAorKysrIGdkYi04LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0 LmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NDk1MDkzMTMgKzAyMDAKK0BAIC03ODksNyArNzg5LDcg QEAKICBzdGF0aWMgaW50CiAgYWFyY2g2NF9saW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3Jh bmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LAogIAkJCQkJICAgIENPUkVfQUREUiBhZGRy LApAQCAtMTMwLDExICsxMzAsMTEgQEAgaW5kZXggMDhlNmY0ZDRmZC4uZjA4YmYwMzllNCAxMDA2 NDQKICB7CiAgICByZXR1cm4gc3RhcnQgPD0gYWRkciAmJiBzdGFydCArIGxlbmd0aCAtIDEgPj0g YWRkcjsKICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2FybS1saW51eC1uYXQuYyBiL2dkYi9hcm0tbGlu dXgtbmF0LmMKLWluZGV4IDNiN2FhNDBkYjguLjQ4ZGZlMjJjZTEgMTAwNjQ0Ci0tLS0gYS9nZGIv YXJtLWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvYXJtLWxpbnV4LW5hdC5jCi1AQCAtMTE3Nyw3ICsx MTc3LDcgQEAgYXJtX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9v cHMgKm9wcykKK0luZGV4OiBnZGItOC4xL2dkYi9hcm0tbGludXgtbmF0LmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItOC4xLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMx LjA2MjQ5Njc1MCArMDIwMAorKysrIGdkYi04LjEvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE4LTA1 LTA1IDE3OjU4OjMyLjQ0OTUwOTMxMyArMDIwMAorQEAgLTExNzcsNyArMTE3Nyw3IEBACiAgc3Rh dGljIGludAogIGFybV9saW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqdGFyZ2V0LAogIAkJCQkJQ09SRV9BRERSIGFkZHIsCkBAIC0xNDMsMTEgKzE0 MywxMSBAQCBpbmRleCAzYjdhYTQwZGI4Li40OGRmZTIyY2UxIDEwMDY0NAogIHsKICAgIHJldHVy biBzdGFydCA8PSBhZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0KLWRpZmYg LS1naXQgYS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYyBiL2dkYi9uYXQvYWFyY2g2 NC1saW51eC1ody1wb2ludC5jCi1pbmRleCBjZTI2ZjI4ZmFkLi5lOWViYzVmYmE4IDEwMDY0NAot LS0tIGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMKLSsrKyBiL2dkYi9uYXQvYWFy Y2g2NC1saW51eC1ody1wb2ludC5jCi1AQCAtMTExLDcgKzExMSw3IEBAIGFhcmNoNjRfcG9pbnRf ZW5jb2RlX2N0cmxfcmVnIChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCitJ bmRleDogZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi04LjEub3JpZy9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwkyMDE4 LTA1LTA1IDE3OjU4OjMxLjA2MjQ5Njc1MCArMDIwMAorKysrIGdkYi04LjEvZ2RiL25hdC9hYXJj aDY0LWxpbnV4LWh3LXBvaW50LmMJMjAxOC0wNS0wNSAxNzo1OToxNi42MTY5MDkzODIgKzAyMDAK K0BAIC0xMzcsNyArMTM3LDcgQEAKICAgICBSZXR1cm4gMCBmb3IgYW55IG5vbi1jb21wbGlhbnQg QUREUiBhbmQvb3IgTEVOOyByZXR1cm4gMSBvdGhlcndpc2UuICAqLwogIAogIHN0YXRpYyBpbnQK QEAgLTE1NiwyMCArMTU2LDE5IEBAIGluZGV4IGNlMjZmMjhmYWQuLmU5ZWJjNWZiYTggMTAwNjQ0 CiAgewogICAgdW5zaWduZWQgaW50IGFsaWdubWVudCA9IDA7CiAgCi1AQCAtMTgwLDkgKzE4MCwx MCBAQCBhYXJjaDY0X3BvaW50X2lzX2FsaWduZWQgKGludCBpc193YXRjaHBvaW50LCBDT1JFX0FE RFIgYWRkciwgaW50IGxlbikKLSAgICBsaW1pdGF0aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxheGVk IHdpdGggc29tZSBmdXJ0aGVyIHdvcmsuICAqLworQEAgLTIxMiw5ICsyMTIsOSBAQAorICAgIGFu IGFkZHJlc3Mgd2l0aGluIHRoZSBsYXR0ZXIuICovCiAgCiAgc3RhdGljIHZvaWQKIC1hYXJjaDY0 X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBDT1JFX0FERFIgKmFs aWduZWRfYWRkcl9wLAotK2FhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs IExPTkdFU1QgbGVuLAotKwkJCSAgQ09SRV9BRERSICphbGlnbmVkX2FkZHJfcCwKLSAJCQkgIGlu dCAqYWxpZ25lZF9sZW5fcCwgQ09SRV9BRERSICpuZXh0X2FkZHJfcCwKLS0JCQkgIGludCAqbmV4 dF9sZW5fcCkKLSsJCQkgIExPTkdFU1QgKm5leHRfbGVuX3ApCisrYWFyY2g2NF9hbGlnbl93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIENPUkVfQUREUiAqYWxpZ25lZF9h ZGRyX3AsCisgCQkJICBpbnQgKmFsaWduZWRfb2Zmc2V0X3AsIGludCAqYWxpZ25lZF9sZW5fcCwK Ky0JCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX3AsIGludCAqbmV4dF9sZW5fcCwKKysJCQkgIENP UkVfQUREUiAqbmV4dF9hZGRyX3AsIExPTkdFU1QgKm5leHRfbGVuX3AsCisgCQkJICBDT1JFX0FE RFIgKm5leHRfYWRkcl9vcmlnX3ApCiAgewogICAgaW50IGFsaWduZWRfbGVuOwotICAgdW5zaWdu ZWQgaW50IG9mZnNldDsKLUBAIC01MDEsNyArNTAyLDcgQEAgYWFyY2g2NF9oYW5kbGVfYWxpZ25l ZF93YXRjaHBvaW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCitAQCAtNjExLDcgKzYx MSw3IEBACiAgCiAgc3RhdGljIGludAogIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBv aW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsCkBAIC0xNzcsMjAgKzE3NiwyMyBAQCBp bmRleCBjZTI2ZjI4ZmFkLi5lOWViYzVmYmE4IDEwMDY0NAogKwkJCQkgICAgIENPUkVfQUREUiBh ZGRyLCBMT05HRVNUIGxlbiwgaW50IGlzX2luc2VydCwKICAJCQkJICAgICBzdHJ1Y3QgYWFyY2g2 NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlKQogIHsKLSAgIHdoaWxlIChsZW4gPiAwKQotQEAgLTUy NCw5ICs1MjUsOSBAQCBhYXJjaDY0X2hhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludCAoZW51bSB0 YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAotIAkJICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIgotIAkJICAgICAgImFsaWduZWRfYWRkcjogJXMsIGFsaWduZWRfbGVuOiAlZFxuIgor ICAgQ09SRV9BRERSIGFkZHJfb3JpZyA9IGFkZHI7CitAQCAtNjQxLDEyICs2NDEsMTIgQEAKICAJ CSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLS0JCSAgICAgICJuZXh0 X2FkZHI6ICVzLCAgICBuZXh0X2xlbjogJWRcbiIsCi0rCQkgICAgICAibmV4dF9hZGRyOiAlcywg ICAgbmV4dF9sZW46ICVzXG4iLAorIAkJICAgICAgImFkZHJfb3JpZzogJXNcbiIKKyAJCSAgICAg ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKy0JCSAgICAgICJuZXh0X2FkZHI6 ICVzLCAgICBuZXh0X2xlbjogJWRcbiIKKysJCSAgICAgICJuZXh0X2FkZHI6ICVzLCAgICBuZXh0 X2xlbjogJXNcbiIKKyAJCSAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgCQkg ICAgICAiYWRkcl9vcmlnX25leHQ6ICVzXG4iLAogIAkJICAgICAgaXNfaW5zZXJ0LCBjb3JlX2Fk ZHJfdG9fc3RyaW5nX256IChhbGlnbmVkX2FkZHIpLAotLQkJICAgICAgYWxpZ25lZF9sZW4sIGNv cmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4pOwotKwkJICAgICAgYWxpZ25lZF9sZW4s IGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBwbG9uZ2VzdCAobGVuKSk7CisgCQkgICAg ICBhbGlnbmVkX2xlbiwgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAoYWRkcl9vcmlnKSwKKy0JCSAg ICAgIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBsZW4sCisrCQkgICAgICBjb3JlX2Fk ZHJfdG9fc3RyaW5nX256IChhZGRyKSwgcGxvbmdlc3QgKGxlbiksCisgCQkgICAgICBjb3JlX2Fk ZHJfdG9fc3RyaW5nX256IChhZGRyX29yaWdfbmV4dCkpOwogIAotICAgICAgIGlmIChyZXQgIT0g MCkKLSAJcmV0dXJuIHJldDsKLUBAIC01MzcsNyArNTM4LDcgQEAgYWFyY2g2NF9oYW5kbGVfdW5h bGlnbmVkX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwKKyAgICAgICBh ZGRyX29yaWcgPSBhZGRyX29yaWdfbmV4dDsKK0BAIC02NjAsNyArNjYwLDcgQEAKICAKICBpbnQK ICBhYXJjaDY0X2hhbmRsZV93YXRjaHBvaW50IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUs IENPUkVfQUREUiBhZGRyLApAQCAtMTk5LDcgKzIwMSw3IEBAIGluZGV4IGNlMjZmMjhmYWQuLmU5 ZWJjNWZiYTggMTAwNjQ0CiAgCQkJICAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpz dGF0ZSkKICB7CiAgICBpZiAoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkICgxIC8qIGlzX3dhdGNo cG9pbnQgKi8gLCBhZGRyLCBsZW4pKQotQEAgLTU4OCwxNCArNTg5LDE0IEBAIGFhcmNoNjRfbGlu dXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAq c3RhdGUsCitAQCAtNzIyLDE0ICs3MjIsMTQgQEAKICB2b2lkCiAgYWFyY2g2NF9zaG93X2RlYnVn X3JlZ19zdGF0ZSAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAJCQkg ICAgICBjb25zdCBjaGFyICpmdW5jLCBDT1JFX0FERFIgYWRkciwKQEAgLTIxNywxMSArMjE5LDEx IEBAIGluZGV4IGNlMjZmMjhmYWQuLmU5ZWJjNWZiYTggMTAwNjQ0CiAgCQkgIHR5cGUgPT0gaHdf d3JpdGUgPyAiaHctd3JpdGUtd2F0Y2hwb2ludCIKICAJCSAgOiAodHlwZSA9PSBod19yZWFkID8g Imh3LXJlYWQtd2F0Y2hwb2ludCIKICAJCSAgICAgOiAodHlwZSA9PSBod19hY2Nlc3MgPyAiaHct YWNjZXNzLXdhdGNocG9pbnQiCi1kaWZmIC0tZ2l0IGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmggYi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAotaW5kZXggN2M0MmI5 NmQxYi4uZTFkNGZjOGRiYyAxMDA2NDQKLS0tLSBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1w b2ludC5oCi0rKysgYi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAotQEAgLTE3Miw3 ICsxNzIsNyBAQCBpbnQgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRfaHdf YnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRkciwKK0luZGV4OiBnZGItOC4xL2dkYi9uYXQvYWFy Y2g2NC1saW51eC1ody1wb2ludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTguMS5vcmlnL2dkYi9u YXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5oCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDYyNDk2NzUw ICswMjAwCisrKysgZ2RiLTguMS9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuaAkyMDE4 LTA1LTA1IDE3OjU4OjMyLjQ1MDUwOTMyMiArMDIwMAorQEAgLTE3Niw3ICsxNzYsNyBAQAogIAkJ CSAgICAgICBpbnQgbGVuLCBpbnQgaXNfaW5zZXJ0LAogIAkJCSAgICAgICBzdHJ1Y3QgYWFyY2g2 NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlKTsKICBpbnQgYWFyY2g2NF9oYW5kbGVfd2F0Y2hwb2lu dCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRkciwKQEAgLTIyOSw4 ICsyMzEsOCBAQCBpbmRleCA3YzQyYjk2ZDFiLi5lMWQ0ZmM4ZGJjIDEwMDY0NAogKwkJCSAgICAg ICBMT05HRVNUIGxlbiwgaW50IGlzX2luc2VydCwKICAJCQkgICAgICAgc3RydWN0IGFhcmNoNjRf ZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7CiAgCi0gdm9pZCBhYXJjaDY0X2xpbnV4X3NldF9kZWJ1 Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAotQEAg LTE4MCw3ICsxODAsNyBAQCB2b2lkIGFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3MgKGNvbnN0 IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgdm9pZCBhYXJjaDY0X2xp bnV4X3NldF9kZWJ1Z19yZWdzIChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRl LAorQEAgLTE4NCw3ICsxODQsNyBAQAogIAogIHZvaWQgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19z dGF0ZSAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAJCQkJICAgY29u c3QgY2hhciAqZnVuYywgQ09SRV9BRERSIGFkZHIsCkBAIC0yMzksMTEgKzI0MSwxMSBAQCBpbmRl eCA3YzQyYjk2ZDFiLi5lMWQ0ZmM4ZGJjIDEwMDY0NAogIAogIHZvaWQgYWFyY2g2NF9saW51eF9n ZXRfZGVidWdfcmVnX2NhcGFjaXR5IChpbnQgdGlkKTsKICAKLWRpZmYgLS1naXQgYS9nZGIvcHBj LWxpbnV4LW5hdC5jIGIvZ2RiL3BwYy1saW51eC1uYXQuYwotaW5kZXggNGE4MjQzNGMwZC4uNDlh MjdkOGRhYSAxMDA2NDQKLS0tLSBhL2dkYi9wcGMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9wcGMt bGludXgtbmF0LmMKLUBAIC0xNzk4LDExICsxNzk4LDExIEBAIGNhbl91c2Vfd2F0Y2hwb2ludF9j b25kX2FjY2VsICh2b2lkKQorSW5kZXg6IGdkYi04LjEvZ2RiL3BwYy1saW51eC1uYXQuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi04LjEub3JpZy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTgtMDUtMDUg MTc6NTg6MzEuMDYzNDk2NzU5ICswMjAwCisrKysgZ2RiLTguMS9nZGIvcHBjLWxpbnV4LW5hdC5j CTIwMTgtMDUtMDUgMTc6NTg6MzIuNDUwNTA5MzIyICswMjAwCitAQCAtMTc5OCwxMSArMTc5OCwx MSBAQAogICAgIENPTkRJVElPTl9WQUxVRSB3aWxsIGhvbGQgdGhlIHZhbHVlIHdoaWNoIHNob3Vs ZCBiZSBwdXQgaW4gdGhlCiAgICAgRFZDIHJlZ2lzdGVyLiAgKi8KICBzdGF0aWMgdm9pZApAQCAt MjU4LDcgKzI2MCw3IEBAIGluZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CiAgICBD T1JFX0FERFIgYWRkcl9lbmRfZGF0YSwgYWRkcl9lbmRfZHZjOwogIAogICAgLyogVGhlIERWQyBy ZWdpc3RlciBjb21wYXJlcyBieXRlcyB3aXRoaW4gZml4ZWQtbGVuZ3RoIHdpbmRvd3Mgd2hpY2gK LUBAIC0xODg5LDcgKzE4ODksNyBAQCBudW1fbWVtb3J5X2FjY2Vzc2VzIChzdHJ1Y3QgdmFsdWUg KnYpCitAQCAtMTg4OSw3ICsxODg5LDcgQEAKICAgICBvZiB0aGUgY29uc3RhbnQuICAqLwogIHN0 YXRpYyBpbnQKICBjaGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqY29uZCwKQEAgLTI2Nyw3ICsyNjksNyBAQCBpbmRleCA0YTgyNDM0YzBkLi40 OWEyN2Q4ZGFhIDEwMDY0NAogIHsKICAgIGludCBwYyA9IDEsIG51bV9hY2Nlc3Nlc19sZWZ0LCBu dW1fYWNjZXNzZXNfcmlnaHQ7CiAgICBzdHJ1Y3QgdmFsdWUgKmxlZnRfdmFsLCAqcmlnaHRfdmFs LCAqbGVmdF9jaGFpbiwgKnJpZ2h0X2NoYWluOwotQEAgLTE5NTcsNyArMTk1Nyw3IEBAIGNoZWNr X2NvbmRpdGlvbiAoQ09SRV9BRERSIHdhdGNoX2FkZHIsIHN0cnVjdCBleHByZXNzaW9uICpjb25k LAorQEAgLTE5NTcsNyArMTk1Nyw3IEBACiAgICAgdHJ1ZS4gICovCiAgc3RhdGljIGludAogIHBw Y19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3Bz ICpzZWxmLApAQCAtMjc2LDcgKzI3OCw3IEBAIGluZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEg MTAwNjQ0CiAgCQkJCQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIENPUkVfQURE UiBkYXRhX3ZhbHVlOwotQEAgLTE5NzQsNyArMTk3NCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxf d2F0Y2hwb2ludF9jb25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAorQEAgLTE5NzQs NyArMTk3NCw3IEBACiAgCiAgc3RhdGljIHZvaWQKICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0 IChzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKnAsIENPUkVfQUREUiBhZGRyLApAQCAtMjg1LDcg KzI4Nyw3IEBAIGluZGV4IDRhODI0MzRjMGQuLjQ5YTI3ZDhkYWEgMTAwNjQ0CiAgCQkJICAgc3Ry dWN0IGV4cHJlc3Npb24gKmNvbmQsIGludCBpbnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1A QCAtMjI0MCw3ICsyMjQwLDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcykKK0BAIC0yMjQwLDcgKzIyNDAsNyBAQAogIHN0YXRpYyBpbnQK ICBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9v cHMgKnRhcmdldCwKICAJCQkJCUNPUkVfQUREUiBhZGRyLApAQCAtMjk0LDExICsyOTYsMTEgQEAg aW5kZXggNGE4MjQzNGMwZC4uNDlhMjdkOGRhYSAxMDA2NDQKICB7CiAgICBpbnQgbWFzazsKICAK LWRpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMKLWluZGV4IDg4N2YxMjAx ZmUuLmVkZDFiZTYzMmEgMTAwNjQ0Ci0tLS0gYS9nZGIvcHJvY2ZzLmMKLSsrKyBiL2dkYi9wcm9j ZnMuYwotQEAgLTE1NjMsNyArMTU2Myw3IEBAIHByb2Nmc19hZGRyZXNzX3RvX2hvc3RfcG9pbnRl ciAoQ09SRV9BRERSIGFkZHIpCitJbmRleDogZ2RiLTguMS9nZGIvcHJvY2ZzLmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItOC4xLm9yaWcvZ2RiL3Byb2Nmcy5jCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDY0 NDk2NzY4ICswMjAwCisrKysgZ2RiLTguMS9nZGIvcHJvY2ZzLmMJMjAxOC0wNS0wNSAxNzo1ODoz Mi40NTE1MDkzMzEgKzAyMDAKK0BAIC0xNTYzLDcgKzE1NjMsNyBAQAogIH0KICAKICBzdGF0aWMg aW50CkBAIC0zMDcsNyArMzA5LDcgQEAgaW5kZXggODg3ZjEyMDFmZS4uZWRkMWJlNjMyYSAxMDA2 NDQKICB7CiAgICBzdHJ1Y3QgewogICAgICBwcm9jZnNfY3RsX3QgY21kOwotQEAgLTMyNTAsNyAr MzI1MCw3IEBAIHByb2Nmc19waWRfdG9fc3RyIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBwdGlk X3QgcHRpZCkKK0BAIC0zMjUwLDcgKzMyNTAsNyBAQAogIC8qIEluc2VydCBhIHdhdGNocG9pbnQu ICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTMxNiwxMSArMzE4LDExIEBAIGluZGV4IDg4N2YxMjAx ZmUuLmVkZDFiZTYzMmEgMTAwNjQ0CiAgCQkgICAgICAgaW50IGFmdGVyKQogIHsKICAgIGludCAg ICAgICBwZmxhZ3MgPSAwOwotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUu YwotaW5kZXggOTRkNTU5NDE3NS4uODY3NzdmMWU1ZSAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUu YwotKysrIGIvZ2RiL3JlbW90ZS5jCi1AQCAtOTg5Nyw3ICs5ODk3LDcgQEAgcmVtb3RlX2luc2Vy dF93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4sCitJbmRleDogZ2RiLTguMS9nZGIvcmVtb3RlLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt OC4xLm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTgtMDUtMDUgMTc6NTg6MzEuMDY2NDk2Nzg2ICswMjAw CisrKysgZ2RiLTguMS9nZGIvcmVtb3RlLmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NTI1MDkzNDAg KzAyMDAKK0BAIC05ODk3LDcgKzk4OTcsNyBAQAogICAgcCA9IHN0cmNociAocnMtPmJ1ZiwgJ1ww Jyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJlc3NfbWFza2VkIChhZGRyKTsKICAgIHAgKz0gaGV4 bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIpOwpAQCAtMzI5LDcgKzMzMSw3IEBAIGluZGV4IDk0 ZDU1OTQxNzUuLjg2Nzc3ZjFlNWUgMTAwNjQ0CiAgCiAgICBwdXRwa3QgKHJzLT5idWYpOwogICAg Z2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7Ci1AQCAtOTkxNyw3ICs5OTE3LDcg QEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09S RV9BRERSIGFkZHIsIGludCBsZW4sCitAQCAtOTkxNyw3ICs5OTE3LDcgQEAKICAKICBzdGF0aWMg aW50CiAgcmVtb3RlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRf b3BzICp0YXJnZXQsIENPUkVfQUREUiBhZGRyLApAQCAtMzM4LDcgKzM0MCw3IEBAIGluZGV4IDk0 ZDU1OTQxNzUuLjg2Nzc3ZjFlNWUgMTAwNjQ0CiAgewogICAgQ09SRV9BRERSIGRpZmYgPSByZW1v dGVfYWRkcmVzc19tYXNrZWQgKGFkZHIgLSBzdGFydCk7CiAgCi1AQCAtOTk0Niw3ICs5OTQ2LDcg QEAgcmVtb3RlX3JlbW92ZV93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09S RV9BRERSIGFkZHIsIGludCBsZW4sCitAQCAtOTk0Niw3ICs5OTQ2LDcgQEAKICAgIHAgPSBzdHJj aHIgKHJzLT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRk cik7CiAgICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTM0NywxMSAr MzQ5LDExIEBAIGluZGV4IDk0ZDU1OTQxNzUuLjg2Nzc3ZjFlNWUgMTAwNjQ0CiAgICBwdXRwa3Qg KHJzLT5idWYpOwogICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7CiAgCi1k aWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYyBiL2dkYi90YXJnZXQtZGVsZWdhdGVz LmMKLWluZGV4IDJiNDQ5Y2JmMDEuLmY3MjUyMTVmZmYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0 LWRlbGVnYXRlcy5jCi0rKysgYi9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCi1AQCAtNzMzLDE0ICs3 MzMsMTQgQEAgZGVidWdfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICpz ZWxmLCBDT1JFX0FERFIgKmFyZzEpCitJbmRleDogZ2RiLTguMS9nZGIvdGFyZ2V0LWRlbGVnYXRl cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTguMS5vcmlnL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMJ MjAxOC0wNS0wNSAxNzo1ODoyNS4zMjE0NDQ3NDcgKzAyMDAKKysrKyBnZGItOC4xL2dkYi90YXJn ZXQtZGVsZWdhdGVzLmMJMjAxOC0wNS0wNSAxNzo1ODozMi40NTM1MDkzNDkgKzAyMDAKK0BAIC03 MzMsMTQgKzczMywxNCBAQAogIH0KICAKICBzdGF0aWMgaW50CkBAIC0zNjgsNyArMzcwLDcgQEAg aW5kZXggMmI0NDljYmYwMS4uZjcyNTIxNWZmZiAxMDA2NDQKICB7CiAgICBpbnQgcmVzdWx0Owog ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiLT4gJXMtPnRvX3dhdGNocG9pbnRf YWRkcl93aXRoaW5fcmFuZ2UgKC4uLilcbiIsIGRlYnVnX3RhcmdldC50b19zaG9ydG5hbWUpOwot QEAgLTc1Miw3ICs3NTIsNyBAQCBkZWJ1Z193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChz dHJ1Y3QgdGFyZ2V0X29wcyAqc2VsZiwgQ09SRV9BRERSIGFyZzEsIENPUgorQEAgLTc1Miw3ICs3 NTIsNyBAQAogICAgZnB1dHNfdW5maWx0ZXJlZCAoIiwgIiwgZ2RiX3N0ZGxvZyk7CiAgICB0YXJn ZXRfZGVidWdfcHJpbnRfQ09SRV9BRERSIChhcmcyKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIs ICIsIGdkYl9zdGRsb2cpOwpAQCAtMzc3LDcgKzM3OSw3IEBAIGluZGV4IDJiNDQ5Y2JmMDEuLmY3 MjUyMTVmZmYgMTAwNjQ0CiAgICBmcHV0c191bmZpbHRlcmVkICgiKSA9ICIsIGdkYl9zdGRsb2cp OwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X2ludCAocmVzdWx0KTsKICAgIGZwdXRzX3VuZmlsdGVy ZWQgKCJcbiIsIGdkYl9zdGRsb2cpOwotQEAgLTc4NSwyMCArNzg1LDIwIEBAIGRlYnVnX3JlZ2lv bl9va19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsIENPUkVfQURE UiBhcmcxLCBMT05HCitAQCAtNzg1LDIwICs3ODUsMjAgQEAKICB9CiAgCiAgc3RhdGljIGludApA QCAtNDAxLDcgKzQwMyw3IEBAIGluZGV4IDJiNDQ5Y2JmMDEuLmY3MjUyMTVmZmYgMTAwNjQ0CiAg ewogICAgaW50IHJlc3VsdDsKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIi0+ ICVzLT50b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKC4uLilcbiIsIGRlYnVnX3Rh cmdldC50b19zaG9ydG5hbWUpOwotQEAgLTgwOCw3ICs4MDgsNyBAQCBkZWJ1Z19jYW5fYWNjZWxf d2F0Y2hwb2ludF9jb25kaXRpb24gKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIg YXJnMSwgaQorQEAgLTgwOCw3ICs4MDgsNyBAQAogICAgZnB1dHNfdW5maWx0ZXJlZCAoIiwgIiwg Z2RiX3N0ZGxvZyk7CiAgICB0YXJnZXRfZGVidWdfcHJpbnRfQ09SRV9BRERSIChhcmcxKTsKICAg IGZwdXRzX3VuZmlsdGVyZWQgKCIsICIsIGdkYl9zdGRsb2cpOwpAQCAtNDEwLDExICs0MTIsMTEg QEAgaW5kZXggMmI0NDljYmYwMS4uZjcyNTIxNWZmZiAxMDA2NDQKICAgIGZwdXRzX3VuZmlsdGVy ZWQgKCIsICIsIGdkYl9zdGRsb2cpOwogICAgdGFyZ2V0X2RlYnVnX3ByaW50X2ludCAoYXJnMyk7 CiAgICBmcHV0c191bmZpbHRlcmVkICgiLCAiLCBnZGJfc3RkbG9nKTsKLWRpZmYgLS1naXQgYS9n ZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IGExYWM2ZDA2OTcuLmViMDUzOGNiODIg MTAwNjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTUzLDcg KzUzLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJpY190bHNfZXJyb3IgKHZvaWQpIEFUVFJJQlVURV9O T1JFVFVSTjsKK0luZGV4OiBnZGItOC4xL2dkYi90YXJnZXQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi04LjEub3JpZy9nZGIvdGFyZ2V0LmMJMjAxOC0wNS0wNSAxNzo1ODozMS4wNjg0OTY4MDQgKzAy MDAKKysrKyBnZGItOC4xL2dkYi90YXJnZXQuYwkyMDE4LTA1LTA1IDE3OjU4OjMyLjQ1MzUwOTM0 OSArMDIwMAorQEAgLTUzLDcgKzUzLDcgQEAKICBzdGF0aWMgdm9pZCBkZWZhdWx0X3Rlcm1pbmFs X2luZm8gKHN0cnVjdCB0YXJnZXRfb3BzICosIGNvbnN0IGNoYXIgKiwgaW50KTsKICAKICBzdGF0 aWMgaW50IGRlZmF1bHRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdl dF9vcHMgKiwKQEAgLTQyMyw3ICs0MjUsNyBAQCBpbmRleCBhMWFjNmQwNjk3Li5lYjA1MzhjYjgy IDEwMDY0NAogIAogIHN0YXRpYyBpbnQgZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9p bnQgKHN0cnVjdCB0YXJnZXRfb3BzICosCiAgCQkJCQkJQ09SRV9BRERSLCBMT05HRVNUKTsKLUBA IC0zMTIwLDcgKzMxMjAsNyBAQCBkZWZhdWx0X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAo c3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCitAQCAtMzEyMCw3ICszMTIwLDcgQEAKICBzdGF0aWMg aW50CiAgZGVmYXVsdF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqdGFyZ2V0LAogIAkJCQkgICAgICBDT1JFX0FERFIgYWRkciwKQEAgLTQzMiwxMSArNDM0 LDExIEBAIGluZGV4IGExYWM2ZDA2OTcuLmViMDUzOGNiODIgMTAwNjQ0CiAgewogICAgcmV0dXJu IGFkZHIgPj0gc3RhcnQgJiYgYWRkciA8IHN0YXJ0ICsgbGVuZ3RoOwogIH0KLWRpZmYgLS1naXQg YS9nZGIvdGFyZ2V0LmggYi9nZGIvdGFyZ2V0LmgKLWluZGV4IDdhNzBjM2Y2ZGEuLjM1ZWVlOTFh ODMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LmgKLSsrKyBiL2dkYi90YXJnZXQuaAotQEAgLTUz NSw3ICs1MzUsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcworSW5kZXg6IGdkYi04LjEvZ2RiL3Rhcmdl dC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTguMS5vcmlnL2dkYi90YXJnZXQuaAkyMDE4LTA1LTA1 IDE3OjU4OjMxLjA2ODQ5NjgwNCArMDIwMAorKysrIGdkYi04LjEvZ2RiL3RhcmdldC5oCTIwMTgt MDUtMDUgMTc6NTg6MzIuNDU0NTA5MzU4ICswMjAwCitAQCAtNTM1LDcgKzUzNSw3IEBACiAgICAg IGludCAoKnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKSAoc3RydWN0IHRhcmdldF9vcHMgKiwgQ09S RV9BRERSICopCiAgICAgICAgVEFSR0VUX0RFRkFVTFRfUkVUVVJOICgwKTsKICAgICAgaW50ICgq dG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSkgKHN0cnVjdCB0YXJnZXRfb3BzICosCkBA IC00NDUsNyArNDQ3LDcgQEAgaW5kZXggN2E3MGMzZjZkYS4uMzVlZWU5MWE4MyAxMDA2NDQKICAg ICAgICBUQVJHRVRfREVGQVVMVF9GVU5DIChkZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5f cmFuZ2UpOwogIAogICAgICAvKiBEb2N1bWVudGF0aW9uIG9mIHRoaXMgcm91dGluZSBpcyBwcm92 aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCi1AQCAtNTQ1LDcgKzU0NSw3IEBAIHN0cnVjdCB0 YXJnZXRfb3BzCitAQCAtNTQ1LDcgKzU0NSw3IEBACiAgICAgICAgVEFSR0VUX0RFRkFVTFRfRlVO QyAoZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpOwogIAogICAgICBpbnQgKCp0 b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLApA QCAtNDU0LDYgKzQ1NiwzIEBAIGluZGV4IDdhNzBjM2Y2ZGEuLjM1ZWVlOTFhODMgMTAwNjQ0CiAg CQkJCQkgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKQogICAgICAgIFRBUkdFVF9ERUZBVUxUX1JF VFVSTiAoMCk7CiAgICAgIGludCAoKnRvX21hc2tlZF93YXRjaF9udW1fcmVnaXN0ZXJzKSAoc3Ry dWN0IHRhcmdldF9vcHMgKiwKLS0tIAotMi4xNC4zCi0KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBi L2dkYi5zcGVjCmluZGV4IGUyNTgwMDEuLjY2ZTM1MjggMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisr KyBiL2dkYi5zcGVjCkBAIC0yNiw3ICsyNiw3IEBAIFZlcnNpb246IDguMQogCiAjIFRoZSByZWxl YXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBh dCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkg cnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDE0 JXs/ZGlzdH0KK1JlbGVhc2U6IDE1JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2 Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMg YW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIExHUEx2MysgYW5kIEJTRCBhbmQgUHVibGljIERvbWFp biBhbmQgR0ZETAogR3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwpAQCAtMTg4LDYgKzE4OCw5 IEBAIFBhdGNoMTA0NDogZ2RiLXBhaG9sZS1weXRob24yLnBhdGNoCiAjIz1mZWRvcmF0ZXN0CiBQ YXRjaDExMTk6IGdkYi10ZXN0c3VpdGUtcmVhZGxpbmU2My1zaWdpbnQtcmV2ZXJ0LnBhdGNoCiAK KyMgW2FhcmNoNjRdIEZpeCBtaXNzZWQgdW5hbGlnbmVkIGhhcmR3YXJlIHdhdGNocG9pbnRzIChS SCBCWiAxMzQ3OTkzKS4KK1BhdGNoMTI3ODogZ2RiLXJoYnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0 Y2hwb2ludC5wYXRjaAorCiAjIEluY2x1ZGUgdGhlIGF1dG8tZ2VuZXJhdGVkIGZpbGUgY29udGFp bmluZyB0aGUgIlBhdGNoOiIgZGlyZWN0aXZlcy4KICMgU2VlIFJFQURNRS5sb2NhbC1wYXRjaGVz IGZvciBtb3JlIGRldGFpbHMuCiBTb3VyY2U4OiBfZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAt NDEzLDYgKzQxNiw4IEBAIHRhciB4emYgJXtTT1VSQ0U3fQogKQogJWVuZGlmCiAKKyVwYXRjaDEy NzggLXAxCisKICMgRmlsZXMgaGF2ZSBgIyA8bnVtYmVyPiA8ZmlsZT4nIHN0YXRlbWVudHMgYnJl YWtpbmcgVlBBVEggLyBmaW5kLWRlYnVnaW5mby5zaCAuCiAoY2QgZ2RiO3JtIC1mdiAkKHBlcmwg LXBlICdzL1xcXG4vIC8nIDxNYWtlZmlsZS5pbnxzZWQgLW4gJ3MvXllZRklMRVMgPSAvL3AnKSkK IApAQCAtMTAyNiw2ICsxMDMxLDkgQEAgdGhlbgogZmkKIAogJWNoYW5nZWxvZworKiBTYXQgTWF5 ICA1IDIwMTggSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gOC4x LTE1LmZjMjgKKy0gW2FhcmNoNjRdIEZpeCBtaXNzZWQgdW5hbGlnbmVkIGhhcmR3YXJlIHdhdGNo cG9pbnRzIChSSCBCWiAxMzQ3OTkzKS4KKwogKiBNb24gQXByICAyIDIwMTggSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gOC4xLTE0LmZjMjgKIC0gUmV2ZXJ0ICdG aXggUERGIGJ1aWxkIG9uIFJhd2hpZGUvRi0yOScsIHJtIC1yZiB0ZXhpbmZvLyAoZnJvbSBSSCBC WiAxNTYyNTgwKS4KIAo=