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] fix-dup-patch: Rename "set auto-load" patchset variable $ddir to $datadir. Date: Thu, 23 Jul 2026 18:30:26 GMT Message-ID: <178483142665.1.5669494763383465813.rpms-gdb-43d8d62a0303@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 43d8d62a0303c21cbc3f578085e31a50099fa045 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogNDNkOGQ2MmEwMzAzYzIxY2JjM2Y1NzgwODVlMzFhNTAw OTlmYTA0NQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMi0wNS0xNFQxNTo1NDo0NCswMjowMApTdGF0cyAgOiArNzE0NS8tNjM3 MSBpbiA1MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvZ2RiL2MvNDNkOGQ2MmEwMzAzYzIxY2JjM2Y1NzgwODVlMzFhNTAwOTlmYTA0NT9icmFuY2g9 Zml4LWR1cC1wYXRjaAoKTG9nOgpSZW5hbWUgInNldCBhdXRvLWxvYWQiIHBhdGNoc2V0IHZhcmlh YmxlICRkZGlyIHRvICRkYXRhZGlyLgoKLS0tCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDFv ZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTAxb2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZDMyYjIxZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDFvZjIyLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwMi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEyLzAxLzI0IDE5OjEyOjMxCTEuMTM3NzEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzAxLzI0IDIwOjU2OjMzCTEuMTM3NzIKLSMjIC0xLDMgKzEsMTIgQEAKLSsyMDEyLTAxLTI0ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xl YW51cC4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IE5l dmVyIGZjbG9zZSBTVFJFQU0uCi0rCVVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudCBmb3IgaXQu Ci0rCShzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoKTogQ2FsbCBtYWtlX2NsZWFudXBfZmNsb3Nl IGZvciBTVFJFQU0uCi0rCSogY2xpL2NsaS1zY3JpcHQuYyAoc2NyaXB0X2Zyb21fZmlsZSk6IERv IG5vdCBjYWxsIG1ha2VfY2xlYW51cF9mY2xvc2UKLSsJZm9yIFNUUkVBTS4KLSsKLSAyMDEyLTAx LTI0ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAkqIGJyZWFrcG9pbnQu YyAoYnBzdGF0X3N0b3Bfc3RhdHVzKTogTW92aW5nIGNsZWFyaW5nIHByaW50X2l0Ci0tLS0gc3Jj L2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzIzIDE2OjM3OjAzCTEuMTIzCi0rKysgc3JjL2dk Yi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTI0Ci1AQCAtNTI3LDggKzUy Nyw3IEBACi0gICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2gg aGFzIGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLgotLSAgIFNUUkVBTSBpcyBjbG9zZWQg YmVmb3JlIHdlIHJldHVybi4gICovCi0rLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2ggaGFzIGFs cmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIHNvdXJj ZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSkKLUBA IC01NTYsMTIgKzU1NSw5IEBACi0gCSAgZWxzZQotIAkgICAgewotIAkgICAgICAvKiBOb3BlLCBq dXN0IHB1bnQuICAqLwotLQkgICAgICBmY2xvc2UgKHN0cmVhbSk7Ci0gCSAgICAgIHRocm93X2V4 Y2VwdGlvbiAoZSk7Ci0gCSAgICB9Ci0gCX0KLS0gICAgICBlbHNlCi0tCWZjbG9zZSAoc3RyZWFt KTsKLSAgICAgfQotICAgZWxzZQotICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUp OwotQEAgLTU5NSw2ICs1OTEsNyBAQAotICAgICB9Ci0gCi0gICBvbGRfY2xlYW51cHMgPSBtYWtl X2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKyAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3Ry ZWFtKTsKLSAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlLCBzbyB3ZSBu ZWVkIHRvIHBhc3MgZnVsbF9wYXRoIGhlcmUKLSAgICAgIGluIGNhc2UgdGhlIGZpbGUgd2FzIGZv dW5kIG9uIHRoZSBzZWFyY2ggcGF0aC4gIEl0J3MgdXNlZnVsIHRvIGRvIHRoaXMKLSAgICAgIGFu eXdheSBzbyB0aGF0IGVycm9yIG1lc3NhZ2VzIHNob3cgdGhlIGFjdHVhbCBmaWxlIHVzZWQuICBC dXQgb25seSBkbwotLS0tIHNyYy9nZGIvY2xpL2NsaS1zY3JpcHQuYwkyMDEyLzAxLzA0IDA4OjE3 OjE3CTEuNzMKLSsrKyBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8yNCAyMDo1Njoz MwkxLjc0Ci1AQCAtMTYxNCwxMSArMTYxNCw5IEBACi0gICBpZiAoc3RyZWFtID09IE5VTEwpCi0g ICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImNhbGxlZCB3aXRoIE5V TEwgZmlsZSBwb2ludGVyISIpKTsKLSAKLS0gIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9m Y2xvc2UgKHN0cmVhbSk7Ci0tCi0gICBvbGRfbGluZXMub2xkX2xpbmUgPSBzb3VyY2VfbGluZV9u dW1iZXI7Ci0gICBvbGRfbGluZXMub2xkX2ZpbGUgPSBzb3VyY2VfZmlsZV9uYW1lOwotLSAgbWFr ZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7Ci0rICBvbGRfY2xl YW51cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV9jbGVhbnVwX2xpbmVzLCAmb2xkX2xpbmVzKTsK LSAgIHNvdXJjZV9saW5lX251bWJlciA9IDA7Ci0gICBzb3VyY2VfZmlsZV9uYW1lID0gZmlsZTsK LSAgIC8qIFRoaXMgd2lsbCBnZXQgc2V0IGV2ZXJ5IHRpbWUgd2UgcmVhZCBhIGxpbmUuICBTbyBp dCB3b24ndCBzdGF5ICIiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAxb2YyOC5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wMW9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZDMyYjIxZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wMW9mMjgucGF0 Y2gKQEAgLTAsMCArMSw2NSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx Mi0wMS9tc2cwMDIwMi5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDE5 OjEyOjMxCTEuMTM3NzEKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDIwOjU2OjMz CTEuMTM3NzIKKyMjIC0xLDMgKzEsMTIgQEAKKysyMDEyLTAxLTI0ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUgY2xlYW51cC4KKysJKiBjbGkv Y2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IE5ldmVyIGZjbG9zZSBTVFJF QU0uCisrCVVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudCBmb3IgaXQuCisrCShzb3VyY2Vfc2Ny aXB0X3dpdGhfc2VhcmNoKTogQ2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlIGZvciBTVFJFQU0uCisr CSogY2xpL2NsaS1zY3JpcHQuYyAoc2NyaXB0X2Zyb21fZmlsZSk6IERvIG5vdCBjYWxsIG1ha2Vf Y2xlYW51cF9mY2xvc2UKKysJZm9yIFNUUkVBTS4KKysKKyAyMDEyLTAxLTI0ICBQZWRybyBBbHZl cyAgPHBhbHZlc0ByZWRoYXQuY29tPgorIAorIAkqIGJyZWFrcG9pbnQuYyAoYnBzdGF0X3N0b3Bf c3RhdHVzKTogTW92aW5nIGNsZWFyaW5nIHByaW50X2l0CistLS0gc3JjL2dkYi9jbGkvY2xpLWNt ZHMuYwkyMDEyLzAxLzIzIDE2OjM3OjAzCTEuMTIzCisrKysgc3JjL2dkYi9jbGkvY2xpLWNtZHMu YwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTI0CitAQCAtNTI3LDggKzUyNyw3IEBACisgICByZXR1 cm4gMTsKKyB9CisgCistLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2ggaGFzIGFscmVhZHkgYmVl biBvcGVuZWQgYXMgU1RSRUFNLgorLSAgIFNUUkVBTSBpcyBjbG9zZWQgYmVmb3JlIHdlIHJldHVy bi4gICovCisrLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBvcGVu ZWQgYXMgU1RSRUFNLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorIHNvdXJjZV9zY3JpcHRfZnJvbV9z dHJlYW0gKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSkKK0BAIC01NTYsMTIgKzU1NSw5 IEBACisgCSAgZWxzZQorIAkgICAgeworIAkgICAgICAvKiBOb3BlLCBqdXN0IHB1bnQuICAqLwor LQkgICAgICBmY2xvc2UgKHN0cmVhbSk7CisgCSAgICAgIHRocm93X2V4Y2VwdGlvbiAoZSk7Cisg CSAgICB9CisgCX0KKy0gICAgICBlbHNlCistCWZjbG9zZSAoc3RyZWFtKTsKKyAgICAgfQorICAg ZWxzZQorICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOworQEAgLTU5NSw2ICs1 OTEsNyBAQAorICAgICB9CisgCisgICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBmdWxsX3BhdGgpOworKyAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKyAgIC8qIFRo ZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIHBhc3MgZnVs bF9wYXRoIGhlcmUKKyAgICAgIGluIGNhc2UgdGhlIGZpbGUgd2FzIGZvdW5kIG9uIHRoZSBzZWFy Y2ggcGF0aC4gIEl0J3MgdXNlZnVsIHRvIGRvIHRoaXMKKyAgICAgIGFueXdheSBzbyB0aGF0IGVy cm9yIG1lc3NhZ2VzIHNob3cgdGhlIGFjdHVhbCBmaWxlIHVzZWQuICBCdXQgb25seSBkbworLS0t IHNyYy9nZGIvY2xpL2NsaS1zY3JpcHQuYwkyMDEyLzAxLzA0IDA4OjE3OjE3CTEuNzMKKysrKyBz cmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjc0CitAQCAtMTYx NCwxMSArMTYxNCw5IEBACisgICBpZiAoc3RyZWFtID09IE5VTEwpCisgICAgIGludGVybmFsX2Vy cm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImNhbGxlZCB3aXRoIE5VTEwgZmlsZSBwb2ludGVy ISIpKTsKKyAKKy0gIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7 CistCisgICBvbGRfbGluZXMub2xkX2xpbmUgPSBzb3VyY2VfbGluZV9udW1iZXI7CisgICBvbGRf bGluZXMub2xkX2ZpbGUgPSBzb3VyY2VfZmlsZV9uYW1lOworLSAgbWFrZV9jbGVhbnVwIChzb3Vy Y2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7CisrICBvbGRfY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHNvdXJjZV9jbGVhbnVwX2xpbmVzLCAmb2xkX2xpbmVzKTsKKyAgIHNvdXJjZV9saW5l X251bWJlciA9IDA7CisgICBzb3VyY2VfZmlsZV9uYW1lID0gZmlsZTsKKyAgIC8qIFRoaXMgd2ls bCBnZXQgc2V0IGV2ZXJ5IHRpbWUgd2UgcmVhZCBhIGxpbmUuICBTbyBpdCB3b24ndCBzdGF5ICIi CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAyb2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0w Mm9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NGM5YmIuLjAwMDAw MDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAyb2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEw MyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAw MjA1Lmh0bWwKLQotLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAotKysrIHNyYy9nZGIvZ2RiX3ZlY3Mu aAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAotQEAgLTAsMCArMSwyOCBAQAot Ky8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAy MDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rCi0rI2lmbmRlZiBHREJfVkVDU19ICi0rI2RlZmluZSBHREJfVkVDU19ICi0rCi0rI2lu Y2x1ZGUgInZlYy5oIgotKwotK0RFRl9WRUNfUCAoY2hhcl9wdHIpOwotKwotKyNlbmRpZiAvKiBH REJfVkVDU19IICovCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozMjo1Ngkx LjEzNzc0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozNjozNwkxLjEzNzc1 Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMi0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRo YXQuY29tPgotKwotKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiBjaGFy c2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiB0cmFjZXBvaW50Lmg6IEluY2x1ZGUgZ2Ri X3ZlY3MuaC4KLSsJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KLSsKLSAyMDEyLTAxLTI0ICBQZWRy byBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogYnJlYWtwb2ludC5jIChi cmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQotLS0tIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAx LzA2IDAzOjM0OjQ1CTEuMzMwCi0rKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMjQgMjE6 MzY6MzcJMS4zMzEKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0g I2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJzdGFjay5oIgotKyNpbmNsdWRlICJnZGJfdmVj cy5oIgotIAotICNpbmNsdWRlICJwc3ltdGFiLmgiCi0gI2luY2x1ZGUgInZhbHVlLmgiCi1AQCAt NTYyOCw4ICs1NjI5LDYgQEAKLSAgIHJldHVybiBzeW1fbmFtZTsKLSB9Ci0gCi0tREVGX1ZFQ19Q IChjaGFyX3B0cik7Ci0tCi0gLyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8gYWRhX21ha2Vfc3lt Ym9sX2NvbXBsZXRpb25fbGlzdCgpLgotICAgIENoZWNrIGlmIFNZTV9OQU1FIHJlcHJlc2VudHMg YSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQotICAgIHRvIGNvbXBsZXRlIFRF WFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNoIGNhc2UKLS0tLSBz cmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKLSsrKyBzcmMvZ2RiL2No YXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2lu Y2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJlbnZpcm9uLmgiCi0gI2luY2x1ZGUgImFyY2gtdXRp bHMuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0g I2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC03MTcsOCArNzE4LDYgQEAKLSAKLSBleHRlcm4g aW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlzc2luZy1w cm90b3R5cGUgKi8KLSAKLS1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKLS0KLSBzdGF0aWMgVkVDIChj aGFyX3B0cikgKmNoYXJzZXRzOwotIAotICNpZmRlZiBQSE9OWV9JQ09OVgotLS0tIHNyYy9nZGIv dHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40NgotKysrIHNyYy9nZGIvdHJhY2Vw b2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NwotQEAgLTIyLDYgKzIyLDcgQEAKLSAjaW5j bHVkZSAiYnJlYWtwb2ludC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAibWVt cmFuZ2UuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAvKiBBIHRyYWNlIHN0YXRlIHZh cmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBiZWluZwotICAgIHRyYWNlZC4g IEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBhY2Nlc3Nl ZAotQEAgLTE0Myw4ICsxNDQsNiBAQAotIAotIC8qIFN0cnVjdCB0byBjb2xsZWN0IHJhbmRvbSBp bmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAqLwotIAotLURFRl9WRUNfUCAo Y2hhcl9wdHIpOwotLQotIHN0cnVjdCB1cGxvYWRlZF90cAotIHsKLSAgIGludCBudW1iZXI7Cgpk aWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAyb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wMm9m MjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ0YzliYgotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wMm9mMjgucGF0Y2gKQEAgLTAsMCArMSwxMDMg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMDUuaHRt bAorCistLS0gc3JjL2dkYi9nZGJfdmVjcy5oCisrKysgc3JjL2dkYi9nZGJfdmVjcy5oCTIwMTIt MDQtMTcgMjI6MDQ6MjMuODE4NjY2MDAwICswMDAwCitAQCAtMCwwICsxLDI4IEBACisrLyogU29t ZSBjb21tb25seS11c2VkIFZFQyB0eXBlcy4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysK KysjaWZuZGVmIEdEQl9WRUNTX0gKKysjZGVmaW5lIEdEQl9WRUNTX0gKKysKKysjaW5jbHVkZSAi dmVjLmgiCisrCisrREVGX1ZFQ19QIChjaGFyX3B0cik7CisrCisrI2VuZGlmIC8qIEdEQl9WRUNT X0ggKi8KKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDIxOjMyOjU2CTEuMTM3NzQK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuMTM3NzUKKyMjIC0x LDMgKzEsMTAgQEAKKysyMDEyLTAxLTI0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+ CisrCisrCSogYWRhLWxhbmcuYzogSW5jbHVkZSBnZGJfdmVjcy5oLgorKwkqIGNoYXJzZXQuYzog SW5jbHVkZSBnZGJfdmVjcy5oLgorKwkqIHRyYWNlcG9pbnQuaDogSW5jbHVkZSBnZGJfdmVjcy5o LgorKwkqIGdkYl92ZWNzLmg6IE5ldyBmaWxlLgorKworIDIwMTItMDEtMjQgIFBlZHJvIEFsdmVz ICA8cGVkcm9AY29kZXNvdXJjZXJ5LmNvbT4KKyAKKyAJKiBicmVha3BvaW50LmMgKGJyZWFrcG9p bnRfaGl0X2NhdGNoX2ZvcmspCistLS0gc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMDYgMDM6 MzQ6NDUJMS4zMzAKKysrKyBzcmMvZ2RiL2FkYS1sYW5nLmMJMjAxMi8wMS8yNCAyMTozNjozNwkx LjMzMQorQEAgLTU3LDYgKzU3LDcgQEAKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAjaW5jbHVk ZSAidmVjLmgiCisgI2luY2x1ZGUgInN0YWNrLmgiCisrI2luY2x1ZGUgImdkYl92ZWNzLmgiCisg CisgI2luY2x1ZGUgInBzeW10YWIuaCIKKyAjaW5jbHVkZSAidmFsdWUuaCIKK0BAIC01NjI4LDgg KzU2MjksNiBAQAorICAgcmV0dXJuIHN5bV9uYW1lOworIH0KKyAKKy1ERUZfVkVDX1AgKGNoYXJf cHRyKTsKKy0KKyAvKiBBIGNvbXBhbmlvbiBmdW5jdGlvbiB0byBhZGFfbWFrZV9zeW1ib2xfY29t cGxldGlvbl9saXN0KCkuCisgICAgQ2hlY2sgaWYgU1lNX05BTUUgcmVwcmVzZW50cyBhIHN5bWJv bCB3aGljaCBuYW1lIHdvdWxkIGJlIHN1aXRhYmxlCisgICAgdG8gY29tcGxldGUgVEVYVCAoVEVY VF9MRU4gaXMgdGhlIGxlbmd0aCBvZiBURVhUKSwgaW4gd2hpY2ggY2FzZQorLS0tIHNyYy9nZGIv Y2hhcnNldC5jCTIwMTIvMDEvMDQgMDg6MTc6MDAJMS40NgorKysrIHNyYy9nZGIvY2hhcnNldC5j CTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTI3LDYgKzI3LDcgQEAKKyAjaW5jbHVkZSAi dmVjLmgiCisgI2luY2x1ZGUgImVudmlyb24uaCIKKyAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgor KyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVk ZSAiZ2RiX3N0cmluZy5oIgorQEAgLTcxNyw4ICs3MTgsNiBAQAorIAorIGV4dGVybiBpbml0aWFs aXplX2ZpbGVfZnR5cGUgX2luaXRpYWxpemVfY2hhcnNldDsgLyogLVdtaXNzaW5nLXByb3RvdHlw ZSAqLworIAorLURFRl9WRUNfUCAoY2hhcl9wdHIpOworLQorIHN0YXRpYyBWRUMgKGNoYXJfcHRy KSAqY2hhcnNldHM7CisgCisgI2lmZGVmIFBIT05ZX0lDT05WCistLS0gc3JjL2dkYi90cmFjZXBv aW50LmgJMjAxMi8wMS8wNCAwODoyNzo1NwkxLjQ2CisrKysgc3JjL2dkYi90cmFjZXBvaW50LmgJ MjAxMi8wMS8yNCAyMTozNjozNwkxLjQ3CitAQCAtMjIsNiArMjIsNyBAQAorICNpbmNsdWRlICJi cmVha3BvaW50LmgiCisgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJtZW1yYW5nZS5o IgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorIC8qIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUg aXMgYSB2YWx1ZSBtYW5hZ2VkIGJ5IGEgdGFyZ2V0IGJlaW5nCisgICAgdHJhY2VkLiAgQSB0cmFj ZSBzdGF0ZSB2YXJpYWJsZSAob3IgdHN2IGZvciBzaG9ydCkgY2FuIGJlIGFjY2Vzc2VkCitAQCAt MTQzLDggKzE0NCw2IEBACisgCisgLyogU3RydWN0IHRvIGNvbGxlY3QgcmFuZG9tIGluZm8gYWJv dXQgdHJhY2Vwb2ludHMgb24gdGhlIHRhcmdldC4gICovCisgCistREVGX1ZFQ19QIChjaGFyX3B0 cik7CistCisgc3RydWN0IHVwbG9hZGVkX3RwCisgeworICAgaW50IG51bWJlcjsKCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTAzb2YyMi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBlZmM4Yy4uMDAwMDAwMAotLS0gYS9n ZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMTkuaHRtbAot Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAxNjo0NDoyOQkxLjEzNzgwCi0jIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAyMTo1NDo0MgkxLjEzNzgxCi0jIyAtMSwzICsx LDIyIEBACi0rMjAxMi0wMS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwotKwlEbyBub3Qgb3BlbiBzY3JpcHQgZmlsZW5hbWVzIHR3aWNlLgotKwkqIGNs aS9jbGktY21kcy5jIChzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtKTogUGFzcyB0bwotKwlzb3Vy Y2VfcHl0aG9uX3NjcmlwdCBhbHNvIFNUUkVBTS4KLSsJKiBweXRob24vcHktYXV0by1sb2FkLmMg KHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBQYXNzIHRvCi0rCXNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIGFsc28gU1RSRUFNLgotKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTog UGFzcyB0byBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZQotKwlhbHNvIElOUFVULgot KwkqIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCAoc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29i amZpbGUpOiBOZXcKLSsJcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0byBm aWxlbmFtZS4KLSsJKiBweXRob24vcHl0aG9uLmMgKHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUpOiBD YWxsIFB5UnVuX1NpbXBsZUZpbGUKLSsJaW5zdGVhZCBpZiAhX1dJTjMyLiAgVXBkYXRlIHRoZSBm dW5jdGlvbiBjb21tZW50LgotKwkoc291cmNlX3B5dGhvbl9zY3JpcHQsIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlKQotKwkoc291cmNlX3B5dGhvbl9zY3JpcHQpOiBOZXcgcGFyYW1l dGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0bwotKwlmaWxlbmFtZS4gIFBhc3MgRklM RU5BTUUgdG8gcHl0aG9uX3J1bl9zaW1wbGVfZmlsZS4KLSsJKiBweXRob24vcHl0aG9uLmggKHNv dXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUKLSsJcGFyYW1l dGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0rCi0gMjAxMi0wMS0yNiAgUGVkcm8gQWx2ZXMgIDxwYWx2 ZXNAcmVkaGF0LmNvbT4KLSAKLSAJKiBjb3JlbG93LmMgKGNvcmVfaGFzX2Zha2VfcGlkKTogRGVs ZXRlLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwky MDEyLTAxLTA0IDA5OjE3OjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAw Ci1AQCAtNTI5LDkgKzUyOSw3IEBAIHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0 cmVhbSwKLSAKLSAgICAgICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQotIAl7Ci0t ICAgICAgICAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlIHVzaW5nIHB5 dGhvbiBmdW5jdGlvbnMsCi0tICAgICAgICAgICAgIHNvIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gcGFz c2luZyBTVFJFQU0gaGVyZS4gICovCi0tCSAgc291cmNlX3B5dGhvbl9zY3JpcHQgKGZpbGUpOwot KwkgIHNvdXJjZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZpbGUpOwotIAl9Ci0gICAgICAgaWYg KGUucmVhc29uIDwgMCkKLSAJewotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCi1AQCAtMzEyLDcgKzMxMiw3IEBA IFVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8KLSAJewotIAkgIC8qIElm IHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCi0gCSAgaWYg KCEgaW5faGFzaF90YWJsZSkKLS0JICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChvYmpmaWxlLCBmdWxsX3BhdGgpOwotKwkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29i amZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKLSAJICBmY2xvc2UgKHN0cmVhbSk7 Ci0gCSAgeGZyZWUgKGZ1bGxfcGF0aCk7Ci0gCX0KLUBAIC00MzEsNyArNDMxLDcgQEAgYXV0b19s b2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQotIAkgSXQncyBoaWdobHkgdW5saWtl bHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSAJIGFuZCB0aGVzZSBzY3JpcHRzIGFy ZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBsb2FkcyBhbnl3 YXkuICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxl LCBkZWJ1Z2ZpbGUpOwotKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChv YmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLSAgICAgICBmY2xvc2UgKGlucHV0KTsKLSAgICAg fQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJu YWwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTIt MDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCi1AQCAtMjg5LDggKzI4OSw4IEBAIGV4dGVy biBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG8KLSAKLSB2b2lkIGdkYnB5X3ByaW50 X3N0YWNrICh2b2lkKTsKLSAKLS12b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGUp OwotK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUp OwotIAotIFB5T2JqZWN0ICpweXRob25fc3RyaW5nX3RvX3VuaWNvZGUgKFB5T2JqZWN0ICpvYmop OwotIGNoYXIgKnVuaWNvZGVfdG9fdGFyZ2V0X3N0cmluZyAoUHlPYmplY3QgKnVuaWNvZGVfc3Ry KTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uYwky MDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIw MAotQEAgLTE1NCwzNCArMTU0LDMxIEBAIGVuc3VyZV9weXRob25fZW52IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXIKLSAgIHJldHVybiBtYWtlX2NsZWFudXAgKHJlc3RvcmVfcHl0aG9uX2VudiwgZW52 KTsKLSB9Ci0gCi0tLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRU5B TUUgaXMgdGhlIG5hbWUgb2YKLS0gICB0aGUgUHl0aG9uIHNjcmlwdCB0byBydW4uCi0rLyogQSB3 cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRSBpcyB0aGUgUHl0aG9uIHNjcmlw dCB0byBydW4KLSsgICBuYW1lZCBGSUxFTkFNRS4KLSAKLS0gICBPbmUgb2YgdGhlIHBhcmFtZXRl cnMgb2YgUHlSdW5fU2ltcGxlRmlsZSBpcyBhIEZJTEUgKi4KLS0gICBUaGUgcHJvYmxlbSBpcyB0 aGF0IHR5cGUgRklMRSBpcyBleHRyZW1lbHkgc3lzdGVtIGFuZCBjb21waWxlcgotLSAgIGRlcGVu ZGVudC4gIFNvLCB1bmxlc3MgdGhlIFB5dGhvbiBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHVz aW5nCi0tICAgdGhlIHNhbWUgYnVpbGQgZW52aXJvbm1lbnQgYXMgR0RCLCB3ZSBydW4gdGhlIHJp c2sgb2YgZ2V0dGluZwotLSAgIGEgY3Jhc2ggZHVlIHRvIGluY29uc2lzdGVuY2llcyBiZXR3ZWVu IHRoZSBkZWZpbml0aW9uIHVzZWQgYnkgR0RCLAotLSAgIGFuZCB0aGUgZGVmaW5pdGlvbiB1c2Vk IGJ5IFB5dGhvbi4gIEEgbWlzbWF0Y2ggY2FuIHZlcnkgbGlrZWx5Ci0tICAgbGVhZCB0byBhIGNy YXNoLgotLQotLSAgIFRoZXJlIGlzIGFsc28gdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgUHl0aG9u IGxpYnJhcnkgYW5kIEdEQgotLSAgIGFyZSB1c2luZyB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9m IHRoZSBDIHJ1bnRpbWUgbGlicmFyeS4KLS0gICBUaGlzIGlzIHBhcnRpY3VsYXJseSB2aXNpYmxl IG9uIFdpbmRvd3MsIHdoZXJlIGZldyB1c2VycyB3b3VsZAotLSAgIGJ1aWxkIFB5dGhvbiB0aGVt c2VsdmVzICh0aGlzIGlzIG5vIHRyaXZpYWwgdGFzayBvbiB0aGlzIHBsYXRmb3JtKSwKLS0gICBh bmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkgc29tZW9uZSBlbHNlIGluc3RlYWQuIFB5dGhv biwKLS0gICBiZWluZyBidWlsdCB3aXRoIFZDLCB3b3VsZCB1c2Ugb25lIHZlcnNpb24gb2YgdGhl IG1zdmNyIERMTAotLSAgIChFZy4gbXN2Y3IxMDAuZGxsKSwgd2hpbGUgTWluR1cgdXNlcyBtc3Zj cnQuZGxsLiAgQSBGSUxFICoKLS0gICBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2Fy aWx5IG9wZXJhdGUgY29ycmVjdGx5IGluCi0rICAgT24gV2luZG93cyBob3N0cyBmZXcgdXNlcnMg d291bGQgYnVpbGQgUHl0aG9uIHRoZW1zZWx2ZXMgKHRoaXMgaXMgbm8KLSsgICB0cml2aWFsIHRh c2sgb24gdGhpcyBwbGF0Zm9ybSksIGFuZCB0aHVzIHVzZSBiaW5hcmllcyBidWlsdCBieQotKyAg IHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiAgVGhlcmUgbWF5IGhhcHBlbiBzaXR1YXRpb24gd2hlcmUg dGhlIFB5dGhvbgotKyAgIGxpYnJhcnkgYW5kIEdEQiBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2 ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lCi0rICAgbGlicmFyeS4gIFB5dGhvbiwgYmVpbmcgYnVp bHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZQotKyAgIG1zdmNyIERMTCAo RWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4KLSsgICBBIEZJ TEUgKiBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVj dGx5IGluCi0gICAgdGhlIG90aGVyIHJ1bnRpbWUuCi0gCi0tICAgVG8gd29yayBhcm91bmQgdGhp cyBwb3RlbnRpYWwgaXNzdWUsIHdlIGNyZWF0ZSB0aGUgRklMRSBvYmplY3QKLS0gICB1c2luZyBQ eXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBpcyBjb21wYXRpYmxlCi0t ICAgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLwotKyAgIFRvIHdvcmsgYXJvdW5kIHRoaXMg cG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgb24gV2luZG93cyBob3N0cyB0aGUKLSsgICBGSUxF IG9iamVjdCB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBp cwotKyAgIGNvbXBhdGlibGUgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLwotIAotIHN0YXRp YyB2b2lkCi0tcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0r cHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUp Ci0gewotKyNpZm5kZWYgX1dJTjMyCi0rCi0rICBQeVJ1bl9TaW1wbGVGaWxlIChmaWxlLCBmaWxl bmFtZSk7Ci0rCi0rI2Vsc2UgLyogX1dJTjMyICovCi0rCi0gICBjaGFyICpmdWxsX3BhdGg7Ci0g ICBQeU9iamVjdCAqcHl0aG9uX2ZpbGU7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBA IC0yMDEsNiArMTk4LDggQEAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAqZmls ZQotICAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAocHl0aG9uX2ZpbGUpOwotICAgUHlSdW5fU2lt cGxlRmlsZSAoUHlGaWxlX0FzRmlsZSAocHl0aG9uX2ZpbGUpLCBmaWxlbmFtZSk7Ci0gICBkb19j bGVhbnVwcyAoY2xlYW51cCk7Ci0rCi0rI2VuZGlmIC8qIF9XSU4zMiAqLwotIH0KLSAKLSAvKiBH aXZlbiBhIGNvbW1hbmRfbGluZSwgcmV0dXJuIGEgY29tbWFuZCBzdHJpbmcgc3VpdGFibGUgZm9y IHBhc3NpbmcKLUBAIC02MjMsMTcgKzYyMiwxNyBAQCBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlP YmplY3QgKnNlbGYsIFB5Ci0gfQotIAotIC8qIFJlYWQgYSBmaWxlIGFzIFB5dGhvbiBjb2RlLgot LSAgIEZJTEUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUuCi0rICAgRklMRSBpcyB0aGUgZmlsZSB0 byBydW4uICBGSUxFTkFNRSBpcyBuYW1lIG9mIHRoZSBmaWxlIEZJTEUuCi0gICAgVGhpcyBkb2Vz IG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2ls bCBwcmludAotICAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3Iu ICAqLwotIAotIHZvaWQKLS1zb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3QgY2hhciAqZmlsZSkK LStzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUp Ci0gewotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0gCi0gICBjbGVhbnVwID0gZW5zdXJl X3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwotLSAg cHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSk7Ci0rICBweXRob25fcnVuX3NpbXBsZV9maWxl IChmaWxlLCBmaWxlbmFtZSk7Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gfQotIAotQEAg LTEwNDEsMTkgKzEwNDAsMjAgQEAgZ2RicHlfcHJvZ3NwYWNlcyAoUHlPYmplY3QgKnVudXNlZDEs IFB5TwotICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlOyBpdCBpcyBOVUxMIGF0 IG90aGVyIHRpbWVzLiAgKi8KLSBzdGF0aWMgc3RydWN0IG9iamZpbGUgKmdkYnB5X2N1cnJlbnRf b2JqZmlsZTsKLSAKLS0vKiBTZXQgdGhlIGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxFIGFuZCB0 aGVuIHJlYWQgRklMRSBhcyBQeXRob24gY29kZS4KLS0gICBUaGlzIGRvZXMgbm90IHRocm93IGFu eSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5dGhvbiB3aWxsIHByaW50Ci0tICAg dGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCi0rLyogU2V0 IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgbmFtZWQg RklMRU5BTUUKLSsgICBhcyBQeXRob24gY29kZS4gIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVy cm9ycy4gIElmIGFuIGV4Y2VwdGlvbgotKyAgIG9jY3VycyBweXRob24gd2lsbCBwcmludCB0aGUg dHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLSAKLSB2b2lkCi0t c291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBjb25zdCBjaGFyICpmaWxlKQotK3NvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gewotICAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXBzOwotIAotICAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X29i amZpbGVfYXJjaCAob2JqZmlsZSksIGN1cnJlbnRfbGFuZ3VhZ2UpOwotICAgZ2RicHlfY3VycmVu dF9vYmpmaWxlID0gb2JqZmlsZTsKLSAKLS0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUp OwotKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotIAotICAgZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKLSAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IE5VTEw7Ci1A QCAtMTEyOSw3ICsxMTI5LDcgQEAgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0 cnVjdAotIH0KLSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZp bGUpCi0rc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVu YW1lKQotIHsKLSAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRFRF9FUlJPUiwKLSAJICAgICAgIF8o IlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvcHkgb2YgR0RCLiIp KTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAky MDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Nzg1NTQyNyArMDIw MAotQEAgLTMwLDcgKzMwLDcgQEAgZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXph dGlvbgotIAotIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBj b21tYW5kX2xpbmUgKik7Ci0gCi0tdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3QgY2hh ciAqZmlsZSk7Ci0rdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3Qg Y2hhciAqZmlsZW5hbWUpOwotIAotIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBj aGFyICoqYXJndik7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wM29mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYzBlZmM4YwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wM29mMjgucGF0 Y2gKQEAgLTAsMCArMSwyMTUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDEvbXNnMDAyMTkuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAx Njo0NDoyOQkxLjEzNzgwCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAyMTo1NDo0 MgkxLjEzNzgxCisjIyAtMSwzICsxLDIyIEBACisrMjAxMi0wMS0yNiAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlEbyBub3Qgb3BlbiBzY3JpcHQgZmls ZW5hbWVzIHR3aWNlLgorKwkqIGNsaS9jbGktY21kcy5jIChzb3VyY2Vfc2NyaXB0X2Zyb21fc3Ry ZWFtKTogUGFzcyB0bworKwlzb3VyY2VfcHl0aG9uX3NjcmlwdCBhbHNvIFNUUkVBTS4KKysJKiBw eXRob24vcHktYXV0by1sb2FkLmMgKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBQYXNzIHRvCisr CXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGFsc28gU1RSRUFNLgorKwkoYXV0b19s b2FkX29iamZpbGVfc2NyaXB0KTogUGFzcyB0byBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZQorKwlhbHNvIElOUFVULgorKwkqIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCAoc291cmNl X3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcKKysJcGFyYW1ldGVyIGZpbGUsIHJlbmFt ZSBwYXJhbWV0ZXIgZmlsZSB0byBmaWxlbmFtZS4KKysJKiBweXRob24vcHl0aG9uLmMgKHB5dGhv bl9ydW5fc2ltcGxlX2ZpbGUpOiBDYWxsIFB5UnVuX1NpbXBsZUZpbGUKKysJaW5zdGVhZCBpZiAh X1dJTjMyLiAgVXBkYXRlIHRoZSBmdW5jdGlvbiBjb21tZW50LgorKwkoc291cmNlX3B5dGhvbl9z Y3JpcHQsIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoc291cmNlX3B5dGhv bl9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0bwor KwlmaWxlbmFtZS4gIFBhc3MgRklMRU5BTUUgdG8gcHl0aG9uX3J1bl9zaW1wbGVfZmlsZS4KKysJ KiBweXRob24vcHl0aG9uLmggKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBm aWxlLCByZW5hbWUKKysJcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCisrCisgMjAxMi0wMS0y NiAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBjb3JlbG93LmMgKGNv cmVfaGFzX2Zha2VfcGlkKTogRGVsZXRlLgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NsaS9jbGktY21kcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTAxLTA0IDA5OjE3OjE2LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTItMDQtMTggMDA6 NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAtNTI5LDkgKzUyOSw3IEBAIHNvdXJjZV9zY3JpcHRf ZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwKKyAKKyAgICAgICBUUllfQ0FUQ0ggKGUsIFJFVFVS Tl9NQVNLX0VSUk9SKQorIAl7CistICAgICAgICAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9w ZW5zIHRoZSBmaWxlIHVzaW5nIHB5dGhvbiBmdW5jdGlvbnMsCistICAgICAgICAgICAgIHNvIHRo ZXJlJ3Mgbm8gcG9pbnQgaW4gcGFzc2luZyBTVFJFQU0gaGVyZS4gICovCistCSAgc291cmNlX3B5 dGhvbl9zY3JpcHQgKGZpbGUpOworKwkgIHNvdXJjZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZp bGUpOworIAl9CisgICAgICAgaWYgKGUucmVhc29uIDwgMCkKKyAJeworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDEt MDQgMDk6MTc6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv cHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAw CitAQCAtMzEyLDcgKzMxMiw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQ XScgdG8KKyAJeworIAkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwg bG9hZCBpdC4gICovCisgCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKKy0JICAgIHNvdXJjZV9weXRo b25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmdWxsX3BhdGgpOworKwkgICAgc291cmNl X3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsK KyAJICBmY2xvc2UgKHN0cmVhbSk7CisgCSAgeGZyZWUgKGZ1bGxfcGF0aCk7CisgCX0KK0BAIC00 MzEsNyArNDMxLDcgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQor IAkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKKyAJ IGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11 bHRpcGxlCisgCSBsb2FkcyBhbnl3YXkuICAqLworLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKyAgICAgICBm Y2xvc2UgKGlucHV0KTsKKyAgICAgfQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weXRob24taW50ZXJuYWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTItMDEtMDQgMDk6MTc6 MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAt Mjg5LDggKzI4OSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG8K KyAKKyB2b2lkIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKTsKKyAKKy12b2lkIHNvdXJjZV9weXRo b25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJICAg ICAgIGNvbnN0IGNoYXIgKmZpbGUpOworK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCQkgICAgICAg Y29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorIFB5T2JqZWN0ICpweXRob25fc3RyaW5nX3RvX3Vu aWNvZGUgKFB5T2JqZWN0ICpvYmopOworIGNoYXIgKnVuaWNvZGVfdG9fdGFyZ2V0X3N0cmluZyAo UHlPYmplY3QgKnVuaWNvZGVfc3RyKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9w eXRob24vcHl0aG9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAw OjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTE1NCwzNCArMTU0LDMxIEBAIGVuc3VyZV9weXRo b25fZW52IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKKyAgIHJldHVybiBtYWtlX2NsZWFudXAgKHJl c3RvcmVfcHl0aG9uX2VudiwgZW52KTsKKyB9CisgCistLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1 bl9TaW1wbGVGaWxlLiAgRklMRU5BTUUgaXMgdGhlIG5hbWUgb2YKKy0gICB0aGUgUHl0aG9uIHNj cmlwdCB0byBydW4uCisrLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklM RSBpcyB0aGUgUHl0aG9uIHNjcmlwdCB0byBydW4KKysgICBuYW1lZCBGSUxFTkFNRS4KKyAKKy0g ICBPbmUgb2YgdGhlIHBhcmFtZXRlcnMgb2YgUHlSdW5fU2ltcGxlRmlsZSBpcyBhIEZJTEUgKi4K Ky0gICBUaGUgcHJvYmxlbSBpcyB0aGF0IHR5cGUgRklMRSBpcyBleHRyZW1lbHkgc3lzdGVtIGFu ZCBjb21waWxlcgorLSAgIGRlcGVuZGVudC4gIFNvLCB1bmxlc3MgdGhlIFB5dGhvbiBsaWJyYXJ5 IGhhcyBiZWVuIGNvbXBpbGVkIHVzaW5nCistICAgdGhlIHNhbWUgYnVpbGQgZW52aXJvbm1lbnQg YXMgR0RCLCB3ZSBydW4gdGhlIHJpc2sgb2YgZ2V0dGluZworLSAgIGEgY3Jhc2ggZHVlIHRvIGlu Y29uc2lzdGVuY2llcyBiZXR3ZWVuIHRoZSBkZWZpbml0aW9uIHVzZWQgYnkgR0RCLAorLSAgIGFu ZCB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IFB5dGhvbi4gIEEgbWlzbWF0Y2ggY2FuIHZlcnkgbGlr ZWx5CistICAgbGVhZCB0byBhIGNyYXNoLgorLQorLSAgIFRoZXJlIGlzIGFsc28gdGhlIHNpdHVh dGlvbiB3aGVyZSB0aGUgUHl0aG9uIGxpYnJhcnkgYW5kIEdEQgorLSAgIGFyZSB1c2luZyB0d28g ZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBDIHJ1bnRpbWUgbGlicmFyeS4KKy0gICBUaGlzIGlz IHBhcnRpY3VsYXJseSB2aXNpYmxlIG9uIFdpbmRvd3MsIHdoZXJlIGZldyB1c2VycyB3b3VsZAor LSAgIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vIHRyaXZpYWwgdGFzayBvbiB0 aGlzIHBsYXRmb3JtKSwKKy0gICBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkgc29tZW9u ZSBlbHNlIGluc3RlYWQuIFB5dGhvbiwKKy0gICBiZWluZyBidWlsdCB3aXRoIFZDLCB3b3VsZCB1 c2Ugb25lIHZlcnNpb24gb2YgdGhlIG1zdmNyIERMTAorLSAgIChFZy4gbXN2Y3IxMDAuZGxsKSwg d2hpbGUgTWluR1cgdXNlcyBtc3ZjcnQuZGxsLiAgQSBGSUxFICoKKy0gICBmcm9tIG9uZSBydW50 aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGluCisrICAgT24gV2lu ZG93cyBob3N0cyBmZXcgdXNlcnMgd291bGQgYnVpbGQgUHl0aG9uIHRoZW1zZWx2ZXMgKHRoaXMg aXMgbm8KKysgICB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksIGFuZCB0aHVzIHVzZSBi aW5hcmllcyBidWlsdCBieQorKyAgIHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiAgVGhlcmUgbWF5IGhh cHBlbiBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbgorKyAgIGxpYnJhcnkgYW5kIEdEQiBhcmUg dXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lCisrICAgbGlicmFy eS4gIFB5dGhvbiwgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9m IHRoZQorKyAgIG1zdmNyIERMTCAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMg bXN2Y3J0LmRsbC4KKysgICBBIEZJTEUgKiBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vz c2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGluCisgICAgdGhlIG90aGVyIHJ1bnRpbWUuCisgCist ICAgVG8gd29yayBhcm91bmQgdGhpcyBwb3RlbnRpYWwgaXNzdWUsIHdlIGNyZWF0ZSB0aGUgRklM RSBvYmplY3QKKy0gICB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhh dCBpdCBpcyBjb21wYXRpYmxlCistICAgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLworKyAg IFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgb24gV2luZG93 cyBob3N0cyB0aGUKKysgICBGSUxFIG9iamVjdCB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMg bWFraW5nIHN1cmUgdGhhdCBpdCBpcworKyAgIGNvbXBhdGlibGUgd2l0aCB0aGUgUHl0aG9uIGxp YnJhcnkuICAqLworIAorIHN0YXRpYyB2b2lkCistcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29u c3QgY2hhciAqZmlsZW5hbWUpCisrcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoRklMRSAqZmlsZSwg Y29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworKyNpZm5kZWYgX1dJTjMyCisrCisrICBQeVJ1bl9T aW1wbGVGaWxlIChmaWxlLCBmaWxlbmFtZSk7CisrCisrI2Vsc2UgLyogX1dJTjMyICovCisrCisg ICBjaGFyICpmdWxsX3BhdGg7CisgICBQeU9iamVjdCAqcHl0aG9uX2ZpbGU7CisgICBzdHJ1Y3Qg Y2xlYW51cCAqY2xlYW51cDsKK0BAIC0yMDEsNiArMTk4LDggQEAgcHl0aG9uX3J1bl9zaW1wbGVf ZmlsZSAoY29uc3QgY2hhciAqZmlsZQorICAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAocHl0aG9u X2ZpbGUpOworICAgUHlSdW5fU2ltcGxlRmlsZSAoUHlGaWxlX0FzRmlsZSAocHl0aG9uX2ZpbGUp LCBmaWxlbmFtZSk7CisgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCisrI2VuZGlmIC8qIF9X SU4zMiAqLworIH0KKyAKKyAvKiBHaXZlbiBhIGNvbW1hbmRfbGluZSwgcmV0dXJuIGEgY29tbWFu ZCBzdHJpbmcgc3VpdGFibGUgZm9yIHBhc3NpbmcKK0BAIC02MjMsMTcgKzYyMiwxNyBAQCBnZGJw eV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5CisgfQorIAorIC8qIFJlYWQgYSBm aWxlIGFzIFB5dGhvbiBjb2RlLgorLSAgIEZJTEUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUuCisr ICAgRklMRSBpcyB0aGUgZmlsZSB0byBydW4uICBGSUxFTkFNRSBpcyBuYW1lIG9mIHRoZSBmaWxl IEZJTEUuCisgICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0 aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAorICAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFy IHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLworIAorIHZvaWQKKy1zb3VyY2VfcHl0aG9uX3Njcmlw dCAoY29uc3QgY2hhciAqZmlsZSkKKytzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwg Y29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Cisg CisgICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1 cnJlbnRfbGFuZ3VhZ2UpOworLSAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSk7CisrICBw eXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxlLCBmaWxlbmFtZSk7CisgICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7CisgfQorIAorQEAgLTEwNDEsMTkgKzEwNDAsMjAgQEAgZ2RicHlfcHJvZ3NwYWNl cyAoUHlPYmplY3QgKnVudXNlZDEsIFB5TworICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlOyBpdCBpcyBOVUxMIGF0IG90aGVyIHRpbWVzLiAgKi8KKyBzdGF0aWMgc3RydWN0IG9i amZpbGUgKmdkYnB5X2N1cnJlbnRfb2JqZmlsZTsKKyAKKy0vKiBTZXQgdGhlIGN1cnJlbnQgb2Jq ZmlsZSB0byBPQkpGSUxFIGFuZCB0aGVuIHJlYWQgRklMRSBhcyBQeXRob24gY29kZS4KKy0gICBU aGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5 dGhvbiB3aWxsIHByaW50CistICAgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGlu ZGljYXRvci4gICovCisrLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQg dGhlbiByZWFkIEZJTEUgbmFtZWQgRklMRU5BTUUKKysgICBhcyBQeXRob24gY29kZS4gIFRoaXMg ZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbgorKyAgIG9jY3VycyBw eXRob24gd2lsbCBwcmludCB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNh dG9yLiAgKi8KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpmaWxlKQorK3NvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUp CisgeworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworIAorICAgY2xlYW51cHMgPSBlbnN1 cmVfcHl0aG9uX2VudiAoZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSksIGN1cnJlbnRfbGFuZ3Vh Z2UpOworICAgZ2RicHlfY3VycmVudF9vYmpmaWxlID0gb2JqZmlsZTsKKyAKKy0gIHB5dGhvbl9y dW5fc2ltcGxlX2ZpbGUgKGZpbGUpOworKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwg ZmlsZW5hbWUpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAgIGdkYnB5X2N1cnJl bnRfb2JqZmlsZSA9IE5VTEw7CitAQCAtMTEyOSw3ICsxMTI5LDcgQEAgZXZhbF9weXRob25fZnJv bV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdAorIH0KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9z Y3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCisrc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZp bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRF RF9FUlJPUiwKKyAJICAgICAgIF8oIlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBp biB0aGlzIGNvcHkgb2YgR0RCLiIpKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9w eXRob24vcHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAw OjQxOjQyLjY5Nzg1NTQyNyArMDIwMAorQEAgLTMwLDcgKzMwLDcgQEAgZXh0ZXJuIHZvaWQgZmlu aXNoX3B5dGhvbl9pbml0aWFsaXphdGlvbgorIAorIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250 cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CisgCistdm9pZCBzb3VyY2VfcHl0 aG9uX3NjcmlwdCAoY29uc3QgY2hhciAqZmlsZSk7Cisrdm9pZCBzb3VyY2VfcHl0aG9uX3Njcmlw dCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorIHZvaWQgcnVuX3B5dGhv bl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTA0b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wNG9mMjIucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NWFjODcuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTA0b2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM0Lmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTM6MzkJMS4xNDAyNQotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDMvMTkgMTg6MTY6MTcJMS4xNDAyNgotIyMgLTEsMyArMSwxNCBAQAotKzIw MTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsK LSsJQ29kZSBjbGVhbnVwLgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE1vdmUgaXQgaGVy ZSBmcm9tIG1haW4uICBBZGQgbW9yZSBjb21tZW50cy4KLSsJKGNtZGFyZ19zLCBWRUMgKGNtZGFy Z19zKSk6IE5ldy4KLSsJKG1haW4pOiBNb3ZlIHN0cnVjdCBjbWRhcmcgZnJvbSBoZXJlLiAgTmV3 IHZhcmlhYmxlcyBjbWRhcmdfdmVjIGFuZAotKwljbWRhcmdfcC4gIFJlbW92ZSB2YXJpYWJsZXMg Y21kc2l6ZSBhbmQgbmNtZCBhbmQgdGhlaXIgaW5pdGlhbGl6YXRpb24uCi0rCUluc3RhbGwgY2xl YW51cCBmb3IgY21kYXJnX3ZlYy4gIFVwZGF0ZSBmaWxsaW5nIGZvciBvcHRpb25zICd4JyBhbmQK LSsJJ1gnLiAgUmVwbGFjZSBjbWRhcmcgcHJvY2Vzc2luZyBieSBjbWRhcmdfdmVjIHByb2Nlc3Np bmcuICBSZW1vdmUgeGZyZWUKLSsJb2YgQ01EQVJHLgotKwotIDIwMTItMDMtMTkgIFRvbSBUcm9t ZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJKiBnbnUtdjMtYWJpLmMgKGdudXYzX3ByaW50 X3Z0YWJsZSk6IEluaXRpYWxpemUgJ3Jlc3VsdF92ZWMnLgotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDI6MTUuMzU0NzcyMzM3 ICswMjAwCi1AQCAtMjc3LDYgKzI3NywyNSBAQCBleGVjX29yX2NvcmVfZmlsZV9hdHRhY2ggKGNo YXIgKmZpbGVuYW1lCi0gICAgIH0KLSB9Ci0gCi0rLyogQXJndW1lbnRzIG9mIC0tY29tbWFuZCBv cHRpb24gYW5kIGl0cyBjb3VudGVycGFydC4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgY21kYXJnIHsK LSsgIC8qIFR5cGUgb2YgdGhpcyBvcHRpb24uICAqLwotKyAgZW51bSB7Ci0rICAgIC8qIE9wdGlv biB0eXBlIC14LiAgKi8KLSsgICAgQ01EQVJHX0ZJTEUsCi0rCi0rICAgIC8qIE9wdGlvbiB0eXBl IC1leC4gICovCi0rICAgIENNREFSR19DT01NQU5ECi0rICB9IHR5cGU7Ci0rCi0rICAvKiBWYWx1 ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIgY29tbWFuZCBpdHNlbGYuICBT dHJpbmcgbWVtb3J5Ci0rICAgICBpcyBub3Qgb3duZWQgYnkgdGhpcyBzdHJ1Y3R1cmUgZGVzcGl0 ZSBpdCBpcyAnY29uc3QnLiAgKi8KLSsgIGNoYXIgKnN0cmluZzsKLSt9IGNtZGFyZ19zOwotKwot Ky8qIERlZmluZSB0eXBlIFZFQyAoY21kYXJnX3MpLiAgKi8KLStERUZfVkVDX08gKGNtZGFyZ19z KTsKLSsKLSBzdGF0aWMgaW50Ci0gY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSB7Ci1AQCAt MzAzLDE3ICszMjIsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgc3RhdGljIGlu dCBwcmludF92ZXJzaW9uOwotIAotICAgLyogUG9pbnRlcnMgdG8gYWxsIGFyZ3VtZW50cyBvZiAt LWNvbW1hbmQgb3B0aW9uLiAgKi8KLS0gIHN0cnVjdCBjbWRhcmcgewotLSAgICBlbnVtIHsKLS0g ICAgICBDTURBUkdfRklMRSwKLS0gICAgICBDTURBUkdfQ09NTUFORAotLSAgICB9IHR5cGU7Ci0t ICAgIGNoYXIgKnN0cmluZzsKLS0gIH0gKmNtZGFyZzsKLS0gIC8qIEFsbG9jYXRlZCBzaXplIG9m IGNtZGFyZy4gICovCi0tICBpbnQgY21kc2l6ZTsKLS0gIC8qIE51bWJlciBvZiBlbGVtZW50cyBv ZiBjbWRhcmcgdXNlZC4gICovCi0tICBpbnQgbmNtZDsKLSsgIFZFQyAoY21kYXJnX3MpICpjbWRh cmdfdmVjID0gTlVMTDsKLSsgIHN0cnVjdCBjbWRhcmcgKmNtZGFyZ19wOwotIAotICAgLyogSW5k aWNlcyBvZiBhbGwgYXJndW1lbnRzIG9mIC0tZGlyZWN0b3J5IG9wdGlvbi4gICovCi0gICBjaGFy ICoqZGlyYXJnOwotQEAgLTM0OSw5ICszNTksNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQotICAgYmluZHRleHRkb21haW4gKFBBQ0tBR0UsIExPQ0FMRURJUik7Ci0gICB0ZXh0ZG9tYWlu IChQQUNLQUdFKTsKLSAKLS0gIGNtZHNpemUgPSAxOwotLSAgY21kYXJnID0gKHN0cnVjdCBjbWRh cmcgKikgeG1hbGxvYyAoY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOwotLSAgbmNtZCA9IDA7 Ci0rICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChjbWRhcmdfcyksICZjbWRhcmdfdmVjKTsK LSAgIGRpcnNpemUgPSAxOwotICAgZGlyYXJnID0gKGNoYXIgKiopIHhtYWxsb2MgKGRpcnNpemUg KiBzaXplb2YgKCpkaXJhcmcpKTsKLSAgIG5kaXIgPSAwOwotQEAgLTU4MiwyNCArNTkwLDE5IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCSAgICBwaWRhcmcgPSBvcHRhcmc7Ci0gCSAg ICBicmVhazsKLSAJICBjYXNlICd4JzoKLS0JICAgIGNtZGFyZ1tuY21kXS50eXBlID0gQ01EQVJH X0ZJTEU7Ci0tCSAgICBjbWRhcmdbbmNtZCsrXS5zdHJpbmcgPSBvcHRhcmc7Ci0tCSAgICBpZiAo bmNtZCA+PSBjbWRzaXplKQotLQkgICAgICB7Ci0tCQljbWRzaXplICo9IDI7Ci0tCQljbWRhcmcg PSB4cmVhbGxvYyAoKGNoYXIgKikgY21kYXJnLAotLQkJCQkgICBjbWRzaXplICogc2l6ZW9mICgq Y21kYXJnKSk7Ci0tCSAgICAgIH0KLSsJICAgIHsKLSsJICAgICAgc3RydWN0IGNtZGFyZyBjbWRh cmcgPSB7IENNREFSR19GSUxFLCBvcHRhcmcgfTsKLSsKLSsJICAgICAgVkVDX3NhZmVfcHVzaCAo Y21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOwotKwkgICAgfQotIAkgICAgYnJlYWs7Ci0g CSAgY2FzZSAnWCc6Ci0tCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFSR19DT01NQU5EOwot LQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOwotLQkgICAgaWYgKG5jbWQgPj0g Y21kc2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAqPSAyOwotLQkJY21kYXJnID0geHJlYWxs b2MgKChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykp OwotLQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBD TURBUkdfQ09NTUFORCwgb3B0YXJnIH07Ci0rCi0rCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFy Z19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0KLSsJICAgIGJyZWFrOwotIAkgICAg YnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAgICBiYXRjaF9mbGFnID0gYmF0Y2hfc2lsZW50ID0g MTsKLUBAIC05OTAsMTYgKzk5MywxOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAg QUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAob2JqZmlsZSk7Ci0gCi0tICBmb3IgKGkgPSAwOyBpIDwgbmNtZDsgaSsrKQotKyAgZm9yIChp ID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkr KykKLSsgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKLSAgICAgewotLSAgICAgIGlmIChjbWRh cmdbaV0udHlwZSA9PSBDTURBUkdfRklMRSkKLS0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3Jz IChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdbaV0uc3RyaW5nLAotKyAgICAgIGNhc2UgQ01EQVJHX0ZJ TEU6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJn X3AtPnN0cmluZywKLSAJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLS0g ICAgICBlbHNlICAvKiBjbWRhcmdbaV0udHlwZSA9PSBDTURBUkdfQ09NTUFORCAqLwotLSAgICAg ICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnW2ldLnN0cmlu ZywKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBDTURBUkdfQ09NTUFORDoKLSsgICAgICAgIGNhdGNo X2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ19wLT5zdHJpbmcsCi0gCQkJ ICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rCWJyZWFrOwotICAgICB9Ci0t ICB4ZnJlZSAoY21kYXJnKTsKLSAKLSAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0b3J5IGFmdGVy IGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KLSAgICAgIHJlYWQuICAqLwoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0wNG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDRvZjI4LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NWFjODcKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDRvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM0Lmh0bWwKKwor IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTM6MzkJMS4xNDAyNQorIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTY6MTcJMS4xNDAyNgorIyMgLTEsMyArMSwx NCBAQAorKzIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKysKKysJQ29kZSBjbGVhbnVwLgorKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE1v dmUgaXQgaGVyZSBmcm9tIG1haW4uICBBZGQgbW9yZSBjb21tZW50cy4KKysJKGNtZGFyZ19zLCBW RUMgKGNtZGFyZ19zKSk6IE5ldy4KKysJKG1haW4pOiBNb3ZlIHN0cnVjdCBjbWRhcmcgZnJvbSBo ZXJlLiAgTmV3IHZhcmlhYmxlcyBjbWRhcmdfdmVjIGFuZAorKwljbWRhcmdfcC4gIFJlbW92ZSB2 YXJpYWJsZXMgY21kc2l6ZSBhbmQgbmNtZCBhbmQgdGhlaXIgaW5pdGlhbGl6YXRpb24uCisrCUlu c3RhbGwgY2xlYW51cCBmb3IgY21kYXJnX3ZlYy4gIFVwZGF0ZSBmaWxsaW5nIGZvciBvcHRpb25z ICd4JyBhbmQKKysJJ1gnLiAgUmVwbGFjZSBjbWRhcmcgcHJvY2Vzc2luZyBieSBjbWRhcmdfdmVj IHByb2Nlc3NpbmcuICBSZW1vdmUgeGZyZWUKKysJb2YgQ01EQVJHLgorKworIDIwMTItMDMtMTkg IFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKyAKKyAJKiBnbnUtdjMtYWJpLmMgKGdu dXYzX3ByaW50X3Z0YWJsZSk6IEluaXRpYWxpemUgJ3Jlc3VsdF92ZWMnLgorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDI6MTUu MzU0NzcyMzM3ICswMjAwCitAQCAtMjc3LDYgKzI3NywyNSBAQCBleGVjX29yX2NvcmVfZmlsZV9h dHRhY2ggKGNoYXIgKmZpbGVuYW1lCisgICAgIH0KKyB9CisgCisrLyogQXJndW1lbnRzIG9mIC0t Y29tbWFuZCBvcHRpb24gYW5kIGl0cyBjb3VudGVycGFydC4gICovCisrdHlwZWRlZiBzdHJ1Y3Qg Y21kYXJnIHsKKysgIC8qIFR5cGUgb2YgdGhpcyBvcHRpb24uICAqLworKyAgZW51bSB7CisrICAg IC8qIE9wdGlvbiB0eXBlIC14LiAgKi8KKysgICAgQ01EQVJHX0ZJTEUsCisrCisrICAgIC8qIE9w dGlvbiB0eXBlIC1leC4gICovCisrICAgIENNREFSR19DT01NQU5ECisrICB9IHR5cGU7CisrCisr ICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIgY29tbWFuZCBp dHNlbGYuICBTdHJpbmcgbWVtb3J5CisrICAgICBpcyBub3Qgb3duZWQgYnkgdGhpcyBzdHJ1Y3R1 cmUgZGVzcGl0ZSBpdCBpcyAnY29uc3QnLiAgKi8KKysgIGNoYXIgKnN0cmluZzsKKyt9IGNtZGFy Z19zOworKworKy8qIERlZmluZSB0eXBlIFZFQyAoY21kYXJnX3MpLiAgKi8KKytERUZfVkVDX08g KGNtZGFyZ19zKTsKKysKKyBzdGF0aWMgaW50CisgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK KyB7CitAQCAtMzAzLDE3ICszMjIsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAg c3RhdGljIGludCBwcmludF92ZXJzaW9uOworIAorICAgLyogUG9pbnRlcnMgdG8gYWxsIGFyZ3Vt ZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uLiAgKi8KKy0gIHN0cnVjdCBjbWRhcmcgeworLSAgICBl bnVtIHsKKy0gICAgICBDTURBUkdfRklMRSwKKy0gICAgICBDTURBUkdfQ09NTUFORAorLSAgICB9 IHR5cGU7CistICAgIGNoYXIgKnN0cmluZzsKKy0gIH0gKmNtZGFyZzsKKy0gIC8qIEFsbG9jYXRl ZCBzaXplIG9mIGNtZGFyZy4gICovCistICBpbnQgY21kc2l6ZTsKKy0gIC8qIE51bWJlciBvZiBl bGVtZW50cyBvZiBjbWRhcmcgdXNlZC4gICovCistICBpbnQgbmNtZDsKKysgIFZFQyAoY21kYXJn X3MpICpjbWRhcmdfdmVjID0gTlVMTDsKKysgIHN0cnVjdCBjbWRhcmcgKmNtZGFyZ19wOworIAor ICAgLyogSW5kaWNlcyBvZiBhbGwgYXJndW1lbnRzIG9mIC0tZGlyZWN0b3J5IG9wdGlvbi4gICov CisgICBjaGFyICoqZGlyYXJnOworQEAgLTM0OSw5ICszNTksNyBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQorICAgYmluZHRleHRkb21haW4gKFBBQ0tBR0UsIExPQ0FMRURJUik7CisgICB0 ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKy0gIGNtZHNpemUgPSAxOworLSAgY21kYXJnID0gKHN0 cnVjdCBjbWRhcmcgKikgeG1hbGxvYyAoY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOworLSAg bmNtZCA9IDA7CisrICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChjbWRhcmdfcyksICZjbWRh cmdfdmVjKTsKKyAgIGRpcnNpemUgPSAxOworICAgZGlyYXJnID0gKGNoYXIgKiopIHhtYWxsb2Mg KGRpcnNpemUgKiBzaXplb2YgKCpkaXJhcmcpKTsKKyAgIG5kaXIgPSAwOworQEAgLTU4MiwyNCAr NTkwLDE5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgCSAgICBwaWRhcmcgPSBvcHRh cmc7CisgCSAgICBicmVhazsKKyAJICBjYXNlICd4JzoKKy0JICAgIGNtZGFyZ1tuY21kXS50eXBl ID0gQ01EQVJHX0ZJTEU7CistCSAgICBjbWRhcmdbbmNtZCsrXS5zdHJpbmcgPSBvcHRhcmc7Cist CSAgICBpZiAobmNtZCA+PSBjbWRzaXplKQorLQkgICAgICB7CistCQljbWRzaXplICo9IDI7Cist CQljbWRhcmcgPSB4cmVhbGxvYyAoKGNoYXIgKikgY21kYXJnLAorLQkJCQkgICBjbWRzaXplICog c2l6ZW9mICgqY21kYXJnKSk7CistCSAgICAgIH0KKysJICAgIHsKKysJICAgICAgc3RydWN0IGNt ZGFyZyBjbWRhcmcgPSB7IENNREFSR19GSUxFLCBvcHRhcmcgfTsKKysKKysJICAgICAgVkVDX3Nh ZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworKwkgICAgfQorIAkgICAg YnJlYWs7CisgCSAgY2FzZSAnWCc6CistCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFSR19D T01NQU5EOworLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOworLQkgICAgaWYg KG5jbWQgPj0gY21kc2l6ZSkKKy0JICAgICAgeworLQkJY21kc2l6ZSAqPSAyOworLQkJY21kYXJn ID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKKy0JCQkJICAgY21kc2l6ZSAqIHNpemVvZiAo KmNtZGFyZykpOworLQkgICAgICB9CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcgY21k YXJnID0geyBDTURBUkdfQ09NTUFORCwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19zYWZlX3B1 c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKysJICAgIGJyZWFr OworIAkgICAgYnJlYWs7CisgCSAgY2FzZSAnQic6CisgCSAgICBiYXRjaF9mbGFnID0gYmF0Y2hf c2lsZW50ID0gMTsKK0BAIC05OTAsMTYgKzk5MywxOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQorICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorICAgICBsb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSAob2JqZmlsZSk7CisgCistICBmb3IgKGkgPSAwOyBpIDwgbmNtZDsgaSsrKQor KyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRh cmdfcCk7IGkrKykKKysgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKKyAgICAgeworLSAgICAg IGlmIChjbWRhcmdbaV0udHlwZSA9PSBDTURBUkdfRklMRSkKKy0gICAgICAgIGNhdGNoX2NvbW1h bmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdbaV0uc3RyaW5nLAorKyAgICAgIGNhc2Ug Q01EQVJHX0ZJTEU6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Njcmlw dCwgY21kYXJnX3AtPnN0cmluZywKKyAJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tf QUxMKTsKKy0gICAgICBlbHNlICAvKiBjbWRhcmdbaV0udHlwZSA9PSBDTURBUkdfQ09NTUFORCAq LworLSAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJn W2ldLnN0cmluZywKKysJYnJlYWs7CisrICAgICAgY2FzZSBDTURBUkdfQ09NTUFORDoKKysgICAg ICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ19wLT5zdHJp bmcsCisgCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7CisrCWJyZWFrOwor ICAgICB9CistICB4ZnJlZSAoY21kYXJnKTsKKyAKKyAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0 b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KKyAgICAgIHJlYWQuICAq LwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQt MDVvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGQ4Y2MzLi4wMDAw MDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwy NDQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cw MDIzNS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEu MTQwMjYKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcK LSMjIC0xLDUgKzEsMTggQEAKLSAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1p bml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQs IC1pZXguCi0rCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJH X0lOSVRfRklMRSBhbmQKLSsJQ01EQVJHX0lOSVRfQ09NTUFORC4KLSsJKGNhcHR1cmVkX21haW4p OiBOZXcgZW51bSBpdGVtcyBPUFRfSVggYW5kIE9QVF9JRVguICBBZGQKLSsJImluaXQtY29tbWFu ZCIsICJpbml0LWV2YWwtY29tbWFuZCIsICJpeCIgYW5kICJpZXgiIHRvIHRoZSB2YXJpYWJsZQot Kwlsb25nX29wdGlvbnMuICBIYW5kbGUgT1BUX0lYIGFuZCBPUFRfSUVYLiAgUHJvY2VzcyB0aGVt IGZyb20gQ01EQVJHX1ZFQy4KLSsJTmV3IGNvbW1lbnQgZm9yIENNREFSR19GSUxFIGFuZCBDTURB UkdfQ09NTUFORCBwcm9jZXNzaW5nLgotKwkocHJpbnRfZ2RiX2hlbHApOiBEZXNjcmliZSAtLWlu aXQtY29tbWFuZD1GSUxFLCAtaXggYW5kCi0rCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwg LWlleC4KLSsKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0rCi0gCUNvZGUgY2xlYW51cC4KLSAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcp OiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCi0gCShjbWRhcmdf cywgVkVDIChjbWRhcmdfcykpOiBOZXcuCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv TkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwky MDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLUBAIC0yOCw2 ICsyOCwxMyBAQAotICAgbm93IHNldCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywg YnV0IG5vdAotICAgYnVpbGQvbGliY3BwL2V4cHIuYy4KLSAKLSsqIE5ldyBjb21tYW5kIGxpbmUg b3B0aW9ucwotKwotKy0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29t bWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuCi0rLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5E LCAtaWV4IExpa2UgLS1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWV4IGJ1dAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIGl0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9y LgotKwotICoqKiBDaGFuZ2VzIGluIEdEQiA3LjQKLSAKLSAqIEdEQiBub3cgaGFuZGxlcyBhbWJp Z3VvdXMgbGluZXNwZWNzIG1vcmUgY29uc2lzdGVudGx5OyB0aGUgZXhpc3RpbmcKLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQy OjUxLjIyNjY4MTA2OCArMDIwMAotQEAgLTI4NSw3ICsyODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg Y21kYXJnIHsKLSAgICAgQ01EQVJHX0ZJTEUsCi0gCi0gICAgIC8qIE9wdGlvbiB0eXBlIC1leC4g ICovCi0tICAgIENNREFSR19DT01NQU5ECi0rICAgIENNREFSR19DT01NQU5ELAotKwotKyAgICAv KiBPcHRpb24gdHlwZSAtaXguICAqLwotKyAgICBDTURBUkdfSU5JVF9GSUxFLAotKyAgICAKLSsg ICAgLyogT3B0aW9uIHR5cGUgLWlleC4gICovCi0rICAgIENNREFSR19JTklUX0NPTU1BTkQKLSAg IH0gdHlwZTsKLSAKLSAgIC8qIFZhbHVlIG9mIHRoaXMgb3B0aW9uIC0gZmlsZW5hbWUgb3IgdGhl IEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0cmluZyBtZW1vcnkKLUBAIC00MzQsNyArNDQwLDkgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICBPUFRfU1RBVElTVElDUywKLSAgICAg ICBPUFRfVFVJLAotICAgICAgIE9QVF9OT1dJTkRPV1MsCi0tICAgICAgT1BUX1dJTkRPV1MKLSsg ICAgICBPUFRfV0lORE9XUywKLSsgICAgICBPUFRfSVgsCi0rICAgICAgT1BUX0lFWAotICAgICB9 OwotICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9Ci0gICAgIHsKLUBA IC00NzUsNiArNDgzLDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgeyJ2 ZXJzaW9uIiwgbm9fYXJndW1lbnQsICZwcmludF92ZXJzaW9uLCAxfSwKLSAgICAgICB7IngiLCBy ZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3gnfSwKLSAgICAgICB7ImV4IiwgcmVxdWlyZWRfYXJndW1l bnQsIDAsICdYJ30sCi0rICAgICAgeyJpbml0LWNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwg MCwgT1BUX0lYfSwKLSsgICAgICB7ImluaXQtZXZhbC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1l bnQsIDAsIE9QVF9JRVh9LAotKyAgICAgIHsiaXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BU X0lYfSwKLSsgICAgICB7ImlleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKLSAj aWZkZWYgR0RCVEsKLSAgICAgICB7InRjbGNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwg J3onfSwKLSAgICAgICB7ImVuYWJsZS1leHRlcm5hbC1lZGl0b3IiLCBub19hcmd1bWVudCwgMCwg J3knfSwKLUBAIC02MDMsNiArNjE1LDE5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0g CSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSAJ ICAgIH0KLSAJICAgIGJyZWFrOwotKwkgIGNhc2UgT1BUX0lYOgotKwkgICAgewotKwkgICAgICBz dHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0lOSVRfRklMRSwgb3B0YXJnIH07Ci0rCi0r CSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJ ICAgIH0KLSsJICAgIGJyZWFrOwotKwkgIGNhc2UgT1BUX0lFWDoKLSsJICAgIHsKLSsJICAgICAg c3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0NPTU1BTkQsIG9wdGFyZyB9Owot KwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7 Ci0rCSAgICB9Ci0gCSAgICBicmVhazsKLSAJICBjYXNlICdCJzoKLSAJICAgIGJhdGNoX2ZsYWcg PSBiYXRjaF9zaWxlbnQgPSAxOwotQEAgLTg3Nyw2ICs5MDIsMjAgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKLSAgIHF1aXRfcHJlX3ByaW50ID0gZXJyb3JfcHJlX3ByaW50OwotICAgd2Fy bmluZ19wcmVfcHJpbnQgPSBfKCJcbndhcm5pbmc6ICIpOwotIAotKyAgLyogUHJvY2VzcyAnLWl4 JyBhbmQgJy1pZXgnIG9wdGlvbnMgZWFybHkuICAqLwotKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJh dGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKLSsgICAgc3dpdGNo IChjbWRhcmdfcC0+dHlwZSkKLSsgICAgewotKyAgICAgIGNhc2UgQ01EQVJHX0lOSVRfRklMRToK LSsgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdfcC0+ c3RyaW5nLAotKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVh azsKLSsgICAgICBjYXNlIENNREFSR19JTklUX0NPTU1BTkQ6Ci0rICAgICAgICBjYXRjaF9jb21t YW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAotKwkJCSAgICAg ICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVhazsKLSsgICAgfQotKwotICAg LyogUmVhZCBhbmQgZXhlY3V0ZSB0aGUgc3lzdGVtLXdpZGUgZ2RiaW5pdCBmaWxlLCBpZiBpdCBl eGlzdHMuCi0gICAgICBUaGlzIGlzIGRvbmUgKmJlZm9yZSogYWxsIHRoZSBjb21tYW5kIGxpbmUg YXJndW1lbnRzIGFyZQotICAgICAgcHJvY2Vzc2VkOyBpdCBzZXRzIGdsb2JhbCBwYXJhbWV0ZXJz LCB3aGljaCBhcmUgaW5kZXBlbmRlbnQgb2YKLUBAIC05OTMsNiArMTAzMiw3IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCi0gICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICAgIGxvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSAKLSsgIC8qIFByb2Nlc3MgJy14 JyBhbmQgJy1leCcgb3B0aW9ucy4gICovCi0gICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21k YXJnX3MsIGNtZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQotICAgICBzd2l0Y2ggKGNtZGFy Z19wLT50eXBlKQotICAgICB7Ci1AQCAtMTA5Myw2ICsxMTMzLDggQEAgT3B0aW9uczpcblxuXAot ICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgYSBzaW5nbGUgR0RCIGNvbW1hbmQuXG5cCi0g ICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgYW5kIGluIGNv bmp1bmN0aW9uXG5cCi0gICAgICAgICAgICAgICAgICAgICAgd2l0aCAtLWNvbW1hbmQuXG5cCi0r ICAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggTGlrZSAteCBidXQgZXhlY3V0ZSBpdCBiZWZvcmUg bG9hZGluZyBpbmZlcmlvci5cblwKLSsgIC0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWll eCBMaWtlIC1leCBidXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCi0gICAtLWNvcmU9Q09S RUZJTEUgICAgQW5hbHl6ZSB0aGUgY29yZSBkdW1wIENPUkVGSUxFLlxuXAotICAgLS1waWQ9UElE ICAgICAgICAgIEF0dGFjaCB0byBydW5uaW5nIHByb2Nlc3MgUElELlxuXAotICIpLCBzdHJlYW0p OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAw Ci1AQCAtOTg5LDYgKzk4OSwyMiBAQCBhbHNvIGJlIGludGVybGVhdmVkIHdpdGggQHNhbXB7LWNv bW1hbmR9Ci0gICAgLXggc2V0YnJlYWtwb2ludHMgLWV4ICdydW4nIGEub3V0Ci0gQGVuZCBzbWFs bGV4YW1wbGUKLSAKLStAaXRlbSAtaW5pdC1jb21tYW5kIEB2YXJ7ZmlsZX0KLStAaXRlbXggLWl4 IEB2YXJ7ZmlsZX0KLStAY2luZGV4IEBjb2Rley0taW5pdC1jb21tYW5kfQotK0BjaW5kZXggQGNv ZGV7LWl4fQotK0V4ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0gYmVmb3JlIGxv YWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKLStpbmZlcmlvci4KLStAeHJlZntTdGFydHVwfS4K LSsKLStAaXRlbSAtaW5pdC1ldmFsLWNvbW1hbmQgQHZhcntjb21tYW5kfQotK0BpdGVteCAtaWV4 IEB2YXJ7Y29tbWFuZH0KLStAY2luZGV4IEBjb2Rley0taW5pdC1ldmFsLWNvbW1hbmR9Ci0rQGNp bmRleCBAY29kZXstaWV4fQotK0V4ZWN1dGUgYSBzaW5nbGUgQHZhbHVle0dEQk59IGNvbW1hbmQg YmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKLStpbmZlcmlvci4KLStAeHJlZntT dGFydHVwfS4KLSsKLSBAaXRlbSAtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQotIEBpdGVteCAt ZCBAdmFye2RpcmVjdG9yeX0KLSBAY2luZGV4IEBjb2Rley0tZGlyZWN0b3J5fQotQEAgLTEyNTAs NiArMTI2NiwxMyBAQCBTZXRzIHVwIHRoZSBjb21tYW5kIGludGVycHJldGVyIGFzIHNwZWNpCi0g KEBweHJlZntNb2RlIE9wdGlvbnMsIGludGVycHJldGVyfSkuCi0gCi0gQGl0ZW0KLStFeGVjdXRl cyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9 IGFuZAotK0BzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3Vh bGx5IHlvdSBzaG91bGQgdXNlIHRoZQotK0BzYW1wey1leH0gYW5kIEBzYW1wey14fSBvcHRpb25z IGluc3RlYWQsIGJ1dCB0aGlzIHdheSB5b3UgY2FuIGFwcGx5Ci0rc2V0dGluZ3MgYmVmb3JlIEB2 YWx1ZXtHREJOfSBpbml0IGZpbGVzIGdldCBleGVjdXRlZCBhbmQgYmVmb3JlIGluZmVyaW9yCi0r Z2V0cyBsb2FkZWQuCi0rCi0rQGl0ZW0KLSBAY2luZGV4IGluaXQgZmlsZQotIFJlYWRzIHRoZSBz eXN0ZW0td2lkZSBAZGZue2luaXQgZmlsZX0gKGlmIEBvcHRpb257LS13aXRoLXN5c3RlbS1nZGJp bml0fSB3YXMKLSB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7U3lzdGVt LXdpZGUgY29uZmlndXJhdGlvbiwKLUBAIC0xMjgzLDE0ICsxMzA2LDExIEBAIElmIHlvdSB3aXNo IHRvIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZwotIHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtl IHRoZSBmb2xsb3dpbmc6Ci0gCi0gQHNtYWxsZXhhbXBsZQotLSQgZ2RiIC1leCAic2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9mZiIgLWV4ICJmaWxlIG15cHJvZ3JhbSIKLSskIGdkYiAtaWV4ICJzZXQg YXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLSBAZW5kIHNtYWxsZXhhbXBsZQotIAot LVRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMg dHVybmVkIG9mZiB0b28gbGF0ZToKLS0KLS1Ac21hbGxleGFtcGxlCi0tJCBnZGIgLWV4ICJzZXQg YXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLS1AZW5kIHNtYWxsZXhhbXBsZQotK09w dGlvbiBAc2FtcHstZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlz IHRoZW4gdHVybmVkCi0rb2ZmIHRvbyBsYXRlLgotIAotIEBpdGVtCi0gUmVhZHMgY29tbWFuZCBm aWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey14fSBvcHRpb24uICBAeHJlZntDb21tYW5kCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0MTozMS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIgKzAyMDAKLUBAIC05Miw2ICs5Miwx MCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7Ci0gCQlzZXQgZGVzY3JpcHRpb24gInN0 ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgotIAkJc2V0IGNvbW1hbmQgInN0 ZXAiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qY21kYXJnX3ZlYyA9IE5VTEwuKiRnZGJfcHJvbXB0 ICQiIHsKLSsJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6 YXRpb24iCi0rCQlzZXQgY29tbWFuZCAic3RlcCIKLSsJICAgIH0KLSAJICAgIC1yZSAiLipwcmVf c3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7 Ci0gCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51 cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotQEAgLTEy OCwxOCArMTMyLDYgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2Ny aXB0aW9uICJuZXh0IG92ZXIgY29uZGl0aW9uYWwgc3RhY2sgYWxpZ25tZW50IGFsbG9jYSIKLSAJ CXNldCBjb21tYW5kICJuZXh0IgotIAkgICAgfQotLQkgICAgLXJlICIuKmNtZHNpemUgPSAxLiok Z2RiX3Byb21wdCAkIiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRzaXplIGlu aXRpYWxpemF0aW9uIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0tCSAgICAtcmUg Ii4qY21kYXJnID0gLiogeG1hbGxvYy4qJGdkYl9wcm9tcHQgJCIgewotLQkJc2V0IGRlc2NyaXB0 aW9uICJuZXh0IG92ZXIgY21kYXJnIGluaXRpYWxpemF0aW9uIHZpYSB4bWFsbG9jIgotLQkJc2V0 IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0tCSAgICAtcmUgIi4qbmNtZCA9IDAuKiRnZGJfcHJv bXB0ICQiIHsKLS0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIG5jbWQgaW5pdGlhbGl6YXRp b24iCi0tCQlzZXQgY29tbWFuZCAibmV4dCIKLS0JICAgIH0KLSAJICAgIC1yZSAiLipkaXJzaXpl ID0gMS4qJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgZGly c2l6ZSBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotQEAgLTE2Myw2ICsx NTUsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2NyaXB0aW9u ICJuZXh0IG92ZXIgdGV4dGRvbWFpbiBQQUNLQUdFIgotIAkJc2V0IGNvbW1hbmQgIm5leHQiCi0g CSAgICB9Ci0rCSAgICAtcmUgIi4qVkVDX2NsZWFudXAgLmNtZGFyZ19zLiokZ2RiX3Byb21wdCAk IiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBjbWRhcmdfcyBWRUNfY2xlYW51cCIK LSsJCXNldCBjb21tYW5kICJuZXh0IgotKwkgICAgfQotIAkgICAgLXJlICJcWzAtOVxdK1xbXHQg XF0rXHtcclxuJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIg aW5pdGlhbCBicmFjZSIKLSAJCXNldCBjb21tYW5kICJzdGVwIgoKZGlmZiAtLWdpdCBhL2dkYi1h dXRvbG9hZC0wNW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDhjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMjQ0IEBACitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM1Lmh0bWwKKworIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTY6MTcJMS4xNDAyNgorIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4xNDAyNworIyMgLTEsNSArMSwxOCBAQAorIDIwMTIt MDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJ KiBORVdTOiBEZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggYW5k CisrCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKysJKiBtYWluLmMgKHN0cnVj dCBjbWRhcmcpOiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9GSUxFIGFuZAorKwlDTURBUkdf SU5JVF9DT01NQU5ELgorKwkoY2FwdHVyZWRfbWFpbik6IE5ldyBlbnVtIGl0ZW1zIE9QVF9JWCBh bmQgT1BUX0lFWC4gIEFkZAorKwkiaW5pdC1jb21tYW5kIiwgImluaXQtZXZhbC1jb21tYW5kIiwg Iml4IiBhbmQgImlleCIgdG8gdGhlIHZhcmlhYmxlCisrCWxvbmdfb3B0aW9ucy4gIEhhbmRsZSBP UFRfSVggYW5kIE9QVF9JRVguICBQcm9jZXNzIHRoZW0gZnJvbSBDTURBUkdfVkVDLgorKwlOZXcg Y29tbWVudCBmb3IgQ01EQVJHX0ZJTEUgYW5kIENNREFSR19DT01NQU5EIHByb2Nlc3NpbmcuCisr CShwcmludF9nZGJfaGVscCk6IERlc2NyaWJlIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQK KysJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgorKworKzIwMTItMDMtMTkgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJQ29kZSBjbGVh bnVwLgorIAkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE1vdmUgaXQgaGVyZSBmcm9tIG1haW4u ICBBZGQgbW9yZSBjb21tZW50cy4KKyAJKGNtZGFyZ19zLCBWRUMgKGNtZGFyZ19zKSk6IE5ldy4K K0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDE6MzAuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAw OjQyOjUxLjIyNjY4MTA2OCArMDIwMAorQEAgLTI4LDYgKzI4LDEzIEBACisgICBub3cgc2V0IGEg YnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBidXQgbm90CisgICBidWlsZC9saWJjcHAv ZXhwci5jLgorIAorKyogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisrCisrLS1pbml0LWNvbW1h bmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgbG9hZGluZyBpbmZlcmlv ci4KKystLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXggTGlrZSAtLWV2YWwtY29tbWFu ZD1DT01NQU5ELCAtZXggYnV0CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 ZWN1dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuCisrCisgKioqIENoYW5nZXMgaW4gR0RC IDcuNAorIAorICogR0RCIG5vdyBoYW5kbGVzIGFtYmlndW91cyBsaW5lc3BlY3MgbW9yZSBjb25z aXN0ZW50bHk7IHRoZSBleGlzdGluZworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5j CTIwMTItMDQtMTggMDA6NDI6MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCitAQCAt Mjg1LDcgKzI4NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBjbWRhcmcgeworICAgICBDTURBUkdfRklM RSwKKyAKKyAgICAgLyogT3B0aW9uIHR5cGUgLWV4LiAgKi8KKy0gICAgQ01EQVJHX0NPTU1BTkQK KysgICAgQ01EQVJHX0NPTU1BTkQsCisrCisrICAgIC8qIE9wdGlvbiB0eXBlIC1peC4gICovCisr ICAgIENNREFSR19JTklUX0ZJTEUsCisrICAgIAorKyAgICAvKiBPcHRpb24gdHlwZSAtaWV4LiAg Ki8KKysgICAgQ01EQVJHX0lOSVRfQ09NTUFORAorICAgfSB0eXBlOworIAorICAgLyogVmFsdWUg b2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQgaXRzZWxmLiAgU3Ry aW5nIG1lbW9yeQorQEAgLTQzNCw3ICs0NDAsOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQorICAgICAgIE9QVF9TVEFUSVNUSUNTLAorICAgICAgIE9QVF9UVUksCisgICAgICAgT1BUX05P V0lORE9XUywKKy0gICAgICBPUFRfV0lORE9XUworKyAgICAgIE9QVF9XSU5ET1dTLAorKyAgICAg IE9QVF9JWCwKKysgICAgICBPUFRfSUVYCisgICAgIH07CisgICAgIHN0YXRpYyBzdHJ1Y3Qgb3B0 aW9uIGxvbmdfb3B0aW9uc1tdID0KKyAgICAgeworQEAgLTQ3NSw2ICs0ODMsMTAgQEAgY2FwdHVy ZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICB7InZlcnNpb24iLCBub19hcmd1bWVudCwgJnBy aW50X3ZlcnNpb24sIDF9LAorICAgICAgIHsieCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAneCd9 LAorICAgICAgIHsiZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ1gnfSwKKysgICAgICB7Imlu aXQtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSVh9LAorKyAgICAgIHsiaW5p dC1ldmFsLWNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lFWH0sCisrICAgICAg eyJpeCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSVh9LAorKyAgICAgIHsiaWV4IiwgcmVx dWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JRVh9LAorICNpZmRlZiBHREJUSworICAgICAgIHsidGNs Y29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAneid9LAorICAgICAgIHsiZW5hYmxlLWV4 dGVybmFsLWVkaXRvciIsIG5vX2FyZ3VtZW50LCAwLCAneSd9LAorQEAgLTYwMyw2ICs2MTUsMTkg QEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAJICAgICAgVkVDX3NhZmVfcHVzaCAoY21k YXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworIAkgICAgfQorIAkgICAgYnJlYWs7CisrCSAg Y2FzZSBPUFRfSVg6CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBD TURBUkdfSU5JVF9GSUxFLCBvcHRhcmcgfTsKKysKKysJICAgICAgVkVDX3NhZmVfcHVzaCAoY21k YXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworKwkgICAgfQorKwkgICAgYnJlYWs7CisrCSAg Y2FzZSBPUFRfSUVYOgorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsg Q01EQVJHX0lOSVRfQ09NTUFORCwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19zYWZlX3B1c2gg KGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKyAJICAgIGJyZWFrOwor IAkgIGNhc2UgJ0InOgorIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVudCA9IDE7CitAQCAt ODc3LDYgKzkwMiwyMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgcXVpdF9wcmVf cHJpbnQgPSBlcnJvcl9wcmVfcHJpbnQ7CisgICB3YXJuaW5nX3ByZV9wcmludCA9IF8oIlxud2Fy bmluZzogIik7CisgCisrICAvKiBQcm9jZXNzICctaXgnIGFuZCAnLWlleCcgb3B0aW9ucyBlYXJs eS4gICovCisrICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21kYXJnX3MsIGNtZGFyZ192ZWMs IGksIGNtZGFyZ19wKTsgaSsrKQorKyAgICBzd2l0Y2ggKGNtZGFyZ19wLT50eXBlKQorKyAgICB7 CisrICAgICAgY2FzZSBDTURBUkdfSU5JVF9GSUxFOgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9l cnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCisrCQkJICAgICAgIWJhdGNo X2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7CisrCWJyZWFrOworKyAgICAgIGNhc2UgQ01EQVJHX0lO SVRfQ09NTUFORDoKKysgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1h bmQsIGNtZGFyZ19wLT5zdHJpbmcsCisrCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNL X0FMTCk7CisrCWJyZWFrOworKyAgICB9CisrCisgICAvKiBSZWFkIGFuZCBleGVjdXRlIHRoZSBz eXN0ZW0td2lkZSBnZGJpbml0IGZpbGUsIGlmIGl0IGV4aXN0cy4KKyAgICAgIFRoaXMgaXMgZG9u ZSAqYmVmb3JlKiBhbGwgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYXJlCisgICAgICBwcm9j ZXNzZWQ7IGl0IHNldHMgZ2xvYmFsIHBhcmFtZXRlcnMsIHdoaWNoIGFyZSBpbmRlcGVuZGVudCBv ZgorQEAgLTk5Myw2ICsxMDMyLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIEFM TF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUg KG9iamZpbGUpOworIAorKyAgLyogUHJvY2VzcyAnLXgnIGFuZCAnLWV4JyBvcHRpb25zLiAgKi8K KyAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21k YXJnX3ApOyBpKyspCisgICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisgICAgIHsKK0BAIC0x MDkzLDYgKzExMzMsOCBAQCBPcHRpb25zOlxuXG5cCisgICAgICAgICAgICAgICAgICAgICAgRXhl Y3V0ZSBhIHNpbmdsZSBHREIgY29tbWFuZC5cblwKKyAgICAgICAgICAgICAgICAgICAgICBNYXkg YmUgdXNlZCBtdWx0aXBsZSB0aW1lcyBhbmQgaW4gY29uanVuY3Rpb25cblwKKyAgICAgICAgICAg ICAgICAgICAgICB3aXRoIC0tY29tbWFuZC5cblwKKysgIC0taW5pdC1jb21tYW5kPUZJTEUsIC1p eCBMaWtlIC14IGJ1dCBleGVjdXRlIGl0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAorKyAg LS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4IExpa2UgLWV4IGJ1dCBiZWZvcmUgbG9h ZGluZyBpbmZlcmlvci5cblwKKyAgIC0tY29yZT1DT1JFRklMRSAgICBBbmFseXplIHRoZSBjb3Jl IGR1bXAgQ09SRUZJTEUuXG5cCisgICAtLXBpZD1QSUQgICAgICAgICAgQXR0YWNoIHRvIHJ1bm5p bmcgcHJvY2VzcyBQSUQuXG5cCisgIiksIHN0cmVhbSk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0MTozMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx Mi0wNC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIgKzAyMDAKK0BAIC05ODksNiArOTg5LDIyIEBAIGFs c28gYmUgaW50ZXJsZWF2ZWQgd2l0aCBAc2FtcHstY29tbWFuZH0KKyAgICAteCBzZXRicmVha3Bv aW50cyAtZXggJ3J1bicgYS5vdXQKKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorK0BpdGVtIC1pbml0 LWNvbW1hbmQgQHZhcntmaWxlfQorK0BpdGVteCAtaXggQHZhcntmaWxlfQorK0BjaW5kZXggQGNv ZGV7LS1pbml0LWNvbW1hbmR9CisrQGNpbmRleCBAY29kZXstaXh9CisrRXhlY3V0ZSBjb21tYW5k cyBmcm9tIGZpbGUgQHZhcntmaWxlfSBiZWZvcmUgbG9hZGluZyBnZGJpbml0IGZpbGVzIG9yIHRo ZQorK2luZmVyaW9yLgorK0B4cmVme1N0YXJ0dXB9LgorKworK0BpdGVtIC1pbml0LWV2YWwtY29t bWFuZCBAdmFye2NvbW1hbmR9CisrQGl0ZW14IC1pZXggQHZhcntjb21tYW5kfQorK0BjaW5kZXgg QGNvZGV7LS1pbml0LWV2YWwtY29tbWFuZH0KKytAY2luZGV4IEBjb2Rley1pZXh9CisrRXhlY3V0 ZSBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gY29tbWFuZCBiZWZvcmUgbG9hZGluZyBnZGJpbml0IGZp bGVzIG9yIHRoZQorK2luZmVyaW9yLgorK0B4cmVme1N0YXJ0dXB9LgorKworIEBpdGVtIC1kaXJl Y3RvcnkgQHZhcntkaXJlY3Rvcnl9CisgQGl0ZW14IC1kIEB2YXJ7ZGlyZWN0b3J5fQorIEBjaW5k ZXggQGNvZGV7LS1kaXJlY3Rvcnl9CitAQCAtMTI1MCw2ICsxMjY2LDEzIEBAIFNldHMgdXAgdGhl IGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2kKKyAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50 ZXJwcmV0ZXJ9KS4KKyAKKyBAaXRlbQorK0V4ZWN1dGVzIGNvbW1hbmRzIGFuZCBjb21tYW5kIGZp bGVzIHNwZWNpZmllZCBieSB0aGUgQHNhbXB7LWlleH0gYW5kCisrQHNhbXB7LWl4fSBvcHRpb25z IGluIHRoZWlyIHNwZWNpZmllZCBvcmRlci4gIFVzdWFsbHkgeW91IHNob3VsZCB1c2UgdGhlCisr QHNhbXB7LWV4fSBhbmQgQHNhbXB7LXh9IG9wdGlvbnMgaW5zdGVhZCwgYnV0IHRoaXMgd2F5IHlv dSBjYW4gYXBwbHkKKytzZXR0aW5ncyBiZWZvcmUgQHZhbHVle0dEQk59IGluaXQgZmlsZXMgZ2V0 IGV4ZWN1dGVkIGFuZCBiZWZvcmUgaW5mZXJpb3IKKytnZXRzIGxvYWRlZC4KKysKKytAaXRlbQor IEBjaW5kZXggaW5pdCBmaWxlCisgUmVhZHMgdGhlIHN5c3RlbS13aWRlIEBkZm57aW5pdCBmaWxl fSAoaWYgQG9wdGlvbnstLXdpdGgtc3lzdGVtLWdkYmluaXR9IHdhcworIHVzZWQgd2hlbiBidWls ZGluZyBAdmFsdWV7R0RCTn07IEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uLAorQEAg LTEyODMsMTQgKzEzMDYsMTEgQEAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSB0aGUgYXV0by1sb2Fk aW5nCisgeW91IG11c3QgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAKKyBAc21h bGxleGFtcGxlCistJCBnZGIgLWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiAtZXggImZp bGUgbXlwcm9ncmFtIgorKyQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIG15 cHJvZ3JhbQorIEBlbmQgc21hbGxleGFtcGxlCisgCistVGhlIGZvbGxvd2luZyBkb2VzIG5vdCB3 b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGluZyBpcyB0dXJuZWQgb2ZmIHRvbyBsYXRlOgorLQor LUBzbWFsbGV4YW1wbGUKKy0kIGdkYiAtZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIG15 cHJvZ3JhbQorLUBlbmQgc21hbGxleGFtcGxlCisrT3B0aW9uIEBzYW1wey1leH0gZG9lcyBub3Qg d29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0dXJuZWQKKytvZmYgdG9vIGxh dGUuCisgCisgQGl0ZW0KKyBSZWFkcyBjb21tYW5kIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgQHNh bXB7LXh9IG9wdGlvbi4gIEB4cmVme0NvbW1hbmQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAky MDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEyLTA0LTE4IDAwOjQyOjUx LjIzMjY4MTA1MiArMDIwMAorQEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25l eHRzIHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhvbl9zY3JpcHQgaW5p dGlhbGl6YXRpb24iCisgCQlzZXQgY29tbWFuZCAic3RlcCIKKyAJICAgIH0KKysJICAgIC1yZSAi LipjbWRhcmdfdmVjID0gTlVMTC4qJGdkYl9wcm9tcHQgJCIgeworKwkJc2V0IGRlc2NyaXB0aW9u ICJzdGVwIG92ZXIgY21kYXJnX3ZlYyBpbml0aWFsaXphdGlvbiIKKysJCXNldCBjb21tYW5kICJz dGVwIgorKwkgICAgfQorIAkgICAgLXJlICIuKnByZV9zdGF0X2NoYWluID0gbWFrZV9jb21tYW5k X3N0YXRzX2NsZWFudXAuKiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBkZXNjcmlwdGlvbiAibmV4 dCBvdmVyIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwIGFuZCBldmVyeXRoaW5nIGl0IGNhbGxz IgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCitAQCAtMTI4LDE4ICsxMzIsNiBAQCBwcm9jIGRvX3N0 ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBjb25kaXRp b25hbCBzdGFjayBhbGlnbm1lbnQgYWxsb2NhIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCisgCSAg ICB9CistCSAgICAtcmUgIi4qY21kc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKKy0JCXNldCBk ZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZHNpemUgaW5pdGlhbGl6YXRpb24iCistCQlzZXQgY29t bWFuZCAibmV4dCIKKy0JICAgIH0KKy0JICAgIC1yZSAiLipjbWRhcmcgPSAuKiB4bWFsbG9jLiok Z2RiX3Byb21wdCAkIiB7CistCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBjbWRhcmcgaW5p dGlhbGl6YXRpb24gdmlhIHhtYWxsb2MiCistCQlzZXQgY29tbWFuZCAibmV4dCIKKy0JICAgIH0K Ky0JICAgIC1yZSAiLipuY21kID0gMC4qJGdkYl9wcm9tcHQgJCIgeworLQkJc2V0IGRlc2NyaXB0 aW9uICJuZXh0IG92ZXIgbmNtZCBpbml0aWFsaXphdGlvbiIKKy0JCXNldCBjb21tYW5kICJuZXh0 IgorLQkgICAgfQorIAkgICAgLXJlICIuKmRpcnNpemUgPSAxLiokZ2RiX3Byb21wdCAkIiB7Cisg CQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBkaXJzaXplIGluaXRpYWxpemF0aW9uIgorIAkJ c2V0IGNvbW1hbmQgIm5leHQiCitAQCAtMTYzLDYgKzE1NSwxMCBAQCBwcm9jIGRvX3N0ZXBzX2Fu ZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciB0ZXh0ZG9tYWluIFBB Q0tBR0UiCisgCQlzZXQgY29tbWFuZCAibmV4dCIKKyAJICAgIH0KKysJICAgIC1yZSAiLipWRUNf Y2xlYW51cCAuY21kYXJnX3MuKiRnZGJfcHJvbXB0ICQiIHsKKysJCXNldCBkZXNjcmlwdGlvbiAi bmV4dCBvdmVyIGNtZGFyZ19zIFZFQ19jbGVhbnVwIgorKwkJc2V0IGNvbW1hbmQgIm5leHQiCisr CSAgICB9CisgCSAgICAtcmUgIlxbMC05XF0rXFtcdCBcXStce1xyXG4kZ2RiX3Byb21wdCAkIiB7 CisgCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBpbml0aWFsIGJyYWNlIgorIAkJc2V0IGNv bW1hbmQgInN0ZXAiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA2b2YyMi5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0wNm9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFl MTIxZWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTA2b2YyMi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDcxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDMvbXNnMDAyMzYuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAx ODoxOToyMwkxLjE0MDI3Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoyMzo1 MQkxLjE0MDI4Ci0jIyAtMSw1ICsxLDEzIEBACi0gMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlDb2RlIGNsZWFudXAuCi0rCSogcHl0 aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTmV3IHZhcmlhYmxl IGJhY2tfdG8uCi0rCVR1cm4gZmNsb3NlIGFuZCB4ZnJlZSBjYWxscyBpbnRvIG1ha2VfY2xlYW51 cF9mY2xvc2UgYW5kIG1ha2VfY2xlYW51cAotKwl3aXRoIHhmcmVlLgotKwkoYXV0b19sb2FkX29i amZpbGVfc2NyaXB0KTogVHVybiBmY2xvc2UgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlLgotKwot KzIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSsKLSAJKiBORVdTOiBEZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29tbWFuZD1GSUxFLCAt aXggYW5kCi0gCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KLSAJKiBtYWluLmMg KHN0cnVjdCBjbWRhcmcpOiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9GSUxFIGFuZAotLS0t IHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDEvMjYgMjE6NTQ6NDUJMS4xOAot KysrIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDMvMTkgMTg6MjM6NTIJMS4x OQotQEAgLTI1NCw2ICsyNTQsNyBAQAotICAgICAgIEZJTEUgKnN0cmVhbTsKLSAgICAgICBjaGFy ICpmdWxsX3BhdGg7Ci0gICAgICAgaW50IG9wZW5lZCwgaW5faGFzaF90YWJsZTsKLSsgICAgICBz dHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSAKLSAgICAgICBpZiAoKnAgIT0gMSkKLSAJewotQEAg LTI4Niw2ICsyODcsMTMgQEAKLSAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAo ZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCi0gCQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCk7 Ci0gCi0rICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsK LSsgICAgICBpZiAob3BlbmVkKQotKwl7Ci0rCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFt KTsKLSsJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKwl9Ci0rCi0gICAgICAg LyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0 byBub3QgYmUKLSAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8gcHJpbnQgYW4gZXJy b3IgbWVzc2FnZSBmb3IgZWFjaAotIAkgc2NyaXB0LCB0b28gbXVjaCBub2lzZS4gIEluc3RlYWQs IHdlIHByaW50IHRoZSB3YXJuaW5nIG9uY2UgYW5kIHRlbGwKLUBAIC0zMTMsOSArMzIxLDkgQEAK LSAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAq LwotIAkgIGlmICghIGluX2hhc2hfdGFibGUpCi0gCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwotLQkgIGZjbG9zZSAoc3Ry ZWFtKTsKLS0JICB4ZnJlZSAoZnVsbF9wYXRoKTsKLSAJfQotKwotKyAgICAgIGRvX2NsZWFudXBz IChiYWNrX3RvKTsKLSAgICAgfQotIH0KLSAKLUBAIC00MjAsNiArNDI4LDggQEAKLSAgICAgewot ICAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotIAotKyAg ICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKLSsKLSAgICAgICAvKiBBZGQgdGhpcyBz Y3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgot IAkgY2FuIHByaW50IGl0LiAgKi8KLSAgICAgICBwc3BhY2VfaW5mbyA9Ci1AQCAtNDMyLDcgKzQ0 Miw2IEBACi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVu dCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLSAgICAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0tICAg ICAgZmNsb3NlIChpbnB1dCk7Ci0gICAgIH0KLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0w Nm9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUxMjFlZgot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wNm9mMjgucGF0Y2gKQEAgLTAsMCArMSw3 MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNi5o dG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjIzOjUxCTEuMTQwMjgKKyMjIC0x LDUgKzEsMTMgQEAKKyAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+CisgCisrCUNvZGUgY2xlYW51cC4KKysJKiBweXRob24vcHktYXV0by1sb2Fk LmMgKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBOZXcgdmFyaWFibGUgYmFja190by4KKysJVHVy biBmY2xvc2UgYW5kIHhmcmVlIGNhbGxzIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZSBhbmQgbWFr ZV9jbGVhbnVwCisrCXdpdGggeGZyZWUuCisrCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBU dXJuIGZjbG9zZSBpbnRvIG1ha2VfY2xlYW51cF9mY2xvc2UuCisrCisrMjAxMi0wMy0xOSAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAkqIE5FV1M6IERl c2NyaWJlIG5ldyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKKyAJLS1pbml0 LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgorIAkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6 IE5ldyBlbnVtIGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCistLS0gc3JjL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMJMjAxMi8wMS8yNiAyMTo1NDo0NQkxLjE4CisrKysgc3JjL2dkYi9weXRo b24vcHktYXV0by1sb2FkLmMJMjAxMi8wMy8xOSAxODoyMzo1MgkxLjE5CitAQCAtMjU0LDYgKzI1 NCw3IEBACisgICAgICAgRklMRSAqc3RyZWFtOworICAgICAgIGNoYXIgKmZ1bGxfcGF0aDsKKyAg ICAgICBpbnQgb3BlbmVkLCBpbl9oYXNoX3RhYmxlOworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpi YWNrX3RvOworIAorICAgICAgIGlmICgqcCAhPSAxKQorIAl7CitAQCAtMjg2LDYgKzI4NywxMyBA QAorICAgICAgIG9wZW5lZCA9IGZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCAxIC8qc2VhcmNo X3BhdGgqLywKKyAJCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoKTsKKyAKKysgICAgICBiYWNr X3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKyAgICAgIGlmIChvcGVu ZWQpCisrCXsKKysJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworKwkgIG1ha2VfY2xl YW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7CisrCX0KKysKKyAgICAgICAvKiBJZiBvbmUgc2NyaXB0 IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQorIAkgZm91 bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBl YWNoCisgCSBzY3JpcHQsIHRvbyBtdWNoIG5vaXNlLiAgSW5zdGVhZCwgd2UgcHJpbnQgdGhlIHdh cm5pbmcgb25jZSBhbmQgdGVsbAorQEAgLTMxMyw5ICszMjEsOSBAQAorIAkgIC8qIElmIHRoaXMg ZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisgCSAgaWYgKCEgaW5f aGFzaF90YWJsZSkKKyAJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpm aWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7CistCSAgZmNsb3NlIChzdHJlYW0pOworLQkgIHhmcmVl IChmdWxsX3BhdGgpOworIAl9CisrCisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAg ICB9CisgfQorIAorQEAgLTQyMCw2ICs0MjgsOCBAQAorICAgICB7CisgICAgICAgc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisgCisrICAgICAgbWFrZV9jbGVhbnVw X2ZjbG9zZSAoaW5wdXQpOworKworICAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFz aCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCisgCSBjYW4gcHJpbnQgaXQu ICAqLworICAgICAgIHBzcGFjZV9pbmZvID0KK0BAIC00MzIsNyArNDQyLDYgQEAKKyAJIGFuZCB0 aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxl CisgCSBsb2FkcyBhbnl3YXkuICAqLworICAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKy0gICAgICBmY2xvc2UgKGlucHV0 KTsKKyAgICAgfQorIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKCmRpZmYgLS1naXQgYS9n ZGItYXV0b2xvYWQtMDdvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2YyMi5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkMTI5ZS4uMDAwMDAwMAotLS0gYS9nZGItYXV0 b2xvYWQtMDdvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDI5Ni5odG1sCi0KLSMjIyBz cmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wMy8yMiAwODoxMDo0MQkxLjEyODkKLSMjIyBzcmMv Z2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wMy8yNyAyMDoxNToyMAkxLjEyOTAKLSMjIC0xLDMgKzEs MTIgQEAKLSsyMDEyLTAzLTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFJlbmFtZSBub2RlIHJl ZmVyZW5jZQotKwknLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24nIHRvICdkb3RkZWJ1Z19nZGJf c2NyaXB0cyBzZWN0aW9uJy4KLSsJVHdpY2UuCi0rCSguZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlv bik6IFJlbmFtZSB0aGUgbm9kZSAuLi4KLSsJKGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24p OiAuLi4gaGVyZS4KLSsJKE1haW50ZW5hbmNlIENvbW1hbmRzKTogQWxzbyByZW5hbWUgdGhpcyBu b2RlIHJlZmVyZW5jZS4KLSsKLSAyMDEyLTAzLTIyICBTaXZhIENoYW5kcmEgUmVkZHkgIDxzaXZh Y2hhbmRyYUBnb29nbGUuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChQeXRob24gQVBJL1ZhbHVl cyBGcm9tIEluZmVyaW9yKTogQWRkIGRlc2NyaXB0aW9uCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi8wMy8yMiAwODoxMDo0MQkxLjkzNgotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS45MzcKLUBAIC0yNDcxNyw4ICsyNDcxNyw4IEBACi0g QGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGFuZCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9 IHNlY3Rpb24uCi0gCi0gQG1lbnUKLS0qIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgIFRo ZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotLSogLmRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb246OiAgVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgotKyogb2Jq ZmlsZS1nZGIucHkgZmlsZTo6ICAgICAgICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5w eX0gZmlsZQotKyogZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbjo6IFRoZSBAY29kZXsuZGVi dWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSAqIFdoaWNoIGZsYXZvciB0byBjaG9vc2U/OjoKLSBA ZW5kIG1lbnUKLSAKLUBAIC0yNDc0NCw3ICsyNDc0NCw3IEBACi0gCi0gQWxzbyBwcmludGVkIGlz IHRoZSBsaXN0IG9mIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBpbgotIHRoZSBAY29kZXsu ZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCi0tKEBweHJlZnsu ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0pLgotKyhAcHhyZWZ7ZG90ZGVidWdfZ2RiX3Njcmlw dHMgc2VjdGlvbn0pLgotIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFtZXMgYXJlIG5v dCBwcmludGVkIHdoZW4gQHZhbHVle0dEQk59Ci0gdHJpZXMgdG8gbG9hZCB0aGVtIGFuZCBmYWls cy4gIFRoZXJlIG1heSBiZSBtYW55IG9mIHRoZW0sIGFuZCBwcmludGluZwotIGFuIGVycm9yIG1l c3NhZ2UgZm9yIGVhY2ggb25lIGlzIHByb2JsZW1hdGljLgotQEAgLTI0Nzk1LDcgKzI0Nzk1LDcg QEAKLSBTbyB5b3VyIEBmaWxley1nZGIucHl9IGZpbGUgc2hvdWxkIGJlIGNhcmVmdWwgdG8gYXZv aWQgZXJyb3JzIGlmIGl0Ci0gaXMgZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNlLgotIAotLUBub2Rl IC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uCi0rQG5vZGUgZG90ZGVidWdfZ2RiX3NjcmlwdHMg c2VjdGlvbgotIEBzdWJzdWJzZWN0aW9uIFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNl Y3Rpb24KLSBAY2luZGV4IEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgotIAotQEAg LTMzNDc1LDcgKzMzNDc1LDcgQEAKLSBtYXRjaGluZyBAdmFye3JlZ2V4cH0uCi0gRm9yIGVhY2gg c2NyaXB0LCB0aGlzIGNvbW1hbmQgcHJpbnRzIGl0cyBuYW1lIGFzIHNwZWNpZmllZCBpbiB0aGUg b2JqZmlsZSwKLSBhbmQgdGhlIGZ1bGwgcGF0aCBpZiBrbm93bi4KLS1AeHJlZnsuZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbn0uCi0rQHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0u Ci0gCi0gQGtpbmRleCBtYWludCBwcmludCBzdGF0aXN0aWNzCi0gQGNpbmRleCBiY2FjaGUgc3Rh dGlzdGljcwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wN29mMjgucGF0Y2ggYi9nZGItYXV0 b2xvYWQtMDdvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUx ZDEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDdvZjI4LnBhdGNoCkBAIC0w LDAgKzEsNTcgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNn MDAyOTYuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjIgMDg6MTA6 NDEJMS4xMjg5CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjcgMjA6MTU6MjAJ MS4xMjkwCisjIyAtMSwzICsxLDEyIEBACisrMjAxMi0wMy0yNyAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRp bmcpOiBSZW5hbWUgbm9kZSByZWZlcmVuY2UKKysJJy5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u JyB0byAnZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbicuCisrCVR3aWNlLgorKwkoLmRlYnVn X2dkYl9zY3JpcHRzIHNlY3Rpb24pOiBSZW5hbWUgdGhlIG5vZGUgLi4uCisrCShkb3RkZWJ1Z19n ZGJfc2NyaXB0cyBzZWN0aW9uKTogLi4uIGhlcmUuCisrCShNYWludGVuYW5jZSBDb21tYW5kcyk6 IEFsc28gcmVuYW1lIHRoaXMgbm9kZSByZWZlcmVuY2UuCisrCisgMjAxMi0wMy0yMiAgU2l2YSBD aGFuZHJhIFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29vZ2xlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5m byAoUHl0aG9uIEFQSS9WYWx1ZXMgRnJvbSBJbmZlcmlvcik6IEFkZCBkZXNjcmlwdGlvbgorLS0t IHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS45MzYKKysrKyBz cmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuOTM3CitAQCAtMjQ3 MTcsOCArMjQ3MTcsOCBAQAorIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBhbmQgQGNvZGV7 LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uLgorIAorIEBtZW51CistKiBvYmpmaWxlLWdkYi5w eSBmaWxlOjogICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKKy0q IC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjogIFRoZSBAY29kZXsuZGVidWdfZ2RiX3Njcmlw dHN9IHNlY3Rpb24KKysqIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgICBUaGUgQGZpbGV7 QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKKysqIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rp b246OiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgKiBXaGljaCBmbGF2 b3IgdG8gY2hvb3NlPzo6CisgQGVuZCBtZW51CisgCitAQCAtMjQ3NDQsNyArMjQ3NDQsNyBAQAor IAorIEFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9u ZWQgaW4KKyB0aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5v dCBmb3VuZAorLShAcHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KKysoQHB4cmVm e2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KKyBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNl IHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQorIHRyaWVzIHRv IGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJp bnRpbmcKKyBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KK0BA IC0yNDc5NSw3ICsyNDc5NSw3IEBACisgU28geW91ciBAZmlsZXstZ2RiLnB5fSBmaWxlIHNob3Vs ZCBiZSBjYXJlZnVsIHRvIGF2b2lkIGVycm9ycyBpZiBpdAorIGlzIGV2YWx1YXRlZCBtb3JlIHRo YW4gb25jZS4KKyAKKy1Abm9kZSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgorK0Bub2RlIGRv dGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KKyBAc3Vic3Vic2VjdGlvbiBUaGUgQGNvZGV7LmRl YnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgQGNpbmRleCBAY29kZXsuZGVidWdfZ2RiX3Njcmlw dHN9IHNlY3Rpb24KKyAKK0BAIC0zMzQ3NSw3ICszMzQ3NSw3IEBACisgbWF0Y2hpbmcgQHZhcnty ZWdleHB9LgorIEZvciBlYWNoIHNjcmlwdCwgdGhpcyBjb21tYW5kIHByaW50cyBpdHMgbmFtZSBh cyBzcGVjaWZpZWQgaW4gdGhlIG9iamZpbGUsCisgYW5kIHRoZSBmdWxsIHBhdGggaWYga25vd24u CistQHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgorK0B4cmVme2RvdGRlYnVnX2dk Yl9zY3JpcHRzIHNlY3Rpb259LgorIAorIEBraW5kZXggbWFpbnQgcHJpbnQgc3RhdGlzdGljcwor IEBjaW5kZXggYmNhY2hlIHN0YXRpc3RpY3MKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDhv ZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA4b2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYjQ4YmZjMS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDhvZjIyLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLVtwYXRjaCM0IDIvOF0gQ29kZSBj bGVhbnVwOiBuZXcgcGF0aCB0byBWRUMgaW4gdXRpbHMuYwotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODYuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMS5odG1sCi0gLSByZWR1Y2VkIGZvciB0aGUg YmFja3BvcnQKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDU6MDUJMS4x NDExMAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDc6MDgJMS4xNDExMQot IyMgLTEsNiArMSwzNCBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJQ29kZSBjbGVhbnVwLgotKwkqIGNoYXJzZXQuYyAoZmlu ZF9jaGFyc2V0X25hbWVzKTogUmVtb3ZlIHZhcmlhYmxlcyBpeCBhbmQgZWx0LgotKwlVc2UgZnJl ZV9jaGFyX3B0cl92ZWMuCi0rCSogZWxmcmVhZC5jIChidWlsZF9pZF90b19kZWJ1Z19maWxlbmFt ZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAotKwliYWNrX3RvIGFuZCBpeC4gIFVzZSBk aXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKLSsJZGVidWdkaXJfZW5k LiAgTmV3IHZhcmlhYmxlIGRlYnVnZGlyX2xlbi4KLSsJKiBnZGJfdmVjcy5oIChmcmVlX2NoYXJf cHRyX3ZlYywgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjKQotKwkoZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjX2FwcGVuZCwgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3Ci0rCWRl Y2xhcmF0aW9ucy4KLSsJKiBwcm9nc3BhY2UuYyAoY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9j YWNoZSk6IFJlbW92ZSB2YXJpYWJsZXMgaXgKLSsJYW5kIGVsdC4gIFVzZSBmcmVlX2NoYXJfcHRy X3ZlYy4KLSsJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgdmFyaWFibGVzIGFyZ3YsIGFy ZyBhbmQgYXJndl9pbmRleC4KLSsJTmV3IHZhcmlhYmxlcyBkaXJfdmVjLCBiYWNrX3RvLCBpeCBh bmQgbmFtZS4KLSsJVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQuICBVc2UgZnJl ZWFyZ3YgaW5zdGVhZCBvZgotKwltYWtlX2NsZWFudXBfZnJlZWFyZ3YuICBSZW1vdmUgdmFyaWFi bGUgc2VwYXJhdG9yLiAgU2ltcGxpZnkgdGhlIGNvZGUKLSsJbm8gbG9uZ2VyIGV4cGVjdGluZyBE SVJOQU1FX1NFUEFSQVRPUi4KLSsJKG9wZW5wKTogUmVtb3ZlIHZhcmlhYmxlIHAsIHAxIGFuZCBs ZW4uICBOZXcgdmFyaWFibGVzIGRpcl92ZWMsCi0rCWJhY2tfdG8sIGl4IGFuZCBkaXIuICBVc2Ug ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgU2ltcGxpZnkgdGhlIGNvZGUKLSsJbm8gbG9uZ2Vy IGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KLSsJKiBzeW1maWxlLmMgKGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAotKwliYWNrX3RvIGFu ZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKLSsJ ZGVidWdkaXJfZW5kLgotKwkqIHV0aWxzLmMgKGZyZWVfY2hhcl9wdHJfdmVjLCBkb19mcmVlX2No YXJfcHRyX3ZlYykKLSsJKG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYywgZGlybmFtZXNf dG9fY2hhcl9wdHJfdmVjX2FwcGVuZCkKLSsJKGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyk6IE5l dyBmdW5jdGlvbnMuCi0rCi0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotKwotKwlDb2RlIGNsZWFudXAuCi0gCSogc291cmNlLmMgKGFkZF9w YXRoKTogUmVtb3ZlIGFsd2F5cyB0cnVlIGNvbmRpdGlvbmFsICdwID09IDAnIGFuZAotIAl1bmlu ZGVudCBpdHMgY29kZSBibG9jay4KLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9n ZGJfdmVjcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9n ZGJfdmVjcy5oCTIwMTItMDQtMTggMDA6NDA6MTIuMDY3MDg2MDE2ICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQwOjIzLjQ3NDA1Njk5 MyArMDIwMAotQEAgLTI1LDQgKzI1LDE2IEBACi0gCi0gREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0g Ci0rLyogRnJvbSB1dGlscy5jOiAqLwotKwotK2V4dGVybiB2b2lkIGZyZWVfY2hhcl9wdHJfdmVj IChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKLSsKLStleHRlcm4gc3RydWN0IGNsZWFu dXAgKgotKyAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAq Y2hhcl9wdHJfdmVjKTsKLSsKLStleHRlcm4gdm9pZCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNf YXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsCi0rCQkJCQkgICAgIGNvbnN0IGNoYXIgKmRp cm5hbWVzKTsKLSsKLStleHRlcm4gVkVDIChjaGFyX3B0cikgKmRpcm5hbWVzX3RvX2NoYXJfcHRy X3ZlYyAoY29uc3QgY2hhciAqZGlybmFtZXMpOwotKwotICNlbmRpZiAvKiBHREJfVkVDU19IICov Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjEy LjA2ODA4NjAxMyArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMJMjAx Mi0wNC0xOCAwMDo0MDo0OS44NjI5ODk4NTUgKzAyMDAKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2lm ZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2Vu ZGlmIC8qIEhBVkVfU1lTX1JFU09VUkNFX0ggKi8KLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAK LSAjaWZkZWYgVFVJCi0gI2luY2x1ZGUgInR1aS90dWkuaCIJCS8qIEZvciB0dWlfZ2V0X2NvbW1h bmRfZGltZW5zaW9uLiAgICovCi1AQCAtMzgzNSw2ICszODM2LDk1IEBAIHByb2R1Y2VyX2lzX2dj Y19nZV80IChjb25zdCBjaGFyICpwcm9kdWMKLSAgIHJldHVybiBtaW5vcjsKLSB9Ci0gCi0rLyog Q2FsbCB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBhbmQgZmluYWwgVkVD X2ZyZWUgZm9yCi0rICAgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KLSsKLSsgICBZb3UgbXVzdCBub3Qg bW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciBpdCBnb3QgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZnVu Y3Rpb24KLSsgICBieSBtYWtlX2NsZWFudXAgYXMgdGhlIENIQVJfUFRSX1ZFQyBiYXNlIGFkZHJl c3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRlcy4KLSsgICBDb250cmFyeSB0byBWRUNfZnJlZSB0 aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KLSsK LSt2b2lkCi0rZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMp Ci0rewotKyAgaW50IGl4OwotKyAgY2hhciAqbmFtZTsKLSsKLSsgIGZvciAoaXggPSAwOyBWRUNf aXRlcmF0ZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYywgaXgsIG5hbWUpOyArK2l4KQotKyAgICB4 ZnJlZSAobmFtZSk7Ci0rICBWRUNfZnJlZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYyk7Ci0rfQot KwotKy8qIEhlbHBlciBmb3IgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2RvX2ZyZWVfY2hhcl9wdHJfdmVjICh2b2lkICphcmcpCi0rewotKyAg VkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyA9IGFyZzsKLSsKLSsgIGZyZWVfY2hhcl9wdHJf dmVjIChjaGFyX3B0cl92ZWMpOwotK30KLSsKLSsvKiBNYWtlIGNsZWFudXAgaGFuZGxlciBjYWxs aW5nIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJfVkVDIGFuZAotKyAgIGZpbmFs IFZFQ19mcmVlIGZvciBDSEFSX1BUUl9WRUMgaXRzZWxmLgotKwotKyAgIFlvdSBtdXN0IG5vdCBt b2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIHRoaXMgY2xlYW51cCByZWdpc3RyYXRpb24gYXMgdGhl Ci0rICAgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVz LiAgQ29udHJhcnkgdG8gVkVDX2ZyZWUKLSsgICB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5u b3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KLSsKLStzdHJ1Y3QgY2xlYW51cCAqCi0rbWFrZV9j bGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKQot K3sKLSsgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2ZyZWVfY2hhcl9wdHJfdmVjLCBjaGFyX3B0 cl92ZWMpOwotK30KLSsKLSsvKiBFeHRlbmRlZCB2ZXJzaW9uIG9mIGRpcm5hbWVzX3RvX2NoYXJf cHRyX3ZlYyAtIGFkZGl0aW9uYWxseSBpZiAqVkVDUCBpcwotKyAgIG5vbi1OVUxMIHRoZSBuZXcg bGlzdCBlbGVtZW50cyBmcm9tIERJUk5BTUVTIGFyZSBhcHBlbmRlZCB0byB0aGUgZXhpc3RpbmcK LSsgICAqVkVDUCBsaXN0IG9mIGVudHJpZXMuICAqVkVDUCBhZGRyZXNzIHdpbGwgYmUgdXBkYXRl ZCBieSB0aGlzIGNhbGwuICAqLwotKwotK3ZvaWQKLStkaXJuYW1lc190b19jaGFyX3B0cl92ZWNf YXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsIGNvbnN0IGNoYXIgKmRpcm5hbWVzKQotK3sK LSsgIGRvCi0rICAgIHsKLSsgICAgICBzaXplX3QgdGhpc19sZW47Ci0rICAgICAgY2hhciAqbmV4 dF9kaXIsICp0aGlzX2RpcjsKLSsKLSsgICAgICBuZXh0X2RpciA9IHN0cmNociAoZGlybmFtZXMs IERJUk5BTUVfU0VQQVJBVE9SKTsKLSsgICAgICBpZiAobmV4dF9kaXIgPT0gTlVMTCkKLSsJdGhp c19sZW4gPSBzdHJsZW4gKGRpcm5hbWVzKTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICB0aGlzX2xl biA9IG5leHRfZGlyIC0gZGlybmFtZXM7Ci0rCSAgbmV4dF9kaXIrKzsKLSsJfQotKwotKyAgICAg IHRoaXNfZGlyID0geG1hbGxvYyAodGhpc19sZW4gKyAxKTsKLSsgICAgICBtZW1jcHkgKHRoaXNf ZGlyLCBkaXJuYW1lcywgdGhpc19sZW4pOwotKyAgICAgIHRoaXNfZGlyW3RoaXNfbGVuXSA9ICdc MCc7Ci0rICAgICAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsICp2ZWNwLCB0aGlzX2Rpcik7Ci0r Ci0rICAgICAgZGlybmFtZXMgPSBuZXh0X2RpcjsKLSsgICAgfQotKyAgd2hpbGUgKGRpcm5hbWVz ICE9IE5VTEwpOwotK30KLSsKLSsvKiBTcGxpdCBESVJOQU1FUyBieSBESVJOQU1FX1NFUEFSQVRP UiBkZWxpbWl0ZXIgYW5kIHJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZQotKyAgIGVsZW1lbnRzIGlu IHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgRm9yIGVtcHR5IHN0cmluZyAoIiIpIERJUk5BTUVTIHJl dHVybgotKyAgIGxpc3Qgb2Ygb25lIGVtcHR5IHN0cmluZyAoIiIpIGVsZW1lbnQuCi0rICAgCi0r ICAgWW91IG1heSBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZ3MuCi0rICAgUmVhZCBmcmVlX2No YXJfcHRyX3ZlYyBmb3IgaXRzIGNsZWFudXAuICAqLwotKwotK1ZFQyAoY2hhcl9wdHIpICoKLStk aXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVzKQotK3sKLSsgIFZF QyAoY2hhcl9wdHIpICpyZXR2YWwgPSBOVUxMOwotKyAgCi0rICBkaXJuYW1lc190b19jaGFyX3B0 cl92ZWNfYXBwZW5kICgmcmV0dmFsLCBkaXJuYW1lcyk7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwot K30KLSsKLSAjaWZkZWYgSEFWRV9XQUlUUElECi0gCi0gI2lmZGVmIFNJR0FMUk0KCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMDhvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA4b2YyOC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDhiZmMxCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA4b2YyOC5wYXRjaApAQCAtMCwwICsxLDE3MSBAQAorW3Bh dGNoIzQgMi84XSBDb2RlIGNsZWFudXA6IG5ldyBwYXRoIHRvIFZFQyBpbiB1dGlscy5jCitodHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4Ni5odG1sCito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTExLmh0bWwKKyAt IHJlZHVjZWQgZm9yIHRoZSBiYWNrcG9ydAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NC8xNyAxNTo0NTowNQkxLjE0MTEwCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo0NzowOAkxLjE0MTExCisjIyAtMSw2ICsxLDM0IEBACisgMjAxMi0wNC0xNyAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAlDb2RlIGNsZWFudXAuCisr CSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBSZW1vdmUgdmFyaWFibGVzIGl4IGFu ZCBlbHQuCisrCVVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBlbGZyZWFkLmMgKGJ1aWxkX2lk X3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92ZWMsCisrCWJhY2tf dG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJlbW92ZSB2YXJpYWJs ZQorKwlkZWJ1Z2Rpcl9lbmQuICBOZXcgdmFyaWFibGUgZGVidWdkaXJfbGVuLgorKwkqIGdkYl92 ZWNzLmggKGZyZWVfY2hhcl9wdHJfdmVjLCBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMp CisrCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLCBkaXJuYW1lc190b19jaGFyX3B0 cl92ZWMpOiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIHByb2dzcGFjZS5jIChjbGVhcl9wcm9n cmFtX3NwYWNlX3NvbGliX2NhY2hlKTogUmVtb3ZlIHZhcmlhYmxlcyBpeAorKwlhbmQgZWx0LiAg VXNlIGZyZWVfY2hhcl9wdHJfdmVjLgorKwkqIHNvdXJjZS5jIChhZGRfcGF0aCk6IFJlbW92ZSB2 YXJpYWJsZXMgYXJndiwgYXJnIGFuZCBhcmd2X2luZGV4LgorKwlOZXcgdmFyaWFibGVzIGRpcl92 ZWMsIGJhY2tfdG8sIGl4IGFuZCBuYW1lLgorKwlVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj X2FwcGVuZC4gIFVzZSBmcmVlYXJndiBpbnN0ZWFkIG9mCisrCW1ha2VfY2xlYW51cF9mcmVlYXJn di4gIFJlbW92ZSB2YXJpYWJsZSBzZXBhcmF0b3IuICBTaW1wbGlmeSB0aGUgY29kZQorKwlubyBs b25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgorKwkob3BlbnApOiBSZW1vdmUgdmFy aWFibGUgcCwgcDEgYW5kIGxlbi4gIE5ldyB2YXJpYWJsZXMgZGlyX3ZlYywKKysJYmFja190bywg aXggYW5kIGRpci4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBTaW1wbGlmeSB0aGUg Y29kZQorKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgorKwkqIHN5bWZp bGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92 ZWMsCisrCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJl bW92ZSB2YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuCisrCSogdXRpbHMuYyAoZnJlZV9jaGFyX3B0 cl92ZWMsIGRvX2ZyZWVfY2hhcl9wdHJfdmVjKQorKwkobWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9w dHJfdmVjLCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kKQorKwkoZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjKTogTmV3IGZ1bmN0aW9ucy4KKysKKysyMDEyLTA0LTE3ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUgY2xlYW51cC4KKyAJ KiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgYWx3YXlzIHRydWUgY29uZGl0aW9uYWwgJ3Ag PT0gMCcgYW5kCisgCXVuaW5kZW50IGl0cyBjb2RlIGJsb2NrLgorIAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDoxMi4wNjcwODYwMTYg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5oCTIwMTItMDQtMTgg MDA6NDA6MjMuNDc0MDU2OTkzICswMjAwCitAQCAtMjUsNCArMjUsMTYgQEAKKyAKKyBERUZfVkVD X1AgKGNoYXJfcHRyKTsKKyAKKysvKiBGcm9tIHV0aWxzLmM6ICovCisrCisrZXh0ZXJuIHZvaWQg ZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOworKworK2V4 dGVybiBzdHJ1Y3QgY2xlYW51cCAqCisrICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMg KFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOworKworK2V4dGVybiB2b2lkIGRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVjcCwKKysJCQkJCSAg ICAgY29uc3QgY2hhciAqZGlybmFtZXMpOworKworK2V4dGVybiBWRUMgKGNoYXJfcHRyKSAqZGly bmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcyk7CisrCisgI2VuZGlm IC8qIEdEQl9WRUNTX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGlscy5jCTIw MTItMDQtMTggMDA6NDA6MTIuMDY4MDg2MDEzICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjQ5Ljg2Mjk4OTg1NSArMDIwMAorQEAgLTI5 LDYgKzI5LDcgQEAKKyAjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAorICNpbmNsdWRlIDxzeXMv cmVzb3VyY2UuaD4KKyAjZW5kaWYgLyogSEFWRV9TWVNfUkVTT1VSQ0VfSCAqLworKyNpbmNsdWRl ICJnZGJfdmVjcy5oIgorIAorICNpZmRlZiBUVUkKKyAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyog Rm9yIHR1aV9nZXRfY29tbWFuZF9kaW1lbnNpb24uICAgKi8KK0BAIC0zODM1LDYgKzM4MzYsOTUg QEAgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1YworICAgcmV0dXJuIG1p bm9yOworIH0KKyAKKysvKiBDYWxsIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJf VkVDIGFuZCBmaW5hbCBWRUNfZnJlZSBmb3IKKysgICBDSEFSX1BUUl9WRUMgaXRzZWxmLgorKwor KyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIGl0IGdvdCByZWdpc3Rl cmVkIHdpdGggdGhpcyBmdW5jdGlvbgorKyAgIGJ5IG1ha2VfY2xlYW51cCBhcyB0aGUgQ0hBUl9Q VFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVzLgorKyAgIENvbnRy YXJ5IHRvIFZFQ19mcmVlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhl IHBvaW50ZXIuICAqLworKworK3ZvaWQKKytmcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0 cikgKmNoYXJfcHRyX3ZlYykKKyt7CisrICBpbnQgaXg7CisrICBjaGFyICpuYW1lOworKworKyAg Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgY2hhcl9wdHJfdmVjLCBpeCwgbmFt ZSk7ICsraXgpCisrICAgIHhmcmVlIChuYW1lKTsKKysgIFZFQ19mcmVlIChjaGFyX3B0ciwgY2hh cl9wdHJfdmVjKTsKKyt9CisrCisrLyogSGVscGVyIGZvciBtYWtlX2NsZWFudXBfZnJlZV9jaGFy X3B0cl92ZWMuICAqLworKworK3N0YXRpYyB2b2lkCisrZG9fZnJlZV9jaGFyX3B0cl92ZWMgKHZv aWQgKmFyZykKKyt7CisrICBWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjID0gYXJnOworKwor KyAgZnJlZV9jaGFyX3B0cl92ZWMgKGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIE1ha2UgY2xl YW51cCBoYW5kbGVyIGNhbGxpbmcgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBvZiBDSEFSX1BUUl9W RUMgYW5kCisrICAgZmluYWwgVkVDX2ZyZWUgZm9yIENIQVJfUFRSX1ZFQyBpdHNlbGYuCisrCisr ICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgdGhpcyBjbGVhbnVwIHJl Z2lzdHJhdGlvbiBhcyB0aGUKKysgICBDSEFSX1BUUl9WRUMgYmFzZSBhZGRyZXNzIG1heSBjaGFu Z2Ugb24gaXRzIHVwZGF0ZXMuICBDb250cmFyeSB0byBWRUNfZnJlZQorKyAgIHRoaXMgZnVuY3Rp b24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLworKworK3N0cnVjdCBj bGVhbnVwICoKKyttYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIp ICpjaGFyX3B0cl92ZWMpCisreworKyAgcmV0dXJuIG1ha2VfY2xlYW51cCAoZG9fZnJlZV9jaGFy X3B0cl92ZWMsIGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEV4dGVuZGVkIHZlcnNpb24gb2Yg ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIC0gYWRkaXRpb25hbGx5IGlmICpWRUNQIGlzCisrICAg bm9uLU5VTEwgdGhlIG5ldyBsaXN0IGVsZW1lbnRzIGZyb20gRElSTkFNRVMgYXJlIGFwcGVuZGVk IHRvIHRoZSBleGlzdGluZworKyAgICpWRUNQIGxpc3Qgb2YgZW50cmllcy4gICpWRUNQIGFkZHJl c3Mgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoaXMgY2FsbC4gICovCisrCisrdm9pZAorK2Rpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVjcCwgY29uc3QgY2hh ciAqZGlybmFtZXMpCisreworKyAgZG8KKysgICAgeworKyAgICAgIHNpemVfdCB0aGlzX2xlbjsK KysgICAgICBjaGFyICpuZXh0X2RpciwgKnRoaXNfZGlyOworKworKyAgICAgIG5leHRfZGlyID0g c3RyY2hyIChkaXJuYW1lcywgRElSTkFNRV9TRVBBUkFUT1IpOworKyAgICAgIGlmIChuZXh0X2Rp ciA9PSBOVUxMKQorKwl0aGlzX2xlbiA9IHN0cmxlbiAoZGlybmFtZXMpOworKyAgICAgIGVsc2UK KysJeworKwkgIHRoaXNfbGVuID0gbmV4dF9kaXIgLSBkaXJuYW1lczsKKysJICBuZXh0X2Rpcisr OworKwl9CisrCisrICAgICAgdGhpc19kaXIgPSB4bWFsbG9jICh0aGlzX2xlbiArIDEpOworKyAg ICAgIG1lbWNweSAodGhpc19kaXIsIGRpcm5hbWVzLCB0aGlzX2xlbik7CisrICAgICAgdGhpc19k aXJbdGhpc19sZW5dID0gJ1wwJzsKKysgICAgICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgKnZl Y3AsIHRoaXNfZGlyKTsKKysKKysgICAgICBkaXJuYW1lcyA9IG5leHRfZGlyOworKyAgICB9Cisr ICB3aGlsZSAoZGlybmFtZXMgIT0gTlVMTCk7CisrfQorKworKy8qIFNwbGl0IERJUk5BTUVTIGJ5 IERJUk5BTUVfU0VQQVJBVE9SIGRlbGltaXRlciBhbmQgcmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhl CisrICAgZWxlbWVudHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBGb3IgZW1wdHkgc3RyaW5n ICgiIikgRElSTkFNRVMgcmV0dXJuCisrICAgbGlzdCBvZiBvbmUgZW1wdHkgc3RyaW5nICgiIikg ZWxlbWVudC4KKysgICAKKysgICBZb3UgbWF5IG1vZGlmeSB0aGUgcmV0dXJuZWQgc3RyaW5ncy4K KysgICBSZWFkIGZyZWVfY2hhcl9wdHJfdmVjIGZvciBpdHMgY2xlYW51cC4gICovCisrCisrVkVD IChjaGFyX3B0cikgKgorK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGly bmFtZXMpCisreworKyAgVkVDIChjaGFyX3B0cikgKnJldHZhbCA9IE5VTEw7CisrICAKKysgIGRp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKCZyZXR2YWwsIGRpcm5hbWVzKTsKKysKKysg IHJldHVybiByZXR2YWw7CisrfQorKworICNpZmRlZiBIQVZFX1dBSVRQSUQKKyAKKyAjaWZkZWYg U0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOW9mMjIucGF0Y2ggYi9nZGItYXV0 b2xvYWQtMDlvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjQ0Y2Zm Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wOW9mMjIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMTY4ICswLDAgQEAKLVtwYXRjaCM0IDMvOF0gYXV0by1sb2FkOiByZXNodWZmbGUgY29k ZQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODcu aHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMi5o dG1sCi0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6MjY6 MjkuMDQ5MTIwMjEyICswMjAwCi1AQCAtMCwwICsxLDQ3MiBAQAotKy8qIEdEQiByb3V0aW5lcyBm b3Igc3VwcG9ydGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgotKwotKyAgIENvcHlyaWdodCAoQykg MjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImF1dG8tbG9hZC5oIgotKyNpbmNs dWRlICJwcm9nc3BhY2UuaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotKyNpbmNsdWRl ICJnZGJfcmVnZXguaCIKLSsjaW5jbHVkZSAidWktb3V0LmgiCi0rI2luY2x1ZGUgImZpbGVuYW1l cy5oIgotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2lu Y2x1ZGUgIm9iamZpbGVzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIK LSsKLSsvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcu Ci0rICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hl biBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSsgICBmYWxzZSBvdGhlcndpc2UuCi0rCi0rICAgQm90 aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1 ZSB0byBlbmFibGUKLSsgICBhdXRvLWxvYWRpbmcuCi0rCi0rICAgVGhpcyBmbGFnIGV4aXN0cyB0 byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCi0rICAg dW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUg c2VhcmNoIGRpcmVjdG9yaWVzCi0rICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KLStp bnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogRm9yIHNjcmlwdHMgc3BlY2lm aWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLSsg ICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlw dCBtdWx0aXBsZSB0aW1lcywKLSsgICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVz IGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKLSsgICBsb2FkZWQgdGhp cyB3YXkuICAqLwotKwotK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KLSt7Ci0rICAvKiBG b3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAq LwotKyAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotKwotKyAgLyogTm9uLXplcm8gaWYg d2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJl aW5nCi0rICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25j ZS4gICovCi0rICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7Ci0rfTsKLSsK LSsvKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0 IGhhc2ggdGFibGUuICAqLwotKwotK3N0cnVjdCBsb2FkZWRfc2NyaXB0Ci0rewotKyAgLyogTmFt ZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwot KyAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3 YXMgb3RoZXJ3aXNlCi0rICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aDsKLSt9OwotKwotKy8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KLStz dGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19sb2FkX3BzcGFjZV9k YXRhOwotKwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0 cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGluZm8gIT0gTlVMTCkK LSsgICAgewotKyAgICAgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykKLSsJaHRhYl9kZWxldGUg KGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKLSsgICAgICB4ZnJlZSAoaW5mbyk7Ci0rICAgIH0KLSt9 Ci0rCi0rLyogR2V0IHRoZSBjdXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBub25lIGlzIGZvdW5k IHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKLSsgICBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhIHZh bGlkIG9iamVjdC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KgotK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3Bh Y2UpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGlu Zm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsK LSsgIGlmIChpbmZvID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbmZvID0gWFpBTExPQyAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7Ci0rICAgICAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEsIGluZm8pOwotKyAgICB9Ci0rCi0rICBy ZXR1cm4gaW5mbzsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaC4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK2hhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqZSA9IGRhdGE7Ci0rCi0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7Ci0r fQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0rZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEg PSBhOwotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsKLSsKLSsgIHJldHVy biBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKLSt9Ci0rCi0rLyogSW5pdGlhbGl6 ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi0rICAgRWFjaCBlbnRyeSBpcyBo YXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2luaXRf bG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8pCi0rewotKyAgLyogQ2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBzaXplIG9mIHRoZSBo YXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmlseS4KLSsgICAgIFNwYWNlIGZvciBlYWNoIGVu dHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJlZSB0aGVtCi0rICAg ICBlYXNpbHkuICAqLwotKwotKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzID0gaHRhYl9j cmVhdGUgKDMxLAotKwkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksCi0rCQkJCQkg ICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCi0rCQkJCQkgICAgIHhmcmVlKTsKLSsKLSsgIHBz cGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwotK30K LSsKLSsvKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgdG8gYWxzbyBhbGxv Y2F0ZSB0aGUgaGFzaCB0YWJsZQotKyAgIGZvciBsb2FkaW5nIHNjcmlwdHMuICAqLwotKwotK3N0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0rewotKyAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIChwc3BhY2UpOwotKyAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5V TEwpCi0rICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Ci0rCi0rICByZXR1cm4g aW5mbzsKLSt9Ci0rCi0rLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNF X0lORk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQu Ci0rICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhl IGhhc2ggdGFibGUuICAqLwotKwotK2ludAotK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpuYW1lLAotKwkJICBj b25zdCBjaGFyICpmdWxsX3BhdGgpCi0rewotKyAgc3RydWN0IGh0YWIgKmh0YWIgPSBwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHM7Ci0rICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3QsIGVu dHJ5OwotKyAgaW50IGluX2hhc2hfdGFibGU7Ci0rCi0rICBlbnRyeS5uYW1lID0gbmFtZTsKLSsg IGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIHNsb3QgPSAoc3RydWN0IGxvYWRlZF9z Y3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7Ci0rICBpbl9o YXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLSsKLSsgIC8qIElmIHRoaXMgc2NyaXB0IGlzIG5v dCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLSsKLSsgIGlmICghIGluX2hhc2hfdGFi bGUpCi0rICAgIHsKLSsgICAgICBjaGFyICpwOwotKwotKyAgICAgIC8qIEFsbG9jYXRlIGFsbCBz cGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICovCi0rICAgICAgKnNs b3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLSsJCSAgICAgICArIHN0cmxlbiAobmFtZSkg KyAxCi0rCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVuIChmdWxsX3BhdGgp ICsgMSkgOiAwKSk7Ci0rICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNpemVvZiAoKipzbG90 KTsKLSsgICAgICBzdHJjcHkgKHAsIG5hbWUpOwotKyAgICAgICgqc2xvdCktPm5hbWUgPSBwOwot KyAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLSsJewotKwkgIHAgKz0gc3RybGVuIChwKSAr IDE7Ci0rCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotKwkgICgqc2xvdCktPmZ1bGxfcGF0aCA9 IHA7Ci0rCX0KLSsgICAgICBlbHNlCi0rCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0rICAg IH0KLSsKLSsgIHJldHVybiBpbl9oYXNoX3RhYmxlOwotK30KLSsKLSsvKiBDbGVhciB0aGUgdGFi bGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStjbGVh cl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCi0rewotKyAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBz cGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1 dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRl ZF9zY3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9h ZGVkX3NjcmlwdHMpOwotKyAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKLSsgICAg ICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwotKyAgICB9 Ci0rfQotKwotKy8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0 aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsKLSt2b2lkCi0rYXV0b19sb2FkX29iamZpbGVf c2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotK3sK LSsgIGNoYXIgKnJlYWxuYW1lOwotKyAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci0rICBp bnQgbGVuOwotKyAgRklMRSAqaW5wdXQ7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0r Ci0rICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0rICBsZW4gPSBz dHJsZW4gKHJlYWxuYW1lKTsKLSsgIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChz dWZmaXgpICsgMSk7Ci0rICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKLSsgIHN0 cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7Ci0rCi0rICBjbGVhbnVwcyA9IG1ha2VfY2xl YW51cCAoeGZyZWUsIGZpbGVuYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1l KTsKLSsKLSsgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotKyAgZGVidWdmaWxlID0g ZmlsZW5hbWU7Ci0rCi0rICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQotKyAg ICB7Ci0rICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVi dWcgaW5mbyBkaXJlY3RvcnkuICAqLwotKyAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxl biAoZmlsZW5hbWUpCi0rCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEp OwotKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0rICAg ICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4g ICovCi0rICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSsKLSsgICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotKyAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVn ZmlsZSwgInIiKTsKLSsgICAgfQotKwotKyAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLSsg ICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkg b2YgZ2RiJ3MgZGF0YQotKwkgZGlyZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1Z2ZpbGUgPSB4bWFs bG9jIChzdHJsZW4gKGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpCi0rCQkJICAgKyBz dHJsZW4gKCIvYXV0by1sb2FkIikgKyAxKTsKLSsgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2Ri X2RhdGFkaXIpOwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOwotKyAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmIChpbnB1dCkKLSsgICAgewotKyAgICAgIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKwotKyAgICAgIG1ha2Vf Y2xlYW51cF9mY2xvc2UgKGlucHV0KTsKLSsKLSsgICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8g dGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgotKwkgY2FuIHBy aW50IGl0LiAgKi8KLSsgICAgICBwc3BhY2VfaW5mbyA9Ci0rCWdldF9hdXRvX2xvYWRfcHNwYWNl X2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICAgICAgbWF5YmVf YWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKLSsKLSsgICAg ICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdo ZXRoZXIgdGhlCi0rCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlz IGxvYWQgaXQuCi0rCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0 IHR3aWNlLAotKwkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3Rl bnQgdW5kZXIgbXVsdGlwbGUKLSsJIGxvYWRzIGFueXdheS4gICovCi0rICAgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotKyAg ICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotK30KLSsKLSsvKiBUaGlzIGlzIGEg bmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMuCi0rCi0r ICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVkLgotKyAg IDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCi0rICAgMikgZnJvbSAuZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2F1dG9fbG9hZF9uZXdf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYgKCFvYmpmaWxlKQot KyAgICB7Ci0rICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGluZyBhIG5ldyAibWFp biIgc3ltYm9sLWZpbGUuICAqLwotKyAgICAgIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAoKTsKLSsg ICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl IChvYmpmaWxlKTsKLSt9Ci0rCi0rLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJlIHByaW50ZWQgaW4g YSB2ZWMuICAqLwotKwotK3R5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3Jp cHRfcHRyOwotK0RFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOwotKwotKy8qIFRyYXZlcnNh bCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KLSsgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBp dCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwotKwotK3N0YXRpYyBpbnQKLStjb2xsZWN0X21hdGNo aW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQotK3sKLSsgIHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLSsgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoq c2NyaXB0c19wdHIgPSBpbmZvOwotKwotKyAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCi0r ICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIsIHNjcmlw dCk7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogUHJpbnQgU0NSSVBULiAgKi8KLSsKLStz dGF0aWMgdm9pZAotK3ByaW50X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCkK LSt7Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0rICBzdHJ1Y3Qg Y2xlYW51cCAqY2hhaW47Ci0rCi0rICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVf YmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Ci0rCi0rICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91 dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlzc2luZyIpOwotKyAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOwotKyAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsgIC8qIElmIHRoZSBuYW1lIGlzbid0IHRo ZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCi0rICBpZiAoc2NyaXB0LT5mdWxsX3BhdGgg IT0gTlVMTAotKyAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5uYW1lLCBzY3JpcHQtPmZ1bGxfcGF0 aCkgIT0gMCkKLSsgICAgewotKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlx0ZnVsbCBuYW1l OiAiKTsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZ1bGxfcGF0aCIsIHNj cmlwdC0+ZnVsbF9wYXRoKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAg ICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2hhaW4pOwotK30KLSsKLSsvKiBIZWxwZXIgZm9yIGlu Zm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLiAgKi8KLSsK LStzdGF0aWMgaW50Ci0rc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjb25z dCB2b2lkICpicCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYSA9ICooY29u c3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOwotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBicDsKLSsKLSsgIHJl dHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOwotK30KLSsKLSsvKiAiaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1 dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rewotKyAgc3Ry dWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rICBzdHJ1Y3QgY2xlYW51cCAqc2NyaXB0X2NoYWlu OwotKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlwdHM7Ci0rICBpbnQgbnJfc2NyaXB0 czsKLSsKLSsgIGRvbnRfcmVwZWF0ICgpOwotKwotKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19s b2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKwotKyAgaWYgKHBhdHRl cm4gJiYgKnBhdHRlcm4pCi0rICAgIHsKLSsgICAgICBjaGFyICpyZV9lcnIgPSByZV9jb21wIChw YXR0ZXJuKTsKLSsKLSsgICAgICBpZiAocmVfZXJyKQotKwllcnJvciAoXygiSW52YWxpZCByZWdl eHA6ICVzIiksIHJlX2Vycik7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHJlX2Nv bXAgKCIiKTsKLSsgICAgfQotKwotKyAgLyogV2UgbmVlZCB0byBrbm93IHRoZSBudW1iZXIgb2Yg cm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgotKyAgICAgUGx1cyB3ZSB3YW50IHRvIHNv cnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KLSsgICAgIFNvIGZpcnN0IHRyYXZlcnNlIHRoZSBoYXNo IHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLwotKwotKyAgc2NyaXB0 cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEwKTsKLSsgIHNjcmlwdF9jaGFpbiA9 IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRyKSwgJnNjcmlwdHMp OwotKwotKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9z Y3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbW1lZGlhdGVfcXVpdCsrOwotKyAgICAg IC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxv YyBzcGFjZS4gICovCi0rICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzLAotKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNj cmlwdHMpOwotKyAgICAgIGltbWVkaWF0ZV9xdWl0LS07Ci0rICAgIH0KLSsKLSsgIG5yX3Njcmlw dHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7Ci0rICBtYWtlX2Ns ZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCi0rCQkJ CSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotKwotKyAgdWlfb3V0X3RhYmxlX2hl YWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAiTG9hZGVkIik7Ci0rICB1aV9vdXRf dGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJzY3JpcHQiLCAiU2NyaXB0Iik7Ci0r ICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwotKwotKyAgaWYgKG5yX3NjcmlwdHMgPiAwKQot KyAgICB7Ci0rICAgICAgaW50IGk7Ci0rICAgICAgbG9hZGVkX3NjcmlwdF9wdHIgc2NyaXB0Owot KwotKyAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp LAotKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKLSsJICAg ICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9zY3JpcHRzX2J5X25hbWUpOwotKyAg ICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cywg aSwgc2NyaXB0KTsgKytpKQotKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7Ci0rICAgIH0KLSsKLSsg IGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOwotKwotKyAgaWYgKG5yX3NjcmlwdHMgPT0gMCkK LSsgICAgewotKyAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotKwl1aV9vdXRfbWVzc2Fn ZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyAlcy5cbiIsCi0rCQkJ cGF0dGVybik7Ci0rICAgICAgZWxzZQotKwl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBh dXRvLWxvYWQgc2NyaXB0cy5cbiIpOwotKyAgICB9Ci0rfQotKwotKy8qIFJldHVybiBub24temVy byBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BBQ0VfSU5GTyB3YXMg dW5zZXQKLSsgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBTQ1JJ UFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAotKyAgIG9mIFBTUEFDRV9JTkZPLiAgKi8KLSsK LStpbnQKLStzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotK3sKLSsgIGludCByZXR2YWwgPSAhcHNwYWNlX2lu Zm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOwotKwotKyAgcHNwYWNlX2luZm8t PnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gMTsKLSsKLSsgIHJldHVybiByZXR2 YWw7Ci0rfQotKwotK3ZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKLSsKLSt2b2lk Ci0rX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotK3sKLSsgIGF1dG9fbG9hZF9wc3BhY2Vf ZGF0YQotKyAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1 dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLSsKLSsgIG9ic2VydmVyX2F0dGFjaF9uZXdf b2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKLSsKLSsgIGFkZF9pbmZvICgiYXV0by1s b2FkLXNjcmlwdHMiLAotKwkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKLSsJICAgIF8oIlBy aW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0rVXNhZ2U6 IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0rfQotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKLUBA IC0wLDAgKzEsMzYgQEAKLSsvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2Fk ZWQgc2NyaXB0cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsK LSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVmIEFVVE9fTE9B RF9ICi0rI2RlZmluZSBBVVRPX0xPQURfSCAxCi0rCi0rc3RydWN0IHByb2dyYW1fc3BhY2U7Ci0r Ci0rZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotKwotK2V4dGVybiBzdHJ1Y3Qg YXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLSsgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9y X2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotK2V4dGVybiBpbnQgbWF5 YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8s Ci0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpOwotK2V4 dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0rCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7Ci0rZXh0ZXJuIGludAotKyAgc2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbyk7Ci0rCi0rI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4KLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIx MiArMDIwMAotQEAgLTAsMCArMSwzNCBAQAotK2VjaG8gU2V0dGluZyB1cCB0aGUgZW52aXJvbm1l bnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSsKLStzZXQgY29tcGxhaW50cyAxCi0rCi0rYiBpbnRl cm5hbF9lcnJvcgotKwotK2IgaW5mb19jb21tYW5kCi0rY29tbWFuZHMKLSsJc2lsZW50Ci0rCXJl dHVybgotK2VuZAotKwotK2RpciBAc3JjZGlyQC8uLi9saWJpYmVydHkKLStkaXIgQHNyY2RpckAv Li4vYmZkCi0rZGlyIEBzcmNkaXJACi0rZGlyIC4KLStzZXQgcHJvbXB0ICh0b3AtZ2RiKSAKLSsK LStkZWZpbmUgcGRpZQotKyAgaWYgJGFyZ2MgPT0gMQotKyAgICBjYWxsIGR1bXBfZGllICgkYXJn MCwgMSkKLSsgIGVsc2UKLSsgICAgaWYgJGFyZ2MgPT0gMgotKyAgICAgIGNhbGwgZHVtcF9kaWUg KCRhcmcwLCAkYXJnMSkKLSsgICAgZWxzZQotKyAgICAgIHByaW50ZiAiU3ludGF4OiBwZGllIGRp ZSBbZGVwdGhdXG4iCi0rICAgIGVuZAotKyAgZW5kCi0rZW5kCi0rCi0rZG9jdW1lbnQgcGRpZQot K1ByZXR0eSBwcmludCBhIERXQVJGIERJRS4KLStTeW50YXg6IHBkaWUgZGllIFtkZXB0aF0KLStl bmQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9NYWtlZmlsZS5pbgotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0x OCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9N YWtlZmlsZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjUzLjQ1NTA1ODAzNyArMDIwMAotQEAgLTY4MCw3 ICs2ODAsNyBAQCBUQVJHRVRfRkxBR1NfVE9fUEFTUyA9IFwKLSAjIFNGSUxFUyBpcyB1c2VkIGlu IGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gYXJjaGl2ZS4KLSAKLSBTRklMRVMgPSBhZGEtZXhw LnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMgYWRhLXRhc2tzLmMg XAotLQlhZGRybWFwLmMgXAotKwlhZGRybWFwLmMgYXV0by1sb2FkLmMgXAotIAlhdXh2LmMgYXgt Z2VuZXJhbC5jIGF4LWdkYi5jIFwKLSAJYmNhY2hlLmMgXAotIAliZmQtdGFyZ2V0LmMgXAotQEAg LTgxOSw3ICs4MTksNyBAQCBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xpYi1z Ci0gZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVs aWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0gZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFt ZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAotIGNvbW1vbi9jb21tb24tdXRpbHMuaCBjb21tb24v eG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAotLWNvbW1vbi9saW51 eC1vc2RhdGEuaCBnZGItZGxmY24uaAotK2NvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24u aCBhdXRvLWxvYWQuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2Rp ciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgotIAotQEAgLTg1MSw3ICs4NTEsNyBA QCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCi0gCXZlcnNpb24ubyBc Ci0gCWFubm90YXRlLm8gXAotIAlhZGRybWFwLm8gXAotLQlhdXh2Lm8gXAotKwlhdXRvLWxvYWQu byBhdXh2Lm8gXAotIAliZmQtdGFyZ2V0Lm8gXAotIAlibG9ja2ZyYW1lLm8gYnJlYWtwb2ludC5v IGZpbmR2YXIubyByZWdjYWNoZS5vIFwKLSAJY2hhcnNldC5vIGNvbnRpbnVhdGlvbnMubyBjb3Jl bG93Lm8gZGlzYXNtLm8gZHVtbXktZnJhbWUubyBkZnAubyBcCi1AQCAtMTI1NSw3ICsxMjU1LDcg QEAgZGlzdGNsZWFuOiBjbGVhbgotIAlybSAtZiBnZGJzZXJ2ZXIvY29uZmlnLnN0YXR1cyBnZGJz ZXJ2ZXIvY29uZmlnLmxvZwotIAlybSAtZiBnZGJzZXJ2ZXIvdG0uaCBnZGJzZXJ2ZXIveG0uaCBn ZGJzZXJ2ZXIvbm0uaAotIAlybSAtZiBnZGJzZXJ2ZXIvTWFrZWZpbGUgZ2Ric2VydmVyL2NvbmZp Zy5jYWNoZQotLQlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmggc3RhbXAtaCAuZ2Ri aW5pdCBqaXQtcmVhZGVyLmgKLSsJcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0 YW1wLWggZ2RiLWdkYi5nZGIgaml0LXJlYWRlci5oCi0gCXJtIC1mIHkub3V0cHV0IHlhY2MuYWN0 cyB5YWNjLnRtcCB5LnRhYi5oCi0gCXJtIC1mIGNvbmZpZy5sb2cgY29uZmlnLmNhY2hlCi0gCXJt IC1mIE1ha2VmaWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAx Mi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIgKzAyMDAKLUBAIC0x NjgzOSw3ICsxNjgzOSw3IEBAIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyAkYWNf Y28KLSAkYXNfZWNobyAiI2RlZmluZSBHREJfREVGQVVMVF9IT1NUX0NIQVJTRVQgXCJVVEYtOFwi IiA+PmNvbmZkZWZzLmgKLSAKLSAKLS1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMg TWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxl IGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgotK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19m aWxlcyBNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRh dGEtZGlyZWN0b3J5L01ha2VmaWxlIgotIAotIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZp Z19jb21tYW5kcyBkZWZhdWx0IgotIAotQEAgLTE3NjA1LDcgKzE3NjA1LDcgQEAgZG8KLSAgICAg ImppdC1yZWFkZXIuaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBqaXQtcmVhZGVyLmg6 aml0LXJlYWRlci5pbiIgOzsKLSAgICAgIiRhY19jb25maWdfbGlua3NfMSIpIENPTkZJR19MSU5L Uz0iJENPTkZJR19MSU5LUyAkYWNfY29uZmlnX2xpbmtzXzEiIDs7Ci0gICAgICJNYWtlZmlsZSIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsKLS0gICAgIi5nZGJpbml0 IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC5nZGJpbml0OmdkYmluaXQuaW4iIDs7Ci0r ICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGItZ2RiLmdk YiIgOzsKLSAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBk b2MvTWFrZWZpbGUiIDs7Ci0gICAgICJnbnVsaWIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZ251bGliL01ha2VmaWxlIiA7OwotICAgICAiZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZGF0YS1kaXJlY3RvcnkvTWFrZWZp bGUiIDs7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAx Mi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIgKzAyMDAKLUBA IC0yNDIyLDcgKzI0MjIsNyBAQCBkbmwgIEF0IHRoZSBtb21lbnQsIHdlIGp1c3QgYXNzdW1lIGl0 J3MKLSBBQ19ERUZJTkUoR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VULCAiVVRGLTgiLAotICAgICAg ICAgICBbRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0aGUgZGVmYXVsdCBob3N0IGNoYXJh Y3RlciBzZXQuXSkKLSAKLS1BQ19PVVRQVVQoTWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBk b2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAotK0FD X09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxl IGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAotIFsKLSBjYXNlIHgkQ09ORklHX0hFQURFUlMgaW4K LSB4Y29uZmlnLmg6Y29uZmlnLmluKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5j CTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCi1AQCAt NDIsNiArNDIsNyBAQAotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLSAjaW5jbHVkZSAicHl0 aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJhdXRvLWxv YWQuaCIKLSAKLSAvKiBUaGUgc2VsZWN0ZWQgaW50ZXJwcmV0ZXIuICBUaGlzIHdpbGwgYmUgdXNl ZCBhcyBhIHNldCBjb21tYW5kCi0gICAgdmFyaWFibGUsIHNvIGl0IHNob3VsZCBhbHdheXMgYmUg bWFsbG9jJ2VkIC0gc2luY2UKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwky MDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTE4LDMwICsxOCwxNCBAQAot ICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotLSNpbmNsdWRlICJm aWxlbmFtZXMuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotLSNpbmNsdWRlICJnZGJfcmVn ZXguaCIKLSAjaW5jbHVkZSAidG9wLmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLS0jaW5j bHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRlICJnZGJjbWQuaCIKLS0jaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKLS0jaW5jbHVkZSAicHJvZ3NwYWNlLmgiCi0gI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0g I2luY2x1ZGUgInB5dGhvbi5oIgotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLS0KLS0vKiBJ bnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCi0tICAgVGhp cyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpm aWxlIGlzIG9wZW5lZCwKLS0gICBmYWxzZSBvdGhlcndpc2UuCi0tCi0tICAgQm90aCBhdXRvX2xv YWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFi bGUKLS0gICBhdXRvLWxvYWRpbmcuCi0tCi0tICAgVGhpcyBmbGFnIGV4aXN0cyB0byBmYWNpbGl0 YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCi0tICAgdW50aWwgYWZ0 ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUgc2VhcmNoIGRp cmVjdG9yaWVzCi0tICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KLS1pbnQgZ2RicHlf Z2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rI2luY2x1ZGUgImF1dG8tbG9hZC5oIgotIAotICNpZmRl ZiBIQVZFX1BZVEhPTgotIAotQEAgLTYwLDMyICs0NCw2IEBAIGludCBnZGJweV9nbG9iYWxfYXV0 b19sb2FkID0gMTsKLSAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93IHVwd2FyZCBjb21w YXRpYmxlIGV4dGVuc2lvbnMuICAqLwotICNkZWZpbmUgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUg Ii5kZWJ1Z19nZGJfc2NyaXB0cyIKLSAKLS0vKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQgaW4gLmRl YnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAotLSAgIHRoZSBzYW1l IHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11bHRpcGxl IHRpbWVzLAotLSAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmlsZXMgYW5kIHNjcmlw dHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cwotLSAgIGxvYWRlZCB0aGlzIHdheS4gICov Ci0tCi0tc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbwotLXsKLS0gIC8qIEZvciBlYWNoIHBy b2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4gICovCi0tICBzdHJ1 Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7Ci0tCi0tICAvKiBOb24temVybyBpZiB3ZSd2ZSBpc3N1 ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3QgYmVpbmcKLS0gICAg IGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBvbmNlLiAgKi8KLS0g IGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLS19OwotLQotLS8qIE9iamVj dHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3JpcHQgaGFzaCB0YWJs ZS4gICovCi0tCi0tc3RydWN0IGxvYWRlZF9zY3JpcHQKLS17Ci0tICAvKiBOYW1lIGFzIHByb3Zp ZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLS0gIGNvbnN0IGNoYXIgKm5hbWU7Ci0tICAvKiBGdWxs IHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhlcndp c2UKLS0gICAgIGluYWNjZXNzaWJsZSkuICAqLwotLSAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwot LX07Ci0tCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1s b2FkaW5nOgotICAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKLSAgICBUaGlzIGlzIHRy dWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpm aWxlCi1AQCAtOTcsMTM2ICs1NSw2IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0Ci0gICAgVGhlIGZh Y3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAg Ki8KLSBzdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKLSAKLS0vKiBQZXItcHJvZ3Jh bS1zcGFjZSBkYXRhIGtleS4gICovCi0tc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNl X2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKLS0KLS1zdGF0aWMgdm9pZAotLWF1dG9fbG9h ZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lk ICphcmcpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0g IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKLS0gIGlmIChpbmZvICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAoaW5mby0+bG9hZGVk X3NjcmlwdHMpCi0tCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0tICAgICAg eGZyZWUgKGluZm8pOwotLSAgICB9Ci0tfQotLQotLS8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9h ZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCi0tICAgZnVu Y3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLwotLQotLXN0YXRpYyBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLS1nZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotLXsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2Us IGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyA9PSBOVUxMKQotLSAgICB7Ci0t ICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOwotLSAg ICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh LCBpbmZvKTsKLS0gICAgfQotLQotLSAgcmV0dXJuIGluZm87Ci0tfQotLQotLS8qIEhhc2ggZnVu Y3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQotLXN0YXRpYyBoYXNodmFs X3QKLS1oYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCi0tewotLSAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOwotLQotLSAgcmV0dXJuIGh0YWJf aGFzaF9zdHJpbmcgKGUtPm5hbWUpOwotLX0KLS0KLS0vKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3Ig dGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0tCi0tc3RhdGljIGludAotLWVxX2xvYWRlZF9z Y3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0tewotLSAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplYiA9IGI7Ci0tCi0tICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09 IDA7Ci0tfQotLQotLS8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3Jp cHRzLgotLSAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICov Ci0tCi0tc3RhdGljIHZvaWQKLS1pbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotLXsKLS0gIC8qIENob29zZSAzMSBhcyB0 aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHku Ci0tICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mg c28gd2UgY2FuIGZyZWUgdGhlbQotLSAgICAgZWFzaWx5LiAgKi8KLS0KLS0gIHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKLS0JCQkJCSAgICAgaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAotLQkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAotLQkJ CQkJICAgICB4ZnJlZSk7Ci0tCi0tICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50ZWQgPSBGQUxTRTsKLS19Ci0tCi0tLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKLS0gICBmb3IgbG9h ZGluZyBzY3JpcHRzLiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqCi0tZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpp bmZvOwotLQotLSAgaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHBzcGFjZSk7Ci0t ICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0gTlVMTCkKLS0gICAgaW5pdF9sb2FkZWRfc2Ny aXB0c19pbmZvIChpbmZvKTsKLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0KLS0vKiBBZGQgc2Ny aXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBIVEFCLgotLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRo ZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotLSAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2Ny aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLS0KLS1zdGF0aWMgaW50Ci0t bWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGh0YWIgKmh0YWIsIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCkKLS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3Qs IGVudHJ5OwotLSAgaW50IGluX2hhc2hfdGFibGU7Ci0tCi0tICBlbnRyeS5uYW1lID0gbmFtZTsK LS0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLS0gIHNsb3QgPSAoc3RydWN0IGxvYWRl ZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7Ci0tICBp bl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLS0KLS0gIC8qIElmIHRoaXMgc2NyaXB0IGlz IG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLS0KLS0gIGlmICghIGluX2hhc2hf dGFibGUpCi0tICAgIHsKLS0gICAgICBjaGFyICpwOwotLQotLSAgICAgIC8qIEFsbG9jYXRlIGFs bCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICovCi0tICAgICAg KnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLS0JCSAgICAgICArIHN0cmxlbiAobmFt ZSkgKyAxCi0tCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVuIChmdWxsX3Bh dGgpICsgMSkgOiAwKSk7Ci0tICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNpemVvZiAoKipz bG90KTsKLS0gICAgICBzdHJjcHkgKHAsIG5hbWUpOwotLSAgICAgICgqc2xvdCktPm5hbWUgPSBw OwotLSAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLS0JewotLQkgIHAgKz0gc3RybGVuIChw KSArIDE7Ci0tCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotLQkgICgqc2xvdCktPmZ1bGxfcGF0 aCA9IHA7Ci0tCX0KLS0gICAgICBlbHNlCi0tCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0t ICAgIH0KLS0KLS0gIHJldHVybiBpbl9oYXNoX3RhYmxlOwotLX0KLS0KLSAvKiBMb2FkIHNjcmlw dHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIg Y29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKLSAgICBmaWxlIG5hbWVzLgotQEAg LTMwMSwyMCArMTI5LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxl ICoKLSAKLSAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2Uu ICAqLwotIAotLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHMsIGZpbGUsCi0rICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAotIAkJCQkJb3BlbmVkID8gZnVsbF9wYXRo IDogTlVMTCk7Ci0gCi0gICAgICAgaWYgKCEgb3BlbmVkKQotIAl7Ci0gCSAgLyogV2UgZG9uJ3Qg dGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwotLQkg IGlmICghIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCkKLS0J ICAgIHsKLS0JICAgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZl cmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSsJICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50IChwc3BhY2VfaW5mbykpCi0rCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9h ZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAotIG9mIGZpbGUgJXNcblwKLSBV c2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKLS0J CSAgICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0tCSAgICAg IHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IFRSVUU7Ci0t CSAgICB9Ci0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsK LSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTM1NiwxMTYgKzE4MSw2IEBAIGF1dG9fbG9hZF9z ZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 Ci0gfQotIAotLS8qIENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlvbiBzY3JpcHRzLiAg Ki8KLS0KLS1zdGF0aWMgdm9pZAotLWNsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKLS17Ci0t ICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOwot LSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0gIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKLS0gIGlmIChp bmZvICE9IE5VTEwgJiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLS0gICAgewotLSAg ICAgIGh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0tICAgICAgaW5mby0+bG9h ZGVkX3NjcmlwdHMgPSBOVUxMOwotLSAgICAgIGluZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludGVkID0gRkFMU0U7Ci0tICAgIH0KLS19Ci0tCi0tLyogTG9vayBmb3IgdGhlIGF1dG8t bG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLwotLQot LXN0YXRpYyB2b2lkCi0tYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotLXsKLS0gIGNoYXIgKnJlYWxuYW1lOwotLSAg Y2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci0tICBpbnQgbGVuOwotLSAgRklMRSAqaW5wdXQ7 Ci0tICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0tCi0tICByZWFsbmFtZSA9IGdkYl9yZWFs cGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0tICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKLS0gIGZp bGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7Ci0tICBtZW1jcHkg KGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKLS0gIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1 ZmZpeCk7Ci0tCi0tICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsK LS0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLS0KLS0gIGlucHV0ID0gZm9wZW4g KGZpbGVuYW1lLCAiciIpOwotLSAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0tCi0tICBpZiAoIWlu cHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQotLSAgICB7Ci0tICAgICAgLyogQWxzbyB0cnkg dGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwot LSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBz dHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOwotLSAgICAgIHN0cmNweSAoZGVidWdm aWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1 dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAgc3RyY2F0IChkZWJ1 Z2ZpbGUsIGZpbGVuYW1lKTsKLS0KLS0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2Zp bGUpOwotLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLS0gICAgfQotLQot LSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLS0gICAgewotLSAgICAgIC8qIEFsc28gdHJ5 IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQotLQkgZGlyZWN0 b3J5LiAgKi8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGdkYl9kYXRhZGly KSArIHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBzdHJsZW4gKCIvYXV0by1sb2FkIikgKyAx KTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwotLSAgICAgIHN0cmNh dCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOwotLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29s dXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAgIHN0cmNhdCAoZGVi dWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdm aWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0tICAgIH0KLS0K LS0gIGlmIChpbnB1dCkKLS0gICAgewotLSAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvOwotLQotLSAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsK LS0KLS0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzIgotLQkgY2FuIHByaW50IGl0LiAgKi8KLS0gICAgICBwc3Bh Y2VfaW5mbyA9Ci0tCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0tCi0tICAgICAgLyogVG8g cHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRo ZQotLQkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0 LgotLQkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwK LS0JIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVy IG11bHRpcGxlCi0tCSBsb2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLS0gICAgfQotLQot LSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLS19Ci0tCi0tLyogVGhpcyBpcyBhIG5ld19vYmpm aWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgotLQotLSAgIFR3byBm bGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KLS0gICAxKSBiYXNl ZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotLSAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb24gICovCi0tCi0tc3RhdGljIHZvaWQKLS1hdXRvX2xvYWRfbmV3X29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotLXsKLS0gIGlmICghb2JqZmlsZSkKLS0gICAgewot LSAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJv bC1maWxlLiAgKi8KLS0gICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7Ci0tICAgICAgcmV0 dXJuOwotLSAgICB9Ci0tCi0tICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7Ci0tfQotLQotIC8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUu ICAqLwotIAotIHZvaWQKLUBAIC00NzgsMTQ2ICsxOTMsOSBAQCBsb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSAoc3RydWN0IG9iCi0gICAgIH0KLSB9Ci0gDAotLS8qIENvbGxlY3Qgc2NyaXB0 cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KLS0KLS10eXBlZGVmIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLS1ERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRy KTsKLS0KLS0vKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCi0tICAgQ29s bGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KLS0KLS1zdGF0aWMg aW50Ci0tY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykK LS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7Ci0tICBWRUMgKGxv YWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKLS0KLS0gIGlmIChyZV9leGVj IChzY3JpcHQtPm5hbWUpKQotLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwg KnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotLQotLSAgcmV0dXJuIDE7Ci0tfQotLQotLS8qIFByaW50 IFNDUklQVC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1wcmludF9zY3JpcHQgKHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpzY3JpcHQpCi0tewotLSAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OwotLSAgc3RydWN0IGNsZWFudXAgKmNoYWluOwotLQotLSAgY2hhaW4gPSBtYWtlX2Ns ZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotLQotLSAgdWlfb3V0 X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMi IDogIk1pc3NpbmciKTsKLS0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwg c2NyaXB0LT5uYW1lKTsKLS0gIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0tCi0tICAvKiBJ ZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLwotLSAgaWYg KHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKLS0gICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFt ZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCi0tICAgIHsKLS0gICAgICB1aV9vdXRfdGV4dCAo dWlvdXQsICJcdGZ1bGwgbmFtZTogIik7Ci0tICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7Ci0tICAgICAgdWlfb3V0X3RleHQg KHVpb3V0LCAiXG4iKTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKGNoYWluKTsKLS19Ci0t Ci0tLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlw dHMgYnkgbmFtZS4gICovCi0tCi0tc3RhdGljIGludAotLXNvcnRfc2NyaXB0c19ieV9uYW1lIChj b25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0tewotLSAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKLS0gIGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKikgYnA7Ci0tCi0tICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsK LS19Ci0tCi0tLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotLQotLXN0 YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZy b21fdHR5KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLS0g IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotLSAgc3RydWN0IGNs ZWFudXAgKnNjcmlwdF9jaGFpbjsKLS0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRz OwotLSAgaW50IG5yX3NjcmlwdHM7Ci0tCi0tICBkb250X3JlcGVhdCAoKTsKLS0KLS0gIHBzcGFj ZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNl KTsKLS0KLS0gIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotLSAgICB7Ci0tICAgICAgY2hhciAq cmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Ci0tCi0tICAgICAgaWYgKHJlX2VycikKLS0JZXJy b3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOwotLSAgICB9Ci0tICBlbHNlCi0t ICAgIHsKLS0gICAgICByZV9jb21wICgiIik7Ci0tICAgIH0KLS0KLS0gIC8qIFdlIG5lZWQgdG8g a25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KLS0gICAg IFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0tICAgICBTbyBmaXJz dCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRz LiAgKi8KLS0KLS0gIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7 Ci0tICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2Ny aXB0X3B0ciksICZzY3JpcHRzKTsKLS0KLS0gIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBz cGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaW1tZWRp YXRlX3F1aXQrKzsKLS0gICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19z YWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotLSAgICAgIGh0YWJfdHJhdmVyc2Vfbm9y ZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0JCQkgICAgICBjb2xsZWN0X21h dGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLS0gICAgICBpbW1lZGlhdGVfcXVpdC0tOwotLSAg ICB9Ci0tCi0tICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNj cmlwdHMpOwotLSAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAy LCBucl9zY3JpcHRzLAotLQkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKLS0K LS0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxv YWRlZCIpOwotLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2Ny aXB0IiwgIlNjcmlwdCIpOwotLSAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKLS0KLS0gIGlm IChucl9zY3JpcHRzID4gMCkKLS0gICAgewotLSAgICAgIGludCBpOwotLSAgICAgIGxvYWRlZF9z Y3JpcHRfcHRyIHNjcmlwdDsKLS0KLS0gICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzKSwKLS0JICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cyksCi0tCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2Ny aXB0c19ieV9uYW1lKTsKLS0gICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3Nj cmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKLS0JcHJpbnRfc2NyaXB0IChzY3Jp cHQpOwotLSAgICB9Ci0tCi0tICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKLS0KLS0gIGlm IChucl9zY3JpcHRzID09IDApCi0tICAgIHsKLS0gICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVy bikKLS0JdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0 Y2hpbmcgJXMuXG4iLAotLQkJCXBhdHRlcm4pOwotLSAgICAgIGVsc2UKLS0JdWlfb3V0X21lc3Nh Z2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLS0gICAgfQotLX0KLS0M Ci0gdm9pZAotIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotIHsKLS0gIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQotLSAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLS0KLS0gIG9ic2VydmVy X2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKLS0KLSAgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAot IAkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotIFNldCB0aGUgZGVidWdnZXIncyBiZWhh dmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLUBAIC02MjcsMTEg KzIwNSw2IEBAIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiksCi0gCQkJICAgTlVM TCwgTlVMTCwKLSAJCQkgICAmc2V0bGlzdCwKLSAJCQkgICAmc2hvd2xpc3QpOwotLQotLSAgYWRk X2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCi0tCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRz LAotLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0 cy5cblwKLS1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKLSB9Ci0g Ci0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQt MTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCi1AQCAtMjQsOCArMjQsNiBAQAotIAotIHN0cnVj dCBicmVha3BvaW50X29iamVjdDsKLSAKLS1leHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQ7Ci0tCi0gZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXphdGlvbiAodm9pZCk7 Ci0gCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1h bmRfbGluZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDlvZjI4LnBhdGNoIGIvZ2Ri LWF1dG9sb2FkLTA5b2YyOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xMjQ0Y2ZmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA5b2YyOC5wYXRjaApA QCAtMCwwICsxLDExNjggQEAKK1twYXRjaCM0IDMvOF0gYXV0by1sb2FkOiByZXNodWZmbGUgY29k ZQoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODcu aHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMi5o dG1sCisKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6MjY6 MjkuMDQ5MTIwMjEyICswMjAwCitAQCAtMCwwICsxLDQ3MiBAQAorKy8qIEdEQiByb3V0aW5lcyBm b3Igc3VwcG9ydGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgorKworKyAgIENvcHlyaWdodCAoQykg MjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworKworKyNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUgImF1dG8tbG9hZC5oIgorKyNpbmNs dWRlICJwcm9nc3BhY2UuaCIKKysjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorKyNpbmNsdWRl ICJnZGJfcmVnZXguaCIKKysjaW5jbHVkZSAidWktb3V0LmgiCisrI2luY2x1ZGUgImZpbGVuYW1l cy5oIgorKyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgIm9ic2VydmVyLmgiCisrI2lu Y2x1ZGUgIm9iamZpbGVzLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIK KysKKysvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcu CisrICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hl biBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKKysgICBmYWxzZSBvdGhlcndpc2UuCisrCisrICAgQm90 aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1 ZSB0byBlbmFibGUKKysgICBhdXRvLWxvYWRpbmcuCisrCisrICAgVGhpcyBmbGFnIGV4aXN0cyB0 byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCisrICAg dW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUg c2VhcmNoIGRpcmVjdG9yaWVzCisrICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KKytp bnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrCisrLyogRm9yIHNjcmlwdHMgc3BlY2lm aWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKKysg ICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlw dCBtdWx0aXBsZSB0aW1lcywKKysgICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVz IGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKKysgICBsb2FkZWQgdGhp cyB3YXkuICAqLworKworK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KKyt7CisrICAvKiBG b3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAq LworKyAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOworKworKyAgLyogTm9uLXplcm8gaWYg d2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJl aW5nCisrICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25j ZS4gICovCisrICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CisrfTsKKysK KysvKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0 IGhhc2ggdGFibGUuICAqLworKworK3N0cnVjdCBsb2FkZWRfc2NyaXB0CisreworKyAgLyogTmFt ZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCisrICBjb25zdCBjaGFyICpuYW1lOwor KyAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3 YXMgb3RoZXJ3aXNlCisrICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKysgIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aDsKKyt9OworKworKy8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KKytz dGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19sb2FkX3BzcGFjZV9k YXRhOworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0 cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKKyt7CisrICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworKyAgaWYgKGluZm8gIT0gTlVMTCkK KysgICAgeworKyAgICAgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykKKysJaHRhYl9kZWxldGUg KGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKysgICAgICB4ZnJlZSAoaW5mbyk7CisrICAgIH0KKyt9 CisrCisrLyogR2V0IHRoZSBjdXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBub25lIGlzIGZvdW5k IHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKKysgICBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhIHZh bGlkIG9iamVjdC4gICovCisrCisrc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KgorK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3Bh Y2UpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysgIGlu Zm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsK KysgIGlmIChpbmZvID09IE5VTEwpCisrICAgIHsKKysgICAgICBpbmZvID0gWFpBTExPQyAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7CisrICAgICAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEsIGluZm8pOworKyAgICB9CisrCisrICBy ZXR1cm4gaW5mbzsKKyt9CisrCisrLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaC4gICovCisrCisrc3RhdGljIGhhc2h2YWxfdAorK2hhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKKyt7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqZSA9IGRhdGE7CisrCisrICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7Cisr fQorKworKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAg Ki8KKysKKytzdGF0aWMgaW50CisrZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKKyt7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEg PSBhOworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsKKysKKysgIHJldHVy biBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKKyt9CisrCisrLyogSW5pdGlhbGl6 ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCisrICAgRWFjaCBlbnRyeSBpcyBo YXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luaXRf bG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8pCisreworKyAgLyogQ2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBzaXplIG9mIHRoZSBo YXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmlseS4KKysgICAgIFNwYWNlIGZvciBlYWNoIGVu dHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJlZSB0aGVtCisrICAg ICBlYXNpbHkuICAqLworKworKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzID0gaHRhYl9j cmVhdGUgKDMxLAorKwkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksCisrCQkJCQkg ICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCisrCQkJCQkgICAgIHhmcmVlKTsKKysKKysgIHBz cGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOworK30K KysKKysvKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgdG8gYWxzbyBhbGxv Y2F0ZSB0aGUgaGFzaCB0YWJsZQorKyAgIGZvciBsb2FkaW5nIHNjcmlwdHMuICAqLworKworK3N0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisreworKyAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIChwc3BhY2UpOworKyAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5V TEwpCisrICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7CisrCisrICByZXR1cm4g aW5mbzsKKyt9CisrCisrLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNF X0lORk8uCisrICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQu CisrICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhl IGhhc2ggdGFibGUuICAqLworKworK2ludAorK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpuYW1lLAorKwkJICBj b25zdCBjaGFyICpmdWxsX3BhdGgpCisreworKyAgc3RydWN0IGh0YWIgKmh0YWIgPSBwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHM7CisrICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3QsIGVu dHJ5OworKyAgaW50IGluX2hhc2hfdGFibGU7CisrCisrICBlbnRyeS5uYW1lID0gbmFtZTsKKysg IGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKKysgIHNsb3QgPSAoc3RydWN0IGxvYWRlZF9z Y3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7CisrICBpbl9o YXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKysKKysgIC8qIElmIHRoaXMgc2NyaXB0IGlzIG5v dCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KKysKKysgIGlmICghIGluX2hhc2hfdGFi bGUpCisrICAgIHsKKysgICAgICBjaGFyICpwOworKworKyAgICAgIC8qIEFsbG9jYXRlIGFsbCBz cGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICovCisrICAgICAgKnNs b3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKKysJCSAgICAgICArIHN0cmxlbiAobmFtZSkg KyAxCisrCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVuIChmdWxsX3BhdGgp ICsgMSkgOiAwKSk7CisrICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNpemVvZiAoKipzbG90 KTsKKysgICAgICBzdHJjcHkgKHAsIG5hbWUpOworKyAgICAgICgqc2xvdCktPm5hbWUgPSBwOwor KyAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKKysJeworKwkgIHAgKz0gc3RybGVuIChwKSAr IDE7CisrCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOworKwkgICgqc2xvdCktPmZ1bGxfcGF0aCA9 IHA7CisrCX0KKysgICAgICBlbHNlCisrCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAg IH0KKysKKysgIHJldHVybiBpbl9oYXNoX3RhYmxlOworK30KKysKKysvKiBDbGVhciB0aGUgdGFi bGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCisrCisrc3RhdGljIHZvaWQKKytjbGVh cl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCisreworKyAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBz cGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKmluZm87CisrCisrICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1 dG9fbG9hZF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRl ZF9zY3JpcHRzICE9IE5VTEwpCisrICAgIHsKKysgICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9h ZGVkX3NjcmlwdHMpOworKyAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKKysgICAg ICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOworKyAgICB9 CisrfQorKworKy8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0 aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKysKKyt2b2lkCisrYXV0b19sb2FkX29iamZpbGVf c2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQorK3sK KysgIGNoYXIgKnJlYWxuYW1lOworKyAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7CisrICBp bnQgbGVuOworKyAgRklMRSAqaW5wdXQ7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Cisr CisrICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7CisrICBsZW4gPSBz dHJsZW4gKHJlYWxuYW1lKTsKKysgIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChz dWZmaXgpICsgMSk7CisrICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKKysgIHN0 cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7CisrCisrICBjbGVhbnVwcyA9IG1ha2VfY2xl YW51cCAoeGZyZWUsIGZpbGVuYW1lKTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1l KTsKKysKKysgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOworKyAgZGVidWdmaWxlID0g ZmlsZW5hbWU7CisrCisrICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQorKyAg ICB7CisrICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVi dWcgaW5mbyBkaXJlY3RvcnkuICAqLworKyAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxl biAoZmlsZW5hbWUpCisrCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEp OworKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CisrICAg ICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4g ICovCisrICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKysKKysgICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVn ZmlsZSwgInIiKTsKKysgICAgfQorKworKyAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKKysg ICAgeworKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkg b2YgZ2RiJ3MgZGF0YQorKwkgZGlyZWN0b3J5LiAgKi8KKysgICAgICBkZWJ1Z2ZpbGUgPSB4bWFs bG9jIChzdHJsZW4gKGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpCisrCQkJICAgKyBz dHJsZW4gKCIvYXV0by1sb2FkIikgKyAxKTsKKysgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2Ri X2RhdGFkaXIpOworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOworKyAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CisrCisrICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7CisrICAgIH0KKysKKysgIGlmIChpbnB1dCkKKysgICAgeworKyAgICAgIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworKworKyAgICAgIG1ha2Vf Y2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKysKKysgICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8g dGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorKwkgY2FuIHBy aW50IGl0LiAgKi8KKysgICAgICBwc3BhY2VfaW5mbyA9CisrCWdldF9hdXRvX2xvYWRfcHNwYWNl X2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrICAgICAgbWF5YmVf YWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKKysKKysgICAg ICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdo ZXRoZXIgdGhlCisrCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlz IGxvYWQgaXQuCisrCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0 IHR3aWNlLAorKwkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3Rl bnQgdW5kZXIgbXVsdGlwbGUKKysJIGxvYWRzIGFueXdheS4gICovCisrICAgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworKyAg ICB9CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworK30KKysKKysvKiBUaGlzIGlzIGEg bmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMuCisrCisr ICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVkLgorKyAg IDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCisrICAgMikgZnJvbSAuZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2F1dG9fbG9hZF9uZXdf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisreworKyAgaWYgKCFvYmpmaWxlKQor KyAgICB7CisrICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGluZyBhIG5ldyAibWFp biIgc3ltYm9sLWZpbGUuICAqLworKyAgICAgIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAoKTsKKysg ICAgICByZXR1cm47CisrICAgIH0KKysKKysgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl IChvYmpmaWxlKTsKKyt9CisrCisrLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJlIHByaW50ZWQgaW4g YSB2ZWMuICAqLworKworK3R5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3Jp cHRfcHRyOworK0RFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOworKworKy8qIFRyYXZlcnNh bCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KKysgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBp dCBtYXRjaGVzIHRoZSByZWdleHAuICAqLworKworK3N0YXRpYyBpbnQKKytjb2xsZWN0X21hdGNo aW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQorK3sKKysgIHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoq c2NyaXB0c19wdHIgPSBpbmZvOworKworKyAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCisr ICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIsIHNjcmlw dCk7CisrCisrICByZXR1cm4gMTsKKyt9CisrCisrLyogUHJpbnQgU0NSSVBULiAgKi8KKysKKytz dGF0aWMgdm9pZAorK3ByaW50X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCkK Kyt7CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBzdHJ1Y3Qg Y2xlYW51cCAqY2hhaW47CisrCisrICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVf YmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CisrCisrICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91 dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlzc2luZyIpOworKyAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworKyAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysKKysgIC8qIElmIHRoZSBuYW1lIGlzbid0IHRo ZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCisrICBpZiAoc2NyaXB0LT5mdWxsX3BhdGgg IT0gTlVMTAorKyAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5uYW1lLCBzY3JpcHQtPmZ1bGxfcGF0 aCkgIT0gMCkKKysgICAgeworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlx0ZnVsbCBuYW1l OiAiKTsKKysgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZ1bGxfcGF0aCIsIHNj cmlwdC0+ZnVsbF9wYXRoKTsKKysgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworKyAg ICB9CisrCisrICBkb19jbGVhbnVwcyAoY2hhaW4pOworK30KKysKKysvKiBIZWxwZXIgZm9yIGlu Zm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLiAgKi8KKysK KytzdGF0aWMgaW50Cisrc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjb25z dCB2b2lkICpicCkKKyt7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYSA9ICooY29u c3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBicDsKKysKKysgIHJl dHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOworK30KKysKKysvKiAiaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1 dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCisreworKyAgc3Ry dWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworKyAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisrICBzdHJ1Y3QgY2xlYW51cCAqc2NyaXB0X2NoYWlu OworKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlwdHM7CisrICBpbnQgbnJfc2NyaXB0 czsKKysKKysgIGRvbnRfcmVwZWF0ICgpOworKworKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19s b2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKworKyAgaWYgKHBhdHRl cm4gJiYgKnBhdHRlcm4pCisrICAgIHsKKysgICAgICBjaGFyICpyZV9lcnIgPSByZV9jb21wIChw YXR0ZXJuKTsKKysKKysgICAgICBpZiAocmVfZXJyKQorKwllcnJvciAoXygiSW52YWxpZCByZWdl eHA6ICVzIiksIHJlX2Vycik7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIHJlX2Nv bXAgKCIiKTsKKysgICAgfQorKworKyAgLyogV2UgbmVlZCB0byBrbm93IHRoZSBudW1iZXIgb2Yg cm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgorKyAgICAgUGx1cyB3ZSB3YW50IHRvIHNv cnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KKysgICAgIFNvIGZpcnN0IHRyYXZlcnNlIHRoZSBoYXNo IHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLworKworKyAgc2NyaXB0 cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEwKTsKKysgIHNjcmlwdF9jaGFpbiA9 IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRyKSwgJnNjcmlwdHMp OworKworKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9z Y3JpcHRzICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpbW1lZGlhdGVfcXVpdCsrOworKyAgICAg IC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxv YyBzcGFjZS4gICovCisrICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzLAorKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNj cmlwdHMpOworKyAgICAgIGltbWVkaWF0ZV9xdWl0LS07CisrICAgIH0KKysKKysgIG5yX3Njcmlw dHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7CisrICBtYWtlX2Ns ZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCisrCQkJ CSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOworKworKyAgdWlfb3V0X3RhYmxlX2hl YWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAiTG9hZGVkIik7CisrICB1aV9vdXRf dGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJzY3JpcHQiLCAiU2NyaXB0Iik7Cisr ICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOworKworKyAgaWYgKG5yX3NjcmlwdHMgPiAwKQor KyAgICB7CisrICAgICAgaW50IGk7CisrICAgICAgbG9hZGVkX3NjcmlwdF9wdHIgc2NyaXB0Owor KworKyAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp LAorKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKKysJICAg ICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9zY3JpcHRzX2J5X25hbWUpOworKyAg ICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cywg aSwgc2NyaXB0KTsgKytpKQorKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7CisrICAgIH0KKysKKysg IGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOworKworKyAgaWYgKG5yX3NjcmlwdHMgPT0gMCkK KysgICAgeworKyAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQorKwl1aV9vdXRfbWVzc2Fn ZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyAlcy5cbiIsCisrCQkJ cGF0dGVybik7CisrICAgICAgZWxzZQorKwl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBh dXRvLWxvYWQgc2NyaXB0cy5cbiIpOworKyAgICB9CisrfQorKworKy8qIFJldHVybiBub24temVy byBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BBQ0VfSU5GTyB3YXMg dW5zZXQKKysgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBTQ1JJ UFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAorKyAgIG9mIFBTUEFDRV9JTkZPLiAgKi8KKysK KytpbnQKKytzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorK3sKKysgIGludCByZXR2YWwgPSAhcHNwYWNlX2lu Zm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOworKworKyAgcHNwYWNlX2luZm8t PnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gMTsKKysKKysgIHJldHVybiByZXR2 YWw7CisrfQorKworK3ZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKKysKKyt2b2lk CisrX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorK3sKKysgIGF1dG9fbG9hZF9wc3BhY2Vf ZGF0YQorKyAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1 dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKysKKysgIG9ic2VydmVyX2F0dGFjaF9uZXdf b2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKKysKKysgIGFkZF9pbmZvICgiYXV0by1s b2FkLXNjcmlwdHMiLAorKwkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKKysJICAgIF8oIlBy aW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCisrVXNhZ2U6 IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7CisrfQorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKK0BA IC0wLDAgKzEsMzYgQEAKKysvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2Fk ZWQgc2NyaXB0cy4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWZuZGVmIEFVVE9fTE9B RF9ICisrI2RlZmluZSBBVVRPX0xPQURfSCAxCisrCisrc3RydWN0IHByb2dyYW1fc3BhY2U7Cisr CisrZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOworKworK2V4dGVybiBzdHJ1Y3Qg YXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKysgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9y X2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworK2V4dGVybiBpbnQgbWF5 YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8s CisrCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpOworK2V4 dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCisrCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CisrZXh0ZXJuIGludAorKyAgc2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbyk7CisrCisrI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4KKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIx MiArMDIwMAorQEAgLTAsMCArMSwzNCBAQAorK2VjaG8gU2V0dGluZyB1cCB0aGUgZW52aXJvbm1l bnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KKysKKytzZXQgY29tcGxhaW50cyAxCisrCisrYiBpbnRl cm5hbF9lcnJvcgorKworK2IgaW5mb19jb21tYW5kCisrY29tbWFuZHMKKysJc2lsZW50CisrCXJl dHVybgorK2VuZAorKworK2RpciBAc3JjZGlyQC8uLi9saWJpYmVydHkKKytkaXIgQHNyY2RpckAv Li4vYmZkCisrZGlyIEBzcmNkaXJACisrZGlyIC4KKytzZXQgcHJvbXB0ICh0b3AtZ2RiKSAKKysK KytkZWZpbmUgcGRpZQorKyAgaWYgJGFyZ2MgPT0gMQorKyAgICBjYWxsIGR1bXBfZGllICgkYXJn MCwgMSkKKysgIGVsc2UKKysgICAgaWYgJGFyZ2MgPT0gMgorKyAgICAgIGNhbGwgZHVtcF9kaWUg KCRhcmcwLCAkYXJnMSkKKysgICAgZWxzZQorKyAgICAgIHByaW50ZiAiU3ludGF4OiBwZGllIGRp ZSBbZGVwdGhdXG4iCisrICAgIGVuZAorKyAgZW5kCisrZW5kCisrCisrZG9jdW1lbnQgcGRpZQor K1ByZXR0eSBwcmludCBhIERXQVJGIERJRS4KKytTeW50YXg6IHBkaWUgZGllIFtkZXB0aF0KKytl bmQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9NYWtlZmlsZS5pbgorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0x OCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9N YWtlZmlsZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjUzLjQ1NTA1ODAzNyArMDIwMAorQEAgLTY4MCw3 ICs2ODAsNyBAQCBUQVJHRVRfRkxBR1NfVE9fUEFTUyA9IFwKKyAjIFNGSUxFUyBpcyB1c2VkIGlu IGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gYXJjaGl2ZS4KKyAKKyBTRklMRVMgPSBhZGEtZXhw LnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMgYWRhLXRhc2tzLmMg XAorLQlhZGRybWFwLmMgXAorKwlhZGRybWFwLmMgYXV0by1sb2FkLmMgXAorIAlhdXh2LmMgYXgt Z2VuZXJhbC5jIGF4LWdkYi5jIFwKKyAJYmNhY2hlLmMgXAorIAliZmQtdGFyZ2V0LmMgXAorQEAg LTgxOSw3ICs4MTksNyBAQCBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xpYi1z CisgZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVs aWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCisgZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFt ZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAorIGNvbW1vbi9jb21tb24tdXRpbHMuaCBjb21tb24v eG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAorLWNvbW1vbi9saW51 eC1vc2RhdGEuaCBnZGItZGxmY24uaAorK2NvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24u aCBhdXRvLWxvYWQuaAorIAorICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2Rp ciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgorIAorQEAgLTg1MSw3ICs4NTEsNyBA QCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCisgCXZlcnNpb24ubyBc CisgCWFubm90YXRlLm8gXAorIAlhZGRybWFwLm8gXAorLQlhdXh2Lm8gXAorKwlhdXRvLWxvYWQu byBhdXh2Lm8gXAorIAliZmQtdGFyZ2V0Lm8gXAorIAlibG9ja2ZyYW1lLm8gYnJlYWtwb2ludC5v IGZpbmR2YXIubyByZWdjYWNoZS5vIFwKKyAJY2hhcnNldC5vIGNvbnRpbnVhdGlvbnMubyBjb3Jl bG93Lm8gZGlzYXNtLm8gZHVtbXktZnJhbWUubyBkZnAubyBcCitAQCAtMTI1NSw3ICsxMjU1LDcg QEAgZGlzdGNsZWFuOiBjbGVhbgorIAlybSAtZiBnZGJzZXJ2ZXIvY29uZmlnLnN0YXR1cyBnZGJz ZXJ2ZXIvY29uZmlnLmxvZworIAlybSAtZiBnZGJzZXJ2ZXIvdG0uaCBnZGJzZXJ2ZXIveG0uaCBn ZGJzZXJ2ZXIvbm0uaAorIAlybSAtZiBnZGJzZXJ2ZXIvTWFrZWZpbGUgZ2Ric2VydmVyL2NvbmZp Zy5jYWNoZQorLQlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmggc3RhbXAtaCAuZ2Ri aW5pdCBqaXQtcmVhZGVyLmgKKysJcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0 YW1wLWggZ2RiLWdkYi5nZGIgaml0LXJlYWRlci5oCisgCXJtIC1mIHkub3V0cHV0IHlhY2MuYWN0 cyB5YWNjLnRtcCB5LnRhYi5oCisgCXJtIC1mIGNvbmZpZy5sb2cgY29uZmlnLmNhY2hlCisgCXJt IC1mIE1ha2VmaWxlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAx Mi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIgKzAyMDAKK0BAIC0x NjgzOSw3ICsxNjgzOSw3IEBAIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyAkYWNf Y28KKyAkYXNfZWNobyAiI2RlZmluZSBHREJfREVGQVVMVF9IT1NUX0NIQVJTRVQgXCJVVEYtOFwi IiA+PmNvbmZkZWZzLmgKKyAKKyAKKy1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMg TWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxl IGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgorK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19m aWxlcyBNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRh dGEtZGlyZWN0b3J5L01ha2VmaWxlIgorIAorIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZp Z19jb21tYW5kcyBkZWZhdWx0IgorIAorQEAgLTE3NjA1LDcgKzE3NjA1LDcgQEAgZG8KKyAgICAg ImppdC1yZWFkZXIuaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBqaXQtcmVhZGVyLmg6 aml0LXJlYWRlci5pbiIgOzsKKyAgICAgIiRhY19jb25maWdfbGlua3NfMSIpIENPTkZJR19MSU5L Uz0iJENPTkZJR19MSU5LUyAkYWNfY29uZmlnX2xpbmtzXzEiIDs7CisgICAgICJNYWtlZmlsZSIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsKKy0gICAgIi5nZGJpbml0 IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC5nZGJpbml0OmdkYmluaXQuaW4iIDs7Cisr ICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGItZ2RiLmdk YiIgOzsKKyAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBk b2MvTWFrZWZpbGUiIDs7CisgICAgICJnbnVsaWIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZ251bGliL01ha2VmaWxlIiA7OworICAgICAiZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZGF0YS1kaXJlY3RvcnkvTWFrZWZp bGUiIDs7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAx Mi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIgKzAyMDAKK0BA IC0yNDIyLDcgKzI0MjIsNyBAQCBkbmwgIEF0IHRoZSBtb21lbnQsIHdlIGp1c3QgYXNzdW1lIGl0 J3MKKyBBQ19ERUZJTkUoR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VULCAiVVRGLTgiLAorICAgICAg ICAgICBbRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0aGUgZGVmYXVsdCBob3N0IGNoYXJh Y3RlciBzZXQuXSkKKyAKKy1BQ19PVVRQVVQoTWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBk b2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAorK0FD X09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxl IGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAorIFsKKyBjYXNlIHgkQ09ORklHX0hFQURFUlMgaW4K KyB4Y29uZmlnLmg6Y29uZmlnLmluKQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5j CTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCitAQCAt NDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKKyAjaW5jbHVkZSAicHl0 aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRlICJhdXRvLWxv YWQuaCIKKyAKKyAvKiBUaGUgc2VsZWN0ZWQgaW50ZXJwcmV0ZXIuICBUaGlzIHdpbGwgYmUgdXNl ZCBhcyBhIHNldCBjb21tYW5kCisgICAgdmFyaWFibGUsIHNvIGl0IHNob3VsZCBhbHdheXMgYmUg bWFsbG9jJ2VkIC0gc2luY2UKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwky MDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAgLTE4LDMwICsxOCwxNCBAQAor ICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgorLSNpbmNsdWRlICJm aWxlbmFtZXMuaCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorLSNpbmNsdWRlICJnZGJfcmVn ZXguaCIKKyAjaW5jbHVkZSAidG9wLmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKy0jaW5j bHVkZSAiY29tbWFuZC5oIgorICNpbmNsdWRlICJnZGJjbWQuaCIKKy0jaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKKy0jaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisg I2luY2x1ZGUgInB5dGhvbi5oIgorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKKy0KKy0vKiBJ bnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCistICAgVGhp cyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpm aWxlIGlzIG9wZW5lZCwKKy0gICBmYWxzZSBvdGhlcndpc2UuCistCistICAgQm90aCBhdXRvX2xv YWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFi bGUKKy0gICBhdXRvLWxvYWRpbmcuCistCistICAgVGhpcyBmbGFnIGV4aXN0cyB0byBmYWNpbGl0 YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCistICAgdW50aWwgYWZ0 ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUgc2VhcmNoIGRp cmVjdG9yaWVzCistICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KKy1pbnQgZ2RicHlf Z2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrI2luY2x1ZGUgImF1dG8tbG9hZC5oIgorIAorICNpZmRl ZiBIQVZFX1BZVEhPTgorIAorQEAgLTYwLDMyICs0NCw2IEBAIGludCBnZGJweV9nbG9iYWxfYXV0 b19sb2FkID0gMTsKKyAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93IHVwd2FyZCBjb21w YXRpYmxlIGV4dGVuc2lvbnMuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUg Ii5kZWJ1Z19nZGJfc2NyaXB0cyIKKyAKKy0vKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQgaW4gLmRl YnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAorLSAgIHRoZSBzYW1l IHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11bHRpcGxl IHRpbWVzLAorLSAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmlsZXMgYW5kIHNjcmlw dHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cworLSAgIGxvYWRlZCB0aGlzIHdheS4gICov CistCistc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbworLXsKKy0gIC8qIEZvciBlYWNoIHBy b2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4gICovCistICBzdHJ1 Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7CistCistICAvKiBOb24temVybyBpZiB3ZSd2ZSBpc3N1 ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3QgYmVpbmcKKy0gICAg IGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBvbmNlLiAgKi8KKy0g IGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKKy19OworLQorLS8qIE9iamVj dHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3JpcHQgaGFzaCB0YWJs ZS4gICovCistCistc3RydWN0IGxvYWRlZF9zY3JpcHQKKy17CistICAvKiBOYW1lIGFzIHByb3Zp ZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKy0gIGNvbnN0IGNoYXIgKm5hbWU7CistICAvKiBGdWxs IHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhlcndp c2UKKy0gICAgIGluYWNjZXNzaWJsZSkuICAqLworLSAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwor LX07CistCisgLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1s b2FkaW5nOgorICAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKKyAgICBUaGlzIGlzIHRy dWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpm aWxlCitAQCAtOTcsMTM2ICs1NSw2IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgICAgVGhlIGZh Y3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAg Ki8KKyBzdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKKyAKKy0vKiBQZXItcHJvZ3Jh bS1zcGFjZSBkYXRhIGtleS4gICovCistc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNl X2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKKy0KKy1zdGF0aWMgdm9pZAorLWF1dG9fbG9h ZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lk ICphcmcpCisteworLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0g IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKKy0gIGlmIChpbmZvICE9IE5VTEwpCistICAgIHsKKy0gICAgICBpZiAoaW5mby0+bG9hZGVk X3NjcmlwdHMpCistCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CistICAgICAg eGZyZWUgKGluZm8pOworLSAgICB9CistfQorLQorLS8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9h ZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCistICAgZnVu Y3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLworLQorLXN0YXRpYyBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKy1nZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorLXsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2Us IGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CistICBpZiAoaW5mbyA9PSBOVUxMKQorLSAgICB7Cist ICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOworLSAg ICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh LCBpbmZvKTsKKy0gICAgfQorLQorLSAgcmV0dXJuIGluZm87CistfQorLQorLS8qIEhhc2ggZnVu Y3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworLQorLXN0YXRpYyBoYXNodmFs X3QKKy1oYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCisteworLSAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOworLQorLSAgcmV0dXJuIGh0YWJf aGFzaF9zdHJpbmcgKGUtPm5hbWUpOworLX0KKy0KKy0vKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3Ig dGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCistCistc3RhdGljIGludAorLWVxX2xvYWRlZF9z Y3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisteworLSAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplYiA9IGI7CistCistICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09 IDA7CistfQorLQorLS8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3Jp cHRzLgorLSAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICov CistCistc3RhdGljIHZvaWQKKy1pbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorLXsKKy0gIC8qIENob29zZSAzMSBhcyB0 aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHku CistICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mg c28gd2UgY2FuIGZyZWUgdGhlbQorLSAgICAgZWFzaWx5LiAgKi8KKy0KKy0gIHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKKy0JCQkJCSAgICAgaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAorLQkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAorLQkJ CQkJICAgICB4ZnJlZSk7CistCistICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50ZWQgPSBGQUxTRTsKKy19CistCistLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKKy0gICBmb3IgbG9h ZGluZyBzY3JpcHRzLiAgKi8KKy0KKy1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqCistZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSkKKy17CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpp bmZvOworLQorLSAgaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHBzcGFjZSk7Cist ICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0gTlVMTCkKKy0gICAgaW5pdF9sb2FkZWRfc2Ny aXB0c19pbmZvIChpbmZvKTsKKy0KKy0gIHJldHVybiBpbmZvOworLX0KKy0KKy0vKiBBZGQgc2Ny aXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBIVEFCLgorLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRo ZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgorLSAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2Ny aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKy0KKy1zdGF0aWMgaW50Cist bWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGh0YWIgKmh0YWIsIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCkKKy17CistICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3Qs IGVudHJ5OworLSAgaW50IGluX2hhc2hfdGFibGU7CistCistICBlbnRyeS5uYW1lID0gbmFtZTsK Ky0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKKy0gIHNsb3QgPSAoc3RydWN0IGxvYWRl ZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7CistICBp bl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKy0KKy0gIC8qIElmIHRoaXMgc2NyaXB0IGlz IG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KKy0KKy0gIGlmICghIGluX2hhc2hf dGFibGUpCistICAgIHsKKy0gICAgICBjaGFyICpwOworLQorLSAgICAgIC8qIEFsbG9jYXRlIGFs bCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICovCistICAgICAg KnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKKy0JCSAgICAgICArIHN0cmxlbiAobmFt ZSkgKyAxCistCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVuIChmdWxsX3Bh dGgpICsgMSkgOiAwKSk7CistICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNpemVvZiAoKipz bG90KTsKKy0gICAgICBzdHJjcHkgKHAsIG5hbWUpOworLSAgICAgICgqc2xvdCktPm5hbWUgPSBw OworLSAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKKy0JeworLQkgIHAgKz0gc3RybGVuIChw KSArIDE7CistCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOworLQkgICgqc2xvdCktPmZ1bGxfcGF0 aCA9IHA7CistCX0KKy0gICAgICBlbHNlCistCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Cist ICAgIH0KKy0KKy0gIHJldHVybiBpbl9oYXNoX3RhYmxlOworLX0KKy0KKyAvKiBMb2FkIHNjcmlw dHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCisgICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIg Y29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKKyAgICBmaWxlIG5hbWVzLgorQEAg LTMwMSwyMCArMTI5LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxl ICoKKyAKKyAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2Uu ICAqLworIAorLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHMsIGZpbGUsCisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAorIAkJCQkJb3BlbmVkID8gZnVsbF9wYXRo IDogTlVMTCk7CisgCisgICAgICAgaWYgKCEgb3BlbmVkKQorIAl7CisgCSAgLyogV2UgZG9uJ3Qg dGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLworLQkg IGlmICghIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCkKKy0J ICAgIHsKKy0JICAgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZl cmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKysJICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50IChwc3BhY2VfaW5mbykpCisrCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9h ZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorIG9mIGZpbGUgJXNcblwKKyBV c2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKKy0J CSAgICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CistCSAgICAg IHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IFRSVUU7Cist CSAgICB9CisrCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsK KyAJfQorICAgICAgIGVsc2UKKyAJeworQEAgLTM1NiwxMTYgKzE4MSw2IEBAIGF1dG9fbG9hZF9z ZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 CisgfQorIAorLS8qIENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlvbiBzY3JpcHRzLiAg Ki8KKy0KKy1zdGF0aWMgdm9pZAorLWNsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKKy17Cist ICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOwor LSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0gIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKy0gIGlmIChp bmZvICE9IE5VTEwgJiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKKy0gICAgeworLSAg ICAgIGh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CistICAgICAgaW5mby0+bG9h ZGVkX3NjcmlwdHMgPSBOVUxMOworLSAgICAgIGluZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludGVkID0gRkFMU0U7CistICAgIH0KKy19CistCistLyogTG9vayBmb3IgdGhlIGF1dG8t bG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLworLQor LXN0YXRpYyB2b2lkCistYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQorLXsKKy0gIGNoYXIgKnJlYWxuYW1lOworLSAg Y2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7CistICBpbnQgbGVuOworLSAgRklMRSAqaW5wdXQ7 CistICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7CistCistICByZWFsbmFtZSA9IGdkYl9yZWFs cGF0aCAob2JqZmlsZS0+bmFtZSk7CistICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKKy0gIGZp bGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7CistICBtZW1jcHkg KGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKKy0gIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1 ZmZpeCk7CistCistICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsK Ky0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKKy0KKy0gIGlucHV0ID0gZm9wZW4g KGZpbGVuYW1lLCAiciIpOworLSAgZGVidWdmaWxlID0gZmlsZW5hbWU7CistCistICBpZiAoIWlu cHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQorLSAgICB7CistICAgICAgLyogQWxzbyB0cnkg dGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwor LSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCistCQkJICAgKyBz dHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOworLSAgICAgIHN0cmNweSAoZGVidWdm aWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1 dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChkZWJ1 Z2ZpbGUsIGZpbGVuYW1lKTsKKy0KKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2Zp bGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKy0gICAgfQorLQor LSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKKy0gICAgeworLSAgICAgIC8qIEFsc28gdHJ5 IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQorLQkgZGlyZWN0 b3J5LiAgKi8KKy0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGdkYl9kYXRhZGly KSArIHN0cmxlbiAoZmlsZW5hbWUpCistCQkJICAgKyBzdHJsZW4gKCIvYXV0by1sb2FkIikgKyAx KTsKKy0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2RiX2RhdGFkaXIpOworLSAgICAgIHN0cmNh dCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOworLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29s dXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworLSAgICAgIHN0cmNhdCAoZGVi dWdmaWxlLCBmaWxlbmFtZSk7CistCistICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdm aWxlKTsKKy0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CistICAgIH0KKy0K Ky0gIGlmIChpbnB1dCkKKy0gICAgeworLSAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvOworLQorLSAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsK Ky0KKy0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorLQkgY2FuIHByaW50IGl0LiAgKi8KKy0gICAgICBwc3Bh Y2VfaW5mbyA9CistCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSk7CistICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7CistCistICAgICAgLyogVG8g cHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRo ZQorLQkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0 LgorLQkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwK Ky0JIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVy IG11bHRpcGxlCistCSBsb2FkcyBhbnl3YXkuICAqLworLSAgICAgIHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKy0gICAgfQorLQor LSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKy19CistCistLyogVGhpcyBpcyBhIG5ld19vYmpm aWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgorLQorLSAgIFR3byBm bGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KKy0gICAxKSBiYXNl ZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQorLSAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb24gICovCistCistc3RhdGljIHZvaWQKKy1hdXRvX2xvYWRfbmV3X29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorLXsKKy0gIGlmICghb2JqZmlsZSkKKy0gICAgewor LSAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJv bC1maWxlLiAgKi8KKy0gICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7CistICAgICAgcmV0 dXJuOworLSAgICB9CistCistICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7CistfQorLQorIC8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUu ICAqLworIAorIHZvaWQKK0BAIC00NzgsMTQ2ICsxOTMsOSBAQCBsb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSAoc3RydWN0IG9iCisgICAgIH0KKyB9CisgDAorLS8qIENvbGxlY3Qgc2NyaXB0 cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KKy0KKy10eXBlZGVmIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKKy1ERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRy KTsKKy0KKy0vKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCistICAgQ29s bGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKy0KKy1zdGF0aWMg aW50CistY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykK Ky17CistICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7CistICBWRUMgKGxv YWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKKy0KKy0gIGlmIChyZV9leGVj IChzY3JpcHQtPm5hbWUpKQorLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwg KnNjcmlwdHNfcHRyLCBzY3JpcHQpOworLQorLSAgcmV0dXJuIDE7CistfQorLQorLS8qIFByaW50 IFNDUklQVC4gICovCistCistc3RhdGljIHZvaWQKKy1wcmludF9zY3JpcHQgKHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpzY3JpcHQpCisteworLSAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OworLSAgc3RydWN0IGNsZWFudXAgKmNoYWluOworLQorLSAgY2hhaW4gPSBtYWtlX2Ns ZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworLQorLSAgdWlfb3V0 X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMi IDogIk1pc3NpbmciKTsKKy0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwg c2NyaXB0LT5uYW1lKTsKKy0gIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CistCistICAvKiBJ ZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLworLSAgaWYg KHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKKy0gICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFt ZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCistICAgIHsKKy0gICAgICB1aV9vdXRfdGV4dCAo dWlvdXQsICJcdGZ1bGwgbmFtZTogIik7CistICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7CistICAgICAgdWlfb3V0X3RleHQg KHVpb3V0LCAiXG4iKTsKKy0gICAgfQorLQorLSAgZG9fY2xlYW51cHMgKGNoYWluKTsKKy19Cist CistLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlw dHMgYnkgbmFtZS4gICovCistCistc3RhdGljIGludAorLXNvcnRfc2NyaXB0c19ieV9uYW1lIChj b25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCisteworLSAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKKy0gIGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKikgYnA7CistCistICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsK Ky19CistCistLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLworLQorLXN0 YXRpYyB2b2lkCistaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZy b21fdHR5KQorLXsKKy0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKy0g IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworLSAgc3RydWN0IGNs ZWFudXAgKnNjcmlwdF9jaGFpbjsKKy0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRz OworLSAgaW50IG5yX3NjcmlwdHM7CistCistICBkb250X3JlcGVhdCAoKTsKKy0KKy0gIHBzcGFj ZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNl KTsKKy0KKy0gIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQorLSAgICB7CistICAgICAgY2hhciAq cmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7CistCistICAgICAgaWYgKHJlX2VycikKKy0JZXJy b3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOworLSAgICB9CistICBlbHNlCist ICAgIHsKKy0gICAgICByZV9jb21wICgiIik7CistICAgIH0KKy0KKy0gIC8qIFdlIG5lZWQgdG8g a25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KKy0gICAg IFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCistICAgICBTbyBmaXJz dCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRz LiAgKi8KKy0KKy0gIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7 CistICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2Ny aXB0X3B0ciksICZzY3JpcHRzKTsKKy0KKy0gIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBz cGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorLSAgICB7CistICAgICAgaW1tZWRp YXRlX3F1aXQrKzsKKy0gICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19z YWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworLSAgICAgIGh0YWJfdHJhdmVyc2Vfbm9y ZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKy0JCQkgICAgICBjb2xsZWN0X21h dGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKKy0gICAgICBpbW1lZGlhdGVfcXVpdC0tOworLSAg ICB9CistCistICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNj cmlwdHMpOworLSAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAy LCBucl9zY3JpcHRzLAorLQkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKKy0K Ky0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxv YWRlZCIpOworLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2Ny aXB0IiwgIlNjcmlwdCIpOworLSAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKy0KKy0gIGlm IChucl9zY3JpcHRzID4gMCkKKy0gICAgeworLSAgICAgIGludCBpOworLSAgICAgIGxvYWRlZF9z Y3JpcHRfcHRyIHNjcmlwdDsKKy0KKy0gICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzKSwKKy0JICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cyksCistCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2Ny aXB0c19ieV9uYW1lKTsKKy0gICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3Nj cmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKKy0JcHJpbnRfc2NyaXB0IChzY3Jp cHQpOworLSAgICB9CistCistICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKKy0KKy0gIGlm IChucl9zY3JpcHRzID09IDApCistICAgIHsKKy0gICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVy bikKKy0JdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0 Y2hpbmcgJXMuXG4iLAorLQkJCXBhdHRlcm4pOworLSAgICAgIGVsc2UKKy0JdWlfb3V0X21lc3Nh Z2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKKy0gICAgfQorLX0KKy0M Cisgdm9pZAorIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorIHsKKy0gIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQorLSAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKy0KKy0gIG9ic2VydmVy X2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKKy0KKyAgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAor IAkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAorIFNldCB0aGUgZGVidWdnZXIncyBiZWhh dmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKK0BAIC02MjcsMTEg KzIwNSw2IEBAIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiksCisgCQkJICAgTlVM TCwgTlVMTCwKKyAJCQkgICAmc2V0bGlzdCwKKyAJCQkgICAmc2hvd2xpc3QpOworLQorLSAgYWRk X2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCistCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRz LAorLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0 cy5cblwKKy1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKKyB9Cisg CisgI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weXRob24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQt MTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCitAQCAtMjQsOCArMjQsNiBAQAorIAorIHN0cnVj dCBicmVha3BvaW50X29iamVjdDsKKyAKKy1leHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQ7CistCisgZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXphdGlvbiAodm9pZCk7 CisgCisgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1h bmRfbGluZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjIyLnBhdGNoIGIvZ2Ri LWF1dG9sb2FkLTEwb2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU5 Njk4Mi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTBvZjIyLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTcwNCArMCwwIEBACi1bcGF0Y2gjNCA0LzhdIHNldCBhdXRvLWxvYWQgKiBtYWlu IHBhcnQKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAw MDg4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAx MTMuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo0OToxMQkxLjE0 MTEyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1MTo0MQkxLjE0MTEzCi0j IyAtMSw1ICsxLDEwMSBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KLSsJKiBO RVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAotKwkiaW5mbyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAotKwki aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0aHJl YWQtZGIiLgotKwlEZXByZWNhdGUgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9ufG9mZiIKLSsJYW5kICJzaG93IGF1dG8tbG9hZC1zY3JpcHRzIi4gIE5l dyBkZXNjcmlwdGlvbiBmb3IgInNldCBhdXRvLWxvYWQiLAotKwkic2hvdyBhdXRvLWxvYWQiLCAi c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsCi0rCSJzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0 cyIsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJInNob3cgYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIsCi0rCSJzaG93IGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwgInNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBhbmQK LSsJInNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCi0rCSogYXV0by1sb2FkLmM6IFJlbW92 ZSBpbmNsdWRlIHB5dGhvbi9weXRob24taW50ZXJuYWwuaC4gIEFkZCBpbmNsdWRlcwotKwlleGNl cHRpb25zLmgsIGNsaS9jbGktc2NyaXB0LmgsIGdkYmNtZC5oLCBjbGkvY2xpLWRlY29kZS5oIGFu ZAotKwljbGkvY2xpLXNldHNob3cuaC4KLSsJKEdEQl9BVVRPX0ZJTEVfTkFNRSwgc291cmNlX2dk Yl9zY3JpcHRfZm9yX29iamZpbGUpCi0rCShhdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIHNob3dfYXV0 b19sb2FkX2dkYl9zY3JpcHRzKTogTmV3LgotKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6IFJl bmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KLSsJKGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKLSsJKGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCwgc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dCkKLSsJKHNjcmlwdF9sYW5ndWFnZV9nZGIsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxl KTogTmV3LgotKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbGFuZ3VhZ2UuCi0r CShoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksIGVxX2xvYWRlZF9zY3JpcHRfZW50cnkpOiBDYWxj dWxhdGUgYWxzbwotKwlMQU5HVUFHRS4KLSsJKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1l dGVyIGxhbmd1YWdlLiAgRHJvcCByZWR1bmRhbnQKLSsJZW50cnkuZnVsbF9wYXRoIGluaXRpYWxp emF0aW9uLiAgSW5pdGlhbGl6ZSBlbnRyeS5sYW5ndWFnZSBhbmQKLSsJKCpzbG90KS0+bGFuZ3Vh Z2UuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFuZ2UgcGFyYW1ldGVyIHN1ZmZp eCB0byBsYW5ndWFnZS4KLSsJUmVtb3ZlIHRoZSBjYWxsIG9mIG1heWJlX2FkZF9zY3JpcHQuCi0r CUNhbGwgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUuCi0rCShsb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSwgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRh KToKLSsJTmV3LgotKwkoY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzKTogQWRqdXN0IGl0IGZvcgot KwlzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShhdXRvX2xvYWRfaW5m b19zY3JpcHRzX3BhdHRlcm5fbmwpOiBOZXcgdmFyaWFibGUuCi0rCShpbmZvX2F1dG9fbG9hZF9z Y3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0cyk6IC4uLiBo ZXJlLCBhZGQgcGFyYW1ldGVyIGxhbmd1YWdlLiAgQWRqdXN0IGl0Ci0rCWZvciBzdHJ1Y3QgY29s bGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0 cywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJKHNldF9hdXRvX2xvYWRfY21kLCBh dXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0LCBzaG93X2F1dG9fbG9hZF9jbWQpCi0rCShhdXRvX2xv YWRfc2hvd19jbWRsaXN0X2dldCwgaW5mb19hdXRvX2xvYWRfY21kKQotKwkoYXV0b19sb2FkX2lu Zm9fY21kbGlzdF9nZXQpOiBOZXcuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBNb3ZlIGFk ZF9pbmZvIG9mICJhdXRvLWxvYWQtc2NyaXB0cyIgdG8KLSsJcHl0aG9uL3B5LWF1dG8tbG9hZC5j LiAgTmV3IGluc3RhbGxtZW50IGZvciAic2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsCi0rCSJp bmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQi IGFuZAotKwkiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIuCi0rCSogYXV0by1sb2FkLmgg KHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UpOiBOZXcuCi0rCShnZGJweV9nbG9iYWxfYXV0b19sb2Fk KTogUmVuYW1lIHRvIC4uLgotKwkoZ2xvYmFsX2F1dG9fbG9hZCk6IC4uLiBoZXJlLgotKwkoYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQsIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKQot KwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkKTogTmV3IGRlY2xhcmF0aW9ucy4KLSsJ KG1heWJlX2FkZF9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGxhbmd1YWdlLgotKwkoYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8gbGFuZ3VhZ2UuCi0r CShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSwgYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sKQotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0cywgYXV0b19sb2FkX3NldF9jbWRs aXN0X2dldCkKLSsJKGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBhdXRvX2xvYWRfaW5mb19j bWRsaXN0X2dldCk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogbGludXgtdGhyZWFkLWRiLmM6 IEluY2x1ZGUgYXV0by1sb2FkLmggYW5kIGN0eXBlLmguCi0rCShhdXRvX2xvYWRfdGhyZWFkX2Ri LCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIpOiBOZXcuCi0rCShzdHJ1Y3QgdGhyZWFkX2RiX2lu Zm8pOiBOZXcgZmllbGQgZmlsZW5hbWUuCi0rCShkZWxldGVfdGhyZWFkX2RiX2luZm8pOiBDYWxs IHhmcmVlIGZvciBGSUxFTkFNRS4KLSsJKHRyeV90aHJlYWRfZGJfbG9hZCk6IEluaXRpYWxpemUg RklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyLCB0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9kaXIpOiBSZXR1cm4KLSsJaWYgIUFVVE9fTE9BRF9USFJFQURfREIuCi0rCShp bmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSwgaW5mb19hdXRvX2xvYWRfbGlidGhy ZWFkX2RiKTogTmV3LgotKwkoX2luaXRpYWxpemVfdGhyZWFkX2RiKTogSW5zdGFsbCBhdXRvX2xv YWRfdGhyZWFkX2RiCi0rCWFzICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kIGluc3Rh bGwgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiCi0rCWFzICJpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIiLgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IFJlbmFtZSBnZGJweV9nbG9i YWxfYXV0b19sb2FkIHRvCi0rCWdsb2JhbF9hdXRvX2xvYWQuICBJbml0aWFsaXplIEFVVE9fTE9B RF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGFuZAotKwlBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9M T0FERUQuCi0rCShwcmludF9nZGJfaGVscCk6IEV4dGVuZCB0aGUgaGVscCBmb3IgJ2xvY2FsIGlu aXQgZmlsZScuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jOiBSZW1vdmUgYSBjb21tZW50IGFi b3V0IGdkYiBzY3JpcHRzIGV4dGVuc2lvbi4KLSsJKEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FKTog RXh0ZW5kIHRoZSBjb21tZW50IGl0IGlzIFB5dGhvbiBzcGVjaWZpYy4KLSsJKGF1dG9fbG9hZF9z Y3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKTogLi4u IGhlcmUsIHVwZGF0ZSB0aGUgY29tbWVudC4KLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9y X29iamZpbGUpOiBOZXcgZGVjbGFyYXRpb24uCi0rCShzaG93X2F1dG9fbG9hZF9weXRob25fc2Ny aXB0cywgc2NyaXB0X2xhbmd1YWdlX3B5dGhvbikKLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRf Zm9yX29iamZpbGUpOiBOZXcuCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUmVmYWN0b3Ig dGhlIGNvZGUuCi0rCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0byAu Li4KLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUsIHVw ZGF0ZSB0aGUKLSsJYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IGNhbGxlciwgZHJvcCBHREJQWV9H TE9CQUxfQVVUT19MT0FEIGNoZWNraW5nLgotKwkoaW5mb19hdXRvX2xvYWRfcHl0aG9uX3Njcmlw dHMpOiBOZXcuCi0rCShnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5ldyB2YXJpYWJsZXMg Y21kIGFuZCBjbWRfbmFtZS4KLSsJUmVuYW1lICJzZXQgYXV0by1sb2FkLXNjcmlwdHMiIHRvICJz ZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4KLSsJUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQt c2NyaXB0cyIgYXMgaXRzIGRlcHJlY2F0ZWQgYWxpYXMuICBSZWdpc3RlcgotKwkiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiLiAgUmVnaXN0ZXIgImluZm8gYXV0by1sb2FkLXNjcmlwdHMi IGFzCi0rCWl0cyBkZXByZWNhdGVkIGFsaWFzLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSk6IC4uLiBoZXJlLgotKwkqIHB5dGhvbi9weXRob24uaCAobG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSk6IC4uLiBoZXJlLgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJYXV0by1sb2FkOiBNb3ZlIGZpbGVzLgot IAkqIE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgYXV0by1sb2FkLmMuCi0gCShIRklMRVNfTk9f U1JDRElSKTogQWRkIGF1dG8tbG9hZC5oLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJ MjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MDIuMDM1NzM3NjQ0ICswMjAwCi1AQCAtMjgs NiArMjgsNDUgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxkL2djYy9leHByLmMs IGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcgY29tbWFuZHMKLSsK LSsgICoqICJpbmZvIGF1dG8tbG9hZCIgc2hvd3Mgc3RhdHVzIG9mIGFsbCBraW5kcyBvZiBhdXRv LWxvYWRlZCBmaWxlcywKLSsgICAgICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIgc2hvd3Mg c3RhdHVzIG9mIGF1dG8tbG9hZGluZyBHREIgY2FubmVkCi0rICAgICBzZXF1ZW5jZXMgb2YgY29t bWFuZHMgZmlsZXMsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSsgICAgIHNob3dz IHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgUHl0aG9uIHNjcmlwdCBmaWxlcywKLSsgICAgICJpbmZv IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBzaG93cyBzdGF0dXMgb2YgbG9hZGluZyBpbml0IGZp bGUKLSsgICAgICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgImluZm8gYXV0 by1sb2FkIGxpYnRocmVhZC1kYiIgc2hvd3MKLSsgICAgIHN0YXR1cyBvZiBpbmZlcmlvciBzcGVj aWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5IGxvYWRpbmcuCi0rCi0rICAqKiAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmIgot KyAgICAgYW5kICJzaG93IGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kcyBoYXZlIGJlZW4gZGVw cmVjYXRlZCwgdXNlIHRoZWlyCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMi LCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYiCi0rICAgICBhbmQgInNob3cg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiBjb3VudGVycGFydHMgaW5zdGVhZC4KLSsKLSsqIE5l dyBvcHRpb25zCi0rCi0rc2V0IGF1dG8tbG9hZCBvZmYKLSsgIERpc2FibGUgYXV0by1sb2FkaW5n IGdsb2JhbGx5LgotKwotK3Nob3cgYXV0by1sb2FkCi0rICBTaG93IGF1dG8tbG9hZGluZyBzZXR0 aW5nIG9mIGFsbCBraW5kcyBvZiBhdXRvLWxvYWRlZCBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2Fk IGdkYi1zY3JpcHRzIG9ufG9mZgotK3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rICBDb250 cm9sIGF1dG8tbG9hZGluZyBvZiBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmaWxl cy4KLSsKLStzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgotK3Nob3cgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2Ny aXB0IGZpbGVzLgotKwotK3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCBvbnxvZmYKLStzaG93 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rICBDb250cm9sIGxvYWRpbmcgb2YgaW5pdCBmaWxl ICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStzZXQgYXV0by1sb2FkIGxp YnRocmVhZC1kYiBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKLSsgIENvbnRy b2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hh cmVkIGxpYnJhcnkuCi0rCi0gKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKLSAKLSAtLWluaXQt Y29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRl IGl0Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQt MTggMDA6NDQ6MjYuOTUwNDM3NTIwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAyMDAKLUBAIC0yNywx OSArMjcsOTIgQEAKLSAjaW5jbHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRlICJvYnNlcnZlci5o IgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotLSNpbmNsdWRlICJweXRob24vcHl0aG9uLWludGVy bmFsLmgiCi0rI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1zY3Jp cHQuaCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgi Ci0rI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgotKwotKy8qIFRoZSBzdWZmaXggb2YgcGVy LW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVz LgotKyAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxp YmZvby1nZGIuZ2RiLiAgKi8KLSsjZGVmaW5lIEdEQl9BVVRPX0ZJTEVfTkFNRSAiLWdkYi5nZGIi Ci0rCi0rc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5h bWUpOwotKwotKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8t bG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUKLSsgICBzY3JpcHRzOgotKyAgIHNldCBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCi0rICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBh dXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQotKyAgIGlzIG9wZW5l ZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9hZF9nZGJfc2NyaXB0 cyA9IDE7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfZ2RiX3Njcmlw dHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2F1 dG9fbG9hZF9nZGJfc2NyaXB0cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwK LSsJCQkgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQot K3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzICIKLSsJCQkgICAgInNjcmlwdHMgaXMgJXMuXG4iKSwKLSsJ CSAgICB2YWx1ZSk7Ci0rfQotIAotIC8qIEludGVybmFsLXVzZSBmbGFnIHRvIGVuYWJsZS9kaXNh YmxlIGF1dG8tbG9hZGluZy4KLSAgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9h ZCBweXRob24gY29kZSB3aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAotICAgIGZhbHNlIG90aGVy d2lzZS4KLSAKLS0gICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQotKyAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMg JiYgZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0gICAgYXV0by1sb2Fk aW5nLgotIAotICAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0 by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotICAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFz IGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcwotICAgIHVz ZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0taW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQg PSAxOwotK2ludCBnbG9iYWxfYXV0b19sb2FkID0gMTsKLSsKLSsvKiBBdXRvLWxvYWQgLmdkYmlu aXQgZmlsZSBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeT8gICovCi0raW50IGF1dG9fbG9hZF9s b2NhbF9nZGJpbml0ID0gMTsKLSsKLSsvKiBBYnNvbHV0ZSBwYXRobmFtZSB0byB0aGUgY3VycmVu dCBkaXJlY3RvcnkgLmdkYmluaXQsIGlmIGl0IGV4aXN0cy4gICovCi0rY2hhciAqYXV0b19sb2Fk X2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBOVUxMOwotKwotKy8qIEJvb2xlYW4gdmFsdWUgaWYg QVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5BTUUgaGFzIGJlZW4gbG9hZGVkLiAgKi8KLStp bnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMDsKLSsKLSsvKiAic2hvdyIgY29t bWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0IGNvbmZpZ3VyYXRpb24gdmFyaWFi bGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgICAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0 ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJl bnQgIgotKwkJCSAgICAiZGlyZWN0b3J5IGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30K LSsKLSsvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RCIGNhbm5lZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKLSsgID0geyBHREJfQVVUT19GSUxFX05BTUUsIHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIH07Ci0rCi0rc3RhdGljIHZvaWQKLStzb3VyY2Vf Z2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZp bGUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9l eGNlcHRpb24gZTsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0 b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgICAgY2FuIHByaW50IGl0LiAg Ki8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGlu ZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9p bmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKLSsKLSsgIFRS WV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgc2NyaXB0X2Zyb21f ZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKyAgICB9Ci0rICBleGNlcHRpb25fcHJpbnQgKGdkYl9z dGRlcnIsIGUpOwotK30KLSAKLSAvKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQgaW4gLmRlYnVnX2dk Yl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAotICAgIHRoZSBzYW1lIHNjcmlw dC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11bHRpcGxlIHRpbWVz LAotQEAgLTYyLDkgKzEzNSwxMiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotIHsKLSAgIC8qIE5h bWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLwotICAgY29uc3QgY2hhciAqbmFtZTsK LSsKLSAgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAo b3Igd2FzIG90aGVyd2lzZQotICAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0gICBjb25zdCBjaGFy ICpmdWxsX3BhdGg7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFn ZTsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KLUBAIC0xMDks NyArMTg1LDcgQEAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYQotIHsK LSAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLSAKLS0gIHJldHVybiBo dGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLSsgIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChl LT5uYW1lKSBeIGh0YWJfaGFzaF9wb2ludGVyIChlLT5sYW5ndWFnZSk7Ci0gfQotIAotIC8qIEVx dWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KLUBAIC0xMjAs NyArMTk2LDcgQEAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqYSwgYwotICAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLSAgIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICplYiA9IGI7Ci0gCi0tICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5h bWUpID09IDA7Ci0rICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09IDAgJiYg ZWEtPmxhbmd1YWdlID09IGViLT5sYW5ndWFnZTsKLSB9Ci0gCi0gLyogSW5pdGlhbGl6ZSB0aGUg dGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi1AQCAtMTU2LDIwICsyMzIsMjEgQEAgZ2V0 X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAocwotICAgcmV0dXJuIGluZm87Ci0g fQotIAotLS8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgot LSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotLSAgIFRo ZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRh YmxlLiAgKi8KLSsvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBv ZiBQU1BBQ0VfSU5GTy4KLSsgICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24n dCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsgICB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVh ZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotIAotIGludAotLW1heWJlX2FkZF9zY3JpcHQgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpuYW1l LAotLQkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0rbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0rCQkgIGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0IGh0YWIgKmh0YWIgPSBwc3BhY2VfaW5mby0+ bG9hZGVkX3NjcmlwdHM7Ci0gICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3QsIGVudHJ5Owot ICAgaW50IGluX2hhc2hfdGFibGU7Ci0gCi0gICBlbnRyeS5uYW1lID0gbmFtZTsKLS0gIGVudHJ5 LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIGVudHJ5Lmxhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0g ICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwg JmVudHJ5LCBJTlNFUlQpOwotICAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0gCi1A QCAtMTk0LDYgKzI3MSw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNw YWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKLSsgICAg ICAoKnNsb3QpLT5sYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgICB9Ci0gCi0gICByZXR1cm4gaW5f aGFzaF90YWJsZTsKLUBAIC0yMTYsMTAgKzI5NCwxMiBAQCBjbGVhcl9zZWN0aW9uX3NjcmlwdHMg KHZvaWQpCi0gICAgIH0KLSB9Ci0gCi0tLyogTG9vayBmb3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQg YXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLwotKy8qIExvb2sgZm9yIHRo ZSBhdXRvLWxvYWQgc2NyaXB0IGluIExBTkdVQUdFIGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFu ZCBsb2FkCi0rICAgaXQuICAqLwotIAotIHZvaWQKLS1hdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgpCi0rYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgIGNvbnN0IHN0 cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIGNoYXIgKnJlYWxuYW1lOwot ICAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci1AQCAtMjI5LDkgKzMwOSw5IEBAIGF1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIHJlYWxuYW1lID0gZ2Ri X3JlYWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKLSAgIGxlbiA9IHN0cmxlbiAocmVhbG5hbWUpOwot LSAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKHN1ZmZpeCkgKyAxKTsKLSsgIGZp bGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChsYW5ndWFnZS0+c3VmZml4KSArIDEpOwot ICAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBzdHJjcHkgKGZpbGVuYW1l ICsgbGVuLCBzdWZmaXgpOwotKyAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgbGFuZ3VhZ2UtPnN1 ZmZpeCk7Ci0gCi0gICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsK LSAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLUBAIC0yNjksMjcgKzM0OSwzMyBA QCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gICBpZiAoaW5w dXQpCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbzsKLS0KLSAgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0gCi0tICAgICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICovCi0tICAgICAgcHNwYWNlX2luZm8gPQot LQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUs IGRlYnVnZmlsZSk7Ci0tCi0gICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3Vy IHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQotIAkgc2NyaXB0IHdhcyBhbHJlYWR5IGlu IHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgotIAkgSXQncyBoaWdobHkgdW5saWtlbHkg dGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSAJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSBy ZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBsb2FkcyBhbnl3YXku ICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBp bnB1dCwgZGVidWdmaWxlKTsKLSsgICAgICBsYW5ndWFnZS0+c291cmNlX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAgIH0KLSAKLSAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7Ci0gfQotIAotKy8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMg Zm9yIE9CSkZJTEUuICAqLwotKwotK3ZvaWQKLStsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYgKCFnbG9iYWxfYXV0b19sb2Fk KQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoYXV0b19sb2FkX2dkYl9zY3JpcHRzKQotKyAgICBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsK LSsKLSsgIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSt9 Ci0rCi0gLyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8t bG9hZCBzY3JpcHRzLgotIAotICAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMg YXJlIHN1cHBvcnRlZC4KLUBAIC0zMTQsNiArNDAwLDEzIEBAIGF1dG9fbG9hZF9uZXdfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm8KLSB0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2Fk ZWRfc2NyaXB0X3B0cjsKLSBERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKLSAKLStzdHJ1 Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEKLSt7Ci0rICBWRUMgKGxvYWRlZF9zY3Jp cHRfcHRyKSAqKnNjcmlwdHNfcDsKLSsKLSsgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ug Kmxhbmd1YWdlOwotK307Ci0rCi0gLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZl cnNlLgotICAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICov Ci0gCi1AQCAtMzIxLDEwICs0MTQsMTAgQEAgc3RhdGljIGludAotIGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCi0gewotICAgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKnNjcmlwdCA9ICpzbG90OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3Jp cHRzX3B0ciA9IGluZm87Ci0rICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEg KmRhdGEgPSBpbmZvOwotIAotLSAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCi0tICAgIFZF Q19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIsIHNjcmlwdCk7Ci0r ICBpZiAoc2NyaXB0LT5sYW5ndWFnZSA9PSBkYXRhLT5sYW5ndWFnZSAmJiByZV9leGVjIChzY3Jp cHQtPm5hbWUpKQotKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKmRhdGEt PnNjcmlwdHNfcCwgc2NyaXB0KTsKLSAKLSAgIHJldHVybiAxOwotIH0KLUBAIC0zNjYsMTAgKzQ1 OSwxOCBAQCBzb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvCi0gICByZXR1 cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSB9Ci0gCi0tLyogImluZm8gYXV0 by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotKy8qIFNwZWNpYWwgaW50ZXJuYWwgR0RCIHZh bHVlIG9mIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMncyBQQVRURVJOIGlkZW50aWZ5Ci0rICAgdGhl ICJpbmZvIGF1dG8tbG9hZCBYWFgiIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0ZWQgdGhyb3VnaCB0 aGUgZ2VuZXJhbAotKyAgICJpbmZvIGF1dG8tbG9hZCIgaW52b2NhdGlvbi4gIEV4dHJhIG5ld2xp bmUgd2lsbCBiZSBwcmludGVkIGlmIG5lZWRlZC4gICovCi0rY2hhciBhdXRvX2xvYWRfaW5mb19z Y3JpcHRzX3BhdHRlcm5fbmxbXSA9ICIiOwotKwotKy8qIEltcGxlbWVudGF0aW9uIGZvciAiaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCi0rICAgKGFuZCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiKS4gIExpc3Qgc2NyaXB0cyBpbiBMQU5HVUFHRSBtYXRjaGluZwotKyAgIFBBVFRF Uk4uICBGUk9NX1RUWSBpcyB0aGUgdXN1YWwgR0RCIGJvb2xlYW4gZm9yIHVzZXIgaW50ZXJhY3Rp dml0eS4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1pbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFy ICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rdm9pZAotK2F1dG9fbG9hZF9pbmZvX3NjcmlwdHMg KGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSwKLSsJCQljb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRf dWlvdXQ7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLUBA IC00MDIsMTQgKzUwMywyMiBAQCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJu LCBpCi0gCi0gICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVk X3NjcmlwdHMgIT0gTlVMTCkKLSAgICAgewotKyAgICAgIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHNfZGF0YSBkYXRhID0geyAmc2NyaXB0cywgbGFuZ3VhZ2UgfTsKLSsKLSAgICAgICBp bW1lZGlhdGVfcXVpdCsrOwotICAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMg VkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCi0gICAgICAgaHRhYl90cmF2ZXJz ZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAotLQkJCSAgICAgIGNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNjcmlwdHMpOwotKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hp bmdfc2NyaXB0cywgJmRhdGEpOwotICAgICAgIGltbWVkaWF0ZV9xdWl0LS07Ci0gICAgIH0KLSAK LSAgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7 Ci0rCi0rICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRlZCByaWdodCBieSBwcmVjZWRpbmcgImdkYi1z Y3JpcHRzOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5zLiAgKi8KLSsgIGlm IChucl9zY3JpcHRzID4gMCAmJiBwYXR0ZXJuID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0 dGVybl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSAgIG1ha2VfY2xl YW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKLSAJCQkJ ICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0gCi1AQCAtNDQxLDYgKzU1MCwyOSBA QCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpCi0gICAgIH0KLSB9Ci0g Ci0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIi4gICovCi0rCi0r c3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZy b21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rfQotKwotKy8qIEltcGxlbWVudCAnaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5mb19h dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsg IGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9PSBOVUxMKQotKyAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgd2FzIG5vdCBmb3VuZC5cbiIpKTsK LSsgIGVsc2UgaWYgKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCkKLSsgICAgcHJpbnRm X2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMgYmVlbiBsb2FkZWQu XG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpOwotKyAgZWxz ZQotKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgXCIlc1wiIGhh cyBub3QgYmVlbiBsb2FkZWQuXG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf cGF0aG5hbWUpOwotK30KLSsKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBUX05PVF9GT1VO RF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0Ci0gICAgYmVmb3JlIGNh bGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5H X1BSSU5URUQKLSAgICBvZiBQU1BBQ0VfSU5GTy4gICovCi1AQCAtNDU1LDYgKzU4NywxMzIgQEAg c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYQotICAgcmV0dXJuIHJldHZh bDsKLSB9Ci0gCi0rLyogVGhlIG9ubHkgdmFsaWQgInNldCBhdXRvLWxvYWQiIGFyZ3VtZW50IGlz IG9mZnwwfG5vfGRpc2FibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9j bWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqbGlzdDsKLSsgIHNpemVfdCBsZW5ndGg7Ci0rCi0rICAvKiBTZWUgcGFyc2VfYmluYXJ5 X29wZXJhdGlvbiBpbiB1c2UgYnkgdGhlIHN1Yi1jb21tYW5kcy4gICovCi0rCi0rICBsZW5ndGgg PSBhcmdzID8gc3RybGVuIChhcmdzKSA6IDA7Ci0rCi0rICB3aGlsZSAobGVuZ3RoID4gMCAmJiAo YXJnc1tsZW5ndGggLSAxXSA9PSAnICcgfHwgYXJnc1tsZW5ndGggLSAxXSA9PSAnXHQnKSkKLSsg ICAgbGVuZ3RoLS07Ci0rCi0rICBpZiAobGVuZ3RoID09IDAgfHwgKHN0cm5jbXAgKGFyZ3MsICJv ZmYiLCBsZW5ndGgpICE9IDAKLSsJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICIwIiwgbGVuZ3Ro KSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAibm8iLCBsZW5ndGgpICE9IDAKLSsJ CSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICJkaXNhYmxlIiwgbGVuZ3RoKSAhPSAwKSkKLSsgICAg ZXJyb3IgKF8oIlZhbGlkIGlzIG9ubHkgZ2xvYmFsICdzZXQgYXV0by1sb2FkIG5vJzsgIgotKwkg ICAgICJvdGhlcndpc2UgY2hlY2sgdGhlIGF1dG8tbG9hZCBzdWItY29tbWFuZHMuIikpOwotKwot KyAgZm9yIChsaXN0ID0gKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCk7IGxpc3QgIT0gTlVM TDsgbGlzdCA9IGxpc3QtPm5leHQpCi0rICAgIGlmIChsaXN0LT52YXJfdHlwZSA9PSB2YXJfYm9v bGVhbikKLSsgICAgICB7Ci0rCWdkYl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0gc2V0X2NtZCk7Ci0r CWRvX3NldHNob3dfY29tbWFuZCAoYXJncywgZnJvbV90dHksIGxpc3QpOwotKyAgICAgIH0KLSt9 Ci0rCi0rLyogSW5pdGlhbGl6ZSAic2V0IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQg cmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9h ZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpyZXR2YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0rICAgIGFkZF9wcmVm aXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNldF9hdXRvX2xvYWRfY21k LCBfKCJcCi0rQXV0by1sb2FkaW5nIHNwZWNpZmljIHNldHRpbmdzLlxuXAotK0NvbmZpZ3VyZSB2 YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhc1xuXAotK2F1dG9tYXRp YyBsb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLiIpLAotKwkJICAgICZyZXR2YWwsICJzZXQgYXV0 by1sb2FkICIsCi0rCQkgICAgMS8qYWxsb3ctdW5rbm93biovLCAmc2V0bGlzdCk7Ci0rCi0rICBy ZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAic2hvdyBhdXRvLWxvYWQiIGRpc3Bs YXlzIHN1bW1hcnkgb2YgYWxsIHRoZSBjdXJyZW50Ci0rICAgInNob3cgYXV0by1sb2FkICIgc2V0 dGluZ3MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfY21kIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgY21kX3Nob3dfbGlzdCAoKmF1dG9fbG9hZF9zaG93 X2NtZGxpc3RfZ2V0ICgpLCBmcm9tX3R0eSwgIiIpOwotK30KLSsKLSsvKiBJbml0aWFsaXplICJz aG93IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2 b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOwotKwot KyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIs IGNsYXNzX21haW50ZW5hbmNlLCBzaG93X2F1dG9fbG9hZF9jbWQsIF8oIlwKLStTaG93IGF1dG8t bG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKLStTaG93IGNvbmZpZ3VyYXRpb24gb2YgdmFy aW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKLSthdXRvbWF0aWMg bG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0dmFsLCAic2hvdyBhdXRv LWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZzaG93bGlzdCk7Ci0rCi0rICBy ZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAiaW5mbyBhdXRvLWxvYWQiIGRpc3Bs YXlzIHdoZXRoZXIgdGhlIHZhcmlvdXMgYXV0by1sb2FkIGZpbGVzIGhhdmUKLSsgICBiZWVuIGxv YWRlZC4gIFRoaXMgaXMgcmVpbXBsZW1lbnRhdGlvbiBvZiBjbWRfc2hvd19saXN0IHdoaWNoIGlu c2VydHMKLSsgICBuZXdsaW5lcyBhdCBwcm9wZXIgcGxhY2VzLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2luZm9fYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0OwotKyAgc3RydWN0IGNsZWFudXAgKmluZm9s aXN0X2NoYWluOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKwot KyAgaW5mb2xpc3RfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAo dWlvdXQsICJpbmZvbGlzdCIpOwotKwotKyAgZm9yIChsaXN0ID0gKmF1dG9fbG9hZF9pbmZvX2Nt ZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQotKyAgICB7Ci0r ICAgICAgc3RydWN0IGNsZWFudXAgKm9wdGlvbl9jaGFpbgotKwk9IG1ha2VfY2xlYW51cF91aV9v dXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgIm9wdGlvbiIpOwotKwotKyAgICAgIGdkYl9hc3Nl cnQgKCFsaXN0LT5wcmVmaXhsaXN0KTsKLSsgICAgICBnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09 IG5vdF9zZXRfY21kKTsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgIm5h bWUiLCBsaXN0LT5uYW1lKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICI6ICAiKTsKLSsg ICAgICBjbWRfZnVuYyAobGlzdCwgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sLCBm cm9tX3R0eSk7Ci0rCi0rICAgICAgLyogQ2xvc2UgdGhlIHR1cGxlLiAgKi8KLSsgICAgICBkb19j bGVhbnVwcyAob3B0aW9uX2NoYWluKTsKLSsgICAgfQotKwotKyAgLyogQ2xvc2UgdGhlIHR1cGxl LiAgKi8KLSsgIGRvX2NsZWFudXBzIChpbmZvbGlzdF9jaGFpbik7Ci0rfQotKwotKy8qIEluaXRp YWxpemUgImluZm8gYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAq LwotKwotK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCi0rYXV0b19sb2FkX2luZm9fY21kbGlz dF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2 YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0rICAgIGFkZF9wcmVmaXhfY21kICgiYXV0 by1sb2FkIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfY21kLCBfKCJcCi0rUHJpbnQgY3Vy cmVudCBzdGF0dXMgb2YgYXV0by1sb2FkZWQgZmlsZXMuXG5cCi0rUHJpbnQgd2hldGhlciB2YXJp b3VzIGZpbGVzIGxpa2UgUHl0aG9uIHNjcmlwdHMgb3IgLmdkYmluaXQgZmlsZXMgaGF2ZSBiZWVu XG5cCi0rZm91bmQgYW5kL29yIGxvYWRlZC4iKSwKLSsJCSAgICAmcmV0dmFsLCAiaW5mbyBhdXRv LWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZpbmZvbGlzdCk7Ci0rCi0rICBy ZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQp OwotIAotIHZvaWQKLUBAIC00NjUsOCArNzIzLDM4IEBAIF9pbml0aWFsaXplX2F1dG9fbG9hZCAo dm9pZCkKLSAKLSAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19v YmpmaWxlKTsKLSAKLS0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotLQkgICAgaW5m b19hdXRvX2xvYWRfc2NyaXB0cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRp Y2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMg W1JFR0VYUF0iKSk7Ci0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImdkYi1zY3JpcHRzIiwg Y2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBfKCJcCi0rRW5h YmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgc2NyaXB0cy4iKSwgXygiXAotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIGVuYWJsZWQuIiksCi0rCQkJICAgXygi XAotK0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgYXJlIGxvYWRlZCB3 aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJh cnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1 c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfZ2RiX3Njcmlw dHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xv YWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgiZ2RiLXNjcmlwdHMiLCBj bGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKLSsJICAgXygiUHJpbnQgdGhl IGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLlxuXAot K1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbUkVHRVhQXSIpLAotKwkgICBhdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoImxvY2FsLWdkYmluaXQiLCBjbGFzc19zdXBwb3J0LAotKwkJCSAgICZhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCwgXygiXAotK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiAuZ2Ri aW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkuIiksIF8oIlwKLStTaG93IHdoZXRoZXIg YXV0by1sb2FkaW5nIC5nZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50IGRpcmVjdG9yeSBpcyBlbmFi bGVkLiIpLAotKwkJCSAgIF8oIlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzIGFyZSBsb2FkZWQgd2hlbiBkZWJ1Z2dlciBzdGFydHNcblwKLStmcm9tIC5nZGJpbml0 IGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkuICBTdWNoIGZpbGVzIGFyZSBkZXByZWNhdGVkLFxu XAotK3VzZSBhIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggaW5mZXJpb3IgZXhlY3V0YWJsZSBmaWxl IGluc3RlYWQuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9y IHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAotKwkJCSAg IGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGFkZF9jbWQgKCJsb2NhbC1n ZGJpbml0IiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwKLSsJICAg XygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVu IGxvYWRlZC5cblwKLStVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotKwkg ICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0gfQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1MTQzNzUxNyAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTgg MDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCi1AQCAtMjIsMTUgKzIyLDM2IEBACi0gCi0gc3RydWN0 IHByb2dyYW1fc3BhY2U7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwot K3N0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UKLSt7Ci0rICBjb25zdCBjaGFyICpzdWZmaXg7Ci0rCi0r ICB2b2lkICgqc291cmNlX3NjcmlwdF9mb3Jfb2JqZmlsZSkgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSt9Owot KwotK2V4dGVybiBpbnQgZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStleHRlcm4gaW50IGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0OwotK2V4dGVybiBjaGFyICphdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9w YXRobmFtZTsKLStleHRlcm4gaW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZDsKLSAK LSBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0gICBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsK LSBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvLAotLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq ZnVsbF9wYXRoKTsKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxf cGF0aCwKLSsJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsK LSBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotLQkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotKwkJCQkgICAgICBjb25z dCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rZXh0ZXJuIHZvaWQgbG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSBleHRl cm4gaW50Ci0gICBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKTsKLStleHRlcm4gY2hhciBhdXRvX2xvYWRfaW5m b19zY3JpcHRzX3BhdHRlcm5fbmxbXTsKLStleHRlcm4gdm9pZCBhdXRvX2xvYWRfaW5mb19zY3Jp cHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJCSAgICBjb25zdCBzdHJ1Y3Qg c2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rCi0rZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICoqYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAodm9pZCk7Ci0rZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOwot K2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0ICh2b2lkKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wMS0wNCAwOTox NzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10 aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAotQEAgLTQwLDgg KzQwLDEwIEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImxpbnV4LW5hdC5o IgotICNpbmNsdWRlICJsaW51eC1wcm9jZnMuaCIKLSsjaW5jbHVkZSAiYXV0by1sb2FkLmgiCi0g Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotIAotICNpZmRlZiBI QVZFX0dOVV9MSUJDX1ZFUlNJT05fSAotICNpbmNsdWRlIDxnbnUvbGliYy12ZXJzaW9uLmg+Ci1A QCAtNzUsNiArNzcsMjEgQEAKLSAKLSBzdGF0aWMgY2hhciAqbGlidGhyZWFkX2RiX3NlYXJjaF9w YXRoOwotIAotKy8qIFNldCB0byBub24temVybyBpZiB0aHJlYWRfZGIgYXV0by1sb2FkaW5nIGlz IGVuYWJsZWQKLSsgICBieSB0aGUgInNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBjb21tYW5k LiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9hZF90aHJlYWRfZGIgPSAxOwotKwotKy8qICJzaG93 IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3RocmVhZF9kYiBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3RocmVhZF9kYiAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChm aWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiICIK LSsJCQkgICAgImlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSBzdGF0aWMgdm9p ZAotIHNldF9saWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggKGNoYXIgKmlnbm9yZWQsIGludCBmcm9t X3R0eSwKLSAJCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLUBAIC0xMTksNiAr MTM2LDEwIEBAIHN0cnVjdCB0aHJlYWRfZGJfaW5mbwotICAgLyogSGFuZGxlIGZyb20gZGxvcGVu IGZvciBsaWJ0aHJlYWRfZGIuc28uICAqLwotICAgdm9pZCAqaGFuZGxlOwotIAotKyAgLyogQWJz b2x1dGUgcGF0aG5hbWUgZnJvbSBnZGJfcmVhbHBhdGggdG8gZGlzayBmaWxlIHVzZWQgZm9yIGRs b3Blbi1pbmcKLSsgICAgIEhBTkRMRS4gIEl0IG1heSBiZSBOVUxMIGZvciBzeXN0ZW0gbGlicmFy eS4gICovCi0rICBjaGFyICpmaWxlbmFtZTsKLSsKLSAgIC8qIFN0cnVjdHVyZSB0aGF0IGlkZW50 aWZpZXMgdGhlIGNoaWxkIHByb2Nlc3MgZm9yIHRoZQotICAgICAgPHByb2Nfc2VydmljZS5oPiBp bnRlcmZhY2UuICAqLwotICAgc3RydWN0IHBzX3Byb2NoYW5kbGUgcHJvY19oYW5kbGU7Ci1AQCAt MjQ4LDYgKzI2OSw4IEBAIGRlbGV0ZV90aHJlYWRfZGJfaW5mbyAoaW50IHBpZCkKLSAgIGlmIChp bmZvLT5oYW5kbGUgIT0gTlVMTCkKLSAgICAgZGxjbG9zZSAoaW5mby0+aGFuZGxlKTsKLSAKLSsg IHhmcmVlIChpbmZvLT5maWxlbmFtZSk7Ci0rCi0gICBpZiAoaW5mb19wcmV2KQotICAgICBpbmZv X3ByZXYtPm5leHQgPSBpbmZvLT5uZXh0OwotICAgZWxzZQotQEAgLTgwNyw2ICs4MzAsMTAgQEAg dHJ5X3RocmVhZF9kYl9sb2FkIChjb25zdCBjaGFyICpsaWJyYXJ5KQotIAotICAgaW5mbyA9IGFk ZF90aHJlYWRfZGJfaW5mbyAoaGFuZGxlKTsKLSAKLSsgIC8qIERvIG5vdCBzYXZlIHN5c3RlbSBs aWJyYXJ5IG5hbWUsIHRoYXQgb25lIGlzIGFsd2F5cyB0cnVzdGVkLiAgKi8KLSsgIGlmIChzdHJj aHIgKGxpYnJhcnksICcvJykgIT0gTlVMTCkKLSsgICAgaW5mby0+ZmlsZW5hbWUgPSBnZGJfcmVh bHBhdGggKGxpYnJhcnkpOwotKwotICAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZF8xIChpbmZvKSkK LSAgICAgcmV0dXJuIDE7Ci0gCi1AQCAtODU2LDYgKzg4Myw5IEBAIHRyeV90aHJlYWRfZGJfbG9h ZF9mcm9tX3BkaXIgKHZvaWQpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iajsKLSAKLSsgIGlm ICghYXV0b19sb2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBBTExfT0JKRklM RVMgKG9iaikKLSAgICAgaWYgKGxpYnB0aHJlYWRfbmFtZV9wIChvYmotPm5hbWUpKQotICAgICAg IHsKLUBAIC04OTUsNiArOTI1LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyIChjb25z dCBjaGFyCi0gICBjaGFyICpwYXRoOwotICAgaW50IHJlc3VsdDsKLSAKLSsgIGlmICghYXV0b19s b2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBwYXRoID0geG1hbGxvYyAoZGly X2xlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxKTsKLSAgIGNsZWFudXAgPSBt YWtlX2NsZWFudXAgKHhmcmVlLCBwYXRoKTsKLSAKLUBAIC0xODAyLDYgKzE4MzUsMTUwIEBAIHRo cmVhZF9kYl9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKLSAgIGJlbmVhdGgtPnRvX3Jl c3VtZSAoYmVuZWF0aCwgcHRpZCwgc3RlcCwgc2lnbm8pOwotIH0KLSAKLSsvKiBxc29ydCBoZWxw ZXIgZnVuY3Rpb24gZm9yIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwgc29ydCB0aGUKLSsg ICB0aHJlYWRfZGJfaW5mbyBwb2ludGVycyBwcmltYXJpbHkgYnkgdGhlaXIgRklMRU5BTUUgYW5k IHNlY29uZGFyaWx5IGJ5IHRoZWlyCi0rICAgUElELCBib3RoIGluIGFzY2VuZGluZyBvcmRlci4g ICovCi0rCi0rc3RhdGljIGludAotK2luZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYl9jb21wYXJl IChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgc3RydWN0IHRocmVhZF9k Yl9pbmZvICphID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiopIGFwOwotKyAgc3RydWN0IHRo cmVhZF9kYl9pbmZvICpiID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiopIGJwOwotKyAgaW50 IHJldHZhbDsKLSsKLSsgIHJldHZhbCA9IHN0cmNtcCAoYS0+ZmlsZW5hbWUsIGItPmZpbGVuYW1l KTsKLSsgIGlmIChyZXR2YWwpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rCi0rICByZXR1cm4gKGEt PnBpZCA+IGItPnBpZCkgLSAoYS0+cGlkIC0gYi0+cGlkKTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50 ICdpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2lu Zm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sK LSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsgIGNvbnN0IGNoYXIg KmNzID0gYXJncyA/IGFyZ3MgOiAiIjsKLSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqaW5mbywg KiphcnJheTsKLSsgIHVuc2lnbmVkIGluZm9fY291bnQsIHVuaXF1ZV9maWxlbmFtZXM7Ci0rICBz aXplX3QgbWF4X2ZpbGVuYW1lX2xlbiwgbWF4X3BpZHNfbGVuLCBwaWRzX2xlbjsKLSsgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwotKyAgY2hhciAqcGlkczsKLSsgIGludCBpOwotKwotKyAgd2hp bGUgKGlzc3BhY2UgKCpjcykpCi0rICAgIGNzKys7Ci0rICBpZiAoKmNzKQotKyAgICBlcnJvciAo XygiJ2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYicgZG9lcyBub3QgYWNjZXB0IGFueSBwYXJh bWV0ZXJzIikpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBmb3IgKGluZm8gPSB0aHJlYWRf ZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAgIGlmIChpbmZvLT5maWxlbmFt ZSAhPSBOVUxMKQotKyAgICAgIGluZm9fY291bnQrKzsKLSsKLSsgIGFycmF5ID0geG1hbGxvYyAo c2l6ZW9mICgqYXJyYXkpICogaW5mb19jb3VudCk7Ci0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgYXJyYXkpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBmb3IgKGluZm8gPSB0 aHJlYWRfZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAgIGlmIChpbmZvLT5m aWxlbmFtZSAhPSBOVUxMKQotKyAgICAgIGFycmF5W2luZm9fY291bnQrK10gPSBpbmZvOwotKwot KyAgLyogU29ydCBBUlJBWSBieSBmaWxlbmFtZXMgYW5kIFBJRHMuICAqLwotKwotKyAgcXNvcnQg KGFycmF5LCBpbmZvX2NvdW50LCBzaXplb2YgKCphcnJheSksCi0rCSBpbmZvX2F1dG9fbG9hZF9s aWJ0aHJlYWRfZGJfY29tcGFyZSk7Ci0rCi0rICAvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiB1 bmlxdWUgZmlsZW5hbWVzIChyb3dzKSBhbmQgdGhlIG1heGltdW0gc3RyaW5nCi0rICAgICBsZW5n dGggb2YgUElEcyBsaXN0IGZvciB0aGUgdW5pcXVlIGZpbGVuYW1lcyAoY29sdW1ucykuICAqLwot KwotKyAgdW5pcXVlX2ZpbGVuYW1lcyA9IDA7Ci0rICBtYXhfZmlsZW5hbWVfbGVuID0gMDsKLSsg IG1heF9waWRzX2xlbiA9IDA7Ci0rICBwaWRzX2xlbiA9IDA7Ci0rICBmb3IgKGkgPSAwOyBpIDwg aW5mb19jb3VudDsgaSsrKQotKyAgICB7Ci0rICAgICAgaW50IHBpZCA9IGFycmF5W2ldLT5waWQ7 Ci0rICAgICAgc2l6ZV90IHRoaXNfcGlkX2xlbjsKLSsKLSsgICAgICBmb3IgKHRoaXNfcGlkX2xl biA9IDA7IHBpZCAhPSAwOyBwaWQgLz0gMTApCi0rCXRoaXNfcGlkX2xlbisrOwotKwotKyAgICAg IGlmIChpID09IDAgfHwgc3RyY21wIChhcnJheVtpIC0gMV0tPmZpbGVuYW1lLCBhcnJheVtpXS0+ ZmlsZW5hbWUpICE9IDApCi0rCXsKLSsJICB1bmlxdWVfZmlsZW5hbWVzKys7Ci0rCSAgbWF4X2Zp bGVuYW1lX2xlbiA9IG1heCAobWF4X2ZpbGVuYW1lX2xlbiwKLSsJCQkJICBzdHJsZW4gKGFycmF5 W2ldLT5maWxlbmFtZSkpOwotKwotKwkgIGlmIChpID4gMCkKLSsJICAgIHsKLSsJICAgICAgcGlk c19sZW4gLT0gc3RybGVuICgiLCAiKTsKLSsJICAgICAgbWF4X3BpZHNfbGVuID0gbWF4IChtYXhf cGlkc19sZW4sIHBpZHNfbGVuKTsKLSsJICAgIH0KLSsJICBwaWRzX2xlbiA9IDA7Ci0rCX0KLSsg ICAgICBwaWRzX2xlbiArPSB0aGlzX3BpZF9sZW4gKyBzdHJsZW4gKCIsICIpOwotKyAgICB9Ci0r ICBpZiAoaSkKLSsgICAgewotKyAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7Ci0rICAg ICAgbWF4X3BpZHNfbGVuID0gbWF4IChtYXhfcGlkc19sZW4sIHBpZHNfbGVuKTsKLSsgICAgfQot KwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJsaWJ0aHJl YWQtZGI6ICAiIHdvdWxkIG5vdCBtYXRjaAotKyAgICAgaXRzIGNvbHVtbnMuICAqLwotKyAgaWYg KGluZm9fY291bnQgPiAwICYmIGFyZ3MgPT0gYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJu X25sKQotKyAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKwotKyAgbWFrZV9jbGVhbnVw X3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCB1bmlxdWVfZmlsZW5hbWVzLAotKwkJ CQkgICAgICAgIkxpbnV4VGhyZWFkRGJUYWJsZSIpOwotKwotKyAgdWlfb3V0X3RhYmxlX2hlYWRl ciAodWlvdXQsIG1heF9maWxlbmFtZV9sZW4sIHVpX2xlZnQsICJmaWxlbmFtZSIsCi0rCQkgICAg ICAgIkZpbGVuYW1lIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgcGlkc19sZW4s IHVpX2xlZnQsICJQSURzIiwgIlBpZHMiKTsKLSsgIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7 Ci0rCi0rICBwaWRzID0geG1hbGxvYyAobWF4X3BpZHNfbGVuICsgMSk7Ci0rICBtYWtlX2NsZWFu dXAgKHhmcmVlLCBwaWRzKTsKLSsKLSsgIC8qIE5vdGUgSSBpcyBpbmNyZW1lbnRlZCBpbnNpZGUg dGhlIGN5Y2xlLCBub3QgYXQgaXRzIGVuZC4gICovCi0rICBmb3IgKGkgPSAwOyBpIDwgaW5mb19j b3VudDspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW4gPSBtYWtlX2NsZWFu dXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKyAgICAgIGNoYXIgKnBp ZHNfZW5kOwotKwotKyAgICAgIGluZm8gPSBhcnJheVtpXTsKLSsgICAgICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgImZpbGVuYW1lIiwgaW5mby0+ZmlsZW5hbWUpOwotKyAgICAgIHBpZHNf ZW5kID0gcGlkczsKLSsKLSsgICAgICB3aGlsZSAoaSA8IGluZm9fY291bnQgJiYgc3RyY21wIChp bmZvLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSA9PSAwKQotKwl7Ci0rCSAgaWYgKHBp ZHNfZW5kICE9IHBpZHMpCi0rCSAgICB7Ci0rCSAgICAgICpwaWRzX2VuZCsrID0gJywnOwotKwkg ICAgICAqcGlkc19lbmQrKyA9ICcgJzsKLSsJICAgIH0KLSsJICBwaWRzX2VuZCArPSB4c25wcmlu dGYgKHBpZHNfZW5kLCAmcGlkc1ttYXhfcGlkc19sZW4gKyAxXSAtIHBpZHNfZW5kLAotKwkJCQkg IiV1IiwgYXJyYXlbaV0tPnBpZCk7Ci0rCSAgZ2RiX2Fzc2VydCAocGlkc19lbmQgPCAmcGlkc1tt YXhfcGlkc19sZW4gKyAxXSk7Ci0rCi0rCSAgaSsrOwotKwl9Ci0rICAgICAgKnBpZHNfZW5kID0g J1wwJzsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInBpZHMiLCBwaWRz KTsKLSsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAgICAgIGRvX2NsZWFu dXBzIChjaGFpbik7Ci0rICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsKLSsg IGlmIChpbmZvX2NvdW50ID09IDApCi0rICAgIHVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgXygi Tm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLlxuIikpOwotK30KLSsKLSBzdGF0aWMgdm9pZAot IGluaXRfdGhyZWFkX2RiX29wcyAodm9pZCkKLSB7Ci1AQCAtMTg2Myw2ICsyMDQwLDIzIEBAIFdo ZW4gbm9uLXplcm8sIGxpYnRocmVhZC1kYiBkZWJ1Z2dpbmcgaXMKLSAJCQkgICAgc2hvd19saWJ0 aHJlYWRfZGJfZGVidWcsCi0gCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsK LSAKLSsgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibGlidGhyZWFkLWRiIiwgY2xhc3Nfc3Vw cG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX3RocmVhZF9kYiwgXygiXAotK0VuYWJsZSBvciBkaXNh YmxlIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIuIiksIF8o IlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVh ZF9kYiBpcyBlbmFibGVkLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgbGlidGhyZWFkX2RiIHdpbGwg YmUgc2VhcmNoZWQgaW4gJ3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgnXG5cCi0rbG9jYXRp b25zIHRvIGxvYWQgbGlidGhyZWFkX2RiIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5mZXJpb3IuXG5c Ci0rU3RhbmRhcmQgc3lzdGVtIGxpYnRocmVhZF9kYiBzdGlsbCBnZXRzIGxvYWRlZCBldmVuIHdp dGggdGhpcyBvcHRpb24gb2ZmLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGlj YXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0 b19sb2FkX3RocmVhZF9kYiwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAot KwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGFkZF9jbWQgKCJs aWJ0aHJlYWQtZGIiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsCi0r CSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGxvYWRlZCBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJl YWRfZGIuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIpLAotKwkgICBh dXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICAvKiBBZGQgb3Vyc2VsdmVzIHRv IG9iamZpbGUgZXZlbnQgY2hhaW4uICAqLwotICAgb2JzZXJ2ZXJfYXR0YWNoX25ld19vYmpmaWxl ICh0aHJlYWRfZGJfbmV3X29iamZpbGUpOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv bWFpbi5jCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU3NDM3NTAzICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU3MDc5Nzc3ICswMjAw Ci1AQCAtOTQ1LDggKzk0NSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAvKiBT a2lwIGF1dG8tbG9hZGluZyBzZWN0aW9uLXNwZWNpZmllZCBzY3JpcHRzIHVudGlsIHdlJ3ZlIHNv dXJjZWQKLSAgICAgIGxvY2FsX2dkYmluaXQgKHdoaWNoIGlzIG9mdGVuIHVzZWQgdG8gYXVnbWVu dCB0aGUgc291cmNlIHNlYXJjaAotICAgICAgcGF0aCkuICAqLwotLSAgc2F2ZV9hdXRvX2xvYWQg PSBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDA7 Ci0rICBzYXZlX2F1dG9fbG9hZCA9IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rICBnbG9iYWxfYXV0b19s b2FkID0gMDsKLSAKLSAgIGlmIChleGVjYXJnICE9IE5VTEwKLSAgICAgICAmJiBzeW1hcmcgIT0g TlVMTAotQEAgLTEwMjIsMTQgKzEwMjIsMjQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK LSAKLSAgIC8qIFJlYWQgdGhlIC5nZGJpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5 LCAqaWYqIGl0IGlzbid0Ci0gICAgICB0aGUgc2FtZSBhcyB0aGUgJEhPTUUvLmdkYmluaXQgZmls ZSAoaXQgc2hvdWxkIGV4aXN0LCBhbHNvKS4gICovCi0tICBpZiAobG9jYWxfZ2RiaW5pdCAmJiAh aW5oaWJpdF9nZGJpbml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Njcmlw dCwgbG9jYWxfZ2RiaW5pdCwgMCwgUkVUVVJOX01BU0tfQUxMKTsKLSsgIGlmIChsb2NhbF9nZGJp bml0KQotKyAgICB7Ci0rICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBn ZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotKwotKyAgICAgIGlmICghaW5oaWJpdF9nZGJp bml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQotKwl7Ci0rCSAgYXV0b19sb2FkX2xvY2Fs X2dkYmluaXRfbG9hZGVkID0gMTsKLSsKLSsJICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNl X3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwKLSsJCQkJUkVUVVJOX01BU0tfQUxMKTsKLSsJfQot KyAgICB9Ci0gCi0gICAvKiBOb3cgdGhhdCBhbGwgLmdkYmluaXQncyBoYXZlIGJlZW4gcmVhZCBh bmQgYWxsIC1kIG9wdGlvbnMgaGF2ZSBiZWVuCi0gICAgICBwcm9jZXNzZWQsIHdlIGNhbiByZWFk IGFueSBzY3JpcHRzIG1lbnRpb25lZCBpbiBTWU1BUkcuCi0gICAgICBXZSB3YWl0IHVudGlsIG5v dyBiZWNhdXNlIGl0IGlzIGNvbW1vbiB0byBhZGQgdG8gdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAg IHBhdGggaW4gbG9jYWxfZ2RiaW5pdC4gICovCi0tICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0g c2F2ZV9hdXRvX2xvYWQ7Ci0rICBnbG9iYWxfYXV0b19sb2FkID0gc2F2ZV9hdXRvX2xvYWQ7Ci0g ICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICAgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpm aWxlIChvYmpmaWxlKTsKLSAKLUBAIC0xMTk2LDcgKzEyMDYsNyBAQCBBdCBzdGFydHVwLCBHREIg cmVhZHMgdGhlIGZvbGxvd2luZyBpbml0Ci0gIiksIGhvbWVfZ2RiaW5pdCk7Ci0gICBpZiAobG9j YWxfZ2RiaW5pdCkKLSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChzdHJlYW0sIF8oIlwKLS0gICAq IGxvY2FsIGluaXQgZmlsZTogLi8lc1xuXAotKyAgICogbG9jYWwgaW5pdCBmaWxlIChzZWUgYWxz byAnc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Jyk6IC4vJXNcblwKLSAiKSwgbG9jYWxfZ2Ri aW5pdCk7Ci0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcblwKLSBGb3IgbW9yZSBpbmZvcm1hdGlv biwgdHlwZSBcImhlbHBcIiBmcm9tIHdpdGhpbiBHREIsIG9yIGNvbnN1bHQgdGhlXG5cCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0x OCAwMDo0NDoyNi45Mjg0Mzc1NzcgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKLUBAIC0x MDM0LDYgKzEwMzQsNyBAQCBZb3UgY2FuIHJ1biBAdmFsdWV7R0RCTn0gaW4gdmFyaW91cyBhbHRl Ci0gYmF0Y2ggbW9kZSBvciBxdWlldCBtb2RlLgotIAotIEB0YWJsZSBAY29kZQotK0BhbmNob3J7 LW54fQotIEBpdGVtIC1ueAotIEBpdGVteCAtbgotIEBjaW5kZXggQGNvZGV7LS1ueH0KLUBAIC0x MjY1LDYgKzEyNjYsNyBAQCBIZXJlJ3MgdGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgQHZhbHVle0dE Ci0gU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaWZpZWQgYnkgdGhlIGNv bW1hbmQgbGluZQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotK0Bh bmNob3J7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0KLSBAaXRlbQotIEV4ZWN1dGVzIGNvbW1h bmRzIGFuZCBjb21tYW5kIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgQHNhbXB7LWlleH0gYW5kCi0g QHNhbXB7LWl4fSBvcHRpb25zIGluIHRoZWlyIHNwZWNpZmllZCBvcmRlci4gIFVzdWFsbHkgeW91 IHNob3VsZCB1c2UgdGhlCi1AQCAtMTI3OSw2ICsxMjgxLDcgQEAgdXNlZCB3aGVuIGJ1aWxkaW5n IEB2YWx1ZXtHREJOfTsgQHB4cmVmewotICAsU3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBhbmQg c2V0dGluZ3N9KSBhbmQgZXhlY3V0ZXMgYWxsIHRoZSBjb21tYW5kcyBpbgotIHRoYXQgZmlsZS4K LSAKLStAYW5jaG9ye0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0KLSBAaXRlbQotIFJlYWRzIHRo ZSBpbml0IGZpbGUgKGlmIGFueSkgaW4geW91ciBob21lIGRpcmVjdG9yeUBmb290bm90ZXtPbgot IERPUy9XaW5kb3dzIHN5c3RlbXMsIHRoZSBob21lIGRpcmVjdG9yeSBpcyB0aGUgb25lIHBvaW50 ZWQgdG8gYnkgdGhlCi1AQCAtMTI4OCw5ICsxMjkxLDEyIEBAIHRoYXQgZmlsZS4KLSBAaXRlbQot IFByb2Nlc3NlcyBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQgb3BlcmFuZHMuCi0gCi0rQGFuY2hv cntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVwfQotIEBp dGVtCi0gUmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjb21tYW5kcyBmcm9tIGluaXQgZmlsZSAoaWYg YW55KSBpbiB0aGUgY3VycmVudAotLXdvcmtpbmcgZGlyZWN0b3J5LiAgVGhpcyBpcyBvbmx5IGRv bmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0rd29ya2luZyBkaXJlY3RvcnkgYXMgbG9u ZyBhcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9IGlzIHNldCB0bwotK0BzYW1w e29ufSAoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9KS4KLStUaGlz IGlzIG9ubHkgZG9uZSBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKLSBkaWZmZXJlbnQgZnJv bSB5b3VyIGhvbWUgZGlyZWN0b3J5LiAgVGh1cywgeW91IGNhbiBoYXZlIG1vcmUgdGhhbiBvbmUK LSBpbml0IGZpbGUsIG9uZSBnZW5lcmljIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksIGFuZCBhbm90 aGVyLCBzcGVjaWZpYwotIHRvIHRoZSBwcm9ncmFtIHlvdSBhcmUgZGVidWdnaW5nLCBpbiB0aGUg ZGlyZWN0b3J5IHdoZXJlIHlvdSBpbnZva2UKLUBAIC0xMzA2LDcgKzEzMTIsNyBAQCBJZiB5b3Ug d2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBzb21ldGhpbmcg bGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAtaWV4ICJzZXQg YXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLSskIGdkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAK LSBPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGlu ZyBpcyB0aGVuIHR1cm5lZAotQEAgLTI4OTEsNiArMjg5Nyw3IEBAIHByb2dyYW1zIHdpdGggbXVs dGlwbGUgdGhyZWFkcy4KLSBAeHJlZntTZXQgV2F0Y2hwb2ludHMsLFNldHRpbmcgV2F0Y2hwb2lu dHN9LCBmb3IgaW5mb3JtYXRpb24gYWJvdXQKLSB3YXRjaHBvaW50cyBpbiBwcm9ncmFtcyB3aXRo IG11bHRpcGxlIHRocmVhZHMuCi0gCi0rQGFuY2hvcntzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1w YXRofQotIEB0YWJsZSBAY29kZQotIEBraW5kZXggc2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0 aAotIEBjaW5kZXggc2VhcmNoIHBhdGggZm9yIEBjb2Rle2xpYnRocmVhZF9kYn0KLUBAIC0yOTA1 LDExICsyOTEyLDE1IEBAIG1hY3JvLgotIE9uIEBzY3tnbnV9L0xpbnV4IGFuZCBTb2xhcmlzIHN5 c3RlbXMsIEB2YWx1ZXtHREJOfSB1c2VzIGEgYGBoZWxwZXInJwotIEBjb2Rle2xpYnRocmVhZF9k Yn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhyZWFkcyBpbiB0aGUKLSBp bmZlcmlvciBwcm9jZXNzLiAgQHZhbHVle0dEQk59IHdpbGwgdXNlIEBzYW1we2xpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aH0KLS10byBmaW5kIEBjb2Rle2xpYnRocmVhZF9kYn0uCi0rdG8gZmluZCBA Y29kZXtsaWJ0aHJlYWRfZGJ9LiAgQHZhbHVle0dEQk59IGFsc28gY29uc3VsdHMgZmlyc3QgaWYg aW5mZXJpb3IKLStzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkgbG9hZGluZyBpcyBl bmFibGVkCi0rYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IChAcHhyZWZ7bGli dGhyZWFkX2RiLnNvLjEgZmlsZX0pLgotIAotIEEgc3BlY2lhbCBlbnRyeSBAc2FtcHskc2Rpcn0g Zm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLSByZWZlcnMgdG8gdGhlIGRlZmF1 bHQgc3lzdGVtIGRpcmVjdG9yaWVzIHRoYXQgYXJlCi0tbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxv YWRpbmcgc2hhcmVkIGxpYnJhcmllcy4KLStub3JtYWxseSBzZWFyY2hlZCBmb3IgbG9hZGluZyBz aGFyZWQgbGlicmFyaWVzLiAgVGhlIEBzYW1weyRzZGlyfSBlbnRyeQotK2lzIHRoZSBvbmx5IGtp bmQgbm90IG5lZWRpbmcgdG8gYmUgZW5hYmxlZCBieSBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRo cmVhZC1kYn0KLSsoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4KLSAKLSBBIHNwZWNp YWwgZW50cnkgQHNhbXB7JHBkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9 Ci0gcmVmZXJzIHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBAY29kZXtsaWJwdGhyZWFkfQot QEAgLTIwMzIwLDYgKzIwMzMxLDcgQEAgZGVzY3JpYmVkIGhlcmUuCi0gKiBTY3JlZW4gU2l6ZTo6 ICAgICAgICAgICAgICAgICBTY3JlZW4gc2l6ZQotICogTnVtYmVyczo6ICAgICAgICAgICAgICAg ICAgICAgTnVtYmVycwotICogQUJJOjogICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJp bmcgdGhlIGN1cnJlbnQgQUJJCi0rKiBBdXRvLWxvYWRpbmc6OiAgICAgICAgICAgICAgICBBdXRv bWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRlZCBmaWxlcwotICogTWVzc2FnZXMvV2FybmluZ3M6 OiAgICAgICAgICAgT3B0aW9uYWwgd2FybmluZ3MgYW5kIG1lc3NhZ2VzCi0gKiBEZWJ1Z2dpbmcg T3V0cHV0OjogICAgICAgICAgICBPcHRpb25hbCBtZXNzYWdlcyBhYm91dCBpbnRlcm5hbCBoYXBw ZW5pbmdzCi0gKiBPdGhlciBNaXNjIFNldHRpbmdzOjogICAgICAgICBPdGhlciBNaXNjZWxsYW5l b3VzIFNldHRpbmdzCi1AQCAtMjA3NDUsNiArMjA3NTcsMjI3IEBAIFdpdGggbm8gYXJndW1lbnQs IHNob3cgdGhlIGxpc3Qgb2Ygc3VwcG8KLSBTZXQgdGhlIGN1cnJlbnQgQ0B0eysrfSBBQkkgdG8g QHZhcnthYml9LCBvciByZXR1cm4gdG8gYXV0b21hdGljIGRldGVjdGlvbi4KLSBAZW5kIHRhYmxl Ci0gCi0rQG5vZGUgQXV0by1sb2FkaW5nCi0rQHNlY3Rpb24gQXV0b21hdGljYWxseSBsb2FkaW5n IGFzc29jaWF0ZWQgZmlsZXMKLStAY2luZGV4IGF1dG8tbG9hZGluZwotKwotK0B2YWx1ZXtHREJO fSBzb21ldGltZXMgcmVhZHMgZmlsZXMgd2l0aCBjb21tYW5kcyBhbmQgc2V0dGluZ3MgYXV0b21h dGljYWxseSwKLSt3aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgdG9sZCBzbyBieSB0aGUgdXNlci4g IFdlIGNhbGwgdGhpcyBmZWF0dXJlCi0rQGRmbnthdXRvLWxvYWRpbmd9LiAgV2hpbGUgYXV0by1s b2FkaW5nIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljYWxseSBhZGFwdGluZwotK0B2YWx1ZXtHREJO fSB0byB0aGUgbmVlZHMgb2YgeW91ciBwcm9qZWN0LCBpdCBjYW4gc29tZXRpbWVzIHByb2R1Y2Ug dW5leHBlY3RlZAotK3Jlc3VsdHMgb3IgaW50cm9kdWNlIHNlY3VyaXR5IHJpc2tzIChlLmcuLCBp ZiB0aGUgZmlsZSBjb21lcyBmcm9tIHVudHJ1c3RlZAotK3NvdXJjZXMpLgotKwotK0ZvciB0aGVz ZSByZWFzb25zLCBAdmFsdWV7R0RCTn0gaW5jbHVkZXMgY29tbWFuZHMgYW5kIG9wdGlvbnMgdG8g bGV0IHlvdQotK2NvbnRyb2wgd2hlbiB0byBhdXRvLWxvYWQgZmlsZXMgYW5kIHdoaWNoIGZpbGVz IHNob3VsZCBiZSBhdXRvLWxvYWRlZC4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBh dXRvLWxvYWQgb2ZmfQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBvZmYKLStAaXRlbSBzZXQgYXV0 by1sb2FkIG9mZgotK0dsb2JhbGx5IGRpc2FibGUgbG9hZGluZyBvZiBhbGwgYXV0by1sb2FkZWQg ZmlsZXMuCi0rWW91IG1heSB3YW50IHRvIHVzZSB0aGlzIGNvbW1hbmQgd2l0aCB0aGUgQHNhbXB7 LWlleH0gb3B0aW9uCi0rKEBweHJlZntPcHRpb24gLWluaXQtZXZhbC1jb21tYW5kfSkgc3VjaCBh czoKLStAc21hbGxleGFtcGxlCi0rJCBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG9mZiIg dW50cnVzdGVkLWV4ZWN1dGFibGUgY29yZWZpbGV9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStC ZSBhd2FyZSB0aGF0IHN5c3RlbSBpbml0IGZpbGUgKEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1 cmF0aW9ufSkKLSthbmQgaW5pdCBmaWxlcyBmcm9tIHlvdXIgaG9tZSBkaXJlY3RvcnkgKEBweHJl ZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KQotK3N0aWxsIGdldCByZWFkIChhcyB0aGV5IGNv bWUgZnJvbSBnZW5lcmFsbHkgdHJ1c3RlZCBkaXJlY3RvcmllcykuCi0rVG8gcHJldmVudCBAdmFs dWV7R0RCTn0gZnJvbSBhdXRvLWxvYWRpbmcgZXZlbiB0aG9zZSBpbml0IGZpbGVzLCB1c2UgdGhl Ci0rQG9wdGlvbnstbnh9IG9wdGlvbiAoQHB4cmVme01vZGUgT3B0aW9uc30pLCBpbiBhZGRpdGlv biB0bwotK0Bjb2Rle3NldCBhdXRvLWxvYWQgbm99LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxv YWR9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZAotK0BpdGVtIHNob3cgYXV0by1sb2FkCi0rU2hv dyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBlYWNoIHNwZWNpZmljIEBzYW1we2F1dG8tbG9hZH0g ZmlsZShzKSBpcyBlbmFibGVkCi0rb3IgZGlzYWJsZWQuCi0rCi0rQHNtYWxsZXhhbXBsZQotKyhn ZGIpIHNob3cgYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIG9uLgotK2xpYnRocmVhZC1kYjogIEF1 dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCi0rbG9j YWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50 IGRpcmVjdG9yeSBpcyBvbi4KLStweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRo b24gc2NyaXB0cyBpcyBvbi4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0BhbmNob3J7aW5mbyBh dXRvLWxvYWR9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZAotK0BpdGVtIGluZm8gYXV0by1sb2Fk Ci0rUHJpbnQgd2hldGhlciBlYWNoIHNwZWNpZmljIEBzYW1we2F1dG8tbG9hZH0gZmlsZShzKSBo YXZlIGJlZW4gYXV0by1sb2FkZWQgb3IKLStub3QuCi0rCi0rQHNtYWxsZXhhbXBsZQotKyhnZGIp IGluZm8gYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6Ci0rTG9hZGVkICBTY3JpcHQKLStZZXMgICAg IC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0rbGlidGhyZWFkLWRiOiAgTm8gYXV0by1sb2Fk ZWQgbGlidGhyZWFkLWRiLgotK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIv aG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgotK3B5dGhvbi1zY3JpcHRz OgotK0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5Ci0r QGVuZCBzbWFsbGV4YW1wbGUKLStAZW5kIHRhYmxlCi0rCi0rVGhlc2UgYXJlIHZhcmlvdXMga2lu ZHMgb2YgZmlsZXMgQHZhbHVle0dEQk59IGNhbiBhdXRvbWF0aWNhbGx5IGxvYWQ6Ci0rCi0rQGl0 ZW1pemUgQGJ1bGxldAotK0BpdGVtCi0rQHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0sIGNvbnRy b2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAaXRlbQotK0B4 cmVme29iamZpbGUtZ2RiLmdkYiBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHN9LgotK0BpdGVtCi0rQHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2Vj dGlvbn0sCi0rY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9 LgotK0BpdGVtCi0rQHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeX0sCi0r Y29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rQGl0ZW0K LStAeHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVme3NldCBh dXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAZW5kIGl0ZW1pemUKLSsKLStUaGVzZSBhcmUgQHZh bHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMgZm9yIHRoZSBhdXRvLWxvYWRpbmc6Ci0rCi0rQG11 bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuNSAuNQotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxv YWQgb2ZmfS4KLStAdGFiIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5LgotK0BpdGVtIEB4 cmVme3Nob3cgYXV0by1sb2FkfS4KLStAdGFiIFNob3cgc2V0dGluZyBvZiBhbGwga2luZHMgb2Yg ZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWR9LgotK0B0YWIgU2hvdyBzdGF0ZSBv ZiBhbGwga2luZHMgb2YgZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBnZGItc2Ny aXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgot K0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc2V0 dGluZyBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgotK0BpdGVtIEB4cmVme2luZm8g YXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUgb2YgQHZhbHVle0dEQk59 IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzfS4KLStAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStA aXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRhYiBTaG93IHNl dHRpbmcgb2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme2luZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUgb2YgQHZhbHVle0dE Qk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdH0uCi0rQHRhYiBDb250cm9sIGZvciBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0 b3J5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0YWIg U2hvdyBzZXR0aW5nIG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rQGl0 ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rQHRhYiBTaG93IHN0YXRl IG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rQGl0ZW0gQHhyZWZ7c2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgQ29udHJvbCBmb3IgdGhyZWFkIGRlYnVn Z2luZyBsaWJyYXJ5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0u Ci0rQHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQHRhYiBTaG93IHN0YXRlIG9m IHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAZW5kIG11bHRpdGFibGUKLSsKLStAbWVudQot KyogSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeTo6IEBzYW1we3NldC9zaG93L2lu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjog ICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQot Kyogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2lu Zm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9Ci0rQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCi0r QGVuZCBtZW51Ci0rCi0rQG5vZGUgSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeQot K0BzdWJzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBpbml0IGZpbGUgaW4gdGhlIGN1cnJl bnQgZGlyZWN0b3J5Ci0rQGNpbmRleCBhdXRvLWxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeQotKwotK0J5IGRlZmF1bHQsIEB2YWx1ZXtHREJOfSByZWFkcyBhbmQgZXhl Y3V0ZXMgdGhlIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLStmcm9tIGluaXQgZmlsZSAo aWYgYW55KSBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKLStzZWUgQHJlZntJbml0 IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVwfS4KLSsKLStAdGFi bGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLStAa2luZGV4 IHNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK0BpdGVtIHNldCBhdXRvLWxvYWQgbG9jYWwt Z2RiaW5pdCBbb258b2ZmXQotK0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2Yg Y2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcwotKyhAcHhyZWZ7U2VxdWVuY2VzfSkgZm91bmQg aW4gaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStAYW5jaG9ye3Nob3cg YXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0Ci0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK1Nob3cgd2hldGhl ciBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQg ZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9yeSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgot KwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLStAa2luZGV4IGluZm8g YXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0Ci0rUHJpbnQgd2hldGhlciBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZyb20gaW5p dCBmaWxlIGluIHRoZQotK2N1cnJlbnQgZGlyZWN0b3J5IGhhdmUgYmVlbiBhdXRvLWxvYWRlZC4K LStAZW5kIHRhYmxlCi0rCi0rQG5vZGUgbGlidGhyZWFkX2RiLnNvLjEgZmlsZQotK0BzdWJzZWN0 aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkKLStAY2lu ZGV4IGF1dG8tbG9hZGluZyBsaWJ0aHJlYWRfZGIuc28uMQotKwotK1RoaXMgZmVhdHVyZSBpcyBj dXJyZW50bHkgcHJlc2VudCBvbmx5IG9uIEBzY3tnbnV9L0xpbnV4IG5hdGl2ZSBob3N0cy4KLSsK LStAdmFsdWV7R0RCTn0gcmVhZHMgaW4gc29tZSBjYXNlcyB0aHJlYWQgZGVidWdnaW5nIGxpYnJh cnkgZnJvbSBwbGFjZXMgc3BlY2lmaWMKLSt0byB0aGUgaW5mZXJpb3IgKEBweHJlZntzZXQgbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRofSkuCi0rCi0rVGhlIHNwZWNpYWwgQHNhbXB7bGlidGhyZWFk LWRiLXNlYXJjaC1wYXRofSBlbnRyeSBAc2FtcHskc2Rpcn0gaXMgcHJvY2Vzc2VkCi0rd2l0aG91 dCBjaGVja2luZyB0aGlzIEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSBzd2l0Y2gg YXMgc3lzdGVtCi0rbGlicmFyaWVzIGhhdmUgdG8gYmUgdHJ1c3RlZCBpbiBnZW5lcmFsLiAgSW4g YWxsIG90aGVyIGNhc2VzIG9mCi0rQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSBlbnRy aWVzIEB2YWx1ZXtHREJOfSBjaGVja3MgZmlyc3QgaWYgQHNhbXB7c2V0Ci0rYXV0by1sb2FkIGxp YnRocmVhZC1kYn0gaXMgZW5hYmxlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gc3VjaCB0aHJlYWQg ZGVidWdnaW5nCi0rbGlicmFyeS4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRv LWxvYWQgbGlidGhyZWFkLWRifQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIK LStAaXRlbSBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBbb258b2ZmXQotK0VuYWJsZSBvciBk aXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVn Z2luZyBsaWJyYXJ5LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQot K0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gc2hvdyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBz cGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkgaXMKLStlbmFibGVkIG9yIGRpc2FibGVk LgotKwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQotK0BraW5kZXggaW5m byBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFk LWRiCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGxvYWRlZCBpbmZlcmlvciBzcGVjaWZpYyB0aHJl YWQgZGVidWdnaW5nIGxpYnJhcmllcyBhbmQKLStmb3IgZWFjaCBzdWNoIGxpYnJhcnkgcHJpbnQg bGlzdCBvZiBpbmZlcmlvciBAdmFye3BpZH1zIHVzaW5nIGl0LgotK0BlbmQgdGFibGUKLSsKLStA bm9kZSBvYmpmaWxlLWdkYi5nZGIgZmlsZQotK0BzdWJzZWN0aW9uIFRoZSBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5nZGJ9IGZpbGUKLStAY2luZGV4IGF1dG8tbG9hZGluZyBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5nZGJ9Ci0rCi0rQHZhbHVle0dEQk59IHRyaWVzIHRvIGxvYWQgYW4gQGZpbGV7 QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlIGNvbnRhaW5pbmcKLStjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIChAcHhyZWZ7U2VxdWVuY2VzfSksIGFzIGxvbmcgYXMgQHNhbXB7c2V0Ci0r YXV0by1sb2FkIGdkYi1zY3JpcHRzfSBpcyBzZXQgdG8gQHNhbXB7b259LgotKwotK0ZvciBtb3Jl IGJhY2tncm91bmQgcmVmZXIgdG8gdGhlIHNpbWlsYXIgUHl0aG9uIHNjcmlwdHMgYXV0by1sb2Fk aW5nCi0rZGVzY3JpcHRpb24gKEBweHJlZntvYmpmaWxlLWdkYi5weSBmaWxlfSkuCi0rCi0rQHRh YmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfQotK0BraW5kZXgg c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK0BpdGVtIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cy4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1s b2FkIGdkYi1zY3JpcHRzfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStA aXRlbSBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIGVuYWJsZWQgb3IK LStkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzfQotK0Br aW5kZXggaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAY2luZGV4IHByaW50IGxpc3Qgb2Yg YXV0by1sb2FkZWQgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzCi0rQGl0ZW0g aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQcmludCB0aGUgbGlz dCBvZiBhbGwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHRoYXQgQHZhbHVl e0dEQk59Ci0rYXV0by1sb2FkZWQuCi0rQGVuZCB0YWJsZQotKwotK0lmIEB2YXJ7cmVnZXhwfSBp cyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRo Ci0rbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0rCi0gQG5vZGUgTWVzc2FnZXMvV2Fybmlu Z3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMKLSAKLUBAIC0yMTYx Niw3ICsyMTg0OSw3IEBAIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgd2hlbiBAdmFsdWV7R0RCTn0K LSBAbWVudQotICogUHl0aG9uIENvbW1hbmRzOjogICAgICAgICAgICAgQWNjZXNzaW5nIFB5dGhv biBmcm9tIEB2YWx1ZXtHREJOfS4KLSAqIFB5dGhvbiBBUEk6OiAgICAgICAgICAgICAgICAgIEFj Y2Vzc2luZyBAdmFsdWV7R0RCTn0gZnJvbSBQeXRob24uCi0tKiBBdXRvLWxvYWRpbmc6OiAgICAg ICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUuCi0rKiBQeXRob24g QXV0by1sb2FkaW5nOjogICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUu Ci0gKiBQeXRob24gbW9kdWxlczo6ICAgICAgICAgICAgICBQeXRob24gbW9kdWxlcyBwcm92aWRl ZCBieSBAdmFsdWV7R0RCTn0uCi0gQGVuZCBtZW51Ci0gCi1AQCAtMjI3OTksNyArMjMwMzIsNyBA QCBUaGlzIHByYWN0aWNlIHdpbGwgZW5hYmxlIEB2YWx1ZXtHREJOfSB0Ci0geW91ciBwcmV0dHkt cHJpbnRlcnMgYXQgdGhlIHNhbWUgdGltZSwgYmVjYXVzZSB0aGV5IHdpbGwgaGF2ZQotIGRpZmZl cmVudCBuYW1lcy4KLSAKLS1Zb3Ugc2hvdWxkIHdyaXRlIGF1dG8tbG9hZGVkIGNvZGUgKEBweHJl ZntBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKLStZb3Ugc2hvdWxkIHdyaXRlIGF1dG8tbG9h ZGVkIGNvZGUgKEBweHJlZntQeXRob24gQXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0Ci0gY2Fu IGJlIGV2YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNoYW5naW5nIGl0cyBtZWFuaW5n LiAgQW4KLSBpZGVhbCBhdXRvLWxvYWQgZmlsZSB3aWxsIGNvbnNpc3Qgc29sZWx5IG9mIEBjb2Rl e2ltcG9ydH1zIG9mIHlvdXIKLSBwcmludGVyIG1vZHVsZXMsIGZvbGxvd2VkIGJ5IGEgY2FsbCB0 byBhIHJlZ2lzdGVyIHByZXR0eS1wcmludGVycyB3aXRoCi1AQCAtMjM3NjAsNyArMjM5OTMsNyBA QCBUaGUgZm9sbG93aW5nIG9iamZpbGUtcmVsYXRlZCBmdW5jdGlvbnMKLSAKLSBAZmluZGV4IGdk Yi5jdXJyZW50X29iamZpbGUKLSBAZGVmdW4gZ2RiLmN1cnJlbnRfb2JqZmlsZSAoKQotLVdoZW4g YXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme0F1dG8tbG9hZGluZ30pLCBAdmFs dWV7R0RCTn0KLStXaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntQeXRo b24gQXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQotIHNldHMgdGhlIGBgY3VycmVudCBvYmpm aWxlJycgdG8gdGhlIGNvcnJlc3BvbmRpbmcgb2JqZmlsZS4gIFRoaXMKLSBmdW5jdGlvbiByZXR1 cm5zIHRoZSBjdXJyZW50IG9iamZpbGUuICBJZiB0aGVyZSBpcyBubyBjdXJyZW50IG9iamZpbGUs Ci0gdGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LgotQEAgLTI0NjcxLDkgKzI0OTA0 LDkgQEAgcmVzb2x2ZSB0aGlzIHRvIHRoZSBsYXp5IHN0cmluZydzIGNoYXJhYwotIHdyaXRhYmxl LgotIEBlbmQgZGVmdmFyCi0gCi0tQG5vZGUgQXV0by1sb2FkaW5nCi0tQHN1YnNlY3Rpb24gQXV0 by1sb2FkaW5nCi0tQGNpbmRleCBhdXRvLWxvYWRpbmcsIFB5dGhvbgotK0Bub2RlIFB5dGhvbiBB dXRvLWxvYWRpbmcKLStAc3Vic2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5nCi0rQGNpbmRleCBQ eXRob24gYXV0by1sb2FkaW5nCi0gCi0gV2hlbiBhIG5ldyBvYmplY3QgZmlsZSBpcyByZWFkIChm b3IgZXhhbXBsZSwgZHVlIHRvIHRoZSBAY29kZXtmaWxlfQotIGNvbW1hbmQsIG9yIGJlY2F1c2Ug dGhlIGluZmVyaW9yIGhhcyBsb2FkZWQgYSBzaGFyZWQgbGlicmFyeSksCi1AQCAtMjQ2OTMsMzIg KzI0OTI2LDM1IEBAIEF1dG8tbG9hZGluZyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwKLSBh bmQgdGhlIGxpc3Qgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBjYW4gYmUgcHJpbnRlZC4KLSAKLSBA dGFibGUgQGNvZGUKLS1Aa2luZGV4IHNldCBhdXRvLWxvYWQtc2NyaXB0cwotLUBpdGVtIHNldCBh dXRvLWxvYWQtc2NyaXB0cyBbeWVzfG5vXQotK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBweXRob24t c2NyaXB0c30KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKLStAaXRlbSBz ZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtvbnxvZmZdCi0gRW5hYmxlIG9yIGRpc2FibGUg dGhlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4KLSAKLS1Aa2luZGV4IHNob3cgYXV0 by1sb2FkLXNjcmlwdHMKLS1AaXRlbSBzaG93IGF1dG8tbG9hZC1zY3JpcHRzCi0rQGFuY2hvcntz aG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKLSBTaG93 IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIGVuYWJsZWQgb3IgZGlz YWJsZWQuCi0gCi0tQGtpbmRleCBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzCi0tQGNpbmRleCBwcmlu dCBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMKLS1AaXRlbSBpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIFtAdmFye3JlZ2V4cH1dCi0tUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIHNjcmlwdHMgdGhhdCBA dmFsdWV7R0RCTn0gYXV0by1sb2FkZWQuCi0rQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBweXRob24t c2NyaXB0c30KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rQGNpbmRl eCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzCi0rQGl0ZW0gaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQcmludCB0aGUgbGlzdCBv ZiBhbGwgUHl0aG9uIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQuCi0gCi0t QWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBp bgotK0Fsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBQeXRob24gc2NyaXB0cyB0aGF0IHdlcmUg bWVudGlvbmVkIGluCi0gdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbiBhbmQg d2VyZSBub3QgZm91bmQKLSAoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4K LSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVu IEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBtYXkg YmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKLSBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNo IG9uZSBpcyBwcm9ibGVtYXRpYy4KLSAKLS1JZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25s eSBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0rSWYgQHZhcntyZWdl eHB9IGlzIHN1cHBsaWVkIG9ubHkgUHl0aG9uIHNjcmlwdHMgd2l0aCBtYXRjaGluZyBuYW1lcyBh cmUgcHJpbnRlZC4KLSAKLSBFeGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUKLS0oZ2RiKSBpbmZv IGF1dG8tbG9hZC1zY3JpcHRzCi0rKGdkYikgaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMK LSBMb2FkZWQgIFNjcmlwdAotIFllcyAgICAgcHktc2VjdGlvbi1zY3JpcHQucHkKLSAgICAgICAg IGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTgg MDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0 aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1A QCAtMzEsMjkgKzMxLDU2IEBACi0gCi0gI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgotIAot LS8qIE5PVEU6IEl0J3MgdHJpdmlhbCB0byBhbHNvIHN1cHBvcnQgYXV0by1sb2FkaW5nIG5vcm1h bCBnZGIgc2NyaXB0cy4KLS0gICBUaGVyZSBoYXMgeWV0IHRvIGJlIGEgbmVlZCBzbyBpdCdzIG5v dCBpbXBsZW1lbnRlZC4gICovCi0tCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmlsZSBzY3Jp cHRzIHRvIGF1dG8tbG9hZC4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9v LnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLnB5LiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fRklM RV9OQU1FICItZ2RiLnB5IgotIAotLS8qIFRoZSBzZWN0aW9uIHRvIGxvb2sgZm9yIHNjcmlwdHMg KGluIGZpbGUgZm9ybWF0cyB0aGF0IHN1cHBvcnQgc2VjdGlvbnMpLgotKy8qIFRoZSBzZWN0aW9u IHRvIGxvb2sgZm9yIFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIChpbiBmaWxlIGZvcm1hdHMg dGhhdAotKyAgIHN1cHBvcnQgc2VjdGlvbnMpLgotICAgIEVhY2ggZW50cnkgaW4gdGhpcyBzZWN0 aW9uIGlzIGEgYnl0ZSBvZiB2YWx1ZSAxLCBhbmQgdGhlbiB0aGUgbnVsLXRlcm1pbmF0ZWQKLSAg ICBuYW1lIG9mIHRoZSBzY3JpcHQuICBUaGUgc2NyaXB0IG5hbWUgbWF5IGluY2x1ZGUgYSBkaXJl Y3RvcnkuCi0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29tcGF0aWJs ZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FICIuZGVi dWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nOgotLSAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKLS0g ICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMg d2hlbiBhbiBvYmpmaWxlCi0tICAgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuCi0tICAgQXQg dGhlIG1vbWVudCwgdGhpcyBvbmx5IGFmZmVjdHMgcHl0aG9uIHNjcmlwdHMsIGJ1dCB0aGVyZSdz IG5vIHJlYXNvbgotLSAgIG9uZSBjb3VsZG4ndCBhbHNvIGhhdmUgb3RoZXIga2luZHMgb2YgYXV0 by1sb2FkZWQgc2NyaXB0cywgYW5kIHRoZXJlJ3MKLS0gICBubyByZWFzb24gdG8gaGF2ZSB0aGVt IGVhY2ggY29udHJvbGxlZCBieSBhIHNlcGFyYXRlIGZsYWcuCi0tICAgU28gd2UgZWxpZGUgInB5 dGhvbiIgZnJvbSB0aGUgbmFtZSBoZXJlIGFuZCBpbiB0aGUgb3B0aW9uLgotLSAgIFRoZSBmYWN0 IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gICov Ci0tc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0rLyogVXNlci1zZXR0YWJsZSBv cHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzOgot KyAgIHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmCi0rICAgVGhpcyBpcyB0cnVl IGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBQeXRob24gc2NyaXB0cyB3aGVuIGFu Ci0rICAgb2JqZmlsZSBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGlu dCBhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgPSAxOwotKwotK3N0YXRpYyB2b2lkIGdkYnB5X2xv YWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJ CQkJCUZJTEUgKmZpbGUsCi0rCQkJCQkJY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotKy8qICJz aG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIGNvbmZpZ3VyYXRp b24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfcHl0aG9u X3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgICAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBm cHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgJXMuXG4iKSwgdmFsdWUpOwotK30KLSsKLSsvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5n dWFnZSBmb3IgUHl0aG9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9weXRob24KLSsgID0geyBHREJQWV9BVVRPX0ZJ TEVfTkFNRSwgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSB9OwotKwotKy8qIFdy YXBwZXIgb2Ygc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgZm9yIHNjcmlwdF9sYW5n dWFnZV9weXRob24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfbG9hZF9hdXRvX3Njcmlw dF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0rCQkJ CSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFz aCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgotKyAgICAgY2Fu IHByaW50IGl0LiAgKi8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1heWJlX2FkZF9zY3Jp cHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0 aG9uKTsKLSsKLSsgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBm aWxlLCBmaWxlbmFtZSk7Ci0rfQotIAotIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JK RklMRS4KLSAgICBTVEFSVCxFTkQgZGVsaW1pdCBhIGJ1ZmZlciBjb250YWluaW5nIGEgbGlzdCBv ZiBudWwtdGVybWluYXRlZAotQEAgLTEyMSw2ICsxNDgsMTcgQEAgc291cmNlX3NlY3Rpb25fc2Ny aXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7 Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSAJfQotKyAgICAgIGVsc2UK LSsJewotKwkgIGZ1bGxfcGF0aCA9IE5VTEw7Ci0rCi0rCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4g ZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwotKwkgIGlmIChzY3Jp cHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKLSsJICAgIHdhcm5pbmcg KF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5c Ci0rb2YgZmlsZSAlc1xuXAotK1VzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9uIFtSRUdFWFBdJyB0 byBsaXN0IHRoZW0uIiksCi0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxl LT5uYW1lKTsKLSsJfQotIAotICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNuJ3QgZm91bmQgaXQn cyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCi0gCSBmb3VuZCBlaXRoZXIuICBXZSBk b24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gKLUBAIC0xMjksMjQg KzE2NywxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCi0g CSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KLSAK LS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZp bGUsCi0tCQkJCQlvcGVuZWQgPyBmdWxsX3BhdGggOiBOVUxMKTsKLSsgICAgICBpbl9oYXNoX3Rh YmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsIGZ1bGxfcGF0aCwKLSsJ CQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLS0gICAgICBpZiAoISBvcGVuZWQpCi0t CXsKLS0JICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwg ZGVidWdnYWJsZS4gICovCi0tCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAo cHNwYWNlX2luZm8pKQotLQkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0 cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLS1vZiBmaWxlICVzXG5cCi0tVXNlIGBpbmZv IGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCi0tCQkgICAgIEdE QlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsKLS0JfQotLSAgICAgIGVsc2UK LS0JewotLQkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBp dC4gICovCi0tCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKLS0JICAgIHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0tCX0KLSsgICAg ICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwot KyAgICAgIGlmIChvcGVuZWQgJiYgIWluX2hhc2hfdGFibGUpCi0rCXNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0gCi0gICAgICAg ZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci1AQCAtMTgxLDM2ICsyMDcsNzUgQEAgYXV0 b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbAotICAgZG9fY2xlYW51cHMgKGNs ZWFudXBzKTsKLSB9Ci0gCi0tLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JK RklMRS4gICovCi0rLyogTG9hZCBhbnkgUHl0aG9uIGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9C SkZJTEUuICAqLwotIAotIHZvaWQKLS1sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCi0rZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsKLS0gIGlmIChhdXRvX2xvYWRfc2NyaXB0 cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkKQotKyAgaWYgKGF1dG9fbG9hZF9weXRob25fc2Ny aXB0cykKLSAgICAgewotLSAgICAgIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAob2JqZmlsZSwg R0RCUFlfQVVUT19GSUxFX05BTUUpOwotKyAgICAgIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAo b2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotICAgICAgIGF1dG9fbG9hZF9zZWN0 aW9uX3NjcmlwdHMgKG9iamZpbGUsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FKTsKLSAgICAgfQot IH0KLSsKLSsvKiBXcmFwcGVyIGZvciAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIChjaGFy ICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rewotKyAgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAo cGF0dGVybiwgZnJvbV90dHksICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSt9Ci0gDAotIHZv aWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqY21kOwotKyAgY2hhciAqY21kX25hbWU7Ci0rCi0rICBhZGRfc2V0c2hv d19ib29sZWFuX2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAm YXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2 aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMuIiksIF8oIlwKLStTaG93 IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNj cmlwdHMuIiksIF8oIlwKLStJZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cyBh cmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCi0rYW4gZXhlY3V0YWJsZSBvciBz aGFyZWQgbGlicmFyeS5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9u cyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9h ZF9weXRob25fc2NyaXB0cywKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAot KwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSAgIGFkZF9zZXRzaG93 X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAotLQkJCSAg ICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotLVNldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIg cmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1TaG93IHRoZSBkZWJ1Z2dl cidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAotLUlm IGVuYWJsZWQsIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dl ciByZWFkc1xuXAotLWFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiksCi0tCQkJICAg TlVMTCwgTlVMTCwKLS0JCQkgICAmc2V0bGlzdCwKLS0JCQkgICAmc2hvd2xpc3QpOwotKwkJCSAg ICZhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKLStTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVo YXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cywgIgotKwkJCQkJCQkJ ICJkZXByZWNhdGVkLiIpLAotKwkJCSAgIF8oIlwKLStTaG93IHRoZSBkZWJ1Z2dlcidzIGJlaGF2 aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKLSsJCQkJCQkJCSAi ZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBOVUxMLCBOVUxMLCBzaG93X2F1dG9fbG9hZF9weXRob25f c2NyaXB0cywKLSsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSsgIGNtZF9uYW1lID0gImF1 dG8tbG9hZC1zY3JpcHRzIjsKLSsgIGNtZCA9IGxvb2t1cF9jbWQgKCZjbWRfbmFtZSwgc2V0bGlz dCwgIiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNldCBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiKTsKLSsKLSsgIC8qIEl0IGlzIG5lZWRlZCBiZWNhdXNlIGxvb2t1cF9jbWQg dXBkYXRlcyB0aGUgQ01EX05BTUUgcG9pbnRlci4gICovCi0rICBjbWRfbmFtZSA9ICJhdXRvLWxv YWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNob3dsaXN0LCAi IiwgLTEsIDEpOwotKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAic2hvdyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiKTsKLSsKLSsgIGFkZF9jbWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX2luZm8s IGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAotKwkgICBfKCJQcmludCB0aGUgbGlzdCBv ZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cy5cblwKLStVc2FnZTogaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKCkpOwotKwotKyAgY21kID0gYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0 cyIsIGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rUHJpbnQgdGhlIGxpc3Qg b2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMsIGRlcHJlY2F0ZWQuIikpOwot KyAgZGVwcmVjYXRlX2NtZCAoY21kLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiKTsK LSB9Ci0gCi0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotIAotIHZvaWQKLS1sb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rZ2RicHlfbG9h ZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsK LSB9Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9u LmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45Nzk0Mzc0NDYg KzAyMDAKLUBAIC00MSw3ICs0MSw3IEBAIGludCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0 cnVjdCB0eXAKLSAKLSB2b2lkIHByZXNlcnZlX3B5dGhvbl92YWx1ZXMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBodGFiX3QgY29waWVkX3R5cGVzKTsKLSAKLS12b2lkIGxvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0rdm9pZCBnZGJweV9s b2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwot IAotIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9v YmopOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9oZWxwLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCTIwMTItMDEtMDQgMDk6MTc6NDUuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hl bHAuZXhwCTIwMTItMDQtMTggMDA6NDQ6MjYuOTgwNDM3NDQ0ICswMjAwCi1AQCAtMjQsNyArMjQs NyBAQAotIGdkYl9zdGFydAotIAotICMgZm9yY2UgdGhlIGhlaWdodCBvZiB0aGUgZGVidWdnZXIg dG8gYmUgcHJldHR5IGxhcmdlIHNvIG5vIHBhZ2VycyBnZXQgdXNlZAotLWdkYl90ZXN0X25vX291 dHB1dCAic2V0IGhlaWdodCA0MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgaGVpZ2h0IDUwMCIgInRlc3Qgc2V0IGhlaWdodCIKLSAKLSAjIHVzZSBhIGxhcmdl ciBleHBlY3QgaW5wdXQgYnVmZmVyIGZvciBsb25nIGhlbHAgb3V0cHV0cy4KLSAjIHRlc3QgaGVs cCBhZGQtc3ltYm9sLWZpbGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUt c2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0 LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTQwLDcgKzQwLDcg QEAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5m aWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLS1nZGJfdGVzdCAiaW5m byBhdXRvLWxvYWQtc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdkYi5weS4qIgotK2dkYl90 ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdk Yi5weS4qIgotIAotIGlmICFbcnVudG9fbWFpbl0gewotICAgICBwZXJyb3IgImNvdWxkbid0IHJ1 biB0byBtYWluIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQu ZXhwCTIwMTItMDEtMTYgMTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIw MTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAtNTIsMTEgKzUyLDExIEBAIGdk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2FkICR7YmluZmlsZX0K LSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0tZ2RiX3Rlc3QgImluZm8gYXV0 by1sb2FkLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVz dGZpbGV9LnB5LioiCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiAi WWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgotICMg QWdhaW4sIHdpdGggYSByZWdleHAgdGhpcyB0aW1lLgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAu Ki8ke3Rlc3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0 ZXN0ZmlsZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoYXQgbWF0Y2hlcyBubyBz Y3JpcHRzLgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIG5vLXNjcmlwdC1tYXRj aGVzLXRoaXMiIFwKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgbm8t c2NyaXB0LW1hdGNoZXMtdGhpcyIgXAotICAgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5n IG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMuIgotIAotIGlmICFbcnVudG9fbWFpbl0gewoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0xMG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTBvZjI4LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OTY5ODIKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTBvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMTcwNCBAQAor W3BhdGNoIzQgNC84XSBzZXQgYXV0by1sb2FkICogbWFpbiBwYXJ0CitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4OC5odG1sCitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTEzLmh0bWwKKworIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDk6MTEJMS4xNDExMgorIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMworIyMgLTEsNSArMSwxMDEgQEAKKyAyMDEy LTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisr CWF1dG8tbG9hZDogSW1wbGVtZW50YXRpb24uCisrCSogTkVXUzogTmV3IGRlc2NyaXB0aW9ucyBm b3IgImluZm8gYXV0by1sb2FkIiwKKysJImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgImlu Zm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKKysJImluZm8gYXV0by1sb2FkIGxvY2FsLWdk YmluaXQiIGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KKysJRGVwcmVjYXRlICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYiCisr CWFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIuICBOZXcgZGVzY3JpcHRpb24gZm9yICJzZXQg YXV0by1sb2FkIiwKKysJInNob3cgYXV0by1sb2FkIiwgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMiLAorKwkic2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIsCisrCSJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0 by1sb2FkIGxvY2FsLWdkYmluaXQiLAorKwkic2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIs ICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kCisrCSJzaG93IGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIiLgorKwkqIGF1dG8tbG9hZC5jOiBSZW1vdmUgaW5jbHVkZSBweXRob24vcHl0aG9u LWludGVybmFsLmguICBBZGQgaW5jbHVkZXMKKysJZXhjZXB0aW9ucy5oLCBjbGkvY2xpLXNjcmlw dC5oLCBnZGJjbWQuaCwgY2xpL2NsaS1kZWNvZGUuaCBhbmQKKysJY2xpL2NsaS1zZXRzaG93Lmgu CisrCShHREJfQVVUT19GSUxFX05BTUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKQor KwkoYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cyk6IE5l dy4KKysJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4uCisrCShnbG9iYWxf YXV0b19sb2FkKTogLi4uIGhlcmUuCisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19s b2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9s b2FkZWQsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCShzY3JpcHRfbGFuZ3VhZ2Vf Z2RiLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldy4KKysJKHN0cnVjdCBsb2Fk ZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxhbmd1YWdlLgorKwkoaGFzaF9sb2FkZWRfc2NyaXB0X2Vu dHJ5LCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5KTogQ2FsY3VsYXRlIGFsc28KKysJTEFOR1VBR0Uu CisrCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIERyb3AgcmVk dW5kYW50CisrCWVudHJ5LmZ1bGxfcGF0aCBpbml0aWFsaXphdGlvbi4gIEluaXRpYWxpemUgZW50 cnkubGFuZ3VhZ2UgYW5kCisrCSgqc2xvdCktPmxhbmd1YWdlLgorKwkoYXV0b19sb2FkX29iamZp bGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8gbGFuZ3VhZ2UuCisrCVJlbW92 ZSB0aGUgY2FsbCBvZiBtYXliZV9hZGRfc2NyaXB0LgorKwlDYWxsIGxhbmd1YWdlLT5zb3VyY2Vf c2NyaXB0X2Zvcl9vYmpmaWxlLgorKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIHN0 cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSk6CisrCU5ldy4KKysJKGNvbGxlY3Rf bWF0Y2hpbmdfc2NyaXB0cyk6IEFkanVzdCBpdCBmb3IKKysJc3RydWN0IGNvbGxlY3RfbWF0Y2hp bmdfc2NyaXB0c19kYXRhLgorKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKTog TmV3IHZhcmlhYmxlLgorKwkoaW5mb19hdXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4K KysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMpOiAuLi4gaGVyZSwgYWRkIHBhcmFtZXRlciBsYW5n dWFnZS4gIEFkanVzdCBpdAorKwlmb3Igc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19k YXRhLgorKwkoaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIGluZm9fYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQpCisrCShzZXRfYXV0b19sb2FkX2NtZCwgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dl dCwgc2hvd19hdXRvX2xvYWRfY21kKQorKwkoYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQsIGlu Zm9fYXV0b19sb2FkX2NtZCkKKysJKGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0KTogTmV3Lgor KwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogTW92ZSBhZGRfaW5mbyBvZiAiYXV0by1sb2FkLXNj cmlwdHMiIHRvCisrCXB5dGhvbi9weS1hdXRvLWxvYWQuYy4gIE5ldyBpbnN0YWxsbWVudCBmb3Ig InNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAorKwkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBhbmQKKysJImluZm8gYXV0by1sb2Fk IGxvY2FsLWdkYmluaXQiLgorKwkqIGF1dG8tbG9hZC5oIChzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdl KTogTmV3LgorKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6IFJlbmFtZSB0byAuLi4KKysJKGds b2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KKysJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKKysJKGF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X2xvYWRlZCk6IE5ldyBkZWNsYXJhdGlvbnMuCisrCShtYXliZV9hZGRfc2NyaXB0KTogTmV3 IHBhcmFtZXRlciBsYW5ndWFnZS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5n ZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgorKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKKysJKGF1dG9fbG9h ZF9pbmZvX3NjcmlwdHMsIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQpCisrCShhdXRvX2xvYWRf c2hvd19jbWRsaXN0X2dldCwgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQpOiBOZXcKKysJZGVj bGFyYXRpb25zLgorKwkqIGxpbnV4LXRocmVhZC1kYi5jOiBJbmNsdWRlIGF1dG8tbG9hZC5oIGFu ZCBjdHlwZS5oLgorKwkoYXV0b19sb2FkX3RocmVhZF9kYiwgc2hvd19hdXRvX2xvYWRfdGhyZWFk X2RiKTogTmV3LgorKwkoc3RydWN0IHRocmVhZF9kYl9pbmZvKTogTmV3IGZpZWxkIGZpbGVuYW1l LgorKwkoZGVsZXRlX3RocmVhZF9kYl9pbmZvKTogQ2FsbCB4ZnJlZSBmb3IgRklMRU5BTUUuCisr CSh0cnlfdGhyZWFkX2RiX2xvYWQpOiBJbml0aWFsaXplIEZJTEVOQU1FLgorKwkodHJ5X3RocmVh ZF9kYl9sb2FkX2Zyb21fcGRpciwgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogUmV0dXJu CisrCWlmICFBVVRPX0xPQURfVEhSRUFEX0RCLgorKwkoaW5mb19hdXRvX2xvYWRfbGlidGhyZWFk X2RiX2NvbXBhcmUsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYik6IE5ldy4KKysJKF9pbml0 aWFsaXplX3RocmVhZF9kYik6IEluc3RhbGwgYXV0b19sb2FkX3RocmVhZF9kYgorKwlhcyAic2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZCBpbnN0YWxsIGluZm9fYXV0b19sb2FkX2xpYnRo cmVhZF9kYgorKwlhcyAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KKysJKiBtYWluLmMg KGNhcHR1cmVkX21haW4pOiBSZW5hbWUgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCB0bworKwlnbG9i YWxfYXV0b19sb2FkLiAgSW5pdGlhbGl6ZSBBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9QQVRITkFN RSBhbmQKKysJQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfTE9BREVELgorKwkocHJpbnRfZ2RiX2hl bHApOiBFeHRlbmQgdGhlIGhlbHAgZm9yICdsb2NhbCBpbml0IGZpbGUnLgorKwkqIHB5dGhvbi9w eS1hdXRvLWxvYWQuYzogUmVtb3ZlIGEgY29tbWVudCBhYm91dCBnZGIgc2NyaXB0cyBleHRlbnNp b24uCisrCShHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk6IEV4dGVuZCB0aGUgY29tbWVudCBpdCBp cyBQeXRob24gc3BlY2lmaWMuCisrCShhdXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4K KysJKGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlIGNvbW1l bnQuCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IGRlY2xhcmF0 aW9uLgorKwkoc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIHNjcmlwdF9sYW5ndWFnZV9w eXRob24pCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3LgorKwko c291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IFJlZmFjdG9yIHRoZSBjb2RlLgorKwkobG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCisrCShnZGJweV9sb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlCisrCWF1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCBjYWxsZXIsIGRyb3AgR0RCUFlfR0xPQkFMX0FVVE9fTE9BRCBjaGVja2lu Zy4KKysJKGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKTogTmV3LgorKwkoZ2RicHlfaW5p dGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGVzIGNtZCBhbmQgY21kX25hbWUuCisrCVJl bmFtZSAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiB0byAic2V0IGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cyIuCisrCVJlZ2lzdGVyICJzZXQgYXV0by1sb2FkLXNjcmlwdHMiIGFzIGl0cyBkZXByZWNh dGVkIGFsaWFzLiAgUmVnaXN0ZXIKKysJImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4g IFJlZ2lzdGVyICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBhcworKwlpdHMgZGVwcmVjYXRlZCBh bGlhcy4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgor KwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KKysJKiBw eXRob24vcHl0aG9uLmggKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRv IC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4K KysKKysyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisrCisgCWF1dG8tbG9hZDogTW92ZSBmaWxlcy4KKyAJKiBNYWtlZmlsZS5pbiAoU0ZJTEVT KTogQWRkIGF1dG8tbG9hZC5jLgorIAkoSEZJTEVTX05PX1NSQ0RJUik6IEFkZCBhdXRvLWxvYWQu aC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2 NjgxMDY4ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4 IDAwOjQ5OjAyLjAzNTczNzY0NCArMDIwMAorQEAgLTI4LDYgKzI4LDQ1IEBACisgICBub3cgc2V0 IGEgYnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBidXQgbm90CisgICBidWlsZC9saWJj cHAvZXhwci5jLgorIAorKyogTmV3IGNvbW1hbmRzCisrCisrICAqKiAiaW5mbyBhdXRvLWxvYWQi IHNob3dzIHN0YXR1cyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMsCisrICAgICAi aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiIHNob3dzIHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcg R0RCIGNhbm5lZAorKyAgICAgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVzLCAiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiCisrICAgICBzaG93cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5n IFB5dGhvbiBzY3JpcHQgZmlsZXMsCisrICAgICAiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dCIgc2hvd3Mgc3RhdHVzIG9mIGxvYWRpbmcgaW5pdCBmaWxlCisrICAgICAoLmdkYmluaXQpIGZy b20gY3VycmVudCBkaXJlY3RvcnkgYW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIHNo b3dzCisrICAgICBzdGF0dXMgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBz aGFyZWQgbGlicmFyeSBsb2FkaW5nLgorKworKyAgKiogImluZm8gYXV0by1sb2FkLXNjcmlwdHMi LCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKKysgICAgIGFuZCAic2hvdyBhdXRvLWxv YWQtc2NyaXB0cyIgY29tbWFuZHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHVzZSB0aGVpcgorKyAg ICAgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMgb258b2ZmIgorKyAgICAgYW5kICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIgY291bnRlcnBhcnRzIGluc3RlYWQuCisrCisrKiBOZXcgb3B0aW9ucworKworK3NldCBhdXRv LWxvYWQgb2ZmCisrICBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4KKysKKytzaG93IGF1 dG8tbG9hZAorKyAgU2hvdyBhdXRvLWxvYWRpbmcgc2V0dGluZyBvZiBhbGwga2luZHMgb2YgYXV0 by1sb2FkZWQgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKKytz aG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cworKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgR0RC IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyBvbnxvZmYKKytzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworKyAg Q29udHJvbCBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdCBmaWxlcy4KKysKKytzZXQgYXV0 by1sb2FkIGxvY2FsLWdkYmluaXQgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dAorKyAgQ29udHJvbCBsb2FkaW5nIG9mIGluaXQgZmlsZSAoLmdkYmluaXQpIGZyb20gY3VycmVu dCBkaXJlY3RvcnkuCisrCisrc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCisrc2hv dyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisrICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZl cmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgorKworICogTmV3 IGNvbW1hbmQgbGluZSBvcHRpb25zCisgCisgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAg ICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1MDQzNzUyMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTgg MDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCitAQCAtMjcsMTkgKzI3LDkyIEBACisgI2luY2x1ZGUg ImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMu aCIKKy0jaW5jbHVkZSAicHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJleGNl cHRpb25zLmgiCisrI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiCisrI2luY2x1ZGUgImdkYmNt ZC5oIgorKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXNl dHNob3cuaCIKKysKKysvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0 by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4KKysgICBFLmcuIFdoZW4gdGhlIHBy b2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCisrI2Rl ZmluZSBHREJfQVVUT19GSUxFX05BTUUgIi1nZGIuZ2RiIgorKworK3N0YXRpYyB2b2lkIHNvdXJj ZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAq ZmlsZSwKKysJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKysvKiBVc2VyLXNldHRh YmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklM RV9OQU1FCisrICAgc2NyaXB0czoKKysgICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9m ZgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2Ny aXB0cyB3aGVuIGFuIG9iamZpbGUKKysgICBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICov Cisrc3RhdGljIGludCBhdXRvX2xvYWRfZ2RiX3NjcmlwdHMgPSAxOworKworKy8qICJzaG93IiBj b21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2dkYl9zY3JpcHRzIGNvbmZpZ3VyYXRpb24gdmFyaWFi bGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKHN0 cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICAgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVk IChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAi CisrCQkJICAgICJzY3JpcHRzIGlzICVzLlxuIiksCisrCQkgICAgdmFsdWUpOworK30KKyAKKyAv KiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCisgICAg VGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBv YmpmaWxlIGlzIG9wZW5lZCwKKyAgICBmYWxzZSBvdGhlcndpc2UuCisgCistICAgQm90aCBhdXRv X2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBl bmFibGUKKysgICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdsb2JhbF9hdXRvX2xvYWQgbXVz dCBiZSB0cnVlIHRvIGVuYWJsZQorICAgIGF1dG8tbG9hZGluZy4KKyAKKyAgICBUaGlzIGZsYWcg ZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQt dXAKKyAgICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdt ZW50IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKKyAgICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMu ICAqLworLWludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKytpbnQgZ2xvYmFsX2F1dG9f bG9hZCA9IDE7CisrCisrLyogQXV0by1sb2FkIC5nZGJpbml0IGZpbGUgZnJvbSB0aGUgY3VycmVu dCBkaXJlY3Rvcnk/ICAqLworK2ludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCA9IDE7CisrCisr LyogQWJzb2x1dGUgcGF0aG5hbWUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0LCBp ZiBpdCBleGlzdHMuICAqLworK2NoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1l ID0gTlVMTDsKKysKKysvKiBCb29sZWFuIHZhbHVlIGlmIEFVVE9fTE9BRF9MT0NBTF9HREJJTklU X1BBVEhOQU1FIGhhcyBiZWVuIGxvYWRlZC4gICovCisraW50IGF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X2xvYWRlZCA9IDA7CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9p ZAorK3Nob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBp bnQgZnJvbV90dHksCisrCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0 IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9h ZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50ICIKKysJCQkgICAgImRpcmVjdG9y eSBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisrLyogRGVmaW5pdGlvbiBvZiBz Y3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8K KysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2Vf Z2RiCisrICA9IHsgR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2Jq ZmlsZSB9OworKworK3N0YXRpYyB2b2lkCisrc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCSAgICAgICBjb25zdCBj aGFyICpmaWxlbmFtZSkKKyt7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKKysgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisrCisrICAvKiBB ZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBn ZGItc2NyaXB0cyIKKysgICAgIGNhbiBwcmludCBpdC4gICovCisrICBwc3BhY2VfaW5mbyA9IGdl dF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFj ZSk7CisrICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1l LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNL X0FMTCkKKysgICAgeworKyAgICAgIHNjcmlwdF9mcm9tX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsK KysgICAgfQorKyAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3RkZXJyLCBlKTsKKyt9CisgCisgLyog Rm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2Jq ZmlsZXMgbWF5IGxvYWQKKyAgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGlu IGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKK0BAIC02Miw5ICsxMzUsMTIgQEAg c3RydWN0IGxvYWRlZF9zY3JpcHQKKyB7CisgICAvKiBOYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBv YmpmaWxlLiAgKi8KKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisrCisgICAvKiBGdWxsIHBhdGggbmFt ZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhlcndpc2UKKyAgICAg IGluYWNjZXNzaWJsZSkuICAqLworICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOworKworKyAgY29u c3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisgfTsKKyAKKyAvKiBQZXItcHJv Z3JhbS1zcGFjZSBkYXRhIGtleS4gICovCitAQCAtMTA5LDcgKzE4NSw3IEBAIGhhc2hfbG9hZGVk X3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGEKKyB7CisgICBjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqZSA9IGRhdGE7CisgCistICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFt ZSk7CisrICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSkgXiBodGFiX2hhc2hfcG9p bnRlciAoZS0+bGFuZ3VhZ2UpOworIH0KKyAKKyAvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhl IGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCitAQCAtMTIwLDcgKzE5Niw3IEBAIGVxX2xvYWRlZF9z Y3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGMKKyAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplYSA9IGE7CisgICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOworIAor LSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOworKyAgcmV0dXJuIHN0 cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwICYmIGVhLT5sYW5ndWFnZSA9PSBlYi0+bGFu Z3VhZ2U7CisgfQorIAorIC8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBz Y3JpcHRzLgorQEAgLTE1NiwyMCArMjMyLDIxIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKHMKKyAgIHJldHVybiBpbmZvOworIH0KKyAKKy0vKiBBZGQgc2NyaXB0IE5B TUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KKy0gICBGVUxMX1BBVEggaXMgTlVMTCBp ZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKy0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhl IHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisrLyogQWRkIHNjcmlw dCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCisrICAgRlVM TF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlz CisrICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAg Ki8KKyAKKyBpbnQKKy1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKKy0JCSAgY29uc3QgY2hhciAqZnVs bF9wYXRoKQorK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvLAorKwkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3Bh dGgsCisrCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQorIHsKKyAg IHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOworICAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKyAgIGludCBpbl9oYXNoX3RhYmxlOwor IAorICAgZW50cnkubmFtZSA9IG5hbWU7CistICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7 CisrICBlbnRyeS5sYW5ndWFnZSA9IGxhbmd1YWdlOworICAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKKyAgIGlu X2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworIAorQEAgLTE5NCw2ICsyNzEsNyBAQCBtYXli ZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisg CSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAgICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBs YW5ndWFnZTsKKyAgICAgfQorIAorICAgcmV0dXJuIGluX2hhc2hfdGFibGU7CitAQCAtMjE2LDEw ICsyOTQsMTIgQEAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQorICAgICB9CisgfQorIAor LS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxF IGFuZCBsb2FkIGl0LiAgKi8KKysvKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBpbiBM QU5HVUFHRSBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZAorKyAgIGl0LiAgKi8KKyAK KyB2b2lkCistYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgY29uc3QgY2hhciAqc3VmZml4KQorK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCisrCQkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICps YW5ndWFnZSkKKyB7CisgICBjaGFyICpyZWFsbmFtZTsKKyAgIGNoYXIgKmZpbGVuYW1lLCAqZGVi dWdmaWxlOworQEAgLTIyOSw5ICszMDksOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0 cnVjdCBvYmpmaWxlCisgCisgICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFt ZSk7CisgICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKKy0gIGZpbGVuYW1lID0geG1hbGxvYyAo bGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7CisrICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiAr IHN0cmxlbiAobGFuZ3VhZ2UtPnN1ZmZpeCkgKyAxKTsKKyAgIG1lbWNweSAoZmlsZW5hbWUsIHJl YWxuYW1lLCBsZW4pOworLSAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgc3VmZml4KTsKKysgIHN0 cmNweSAoZmlsZW5hbWUgKyBsZW4sIGxhbmd1YWdlLT5zdWZmaXgpOworIAorICAgY2xlYW51cHMg PSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CisgICBtYWtlX2NsZWFudXAgKHhmcmVl LCByZWFsbmFtZSk7CitAQCAtMjY5LDI3ICszNDksMzMgQEAgYXV0b19sb2FkX29iamZpbGVfc2Ny aXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAorICAgaWYgKGlucHV0KQorICAgICB7CistICAgICAgc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CistCisgICAgICAgbWFrZV9j bGVhbnVwX2ZjbG9zZSAoaW5wdXQpOworIAorLSAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0 aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCistCSBjYW4gcHJp bnQgaXQuICAqLworLSAgICAgIHBzcGFjZV9pbmZvID0KKy0JZ2V0X2F1dG9fbG9hZF9wc3BhY2Vf ZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gICAgICBtYXliZV9h ZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworLQorICAgICAg IC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hl dGhlciB0aGUKKyAJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMg bG9hZCBpdC4KKyAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQg dHdpY2UsCisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVu dCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CisrICAg ICAgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBk ZWJ1Z2ZpbGUpOworICAgICB9CisgCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworIH0KKyAK KysvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKysKKyt2 b2lkCisrbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQorK3sKKysgIGlmICghZ2xvYmFsX2F1dG9fbG9hZCkKKysgICAgcmV0dXJuOworKworKyAg aWYgKGF1dG9fbG9hZF9nZGJfc2NyaXB0cykKKysgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0 IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBnZGJweV9sb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisrfQorKworIC8qIFRoaXMgaXMgYSBuZXdf b2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KKyAKKyAgICBU d28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCitAQCAtMzE0 LDYgKzQwMCwxMyBAQCBhdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvCisg dHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7CisgREVGX1ZF Q19QIChsb2FkZWRfc2NyaXB0X3B0cik7CisgCisrc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2Ny aXB0c19kYXRhCisreworKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3A7Cisr CisrICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKKyt9OworKworIC8q IFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KKyAgICBDb2xsZWN0IHRoZSBl bnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLworIAorQEAgLTMyMSwxMCArNDE0LDEw IEBAIHN0YXRpYyBpbnQKKyBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2 b2lkICppbmZvKQorIHsKKyAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsK Ky0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOworKyAgc3Ry dWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhICpkYXRhID0gaW5mbzsKKyAKKy0gIGlm IChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQorLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2Ny aXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOworKyAgaWYgKHNjcmlwdC0+bGFuZ3VhZ2Ug PT0gZGF0YS0+bGFuZ3VhZ2UgJiYgcmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKKysgICAgVkVDX3Nh ZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpkYXRhLT5zY3JpcHRzX3AsIHNjcmlwdCk7Cisg CisgICByZXR1cm4gMTsKKyB9CitAQCAtMzY2LDEwICs0NTksMTggQEAgc29ydF9zY3JpcHRzX2J5 X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjbworICAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFt ZSwgYi0+bmFtZSk7CisgfQorIAorLS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5k LiAgKi8KKysvKiBTcGVjaWFsIGludGVybmFsIEdEQiB2YWx1ZSBvZiBhdXRvX2xvYWRfaW5mb19z Y3JpcHRzJ3MgUEFUVEVSTiBpZGVudGlmeQorKyAgIHRoZSAiaW5mbyBhdXRvLWxvYWQgWFhYIiBj b21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkIHRocm91Z2ggdGhlIGdlbmVyYWwKKysgICAiaW5mbyBh dXRvLWxvYWQiIGludm9jYXRpb24uICBFeHRyYSBuZXdsaW5lIHdpbGwgYmUgcHJpbnRlZCBpZiBu ZWVkZWQuICAqLworK2NoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW10gPSAi IjsKKysKKysvKiBJbXBsZW1lbnRhdGlvbiBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRz IgorKyAgIChhbmQgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIikuICBMaXN0IHNjcmlw dHMgaW4gTEFOR1VBR0UgbWF0Y2hpbmcKKysgICBQQVRURVJOLiAgRlJPTV9UVFkgaXMgdGhlIHVz dWFsIEdEQiBib29sZWFuIGZvciB1c2VyIGludGVyYWN0aXZpdHkuICAqLworIAorLXN0YXRpYyB2 b2lkCistaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5 KQorK3ZvaWQKKythdXRvX2xvYWRfaW5mb19zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJv bV90dHksCisrCQkJY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgewor ICAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworICAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CitAQCAtNDAyLDE0ICs1MDMsMjIgQEAgaW5m b19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQorIAorICAgaWYgKHBzcGFjZV9p bmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCisgICAg IHsKKysgICAgICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEgZGF0YSA9IHsg JnNjcmlwdHMsIGxhbmd1YWdlIH07CisrCisgICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKKyAgICAg ICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxs b2Mgc3BhY2UuICAqLworICAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cywKKy0JCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZz Y3JpcHRzKTsKKysJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZkYXRhKTsKKyAg ICAgICBpbW1lZGlhdGVfcXVpdC0tOworICAgICB9CisgCisgICBucl9zY3JpcHRzID0gVkVDX2xl bmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOworKworKyAgLyogVGFibGUgaGVhZGVy IHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJnZGItc2NyaXB0czogICIgd291bGQgbm90IG1h dGNoCisrICAgICBpdHMgY29sdW1ucy4gICovCisrICBpZiAobnJfc2NyaXB0cyA+IDAgJiYgcGF0 dGVybiA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisrICAgIHVpX291dF90 ZXh0ICh1aW91dCwgIlxuIik7CisrCisgICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2lu X2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCisgCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlw dHNUYWJsZSIpOworIAorQEAgLTQ0MSw2ICs1NTAsMjkgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0 cyAoY2hhciAqcGF0dGVybiwgaQorICAgICB9CisgfQorIAorKy8qIFdyYXBwZXIgZm9yICJpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRv X2xvYWRfZ2RiX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt7CisrICBh dXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFn ZV9nZGIpOworK30KKysKKysvKiBJbXBsZW1lbnQgJ2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmlu aXQnLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBpZiAoYXV0b19sb2FkX2xvY2FsX2dk YmluaXRfcGF0aG5hbWUgPT0gTlVMTCkKKysgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAu Z2RiaW5pdCBmaWxlIHdhcyBub3QgZm91bmQuXG4iKSk7CisrICBlbHNlIGlmIChhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdF9sb2FkZWQpCisrICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdk YmluaXQgZmlsZSBcIiVzXCIgaGFzIGJlZW4gbG9hZGVkLlxuIiksCisrCQkgICAgIGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKKysgIGVsc2UKKysgICAgcHJpbnRmX2ZpbHRlcmVk IChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMgbm90IGJlZW4gbG9hZGVkLlxuIiks CisrCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKKyt9CisrCisgLyog UmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVEIG9mIFBT UEFDRV9JTkZPIHdhcyB1bnNldAorICAgIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBB bHdheXMgc2V0IFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVECisgICAgb2YgUFNQQUNF X0lORk8uICAqLworQEAgLTQ1NSw2ICs1ODcsMTMyIEBAIHNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludCAoc3RydWN0IGEKKyAgIHJldHVybiByZXR2YWw7CisgfQorIAorKy8qIFRoZSBvbmx5 IHZhbGlkICJzZXQgYXV0by1sb2FkIiBhcmd1bWVudCBpcyBvZmZ8MHxub3xkaXNhYmxlLiAgKi8K KysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfY21kIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCisreworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7CisrICBzaXplX3Qg bGVuZ3RoOworKworKyAgLyogU2VlIHBhcnNlX2JpbmFyeV9vcGVyYXRpb24gaW4gdXNlIGJ5IHRo ZSBzdWItY29tbWFuZHMuICAqLworKworKyAgbGVuZ3RoID0gYXJncyA/IHN0cmxlbiAoYXJncykg OiAwOworKworKyAgd2hpbGUgKGxlbmd0aCA+IDAgJiYgKGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJyAn IHx8IGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJ1x0JykpCisrICAgIGxlbmd0aC0tOworKworKyAgaWYg KGxlbmd0aCA9PSAwIHx8IChzdHJuY21wIChhcmdzLCAib2ZmIiwgbGVuZ3RoKSAhPSAwCisrCQkg ICAgICAmJiBzdHJuY21wIChhcmdzLCAiMCIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYgc3Ry bmNtcCAoYXJncywgIm5vIiwgbGVuZ3RoKSAhPSAwCisrCQkgICAgICAmJiBzdHJuY21wIChhcmdz LCAiZGlzYWJsZSIsIGxlbmd0aCkgIT0gMCkpCisrICAgIGVycm9yIChfKCJWYWxpZCBpcyBvbmx5 IGdsb2JhbCAnc2V0IGF1dG8tbG9hZCBubyc7ICIKKysJICAgICAib3RoZXJ3aXNlIGNoZWNrIHRo ZSBhdXRvLWxvYWQgc3ViLWNvbW1hbmRzLiIpKTsKKysKKysgIGZvciAobGlzdCA9ICphdXRvX2xv YWRfc2V0X2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQor KyAgICBpZiAobGlzdC0+dmFyX3R5cGUgPT0gdmFyX2Jvb2xlYW4pCisrICAgICAgeworKwlnZGJf YXNzZXJ0IChsaXN0LT50eXBlID09IHNldF9jbWQpOworKwlkb19zZXRzaG93X2NvbW1hbmQgKGFy Z3MsIGZyb21fdHR5LCBsaXN0KTsKKysgICAgICB9CisrfQorKworKy8qIEluaXRpYWxpemUgInNl dCBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lk KQorK3sKKysgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOworKworKyAg aWYgKHJldHZhbCA9PSBOVUxMKQorKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNs YXNzX21haW50ZW5hbmNlLCBzZXRfYXV0b19sb2FkX2NtZCwgXygiXAorK0F1dG8tbG9hZGluZyBz cGVjaWZpYyBzZXR0aW5ncy5cblwKKytDb25maWd1cmUgdmFyaW91cyBhdXRvLWxvYWQtc3BlY2lm aWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKKythdXRvbWF0aWMgbG9hZGluZyBvZiBQeXRob24gc2Ny aXB0cy4iKSwKKysJCSAgICAmcmV0dmFsLCAic2V0IGF1dG8tbG9hZCAiLAorKwkJICAgIDEvKmFs bG93LXVua25vd24qLywgJnNldGxpc3QpOworKworKyAgcmV0dXJuICZyZXR2YWw7CisrfQorKwor Ky8qIENvbW1hbmQgInNob3cgYXV0by1sb2FkIiBkaXNwbGF5cyBzdW1tYXJ5IG9mIGFsbCB0aGUg Y3VycmVudAorKyAgICJzaG93IGF1dG8tbG9hZCAiIHNldHRpbmdzLiAgKi8KKysKKytzdGF0aWMg dm9pZAorK3Nob3dfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorK3sK KysgIGNtZF9zaG93X2xpc3QgKCphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSwgZnJvbV90 dHksICIiKTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSAic2hvdyBhdXRvLWxvYWQgIiBjb21tYW5k cyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KioKKythdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCkKKyt7CisrICBzdGF0aWMgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysgIGlmIChyZXR2YWwgPT0gTlVMTCkK KysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwgc2hv d19hdXRvX2xvYWRfY21kLCBfKCJcCisrU2hvdyBhdXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0dGlu Z3MuXG5cCisrU2hvdyBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXV0by1sb2FkLXNwZWNpZmlj IHZhcmlhYmxlcyBzdWNoIGFzXG5cCisrYXV0b21hdGljIGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlw dHMuIiksCisrCQkgICAgJnJldHZhbCwgInNob3cgYXV0by1sb2FkICIsCisrCQkgICAgMC8qYWxs b3ctdW5rbm93biovLCAmc2hvd2xpc3QpOworKworKyAgcmV0dXJuICZyZXR2YWw7CisrfQorKwor Ky8qIENvbW1hbmQgImluZm8gYXV0by1sb2FkIiBkaXNwbGF5cyB3aGV0aGVyIHRoZSB2YXJpb3Vz IGF1dG8tbG9hZCBmaWxlcyBoYXZlCisrICAgYmVlbiBsb2FkZWQuICBUaGlzIGlzIHJlaW1wbGVt ZW50YXRpb24gb2YgY21kX3Nob3dfbGlzdCB3aGljaCBpbnNlcnRzCisrICAgbmV3bGluZXMgYXQg cHJvcGVyIHBsYWNlcy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9jbWQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqbGlzdDsKKysgIHN0cnVjdCBjbGVhbnVwICppbmZvbGlzdF9jaGFpbjsKKysgIHN0cnVjdCB1 aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKysKKysgIGluZm9saXN0X2NoYWluID0gbWFr ZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCAiaW5mb2xpc3QiKTsKKysK KysgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBO VUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKKysgICAgeworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpv cHRpb25fY2hhaW4KKysJPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlv dXQsICJvcHRpb24iKTsKKysKKysgICAgICBnZGJfYXNzZXJ0ICghbGlzdC0+cHJlZml4bGlzdCk7 CisrICAgICAgZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBub3Rfc2V0X2NtZCk7CisrCisrICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJuYW1lIiwgbGlzdC0+bmFtZSk7CisrICAg ICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiOiAgIik7CisrICAgICAgY21kX2Z1bmMgKGxpc3QsIGF1 dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCwgZnJvbV90dHkpOworKworKyAgICAgIC8q IENsb3NlIHRoZSB0dXBsZS4gICovCisrICAgICAgZG9fY2xlYW51cHMgKG9wdGlvbl9jaGFpbik7 CisrICAgIH0KKysKKysgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCisrICBkb19jbGVhbnVwcyAo aW5mb2xpc3RfY2hhaW4pOworK30KKysKKysvKiBJbml0aWFsaXplICJpbmZvIGF1dG8tbG9hZCAi IGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KKysKKytzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKgorK2F1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKQorK3sKKysgIHN0 YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOworKworKyAgaWYgKHJldHZhbCA9 PSBOVUxMKQorKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX2luZm8sIGlu Zm9fYXV0b19sb2FkX2NtZCwgXygiXAorK1ByaW50IGN1cnJlbnQgc3RhdHVzIG9mIGF1dG8tbG9h ZGVkIGZpbGVzLlxuXAorK1ByaW50IHdoZXRoZXIgdmFyaW91cyBmaWxlcyBsaWtlIFB5dGhvbiBz Y3JpcHRzIG9yIC5nZGJpbml0IGZpbGVzIGhhdmUgYmVlblxuXAorK2ZvdW5kIGFuZC9vciBsb2Fk ZWQuIiksCisrCQkgICAgJnJldHZhbCwgImluZm8gYXV0by1sb2FkICIsCisrCQkgICAgMC8qYWxs b3ctdW5rbm93biovLCAmaW5mb2xpc3QpOworKworKyAgcmV0dXJuICZyZXR2YWw7CisrfQorKwor IHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKKyAKKyB2b2lkCitAQCAtNDY1LDgg KzcyMywzOCBAQCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgCisgICBvYnNlcnZlcl9h dHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7CisgCistICBhZGRfaW5m byAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKy0JICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCist CSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxu XAorLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOworKyAgYWRkX3Nl dHNob3dfYm9vbGVhbl9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAg JmF1dG9fbG9hZF9nZGJfc2NyaXB0cywgXygiXAorK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9h ZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuIiksIF8oIlwKKytT aG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg c2NyaXB0cyBpcyBlbmFibGVkLiIpLAorKwkJCSAgIF8oIlwKKytJZiBlbmFibGVkLCBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNc blwKKythbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LlxuXAorK1RoaXMgb3B0aW9ucyBo YXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJ CSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzLAorKwkJCSAgIGF1dG9fbG9hZF9z ZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkp OworKworKyAgYWRkX2NtZCAoImdkYi1zY3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xv YWRfZ2RiX3NjcmlwdHMsCisrCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkg bG9hZGVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy5cblwKKytVc2FnZTogaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHMgW1JFR0VYUF0iKSwKKysJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQg KCkpOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJsb2NhbC1nZGJpbml0IiwgY2xh c3Nfc3VwcG9ydCwKKysJCQkgICAmYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIF8oIlwKKytFbmFi bGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGluIGN1cnJlbnQg ZGlyZWN0b3J5LiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyAuZ2RiaW5pdCBz Y3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZC4iKSwKKysJCQkgICBfKCJcCisr SWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4g ZGVidWdnZXIgc3RhcnRzXG5cCisrZnJvbSAuZ2RiaW5pdCBmaWxlIGluIGN1cnJlbnQgZGlyZWN0 b3J5LiAgU3VjaCBmaWxlcyBhcmUgZGVwcmVjYXRlZCxcblwKKyt1c2UgYSBzY3JpcHQgYXNzb2Np YXRlZCB3aXRoIGluZmVyaW9yIGV4ZWN1dGFibGUgZmlsZSBpbnN0ZWFkLlxuXAorK1RoaXMgb3B0 aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIp LAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCisrCQkJICAgYXV0 b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0 X2dldCAoKSk7CisrCisrICBhZGRfY21kICgibG9jYWwtZ2RiaW5pdCIsIGNsYXNzX2luZm8sIGlu Zm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCisrCSAgIF8oIlByaW50IHdoZXRoZXIgY3VycmVu dCBkaXJlY3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5cCisrVXNhZ2U6IGlu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKKysJICAgYXV0b19sb2FkX2luZm9fY21kbGlz dF9nZXQgKCkpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQu aAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2Fk LmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTE0Mzc1MTcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIw MAorQEAgLTIyLDE1ICsyMiwzNiBAQAorIAorIHN0cnVjdCBwcm9ncmFtX3NwYWNlOworIAorLWV4 dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKytzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdl CisreworKyAgY29uc3QgY2hhciAqc3VmZml4OworKworKyAgdm9pZCAoKnNvdXJjZV9zY3JpcHRf Zm9yX29iamZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJ ICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrfTsKKysKKytleHRlcm4gaW50IGdsb2JhbF9h dXRvX2xvYWQ7CisrCisrZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdDsKKytleHRl cm4gY2hhciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWU7CisrZXh0ZXJuIGludCBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQ7CisgCisgZXh0ZXJuIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKgorICAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGlu ZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7CisgZXh0ZXJuIGludCBtYXliZV9hZGRf c2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKKy0JCQkg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCk7CisrCQkJICAgICBj b25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCisrCQkJICAgICBjb25zdCBz dHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7CisgZXh0ZXJuIHZvaWQgYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJICAgICAgY29u c3QgY2hhciAqc3VmZml4KTsKKysJCQkJICAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFn ZSAqbGFuZ3VhZ2UpOworK2V4dGVybiB2b2lkIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgZXh0ZXJuIGludAorICAgc2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbyk7CisrZXh0ZXJuIGNoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW107 CisrZXh0ZXJuIHZvaWQgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50 IGZyb21fdHR5LAorKwkJCQkgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3Vh Z2UpOworKworK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zZXRf Y21kbGlzdF9nZXQgKHZvaWQpOworK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1 dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKytleHRlcm4gc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7CisgCisgI2VuZGlm IC8qIEFVVE9fTE9BRF9IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgt dGhyZWFkLWRiLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDEtMDQgMDk6MTc6MDUuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAw MDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKK0BAIC00MCw4ICs0MCwxMCBAQAorICNpbmNsdWRlICJv YnNlcnZlci5oIgorICNpbmNsdWRlICJsaW51eC1uYXQuaCIKKyAjaW5jbHVkZSAibGludXgtcHJv Y2ZzLmgiCisrI2luY2x1ZGUgImF1dG8tbG9hZC5oIgorIAorICNpbmNsdWRlIDxzaWduYWwuaD4K KysjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKyAjaWZkZWYgSEFWRV9HTlVfTElCQ19WRVJTSU9OX0gK KyAjaW5jbHVkZSA8Z251L2xpYmMtdmVyc2lvbi5oPgorQEAgLTc1LDYgKzc3LDIxIEBACisgCisg c3RhdGljIGNoYXIgKmxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aDsKKyAKKysvKiBTZXQgdG8gbm9u LXplcm8gaWYgdGhyZWFkX2RiIGF1dG8tbG9hZGluZyBpcyBlbmFibGVkCisrICAgYnkgdGhlICJz ZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgY29tbWFuZC4gICovCisrc3RhdGljIGludCBhdXRv X2xvYWRfdGhyZWFkX2RiID0gMTsKKysKKysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9f bG9hZF90aHJlYWRfZGIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZv aWQKKytzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCisrCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAq dmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9m IGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiAiCisrCQkJICAgICJpcyAlcy5cbiIpLAor KwkJICAgIHZhbHVlKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBzZXRfbGlidGhyZWFkX2RiX3Nl YXJjaF9wYXRoIChjaGFyICppZ25vcmVkLCBpbnQgZnJvbV90dHksCisgCQkJICAgICAgc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKmMpCitAQCAtMTE5LDYgKzEzNiwxMCBAQCBzdHJ1Y3QgdGhyZWFk X2RiX2luZm8KKyAgIC8qIEhhbmRsZSBmcm9tIGRsb3BlbiBmb3IgbGlidGhyZWFkX2RiLnNvLiAg Ki8KKyAgIHZvaWQgKmhhbmRsZTsKKyAKKysgIC8qIEFic29sdXRlIHBhdGhuYW1lIGZyb20gZ2Ri X3JlYWxwYXRoIHRvIGRpc2sgZmlsZSB1c2VkIGZvciBkbG9wZW4taW5nCisrICAgICBIQU5ETEUu ICBJdCBtYXkgYmUgTlVMTCBmb3Igc3lzdGVtIGxpYnJhcnkuICAqLworKyAgY2hhciAqZmlsZW5h bWU7CisrCisgICAvKiBTdHJ1Y3R1cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNz IGZvciB0aGUKKyAgICAgIDxwcm9jX3NlcnZpY2UuaD4gaW50ZXJmYWNlLiAgKi8KKyAgIHN0cnVj dCBwc19wcm9jaGFuZGxlIHByb2NfaGFuZGxlOworQEAgLTI0OCw2ICsyNjksOCBAQCBkZWxldGVf dGhyZWFkX2RiX2luZm8gKGludCBwaWQpCisgICBpZiAoaW5mby0+aGFuZGxlICE9IE5VTEwpCisg ICAgIGRsY2xvc2UgKGluZm8tPmhhbmRsZSk7CisgCisrICB4ZnJlZSAoaW5mby0+ZmlsZW5hbWUp OworKworICAgaWYgKGluZm9fcHJldikKKyAgICAgaW5mb19wcmV2LT5uZXh0ID0gaW5mby0+bmV4 dDsKKyAgIGVsc2UKK0BAIC04MDcsNiArODMwLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZCAoY29u c3QgY2hhciAqbGlicmFyeSkKKyAKKyAgIGluZm8gPSBhZGRfdGhyZWFkX2RiX2luZm8gKGhhbmRs ZSk7CisgCisrICAvKiBEbyBub3Qgc2F2ZSBzeXN0ZW0gbGlicmFyeSBuYW1lLCB0aGF0IG9uZSBp cyBhbHdheXMgdHJ1c3RlZC4gICovCisrICBpZiAoc3RyY2hyIChsaWJyYXJ5LCAnLycpICE9IE5V TEwpCisrICAgIGluZm8tPmZpbGVuYW1lID0gZ2RiX3JlYWxwYXRoIChsaWJyYXJ5KTsKKysKKyAg IGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaW5mbykpCisgICAgIHJldHVybiAxOworIAorQEAg LTg1Niw2ICs4ODMsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyICh2b2lkKQorIHsK KyAgIHN0cnVjdCBvYmpmaWxlICpvYmo7CisgCisrICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIp CisrICAgIHJldHVybiAwOworKworICAgQUxMX09CSkZJTEVTIChvYmopCisgICAgIGlmIChsaWJw dGhyZWFkX25hbWVfcCAob2JqLT5uYW1lKSkKKyAgICAgICB7CitAQCAtODk1LDYgKzkyNSw5IEBA IHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgorICAgY2hhciAqcGF0aDsK KyAgIGludCByZXN1bHQ7CisgCisrICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCisrICAgIHJl dHVybiAwOworKworICAgcGF0aCA9IHhtYWxsb2MgKGRpcl9sZW4gKyAxICsgc3RybGVuIChMSUJU SFJFQURfREJfU08pICsgMSk7CisgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGF0 aCk7CisgCitAQCAtMTgwMiw2ICsxODM1LDE1MCBAQCB0aHJlYWRfZGJfcmVzdW1lIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzCisgICBiZW5lYXRoLT50b19yZXN1bWUgKGJlbmVhdGgsIHB0aWQsIHN0 ZXAsIHNpZ25vKTsKKyB9CisgCisrLyogcXNvcnQgaGVscGVyIGZ1bmN0aW9uIGZvciBpbmZvX2F1 dG9fbG9hZF9saWJ0aHJlYWRfZGIsIHNvcnQgdGhlCisrICAgdGhyZWFkX2RiX2luZm8gcG9pbnRl cnMgcHJpbWFyaWx5IGJ5IHRoZWlyIEZJTEVOQU1FIGFuZCBzZWNvbmRhcmlseSBieSB0aGVpcgor KyAgIFBJRCwgYm90aCBpbiBhc2NlbmRpbmcgb3JkZXIuICAqLworKworK3N0YXRpYyBpbnQKKytp bmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0 IHZvaWQgKmJwKQorK3sKKysgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYSA9ICooc3RydWN0IHRo cmVhZF9kYl9pbmZvICoqKSBhcDsKKysgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYiA9ICooc3Ry dWN0IHRocmVhZF9kYl9pbmZvICoqKSBicDsKKysgIGludCByZXR2YWw7CisrCisrICByZXR2YWwg PSBzdHJjbXAgKGEtPmZpbGVuYW1lLCBiLT5maWxlbmFtZSk7CisrICBpZiAocmV0dmFsKQorKyAg ICByZXR1cm4gcmV0dmFsOworKworKyAgcmV0dXJuIChhLT5waWQgPiBiLT5waWQpIC0gKGEtPnBp ZCAtIGItPnBpZCk7CisrfQorKworKy8qIEltcGxlbWVudCAnaW5mbyBhdXRvLWxvYWQgbGlidGhy ZWFkLWRiJy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRf ZGIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91 dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBjb25zdCBjaGFyICpjcyA9IGFyZ3MgPyBhcmdzIDogIiI7 CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmluZm8sICoqYXJyYXk7CisrICB1bnNpZ25lZCBp bmZvX2NvdW50LCB1bmlxdWVfZmlsZW5hbWVzOworKyAgc2l6ZV90IG1heF9maWxlbmFtZV9sZW4s IG1heF9waWRzX2xlbiwgcGlkc19sZW47CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKysg IGNoYXIgKnBpZHM7CisrICBpbnQgaTsKKysKKysgIHdoaWxlIChpc3NwYWNlICgqY3MpKQorKyAg ICBjcysrOworKyAgaWYgKCpjcykKKysgICAgZXJyb3IgKF8oIidpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGInIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1ldGVycyIpKTsKKysKKysgIGluZm9f Y291bnQgPSAwOworKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBp bmZvLT5uZXh0KQorKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKKysgICAgICBpbmZv X2NvdW50Kys7CisrCisrICBhcnJheSA9IHhtYWxsb2MgKHNpemVvZiAoKmFycmF5KSAqIGluZm9f Y291bnQpOworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFycmF5KTsKKysKKysg IGluZm9fY291bnQgPSAwOworKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGlu Zm8gPSBpbmZvLT5uZXh0KQorKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKKysgICAg ICBhcnJheVtpbmZvX2NvdW50KytdID0gaW5mbzsKKysKKysgIC8qIFNvcnQgQVJSQVkgYnkgZmls ZW5hbWVzIGFuZCBQSURzLiAgKi8KKysKKysgIHFzb3J0IChhcnJheSwgaW5mb19jb3VudCwgc2l6 ZW9mICgqYXJyYXkpLAorKwkgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUpOwor KworKyAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdW5pcXVlIGZpbGVuYW1lcyAocm93cykg YW5kIHRoZSBtYXhpbXVtIHN0cmluZworKyAgICAgbGVuZ3RoIG9mIFBJRHMgbGlzdCBmb3IgdGhl IHVuaXF1ZSBmaWxlbmFtZXMgKGNvbHVtbnMpLiAgKi8KKysKKysgIHVuaXF1ZV9maWxlbmFtZXMg PSAwOworKyAgbWF4X2ZpbGVuYW1lX2xlbiA9IDA7CisrICBtYXhfcGlkc19sZW4gPSAwOworKyAg cGlkc19sZW4gPSAwOworKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7IGkrKykKKysgICAg eworKyAgICAgIGludCBwaWQgPSBhcnJheVtpXS0+cGlkOworKyAgICAgIHNpemVfdCB0aGlzX3Bp ZF9sZW47CisrCisrICAgICAgZm9yICh0aGlzX3BpZF9sZW4gPSAwOyBwaWQgIT0gMDsgcGlkIC89 IDEwKQorKwl0aGlzX3BpZF9sZW4rKzsKKysKKysgICAgICBpZiAoaSA9PSAwIHx8IHN0cmNtcCAo YXJyYXlbaSAtIDFdLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSAhPSAwKQorKwl7Cisr CSAgdW5pcXVlX2ZpbGVuYW1lcysrOworKwkgIG1heF9maWxlbmFtZV9sZW4gPSBtYXggKG1heF9m aWxlbmFtZV9sZW4sCisrCQkJCSAgc3RybGVuIChhcnJheVtpXS0+ZmlsZW5hbWUpKTsKKysKKysJ ICBpZiAoaSA+IDApCisrCSAgICB7CisrCSAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7 CisrCSAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7Cisr CSAgICB9CisrCSAgcGlkc19sZW4gPSAwOworKwl9CisrICAgICAgcGlkc19sZW4gKz0gdGhpc19w aWRfbGVuICsgc3RybGVuICgiLCAiKTsKKysgICAgfQorKyAgaWYgKGkpCisrICAgIHsKKysgICAg ICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOworKyAgICAgIG1heF9waWRzX2xlbiA9IG1heCAo bWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7CisrICAgIH0KKysKKysgIC8qIFRhYmxlIGhlYWRlciBz aGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAibGlidGhyZWFkLWRiOiAgIiB3b3VsZCBub3QgbWF0 Y2gKKysgICAgIGl0cyBjb2x1bW5zLiAgKi8KKysgIGlmIChpbmZvX2NvdW50ID4gMCAmJiBhcmdz ID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKKysgICAgdWlfb3V0X3RleHQg KHVpb3V0LCAiXG4iKTsKKysKKysgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5k ICh1aW91dCwgMiwgdW5pcXVlX2ZpbGVuYW1lcywKKysJCQkJICAgICAgICJMaW51eFRocmVhZERi VGFibGUiKTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBtYXhfZmlsZW5hbWVf bGVuLCB1aV9sZWZ0LCAiZmlsZW5hbWUiLAorKwkJICAgICAgICJGaWxlbmFtZSIpOworKyAgdWlf b3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIHBpZHNfbGVuLCB1aV9sZWZ0LCAiUElEcyIsICJQaWRz Iik7CisrICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOworKworKyAgcGlkcyA9IHhtYWxsb2Mg KG1heF9waWRzX2xlbiArIDEpOworKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGlkcyk7CisrCisr ICAvKiBOb3RlIEkgaXMgaW5jcmVtZW50ZWQgaW5zaWRlIHRoZSBjeWNsZSwgbm90IGF0IGl0cyBl bmQuICAqLworKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7KQorKyAgICB7CisrICAgICAg c3RydWN0IGNsZWFudXAgKmNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9l bmQgKHVpb3V0LCBOVUxMKTsKKysgICAgICBjaGFyICpwaWRzX2VuZDsKKysKKysgICAgICBpbmZv ID0gYXJyYXlbaV07CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmaWxlbmFt ZSIsIGluZm8tPmZpbGVuYW1lKTsKKysgICAgICBwaWRzX2VuZCA9IHBpZHM7CisrCisrICAgICAg d2hpbGUgKGkgPCBpbmZvX2NvdW50ICYmIHN0cmNtcCAoaW5mby0+ZmlsZW5hbWUsIGFycmF5W2ld LT5maWxlbmFtZSkgPT0gMCkKKysJeworKwkgIGlmIChwaWRzX2VuZCAhPSBwaWRzKQorKwkgICAg eworKwkgICAgICAqcGlkc19lbmQrKyA9ICcsJzsKKysJICAgICAgKnBpZHNfZW5kKysgPSAnICc7 CisrCSAgICB9CisrCSAgcGlkc19lbmQgKz0geHNucHJpbnRmIChwaWRzX2VuZCwgJnBpZHNbbWF4 X3BpZHNfbGVuICsgMV0gLSBwaWRzX2VuZCwKKysJCQkJICIldSIsIGFycmF5W2ldLT5waWQpOwor KwkgIGdkYl9hc3NlcnQgKHBpZHNfZW5kIDwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0pOworKwor KwkgIGkrKzsKKysJfQorKyAgICAgICpwaWRzX2VuZCA9ICdcMCc7CisrCisrICAgICAgdWlfb3V0 X2ZpZWxkX3N0cmluZyAodWlvdXQsICJwaWRzIiwgcGlkcyk7CisrCisrICAgICAgdWlfb3V0X3Rl eHQgKHVpb3V0LCAiXG4iKTsKKysgICAgICBkb19jbGVhbnVwcyAoY2hhaW4pOworKyAgICB9Cisr CisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisrCisrICBpZiAoaW5mb19jb3VudCA9PSAwKQor KyAgICB1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsIF8oIk5vIGF1dG8tbG9hZGVkIGxpYnRocmVh ZC1kYi5cbiIpKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpbml0X3RocmVhZF9kYl9vcHMgKHZv aWQpCisgeworQEAgLTE4NjMsNiArMjA0MCwyMyBAQCBXaGVuIG5vbi16ZXJvLCBsaWJ0aHJlYWQt ZGIgZGVidWdnaW5nIGlzCisgCQkJICAgIHNob3dfbGlidGhyZWFkX2RiX2RlYnVnLAorIAkJCSAg ICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisgCisrICBhZGRfc2V0c2hvd19ib29s ZWFuX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9h ZF90aHJlYWRfZGIsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgaW5m ZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1dG8t bG9hZGluZyBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgZW5hYmxlZC4iKSwgXygi XAorK0lmIGVuYWJsZWQsIGxpYnRocmVhZF9kYiB3aWxsIGJlIHNlYXJjaGVkIGluICdzZXQgbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRoJ1xuXAorK2xvY2F0aW9ucyB0byBsb2FkIGxpYnRocmVhZF9k YiBjb21wYXRpYmxlIHdpdGggdGhlIGluZmVyaW9yLlxuXAorK1N0YW5kYXJkIHN5c3RlbSBsaWJ0 aHJlYWRfZGIgc3RpbGwgZ2V0cyBsb2FkZWQgZXZlbiB3aXRoIHRoaXMgb3B0aW9uIG9mZi5cblwK KytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGlu ZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIsCisrCQkJ ICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBhdXRvX2xvYWRfc2hvd19j bWRsaXN0X2dldCAoKSk7CisrCisrICBhZGRfY21kICgibGlidGhyZWFkLWRiIiwgY2xhc3NfaW5m bywgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLAorKwkgICBfKCJQcmludCB0aGUgbGlzdCBv ZiBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLlxuXAorK1VzYWdlOiBpbmZv IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiKSwKKysJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9n ZXQgKCkpOworKworICAgLyogQWRkIG91cnNlbHZlcyB0byBvYmpmaWxlIGV2ZW50IGNoYWluLiAg Ki8KKyAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFkX2RiX25ld19vYmpmaWxl KTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ0 OjI2Ljk1NzQzNzUwMyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwky MDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAorQEAgLTk0NSw4ICs5NDUsOCBAQCBj YXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgLyogU2tpcCBhdXRvLWxvYWRpbmcgc2VjdGlv bi1zcGVjaWZpZWQgc2NyaXB0cyB1bnRpbCB3ZSd2ZSBzb3VyY2VkCisgICAgICBsb2NhbF9nZGJp bml0ICh3aGljaCBpcyBvZnRlbiB1c2VkIHRvIGF1Z21lbnQgdGhlIHNvdXJjZSBzZWFyY2gKKyAg ICAgIHBhdGgpLiAgKi8KKy0gIHNhdmVfYXV0b19sb2FkID0gZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZDsKKy0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAwOworKyAgc2F2ZV9hdXRvX2xvYWQgPSBn bG9iYWxfYXV0b19sb2FkOworKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IDA7CisgCisgICBpZiAoZXhl Y2FyZyAhPSBOVUxMCisgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKK0BAIC0xMDIyLDE0ICsxMDIy LDI0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgCisgICAvKiBSZWFkIHRoZSAuZ2Ri aW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBpc24ndAorICAgICAg dGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3VsZCBleGlzdCwgYWxz bykuICAqLworLSAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKKy0gICAg Y2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsIFJF VFVSTl9NQVNLX0FMTCk7CisrICBpZiAobG9jYWxfZ2RiaW5pdCkKKysgICAgeworKyAgICAgIGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJp bml0KTsKKysKKysgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxf Z2RiaW5pdCkKKysJeworKwkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7Cisr CisrCSAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQs IDAsCisrCQkJCVJFVFVSTl9NQVNLX0FMTCk7CisrCX0KKysgICAgfQorIAorICAgLyogTm93IHRo YXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRpb25zIGhhdmUg YmVlbgorICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBtZW50aW9uZWQg aW4gU1lNQVJHLgorICAgICAgV2Ugd2FpdCB1bnRpbCBub3cgYmVjYXVzZSBpdCBpcyBjb21tb24g dG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2VhcmNoCisgICAgICBwYXRoIGluIGxvY2FsX2dkYmluaXQu ICAqLworLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOworKyAgZ2xv YmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOworICAgQUxMX09CSkZJTEVTIChvYmpmaWxl KQorICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisgCitAQCAt MTE5Niw3ICsxMjA2LDcgQEAgQXQgc3RhcnR1cCwgR0RCIHJlYWRzIHRoZSBmb2xsb3dpbmcgaW5p dAorICIpLCBob21lX2dkYmluaXQpOworICAgaWYgKGxvY2FsX2dkYmluaXQpCisgICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoc3RyZWFtLCBfKCJcCistICAgKiBsb2NhbCBpbml0IGZpbGU6IC4vJXNc blwKKysgICAqIGxvY2FsIGluaXQgZmlsZSAoc2VlIGFsc28gJ3NldCBhdXRvLWxvYWQgbG9jYWwt Z2RiaW5pdCcpOiAuLyVzXG5cCisgIiksIGxvY2FsX2dkYmluaXQpOworICAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXG5cCisgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHR5cGUgXCJoZWxwXCIgZnJvbSB3 aXRoaW4gR0RCLCBvciBjb25zdWx0IHRoZVxuXAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDQ6MjYuOTI4NDM3NTc3ICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQt MTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCitAQCAtMTAzNCw2ICsxMDM0LDcgQEAgWW91IGNh biBydW4gQHZhbHVle0dEQk59IGluIHZhcmlvdXMgYWx0ZQorIGJhdGNoIG1vZGUgb3IgcXVpZXQg bW9kZS4KKyAKKyBAdGFibGUgQGNvZGUKKytAYW5jaG9yey1ueH0KKyBAaXRlbSAtbngKKyBAaXRl bXggLW4KKyBAY2luZGV4IEBjb2Rley0tbnh9CitAQCAtMTI2NSw2ICsxMjY2LDcgQEAgSGVyZSdz IHRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0IEB2YWx1ZXtHRAorIFNldHMgdXAgdGhlIGNvbW1hbmQg aW50ZXJwcmV0ZXIgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb21tYW5kIGxpbmUKKyAoQHB4cmVme01v ZGUgT3B0aW9ucywgaW50ZXJwcmV0ZXJ9KS4KKyAKKytAYW5jaG9ye09wdGlvbiAtaW5pdC1ldmFs LWNvbW1hbmR9CisgQGl0ZW0KKyBFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBz cGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAorIEBzYW1wey1peH0gb3B0aW9ucyBpbiB0 aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQorQEAgLTEy NzksNiArMTI4MSw3IEBAIHVzZWQgd2hlbiBidWlsZGluZyBAdmFsdWV7R0RCTn07IEBweHJlZnsK KyAgLFN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gYW5kIHNldHRpbmdzfSkgYW5kIGV4ZWN1dGVz IGFsbCB0aGUgY29tbWFuZHMgaW4KKyB0aGF0IGZpbGUuCisgCisrQGFuY2hvcntIb21lIERpcmVj dG9yeSBJbml0IEZpbGV9CisgQGl0ZW0KKyBSZWFkcyB0aGUgaW5pdCBmaWxlIChpZiBhbnkpIGlu IHlvdXIgaG9tZSBkaXJlY3RvcnlAZm9vdG5vdGV7T24KKyBET1MvV2luZG93cyBzeXN0ZW1zLCB0 aGUgaG9tZSBkaXJlY3RvcnkgaXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5IHRoZQorQEAgLTEyODgs OSArMTI5MSwxMiBAQCB0aGF0IGZpbGUuCisgQGl0ZW0KKyBQcm9jZXNzZXMgY29tbWFuZCBsaW5l IG9wdGlvbnMgYW5kIG9wZXJhbmRzLgorIAorK0BhbmNob3J7SW5pdCBGaWxlIGluIHRoZSBDdXJy ZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0KKyBAaXRlbQorIFJlYWRzIGFuZCBleGVjdXRl cyB0aGUgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQKKy13 b3JraW5nIGRpcmVjdG9yeS4gIFRoaXMgaXMgb25seSBkb25lIGlmIHRoZSBjdXJyZW50IGRpcmVj dG9yeSBpcworK3dvcmtpbmcgZGlyZWN0b3J5IGFzIGxvbmcgYXMgQHNhbXB7c2V0IGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0fSBpcyBzZXQgdG8KKytAc2FtcHtvbn0gKEBweHJlZntJbml0IEZpbGUg aW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSkuCisrVGhpcyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1 cnJlbnQgZGlyZWN0b3J5IGlzCisgZGlmZmVyZW50IGZyb20geW91ciBob21lIGRpcmVjdG9yeS4g IFRodXMsIHlvdSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lCisgaW5pdCBmaWxlLCBvbmUgZ2VuZXJp YyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LCBhbmQgYW5vdGhlciwgc3BlY2lmaWMKKyB0byB0aGUg cHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2luZywgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3UgaW52 b2tlCitAQCAtMTMwNiw3ICsxMzEyLDcgQEAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSB0aGUgYXV0 by1sb2FkaW5nCisgeW91IG11c3QgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAK KyBAc21hbGxleGFtcGxlCistJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIg bXlwcm9ncmFtCisrJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvZmYi IG15cHJvZ3JhbQorIEBlbmQgc21hbGxleGFtcGxlCisgCisgT3B0aW9uIEBzYW1wey1leH0gZG9l cyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0dXJuZWQKK0BAIC0y ODkxLDYgKzI4OTcsNyBAQCBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCisgQHhyZWZ7 U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNocG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFi b3V0Cisgd2F0Y2hwb2ludHMgaW4gcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorIAor K0BhbmNob3J7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KKyBAdGFibGUgQGNvZGUKKyBA a2luZGV4IHNldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgKKyBAY2luZGV4IHNlYXJjaCBwYXRo IGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitAQCAtMjkwNSwxMSArMjkxMiwxNSBAQCBtYWNyby4K KyBPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBzeXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNl cyBhIGBgaGVscGVyJycKKyBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcnkgdG8gb2J0YWluIGlu Zm9ybWF0aW9uIGFib3V0IHRocmVhZHMgaW4gdGhlCisgaW5mZXJpb3IgcHJvY2Vzcy4gIEB2YWx1 ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CistdG8gZmlu ZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LgorK3RvIGZpbmQgQGNvZGV7bGlidGhyZWFkX2RifS4gIEB2 YWx1ZXtHREJOfSBhbHNvIGNvbnN1bHRzIGZpcnN0IGlmIGluZmVyaW9yCisrc3BlY2lmaWMgdGhy ZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGxvYWRpbmcgaXMgZW5hYmxlZAorK2J5IEBzYW1we3NldCBh dXRvLWxvYWQgbGlidGhyZWFkLWRifSAoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4K KyAKKyBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9CisgcmVmZXJzIHRvIHRoZSBkZWZhdWx0IHN5c3RlbSBkaXJlY3RvcmllcyB0 aGF0IGFyZQorLW5vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMu Cisrbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllcy4gIFRoZSBA c2FtcHskc2Rpcn0gZW50cnkKKytpcyB0aGUgb25seSBraW5kIG5vdCBuZWVkaW5nIHRvIGJlIGVu YWJsZWQgYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrKEBweHJlZntsaWJ0 aHJlYWRfZGIuc28uMSBmaWxlfSkuCisgCisgQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRwZGlyfSBm b3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQorIHJlZmVycyB0byB0aGUgZGlyZWN0 b3J5IGZyb20gd2hpY2ggQGNvZGV7bGlicHRocmVhZH0KK0BAIC0yMDMyMCw2ICsyMDMzMSw3IEBA IGRlc2NyaWJlZCBoZXJlLgorICogU2NyZWVuIFNpemU6OiAgICAgICAgICAgICAgICAgU2NyZWVu IHNpemUKKyAqIE51bWJlcnM6OiAgICAgICAgICAgICAgICAgICAgIE51bWJlcnMKKyAqIEFCSTo6 ICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBjdXJyZW50IEFCSQorKyog QXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIGFzc29j aWF0ZWQgZmlsZXMKKyAqIE1lc3NhZ2VzL1dhcm5pbmdzOjogICAgICAgICAgIE9wdGlvbmFsIHdh cm5pbmdzIGFuZCBtZXNzYWdlcworICogRGVidWdnaW5nIE91dHB1dDo6ICAgICAgICAgICAgT3B0 aW9uYWwgbWVzc2FnZXMgYWJvdXQgaW50ZXJuYWwgaGFwcGVuaW5ncworICogT3RoZXIgTWlzYyBT ZXR0aW5nczo6ICAgICAgICAgT3RoZXIgTWlzY2VsbGFuZW91cyBTZXR0aW5ncworQEAgLTIwNzQ1 LDYgKzIwNzU3LDIyNyBAQCBXaXRoIG5vIGFyZ3VtZW50LCBzaG93IHRoZSBsaXN0IG9mIHN1cHBv CisgU2V0IHRoZSBjdXJyZW50IENAdHsrK30gQUJJIHRvIEB2YXJ7YWJpfSwgb3IgcmV0dXJuIHRv IGF1dG9tYXRpYyBkZXRlY3Rpb24uCisgQGVuZCB0YWJsZQorIAorK0Bub2RlIEF1dG8tbG9hZGlu ZworK0BzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBhc3NvY2lhdGVkIGZpbGVzCisrQGNp bmRleCBhdXRvLWxvYWRpbmcKKysKKytAdmFsdWV7R0RCTn0gc29tZXRpbWVzIHJlYWRzIGZpbGVz IHdpdGggY29tbWFuZHMgYW5kIHNldHRpbmdzIGF1dG9tYXRpY2FsbHksCisrd2l0aG91dCBiZWlu ZyBleHBsaWNpdGx5IHRvbGQgc28gYnkgdGhlIHVzZXIuICBXZSBjYWxsIHRoaXMgZmVhdHVyZQor K0BkZm57YXV0by1sb2FkaW5nfS4gIFdoaWxlIGF1dG8tbG9hZGluZyBpcyB1c2VmdWwgZm9yIGF1 dG9tYXRpY2FsbHkgYWRhcHRpbmcKKytAdmFsdWV7R0RCTn0gdG8gdGhlIG5lZWRzIG9mIHlvdXIg cHJvamVjdCwgaXQgY2FuIHNvbWV0aW1lcyBwcm9kdWNlIHVuZXhwZWN0ZWQKKytyZXN1bHRzIG9y IGludHJvZHVjZSBzZWN1cml0eSByaXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1 bnRydXN0ZWQKKytzb3VyY2VzKS4KKysKKytGb3IgdGhlc2UgcmVhc29ucywgQHZhbHVle0dEQk59 IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxldCB5b3UKKytjb250cm9sIHdoZW4g dG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBzaG91bGQgYmUgYXV0by1sb2FkZWQu CisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIG9mZn0KKytAa2luZGV4 IHNldCBhdXRvLWxvYWQgb2ZmCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBvZmYKKytHbG9iYWxseSBk aXNhYmxlIGxvYWRpbmcgb2YgYWxsIGF1dG8tbG9hZGVkIGZpbGVzLgorK1lvdSBtYXkgd2FudCB0 byB1c2UgdGhpcyBjb21tYW5kIHdpdGggdGhlIEBzYW1wey1pZXh9IG9wdGlvbgorKyhAcHhyZWZ7 T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0pIHN1Y2ggYXM6CisrQHNtYWxsZXhhbXBsZQorKyQg QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBvZmYiIHVudHJ1c3RlZC1leGVjdXRhYmxlIGNv cmVmaWxlfQorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQmUgYXdhcmUgdGhhdCBzeXN0ZW0gaW5p dCBmaWxlIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0pCisrYW5kIGluaXQgZmls ZXMgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5IChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBG aWxlfSkKKytzdGlsbCBnZXQgcmVhZCAoYXMgdGhleSBjb21lIGZyb20gZ2VuZXJhbGx5IHRydXN0 ZWQgZGlyZWN0b3JpZXMpLgorK1RvIHByZXZlbnQgQHZhbHVle0dEQk59IGZyb20gYXV0by1sb2Fk aW5nIGV2ZW4gdGhvc2UgaW5pdCBmaWxlcywgdXNlIHRoZQorK0BvcHRpb257LW54fSBvcHRpb24g KEBweHJlZntNb2RlIE9wdGlvbnN9KSwgaW4gYWRkaXRpb24gdG8KKytAY29kZXtzZXQgYXV0by1s b2FkIG5vfS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkfQorK0BraW5kZXggc2hvdyBhdXRv LWxvYWQKKytAaXRlbSBzaG93IGF1dG8tbG9hZAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcg b2YgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaXMgZW5hYmxlZAorK29y IGRpc2FibGVkLgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2RiKSBzaG93IGF1dG8tbG9hZAorK2dk Yi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg c2NyaXB0cyBpcyBvbi4KKytsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Ig c3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorK2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRp bmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCisrcHl0 aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCisrQGVu ZCBzbWFsbGV4YW1wbGUKKysKKytAYW5jaG9ye2luZm8gYXV0by1sb2FkfQorK0BraW5kZXggaW5m byBhdXRvLWxvYWQKKytAaXRlbSBpbmZvIGF1dG8tbG9hZAorK1ByaW50IHdoZXRoZXIgZWFjaCBz cGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaGF2ZSBiZWVuIGF1dG8tbG9hZGVkIG9y Cisrbm90LgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2RiKSBpbmZvIGF1dG8tbG9hZAorK2dkYi1z Y3JpcHRzOgorK0xvYWRlZCAgU2NyaXB0CisrWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2Ri LmdkYgorK2xpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi4KKytsb2Nh bC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hvbWUvdXNlci9nZGIvLmdkYmluaXQi IGhhcyBiZWVuIGxvYWRlZC4KKytweXRob24tc2NyaXB0czoKKytMb2FkZWQgIFNjcmlwdAorK1ll cyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQorK0BlbmQgc21hbGxleGFtcGxlCisrQGVu ZCB0YWJsZQorKworK1RoZXNlIGFyZSB2YXJpb3VzIGtpbmRzIG9mIGZpbGVzIEB2YWx1ZXtHREJO fSBjYW4gYXV0b21hdGljYWxseSBsb2FkOgorKworK0BpdGVtaXplIEBidWxsZXQKKytAaXRlbQor K0B4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8t bG9hZCBweXRob24tc2NyaXB0c30uCisrQGl0ZW0KKytAeHJlZntvYmpmaWxlLWdkYi5nZGIgZmls ZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KKytAaXRl bQorK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LAorK2NvbnRyb2xsZWQgYnkg QHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KKytAaXRlbQorK0B4cmVme0luaXQg RmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9LAorK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQg YXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0BpdGVtCisrQHhyZWZ7bGlidGhyZWFkX2RiLnNv LjEgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0u CisrQGVuZCBpdGVtaXplCisrCisrVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1h bmRzIGZvciB0aGUgYXV0by1sb2FkaW5nOgorKworK0BtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlv bnMgLjUgLjUKKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIG9mZn0uCisrQHRhYiBEaXNhYmxl IGF1dG8tbG9hZGluZyBnbG9iYWxseS4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZH0uCisr QHRhYiBTaG93IHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgorK0BpdGVtIEB4cmVme2lu Zm8gYXV0by1sb2FkfS4KKytAdGFiIFNob3cgc3RhdGUgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgor K0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgQ29udHJvbCBm b3IgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8t bG9hZCBnZGItc2NyaXB0c30uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IGNv bW1hbmQgc2NyaXB0cy4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30u CisrQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0 ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQHRhYiBDb250cm9sIGZv ciBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQ eXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 c30uCisrQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKytA aXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0B0YWIgQ29udHJvbCBm b3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntzaG93 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiBpbml0IGZp bGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2Fk IGxvY2FsLWdkYmluaXR9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBpbml0IGZpbGUgaW4gdGhlIGN1 cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRi fS4KKytAdGFiIENvbnRyb2wgZm9yIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKytAaXRlbSBA eHJlZntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9m IHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGJ9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJh cnkuCisrQGVuZCBtdWx0aXRhYmxlCisrCisrQG1lbnUKKysqIEluaXQgRmlsZSBpbiB0aGUgQ3Vy cmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0fQorKyogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9z aG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKysqIG9iamZpbGUtZ2RiLmdkYiBmaWxl OjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0 fQorK0B4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgorK0BlbmQgbWVudQorKworK0Bub2RlIElu aXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkKKytAc3Vic2VjdGlvbiBBdXRvbWF0aWNh bGx5IGxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorK0BjaW5kZXgg YXV0by1sb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKysKKytCeSBk ZWZhdWx0LCBAdmFsdWV7R0RCTn0gcmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjYW5uZWQgc2VxdWVu Y2VzIG9mIGNvbW1hbmRzCisrZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQg d29ya2luZyBkaXJlY3RvcnksCisrc2VlIEByZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERp cmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0uCisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQg YXV0by1sb2FkIGxvY2FsLWdkYmluaXR9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIGxvY2FsLWdk YmluaXQKKytAaXRlbSBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgW29ufG9mZl0KKytFbmFi bGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29t bWFuZHMKKysoQHB4cmVme1NlcXVlbmNlc30pIGZvdW5kIGluIGluaXQgZmlsZSBpbiB0aGUgY3Vy cmVudCBkaXJlY3RvcnkuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0 fQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorK0BpdGVtIHNob3cgYXV0 by1sb2FkIGxvY2FsLWdkYmluaXQKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhlCisrY3VycmVudCBk aXJlY3RvcnkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKysKKytAYW5jaG9ye2luZm8gYXV0by1s b2FkIGxvY2FsLWdkYmluaXR9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0 CisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorK1ByaW50IHdoZXRoZXIgY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQgZmlsZSBpbiB0aGUKKytjdXJyZW50 IGRpcmVjdG9yeSBoYXZlIGJlZW4gYXV0by1sb2FkZWQuCisrQGVuZCB0YWJsZQorKworK0Bub2Rl IGxpYnRocmVhZF9kYi5zby4xIGZpbGUKKytAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRp bmcgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5CisrQGNpbmRleCBhdXRvLWxvYWRpbmcgbGlidGhy ZWFkX2RiLnNvLjEKKysKKytUaGlzIGZlYXR1cmUgaXMgY3VycmVudGx5IHByZXNlbnQgb25seSBv biBAc2N7Z251fS9MaW51eCBuYXRpdmUgaG9zdHMuCisrCisrQHZhbHVle0dEQk59IHJlYWRzIGlu IHNvbWUgY2FzZXMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGZyb20gcGxhY2VzIHNwZWNpZmlj CisrdG8gdGhlIGluZmVyaW9yIChAcHhyZWZ7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0p LgorKworK1RoZSBzcGVjaWFsIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cnkg QHNhbXB7JHNkaXJ9IGlzIHByb2Nlc3NlZAorK3dpdGhvdXQgY2hlY2tpbmcgdGhpcyBAc2FtcHtz ZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gc3dpdGNoIGFzIHN5c3RlbQorK2xpYnJhcmllcyBo YXZlIHRvIGJlIHRydXN0ZWQgaW4gZ2VuZXJhbC4gIEluIGFsbCBvdGhlciBjYXNlcyBvZgorK0Bz YW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cmllcyBAdmFsdWV7R0RCTn0gY2hlY2tz IGZpcnN0IGlmIEBzYW1we3NldAorK2F1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IGlzIGVuYWJsZWQg YmVmb3JlIHRyeWluZyB0byBvcGVuIHN1Y2ggdGhyZWFkIGRlYnVnZ2luZworK2xpYnJhcnkuCisr CisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytA a2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGIgW29ufG9mZl0KKytFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5n IG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKysKKytAYW5j aG9ye3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IHNob3cgYXV0by1sb2Fk IGxpYnRocmVhZC1kYgorK0BpdGVtIHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK1Nob3cg d2hldGhlciBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2lu ZyBsaWJyYXJ5IGlzCisrZW5hYmxlZCBvciBkaXNhYmxlZC4KKysKKytAYW5jaG9ye2luZm8gYXV0 by1sb2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1k YgorK0BpdGVtIGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK1ByaW50IHRoZSBsaXN0IG9m IGFsbCBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJpZXMg YW5kCisrZm9yIGVhY2ggc3VjaCBsaWJyYXJ5IHByaW50IGxpc3Qgb2YgaW5mZXJpb3IgQHZhcntw aWR9cyB1c2luZyBpdC4KKytAZW5kIHRhYmxlCisrCisrQG5vZGUgb2JqZmlsZS1nZGIuZ2RiIGZp bGUKKytAc3Vic2VjdGlvbiBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlCisr QGNpbmRleCBhdXRvLWxvYWRpbmcgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifQorKworK0B2 YWx1ZXtHREJOfSB0cmllcyB0byBsb2FkIGFuIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0g ZmlsZSBjb250YWluaW5nCisrY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAoQHB4cmVme1Nl cXVlbmNlc30pLCBhcyBsb25nIGFzIEBzYW1we3NldAorK2F1dG8tbG9hZCBnZGItc2NyaXB0c30g aXMgc2V0IHRvIEBzYW1we29ufS4KKysKKytGb3IgbW9yZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRo ZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9hZGluZworK2Rlc2NyaXB0aW9uIChAcHhy ZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0pLgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0 IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMKKytAaXRlbSBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtvbnxvZmZdCisrRW5hYmxlIG9y IGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IHNjcmlwdHMuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2lu ZGV4IHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQgZ2Ri LXNjcmlwdHMKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkIG9yCisrZGlzYWJsZWQuCisrCisrQGFuY2hv cntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2luZGV4IGluZm8gYXV0by1sb2FkIGdk Yi1zY3JpcHRzCisrQGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIGNhbm5lZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cworK0BpdGVtIGluZm8gYXV0by1sb2FkIGdkYi1zY3Jp cHRzIFtAdmFye3JlZ2V4cH1dCisrUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfQorK2F1dG8tbG9hZGVkLgor K0BlbmQgdGFibGUKKysKKytJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0aAorK21hdGNoaW5nIG5hbWVzIGFyZSBw cmludGVkLgorKworIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCisgQHNlY3Rpb24gT3B0aW9uYWwg V2FybmluZ3MgYW5kIE1lc3NhZ2VzCisgCitAQCAtMjE2MTYsNyArMjE4NDksNyBAQCBhdXRvbWF0 aWNhbGx5IGltcG9ydGVkIHdoZW4gQHZhbHVle0dEQk59CisgQG1lbnUKKyAqIFB5dGhvbiBDb21t YW5kczo6ICAgICAgICAgICAgIEFjY2Vzc2luZyBQeXRob24gZnJvbSBAdmFsdWV7R0RCTn0uCisg KiBQeXRob24gQVBJOjogICAgICAgICAgICAgICAgICBBY2Nlc3NpbmcgQHZhbHVle0dEQk59IGZy b20gUHl0aG9uLgorLSogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxs eSBsb2FkaW5nIFB5dGhvbiBjb2RlLgorKyogUHl0aG9uIEF1dG8tbG9hZGluZzo6ICAgICAgICAg QXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgorICogUHl0aG9uIG1vZHVsZXM6OiAg ICAgICAgICAgICAgUHl0aG9uIG1vZHVsZXMgcHJvdmlkZWQgYnkgQHZhbHVle0dEQk59LgorIEBl bmQgbWVudQorIAorQEAgLTIyNzk5LDcgKzIzMDMyLDcgQEAgVGhpcyBwcmFjdGljZSB3aWxsIGVu YWJsZSBAdmFsdWV7R0RCTn0gdAorIHlvdXIgcHJldHR5LXByaW50ZXJzIGF0IHRoZSBzYW1lIHRp bWUsIGJlY2F1c2UgdGhleSB3aWxsIGhhdmUKKyBkaWZmZXJlbnQgbmFtZXMuCisgCistWW91IHNo b3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7QXV0by1sb2FkaW5nfSkgc3VjaCB0 aGF0IGl0CisrWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7UHl0aG9u IEF1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAorIGNhbiBiZSBldmFsdWF0ZWQgbXVsdGlwbGUg dGltZXMgd2l0aG91dCBjaGFuZ2luZyBpdHMgbWVhbmluZy4gIEFuCisgaWRlYWwgYXV0by1sb2Fk IGZpbGUgd2lsbCBjb25zaXN0IHNvbGVseSBvZiBAY29kZXtpbXBvcnR9cyBvZiB5b3VyCisgcHJp bnRlciBtb2R1bGVzLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYSByZWdpc3RlciBwcmV0dHktcHJp bnRlcnMgd2l0aAorQEAgLTIzNzYwLDcgKzIzOTkzLDcgQEAgVGhlIGZvbGxvd2luZyBvYmpmaWxl LXJlbGF0ZWQgZnVuY3Rpb25zCisgCisgQGZpbmRleCBnZGIuY3VycmVudF9vYmpmaWxlCisgQGRl ZnVuIGdkYi5jdXJyZW50X29iamZpbGUgKCkKKy1XaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBz Y3JpcHQgKEBweHJlZntBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59CisrV2hlbiBhdXRvLWxv YWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pLCBAdmFs dWV7R0RCTn0KKyBzZXRzIHRoZSBgYGN1cnJlbnQgb2JqZmlsZScnIHRvIHRoZSBjb3JyZXNwb25k aW5nIG9iamZpbGUuICBUaGlzCisgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VycmVudCBvYmpmaWxl LiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBvYmpmaWxlLAorIHRoaXMgZnVuY3Rpb24gcmV0dXJu cyBAY29kZXtOb25lfS4KK0BAIC0yNDY3MSw5ICsyNDkwNCw5IEBAIHJlc29sdmUgdGhpcyB0byB0 aGUgbGF6eSBzdHJpbmcncyBjaGFyYWMKKyB3cml0YWJsZS4KKyBAZW5kIGRlZnZhcgorIAorLUBu b2RlIEF1dG8tbG9hZGluZworLUBzdWJzZWN0aW9uIEF1dG8tbG9hZGluZworLUBjaW5kZXggYXV0 by1sb2FkaW5nLCBQeXRob24KKytAbm9kZSBQeXRob24gQXV0by1sb2FkaW5nCisrQHN1YnNlY3Rp b24gUHl0aG9uIEF1dG8tbG9hZGluZworK0BjaW5kZXggUHl0aG9uIGF1dG8tbG9hZGluZworIAor IFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCAoZm9yIGV4YW1wbGUsIGR1ZSB0byB0aGUg QGNvZGV7ZmlsZX0KKyBjb21tYW5kLCBvciBiZWNhdXNlIHRoZSBpbmZlcmlvciBoYXMgbG9hZGVk IGEgc2hhcmVkIGxpYnJhcnkpLAorQEAgLTI0NjkzLDMyICsyNDkyNiwzNSBAQCBBdXRvLWxvYWRp bmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsCisgYW5kIHRoZSBsaXN0IG9mIGF1dG8tbG9h ZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50ZWQuCisgCisgQHRhYmxlIEBjb2RlCistQGtpbmRleCBz ZXQgYXV0by1sb2FkLXNjcmlwdHMKKy1AaXRlbSBzZXQgYXV0by1sb2FkLXNjcmlwdHMgW3llc3xu b10KKytAYW5jaG9ye3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBzZXQg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cyBbb258b2ZmXQorIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMuCisgCistQGtpbmRleCBzaG93IGF1dG8tbG9hZC1zY3JpcHRzCistQGl0ZW0g c2hvdyBhdXRvLWxvYWQtc2NyaXB0cworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHN9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BpdGVtIHNo b3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisgU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBv ZiBQeXRob24gc2NyaXB0cyBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorIAorLUBraW5kZXggaW5m byBhdXRvLWxvYWQtc2NyaXB0cworLUBjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBz Y3JpcHRzCistQGl0ZW0gaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbQHZhcntyZWdleHB9XQorLVBy aW50IHRoZSBsaXN0IG9mIGFsbCBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVk LgorK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBpbmZv IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxv YWRlZCBQeXRob24gc2NyaXB0cworK0BpdGVtIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IFtAdmFye3JlZ2V4cH1dCisrUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIFB5dGhvbiBzY3JpcHRzIHRo YXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgorIAorLUFsc28gcHJpbnRlZCBpcyB0aGUgbGlz dCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KKytBbHNvIHByaW50ZWQgaXMgdGhl IGxpc3Qgb2YgUHl0aG9uIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBpbgorIHRoZSBAY29k ZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCisgKEBweHJl Zntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisgVGhpcyBpcyB1c2VmdWwgYmVjYXVz ZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RCTn0KKyB0cmllcyB0 byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHBy aW50aW5nCisgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJvYmxlbWF0aWMuCisg CistSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgc2NyaXB0cyB3aXRoIG1hdGNoaW5n IG5hbWVzIGFyZSBwcmludGVkLgorK0lmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IFB5 dGhvbiBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCisgCisgRXhhbXBs ZToKKyAKKyBAc21hbGxleGFtcGxlCistKGdkYikgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cworKyhn ZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisgTG9hZGVkICBTY3JpcHQKKyBZZXMg ICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5CisgICAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2Vj dGlvbi1zY3JpcHQucHkKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHkt YXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTMxLDI5ICszMSw1NiBAQAorIAor ICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKKyAKKy0vKiBOT1RFOiBJdCdzIHRyaXZpYWwg dG8gYWxzbyBzdXBwb3J0IGF1dG8tbG9hZGluZyBub3JtYWwgZ2RiIHNjcmlwdHMuCistICAgVGhl cmUgaGFzIHlldCB0byBiZSBhIG5lZWQgc28gaXQncyBub3QgaW1wbGVtZW50ZWQuICAqLworLQor IC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQuCisgICAg RS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdk Yi5weS4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX0ZJTEVfTkFNRSAiLWdkYi5weSIKKyAKKy0v KiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBzY3JpcHRzIChpbiBmaWxlIGZvcm1hdHMgdGhhdCBz dXBwb3J0IHNlY3Rpb25zKS4KKysvKiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBQeXRob24gYXV0 by1sb2FkZWQgc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQKKysgICBzdXBwb3J0IHNlY3Rp b25zKS4KKyAgICBFYWNoIGVudHJ5IGluIHRoaXMgc2VjdGlvbiBpcyBhIGJ5dGUgb2YgdmFsdWUg MSwgYW5kIHRoZW4gdGhlIG51bC10ZXJtaW5hdGVkCisgICAgbmFtZSBvZiB0aGUgc2NyaXB0LiAg VGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGEgZGlyZWN0b3J5LgorICAgIFRoZSBsZWFkaW5n IGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9ucy4gICovCisgI2Rl ZmluZSBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSAiLmRlYnVnX2dkYl9zY3JpcHRzIgorIAorLS8q IFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKKy0g ICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCistICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNo b3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQorLSAgIGlz IG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLgorLSAgIEF0IHRoZSBtb21lbnQsIHRoaXMgb25seSBh ZmZlY3RzIHB5dGhvbiBzY3JpcHRzLCBidXQgdGhlcmUncyBubyByZWFzb24KKy0gICBvbmUgY291 bGRuJ3QgYWxzbyBoYXZlIG90aGVyIGtpbmRzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMsIGFuZCB0 aGVyZSdzCistICAgbm8gcmVhc29uIHRvIGhhdmUgdGhlbSBlYWNoIGNvbnRyb2xsZWQgYnkgYSBz ZXBhcmF0ZSBmbGFnLgorLSAgIFNvIHdlIGVsaWRlICJweXRob24iIGZyb20gdGhlIG5hbWUgaGVy ZSBhbmQgaW4gdGhlIG9wdGlvbi4KKy0gICBUaGUgZmFjdCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMg anVzdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAqLworLXN0YXRpYyBpbnQgYXV0b19sb2Fk X3NjcmlwdHMgPSAxOworKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxl IGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0czoKKysgICBzZXQgYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIG9ufG9mZgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2Fk IGFzc29jaWF0ZWQgUHl0aG9uIHNjcmlwdHMgd2hlbiBhbgorKyAgIG9iamZpbGUgaXMgb3BlbmVk LCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgYXV0b19sb2FkX3B5dGhvbl9zY3Jp cHRzID0gMTsKKysKKytzdGF0aWMgdm9pZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkJCQlGSUxFICpmaWxlLAorKwkJCQkJ CWNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1 dG9fbG9hZF9weXRob25fc2NyaXB0cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytz dGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwg XygiQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzICVzLlxuIiksIHZhbHVlKTsKKyt9 CisrCisrLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIFB5dGhvbiBzY3JpcHRz LiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFu Z3VhZ2VfcHl0aG9uCisrICA9IHsgR0RCUFlfQVVUT19GSUxFX05BTUUsIGdkYnB5X2xvYWRfYXV0 b19zY3JpcHRfZm9yX29iamZpbGUgfTsKKysKKysvKiBXcmFwcGVyIG9mIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIGZvciBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uLiAgKi8KKysKKytz dGF0aWMgdm9pZAorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCQkgICAgY29uc3QgY2hhciAqZmlsZW5h bWUpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Cisr CisrICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIKKysgICAgIGNhbiBwcmludCBpdC4gICovCisrICBwc3Bh Y2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSk7CisrICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5h bWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisrCisrICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworK30KKyAK KyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCisgICAgU1RBUlQsRU5EIGRl bGltaXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKK0BAIC0x MjEsNiArMTQ4LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoK KyAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworIAkgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGZ1bGxfcGF0aCk7CisgCX0KKysgICAgICBlbHNlCisrCXsKKysJICBmdWxsX3BhdGggPSBO VUxMOworKworKwkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBz dGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKysJICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3By aW50IChwc3BhY2VfaW5mbykpCisrCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBz Y3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorK29mIGZpbGUgJXNcblwKKytVc2Ug YGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAorKwkJICAg ICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CisrCX0KKyAKKyAgICAg ICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3Jl IHRvIG5vdCBiZQorIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBl cnJvciBtZXNzYWdlIGZvciBlYWNoCitAQCAtMTI5LDI0ICsxNjcsMTIgQEAgc291cmNlX3NlY3Rp b25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMg d2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9 IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAorLQkJCQkJb3BlbmVkID8gZnVs bF9wYXRoIDogTlVMTCk7CisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrCQkJCQkmc2NyaXB0X2xhbmd1YWdlX3B5 dGhvbik7CisgCistICAgICAgaWYgKCEgb3BlbmVkKQorLQl7CistCSAgLyogV2UgZG9uJ3QgdGhy b3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLworLQkgIGlm IChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKKy0JICAgIHdh cm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9u ICVzXG5cCistb2YgZmlsZSAlc1xuXAorLVVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVH RVhQXScgdG8gbGlzdCB0aGVtLiIpLAorLQkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwg b2JqZmlsZS0+bmFtZSk7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICAvKiBJZiB0aGlzIGZp bGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworLQkgIGlmICghIGluX2hh c2hfdGFibGUpCistCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmls ZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworLQl9CisrICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5v dCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKysgICAgICBpZiAob3BlbmVkICYmICFp bl9oYXNoX3RhYmxlKQorKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmls ZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworIAorICAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsK KyAgICAgfQorQEAgLTE4MSwzNiArMjA3LDc1IEBAIGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMg KHN0cnVjdCBvYmpmaWwKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisgfQorIAorLS8qIExv YWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUuICAqLworKy8qIExvYWQgYW55 IFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKyAKKyB2b2lkCist bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor K2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSkKKyB7CistICBpZiAoYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9f bG9hZCkKKysgIGlmIChhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpCisgICAgIHsKKy0gICAgICBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsIEdEQlBZX0FVVE9fRklMRV9OQU1FKTsK KysgICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFuZ3Vh Z2VfcHl0aG9uKTsKKyAgICAgICBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChvYmpmaWxlLCBH REJQWV9BVVRPX1NFQ1RJT05fTkFNRSk7CisgICAgIH0KKyB9CisrCisrLyogV3JhcHBlciBmb3Ig ImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gICovCisrCisrc3RhdGljIHZvaWQKKytp bmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5 KQorK3sKKysgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZyb21fdHR5LCAmc2Ny aXB0X2xhbmd1YWdlX3B5dGhvbik7CisrfQorIAwKKyB2b2lkCisgZ2RicHlfaW5pdGlhbGl6ZV9h dXRvX2xvYWQgKHZvaWQpCisgeworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKKysg IGNoYXIgKmNtZF9uYW1lOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJweXRob24t c2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9weXRob25fc2NyaXB0 cywgXygiXAorK1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9h ZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCisrU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlv dXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCisrSWYgZW5h YmxlZCwgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1 Z2dlciByZWFkc1xuXAorK2FuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuXG5cCisrVGhp cyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlv cnMuIiksCisrCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCisrCQkJ ICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBhdXRvX2xvYWRfc2hvd19j bWRsaXN0X2dldCAoKSk7CisrCisgICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9h ZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKKy0JCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8o IlwKKy1TZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBz Y3JpcHRzLiIpLCBfKCJcCistU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5n IGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKKy1JZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBz Y3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKKy1hbiBleGVjdXRh YmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAorLQkJCSAgIE5VTEwsIE5VTEwsCistCQkJICAgJnNl dGxpc3QsCistCQkJICAgJnNob3dsaXN0KTsKKysJCQkgICAmYXV0b19sb2FkX3B5dGhvbl9zY3Jp cHRzLCBfKCJcCisrU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1s b2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKKysJCQkJCQkJCSAiZGVwcmVjYXRlZC4iKSwKKysJCQkg ICBfKCJcCisrU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9h ZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisrCQkJCQkJCQkgImRlcHJlY2F0ZWQuIiksCisrCQkJICAg TlVMTCwgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCisrCQkJICAgJnNldGxp c3QsICZzaG93bGlzdCk7CisrICBjbWRfbmFtZSA9ICJhdXRvLWxvYWQtc2NyaXB0cyI7CisrICBj bWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNldGxpc3QsICIiLCAtMSwgMSk7CisrICBkZXBy ZWNhdGVfY21kIChjbWQsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7CisrCisrICAv KiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBsb29rdXBfY21kIHVwZGF0ZXMgdGhlIENNRF9OQU1FIHBv aW50ZXIuICAqLworKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNjcmlwdHMiOworKyAgY21kID0g bG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzaG93bGlzdCwgIiIsIC0xLCAxKTsKKysgIGRlcHJlY2F0 ZV9jbWQgKGNtZCwgInNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7CisrCisrICBhZGRf Y21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9weXRob25f c2NyaXB0cywKKysJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQg UHl0aG9uIHNjcmlwdHMuXG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IFtSRUdFWFBdIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKysg IGNtZCA9IGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLCBpbmZvX2F1dG9fbG9hZF9weXRo b25fc2NyaXB0cywgXygiXAorK1ByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVk IFB5dGhvbiBzY3JpcHRzLCBkZXByZWNhdGVkLiIpKTsKKysgIGRlcHJlY2F0ZV9jbWQgKGNtZCwg ImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7CisgfQorIAorICNlbHNlIC8qICEgSEFW RV9QWVRIT04gKi8KKyAKKyB2b2lkCistbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CisgfQorIAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYu OTU4NDM3NTAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTc5NDM3NDQ2ICswMjAwCitAQCAtNDEsNyArNDEsNyBA QCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwCisgCisgdm9pZCBwcmVz ZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaHRhYl90IGNvcGll ZF90eXBlcyk7CisgCistdm9pZCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpOworK3ZvaWQgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyAKKyBpbnQgZ2RicHlfc2hvdWxkX3N0 b3AgKHN0cnVjdCBicmVha3BvaW50X29iamVjdCAqYnBfb2JqKTsKKyAKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxw LmV4cAkyMDEyLTAxLTA0IDA5OjE3OjQ1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTA0LTE4IDAwOjQ0 OjI2Ljk4MDQzNzQ0NCArMDIwMAorQEAgLTI0LDcgKzI0LDcgQEAKKyBnZGJfc3RhcnQKKyAKKyAj IGZvcmNlIHRoZSBoZWlnaHQgb2YgdGhlIGRlYnVnZ2VyIHRvIGJlIHByZXR0eSBsYXJnZSBzbyBu byBwYWdlcnMgZ2V0IHVzZWQKKy1nZGJfdGVzdF9ub19vdXRwdXQgInNldCBoZWlnaHQgNDAwIiAi dGVzdCBzZXQgaGVpZ2h0IgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCA1MDAiICJ0 ZXN0IHNldCBoZWlnaHQiCisgCisgIyB1c2UgYSBsYXJnZXIgZXhwZWN0IGlucHV0IGJ1ZmZlciBm b3IgbG9uZyBoZWxwIG91dHB1dHMuCisgIyB0ZXN0IGhlbHAgYWRkLXN5bWJvbC1maWxlCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmls ZS1zY3JpcHQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wMS0xNiAx NzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0 Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC00MCw3ICs0MCw3IEBAIGdkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgorIGdkYl9sb2FkICR7YmluZmlsZX0KKyAKKyAjIFZlcmlmeSBnZGIg bG9hZGVkIHRoZSBzY3JpcHQuCistZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZ ZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKKyAKKyBpZiAhW3J1bnRv X21haW5dIHsKKyAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlw dC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUy LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3 OTc3NCArMDIwMAorQEAgLTUyLDExICs1MiwxMSBAQCBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisgIyBWZXJpZnkgZ2RiIGxvYWRl ZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAiWWVzLiok e3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgorK2dkYl90ZXN0 ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1 bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKyAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRo aXMgdGltZS4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyAke3Rlc3RmaWxlfSIg Illlcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKytn ZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMu KiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisgIyBBZ2Fp biwgd2l0aCBhIHJlZ2V4cCB0aGF0IG1hdGNoZXMgbm8gc2NyaXB0cy4KKy1nZGJfdGVzdCAiaW5m byBhdXRvLWxvYWQtc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzIiBcCisrZ2RiX3Rlc3Qg ImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwK KyAgICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyBuby1zY3JpcHQtbWF0Y2hlcy10aGlz LiIKKyAKKyBpZiAhW3J1bnRvX21haW5dIHsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTFv ZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTExb2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNGFjNjhiMC4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTFvZjIyLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQ0ICswLDAgQEAKLVtwYXRjaCM0IDUvOF0gc2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGgKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA0L21zZzAwMDkyLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDQvbXNnMDAxMTQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo1MTo0MQkxLjE0MTEzCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NDoy OAkxLjE0MTE0Ci0jIyAtMSw1ICsxLDM5IEBACi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlOZXcgb3B0aW9uICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCIuCi0rCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCIKLSsJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgotKwkqIGF1dG8tbG9h ZC5jOiBJbmNsdWRlIGdkYl92ZWNzLmgsIHJlYWRsaW5lL3RpbGRlLmggYW5kIGNvbXBsZXRlci5o LgotKwkoYXV0b19sb2FkX3NhZmVfcGF0aCwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpCi0rCShh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUsIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoKQot Kwkoc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoLCBhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCwgZmls ZW5hbWVfaXNfaW5fZGlyKQotKwkoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcuCi0rCShzb3VyY2VfZ2RiX3NjcmlwdF9m b3Jfb2JqZmlsZSk6IE5ldyB2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbAotKwlmaWxlX2lzX2F1dG9f bG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KLSsJKHN0cnVjdCBsb2FkZWRfc2NyaXB0 KTogTmV3IGZpZWxkIGxvYWRlZC4KLSsJKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVy IGxvYWRlZC4gIEluaXRpYWxpemUgU0xPVCB3aXRoIGl0LgotKwkocHJpbnRfc2NyaXB0KTogVXNl IExPQURFRCBpbmRpY2F0b3IgaW5zdGVhZCBvZiBGVUxMX1BBVEguICBDaGFuZ2UKLSsJb3V0cHV0 ICJNaXNzaW5nIiB0byAiTm8iLgotKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogTmV3IHZhcmlh YmxlIGNtZC4gIEluaXRpYWxpemUKLSsJYXV0b19sb2FkX3NhZmVfcGF0aC4gIFJlZ2lzdGVyICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIsCi0rCSJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiIGFu ZCAiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLgotKwkqIGF1dG8tbG9hZC5oIChtYXliZV9hZGRf c2NyaXB0KTogQWRkIHBhcmFtZXRlciBsb2FkZWQuCi0rCShmaWxlX2lzX2F1dG9fbG9hZF9zYWZl KTogTmV3IGRlY2xhcmF0aW9uLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSsJKiBjb25m aWd1cmU6IFJlZ2VuZXJhdGUuCi0rCSogY29uZmlndXJlLmFjOiBOZXcgcGFyYW1ldGVycyAtLXdp dGgtYXV0by1sb2FkLXNhZmUtcGF0aAotKwlhbmQgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBh dGguCi0rCSogbGludXgtdGhyZWFkLWRiLmMgKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXJf MSkKLSsJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IENoZWNrIGZpbGVfaXNfYXV0b19s b2FkX3NhZmUgZmlyc3QuCi0rCSogbWFpbi5jIChjYXB0dXJlZF9tYWluKTogQ2hlY2sgZmlsZV9p c19hdXRvX2xvYWRfc2FmZSBmb3IKLSsJTE9DQUxfR0RCSU5JVC4KLSsJKiBweXRob24vcHktYXV0 by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcKLSsJdmFy aWFibGUgaXNfc2FmZS4gIENhbGwgZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBp dCBpcyBub3QuCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogQ2FsbCBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzCi0rCW5vdC4KLSsKLSsyMDEyLTA0LTE3ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCWF1dG8tbG9hZDog SW1wbGVtZW50YXRpb24uCi0gCSogTkVXUzogTmV3IGRlc2NyaXB0aW9ucyBmb3IgImluZm8gYXV0 by1sb2FkIiwKLSAJImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgImluZm8gYXV0by1sb2Fk IHB5dGhvbi1zY3JpcHRzIiwKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQt MTggMDA6NDk6MDIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv TkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjMzLjI4MjcwNjMxOSArMDIwMAotQEAgLTY3LDYgKzY3LDEx IEBAIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgotIHNob3cgYXV0by1sb2FkIGxp YnRocmVhZC1kYgotICAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMg dGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KLSAKLStzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCA8ZGlyMT5bOjxkaXIyPi4uLl0KLStzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgKLSsgIFNl dCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9h ZCBmaWxlcy4KLSsgIFRoZSBkZWxpbWl0ZXIgKCc6JyBhYm92ZSkgbWF5IGRpZmZlciBhY2NvcmRp bmcgdG8gdGhlIGhvc3QgcGxhdGZvcm0uCi0rCi0gKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMK LSAKLSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14 IGJ1dCBleGVjdXRlIGl0Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9h ZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAy MDAKLUBAIC0zMiw2ICszMiw5IEBACi0gI2luY2x1ZGUgImdkYmNtZC5oIgotICNpbmNsdWRlICJj bGkvY2xpLWRlY29kZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKLSsjaW5jbHVk ZSAiZ2RiX3ZlY3MuaCIKLSsjaW5jbHVkZSAicmVhZGxpbmUvdGlsZGUuaCIKLSsjaW5jbHVkZSAi Y29tcGxldGVyLmgiCi0gCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmlsZSBzY3JpcHRzIHRv IGF1dG8tbG9hZCBhcyBub24tUHl0aG9uIGNvbW1hbmQgZmlsZXMuCi0gICAgRS5nLiBXaGVuIHRo ZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5nZGIuICAqLwot QEAgLTkwLDYgKzkzLDE4MSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3Qg dWlfCi0gCQkgICAgdmFsdWUpOwotIH0KLSAKLSsvKiBEaXJlY3RvcnkgbGlzdCBzYWZlIHRvIGhv bGQgYXV0by1sb2FkZWQgZmlsZXMuICBJdCBpcyBub3QgY2hlY2tlZCBmb3IKLSsgICBhYnNvbHV0 ZSBwYXRocyBidXQgdGhleSBhcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQuICBJdCBpcyBpbml0aWFs aXplZCBieQotKyAgIF9pbml0aWFsaXplX2F1dG9fbG9hZC4gICovCi0rc3RhdGljIGNoYXIgKmF1 dG9fbG9hZF9zYWZlX3BhdGg7Ci0rCi0rLyogVmVjdG9yIG9mIGRpcmVjdG9yeSBlbGVtZW50cyBv ZiBBVVRPX0xPQURfU0FGRV9QQVRIIHdpdGggZWFjaCBvbmUgbm9ybWFsaXplZAotKyAgIGJ5IHRp bGRlX2V4cGFuZCBhbmQgcG9zc2libHkgZWFjaCBlbnRyaWVzIGhhcyBhZGRlZCBpdHMgZ2RiX3Jl YWxwYXRoCi0rICAgY291bnRlcnBhcnQuICAqLwotK3N0YXRpYyBWRUMgKGNoYXJfcHRyKSAqYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWM7Ci0rCi0rLyogVXBkYXRlIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjIGZyb20gY3VycmVudCBBVVRPX0xPQURfU0FGRV9QQVRILiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSt7Ci0rICBWRUMgKGNo YXJfcHRyKSAqZGlyX3ZlYyA9IE5VTEw7Ci0rICB1bnNpZ25lZCBsZW47Ci0rICBpbnQgaXg7Ci0r Ci0rICBmcmVlX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOwotKwotKyAg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGF1dG9f bG9hZF9zYWZlX3BhdGgpOwotKyAgbGVuID0gVkVDX2xlbmd0aCAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjKTsKLSsKLSsgIC8qIEFwcGx5IHRpbGRlX2V4cGFuZCBhbmQgZ2RiX3Jl YWxwYXRoIHRvIGVhY2ggQVVUT19MT0FEX1NBRkVfUEFUSF9WRUMKLSsgICAgIGVsZW1lbnQuICAq LwotKyAgZm9yIChpeCA9IDA7IGl4IDwgbGVuOyBpeCsrKQotKyAgICB7Ci0rICAgICAgY2hhciAq ZGlyID0gVkVDX2luZGV4IChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4KTsK LSsgICAgICBjaGFyICpleHBhbmRlZCA9IHRpbGRlX2V4cGFuZCAoZGlyKTsKLSsgICAgICBjaGFy ICpyZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKLSsKLSsgICAgICAvKiBFbnN1 cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KLSsg ICAgICB4ZnJlZSAoZGlyKTsKLSsgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQpOwotKwotKyAgICAgIC8qIElmIGdkYl9yZWFs cGF0aCByZXR1cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCi0rICAgICAg aWYgKHN0cmNtcCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKLSsJeGZyZWUgKHJlYWxfcGF0 aCk7Ci0rICAgICAgZWxzZQotKwlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rICAgIH0KLSt9Ci0rCi0rLyogInNldCIgY29tbWFu ZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICov Ci0rCi0rc3RhdGljIHZvaWQKLStzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJncywg aW50IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSt7Ci0rICBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0rfQotKwotKy8qICJzaG93IiBjb21tYW5kIGZv ciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3NhZmVfcGF0aCAoc3RydWN0IHVpX2ZpbGUg KmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBj b25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBpZiAoKnZhbHVlID09IDApCi0rICAgIGZwcmludGZf ZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0byBsb2FkIGZyb20g YW55ICIKLSsJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotKyAgZWxzZQotKyAgICBmcHJpbnRm X2ZpbHRlcmVkIChmaWxlLCBfKCJMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byAiCi0rCQkJICAgICAgImF1dG8tbG9hZCBmaWxlcyBpcyAlcy5cbiIpLAotKwkJICAg ICAgdmFsdWUpOwotK30KLSsKLSsvKiAiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiIGNvbW1hbmQg Zm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24KLSsgICB2YXJpYWJsZS4g ICovCi0rCi0rc3RhdGljIHZvaWQKLSthZGRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQotK3sKLSsgIGNoYXIgKnM7Ci0rCi0rICBpZiAoYXJncyA9PSBOVUxM IHx8ICphcmdzID09IDApCi0rICAgIGVycm9yIChfKCJcCi0rQWRkaW5nIGVtcHR5IGRpcmVjdG9y eSBlbGVtZW50IGRpc2FibGVzIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LiAgXAot K1VzZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGluc3RlYWQgaWYgeW91IG1lYW4gdGhhdC4i KSk7Ci0rCi0rICBzID0geHN0cnByaW50ZiAoIiVzJWMlcyIsIGF1dG9fbG9hZF9zYWZlX3BhdGgs IERJUk5BTUVfU0VQQVJBVE9SLCBhcmdzKTsKLSsgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRo KTsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSBzOwotKwotKyAgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBpcyBlcXVh bCB0byBESVIgb3IgaWYgRklMRU5BTUUgYmVsb25ncyB0byB0aGUKLSsgICBzdWJkaXJlY3Rvcnkg RElSLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLiAgZ2RiX3JlYWxwYXRoIG5vcm1hbGl6YXRpb24gaXMg bmV2ZXIKLSsgICBkb25lIGhlcmUuICAqLwotKwotK3N0YXRpYyBBVFRSSUJVVEVfUFVSRSBpbnQK LStmaWxlbmFtZV9pc19pbl9kaXIgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpk aXIpCi0rewotKyAgc2l6ZV90IGRpcl9sZW4gPSBzdHJsZW4gKGRpcik7Ci0rCi0rICB3aGlsZSAo ZGlyX2xlbiAmJiBJU19ESVJfU0VQQVJBVE9SIChkaXJbZGlyX2xlbiAtIDFdKSkKLSsgICAgZGly X2xlbi0tOwotKwotKyAgcmV0dXJuIChmaWxlbmFtZV9uY21wIChkaXIsIGZpbGVuYW1lLCBkaXJf bGVuKSA9PSAwCi0rCSAgJiYgKElTX0RJUl9TRVBBUkFUT1IgKGZpbGVuYW1lW2Rpcl9sZW5dKQot KwkgICAgICB8fCBmaWxlbmFtZVtkaXJfbGVuXSA9PSAnXDAnKSk7Ci0rfQotKwotKy8qIFJldHVy biAxIGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gb25lIG9mIGRpcmVjdG9yeSBjb21wb25lbnRzIG9m Ci0rICAgQVVUT19MT0FEX1NBRkVfUEFUSF9WRUMuICBSZXR1cm4gMCBvdGhlcndpc2UuCi0rICAg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlIGlzIG5ldmVyIGNhbGxlZC4KLSsgICAqRklM RU5BTUVfUkVBTFAgbWF5IGJlIHVwZGF0ZWQgYnkgZ2RiX3JlYWxwYXRoIG9mIEZJTEVOQU1FIC0g aXQgaGFzIHRvIGJlCi0rICAgZnJlZWQgYnkgdGhlIGNhbGxlci4gICovCi0rCi0rc3RhdGljIGlu dAotK2ZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChjb25zdCBjaGFyICpm aWxlbmFtZSwKLSsJCQkJCWNoYXIgKipmaWxlbmFtZV9yZWFscCkKLSt7Ci0rICBjaGFyICpkaXI7 Ci0rICBpbnQgaXg7Ci0rCi0rICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7ICsraXgpCi0rICAgIGlmICgqZmlsZW5h bWVfcmVhbHAgPT0gTlVMTCAmJiBmaWxlbmFtZV9pc19pbl9kaXIgKGZpbGVuYW1lLCBkaXIpKQot KyAgICAgIGJyZWFrOwotKyAgCi0rICBpZiAoZGlyID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBp ZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwpCi0rCSpmaWxlbmFtZV9yZWFscCA9IGdkYl9yZWFs cGF0aCAoZmlsZW5hbWUpOwotKwotKyAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hh cl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLSsJICAgKytpeCkKLSsJ aWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQotKwkgIGJyZWFr OwotKyAgICB9Ci0rCi0rICBpZiAoZGlyICE9IE5VTEwpCi0rICAgIHJldHVybiAxOwotKwotKyAg cmV0dXJuIDA7Ci0rfQotKwotKy8qIFJldHVybiAxIGlmIEZJTEVOQU1FIGlzIGxvY2F0ZWQgaW4g b25lIG9mIHRoZSBkaXJlY3RvcmllcyBvZgotKyAgIEFVVE9fTE9BRF9TQUZFX1BBVEguICBPdGhl cndpc2UgY2FsbCB3YXJuaW5nIGFuZCByZXR1cm4gMC4gIEZJTEVOQU1FIGRvZXMKLSsgICBub3Qg aGF2ZSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgotKwotKyAgIEV4aXN0ZW5jZSBvZiBGSUxFTkFN RSBpcyBub3QgY2hlY2tlZC4gIEZ1bmN0aW9uIHdpbGwgc3RpbGwgZ2l2ZSBhIHdhcm5pbmcKLSsg ICBldmVuIGlmIHRoZSBjYWxsZXIgd291bGQgcXVpZXRseSBza2lwIG5vbi1leGlzdGluZyBmaWxl IGluIHVuc2FmZQotKyAgIGRpcmVjdG9yeS4gICovCi0rCi0raW50Ci0rZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgY2hhciAqZmlsZW5hbWVfcmVh bCA9IE5VTEw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsKLSsgIGJhY2tfdG8gPSBt YWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1lX3JlYWwpOwotKwot KyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwg JmZpbGVuYW1lX3JlYWwpKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwot KyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191 cGRhdGUgKCk7Ci0rICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMg KGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCi0rICAgIHsKLSsgICAgICBkb19jbGVhbnVwcyAo YmFja190byk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIHdhcm5pbmcgKF8oIkZp bGUgXCIlc1wiIGF1dG8tbG9hZGluZyBoYXMgYmVlbiBkZWNsaW5lZCBieSB5b3VyICIKLSsJICAg ICAiYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byBcIiVzXCIuIiksCi0rCSAgIGZpbGVuYW1l X3JlYWwsIGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKwotKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8qIERlZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1YWdl IGZvciBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy4gICovCi0gCi0gc3RhdGljIGNv bnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdlX2dkYgotQEAgLTk5LDEz ICsyNzcsMjAgQEAgc3RhdGljIHZvaWQKLSBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0gCQkJICAgICAgIGNvbnN0IGNo YXIgKmZpbGVuYW1lKQotIHsKLSsgIGludCBpc19zYWZlOwotICAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBlOwotIAotKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsK LSsKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8g YXV0by1sb2FkIGdkYi1zY3JpcHRzIgotICAgICAgY2FuIHByaW50IGl0LiAgKi8KLSAgIHBzcGFj ZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9w cm9ncmFtX3NwYWNlKTsKLS0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFt ZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKLSsgIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5hbWUsCi0rCQkgICAgJnNjcmlw dF9sYW5ndWFnZV9nZGIpOwotKwotKyAgaWYgKCFpc19zYWZlKQotKyAgICByZXR1cm47Ci0gCi0g ICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSAgICAgewotQEAgLTE0MCw2ICszMjUs OSBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotICAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0gICBj b25zdCBjaGFyICpmdWxsX3BhdGg7Ci0gCi0rICAvKiBOb24temVybyBpZiB0aGlzIHNjcmlwdCBo YXMgYmVlbiBsb2FkZWQuICAqLwotKyAgaW50IGxvYWRlZDsKLSsKLSAgIGNvbnN0IHN0cnVjdCBz Y3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOwotIH07Ci0gCi1AQCAtMjMyLDEyICs0MjAsMTMgQEAg Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAocwotICAgcmV0dXJuIGluZm87 Ci0gfQotIAotLS8qIEFkZCBzY3JpcHQgTkFNRSBpbiBMQU5HVUFHRSB0byBoYXNoIHRhYmxlIG9m IFBTUEFDRV9JTkZPLgotLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0 IGZvdW5kLiAgVGhlIHJlc3VsdCBpcwotKy8qIEFkZCBzY3JpcHQgTkFNRSBpbiBMQU5HVUFHRSB0 byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLiAgTE9BREVEIDEgaWYgdGhlCi0rICAgc2NyaXB0 IGhhcyBiZWVuIChpcyBnb2luZyB0bykgYmUgbG9hZGVkLCAwIG90aGVyd2lzZSAoc3VjaCBhcyBp ZiBpdCBoYXMgbm90Ci0rICAgYmVlbiBmb3VuZCkuICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUg c2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSAgICB0cnVlIGlmIHRoZSBzY3Jp cHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotIAotIGludAotLW1heWJlX2Fk ZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotK21h eWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZv LCBpbnQgbG9hZGVkLAotIAkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3Bh dGgsCi0gCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLUBA IC0yNzEsNiArNDYwLDcgQEAgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3Bh YwotIAl9Ci0gICAgICAgZWxzZQotIAkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOwotKyAgICAg ICgqc2xvdCktPmxvYWRlZCA9IGxvYWRlZDsKLSAgICAgICAoKnNsb3QpLT5sYW5ndWFnZSA9IGxh bmd1YWdlOwotICAgICB9Ci0gCi1AQCAtNDMyLDcgKzYyMiw3IEBAIHByaW50X3NjcmlwdCAoc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKnNjcmkKLSAKLSAgIGNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291 dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLSAKLS0gIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJNaXNzaW5n Iik7Ci0rICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+bG9h ZGVkID8gIlllcyIgOiAiTm8iKTsKLSAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2Ny aXB0Iiwgc2NyaXB0LT5uYW1lKTsKLSAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0gCi1A QCAtNzE4LDYgKzkwOCw4IEBAIHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKLSB2 b2lkCi0gX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotIHsKLSsgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjbWQ7Ci0rCi0gICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKLSAgICAgPSByZWdp c3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2Rh dGFfY2xlYW51cCk7Ci0gCi1AQCAtNzU3LDQgKzk0OSwzMCBAQCBUaGlzIG9wdGlvbnMgaGFzIHNl Y3VyaXR5IGltcGxpY2F0aW9ucyBmCi0gCSAgIF8oIlByaW50IHdoZXRoZXIgY3VycmVudCBkaXJl Y3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5cCi0gVXNhZ2U6IGluZm8gYXV0 by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKLSAJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQg KCkpOwotKwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19M T0FEX1NBRkVfUEFUSCk7Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0r ICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJzYWZlLXBhdGgiLCBjbGFzc19z dXBwb3J0LAotKwkJCQkgICAgICZhdXRvX2xvYWRfc2FmZV9wYXRoLCBfKCJcCi0rU2V0IHRoZSBs aXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmls ZXMuIiksIF8oIlwKLStTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQg aXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuIiksIF8oIlwKLStWYXJpb3VzIGZpbGVzIGxvYWRl ZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRpb25zIG11c3Rc blwKLStiZSBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGJ5IHRoaXMg b3B0aW9uLiAgV2FybmluZyB3aWxsIGJlXG5cCi0rcHJpbnRlZCBhbmQgZmlsZSB3aWxsIG5vdCBi ZSB1c2VkIG90aGVyd2lzZS4gIFVzZSBlbXB0eSBzdHJpbmcgKG9yIGV2ZW5cblwKLStlbXB0eSBk aXJlY3RvcnkgZW50cnkpIHRvIGFsbG93IGFueSBmaWxlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQg Li4uJyBvcHRpb25zLlxuXAotK1RoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHRoZSBraW5kcyBv ZiBmaWxlcyBoYXZpbmcgJ3NldCBhdXRvLWxvYWQgLi4uIG9mZicuXG5cCi0rVGhpcyBvcHRpb25z IGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0r CQkJCSAgICAgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkJCSAgICAgc2hvd19hdXRvX2xv YWRfc2FmZV9wYXRoLAotKwkJCQkgICAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCi0r CQkJCSAgICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOwotKwotKyAgY21kID0gYWRk X2NtZCAoImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCSBhZGRf YXV0b19sb2FkX3NhZmVfcGF0aCwKLSsJCSBfKCJBZGQgZW50cmllcyB0byB0aGUgbGlzdCBvZiBk aXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgIgotKwkJICAgInRvIGF1dG8tbG9hZCBm aWxlcy5cblwKLStTZWUgdGhlIGNvbW1hbmRzICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgYW5k ICdzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHRvXG5cCi0rYWNjZXNzIHRoZSBjdXJyZW50IGZ1 bGwgbGlzdCBzZXR0aW5nLiIpLAotKwkJICZjbWRsaXN0KTsKLSsgIHNldF9jbWRfY29tcGxldGVy IChjbWQsIGZpbGVuYW1lX2NvbXBsZXRlcik7Ci0gfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDk6 MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtMzksNyArMzksOCBAQCBleHRlcm4gaW50IGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlCi0gZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKgotICAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHBy b2dyYW1fc3BhY2UgKnBzcGFjZSk7Ci0gZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLS0JCQkgICAgIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCQkgICAgIGludCBsb2FkZWQsIGNv bnN0IGNoYXIgKm5hbWUsCi0rCQkJICAgICBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0gCQkJICAg ICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0gZXh0ZXJuIHZvaWQg YXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJ ICAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotQEAgLTU0LDQg KzU1LDYgQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sbwotIGV4dGVy biBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2 b2lkKTsKLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19j bWRsaXN0X2dldCAodm9pZCk7Ci0gCi0rZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZl IChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0rCi0gI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0wNC0xOCAwMDo0Njo0 Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4J MjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKLUBAIC00Myw2ICs0Myw5IEBACi0g ICAgbW92ZWQuICovCi0gI3VuZGVmIERFQlVHRElSX1JFTE9DQVRBQkxFCi0gCi0rLyogRGlyZWN0 b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotKyN1bmRlZiBERUZBVUxU X0FVVE9fTE9BRF9TQUZFX1BBVEgKLSsKLSAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCBhcmNo aXRlY3R1cmUuICovCi0gI3VuZGVmIERFRkFVTFRfQkZEX0FSQ0gKLSAKLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTE4IDAw OjQ5OjIxLjYxMTczNjAxMCArMDIwMAotQEAgLTk1NSw2ICs5NTUsNyBAQCB3aXRoX3NlcGFyYXRl X2RlYnVnX2RpcgotIHdpdGhfZ2RiX2RhdGFkaXIKLSB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCi0g d2l0aF9ycG0KLSt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKLSBlbmFibGVfdGFyZ2V0cwotIGVu YWJsZV82NF9iaXRfYmZkCi0gZW5hYmxlX2dkYmNsaQotQEAgLTE2NjYsNiArMTY2NywxMCBAQCBP cHRpb25hbCBQYWNrYWdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2Fs bHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKLSAgIC0td2l0aC1ycG0gICAg ICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMv bm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQotKyAg LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzCi0rICAtLXdpdGhv dXQtYXV0by1sb2FkLXNhZmUtcGF0aAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90 IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucwotICAgLS13aXRoLWxpYnVud2lu ZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAotICAgLS13aXRo LWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0 ZXJtY2FwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtODQ3Nyw2ICs4 NDgyLDMyIEBAICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRSUE1fUEtHX0VSUk8KLSAgIGZp Ci0gZmkKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGgiID4mNQotKyRhc19lY2hvX24gImNo ZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGguLi4gIiA+JjY7IH0KLSsKLSsj IENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2FzIGdpdmVuLgotK2lm IHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0OyB0aGVuIDoKLSsg IHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAiJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0rICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIiCi0rIGZpCi0rZWxzZQotKyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4Igot K2ZpCi0rCi0rCi0rICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZh dWx0X3ByZWZpeCIKLSsgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVm aXg9JyR7cHJlZml4fScKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoYAotKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGly YAotKwotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIERFRkFVTFRfQVVUT19M T0FEX1NBRkVfUEFUSCAiJGFjX2RlZmluZV9kaXIiCi0rX0FDRU9GCi0rCi0rCi0reyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGgiID4mNQotKyRhc19lY2hvICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+JjY7 IH0KLSsKLSAKLSAKLSBzdWJkaXJzPSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAx Mi0wNC0xOCAwMDo0OToyMS42MTE3MzYwMTAgKzAyMDAKLUBAIC0zMzksNiArMzM5LDE4IEBAIGV4 dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtdHNJbml0SXRlcmEKLSAgIGZpCi0gZmkKLSAgCi0r QUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKLStBQ19B UkdfV0lUSChhdXRvLWxvYWQtc2FmZS1wYXRoLAotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0 by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxv YWRlZCBmaWxlc10pCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1w YXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwKLStb aWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0rICAgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCi0rIGZpXSwKLStbd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoPSIkcHJlZml4Il0pCi0rQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BB VEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKLSsJICAgICAgW0RpcmVjdG9yaWVzIHNhZmUg dG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy5dKQotK0FDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGhdKQotKwotIEFDX0NPTkZJR19TVUJESVJTKHRlc3RzdWl0ZSkKLSAKLSAj IENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlv bnMKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRi LmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMjczNjAw NyArMDIwMAotQEAgLTg2OCw3ICs4NjgsMTEgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRp cl8xIChzdHJ1Y3QgbwotICAgLyogVGhpcyBzaG91bGQgYXQgbWluaW11bSBoaXQgdGhlIGZpcnN0 IGNoYXJhY3Rlci4gICovCi0gICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsKLSAgIHN0cmNweSAo Y3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwotLSAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2Fk IChwYXRoKTsKLSsKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCi0rICAg IHJlc3VsdCA9IDA7Ci0rICBlbHNlCi0rICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAo cGF0aCk7Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gICByZXR1cm4gcmVzdWx0Owot QEAgLTkzNCw3ICs5MzgsMTEgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyIChjb25zdCBj aGFyCi0gICBtZW1jcHkgKHBhdGgsIGRpciwgZGlyX2xlbik7Ci0gICBwYXRoW2Rpcl9sZW5dID0g Jy8nOwotICAgc3RyY3B5IChwYXRoICsgZGlyX2xlbiArIDEsIExJQlRIUkVBRF9EQl9TTyk7Ci0t ICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotKwotKyAgaWYgKCFmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgICAgcmVzdWx0ID0gMDsKLSsgIGVsc2UKLSsgICAg cmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSAKLSAgIGRvX2NsZWFudXBzIChj bGVhbnVwKTsKLSAgIHJldHVybiByZXN1bHQ7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9t YWluLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MTI3MzYwMDcgKzAyMDAK LUBAIC0xMDI2LDcgKzEwMjYsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgICB7 Ci0gICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBhdGgg KGxvY2FsX2dkYmluaXQpOwotIAotLSAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9f bG9hZF9sb2NhbF9nZGJpbml0KQotKyAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9f bG9hZF9sb2NhbF9nZGJpbml0Ci0rCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxf Z2RiaW5pdCkpCi0gCXsKLSAJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOwot IAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEuNjIwNzM1OTg3ICswMjAw Ci1AQCAtMjA4MDEsNiArMjA4MDEsOCBAQCBnZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBj YW5uZWQgc2VxCi0gbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNp ZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KLSBsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9m IC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgotIHB5dGhvbi1z Y3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgotK3NhZmUtcGF0 aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9h ZCBmaWxlcwotKyAgICAgICAgICAgIGlzIC91c3IvbG9jYWwuCi0gQGVuZCBzbWFsbGV4YW1wbGUK LSAKLSBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQotQEAgLTIwODcyLDEyICsyMDg3NCwxOSBAQCBU aGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSBAdGFiIFNob3cgc2V0dGlu ZyBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0gQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxv YWQgbGlidGhyZWFkLWRifS4KLSBAdGFiIFNob3cgc3RhdGUgb2YgdGhyZWFkIGRlYnVnZ2luZyBs aWJyYXJ5LgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofS4KLStAdGFiIENv bnRyb2wgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcuCi0rQGl0ZW0g QHhyZWZ7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofS4KLStAdGFiIFNob3cgZGlyZWN0b3JpZXMg dHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcuCi0rQGl0ZW0gQHhyZWZ7YWRkLWF1dG8tbG9h ZC1zYWZlLXBhdGh9LgotK0B0YWIgQWRkIGRpcmVjdG9yeSB0cnVzdGVkIGZvciBhdXRvbWF0aWMg bG9hZGluZy4KLSBAZW5kIG11bHRpdGFibGUKLSAKLSBAbWVudQotICogSW5pdCBGaWxlIGluIHRo ZSBDdXJyZW50IERpcmVjdG9yeTo6IEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxvY2Fs LWdkYmluaXR9Ci0gKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjogICAgICAgICAgICAgQHNhbXB7 c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQotICogb2JqZmlsZS1nZGIuZ2Ri IGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGdkYi1z Y3JpcHR9Ci0rKiBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoOjogICAgICAgICAgICAgQHNhbXB7c2V0 L3Nob3cvaW5mbyBhdXRvLWxvYWQgc2FmZS1wYXRofQotIEB4cmVme1B5dGhvbiBBdXRvLWxvYWRp bmd9LgotIEBlbmQgbWVudQotIAotQEAgLTIwOTc4LDYgKzIwOTg3LDEwNCBAQCBhdXRvLWxvYWRl ZC4KLSBJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBjYW5uZWQgc2VxdWVuY2VzIG9m IGNvbW1hbmRzIHNjcmlwdHMgd2l0aAotIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgotIAot K0Bub2RlIEF1dG8tbG9hZGluZyBzYWZlIHBhdGgKLStAc3Vic2VjdGlvbiBTZWN1cml0eSByZXN0 cmljdGlvbiBmb3IgYXV0by1sb2FkaW5nCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcgc2FmZS1wYXRo Ci0rCi0rQXMgdGhlIGZpbGVzIG9mIGluZmVyaW9yIGNhbiBjb21lIGZyb20gdW50cnVzdGVkIHNv dXJjZSAoc3VjaCBhcyBzdWJtaXR0ZWQgYnkKLSthbiBhcHBsaWNhdGlvbiB1c2VyKSBAdmFsdWV7 R0RCTn0gZG9lcyBub3QgYWx3YXlzIGxvYWQgYW55IGZpbGVzIGF1dG9tYXRpY2FsbHkuCi0rQHZh bHVle0dEQk59IHByb3ZpZGVzIHRoZSBAc2FtcHtzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0gc2V0 dGluZyB0byBsaXN0Ci0rZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgbG9hZGluZyBmaWxlcyBub3Qg ZXhwbGljaXRseSByZXF1ZXN0ZWQgYnkgdXNlci4KLSsKLStJZiB0aGUgcGF0aCBpcyBub3Qgc2V0 IHByb3Blcmx5IHlvdSB3aWxsIHNlZSBhIHdhcm5pbmcgYW5kIHRoZSBmaWxlIHdpbGwgbm90Ci0r Z2V0IGxvYWRlZDoKLSsKLStAc21hbGxleGFtcGxlCi0rJCAuL2dkYiAtcSAuL2dkYgotK1JlYWRp bmcgc3ltYm9scyBmcm9tIC9ob21lL3VzZXIvZ2RiL2dkYi4uLmRvbmUuCi0rd2FybmluZzogRmls ZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotKyAg ICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vz ci9sb2NhbCIuCi0rd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weSIgYXV0 by1sb2FkaW5nIGhhcyBiZWVuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2Fk IHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwot K1RoZSBsaXN0IG9mIHRydXN0ZWQgZGlyZWN0b3JpZXMgaXMgY29udHJvbGxlZCBieSB0aGUgZm9s bG93aW5nIGNvbW1hbmRzOgotKwotK0B0YWJsZSBAY29kZQotK0BhbmNob3J7c2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGh9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAotK0BpdGVtIHNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIEB2YXJ7ZGlyZWN0b3JpZXN9Ci0rU2V0IHRoZSBsaXN0IG9m IGRpcmVjdG9yaWVzIChhbmQgdGhlaXIgc3ViZGlyZWN0b3JpZXMpIHRydXN0ZWQgZm9yIGF1dG9t YXRpYwotK2xvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgWW91IGNhbiBhbHNvIGVu dGVyIGEgc3BlY2lmaWMgdHJ1c3RlZCBmaWxlLgotK1RoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVz ZXMgZGlyZWN0b3J5IHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBVbml4Ci0rc3lzdGVt cywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0byBzZXBhcmF0ZSBkaXJlY3Rv cmllcywgc2ltaWxhcmx5Ci0rdG8gdGhlIEBlbnZ7UEFUSH0gZW52aXJvbm1lbnQgdmFyaWFibGUu Ci0rCi0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0rQGtpbmRleCBzaG93IGF1 dG8tbG9hZCBzYWZlLXBhdGgKLStAaXRlbSBzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgKLStTaG93 IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nIGFu ZCBleGVjdXRpb24gb2YKLStzY3JpcHRzLgotKwotK0BhbmNob3J7YWRkLWF1dG8tbG9hZC1zYWZl LXBhdGh9Ci0rQGtpbmRleCBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAotK0BpdGVtIGFkZC1hdXRv LWxvYWQtc2FmZS1wYXRoCi0rQWRkIGFuIGVudHJ5IChvciBsaXN0IG9mIGVudHJpZXMpIHRoZSBs aXN0IG9mIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYwotK2xvYWRpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGlwbGUgZW50cmllcyBtYXkgYmUgZGVsaW1pdGVkIGJ5 IHRoZQotK2hvc3QgcGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0rQGVuZCB0 YWJsZQotKwotK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgZGlzYWJs ZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLgotK1RoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQg dG8gYmUgc2V0IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi0rc3lz dGVtIHN1cGVydXNlciBvbmx5LiAgVXNlcnMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZGlyZWN0b3Jp ZXMgaW4gaW5pdCBmaWxlcyBpbgotK3RoZWlyIGhvbWUgZGlyZWN0b3JpZXMgKEBweHJlZntIb21l IERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQKLStpbml0IGZpbGUg aW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0rKEBweHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJl bnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVwfSkuCi0rCi0rVG8gZm9yY2UgQHZhbHVle0dEQk59 IHRvIGxvYWQgdGhlIGZpbGVzIGl0IGRlY2xpbmVkIHRvIGxvYWQgaW4gdGhlIHByZXZpb3VzCi0r ZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB3YXlzOgotKwotK0Bp dGVtaXplIEBidWxsZXQKLStAaXRlbSB+Ly5nZGJpbml0OiBhZGQtYXV0by1sb2FkLXNhZmUtcGF0 aCB+L3NyYy9nZGIKLStTcGVjaWZ5IHRoaXMgdHJ1c3RlZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkg YXMgYWRkaXRpb25hbCBjb21wb25lbnQgb2YgdGhlIGxpc3QuCi0rWW91IGhhdmUgdG8gc3BlY2lm eSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKLStieSBAc2FtcHtz aG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhp cyBleGFtcGxlKS4KLSsKLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBbQGRvdHN7fV19Ci0rU3BlY2lmeSB0aGlzIGRpcmVj dG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKLStAdmFs dWV7R0RCTn0gc2Vzc2lvbi4KLSsKLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCIgW0Bkb3Rze31dfQotK0Rpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3Ig YSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0rVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmls ZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQot K2Zyb20gdHJ1c3RlZCBzb3VyY2VzLgotKwotK0BpdGVtIEBrYmR7Li9jb25maWd1cmUgLS13aXRo b3V0LWF1dG8tbG9hZC1zYWZlLXBhdGh9Ci0rRHVyaW5nIGNvbXBpbGF0aW9uIG9mIEB2YWx1ZXtH REJOfSB5b3UgbWF5IGRpc2FibGUgYW55IGF1dG8tbG9hZGluZyBzYWZldHkuCi0rVGhpcyBhc3N1 bWVzIGFsbCB0aGUgZmlsZXMgeW91IHdpbGwgZXZlciBkZWJ1ZyB3aXRoIHRoaXMgQHZhbHVle0dE Qk59IGNvbWUgZnJvbQotK3RydXN0ZWQgc291cmNlcy4KLStAZW5kIGl0ZW1pemUKLSsKLStPbiB0 aGUgb3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQgYXV0b21hdGljIGZp bGVzIGxvYWRpbmcgd2hpY2gKLSthbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNz YWdlczoKLSsKLStAaXRlbWl6ZSBAYnVsbGV0Ci0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1 dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotK1lvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5k LWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSsKLStAaXRl bSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KLStEaXNhYmxlIGF1 dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKLSsoQHB4cmVme0hvbWUgRGlyZWN0b3J5 IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJsZSwgeW91IGNvdWxkIGFsc28KLSt1 c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJh dGlvbn0pLgotK0BlbmQgaXRlbWl6ZQotKwotK1RoaXMgc2V0dGluZyBhcHBsaWVzIHRvIHRoZSBm aWxlIG5hbWVzIGFzIGVudGVyZWQgYnkgdXNlci4gIElmIG5vIGVudHJ5IG1hdGNoZXMKLStAdmFs dWV7R0RCTn0gdHJpZXMgYXMgYSBsYXN0IHJlc29ydCB0byBhbHNvIHJlc29sdmUgYWxsIHRoZSBm aWxlIG5hbWVzIGludG8KLSt0aGVpciBjYW5vbmljYWwgZm9ybSAodHlwaWNhbGx5IHJlc29sdmlu ZyBzeW1ib2xpYyBsaW5rcykgYW5kIGNvbXBhcmUgdGhlCi0rZW50cmllcyBhZ2Fpbi4gIEB2YWx1 ZXtHREJOfSBhbHJlYWR5IGNhbm9uaWNhbGl6ZXMgbW9zdCBvZiB0aGUgZmlsZW5hbWVzIG9uIGl0 cwotK293biBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbXBhcmlzb24gc28gYSBjYW5vbmljYWwgZm9y bSBvZiBkaXJlY3RvcmllcyBpcwotK3JlY29tbWVuZGVkIHRvIGJlIGVudGVyZWQuCi0rCi0gQG5v ZGUgTWVzc2FnZXMvV2FybmluZ3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVz c2FnZXMKLSAKLUBAIC0yNDk1NSwxMCArMjUwNjIsMTAgQEAgRXhhbXBsZToKLSAKLSBAc21hbGxl eGFtcGxlCi0gKGdkYikgaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKLS1Mb2FkZWQgIFNj cmlwdAotLVllcyAgICAgcHktc2VjdGlvbi1zY3JpcHQucHkKLS0gICAgICAgIGZ1bGwgbmFtZTog L3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotLU1pc3NpbmcgbXktZm9vLXByZXR0eS1wcmludGVy cy5weQotK0xvYWRlZCBTY3JpcHQKLStZZXMgICAgcHktc2VjdGlvbi1zY3JpcHQucHkKLSsgICAg ICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5Ci0rTm8gICAgIG15LWZvby1w cmV0dHktcHJpbnRlcnMucHkKLSBAZW5kIHNtYWxsZXhhbXBsZQotIEBlbmQgdGFibGUKLSAKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxv YWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYy MTczNTk4NSArMDIwMAotQEAgLTcyLDE0ICs3MiwxOSBAQCBzdGF0aWMgdm9pZAotIGdkYnB5X2xv YWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxF ICpmaWxlLAotIAkJCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gewotKyAgaW50IGlzX3Nh ZmU7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAKLSsg IGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7Ci0rCi0gICAvKiBB ZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi0gICBwc3BhY2VfaW5mbyA9 IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9z cGFjZSk7Ci0tICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVu YW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3Bh Y2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1lLAotKwkJICAgICZzY3JpcHRfbGFu Z3VhZ2VfcHl0aG9uKTsKLSAKLS0gIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChv YmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Ci0rICBpZiAoaXNfc2FmZSkKLSsgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKLSB9Ci0g Ci0gLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgotQEAgLTE0Nyw2ICsxNTIs OSBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCXsKLSAJICBt YWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1 bGxfcGF0aCk7Ci0rCi0rCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgp KQotKwkgICAgb3BlbmVkID0gMDsKLSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTE2Nyw3ICsx NzUsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScgdG8KLSAKLSAJIElX Qk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2UuICAqLwotIAotLSAg ICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwg ZnVsbF9wYXRoLAotKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3Bh Y2VfaW5mbywgb3BlbmVkLCBmaWxlLCBmdWxsX3BhdGgsCi0gCQkJCQkmc2NyaXB0X2xhbmd1YWdl X3B5dGhvbik7Ci0gCi0gICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9h ZGVkLCBsb2FkIGl0LiAgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUt c2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0 LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAotQEAgLTM3LDYgKzM3LDcg QEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Ci0gc2V0IHJlbW90ZV9w eXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfS1nZGIucHkuaW4gJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weV0KLSAKLSBnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfdGVzdF9ub19vdXRwdXQgInNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIgotIGdkYl9sb2FkICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9h ZGVkIHRoZSBzY3JpcHQuCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNj cmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5l eHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBAIC00OSw2ICs0OSw3IEBA IGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQotIHNldCByZW1vdGVfcHl0 aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0ucHldCi0gCi0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9weXRob25f ZmlsZX0iICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0g Ci0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0xMW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTFvZjI4LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYzY4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt YXV0b2xvYWQtMTFvZjI4LnBhdGNoCkBAIC0wLDAgKzEsNzQ0IEBACitbcGF0Y2gjNCA1LzhdIHNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAxMi0wNC9tc2cwMDA5Mi5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDEyLTA0L21zZzAwMTE0Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQv MTcgMTU6NTE6NDEJMS4xNDExMworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6 NTQ6MjgJMS4xNDExNAorIyMgLTEsNSArMSwzOSBAQAorIDIwMTItMDQtMTcgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJTmV3IG9wdGlvbiAic2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGgiLgorKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgiCisrCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKysJKiBhdXRv LWxvYWQuYzogSW5jbHVkZSBnZGJfdmVjcy5oLCByZWFkbGluZS90aWxkZS5oIGFuZCBjb21wbGV0 ZXIuaC4KKysJKGF1dG9fbG9hZF9zYWZlX3BhdGgsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKQor KwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlLCBzZXRfYXV0b19sb2FkX3NhZmVfcGF0 aCkKKysJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwgYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgs IGZpbGVuYW1lX2lzX2luX2RpcikKKysJKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjLCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3LgorKwkoc291cmNlX2dkYl9zY3Jp cHRfZm9yX29iamZpbGUpOiBOZXcgdmFyaWFibGUgaXNfc2FmZS4gIENhbGwKKysJZmlsZV9pc19h dXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcyBub3QuCisrCShzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCk6IE5ldyBmaWVsZCBsb2FkZWQuCisrCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFt ZXRlciBsb2FkZWQuICBJbml0aWFsaXplIFNMT1Qgd2l0aCBpdC4KKysJKHByaW50X3NjcmlwdCk6 IFVzZSBMT0FERUQgaW5kaWNhdG9yIGluc3RlYWQgb2YgRlVMTF9QQVRILiAgQ2hhbmdlCisrCW91 dHB1dCAiTWlzc2luZyIgdG8gIk5vIi4KKysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5ldyB2 YXJpYWJsZSBjbWQuICBJbml0aWFsaXplCisrCWF1dG9fbG9hZF9zYWZlX3BhdGguICBSZWdpc3Rl ciAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLAorKwkic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRo IiBhbmQgImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIi4KKysJKiBhdXRvLWxvYWQuaCAobWF5YmVf YWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLgorKwkoZmlsZV9pc19hdXRvX2xvYWRf c2FmZSk6IE5ldyBkZWNsYXJhdGlvbi4KKysJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisrCSog Y29uZmlndXJlOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZS5hYzogTmV3IHBhcmFtZXRlcnMg LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKKysJYW5kIC0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZS1wYXRoLgorKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9w ZGlyXzEpCisrCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBDaGVjayBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIGZpcnN0LgorKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IENoZWNrIGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgZm9yCisrCUxPQ0FMX0dEQklOSVQuCisrCSogcHl0aG9uL3B5 LWF1dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Cisr CXZhcmlhYmxlIGlzX3NhZmUuICBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4g aWYgaXQgaXMgbm90LgorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IENhbGwgZmlsZV9pc19h dXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcworKwlub3QuCisrCisrMjAxMi0wNC0xNyAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAlhdXRvLWxv YWQ6IEltcGxlbWVudGF0aW9uLgorIAkqIE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMgZm9yICJpbmZv IGF1dG8tbG9hZCIsCisgCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0cyIsCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVX UworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEy LTA0LTE4IDAwOjQ5OjAyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4yODI3MDYzMTkgKzAyMDAKK0BAIC02Nyw2ICs2 NywxMSBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKKyBzaG93IGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGIKKyAgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNp ZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCisgCisrc2V0IGF1dG8tbG9hZCBz YWZlLXBhdGggPGRpcjE+Wzo8ZGlyMj4uLi5dCisrc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCisr ICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRv LWxvYWQgZmlsZXMuCisrICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNj b3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgorKworICogTmV3IGNvbW1hbmQgbGluZSBvcHRp b25zCisgCisgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5k LCAteCBidXQgZXhlY3V0ZSBpdAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIw ICswMjAwCitAQCAtMzIsNiArMzIsOSBAQAorICNpbmNsdWRlICJnZGJjbWQuaCIKKyAjaW5jbHVk ZSAiY2xpL2NsaS1kZWNvZGUuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCisrI2lu Y2x1ZGUgImdkYl92ZWNzLmgiCisrI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRlLmgiCisrI2luY2x1 ZGUgImNvbXBsZXRlci5oIgorIAorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0 cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgorICAgIEUuZy4gV2hl biB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAg Ki8KK0BAIC05MCw2ICs5MywxODEgQEAgc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoc3Ry dWN0IHVpXworIAkJICAgIHZhbHVlKTsKKyB9CisgCisrLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0 byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNoZWNrZWQgZm9yCisrICAgYWJz b2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5p dGlhbGl6ZWQgYnkKKysgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQuICAqLworK3N0YXRpYyBjaGFy ICphdXRvX2xvYWRfc2FmZV9wYXRoOworKworKy8qIFZlY3RvciBvZiBkaXJlY3RvcnkgZWxlbWVu dHMgb2YgQVVUT19MT0FEX1NBRkVfUEFUSCB3aXRoIGVhY2ggb25lIG5vcm1hbGl6ZWQKKysgICBi eSB0aWxkZV9leHBhbmQgYW5kIHBvc3NpYmx5IGVhY2ggZW50cmllcyBoYXMgYWRkZWQgaXRzIGdk Yl9yZWFscGF0aAorKyAgIGNvdW50ZXJwYXJ0LiAgKi8KKytzdGF0aWMgVkVDIChjaGFyX3B0cikg KmF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjOworKworKy8qIFVwZGF0ZSBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYyBmcm9tIGN1cnJlbnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICovCisrCisrc3RhdGlj IHZvaWQKKythdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisreworKyAgVkVD IChjaGFyX3B0cikgKmRpcl92ZWMgPSBOVUxMOworKyAgdW5zaWduZWQgbGVuOworKyAgaW50IGl4 OworKworKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKKysK KysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChh dXRvX2xvYWRfc2FmZV9wYXRoKTsKKysgIGxlbiA9IFZFQ19sZW5ndGggKGNoYXJfcHRyLCBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisrCisrICAvKiBBcHBseSB0aWxkZV9leHBhbmQgYW5kIGdk Yl9yZWFscGF0aCB0byBlYWNoIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDCisrICAgICBlbGVtZW50 LiAgKi8KKysgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKKysgICAgeworKyAgICAgIGNo YXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBp eCk7CisrICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7CisrICAgICAg Y2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisrCisrICAgICAgLyog RW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICov CisrICAgICAgeGZyZWUgKGRpcik7CisrICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKKysKKysgICAgICAvKiBJZiBnZGJf cmVhbHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQgaXQuICAqLworKyAg ICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCisrCXhmcmVlIChyZWFs X3BhdGgpOworKyAgICAgIGVsc2UKKysJVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOworKyAgICB9CisrfQorKworKy8qICJzZXQiIGNv bW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUu ICAqLworKworK3N0YXRpYyB2b2lkCisrc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisreworKyAgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworK30KKysKKysvKiAic2hvdyIgY29tbWFu ZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICov CisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq YywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgaWYgKCp2YWx1ZSA9PSAwKQorKyAgICBmcHJp bnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUgdG8gbG9hZCBm cm9tIGFueSAiCisrCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKKysgIGVsc2UKKysgICAgZnBy aW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0 IGlzIHNhZmUgdG8gIgorKwkJCSAgICAgICJhdXRvLWxvYWQgZmlsZXMgaXMgJXMuXG4iKSwKKysJ CSAgICAgIHZhbHVlKTsKKyt9CisrCisrLyogImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIiBjb21t YW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uCisrICAgdmFyaWFi bGUuICAqLworKworK3N0YXRpYyB2b2lkCisrYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBjaGFyICpzOworKworKyAgaWYgKGFyZ3MgPT0g TlVMTCB8fCAqYXJncyA9PSAwKQorKyAgICBlcnJvciAoXygiXAorK0FkZGluZyBlbXB0eSBkaXJl Y3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBzZWN1cml0eS4g IFwKKytVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlmIHlvdSBtZWFuIHRo YXQuIikpOworKworKyAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xvYWRfc2FmZV9w YXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7CisrICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVf cGF0aCk7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0gczsKKysKKysgIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjX3VwZGF0ZSAoKTsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgaXMg ZXF1YWwgdG8gRElSIG9yIGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gdGhlCisrICAgc3ViZGlyZWN0 b3J5IERJUi4gIFJldHVybiAwIG90aGVyd2lzZS4gIGdkYl9yZWFscGF0aCBub3JtYWxpemF0aW9u IGlzIG5ldmVyCisrICAgZG9uZSBoZXJlLiAgKi8KKysKKytzdGF0aWMgQVRUUklCVVRFX1BVUkUg aW50CisrZmlsZW5hbWVfaXNfaW5fZGlyIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hh ciAqZGlyKQorK3sKKysgIHNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIpOworKworKyAgd2hp bGUgKGRpcl9sZW4gJiYgSVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4gLSAxXSkpCisrICAg IGRpcl9sZW4tLTsKKysKKysgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGlyLCBmaWxlbmFtZSwg ZGlyX2xlbikgPT0gMAorKwkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxlbmFtZVtkaXJfbGVu XSkKKysJICAgICAgfHwgZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOworK30KKysKKysvKiBS ZXR1cm4gMSBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIG9uZSBvZiBkaXJlY3RvcnkgY29tcG9uZW50 cyBvZgorKyAgIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgor KyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSBpcyBuZXZlciBjYWxsZWQuCisrICAg KkZJTEVOQU1FX1JFQUxQIG1heSBiZSB1cGRhdGVkIGJ5IGdkYl9yZWFscGF0aCBvZiBGSUxFTkFN RSAtIGl0IGhhcyB0byBiZQorKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLworKworK3N0YXRp YyBpbnQKKytmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoY29uc3QgY2hh ciAqZmlsZW5hbWUsCisrCQkJCQljaGFyICoqZmlsZW5hbWVfcmVhbHApCisreworKyAgY2hhciAq ZGlyOworKyAgaW50IGl4OworKworKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0 ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOyArK2l4KQorKyAgICBpZiAoKmZp bGVuYW1lX3JlYWxwID09IE5VTEwgJiYgZmlsZW5hbWVfaXNfaW5fZGlyIChmaWxlbmFtZSwgZGly KSkKKysgICAgICBicmVhazsKKysgIAorKyAgaWYgKGRpciA9PSBOVUxMKQorKyAgICB7CisrICAg ICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQorKwkqZmlsZW5hbWVfcmVhbHAgPSBnZGJf cmVhbHBhdGggKGZpbGVuYW1lKTsKKysKKysgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUg KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7CisrCSAgICsraXgp CisrCWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKKysJICBi cmVhazsKKysgICAgfQorKworKyAgaWYgKGRpciAhPSBOVUxMKQorKyAgICByZXR1cm4gMTsKKysK KysgIHJldHVybiAwOworK30KKysKKysvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBpcyBsb2NhdGVk IGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgb2YKKysgICBBVVRPX0xPQURfU0FGRV9QQVRILiAg T3RoZXJ3aXNlIGNhbGwgd2FybmluZyBhbmQgcmV0dXJuIDAuICBGSUxFTkFNRSBkb2VzCisrICAg bm90IGhhdmUgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KKysKKysgICBFeGlzdGVuY2Ugb2YgRklM RU5BTUUgaXMgbm90IGNoZWNrZWQuICBGdW5jdGlvbiB3aWxsIHN0aWxsIGdpdmUgYSB3YXJuaW5n CisrICAgZXZlbiBpZiB0aGUgY2FsbGVyIHdvdWxkIHF1aWV0bHkgc2tpcCBub24tZXhpc3Rpbmcg ZmlsZSBpbiB1bnNhZmUKKysgICBkaXJlY3RvcnkuICAqLworKworK2ludAorK2ZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIGNoYXIgKmZpbGVuYW1l X3JlYWwgPSBOVUxMOworKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisrCisrICBiYWNrX3Rv ID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxlbmFtZV9yZWFsKTsK KysKKysgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5h bWUsICZmaWxlbmFtZV9yZWFsKSkKKysgICAgeworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWNfdXBkYXRlICgpOworKyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhf dmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQorKyAgICB7CisrICAgICAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOworKyAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICB3YXJuaW5nIChf KCJGaWxlIFwiJXNcIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQgYnkgeW91ciAiCisr CSAgICAgImBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gXCIlc1wiLiIpLAorKwkgICBmaWxl bmFtZV9yZWFsLCBhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysKKysgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKKysgIHJldHVybiAwOworK30KKysKKyAvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5n dWFnZSBmb3IgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAqLworIAorIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKK0BAIC05 OSwxMyArMjc3LDIwIEBAIHN0YXRpYyB2b2lkCisgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorIAkJCSAgICAgICBjb25z dCBjaGFyICpmaWxlbmFtZSkKKyB7CisrICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZTsKKyAKKysgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFt ZSk7CisrCisgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJp bmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKyAgICAgIGNhbiBwcmludCBpdC4gICovCisgICBw c3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSk7CistICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmls ZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrICBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1lLAorKwkJICAgICZz Y3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKKysKKysgIGlmICghaXNfc2FmZSkKKysgICAgcmV0dXJuOwor IAorICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCisgICAgIHsKK0BAIC0xNDAsNiAr MzI1LDkgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKKyAgICAgIGluYWNjZXNzaWJsZSkuICAqLwor ICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOworIAorKyAgLyogTm9uLXplcm8gaWYgdGhpcyBzY3Jp cHQgaGFzIGJlZW4gbG9hZGVkLiAgKi8KKysgIGludCBsb2FkZWQ7CisrCisgICBjb25zdCBzdHJ1 Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKKyB9OworIAorQEAgLTIzMiwxMiArNDIwLDEz IEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKKyAgIHJldHVybiBp bmZvOworIH0KKyAKKy0vKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJs ZSBvZiBQU1BBQ0VfSU5GTy4KKy0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdh c24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKKysvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VB R0UgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4gIExPQURFRCAxIGlmIHRoZQorKyAgIHNj cmlwdCBoYXMgYmVlbiAoaXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBvdGhlcndpc2UgKHN1Y2gg YXMgaWYgaXQgaGFzIG5vdAorKyAgIGJlZW4gZm91bmQpLiAgRlVMTF9QQVRIIGlzIE5VTEwgaWYg dGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisgICAgdHJ1ZSBpZiB0aGUg c2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKyAKKyBpbnQKKy1tYXli ZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywK KyttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbywgaW50IGxvYWRlZCwKKyAJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVs bF9wYXRoLAorIAkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKKyB7 CitAQCAtMjcxLDYgKzQ2MCw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWMKKyAJfQorICAgICAgIGVsc2UKKyAJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKKysg ICAgICAoKnNsb3QpLT5sb2FkZWQgPSBsb2FkZWQ7CisgICAgICAgKCpzbG90KS0+bGFuZ3VhZ2Ug PSBsYW5ndWFnZTsKKyAgICAgfQorIAorQEAgLTQzMiw3ICs2MjIsNyBAQCBwcmludF9zY3JpcHQg KHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpCisgCisgICBjaGFpbiA9IG1ha2VfY2xlYW51cF91 aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CisgCistICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlz c2luZyIpOworKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQt PmxvYWRlZCA/ICJZZXMiIDogIk5vIik7CisgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwg InNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7CisgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwor IAorQEAgLTcxOCw2ICs5MDgsOCBAQCB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7 Cisgdm9pZAorIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKKyB7CisrICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqY21kOworKworICAgYXV0b19sb2FkX3BzcGFjZV9kYXRhCisgICAgID0g cmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dpdGhfY2xlYW51cCAoYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2NsZWFudXApOworIAorQEAgLTc1Nyw0ICs5NDksMzAgQEAgVGhpcyBvcHRpb25zIGhh cyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgorIAkgICBfKCJQcmludCB3aGV0aGVyIGN1cnJlbnQg ZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAorIFVzYWdlOiBpbmZv IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCisgCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0ICgpKTsKKysKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZBVUxUX0FV VE9fTE9BRF9TQUZFX1BBVEgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgp OworKyAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kICgic2FmZS1wYXRoIiwgY2xh c3Nfc3VwcG9ydCwKKysJCQkJICAgICAmYXV0b19sb2FkX3NhZmVfcGF0aCwgXygiXAorK1NldCB0 aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2Fk IGZpbGVzLiIpLCBfKCJcCisrU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCisrVmFyaW91cyBmaWxlcyBs b2FkZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucyBt dXN0XG5cCisrYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBieSB0 aGlzIG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAorK3ByaW50ZWQgYW5kIGZpbGUgd2lsbCBu b3QgYmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBldmVuXG5cCisrZW1w dHkgZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhlICdzZXQgYXV0by1s b2FkIC4uLicgb3B0aW9ucy5cblwKKytUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2lu ZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLlxuXAorK1RoaXMgb3B0 aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIp LAorKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJCQkgICAgIHNob3dfYXV0 b19sb2FkX3NhZmVfcGF0aCwKKysJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgp LAorKwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGNtZCA9 IGFkZF9jbWQgKCJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCisrCQkg YWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkgXygiQWRkIGVudHJpZXMgdG8gdGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlICIKKysJCSAgICJ0byBhdXRvLWxv YWQgZmlsZXMuXG5cCisrU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgn IGFuZCAnc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0b1xuXAorK2FjY2VzcyB0aGUgY3VycmVu dCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKKysJCSAmY21kbGlzdCk7CisrICBzZXRfY21kX2NvbXBs ZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAw OjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTM5LDcgKzM5LDggQEAgZXh0ZXJuIGludCBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZQorIGV4dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICoKKyAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVj dCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOworIGV4dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAo c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCistCQkJICAgICBjb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCisrCQkJICAgICBpbnQgbG9hZGVk LCBjb25zdCBjaGFyICpuYW1lLAorKwkJCSAgICAgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorIAkJ CSAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworIGV4dGVybiB2 b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisg CQkJCSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKK0BAIC01 NCw0ICs1NSw2IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KKyBl eHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dl dCAodm9pZCk7CisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2lu Zm9fY21kbGlzdF9nZXQgKHZvaWQpOworIAorK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOworKworICNlbmRpZiAvKiBBVVRPX0xPQURfSCAq LworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTItMDQtMTggMDA6 NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln LmluCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCitAQCAtNDMsNiArNDMsOSBA QAorICAgIG1vdmVkLiAqLworICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQorIAorKy8qIERp cmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KKysjdW5kZWYgREVG QVVMVF9BVVRPX0xPQURfU0FGRV9QQVRICisrCisgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQg YXJjaGl0ZWN0dXJlLiAqLworICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICisgCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0x OCAwMDo0OToyMS42MTE3MzYwMTAgKzAyMDAKK0BAIC05NTUsNiArOTU1LDcgQEAgd2l0aF9zZXBh cmF0ZV9kZWJ1Z19kaXIKKyB3aXRoX2dkYl9kYXRhZGlyCisgd2l0aF9yZWxvY2F0ZWRfc291cmNl cworIHdpdGhfcnBtCisrd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCisgZW5hYmxlX3RhcmdldHMK KyBlbmFibGVfNjRfYml0X2JmZAorIGVuYWJsZV9nZGJjbGkKK0BAIC0xNjY2LDYgKzE2NjcsMTAg QEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0 aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCisgICAtLXdpdGgtcnBt ICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAo eWVzL25vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykK KysgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKKysgICAgICAgICAgICAgICAgICAg ICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcworKyAgLS13 aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGRv IG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKKyAgIC0td2l0aC1saWJ1 bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKKyAgIC0t d2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0 aGUgdGVybWNhcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQorQEAgLTg0Nzcs NiArODQ4MiwzMiBAQCAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkUlBNX1BLR19FUlJPCisg ICBmaQorIGZpCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKKyskYXNfZWNob19u ICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2OyB9Cisr CisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdhcyBnaXZlbi4K KytpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6 CisrICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3QgIiR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iIgorKyBmaQorK2Vsc2UKKysgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZp eCIKKytmaQorKworKworKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNf ZGVmYXVsdF9wcmVmaXgiCisrICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNf cHJlZml4PScke3ByZWZpeH0nCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aGAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5l X2RpcmAKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBERUZBVUxUX0FV VE9fTE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgorK19BQ0VPRgorKworKworK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIiA+JjUKKyskYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIg PiY2OyB9CisrCisgCisgCisgc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRlIgorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6NDY6NDcu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFj CTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAtMzM5LDYgKzMzOSwxOCBA QCBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhCisgICBmaQorIGZpCisg IAorK0FDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aF0pCisr QUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKKytBU19IRUxQX1NUUklORyhbLS13aXRo LWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0 by1sb2FkZWQgZmlsZXNdKQorK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNh ZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSks CisrW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorKyAg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgorKyBmaV0sCisrW3dpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aD0iJHByZWZpeCJdKQorK0FDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FG RV9QQVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCSAgICAgIFtEaXJlY3RvcmllcyBz YWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKytBQ19NU0dfUkVTVUxUKFskd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoXSkKKysKKyBBQ19DT05GSUdfU1VCRElSUyh0ZXN0c3VpdGUpCisg CisgIyBDaGVjayB3aGV0aGVyIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3Vy YXRpb25zCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVh ZC1kYi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MTI3 MzYwMDcgKzAyMDAKK0BAIC04NjgsNyArODY4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X3BkaXJfMSAoc3RydWN0IG8KKyAgIC8qIFRoaXMgc2hvdWxkIGF0IG1pbmltdW0gaGl0IHRoZSBm aXJzdCBjaGFyYWN0ZXIuICAqLworICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7CisgICBzdHJj cHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKy0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJf bG9hZCAocGF0aCk7CisrCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQor KyAgICByZXN1bHQgPSAwOworKyAgZWxzZQorKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xv YWQgKHBhdGgpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworICAgcmV0dXJuIHJlc3Vs dDsKK0BAIC05MzQsNyArOTM4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29u c3QgY2hhcgorICAgbWVtY3B5IChwYXRoLCBkaXIsIGRpcl9sZW4pOworICAgcGF0aFtkaXJfbGVu XSA9ICcvJzsKKyAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08p OworLSAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKKysKKysgIGlmICghZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCisrICAgIHJlc3VsdCA9IDA7CisrICBlbHNlCisr ICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CisgCisgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7CisgICByZXR1cm4gcmVzdWx0OworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL21haW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICsw MjAwCitAQCAtMTAyNiw3ICsxMDI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAg ICAgeworICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxw YXRoIChsb2NhbF9nZGJpbml0KTsKKyAKKy0gICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKKysgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdAorKwkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxv Y2FsX2dkYmluaXQpKQorIAl7CisgCSAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0g MTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMDczNTk4NyAr MDIwMAorQEAgLTIwODAxLDYgKzIwODAxLDggQEAgZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcg b2YgY2FubmVkIHNlcQorIGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBz cGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCisgbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGlu ZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KKyBweXRo b24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KKytzYWZl LXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRv LWxvYWQgZmlsZXMKKysgICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgorIEBlbmQgc21hbGxleGFt cGxlCisgCisgQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KK0BAIC0yMDg3MiwxMiArMjA4NzQsMTkg QEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCisgQHRhYiBTaG93IHNl dHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgorIEBpdGVtIEB4cmVme2luZm8gYXV0 by1sb2FkIGxpYnRocmVhZC1kYn0uCisgQHRhYiBTaG93IHN0YXRlIG9mIHRocmVhZCBkZWJ1Z2dp bmcgbGlicmFyeS4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0uCisrQHRh YiBDb250cm9sIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorK0Bp dGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0uCisrQHRhYiBTaG93IGRpcmVjdG9y aWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorK0BpdGVtIEB4cmVme2FkZC1hdXRv LWxvYWQtc2FmZS1wYXRofS4KKytAdGFiIEFkZCBkaXJlY3RvcnkgdHJ1c3RlZCBmb3IgYXV0b21h dGljIGxvYWRpbmcuCisgQGVuZCBtdWx0aXRhYmxlCisgCisgQG1lbnUKKyAqIEluaXQgRmlsZSBp biB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0fQorICogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBz YW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKyAqIG9iamZpbGUtZ2Ri LmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBn ZGItc2NyaXB0fQorKyogQXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6ICAgICAgICAgICAgIEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0KKyBAeHJlZntQeXRob24gQXV0by1s b2FkaW5nfS4KKyBAZW5kIG1lbnUKKyAKK0BAIC0yMDk3OCw2ICsyMDk4NywxMDQgQEAgYXV0by1s b2FkZWQuCisgSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVkIHNlcXVlbmNl cyBvZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKKyBtYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4K KyAKKytAbm9kZSBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoCisrQHN1YnNlY3Rpb24gU2VjdXJpdHkg cmVzdHJpY3Rpb24gZm9yIGF1dG8tbG9hZGluZworK0BjaW5kZXggYXV0by1sb2FkaW5nIHNhZmUt cGF0aAorKworK0FzIHRoZSBmaWxlcyBvZiBpbmZlcmlvciBjYW4gY29tZSBmcm9tIHVudHJ1c3Rl ZCBzb3VyY2UgKHN1Y2ggYXMgc3VibWl0dGVkIGJ5CisrYW4gYXBwbGljYXRpb24gdXNlcikgQHZh bHVle0dEQk59IGRvZXMgbm90IGFsd2F5cyBsb2FkIGFueSBmaWxlcyBhdXRvbWF0aWNhbGx5Lgor K0B2YWx1ZXtHREJOfSBwcm92aWRlcyB0aGUgQHNhbXB7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9 IHNldHRpbmcgdG8gbGlzdAorK2RpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGxvYWRpbmcgZmlsZXMg bm90IGV4cGxpY2l0bHkgcmVxdWVzdGVkIGJ5IHVzZXIuCisrCisrSWYgdGhlIHBhdGggaXMgbm90 IHNldCBwcm9wZXJseSB5b3Ugd2lsbCBzZWUgYSB3YXJuaW5nIGFuZCB0aGUgZmlsZSB3aWxsIG5v dAorK2dldCBsb2FkZWQ6CisrCisrQHNtYWxsZXhhbXBsZQorKyQgLi9nZGIgLXEgLi9nZGIKKytS ZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgorK3dhcm5pbmc6 IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4K KysgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8g Ii91c3IvbG9jYWwiLgorK3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHki IGF1dG8tbG9hZGluZyBoYXMgYmVlbgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8t bG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCisrQGVuZCBzbWFsbGV4YW1wbGUK KysKKytUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhl IGZvbGxvd2luZyBjb21tYW5kczoKKysKKytAdGFibGUgQGNvZGUKKytAYW5jaG9ye3NldCBhdXRv LWxvYWQgc2FmZS1wYXRofQorK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKKytAaXRl bSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQorK1NldCB0aGUgbGlz dCBvZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBh dXRvbWF0aWMKKytsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxz byBlbnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmlsZS4KKytUaGUgbGlzdCBvZiBkaXJlY3Rvcmll cyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAorK3N5 c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGly ZWN0b3JpZXMsIHNpbWlsYXJseQorK3RvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlh YmxlLgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofQorK0BraW5kZXggc2hv dyBhdXRvLWxvYWQgc2FmZS1wYXRoCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCisr U2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGlu ZyBhbmQgZXhlY3V0aW9uIG9mCisrc2NyaXB0cy4KKysKKytAYW5jaG9ye2FkZC1hdXRvLWxvYWQt c2FmZS1wYXRofQorK0BraW5kZXggYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKKytAaXRlbSBhZGQt YXV0by1sb2FkLXNhZmUtcGF0aAorK0FkZCBhbiBlbnRyeSAob3IgbGlzdCBvZiBlbnRyaWVzKSB0 aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMKKytsb2FkaW5nIGFu ZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJlIGRlbGltaXRl ZCBieSB0aGUKKytob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNlLgorK0Bl bmQgdGFibGUKKysKKytTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGRp c2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KKytUaGlzIHZhcmlhYmxlIGlzIHN1cHBv c2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQor K3N5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVj dG9yaWVzIGluIGluaXQgZmlsZXMgaW4KKyt0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7 SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCisraW5pdCBm aWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorKyhAcHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBD dXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0pLgorKworK1RvIGZvcmNlIEB2YWx1ZXtH REJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRoZSBwcmV2aW91 cworK2V4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgd2F5czoKKysK KytAaXRlbWl6ZSBAYnVsbGV0CisrQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8tbG9hZC1zYWZl LXBhdGggfi9zcmMvZ2RiCisrU3BlY2lmeSB0aGlzIHRydXN0ZWQgZGlyZWN0b3J5IChvciBhIGZp bGUpIGFzIGFkZGl0aW9uYWwgY29tcG9uZW50IG9mIHRoZSBsaXN0LgorK1lvdSBoYXZlIHRvIHNw ZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5CisrYnkgQHNh bXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGlu IHRoaXMgZXhhbXBsZSkuCisrCisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQorK1NwZWNpZnkgdGhpcyBk aXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCisr QHZhbHVle0dEQk59IHNlc3Npb24uCisrCisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8t bG9hZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KKytEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkg Zm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorK1RoaXMgYXNzdW1lcyBhbGwgdGhl IGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNv bWUKKytmcm9tIHRydXN0ZWQgc291cmNlcy4KKysKKytAaXRlbSBAa2Jkey4vY29uZmlndXJlIC0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofQorK0R1cmluZyBjb21waWxhdGlvbiBvZiBAdmFs dWV7R0RCTn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgorK1RoaXMg YXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2YWx1 ZXtHREJOfSBjb21lIGZyb20KKyt0cnVzdGVkIHNvdXJjZXMuCisrQGVuZCBpdGVtaXplCisrCisr T24gdGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgZm9yYmlkIGF1dG9tYXRp YyBmaWxlcyBsb2FkaW5nIHdoaWNoCisrYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5pbmcg bWVzc2FnZXM6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNl dCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KKytZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0gY29t bWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisrCisr QGl0ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99CisrRGlzYWJs ZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1c2VyCisrKEBweHJlZntIb21lIERpcmVj dG9yeSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGltcHJvYmFibGUsIHlvdSBjb3VsZCBhbHNv CisrdXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAoQHB4cmVme1N5c3RlbS13aWRlIGNvbmZp Z3VyYXRpb259KS4KKytAZW5kIGl0ZW1pemUKKysKKytUaGlzIHNldHRpbmcgYXBwbGllcyB0byB0 aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRyeSBtYXRjaGVzCisr QHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0 aGUgZmlsZSBuYW1lcyBpbnRvCisrdGhlaXIgY2Fub25pY2FsIGZvcm0gKHR5cGljYWxseSByZXNv bHZpbmcgc3ltYm9saWMgbGlua3MpIGFuZCBjb21wYXJlIHRoZQorK2VudHJpZXMgYWdhaW4uICBA dmFsdWV7R0RCTn0gYWxyZWFkeSBjYW5vbmljYWxpemVzIG1vc3Qgb2YgdGhlIGZpbGVuYW1lcyBv biBpdHMKKytvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2Fs IGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKKytyZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgorKwor IEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCisgQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5k IE1lc3NhZ2VzCisgCitAQCAtMjQ5NTUsMTAgKzI1MDYyLDEwIEBAIEV4YW1wbGU6CisgCisgQHNt YWxsZXhhbXBsZQorIChnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCistTG9hZGVk ICBTY3JpcHQKKy1ZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5CistICAgICAgICBmdWxsIG5h bWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKKy1NaXNzaW5nIG15LWZvby1wcmV0dHktcHJp bnRlcnMucHkKKytMb2FkZWQgU2NyaXB0CisrWWVzICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Cisr ICAgICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQorK05vICAgICBteS1m b28tcHJldHR5LXByaW50ZXJzLnB5CisgQGVuZCBzbWFsbGV4YW1wbGUKKyBAZW5kIHRhYmxlCisg CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0 by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToy MS42MjE3MzU5ODUgKzAyMDAKK0BAIC03MiwxNCArNzIsMTkgQEAgc3RhdGljIHZvaWQKKyBnZGJw eV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg RklMRSAqZmlsZSwKKyAJCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKysgIGludCBp c19zYWZlOworICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Cisg CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOworKworICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworICAgcHNwYWNlX2lu Zm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dy YW1fc3BhY2UpOworLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBm aWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworKyAgbWF5YmVfYWRkX3NjcmlwdCAo cHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKKysJCSAgICAmc2NyaXB0 X2xhbmd1YWdlX3B5dGhvbik7CisgCistICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworKyAgaWYgKGlzX3NhZmUpCisrICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Cisg fQorIAorIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KK0BAIC0xNDcsNiAr MTUyLDkgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAl7Cisg CSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVl LCBmdWxsX3BhdGgpOworKworKwkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9w YXRoKSkKKysJICAgIG9wZW5lZCA9IDA7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0xNjcs NyArMTc1LDcgQEAgVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0nIHRvCisgCisg CSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KKyAK Ky0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZp bGUsIGZ1bGxfcGF0aCwKKysgICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAo cHNwYWNlX2luZm8sIG9wZW5lZCwgZmlsZSwgZnVsbF9wYXRoLAorIAkJCQkJJnNjcmlwdF9sYW5n dWFnZV9weXRob24pOworIAorICAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5 IGxvYWRlZCwgbG9hZCBpdC4gICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpm aWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNj cmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKK0BAIC0zNyw2ICsz Nyw3IEBAIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQorIHNldCByZW1v dGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0tZ2RiLnB5LmluICR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIucHldCisgCisg Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9weXRob25fZmlsZX0iICJzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisgIyBWZXJpZnkgZ2Ri IGxvYWRlZCB0aGUgc2NyaXB0LgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlv bi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3Jp cHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtNDksNiArNDks NyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKyBzZXQgcmVtb3Rl X3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9LnB5XQorIAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgor K2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0 aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xvYWQgJHtiaW5maWxl fQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMTJvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEyb2YyMi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkyYmRiYy4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xv YWQtMTJvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUyICswLDAgQEAKLVtwYXRjaCM0 IDYvOF0gc2V0IGRlYnVnIGF1dG8tbG9hZAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTItMDQvbXNnMDAwODkuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMi0wNC9tc2cwMDExNS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3 IDE1OjU2OjIwCTEuMTQxMTUKLSMjIC0xLDUgKzEsMjcgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCU5ldyBvcHRpb24gInNl dCBkZWJ1ZyBhdXRvLWxvYWQiLgotKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGRlYnVnIGF1 dG8tbG9hZCIgYW5kICJzaG93IGRlYnVnIGF1dG8tbG9hZCIuCi0rCSogYXV0by1sb2FkLmMgKGRl YnVnX2F1dG9fbG9hZCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQ6IE5ldy4KLSsJKGF1dG9fbG9hZF9z YWZlX3BhdGhfdmVjX3VwZGF0ZSkKLSsJKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjKTogQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQKLSsJaWYgREVCVUdfQVVUT19MT0FELgot KwkoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVnX2ZtdCBhbmQg Li4uLgotKwlDYWxsIGZwcmludGZfdW5maWx0ZXJlZCBpZiBERUJVR19BVVRPX0xPQUQuCi0rCShz b3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IEV4dGVuZCB0aGUgZmlsZV9pc19hdXRvX2xv YWRfc2FmZQotKwljYWxsZXIgYnkgZXhwbGFuYXRvcnkgc3RyaW5nLgotKwkoX2luaXRpYWxpemVf YXV0b19sb2FkKTogUmVnaXN0ZXIgInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgotKwkqIGF1dG8tbG9h ZC5oIChmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBhcmFtZXRlcnMgZGVidWdfZm10Ci0r CWFuZCAuLi4uCi0rCSogbGludXgtdGhyZWFkLWRiLmMgKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X3BkaXJfMSkKLSsJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IEV4dGVuZCB0aGUgZmls ZV9pc19hdXRvX2xvYWRfc2FmZSBjYWxsZXIKLSsJYnkgZXhwbGFuYXRvcnkgc3RyaW5nLgotKwkq IG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IExpa2V3aXNlLgotKwkqIHB5dGhvbi9weS1hdXRvLWxv YWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSkKLSsJKHNvdXJjZV9zZWN0 aW9uX3NjcmlwdHMpOiBMaWtld2lzZS4KLSsKLSsyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCU5ldyBvcHRpb24gInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoIi4KLSAJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoIgotIAlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjMzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo1MDoxNS4wMTg2MDAy ODIgKzAyMDAKLUBAIC03Miw2ICs3MiwxMCBAQCBzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgKLSAg IFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8t bG9hZCBmaWxlcy4KLSAgIFRoZSBkZWxpbWl0ZXIgKCc6JyBhYm92ZSkgbWF5IGRpZmZlciBhY2Nv cmRpbmcgdG8gdGhlIGhvc3QgcGxhdGZvcm0uCi0gCi0rc2V0IGRlYnVnIGF1dG8tbG9hZCBvbnxv ZmYKLStzaG93IGRlYnVnIGF1dG8tbG9hZAotKyAgQ29udHJvbCBkaXNwbGF5IG9mIGRlYnVnZ2lu ZyBpbmZvIGZvciBhdXRvLWxvYWRpbmcgdGhlIGZpbGVzIGFib3ZlLgotKwotICogTmV3IGNvbW1h bmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExp a2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NTA6 MDQuODAxNjI2MjM1ICswMjAwCi1AQCAtNDMsNiArNDMsMjAgQEAKLSBzdGF0aWMgdm9pZCBzb3Vy Y2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUg KmZpbGUsCi0gCQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0gCi0rLyogVmFsdWUgb2Yg dGhlICdzZXQgZGVidWcgYXV0by1sb2FkJyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLStz dGF0aWMgaW50IGRlYnVnX2F1dG9fbG9hZCA9IDA7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9y IHRoZSBkZWJ1Z19hdXRvX2xvYWQgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStzaG93X2RlYnVnX2F1dG9fbG9hZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGlu dCBmcm9tX3R0eSwKLSsJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBj aGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJEZWJ1Z2dpbmcg b3V0cHV0IGZvciBmaWxlcyAiCi0rCQkJICAgICJvZiAnc2V0IGF1dG8tbG9hZCAuLi4nIGlzICVz LlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSAvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0 byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklMRV9OQU1FCi0gICAg c2NyaXB0czoKLSAgICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgotQEAgLTExMiw2 ICsxMjYsMTEgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQotICAgdW5z aWduZWQgbGVuOwotICAgaW50IGl4OwotIAotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCV8oImF1dG8tbG9hZDogVXBkYXRp bmcgZGlyZWN0b3JpZXMgb2YgXCIlc1wiLlxuIiksCi0rCQkJYXV0b19sb2FkX3NhZmVfcGF0aCk7 Ci0rCi0gICBmcmVlX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOwotIAot ICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGF1 dG9fbG9hZF9zYWZlX3BhdGgpOwotQEAgLTEyNiwxNCArMTQ1LDM0IEBAIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgICAgICBjaGFyICpyZWFsX3BhdGggPSBnZGJfcmVh bHBhdGggKGV4cGFuZGVkKTsKLSAKLSAgICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkg aXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KLS0gICAgICB4ZnJlZSAoZGlyKTsKLSAg ICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwg ZXhwYW5kZWQpOwotIAotKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCi0rCXsKLSsJICBpZiAo c3RyY21wIChleHBhbmRlZCwgZGlyKSA9PSAwKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotKwkJCQlfKCJhdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSBcIiVzXCIuXG4i KSwKLSsJCQkJZXhwYW5kZWQpOwotKwkgIGVsc2UKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCBkaXJlY3RvcnkgXCIlc1wi ICIKLSsJCQkJICAiYXMgXCIlc1wiLlxuIiksCi0rCQkJCWRpciwgZXhwYW5kZWQpOwotKwl9Ci0r ICAgICAgeGZyZWUgKGRpcik7Ci0rCi0gICAgICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMg YSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8KLSAgICAgICBpZiAoc3RyY21wIChy ZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQotIAl4ZnJlZSAocmVhbF9wYXRoKTsKLSAgICAgICBl bHNlCi0tCVZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywg cmVhbF9wYXRoKTsKLSsJewotKwkgIFZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKLSsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkKQot KwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQlfKCJhdXRvLWxvYWQ6 IEFuZCBjYW5vbmljYWxpemVkIGFzIFwiJXNcIi5cbiIpLAotKwkJCQlyZWFsX3BhdGgpOwotKwl9 Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjE3LDE2ICsyNTYsMzAgQEAgZmlsZW5hbWVfaXNfaW5fYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMgKAotICAgaWYgKGRpciA9PSBOVUxMKQotICAgICB7Ci0gICAg ICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQotLQkqZmlsZW5hbWVfcmVhbHAgPSBnZGJf cmVhbHBhdGggKGZpbGVuYW1lKTsKLSsJewotKwkgICpmaWxlbmFtZV9yZWFscCA9IGdkYl9yZWFs cGF0aCAoZmlsZW5hbWUpOwotKwkgIGlmIChkZWJ1Z19hdXRvX2xvYWQgJiYgc3RyY21wICgqZmls ZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAwKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29sdmVkICIKLSsJCQkJICAiZmlsZSBc IiVzXCIgYXMgXCIlc1wiLlxuIiksCi0rCQkJCWZpbGVuYW1lLCAqZmlsZW5hbWVfcmVhbHApOwot Kwl9Ci0gCi0tICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19s b2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOwotLQkgICArK2l4KQotLQlpZiAoZmlsZW5hbWVf aXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCi0tCSAgYnJlYWs7Ci0rICAgICAgaWYg KHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKLSsJZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIp OwotKwkgICAgICsraXgpCi0rCSAgaWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3Jl YWxwLCBkaXIpKQotKwkgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSAgIGlmIChkaXIgIT0gTlVMTCkK LS0gICAgcmV0dXJuIDE7Ci0rICAgIHsKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogRmlsZSBcIiVzXCIg bWF0Y2hlcyAiCi0rCQkJCQkgICJkaXJlY3RvcnkgXCIlc1wiLlxuIiksCi0rCQkJICAgIGZpbGVu YW1lLCBkaXIpOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0gCi0gICByZXR1cm4gMDsKLSB9 Ci1AQCAtMjQwLDExICsyOTMsMjAgQEAgZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMgKAotICAgIGRpcmVjdG9yeS4gICovCi0gCi0gaW50Ci0tZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29u c3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKQotIHsKLSAgIGNo YXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOwotICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0g Ci0rICBpZiAoZGVidWdfYXV0b19sb2FkKQotKyAgICB7Ci0rICAgICAgdmFfbGlzdCBkZWJ1Z19h cmdzOwotKwotKyAgICAgIHZhX3N0YXJ0IChkZWJ1Z19hcmdzLCBkZWJ1Z19mbXQpOwotKyAgICAg IHZmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIGRlYnVnX2ZtdCwgZGVidWdfYXJncyk7 Ci0rICAgICAgdmFfZW5kIChkZWJ1Z19hcmdzKTsKLSsgICAgfQotKwotICAgYmFja190byA9IG1h a2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmlsZW5hbWVfcmVhbCk7Ci0gCi0g ICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAm ZmlsZW5hbWVfcmVhbCkpCi1AQCAtMjgxLDcgKzM0MywxMCBAQCBzb3VyY2VfZ2RiX3NjcmlwdF9m b3Jfb2JqZmlsZSAoc3RydWN0IG9iCi0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpw c3BhY2VfaW5mbzsKLSAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0gCi0tICBp c19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOwotKyAgaXNfc2FmZSA9 IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lLCBfKCJhdXRvLWxvYWQ6IExvYWRpbmcg Y2FubmVkICIKLSsJCQkJCQkic2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdCAiCi0rCQkJCQkJ IlwiJXNcIiBmb3Igb2JqZmlsZSBcIiVzXCIuXG4iKSwKLSsJCQkJICAgIGZpbGVuYW1lLCBvYmpm aWxlLT5uYW1lKTsKLSAKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0 b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotICAgICAgY2FuIHByaW50IGl0LiAg Ki8KLUBAIC05NzUsNCArMTA0MCwxMyBAQCBTZWUgdGhlIGNvbW1hbmRzICdzZXQgYXV0by1sb2Fk IHNhZmUtcGF0Ci0gYWNjZXNzIHRoZSBjdXJyZW50IGZ1bGwgbGlzdCBzZXR0aW5nLiIpLAotIAkJ ICZjbWRsaXN0KTsKLSAgIHNldF9jbWRfY29tcGxldGVyIChjbWQsIGZpbGVuYW1lX2NvbXBsZXRl cik7Ci0rCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX21h aW50ZW5hbmNlLAotKwkJCSAgICZkZWJ1Z19hdXRvX2xvYWQsIF8oIlwKLStTZXQgYXV0by1sb2Fk IHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCi0rU2hvdyBhdXRvLWxvYWQgdmVyaWZp Y2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKLStXaGVuIG5vbi16ZXJvLCBkZWJ1Z2dpbmcgb3V0 cHV0IGZvciBmaWxlcyBvZiAnc2V0IGF1dG8tbG9hZCAuLi4nXG5cCi0raXMgZGlzcGxheWVkLiIp LAotKwkJCSAgICBOVUxMLCBzaG93X2RlYnVnX2F1dG9fbG9hZCwKLSsJCQkgICAgJnNldGRlYnVn bGlzdCwgJnNob3dkZWJ1Z2xpc3QpOwotIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjUwOjA0Ljgw MTYyNjIzNSArMDIwMAotQEAgLTU1LDYgKzU1LDcgQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICoqYXV0b19sbwotIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9f bG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7Ci0gCi0tZXh0ZXJuIGlu dCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0rZXh0ZXJu IGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSwKLSsJCQkJ ICAgY29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pOwotIAotICNlbmRpZiAvKiBBVVRPX0xPQURf SCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQt ZGIuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2 MjM1ICswMjAwCi1AQCAtODY5LDcgKzg2OSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3Bk aXJfMSAoc3RydWN0IG8KLSAgIGdkYl9hc3NlcnQgKGNwICE9IE5VTEwpOwotICAgc3RyY3B5IChj cCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Ci0gCi0tICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKHBhdGgpKQotKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoLCBfKCJhdXRv LWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKLSsJCQkJICAgICAgICJsaWJyYXJ5IFwiJXNc IiBmcm9tICRwZGlyLlxuIiksCi0rCQkJICAgICAgIHBhdGgpKQotICAgICByZXN1bHQgPSAwOwot ICAgZWxzZQotICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotQEAgLTkz OSw3ICs5NDEsMTAgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyIChjb25zdCBjaGFyCi0g ICBwYXRoW2Rpcl9sZW5dID0gJy8nOwotICAgc3RyY3B5IChwYXRoICsgZGlyX2xlbiArIDEsIExJ QlRIUkVBRF9EQl9TTyk7Ci0gCi0tICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgp KQotKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoLCBfKCJhdXRvLWxvYWQ6IExv YWRpbmcgbGlidGhyZWFkLWRiICIKLSsJCQkJICAgICAgICJsaWJyYXJ5IFwiJXNcIiBmcm9tIGV4 cGxpY2l0ICIKLSsJCQkJICAgICAgICJkaXJlY3RvcnkuXG4iKSwKLSsJCQkgICAgICAgcGF0aCkp Ci0gICAgIHJlc3VsdCA9IDA7Ci0gICBlbHNlCi0gICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJf bG9hZCAocGF0aCk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0x OCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9t YWluLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKLUBAIC0xMDI3LDcgKzEw MjcsMTAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICBhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7Ci0gCi0g ICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKLS0J ICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKLSsJICAmJiBmaWxl X2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0LAotKwkJCQkgICAgIF8oImF1dG8tbG9h ZDogTG9hZGluZyAuZ2RiaW5pdCAiCi0rCQkJCSAgICAgICAiZmlsZSBcIiVzXCIuXG4iKSwKLSsJ CQkJICAgICBsb2NhbF9nZGJpbml0KSkKLSAJewotIAkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X2xvYWRlZCA9IDE7Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50 ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo1MDowNC44 MDk2MjYyMTUgKzAyMDAKLUBAIC0yMDg4Nyw2ICsyMDg4Nyw3IEBAIFRoZXNlIGFyZSBAdmFsdWV7 R0RCTn0gY29udHJvbCBjb21tYW5kcwotICogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAg ICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLSAqIG9i amZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1 dG8tbG9hZCBnZGItc2NyaXB0fQotICogQXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6ICAgICAgICAg ICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0KLSsqIEF1dG8tbG9h ZGluZyB2ZXJib3NlIG1vZGU6OiAgICAgICAgICBAc2FtcHtzZXQvc2hvdyBkZWJ1ZyBhdXRvLWxv YWR9Ci0gQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCi0gQGVuZCBtZW51Ci0gCi1AQCAtMjEw ODUsNiArMjEwODYsNDUgQEAgZW50cmllcyBhZ2Fpbi4gIEB2YWx1ZXtHREJOfSBhbHJlYWR5IGNh bgotIG93biBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbXBhcmlzb24gc28gYSBjYW5vbmljYWwgZm9y bSBvZiBkaXJlY3RvcmllcyBpcwotIHJlY29tbWVuZGVkIHRvIGJlIGVudGVyZWQuCi0gCi0rQG5v ZGUgQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZQotK0BzdWJzZWN0aW9uIERpc3BsYXlpbmcgZmls ZXMgdHJpZWQgZm9yIGF1dG8tbG9hZAotK0BjaW5kZXggYXV0by1sb2FkaW5nIHZlcmJvc2UgbW9k ZQotKwotK0ZvciBiZXR0ZXIgdmlzaWJpbGl0eSBvZiBhbGwgdGhlIGZpbGUgbG9jYXRpb25zIHdo ZXJlIHlvdSBjYW4gcGxhY2Ugc2NyaXB0cyB0bwotK2JlIGF1dG8tbG9hZGVkIHdpdGggaW5mZXJp b3IgLS0tIG9yIHRvIHByb3RlY3QgeW91cnNlbGYgYWdhaW5zdCBhY2NpZGVudGFsCi0rZXhlY3V0 aW9uIG9mIHVudHJ1c3RlZCBzY3JpcHRzIC0tLSBAdmFsdWV7R0RCTn0gcHJvdmlkZXMgYSBmZWF0 dXJlIGZvciBwcmludGluZwotK2FsbCB0aGUgZmlsZXMgYXR0ZW1wdGVkIHRvIGJlIGxvYWRlZC4g IEJvdGggZXhpc3RpbmcgYW5kIG5vbi1leGlzdGluZyBmaWxlcyBtYXkKLStiZSBwcmludGVkLgot KwotK0ZvciBleGFtcGxlIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKLSsoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9 KSBhcHBsaWVzIGFsc28gdG8gY2Fub25pY2FsaXplZCBmaWxlbmFtZXMgd2hpY2gKLSttYXkgbm90 IGJlIHRvbyBvYnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAuCi0rCi0rQHNtYWxsZXhhbXBsZQot KyhnZGIpIHNldCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCi0rKGdkYikgZmlsZSB+L3NyYy90L3RydWUK LSthdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQg Ii90bXAvdHJ1ZS1nZGIuZ2RiIgotKyAgICAgICAgICAgZm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIu Ci0rYXV0by1sb2FkOiBVcGRhdGluZyBkaXJlY3RvcmllcyBvZiAiL3Vzcjovb3B0Ii4KLSthdXRv LWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSAiL3VzciIuCi0rYXV0by1sb2FkOiBVc2luZyBkaXJlY3Rv cnkgIi9vcHQiLgotK3dhcm5pbmc6IEZpbGUgIi90bXAvdHJ1ZS1nZGIuZ2RiIiBhdXRvLWxvYWRp bmcgaGFzIGJlZW4gZGVjbGluZWQKLSsgICAgICAgICBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1w YXRoJyBzZXQgdG8gIi91c3I6L29wdCIuCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAdGFibGUg QGNvZGUKLStAYW5jaG9ye3NldCBkZWJ1ZyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBzZXQgZGVidWcg YXV0by1sb2FkCi0rQGl0ZW0gc2V0IGRlYnVnIGF1dG8tbG9hZCBbb258b2ZmXQotK1NldCB3aGV0 aGVyIHRvIHByaW50IHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJlIGF1dG8tbG9hZGVkLgot KwotK0BhbmNob3J7c2hvdyBkZWJ1ZyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBzaG93IGRlYnVnIGF1 dG8tbG9hZAotK0BpdGVtIHNob3cgZGVidWcgYXV0by1sb2FkCi0rU2hvdyB3aGV0aGVyIHByaW50 aW5nIG9mIHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJlIGF1dG8tbG9hZGVkIGlzIHR1cm5l ZAotK29uIG9yIG9mZi4KLStAZW5kIHRhYmxlCi0rCi0gQG5vZGUgTWVzc2FnZXMvV2FybmluZ3MK LSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMKLSAKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgxMDYyNjIxMiAr MDIwMAotQEAgLTc1LDcgKzc1LDEwIEBAIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZp bGUgKHN0cnUKLSAgIGludCBpc19zYWZlOwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqcHNwYWNlX2luZm87Ci0gCi0tICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAo ZmlsZW5hbWUpOwotKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1l LAotKwkJCQkgICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIFB5dGhvbiBzY3JpcHQgXCIlc1wiICIK LSsJCQkJICAgICAgImJ5IGV4dGVuc2lvbiBmb3Igb2JqZmlsZSBcIiVzXCIuXG4iKSwKLSsJCQkJ ICAgIGZpbGVuYW1lLCBvYmpmaWxlLT5uYW1lKTsKLSAKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0 byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgot ICAgICAgY2FuIHByaW50IGl0LiAgKi8KLUBAIC0xNTMsNyArMTU2LDEyIEBAIHNvdXJjZV9zZWN0 aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChz dHJlYW0pOwotIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7Ci0gCi0tCSAgaWYg KCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgpKQotKwkgIGlmICghZmlsZV9pc19h dXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoLAotKwkJCQkgICAgICAgXygiYXV0by1sb2FkOiBMb2Fk aW5nIFB5dGhvbiBzY3JpcHQgIgotKwkJCQkJICJcIiVzXCIgZnJvbSBzZWN0aW9uIFwiJXNcIiBv ZiAiCi0rCQkJCQkgIm9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICAgICBmdWxsX3BhdGgs IEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLAotKwkJCQkgICAgICAgb2JqZmlsZS0+bmFtZSkpCi0g CSAgICBvcGVuZWQgPSAwOwotIAl9Ci0gICAgICAgZWxzZQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0xMm9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTJvZjI4LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MmJkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt YXV0b2xvYWQtMTJvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMzUyIEBACitbcGF0Y2gjNCA2LzhdIHNl dCBkZWJ1ZyBhdXRvLWxvYWQKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA0L21zZzAwMDg5Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDQvbXNnMDAxMTUuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo1NDoyOAkxLjE0MTE0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1Njoy MAkxLjE0MTE1CisjIyAtMSw1ICsxLDI3IEBACisgMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwlOZXcgb3B0aW9uICJzZXQgZGVidWcg YXV0by1sb2FkIi4KKysJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBkZWJ1ZyBhdXRvLWxvYWQi IGFuZCAic2hvdyBkZWJ1ZyBhdXRvLWxvYWQiLgorKwkqIGF1dG8tbG9hZC5jIChkZWJ1Z19hdXRv X2xvYWQsIHNob3dfZGVidWdfYXV0b19sb2FkOiBOZXcuCisrCShhdXRvX2xvYWRfc2FmZV9wYXRo X3ZlY191cGRhdGUpCisrCShmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk6 IENhbGwgZnByaW50Zl91bmZpbHRlcmVkCisrCWlmIERFQlVHX0FVVE9fTE9BRC4KKysJKGZpbGVf aXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQgYW5kIC4uLi4KKysJ Q2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQgaWYgREVCVUdfQVVUT19MT0FELgorKwkoc291cmNlX2dk Yl9zY3JpcHRfZm9yX29iamZpbGUpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUK KysJY2FsbGVyIGJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KKysJKF9pbml0aWFsaXplX2F1dG9fbG9h ZCk6IFJlZ2lzdGVyICJzZXQgZGVidWcgYXV0by1sb2FkIi4KKysJKiBhdXRvLWxvYWQuaCAoZmls ZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVnX2ZtdAorKwlhbmQgLi4u LgorKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEp CisrCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgY2FsbGVyCisrCWJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KKysJKiBtYWluLmMg KGNhcHR1cmVkX21haW4pOiBMaWtld2lzZS4KKysJKiBweXRob24vcHktYXV0by1sb2FkLmMgKGdk YnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUpCisrCShzb3VyY2Vfc2VjdGlvbl9zY3Jp cHRzKTogTGlrZXdpc2UuCisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgorKworIAlOZXcgb3B0aW9uICJzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCIuCisgCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIK KyAJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NTA6MTUuMDE4NjAwMjgyICswMjAw CitAQCAtNzIsNiArNzIsMTAgQEAgc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCisgICBTZXQgYSBs aXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmls ZXMuCisgICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRv IHRoZSBob3N0IHBsYXRmb3JtLgorIAorK3NldCBkZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCisrc2hv dyBkZWJ1ZyBhdXRvLWxvYWQKKysgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5mbyBm b3IgYXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KKysKKyAqIE5ldyBjb21tYW5kIGxpbmUg b3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29t bWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9h dXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv YXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYy NjIzNSArMDIwMAorQEAgLTQzLDYgKzQzLDIwIEBACisgc3RhdGljIHZvaWQgc291cmNlX2dkYl9z Y3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAor IAkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorKy8qIFZhbHVlIG9mIHRoZSAnc2V0 IGRlYnVnIGF1dG8tbG9hZCcgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisrc3RhdGljIGlu dCBkZWJ1Z19hdXRvX2xvYWQgPSAwOworKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgZGVi dWdfYXV0b19sb2FkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lk Cisrc2hvd19kZWJ1Z19hdXRvX2xvYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90 dHksCisrCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFs dWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5nIG91dHB1dCBm b3IgZmlsZXMgIgorKwkJCSAgICAib2YgJ3NldCBhdXRvLWxvYWQgLi4uJyBpcyAlcy5cbiIpLAor KwkJICAgIHZhbHVlKTsKKyt9CisrCisgLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxl L2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQorICAgIHNjcmlwdHM6 CisgICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKK0BAIC0xMTIsNiArMTI2LDEx IEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKKyAgIHVuc2lnbmVkIGxl bjsKKyAgIGludCBpeDsKKyAKKysgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQlfKCJhdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVj dG9yaWVzIG9mIFwiJXNcIi5cbiIpLAorKwkJCWF1dG9fbG9hZF9zYWZlX3BhdGgpOworKworICAg ZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKKyAKKyAgIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRf c2FmZV9wYXRoKTsKK0BAIC0xMjYsMTQgKzE0NSwzNCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl Y191cGRhdGUgKHZvaWQpCisgICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChl eHBhbmRlZCk7CisgCisgICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxl YXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCistICAgICAgeGZyZWUgKGRpcik7CisgICAgICAgVkVD X3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVk KTsKKyAKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwl7CisrCSAgaWYgKHN0cmNtcCAo ZXhwYW5kZWQsIGRpcikgPT0gMCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKysJCQkJXygiYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgXCIlc1wiLlxuIiksCisrCQkJ CWV4cGFuZGVkKTsKKysJICBlbHNlCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCisrCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgZGlyZWN0b3J5IFwiJXNcIiAiCisrCQkJ CSAgImFzIFwiJXNcIi5cbiIpLAorKwkJCQlkaXIsIGV4cGFuZGVkKTsKKysJfQorKyAgICAgIHhm cmVlIChkaXIpOworKworICAgICAgIC8qIElmIGdkYl9yZWFscGF0aCByZXR1cm5zIGEgZGlmZmVy ZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCisgICAgICAgaWYgKHN0cmNtcCAocmVhbF9wYXRo LCBleHBhbmRlZCkgPT0gMCkKKyAJeGZyZWUgKHJlYWxfcGF0aCk7CisgICAgICAgZWxzZQorLQlW RUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0 aCk7CisrCXsKKysJICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMsIHJlYWxfcGF0aCk7CisrCisrCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJXygiYXV0by1sb2FkOiBBbmQgY2Fu b25pY2FsaXplZCBhcyBcIiVzXCIuXG4iKSwKKysJCQkJcmVhbF9wYXRoKTsKKysJfQorICAgICB9 CisgfQorIAorQEAgLTIxNywxNiArMjU2LDMwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9z YWZlX3BhdGhfdmVjICgKKyAgIGlmIChkaXIgPT0gTlVMTCkKKyAgICAgeworICAgICAgIGlmICgq ZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKKy0JKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRo IChmaWxlbmFtZSk7CisrCXsKKysJICAqZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZp bGVuYW1lKTsKKysJICBpZiAoZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAoKmZpbGVuYW1lX3Jl YWxwLCBmaWxlbmFtZSkgIT0gMCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKKysJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCAiCisrCQkJCSAgImZpbGUgXCIlc1wiIGFz IFwiJXNcIi5cbiIpLAorKwkJCQlmaWxlbmFtZSwgKmZpbGVuYW1lX3JlYWxwKTsKKysJfQorIAor LSAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjLCBpeCwgZGlyKTsKKy0JICAgKytpeCkKKy0JaWYgKGZpbGVuYW1lX2lzX2luX2Rp ciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQorLQkgIGJyZWFrOworKyAgICAgIGlmIChzdHJjbXAg KCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCisrCWZvciAoaXggPSAwOyBWRUNfaXRl cmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKKysJICAg ICArK2l4KQorKwkgIGlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGly KSkKKysJICAgIGJyZWFrOworICAgICB9CisgCisgICBpZiAoZGlyICE9IE5VTEwpCistICAgIHJl dHVybiAxOworKyAgICB7CisrICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEZpbGUgXCIlc1wiIG1hdGNoZXMg IgorKwkJCQkJICAiZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAorKwkJCSAgICBmaWxlbmFtZSwgZGly KTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorIAorICAgcmV0dXJuIDA7CisgfQorQEAgLTI0 MCwxMSArMjkzLDIwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgK KyAgICBkaXJlY3RvcnkuICAqLworIAorIGludAorLWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQorK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIg KmZpbGVuYW1lLCBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4uLikKKyB7CisgICBjaGFyICpmaWxl bmFtZV9yZWFsID0gTlVMTDsKKyAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworIAorKyAgaWYg KGRlYnVnX2F1dG9fbG9hZCkKKysgICAgeworKyAgICAgIHZhX2xpc3QgZGVidWdfYXJnczsKKysK KysgICAgICB2YV9zdGFydCAoZGVidWdfYXJncywgZGVidWdfZm10KTsKKysgICAgICB2ZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBkZWJ1Z19mbXQsIGRlYnVnX2FyZ3MpOworKyAgICAg IHZhX2VuZCAoZGVidWdfYXJncyk7CisrICAgIH0KKysKKyAgIGJhY2tfdG8gPSBtYWtlX2NsZWFu dXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1lX3JlYWwpOworIAorICAgaWYgKGZp bGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1l X3JlYWwpKQorQEAgLTI4MSw3ICszNDMsMTAgQEAgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZp bGUgKHN0cnVjdCBvYgorICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2lu Zm87CisgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworIAorLSAgaXNfc2FmZSA9 IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKKysgIGlzX3NhZmUgPSBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCAi CisrCQkJCQkJInNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIgorKwkJCQkJCSJcIiVzXCIg Zm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCisrCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFt ZSk7CisgCisgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJp bmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKyAgICAgIGNhbiBwcmludCBpdC4gICovCitAQCAt OTc1LDQgKzEwNDAsMTMgQEAgU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBh dAorIGFjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKKyAJCSAmY21kbGlz dCk7CisgICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOworKwor KyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5j ZSwKKysJCQkgICAmZGVidWdfYXV0b19sb2FkLCBfKCJcCisrU2V0IGF1dG8tbG9hZCB2ZXJpZmlj YXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAorK1Nob3cgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMg ZGVidWdnaW5nLiIpLCBfKCJcCisrV2hlbiBub24temVybywgZGVidWdnaW5nIG91dHB1dCBmb3Ig ZmlsZXMgb2YgJ3NldCBhdXRvLWxvYWQgLi4uJ1xuXAorK2lzIGRpc3BsYXllZC4iKSwKKysJCQkg ICAgTlVMTCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQsCisrCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZz aG93ZGVidWdsaXN0KTsKKyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1s b2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8t bG9hZC5oCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUg KzAyMDAKK0BAIC01NSw2ICs1NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KmF1dG9fbG8KKyBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hv d19jbWRsaXN0X2dldCAodm9pZCk7CisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoq YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOworIAorLWV4dGVybiBpbnQgZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOworK2V4dGVybiBpbnQgZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsCisrCQkJCSAgIGNvbnN0 IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKTsKKyAKKyAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAx Mi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIw MAorQEAgLTg2OSw3ICs4NjksOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0 cnVjdCBvCisgICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsKKyAgIHN0cmNweSAoY3AgKyAxLCBM SUJUSFJFQURfREJfU08pOworIAorLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRo KSkKKysgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBM b2FkaW5nIGxpYnRocmVhZC1kYiAiCisrCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSAk cGRpci5cbiIpLAorKwkJCSAgICAgICBwYXRoKSkKKyAgICAgcmVzdWx0ID0gMDsKKyAgIGVsc2UK KyAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKK0BAIC05MzksNyArOTQx LDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgorICAgcGF0aFtk aXJfbGVuXSA9ICcvJzsKKyAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURf REJfU08pOworIAorLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKKysgIGlm ICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxp YnRocmVhZC1kYiAiCisrCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSBleHBsaWNpdCAi CisrCQkJCSAgICAgICAiZGlyZWN0b3J5LlxuIiksCisrCQkJICAgICAgIHBhdGgpKQorICAgICBy ZXN1bHQgPSAwOworICAgZWxzZQorICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBh dGgpOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6 MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIw MTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAtMTAyNyw3ICsxMDI3LDEwIEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmlu aXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOworIAorICAgICAgIGlm ICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0CistCSAgJiYgZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCkpCisrCSAgJiYgZmlsZV9pc19hdXRv X2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCwKKysJCQkJICAgICBfKCJhdXRvLWxvYWQ6IExvYWRp bmcgLmdkYmluaXQgIgorKwkJCQkgICAgICAgImZpbGUgXCIlc1wiLlxuIiksCisrCQkJCSAgICAg bG9jYWxfZ2RiaW5pdCkpCisgCXsKKyAJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQg PSAxOworIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NTA6MDQuODA5NjI2MjE1 ICswMjAwCitAQCAtMjA4ODcsNiArMjA4ODcsNyBAQCBUaGVzZSBhcmUgQHZhbHVle0dEQk59IGNv bnRyb2wgY29tbWFuZHMKKyAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBA c2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisgKiBvYmpmaWxlLWdk Yi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdH0KKyAqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2Ft cHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9CisrKiBBdXRvLWxvYWRpbmcgdmVy Ym9zZSBtb2RlOjogICAgICAgICAgQHNhbXB7c2V0L3Nob3cgZGVidWcgYXV0by1sb2FkfQorIEB4 cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgorIEBlbmQgbWVudQorIAorQEAgLTIxMDg1LDYgKzIx MDg2LDQ1IEBAIGVudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW4KKyBvd24g YmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGly ZWN0b3JpZXMgaXMKKyByZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgorIAorK0Bub2RlIEF1dG8t bG9hZGluZyB2ZXJib3NlIG1vZGUKKytAc3Vic2VjdGlvbiBEaXNwbGF5aW5nIGZpbGVzIHRyaWVk IGZvciBhdXRvLWxvYWQKKytAY2luZGV4IGF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKKysKKytG b3IgYmV0dGVyIHZpc2liaWxpdHkgb2YgYWxsIHRoZSBmaWxlIGxvY2F0aW9ucyB3aGVyZSB5b3Ug Y2FuIHBsYWNlIHNjcmlwdHMgdG8KKytiZSBhdXRvLWxvYWRlZCB3aXRoIGluZmVyaW9yIC0tLSBv ciB0byBwcm90ZWN0IHlvdXJzZWxmIGFnYWluc3QgYWNjaWRlbnRhbAorK2V4ZWN1dGlvbiBvZiB1 bnRydXN0ZWQgc2NyaXB0cyAtLS0gQHZhbHVle0dEQk59IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3Ig cHJpbnRpbmcKKythbGwgdGhlIGZpbGVzIGF0dGVtcHRlZCB0byBiZSBsb2FkZWQuICBCb3RoIGV4 aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgZmlsZXMgbWF5CisrYmUgcHJpbnRlZC4KKysKKytGb3Ig ZXhhbXBsZSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8g YXV0by1sb2FkIGZpbGVzCisrKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkgYXBwbGll cyBhbHNvIHRvIGNhbm9uaWNhbGl6ZWQgZmlsZW5hbWVzIHdoaWNoCisrbWF5IG5vdCBiZSB0b28g b2J2aW91cyB3aGlsZSBzZXR0aW5nIGl0IHVwLgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2RiKSBz ZXQgZGVidWcgYXV0by1sb2FkIHVlcworKyhnZGIpIGZpbGUgfi9zcmMvdC90cnVlCisrYXV0by1s b2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3Ry dWUtZ2RiLmdkYiIKKysgICAgICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3RydWUiLgorK2F1dG8t bG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgIi91c3I6L29wdCIuCisrYXV0by1sb2FkOiBV c2luZyBkaXJlY3RvcnkgIi91c3IiLgorK2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvb3B0 Ii4KKyt3YXJuaW5nOiBGaWxlICIvdG1wL3RydWUtZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBi ZWVuIGRlY2xpbmVkCisrICAgICAgICAgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0 IHRvICIvdXNyOi9vcHQiLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQHRhYmxlIEBjb2RlCisr QGFuY2hvcntzZXQgZGVidWcgYXV0by1sb2FkfQorK0BraW5kZXggc2V0IGRlYnVnIGF1dG8tbG9h ZAorK0BpdGVtIHNldCBkZWJ1ZyBhdXRvLWxvYWQgW29ufG9mZl0KKytTZXQgd2hldGhlciB0byBw cmludCB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZC4KKysKKytAYW5j aG9ye3Nob3cgZGVidWcgYXV0by1sb2FkfQorK0BraW5kZXggc2hvdyBkZWJ1ZyBhdXRvLWxvYWQK KytAaXRlbSBzaG93IGRlYnVnIGF1dG8tbG9hZAorK1Nob3cgd2hldGhlciBwcmludGluZyBvZiB0 aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZCBpcyB0dXJuZWQKKytvbiBv ciBvZmYuCisrQGVuZCB0YWJsZQorKworIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCisgQHNlY3Rp b24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCisgCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAw MDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRo b24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MTA2MjYyMTIgKzAyMDAKK0BA IC03NSw3ICs3NSwxMCBAQCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1 CisgICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvOworIAorLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1l KTsKKysgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwKKysJCQkJ ICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0IFwiJXNcIiAiCisrCQkJCSAg ICAgICJieSBleHRlbnNpb24gZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCisrCQkJCSAgICBmaWxl bmFtZSwgb2JqZmlsZS0+bmFtZSk7CisgCisgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhh c2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKKyAgICAgIGNh biBwcmludCBpdC4gICovCitAQCAtMTUzLDcgKzE1NiwxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3Jp cHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsK KyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworIAorLQkgIGlmICghZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKKysJICBpZiAoIWZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZ1bGxfcGF0aCwKKysJCQkJICAgICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRo b24gc2NyaXB0ICIKKysJCQkJCSAiXCIlc1wiIGZyb20gc2VjdGlvbiBcIiVzXCIgb2YgIgorKwkJ CQkJICJvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgICAgZnVsbF9wYXRoLCBHREJQWV9B VVRPX1NFQ1RJT05fTkFNRSwKKysJCQkJICAgICAgIG9iamZpbGUtPm5hbWUpKQorIAkgICAgb3Bl bmVkID0gMDsKKyAJfQorICAgICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTNv ZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEzb2YyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMjZlYTE1My4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTNvZjIyLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDEzMC5odG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFu Z2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMQkxLjEyOTcKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VM b2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKLSMjIC0xLDMgKzEsNyBAQAotKzIwMTItMDQt MTggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBn ZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUg dHlwby4KLSsKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0gCi0gCU5ldyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgotLS0tIHNy Yy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS45NDQKLSsrKyBzcmMv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1Ci1AQCAtMjExOTIs NyArMjExOTIsNyBAQAotIG1heSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1 cC4KLSAKLSBAc21hbGxleGFtcGxlCi0tKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKLSso Z2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIG9uCi0gKGdkYikgZmlsZSB+L3NyYy90L3RydWUKLSBh dXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIi90 bXAvdHJ1ZS1nZGIuZ2RiIgotICAgICAgICAgICAgZm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpk aWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEzb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xM29m MjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlYTE1MwotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xM29mMjgucGF0Y2gKQEAgLTAsMCArMSwyMyBA QAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDEzMC5odG1s CisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMQkxLjEyOTcK KyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKKyMj IC0xLDMgKzEsNyBAQAorKzIwMTItMDQtMTggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHZlcmJvc2Ug bW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KKysKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisgCU5ldyBvcHRpb24gInNldCBk ZWJ1ZyBhdXRvLWxvYWQiLgorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMTcg MTU6NTY6MjEJMS45NDQKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE4IDA3 OjAzOjU4CTEuOTQ1CitAQCAtMjExOTIsNyArMjExOTIsNyBAQAorIG1heSBub3QgYmUgdG9vIG9i dmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KKyAKKyBAc21hbGxleGFtcGxlCistKGdkYikgc2V0 IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIG9uCisgKGdk YikgZmlsZSB+L3NyYy90L3RydWUKKyBhdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNl cyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgorICAgICAgICAgICAgZm9y IG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE0b2YyMi5w YXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDJhY2ZkMGUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE0b2YyMi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDQvbXNnMDAxNzguaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIw MTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTA0LTIyICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRl eGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBpdGVtaXplIEBidWxsZXQK LSsJYnkgQHRhYmxlIEBhc2lzLiAgRml4IGZvcm1hdHRpbmcgb2Ygb25lIGl0ZW0uCi0rCi0gMjAx Mi0wNC0xOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAot IAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlKTogRml4IHNtYWxsZXhh bXBsZSB0eXBvLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMTggMDc6MDM6 NTgJMS45NDUKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIyIDE1OjQ5OjIx CTEuOTQ2Ci1AQCAtMjExMzYsOCArMjExMzYsOCBAQAotIFRvIGZvcmNlIEB2YWx1ZXtHREJOfSB0 byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRoZSBwcmV2aW91cwotIGV4 YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgd2F5czoKLSAKLS1AaXRl bWl6ZSBAYnVsbGV0Ci0tQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgg fi9zcmMvZ2RiCi0rQHRhYmxlIEBhc2lzCi0rQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1w e2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYn0KLSBTcGVjaWZ5IHRoaXMgdHJ1c3Rl ZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkgYXMgYWRkaXRpb25hbCBjb21wb25lbnQgb2YgdGhlIGxp c3QuCi0gWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBk aXNwbGF5ZWQgYnkKLSBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFz IEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLUBAIC0yMTE1NSwyMCArMjExNTUs MjAgQEAKLSBEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJs ZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KLSBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5 b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCi0gdHJ1 c3RlZCBzb3VyY2VzLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAKLSBPbiB0aGUgb3Ro ZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQgYXV0b21hdGljIGZpbGVzIGxv YWRpbmcgd2hpY2gKLSBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoK LSAKLS1AaXRlbWl6ZSBAYnVsbGV0Ci0rQHRhYmxlIEBhc2lzCi0gQGl0ZW0gQGtiZHtnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJO fSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4K LSAKLS1AaXRlbSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KLStA aXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KLSBEaXNhYmxl IGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKLSAoQHB4cmVme0hvbWUgRGlyZWN0 b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJsZSwgeW91IGNvdWxkIGFsc28K LSB1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmln dXJhdGlvbn0pLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAKLSBUaGlzIHNldHRpbmcg YXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRy eSBtYXRjaGVzCi0gQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyBy ZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2Fk LTE0b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjZmQwZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRv bG9hZC0xNG9mMjgucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE3OC5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFu Z2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VM b2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKKyMjIC0xLDMgKzEsOCBAQAorKzIwMTItMDQt MjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBn ZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1 bGxldAorKwlieSBAdGFibGUgQGFzaXMuICBGaXggZm9ybWF0dGluZyBvZiBvbmUgaXRlbS4KKysK KyAyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisgCisgCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUpOiBGaXggc21h bGxleGFtcGxlIHR5cG8uCistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8xOCAw NzowMzo1OAkxLjk0NQorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjIgMTU6 NDk6MjEJMS45NDYKK0BAIC0yMTEzNiw4ICsyMTEzNiw4IEBACisgVG8gZm9yY2UgQHZhbHVle0dE Qk59IHRvIGxvYWQgdGhlIGZpbGVzIGl0IGRlY2xpbmVkIHRvIGxvYWQgaW4gdGhlIHByZXZpb3Vz CisgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB3YXlzOgorIAor LUBpdGVtaXplIEBidWxsZXQKKy1AaXRlbSB+Ly5nZGJpbml0OiBhZGQtYXV0by1sb2FkLXNhZmUt cGF0aCB+L3NyYy9nZGIKKytAdGFibGUgQGFzaXMKKytAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTog QHNhbXB7YWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RifQorIFNwZWNpZnkgdGhpcyB0 cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0 aGUgbGlzdC4KKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9y aWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1 Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorQEAgLTIxMTU1LDIwICsy MTE1NSwyMCBAQAorIER1cmluZyBjb21waWxhdGlvbiBvZiBAdmFsdWV7R0RCTn0geW91IG1heSBk aXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgorIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZp bGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2YWx1ZXtHREJOfSBjb21lIGZyb20K KyB0cnVzdGVkIHNvdXJjZXMuCistQGVuZCBpdGVtaXplCisrQGVuZCB0YWJsZQorIAorIE9uIHRo ZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZvcmJpZCBhdXRvbWF0aWMgZmls ZXMgbG9hZGluZyB3aGljaAorIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3Nh Z2VzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKytAdGFibGUgQGFzaXMKKyBAaXRlbSBAa2Jke2dk YiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisgWW91IGNhbiB1c2UgQHZhbHVl e0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNz aW9uLgorIAorLUBpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5v fQorK0BpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQorIERp c2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorIChAcHhyZWZ7SG9tZSBE aXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxlLCB5b3UgY291bGQg YWxzbworIHVzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntTeXN0ZW0td2lkZSBj b25maWd1cmF0aW9ufSkuCistQGVuZCBpdGVtaXplCisrQGVuZCB0YWJsZQorIAorIFRoaXMgc2V0 dGluZyBhcHBsaWVzIHRvIHRoZSBmaWxlIG5hbWVzIGFzIGVudGVyZWQgYnkgdXNlci4gIElmIG5v IGVudHJ5IG1hdGNoZXMKKyBAdmFsdWV7R0RCTn0gdHJpZXMgYXMgYSBsYXN0IHJlc29ydCB0byBh bHNvIHJlc29sdmUgYWxsIHRoZSBmaWxlIG5hbWVzIGludG8KCmRpZmYgLS1naXQgYS9nZGItYXV0 b2xvYWQtMTVvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE1b2YyMi5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZGU1Njg0Ni4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQt MTVvZjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE4My5odG1sCi0KLSMjIyBzcmMvZ2Ri L2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKLSMjIyBzcmMvZ2RiL2Rv Yy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjEzMDAKLSMjIC0xLDMgKzEsOCBAQAot KzIwMTItMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlbW92ZSB0cmFp bGluZyBbQGRvdHN7fV0uCi0rCVRocmVlIHRpbWVzLgotKwotIDIwMTItMDQtMjIgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAo QXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1bGxldAotLS0tIHNy Yy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS45NDYKLSsrKyBzcmMv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuOTQ3Ci1AQCAtMjExNDIs MTEgKzIxMTQyLDExIEBACi0gWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBk aXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKLSBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBh dGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLSAKLS1AaXRl bSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMv Z2RiIiBbQGRvdHN7fV19Ci0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZl LXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiJ9Ci0gU3BlY2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBp biB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKLSBAdmFsdWV7R0RCTn0g c2Vzc2lvbi4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1w YXRoIn0KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtH REJOfSBzZXNzaW9uLgotIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJp bmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLSBmcm9tIHRydXN0ZWQgc291 cmNlcy4KLUBAIC0yMTE2MSw3ICsyMTE2MSw3IEBACi0gYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNo IHdhcm5pbmcgbWVzc2FnZXM6Ci0gCi0gQHRhYmxlIEBhc2lzCi0tQGl0ZW0gQGtiZHtnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNl dCBhdXRvLWxvYWQgbm8ifQotIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUg b3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSAKLSBAaXRlbSBAZmls ZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMTVvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTU2ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTgzLmh0bWwKKworIyMjIHNyYy9nZGIv ZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuMTI5OQorIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuMTMwMAorIyMgLTEsMyArMSw4IEBACisr MjAxMi0wNC0yMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgor KworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVtb3ZlIHRyYWls aW5nIFtAZG90c3t9XS4KKysJVGhyZWUgdGltZXMuCisrCisgMjAxMi0wNC0yMiAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChB dXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0CistLS0gc3Jj L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMiAxNTo0OToyMQkxLjk0NgorKysrIHNyYy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcKK0BAIC0yMTE0Miwx MSArMjExNDIsMTEgQEAKKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRp cmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0 aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorIAorLUBpdGVt IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9n ZGIiIFtAZG90c3t9XX0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KKyBTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGlu IHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorIEB2YWx1ZXtHREJOfSBz ZXNzaW9uLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBh dGgifQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dE Qk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmlu ZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQorIGZyb20gdHJ1c3RlZCBzb3Vy Y2VzLgorQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2gg d2FybmluZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFzaXMKKy1AaXRlbSBAa2Jke2dkYiAtaWV4 ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0 IGF1dG8tbG9hZCBubyJ9CisgWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBv cHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorIEBpdGVtIEBmaWxl e34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQoKZGlmZiAtLWdpdCBhL2dkYi1h dXRvbG9hZC0xNm9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTZvZjIyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmE4OGU2Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9h ZC0xNm9mMjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTg0Lmh0bWwKLQotIyMjIHNyYy9n ZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuMTMwMAotIyMjIHNyYy9nZGIv ZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjI2OjAwCTEuMTMwMQotIyMgLTMsNiArMyw5IEBA Ci0gCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZW1vdmUgdHJhaWxp bmcgW0Bkb3Rze31dLgotIAlUaHJlZSB0aW1lcy4KLSAKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1s b2FkaW5nIHNhZmUgcGF0aCk6IEFkZCB0cmFpbGluZyBAZG90c3t9LgotKwlUaHJlZSB0aW1lcy4K LSsKLSAyMDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0gCi0gCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNl IEBpdGVtaXplIEBidWxsZXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIz IDE3OjIwOjU2CTEuOTQ3Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAx NzoyNjowMQkxLjk0OAotQEAgLTIxMTQyLDExICsyMTE0MiwxMSBAQAotIFlvdSBoYXZlIHRvIHNw ZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNh bXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGlu IHRoaXMgZXhhbXBsZSkuCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiJ9Ci0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgQGRvdHN7fX0KLSBTcGVj aWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBh IHNpbmdsZQotIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotIAotLUBpdGVtIEBrYmR7Z2RiIC1pZXgg InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIn0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCIgQGRvdHN7fX0KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkg Zm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotIFRoaXMgYXNzdW1lcyBhbGwgdGhl IGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNv bWUKLSBmcm9tIHRydXN0ZWQgc291cmNlcy4KLUBAIC0yMTE2MSw3ICsyMTE2MSw3IEBACi0gYWxz byBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6Ci0gCi0gQHRhYmxlIEBhc2lz Ci0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyJ9Ci0rQGl0ZW0gQGtiZHtn ZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgQGRvdHN7fX0KLSBZb3UgY2FuIHVzZSBAdmFsdWV7 R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Np b24uCi0gCi0gQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99 CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE2b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0x Nm9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZhODhlNgot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xNm9mMjgucGF0Y2gKQEAgLTAsMCArMSwz OSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE4NC5o dG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjEz MDAKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyNjowMAkxLjEzMDEK KyMjIC0zLDYgKzMsOSBAQAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRo KTogUmVtb3ZlIHRyYWlsaW5nIFtAZG90c3t9XS4KKyAJVGhyZWUgdGltZXMuCisgCisrCSogZ2Ri LnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBBZGQgdHJhaWxpbmcgQGRvdHN7fS4K KysJVGhyZWUgdGltZXMuCisrCisgMjAxMi0wNC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2Fm ZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0CistLS0gc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0NworKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTIvMDQvMjMgMTc6MjY6MDEJMS45NDgKK0BAIC0yMTE0MiwxMSArMjExNDIsMTEgQEAK KyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3Bs YXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNh bXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXgg InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQorK0BpdGVtIEBr YmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIi IEBkb3Rze319CisgU3BlY2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2Fz ZSBidXQganVzdCBmb3IgYSBzaW5nbGUKKyBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRl bSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCJ9CisrQGl0ZW0gQGtiZHtn ZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319CisgRGlzYWJsZSBhdXRv LWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyBUaGlz IGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59 IHNlc3Npb24gd2lsbCBjb21lCisgZnJvbSB0cnVzdGVkIHNvdXJjZXMuCitAQCAtMjExNjEsNyAr MjExNjEsNyBAQAorIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgor IAorIEB0YWJsZSBAYXNpcworLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8i fQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIEBkb3Rze319CisgWW91 IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2 YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorIEBpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtz ZXQgYXV0by1sb2FkIG5vfQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2gg Yi9nZGItYXV0b2xvYWQtMTdvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBhNzRmNzViLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDEyLTA1L21zZzAwMDEwLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUv MDIgMTc6MTM6MzkJMS4xNDE5NAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMDIgMjA6 MDA6MzEJMS4xNDE5NQotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wNS0wMiAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlGaXggLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGggZm9yIE1TLVdpbmRvd3MgaG9zdCBwbGF0Zm9ybS4KLSsJKiBhdXRvLWxv YWQuYyAoZmlsZW5hbWVfaXNfaW5fZGlyKTogUmV0dXJuIDEgZm9yIERJUl9MRU4gMC4KLSsKLSAy MDEyLTA1LTAyICBFbGkgWmFyZXRza2lpICA8ZWxpekBnbnUub3JnPgotIAotIAkqIGdkYl9jdXJz ZXMuaDogVW5kZWZpbmUgS0VZX0VWRU5UIGJlZm9yZSBpbmNsdWRpbmcgY3Vyc2VzCi0tLS0gc3Jj L2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA0LzE3IDE1OjU2OjIxCTEuNAotKysrIHNyYy9nZGIvYXV0 by1sb2FkLmMJMjAxMi8wNS8wMiAyMDowMDozNgkxLjUKLUBAIC0yMzEsNiArMjMxLDEyIEBACi0g ICB3aGlsZSAoZGlyX2xlbiAmJiBJU19ESVJfU0VQQVJBVE9SIChkaXJbZGlyX2xlbiAtIDFdKSkK LSAgICAgZGlyX2xlbi0tOwotIAotKyAgLyogRW5zdXJlIGF1dG9fbG9hZF9zYWZlX3BhdGggIi8i IG1hdGNoZXMgYW55IEZJTEVOQU1FLiAgT24gTVMtV2luZG93cwotKyAgICAgcGxhdGZvcm0gRklM RU5BTUUgZXZlbiBhZnRlciBnZGJfcmVhbHBhdGggZG9lcyBub3QgaGF2ZSB0byBzdGFydCB3aXRo Ci0rICAgICBJU19ESVJfU0VQQVJBVE9SIGNoYXJhY3Rlciwgc3VjaCBhcyB0aGUgJ0M6XHguZXhl JyBmaWxlbmFtZS4gICovCi0rICBpZiAoZGlyX2xlbiA9PSAwKQotKyAgICByZXR1cm4gMTsKLSsK LSAgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGlyLCBmaWxlbmFtZSwgZGlyX2xlbikgPT0gMAot IAkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxlbmFtZVtkaXJfbGVuXSkKLSAJICAgICAgfHwg ZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0x N29mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmE3NGY3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xv YWQtMTdvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwMTAuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNS8wMiAxNzoxMzozOQkxLjE0MTk0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NS8wMiAyMDowMDozMQkxLjE0MTk1CisjIyAtMSwzICsxLDggQEAKKysyMDEyLTA1LTAyICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUZpeCAtLXdpdGhv dXQtYXV0by1sb2FkLXNhZmUtcGF0aCBmb3IgTVMtV2luZG93cyBob3N0IHBsYXRmb3JtLgorKwkq IGF1dG8tbG9hZC5jIChmaWxlbmFtZV9pc19pbl9kaXIpOiBSZXR1cm4gMSBmb3IgRElSX0xFTiAw LgorKworIDIwMTItMDUtMDIgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+CisgCisgCSog Z2RiX2N1cnNlcy5oOiBVbmRlZmluZSBLRVlfRVZFTlQgYmVmb3JlIGluY2x1ZGluZyBjdXJzZXMK Ky0tLSBzcmMvZ2RiL2F1dG8tbG9hZC5jCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS40CisrKysgc3Jj L2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQorQEAgLTIzMSw2ICsyMzEs MTIgQEAKKyAgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVu IC0gMV0pKQorICAgICBkaXJfbGVuLS07CisgCisrICAvKiBFbnN1cmUgYXV0b19sb2FkX3NhZmVf cGF0aCAiLyIgbWF0Y2hlcyBhbnkgRklMRU5BTUUuICBPbiBNUy1XaW5kb3dzCisrICAgICBwbGF0 Zm9ybSBGSUxFTkFNRSBldmVuIGFmdGVyIGdkYl9yZWFscGF0aCBkb2VzIG5vdCBoYXZlIHRvIHN0 YXJ0IHdpdGgKKysgICAgIElTX0RJUl9TRVBBUkFUT1IgY2hhcmFjdGVyLCBzdWNoIGFzIHRoZSAn QzpceC5leGUnIGZpbGVuYW1lLiAgKi8KKysgIGlmIChkaXJfbGVuID09IDApCisrICAgIHJldHVy biAxOworKworICAgcmV0dXJuIChmaWxlbmFtZV9uY21wIChkaXIsIGZpbGVuYW1lLCBkaXJfbGVu KSA9PSAwCisgCSAgJiYgKElTX0RJUl9TRVBBUkFUT1IgKGZpbGVuYW1lW2Rpcl9sZW5dKQorIAkg ICAgICB8fCBmaWxlbmFtZVtkaXJfbGVuXSA9PSAnXDAnKSk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTE4b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xOG9mMjIucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MGMyZTQuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTE4b2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDM4Lmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMDUgMDU6MzY6MjMJMS4xNDIxMQotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDUvMDYgMTU6MzA6NTkJMS4xNDIxMgotIyMgLTEsMyArMSwxNCBAQAotKzIw MTItMDUtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsK LSsJKiBhdXRvLWxvYWQuYyAoc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBSZXNldCBBVVRPX0xP QURfU0FGRV9QQVRICi0rCWJhY2sgdG8gREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIGlmIGl0 IGlzIGJlaW5nIHNldCB0byAiIi4KLSsJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENoZWNr IGFueS1kaXJlY3RvcnkgYnkgY29tcGFyaXNvbiB3aXRoICIvIi4KLSsJKGFkZF9hdXRvX2xvYWRf c2FmZV9wYXRoKTogQ2hhbmdlIHRoZSBlcnJvciBtZXNzYWdlLgotKwkoX2luaXRpYWxpemVfYXV0 b19sb2FkKTogQ2hhbmdlIHRoZSAic2FmZS1wYXRoIiBoZWxwIHRleHQuCi0rCSogY29uZmlndXJl OiBSZWdlbmVyYXRlCi0rCSogY29uZmlndXJlLmFjICgtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUt cGF0aCk6IFNldAotKwlXSVRIX0FVVE9fTE9BRF9TQUZFX1BBVEggdG8gLy4KLSsKLSAyMDEyLTA1 LTA1ICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotIAotIAkq IHN0YXAtcHJvYmUuaDogRG8gbm90IGluY2x1ZGUgdW5lY2Vzc2FyeSBgcHJvYmUuaCcuCi0tLS0g c3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQotKysrIHNyYy9nZGIv YXV0by1sb2FkLmMJMjAxMi8wNS8wNiAxNTozMTowMgkxLjYKLUBAIC0xODEsNiArMTgxLDEyIEBA Ci0gc3RhdGljIHZvaWQKLSBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJncywgaW50 IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSB7Ci0rICBpZiAoYXV0b19s b2FkX3NhZmVfcGF0aFswXSA9PSAnXDAnKQotKyAgICB7Ci0rICAgICAgeGZyZWUgKGF1dG9fbG9h ZF9zYWZlX3BhdGgpOwotKyAgICAgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZB VUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgICB9Ci0rCi0gICBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlY191cGRhdGUgKCk7Ci0gfQotIAotQEAgLTE5MCw3ICsxOTYsNyBAQAotIHNob3dfYXV0 b19sb2FkX3NhZmVfcGF0aCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSAJ CQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0t ICBpZiAoKnZhbHVlID09IDApCi0rICBpZiAoc3RyY21wICh2YWx1ZSwgIi8iKSA9PSAwKQotICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUgdG8g bG9hZCBmcm9tIGFueSAiCi0gCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKLSAgIGVsc2UKLUBA IC0yMDksOCArMjE1LDkgQEAKLSAKLSAgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkK LSAgICAgZXJyb3IgKF8oIlwKLS1BZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJs ZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCi0tVXNlICdzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKLStEaXJlY3Rvcnkg YXJndW1lbnQgcmVxdWlyZWQuXG5cCi0rVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvJyBm b3IgZGlzYWJsaW5nIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LlwKLSsiKSk7Ci0g Ci0gICBzID0geHN0cnByaW50ZiAoIiVzJWMlcyIsIGF1dG9fbG9hZF9zYWZlX3BhdGgsIERJUk5B TUVfU0VQQVJBVE9SLCBhcmdzKTsKLSAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLUBA IC0xMDI5LDggKzEwMzYsMTAgQEAKLSBTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuIiksIF8oIlwKLSBWYXJpb3VzIGZp bGVzIGxvYWRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRp b25zIG11c3RcblwKLSBiZSBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVk IGJ5IHRoaXMgb3B0aW9uLiAgV2FybmluZyB3aWxsIGJlXG5cCi0tcHJpbnRlZCBhbmQgZmlsZSB3 aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lzZS4gIFVzZSBlbXB0eSBzdHJpbmcgKG9yIGV2ZW5cblwK LS1lbXB0eSBkaXJlY3RvcnkgZW50cnkpIHRvIGFsbG93IGFueSBmaWxlIGZvciB0aGUgJ3NldCBh dXRvLWxvYWQgLi4uJyBvcHRpb25zLlxuXAotK3ByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUg dXNlZCBvdGhlcndpc2UuXG5cCi0rU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBhbiBlbXB0eSBs aXN0IHJlc2V0cyBpdCB0byBpdHMgZGVmYXVsdCB2YWx1ZS5cblwKLStTZXR0aW5nIHRoaXMgcGFy YW1ldGVyIHRvICcvJyAod2l0aG91dCB0aGUgcXVvdGVzKSBhbGxvd3MgYW55IGZpbGVcblwKLStm b3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKLSBUaGlzIG9wdGlvbiBpcyBp Z25vcmVkIGZvciB0aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBv ZmYnLlxuXAotIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRy dXN0ZWQgaW5mZXJpb3JzLiIpLAotIAkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAot LS0tIHNyYy9nZGIvY29uZmlndXJlCTIwMTIvMDQvMjcgMjA6NDc6NTIJMS4zNjAKLSsrKyBzcmMv Z2RiL2NvbmZpZ3VyZQkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuMzYxCi1AQCAtNDk2NCw3ICs0OTY0 LDcgQEAKLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2FzIGdp dmVuLgotIGlmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0OyB0 aGVuIDoKLSAgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAiJHdp dGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoPSIiCi0rICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotICBmaQotIGVs c2UKLSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKLS0tLSBzcmMvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEyLzA0LzI3IDIwOjQ3OjUzCTEuMTcxCi0rKysgc3JjL2dkYi9jb25maWd1 cmUuYWMJMjAxMi8wNS8wNiAxNTozMTowMwkxLjE3MgotQEAgLTE0MSw3ICsxNDEsNyBAQAotIEFT X0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9y aWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCi0gQVNfSEVMUF9TVFJJTkcoWy0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRl ZCBmaWxlcyBsb2NhdGlvbnNdKSwKLSBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCi0rICAgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotICBmaV0sCi0gW3dpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iJHByZWZpeCJdKQotIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTIvMDUvMDMgMDc6MDc6MjQJMS4xMzA4Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIw MTIvMDUvMDYgMTU6MzE6MDQJMS4xMzA5Ci0jIyAtMSwzICsxLDkgQEAKLSsyMDEyLTA1LTA2ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRl eGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3RvcmllcycKLSsJZm9y ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uYWwuICBNZW50aW9uIGlmIGl0IGlzIG9t aXR0ZWQuCi0rCUNoYW5nZSBkaXNhYmxpbmcgc2VjdXJpdHkgcHJvdGVjdGlvbiBjb25kaXRpb24g dG8gIi8iLCB0d2ljZS4KLSsKLSAyMDEyLTA1LTAzICBTaXZhIENoYW5kcmEgUmVkZHkgIDxzaXZh Y2hhbmRyYUBnb29nbGUuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChTeW1ib2wgVGFibGVzIElu IFB5dGhvbik6IEFkZCBkb2N1bWVudGF0aW9uIGFib3V0Ci0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi8wNS8wMyAwNzowNzoyNAkxLjk1NAotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS45NTUKLUBAIC0yMTIxOSw5ICsyMTIxOSwxMiBAQAot IEB0YWJsZSBAY29kZQotIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0gQGtpbmRl eCBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAotLUBpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IEB2YXJ7ZGlyZWN0b3JpZXN9Ci0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHJ7W31A dmFye2RpcmVjdG9yaWVzfUBye119Ci0gU2V0IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIChhbmQg dGhlaXIgc3ViZGlyZWN0b3JpZXMpIHRydXN0ZWQgZm9yIGF1dG9tYXRpYwotIGxvYWRpbmcgYW5k IGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgWW91IGNhbiBhbHNvIGVudGVyIGEgc3BlY2lmaWMgdHJ1 c3RlZCBmaWxlLgotK0lmIHlvdSBvbWl0IEB2YXJ7ZGlyZWN0b3JpZXN9LCBAc2FtcHthdXRvLWxv YWQgc2FmZS1wYXRofSB3aWxsIGJlIHJlc2V0IHRvCi0raXRzIGRlZmF1bHQgdmFsdWUgYXMgc3Bl Y2lmaWVkIGR1cmluZyBAdmFsdWV7R0RCTn0gY29tcGlsYXRpb24uCi0rCi0gVGhlIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUgYW5k IFVuaXgKLSBzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNl cGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKLSB0byB0aGUgQGVudntQQVRIfSBlbnZpcm9u bWVudCB2YXJpYWJsZS4KLUBAIC0yMTI0MCw3ICsyMTI0Myw3IEBACi0gaG9zdCBwbGF0Zm9ybSBk aXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KLSBAZW5kIHRhYmxlCi0gCi0tU2V0dGluZyB0aGlz IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3Rl Y3Rpb24uCi0rU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMg c2VjdXJpdHkgcHJvdGVjdGlvbi4KLSBUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNl dCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQotIHN5c3RlbSBzdXBl cnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGlu aXQgZmlsZXMgaW4KLSB0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3Rv cnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCi1AQCAtMjEyNjAsNyArMjEyNjMs NyBAQAotIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0 IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQGti ZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319Ci0rQGl0ZW0gQGti ZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggLyIgQGRvdHN7fX0KLSBEaXNhYmxl IGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgot IFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7 R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLSBmcm9tIHRydXN0ZWQgc291cmNlcy4KCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMThvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTBjMmU0Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRjaApAQCAtMCwwICsxLDEzNiBAQAoraHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cwMDAzOC5odG1sCisKKyMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzA1IDA1OjM2OjIzCTEuMTQyMTEKKyMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEyLzA1LzA2IDE1OjMwOjU5CTEuMTQyMTIKKyMjIC0xLDMgKzEsMTQg QEAKKysyMDEyLTA1LTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisrCisrCSogYXV0by1sb2FkLmMgKHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoKTogUmVzZXQg QVVUT19MT0FEX1NBRkVfUEFUSAorKwliYWNrIHRvIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFU SCBpZiBpdCBpcyBiZWluZyBzZXQgdG8gIiIuCisrCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgp OiBDaGVjayBhbnktZGlyZWN0b3J5IGJ5IGNvbXBhcmlzb24gd2l0aCAiLyIuCisrCShhZGRfYXV0 b19sb2FkX3NhZmVfcGF0aCk6IENoYW5nZSB0aGUgZXJyb3IgbWVzc2FnZS4KKysJKF9pbml0aWFs aXplX2F1dG9fbG9hZCk6IENoYW5nZSB0aGUgInNhZmUtcGF0aCIgaGVscCB0ZXh0LgorKwkqIGNv bmZpZ3VyZTogUmVnZW5lcmF0ZQorKwkqIGNvbmZpZ3VyZS5hYyAoLS13aXRob3V0LWF1dG8tbG9h ZC1zYWZlLXBhdGgpOiBTZXQKKysJV0lUSF9BVVRPX0xPQURfU0FGRV9QQVRIIHRvIC8uCisrCisg MjAxMi0wNS0wNSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4K KyAKKyAJKiBzdGFwLXByb2JlLmg6IERvIG5vdCBpbmNsdWRlIHVuZWNlc3NhcnkgYHByb2JlLmgn LgorLS0tIHNyYy9nZGIvYXV0by1sb2FkLmMJMjAxMi8wNS8wMiAyMDowMDozNgkxLjUKKysrKyBz cmMvZ2RiL2F1dG8tbG9hZC5jCTIwMTIvMDUvMDYgMTU6MzE6MDIJMS42CitAQCAtMTgxLDYgKzE4 MSwxMiBAQAorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisgeworKyAgaWYg KGF1dG9fbG9hZF9zYWZlX3BhdGhbMF0gPT0gJ1wwJykKKysgICAgeworKyAgICAgIHhmcmVlIChh dXRvX2xvYWRfc2FmZV9wYXRoKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1 cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgICAgfQorKworICAgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworIH0KKyAKK0BAIC0xOTAsNyArMTk2LDcgQEAKKyBz aG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90 dHksCisgCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp CisgeworLSAgaWYgKCp2YWx1ZSA9PSAwKQorKyAgaWYgKHN0cmNtcCAodmFsdWUsICIvIikgPT0g MCkKKyAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkIGZpbGVzIGFyZSBz YWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorIAkJCSAgICAgICJkaXJlY3RvcnkuXG4iKSk7CisgICBl bHNlCitAQCAtMjA5LDggKzIxNSw5IEBACisgCisgICBpZiAoYXJncyA9PSBOVUxMIHx8ICphcmdz ID09IDApCisgICAgIGVycm9yIChfKCJcCistQWRkaW5nIGVtcHR5IGRpcmVjdG9yeSBlbGVtZW50 IGRpc2FibGVzIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LiAgXAorLVVzZSAnc2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGluc3RlYWQgaWYgeW91IG1lYW4gdGhhdC4iKSk7CisrRGly ZWN0b3J5IGFyZ3VtZW50IHJlcXVpcmVkLlxuXAorK1VzZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBh dGggLycgZm9yIGRpc2FibGluZyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBzZWN1cml0eS5cCisr IikpOworIAorICAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xvYWRfc2FmZV9wYXRo LCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7CisgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0 aCk7CitAQCAtMTAyOSw4ICsxMDM2LDEwIEBACisgU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCisgVmFy aW91cyBmaWxlcyBsb2FkZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4u Licgb3B0aW9ucyBtdXN0XG5cCisgYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVz IGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAorLXByaW50ZWQgYW5k IGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBl dmVuXG5cCistZW1wdHkgZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhl ICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKKytwcmludGVkIGFuZCBmaWxlIHdpbGwg bm90IGJlIHVzZWQgb3RoZXJ3aXNlLlxuXAorK1NldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gYW4g ZW1wdHkgbGlzdCByZXNldHMgaXQgdG8gaXRzIGRlZmF1bHQgdmFsdWUuXG5cCisrU2V0dGluZyB0 aGlzIHBhcmFtZXRlciB0byAnLycgKHdpdGhvdXQgdGhlIHF1b3RlcykgYWxsb3dzIGFueSBmaWxl XG5cCisrZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCisgVGhpcyBvcHRp b24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9h ZCAuLi4gb2ZmJy5cblwKKyBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBm b3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKyAJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVf cGF0aCwKKy0tLSBzcmMvZ2RiL2NvbmZpZ3VyZQkyMDEyLzA0LzI3IDIwOjQ3OjUyCTEuMzYwCisr Kysgc3JjL2dkYi9jb25maWd1cmUJMjAxMi8wNS8wNiAxNTozMTowMgkxLjM2MQorQEAgLTQ5NjQs NyArNDk2NCw3IEBACisgIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRo IHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9 IHNldDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRl c3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorLSAgIHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aD0iIgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAg ZmkKKyBlbHNlCisgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCistLS0gc3Jj L2dkYi9jb25maWd1cmUuYWMJMjAxMi8wNC8yNyAyMDo0Nzo1MwkxLjE3MQorKysrIHNyYy9nZGIv Y29uZmlndXJlLmFjCTIwMTIvMDUvMDYgMTU6MzE6MDMJMS4xNzIKK0BAIC0xNDEsNyArMTQxLDcg QEAKKyBBU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtk aXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQorIEFTX0hFTFBfU1RS SU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0 by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCisgW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGgiID0gIm5vIjsgdGhlbgorLSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgor KyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgZmldLAorIFt3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKKyBBQ19ERUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FE X1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorIyMjIHNyYy9nZGIvZG9jL0No YW5nZUxvZwkyMDEyLzA1LzAzIDA3OjA3OjI0CTEuMTMwOAorIyMjIHNyYy9nZGIvZG9jL0NoYW5n ZUxvZwkyMDEyLzA1LzA2IDE1OjMxOjA0CTEuMTMwOQorIyMgLTEsMyArMSw5IEBACisrMjAxMi0w NS0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwkq IGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0b3JpZXMn CisrCWZvciAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIG9wdGlvbmFsLiAgTWVudGlvbiBpZiBp dCBpcyBvbWl0dGVkLgorKwlDaGFuZ2UgZGlzYWJsaW5nIHNlY3VyaXR5IHByb3RlY3Rpb24gY29u ZGl0aW9uIHRvICIvIiwgdHdpY2UuCisrCisgMjAxMi0wNS0wMyAgU2l2YSBDaGFuZHJhIFJlZGR5 ICA8c2l2YWNoYW5kcmFAZ29vZ2xlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoU3ltYm9sIFRh YmxlcyBJbiBQeXRob24pOiBBZGQgZG9jdW1lbnRhdGlvbiBhYm91dAorLS0tIHNyYy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTIvMDUvMDMgMDc6MDc6MjQJMS45NTQKKysrKyBzcmMvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLzA1LzA2IDE1OjMxOjA0CTEuOTU1CitAQCAtMjEyMTksOSArMjEyMTks MTIgQEAKKyBAdGFibGUgQGNvZGUKKyBAYW5jaG9ye3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofQor IEBraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKKy1AaXRlbSBzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQorK0BpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IEBye1t9QHZhcntkaXJlY3Rvcmllc31AcntdfQorIFNldCB0aGUgbGlzdCBvZiBkaXJlY3Rvcmll cyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBhdXRvbWF0aWMKKyBsb2Fk aW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBlbnRlciBhIHNwZWNp ZmljIHRydXN0ZWQgZmlsZS4KKytJZiB5b3Ugb21pdCBAdmFye2RpcmVjdG9yaWVzfSwgQHNhbXB7 YXV0by1sb2FkIHNhZmUtcGF0aH0gd2lsbCBiZSByZXNldCB0bworK2l0cyBkZWZhdWx0IHZhbHVl IGFzIHNwZWNpZmllZCBkdXJpbmcgQHZhbHVle0dEQk59IGNvbXBpbGF0aW9uLgorKworIFRoZSBs aXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgZGlyZWN0b3J5IHNlcGFyYXRvciAoQHNhbXB7On0gb24g R05VIGFuZCBVbml4Cisgc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9T KSB0byBzZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CisgdG8gdGhlIEBlbnZ7UEFUSH0g ZW52aXJvbm1lbnQgdmFyaWFibGUuCitAQCAtMjEyNDAsNyArMjEyNDMsNyBAQAorIGhvc3QgcGxh dGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCisgQGVuZCB0YWJsZQorIAorLVNldHRp bmcgdGhpcyB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgZGlzYWJsZXMgdGhpcyBzZWN1cml0 eSBwcm90ZWN0aW9uLgorK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxl cyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCisgVGhpcyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0 byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0YWJsZSBieSB0aGUKKyBzeXN0 ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJlY3Rvcmll cyBpbiBpbml0IGZpbGVzIGluCisgdGhlaXIgaG9tZSBkaXJlY3RvcmllcyAoQHB4cmVme0hvbWUg RGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVjYXRlZAorQEAgLTIxMjYwLDcg KzIxMjYzLDcgQEAKKyBTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBj YXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorLUBp dGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBAZG90c3t9fQorK0Bp dGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8iIEBkb3Rze319Cisg RGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vz c2lvbi4KKyBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMg QHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCisgZnJvbSB0cnVzdGVkIHNvdXJjZXMuCgpk aWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xOW9m MjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZTk0NGEuLjAwMDAwMDAK LS0tIGEvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNTku aHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS4x MzA5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS4xMzEw Ci0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFdy YXAgdG9vIGxvbmcgbGluZXMgaW4gQHNtYWxsZXhhbXBsZS4KLSsJVHdpY2UuCi0rCi0gMjAxMi0w NS0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkq IGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0b3JpZXMn Ci0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wNiAxNTozMTowNAkxLjk1NQot KysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS45NTYKLUBA IC0yMTAwNCw3ICsyMTAwNCw4IEBACi0gKGdkYikgc2hvdyBhdXRvLWxvYWQKLSBnZGItc2NyaXB0 czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMg aXMgb24uCi0gbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmlj IGxpYnRocmVhZF9kYiBpcyBvbi4KLS1sb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5n ZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgotK2xvY2FsLWdkYmlu aXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3Rv cnkKLSsgICAgICAgICAgICAgICAgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRp bmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi0gc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3Rv cmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0gICAgICAgICAg ICAgaXMgL3Vzci9sb2NhbC4KLUBAIC0yMTAyMiw3ICsyMTAyMyw4IEBACi0gTG9hZGVkICBTY3Jp cHQKLSBZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0gbGlidGhyZWFkLWRiOiAg Tm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLgotLWxvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2Ri aW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgotK2xv Y2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5p dCIgaGFzIGJlZW4KLSsgICAgICAgICAgICAgICAgbG9hZGVkLgotIHB5dGhvbi1zY3JpcHRzOgot IExvYWRlZCAgU2NyaXB0Ci0gWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5CgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE5b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xOW9mMjgu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdiMTI5MwotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xOW9mMjgucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cwMDA2MC5odG1sCisK KyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wOSAxODoxNTo1OAkxLjEzMTAKKyMj IyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wOSAxOToyOToyNQkxLjEzMTEKKyMjIC0z LDYgKzMsOSBAQAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBXcmFwIHRvbyBsb25n IGxpbmVzIGluIEBzbWFsbGV4YW1wbGUuCisgCVR3aWNlLgorIAorKwkqIGdkYi50ZXhpbmZvIChT ZXBhcmF0ZSBEZWJ1ZyBGaWxlcywgQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UKKysJ ZGlyZWN0b3J5IHNlcGFyYXRvciBieSBwYXRoIHNlcGFyYXRvci4KKysKKyAyMDEyLTA1LTA2ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisgCSogZ2RiLnRl eGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3RvcmllcycKKy0tLSBz cmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuOTU2CisrKysgc3Jj L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wOSAxOToyOToyNQkxLjk1NworQEAgLTE2Mjg1 LDggKzE2Mjg1LDggQEAKKyBAa2luZGV4IHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeQorIEBpdGVt IHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yaWVzfQorIFNldCB0aGUgZGly ZWN0b3JpZXMgd2hpY2ggQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dp bmcKKy1pbmZvcm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0uICBNdWx0aXBsZSBkaXJl Y3RvcnkgY29tcG9uZW50cyBjYW4gYmUgc2V0CistY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEgZGly ZWN0b3J5IHNlcGFyYXRvci4KKytpbmZvcm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0u ICBNdWx0aXBsZSBwYXRoIGNvbXBvbmVudHMgY2FuIGJlIHNldAorK2NvbmNhdGVuYXRpbmcgdGhl bSBieSBhIHBhdGggc2VwYXJhdG9yLgorIAorIEBraW5kZXggc2hvdyBkZWJ1Zy1maWxlLWRpcmVj dG9yeQorIEBpdGVtIHNob3cgZGVidWctZmlsZS1kaXJlY3RvcnkKK0BAIC0yMTIyNyw3ICsyMTIy Nyw3IEBACisgSWYgeW91IG9taXQgQHZhcntkaXJlY3Rvcmllc30sIEBzYW1we2F1dG8tbG9hZCBz YWZlLXBhdGh9IHdpbGwgYmUgcmVzZXQgdG8KKyBpdHMgZGVmYXVsdCB2YWx1ZSBhcyBzcGVjaWZp ZWQgZHVyaW5nIEB2YWx1ZXtHREJOfSBjb21waWxhdGlvbi4KKyAKKy1UaGUgbGlzdCBvZiBkaXJl Y3RvcmllcyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5p eAorK1RoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgcGF0aCBzZXBhcmF0b3IgKEBzYW1wezp9 IG9uIEdOVSBhbmQgVW5peAorIHN5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1T LURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQorIHRvIHRoZSBAZW52e1BB VEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgorIAorQEAgLTIxMjQyLDcgKzIxMjQyLDcgQEAKKyBA aXRlbSBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAorIEFkZCBhbiBlbnRyeSAob3IgbGlzdCBvZiBl bnRyaWVzKSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMKKyBs b2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJl IGRlbGltaXRlZCBieSB0aGUKKy1ob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4g dXNlLgorK2hvc3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3IgaW4gdXNlLgorIEBlbmQgdGFibGUK KyAKKyBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1 cml0eSBwcm90ZWN0aW9uLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yMG9mMjIucGF0Y2gg Yi9nZGItYXV0b2xvYWQtMjBvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBmNGM3ZGNkLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0yMG9mMjIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMi0wNS9tc2cwMDE4MC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIGF1dG8tbG9hZCBm aXggbXVsdGktZGlyIGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0KLUhpLAotCi1JIGZvcmdvdCB0byBm aXggdGhpcyBjYXNlIG15c2VsZiwgUHl0aG9uIGF1dG8tbG9hZCB3YXMgaW1wbGVtZW50ZWQgYnk6 Ci0JY29tbWl0IDFlNWUyYWZkN2NmYTZiYjYyYWJiOTQ5M2E1MTRjNzA0ODllMTljMzIKLQlBdXRo b3I6IFRvbSBUcm9tZXkgPHRyb21leUByZWRoYXQuY29tPgotCURhdGU6ICAgVGh1IE1heSAyOCAw MDo0MDoyMyAyMDA5ICswMDAwCi0KLXdoaWxlIG11bHRpLWRpciBkZWJ1Zy1maWxlLWRpcmVjdG9y eSB3YXMgaW1wbGVtZW50ZWQgYnkKLQljb21taXQgMzZhZTUyZDE2Y2M5ZDM4Y2ZlMzE3YTc5YmI1 ZDYzYzYyNDM1OTE1NAotCUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0JRGF0ZTogICBNb24gTm92IDIgMTQ6NTk6NDggMjAwOSArMDAwMAotCi1ObyBy ZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTctbGludXgtZ251 LgotCi1BbmQgZGVidWdfZmlsZV9kaXJlY3RvcnkgcmVhbGx5IGNhbm5vdCBiZSBOVUxMIGFmdGVy IEdEQiBpbml0aWFsaXphdGlvbiBjb2RlLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIw MTItMDUtMDcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CU1ha2UgYXV0by1sb2FkIGhhbmRsZSBtdWx0aXBsZSBjb21wb25lbnRzIG9mIERFQlVHX0ZJTEVf RElSRUNUT1JZLgotCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFJl bW92ZSBjaGVjayBmb3IgTlVMTAotCURFQlVHX0ZJTEVfRElSRUNUT1JZLiAgSGFuZGxlIG11bHRp cGxlIGNvbXBvbmVudHMgb2YKLQlERUJVR19GSUxFX0RJUkVDVE9SWS4KLQotRGlmZiAtLWdpdCBh L2dkYi9hdXRvLWxvYWQuYyBiL2dkYi9hdXRvLWxvYWQuYwotaW5kZXggOWQ0ZDBiYy4uMjU0ZGUz YiAxMDA2NDQKLS0tLSBhL2dkYi9hdXRvLWxvYWQuYwotKysrIGIvZ2RiL2F1dG8tbG9hZC5jCi1A QCAtNTg3LDE3ICs1ODcsMjkgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKLSAgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotICAgZGVi dWdmaWxlID0gZmlsZW5hbWU7Ci0gCi0tICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0 b3J5KQotKyAgaWYgKCFpbnB1dCkKLSAgICAgewotLSAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1l IGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLS0gICAgICBk ZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuIChk ZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVi dWdfZmlsZV9kaXJlY3RvcnkpOwotLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3 ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBm aWxlbmFtZSk7Ci0rICAgICAgY2hhciAqZGVidWdkaXI7Ci0rICAgICAgVkVDIChjaGFyX3B0cikg KmRlYnVnZGlyX3ZlYzsKLSsgICAgICBpbnQgaXg7Ci0gCi0tICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 Ci0rICAgICAgZGVidWdkaXJfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChkZWJ1Z19m aWxlX2RpcmVjdG9yeSk7Ci0rICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChk ZWJ1Z2Rpcl92ZWMpOwotKwotKyAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9w dHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGlyKTsgKytpeCkKLSsJewotKwkgIC8qIEFsc28g dHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAg Ki8KLSsJICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGRlYnVnZGlyKSArIHN0cmxlbiAo ZmlsZW5hbWUpICsgMSk7Ci0rCSAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnZGlyKTsKLSsKLSsJ ICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAg Ki8KLSsJICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotKwotKwkgIG1ha2VfY2xlYW51 cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0rCSAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIp OwotKwkgIGlmIChpbnB1dCAhPSBOVUxMKQotKwkgICAgYnJlYWs7Ci0rCX0KLSAgICAgfQotIAot ICAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9h ZC0yMG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZTk0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0 b2xvYWQtMjBvZjI4LnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNTkuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hh bmdlTG9nCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS4xMzA5CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdl TG9nCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS4xMzEwCisjIyAtMSwzICsxLDggQEAKKysyMDEyLTA1 LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSog Z2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFdyYXAgdG9vIGxvbmcgbGluZXMgaW4gQHNtYWxs ZXhhbXBsZS4KKysJVHdpY2UuCisrCisgMjAxMi0wNS0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcg c2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0b3JpZXMnCistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi8wNS8wNiAxNTozMTowNAkxLjk1NQorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTIvMDUvMDkgMTg6MTU6NTgJMS45NTYKK0BAIC0yMTAwNCw3ICsyMTAwNCw4IEBACisgKGdk Yikgc2hvdyBhdXRvLWxvYWQKKyBnZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24uCisgbGlidGhyZWFkLWRiOiAgQXV0 by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KKy1sb2Nh bC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQg ZGlyZWN0b3J5IGlzIG9uLgorK2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmlu aXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkKKysgICAgICAgICAgICAgICAgaXMgb24u CisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24u Cisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUg dG8gYXV0by1sb2FkIGZpbGVzCisgICAgICAgICAgICAgaXMgL3Vzci9sb2NhbC4KK0BAIC0yMTAy Miw3ICsyMTAyMyw4IEBACisgTG9hZGVkICBTY3JpcHQKKyBZZXMgICAgIC9ob21lL3VzZXIvZ2Ri L2dkYi1nZGIuZ2RiCisgbGlidGhyZWFkLWRiOiAgTm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRi LgorLWxvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8u Z2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgorK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5p dCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4KKysgICAgICAgICAgICAg ICAgbG9hZGVkLgorIHB5dGhvbi1zY3JpcHRzOgorIExvYWRlZCAgU2NyaXB0CisgWWVzICAgICAv aG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIxb2Yy Mi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMW9mMjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGRhZWNiNWQuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTIxb2YyMi5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDQwMyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAxMi0wNS9tc2cwMDMwMy5odG1sCi1TdWJqZWN0OiBSZTogW3BhdGNo IDEvMl0gUHJvdmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2Fm ZS1wYXRoCi0KLU9uIFdlZCwgMDkgTWF5IDIwMTIgMTk6NDE6MDggKzAyMDAsIEVsaSBaYXJldHNr aWkgd3JvdGU6Ci0+IE9rYXkgd2l0aCB0aGF0LiAgVGhhbmtzLgotCi1VcGRhdGVkIGp1c3QgdGhl IGRvYy4KLQotCi1UaGFua3MsCi1KYW4KLQotCi0KLWdkYi8KLTIwMTItMDUtMDkgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVByb3ZpZGUgJGRkaXIgc3Vi c3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLQkqIE5FV1MgKC0td2l0 aC1hdXRvLWxvYWQtc2FmZS1wYXRoLCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aCk6IE5l dwotCWVudHJpZXMuCi0JKiBhdXRvLWxvYWQuYzogSW5jbHVkZSBvYnNlcnZlci5oLgotCShhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpOiBDYWxsIHN1YnN0aXR1dGVfcGF0aF9jb21wb25l bnQgZm9yCi0JZWFjaCBjb21wb25lbnQuICBOZXcgdmFyaWFibGUgZGRpcl9zdWJzdC4KLQkoYXV0 b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQpOiBOZXcgZnVuY3Rpb24uCi0JKHNldF9hdXRvX2xv YWRfc2FmZV9wYXRoKTogUmVuYW1lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0bwotCUFV VE9fTE9BRF9TQUZFX1BBVEguICBOZXcgY29tbWVudC4KLQkoX2luaXRpYWxpemVfYXV0b19sb2Fk KTogUmVuYW1lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0bwotCUFVVE9fTE9BRF9TQUZF X1BBVEguICBJbnN0YWxsIGF1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2VkLgotCSogY29uZmln LmluOiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJl LmFjICgtLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBSZW5hbWUKLQlERUZBVUxUX0FVVE9fTE9BRF9T QUZFX1BBVEggdG8gQVVUT19MT0FEX1NBRkVfUEFUSC4gIERlZmF1bHQgdG8KLQlHREJfREFUQURJ Ui9hdXRvLWxvYWQuCi0JKiBkZWZzLmggKHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQpOiBOZXcg ZGVjbGFyYXRpb24uCi0JKiB0b3AuYzogSW5jbHVkZSBvYnNlcnZlci5oLgotCShzZXRfZ2RiX2Rh dGFkaXIpOiBOZXcgZnVuY3Rpb24uCi0JKGluaXRfbWFpbik6IEluc3RhbGwgaXQgZm9yICJzZXQg ZGF0YS1kaXJlY3RvcnkiLgotCSogdXRpbHMuYyAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCk6 IE5ldyBmdW5jdGlvbi4KLQotZ2RiL2RvYy8KLTIwMTItMDUtMDkgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVByb3ZpZGUgJGRkaXIgc3Vic3RpdHV0aW9u IGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLQkqIGdkYi50ZXhpbmZvIChBdXRvLWxv YWRpbmcpOiBSZXBsYWNlIC91c3IvbG9jYWwgYnkgJGRkaXIvYXV0by1sb2FkLgotCShBdXRvLWxv YWRpbmcgc2FmZSBwYXRoKTogTGlrZXdpc2UuICBNZW50aW9uIHRoZSBkZWZhdWx0IHZhbHVlLAot CSRkZGlyIHN1YnN0aXR1dGlvbiwgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggYW5kCi0JLS13 aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGguCi0JKiBvYnNlcnZlci50ZXhpIChnZGJfZGF0YWRp cl9jaGFuZ2VkKTogTmV3LgotCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA1 LTA5IDIyOjEzOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L05FV1MJMjAxMi0wNS0wOSAyMjoxNDoyOS4wOTExODMxOTAgKzAyMDAKLUBAIC03Niw2ICs3Niwx NyBAQCBzZXQgZGVidWcgYXV0by1sb2FkIG9ufG9mZgotIHNob3cgZGVidWcgYXV0by1sb2FkCi0g ICBDb250cm9sIGRpc3BsYXkgb2YgZGVidWdnaW5nIGluZm8gZm9yIGF1dG8tbG9hZGluZyB0aGUg ZmlsZXMgYWJvdmUuCi0gCi0rKiBOZXcgY29uZmlndXJlIG9wdGlvbnMKLSsKLSstLXdpdGgtYXV0 by1sb2FkLXNhZmUtcGF0aAotKyAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldHRpbmcKLSsgIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8g JyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJlcHJlc2VudGluZyB0aGUgdmFsdWUKLSsgIG9mIGNv bmZpZ3VyZSBvcHRpb24gLS13aXRoLWdkYi1kYXRhZGlyLgotKwotKy0td2l0aG91dC1hdXRvLWxv YWQtc2FmZS1wYXRoCi0rICBTZXQgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0byAnLycsIGVm ZmVjdGl2ZWx5IGRpc2FibGluZyB0aGlzCi0rICBzZWN1cml0eSBmZWF0dXJlLgotKwotICogTmV3 IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAg ICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTA5IDIyOjEzOjU4LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMDkg MjI6MTQ6MDQuODEyMjIyMjI2ICswMjAwCi1AQCAtMzUsNiArMzUsNyBAQAotICNpbmNsdWRlICJn ZGJfdmVjcy5oIgotICNpbmNsdWRlICJyZWFkbGluZS90aWxkZS5oIgotICNpbmNsdWRlICJjb21w bGV0ZXIuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAKLSAvKiBUaGUgc3VmZml4IG9mIHBl ci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxl cy4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBs aWJmb28tZ2RiLmdkYi4gICovCi1AQCAtMTQxLDEwICsxNDIsMTYgQEAgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWNfdXBkYXRlICh2b2lkKQotICAgZm9yIChpeCA9IDA7IGl4IDwgbGVuOyBpeCsrKQot ICAgICB7Ci0gICAgICAgY2hhciAqZGlyID0gVkVDX2luZGV4IChjaGFyX3B0ciwgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMsIGl4KTsKLS0gICAgICBjaGFyICpleHBhbmRlZCA9IHRpbGRlX2V4cGFu ZCAoZGlyKTsKLS0gICAgICBjaGFyICpyZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVk KTsKLSsgICAgICBjaGFyICpkZGlyX3N1YnN0LCAqZXhwYW5kZWQsICpyZWFsX3BhdGg7Ci0gCi0t ICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFu ZC1lZC4gICovCi0rICAgICAgZGRpcl9zdWJzdCA9IHhzdHJkdXAgKGRpcik7Ci0rICAgICAgc3Vi c3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRkaXJfc3Vic3QsICIkZGRpciIsIGdkYl9kYXRhZGly KTsKLSsgICAgICBleHBhbmRlZCA9IHRpbGRlX2V4cGFuZCAoZGRpcl9zdWJzdCk7Ci0rICAgICAg eGZyZWUgKGRkaXJfc3Vic3QpOwotKyAgICAgIHJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhw YW5kZWQpOwotKwotKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFz dCBhIHZhbGlkIHBhdGggKHRoZXJlZm9yZQotKwkgJGRkaXItZXhwYW5kZWQgYW5kIHRpbGRlLWV4 cGFuZGVkKS4gICovCi0gICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSAKLSAgICAgICBpZiAoZGVidWdfYXV0b19sb2Fk KQotQEAgLTE3NiwxNSArMTgzLDI0IEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAo dm9pZCkKLSAgICAgfQotIH0KLSAKLSsvKiBWYXJpYWJsZSBnZGJfZGF0YWRpciBoYXMgYmVlbiBz ZXQuICBVcGRhdGUgY29udGVudCBkZXBlbmRpbmcgb24gJGRkaXIuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQgKHZvaWQpCi0rewotKyAgYXV0b19s b2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSAvKiAic2V0IiBjb21tYW5kIGZv ciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSAK LSBzdGF0aWMgdm9pZAotIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQg ZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotIHsKLSsgIC8qIFNldHRpbmcg dGhlIHZhcmlhYmxlIHRvICIiIHJlc2V0cyBpdCB0byB0aGUgY29tcGlsZSB0aW1lIGRlZmF1bHRz LiAgKi8KLSAgIGlmIChhdXRvX2xvYWRfc2FmZV9wYXRoWzBdID09ICdcMCcpCi0gICAgIHsKLSAg ICAgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0tICAgICAgYXV0b19sb2FkX3NhZmVf cGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7Ci0rICAgICAgYXV0 b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKEFVVE9fTE9BRF9TQUZFX1BBVEgpOwotICAgICB9 Ci0gCi0gICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci1AQCAtMTA0MCw3ICsx MDU2LDcgQEAgVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgotIFVzYWdl OiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCi0gCSAgIGF1dG9fbG9hZF9pbmZvX2Nt ZGxpc3RfZ2V0ICgpKTsKLSAKLS0gIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZB VUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJk dXAgKEFVVE9fTE9BRF9TQUZFX1BBVEgpOwotICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBk YXRlICgpOwotICAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kICgic2FmZS1wYXRo IiwgY2xhc3Nfc3VwcG9ydCwKLSAJCQkJICAgICAmYXV0b19sb2FkX3NhZmVfcGF0aCwgXygiXAot QEAgLTEwNTgsNiArMTA3NCw3IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRp b25zIGYKLSAJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0gCQkJCSAgICAgYXV0 b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSAJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRs aXN0X2dldCAoKSk7Ci0rICBvYnNlcnZlcl9hdHRhY2hfZ2RiX2RhdGFkaXJfY2hhbmdlZCAoYXV0 b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQpOwotIAotICAgY21kID0gYWRkX2NtZCAoImFkZC1h dXRvLWxvYWQtc2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSAJCSBhZGRfYXV0b19sb2FkX3Nh ZmVfcGF0aCwKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4KLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEyLTA1 LTA5IDIyOjEzOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZy5pbgkyMDEyLTA1LTA5IDIyOjE0OjA0LjgxMjIyMjIyNiArMDIwMAotQEAgLTcsNiAr Nyw5IEBACi0gLyogRGVmaW5lIGlmIGJ1aWxkaW5nIHVuaXZlcnNhbCAoaW50ZXJuYWwgaGVscGVy IG1hY3JvKSAqLwotICN1bmRlZiBBQ19BUFBMRV9VTklWRVJTQUxfQlVJTEQKLSAKLSsvKiBEaXJl Y3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICovCi0rI3VuZGVmIEFVVE9f TE9BRF9TQUZFX1BBVEgKLSsKLSAvKiBEaXJlY3Rvcnkgb2YgcHJvZ3JhbXMuICovCi0gI3VuZGVm IEJJTkRJUgotIAotQEAgLTQzLDkgKzQ2LDYgQEAKLSAgICBtb3ZlZC4gKi8KLSAjdW5kZWYgREVC VUdESVJfUkVMT0NBVEFCTEUKLSAKLS0vKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMuICovCi0tI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAotLQot IC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KLSAjdW5kZWYgREVG QVVMVF9CRkRfQVJDSAotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3Vy ZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJl CTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDUtMDkgMjI6MTY6MTkuODc3MDA1MDgzICswMjAwCi1A QCAtMTY2OCw3ICsxNjY4LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcnBtICAg ICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVz L25vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAg IC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZp bGVzLCB1c2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICRkZGlyIGZvciAtLXdpdGgtZ2Ri LWRhdGFkaXIgcGF0aCBbJGRkaXIvYXV0by1sb2FkXQotICAgLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlLXBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRv LWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBs aWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKLUBAIC04NDg4LDIwICs4NDg5LDIxIEBA ICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG8KLSAjIENoZWNrIHdoZXRo ZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7d2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIHdpdGh2YWw9JHdp dGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotLSBmaQot KyAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotKyAgICAgZmkKLSBlbHNlCi0tICB3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCi0rICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9JyRkZGlyL2F1dG8tbG9hZCcKLSBmaQotIAotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AK LSAKLSAgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJl Zml4IgotICAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtw cmVmaXh9JwotLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGhgCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGVzY2FwZV9kaXJgCi0gICBhY19k ZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCi0gCi0gY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgotLSNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVm aW5lX2RpciIKLSsjZGVmaW5lIEFVVE9fTE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgot IF9BQ0VPRgotIAotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5h YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJl LmFjCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMDkgMjI6MTY6MTAuNTkyMDIwMDEyICsw MjAwCi1AQCAtMzQxLDEzICszNDEsMTYgQEAgZmkKLSAgCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3Ig ZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKLSBBQ19BUkdfV0lUSChhdXRvLWxvYWQtc2Fm ZS1wYXRoLAotLUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRI XSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCi0tQVNfSEVM UF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmlj dCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwKLS1baWYgdGVzdCAiJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIvIgotLSBmaV0sCi0tW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQotLUFD X0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGgsCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBB VEhdLAotKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNl ICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpAJGRkaXIvYXV0by1sb2FkQDo+ QF0pCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwKLSsg ICAgICAgICAgICAgICBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9u c10pLAotKyAgICBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0 aGVuCi0rICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0rICAgICBmaV0sCi0rW3dp dGhfYXV0b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIvYXV0by1sb2FkJ10pCi0rZXNjYXBlX2Rpcj1g ZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRpclw+L1xcXFxc XFxcXFxcXCYvZydgCi0rQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVf ZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVz Ll0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCi0gCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZGVmcy5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kZWZzLmgJMjAxMi0wNS0wOSAyMjoxMzo1Ny4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgJMjAxMi0wNS0wOSAy MjoxNDowNC44MTYyMjIyMjAgKzAyMDAKLUBAIC00NDIsNiArNDQyLDkgQEAgZXh0ZXJuIHN0cnVj dCBjbGVhbnVwICptYWtlX2Jwc3RhdF9jbGVhcgotIAotIGV4dGVybiBpbnQgcHJvZHVjZXJfaXNf Z2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1Y2VyKTsKLSAKLStleHRlcm4gdm9pZCBzdWJzdGl0 dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hhciAqZnJvbSwKLSsJ CQkJICAgICAgIGNvbnN0IGNoYXIgKnRvKTsKLSsKLSAjaWZkZWYgSEFWRV9XQUlUUElECi0gZXh0 ZXJuIHBpZF90IHdhaXRfdG9fZGllX3dpdGhfdGltZW91dCAocGlkX3QgcGlkLCBpbnQgKnN0YXR1 cywgaW50IHRpbWVvdXQpOwotICNlbmRpZgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMDkg MjI6MTY6NDMuNzU5OTY2Njg4ICswMjAwCi1AQCAtMjA4MDMsNyArMjA4MDMsNyBAQCBsb2NhbC1n ZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0Ci0gICAgICAgICAgICAgICAgIGlzIG9u LgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9u LgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlzIC91c3IvbG9jYWwuCi0rICAgICAg ICAgICAgaXMgJGRkaXIvYXV0by1sb2FkLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQGFuY2hv cntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMTAwNiw5ICsyMTAwNiw5IEBAIGdldCBsb2FkZWQ6Ci0g JCAuL2dkYiAtcSAuL2dkYgotIFJlYWRpbmcgc3ltYm9scyBmcm9tIC9ob21lL3VzZXIvZ2RiL2dk Yi4uLmRvbmUuCi0gd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5nZGIiIGF1 dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9h ZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkg eW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgotIHdh cm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1dG8tbG9hZGluZyBoYXMg YmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNl dCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2Fk IHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgotIEBlbmQgc21hbGxleGFtcGxl Ci0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRo ZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1AQCAtMjEwNDAsNyArMjEwNDAsMTggQEAgbG9hZGluZyBh bmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhvc3QgcGxhdGZvcm0gZGlyZWN0b3J5 IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotLVNldHRpbmcgdGhpcyB2YXJpYWJs ZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCi0rVGhpcyB2 YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXskZGRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQg QGNvZGV7c2V0Ci0rYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJp ZGVuIGJ5IEB2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uCi0rb3B0aW9uIEBvcHRpb257LS13aXRo LWF1dG8tbG9hZC1zYWZlLXBhdGh9LgotKwotK0FueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0g d2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKLStkZXRl cm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZp bGV7JGRkaXJ9IG11c3QgYmUKLStiZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0t LSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5IEBmaWxley99IG9yCi0rQGZpbGV7XH0gZGly ZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KLSsKLStT ZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBw cm90ZWN0aW9uLAotK2NvcnJlc3BvbmRpbmcgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0 aW9uIGlzCi0rQG9wdGlvbnstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCi0gVGhpcyB2 YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3 cml0YWJsZSBieSB0aGUKLSBzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRo ZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCi0gdGhlaXIgaG9tZSBkaXJl Y3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVw cmVjYXRlZAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9vYnNlcnZlci50ZXhp Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2Mvb2JzZXJ2 ZXIudGV4aQkyMDEyLTA1LTA5IDIyOjEzOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCTIwMTItMDUtMDkgMjI6MTc6MDQuMTE4 OTMzOTQ4ICswMjAwCi1AQCAtMjMxLDYgKzIzMSwxMCBAQCB0aGUgY3VycmVudCB0b3AtbGV2ZWwg cHJvbXB0LgotIEBjIGNvbGxlY3RvciBwYXNzLiAgQ3VycmVudGx5IG9ubHkgQGNvZGV7dHlwZV9t YXJrX3VzZWR9IG1hcmtlciBpcyBzdXBwb3J0ZWQuCi0gQGMgQGVuZCBkZWZ0eXBlZnVuCi0gCi0r QGRlZnR5cGVmdW4gdm9pZCBnZGJfZGF0YWRpcl9jaGFuZ2VkICh2b2lkKQotK1ZhcmlhYmxlIGdk Yl9kYXRhZGlyIGhhcyBiZWVuIHNldC4gIFRoZSB2YWx1ZSBtYXkgbm90IG5lY2Vzc2FyaWx5IGNo YW5nZS4KLStAZW5kIGRlZnR5cGVmdW4KLSsKLSBAZGVmdHlwZWZ1biB2b2lkIHRlc3Rfbm90aWZp Y2F0aW9uIChpbnQgQHZhcntzb21lYXJnfSkKLSBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGlu dGVybmFsIHRlc3RpbmcuICBEbyBub3QgdXNlLiAgCi0gU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29i c2VydmVyLmV4cC4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90b3AuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdG9wLmMJMjAxMi0wNS0wOSAy MjoxMzo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90b3Au YwkyMDEyLTA1LTA5IDIyOjE0OjA0LjgyMzIyMjIwOCArMDIwMAotQEAgLTQ3LDYgKzQ3LDcgQEAK LSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSAj aW5jbHVkZSAiaW50ZXJwcy5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotIAotIC8qIHJlYWRs aW5lIGluY2x1ZGUgZmlsZXMuICAqLwotICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgot QEAgLTE1NjEsNiArMTU2MiwxNSBAQCBzaG93X2V4ZWNfZG9uZV9kaXNwbGF5X3AgKHN0cnVjdCB1 aV9maWxlCi0gCQkJICAgICJhc3luY2hyb25vdXMgZXhlY3V0aW9uIGNvbW1hbmRzIGlzICVzLlxu IiksCi0gCQkgICAgdmFsdWUpOwotIH0KLSsKLSsvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgZ2Ri X2RhdGFkaXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStz ZXRfZ2RiX2RhdGFkaXIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMpCi0rewotKyAgb2JzZXJ2ZXJfbm90aWZ5X2dkYl9kYXRhZGlyX2NoYW5nZWQg KCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gaW5pdF9tYWluICh2b2lkKQotIHsKLUBAIC0xNjY4 LDcgKzE2NzgsNyBAQCBVc2UgXCJvblwiIHRvIGVuYWJsZSB0aGUgbm90aWZpY2F0aW9uLCBhCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiU2hvdyBHREIncyBkYXRhIGRpcmVjdG9yeS4i KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJcCi0gV2hlbiBzZXQsIEdEQiB1c2Vz IHRoZSBzcGVjaWZpZWQgcGF0aCB0byBzZWFyY2ggZm9yIGRhdGEgZmlsZXMuIiksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXRfZ2RiX2RhdGFkaXIsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg JnNldGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNob3dsaXN0KTsKLSB9Ci1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA1LTA5IDIyOjEzOjU3LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMJMjAxMi0w NS0wOSAyMjoxNDowNC44MjQyMjIyMDYgKzAyMDAKLUBAIC0zOTI1LDYgKzM5MjUsNDggQEAgZGly bmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaQotICAgcmV0dXJuIHJldHZhbDsK LSB9Ci0gCi0rLyogU3Vic3RpdHV0ZSBhbGwgb2NjdXJlbmNlcyBvZiBzdHJpbmcgRlJPTSBieSBz dHJpbmcgVE8gaW4gKlNUUklOR1AuICAqU1RSSU5HUAotKyAgIG11c3QgY29tZSBmcm9tIHhyZWFs bG9jLWNvbXBhdGlibGUgYWxsb2NhdG9yIGFuZCBpdCBtYXkgYmUgdXBkYXRlZC4gIEZST00KLSsg ICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiAob3IgYmUgbG9jYXRl ZCBhdCB0aGUgc3RhcnQgb3IKLSsgICBlbmQgb2YgKlNUUklOR1AuICAqLwotKwotK3ZvaWQKLStz dWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hhciAqZnJv bSwgY29uc3QgY2hhciAqdG8pCi0rewotKyAgY2hhciAqc3RyaW5nID0gKnN0cmluZ3AsICpzOwot KyAgY29uc3Qgc2l6ZV90IGZyb21fbGVuID0gc3RybGVuIChmcm9tKTsKLSsgIGNvbnN0IHNpemVf dCB0b19sZW4gPSBzdHJsZW4gKHRvKTsKLSsKLSsgIGZvciAocyA9IHN0cmluZzs7KQotKyAgICB7 Ci0rICAgICAgcyA9IHN0cnN0ciAocywgZnJvbSk7Ci0rICAgICAgaWYgKHMgPT0gTlVMTCkKLSsJ YnJlYWs7Ci0rCi0rICAgICAgaWYgKChzID09IHN0cmluZyB8fCBJU19ESVJfU0VQQVJBVE9SIChz Wy0xXSkpCi0rICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAnIHx8IElTX0RJUl9TRVBB UkFUT1IgKHNbZnJvbV9sZW5dKSkpCi0rCXsKLSsJICBjaGFyICpzdHJpbmdfbmV3OwotKwotKwkg IHN0cmluZ19uZXcgPSB4cmVhbGxvYyAoc3RyaW5nLCAoc3RybGVuIChzdHJpbmcpICsgdG9fbGVu ICsgMSkpOwotKwotKwkgIC8qIFJlbG9jYXRlIHRoZSBjdXJyZW50IFMgcG9pbnRlci4gICovCi0r CSAgcyA9IHMgLSBzdHJpbmcgKyBzdHJpbmdfbmV3OwotKwkgIHN0cmluZyA9IHN0cmluZ19uZXc7 Ci0rCi0rCSAgLyogUmVwbGFjZSBmcm9tIGJ5IHRvLiAgKi8KLSsJICBtZW1tb3ZlICgmc1t0b19s ZW5dLCAmc1tmcm9tX2xlbl0sIHN0cmxlbiAoJnNbZnJvbV9sZW5dKSArIDEpOwotKwkgIG1lbWNw eSAocywgdG8sIHRvX2xlbik7Ci0rCi0rCSAgcyArPSB0b19sZW47Ci0rCX0KLSsgICAgICBlbHNl Ci0rCXMrKzsKLSsgICAgfQotKwotKyAgKnN0cmluZ3AgPSBzdHJpbmc7Ci0rfQotKwotICNpZmRl ZiBIQVZFX1dBSVRQSUQKLSAKLSAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0yMW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjFvZjI4LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MzJlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt YXV0b2xvYWQtMjFvZjI4LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2h0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNzkuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMi8wNS8xMCAyMDoxNzo0NgkxLjE0MjM1CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNS8xMSAxODowNjoyNgkxLjE0MjM2CisjIyAtMSwzICsxLDEwIEBACisrMjAxMi0wNS0x MSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlNYWtl IGF1dG8tbG9hZCBoYW5kbGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZiBERUJVR19GSUxFX0RJUkVD VE9SWS4KKysJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogUmVtb3Zl IGNoZWNrIGZvciBOVUxMCisrCURFQlVHX0ZJTEVfRElSRUNUT1JZLiAgSGFuZGxlIG11bHRpcGxl IGNvbXBvbmVudHMgb2YKKysJREVCVUdfRklMRV9ESVJFQ1RPUlkuCisrCisgMjAxMi0wNS0xMCAg VG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorIAorIAkqIGR3YXJmMnJlYWQuYyAocmVj dXJzaXZlbHlfd3JpdGVfcHN5bWJvbHMpOiBOZXcgZnVuY3Rpb24uCistLS0gc3JjL2dkYi9hdXRv LWxvYWQuYwkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuNgorKysrIHNyYy9nZGIvYXV0by1sb2FkLmMJ MjAxMi8wNS8xMSAxODowNjoyOAkxLjcKK0BAIC01ODcsMTcgKzU4NywyOSBAQAorICAgaW5wdXQg PSBmb3BlbiAoZmlsZW5hbWUsICJyIik7CisgICBkZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsKKyAKKy0g IGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCisrICBpZiAoIWlucHV0KQorICAg ICB7CistICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVi dWcgaW5mbyBkaXJlY3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxl biAoZmlsZW5hbWUpCistCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEp OworLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICAg ICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4g ICovCistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKy0KKy0gICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVn ZmlsZSwgInIiKTsKKysgICAgICBjaGFyICpkZWJ1Z2RpcjsKKysgICAgICBWRUMgKGNoYXJfcHRy KSAqZGVidWdkaXJfdmVjOworKyAgICAgIGludCBpeDsKKysKKysgICAgICBkZWJ1Z2Rpcl92ZWMg PSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKKysgICAg ICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKGRlYnVnZGlyX3ZlYyk7CisrCisrICAg ICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgZGVidWdkaXJfdmVjLCBpeCwg ZGVidWdkaXIpOyArK2l4KQorKwl7CisrCSAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0 aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLworKwkgIGRlYnVnZmlsZSA9IHht YWxsb2MgKHN0cmxlbiAoZGVidWdkaXIpICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKTsKKysJICBz dHJjcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIpOworKworKwkgIC8qIEZJTEVOQU1FIGlzIGFic29s dXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworKwkgIHN0cmNhdCAoZGVidWdm aWxlLCBmaWxlbmFtZSk7CisrCisrCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsK KysJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrCSAgaWYgKGlucHV0ICE9IE5V TEwpCisrCSAgICBicmVhazsKKysJfQorICAgICB9CisgCisgICBpZiAoIWlucHV0ICYmIGdkYl9k YXRhZGlyKQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0Y2ggYi9nZGItYXV0 b2xvYWQtMjJvZjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2VkNjI0 Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw0ODIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTItMDUvbXNnMDAzMDEuaHRtbAotU3ViamVjdDogUmU6IFtwYXRjaCAyLzJdIEltcGxlbWVudCBt dWx0aS1jb21wb25lbnQgLS13aXRoLWF1dG8tbG9hZC1kaXIKLQotT24gV2VkLCAwOSBNYXkgMjAx MiAxOTo0NzowNyArMDIwMCwgRWxpIFphcmV0c2tpaSB3cm90ZToKLT4gPiBEYXRlOiBXZWQsIDkg TWF5IDIwMTIgMTc6NDg6NDcgKzAyMDAKLT4gPiBGcm9tOiBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLT4gPiAKLT4gPiArc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRp cmVjdG9yeSA8ZGlyMT5bOjxkaXIyPi4uLl0KLT4gPiArICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9y aWVzIHdpdGggYXV0by1sb2FkZWQgc2NyaXB0cy4gIEF1dG9tYXRpY2FsbHkKLT4gCi0+ICAgIlNl dCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNj cmlwdHMuIgotCi1PSy4KLQotCi0+ID4gK1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB3aXRo IGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLT4gPiArU2hvdyB0aGUgbGlzdCBvZiBkaXJl Y3RvcmllcyB3aXRoIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLT4gCi0+IExpa2V3aXNl IGhlcmUuCi0KLUJ1dCB1c2VkICJ0aGUiLCAidGhlIiBpcyBwcmVzZW50L3Jldmlld2VkIGluIG1h bnkgb3RoZXIgbG9jYXRpb25zIGluIGNvZGUuCi0KLQotPiA+ICttYXkgYmUgZGVsaW1pdGVkIGJ5 IHRoZSBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNlLgotPiAKLT4gSSBi ZWxpZXZlIHRoZSBjb3JyZWN0IHRlcm0gaXMgInBhdGggc2VwYXJhdG9yIi4KLQotZG9uZS4KLQot Ci0+IEkgc3VnZ2VzdCB0byBzYXkKLT4gCi0+ICAgKEBzYW1wezp9IG9uIFVuaXgsIEBzYW1wezt9 IG9uIFdpbmRvd3MgYW5kIERPUykKLT4gCi0+IGZvciBjbGFyaXR5IGhlcmUsIGFuZCBub3QgZnVy dGhlciBkb3duLgotCi1Vc2VkLCB3aXRoIE1TLSBwcmVmaXhlcy4KLQotCi0+IAotPiA+ICtFYWNo IGVudHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvIGJ5IHRoZSBzZWN1cml0eSBzZXR0 aW5nCi0+ID4gK0B4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofS4KLT4gICAgXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0+IFlvdSB3YW50ICIoQHB4cmVmey4uLn0pIiBoZXJlLgot Ci1Vc2VkOgotRWFjaCBlbnRyeSBoZXJlIG5lZWRzIHRvIGJlIGNvdmVyZWQgYWxzbyBieSB0aGUg c2VjdXJpdHkgc2V0dGluZwotQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7 c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0y MDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0K LQlJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0td2l0aC1hdXRvLWxvYWQtZGlyLgotCSogTkVX UyAoc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeSwgLS13aXRoLWF1dG8tbG9hZC1kaXIp OiBOZXcKLQllbnRyaWVzLgotCSgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCk6IFVwZGF0ZSB0 aGUgZGVmYXVsdCB2YWx1ZSBkZXNjcmlwdGlvbi4KLQkqIGF1dG8tbG9hZC5jIChhdXRvX2xvYWRf ZGlyLCBzZXRfYXV0b19sb2FkX2Rpciwgc2hvd19hdXRvX2xvYWRfZGlyKToKLQlOZXcuCi0JKGF1 dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IEFkZCBERUJVR19BVVRPX0xPQUQgb3V0cHV0LiAgUmVt b3ZlCi0JR0RCX0RBVEFESVIgTlVMTCBjaGVjay4gIFJlcGxhY2UgR0RCX0RBVEFESVIvYXV0by1s b2FkIGJ5Ci0JQVVUT19MT0FEX0RJUi4gIFN1cHBvcnQgJGRkaXIgYW5kIG11bHRpcGxlIGNvbXBv bmVudHMgaW4gaXQuCi0JKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IEluaXRpYWxpemUgYWxzbyBh dXRvX2xvYWRfZGlyLiAgSW5zdGFsbCBuZXcKLQkic2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVj dG9yeSIuCi0JKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1cmU6IFJlZ2VuZXJh dGUuCi0JKiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRvLWxvYWQtZGlyKTogTmV3IGNvbmZpZ3Vy ZSBvcHRpb24uCi0JKC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IENoYW5nZSB0aGUgZGVmYXVsdCB0 byAtLXdpdGgtYXV0by1sb2FkLWRpci4KLQotZ2RiL2RvYy8KLTIwMTItMDUtMDkgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUltcGxlbWVudCBtdWx0aS1j b21wb25lbnQgLS13aXRoLWF1dG8tbG9hZC1kaXIuCi0JKiBnZGIudGV4aW5mbyAoQXV0by1sb2Fk aW5nKTogTmV3IHJlZmVyZW5jZXMKLQlmb3IgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rv cnknCi0JYW5kICdzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeScuCi0JKEF1dG8tbG9h ZGluZyBzYWZlIHBhdGgpOiBEZXNjcmliZSB0aGUgbmV3IGRlZmF1bHQuICBNb3ZlICRkZGlyCi0J c3Vic3RpdHVhdGlvbiByZWZlcmVuY2UgdG8gJ29iamZpbGUtZ2RiLnB5IGZpbGUnLgotCShvYmpm aWxlLWdkYi5weSBmaWxlKTogRGVzY3JpYmUgc2NyaXB0LW5hbWUgYWxpYXMuICBDaGFuZ2UgcmVh bC1uYW1lIHRvCi0Jc2NyaXB0LW5hbWUuICBEZXNjcmliZSBuZXcgJ3NldCBhdXRvLWxvYWQgc2Ny aXB0cy1kaXJlY3RvcnknCi0JYW5kICdzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeScu Ci0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMDkgMjI6MTQ6MjkuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTA5 IDIyOjE3OjE2LjQxNjkxNDE4NCArMDIwMAotQEAgLTY3LDYgKzY3LDEyIEBAIHNldCBhdXRvLWxv YWQgbGlidGhyZWFkLWRiIG9ufG9mZgotIHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotICAg Q29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2lu ZyBzaGFyZWQgbGlicmFyeS4KLSAKLStzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5IDxk aXIxPls6PGRpcjI+Li4uXQotKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsgIEF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5 dGhvbiBzY3JpcHRzIGFuZCBHREIgc2NyaXB0cyBhcmUgbG9jYXRlZCBpbiBvbmUKLSsgIG9mIHRo ZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uCi0rICBUaGUgZGVsaW1pdGVyICgn OicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotKwot IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQotIHNob3cgYXV0by1s b2FkIHNhZmUtcGF0aAotICAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0 IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgotQEAgLTc4LDEwICs4NCwxNCBAQCBzaG93IGRl YnVnIGF1dG8tbG9hZAotIAotICogTmV3IGNvbmZpZ3VyZSBvcHRpb25zCi0gCi0rLS13aXRoLWF1 dG8tbG9hZC1kaXIKLSsgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRv LWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCi0rICBzZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVsdHMg dG8gJyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJlcHJlc2VudGluZwotKyAgdGhlIHZhbHVlIG9m IGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWdkYi1kYXRhZGlyLgotKwotIC0td2l0aC1hdXRvLWxv YWQtc2FmZS1wYXRoCi0gICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0dGluZwotLSAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRk aXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZQotLSAgb2YgY29uZmln dXJlIG9wdGlvbiAtLXdpdGgtZ2RiLWRhdGFkaXIuCi0rICBhYm92ZS4gIEl0IGRlZmF1bHRzIHRv IHRoZSAtLXdpdGgtYXV0by1sb2FkLWRpciBzZXR0aW5nLgotIAotIC0td2l0aG91dC1hdXRvLWxv YWQtc2FmZS1wYXRoCi0gICBTZXQgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0byAnLycsIGVm ZmVjdGl2ZWx5IGRpc2FibGluZyB0aGlzCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2F1dG8tbG9hZC5jCTIwMTItMDUtMDkgMjI6MTQ6MDQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNS0wOSAyMjoxNzoxNi40MTc5 MTQxODIgKzAyMDAKLUBAIC0xMDgsNiArMTA4LDM1IEBAIHNob3dfYXV0b19sb2FkX2xvY2FsX2dk YmluaXQgKHN0cnVjdCB1aV8KLSAJCSAgICB2YWx1ZSk7Ci0gfQotIAotKy8qIERpcmVjdG9yeSBs aXN0IGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiAgSXQgaXMgbm90IGNo ZWNrZWQKLSsgICBmb3IgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29t bWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSsgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQu ICAqLwotK3N0YXRpYyBjaGFyICphdXRvX2xvYWRfZGlyOwotKwotKy8qICJzZXQiIGNvbW1hbmQg Zm9yIHRoZSBhdXRvX2xvYWRfZGlyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9kaXIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgLyogU2V0dGluZyB0aGUgdmFyaWFi bGUgdG8gIiIgcmVzZXRzIGl0IHRvIHRoZSBjb21waWxlIHRpbWUgZGVmYXVsdHMuICAqLwotKyAg aWYgKGF1dG9fbG9hZF9kaXJbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAgIHhmcmVlIChhdXRv X2xvYWRfZGlyKTsKLSsgICAgICBhdXRvX2xvYWRfZGlyID0geHN0cmR1cCAoQVVUT19MT0FEX0RJ Uik7Ci0rICAgIH0KLSt9Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRf ZGlyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19h dXRvX2xvYWRfZGlyIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJICAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBm cHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2gg dG8gbG9hZCAiCi0rCQkJICAgICJhdXRvLWxvYWRlZCBzY3JpcHRzIGlzICVzLlxuIiksCi0rCQkg ICAgdmFsdWUpOwotK30KLSsKLSAvKiBEaXJlY3RvcnkgbGlzdCBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMuICBJdCBpcyBub3QgY2hlY2tlZCBmb3IKLSAgICBhYnNvbHV0ZSBwYXRocyBi dXQgdGhleSBhcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQuICBJdCBpcyBpbml0aWFsaXplZCBieQot ICAgIF9pbml0aWFsaXplX2F1dG9fbG9hZC4gICovCi1AQCAtNjAyLDYgKzYzMSw5IEBAIGF1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIGlucHV0ID0gZm9wZW4g KGZpbGVuYW1lLCAiciIpOwotICAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0rICBpZiAoZGVidWdf YXV0b19sb2FkKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8t bG9hZDogQXR0ZW1wdGVkIGZpbGUgXCIlc1wiICVzLlxuIiksCi0rCQkJZGVidWdmaWxlLCBpbnB1 dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0gCi0gICBpZiAoIWlucHV0 KQotICAgICB7Ci1AQCAtNjEyLDYgKzY0NCwxMiBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KHN0cnVjdCBvYmpmaWxlCi0gICAgICAgZGVidWdkaXJfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9w dHJfdmVjIChkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0gICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVf Y2hhcl9wdHJfdmVjIChkZWJ1Z2Rpcl92ZWMpOwotIAotKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xv YWQpCi0rCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkgICAgXygiYXV0by1s b2FkOiBTZWFyY2hpbmcgJ3NldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeScgIgotKwkJCSAgICAgICJw YXRoIFwiJXNcIi5cbiIpLAotKwkJCSAgICBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0rCi0gICAg ICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgZGVidWdkaXJfdmVjLCBpeCwg ZGVidWdkaXIpOyArK2l4KQotIAl7Ci0gCSAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0 aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotQEAgLTYyMywyNCArNjYxLDUz IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAJICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotIAkgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmls ZSwgInIiKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwkgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlICIKLSsJCQkJCSAg ICAgICJcIiVzXCIgJXMuXG4iKSwKLSsJCQkJZGVidWdmaWxlLAotKwkJCQlpbnB1dCA/IF8oImV4 aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0gCSAgaWYgKGlucHV0ICE9IE5VTEwpCi0g CSAgICBicmVhazsKLSAJfQotICAgICB9Ci0gCi0tICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGly KQotKyAgaWYgKCFpbnB1dCkKLSAgICAgewotKyAgICAgIFZFQyAoY2hhcl9wdHIpICp2ZWM7Ci0r ICAgICAgaW50IGl4OwotKyAgICAgIGNoYXIgKmRpcjsKLSsKLSAgICAgICAvKiBBbHNvIHRyeSB0 aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKLSAJIGRpcmVjdG9y eS4gICovCi0tICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikg KyBzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7 Ci0tICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKLS0gICAgICBzdHJjYXQg KGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLS0gICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0 ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLS0gICAgICBzdHJjYXQgKGRlYnVn ZmlsZSwgZmlsZW5hbWUpOwotIAotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmls ZSk7Ci0tICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotKyAgICAgIHZlYyA9 IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX2Rpcik7Ci0rICAgICAgbWFrZV9j bGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjICh2ZWMpOwotKwotKyAgICAgIGlmIChkZWJ1Z19hdXRv X2xvYWQpCi0rCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBT ZWFyY2hpbmcgJ3NldCBhdXRvLWxvYWQgIgotKwkJCQkJICAic2NyaXB0cy1kaXJlY3RvcnknIHBh dGggXCIlc1wiLlxuIiksCi0rCQkJICAgIGF1dG9fbG9hZF9kaXIpOwotKwotKyAgICAgIGZvciAo aXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIHZlYywgaXgsIGRpcik7ICsraXgpCi0rCXsK LSsJICBkZWJ1Z2ZpbGUgPSB4c3RyZHVwIChkaXIpOwotKwkgIHN1YnN0aXR1dGVfcGF0aF9jb21w b25lbnQgKCZkZWJ1Z2ZpbGUsICIkZGRpciIsIGdkYl9kYXRhZGlyKTsKLSsJICBkZWJ1Z2ZpbGUg PSB4cmVhbGxvYyAoZGVidWdmaWxlLCAoc3RybGVuIChkZWJ1Z2ZpbGUpCi0rCQkJCQkgICAgKyBz dHJsZW4gKGZpbGVuYW1lKSArIDEpKTsKLSsKLSsJICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwg c28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLSsJICBzdHJjYXQgKGRlYnVnZmlsZSwg ZmlsZW5hbWUpOwotKwotKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0rCSAg aW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotKwkgIGlmIChkZWJ1Z19hdXRvX2xvYWQp Ci0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogQXR0 ZW1wdGVkIGZpbGUgIgotKwkJCQkJICAgICAgIlwiJXNcIiAlcy5cbiIpLAotKwkJCQlkZWJ1Z2Zp bGUsCi0rCQkJCWlucHV0ID8gXygiZXhpc3RzIikgOiBfKCJkb2VzIG5vdCBleGlzdCIpKTsKLSsJ ICBpZiAoaW5wdXQgIT0gTlVMTCkKLSsJICAgIGJyZWFrOwotKwl9Ci0gICAgIH0KLSAKLSAgIGlm IChpbnB1dCkKLUBAIC0xMDU2LDYgKzExMjMsMTkgQEAgVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0 eSBpbXBsaWNhdGlvbnMgZgotIFVzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Iiks Ci0gCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSAKLSsgIGF1dG9fbG9hZF9k aXIgPSB4c3RyZHVwIChBVVRPX0xPQURfRElSKTsKLSsgIGFkZF9zZXRzaG93X29wdGlvbmFsX2Zp bGVuYW1lX2NtZCAoInNjcmlwdHMtZGlyZWN0b3J5IiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkJICAg ICAmYXV0b19sb2FkX2RpciwgXygiXAotK1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAotK1Nob3cgdGhlIGxp c3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMu IiksIF8oIlwKLStBdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cyBhbmQgR0RCIHNj cmlwdHMgYXJlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZVxuXAotK2RpcmVjdG9yaWVzIGxpc3RlZCBi eSB0aGlzIG9wdGlvbi4gIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHRoZSBraW5kcyBvZlxu XAotK3NjcmlwdHMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLiAgRGlyZWN0b3JpZXMg bGlzdGVkIGhlcmUgbmVlZCB0byBiZVxuXAotK3ByZXNlbnQgYWxzbyBpbiB0aGUgJ3NldCBhdXRv LWxvYWQgc2FmZS1wYXRoJyBvcHRpb24uIiksCi0rCQkJCSAgICAgc2V0X2F1dG9fbG9hZF9kaXIs IHNob3dfYXV0b19sb2FkX2RpciwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0 ICgpLAotKwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSAgIGF1 dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChBVVRPX0xPQURfU0FGRV9QQVRIKTsKLSAgIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSAgIGFkZF9zZXRzaG93X29wdGlvbmFs X2ZpbGVuYW1lX2NtZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0wNS0wOSAyMjoxNDowNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4JMjAxMi0wNS0wOSAy MjoxNzoxNi40MTc5MTQxODIgKzAyMDAKLUBAIC03LDYgKzcsOSBAQAotIC8qIERlZmluZSBpZiBi dWlsZGluZyB1bml2ZXJzYWwgKGludGVybmFsIGhlbHBlciBtYWNybykgKi8KLSAjdW5kZWYgQUNf QVBQTEVfVU5JVkVSU0FMX0JVSUxECi0gCi0rLyogRGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBs b2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuICovCi0rI3VuZGVmIEFVVE9fTE9BRF9ESVIKLSsKLSAv KiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICovCi0gI3VuZGVm IEFVVE9fTE9BRF9TQUZFX1BBVEgKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9j b25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Nv bmZpZ3VyZQkyMDEyLTA1LTA5IDIyOjE2OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTA5IDIyOjE5OjE5LjE5MjcxNjc5OCAr MDIwMAotQEAgLTk1NSw2ICs5NTUsNyBAQCB3aXRoX3NlcGFyYXRlX2RlYnVnX2RpcgotIHdpdGhf Z2RiX2RhdGFkaXIKLSB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCi0gd2l0aF9ycG0KLSt3aXRoX2F1 dG9fbG9hZF9kaXIKLSB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKLSBlbmFibGVfdGFyZ2V0cwot IGVuYWJsZV82NF9iaXRfYmZkCi1AQCAtMTY2Nyw5ICsxNjY4LDEzIEBAIE9wdGlvbmFsIFBhY2th Z2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0 aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcwotICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVl cnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCi0rICAtLXdpdGgtYXV0by1s b2FkLWRpcj1QQVRICi0rICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgIHVzZSAnJGRkaXInIGZvciAtZGF0YS1kaXJlY3RvcnkgWyRkZGlyL2F1dG8tbG9hZF0K LSAgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBh dGggWyRkZGlyL2F1dG8tbG9hZF0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICRkZGlyIGZv ciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgWy0t d2l0aC1hdXRvLWxvYWQtZGlyXQotICAgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxl cyBsb2NhdGlvbnMKLSAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJh bWUgdW53aW5kaW5nIHN1cHBvcnQKLUBAIC04NDgzLDYgKzg0ODgsMzEgQEAgJGFzX2VjaG8gIiRh c19tZTogV0FSTklORzogJFJQTV9QS0dfRVJSTwotICAgZmkKLSBmaQotIAotK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1s b2FkIGRpcmVjdG9yeSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0 by1sb2FkIGRpcmVjdG9yeS4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgt YXV0by1sb2FkLWRpciB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9kaXIr c2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfZGlyOwotK2Vs c2UKLSsgIHdpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJwotK2ZpCi0rCi0rZXNj YXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1skXWRkaXJcPi9cXFxc XFxcXFxcXFwmL2cnYAotKwotKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIk YWNfZGVmYXVsdF9wcmVmaXgiCi0rICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4 ZWNfcHJlZml4PScke3ByZWZpeH0nCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGVzY2Fw ZV9kaXJgCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCi0rCi0r Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgQVVUT19MT0FEX0RJUiAiJGFjX2Rl ZmluZV9kaXIiCi0rX0FDRU9GCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2F1dG9fbG9hZF9kaXIiID4mNQotKyRhc19lY2hvICIk d2l0aF9hdXRvX2xvYWRfZGlyIiA+JjY7IH0KLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGgi ID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBh dGguLi4gIiA+JjY7IH0KLSAKLUBAIC04NDkyLDcgKzg1MjIsNyBAQCBpZiB0ZXN0ICIke3dpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9Ci0gICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9 Ii8iCi0gICAgICBmaQotIGVsc2UKLS0gIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIv YXV0by1sb2FkJwotKyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRf ZGlyIgotIGZpCi0gCi0gZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo IHwgc2VkICdzL1skXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMDkgMjI6MTY6MTAuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUt MDkgMjI6MTk6MDguMzkwNzM0MTY3ICswMjAwCi1AQCAtMzM5LDE2ICszMzksMjYgQEAgZXh0ZXJu IHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYQotICAgZmkKLSBmaQotICAKLStBQ19N U0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnldKQotK0FDX0FSR19X SVRIKGF1dG8tbG9hZC1kaXIsCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtZGly PVBBVEhdLAotKyAgW2RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBz Y3JpcHRzLCB1c2UgJyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IEA8OkAkZGRpci9hdXRvLWxv YWRAOj5AXSksLAotKyAgW3dpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJ10pCi0r ZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dZGRpclw+ L1xcXFxcXFxcXFxcXCYvZydgCi0rQUNfREVGSU5FX0RJUihBVVRPX0xPQURfRElSLCBlc2NhcGVf ZGlyLAotKwkgICAgICBbRGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVk IHNjcmlwdHMuXSkKLStBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfZGlyXSkKLSsKLSBB Q19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQotIEFDX0FS R19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCi0gQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoPVBBVEhdLAotLSAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRv LWxvYWRlZCBmaWxlcywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpA JGRkaXIvYXV0by1sb2FkQDo+QF0pCi0rICBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8t bG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIEA8OkAt LXdpdGgtYXV0by1sb2FkLWRpckA6PkBdKQotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0 by1sb2FkLXNhZmUtcGF0aF0sCi0gICAgICAgICAgICAgICAgW2RvIG5vdCByZXN0cmljdCBhdXRv LWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNdKSwKLSAgICAgW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIvIgotICAgICAgZmldLAotLVt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8t bG9hZCddKQotK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRoX2F1dG9fbG9hZF9kaXIi XSkKLSBlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3Mv W1skXV1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKLSBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9T QUZFX1BBVEgsIGVzY2FwZV9kaXIsCi0gCSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQg YXV0by1sb2FkZWQgZmlsZXMuXSkKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2Mv Z2RiLnRleGluZm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLTA1LTA5IDIyOjE2OjQzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA1LTA5IDIyOjE4 OjM4LjI5NDc4MjU0OSArMDIwMAotQEAgLTIwODA0LDYgKzIwODA0LDggQEAgbG9jYWwtZ2RiaW5p dDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdAotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2Fk aW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0 b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotICAgICAgICAg ICAgIGlzICRkZGlyL2F1dG8tbG9hZC4KLStzY3JpcHRzLWRpcmVjdG9yeTogIExpc3Qgb2YgZGly ZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMKLSsgICAgICAg ICAgICAgICAgICAgIGlzICRkZGlyL2F1dG8tbG9hZC4KLSBAZW5kIHNtYWxsZXhhbXBsZQotIAot IEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9Ci1AQCAtMjA4NjQsNiArMjA4NjYsMTAgQEAgVGhlc2Ug YXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCi0gQHRhYiBTaG93IHNldHRpbmcgb2Yg QHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotIEBpdGVtIEB4cmVme2luZm8gYXV0by1sb2Fk IHB5dGhvbi1zY3JpcHRzfS4KLSBAdGFiIFNob3cgc3RhdGUgb2YgQHZhbHVle0dEQk59IFB5dGhv biBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9 LgotK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9j YXRpb24uCi0rQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9Lgot K0B0YWIgU2hvdyBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQgc2NyaXB0cyBsb2NhdGlvbi4KLSBA aXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotIEB0YWIgQ29udHJvbCBm b3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSBAaXRlbSBAeHJlZntzaG93 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KLUBAIC0yMTA0MCwxNSArMjEwNDYsMTMgQEAgbG9h ZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhvc3QgcGxhdGZvcm0gZGly ZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotLVRoaXMgdmFyaWFibGUg ZGVmYXVsdHMgdG8gQGZpbGV7JGRkaXIvYXV0by1sb2FkfS4gIFRoZSBkZWZhdWx0IEBjb2Rle3Nl dAotK1RoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gd2hhdCBAY29kZXstLXdpdGgtYXV0by1sb2Fk LWRpcn0gaGFzIGJlZW4gY29uZmlndXJlZAotK3RvIChAcHhyZWZ7d2l0aC1hdXRvLWxvYWQtZGly fSkuICBAZmlsZXskZGRpcn0gc3Vic3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBzYW1lCi0rYXMgZm9y IEB4cmVme3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9LgotK1RoZSBkZWZhdWx0IEBj b2Rle3NldAotIGF1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRl biBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbgotIG9wdGlvbiBAb3B0aW9uey0td2l0aC1h dXRvLWxvYWQtc2FmZS1wYXRofS4KLSAKLS1BbnkgdXNlZCBzdHJpbmcgQGZpbGV7JGRkaXJ9IHdp bGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdoaWNoIGlzCi0tZGV0ZXJt aW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEgRmlsZXN9KS4gIEBmaWxl eyRkZGlyfSBtdXN0IGJlCi0tYmUgcGxhY2VkIGFzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCAtLS0g ZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBAZmlsZXsvfSBvcgotLUBmaWxle1x9IGRpcmVj dG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxhdGZvcm0uCi0tCi0gU2V0 dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJv dGVjdGlvbiwKLSBjb3JyZXNwb25kaW5nIEB2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uIG9wdGlv biBpcwotIEBvcHRpb257LS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGh9LgotQEAgLTI1MTM1 LDcgKzI1MTM5LDcgQEAgcmVnaXN0ZXJpbmcgb2JqZmlsZS1zcGVjaWZpYyBwcmV0dHktcHJpbgot IEBjaW5kZXggQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9Ci0gCi0gV2hlbiBhIG5ldyBvYmpl Y3QgZmlsZSBpcyByZWFkLCBAdmFsdWV7R0RCTn0gbG9va3MgZm9yCi0tYSBmaWxlIG5hbWVkIEBm aWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSwKLSthIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntvYmpm aWxlfS1nZGIucHl9ICh3ZSBjYWxsIGl0IEB2YXJ7c2NyaXB0LW5hbWV9IGJlbG93KSwKLSB3aGVy ZSBAdmFye29iamZpbGV9IGlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgZm9ybWVkIGJ5 IGVuc3VyaW5nCi0gdGhhdCB0aGUgZmlsZSBuYW1lIGlzIGFic29sdXRlLCBmb2xsb3dpbmcgYWxs IHN5bWxpbmtzLCBhbmQgcmVzb2x2aW5nCi0gQGNvZGV7Ln0gYW5kIEBjb2Rley4ufSBjb21wb25l bnRzLiAgSWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgaXMKLUBAIC0yNTE0MywxNCArMjUxNDcsNDIg QEAgcmVhZGFibGUsIEB2YWx1ZXtHREJOfSB3aWxsIGV2YWx1YXRlIGl0Ci0gCi0gSWYgdGhpcyBm aWxlIGRvZXMgbm90IGV4aXN0LCBhbmQgaWYgdGhlIHBhcmFtZXRlcgotIEBjb2Rle2RlYnVnLWZp bGUtZGlyZWN0b3J5fSBpcyBzZXQgKEBweHJlZntTZXBhcmF0ZSBEZWJ1ZyBGaWxlc30pLAotLXRo ZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IgQHZhcntyZWFsLW5hbWV9IGluIGFsbCBvZiB0 aGUKLSt0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yIEB2YXJ7c2NyaXB0LW5hbWV9IGlu IGFsbCBvZiB0aGUKLSBkaXJlY3RvcmllcyBtZW50aW9uZWQgaW4gdGhlIHZhbHVlIG9mIEBjb2Rl e2RlYnVnLWZpbGUtZGlyZWN0b3J5fS4KLSAKLSBGaW5hbGx5LCBpZiB0aGlzIGZpbGUgZG9lcyBu b3QgZXhpc3QsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IKLS1hIGZpbGUgbmFtZWQg QGZpbGV7QHZhcntkYXRhLWRpcmVjdG9yeX0vcHl0aG9uL2F1dG8tbG9hZC9AdmFye3JlYWwtbmFt ZX19LCB3aGVyZQotLUB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IGlzIEB2YWx1ZXtHREJOfSdzIGRhdGEg ZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhCi0tQGNvZGV7c2hvdyBkYXRhLWRpcmVjdG9yeX0sIEBw eHJlZntEYXRhIEZpbGVzfSksIGFuZCBAdmFye3JlYWwtbmFtZX0KLS1pcyB0aGUgb2JqZWN0IGZp bGUncyByZWFsIG5hbWUsIGFzIGRlc2NyaWJlZCBhYm92ZS4KLStAdmFye3NjcmlwdC1uYW1lfSBm aWxlIGluIGFsbCBvZiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5OgotKwotK0B0YWJsZSBA Y29kZQotK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0KLStAa2luZGV4 IHNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkKLStAaXRlbSBzZXQgYXV0by1sb2FkIHNj cmlwdHMtZGlyZWN0b3J5IEBye1t9QHZhcntkaXJlY3Rvcmllc31AcntdfQotK0NvbnRyb2wgQHZh bHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uICBNdWx0aXBsZSBkaXJlY3Rv cnkgZW50cmllcwotK21heSBiZSBkZWxpbWl0ZWQgYnkgdGhlIGhvc3QgcGxhdGZvcm0gcGF0aCBz ZXBhcmF0b3IgaW4gdXNlCi0rKEBzYW1wezp9IG9uIFVuaXgsIEBzYW1wezt9IG9uIE1TLVdpbmRv d3MgYW5kIE1TLURPUykuCi0rCi0rRWFjaCBlbnRyeSBoZXJlIG5lZWRzIHRvIGJlIGNvdmVyZWQg YWxzbyBieSB0aGUgc2VjdXJpdHkgc2V0dGluZwotK0Bjb2Rle3NldCBhdXRvLWxvYWQgc2FmZS1w YXRofSAoQHB4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSkuCi0rCi0rQGFuY2hvcnt3aXRo LWF1dG8tbG9hZC1kaXJ9Ci0rVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXskZGRpci9h dXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rYXV0by1sb2FkIHNhZmUtcGF0aH0g dmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9u Ci0rb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1kaXJ9LgotKwotK0FueSB1c2VkIHN0 cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9y eX0gd2hpY2ggaXMKLStkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7 RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLStiZSBwbGFjZWQgYXMgYSBkaXJl Y3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5IEBmaWxley99 IG9yCi0rQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9z dCBwbGF0Zm9ybS4KLSsKLStUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIHBhdGggc2VwYXJh dG9yIChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKLStzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1X aW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKLSt0 byB0aGUgQGVudntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsKLStAYW5jaG9ye3Nob3cg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgc2Ny aXB0cy1kaXJlY3RvcnkKLStAaXRlbSBzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeQot K1Nob3cgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uCi0rQGVuZCB0 YWJsZQotIAotIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCB0cmFjayB3aGljaCBmaWxlcyBpdCBoYXMg YWxyZWFkeSBhdXRvLWxvYWRlZCB0aGlzIHdheS4KLSBAdmFsdWV7R0RCTn0gd2lsbCBsb2FkIHRo ZSBhc3NvY2lhdGVkIHNjcmlwdCBldmVyeSB0aW1lIHRoZSBjb3JyZXNwb25kaW5nCgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTIyb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMm9mMjgucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY5YjcyNAotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yMm9mMjgucGF0Y2gKQEAgLTAsMCArMSwzODggQEAKK2h0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwODAuaHRtbAorCisj IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODowNjoyNgkxLjE0MjM2CisjIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODoxMzoyMgkxLjE0MjM3CisjIyAtMSw1ICsxLDI5 IEBACisgMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorIAorKwlQcm92aWRlICRkZGlyIHN1YnN0aXR1dGlvbiBmb3IgLS13aXRoLWF1dG8tbG9h ZC1zYWZlLXBhdGguCisrCSogTkVXUyAoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgsIC0td2l0 aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoKTogTmV3CisrCWVudHJpZXMuCisrCSogYXV0by1sb2Fk LmM6IEluY2x1ZGUgb2JzZXJ2ZXIuaC4KKysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSk6IENhbGwgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBmb3IKKysJZWFjaCBjb21wb25lbnQu ICBOZXcgdmFyaWFibGUgZGRpcl9zdWJzdC4KKysJKGF1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFu Z2VkKTogTmV3IGZ1bmN0aW9uLgorKwkoc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBSZW5hbWUg REVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIHRvCisrCUFVVE9fTE9BRF9TQUZFX1BBVEguICBO ZXcgY29tbWVudC4KKysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IFJlbmFtZSBERUZBVUxUX0FV VE9fTE9BRF9TQUZFX1BBVEggdG8KKysJQVVUT19MT0FEX1NBRkVfUEFUSC4gIEluc3RhbGwgYXV0 b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQuCisrCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgor KwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25maWd1cmUuYWMgKC0tYXV0by1sb2Fk LXNhZmUtcGF0aCk6IFJlbmFtZQorKwlERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggdG8gQVVU T19MT0FEX1NBRkVfUEFUSC4gIERlZmF1bHQgdG8KKysJR0RCX0RBVEFESVIvYXV0by1sb2FkLgor KwkqIGRlZnMuaCAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCk6IE5ldyBkZWNsYXJhdGlvbi4K KysJKiB0b3AuYzogSW5jbHVkZSBvYnNlcnZlci5oLgorKwkoc2V0X2dkYl9kYXRhZGlyKTogTmV3 IGZ1bmN0aW9uLgorKwkoaW5pdF9tYWluKTogSW5zdGFsbCBpdCBmb3IgInNldCBkYXRhLWRpcmVj dG9yeSIuCisrCSogdXRpbHMuYyAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCk6IE5ldyBmdW5j dGlvbi4KKysKKysyMDEyLTA1LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisrCisgCU1ha2UgYXV0by1sb2FkIGhhbmRsZSBtdWx0aXBsZSBjb21wb25lbnRz IG9mIERFQlVHX0ZJTEVfRElSRUNUT1JZLgorIAkqIGF1dG8tbG9hZC5jIChhdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQpOiBSZW1vdmUgY2hlY2sgZm9yIE5VTEwKKyAJREVCVUdfRklMRV9ESVJFQ1RP UlkuICBIYW5kbGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZgorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL05FV1MJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MTg6MDEuOTE1MDQxMjU4ICswMjAw CitAQCAtMzA3LDYgKzMwNywxNyBAQCBzaG93IHRyYWNlLXN0b3Atbm90ZXMKKyAgIGluc3RhbmNl IGFzIGFuIGV4cGxhbmF0aW9uLCBpZiB5b3UgYXJlIHN0b3BwaW5nIGEgdHJhY2UgcnVuIHRoYXQg d2FzCisgICBzdGFydGVkIGJ5IHNvbWVvbmUgZWxzZS4KKyAKKysqIE5ldyBjb25maWd1cmUgb3B0 aW9ucworKworKy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICBDb25maWd1cmUgZGVmYXVs dCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0dGluZworKyAgYWJv dmUuICBJdCBkZWZhdWx0cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50aW5n IEdEQidzCisrICBkYXRhIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSBzaG93IGRhdGEtZGlyZWN0 b3J5KS4KKysKKystLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAorKyAgU2V0ICdzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVseSBkaXNhYmxpbmcgdGhpcworKyAg c2VjdXJpdHkgZmVhdHVyZS4KKysKKyAqIE5ldyByZW1vdGUgcGFja2V0cworIAorIFFURW5hYmxl CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQg MTQ6MTc6NDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0 by1sb2FkLmMJMjAxMi0wNS0xNCAxNDoxODowMS45MTUwNDEyNTggKzAyMDAKK0BAIC0zNSw2ICsz NSw3IEBACisgI2luY2x1ZGUgImdkYl92ZWNzLmgiCisgI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRl LmgiCisgI2luY2x1ZGUgImNvbXBsZXRlci5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorIAor IC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9u LVB5dGhvbiBjb21tYW5kIGZpbGVzLgorICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBs aWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KK0BAIC0xNDEsMTAgKzE0Miwx NiBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICBmb3IgKGl4ID0g MDsgaXggPCBsZW47IGl4KyspCisgICAgIHsKKyAgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXgg KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworLSAgICAgIGNoYXIgKmV4 cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOworLSAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdk Yl9yZWFscGF0aCAoZXhwYW5kZWQpOworKyAgICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBhbmRl ZCwgKnJlYWxfcGF0aDsKKyAKKy0gICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMg YXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KKysgICAgICBkZGlyX3N1YnN0ID0geHN0cmR1 cCAoZGlyKTsKKysgICAgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJzdCwg IiRkZGlyIiwgZ2RiX2RhdGFkaXIpOworKyAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChk ZGlyX3N1YnN0KTsKKysgICAgICB4ZnJlZSAoZGRpcl9zdWJzdCk7CisrICAgICAgcmVhbF9wYXRo ID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisrCisrICAgICAgLyogRW5zdXJlIHRoZSBjdXJy ZW50IGVudHJ5IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVmb3JlCisrCSAkZGRpci1l eHBhbmRlZCBhbmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KKyAgICAgICBWRUNfcmVwbGFjZSAoY2hh cl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQpOworIAorICAgICAg IGlmIChkZWJ1Z19hdXRvX2xvYWQpCitAQCAtMTc2LDE1ICsxODMsMjQgQEAgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorICAgICB9CisgfQorIAorKy8qIFZhcmlhYmxlIGdk Yl9kYXRhZGlyIGhhcyBiZWVuIHNldC4gIFVwZGF0ZSBjb250ZW50IGRlcGVuZGluZyBvbiAkZGRp ci4gICovCisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCAo dm9pZCkKKyt7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKwor IC8qICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRp b24gdmFyaWFibGUuICAqLworIAorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZlX3Bh dGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMp CisgeworKyAgLyogU2V0dGluZyB0aGUgdmFyaWFibGUgdG8gIiIgcmVzZXRzIGl0IHRvIHRoZSBj b21waWxlIHRpbWUgZGVmYXVsdHMuICAqLworICAgaWYgKGF1dG9fbG9hZF9zYWZlX3BhdGhbMF0g PT0gJ1wwJykKKyAgICAgeworICAgICAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKy0g ICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FG RV9QQVRIKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FE X1NBRkVfUEFUSCk7CisgICAgIH0KKyAKKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSAoKTsKK0BAIC0xMDQwLDcgKzEwNTYsNyBAQCBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGlt cGxpY2F0aW9ucyBmCisgVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKKyAJ ICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworIAorLSAgYXV0b19sb2FkX3NhZmVf cGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7CisrICBhdXRvX2xv YWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxl bmFtZV9jbWQgKCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorIAkJCQkgICAgICZhdXRvX2xv YWRfc2FmZV9wYXRoLCBfKCJcCitAQCAtMTA1OCw2ICsxMDc0LDcgQEAgVGhpcyBvcHRpb25zIGhh cyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgorIAkJCQkgICAgIHNob3dfYXV0b19sb2FkX3NhZmVf cGF0aCwKKyAJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAorIAkJCQkgICAg IGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysgIG9ic2VydmVyX2F0dGFjaF9nZGJf ZGF0YWRpcl9jaGFuZ2VkIChhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCk7CisgCisgICBj bWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAor IAkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTc6NDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6MDEuOTE1MDQx MjU4ICswMjAwCitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVy c2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNB TF9CVUlMRAorIAorKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxl cy4gKi8KKysjdW5kZWYgQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERpcmVjdG9yeSBvZiBw cm9ncmFtcy4gKi8KKyAjdW5kZWYgQklORElSCisgCitAQCAtNDMsOSArNDYsNiBAQAorICAgIG1v dmVkLiAqLworICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQorIAorLS8qIERpcmVjdG9yaWVz IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KKy0jdW5kZWYgREVGQVVMVF9BVVRP X0xPQURfU0FGRV9QQVRICistCisgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgYXJjaGl0ZWN0 dXJlLiAqLworICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICisgCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoxODow MS45MTgwNDEyNTIgKzAyMDAKK0BAIC0xNjY4LDcgKzE2NjgsOCBAQCBPcHRpb25hbCBQYWNrYWdl czoKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlz c2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYu IGF1dG89bGlicnBtLnNvKQorICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg JGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRvLWxvYWRdCisgICAt LXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucworICAgLS13aXRoLWxp YnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAorQEAg LTg0ODgsMjAgKzg0ODksMjEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0 by1sbworICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2 ZW4uCisgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRo ZW4gOgorICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGg9Ii8iCistIGZpCisrICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCisr ICAgICBmaQorIGVsc2UKKy0gIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKKysg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIvYXV0by1sb2FkJworIGZpCisgCisrZXNj YXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRkaXJc Pi9cXFxcXFxcXFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJl Zml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05F ICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8g JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aGAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAk ZXNjYXBlX2RpcmAKKyAgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5lX2RpcmAK KyAKKyBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBERUZBVUxUX0FVVE9fTE9B RF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgorKyNkZWZpbmUgQVVUT19MT0FEX1NBRkVfUEFU SCAiJGFjX2RlZmluZV9kaXIiCisgX0FDRU9GCisgCisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAx NDoxODowMS45MTkwNDEyNTAgKzAyMDAKK0BAIC0zNDEsMTMgKzM0MSwxNiBAQCBmaQorICAKKyBB Q19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQorIEFDX0FS R19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCistQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzXSkKKy1BU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBh dGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorLVtp ZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCistIGZpXSwKKy1bd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoPSIkcHJlZml4Il0pCistQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BB VEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKKytBU19IRUxQX1NUUklORyhbLS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sCisrICBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1 dG8tbG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIEA8 OkAkZGRpci9hdXRvLWxvYWRAOj5AXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGhdLAorKyAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1s b2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCisrICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0i LyIKKysgICAgIGZpXSwKKytbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxv YWQnXSkKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQg J3MvW1skXV1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKytBQ19ERUZJTkVfRElSKEFVVE9fTE9B RF9TQUZFX1BBVEgsIGVzY2FwZV9kaXIsCisgCSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhv bGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoXSkKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RlZnMuaAkyMDEyLTA1 LTE0IDE0OjE3OjQ4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2RlZnMuaAkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxOTA0MTI1MCArMDIwMAorQEAgLTQ0Miw2ICs0 NDIsOSBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfYnBzdGF0X2NsZWFyCisgCisgZXh0 ZXJuIGludCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjZXIpOworIAor K2V4dGVybiB2b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmdwLCBj b25zdCBjaGFyICpmcm9tLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqdG8pOworKworICNpZmRl ZiBIQVZFX1dBSVRQSUQKKyBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0IChw aWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgI2VuZGlmCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvdG9wLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3RvcC5jCTIwMTItMDUtMTQgMTQ6MTc6NDguMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdG9wLmMJMjAxMi0wNS0xNCAxNDoxODowMS45 MTkwNDEyNTAgKzAyMDAKK0BAIC00Nyw2ICs0Nyw3IEBACisgI2luY2x1ZGUgImdkYnRocmVhZC5o IgorICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCisgI2luY2x1ZGUgImludGVycHMuaCIKKysj aW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAKKyAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzLiAgKi8K KyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKK0BAIC0xNTYxLDYgKzE1NjIsMTUgQEAg c2hvd19leGVjX2RvbmVfZGlzcGxheV9wIChzdHJ1Y3QgdWlfZmlsZQorIAkJCSAgICAiYXN5bmNo cm9ub3VzIGV4ZWN1dGlvbiBjb21tYW5kcyBpcyAlcy5cbiIpLAorIAkJICAgIHZhbHVlKTsKKyB9 CisrCisrLyogInNldCIgY29tbWFuZCBmb3IgdGhlIGdkYl9kYXRhZGlyIGNvbmZpZ3VyYXRpb24g dmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2V0X2dkYl9kYXRhZGlyIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQorK3sKKysgIG9i c2VydmVyX25vdGlmeV9nZGJfZGF0YWRpcl9jaGFuZ2VkICgpOworK30KKysKKyBzdGF0aWMgdm9p ZAorIGluaXRfbWFpbiAodm9pZCkKKyB7CitAQCAtMTY2OCw3ICsxNjc4LDcgQEAgVXNlIFwib25c IiB0byBlbmFibGUgdGhlIG5vdGlmaWNhdGlvbiwgYQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF8oIlNob3cgR0RCJ3MgZGF0YSBkaXJlY3RvcnkuIiksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXygiXAorIFdoZW4gc2V0LCBHREIgdXNlcyB0aGUgc3BlY2lmaWVkIHBhdGggdG8g c2VhcmNoIGZvciBkYXRhIGZpbGVzLiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2dkYl9kYXRhZGlyLCBO VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRsaXN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZzaG93bGlzdCk7CisgfQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3V0aWxzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3V0aWxzLmMJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCTIwMTItMDUtMTQgMTQ6MTg6MDEuOTIwMDQxMjQ4 ICswMjAwCitAQCAtMzkyNSw2ICszOTI1LDQ4IEBAIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAo Y29uc3QgY2hhciAqZGkKKyAgIHJldHVybiByZXR2YWw7CisgfQorIAorKy8qIFN1YnN0aXR1dGUg YWxsIG9jY3VyZW5jZXMgb2Ygc3RyaW5nIEZST00gYnkgc3RyaW5nIFRPIGluICpTVFJJTkdQLiAg KlNUUklOR1AKKysgICBtdXN0IGNvbWUgZnJvbSB4cmVhbGxvYy1jb21wYXRpYmxlIGFsbG9jYXRv ciBhbmQgaXQgbWF5IGJlIHVwZGF0ZWQuICBGUk9NCisrICAgbmVlZHMgdG8gYmUgZGVsaW1pdGVk IGJ5IElTX0RJUl9TRVBBUkFUT1IgKG9yIGJlIGxvY2F0ZWQgYXQgdGhlIHN0YXJ0IG9yCisrICAg ZW5kIG9mICpTVFJJTkdQLiAgKi8KKysKKyt2b2lkCisrc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVu dCAoY2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIgKmZyb20sIGNvbnN0IGNoYXIgKnRvKQorK3sK KysgIGNoYXIgKnN0cmluZyA9ICpzdHJpbmdwLCAqczsKKysgIGNvbnN0IHNpemVfdCBmcm9tX2xl biA9IHN0cmxlbiAoZnJvbSk7CisrICBjb25zdCBzaXplX3QgdG9fbGVuID0gc3RybGVuICh0byk7 CisrCisrICBmb3IgKHMgPSBzdHJpbmc7OykKKysgICAgeworKyAgICAgIHMgPSBzdHJzdHIgKHMs IGZyb20pOworKyAgICAgIGlmIChzID09IE5VTEwpCisrCWJyZWFrOworKworKyAgICAgIGlmICgo cyA9PSBzdHJpbmcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1stMV0pKQorKyAgICAgICAgICAmJiAo c1tmcm9tX2xlbl0gPT0gJ1wwJyB8fCBJU19ESVJfU0VQQVJBVE9SIChzW2Zyb21fbGVuXSkpKQor Kwl7CisrCSAgY2hhciAqc3RyaW5nX25ldzsKKysKKysJICBzdHJpbmdfbmV3ID0geHJlYWxsb2Mg KHN0cmluZywgKHN0cmxlbiAoc3RyaW5nKSArIHRvX2xlbiArIDEpKTsKKysKKysJICAvKiBSZWxv Y2F0ZSB0aGUgY3VycmVudCBTIHBvaW50ZXIuICAqLworKwkgIHMgPSBzIC0gc3RyaW5nICsgc3Ry aW5nX25ldzsKKysJICBzdHJpbmcgPSBzdHJpbmdfbmV3OworKworKwkgIC8qIFJlcGxhY2UgZnJv bSBieSB0by4gICovCisrCSAgbWVtbW92ZSAoJnNbdG9fbGVuXSwgJnNbZnJvbV9sZW5dLCBzdHJs ZW4gKCZzW2Zyb21fbGVuXSkgKyAxKTsKKysJICBtZW1jcHkgKHMsIHRvLCB0b19sZW4pOworKwor KwkgIHMgKz0gdG9fbGVuOworKwl9CisrICAgICAgZWxzZQorKwlzKys7CisrICAgIH0KKysKKysg ICpzdHJpbmdwID0gc3RyaW5nOworK30KKysKKyAjaWZkZWYgSEFWRV9XQUlUUElECisgCisgI2lm ZGVmIFNJR0FMUk0KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGlu Zm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA1LTE0IDE0OjE4OjAxLjkyNTA0 MTIzOCArMDIwMAorQEAgLTIwODAzLDcgKzIwODAzLDcgQEAgbG9jYWwtZ2RiaW5pdDogIEF1dG8t bG9hZGluZyBvZiAuZ2RiaW5pdAorICAgICAgICAgICAgICAgICBpcyBvbi4KKyBweXRob24tc2Ny aXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KKyBzYWZlLXBhdGg6 ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQg ZmlsZXMKKy0gICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgorKyAgICAgICAgICAgIGlzICRkZGly L2F1dG8tbG9hZC4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxv YWR9CitAQCAtMjEwMDYsOSArMjEwMDYsOSBAQCBnZXQgbG9hZGVkOgorICQgLi9nZGIgLXEgLi9n ZGIKKyBSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgorIHdh cm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFz IGJlZW4KKy0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBz ZXQgdG8gIi91c3IvbG9jYWwiLgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9h ZCBzYWZlLXBhdGgnIHNldCB0byAiJGRkaXIvYXV0by1sb2FkIi4KKyB3YXJuaW5nOiBGaWxlICIv aG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKy0gICAgICAg ICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9j YWwiLgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNl dCB0byAiJGRkaXIvYXV0by1sb2FkIi4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIFRoZSBsaXN0 IG9mIHRydXN0ZWQgZGlyZWN0b3JpZXMgaXMgY29udHJvbGxlZCBieSB0aGUgZm9sbG93aW5nIGNv bW1hbmRzOgorQEAgLTIxMDQwLDcgKzIxMDQwLDE4IEBAIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBv ZiBzY3JpcHRzLiAgTXVsdGkKKyBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGluIHVzZS4K KyBAZW5kIHRhYmxlCisgCistU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2Fi bGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KKytUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRv IEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKythdXRvLWxv YWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59 IGNvbmZpZ3VyYXRpb24KKytvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aH0uCisrCisrQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBi eSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworK2RldGVybWluZWQgYXQgQHZhbHVle0dE Qk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQor K2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBk ZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKKytAZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywg ZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgorKworK1NldHRpbmcgdGhpcyB2YXJpYWJs ZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24sCisrY29ycmVz cG9uZGluZyBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbiBvcHRpb24gaXMKKytAb3B0aW9uey0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KKyBUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2Vk IHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQorIHN5 c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9y aWVzIGluIGluaXQgZmlsZXMgaW4KKyB0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9t ZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL29ic2VydmVyLnRleGkKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCTIwMTItMDUtMTQg MTQ6MTc6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9j L29ic2VydmVyLnRleGkJMjAxMi0wNS0xNCAxNDoxODowMS45MjYwNDEyMzYgKzAyMDAKK0BAIC0y MzEsNiArMjMxLDEwIEBAIHRoZSBjdXJyZW50IHRvcC1sZXZlbCBwcm9tcHQuCisgQGMgY29sbGVj dG9yIHBhc3MuICBDdXJyZW50bHkgb25seSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlz IHN1cHBvcnRlZC4KKyBAYyBAZW5kIGRlZnR5cGVmdW4KKyAKKytAZGVmdHlwZWZ1biB2b2lkIGdk Yl9kYXRhZGlyX2NoYW5nZWQgKHZvaWQpCisrVmFyaWFibGUgZ2RiX2RhdGFkaXIgaGFzIGJlZW4g c2V0LiAgVGhlIHZhbHVlIG1heSBub3QgbmVjZXNzYXJpbHkgY2hhbmdlLgorK0BlbmQgZGVmdHlw ZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZvaWQgdGVzdF9ub3RpZmljYXRpb24gKGludCBAdmFye3Nv bWVhcmd9KQorIFRoaXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERv IG5vdCB1c2UuICAKKyBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0yM29mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjNvZjI4LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiODExZjYKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItYXV0b2xvYWQtMjNvZjI4LnBhdGNoCkBAIC0wLDAgKzEsNDI0IEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDgxLmh0bWwKKwor IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMTEgMTg6MTM6MjIJMS4xNDIzNworIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMTEgMTg6MjA6MjUJMS4xNDIzOAorIyMgLTEsNSArMSwy MyBAQAorIDIwMTItMDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKyAKKysJSW1wbGVtZW50IG11bHRpLWNvbXBvbmVudCAtLXdpdGgtYXV0by1sb2FkLWRp ci4KKysJKiBORVdTIChzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5LCAtLXdpdGgtYXV0 by1sb2FkLWRpcik6IE5ldworKwllbnRyaWVzLgorKwkoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBh dGgpOiBVcGRhdGUgdGhlIGRlZmF1bHQgdmFsdWUgZGVzY3JpcHRpb24uCisrCSogYXV0by1sb2Fk LmMgKGF1dG9fbG9hZF9kaXIsIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9fbG9hZF9kaXIp OgorKwlOZXcuCisrCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBBZGQgREVCVUdfQVVUT19M T0FEIG91dHB1dC4gIFJlbW92ZQorKwlHREJfREFUQURJUiBOVUxMIGNoZWNrLiAgUmVwbGFjZSBH REJfREFUQURJUi9hdXRvLWxvYWQgYnkKKysJQVVUT19MT0FEX0RJUi4gIFN1cHBvcnQgJGRkaXIg YW5kIG11bHRpcGxlIGNvbXBvbmVudHMgaW4gaXQuCisrCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQp OiBJbml0aWFsaXplIGFsc28gYXV0b19sb2FkX2Rpci4gIEluc3RhbGwgbmV3CisrCSJzZXQgYXV0 by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Ii4KKysJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisr CSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLWF1dG8t bG9hZC1kaXIpOiBOZXcgY29uZmlndXJlIG9wdGlvbi4KKysJKC0tYXV0by1sb2FkLXNhZmUtcGF0 aCk6IENoYW5nZSB0aGUgZGVmYXVsdCB0byAtLXdpdGgtYXV0by1sb2FkLWRpci4KKysKKysyMDEy LTA1LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisg CVByb3ZpZGUgJGRkaXIgc3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aC4KKyAJKiBORVdTICgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCwgLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGgpOiBOZXcKKyAJZW50cmllcy4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9ORVdTCTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTE0IDE0OjE4OjI5LjcxMjk4NTg3MSArMDIwMAor QEAgLTY3LDYgKzY3LDEyIEBAIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgorIHNo b3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorICAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5m ZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KKyAKKytzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5IDxkaXIxPls6PGRpcjI+Li4uXQorKyAgU2V0IGEg bGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0 cy4KKysgIEF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFuZCBHREIgc2NyaXB0 cyBhcmUgbG9jYXRlZCBpbiBvbmUKKysgIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhp cyBvcHRpb24uCisrICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3Jk aW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgorKworIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxk aXIxPls6PGRpcjI+Li4uXQorIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorICAgU2V0IGEgbGlz dCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVz LgorQEAgLTMwOSwxMCArMzE1LDE0IEBAIHNob3cgdHJhY2Utc3RvcC1ub3RlcworIAorICogTmV3 IGNvbmZpZ3VyZSBvcHRpb25zCisgCisrLS13aXRoLWF1dG8tbG9hZC1kaXIKKysgIENvbmZpZ3Vy ZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnkn CisrICBzZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9hZCcsICRk ZGlyIHJlcHJlc2VudGluZworKyAgR0RCJ3MgZGF0YSBkaXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEg c2hvdyBkYXRhLWRpcmVjdG9yeSkuCisrCisgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKKyAg IENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyBzZXR0aW5nCistICBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAk ZGRpciByZXByZXNlbnRpbmcgR0RCJ3MKKy0gIGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlh IHNob3cgZGF0YS1kaXJlY3RvcnkpLgorKyAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byB0aGUgLS13 aXRoLWF1dG8tbG9hZC1kaXIgc2V0dGluZy4KKyAKKyAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUt cGF0aAorICAgU2V0ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVs eSBkaXNhYmxpbmcgdGhpcworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9h ZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxv YWQuYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQgMTQ6MTg6MjkuNzEzOTg1ODY5ICsw MjAwCitAQCAtMTA4LDYgKzEwOCwzNSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChz dHJ1Y3QgdWlfCisgCQkgICAgdmFsdWUpOworIH0KKyAKKysvKiBEaXJlY3RvcnkgbGlzdCBmcm9t IHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4gIEl0IGlzIG5vdCBjaGVja2VkCisr ICAgZm9yIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4g IEl0IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KKytz dGF0aWMgY2hhciAqYXV0b19sb2FkX2RpcjsKKysKKysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUg YXV0b19sb2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9p ZAorK3NldF9hdXRvX2xvYWRfZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjKQorK3sKKysgIC8qIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIi IHJlc2V0cyBpdCB0byB0aGUgY29tcGlsZSB0aW1lIGRlZmF1bHRzLiAgKi8KKysgIGlmIChhdXRv X2xvYWRfZGlyWzBdID09ICdcMCcpCisrICAgIHsKKysgICAgICB4ZnJlZSAoYXV0b19sb2FkX2Rp cik7CisrICAgICAgYXV0b19sb2FkX2RpciA9IHhzdHJkdXAgKEFVVE9fTE9BRF9ESVIpOworKyAg ICB9CisrfQorKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25m aWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2Fk X2RpciAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCSAgICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9m aWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQg IgorKwkJCSAgICAiYXV0by1sb2FkZWQgc2NyaXB0cyBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVl KTsKKyt9CisrCisgLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZp bGVzLiAgSXQgaXMgbm90IGNoZWNrZWQgZm9yCisgICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkg YXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKKyAgICBfaW5p dGlhbGl6ZV9hdXRvX2xvYWQuICAqLworQEAgLTYwMiw2ICs2MzEsOSBAQCBhdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICBpbnB1dCA9IGZvcGVuIChmaWxlbmFt ZSwgInIiKTsKKyAgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOworKyAgaWYgKGRlYnVnX2F1dG9fbG9h ZCkKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0 dGVtcHRlZCBmaWxlIFwiJXNcIiAlcy5cbiIpLAorKwkJCWRlYnVnZmlsZSwgaW5wdXQgPyBfKCJl eGlzdHMiKSA6IF8oImRvZXMgbm90IGV4aXN0IikpOworIAorICAgaWYgKCFpbnB1dCkKKyAgICAg eworQEAgLTYxMiw2ICs2NDQsMTIgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qg b2JqZmlsZQorICAgICAgIGRlYnVnZGlyX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAo ZGVidWdfZmlsZV9kaXJlY3RvcnkpOworICAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRy X3ZlYyAoZGVidWdkaXJfdmVjKTsKKyAKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJICAgIF8oImF1dG8tbG9hZDogU2Vh cmNoaW5nICdzZXQgZGVidWctZmlsZS1kaXJlY3RvcnknICIKKysJCQkgICAgICAicGF0aCBcIiVz XCIuXG4iKSwKKysJCQkgICAgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKworICAgICAgIGZvciAo aXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGly KTsgKytpeCkKKyAJeworIAkgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFy YXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KK0BAIC02MjMsMjQgKzY2MSw1MyBAQCBhdXRv X2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgCSAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgZGVidWdmaWxlKTsKKyAJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 CisrCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgXygiYXV0by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCisrCQkJCQkgICAgICAiXCIl c1wiICVzLlxuIiksCisrCQkJCWRlYnVnZmlsZSwKKysJCQkJaW5wdXQgPyBfKCJleGlzdHMiKSA6 IF8oImRvZXMgbm90IGV4aXN0IikpOworIAkgIGlmIChpbnB1dCAhPSBOVUxMKQorIAkgICAgYnJl YWs7CisgCX0KKyAgICAgfQorIAorLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKKysgIGlm ICghaW5wdXQpCisgICAgIHsKKysgICAgICBWRUMgKGNoYXJfcHRyKSAqdmVjOworKyAgICAgIGlu dCBpeDsKKysgICAgICBjaGFyICpkaXI7CisrCisgICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUg ZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCisgCSBkaXJlY3RvcnkuICAqLwor LSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVu IChmaWxlbmFtZSkKKy0JCQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOworLSAgICAg IHN0cmNweSAoZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7CistICAgICAgc3RyY2F0IChkZWJ1Z2Zp bGUsICIvYXV0by1sb2FkIik7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdl IGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZp bGVuYW1lKTsKKyAKKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAg ICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgICB2ZWMgPSBkaXJuYW1l c190b19jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9kaXIpOworKyAgICAgIG1ha2VfY2xlYW51cF9m cmVlX2NoYXJfcHRyX3ZlYyAodmVjKTsKKysKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQor KwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogU2VhcmNoaW5n ICdzZXQgYXV0by1sb2FkICIKKysJCQkJCSAgInNjcmlwdHMtZGlyZWN0b3J5JyBwYXRoIFwiJXNc Ii5cbiIpLAorKwkJCSAgICBhdXRvX2xvYWRfZGlyKTsKKysKKysgICAgICBmb3IgKGl4ID0gMDsg VkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQorKwl7CisrCSAgZGVi dWdmaWxlID0geHN0cmR1cCAoZGlyKTsKKysJICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgm ZGVidWdmaWxlLCAiJGRkaXIiLCBnZGJfZGF0YWRpcik7CisrCSAgZGVidWdmaWxlID0geHJlYWxs b2MgKGRlYnVnZmlsZSwgKHN0cmxlbiAoZGVidWdmaWxlKQorKwkJCQkJICAgICsgc3RybGVuIChm aWxlbmFtZSkgKyAxKSk7CisrCisrCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRv bid0IG5lZWQgYSAiLyIgaGVyZS4gICovCisrCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1l KTsKKysKKysJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKwkgIGlucHV0ID0g Zm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysJICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwkgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBm aWxlICIKKysJCQkJCSAgICAgICJcIiVzXCIgJXMuXG4iKSwKKysJCQkJZGVidWdmaWxlLAorKwkJ CQlpbnB1dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7CisrCSAgaWYgKGlu cHV0ICE9IE5VTEwpCisrCSAgICBicmVhazsKKysJfQorICAgICB9CisgCisgICBpZiAoaW5wdXQp CitAQCAtMTA1Niw2ICsxMTIzLDE5IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGlj YXRpb25zIGYKKyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkgICBh dXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisgCisrICBhdXRvX2xvYWRfZGlyID0geHN0 cmR1cCAoQVVUT19MT0FEX0RJUik7CisrICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9j bWQgKCJzY3JpcHRzLWRpcmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9f bG9hZF9kaXIsIF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0 byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKKytTaG93IHRoZSBsaXN0IG9mIGRp cmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJc CisrQXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMgYW5kIEdEQiBzY3JpcHRzIGFy ZSBsb2NhdGVkIGluIG9uZSBvZiB0aGVcblwKKytkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBv cHRpb24uICBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2ZcblwKKytzY3Jp cHRzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy4gIERpcmVjdG9yaWVzIGxpc3RlZCBo ZXJlIG5lZWQgdG8gYmVcblwKKytwcmVzZW50IGFsc28gaW4gdGhlICdzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCcgb3B0aW9uLiIpLAorKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1 dG9fbG9hZF9kaXIsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJ CQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisgICBhdXRvX2xvYWRf c2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICBhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFt ZV9jbWQgKCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6Mjku NzEzOTg1ODY5ICswMjAwCitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVpbGRpbmcg dW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQUExFX1VO SVZFUlNBTF9CVUlMRAorIAorKy8qIERpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRv LWxvYWRlZCBzY3JpcHRzLiAqLworKyN1bmRlZiBBVVRPX0xPQURfRElSCisrCisgLyogRGlyZWN0 b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLworICN1bmRlZiBBVVRPX0xP QURfU0FGRV9QQVRICisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJl Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJ MjAxMi0wNS0xNCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoyMToxMy4wNjg4NDkxMDMgKzAyMDAKK0BA IC05NTUsNiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKKyB3aXRoX2dkYl9kYXRh ZGlyCisgd2l0aF9yZWxvY2F0ZWRfc291cmNlcworIHdpdGhfcnBtCisrd2l0aF9hdXRvX2xvYWRf ZGlyCisgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVf NjRfYml0X2JmZAorQEAgLTE2NjcsOSArMTY2OCwxMyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRo IGZvciBzb3VyY2UgZmlsZXMKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBk YXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQorKyAgLS13aXRoLWF1dG8tbG9hZC1kaXI9 UEFUSAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0 byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICB1 c2UgJyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxvYWRdCisgICAtLXdp dGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICBk aXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRp ci9hdXRvLWxvYWRdCisrICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRo LWdkYi1kYXRhZGlyIHBhdGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0 by1sb2FkLWRpcl0KKyAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRp b25zCisgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2lu ZGluZyBzdXBwb3J0CitAQCAtODQ4Myw2ICs4NDg4LDMxIEBAICRhc19lY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICRSUE1fUEtHX0VSUk8KKyAgIGZpCisgZmkKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJl Y3RvcnkiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBk aXJlY3RvcnkuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9h ZC1kaXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfZGlyK3NldH0iID0g c2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX2RpcjsKKytlbHNlCisrICB3 aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCcKKytmaQorKworK2VzY2FwZV9kaXI9 YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxc Ji9nJ2AKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1 bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZp eD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGlyYAor KyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAorKworK2NhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIEFVVE9fTE9BRF9ESVIgIiRhY19kZWZpbmVfZGly IgorK19BQ0VPRgorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRfZGlyIiA+JjUKKyskYXNfZWNobyAiJHdpdGhfYXV0 b19sb2FkX2RpciIgPiY2OyB9CisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKKyAk YXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIg PiY2OyB9CisgCitAQCAtODQ5Miw3ICs4NTIyLDcgQEAgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgrc2V0fQorICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICAg ICAgZmkKKyBlbHNlCistICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9h ZCcKKysgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciIKKyBm aQorIAorIGVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAn cy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjIx OjAxLjU5Nzg3MTcxNiArMDIwMAorQEAgLTMzOSwxNiArMzM5LDI2IEBAIGV4dGVybiBycG1kYk1h dGNoSXRlcmF0b3IgcnBtdHNJbml0SXRlcmEKKyAgIGZpCisgZmkKKyAgCisrQUNfTVNHX0NIRUNL SU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgZGlyZWN0b3J5XSkKKytBQ19BUkdfV0lUSChhdXRv LWxvYWQtZGlyLAorK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwK KysgIFtkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywg dXNlICckZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0p LCwKKysgIFt3aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQorK2VzY2FwZV9k aXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxc XFxcXFwmL2cnYAorK0FDX0RFRklORV9ESVIoQVVUT19MT0FEX0RJUiwgZXNjYXBlX2RpciwKKysJ ICAgICAgW0RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRz Ll0pCisrQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX2Rpcl0pCisrCisgQUNfTVNHX0NI RUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKKyBBQ19BUkdfV0lUSChh dXRvLWxvYWQtc2FmZS1wYXRoLAorIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aD1QQVRIXSwKKy0gIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQg ZmlsZXMsIHVzZSAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1 dG8tbG9hZEA6PkBdKQorKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpALS13aXRoLWF1 dG8tbG9hZC1kaXJAOj5AXSkKKyBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlLXBhdGhdLAorICAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQg ZmlsZXMgbG9jYXRpb25zXSksCisgICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoIiA9ICJubyI7IHRoZW4KKyAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAg ICAgIGZpXSwKKy1bd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnXSkK Kytbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIl0pCisgZXNj YXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRp clw+L1xcXFxcXFxcXFxcXCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRI LCBlc2NhcGVfZGlyLAorIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzLl0pCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMi0wNS0xNCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyMDoxMy42NTM5 NjYyMTIgKzAyMDAKK0BAIC0yMDgwNCw2ICsyMDgwNCw4IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRv LWxvYWRpbmcgb2YgLmdkYmluaXQKKyBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQ eXRob24gc2NyaXB0cyBpcyBvbi4KKyBzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZy b20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKyAgICAgICAgICAgICBpcyAk ZGRpci9hdXRvLWxvYWQuCisrc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVz IGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCisrICAgICAgICAgICAgICAg ICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBAYW5jaG9y e2luZm8gYXV0by1sb2FkfQorQEAgLTIwODY0LDYgKzIwODY2LDEwIEBAIFRoZXNlIGFyZSBAdmFs dWV7R0RCTn0gY29udHJvbCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtH REJOfSBQeXRob24gc2NyaXB0cy4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24t c2NyaXB0c30uCisgQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0 cy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytAdGFi IENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgor K0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytAdGFiIFNo b3cgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uCisgQGl0ZW0gQHhy ZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKyBAdGFiIENvbnRyb2wgZm9yIGluaXQg ZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdH0uCitAQCAtMjEwNDAsMTUgKzIxMDQ2LDEzIEBAIGxvYWRpbmcgYW5k IGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGkKKyBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJh dG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCistVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBA ZmlsZXskZGRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0CisrVGhpcyB2YXJp YWJsZSBkZWZhdWx0cyB0byB3aGF0IEBjb2Rley0td2l0aC1hdXRvLWxvYWQtZGlyfSBoYXMgYmVl biBjb25maWd1cmVkCisrdG8gKEBweHJlZnt3aXRoLWF1dG8tbG9hZC1kaXJ9KS4gIEBmaWxleyRk ZGlyfSBzdWJzdGl0dWF0aW9uIGFwcGxpZXMgdGhlIHNhbWUKKythcyBmb3IgQHhyZWZ7c2V0IGF1 dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0uCisrVGhlIGRlZmF1bHQgQGNvZGV7c2V0CisgYXV0 by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtH REJOfSBjb25maWd1cmF0aW9uCisgb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGh9LgorIAorLUFueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFj ZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKKy1kZXRlcm1pbmVkIGF0IEB2YWx1 ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3Qg YmUKKy1iZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUg b3IgZGVsaW1pdGVkIGJ5IEBmaWxley99IG9yCistQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRv cnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KKy0KKyBTZXR0aW5nIHRoaXMgdmFy aWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLAorIGNv cnJlc3BvbmRpbmcgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzCisgQG9wdGlv bnstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCitAQCAtMjUxMzUsNyArMjUxMzksNyBA QCByZWdpc3RlcmluZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmluCisgQGNpbmRleCBAZmls ZXtAdmFye29iamZpbGV9LWdkYi5weX0KKyAKKyBXaGVuIGEgbmV3IG9iamVjdCBmaWxlIGlzIHJl YWQsIEB2YWx1ZXtHREJOfSBsb29rcyBmb3IKKy1hIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntvYmpm aWxlfS1nZGIucHl9LAorK2EgZmlsZSBuYW1lZCBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0g KHdlIGNhbGwgaXQgQHZhcntzY3JpcHQtbmFtZX0gYmVsb3cpLAorIHdoZXJlIEB2YXJ7b2JqZmls ZX0gaXMgdGhlIG9iamVjdCBmaWxlJ3MgcmVhbCBuYW1lLCBmb3JtZWQgYnkgZW5zdXJpbmcKKyB0 aGF0IHRoZSBmaWxlIG5hbWUgaXMgYWJzb2x1dGUsIGZvbGxvd2luZyBhbGwgc3ltbGlua3MsIGFu ZCByZXNvbHZpbmcKKyBAY29kZXsufSBhbmQgQGNvZGV7Li59IGNvbXBvbmVudHMuICBJZiB0aGlz IGZpbGUgZXhpc3RzIGFuZCBpcworQEAgLTI1MTQzLDE0ICsyNTE0Nyw0MiBAQCByZWFkYWJsZSwg QHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQKKyAKKyBJZiB0aGlzIGZpbGUgZG9lcyBub3Qg ZXhpc3QsIGFuZCBpZiB0aGUgcGFyYW1ldGVyCisgQGNvZGV7ZGVidWctZmlsZS1kaXJlY3Rvcnl9 IGlzIHNldCAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZpbGVzfSksCistdGhlbiBAdmFsdWV7R0RC Tn0gd2lsbCBsb29rIGZvciBAdmFye3JlYWwtbmFtZX0gaW4gYWxsIG9mIHRoZQorK3RoZW4gQHZh bHVle0dEQk59IHdpbGwgbG9vayBmb3IgQHZhcntzY3JpcHQtbmFtZX0gaW4gYWxsIG9mIHRoZQor IGRpcmVjdG9yaWVzIG1lbnRpb25lZCBpbiB0aGUgdmFsdWUgb2YgQGNvZGV7ZGVidWctZmlsZS1k aXJlY3Rvcnl9LgorIAorIEZpbmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhl biBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvcgorLWEgZmlsZSBuYW1lZCBAZmlsZXtAdmFye2Rh dGEtZGlyZWN0b3J5fS9weXRob24vYXV0by1sb2FkL0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCist QHZhcntkYXRhLWRpcmVjdG9yeX0gaXMgQHZhbHVle0dEQk59J3MgZGF0YSBkaXJlY3RvcnkgKGF2 YWlsYWJsZSB2aWEKKy1AY29kZXtzaG93IGRhdGEtZGlyZWN0b3J5fSwgQHB4cmVme0RhdGEgRmls ZXN9KSwgYW5kIEB2YXJ7cmVhbC1uYW1lfQorLWlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFt ZSwgYXMgZGVzY3JpYmVkIGFib3ZlLgorK0B2YXJ7c2NyaXB0LW5hbWV9IGZpbGUgaW4gYWxsIG9m IHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnk6CisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hv cntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fQorK0BraW5kZXggc2V0IGF1dG8tbG9h ZCBzY3JpcHRzLWRpcmVjdG9yeQorK0BpdGVtIHNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rv cnkgQHJ7W31AdmFye2RpcmVjdG9yaWVzfUBye119CisrQ29udHJvbCBAdmFsdWV7R0RCTn0gYXV0 by1sb2FkZWQgc2NyaXB0cyBsb2NhdGlvbi4gIE11bHRpcGxlIGRpcmVjdG9yeSBlbnRyaWVzCisr bWF5IGJlIGRlbGltaXRlZCBieSB0aGUgaG9zdCBwbGF0Zm9ybSBwYXRoIHNlcGFyYXRvciBpbiB1 c2UKKysoQHNhbXB7On0gb24gVW5peCwgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9T KS4KKysKKytFYWNoIGVudHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvIGJ5IHRoZSBz ZWN1cml0eSBzZXR0aW5nCisrQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7 c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KKysKKytAYW5jaG9ye3dpdGgtYXV0by1sb2FkLWRp cn0KKytUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBU aGUgZGVmYXVsdCBAY29kZXtzZXQKKythdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUg YWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24KKytvcHRpb24gQG9w dGlvbnstLXdpdGgtYXV0by1sb2FkLWRpcn0uCisrCisrQW55IHVzZWQgc3RyaW5nIEBmaWxleyRk ZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcwor K2RldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSku ICBAZmlsZXskZGRpcn0gbXVzdCBiZQorK2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25l bnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKKytAZmlsZXtc fSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgor KworK1RoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgcGF0aCBzZXBhcmF0b3IgKEBzYW1wezp9 IG9uIEdOVSBhbmQgVW5peAorK3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1T LURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQorK3RvIHRoZSBAZW52e1BB VEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2Ny aXB0cy1kaXJlY3Rvcnl9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9y eQorK0BpdGVtIHNob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5CisrU2hvdyBAdmFsdWV7 R0RCTn0gYXV0by1sb2FkZWQgc2NyaXB0cyBsb2NhdGlvbi4KKytAZW5kIHRhYmxlCisgCisgQHZh bHVle0dEQk59IGRvZXMgbm90IHRyYWNrIHdoaWNoIGZpbGVzIGl0IGhhcyBhbHJlYWR5IGF1dG8t bG9hZGVkIHRoaXMgd2F5LgorIEB2YWx1ZXtHREJOfSB3aWxsIGxvYWQgdGhlIGFzc29jaWF0ZWQg c2NyaXB0IGV2ZXJ5IHRpbWUgdGhlIGNvcnJlc3BvbmRpbmcKCmRpZmYgLS1naXQgYS9nZGItYXV0 b2xvYWQtMjRvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWQ2MDFlCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWF1dG9sb2FkLTI0b2YyOC5wYXRjaApAQCAtMCwwICsxLDgyIEBACitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDgyLmh0bWwKKworIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEyLzA1LzExIDE4OjIwOjI2CTEuMTMxMworIyMjIHNyYy9nZGIvZG9jL0No YW5nZUxvZwkyMDEyLzA1LzExIDE4OjIzOjExCTEuMTMxNAorIyMgLTEsNSArMSwxMiBAQAorIDIw MTItMDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAK KysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nLCBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQg RGlyZWN0b3J5KQorKwkobGlidGhyZWFkX2RiLnNvLjEgZmlsZSwgb2JqZmlsZS1nZGIuZ2RiIGZp bGUsIG9iamZpbGUtZ2RiLnB5IGZpbGUpCisrCShkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u KTogQWRkIHJlZmVyZW5jZQorKwl0byAnQXV0by1sb2FkaW5nIHNhZmUgcGF0aCcuCisrCisrMjAx Mi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKwor IAlJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0td2l0aC1hdXRvLWxvYWQtZGlyLgorIAkqIGdk Yi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBOZXcgcmVmZXJlbmNlcworIAlmb3IgJ3NldCBhdXRv LWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx Mi8wNS8xMSAxODoyMDoyNgkxLjk1OQorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDUvMTEgMTg6MjM6MTEJMS45NjAKK0BAIC0yMDk3Myw2ICsyMDk3MywxMCBAQAorIHJlc3VsdHMg b3IgaW50cm9kdWNlIHNlY3VyaXR5IHJpc2tzIChlLmcuLCBpZiB0aGUgZmlsZSBjb21lcyBmcm9t IHVudHJ1c3RlZAorIHNvdXJjZXMpLgorIAorK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRoZXNlIGFz c29jaWF0ZWQgZmlsZXMgKGluY2x1ZGluZyB0aGUgbG9jYWwgQGZpbGV7LmdkYmluaXR9CisrZmls ZSkgcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZCBAY29kZXthdXRvLWxvYWQgc2FmZS1w YXRofQorKyhAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pLgorKworIEZvciB0aGVzZSBy ZWFzb25zLCBAdmFsdWV7R0RCTn0gaW5jbHVkZXMgY29tbWFuZHMgYW5kIG9wdGlvbnMgdG8gbGV0 IHlvdQorIGNvbnRyb2wgd2hlbiB0byBhdXRvLWxvYWQgZmlsZXMgYW5kIHdoaWNoIGZpbGVzIHNo b3VsZCBiZSBhdXRvLWxvYWRlZC4KKyAKK0BAIC0yMTExMiw2ICsyMTExNiw5IEBACisgZnJvbSBp bml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCisgc2Vl IEByZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0u CisgCisrTm90ZSB0aGF0IGxvYWRpbmcgb2YgdGhpcyBsb2NhbCBAZmlsZXsuZ2RiaW5pdH0gZmls ZSBhbHNvIHJlcXVpcmVzIGFjY29yZGluZ2x5CisrY29uZmlndXJlZCBAY29kZXthdXRvLWxvYWQg c2FmZS1wYXRofSAoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4KKysKKyBAdGFibGUg QGNvZGUKKyBAYW5jaG9ye3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKyBAa2luZGV4IHNl dCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorQEAgLTIxMTQ4LDYgKzIxMTU1LDkgQEAKKyBhdXRv LWxvYWQgbGlidGhyZWFkLWRifSBpcyBlbmFibGVkIGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBzdWNo IHRocmVhZCBkZWJ1Z2dpbmcKKyBsaWJyYXJ5LgorIAorK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRo aXMgZGVidWdnaW5nIGxpYnJhcnkgYWxzbyByZXF1aXJlcyBhY2NvcmRpbmdseSBjb25maWd1cmVk CisrQGNvZGV7YXV0by1sb2FkIHNhZmUtcGF0aH0gKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBw YXRofSkuCisrCisgQHRhYmxlIEBjb2RlCisgQGFuY2hvcntzZXQgYXV0by1sb2FkIGxpYnRocmVh ZC1kYn0KKyBAa2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCitAQCAtMjExNzUsNiAr MjExODUsOSBAQAorIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgKEBweHJlZntTZXF1ZW5j ZXN9KSwgYXMgbG9uZyBhcyBAc2FtcHtzZXQKKyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9IGlzIHNl dCB0byBAc2FtcHtvbn0uCisgCisrTm90ZSB0aGF0IGxvYWRpbmcgb2YgdGhpcyBzY3JpcHQgZmls ZSBhbHNvIHJlcXVpcmVzIGFjY29yZGluZ2x5IGNvbmZpZ3VyZWQKKytAY29kZXthdXRvLWxvYWQg c2FmZS1wYXRofSAoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4KKysKKyBGb3IgbW9y ZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9h ZGluZworIGRlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0pLgorIAorQEAg LTI1NDY1LDcgKzI1NDc4LDEwIEBACisgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGluIHRoZSB2YWx1 ZSBvZiBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0uCisgCisgRmluYWxseSwgaWYgdGhpcyBm aWxlIGRvZXMgbm90IGV4aXN0LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yCistQHZh cntzY3JpcHQtbmFtZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBi eToKKytAdmFye3NjcmlwdC1uYW1lfSBmaWxlIGluIGFsbCBvZiB0aGUgZGlyZWN0b3JpZXMgYXMg c3BlY2lmaWVkIGJlbG93LgorKworK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRoaXMgc2NyaXB0IGZp bGUgYWxzbyByZXF1aXJlcyBhY2NvcmRpbmdseSBjb25maWd1cmVkCisrQGNvZGV7YXV0by1sb2Fk IHNhZmUtcGF0aH0gKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkuCisgCisgQHRhYmxl IEBjb2RlCisgQGFuY2hvcntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fQorQEAgLTI1 NTQyLDYgKzI1NTU4LDkgQEAKKyAKKyBUaGUgc2NyaXB0IG5hbWUgbWF5IGluY2x1ZGUgZGlyZWN0 b3JpZXMgaWYgZGVzaXJlZC4KKyAKKytOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlzIHNjcmlwdCBm aWxlIGFsc28gcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAorK0Bjb2Rle2F1dG8tbG9h ZCBzYWZlLXBhdGh9IChAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pLgorKworIElmIHRo ZSBtYWNybyBpcyBwdXQgaW4gYSBoZWFkZXIsIGFueSBhcHBsaWNhdGlvbiBvciBsaWJyYXJ5Cisg dXNpbmcgdGhpcyBoZWFkZXIgd2lsbCBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHNwZWNpZmllZCBz Y3JpcHQuCisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI1b2YyOC5wYXRjaCBiL2dkYi1h dXRvbG9hZC0yNW9mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YWM1OTM5YwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2gKQEAg LTAsMCArMSw2NCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9t c2cwMDA5MS5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAyMjoy NDoyMgkxLjEzMTUKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8xMiAxNDoyMDoz MAkxLjEzMTYKKyMjIC0xLDMgKzEsOSBAQAorKzIwMTItMDUtMTIgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysJICAgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdu dS5vcmc+CisrCisrCSogZ2RiLnRleGluZm8gKFNlcGFyYXRlIERlYnVnIEZpbGVzKTogVXNlIHBs dXJhbCBmb3JtIGZvciBnbG9iYWwKKysJZGVidWdnaW5nIGluZm9ybWF0aW9uIGRpcmVjdG9yeS4K KysKKyAyMDEyLTA1LTExICBTdGFuIFNoZWJzICA8c3RhbkBjb2Rlc291cmNlcnkuY29tPgorIAkg ICAgS3dvayBDaGV1bmcgWWV1bmcgIDxrY3lAY29kZXNvdXJjZXJ5LmNvbT4KKyAKKy0tLSBzcmMv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzExIDIyOjI0OjIyCTEuOTYxCisrKysgc3JjL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8xMiAxNDoyMDozMQkxLjk2MgorQEAgLTE2Mjg3LDcg KzE2Mjg3LDcgQEAKKyBAY2luZGV4IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpbiBzZXBhcmF0ZSBm aWxlcworIEBjaW5kZXggQGZpbGV7LmRlYnVnfSBzdWJkaXJlY3RvcmllcworIEBjaW5kZXggZGVi dWdnaW5nIGluZm9ybWF0aW9uIGRpcmVjdG9yeSwgZ2xvYmFsCistQGNpbmRleCBnbG9iYWwgZGVi dWdnaW5nIGluZm9ybWF0aW9uIGRpcmVjdG9yeQorK0BjaW5kZXggZ2xvYmFsIGRlYnVnZ2luZyBp bmZvcm1hdGlvbiBkaXJlY3RvcmllcworIEBjaW5kZXggYnVpbGQgSUQsIGFuZCBzZXBhcmF0ZSBk ZWJ1Z2dpbmcgZmlsZXMKKyBAY2luZGV4IEBmaWxley5idWlsZC1pZH0gZGlyZWN0b3J5CisgCitA QCAtMTYzMzIsMTQgKzE2MzMyLDE0IEBACisgQGl0ZW0KKyBGb3IgdGhlIGBgZGVidWcgbGluaycn IG1ldGhvZCwgQHZhbHVle0dEQk59IGxvb2tzIHVwIHRoZSBuYW1lZCBmaWxlIGluCisgdGhlIGRp cmVjdG9yeSBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlLCB0aGVuIGluIGEgc3ViZGlyZWN0b3J5IG9m IHRoYXQKKy1kaXJlY3RvcnkgbmFtZWQgQGZpbGV7LmRlYnVnfSwgYW5kIGZpbmFsbHkgdW5kZXIg dGhlIGdsb2JhbCBkZWJ1ZworLWRpcmVjdG9yeSwgaW4gYSBzdWJkaXJlY3Rvcnkgd2hvc2UgbmFt ZSBpcyBpZGVudGljYWwgdG8gdGhlIGxlYWRpbmcKKytkaXJlY3RvcnkgbmFtZWQgQGZpbGV7LmRl YnVnfSwgYW5kIGZpbmFsbHkgdW5kZXIgZWFjaCBvbmUgb2YgdGhlIGdsb2JhbCBkZWJ1ZworK2Rp cmVjdG9yaWVzLCBpbiBhIHN1YmRpcmVjdG9yeSB3aG9zZSBuYW1lIGlzIGlkZW50aWNhbCB0byB0 aGUgbGVhZGluZworIGRpcmVjdG9yaWVzIG9mIHRoZSBleGVjdXRhYmxlJ3MgYWJzb2x1dGUgZmls ZSBuYW1lLgorIAorIEBpdGVtCisgRm9yIHRoZSBgYGJ1aWxkIElEJycgbWV0aG9kLCBAdmFsdWV7 R0RCTn0gbG9va3MgaW4gdGhlCistQGZpbGV7LmJ1aWxkLWlkfSBzdWJkaXJlY3Rvcnkgb2YgdGhl IGdsb2JhbCBkZWJ1ZyBkaXJlY3RvcnkgZm9yIGEgZmlsZQorLW5hbWVkIEBmaWxle0B2YXJ7bm59 L0B2YXJ7bm5ubm5ubm59LmRlYnVnfSwgd2hlcmUgQHZhcntubn0gYXJlIHRoZQorK0BmaWxley5i dWlsZC1pZH0gc3ViZGlyZWN0b3J5IG9mIGVhY2ggb25lIG9mIHRoZSBnbG9iYWwgZGVidWcgZGly ZWN0b3JpZXMgZm9yCisrYSBmaWxlIG5hbWVkIEBmaWxle0B2YXJ7bm59L0B2YXJ7bm5ubm5ubm59 LmRlYnVnfSwgd2hlcmUgQHZhcntubn0gYXJlIHRoZQorIGZpcnN0IDIgaGV4IGNoYXJhY3RlcnMg b2YgdGhlIGJ1aWxkIElEIGJpdCBzdHJpbmcsIGFuZCBAdmFye25ubm5ubm5ufQorIGFyZSB0aGUg cmVzdCBvZiB0aGUgYml0IHN0cmluZy4gIChSZWFsIGJ1aWxkIElEIHN0cmluZ3MgYXJlIDMyIG9y IG1vcmUKKyBoZXggY2hhcmFjdGVycywgbm90IDEwLikKK0BAIC0xNjM0OCw3ICsxNjM0OCw3IEBA CisgU28sIGZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhc2sgQHZhbHVle0dEQk59IHRvIGRlYnVn CisgQGZpbGV7L3Vzci9iaW4vbHN9LCB3aGljaCBoYXMgYSBkZWJ1ZyBsaW5rIHRoYXQgc3BlY2lm aWVzIHRoZQorIGZpbGUgQGZpbGV7bHMuZGVidWd9LCBhbmQgYSBidWlsZCBJRCB3aG9zZSB2YWx1 ZSBpbiBoZXggaXMKKy1AY29kZXthYmNkZWYxMjM0fS4gIElmIHRoZSBnbG9iYWwgZGVidWcgZGly ZWN0b3J5IGlzCisrQGNvZGV7YWJjZGVmMTIzNH0uICBJZiB0aGUgbGlzdCBvZiB0aGUgZ2xvYmFs IGRlYnVnIGRpcmVjdG9yaWVzIGluY2x1ZGVzCisgQGZpbGV7L3Vzci9saWIvZGVidWd9LCB0aGVu IEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yIHRoZSBmb2xsb3dpbmcKKyBkZWJ1ZyBpbmZvcm1h dGlvbiBmaWxlcywgaW4gdGhlIGluZGljYXRlZCBvcmRlcjoKKyAKK0BAIC0xNjM2Myw4ICsxNjM2 Myw4IEBACisgQGZpbGV7L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9scy5kZWJ1Z30uCisgQGVuZCBp dGVtaXplCisgCistWW91IGNhbiBzZXQgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3Rv cnkncyBuYW1lLCBhbmQgdmlldyB0aGUKKy1uYW1lIEB2YWx1ZXtHREJOfSBpcyBjdXJyZW50bHkg dXNpbmcuCisrWW91IGNhbiBzZXQgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3Rvcmll cywgYW5kIHZpZXcgdGhlCisrbGlzdCBAdmFsdWV7R0RCTn0gaXMgY3VycmVudGx5IHVzaW5nLgor IAorIEB0YWJsZSBAY29kZQorIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yNm9mMjgucGF0 Y2ggYi9nZGItYXV0b2xvYWQtMjZvZjI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmQ4OGM0M2QKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMjZvZjI4 LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEyLTA1L21zZzAwNDQ5Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gQ29zbWV0aWMgZml4 ICdzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGZvciAiOiIgIFtSZTogW3BhdGNoIDEvMl0gUHJv dmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoXQor CitPbiBGcmksIDExIE1heSAyMDEyIDIxOjMzOjUzICswMjAwLCBKYW4gS3JhdG9jaHZpbCB3cm90 ZToKKz4gT24gRnJpLCAxMSBNYXkgMjAxMiAyMToxNDo0NyArMDIwMCwgUGVkcm8gQWx2ZXMgd3Jv dGU6Cis+ID4gTG9va3MgbGlrZSB0aGVyZSBpcyBzb21lIHNwZWNpYWwgY2FzaW5nIHNvbWV3aGVy ZToKKz4gCis+IFRydWUsIEkgZm9yZ290IGFuZCBJIGFncmVlLiAgQnV0IGl0IGlzIG9ubHkgdGhp cyAiY29zbWV0aWMiIG1lc3NhZ2UsIGl0IGhhcyBubworPiBmdW5jdGlvbmFsaXR5IGVmZmVjdC4g IEkgY2FuIGZpeCB0aGlzICJhbnkgZGlyZWN0b3J5IiBtZXNzYWdlIGNvbmRpdGlvbmFsLgorCitS ZWdhcmRzLAorSmFuCisKKworZ2RiLworMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBhdXRvLWxvYWQuYyAoc2hvd19hdXRvX2xvYWRf c2FmZV9wYXRoKTogQWNjZXB0IGFueSBjb21iaW5hdGlvbiBvZgorCURJUk5BTUVfU0VQQVJBVE9S IGFuZCBJU19ESVJfU0VQQVJBVE9SIGZvciB3aWxkLW1hdGNoLgorCitkaWZmIC0tZ2l0IGEvZ2Ri L2F1dG8tbG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCitpbmRleCA1ZWUxMTdmLi40NjJlZTA2IDEw MDY0NAorLS0tIGEvZ2RiL2F1dG8tbG9hZC5jCisrKysgYi9nZGIvYXV0by1sb2FkLmMKK0BAIC0y NDEsNyArMjQxLDE1IEBAIHN0YXRpYyB2b2lkCisgc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorIAkJCSAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIGlmIChzdHJjbXAgKHZhbHVl LCAiLyIpID09IDApCisrICBjb25zdCBjaGFyICpjczsKKysKKysgIC8qIENoZWNrIGlmIHVzZXIg aGFzIGVudGVyZWQgZWl0aGVyICIvIiBvciBmb3IgZXhhbXBsZSAiOiIuCisrICAgICBCdXQgd2hp bGUgbW9yZSBjb21wbGljYXRlIGNvbnRlbnQgbGlrZSAiOi9mb28iIHdvdWxkIHN0aWxsIGFsc28K KysgICAgIHBlcm1pdCBhbnkgbG9jYXRpb24gZG8gbm90IGhpZGUgdGhvc2UuICAqLworKworKyAg Zm9yIChjcyA9IHZhbHVlOyAqY3MgJiYgKCpjcyA9PSBESVJOQU1FX1NFUEFSQVRPUiB8fCBJU19E SVJfU0VQQVJBVE9SICgqY3MpKTsKKysgICAgICAgY3MrKyk7CisrICBpZiAoKmNzID09IDApCisg ICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0 byBsb2FkIGZyb20gYW55ICIKKyAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOworICAgZWxzZQor CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0y N29mMjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI4ZDk1OAot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yN29mMjgucGF0Y2gKQEAgLTAsMCArMSwy MjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAw NDc2Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaCAxLzJdIGF1dG8tbG9hZDogUmVuYW1lICRkZGlyIHRv ICRkYXRhZGlyCisKK0hpLAorCit3aGVuIERvdWcgc3VnZ2VzdGVkICRkZGlyIGZvciBkYXRhLWRp cmVjdG9yeSwgc2ltaWxhciB0byAkY2RpciwgJHBkaXIgYW5kCiskc2RpciBhbHJlYWR5IGluIHVz ZSwgaXQgbWFkZSBzZW5zZS4KKworQnV0IGN1cnJlbnRseSBJIG5lZWQgdG8gaW50cm9kdWNlIGFs c28gYSB2YXJpYWJsZSBmb3IgZGVidWctZmlsZS1kaXJlY3RvcnkgYW5kCitoYXZpbmcgYm90aCAk ZGRpciBhbmQgJGRlYnVnZGlyIHZhbGlkIGluIHRoZSBzYW1lIHN0cmluZyBzZWVtcyB0byBiZSBj b25mdXNpbmcuCisKK1RoZXJlZm9yZSBwcm9wb3NpbmcgdG8gaGF2ZSAkZGF0YWRpciBhbmQgJGRl YnVnZGlyIGluc3RlYWQgaW4gdGhlIG5leHQgcGF0Y2gsCit0aGlzIHBhdGNoIGlzIGp1c3QgYSBt YWNoYW5pY2FsIHJlbmFtZSAkZGRpciAtPiAkZGF0YWRpci4KKworSSBkbyBub3QgdGhpbmsgaXQg bmVlZHMgYmFja3dhcmQgY29tcGF0aWJpbHV0eSBhcyAkZGRpciBoYXMgbm90IHlldCBiZWVuIGlu CithbnkgR0RCIHJlbGVhc2UuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMi0wNS0x MiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUmVuYW1l ICRkZGlyIHRvICRkYXRhZGlyLgorCSogTkVXUyAoLS13aXRoLWF1dG8tbG9hZC1kaXIpOiBSZW5h bWUgJGRkaXIgdG8gJGRhdGFkaXIuCisJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWNfdXBkYXRlKQorCShhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCwgYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0KTogTGlrZXdpc2UuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJ KiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRvLWxvYWQtZGlyLCAtLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aCk6CisJTGlrZXdpc2UuICBSZW1vdmUgdGhlICd1c2UgJGRkaXInIGhlbHAgc3RyaW5n LgorCitnZGIvZG9jLworMjAxMi0wNS0xMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorCisJUmVuYW1lICRkZGlyIHRvICRkYXRhZGlyLgorCSogZ2RiLnRleGlu Zm8gKEF1dG8tbG9hZGluZywgQXV0by1sb2FkaW5nIHNhZmUgcGF0aCkKKwkob2JqZmlsZS1nZGIu cHkgZmlsZSk6IFJlbmFtZSAkZGRpciB0byAkZGF0YWRpci4KKworSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL05FV1MJMjAxMi0wNS0xNCAxNDoyNDoxNS4xMTI0OTAyODYgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MjQ6MjAuMjI0NDgwMjEwICsw MjAwCitAQCAtMzE3LDggKzMxNyw4IEBAIHNob3cgdHJhY2Utc3RvcC1ub3RlcworIAorIC0td2l0 aC1hdXRvLWxvYWQtZGlyCisgICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JworLSAgc2V0dGluZyBhYm92ZS4gIEl0IGRlZmF1 bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcKKy0gIEdEQidzIGRh dGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3RvcnkpLgorKyAgc2V0 dGluZyBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGF0YWRpci9hdXRvLWxvYWQnLCAkZGF0YWRp cgorKyAgcmVwcmVzZW50aW5nIEdEQidzIGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhIHNo b3cgZGF0YS1kaXJlY3RvcnkpLgorIAorIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisgICBD b25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcg c2V0dGluZworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEy LTA1LTE0IDE0OjI0OjE1LjExMjQ5MDI4NiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQgMTQ6MjQ6MjAuMjI0NDgwMjEwICswMjAwCitAQCAt MTc0LDEzICsxNzQsMTMgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQor ICAgICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBhbmRlZCwgKnJlYWxfcGF0aDsKKyAKKyAgICAg ICBkZGlyX3N1YnN0ID0geHN0cmR1cCAoZGlyKTsKKy0gICAgICBzdWJzdGl0dXRlX3BhdGhfY29t cG9uZW50ICgmZGRpcl9zdWJzdCwgIiRkZGlyIiwgZ2RiX2RhdGFkaXIpOworKyAgICAgIHN1YnN0 aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZGlyX3N1YnN0LCAiJGRhdGFkaXIiLCBnZGJfZGF0YWRp cik7CisgICAgICAgZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRkaXJfc3Vic3QpOworICAgICAg IHhmcmVlIChkZGlyX3N1YnN0KTsKKyAgICAgICByZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4 cGFuZGVkKTsKKyAKKyAgICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVh c3QgYSB2YWxpZCBwYXRoICh0aGVyZWZvcmUKKy0JICRkZGlyLWV4cGFuZGVkIGFuZCB0aWxkZS1l eHBhbmRlZCkuICAqLworKwkgJGRhdGFkaXItZXhwYW5kZWQgYW5kIHRpbGRlLWV4cGFuZGVkKS4g ICovCisgICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YywgaXgsIGV4cGFuZGVkKTsKKyAKKyAgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorQEAgLTIx Miw3ICsyMTIsNyBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICAg IH0KKyB9CisgCistLyogVmFyaWFibGUgZ2RiX2RhdGFkaXIgaGFzIGJlZW4gc2V0LiAgVXBkYXRl IGNvbnRlbnQgZGVwZW5kaW5nIG9uICRkZGlyLiAgKi8KKysvKiBWYXJpYWJsZSBnZGJfZGF0YWRp ciBoYXMgYmVlbiBzZXQuICBVcGRhdGUgY29udGVudCBkZXBlbmRpbmcgb24gJGRhdGFkaXIuICAq LworIAorIHN0YXRpYyB2b2lkCisgYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQgKHZvaWQp CitAQCAtNjk5LDcgKzY5OSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9i amZpbGUKKyAgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCB2ZWMsIGl4 LCBkaXIpOyArK2l4KQorIAl7CisgCSAgZGVidWdmaWxlID0geHN0cmR1cCAoZGlyKTsKKy0JICBz dWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGVidWdmaWxlLCAiJGRkaXIiLCBnZGJfZGF0YWRp cik7CisrCSAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRlYnVnZmlsZSwgIiRkYXRhZGly IiwgZ2RiX2RhdGFkaXIpOworIAkgIGRlYnVnZmlsZSA9IHhyZWFsbG9jIChkZWJ1Z2ZpbGUsIChz dHJsZW4gKGRlYnVnZmlsZSkKKyAJCQkJCSAgICArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSkpOwor IAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDUtMTQgMTQ6 MjQ6MTUuMTEyNDkwMjg2ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlCTIwMTItMDUtMTQgMTQ6MjQ6MzguNTY0NDQ0MDYxICswMjAwCitAQCAtMTY2OSwxMSArMTY2 OSwxMCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1 ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQorICAgLS13aXRoLWF1dG8t bG9hZC1kaXI9UEFUSAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJv bSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMsCistICAgICAgICAgICAgICAgICAg ICAgICAgICB1c2UgJyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxvYWRd CisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxv YWQgYXV0by1sb2FkZWQgc2NyaXB0cworKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRkYXRh ZGlyL2F1dG8tbG9hZF0KKyAgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRl ZCBmaWxlcywgdXNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRo LWdkYi1kYXRhZGlyIHBhdGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVz IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAg ICAgWy0td2l0aC1hdXRvLWxvYWQtZGlyXQorICAgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBh dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRl ZCBmaWxlcyBsb2NhdGlvbnMKK0BAIC04NDk1LDEwICs4NDk0LDEwIEBAICRhc19lY2hvX24gImNo ZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG8KKyBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX2Rp citzZXR9IiA9IHNldDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9kaXI7Cisg ZWxzZQorLSAgd2l0aF9hdXRvX2xvYWRfZGlyPSckZGRpci9hdXRvLWxvYWQnCisrICB3aXRoX2F1 dG9fbG9hZF9kaXI9JyRkYXRhZGlyL2F1dG8tbG9hZCcKKyBmaQorIAorLWVzY2FwZV9kaXI9YGVj aG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9n J2AKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvWyRdZGF0 YWRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisgCisgICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAm JiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKyAgIHRlc3QgIngkZXhlY19wcmVmaXgiID0g eE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKK0BAIC04NTI1LDcgKzg1MjQsNyBAQCBl bHNlCisgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRoX2F1dG9fbG9hZF9kaXIiCisg ZmkKKyAKKy1lc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQg J3MvWyRdZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisrZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwmL2cn YAorIAorICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9w cmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PSck e3ByZWZpeH0nCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJ MjAxMi0wNS0xNCAxNDoyNDoxNS4xMTI0OTAyODYgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoyNDoyMC4yMjg0ODAyMDIgKzAyMDAK K0BAIC0zNDIsOSArMzQyLDkgQEAgZmkKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1 dG8tbG9hZCBkaXJlY3RvcnldKQorIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1kaXIsCisgQVNfSEVM UF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtZGlyPVBBVEhdLAorLSAgW2RpcmVjdG9yaWVzIGZy b20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLCB1c2UgJyRkZGlyJyBmb3IgLWRh dGEtZGlyZWN0b3J5IEA8OkAkZGRpci9hdXRvLWxvYWRAOj5AXSksLAorLSAgW3dpdGhfYXV0b19s b2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJ10pCistZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRv X2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisrICBbZGly ZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMgQDw6QCRkYXRh ZGlyL2F1dG8tbG9hZEA6PkBdKSwsCisrICBbd2l0aF9hdXRvX2xvYWRfZGlyPSckZGF0YWRpci9h dXRvLWxvYWQnXSkKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQg J3MvW1skXV1kYXRhZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKyBBQ19ERUZJTkVfRElSKEFVVE9f TE9BRF9ESVIsIGVzY2FwZV9kaXIsCisgCSAgICAgIFtEaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRv IGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy5dKQorIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9f bG9hZF9kaXJdKQorQEAgLTM1MiwxNCArMzUyLDE0IEBAIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1 dG9fbG9hZF9kaXJdKQorIEFDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNh ZmUtcGF0aF0pCisgQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKKyBBU19IRUxQX1NU UklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sCistICBbZGlyZWN0b3JpZXMg c2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGIt ZGF0YWRpciBwYXRoIEA8OkAtLXdpdGgtYXV0by1sb2FkLWRpckA6PkBdKQorKyAgW2RpcmVjdG9y aWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcyBAPDpALS13aXRoLWF1dG8tbG9hZC1k aXJAOj5AXSkKKyBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhd LAorICAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9j YXRpb25zXSksCisgICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJu byI7IHRoZW4KKyAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgICAgIGZpXSwK KyBbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIl0pCistZXNj YXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRp clw+L1xcXFxcXFxcXFxcXCYvZydgCisrZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGF0YWRpclw+L1xcXFxcXFxcXFxcXCYvZydgCisgQUNf REVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAorIAkgICAgICBbRGly ZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCisgQUNfTVNHX1JFU1VM VChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyNDoxNS4xMTM0OTAyODQg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0w NS0xNCAxNDoyNDoyMC4yMzQ0ODAxOTAgKzAyMDAKK0BAIC0yMDgwNyw5ICsyMDgwNyw5IEBAIGxv Y2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQKKyAgICAgICAgICAgICAgICAg aXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCistICAgICAgICAgICAgaXMgJGRkaXIvYXV0by1sb2Fk LgorKyAgICAgICAgICAgIGlzICRkYXRhZGlyL2F1dG8tbG9hZC4KKyBzY3JpcHRzLWRpcmVjdG9y eTogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNj cmlwdHMKKy0gICAgICAgICAgICAgICAgICAgIGlzICRkZGlyL2F1dG8tbG9hZC4KKysgICAgICAg ICAgICAgICAgICAgIGlzICRkYXRhZGlyL2F1dG8tbG9hZC4KKyBAZW5kIHNtYWxsZXhhbXBsZQor IAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjEwMjUsOSArMjEwMjUsOSBAQCBnZXQg bG9hZGVkOgorICQgLi9nZGIgLXEgLi9nZGIKKyBSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91 c2VyL2dkYi9nZGIuLi5kb25lLgorIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1n ZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKy0gICAgICAgICBkZWNsaW5lZCBieSB5b3Vy IGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9hZCIuCisrICAgICAg ICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGF0YWRp ci9hdXRvLWxvYWQiLgorIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHki IGF1dG8tbG9hZGluZyBoYXMgYmVlbgorLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8t bG9hZCBzYWZlLXBhdGgnIHNldCB0byAiJGRkaXIvYXV0by1sb2FkIi4KKysgICAgICAgICBkZWNs aW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkYXRhZGlyL2F1dG8t bG9hZCIuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVj dG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK0BAIC0yMTA2 MCw3ICsyMTA2MCw3IEBAIGhvc3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3IgaW4gdXNlLgorIEBl bmQgdGFibGUKKyAKKyBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIHdoYXQgQGNvZGV7LS13aXRo LWF1dG8tbG9hZC1kaXJ9IGhhcyBiZWVuIGNvbmZpZ3VyZWQKKy10byAoQHB4cmVme3dpdGgtYXV0 by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRkaXJ9IHN1YnN0aXR1YXRpb24gYXBwbGllcyB0aGUgc2Ft ZQorK3RvIChAcHhyZWZ7d2l0aC1hdXRvLWxvYWQtZGlyfSkuICBAZmlsZXskZGF0YWRpcn0gc3Vi c3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBzYW1lCisgYXMgZm9yIEB4cmVme3NldCBhdXRvLWxvYWQg c2NyaXB0cy1kaXJlY3Rvcnl9LgorIFRoZSBkZWZhdWx0IEBjb2Rle3NldAorIGF1dG8tbG9hZCBz YWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29u ZmlndXJhdGlvbgorQEAgLTI1MTgxLDE0ICsyNTE4MSwxNCBAQCBFYWNoIGVudHJ5IGhlcmUgbmVl ZHMgdG8gYmUgY292ZXJlZCBhbHNvCisgQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChA cHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KKyAKKyBAYW5jaG9ye3dpdGgtYXV0by1s b2FkLWRpcn0KKy1UaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1dG8tbG9h ZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKytUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBm aWxleyRkYXRhZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKyBhdXRvLWxv YWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59 IGNvbmZpZ3VyYXRpb24KKyBvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLWRpcn0uCisg CistQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFy e2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworLWRldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0 YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQorLWJlIHBs YWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxpbWl0 ZWQgYnkgQGZpbGV7L30gb3IKKy1AZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5k aW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgorK0FueSB1c2VkIHN0cmluZyBAZmlsZXskZGF0YWRp cn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hpY2gKKytpcyBk ZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAg QGZpbGV7JGRhdGFkaXJ9CisrbXVzdCBiZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50 IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5CisrQGZpbGV7L30gb3IgQGZpbGV7XH0g ZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KKyAK KyBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIHBhdGggc2VwYXJhdG9yIChAc2FtcHs6fSBv biBHTlUgYW5kIFVuaXgKKyBzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1E T1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMjhvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTI4b2YyOC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjc5N2FmCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWF1dG9sb2FkLTI4b2YyOC5wYXRjaApAQCAtMCwwICsxLDM5MyBAQAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDUvbXNnMDA0NzcuaHRtbAorU3ViamVjdDog W3BhdGNoK2RvYyAyLzJdIGF1dG8tbG9hZDogRml4IGRlZmF1bHQgL3Vzci9saWIvZGVidWcvIGxv YWRpbmcKKworSGksCisKK3dpdGggcmVjZW50IHNlY3VyaXR5IGZpeCB0byB1c2Ugb25seSAkZGF0 YWRpci9hdXRvLWxvYWQvIGRpcmVjdG9yeSBpbnN0ZWFkIG9mCithbnl0aGluZyB1bmRlciAkcHJl Zml4LyAod2hpY2ggY29udGFpbnMgaW5zZWN1cmUgJHByZWZpeC90bXAvIGV0Yy4pIGl0CitpbnRy b2R1Y2VkIGEgcmVncmVzc2lvbiB0aGF0IEdEQidzIGRlZmF1bHQgLS13aXRoLXNlcGFyYXRlLWRl YnVnLWRpciB3b3VsZCBubworbG9uZ2VyIGJlIHNlY3VyZTsgd2hpY2ggSU1PIGNhbiBiZSBhc3N1 bWVkIGFzIHNlY3VyZS4gIFRoaXMgaXMgYmVjYXVzZQorSSBmb3Jnb3QgdG8gbW92ZSBpbnRvICdz ZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JyAoYW5kICdzYWZlLXBhdGgnKSBhbHNvCitk ZWJ1Zy1maWxlLWRpcmV0b3J5OyBiZXNpZGVzICRkYXRhZGlyL2F1dG8tbG9hZCB3aGljaCBJIGhh dmUgbW92ZWQgdGhlcmUuCisKK1RvIGFsc28gc29sdmUgdGhlIHByb2JsZW0gd2l0aCByZWxvY2F0 YWJpbGl0eSBhbmQgbWFrZSBpdCBjb25maWd1cmFibGUgSSBqdXN0CitpbnRyb2R1Y2UgYmVzaWRl cyAkZGF0YWRpciBub3cgYWxzbyAkZGVidWdkaXIgYW5kIGFkZCBpdCBpbnRvCitkZWZhdWx0ICdz ZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Jy4gIEl0IGFsc28gSU1PIG1ha2VzIGl0IG1v cmUgY2xlYXIKK3doYXQgZXZlcnl0aGluZyBpcyBiZWluZyBhdXRvLWxvYWRlZCBpbjoKKworKGdk Yikgc2hvdyBhdXRvLWxvYWQgCitnZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24uCitsaWJ0aHJlYWQtZGI6ICBBdXRv LWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorbG9jYWwt Z2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50IGRp cmVjdG9yeSBpcyBvbi4KK3B5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBz Y3JpcHRzIGlzIG9uLgorc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzIGlzICRkZWJ1Z2RpcjokZGF0YWRpci9hdXRv LWxvYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgor c2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9h ZCBhdXRvLWxvYWRlZCBzY3JpcHRzIGlzICRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQuCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorTm8g cmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTE3LWxpbnV4LWdu dS4KKworSSBmaW5kIGl0IG1vcmUganVzdCBhIGJ1Z2ZpeCBvZiBhIHJlZ3Jlc3Npb24gYnkgbXlz ZWxmLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTItMDUtMTIgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogTkVXUyAoLS13aXRoLWF1dG8t bG9hZC1kaXIpOiBQcmVwZW5kICRkZWJ1Z2RpciB0byB0aGUgZGVmYXVsdCBwYXRoLgorCURlc2Ny aWJlIGl0LgorCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9leHBhbmRfZGlyX3ZhcnMpOiBOZXcg ZnVuY3Rpb24uCisJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSk6IFVzZSBpdCwgcmVt b3ZlIHRoZQorCXN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgY2FsbCB0aGFua3MgdG8gaXQuCisJ KGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFJlbW92ZSB0aGUgZGVidWdfZmlsZV9kaXJlY3Rv cnkgcHJvY2Vzc2luZy4KKwlVc2UgYXV0b19sb2FkX2V4cGFuZF9kaXJfdmFycywgcmVtb3ZlIHRo ZSBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50CisJY2FsbCB0aGFua3MgdG8gaXQuCisJKiBjb25m aWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRvLWxvYWQtZGly KTogUHJlcGVuZCAkZGVidWdkaXIgdG8gdGhlIGRlZmF1bHQKKwlwYXRoLiAgRXNjYXBlICQgYWxz byBmb3IgJGRlYnVnZGlyLgorCSgtLXdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCk6IEVzY2FwZSAk IGFsc28gZm9yICRkZWJ1Z2Rpci4KKwkqIHV0aWxzLmMgKHN1YnN0aXR1dGVfcGF0aF9jb21wb25l bnQpOiBBY2NlcHQgYWxzbyBESVJOQU1FX1NFUEFSQVRPUi4KKworZ2RiL2RvYy8KKzIwMTItMDUt MTIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2Ri LnRleGluZm8gKFNlcGFyYXRlIERlYnVnIEZpbGVzKTogTmV3IGFuY2hvciBkZWJ1Zy1maWxlLWRp cmVjdG9yeS4KKwlNZW50aW9uIGFsc28gLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpci4KKwkoQXV0 by1sb2FkaW5nKTogUHJlcGVuZCAkZGVidWdkaXIgaW4gdGhlIHNhbXBsZSBvdXRwdXQuCisJKEF1 dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBMaWtld2lzZS4gIE1lbnRpb24gYWxzbyAkZGVidWdkaXIg Zm9yIHRoZQorCWF1dG8tbG9hZCBzYWZlLXBhdGggdmFyaWFibGUuCisJKG9iamZpbGUtZ2RiLnB5 IGZpbGUpOiBSZW1vdmUgdGhlIGV4dHJhIGRlYnVnLWZpbGUtZGlyZWN0b3J5IHBhcmFncmFwaC4K KwlNZW50aW9uIGFsc28gJGRlYnVnZGlyIGZvciAnc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVj dG9yeScuCisKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MjQ6 MjAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEy LTA1LTE0IDE0OjI0OjQ5LjUxMDQyMjQ4NSArMDIwMAorQEAgLTMxNyw4ICszMTcsMTAgQEAgc2hv dyB0cmFjZS1zdG9wLW5vdGVzCisgCisgLS13aXRoLWF1dG8tbG9hZC1kaXIKKyAgIENvbmZpZ3Vy ZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnkn CistICBzZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkYXRhZGlyL2F1dG8tbG9hZCcs ICRkYXRhZGlyCistICByZXByZXNlbnRpbmcgR0RCJ3MgZGF0YSBkaXJlY3RvcnkgKGF2YWlsYWJs ZSB2aWEgc2hvdyBkYXRhLWRpcmVjdG9yeSkuCisrICBzZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVs dHMgdG8gJyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQnLAorKyAgJGRlYnVnZGlyIHJlcHJl c2VudGluZyBnbG9iYWwgZGVidWdnaW5nIGluZm8gZGlyZWN0b3JpZXMgKGF2YWlsYWJsZQorKyAg dmlhICdzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5JykgYW5kICRkYXRhZGlyIHJlcHJlc2VudGlu ZyBHREIncyBkYXRhCisrICBkaXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEgJ3Nob3cgZGF0YS1kaXJl Y3RvcnknKS4KKyAKKyAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aAorICAgQ29uZmlndXJlIGRl ZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldHRpbmcKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNS0xNCAxNDoy NDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxv YWQuYwkyMDEyLTA1LTE0IDE0OjI0OjQ5LjUxMTQyMjQ4MyArMDIwMAorQEAgLTE0Nyw2ICsxNDcs MzAgQEAgc3RhdGljIGNoYXIgKmF1dG9fbG9hZF9zYWZlX3BhdGg7CisgICAgY291bnRlcnBhcnQu ICAqLworIHN0YXRpYyBWRUMgKGNoYXJfcHRyKSAqYXV0b19sb2FkX3NhZmVfcGF0aF92ZWM7Cisg CisrLyogRXhwYW5kICRkYXRhZGlyIGFuZCAkZGVidWdkaXIgaW4gU1RSSU5HIGFjY29yZGluZyB0 byB0aGUgcnVsZXMgb2YKKysgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50LiAgUmV0dXJuIHZl Y3RvciBmcm9tIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYywKKysgICB0aGlzIHZlY3RvciBtdXN0 IGJlIGZyZWVkIGJ5IGZyZWVfY2hhcl9wdHJfdmVjIGJ5IHRoZSBjYWxsZXIuICAqLworKworK3N0 YXRpYyBWRUMgKGNoYXJfcHRyKSAqCisrYXV0b19sb2FkX2V4cGFuZF9kaXJfdmFycyAoY29uc3Qg Y2hhciAqc3RyaW5nKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjOworKyAgY2hhciAq czsKKysKKysgIHMgPSB4c3RyZHVwIChzdHJpbmcpOworKyAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBv bmVudCAoJnMsICIkZGF0YWRpciIsIGdkYl9kYXRhZGlyKTsKKysgIHN1YnN0aXR1dGVfcGF0aF9j b21wb25lbnQgKCZzLCAiJGRlYnVnZGlyIiwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKworKyAg aWYgKGRlYnVnX2F1dG9fbG9hZCAmJiBzdHJjbXAgKHMsIHN0cmluZykgIT0gMCkKKysgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCV8oImF1dG8tbG9hZDogRXhwYW5kZWQg JC12YXJpYWJsZXMgdG8gXCIlc1wiLlxuIiksIHMpOworKworKyAgZGlyX3ZlYyA9IGRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlYyAocyk7CisrICB4ZnJlZShzKTsKKysKKysgIHJldHVybiBkaXJfdmVj OworK30KKysKKyAvKiBVcGRhdGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50 IEFVVE9fTE9BRF9TQUZFX1BBVEguICAqLworIAorIHN0YXRpYyB2b2lkCitAQCAtMTYzLDcgKzE4 Nyw3IEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKKyAKKyAgIGZyZWVf Y2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisgCistICBhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVf cGF0aCk7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGF1dG9fbG9hZF9leHBhbmRfZGly X3ZhcnMgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworICAgbGVuID0gVkVDX2xlbmd0aCAoY2hhcl9w dHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKKyAKKyAgIC8qIEFwcGx5IHRpbGRlX2V4cGFu ZCBhbmQgZ2RiX3JlYWxwYXRoIHRvIGVhY2ggQVVUT19MT0FEX1NBRkVfUEFUSF9WRUMKK0BAIC0x NzEsMTYgKzE5NSwxMCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisg ICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisgICAgIHsKKyAgICAgICBjaGFyICpkaXIg PSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworLSAg ICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBhbmRlZCwgKnJlYWxfcGF0aDsKKy0KKy0gICAgICBk ZGlyX3N1YnN0ID0geHN0cmR1cCAoZGlyKTsKKy0gICAgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9u ZW50ICgmZGRpcl9zdWJzdCwgIiRkYXRhZGlyIiwgZ2RiX2RhdGFkaXIpOworLSAgICAgIGV4cGFu ZGVkID0gdGlsZGVfZXhwYW5kIChkZGlyX3N1YnN0KTsKKy0gICAgICB4ZnJlZSAoZGRpcl9zdWJz dCk7CistICAgICAgcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisrICAgICAg Y2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7CisrICAgICAgY2hhciAqcmVhbF9w YXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisgCistICAgICAgLyogRW5zdXJlIHRoZSBj dXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVmb3JlCistCSAkZGF0 YWRpci1leHBhbmRlZCBhbmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KKysgICAgICAvKiBFbnN1cmUg dGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KKyAgICAg ICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhw YW5kZWQpOworIAorICAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCitAQCAtNjQ1LDQyICs2NjMs NiBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICBpZiAo IWlucHV0KQorICAgICB7CistICAgICAgY2hhciAqZGVidWdkaXI7CistICAgICAgVkVDIChjaGFy X3B0cikgKmRlYnVnZGlyX3ZlYzsKKy0gICAgICBpbnQgaXg7CistCistICAgICAgZGVidWdkaXJf dmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Cist ICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChkZWJ1Z2Rpcl92ZWMpOworLQor LSAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCistCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKKy0JCQkgICAgXygiYXV0by1sb2FkOiBTZWFyY2hpbmcgJ3NldCBkZWJ1Zy1maWxlLWRp cmVjdG9yeScgIgorLQkJCSAgICAgICJwYXRoIFwiJXNcIi5cbiIpLAorLQkJCSAgICBkZWJ1Z19m aWxlX2RpcmVjdG9yeSk7CistCistICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFy X3B0ciwgZGVidWdkaXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQorLQl7CistCSAgLyogQWxz byB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3Rvcnku ICAqLworLQkgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGVidWdkaXIpICsgc3RybGVu IChmaWxlbmFtZSkgKyAxKTsKKy0JICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIpOworLQor LQkgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLworLQkgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CistCistCSAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKy0JICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJy Iik7CistCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKy0JICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCistCQkJCQkgICAgICAi XCIlc1wiICVzLlxuIiksCistCQkJCWRlYnVnZmlsZSwKKy0JCQkJaW5wdXQgPyBfKCJleGlzdHMi KSA6IF8oImRvZXMgbm90IGV4aXN0IikpOworLQkgIGlmIChpbnB1dCAhPSBOVUxMKQorLQkgICAg YnJlYWs7CistCX0KKy0gICAgfQorLQorLSAgaWYgKCFpbnB1dCkKKy0gICAgeworICAgICAgIFZF QyAoY2hhcl9wdHIpICp2ZWM7CisgICAgICAgaW50IGl4OworICAgICAgIGNoYXIgKmRpcjsKK0BA IC02ODgsNyArNjcwLDcgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmls ZQorICAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2Yg Z2RiJ3MgZGF0YQorIAkgZGlyZWN0b3J5LiAgKi8KKyAKKy0gICAgICB2ZWMgPSBkaXJuYW1lc190 b19jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9kaXIpOworKyAgICAgIHZlYyA9IGF1dG9fbG9hZF9l eHBhbmRfZGlyX3ZhcnMgKGF1dG9fbG9hZF9kaXIpOworICAgICAgIG1ha2VfY2xlYW51cF9mcmVl X2NoYXJfcHRyX3ZlYyAodmVjKTsKKyAKKyAgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorQEAg LTY5OCwxMCArNjgwLDggQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmls ZQorIAorICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIHZlYywgaXgs IGRpcik7ICsraXgpCisgCXsKKy0JICBkZWJ1Z2ZpbGUgPSB4c3RyZHVwIChkaXIpOworLQkgIHN1 YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZWJ1Z2ZpbGUsICIkZGF0YWRpciIsIGdkYl9kYXRh ZGlyKTsKKy0JICBkZWJ1Z2ZpbGUgPSB4cmVhbGxvYyAoZGVidWdmaWxlLCAoc3RybGVuIChkZWJ1 Z2ZpbGUpCistCQkJCQkgICAgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpKTsKKysJICBkZWJ1Z2Zp bGUgPSB4bWFsbG9jIChzdHJsZW4gKGRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpOworKwkg IHN0cmNweSAoZGVidWdmaWxlLCBkaXIpOworIAorIAkgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRl LCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworIAkgIHN0cmNhdCAoZGVidWdmaWxl LCBmaWxlbmFtZSk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAx Mi0wNS0xNCAxNDoyNDozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoyNDo1NS44NTY0MDk5NzcgKzAyMDAKK0BAIC0x NjcwLDcgKzE2NzAsNyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCisgICAtLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRI CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxv YWQgYXV0by1sb2FkZWQgc2NyaXB0cworLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyRkYXRh ZGlyL2F1dG8tbG9hZF0KKysgICAgICAgICAgICAgICAgICAgICAgICAgIFskZGVidWdkaXI6JGRh dGFkaXIvYXV0by1sb2FkXQorICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS13aXRoLWF1dG8tbG9hZC1k aXJdCitAQCAtODQ5NCwxMCArODQ5NCwxMCBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVm YXVsdCBhdXRvLWxvCisgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9kaXIrc2V0fSIgPSBzZXQ7 IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfZGlyOworIGVsc2UKKy0gIHdpdGhf YXV0b19sb2FkX2Rpcj0nJGRhdGFkaXIvYXV0by1sb2FkJworKyAgd2l0aF9hdXRvX2xvYWRfZGly PSckZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkJworIGZpCisgCistZXNjYXBlX2Rpcj1gZWNo byAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1skXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwm L2cnYAorK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1c KGRhdGFkaXJcfGRlYnVnZGlyXClcPi9cXFxcXFxcXFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRw cmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4 JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCitAQCAtODUy NCw3ICs4NTI0LDcgQEAgZWxzZQorICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9h dXRvX2xvYWRfZGlyIgorIGZpCisgCistZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoIHwgc2VkICdzL1skXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAorK2VzY2Fw ZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1cKGRhdGFk aXJcfGRlYnVnZGlyXClcPi9cXFxcXFxcXFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRwcmVmaXgi ID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNf cHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0xNCAxNDoyNDoyMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAx Mi0wNS0xNCAxNDoyNDo0OS41MTU0MjI0NzcgKzAyMDAKK0BAIC0zNDIsOSArMzQyLDkgQEAgZmkK KyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnldKQorIEFD X0FSR19XSVRIKGF1dG8tbG9hZC1kaXIsCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxv YWQtZGlyPVBBVEhdLAorLSAgW2RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxv YWRlZCBzY3JpcHRzIEA8OkAkZGF0YWRpci9hdXRvLWxvYWRAOj5AXSksLAorLSAgW3dpdGhfYXV0 b19sb2FkX2Rpcj0nJGRhdGFkaXIvYXV0by1sb2FkJ10pCistZXNjYXBlX2Rpcj1gZWNobyAkd2l0 aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dZGF0YWRpclw+L1xcXFxcXFxcXFxcXCYvZydg CisrICBbZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMg QDw6QCRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWRAOj5AXSksLAorKyAgW3dpdGhfYXV0b19s b2FkX2Rpcj0nJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCddKQorK2VzY2FwZV9kaXI9YGVj aG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXVwoZGF0YWRpclx8ZGVidWdkaXJc KVw+L1xcXFxcXFxcXFxcXCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfRElSLCBlc2Nh cGVfZGlyLAorIAkgICAgICBbRGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9h ZGVkIHNjcmlwdHMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfZGlyXSkKK0BA IC0zNTksNyArMzU5LDcgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZQorICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICAgICAgZmldLAorIFt3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRoX2F1dG9fbG9hZF9kaXIiXSkKKy1lc2NhcGVfZGly PWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvW1skXV1kYXRhZGlyXD4v XFxcXFxcXFxcXFxcJi9nJ2AKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGggfCBzZWQgJ3MvW1skXV1cKGRhdGFkaXJcfGRlYnVnZGlyXClcPi9cXFxcXFxcXFxcXFwm L2cnYAorIEFDX0RFRklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFUSCwgZXNjYXBlX2RpciwKKyAJ ICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy5dKQorIEFD X01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6MjQ6MjAu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDUtMTQgMTQ6MjQ6NDkuNTIwNDIyNDY3ICswMjAwCitAQCAtMTYwMjgsOCArMTYw MjgsMTEgQEAgZGVidWcgaW5mb3JtYXRpb24gZmlsZXMsIGluIHRoZSBpbmRpY2F0ZQorIEBmaWxl ey91c3IvbGliL2RlYnVnL3Vzci9iaW4vbHMuZGVidWd9LgorIEBlbmQgaXRlbWl6ZQorIAorLVlv dSBjYW4gc2V0IHRoZSBnbG9iYWwgZGVidWdnaW5nIGluZm8gZGlyZWN0b3JpZXMsIGFuZCB2aWV3 IHRoZQorLWxpc3QgQHZhbHVle0dEQk59IGlzIGN1cnJlbnRseSB1c2luZy4KKytAYW5jaG9ye2Rl YnVnLWZpbGUtZGlyZWN0b3J5fQorK0dsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3RvcmllcyBk ZWZhdWx0IHRvIHdoYXQgaXMgc2V0IGJ5IEB2YWx1ZXtHREJOfQorK2NvbmZpZ3VyZSBvcHRpb24g QG9wdGlvbnstLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyfS4gIER1cmluZyBAdmFsdWV7R0RCTn0g cnVuCisreW91IGNhbiBhbHNvIHNldCB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBpbmZvIGRpcmVjdG9y aWVzLCBhbmQgdmlldyB0aGUgbGlzdAorK0B2YWx1ZXtHREJOfSBpcyBjdXJyZW50bHkgdXNpbmcu CisgCisgQHRhYmxlIEBjb2RlCisgCitAQCAtMjA4MDcsOSArMjA4MTAsOSBAQCBsb2NhbC1nZGJp bml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0CisgICAgICAgICAgICAgICAgIGlzIG9uLgor IHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgor IHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRv IGF1dG8tbG9hZCBmaWxlcworLSAgICAgICAgICAgIGlzICRkYXRhZGlyL2F1dG8tbG9hZC4KKysg ICAgICAgICAgICBpcyAkZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkLgorIHNjcmlwdHMtZGly ZWN0b3J5OiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2Fk ZWQgc2NyaXB0cworLSAgICAgICAgICAgICAgICAgICAgaXMgJGRhdGFkaXIvYXV0by1sb2FkLgor KyAgICAgICAgICAgICAgICAgICAgaXMgJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZC4KKyBA ZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjEwMjUs OSArMjEwMjgsMTEgQEAgZ2V0IGxvYWRlZDoKKyAkIC4vZ2RiIC1xIC4vZ2RiCisgUmVhZGluZyBz eW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyB3YXJuaW5nOiBGaWxlICIv aG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAg ICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGF0YWRp ci9hdXRvLWxvYWQiLgorKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZl LXBhdGgnIHNldAorKyAgICAgICAgIHRvICIkZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkIi4K KyB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcg aGFzIGJlZW4KKy0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRo JyBzZXQgdG8gIiRkYXRhZGlyL2F1dG8tbG9hZCIuCisrICAgICAgICAgZGVjbGluZWQgYnkgeW91 ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0CisrICAgICAgICAgdG8gIiRkZWJ1Z2RpcjokZGF0 YWRpci9hdXRvLWxvYWQiLgorIEBlbmQgc21hbGxleGFtcGxlCisgCisgVGhlIGxpc3Qgb2YgdHJ1 c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6 CitAQCAtMjEwNjAsMTEgKzIxMDY1LDEwIEBAIGhvc3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3Ig aW4gdXNlLgorIEBlbmQgdGFibGUKKyAKKyBUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIHdoYXQg QGNvZGV7LS13aXRoLWF1dG8tbG9hZC1kaXJ9IGhhcyBiZWVuIGNvbmZpZ3VyZWQKKy10byAoQHB4 cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRhdGFkaXJ9IHN1YnN0aXR1YXRpb24g YXBwbGllcyB0aGUgc2FtZQorLWFzIGZvciBAeHJlZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGly ZWN0b3J5fS4KKy1UaGUgZGVmYXVsdCBAY29kZXtzZXQKKy1hdXRvLWxvYWQgc2FmZS1wYXRofSB2 YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24K Ky1vcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrdG8gKEBweHJl Znt3aXRoLWF1dG8tbG9hZC1kaXJ9KS4gIEBmaWxleyRkZWJ1Z2Rpcn0gYW5kIEBmaWxleyRkYXRh ZGlyfQorK3N1YnN0aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZSBhcyBmb3IgQHhyZWZ7c2V0IGF1 dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0uCisrVGhlIGRlZmF1bHQgQGNvZGV7c2V0IGF1dG8t bG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieQorK0B2YWx1ZXtH REJOfSBjb25maWd1cmF0aW9uIG9wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtc2FmZS1w YXRofS4KKyAKKyBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhp cyBzZWN1cml0eSBwcm90ZWN0aW9uLAorIGNvcnJlc3BvbmRpbmcgQHZhbHVle0dEQk59IGNvbmZp Z3VyYXRpb24gb3B0aW9uIGlzCitAQCAtMjUxNTgsMTIgKzI1MTYyLDcgQEAgdGhhdCB0aGUgZmls ZSBuYW1lIGlzIGFic29sdXRlLCBmb2xsb3dpbgorIEBjb2Rley59IGFuZCBAY29kZXsuLn0gY29t cG9uZW50cy4gIElmIHRoaXMgZmlsZSBleGlzdHMgYW5kIGlzCisgcmVhZGFibGUsIEB2YWx1ZXtH REJOfSB3aWxsIGV2YWx1YXRlIGl0IGFzIGEgUHl0aG9uIHNjcmlwdC4KKyAKKy1JZiB0aGlzIGZp bGUgZG9lcyBub3QgZXhpc3QsIGFuZCBpZiB0aGUgcGFyYW1ldGVyCistQGNvZGV7ZGVidWctZmls ZS1kaXJlY3Rvcnl9IGlzIHNldCAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZpbGVzfSksCistdGhl biBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvciBAdmFye3NjcmlwdC1uYW1lfSBpbiBhbGwgb2Yg dGhlCistZGlyZWN0b3JpZXMgbWVudGlvbmVkIGluIHRoZSB2YWx1ZSBvZiBAY29kZXtkZWJ1Zy1m aWxlLWRpcmVjdG9yeX0uCistCistRmluYWxseSwgaWYgdGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0 LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yCisrSWYgdGhpcyBmaWxlIGRvZXMgbm90 IGV4aXN0LCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yCisgQHZhcntzY3JpcHQtbmFt ZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIGFzIHNwZWNpZmllZCBiZWxvdy4KKyAK KyBOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlzIHNjcmlwdCBmaWxlIGFsc28gcmVxdWlyZXMgYWNj b3JkaW5nbHkgY29uZmlndXJlZAorQEAgLTI1MTgxLDEyICsyNTE4MCwxNCBAQCBFYWNoIGVudHJ5 IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvCisgQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZl LXBhdGh9IChAcHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9KS4KKyAKKyBAYW5jaG9ye3dp dGgtYXV0by1sb2FkLWRpcn0KKy1UaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkYXRh ZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKy1hdXRvLWxvYWQgc2FmZS1w YXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3Vy YXRpb24KKy1vcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLWRpcn0uCistCistQW55IHVz ZWQgc3RyaW5nIEBmaWxleyRkYXRhZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2RhdGEt ZGlyZWN0b3J5fSB3aGljaAorLWlzIGRldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0dXAg KEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGF0YWRpcn0KKytUaGlzIHZhcmlhYmxlIGRl ZmF1bHRzIHRvIEBmaWxleyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1 bHQKKytAY29kZXtzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3Zl cnJpZGVuIGJ5IEB2YWx1ZXtHREJOfQorK2NvbmZpZ3VyYXRpb24gb3B0aW9uIEBvcHRpb257LS13 aXRoLWF1dG8tbG9hZC1kaXJ9LgorKworK0FueSB1c2VkIHN0cmluZyBAZmlsZXskZGVidWdkaXJ9 IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGVidWctZmlsZS1kaXJlY3Rvcnl9CisrdmFsdWUg KEBweHJlZntTZXBhcmF0ZSBEZWJ1ZyBGaWxlc30pIGFuZCBhbnkgdXNlZCBzdHJpbmcgQGZpbGV7 JGRhdGFkaXJ9IHdpbGwKKytnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hp Y2ggaXMgZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cAorKyhAcHhyZWZ7RGF0YSBG aWxlc30pLiAgQGZpbGV7JGRlYnVnZGlyfSBhbmQgQGZpbGV7JGRhdGFkaXJ9CisgbXVzdCBiZSBw bGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1p dGVkIGJ5CisgQGZpbGV7L30gb3IgQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVu ZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi91dGlscy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi91dGlscy5jCTIwMTItMDUtMTQgMTQ6MjQ6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA1LTE0IDE0OjI0OjQ5LjUyMTQyMjQ2NSAr MDIwMAorQEAgLTM5MjcsOCArMzkyNyw4IEBAIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29u c3QgY2hhciAqZGkKKyAKKyAvKiBTdWJzdGl0dXRlIGFsbCBvY2N1cmVuY2VzIG9mIHN0cmluZyBG Uk9NIGJ5IHN0cmluZyBUTyBpbiAqU1RSSU5HUC4gICpTVFJJTkdQCisgICAgbXVzdCBjb21lIGZy b20geHJlYWxsb2MtY29tcGF0aWJsZSBhbGxvY2F0b3IgYW5kIGl0IG1heSBiZSB1cGRhdGVkLiAg RlJPTQorLSAgIG5lZWRzIHRvIGJlIGRlbGltaXRlZCBieSBJU19ESVJfU0VQQVJBVE9SIChvciBi ZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvcgorLSAgIGVuZCBvZiAqU1RSSU5HUC4gICovCisrICAg bmVlZHMgdG8gYmUgZGVsaW1pdGVkIGJ5IElTX0RJUl9TRVBBUkFUT1Igb3IgRElSTkFNRV9TRVBB UkFUT1IgKG9yIGJlCisrICAgbG9jYXRlZCBhdCB0aGUgc3RhcnQgb3IgZW5kIG9mICpTVFJJTkdQ LiAgKi8KKyAKKyB2b2lkCisgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoY2hhciAqKnN0cmlu Z3AsIGNvbnN0IGNoYXIgKmZyb20sIGNvbnN0IGNoYXIgKnRvKQorQEAgLTM5NDMsOCArMzk0Mywx MCBAQCBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5nCisgICAgICAgaWYg KHMgPT0gTlVMTCkKKyAJYnJlYWs7CisgCistICAgICAgaWYgKChzID09IHN0cmluZyB8fCBJU19E SVJfU0VQQVJBVE9SIChzWy0xXSkpCistICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAn IHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKSkpCisrICAgICAgaWYgKChzID09IHN0 cmluZyB8fCBJU19ESVJfU0VQQVJBVE9SIChzWy0xXSkKKysJICAgfHwgc1stMV0gPT0gRElSTkFN RV9TRVBBUkFUT1IpCisrICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAnIHx8IElTX0RJ Ul9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKQorKwkgICAgICB8fCBzW2Zyb21fbGVuXSA9PSBESVJO QU1FX1NFUEFSQVRPUikpCisgCXsKKyAJICBjaGFyICpzdHJpbmdfbmV3OworIAoKZGlmZiAtLWdp dCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggZDRiOTZkYS4uMjU3M2I5MiAxMDA2NDQKLS0t IGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM1LDcgKzM1LDcgQEAgVmVyc2lvbjogNy40 LjUwLiV7c25hcH0KIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJl c2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0 IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3Ig dGhlIHRlc3RpbmcuCi1SZWxlYXNlOiA0NCV7P2Rpc3R9CitSZWxlYXNlOiA0NSV7P2Rpc3R9CiAK IExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFu ZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5k IFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTU5MCwyOCAr NTkwLDM0IEBAIFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5mby5wYXRjaAogCiAjIFNlY3Vy aXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUgInNldCBhdXRvLWxv YWQiIChCWiA3NTYxMTcpLgogIz1wdXNoCi1QYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAxb2YyMi5w YXRjaAotUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMjIucGF0Y2gKLVBhdGNoNjY0OiBnZGIt YXV0b2xvYWQtMDNvZjIyLnBhdGNoCi1QYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2YyMi5wYXRj aAotUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMjIucGF0Y2gKLVBhdGNoNjY3OiBnZGItYXV0 b2xvYWQtMDZvZjIyLnBhdGNoCi1QYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YyMi5wYXRjaAot UGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMjIucGF0Y2gKLVBhdGNoNjcwOiBnZGItYXV0b2xv YWQtMDlvZjIyLnBhdGNoCi1QYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YyMi5wYXRjaAotUGF0 Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMjIucGF0Y2gKLVBhdGNoNjczOiBnZGItYXV0b2xvYWQt MTJvZjIyLnBhdGNoCi1QYXRjaDY3NDogZ2RiLWF1dG9sb2FkLTEzb2YyMi5wYXRjaAotUGF0Y2g2 NzU6IGdkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2gKLVBhdGNoNjc2OiBnZGItYXV0b2xvYWQtMTVv ZjIyLnBhdGNoCi1QYXRjaDY3NzogZ2RiLWF1dG9sb2FkLTE2b2YyMi5wYXRjaAotUGF0Y2g2Nzg6 IGdkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2gKLVBhdGNoNjc5OiBnZGItYXV0b2xvYWQtMThvZjIy LnBhdGNoCi1QYXRjaDY4MDogZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaAotUGF0Y2g2ODE6IGdk Yi1hdXRvbG9hZC0yMG9mMjIucGF0Y2gKLVBhdGNoNjgyOiBnZGItYXV0b2xvYWQtMjFvZjIyLnBh dGNoCi1QYXRjaDY4MzogZ2RiLWF1dG9sb2FkLTIyb2YyMi5wYXRjaAorUGF0Y2g2NjI6IGdkYi1h dXRvbG9hZC0wMW9mMjgucGF0Y2gKK1BhdGNoNjYzOiBnZGItYXV0b2xvYWQtMDJvZjI4LnBhdGNo CitQYXRjaDY2NDogZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaAorUGF0Y2g2NjU6IGdkYi1hdXRv bG9hZC0wNG9mMjgucGF0Y2gKK1BhdGNoNjY2OiBnZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoCitQ YXRjaDY2NzogZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaAorUGF0Y2g2Njg6IGdkYi1hdXRvbG9h ZC0wN29mMjgucGF0Y2gKK1BhdGNoNjY5OiBnZGItYXV0b2xvYWQtMDhvZjI4LnBhdGNoCitQYXRj aDY3MDogZ2RiLWF1dG9sb2FkLTA5b2YyOC5wYXRjaAorUGF0Y2g2NzE6IGdkYi1hdXRvbG9hZC0x MG9mMjgucGF0Y2gKK1BhdGNoNjcyOiBnZGItYXV0b2xvYWQtMTFvZjI4LnBhdGNoCitQYXRjaDY3 MzogZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaAorUGF0Y2g2NzQ6IGdkYi1hdXRvbG9hZC0xM29m MjgucGF0Y2gKK1BhdGNoNjc1OiBnZGItYXV0b2xvYWQtMTRvZjI4LnBhdGNoCitQYXRjaDY3Njog Z2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaAorUGF0Y2g2Nzc6IGdkYi1hdXRvbG9hZC0xNm9mMjgu cGF0Y2gKK1BhdGNoNjc4OiBnZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCitQYXRjaDY3OTogZ2Ri LWF1dG9sb2FkLTE4b2YyOC5wYXRjaAorUGF0Y2g2ODA6IGdkYi1hdXRvbG9hZC0xOW9mMjgucGF0 Y2gKK1BhdGNoNjgxOiBnZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCitQYXRjaDY4MjogZ2RiLWF1 dG9sb2FkLTIxb2YyOC5wYXRjaAorUGF0Y2g2ODM6IGdkYi1hdXRvbG9hZC0yMm9mMjgucGF0Y2gK K1BhdGNoNjg0OiBnZGItYXV0b2xvYWQtMjNvZjI4LnBhdGNoCitQYXRjaDY4NTogZ2RiLWF1dG9s b2FkLTI0b2YyOC5wYXRjaAorUGF0Y2g2ODY6IGdkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2gKK1Bh dGNoNjg3OiBnZGItYXV0b2xvYWQtMjZvZjI4LnBhdGNoCitQYXRjaDY4ODogZ2RiLWF1dG9sb2Fk LTI3b2YyOC5wYXRjaAorUGF0Y2g2ODk6IGdkYi1hdXRvbG9hZC0yOG9mMjgucGF0Y2gKIAogJWlm IDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRFX0ZFRE9SQV9HREIgd291 bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTkyNSw2ICs5MzEsMTIgQEAgcm0gLWYgZ2RiL2p2LWV4 cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNjgxIC1w MQogJXBhdGNoNjgyIC1wMQogJXBhdGNoNjgzIC1wMQorJXBhdGNoNjg0IC1wMQorJXBhdGNoNjg1 IC1wMQorJXBhdGNoNjg2IC1wMQorJXBhdGNoNjg3IC1wMQorJXBhdGNoNjg4IC1wMQorJXBhdGNo Njg5IC1wMQogCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0gfHwgMCV7P3NjbDoxfQpA QCAtMTA0Nyw4ICsxMDU5LDggQEAgJCg6IFJIRUwtNSBsaWJycG0gaGFzIGluY29tcGF0aWJsZSBB UEkuICkJCQlcCiAJLS1kaXNhYmxlLWlucHJvY2Vzcy1hZ2VudAkJCQlcCiAlZW5kaWYKICQoOiAl e19iaW5kaXJ9L21vbm8tZ2RiLnB5IGlzIHdvcmthcm91bmQgZm9yIG1vbm8gQlogODE1NTAxLiAp CQkJCQkJCQkJCVwKLQkgICAgICAtLXdpdGgtYXV0by1sb2FkLWRpcj0nJGRkaXIvYXV0by1sb2Fk JXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWR9JwkJCQkJCVwKLQktLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aD0nJGRkaXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFk aXJ9L2dkYi9hdXRvLWxvYWR9Oi91c3IvbGliL2RlYnVnOiV7X3Jvb3RfYmluZGlyfS9tb25vLWdk Yi5weScJXAorCSAgICAgIC0td2l0aC1hdXRvLWxvYWQtZGlyPSckZGVidWdkaXI6JGRhdGFkaXIv YXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWR9JwkJCQlcCisJ LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9JyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQl ez9zY2w6OiV7X3Jvb3RfZGF0YWRpcn0vZ2RiL2F1dG8tbG9hZH06JXtfcm9vdF9iaW5kaXJ9L21v bm8tZ2RiLnB5JwlcCiAlaWZhcmNoIHNwYXJjIHNwYXJjdjkKIAlzcGFyYy0le192ZW5kb3J9LSV7 X3RhcmdldF9vc30lez9fZ251fQogJWVsc2UKQEAgLTE0MDksNiArMTQyMSw5IEBAIGZpCiAlZW5k aWYgIyAwJXshP2VsNToxfSB8fCAiJXtfdGFyZ2V0X2NwdX0iID09ICJub2FyY2giCiAKICVjaGFu Z2Vsb2cKKyogTW9uIE1heSAxNCAyMDEyIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPiAtIDcuNC41MC4yMDEyMDEyMC00NS5mYzE3CistIFJlbmFtZSAic2V0IGF1dG8t bG9hZCIgcGF0Y2hzZXQgdmFyaWFibGUgJGRkaXIgdG8gJGRhdGFkaXIuCisKICogV2VkIE1heSAg OSAyMDEyIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41 MC4yMDEyMDEyMC00NC5mYzE3CiAtIEZpeCBpbiAic2V0IGF1dG8tbG9hZCIgcGF0Y2hzZXQgZm9y IFNDTCBzY3JpcHRzIGluaGVyaXRhbmNlIChCWiA4MTU5MTApLgogCg==