From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.5. Date: Sat, 27 Jun 2026 23:55:51 GMT Message-ID: <178260455100.1.17662466816612967453.rpms-gdb-30f2069f6eae@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 30f2069f6eae88d7672db5d92a457dce007d578e ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMzBmMjA2OWY2ZWFlODhkNzY3MmRiNWQ5MmE0NTdkY2UwMDdk NTc4ZQogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wOC0xOFQwOTo0MTowOSswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArMzM0OS8tNDY5IGluIDEzIGZpbGUocykKICAgICAgICAg ICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy8zMGYy MDY5ZjZlYWU4OGQ3NjcyZGI1ZDkyYTQ1N2RjZTAwN2Q1NzhlP2JyYW5jaD1nZGItMTcuMi1yZWJh c2UtZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFzZSB0byBGU0YgR0RCIDcu NS4KCi0gVXBkYXRlIGRsb3BlbiB0byBzdXBwb3J0IHR3byB2YXJpYW50cyBvZiBnbGliYyAoR2Fy eSBCZW5zb24sIEJaIDY2OTQzMikuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0 aWdub3JlCmluZGV4IDViNzI0MzMuLjY2ZTBkZWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysr IGIvLmdpdGlnbm9yZQpAQCAtMSwyICsxLDIgQEAKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi1y MTU1OTc4LnRhci5iejIKLS9nZGItNy40LjkxLjIwMTIwODAxLnRhci5iejIKKy9nZGItNy41LnRh ci5iejIKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMW9mNy5wYXRjaCBiL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjE4OTFmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJv YmUtMW9mNy5wYXRjaApAQCAtMCwwICsxLDc5NSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wNy9tc2cwMDEyMy5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA3LzE4IDA0OjM2OjE1CTEuMTQ0NzMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3 LzE4IDE2OjEyOjE1CTEuMTQ0NzQKKyMjIC0xLDMgKzEsMzcgQEAKKysyMDEyLTA3LTE4ICBTZXJn aW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorKworKwkqIGVsZnJlYWQu YyAoZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IFJlbW92ZSBgb2JqZmlsZScgYXJndW1l bnQuCisrCShlbGZfY29tcGlsZV90b19heCk6IExpa2V3aXNlLgorKwkqIGluZnJ1bi5jIChpbnNl cnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlKTogTGlrZXdpc2UuCisrCShjaGVja19leGNl cHRpb25fcmVzdW1lKTogUmVtb3ZlIGBvYmpmaWxlJyB2YXJpYWJsZS4KKysJKiBwcm9iZS5jIChm aW5kX3Byb2JlX2J5X3BjKTogUmVtb3ZlIGBvYmpmaWxlJyBhcmd1bWVudC4KKysJKHN0cnVjdCBw cm9iZV9hbmRfb2JqZmlsZSwgcHJvYmVfYW5kX29iamZpbGVfcyk6IERlbGV0ZS4KKysJKGNvbGxl Y3RfcHJvYmVzKTogQWRqdXN0IHJldHVybiB2YWx1ZSB0byBgVkVDIChwcm9iZV9wKSAqJy4KKysJ KGNvbXBhcmVfZW50cmllcyk6IFJlbmFtZSB0by4uLgorKwkoY29tcGFyZV9wcm9iZXMpOiAuLi50 aGlzLiAgQWRqdXN0IGZ1bmN0aW9uIHRvIHdvcmsgd2l0aAorKwlgc3RydWN0IHByb2JlIConLiAg UmVuYW1lIHZhcmlhYmxlcyBgZWEnIGFuZCBgZWInIHRvIGBwYScgYW5kIGBwYicKKysJcmVzcGVj dGl2ZWx5LgorKwkoZ2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5mbyk6IEFkanVzdCBgcHJvYmVz JyBhcmd1bWVudCB0byBiZQorKwlgVkVDIChwcm9iZV9wKSAqJy4KKysJKHByaW50X3VpX291dF9p bmZvKTogQWRqdXN0IGFyZ3VtZW50IHRvIGJlIGBzdHJ1Y3QgcHJvYmUgKicuCisrCShpbmZvX3By b2Jlc19mb3Jfb3BzKTogQWRqdXN0IGludGVybmFsIGNvbXB1dGF0aW9ucyB0byB1c2UKKysJYFZF QyAocHJvYmVfcCkgKicuCisrCShwcm9iZV9zYWZlX2V2YWx1YXRlX2F0X3BjKTogUmVmYWN0b3Ig dG8gbm90IHBhc3MgYG9iamZpbGUnIGFueW1vcmUuCisrCSogcHJvYmUuaCAoc3RydWN0IHByb2Jl X29wcykgPGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCwgY29tcGlsZV90b19heCwKKysJZ2VuX2lu Zm9fcHJvYmVzX3RhYmxlX3ZhbHVlcz46IFJlbW92ZSBgb2JqZmlsZScgYXJndW1lbnQuCisrCShz dHJ1Y3QgcHJvYmUpIDxvYmpmaWxlPjogTmV3IGZpZWxkLgorKwkoZmluZF9wcm9iZV9ieV9wYyk6 IFJlbW92ZSBgb2JqZmlsZScgYXJndW1lbnQuCisrCSogc3RhcC1wcm9iZS5jIChzdGFwX3BhcnNl X3Byb2JlX2FyZ3VtZW50cyk6IExpa2V3aXNlLgorKwkoc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRf Y291bnQpOiBMaWtld2lzZS4KKysJKHN0YXBfZ2V0X2FyZyk6IExpa2V3aXNlLgorKwkoc3RhcF9l dmFsdWF0ZV9wcm9iZV9hcmd1bWVudCk6IExpa2V3aXNlLgorKwkoc3RhcF9jb21waWxlX3RvX2F4 KTogTGlrZXdpc2UuCisrCShjb21waWxlX3Byb2JlX2FyZyk6IFJlZmFjdG9yIG5vdCB0byBwYXNz IGBvYmpmaWxlJyBhbnltb3JlLgorKwkoaGFuZGxlX3N0YXBfcHJvYmUpOiBGaWxsIGBvYmpmaWxl JyBmaWVsZCBmcm9tIGBzdHJ1Y3QgcHJvYmUnLgorKwkoc3RhcF9nZW5faW5mb19wcm9iZXNfdGFi bGVfaGVhZGVyKTogUmVtb3ZlIGBvYmpmaWxlJyBhcmd1bWVudC4KKysJKiBzeW1maWxlLmggKHN0 cnVjdCBzeW1fcHJvYmVfZm5zKSA8c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50LAorKwlzeW1f Y29tcGlsZV90b19heD46IExpa2V3aXNlLgorKworIDIwMTItMDctMTggIFRlcnJ5IEd1byAgPHRl cnJ5Lmd1b0Bhcm0uY29tPgorIAorIAlQUiAxNDMyOQorLS0tIHNyYy9nZGIvZWxmcmVhZC5jCTIw MTIvMDYvMjYgMjA6MTQ6MDEJMS4xMzMKKysrKyBzcmMvZ2RiL2VsZnJlYWQuYwkyMDEyLzA3LzE4 IDE2OjEyOjE1CTEuMTM0CitAQCAtMTYzNSwzMyArMTYzNSwyOSBAQAorICAgIHN5bWZpbGUuaC4g ICovCisgCisgc3RhdGljIHVuc2lnbmVkCistZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJICAgICAgc3RydWN0IHByb2JlICpwcm9iZSkK KytlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlKQorIHsK Ky0gIHJldHVybiBwcm9iZS0+cG9wcy0+Z2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSwg b2JqZmlsZSk7CisrICByZXR1cm4gcHJvYmUtPnBvcHMtPmdldF9wcm9iZV9hcmd1bWVudF9jb3Vu dCAocHJvYmUpOworIH0KKyAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX2V2YWx1YXRlX3By b2JlX2FyZ3VtZW50JywgYXMgZG9jdW1lbnRlZCBpbgorICAgIHN5bWZpbGUuaC4gICovCisgCisg c3RhdGljIHN0cnVjdCB2YWx1ZSAqCistZWxmX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmUsCistCQkJ ICAgICB1bnNpZ25lZCBuKQorK2VsZl9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IHBy b2JlICpwcm9iZSwgdW5zaWduZWQgbikKKyB7CistICByZXR1cm4gcHJvYmUtPnBvcHMtPmV2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgb2JqZmlsZSwgbik7CisrICByZXR1cm4gcHJvYmUt PnBvcHMtPmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7CisgfQorIAorIC8qIElt cGxlbWVudGF0aW9uIG9mIGBzeW1fY29tcGlsZV90b19heCcsIGFzIGRvY3VtZW50ZWQgaW4gc3lt ZmlsZS5oLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLWVsZl9jb21waWxlX3RvX2F4IChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKKy0JCSAgIHN0cnVjdCBwcm9iZSAqcHJvYmUsCisrZWxmX2NvbXBp bGVfdG9fYXggKHN0cnVjdCBwcm9iZSAqcHJvYmUsCisgCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAq ZXhwciwKKyAJCSAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAorIAkJICAgdW5zaWduZWQgbikK KyB7CistICBwcm9iZS0+cG9wcy0+Y29tcGlsZV90b19heCAocHJvYmUsIG9iamZpbGUsIGV4cHIs IHZhbHVlLCBuKTsKKysgIHByb2JlLT5wb3BzLT5jb21waWxlX3RvX2F4IChwcm9iZSwgZXhwciwg dmFsdWUsIG4pOworIH0KKyAKKyAvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX3JlbG9jYXRlX3By b2JlJywgYXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLworLS0tIHNyYy9nZGIvaW5mcnVu LmMJMjAxMi8wNy8wMSAxMDozNzowNAkxLjU0OQorKysrIHNyYy9nZGIvaW5mcnVuLmMJMjAxMi8w Ny8xOCAxNjoxMjoxNgkxLjU1MAorQEAgLTU1MTgsNyArNTUxOCw2IEBACisgc3RhdGljIHZvaWQK KyBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlIChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwLAorIAkJCQkgICAgY29uc3Qgc3RydWN0IHByb2JlICpwcm9iZSwKKy0JCQkJICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQor IHsKKyAgIHN0cnVjdCB2YWx1ZSAqYXJnX3ZhbHVlOworQEAgLTU1MzQsNyArNTUzMyw3IEBACisg ICBpZiAoZGVidWdfaW5mcnVuKQorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs CisgCQkJImluZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlc1xuIiwKKy0JCQlwYWRkcmVzcyAo Z2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSksCisrCQkJcGFkZHJlc3MgKGdldF9vYmpmaWxlX2Fy Y2ggKHByb2JlLT5vYmpmaWxlKSwKKyAJCQkJICBoYW5kbGVyKSk7CisgCisgICBicCA9IHNldF9t b21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKK0BAIC01 NTUyLDcgKzU1NTEsNiBAQAorIAkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyB7CisgICB2 b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworLSAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7CisgICBjb25zdCBzdHJ1Y3QgcHJvYmUgKnByb2JlOworICAgc3RydWN0IHN5bWJvbCAqZnVu YzsKKyAKK0BAIC01NTYwLDExICs1NTU4LDEwIEBACisgICAgICBTeXN0ZW1UYXAgcHJvYmUgcG9p bnQuICBJZiBzbywgdGhlIHByb2JlIGhhcyB0d28gYXJndW1lbnRzOiB0aGUKKyAgICAgIENGQSBh bmQgdGhlIEhBTkRMRVIuICBXZSBpZ25vcmUgdGhlIENGQSwgZXh0cmFjdCB0aGUgaGFuZGxlciwg YW5kCisgICAgICBzZXQgYSBicmVha3BvaW50IHRoZXJlLiAgKi8KKy0gIHByb2JlID0gZmluZF9w cm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksICZvYmpmaWxlKTsKKysgIHByb2JlID0g ZmluZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYgKHByb2JlKQor ICAgICB7CistICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSAoZWNzLT5l dmVudF90aHJlYWQsIHByb2JlLAorLQkJCQkJICBvYmpmaWxlLCBmcmFtZSk7CisrICAgICAgaW5z ZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSAoZWNzLT5ldmVudF90aHJlYWQsIHByb2Jl LCBmcmFtZSk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCistLS0gc3JjL2dkYi9wcm9iZS5j CTIwMTIvMDUvMDggMDE6MzU6MzQJMS4zCisrKysgc3JjL2dkYi9wcm9iZS5jCTIwMTIvMDcvMTgg MTY6MTI6MTcJMS40CitAQCAtMjA0LDcgKzIwNCw3IEBACisgLyogU2VlIGRlZmluaXRpb24gaW4g cHJvYmUuaC4gICovCisgCisgc3RydWN0IHByb2JlICoKKy1maW5kX3Byb2JlX2J5X3BjIChDT1JF X0FERFIgcGMsIHN0cnVjdCBvYmpmaWxlICoqb2JqZmlsZV9vdXQpCisrZmluZF9wcm9iZV9ieV9w YyAoQ09SRV9BRERSIHBjKQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworIAorQEAg LTIyMSwxMCArMjIxLDcgQEAKKyAgICAgcHJvYmVzID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9m bnMtPnN5bV9nZXRfcHJvYmVzIChvYmpmaWxlKTsKKyAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVy YXRlIChwcm9iZV9wLCBwcm9iZXMsIGl4LCBwcm9iZSk7IGl4KyspCisgICAgICAgaWYgKHByb2Jl LT5hZGRyZXNzID09IHBjKQorLQl7CistCSAgKm9iamZpbGVfb3V0ID0gb2JqZmlsZTsKKy0JICBy ZXR1cm4gcHJvYmU7CistCX0KKysJcmV0dXJuIHByb2JlOworICAgfQorIAorICAgcmV0dXJuIE5V TEw7CitAQCAtMjMyLDIxICsyMjksNiBAQAorIAorIAwKKyAKKy0vKiBBIHV0aWxpdHkgc3RydWN0 dXJlLiAgQSBWRUMgb2YgdGhlc2UgaXMgYnVpbHQgd2hlbiBoYW5kbGluZyAiaW5mbworLSAgIHBy b2JlcyIuICAqLworLQorLXN0cnVjdCBwcm9iZV9hbmRfb2JqZmlsZQorLXsKKy0gIC8qIFRoZSBw cm9iZS4gICovCistICBzdHJ1Y3QgcHJvYmUgKnByb2JlOworLQorLSAgLyogVGhlIHByb2JlJ3Mg b2JqZmlsZS4gICovCistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKy19OworLQorLXR5cGVk ZWYgc3RydWN0IHByb2JlX2FuZF9vYmpmaWxlIHByb2JlX2FuZF9vYmpmaWxlX3M7CistREVGX1ZF Q19PIChwcm9iZV9hbmRfb2JqZmlsZV9zKTsKKy0KKyAvKiBBIGhlbHBlciBmdW5jdGlvbiBmb3Ig Y29sbGVjdF9wcm9iZXMgdGhhdCBjb21waWxlcyBhIHJlZ2V4cCBhbmQKKyAgICB0aHJvd3MgYW4g ZXhjZXB0aW9uIG9uIGVycm9yLiAgVGhpcyBpbnN0YWxscyBhIGNsZWFudXAgdG8gZnJlZSB0aGUK KyAgICByZXN1bHRpbmcgcGF0dGVybiBvbiBzdWNjZXNzLiAgSWYgUlggaXMgTlVMTCwgdGhpcyBk b2VzIG5vdGhpbmcuICAqLworQEAgLTI3NSwxNiArMjU3LDE2IEBACisgICAgSWYgUE9QUyBpcyBu b3QgTlVMTCwgb25seSBwcm9iZXMgb2YgdGhpcyBjZXJ0YWluIHByb2JlX29wcyB3aWxsIG1hdGNo LgorICAgIEVhY2ggYXJndW1lbnQgaXMgYSByZWdleHAsIG9yIE5VTEwsIHdoaWNoIG1hdGNoZXMg YW55dGhpbmcuICAqLworIAorLXN0YXRpYyBWRUMgKHByb2JlX2FuZF9vYmpmaWxlX3MpICoKKytz dGF0aWMgVkVDIChwcm9iZV9wKSAqCisgY29sbGVjdF9wcm9iZXMgKGNoYXIgKm9iam5hbWUsIGNo YXIgKnByb3ZpZGVyLCBjaGFyICpwcm9iZV9uYW1lLAorIAkJY29uc3Qgc3RydWN0IHByb2JlX29w cyAqcG9wcykKKyB7CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKy0gIFZFQyAocHJvYmVf YW5kX29iamZpbGVfcykgKnJlc3VsdCA9IE5VTEw7CisrICBWRUMgKHByb2JlX3ApICpyZXN1bHQg PSBOVUxMOworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXAsICpjbGVhbnVwX3RlbXBzOworICAg cmVnZXhfdCBvYmpfcGF0LCBwcm92X3BhdCwgcHJvYmVfcGF0OworIAorLSAgY2xlYW51cCA9IG1h a2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKHByb2JlX2FuZF9vYmpmaWxlX3MpLCAmcmVzdWx0KTsK KysgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChwcm9iZV9wKSwgJnJlc3Vs dCk7CisgCisgICBjbGVhbnVwX3RlbXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOworICAgY29tcGlsZV9yeF9vcl9lcnJvciAoJnByb3ZfcGF0LCBwcm92aWRlciwgXygiSW52 YWxpZCBwcm92aWRlciByZWdleHAiKSk7CitAQCAtMzEwLDggKzI5Miw2IEBACisgCisgICAgICAg Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9wLCBwcm9iZXMsIGl4LCBwcm9iZSk7IGl4 KyspCisgCXsKKy0JICBwcm9iZV9hbmRfb2JqZmlsZV9zIGVudHJ5OworLQorIAkgIGlmIChwb3Bz ICE9IE5VTEwgJiYgcHJvYmUtPnBvcHMgIT0gcG9wcykKKyAJICAgIGNvbnRpbnVlOworIAorQEAg LTMyMyw5ICszMDMsNyBAQAorIAkgICAgICAmJiByZWdleGVjICgmcHJvYmVfcGF0LCBwcm9iZS0+ bmFtZSwgMCwgTlVMTCwgMCkgIT0gMCkKKyAJICAgIGNvbnRpbnVlOworIAorLQkgIGVudHJ5LnBy b2JlID0gcHJvYmU7CistCSAgZW50cnkub2JqZmlsZSA9IG9iamZpbGU7CistCSAgVkVDX3NhZmVf cHVzaCAocHJvYmVfYW5kX29iamZpbGVfcywgcmVzdWx0LCAmZW50cnkpOworKwkgIFZFQ19zYWZl X3B1c2ggKHByb2JlX3AsIHJlc3VsdCwgcHJvYmUpOworIAl9CisgICAgIH0KKyAKK0BAIC0zMzQs MzYgKzMxMiwzNiBAQAorICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCistLyogQSBxc29ydCBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciBwcm9iZV9hbmRfb2JqZmlsZV9zIG9iamVjdHMuICAqLworKy8q IEEgcXNvcnQgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgcHJvYmVfcCBvYmplY3RzLiAgKi8KKyAK KyBzdGF0aWMgaW50CistY29tcGFyZV9lbnRyaWVzIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiKQorK2NvbXBhcmVfcHJvYmVzIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorIHsK Ky0gIGNvbnN0IHByb2JlX2FuZF9vYmpmaWxlX3MgKmVhID0gYTsKKy0gIGNvbnN0IHByb2JlX2Fu ZF9vYmpmaWxlX3MgKmViID0gYjsKKysgIGNvbnN0IHN0cnVjdCBwcm9iZSAqcGEgPSAqKChjb25z dCBzdHJ1Y3QgcHJvYmUgKiopIGEpOworKyAgY29uc3Qgc3RydWN0IHByb2JlICpwYiA9ICooKGNv bnN0IHN0cnVjdCBwcm9iZSAqKikgYik7CisgICBpbnQgdjsKKyAKKy0gIHYgPSBzdHJjbXAgKGVh LT5wcm9iZS0+cHJvdmlkZXIsIGViLT5wcm9iZS0+cHJvdmlkZXIpOworKyAgdiA9IHN0cmNtcCAo cGEtPnByb3ZpZGVyLCBwYi0+cHJvdmlkZXIpOworICAgaWYgKHYpCisgICAgIHJldHVybiB2Owor IAorLSAgdiA9IHN0cmNtcCAoZWEtPnByb2JlLT5uYW1lLCBlYi0+cHJvYmUtPm5hbWUpOworKyAg diA9IHN0cmNtcCAocGEtPm5hbWUsIHBiLT5uYW1lKTsKKyAgIGlmICh2KQorICAgICByZXR1cm4g djsKKyAKKy0gIGlmIChlYS0+cHJvYmUtPmFkZHJlc3MgPCBlYi0+cHJvYmUtPmFkZHJlc3MpCisr ICBpZiAocGEtPmFkZHJlc3MgPCBwYi0+YWRkcmVzcykKKyAgICAgcmV0dXJuIC0xOworLSAgaWYg KGVhLT5wcm9iZS0+YWRkcmVzcyA+IGViLT5wcm9iZS0+YWRkcmVzcykKKysgIGlmIChwYS0+YWRk cmVzcyA+IHBiLT5hZGRyZXNzKQorICAgICByZXR1cm4gMTsKKyAKKy0gIHJldHVybiBzdHJjbXAg KGVhLT5vYmpmaWxlLT5uYW1lLCBlYi0+b2JqZmlsZS0+bmFtZSk7CisrICByZXR1cm4gc3RyY21w IChwYS0+b2JqZmlsZS0+bmFtZSwgcGItPm9iamZpbGUtPm5hbWUpOworIH0KKyAKKyAvKiBIZWxw ZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZSBlbnRyaWVzIGluIHRoZSB1aV9vdXQgdGFibGUgYmVp bmcKKyAgICBjcmFmdGVkIGJ5IGBpbmZvX3Byb2Jlc19mb3Jfb3BzJy4gICovCisgCisgc3RhdGlj IHZvaWQKKy1nZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChWRUMgKHByb2JlX2FuZF9vYmpm aWxlX3MpICpwcm9iZXMsCisrZ2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5mbyAoVkVDIChwcm9i ZV9wKSAqcHJvYmVzLAorIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBwcm9iZV9vcHMgKnApCisgewor ICAgLyogYGhlYWRpbmdzJyByZWZlcnMgdG8gdGhlIG5hbWVzIG9mIHRoZSBjb2x1bW5zIHdoZW4g cHJpbnRpbmcgYGluZm8KK0BAIC0zOTIsMTEgKzM3MCwxMSBAQAorICAgICAgICBWRUNfaXRlcmF0 ZSAoaW5mb19wcm9iZV9jb2x1bW5fcywgaGVhZGluZ3MsIGl4LCBjb2x1bW4pOworICAgICAgICAr K2l4KQorICAgICB7CistICAgICAgcHJvYmVfYW5kX29iamZpbGVfcyAqZW50cnk7CisrICAgICAg c3RydWN0IHByb2JlICpwcm9iZTsKKyAgICAgICBpbnQgang7CisgICAgICAgc2l6ZV90IHNpemVf bWF4ID0gc3RybGVuIChjb2x1bW4tPnByaW50X25hbWUpOworIAorLSAgICAgIGZvciAoanggPSAw OyBWRUNfaXRlcmF0ZSAocHJvYmVfYW5kX29iamZpbGVfcywgcHJvYmVzLCBqeCwgZW50cnkpOyAr K2p4KQorKyAgICAgIGZvciAoanggPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgcHJvYmVzLCBq eCwgcHJvYmUpOyArK2p4KQorIAl7CisgCSAgLyogYHByb2JlX2ZpZWxkcycgcmVmZXJzIHRvIHRo ZSB2YWx1ZXMgb2YgZWFjaCBuZXcgZmllbGQgdGhhdCB0aGlzCisgCSAgICAgcHJvYmUgd2lsbCBk aXNwbGF5LiAgKi8KK0BAIC00MDUsMTIgKzM4MywxMSBAQAorIAkgIGNvbnN0IGNoYXIgKnZhbDsK KyAJICBpbnQga3g7CisgCistCSAgaWYgKGVudHJ5LT5wcm9iZS0+cG9wcyAhPSBwKQorKwkgIGlm IChwcm9iZS0+cG9wcyAhPSBwKQorIAkgICAgY29udGludWU7CisgCisgCSAgYzIgPSBtYWtlX2Ns ZWFudXAgKFZFQ19jbGVhbnVwIChjb25zdF9jaGFyX3B0ciksICZwcm9iZV9maWVsZHMpOworLQkg IHAtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMgKGVudHJ5LT5wcm9iZSwgZW50cnktPm9i amZpbGUsCistCQkJCQkgICAmcHJvYmVfZmllbGRzKTsKKysJICBwLT5nZW5faW5mb19wcm9iZXNf dGFibGVfdmFsdWVzIChwcm9iZSwgJnByb2JlX2ZpZWxkcyk7CisgCisgCSAgZ2RiX2Fzc2VydCAo VkVDX2xlbmd0aCAoY29uc3RfY2hhcl9wdHIsIHByb2JlX2ZpZWxkcykKKyAJCSAgICAgID09IGhl YWRpbmdzX3NpemUpOworQEAgLTQzNywxMCArNDE0LDEwIEBACisgfQorIAorIC8qIEhlbHBlciBm dW5jdGlvbiB0byBwcmludCBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCBhIHByb2JlIGFuZCBhbiBv YmpmaWxlCistICAgcmVwcmVzZW50ZWQgYnkgRU5UUlkuICAqLworKyAgIHJlcHJlc2VudGVkIGJ5 IFBST0JFLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXByaW50X3VpX291dF9pbmZvIChwcm9iZV9h bmRfb2JqZmlsZV9zICplbnRyeSkKKytwcmludF91aV9vdXRfaW5mbyAoc3RydWN0IHByb2JlICpw cm9iZSkKKyB7CisgICBpbnQgaXg7CisgICBpbnQgaiA9IDA7CitAQCAtNDUxLDIzICs0MjgsMjEg QEAKKyAgIGluZm9fcHJvYmVfY29sdW1uX3MgKmNvbHVtbjsKKyAgIHN0cnVjdCBjbGVhbnVwICpj OworIAorLSAgZ2RiX2Fzc2VydCAoZW50cnkgIT0gTlVMTCk7CistICBnZGJfYXNzZXJ0IChlbnRy eS0+cHJvYmUgIT0gTlVMTCk7CistICBnZGJfYXNzZXJ0IChlbnRyeS0+cHJvYmUtPnBvcHMgIT0g TlVMTCk7CisrICBnZGJfYXNzZXJ0IChwcm9iZSAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKHBy b2JlLT5wb3BzICE9IE5VTEwpOworIAorLSAgaWYgKGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2lu Zm9fcHJvYmVzX3RhYmxlX2hlYWRlciA9PSBOVUxMCistICAgICAgJiYgZW50cnktPnByb2JlLT5w b3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzID09IE5VTEwpCisrICBpZiAocHJvYmUt PnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFkZXIgPT0gTlVMTAorKyAgICAgICYmIHBy b2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzID09IE5VTEwpCisgICAgIHJl dHVybjsKKyAKKy0gIGdkYl9hc3NlcnQgKGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJv YmVzX3RhYmxlX2hlYWRlciAhPSBOVUxMCistCSAgICAgICYmIGVudHJ5LT5wcm9iZS0+cG9wcy0+ Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVlcyAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKHBy b2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfaGVhZGVyICE9IE5VTEwKKysJICAgICAg JiYgcHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMgIT0gTlVMTCk7Cisg CisgICBjID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoaW5mb19wcm9iZV9jb2x1bW5fcyks ICZoZWFkaW5ncyk7CisgICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChjb25zdF9jaGFyX3B0 ciksICZ2YWx1ZXMpOworIAorLSAgZW50cnktPnByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNf dGFibGVfaGVhZGVyICgmaGVhZGluZ3MpOworLSAgZW50cnktPnByb2JlLT5wb3BzLT5nZW5faW5m b19wcm9iZXNfdGFibGVfdmFsdWVzIChlbnRyeS0+cHJvYmUsCistCQkJCQkJICAgIGVudHJ5LT5v YmpmaWxlLCAmdmFsdWVzKTsKKysgIHByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVf aGVhZGVyICgmaGVhZGluZ3MpOworKyAgcHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJs ZV92YWx1ZXMgKHByb2JlLCAmdmFsdWVzKTsKKyAKKyAgIGdkYl9hc3NlcnQgKFZFQ19sZW5ndGgg KGluZm9fcHJvYmVfY29sdW1uX3MsIGhlYWRpbmdzKQorIAkgICAgICA9PSBWRUNfbGVuZ3RoIChj b25zdF9jaGFyX3B0ciwgdmFsdWVzKSk7CitAQCAtNTE1LDE2ICs0OTAsMTYgQEAKKyB2b2lkCisg aW5mb19wcm9iZXNfZm9yX29wcyAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGNvbnN0IHN0cnVj dCBwcm9iZV9vcHMgKnBvcHMpCisgeworLSAgY2hhciAqcHJvdmlkZXIsICpwcm9iZSA9IE5VTEws ICpvYmpuYW1lID0gTlVMTDsKKysgIGNoYXIgKnByb3ZpZGVyLCAqcHJvYmVfbmFtZSA9IE5VTEws ICpvYmpuYW1lID0gTlVMTDsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVh bnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworLSAgVkVDIChwcm9iZV9hbmRfb2JqZmlsZV9zKSAq aXRlbXM7CisrICBWRUMgKHByb2JlX3ApICpwcm9iZXM7CisgICBpbnQgaSwgYW55X2ZvdW5kOwor ICAgaW50IHVpX291dF9leHRyYV9maWVsZHMgPSAwOworICAgc2l6ZV90IHNpemVfYWRkcjsKKyAg IHNpemVfdCBzaXplX25hbWUgPSBzdHJsZW4gKCJOYW1lIik7CisgICBzaXplX3Qgc2l6ZV9vYmpu YW1lID0gc3RybGVuICgiT2JqZWN0Iik7CisgICBzaXplX3Qgc2l6ZV9wcm92aWRlciA9IHN0cmxl biAoIlByb3ZpZGVyIik7CistICBwcm9iZV9hbmRfb2JqZmlsZV9zICplbnRyeTsKKysgIHN0cnVj dCBwcm9iZSAqcHJvYmU7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9jdXJyZW50 X2FyY2ggKCk7CisgCisgICAvKiBEbyB3ZSBoYXZlIGEgYHByb3ZpZGVyOnByb2JlOm9iamZpbGUn IHN0eWxlIG9mIGxpbmVzcGVjPyAgKi8KK0BAIC01MzMsMTAgKzUwOCwxMCBAQAorICAgICB7Cisg ICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcHJvdmlkZXIpOworIAorLSAgICAgIHByb2JlID0g ZXh0cmFjdF9hcmcgKCZhcmcpOworLSAgICAgIGlmIChwcm9iZSkKKysgICAgICBwcm9iZV9uYW1l ID0gZXh0cmFjdF9hcmcgKCZhcmcpOworKyAgICAgIGlmIChwcm9iZV9uYW1lKQorIAl7CistCSAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgcHJvYmUpOworKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHBy b2JlX25hbWUpOworIAorIAkgIG9iam5hbWUgPSBleHRyYWN0X2FyZyAoJmFyZyk7CisgCSAgaWYg KG9iam5hbWUpCitAQCAtNTY0LDI4ICs1MzksMjcgQEAKKyAgIGVsc2UKKyAgICAgdWlfb3V0X2V4 dHJhX2ZpZWxkcyA9IGdldF9udW1iZXJfZXh0cmFfZmllbGRzIChwb3BzKTsKKyAKKy0gIGl0ZW1z ID0gY29sbGVjdF9wcm9iZXMgKG9iam5hbWUsIHByb3ZpZGVyLCBwcm9iZSwgcG9wcyk7CistICBt YWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChwcm9iZV9hbmRfb2JqZmlsZV9zKSwgJml0ZW1zKTsK KysgIHByb2JlcyA9IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1lLCBwcm92aWRlciwgcHJvYmVfbmFt ZSwgcG9wcyk7CisrICBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChwcm9iZV9wKSwgJnByb2Jl cyk7CisgICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91 dCwKKyAJCQkJICAgICAgIDQgKyB1aV9vdXRfZXh0cmFfZmllbGRzLAorLQkJCQkgICAgICAgVkVD X2xlbmd0aCAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMpLAorKwkJCQkgICAgICAgVkVDX2xl bmd0aCAocHJvYmVfcCwgcHJvYmVzKSwKKyAJCQkJICAgICAgICJTdGF0aWNQcm9iZXMiKTsKKyAK Ky0gIGlmICghVkVDX2VtcHR5IChwcm9iZV9hbmRfb2JqZmlsZV9zLCBpdGVtcykpCistICAgIHFz b3J0IChWRUNfYWRkcmVzcyAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMpLAorLQkgICBWRUNf bGVuZ3RoIChwcm9iZV9hbmRfb2JqZmlsZV9zLCBpdGVtcyksCistCSAgIHNpemVvZiAocHJvYmVf YW5kX29iamZpbGVfcyksIGNvbXBhcmVfZW50cmllcyk7CisrICBpZiAoIVZFQ19lbXB0eSAocHJv YmVfcCwgcHJvYmVzKSkKKysgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChwcm9iZV9wLCBwcm9iZXMp LCBWRUNfbGVuZ3RoIChwcm9iZV9wLCBwcm9iZXMpLAorKwkgICBzaXplb2YgKHByb2JlX3ApLCBj b21wYXJlX3Byb2Jlcyk7CisgCisgICAvKiBXaGF0J3MgdGhlIHNpemUgb2YgYW4gYWRkcmVzcyBp biBvdXIgYXJjaGl0ZWN0dXJlPyAgKi8KKyAgIHNpemVfYWRkciA9IGdkYmFyY2hfYWRkcl9iaXQg KGdkYmFyY2gpID09IDY0ID8gMTggOiAxMDsKKyAKKyAgIC8qIERldGVybWluaW5nIHRoZSBtYXhp bXVtIHNpemUgb2YgZWFjaCBmaWVsZCAoYHByb3ZpZGVyJywgYG5hbWUnIGFuZAorICAgICAgYG9i am5hbWUnKS4gICovCistICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfYW5kX29iamZp bGVfcywgaXRlbXMsIGksIGVudHJ5KTsgKytpKQorKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUg KHByb2JlX3AsIHByb2JlcywgaSwgcHJvYmUpOyArK2kpCisgICAgIHsKKy0gICAgICBzaXplX25h bWUgPSBtYXggKHN0cmxlbiAoZW50cnktPnByb2JlLT5uYW1lKSwgc2l6ZV9uYW1lKTsKKy0gICAg ICBzaXplX3Byb3ZpZGVyID0gbWF4IChzdHJsZW4gKGVudHJ5LT5wcm9iZS0+cHJvdmlkZXIpLCBz aXplX3Byb3ZpZGVyKTsKKy0gICAgICBzaXplX29iam5hbWUgPSBtYXggKHN0cmxlbiAoZW50cnkt Pm9iamZpbGUtPm5hbWUpLCBzaXplX29iam5hbWUpOworKyAgICAgIHNpemVfbmFtZSA9IG1heCAo c3RybGVuIChwcm9iZS0+bmFtZSksIHNpemVfbmFtZSk7CisrICAgICAgc2l6ZV9wcm92aWRlciA9 IG1heCAoc3RybGVuIChwcm9iZS0+cHJvdmlkZXIpLCBzaXplX3Byb3ZpZGVyKTsKKysgICAgICBz aXplX29iam5hbWUgPSBtYXggKHN0cmxlbiAocHJvYmUtPm9iamZpbGUtPm5hbWUpLCBzaXplX29i am5hbWUpOworICAgICB9CisgCisgICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0 LCBzaXplX3Byb3ZpZGVyLCB1aV9sZWZ0LCAicHJvdmlkZXIiLAorQEAgLTYwMSwyNiArNTc1LDI2 IEBACisgICAgICAgLyogV2UgaGF2ZSB0byBnZW5lcmF0ZSB0aGUgdGFibGUgaGVhZGVyIGZvciBl YWNoIG5ldyBwcm9iZSB0eXBlIHRoYXQgd2UKKyAJIHdpbGwgcHJpbnQuICAqLworICAgICAgIGZv ciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfb3BzX2NwLCBhbGxfcHJvYmVfb3BzLCBpeCwg cG8pOyArK2l4KQorLQlnZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChpdGVtcywgcG8pOwor KwlnZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChwcm9iZXMsIHBvKTsKKyAgICAgfQorICAg ZWxzZQorLSAgICBnZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChpdGVtcywgcG9wcyk7Cisr ICAgIGdlbl91aV9vdXRfdGFibGVfaGVhZGVyX2luZm8gKHByb2JlcywgcG9wcyk7CisgCisgICB1 aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCBzaXplX29iam5hbWUsIHVpX2xlZnQs ICJvYmplY3QiLAorIAkJICAgICAgIF8oIk9iamVjdCIpKTsKKyAgIHVpX291dF90YWJsZV9ib2R5 IChjdXJyZW50X3Vpb3V0KTsKKyAKKy0gIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9h bmRfb2JqZmlsZV9zLCBpdGVtcywgaSwgZW50cnkpOyArK2kpCisrICBmb3IgKGkgPSAwOyBWRUNf aXRlcmF0ZSAocHJvYmVfcCwgcHJvYmVzLCBpLCBwcm9iZSk7ICsraSkKKyAgICAgeworICAgICAg IHN0cnVjdCBjbGVhbnVwICppbm5lcjsKKyAKKyAgICAgICBpbm5lciA9IG1ha2VfY2xlYW51cF91 aV9vdXRfdHVwbGVfYmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LCAicHJvYmUiKTsKKyAKKy0gICAg ICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAicHJvdmlkZXIiLCBlbnRyeS0+ cHJvYmUtPnByb3ZpZGVyKTsKKy0gICAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vp b3V0LCAibmFtZSIsIGVudHJ5LT5wcm9iZS0+bmFtZSk7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAoY3VycmVudF91aW91dCwgInByb3ZpZGVyIiwgcHJvYmUtPnByb3ZpZGVyKTsKKysgICAg ICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAibmFtZSIsIHByb2JlLT5uYW1l KTsKKyAgICAgICB1aV9vdXRfZmllbGRfY29yZV9hZGRyIChjdXJyZW50X3Vpb3V0LCAiYWRkciIs CistCQkJICAgICAgZ2V0X29iamZpbGVfYXJjaCAoZW50cnktPm9iamZpbGUpLAorLQkJCSAgICAg IGVudHJ5LT5wcm9iZS0+YWRkcmVzcyk7CisrCQkJICAgICAgZ2V0X29iamZpbGVfYXJjaCAocHJv YmUtPm9iamZpbGUpLAorKwkJCSAgICAgIHByb2JlLT5hZGRyZXNzKTsKKyAKKyAgICAgICBpZiAo cG9wcyA9PSBOVUxMKQorIAl7CitAQCAtNjI5LDE5ICs2MDMsMTkgQEAKKyAKKyAJICBmb3IgKGl4 ID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX29wc19jcCwgYWxsX3Byb2JlX29wcywgaXgsIHBvKTsK KyAJICAgICAgICsraXgpCistCSAgICBpZiAoZW50cnktPnByb2JlLT5wb3BzID09IHBvKQorLQkg ICAgICBwcmludF91aV9vdXRfaW5mbyAoZW50cnkpOworKwkgICAgaWYgKHByb2JlLT5wb3BzID09 IHBvKQorKwkgICAgICBwcmludF91aV9vdXRfaW5mbyAocHJvYmUpOworIAl9CisgICAgICAgZWxz ZQorLQlwcmludF91aV9vdXRfaW5mbyAoZW50cnkpOworKwlwcmludF91aV9vdXRfaW5mbyAocHJv YmUpOworIAorLSAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJvYmpl Y3QiLCBlbnRyeS0+b2JqZmlsZS0+bmFtZSk7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAo Y3VycmVudF91aW91dCwgIm9iamVjdCIsIHByb2JlLT5vYmpmaWxlLT5uYW1lKTsKKyAgICAgICB1 aV9vdXRfdGV4dCAoY3VycmVudF91aW91dCwgIlxuIik7CisgCisgICAgICAgZG9fY2xlYW51cHMg KGlubmVyKTsKKyAgICAgfQorIAorLSAgYW55X2ZvdW5kID0gIVZFQ19lbXB0eSAocHJvYmVfYW5k X29iamZpbGVfcywgaXRlbXMpOworKyAgYW55X2ZvdW5kID0gIVZFQ19lbXB0eSAocHJvYmVfcCwg cHJvYmVzKTsKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAKKyAgIGlmICghYW55X2ZvdW5k KQorQEAgLTY2MiwyMyArNjM2LDI0IEBACisgcHJvYmVfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lLCB1bnNpZ25lZCBuKQorIHsKKyAgIHN0cnVjdCBwcm9iZSAq cHJvYmU7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIGNvbnN0IHN0cnVjdCBzeW1f cHJvYmVfZm5zICpwcm9iZV9mbnM7CisgICB1bnNpZ25lZCBuX3Byb2JlczsKKyAKKy0gIHByb2Jl ID0gZmluZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksICZvYmpmaWxlKTsKKysg IHByb2JlID0gZmluZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYg KCFwcm9iZSkKKyAgICAgcmV0dXJuIE5VTEw7CistICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZiAm JiBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucyk7CisgCistICBuX3Byb2JlcworLSAgICA9IG9i amZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChv YmpmaWxlLAorLQkJCQkJCQkJcHJvYmUpOworKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUg IT0gTlVMTCk7CisrICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Cisr ICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMgIT0gTlVMTCk7 CisrCisrICBwcm9iZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Cisr ICBuX3Byb2JlcyA9IHByb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJv YmUpOworKworICAgaWYgKG4gPj0gbl9wcm9iZXMpCisgICAgIHJldHVybiBOVUxMOworIAorLSAg cmV0dXJuIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJn dW1lbnQgKG9iamZpbGUsCistCQkJCQkJCQkgIHByb2JlLAorLQkJCQkJCQkJICBuKTsKKysgIHJl dHVybiBwcm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG4pOwor IH0KKyAKKyAvKiBTZWUgY29tbWVudCBpbiBwcm9iZS5oLiAgKi8KKy0tLSBzcmMvZ2RiL3Byb2Jl LmgJMjAxMi8wNC8yNyAyMDo0Nzo1NQkxLjEKKysrKyBzcmMvZ2RiL3Byb2JlLmgJMjAxMi8wNy8x OCAxNjoxMjoxNwkxLjIKK0BAIC02NiwyMSArNjYsMTggQEAKKyAKKyAgICAgLyogUmV0dXJuIHRo ZSBudW1iZXIgb2YgYXJndW1lbnRzIG9mIFBST0JFLiAgKi8KKyAKKy0gICAgdW5zaWduZWQgKCpn ZXRfcHJvYmVfYXJndW1lbnRfY291bnQpIChzdHJ1Y3QgcHJvYmUgKnByb2JlLAorLQkJCQkJICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisrICAgIHVuc2lnbmVkICgqZ2V0X3Byb2JlX2FyZ3Vt ZW50X2NvdW50KSAoc3RydWN0IHByb2JlICpwcm9iZSk7CisgCisgICAgIC8qIEV2YWx1YXRlIHRo ZSBOdGggYXJndW1lbnQgZnJvbSB0aGUgUFJPQkUsIHJldHVybmluZyBhIHZhbHVlCisgICAgICAg IGNvcnJlc3BvbmRpbmcgdG8gaXQuICBUaGUgYXJndW1lbnQgbnVtYmVyIGlzIHJlcHJlc2VudGVk IE4uICAqLworIAorICAgICBzdHJ1Y3QgdmFsdWUgKigqZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQp IChzdHJ1Y3QgcHJvYmUgKnByb2JlLAorLQkJCQkJICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCisgCQkJCQkgICAgICB1bnNpZ25lZCBuKTsKKyAKKyAgICAgLyogQ29tcGlsZSB0aGUgTnRo IGFyZ3VtZW50IG9mIHRoZSBQUk9CRSB0byBhbiBhZ2VudCBleHByZXNzaW9uLgorICAgICAgICBU aGUgYXJndW1lbnQgbnVtYmVyIGlzIHJlcHJlc2VudGVkIGJ5IE4uICAqLworIAorLSAgICB2b2lk ICgqY29tcGlsZV90b19heCkgKHN0cnVjdCBwcm9iZSAqcHJvYmUsIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorLQkJCSAgIHN0cnVjdCBhZ2VudF9leHByICphZXhwciwKKysgICAgdm9pZCAoKmNv bXBpbGVfdG9fYXgpIChzdHJ1Y3QgcHJvYmUgKnByb2JlLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4 cHIsCisgCQkJICAgc3RydWN0IGF4c192YWx1ZSAqYXhzX3ZhbHVlLCB1bnNpZ25lZCBuKTsKKyAK KyAgICAgLyogU2V0IHRoZSBzZW1hcGhvcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBQUk9CRS4gIFRo aXMgZnVuY3Rpb24gb25seSBtYWtlcworQEAgLTEwOCw4ICsxMDUsOCBAQAorICAgICB2b2lkICgq Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlcikgKFZFQyAoaW5mb19wcm9iZV9jb2x1bW5fcykg KipoZWFkcyk7CisgCisgICAgIC8qIEZ1bmN0aW9uIHRoYXQgd2lsbCBmaWxsIFZBTFVFUyB3aXRo IHRoZSB2YWx1ZXMgb2YgdGhlIGV4dHJhIGZpZWxkcworLSAgICAgICB0byBiZSBwcmludGVkIGZv ciBQUk9CRSAgYW5kIE9CSkZJTEUuICBJZiB0aGUgYmFja2VuZCBpbXBsZW1lbnRzCistICAgICAg IHRoZSBgZ2VuX3VpX291dF90YWJsZV9oZWFkZXInIG1ldGhvZCwgdGhlbiBpdCBzaG91bGQgaW1w bGVtZW50CisrICAgICAgIHRvIGJlIHByaW50ZWQgZm9yIFBST0JFLiAgSWYgdGhlIGJhY2tlbmQg aW1wbGVtZW50cyB0aGUKKysgICAgICAgYGdlbl91aV9vdXRfdGFibGVfaGVhZGVyJyBtZXRob2Qs IHRoZW4gaXQgc2hvdWxkIGltcGxlbWVudAorICAgICAgICB0aGlzIG1ldGhvZCBhcyB3ZWxsLiAg VGhlIGJhY2tlbmQgc2hvdWxkIGFsc28gZ3VhcmFudGVlIHRoYXQgdGhlCisgICAgICAgIG9yZGVy IGFuZCB0aGUgbnVtYmVyIG9mIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGlzIGV4YWN0bHkgdGhlIHNh bWUKKyAgICAgICAgYXMgdGhlIG9yZGVyIG9mIHRoZSBleHRyYSBmaWVsZHMgcHJvdmlkZWQgaW4g dGhlIG1ldGhvZAorQEAgLTExOCw3ICsxMTUsNiBAQAorICAgICAgICBwb3NpdGlvbiBpbiB0aGUg dmVjdG9yLiAgKi8KKyAKKyAgICAgdm9pZCAoKmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMp IChzdHJ1Y3QgcHJvYmUgKnByb2JlLAorLQkJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK KyAJCQkJCSAgVkVDIChjb25zdF9jaGFyX3B0cikgKip2YWx1ZXMpOworICAgfTsKKyAKK0BAIC0x NTcsNiArMTUzLDExIEBACisgICAgIC8qIFRoZSBvcGVyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0 aGlzIHByb2JlLiAgKi8KKyAgICAgY29uc3Qgc3RydWN0IHByb2JlX29wcyAqcG9wczsKKyAKKysg ICAgLyogVGhlIG9iamZpbGUgd2hpY2ggY29udGFpbnMgdGhpcyBwcm9iZS4gIEV2ZW4gaWYgdGhl IHByb2JlIGlzIGFsc28KKysgICAgICAgcHJlc2VudCBpbiBhIHNlcGFyYXRlIGRlYnVnIG9iamZp bGUsIHRoaXMgdmFyaWFibGUgYWx3YXlzIHBvaW50cyB0bworKyAgICAgICB0aGUgbm9uLXNlcGFy YXRlIGRlYnVnIG9iamZpbGUuICAqLworKyAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysK KyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KKyAgICAgY29uc3QgY2hhciAqbmFt ZTsKKyAKK0BAIC0xODEsMTEgKzE4Miw5IEBACisgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfcHJvYmVf b3BzIChzdHJ1Y3QgcHJvYmUgKnByb2JlKTsKKyAKKyAvKiBHaXZlbiBhIFBDLCBmaW5kIGFuIGFz c29jaWF0ZWQgcHJvYmUgd2l0aCB0eXBlIFBUWVBFLiAgSWYgYSBwcm9iZSBpcworLSAgIGZvdW5k LCBzZXQgKk9CSkZJTEVfT1VUIHRvIHRoZSBwcm9iZSdzIG9iamZpbGUsIGFuZCByZXR1cm4gdGhl CistICAgcHJvYmUuICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLworKyAg IGZvdW5kLCByZXR1cm4gaXQuICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAq LworIAorLWV4dGVybiBzdHJ1Y3QgcHJvYmUgKmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBw YywKKy0JCQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICoqb2JqZmlsZV9vdXQpOworK2V4dGVybiBz dHJ1Y3QgcHJvYmUgKmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYyk7CisgCisgLyogU2Vh cmNoIE9CSkZJTEUgZm9yIGEgcHJvYmUgd2l0aCB0aGUgZ2l2ZW4gUFJPVklERVIsIE5BTUUgYW5k IFBUWVBFLgorICAgIFJldHVybiBhIFZFQyBvZiBhbGwgcHJvYmVzIHRoYXQgd2VyZSBmb3VuZC4g IElmIG5vIG1hdGNoaW5nIHByb2JlCistLS0gc3JjL2dkYi9zdGFwLXByb2JlLmMJMjAxMi8wNS8w OCAwMTozNTozNQkxLjQKKysrKyBzcmMvZ2RiL3N0YXAtcHJvYmUuYwkyMDEyLzA3LzE4IDE2OjEy OjE3CTEuNQorQEAgLTkwMywxMCArOTAzLDEwIEBACisgICAgdGhpcyBpbmZvcm1hdGlvbi4gICov CisgCisgc3RhdGljIHZvaWQKKy1zdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoc3RydWN0IHN0 YXBfcHJvYmUgKnByb2JlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytzdGFwX3BhcnNlX3By b2JlX2FyZ3VtZW50cyAoc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQorIHsKKyAgIGNvbnN0IGNo YXIgKmN1cjsKKy0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAo b2JqZmlsZSk7CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2gg KHByb2JlLT5wLm9iamZpbGUpOworIAorICAgZ2RiX2Fzc2VydCAoIXByb2JlLT5hcmdzX3BhcnNl ZCk7CisgICBjdXIgPSBwcm9iZS0+YXJnc191LnRleHQ7CitAQCAtOTkxLDE1ICs5OTEsMTQgQEAK KyAgICBhcmd1bWVudCBzdHJpbmcuICAqLworIAorIHN0YXRpYyB1bnNpZ25lZAorLXN0YXBfZ2V0 X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsCistCQkJ ICAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3N0YXBfZ2V0X3Byb2JlX2FyZ3VtZW50 X2NvdW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMpCisgeworICAgc3RydWN0IHN0YXBf cHJvYmUgKnByb2JlID0gKHN0cnVjdCBzdGFwX3Byb2JlICopIHByb2JlX2dlbmVyaWM7CisgCisg ICBnZGJfYXNzZXJ0IChwcm9iZV9nZW5lcmljLT5wb3BzID09ICZzdGFwX3Byb2JlX29wcyk7Cisg CisgICBpZiAoIXByb2JlLT5hcmdzX3BhcnNlZCkKKy0gICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1 bWVudHMgKHByb2JlLCBvYmpmaWxlKTsKKysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMg KHByb2JlKTsKKyAKKyAgIGdkYl9hc3NlcnQgKHByb2JlLT5hcmdzX3BhcnNlZCk7CisgICByZXR1 cm4gVkVDX2xlbmd0aCAoc3RhcF9wcm9iZV9hcmdfcywgcHJvYmUtPmFyZ3NfdS52ZWMpOworQEAg LTEwNDIsMTAgKzEwNDEsMTAgQEAKKyB9CisgCisgc3RhdGljIHN0cnVjdCBzdGFwX3Byb2JlX2Fy ZyAqCistc3RhcF9nZXRfYXJnIChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCB1bnNpZ25lZCBuKQorK3N0YXBfZ2V0X2FyZyAoc3RydWN0IHN0YXBfcHJv YmUgKnByb2JlLCB1bnNpZ25lZCBuKQorIHsKKyAgIGlmICghcHJvYmUtPmFyZ3NfcGFyc2VkKQor LSAgICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAocHJvYmUsIG9iamZpbGUpOworKyAgICBz dGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAocHJvYmUpOworIAorICAgcmV0dXJuIFZFQ19pbmRl eCAoc3RhcF9wcm9iZV9hcmdfcywgcHJvYmUtPmFyZ3NfdS52ZWMsIG4pOworIH0KK0BAIC0xMDU0 LDggKzEwNTMsNyBAQAorICAgIGNvcnJlc3BvbmRpbmcgdG8gaXQuICBBc3NlcnRpb24gaXMgdGhy b3duIGlmIE4gZG9lcyBub3QgZXhpc3QuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgor LXN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBwcm9iZSAqcHJvYmVfZ2VuZXJp YywKKy0JCQkgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgbikKKytzdGFw X2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlX2dlbmVyaWMsIHVu c2lnbmVkIG4pCisgeworICAgc3RydWN0IHN0YXBfcHJvYmUgKnN0YXBfcHJvYmUgPSAoc3RydWN0 IHN0YXBfcHJvYmUgKikgcHJvYmVfZ2VuZXJpYzsKKyAgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAq YXJnOworQEAgLTEwNjMsNyArMTA2MSw3IEBACisgCisgICBnZGJfYXNzZXJ0IChwcm9iZV9nZW5l cmljLT5wb3BzID09ICZzdGFwX3Byb2JlX29wcyk7CisgCistICBhcmcgPSBzdGFwX2dldF9hcmcg KHN0YXBfcHJvYmUsIG9iamZpbGUsIG4pOworKyAgYXJnID0gc3RhcF9nZXRfYXJnIChzdGFwX3By b2JlLCBuKTsKKyAgIHJldHVybiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKGFyZy0+YXR5cGUs IGFyZy0+YWV4cHIsICZwb3MsIEVWQUxfTk9STUFMKTsKKyB9CisgCitAQCAtMTA3MSw5ICsxMDY5 LDggQEAKKyAgICBBc3NlcnRpb24gaXMgdGhyb3duIGlmIE4gZG9lcyBub3QgZXhpc3QuICAqLwor IAorIHN0YXRpYyB2b2lkCistc3RhcF9jb21waWxlX3RvX2F4IChzdHJ1Y3QgcHJvYmUgKnByb2Jl X2dlbmVyaWMsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorLQkJICAgIHN0cnVjdCBhZ2VudF9l eHByICpleHByLCBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKKy0JCSAgICB1bnNpZ25lZCBuKQor K3N0YXBfY29tcGlsZV90b19heCAoc3RydWN0IHByb2JlICpwcm9iZV9nZW5lcmljLCBzdHJ1Y3Qg YWdlbnRfZXhwciAqZXhwciwKKysJCSAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwgdW5zaWdu ZWQgbikKKyB7CisgICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqc3RhcF9wcm9iZSA9IChzdHJ1Y3Qgc3Rh cF9wcm9iZSAqKSBwcm9iZV9nZW5lcmljOworICAgc3RydWN0IHN0YXBfcHJvYmVfYXJnICphcmc7 CitAQCAtMTA4MSw3ICsxMDc4LDcgQEAKKyAKKyAgIGdkYl9hc3NlcnQgKHByb2JlX2dlbmVyaWMt PnBvcHMgPT0gJnN0YXBfcHJvYmVfb3BzKTsKKyAKKy0gIGFyZyA9IHN0YXBfZ2V0X2FyZyAoc3Rh cF9wcm9iZSwgb2JqZmlsZSwgbik7CisrICBhcmcgPSBzdGFwX2dldF9hcmcgKHN0YXBfcHJvYmUs IG4pOworIAorICAgcGMgPSBhcmctPmFleHByLT5lbHRzOworICAgZ2VuX2V4cHIgKGFyZy0+YWV4 cHIsICZwYywgZXhwciwgdmFsdWUpOworQEAgLTExMjQsMjAgKzExMjEsMjQgQEAKKyAgIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2Vs ZWN0ZWQiKSk7CisgICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKKyAgIGlu dCBzZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOworLSAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7CisgICBzdHJ1Y3QgcHJvYmUgKnBjX3Byb2JlOworKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9i ZV9mbnMgKnBjX3Byb2JlX2ZuczsKKyAgIHVuc2lnbmVkIG5fYXJnczsKKyAKKyAgIC8qIFNFTCA9 PSAtMSBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KKyAgIGdkYl9hc3NlcnQgKHNlbCA+PSAtMSk7 CisgCistICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAmb2JqZmlsZSk7CisrICBw Y19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjKTsKKyAgIGlmIChwY19wcm9iZSA9PSBOVUxM KQorICAgICBlcnJvciAoXygiTm8gU3lzdGVtVGFwIHByb2JlIGF0IFBDICVzIiksIGNvcmVfYWRk cl90b19zdHJpbmcgKHBjKSk7CisgCistICBuX2FyZ3MKKy0gICAgPSBvYmpmaWxlLT5zZi0+c3lt X3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKKy0JCQkJ CQkJCXBjX3Byb2JlKTsKKysgIGdkYl9hc3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxlICE9IE5VTEwp OworKyAgZ2RiX2Fzc2VydCAocGNfcHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworKyAgZ2Ri X2Fzc2VydCAocGNfcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOwor KworKyAgcGNfcHJvYmVfZm5zID0gcGNfcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5z OworKworKyAgbl9hcmdzID0gcGNfcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2Nv dW50IChwY19wcm9iZSk7CisgICBpZiAoc2VsID09IC0xKQorICAgICByZXR1cm4gdmFsdWVfZnJv bV9sb25nZXN0IChidWlsdGluX3R5cGUgKGFyY2gpLT5idWlsdGluX2ludCwgbl9hcmdzKTsKKyAK K0BAIC0xMTQ1LDkgKzExNDYsNyBAQAorICAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1 bWVudCAlZCAtLSBwcm9iZSBoYXMgJXUgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAorIAkgICBzZWws IG5fYXJncyk7CisgCistICByZXR1cm4gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9l dmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAob2JqZmlsZSwKKy0JCQkJCQkJCSAgcGNfcHJvYmUsCist CQkJCQkJCQkgIHNlbCk7CisrICByZXR1cm4gcGNfcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJv YmVfYXJndW1lbnQgKHBjX3Byb2JlLCBzZWwpOworIH0KKyAKKyAvKiBUaGlzIGlzIGNhbGxlZCB0 byBjb21waWxlIG9uZSBvZiB0aGUgJF9wcm9iZV9hcmcqIGNvbnZlbmllbmNlCitAQCAtMTE1OSwy MCArMTE1OCwyNSBAQAorIHsKKyAgIENPUkVfQUREUiBwYyA9IGV4cHItPnNjb3BlOworICAgaW50 IHNlbCA9IChpbnQpICh1aW50cHRyX3QpIGRhdGE7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZTsKKyAgIHN0cnVjdCBwcm9iZSAqcGNfcHJvYmU7CisrICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2Jl X2ZucyAqcGNfcHJvYmVfZm5zOworICAgaW50IG5fcHJvYmVzOworIAorICAgLyogU0VMID09IC0x IG1lYW5zICJfcHJvYmVfYXJnYyIuICAqLworICAgZ2RiX2Fzc2VydCAoc2VsID49IC0xKTsKKyAK Ky0gIHBjX3Byb2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMsICZvYmpmaWxlKTsKKysgIHBjX3By b2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMpOworICAgaWYgKHBjX3Byb2JlID09IE5VTEwpCisg ICAgIGVycm9yIChfKCJObyBTeXN0ZW1UYXAgcHJvYmUgYXQgUEMgJXMiKSwgY29yZV9hZGRyX3Rv X3N0cmluZyAocGMpKTsKKyAKKy0gIG5fcHJvYmVzCistICAgID0gb2JqZmlsZS0+c2YtPnN5bV9w cm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKG9iamZpbGUsCistCQkJCQkJ CQlwY19wcm9iZSk7CisrICBnZGJfYXNzZXJ0IChwY19wcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsK KysgIGdkYl9hc3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKKysgIGdkYl9h c3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKKysK KysgIHBjX3Byb2JlX2ZucyA9IHBjX3Byb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsK KysKKysgIG5fcHJvYmVzID0gcGNfcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2Nv dW50IChwY19wcm9iZSk7CisrCisgICBpZiAoc2VsID09IC0xKQorICAgICB7CisgICAgICAgdmFs dWUtPmtpbmQgPSBheHNfcnZhbHVlOworQEAgLTExODYsOCArMTE5MCw3IEBACisgICAgIGVycm9y IChfKCJJbnZhbGlkIHByb2JlIGFyZ3VtZW50ICVkIC0tIHByb2JlIGhhcyAlZCBhcmd1bWVudHMg YXZhaWxhYmxlIiksCisgCSAgIHNlbCwgbl9wcm9iZXMpOworIAorLSAgb2JqZmlsZS0+c2YtPnN5 bV9wcm9iZV9mbnMtPnN5bV9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBwY19wcm9iZSwKKy0JCQkJ CQkgZXhwciwgdmFsdWUsIHNlbCk7CisrICBwY19wcm9iZV9mbnMtPnN5bV9jb21waWxlX3RvX2F4 IChwY19wcm9iZSwgZXhwciwgdmFsdWUsIHNlbCk7CisgfQorIAorIAwKK0BAIC0xMjk3LDYgKzEz MDAsNyBAQAorIAorICAgcmV0ID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2Jz dGFjaywgc2l6ZW9mICgqcmV0KSk7CisgICByZXQtPnAucG9wcyA9ICZzdGFwX3Byb2JlX29wczsK KysgIHJldC0+cC5vYmpmaWxlID0gb2JqZmlsZTsKKyAKKyAgIC8qIFByb3ZpZGVyIGFuZCB0aGUg bmFtZSBvZiB0aGUgcHJvYmUuICAqLworICAgcmV0LT5wLnByb3ZpZGVyID0gJmVsLT5kYXRhWzMg KiBzaXplXTsKK0BAIC0xNDgxLDE1ICsxNDg1LDE2IEBACisgCisgc3RhdGljIHZvaWQKKyBzdGFw X2dlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMgKHN0cnVjdCBwcm9iZSAqcHJvYmVfZ2VuZXJp YywKKy0JCQkJICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCSAgIFZFQyAoY29uc3Rf Y2hhcl9wdHIpICoqcmV0KQorIHsKKyAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSA9IChzdHJ1 Y3Qgc3RhcF9wcm9iZSAqKSBwcm9iZV9nZW5lcmljOworLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoOworICAgY29uc3QgY2hhciAqdmFsID0gTlVMTDsKKyAKKyAgIGdkYl9hc3NlcnQgKHByb2Jl X2dlbmVyaWMtPnBvcHMgPT0gJnN0YXBfcHJvYmVfb3BzKTsKKyAKKysgIGdkYmFyY2ggPSBnZXRf b2JqZmlsZV9hcmNoIChwcm9iZS0+cC5vYmpmaWxlKTsKKysKKyAgIGlmIChwcm9iZS0+c2VtX2Fk ZHIpCisgICAgIHZhbCA9IHByaW50X2NvcmVfYWRkcmVzcyAoZ2RiYXJjaCwgcHJvYmUtPnNlbV9h ZGRyKTsKKyAKKy0tLSBzcmMvZ2RiL3N5bWZpbGUuaAkyMDEyLzA1LzI0IDIyOjE0OjM1CTEuMTA5 CisrKysgc3JjL2dkYi9zeW1maWxlLmgJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjExMAorQEAgLTMy MCw4ICszMjAsNyBAQAorICAgICAgaGF2ZSBjb21lIGZyb20gYSBjYWxsIHRvIHRoaXMgb2JqZmls ZSdzIHN5bV9nZXRfcHJvYmVzIG1ldGhvZC4KKyAgICAgIElmIHlvdSBwcm92aWRlIGFuIGltcGxl bWVudGF0aW9uIG9mIHN5bV9nZXRfcHJvYmVzLCB5b3UgbXVzdAorICAgICAgaW1wbGVtZW50IHRo aXMgbWV0aG9kIGFzIHdlbGwuICAqLworLSAgdW5zaWduZWQgKCpzeW1fZ2V0X3Byb2JlX2FyZ3Vt ZW50X2NvdW50KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCQkgICAgc3RydWN0IHBy b2JlICpwcm9iZSk7CisrICB1bnNpZ25lZCAoKnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQp IChzdHJ1Y3QgcHJvYmUgKnByb2JlKTsKKyAKKyAgIC8qIEV2YWx1YXRlIHRoZSBOdGggYXJndW1l bnQgYXZhaWxhYmxlIHRvIFBST0JFLiAgUFJPQkUgd2lsbCBoYXZlCisgICAgICBjb21lIGZyb20g YSBjYWxsIHRvIHRoaXMgb2JqZmlsZSdzIHN5bV9nZXRfcHJvYmVzIG1ldGhvZC4gIE4gd2lsbAor QEAgLTMzMCw4ICszMjksNyBAQAorICAgICAgUEMgd2lsbCBtYXRjaCB0aGUgYWRkcmVzcyBvZiB0 aGUgcHJvYmUuICBJZiB5b3UgcHJvdmlkZSBhbgorICAgICAgaW1wbGVtZW50YXRpb24gb2Ygc3lt X2dldF9wcm9iZXMsIHlvdSBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZAorICAgICAgYXMgd2Vs bC4gICovCistICBzdHJ1Y3QgdmFsdWUgKigqc3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCQkJc3RydWN0IHByb2JlICpwcm9iZSwKKysg IHN0cnVjdCB2YWx1ZSAqKCpzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpIChzdHJ1Y3QgcHJv YmUgKnByb2JlLAorIAkJCQkJCXVuc2lnbmVkIG4pOworIAorICAgLyogQ29tcGlsZSB0aGUgTnRo IHByb2JlIGFyZ3VtZW50IHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICBQUk9CRQorQEAgLTMzOSw4 ICszMzcsNyBAQAorICAgICAgbWV0aG9kLiAgTiB3aWxsIGJlIGJldHdlZW4gMCBhbmQgdGhlIG51 bWJlciBvZiBhcmd1bWVudHMKKyAgICAgIGF2YWlsYWJsZSB0byB0aGlzIHByb2JlLiAgRVhQUiBh bmQgVkFMVUUgYXJlIHRoZSBhZ2VudCBleHByZXNzaW9uCisgICAgICB0aGF0IGlzIGJlaW5nIHVw ZGF0ZWQuICAqLworLSAgdm9pZCAoKnN5bV9jb21waWxlX3RvX2F4KSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCistCQkJICAgICBzdHJ1Y3QgcHJvYmUgKnByb2JlLAorKyAgdm9pZCAoKnN5bV9j b21waWxlX3RvX2F4KSAoc3RydWN0IHByb2JlICpwcm9iZSwKKyAJCQkgICAgIHN0cnVjdCBhZ2Vu dF9leHByICpleHByLAorIAkJCSAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCisgCQkJICAg ICB1bnNpZ25lZCBuKTsKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mNy5w YXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0yb2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjgxYjM1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVu LXN0YXAtcHJvYmUtMm9mNy5wYXRjaApAQCAtMCwwICsxLDc0IEBACitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA3L21zZzAwMTI0Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDcvMTggMTY6MTI6MTUJMS4xNDQ3NAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDcvMTggMTY6MjA6MzYJMS4xNDQ3NQorIyMgLTEsNSArMSwxMCBAQAorIDIwMTItMDct MTggIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisgCisrCSog cHJvYmUuYyAocHJvYmVfc2FmZV9ldmFsdWF0ZV9hdF9wYyk6IFJlbmFtZSB2YXJpYWJsZSBgbl9w cm9iZXMnLgorKwkqIHN0YXAtcHJvYmUuYyAoY29tcGlsZV9wcm9iZV9hcmcpOiBMaWtld2lzZS4K KysKKysyMDEyLTA3LTE4ICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQu Y29tPgorKworIAkqIGVsZnJlYWQuYyAoZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IFJl bW92ZSBgb2JqZmlsZScgYXJndW1lbnQuCisgCShlbGZfY29tcGlsZV90b19heCk6IExpa2V3aXNl LgorIAkqIGluZnJ1bi5jIChpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlKTogTGlr ZXdpc2UuCistLS0gc3JjL2dkYi9wcm9iZS5jCTIwMTIvMDcvMTggMTY6MTI6MTcJMS40CisrKysg c3JjL2dkYi9wcm9iZS5jCTIwMTIvMDcvMTggMTY6MjA6NDMJMS41CitAQCAtNjM3LDcgKzYzNyw3 IEBACisgeworICAgc3RydWN0IHByb2JlICpwcm9iZTsKKyAgIGNvbnN0IHN0cnVjdCBzeW1fcHJv YmVfZm5zICpwcm9iZV9mbnM7CistICB1bnNpZ25lZCBuX3Byb2JlczsKKysgIHVuc2lnbmVkIG5f YXJnczsKKyAKKyAgIHByb2JlID0gZmluZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFt ZSkpOworICAgaWYgKCFwcm9iZSkKK0BAIC02NDgsOSArNjQ4LDkgQEAKKyAgIGdkYl9hc3NlcnQg KHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKKyAKKyAgIHByb2Jl X2ZucyA9IHByb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKy0gIG5fcHJvYmVzID0g cHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7CisrICBuX2Fy Z3MgPSBwcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyAK Ky0gIGlmIChuID49IG5fcHJvYmVzKQorKyAgaWYgKG4gPj0gbl9hcmdzKQorICAgICByZXR1cm4g TlVMTDsKKyAKKyAgIHJldHVybiBwcm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVu dCAocHJvYmUsIG4pOworLS0tIHNyYy9nZGIvc3RhcC1wcm9iZS5jCTIwMTIvMDcvMTggMTY6MTI6 MTcJMS41CisrKysgc3JjL2dkYi9zdGFwLXByb2JlLmMJMjAxMi8wNy8xOCAxNjoyMDo0MwkxLjYK K0BAIC0xMTYwLDcgKzExNjAsNyBAQAorICAgaW50IHNlbCA9IChpbnQpICh1aW50cHRyX3QpIGRh dGE7CisgICBzdHJ1Y3QgcHJvYmUgKnBjX3Byb2JlOworICAgY29uc3Qgc3RydWN0IHN5bV9wcm9i ZV9mbnMgKnBjX3Byb2JlX2ZuczsKKy0gIGludCBuX3Byb2JlczsKKysgIGludCBuX2FyZ3M7Cisg CisgICAvKiBTRUwgPT0gLTEgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCisgICBnZGJfYXNzZXJ0 IChzZWwgPj0gLTEpOworQEAgLTExNzUsMjAgKzExNzUsMjAgQEAKKyAKKyAgIHBjX3Byb2JlX2Zu cyA9IHBjX3Byb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKyAKKy0gIG5fcHJvYmVz ID0gcGNfcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwY19wcm9iZSk7 CisrICBuX2FyZ3MgPSBwY19wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQg KHBjX3Byb2JlKTsKKyAKKyAgIGlmIChzZWwgPT0gLTEpCisgICAgIHsKKyAgICAgICB2YWx1ZS0+ a2luZCA9IGF4c19ydmFsdWU7CisgICAgICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5cGUgKGV4 cHItPmdkYmFyY2gpLT5idWlsdGluX2ludDsKKy0gICAgICBheF9jb25zdF9sIChleHByLCBuX3By b2Jlcyk7CisrICAgICAgYXhfY29uc3RfbCAoZXhwciwgbl9hcmdzKTsKKyAgICAgICByZXR1cm47 CisgICAgIH0KKyAKKyAgIGdkYl9hc3NlcnQgKHNlbCA+PSAwKTsKKy0gIGlmIChzZWwgPj0gbl9w cm9iZXMpCisrICBpZiAoc2VsID49IG5fYXJncykKKyAgICAgZXJyb3IgKF8oIkludmFsaWQgcHJv YmUgYXJndW1lbnQgJWQgLS0gcHJvYmUgaGFzICVkIGFyZ3VtZW50cyBhdmFpbGFibGUiKSwKKy0J ICAgc2VsLCBuX3Byb2Jlcyk7CisrCSAgIHNlbCwgbl9hcmdzKTsKKyAKKyAgIHBjX3Byb2JlX2Zu cy0+c3ltX2NvbXBpbGVfdG9fYXggKHBjX3Byb2JlLCBleHByLCB2YWx1ZSwgc2VsKTsKKyB9Cgpk aWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcucGF0Y2ggYi9nZGItZGxvcGVu LXN0YXAtcHJvYmUtM29mNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4yMzM3ZGVkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcu cGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorMjAxMi0wNy0xOSAgR2FyeSBCZW5zb24gIDxnYmVuc29u QHJlZGhhdC5jb20+CisKKwkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5l dyBkZWNsYXJhdGlvbi4KKwkoZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KKwkq IHByb2JlLmMgKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBmdW5jdGlvbi4KKwkoZXZh bHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KKwkocHJvYmVfc2FmZV9ldmFsdWF0ZV9h dF9wYyk6IFVzZSB0aGUgYWJvdmUgbmV3IGZ1bmN0aW9ucy4KKworZGlmZiAtLWdpdCBhL2dkYi9w cm9iZS5oIGIvZ2RiL3Byb2JlLmgKK2luZGV4IDhkNDRjYTIuLjFkMjliODcgMTAwNjQ0CistLS0g YS9nZGIvcHJvYmUuaAorKysrIGIvZ2RiL3Byb2JlLmgKK0BAIC0yMTQsNiArMjE0LDE2IEBAIGV4 dGVybiB2b2lkIGluZm9fcHJvYmVzX2Zvcl9vcHMgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LAor IAorIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmluZm9fcHJvYmVzX2NtZGxpc3Rf Z2V0ICh2b2lkKTsKKyAKKysvKiBSZXR1cm4gdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBzcGVj aWZpZWQgcHJvYmUuICAqLworKworK2V4dGVybiB1bnNpZ25lZCBnZXRfcHJvYmVfYXJndW1lbnRf Y291bnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUpOworKworKy8qIEV2YWx1YXRlIGFyZ3VtZW50IE4g b2YgdGhlIHNwZWNpZmllZCBwcm9iZS4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAKKysgICBpbmNsdXNp dmUgYW5kIGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCBleGNsdXNpdmUuICAqLworKworK2V4dGVy biBzdHJ1Y3QgdmFsdWUgKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJvYmUgKnBy b2JlLAorKwkJCQkJICAgICAgdW5zaWduZWQgbik7CisrCisgLyogQSBjb252ZW5pZW5jZSBmdW5j dGlvbiB0aGF0IGZpbmRzIGEgcHJvYmUgYXQgdGhlIFBDIGluIEZSQU1FIGFuZAorICAgIGV2YWx1 YXRlcyBhcmd1bWVudCBOLCB3aXRoIDAgPD0gTiA8IG51bWJlcl9vZl9hcmdzLiAgSWYgdGhlcmUg aXMgbm8KKyAgICBwcm9iZSBhdCB0aGF0IGxvY2F0aW9uLCBvciBpZiB0aGUgcHJvYmUgZG9lcyBu b3QgaGF2ZSBlbm91Z2ggYXJndW1lbnRzLAorZGlmZiAtLWdpdCBhL2dkYi9wcm9iZS5jIGIvZ2Ri L3Byb2JlLmMKK2luZGV4IDc3ZjNiMTMuLmE2MWY0ZWEgMTAwNjQ0CistLS0gYS9nZGIvcHJvYmUu YworKysrIGIvZ2RiL3Byb2JlLmMKK0BAIC02MzIsMjggKzYzMiw1NSBAQCBpbmZvX3Byb2Jlc19j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAKKyAvKiBTZWUgY29tbWVudHMgaW4g cHJvYmUuaC4gICovCisgCisrdW5zaWduZWQKKytnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0 cnVjdCBwcm9iZSAqcHJvYmUpCisreworKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnBy b2JlX2ZuczsKKysKKysgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOworKyAg Z2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworKworKyAgcHJvYmVfZm5z ID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworKworKyAgZ2RiX2Fzc2VydCAo cHJvYmVfZm5zICE9IE5VTEwpOworKworKyAgcmV0dXJuIHByb2JlX2Zucy0+c3ltX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOworK30KKysKKysvKiBTZWUgY29tbWVudHMgaW4gcHJv YmUuaC4gICovCisrCisrc3RydWN0IHZhbHVlICoKKytldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAo c3RydWN0IHByb2JlICpwcm9iZSwgdW5zaWduZWQgbikKKyt7CisrICBjb25zdCBzdHJ1Y3Qgc3lt X3Byb2JlX2ZucyAqcHJvYmVfZm5zOworKworKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUg IT0gTlVMTCk7CisrICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Cisr CisrICBwcm9iZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7CisrCisr ICBnZGJfYXNzZXJ0IChwcm9iZV9mbnMgIT0gTlVMTCk7CisrCisrICByZXR1cm4gcHJvYmVfZm5z LT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKKyt9CisrCisrLyogU2Vl IGNvbW1lbnRzIGluIHByb2JlLmguICAqLworKworIHN0cnVjdCB2YWx1ZSAqCisgcHJvYmVfc2Fm ZV9ldmFsdWF0ZV9hdF9wYyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCB1bnNpZ25lZCBuKQor IHsKKyAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7CistICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2Zu cyAqcHJvYmVfZm5zOworICAgdW5zaWduZWQgbl9hcmdzOworIAorICAgcHJvYmUgPSBmaW5kX3By b2JlX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZyYW1lKSk7CisgICBpZiAoIXByb2JlKQorICAgICBy ZXR1cm4gTlVMTDsKKyAKKy0gIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOwor LSAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworLSAgZ2RiX2Fzc2Vy dCAocHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOworLQorLSAgcHJv YmVfZm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworLSAgbl9hcmdzID0g cHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7CistCisrICBu X2FyZ3MgPSBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyAgIGlmIChuID49IG5f YXJncykKKyAgICAgcmV0dXJuIE5VTEw7CisgCistICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZXZh bHVhdGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKKysgIHJldHVybiBldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudCAocHJvYmUsIG4pOworIH0KKyAKKyAvKiBTZWUgY29tbWVudCBpbiBwcm9iZS5o LiAgKi8KCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRjaCBiL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjI5OTkzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJv YmUtNG9mNy5wYXRjaApAQCAtMCwwICsxLDEzMSBAQAorMjAxMi0wNy0xOSAgR2FyeSBCZW5zb24g IDxnYmVuc29uQHJlZGhhdC5jb20+CisKKwkqIHNvbGliLXN2cjQuYyAoc3ZyNF9pbmZvKTogTW92 ZSBlYXJsaWVyLgorCShzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTogTGlrZXdpc2UuCisJKHN2cjRf cHNwYWNlX2RhdGFfY2xlYW51cCk6IExpa2V3aXNlLgorCShnZXRfc3ZyNF9pbmZvKTogTGlrZXdp c2UuCisKK2RpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwor aW5kZXggMzA3ZTQ4My4uYzg4YjljYiAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysr KyBiL2dkYi9zb2xpYi1zdnI0LmMKK0BAIC0xMDYsNiArMTA2LDU5IEBAIHN0YXRpYyBjb25zdCAg Y2hhciAqIGNvbnN0IG1haW5fbmFtZV9saXN0W10gPQorICAgTlVMTAorIH07CisgCisrLyogUGVy IHBzcGFjZSBTVlI0IHNwZWNpZmljIGRhdGEuICAqLworKworK3N0cnVjdCBzdnI0X2luZm8KKyt7 CisrICBDT1JFX0FERFIgZGVidWdfYmFzZTsJLyogQmFzZSBvZiBkeW5hbWljIGxpbmtlciBzdHJ1 Y3R1cmVzLiAgKi8KKysKKysgIC8qIFZhbGlkaXR5IGZsYWcgZm9yIGRlYnVnX2xvYWRlcl9vZmZz ZXQuICAqLworKyAgaW50IGRlYnVnX2xvYWRlcl9vZmZzZXRfcDsKKysKKysgIC8qIExvYWQgYWRk cmVzcyBmb3IgdGhlIGR5bmFtaWMgbGlua2VyLCBpbmZlcnJlZC4gICovCisrICBDT1JFX0FERFIg ZGVidWdfbG9hZGVyX29mZnNldDsKKysKKysgIC8qIE5hbWUgb2YgdGhlIGR5bmFtaWMgbGlua2Vy LCB2YWxpZCBpZiBkZWJ1Z19sb2FkZXJfb2Zmc2V0X3AuICAqLworKyAgY2hhciAqZGVidWdfbG9h ZGVyX25hbWU7CisrCisrICAvKiBMb2FkIG1hcCBhZGRyZXNzIGZvciB0aGUgbWFpbiBleGVjdXRh YmxlLiAgKi8KKysgIENPUkVfQUREUiBtYWluX2xtX2FkZHI7CisrCisrICBDT1JFX0FERFIgaW50 ZXJwX3RleHRfc2VjdF9sb3c7CisrICBDT1JFX0FERFIgaW50ZXJwX3RleHRfc2VjdF9oaWdoOwor KyAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9sb3c7CisrICBDT1JFX0FERFIgaW50ZXJwX3Bs dF9zZWN0X2hpZ2g7CisrfTsKKysKKysvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICov Cisrc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKnNvbGliX3N2cjRfcHNw YWNlX2RhdGE7CisrCisrc3RhdGljIHZvaWQKKytzdnI0X3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0 cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKKyt7CisrICBzdHJ1Y3Qgc3Zy NF9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBz b2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKKysgIHhmcmVlIChpbmZvKTsKKyt9CisrCisrLyogR2V0 IHRoZSBjdXJyZW50IHN2cjQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93 LiAgVGhpcworKyAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8K KysKKytzdGF0aWMgc3RydWN0IHN2cjRfaW5mbyAqCisrZ2V0X3N2cjRfaW5mbyAodm9pZCkKKyt7 CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2Vf ZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKKysg IGlmIChpbmZvICE9IE5VTEwpCisrICAgIHJldHVybiBpbmZvOworKworKyAgaW5mbyA9IFhaQUxM T0MgKHN0cnVjdCBzdnI0X2luZm8pOworKyAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAoY3VycmVu dF9wcm9ncmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhLCBpbmZvKTsKKysgIHJldHVy biBpbmZvOworK30KKysKKyAvKiBSZXR1cm4gbm9uLXplcm8gaWYgR0RCX1NPX05BTUUgYW5kIElO RkVSSU9SX1NPX05BTUUgcmVwcmVzZW50CisgICAgdGhlIHNhbWUgc2hhcmVkIGxpYnJhcnkuICAq LworIAorQEAgLTI5MSw1OSArMzQ0LDYgQEAgbG1fYWRkcl9jaGVjayAoc3RydWN0IHNvX2xpc3Qg KnNvLCBiZmQgKmFiZmQpCisgICByZXR1cm4gc28tPmxtX2luZm8tPmxfYWRkcjsKKyB9CisgCist LyogUGVyIHBzcGFjZSBTVlI0IHNwZWNpZmljIGRhdGEuICAqLworLQorLXN0cnVjdCBzdnI0X2lu Zm8KKy17CistICBDT1JFX0FERFIgZGVidWdfYmFzZTsJLyogQmFzZSBvZiBkeW5hbWljIGxpbmtl ciBzdHJ1Y3R1cmVzLiAgKi8KKy0KKy0gIC8qIFZhbGlkaXR5IGZsYWcgZm9yIGRlYnVnX2xvYWRl cl9vZmZzZXQuICAqLworLSAgaW50IGRlYnVnX2xvYWRlcl9vZmZzZXRfcDsKKy0KKy0gIC8qIExv YWQgYWRkcmVzcyBmb3IgdGhlIGR5bmFtaWMgbGlua2VyLCBpbmZlcnJlZC4gICovCistICBDT1JF X0FERFIgZGVidWdfbG9hZGVyX29mZnNldDsKKy0KKy0gIC8qIE5hbWUgb2YgdGhlIGR5bmFtaWMg bGlua2VyLCB2YWxpZCBpZiBkZWJ1Z19sb2FkZXJfb2Zmc2V0X3AuICAqLworLSAgY2hhciAqZGVi dWdfbG9hZGVyX25hbWU7CistCistICAvKiBMb2FkIG1hcCBhZGRyZXNzIGZvciB0aGUgbWFpbiBl eGVjdXRhYmxlLiAgKi8KKy0gIENPUkVfQUREUiBtYWluX2xtX2FkZHI7CistCistICBDT1JFX0FE RFIgaW50ZXJwX3RleHRfc2VjdF9sb3c7CistICBDT1JFX0FERFIgaW50ZXJwX3RleHRfc2VjdF9o aWdoOworLSAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9sb3c7CistICBDT1JFX0FERFIgaW50 ZXJwX3BsdF9zZWN0X2hpZ2g7CistfTsKKy0KKy0vKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtl eS4gICovCistc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKnNvbGliX3N2 cjRfcHNwYWNlX2RhdGE7CistCistc3RhdGljIHZvaWQKKy1zdnI0X3BzcGFjZV9kYXRhX2NsZWFu dXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKKy17CistICBzdHJ1 Y3Qgc3ZyNF9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNw YWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhKTsKKy0gIHhmcmVlIChpbmZvKTsKKy19CistCist LyogR2V0IHRoZSBjdXJyZW50IHN2cjQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBhZGQg aXQgbm93LiAgVGhpcworLSAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0 LiAgKi8KKy0KKy1zdGF0aWMgc3RydWN0IHN2cjRfaW5mbyAqCistZ2V0X3N2cjRfaW5mbyAodm9p ZCkKKy17CistICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1f c3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRh KTsKKy0gIGlmIChpbmZvICE9IE5VTEwpCistICAgIHJldHVybiBpbmZvOworLQorLSAgaW5mbyA9 IFhaQUxMT0MgKHN0cnVjdCBzdnI0X2luZm8pOworLSAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAo Y3VycmVudF9wcm9ncmFtX3NwYWNlLCBzb2xpYl9zdnI0X3BzcGFjZV9kYXRhLCBpbmZvKTsKKy0g IHJldHVybiBpbmZvOworLX0KKy0KKyAvKiBMb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVzICovCisg Cisgc3RhdGljIGludCBtYXRjaF9tYWluIChjb25zdCBjaGFyICopOwoKZGlmZiAtLWdpdCBhL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVv ZjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxOGNkNgotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoCkBAIC0wLDAg KzEsMTcgQEAKKzIwMTItMDctMTkgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgor CisJKiBzb2xpYi1zdnI0LmMgKHN2cjRfaW5mbyk6IE1hZGUgZGVidWdfbG9hZGVyX29mZnNldF9w IGEgYml0ZmllbGQuCisKK2RpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGli LXN2cjQuYworaW5kZXggYzg4YjljYi4uOGU0MWYxOSAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1z dnI0LmMKKysrKyBiL2dkYi9zb2xpYi1zdnI0LmMKK0BAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0 IHN2cjRfaW5mbworICAgQ09SRV9BRERSIGRlYnVnX2Jhc2U7CS8qIEJhc2Ugb2YgZHluYW1pYyBs aW5rZXIgc3RydWN0dXJlcy4gICovCisgCisgICAvKiBWYWxpZGl0eSBmbGFnIGZvciBkZWJ1Z19s b2FkZXJfb2Zmc2V0LiAgKi8KKy0gIGludCBkZWJ1Z19sb2FkZXJfb2Zmc2V0X3A7CisrICB1bnNp Z25lZCBpbnQgZGVidWdfbG9hZGVyX29mZnNldF9wIDogMTsKKyAKKyAgIC8qIExvYWQgYWRkcmVz cyBmb3IgdGhlIGR5bmFtaWMgbGlua2VyLCBpbmZlcnJlZC4gICovCisgICBDT1JFX0FERFIgZGVi dWdfbG9hZGVyX29mZnNldDsKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNm9m Ny5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NDE1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGxv cGVuLXN0YXAtcHJvYmUtNm9mNy5wYXRjaApAQCAtMCwwICsxLDE5ODkgQEAKK2dkYi8KKzIwMTIt MDctMzAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBicmVha3BvaW50 LmggKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlZmluaXRpb24KKwl0byBz b2xpYi5oLCBhbmQgYWRkZWQgYSBuZXcgcGFyYW1ldGVyLgorCSogYnJlYWtwb2ludC5jIChoYW5k bGVfc29saWJfZXZlbnQpOiBNb3ZlZCBmdW5jdGlvbiB0byBzb2xpYi5jCisJYW5kIGFkZGVkIGEg bmV3IHBhcmFtZXRlci4KKwkoYnBzdGF0X3N0b3Bfc3RhdHVzKTogUGFzcyBuZXcgYXJndW1lbnQg dG8gaGFuZGxlX3NvbGliX2V2ZW50LgorCSogc29saWIuaCAoYnJlYWtwb2ludC5oKTogTmV3IGlu Y2x1ZGUuCisJKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlZmluaXRpb24g ZnJvbSBicmVha3BvaW50LmgKKwlhbmQgYWRkZWQgYSBuZXcgcGFyYW1ldGVyLgorCSh1cGRhdGVf c29saWJfYnJlYWtwb2ludHMpOiBOZXcgZnVuY3Rpb24gZGVmaW5pdGlvbi4KKwkqIHNvbGliLmMg KGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGZyb20gYnJlYWtwb2ludC5jCisJ YW5kIGFkZGVkIGEgbmV3IHBhcmFtZXRlci4KKwkodXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzKTog TmV3IGZ1bmN0aW9uLgorCSogc29saXN0LmggKGJyZWFrcG9pbnQuaCk6IE5ldyBpbmNsdWRlLgor CSh0YXJnZXRfc29fb3BzKTogTmV3IGZpZWxkcyAiaGFuZGxlX3NvbGliX2V2ZW50IiBhbmQKKwki dXBkYXRlX2JyZWFrcG9pbnRzIi4KKwkqIGluZnJ1bi5jIChzZXRfc3RvcF9vbl9zb2xpYl9ldmVu dHMpOiBOZXcgZnVuY3Rpb24uCisJKF9pbml0aWFsaXplX2luZnJ1bik6IFVzZSB0aGUgYWJvdmUg Zm9yICJzZXQgc3RvcC1vbi1zb2xpYi1ldmVudHMiLgorCShoYW5kbGVfaW5mZXJpb3JfZXZlbnQp OiBQYXNzIG5ldyBhcmd1bWVudCB0byBoYW5kbGVfc29saWJfZXZlbnQuCisJKiBzb2xpYi1zdnI0 LmMgKHByb2JlLmgpOiBOZXcgaW5jbHVkZS4KKwkobmFtZXNwYWNlX3RhYmxlX2ZsYXR0ZW4pOiBO ZXcgZm9yd2FyZCBkZWNsYXJhdGlvbi4KKwkobG1faW5mbyk6IE5ldyBmaWVsZHMgImxtaWQiIGFu ZCAiaW5faW5pdGlhbF9ucyIuCisJKHByb2JlX2FjdGlvbik6IE5ldyBlbnVtLgorCShwcm9iZV9p bmZvKTogTmV3IHN0cnVjdC4KKwkocHJvYmVfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCisJ KE5VTV9QUk9CRVMpOiBOZXcgZGVmaW5pdGlvbi4KKwkoc3ZyNF9pbmZvKTogTmV3IGZpZWxkcyAg InVzaW5nX3Byb2JlcyIsICJwcm9iZXMiIGFuZAorCSJuYW1lc3BhY2VfdGFibGUiLgorCShmcmVl X3Byb2Jlcyk6IE5ldyBmdW5jdGlvbi4KKwkoZnJlZV9uYW1lc3BhY2VfdGFibGUpOiBMaWtld2lz ZS4KKwkoc3ZyNF9wc3BhY2VfZGF0YV9jbGVhbnVwKTogRnJlZSBwcm9iZXMgYW5kIG5hbWVzcGFj ZSB0YWJsZS4KKwkoc3ZyNF9zYW1lKTogQWxzbyBjb21wYXJlIG5hbWVzcGFjZXMgaWYgdXNpbmcg cHJvYmVzLgorCShsbV9hZGRyX2NoZWNrKTogT25seSBwcmludCAuZHluYW1pYyBzZWN0aW9uIGF0 IHdyb25nIGFkZHJlc3MKKwl3YXJuaW5nIGZvciBpbml0aWFsIG5hbWVzcGFjZSBpZiB1c2luZyBw cm9iZXMuCisJKHJfbWFwX2Zyb21fZGVidWdfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKwkoc29saWJf c3ZyNF9yX21hcCk6IENhbGwgdGhlIGFib3ZlLgorCShzdnI0X3JlYWRfc29fbGlzdCk6IE5ldyBw YXJhbWV0ZXIgInByZXZfbG0iLgorCUNoYW5nZWQJcmV0dXJuIHR5cGUgZnJvbSB2b2lkIHRvIGlu dC4KKwlSZXR1cm4gbm9uemVybyBvbiBzdWNjZXNzLCB6ZXJvIG9uIGVycm9yLgorCShzdnI0X2N1 cnJlbnRfc29zX2Zyb21fZGVidWdfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKwkoc3ZyNF9jdXJyZW50 X3Nvcyk6IENyZWF0ZSByZXN1bHQgZnJvbSBuYW1lc3BhY2UgdGFibGUgaWYgYXZhaWxhYmxlLgor CVVzZSBzdnI0X2N1cnJlbnRfc29zX2Zyb21fZGVidWdfYmFzZSB0byBnZW5lcmF0ZSBsaXN0IG90 aGVyd2lzZS4KKwkocHJvYmVfYW5kX2luZm8pOiBOZXcgc3RydWN0LgorCShzb2xpYl9ldmVudF9w cm9iZV9hdCk6IE5ldyBmdW5jdGlvbi4KKwkoc29saWJfZXZlbnRfcHJvYmVfYWN0aW9uKTogTGlr ZXdpc2UuCisJKG5hbWVzcGFjZSk6IE5ldyBzdHJ1Y3QuCisJKGhhc2hfbmFtZXNwYWNlKTogTmV3 IGZ1bmN0aW9uLgorCShlcXVhbF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KKwkoZnJlZV9uYW1lc3Bh Y2UpOiBMaWtld2lzZS4KKwkobmFtZXNwYWNlX3VwZGF0ZV9mdWxsKTogTGlrZXdpc2UuCisJKG5h bWVzcGFjZV91cGRhdGVfaW5jcmVtZW50YWwpOiBMaWtld2lzZS4KKwkoc3ZyNF9oYW5kbGVfc29s aWJfZXZlbnQpOiBMaWtld2lzZS4KKwkobmFtZXNwYWNlX3RhYmxlX2ZsYXR0ZW5faGVscGVyKTog TGlrZXdpc2UuCisJKG5hbWVzcGFjZV90YWJsZV9mbGF0dGVuKTogTGlrZXdpc2UuCisJKHN2cjRf dXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQpOiBMaWtld2lzZS4KKwkoc3ZyNF91cGRhdGVf c29saWJfZXZlbnRfYnJlYWtwb2ludHMpOiBMaWtld2lzZS4KKwkoc3ZyNF9jcmVhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludHMpOiBMaWtld2lzZS4KKwkoZW5hYmxlX2JyZWFrKTogRnJlZSBwcm9i ZXMgYmVmb3JlIGNyZWF0aW5nIGJyZWFrcG9pbnRzLgorCVVzZSBzdnI0X2NyZWF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50cyB0byBjcmVhdGUgYnJlYWtwb2ludHMuCisJKHN2cjRfc29saWJfY3Jl YXRlX2luZmVyaW9yX2hvb2spOiBGcmVlIHRoZSBuYW1lc3BhY2UgdGFibGUuCisJKF9pbml0aWFs aXplX3N2cjRfc29saWIpOiBJbml0aWFsaXNlIHN2cjRfc29fb3BzLmhhbmRsZV9zb2xpYl9ldmVu dAorCWFuZCBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMuCisKK2dkYi90ZXN0c3VpdGUK KzIwMTItMDctMzAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBnZGIu YmFzZS9icmVhay1pbnRlcnAuZXhwIChzb2xpYl9icCk6IE5ldyBjb25zdGFudC4KKwkocmVhY2hf MSk6IFVzZSB0aGUgYWJvdmUgaW5zdGVhZCBvZiAiX2RsX2RlYnVnX3N0YXRlIi4KKwkodGVzdF9h dHRhY2gpOiBMaWtld2lzZS4KKwkodGVzdF9sZCk6IExpa2V3aXNlLgorCSogZ2RiLmJhc2UvYnJl YWstcHJvYmVzLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuYmFzZS9icmVhay1wcm9iZXMuYzogTGlr ZXdpc2UuCisJKiBnZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYzogTGlrZXdpc2UuCisJKiBn ZGIuYmFzZS9pbmZvLXNoYXJlZC5leHA6IE5ldyBmaWxlLgorCSogZ2RiLmJhc2UvaW5mby1zaGFy ZWQuYzogTGlrZXdpc2UuCisJKiBnZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYzogTGlrZXdp c2UuCisJKiBnZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYzogTGlrZXdpc2UuCisJKiBnZGIu YmFzZS9icmVhay1kbG1vcGVuLmV4cDogTGlrZXdpc2UuCisJKiBnZGIuYmFzZS9icmVhay1kbG1v cGVuLmM6IExpa2V3aXNlLgorCSogZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi1zb2xpYi5jOiBMaWtl d2lzZS4KKworSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2JyZWFrcG9pbnQuaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIw MTItMDgtMTQgMTc6MzE6MzcuMDUwOTg0NDI3ICswMjAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDgtMTQgMTc6MzQ6NDQuMjAzNzQ2NjAxICswMjAwCitA QCAtMTUxNSw4ICsxNTE1LDYgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0 IGJyZQorIC8qIEF0dGVtcHQgdG8gZGV0ZXJtaW5lIGFyY2hpdGVjdHVyZSBvZiBsb2NhdGlvbiBp ZGVudGlmaWVkIGJ5IFNBTC4gICovCisgZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRfc2FsX2Fy Y2ggKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKTsKKyAKKy1leHRlcm4gdm9pZCBoYW5kbGVf c29saWJfZXZlbnQgKHZvaWQpOworLQorIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICpkZWx0YSk7CisgCitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvYnJlYWtwb2ludC5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9icmVha3BvaW50 LmMJMjAxMi0wOC0xNCAxNzozMTozNy4xMjg5ODQ0MDQgKzAyMDAKKysrKyBnZGItNy40LjkxLjIw MTIwODE0L2dkYi9icmVha3BvaW50LmMJMjAxMi0wOC0xNCAxNzozNDo0NC4yMTE3NDY1OTcgKzAy MDAKK0BAIC01MjA1LDcgKzUyMDUsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRy ZXNzX3NwYWNlCisgICAgIHsKKyAgICAgICBpZiAoYnMtPmJyZWFrcG9pbnRfYXQgJiYgYnMtPmJy ZWFrcG9pbnRfYXQtPnR5cGUgPT0gYnBfc2hsaWJfZXZlbnQpCisgCXsKKy0JICBoYW5kbGVfc29s aWJfZXZlbnQgKCk7CisrCSAgaGFuZGxlX3NvbGliX2V2ZW50IChicyk7CisgCSAgYnJlYWs7Cisg CX0KKyAgICAgfQorQEAgLTUzMDEsMjUgKzUzMDEsNiBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lk KQorICAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOworIH0KKyAKKy0vKiBIYW5kbGUgYW4g c29saWIgZXZlbnQgYnkgY2FsbGluZyBzb2xpYl9hZGQuICAqLworLQorLXZvaWQKKy1oYW5kbGVf c29saWJfZXZlbnQgKHZvaWQpCisteworLSAgY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNo ZSAoY3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlKTsKKy0KKy0gIC8qIENoZWNrIGZvciBhbnkg bmV3bHkgYWRkZWQgc2hhcmVkIGxpYnJhcmllcyBpZiB3ZSdyZSBzdXBwb3NlZCB0bworLSAgICAg YmUgYWRkaW5nIHRoZW0gYXV0b21hdGljYWxseS4gIFN3aXRjaCB0ZXJtaW5hbCBmb3IgYW55IG1l c3NhZ2VzCistICAgICBwcm9kdWNlZCBieSBicmVha3BvaW50X3JlX3NldC4gICovCistICB0YXJn ZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0cHV0ICgpOworLSNpZmRlZiBTT0xJQl9BREQKKy0gIFNP TElCX0FERCAoTlVMTCwgMCwgJmN1cnJlbnRfdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CistI2Vs c2UKKy0gIHNvbGliX2FkZCAoTlVMTCwgMCwgJmN1cnJlbnRfdGFyZ2V0LCBhdXRvX3NvbGliX2Fk ZCk7CistI2VuZGlmCistICB0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7CistfQorLQorIC8q IFByZXBhcmUgV0hBVCBmaW5hbCBkZWNpc2lvbiBmb3IgaW5mcnVuLiAgKi8KKyAKKyAvKiBEZWNp ZGUgd2hhdCBpbmZydW4gbmVlZHMgdG8gZG8gd2l0aCB0aGlzIGJwc3RhdC4gICovCitJbmRleDog Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWIuaAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu OTEuMjAxMjA4MTQub3JpZy9nZGIvc29saWIuaAkyMDEyLTAyLTAzIDE2OjE5OjM3LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLmgJMjAxMi0wOC0xNCAx NzozNDo0NC4yNTc3NDY1ODcgKzAyMDAKK0BAIC0yMSw2ICsyMSw5IEBACisgI2lmbmRlZiBTT0xJ Ql9ICisgI2RlZmluZSBTT0xJQl9ICisgCisrLyogRm9yIGJwc3RhdC4gICovCisrI2luY2x1ZGUg ImJyZWFrcG9pbnQuaCIKKysKKyAvKiBGb3J3YXJkIGRlY2wncyBmb3IgcHJvdG90eXBlcyAqLwor IHN0cnVjdCBzb19saXN0OworIHN0cnVjdCB0YXJnZXRfb3BzOworQEAgLTkxLDQgKzk0LDE1IEBA IGV4dGVybiBDT1JFX0FERFIgZ2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKKyAJCQkJCQkJCSAgICAg IHZvaWQgKiksCisgCQkJCQkJICAgIHZvaWQgKmRhdGEpOworIAorKy8qIEhhbmRsZSBhbiBzb2xp YiBldmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4gIFRhcmdldHMgd2hpY2ggaGFuZGxlCisrICAg c29saWIgZXZlbnRzIHVzaW5nIGJyZWFrcG9pbnRzIG11c3QgcGFzcyBhIHZhbGlkIGJwc3RhdC4g IFRhcmdldHMKKysgICB3aGljaCBoYW5kbGUgc29saWIgZXZlbnRzIHVzaW5nIHNvbWUgb3RoZXIg bWVjaGFuaXNtIHNob3VsZCBwYXNzCisrICAgTlVMTC4gICovCisrCisrZXh0ZXJuIHZvaWQgaGFu ZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpOworKworKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9w dGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KKysKKytl eHRlcm4gdm9pZCB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpOworKworICNlbmRpZiAv KiBTT0xJQl9IICovCitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWIuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvc29saWIuYwkyMDEyLTA4 LTE0IDE3OjMxOjM2LjgzMjk4NDQ5MiArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3NvbGliLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4yNzI3NDY1ODMgKzAyMDAKK0BAIC0xMjI2LDYg KzEyMjYsNDIgQEAgbm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdub3JlZCwgaW50CisgICBv YmpmaWxlX3B1cmdlX3NvbGlicyAoKTsKKyB9CisgCisrLyogU2VlIHNvbGliLmguICAqLworKwor K3ZvaWQKKytoYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKKyt7CisrICBzdHJ1Y3QgdGFy Z2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisrCisrICBpZiAo b3BzLT5oYW5kbGVfc29saWJfZXZlbnQgIT0gTlVMTCkKKysgICAgb3BzLT5oYW5kbGVfc29saWJf ZXZlbnQgKGJzKTsKKysKKysgIGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJfY2FjaGUgKGN1cnJl bnRfaW5mZXJpb3IgKCktPnBzcGFjZSk7CisrCisrICAvKiBDaGVjayBmb3IgYW55IG5ld2x5IGFk ZGVkIHNoYXJlZCBsaWJyYXJpZXMgaWYgd2UncmUgc3VwcG9zZWQgdG8KKysgICAgIGJlIGFkZGlu ZyB0aGVtIGF1dG9tYXRpY2FsbHkuICBTd2l0Y2ggdGVybWluYWwgZm9yIGFueSBtZXNzYWdlcwor KyAgICAgcHJvZHVjZWQgYnkgYnJlYWtwb2ludF9yZV9zZXQuICAqLworKyAgdGFyZ2V0X3Rlcm1p bmFsX291cnNfZm9yX291dHB1dCAoKTsKKysjaWZkZWYgU09MSUJfQURECisrICBTT0xJQl9BREQg KE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOworKyNlbHNlCisrICBz b2xpYl9hZGQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOworKyNl bmRpZgorKyAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgpOworK30KKysKKysvKiBTZWUgc29s aWIuaC4gICovCisrCisrdm9pZAorK3VwZGF0ZV9zb2xpYl9icmVha3BvaW50cyAodm9pZCkKKyt7 CisrICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJj aCk7CisrCisrICBpZiAob3BzLT51cGRhdGVfYnJlYWtwb2ludHMgIT0gTlVMTCkKKysgICAgb3Bz LT51cGRhdGVfYnJlYWtwb2ludHMgKCk7CisrfQorKworKworIC8qIFJlbG9hZCBzaGFyZWQgbGli cmFyaWVzLCBidXQgYXZvaWQgcmVsb2FkaW5nIHRoZSBzYW1lIHN5bWJvbCBmaWxlCisgICAgd2Ug YWxyZWFkeSBoYXZlIGxvYWRlZC4gICovCisgCitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9n ZGIvc29saXN0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2Ri L3NvbGlzdC5oCTIwMTItMDEtMDQgMDk6MTc6MTEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saXN0LmgJMjAxMi0wOC0xNCAxNzozNDo0NC4yNzM3NDY1ODQg KzAyMDAKK0BAIC0yMyw2ICsyMyw4IEBACisgI2RlZmluZSBTT19OQU1FX01BWF9QQVRIX1NJWkUg NTEyCS8qIEZJWE1FOiBTaG91bGQgYmUgZHluYW1pYyAqLworIC8qIEZvciBkb21haW5fZW51bSBk b21haW4uICAqLworICNpbmNsdWRlICJzeW10YWIuaCIKKysvKiBGb3IgYnBzdGF0LiAgKi8KKysj aW5jbHVkZSAiYnJlYWtwb2ludC5oIgorIAorIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHRh cmdldCBzcGVjaWZpYyBsaW5rIG1hcCBpbmZvcm1hdGlvbi4gIFRoaXMKKyAgICBzdHJ1Y3QgaXMg b3BhcXVlIHRvIGFsbCBidXQgdGhlIHRhcmdldCBzcGVjaWZpYyBmaWxlLiAgKi8KK0BAIC0xNDks NiArMTUxLDIwIEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCisgICAgICAgIGNvcmUgZmlsZSAoaW4g cGFydGljdWxhciwgZm9yIHJlYWRvbmx5IHNlY3Rpb25zKS4gICovCisgICAgIGludCAoKmtlZXBf ZGF0YV9pbl9jb3JlKSAoQ09SRV9BRERSIHZhZGRyLAorIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZSk7CisrCisrICAgIC8qIFRhcmdldC1zcGVjaWZpYyBoYW5kbGluZyBvZiBzb2xpYiBldmVu dHMuICBGb3IgdGFyZ2V0cyB3aGljaAorKyAgICAgICBoYW5kbGUgc29saWIgZXZlbnRzIHVzaW5n IGJyZWFrcG9pbnRzIGEgdmFsaWQgYnBzdGF0IG11c3QgYmUKKysgICAgICAgcGFzc2VkLiAgVGFy Z2V0cyB3aGljaCBoYW5kbGUgc29saWIgZXZlbnRzIHVzaW5nIHNvbWUgb3RoZXIKKysgICAgICAg bWVjaGFuaXNtIHNob3VsZCBwYXNzIE5VTEwuICBUaGlzIHBvaW50ZXIgY2FuIGJlIE5VTEwsIGlu IHdoaWNoCisrICAgICAgIGNhc2Ugbm8gc3BlY2lmaWMgaGFuZGxpbmcgaXMgbmVjZXNzYXJ5IGZv ciB0aGlzIHRhcmdldC4gICovCisrICAgIHZvaWQgKCpoYW5kbGVfc29saWJfZXZlbnQpIChicHN0 YXQgYnMpOworKworKyAgICAvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzb2xpYiBldmVu dCBicmVha3BvaW50cyBhcworKyAgICAgICBhcHByb3ByaWF0ZS4gIFRoaXMgc2hvdWxkIGJlIGNh bGxlZCB3aGVuZXZlcgorKyAgICAgICBzdG9wX29uX3NvbGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAg VGhpcyBwb2ludGVyIGNhbiBiZQorKyAgICAgICBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIGVuYWJs aW5nIG9yIGRpc2FibGluZyBpcyBuZWNlc3NhcnkKKysgICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAg Ki8KKysgICAgdm9pZCAoKnVwZGF0ZV9icmVha3BvaW50cykgKHZvaWQpOworICAgfTsKKyAKKyAv KiBGcmVlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgKHNvX2xpc3QgKikuICAqLworSW5k ZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2luZnJ1bi5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9pbmZydW4uYwkyMDEyLTA4LTE0IDE3OjMzOjE2LjI0 OTk1NTAwNyArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2luZnJ1bi5jCTIwMTIt MDgtMTQgMTc6MzQ6NDQuMjc2NzQ2NTgzICswMjAwCitAQCAtMzYxLDYgKzM2MSwxNiBAQCBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCisgLyogTm9uemVybyBpZiB3ZSB3 YW50IHRvIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHdlJ3JlIG5vdGlmaWVkCisgICAg b2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIGJ5IHRoZSBkeW5hbWljIGxpbmtlci4gICovCisgaW50 IHN0b3Bfb25fc29saWJfZXZlbnRzOworKworKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFs IHNoYXJlZCBsaWJyYXJ5IGV2ZW50IGJyZWFrcG9pbnRzCisrICAgYXMgYXBwcm9wcmlhdGUgd2hl biB0aGUgYWJvdmUgZmxhZyBpcyBjaGFuZ2VkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9z dG9wX29uX3NvbGliX2V2ZW50cyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYykKKyt7CisrICB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKCk7Cisr fQorKworIHN0YXRpYyB2b2lkCisgc2hvd19zdG9wX29uX3NvbGliX2V2ZW50cyAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKyAJCQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYywgY29uc3QgY2hhciAqdmFsdWUpCitAQCAtMzMyMSw3ICszMzMxLDcgQEAgaGFuZGxlX2lu ZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uXworIAkgICAgY29udGV4dF9zd2l0Y2ggKGVj cy0+cHRpZCk7CisgCSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChlY3MtPnB0aWQp OworIAorLQkgIGhhbmRsZV9zb2xpYl9ldmVudCAoKTsKKysJICBoYW5kbGVfc29saWJfZXZlbnQg KE5VTEwpOworIAorIAkgIGVjcy0+ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0b3BfYnBzdGF0Cisg CSAgICA9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAocmVnY2FjaGUp LAorQEAgLTcyMjYsNyArNzIzNiw3IEBAIFNob3cgc3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5 IGV2ZW50cy4KKyBJZiBub256ZXJvLCBnZGIgd2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIg d2hlbiB0aGUgZHluYW1pYyBsaW5rZXJcblwKKyBub3RpZmllcyBnZGIgb2Ygc2hhcmVkIGxpYnJh cnkgZXZlbnRzLiAgVGhlIG1vc3QgY29tbW9uIGV2ZW50IG9mIGludGVyZXN0XG5cCisgdG8gdGhl IHVzZXIgd291bGQgYmUgbG9hZGluZy91bmxvYWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwKKy0J CQkgICAgTlVMTCwKKysJCQkgICAgc2V0X3N0b3Bfb25fc29saWJfZXZlbnRzLAorIAkJCSAgICBz aG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAorIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsK KyAKK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4 LTE0IDE3OjM0OjM5LjM0Njc1Mjg0MCArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3NvbGliLXN2cjQuYwkyMDEyLTA4LTE0IDE3OjM1OjQyLjYzNTczMjU5NiArMDIwMAorQEAgLTQ3 LDEwICs0NywxMiBAQAorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMu aCIKKyAjaW5jbHVkZSAiZ2RiX2JmZC5oIgorKyNpbmNsdWRlICJwcm9iZS5oIgorIAorIHN0YXRp YyBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICh2 b2lkKTsKKyBzdGF0aWMgaW50IHN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKKyBz dGF0aWMgdm9pZCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7Cisrc3RhdGlj IHN0cnVjdCBzb19saXN0ICpuYW1lc3BhY2VfdGFibGVfZmxhdHRlbiAoaHRhYl90IG5hbWVzcGFj ZV90YWJsZSk7CisgCisgLyogTGluayBtYXAgaW5mbyB0byBpbmNsdWRlIGluIGFuIGFsbG9jYXRl ZCBzb19saXN0IGVudHJ5LiAgKi8KKyAKK0BAIC03MSw2ICs3MywxNiBAQCBzdHJ1Y3QgbG1faW5m bworIAorICAgICAvKiBWYWx1ZXMgcmVhZCBpbiBmcm9tIGluZmVyaW9yJ3MgZmllbGRzIG9mIHRo ZSBzYW1lIG5hbWUuICAqLworICAgICBDT1JFX0FERFIgbF9sZCwgbF9uZXh0LCBsX3ByZXYsIGxf bmFtZTsKKysKKysgICAgLyogTnVtZXJpYyBsaW5rLW1hcCBJRCBvZiB0aGUgbmFtZXNwYWNlIHRo aXMgb2JqZWN0IGlzIGxvYWRlZAorKyAgICAgICBpbnRvLiAgVGhpcyB2YWx1ZSBpcyBvbmx5IHZh bGlkIHdoZW4gdXNpbmcgdGhlIHByb2Jlcy1iYXNlZAorKyAgICAgICBpbnRlcmZhY2UuICAqLwor KyAgICBMT05HRVNUIGxtaWQ7CisrCisrICAgIC8qIE5vbnplcm8gaWYgdGhlIG5hbWVzcGFjZSBs aXN0IHRoaXMgb2JqZWN0IGlzIGxvYWRlZCBpbnRvIGlzIHRoZQorKyAgICAgICBhcHBsaWNhdGlv bidzIGluaXRpYWwgbmFtZXNwYWNlIChMTV9JRF9CQVNFKS4gIFRoaXMgdmFsdWUgaXMKKysgICAg ICAgb25seSB2YWxpZCB3aGVuIHVzaW5nIHRoZSBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlLiAgKi8K KysgICAgdW5zaWduZWQgaW50IGluX2luaXRpYWxfbnMgOiAxOworICAgfTsKKyAKKyAvKiBPbiBT VlI0IHN5c3RlbXMsIGEgbGlzdCBvZiBzeW1ib2xzIGluIHRoZSBkeW5hbWljIGxpbmtlciB3aGVy ZQorQEAgLTEwNyw2ICsxMTksNTMgQEAgc3RhdGljIGNvbnN0ICBjaGFyICogY29uc3QgbWFpbl9u YW1lX2xpcworICAgTlVMTAorIH07CisgCisrLyogV2hhdCB0byBkbyB3aXRoIHRoZSBuYW1lc3Bh Y2UgdGFibGUgd2hlbiBhIHByb2JlIHN0b3Agb2NjdXJzLiAgKi8KKysKKytlbnVtIHByb2JlX2Fj dGlvbgorKyAgeworKyAgICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3JvbmcuICBTdG9w IHVzaW5nIHByb2JlcyBhbmQKKysgICAgICAgcmV2ZXJ0IHRvIHVzaW5nIHRoZSBvbGRlciBpbnRl cmZhY2UuICAqLworKyAgICBOQU1FU1BBQ0VfVEFCTEVfSU5WQUxJREFURSwKKysKKysgICAgLyog Tm8gYWN0aW9uIGlzIHJlcXVpcmVkLiAgVGhpcyBuYW1lc3BhY2UgaXMgc3RpbGwgdmFsaWQuICAq LworKyAgICBOQU1FU1BBQ0VfTk9fQUNUSU9OLAorKworKyAgICAvKiBUaGlzIG5hbWVzcGFjZSBz aG91bGQgYmUgcmVsb2FkZWQgZW50aXJlbHkuICAqLworKyAgICBOQU1FU1BBQ0VfUkVMT0FELAor KworKyAgICAvKiBBdHRlbXB0IHRvIGluY3JlbWVudGFsbHkgdXBkYXRlIHRoaXMgbmFtZXNwYWNl LiBJZiB0aGUKKysgICAgICAgdXBkYXRlIGZhaWxzIG9yIGlzIG5vdCBwb3NzaWJsZSwgZmFsbCBi YWNrIHRvIHJlbG9hZGluZworKyAgICAgICB0aGUgbmFtZXNwYWNlIGluIGZ1bGwuICAqLworKyAg ICBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9BRCwKKysgIH07CisrCisrLyogQSBwcm9iZSdzIG5h bWUgYW5kIGl0cyBhc3NvY2lhdGVkIGFjdGlvbi4gICovCisrCisrc3RydWN0IHByb2JlX2luZm8K Kyt7CisrICAvKiBUaGUgbmFtZSBvZiB0aGUgcHJvYmUuICAqLworKyAgY29uc3QgY2hhciAqbmFt ZTsKKysKKysgIC8qIFdoYXQgdG8gZG8gd2l0aCB0aGUgbmFtZXNwYWNlIHRhYmxlIHdoZW4gYSBw cm9iZSBzdG9wIG9jY3Vycy4gICovCisrICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247CisrfTsK KysKKysvKiBBIGxpc3Qgb2YgbmFtZWQgcHJvYmVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGFjdGlv bnMuICBJZiBhbGwKKysgICBwcm9iZXMgYXJlIHByZXNlbnQgaW4gdGhlIGR5bmFtaWMgbGlua2Vy IHRoZW4gdGhlIHByb2Jlcy1iYXNlZAorKyAgIGludGVyZmFjZSB3aWxsIGJlIHVzZWQuICAqLwor KworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvYmVfaW5mbyBwcm9iZV9pbmZvW10gPQorK3sKKysg IHsgImluaXRfc3RhcnQiLCBOQU1FU1BBQ0VfTk9fQUNUSU9OIH0sCisrICB7ICJpbml0X2NvbXBs ZXRlIiwgTkFNRVNQQUNFX1JFTE9BRCB9LAorKyAgeyAibWFwX3N0YXJ0IiwgTkFNRVNQQUNFX05P X0FDVElPTiB9LAorKyAgeyAicmVsb2NfY29tcGxldGUiLCBOQU1FU1BBQ0VfVVBEQVRFX09SX1JF TE9BRCB9LAorKyAgeyAidW5tYXBfc3RhcnQiLCBOQU1FU1BBQ0VfTk9fQUNUSU9OIH0sCisrICB7 ICJ1bm1hcF9jb21wbGV0ZSIsIE5BTUVTUEFDRV9SRUxPQUQgfSwKKyt9OworKworKyNkZWZpbmUg TlVNX1BST0JFUyBBUlJBWV9TSVpFIChwcm9iZV9pbmZvKQorKworIC8qIFBlciBwc3BhY2UgU1ZS NCBzcGVjaWZpYyBkYXRhLiAgKi8KKyAKKyBzdHJ1Y3Qgc3ZyNF9pbmZvCitAQCAtMTI5LDE3ICsx ODgsNTggQEAgc3RydWN0IHN2cjRfaW5mbworICAgQ09SRV9BRERSIGludGVycF90ZXh0X3NlY3Rf aGlnaDsKKyAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OworICAgQ09SRV9BRERSIGlu dGVycF9wbHRfc2VjdF9oaWdoOworKworKyAgLyogTm9uemVybyBpZiB3ZSBhcmUgdXNpbmcgdGhl IHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UuICAqLworKyAgdW5zaWduZWQgaW50IHVzaW5nX3Byb2Jl cyA6IDE7CisrCisrICAvKiBOYW1lZCBwcm9iZXMgaW4gdGhlIGR5bmFtaWMgbGlua2VyLiAgKi8K KysgIFZFQyAocHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsKKysKKysgIC8qIFRhYmxlIG9m IGR5bmFtaWMgbGlua2VyIG5hbWVzcGFjZXMsIHVzZWQgYnkgdGhlIHByb2Jlcy1iYXNlZAorKyAg ICAgaW50ZXJmYWNlLiAgKi8KKysgIGh0YWJfdCBuYW1lc3BhY2VfdGFibGU7CisgfTsKKyAKKyAv KiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBw cm9ncmFtX3NwYWNlX2RhdGEgKnNvbGliX3N2cjRfcHNwYWNlX2RhdGE7CisgCisrLyogRnJlZSBh bnkgYWxsb2NhdGVkIHByb2JlIHZlY3RvcnMuICAqLworKworK3N0YXRpYyB2b2lkCisrZnJlZV9w cm9iZXMgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisreworKyAgaW50IGk7CisrCisrICBmb3Ig KGkgPSAwOyBpIDwgTlVNX1BST0JFUzsgaSsrKQorKyAgICBWRUNfZnJlZSAocHJvYmVfcCwgaW5m by0+cHJvYmVzW2ldKTsKKysKKysgIG1lbXNldCAoaW5mby0+cHJvYmVzLCAwLCBzaXplb2YgKGlu Zm8tPnByb2JlcykpOworK30KKysKKysvKiBGcmVlIHRoZSBuYW1lc3BhY2UgdGFibGUuICAqLwor KworK3N0YXRpYyB2b2lkCisrZnJlZV9uYW1lc3BhY2VfdGFibGUgKHN0cnVjdCBzdnI0X2luZm8g KmluZm8pCisreworKyAgaWYgKGluZm8tPm5hbWVzcGFjZV90YWJsZSA9PSBOVUxMKQorKyAgICBy ZXR1cm47CisrCisrICBodGFiX2RlbGV0ZSAoaW5mby0+bmFtZXNwYWNlX3RhYmxlKTsKKysgIGlu Zm8tPm5hbWVzcGFjZV90YWJsZSA9IE5VTEw7CisrfQorKworIHN0YXRpYyB2b2lkCisgc3ZyNF9w c3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lkICph cmcpCisgeworICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKKyAKKyAgIGluZm8gPSBwcm9ncmFt X3NwYWNlX2RhdGEgKHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5m byA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBmcmVlX3Byb2JlcyAoaW5mbyk7CisrICBm cmVlX25hbWVzcGFjZV90YWJsZSAoaW5mbyk7CisrCisgICB4ZnJlZSAoaW5mbyk7CisgfQorIAor QEAgLTE4OCwxMCArMjg4LDIxIEBAIHN2cjRfc2FtZV8xIChjb25zdCBjaGFyICpnZGJfc29fbmFt ZSwgY28KKyAgIHJldHVybiAwOworIH0KKyAKKysvKiBSZXR1cm4gbm9uLXplcm8gaWYgR0RCIGFu ZCBJTkZFUklPUiByZXByZXNlbnQgdGhlIHNhbWUgc2hhcmVkCisrICAgbGlicmFyeS4gICovCisr Cisgc3RhdGljIGludAorIHN2cjRfc2FtZSAoc3RydWN0IHNvX2xpc3QgKmdkYiwgc3RydWN0IHNv X2xpc3QgKmluZmVyaW9yKQorIHsKKy0gIHJldHVybiAoc3ZyNF9zYW1lXzEgKGdkYi0+c29fb3Jp Z2luYWxfbmFtZSwgaW5mZXJpb3ItPnNvX29yaWdpbmFsX25hbWUpKTsKKysgIHN0cnVjdCBzdnI0 X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOworKworKyAgaWYgKGluZm8tPnVzaW5nX3By b2JlcykKKysgICAgeworKyAgICAgIGlmIChnZGItPmxtX2luZm8tPmxtaWQgIT0gaW5mZXJpb3It PmxtX2luZm8tPmxtaWQpCisrCXJldHVybiAwOworKyAgICB9CisrCisrICByZXR1cm4gc3ZyNF9z YW1lXzEgKGdkYi0+c29fb3JpZ2luYWxfbmFtZSwgaW5mZXJpb3ItPnNvX29yaWdpbmFsX25hbWUp OworIH0KKyAKKyBzdGF0aWMgc3RydWN0IGxtX2luZm8gKgorQEAgLTMyMiwxOCArNDMzLDI2IEBA IGxtX2FkZHJfY2hlY2sgKHN0cnVjdCBzb19saXN0ICpzbywgYmZkICoKKyAJICAgIH0KKyAJICBl bHNlCisgCSAgICB7CistCSAgICAgIC8qIFRoZXJlIGlzIG5vIHdheSB0byB2ZXJpZnkgdGhlIGxp YnJhcnkgZmlsZSBtYXRjaGVzLiAgcHJlbGluaworLQkJIGNhbiBkdXJpbmcgcHJlbGlua2luZyBv ZiBhbiB1bnByZWxpbmtlZCBmaWxlIChvciB1bnByZWxpbmtpbmcKKy0JCSBvZiBhIHByZWxpbmtl ZCBmaWxlKSBzaGlmdCB0aGUgRFlOQU1JQyBzZWdtZW50IGJ5IGFyYml0cmFyeQorLQkJIG9mZnNl dCB3aXRob3V0IGFueSBwYWdlIHNpemUgYWxpZ25tZW50LiAgVGhlcmUgaXMgbm8gd2F5IHRvCist CQkgZmluZCBvdXQgdGhlIEVMRiBoZWFkZXIgYW5kL29yIFByb2dyYW0gSGVhZGVycyBmb3IgYSBs aW1pdGVkCistCQkgdmVyaWZpY2F0aW9uIGlmIGl0IHRoZXkgbWF0Y2guICBPbmUgY291bGQgZG8g YSB2ZXJpZmljYXRpb24KKy0JCSBvZiB0aGUgRFlOQU1JQyBzZWdtZW50LiAgU3RpbGwgdGhlIGZv dW5kIGFkZHJlc3MgaXMgdGhlIGJlc3QKKy0JCSBvbmUgR0RCIGNvdWxkIGZpbmQuICAqLworLQor LQkgICAgICB3YXJuaW5nIChfKCIuZHluYW1pYyBzZWN0aW9uIGZvciBcIiVzXCIgIgorLQkJCSAi aXMgbm90IGF0IHRoZSBleHBlY3RlZCBhZGRyZXNzICIKKy0JCQkgIih3cm9uZyBsaWJyYXJ5IG9y IHZlcnNpb24gbWlzbWF0Y2g/KSIpLCBzby0+c29fbmFtZSk7CisrCSAgICAgIHN0cnVjdCBzdnI0 X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOworKworKwkgICAgICBpZiAoIWluZm8tPnVz aW5nX3Byb2JlcyB8fCBzby0+bG1faW5mby0+aW5faW5pdGlhbF9ucykKKysJCXsKKysJCSAgLyog VGhlcmUgaXMgbm8gd2F5IHRvIHZlcmlmeSB0aGUgbGlicmFyeSBmaWxlCisrCQkgICAgIG1hdGNo ZXMuICBwcmVsaW5rIGNhbiBkdXJpbmcgcHJlbGlua2luZyBvZiBhbgorKwkJICAgICB1bnByZWxp bmtlZCBmaWxlIChvciB1bnByZWxpbmtpbmcgb2YgYSBwcmVsaW5rZWQKKysJCSAgICAgZmlsZSkg c2hpZnQgdGhlIERZTkFNSUMgc2VnbWVudCBieSBhcmJpdHJhcnkKKysJCSAgICAgb2Zmc2V0IHdp dGhvdXQgYW55IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQuICBUaGVyZSBpcworKwkJICAgICBubyB3YXkg dG8gZmluZCBvdXQgdGhlIEVMRiBoZWFkZXIgYW5kL29yIFByb2dyYW0KKysJCSAgICAgSGVhZGVy cyBmb3IgYSBsaW1pdGVkIHZlcmlmaWNhdGlvbiBpZiBpdCB0aGV5CisrCQkgICAgIG1hdGNoLiAg T25lIGNvdWxkIGRvIGEgdmVyaWZpY2F0aW9uIG9mIHRoZQorKwkJICAgICBEWU5BTUlDIHNlZ21l bnQuICBTdGlsbCB0aGUgZm91bmQgYWRkcmVzcyBpcyB0aGUKKysJCSAgICAgYmVzdCBvbmUgR0RC IGNvdWxkIGZpbmQuICAqLworKworKwkJICB3YXJuaW5nIChfKCIuZHluYW1pYyBzZWN0aW9uIGZv ciBcIiVzXCIgIgorKwkJCSAgICAgImlzIG5vdCBhdCB0aGUgZXhwZWN0ZWQgYWRkcmVzcyAiCisr CQkJICAgICAiKHdyb25nIGxpYnJhcnkgb3IgdmVyc2lvbiBtaXNtYXRjaD8pIiksCisrCQkJICAg c28tPnNvX25hbWUpOworKwkJfQorIAkgICAgfQorIAl9CisgCitAQCAtNzc1LDE2ICs4OTQsMTAg QEAgbG9jYXRlX2Jhc2UgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisgICByZXR1cm4gaW5mby0+ ZGVidWdfYmFzZTsKKyB9CisgCistLyogRmluZCB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaW5m ZXJpb3IncyBkeW5hbWljIGxpbmsgbWFwLCBhbmQKKy0gICByZXR1cm4gaXRzIGFkZHJlc3MgaW4g dGhlIGluZmVyaW9yLiAgUmV0dXJuIHplcm8gaWYgdGhlIGFkZHJlc3MKKy0gICBjb3VsZCBub3Qg YmUgZGV0ZXJtaW5lZC4KKy0KKy0gICBGSVhNRTogUGVyaGFwcyB3ZSBzaG91bGQgdmFsaWRhdGUg dGhlIGluZm8gc29tZWhvdywgcGVyaGFwcyBieQorLSAgIGNoZWNraW5nIHJfdmVyc2lvbiBmb3Ig YSBrbm93biB2ZXJzaW9uIG51bWJlciwgb3Igcl9zdGF0ZSBmb3IKKy0gICBSVF9DT05TSVNURU5U LiAgKi8KKysvKiBSZWFkIHRoZSByX21hcCBmaWVsZCBmcm9tIHRoZSBzdXBwbGllZCByX2RlYnVn IHN0cnVjdHVyZS4gICovCisgCisgc3RhdGljIENPUkVfQUREUgorLXNvbGliX3N2cjRfcl9tYXAg KHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisrcl9tYXBfZnJvbV9kZWJ1Z19iYXNlIChDT1JFX0FE RFIgZGVidWdfYmFzZSkKKyB7CisgICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3Zy NF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICgpOworICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0g YnVpbHRpbl90eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CitAQCAtNzkz LDEzICs5MDYsMjcgQEAgc29saWJfc3ZyNF9yX21hcCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbwor IAorICAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCisgICAgIHsKKy0gICAgICBh ZGRyID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAoaW5mby0+ZGVidWdfYmFzZSArIGxtby0+ cl9tYXBfb2Zmc2V0LAorKyAgICAgIGFkZHIgPSByZWFkX21lbW9yeV90eXBlZF9hZGRyZXNzIChk ZWJ1Z19iYXNlICsgbG1vLT5yX21hcF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHB0cl90eXBlKTsKKyAgICAgfQorICAgZXhjZXB0aW9uX3ByaW50IChn ZGJfc3RkZXJyLCBleCk7CisgICByZXR1cm4gYWRkcjsKKyB9CisgCisrLyogRmluZCB0aGUgZmly c3QgZWxlbWVudCBpbiB0aGUgaW5mZXJpb3IncyBkeW5hbWljIGxpbmsgbWFwLCBhbmQKKysgICBy ZXR1cm4gaXRzIGFkZHJlc3MgaW4gdGhlIGluZmVyaW9yLiAgUmV0dXJuIHplcm8gaWYgdGhlIGFk ZHJlc3MKKysgICBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4KKysKKysgICBGSVhNRTogUGVyaGFw cyB3ZSBzaG91bGQgdmFsaWRhdGUgdGhlIGluZm8gc29tZWhvdywgcGVyaGFwcyBieQorKyAgIGNo ZWNraW5nIHJfdmVyc2lvbiBmb3IgYSBrbm93biB2ZXJzaW9uIG51bWJlciwgb3Igcl9zdGF0ZSBm b3IKKysgICBSVF9DT05TSVNURU5ULiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc29saWJf c3ZyNF9yX21hcCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyt7CisrICByZXR1cm4gcl9tYXBf ZnJvbV9kZWJ1Z19iYXNlIChpbmZvLT5kZWJ1Z19iYXNlKTsKKyt9CisrCisgLyogRmluZCByX2Jy ayBmcm9tIHRoZSBpbmZlcmlvcidzIGRlYnVnIGJhc2UuICAqLworIAorIHN0YXRpYyBDT1JFX0FE RFIKK0BAIC0xMTY0LDE1ICsxMjkxLDE3IEBAIHN2cjRfZGVmYXVsdF9zb3MgKHZvaWQpCisgICBy ZXR1cm4gbmV3OworIH0KKyAKKy0vKiBSZWFkIHRoZSB3aG9sZSBpbmZlcmlvciBsaWJyYXJpZXMg Y2hhaW4gc3RhcnRpbmcgYXQgYWRkcmVzcyBMTS4gIEFkZCB0aGUKKy0gICBlbnRyaWVzIHRvIHRo ZSB0YWlsIHJlZmVyZW5jZWQgYnkgTElOS19QVFJfUFRSLiAgSWdub3JlIHRoZSBmaXJzdCBlbnRy eSBpZgorLSAgIElHTk9SRV9GSVJTVCBhbmQgc2V0IGdsb2JhbCBNQUlOX0xNX0FERFIgYWNjb3Jk aW5nIHRvIGl0LiAgKi8KKysvKiBSZWFkIHRoZSB3aG9sZSBpbmZlcmlvciBsaWJyYXJpZXMgY2hh aW4gc3RhcnRpbmcgYXQgYWRkcmVzcyBMTS4KKysgICBFeHBlY3QgdGhlIGZpcnN0IGVudHJ5IGlu IHRoZSBjaGFpbidzIHByZXZpb3VzIGVudHJ5IHRvIGJlIFBSRVZfTE0uCisrICAgQWRkIHRoZSBl bnRyaWVzIHRvIHRoZSB0YWlsIHJlZmVyZW5jZWQgYnkgTElOS19QVFJfUFRSLiAgSWdub3JlIHRo ZQorKyAgIGZpcnN0IGVudHJ5IGlmIElHTk9SRV9GSVJTVCBhbmQgc2V0IGdsb2JhbCBNQUlOX0xN X0FERFIgYWNjb3JkaW5nCisrICAgdG8gaXQuICBSZXR1cm5zIG5vbnplcm8gdXBvbiBzdWNjZXNz LiAgKi8KKyAKKy1zdGF0aWMgdm9pZAorLXN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0s IHN0cnVjdCBzb19saXN0ICoqKmxpbmtfcHRyX3B0ciwKKy0JCSAgIGludCBpZ25vcmVfZmlyc3Qp Cisrc3RhdGljIGludAorK3N2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIENPUkVfQURE UiBwcmV2X2xtLAorKwkJICAgc3RydWN0IHNvX2xpc3QgKioqbGlua19wdHJfcHRyLCBpbnQgaWdu b3JlX2ZpcnN0KQorIHsKKy0gIENPUkVfQUREUiBwcmV2X2xtID0gMCwgbmV4dF9sbTsKKysgIENP UkVfQUREUiBuZXh0X2xtOworIAorICAgZm9yICg7IGxtICE9IDA7IHByZXZfbG0gPSBsbSwgbG0g PSBuZXh0X2xtKQorICAgICB7CitAQCAtMTE4OSw3ICsxMzE4LDcgQEAgc3ZyNF9yZWFkX3NvX2xp c3QgKENPUkVfQUREUiBsbSwgc3RydWN0CisgICAgICAgaWYgKG5ldy0+bG1faW5mbyA9PSBOVUxM KQorIAl7CisgCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CistCSAgYnJlYWs7CisrCSAgcmV0 dXJuIDA7CisgCX0KKyAKKyAgICAgICBuZXh0X2xtID0gbmV3LT5sbV9pbmZvLT5sX25leHQ7CitA QCAtMTIwMCw3ICsxMzI5LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3Ry dWN0CisgCQkgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHByZXZfbG0pLAorIAkJICAgcGFk ZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBuZXctPmxtX2luZm8tPmxfcHJldikpOworIAkgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOworLQkgIGJyZWFrOworKwkgIHJldHVybiAwOworIAl9CisgCisg ICAgICAgLyogRm9yIFNWUjQgdmVyc2lvbnMsIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgbGluayBt YXAgaXMgZm9yIHRoZQorQEAgLTEyOTUsMjAgKzE0MjQsNjEgQEAgc3ZyNF9yZWFkX3NvX2xpc3Qg KENPUkVfQUREUiBsbSwgc3RydWN0CisgICAgICAgKipsaW5rX3B0cl9wdHIgPSBuZXc7CisgICAg ICAgKmxpbmtfcHRyX3B0ciA9ICZuZXctPm5leHQ7CisgICAgIH0KKysKKysgIHJldHVybiAxOwor IH0KKyAKKy0vKiBJbXBsZW1lbnQgdGhlICJjdXJyZW50X3NvcyIgdGFyZ2V0X3NvX29wcyBtZXRo b2QuICAqLworKy8qIFJlYWQgdGhlIGxpc3Qgb2YgbG9hZGVkIGxpYnJhcmllcyBmcm9tIHRoZSBk eW5hbWljIGxpbmtlcidzIGJhc2UKKysgICBzdHJ1Y3R1cmUuICAqLworIAorIHN0YXRpYyBzdHJ1 Y3Qgc29fbGlzdCAqCistc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKKytzdnI0X2N1cnJlbnRfc29z X2Zyb21fZGVidWdfYmFzZSAodm9pZCkKKyB7CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0g Z2V0X3N2cjRfaW5mbyAoKTsKKyAgIENPUkVfQUREUiBsbTsKKyAgIHN0cnVjdCBzb19saXN0ICpo ZWFkID0gTlVMTDsKKyAgIHN0cnVjdCBzb19saXN0ICoqbGlua19wdHIgPSAmaGVhZDsKKy0gIHN0 cnVjdCBzdnI0X2luZm8gKmluZm87CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAgIGlu dCBpZ25vcmVfZmlyc3Q7CisrCisrICBnZGJfYXNzZXJ0IChpbmZvLT5kZWJ1Z19iYXNlKTsKKysK KysgIC8qIEFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgYSBsaWJyYXJ5IGlmIHRoZSBkeW5hbWlj IGxvYWRlciB3YXMgbG9hZGVkCisrICAgICBsYXRlIGJ5IGEgc3RhdGljIGV4ZWN1dGFibGUuICAq LworKyAgaWYgKGV4ZWNfYmZkICYmIGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChleGVjX2JmZCwg Ii5keW5hbWljIikgPT0gTlVMTCkKKysgICAgaWdub3JlX2ZpcnN0ID0gMDsKKysgIGVsc2UKKysg ICAgaWdub3JlX2ZpcnN0ID0gMTsKKysKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHN2cjRf ZnJlZV9saWJyYXJ5X2xpc3QsICZoZWFkKTsKKysKKysgIC8qIFdhbGsgdGhlIGluZmVyaW9yJ3Mg bGluayBtYXAgbGlzdCwgYW5kIGJ1aWxkIG91ciBsaXN0IG9mCisrICAgICBgc3RydWN0IHNvX2xp c3QnIG5vZGVzLiAgKi8KKysgIGxtID0gc29saWJfc3ZyNF9yX21hcCAoaW5mbyk7CisrICBpZiAo bG0pCisrICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwgMCwgJmxpbmtfcHRyLCBpZ25vcmVfZmly c3QpOworKworKyAgLyogT24gU29sYXJpcywgdGhlIGR5bmFtaWMgbGlua2VyIGlzIG5vdCBpbiB0 aGUgbm9ybWFsIGxpc3Qgb2YKKysgICAgIHNoYXJlZCBvYmplY3RzLCBzbyBtYWtlIHN1cmUgd2Ug cGljayBpdCB1cCB0b28uICBIYXZpbmcKKysgICAgIHN5bWJvbCBpbmZvcm1hdGlvbiBmb3IgdGhl IGR5bmFtaWMgbGlua2VyIGlzIHF1aXRlIGNydWNpYWwKKysgICAgIGZvciBza2lwcGluZyBkeW5h bWljIGxpbmtlciByZXNvbHZlciBjb2RlLiAgKi8KKysgIGxtID0gc29saWJfc3ZyNF9yX2xkc29t YXAgKGluZm8pOworKyAgaWYgKGxtKQorKyAgICBzdnI0X3JlYWRfc29fbGlzdCAobG0sIDAsICZs aW5rX3B0ciwgMCk7CisrCisrICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3RvKTsKKysKKysgIHJl dHVybiBoZWFkOworK30KKysKKysvKiBJbXBsZW1lbnQgdGhlICJjdXJyZW50X3NvcyIgdGFyZ2V0 X3NvX29wcyBtZXRob2QuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCisrc3ZyNF9j dXJyZW50X3NvcyAodm9pZCkKKyt7CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOworICAgc3Ry dWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKKysgIHN0cnVjdCBzb19saXN0ICpy ZXN1bHQ7CisgCisgICAvKiBGYWxsIGJhY2sgdG8gbWFudWFsIGV4YW1pbmF0aW9uIG9mIHRoZSB0 YXJnZXQgaWYgdGhlIHBhY2tldCBpcyBub3QKKyAgICAgIHN1cHBvcnRlZCBvciBnZGJzZXJ2ZXIg ZmFpbGVkIHRvIGZpbmQgRFRfREVCVUcuICBnZGIuc2VydmVyL3NvbGliLWxpc3QuZXhwCitAQCAt MTMzMSw2ICsxNTAxLDEwIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgCisgICBpbmZvID0g Z2V0X3N2cjRfaW5mbyAoKTsKKyAKKysgIC8qIElmIHdlIGhhdmUgYSBuYW1lc3BhY2UgdGFibGUg dGhlbiByZXR1cm4gYSBmbGF0dGVuZWQgY29weS4gICovCisrICBpZiAoaW5mby0+bmFtZXNwYWNl X3RhYmxlICE9IE5VTEwpCisrICAgIHJldHVybiBuYW1lc3BhY2VfdGFibGVfZmxhdHRlbiAoaW5m by0+bmFtZXNwYWNlX3RhYmxlKTsKKysKKyAgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0 cnVjdCwgaW4gY2FzZSBpdCBoYXMgbW92ZWQuICAqLworICAgaW5mby0+ZGVidWdfYmFzZSA9IDA7 CisgICBsb2NhdGVfYmFzZSAoaW5mbyk7CitAQCAtMTM0MCwzNSArMTUxNCwxMiBAQCBzdnI0X2N1 cnJlbnRfc29zICh2b2lkKQorICAgaWYgKCEgaW5mby0+ZGVidWdfYmFzZSkKKyAgICAgcmV0dXJu IHN2cjRfZGVmYXVsdF9zb3MgKCk7CisgCistICAvKiBBc3N1bWUgdGhhdCBldmVyeXRoaW5nIGlz IGEgbGlicmFyeSBpZiB0aGUgZHluYW1pYyBsb2FkZXIgd2FzIGxvYWRlZAorLSAgICAgbGF0ZSBi eSBhIHN0YXRpYyBleGVjdXRhYmxlLiAgKi8KKy0gIGlmIChleGVjX2JmZCAmJiBiZmRfZ2V0X3Nl Y3Rpb25fYnlfbmFtZSAoZXhlY19iZmQsICIuZHluYW1pYyIpID09IE5VTEwpCistICAgIGlnbm9y ZV9maXJzdCA9IDA7CistICBlbHNlCistICAgIGlnbm9yZV9maXJzdCA9IDE7CistCistICBiYWNr X3RvID0gbWFrZV9jbGVhbnVwIChzdnI0X2ZyZWVfbGlicmFyeV9saXN0LCAmaGVhZCk7CistCist ICAvKiBXYWxrIHRoZSBpbmZlcmlvcidzIGxpbmsgbWFwIGxpc3QsIGFuZCBidWlsZCBvdXIgbGlz dCBvZgorLSAgICAgYHN0cnVjdCBzb19saXN0JyBub2Rlcy4gICovCistICBsbSA9IHNvbGliX3N2 cjRfcl9tYXAgKGluZm8pOworLSAgaWYgKGxtKQorLSAgICBzdnI0X3JlYWRfc29fbGlzdCAobG0s ICZsaW5rX3B0ciwgaWdub3JlX2ZpcnN0KTsKKy0KKy0gIC8qIE9uIFNvbGFyaXMsIHRoZSBkeW5h bWljIGxpbmtlciBpcyBub3QgaW4gdGhlIG5vcm1hbCBsaXN0IG9mCistICAgICBzaGFyZWQgb2Jq ZWN0cywgc28gbWFrZSBzdXJlIHdlIHBpY2sgaXQgdXAgdG9vLiAgSGF2aW5nCistICAgICBzeW1i b2wgaW5mb3JtYXRpb24gZm9yIHRoZSBkeW5hbWljIGxpbmtlciBpcyBxdWl0ZSBjcnVjaWFsCist ICAgICBmb3Igc2tpcHBpbmcgZHluYW1pYyBsaW5rZXIgcmVzb2x2ZXIgY29kZS4gICovCistICBs bSA9IHNvbGliX3N2cjRfcl9sZHNvbWFwIChpbmZvKTsKKy0gIGlmIChsbSkKKy0gICAgc3ZyNF9y ZWFkX3NvX2xpc3QgKGxtLCAmbGlua19wdHIsIDApOworLQorLSAgZGlzY2FyZF9jbGVhbnVwcyAo YmFja190byk7CisrICByZXN1bHQgPSBzdnI0X2N1cnJlbnRfc29zX2Zyb21fZGVidWdfYmFzZSAo KTsKKyAKKy0gIGlmIChoZWFkID09IE5VTEwpCisrICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAg IHJldHVybiBzdnI0X2RlZmF1bHRfc29zICgpOworIAorLSAgcmV0dXJuIGhlYWQ7CisrICByZXR1 cm4gcmVzdWx0OworIH0KKyAKKyAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGxpbmtfbWFwIGZv ciBhIGdpdmVuIE9CSkZJTEUuICAqLworQEAgLTE0NTAsNiArMTYwMSw0OTggQEAgZXhlY19lbnRy eV9wb2ludCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydQorIAkJCQkJICAgICB0YXJnKTsKKyB9Cisg CisrLyogQSBwcm9iZSBhbmQgaXRzIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24gc3RydWN0dXJlLiAg Ki8KKysKKytzdHJ1Y3QgcHJvYmVfYW5kX2luZm8KKyt7CisrICAvKiBUaGUgcHJvYmUuICAqLwor KyAgc3RydWN0IHByb2JlICpwcm9iZTsKKysKKysgIC8qIFRoZSBwcm9iZV9pbmZvIGZyb20gd2hp Y2ggdGhlIHByb2JlIHdhcyBjcmVhdGVkLiAgKi8KKysgIGNvbnN0IHN0cnVjdCBwcm9iZV9pbmZv ICppbmZvOworK307CisrCisrLyogR2V0IHRoZSBzb2xpYiBldmVudCBwcm9iZSBhdCB0aGUgc3Bl Y2lmaWVkIGxvY2F0aW9uLCBhbmQgdGhlCisrICAgcHJvYmVfaW5mbyB0aGUgcHJvYmUgd2FzIGNy ZWF0ZWQgd2l0aC4gIEZpbGxzIGluIFJFU1VMVCBhbmQKKysgICByZXR1cm5zIG5vbnplcm8gaWYg YSBzb2xpYiBldmVudCBwcm9iZSB3YXMgZm91bmQgYXQgdGhlCisrICAgc3BlY2lmaWVkIGxvY2F0 aW9uLiAgUmV0dXJucyB6ZXJvIGlmIG5vIHNvbGliIGV2ZW50IHByb2JlCisrICAgd2FzIGZvdW5k LiAgKi8KKysKKytzdGF0aWMgaW50Cisrc29saWJfZXZlbnRfcHJvYmVfYXQgKHN0cnVjdCBzdnI0 X2luZm8gKmluZm8sIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLAorKwkJICAgICAgc3RydWN0IHBy b2JlX2FuZF9pbmZvICpyZXN1bHQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBp IDwgTlVNX1BST0JFUzsgaSsrKQorKyAgICB7CisrICAgICAgc3RydWN0IHByb2JlICpwcm9iZTsK KysgICAgICBpbnQgaXg7CisrCisrICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChwcm9i ZV9wLCBpbmZvLT5wcm9iZXNbaV0sIGl4LCBwcm9iZSk7ICsraXgpCisrCXsKKysJICBpZiAobG9j LT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCisrCSAgICAgICYmIGxvYy0+YWRkcmVz cyA9PSBwcm9iZS0+YWRkcmVzcykKKysJICAgIHsKKysJICAgICAgcmVzdWx0LT5pbmZvID0gJnBy b2JlX2luZm9baV07CisrCSAgICAgIHJlc3VsdC0+cHJvYmUgPSBwcm9iZTsKKysKKysJICAgICAg cmV0dXJuIDE7CisrCSAgICB9CisrCX0KKysgICAgfQorKworKyAgcmV0dXJuIDA7CisrfQorKwor Ky8qIERlY2lkZSB3aGF0IGFjdGlvbiB0byB0YWtlIHdoZW4gdGhlIHNwZWNpZmllZCBzb2xpYiBl dmVudCBwcm9iZSBpcworKyAgIGhpdC4gICovCisrCisrc3RhdGljIGVudW0gcHJvYmVfYWN0aW9u Cisrc29saWJfZXZlbnRfcHJvYmVfYWN0aW9uIChzdHJ1Y3QgcHJvYmVfYW5kX2luZm8gKnBpKQor K3sKKysgIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlvbjsKKysgIHVuc2lnbmVkIHByb2JlX2FyZ2M7 CisrCisrICBhY3Rpb24gPSBwaS0+aW5mby0+YWN0aW9uOworKyAgaWYgKGFjdGlvbiA9PSBOQU1F U1BBQ0VfTk9fQUNUSU9OIHx8IGFjdGlvbiA9PSBOQU1FU1BBQ0VfVEFCTEVfSU5WQUxJREFURSkK KysgICAgcmV0dXJuIGFjdGlvbjsKKysKKysgIGdkYl9hc3NlcnQgKGFjdGlvbiA9PSBOQU1FU1BB Q0VfUkVMT0FECisrCSAgICAgIHx8IGFjdGlvbiA9PSBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9B RCk7CisrCisrICAvKiBDaGVjayB0aGF0IGFuIGFwcHJvcHJpYXRlIG51bWJlciBvZiBhcmd1bWVu dHMgaGFzIGJlZW4gc3VwcGxpZWQuCisrICAgICBXZSBleHBlY3Q6CisrICAgICAgIGFyZzA6IExt aWRfdCBsbWlkIChtYW5kYXRvcnkpCisrICAgICAgIGFyZzE6IHN0cnVjdCByX2RlYnVnICpkZWJ1 Z19iYXNlIChtYW5kYXRvcnkpCisrICAgICAgIGFyZzI6IHN0cnVjdCBsaW5rX21hcCAqbmV3IChv cHRpb25hbCwgZm9yIGluY3JlbWVudGFsIHVwZGF0ZXMpICAqLworKyAgcHJvYmVfYXJnYyA9IGdl dF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGktPnByb2JlKTsKKysgIGlmIChwcm9iZV9hcmdjID09 IDIpCisrICAgIGFjdGlvbiA9IE5BTUVTUEFDRV9SRUxPQUQ7CisrICBlbHNlIGlmIChwcm9iZV9h cmdjIDwgMikKKysgICAgYWN0aW9uID0gTkFNRVNQQUNFX1RBQkxFX0lOVkFMSURBVEU7CisrCisr ICByZXR1cm4gYWN0aW9uOworK30KKysKKysvKiBBIG5hbWVzcGFjZSBpbiB0aGUgZHluYW1pYyBs aW5rZXIuICAqLworKworK3N0cnVjdCBuYW1lc3BhY2UKKyt7CisrICAvKiBOdW1lcmljIGxpbmst bWFwIElEIG9mIHRoZSBuYW1lc3BhY2UuICAqLworKyAgTE9OR0VTVCBsbWlkOworKworKyAgLyog TGlzdCBvZiBvYmplY3RzIGxvYWRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuICAqLworKyAgc3RydWN0 IHNvX2xpc3QgKnNvbGlzdDsKKyt9OworKworKy8qIFJldHVybnMgYSBoYXNoIGNvZGUgZm9yIHRo ZSBuYW1lc3BhY2UgcmVmZXJlbmNlZCBieSBwLiAgKi8KKysKKytzdGF0aWMgaGFzaHZhbF90Cisr aGFzaF9uYW1lc3BhY2UgKGNvbnN0IHZvaWQgKnApCisreworKyAgY29uc3Qgc3RydWN0IG5hbWVz cGFjZSAqbnMgPSBwOworKworKyAgcmV0dXJuIChoYXNodmFsX3QpIG5zLT5sbWlkOworK30KKysK KysvKiBSZXR1cm5zIG5vbi16ZXJvIGlmIHRoZSBuYW1lc3BhY2VzIHJlZmVyZW5jZWQgYnkgcDEg YW5kIHAyCisrICAgYXJlIGVxdWFsLiAgKi8KKysKKytzdGF0aWMgaW50CisrZXF1YWxfbmFtZXNw YWNlIChjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCisreworKyAgY29uc3Qgc3RydWN0 IG5hbWVzcGFjZSAqbnMxID0gcDE7CisrICBjb25zdCBzdHJ1Y3QgbmFtZXNwYWNlICpuczIgPSBw MjsKKysKKysgIHJldHVybiBuczEtPmxtaWQgPT0gbnMyLT5sbWlkOworK30KKysKKysvKiBGcmVl IGEgbmFtZXNwYWNlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2ZyZWVfbmFtZXNwYWNlICh2b2lk ICpwKQorK3sKKysgIHN0cnVjdCBuYW1lc3BhY2UgKm5zID0gcDsKKysKKysgIHN2cjRfZnJlZV9s aWJyYXJ5X2xpc3QgKG5zLT5zb2xpc3QpOworKyAgeGZyZWUgKG5zKTsKKyt9CisrCisrLyogUG9w dWxhdGUgdGhpcyBuYW1lc3BhY2UgYnkgcmVhZGluZyB0aGUgZW50aXJlIGxpc3Qgb2Ygc2hhcmVk CisrICAgb2JqZWN0cyBmcm9tIHRoZSBpbmZlcmlvci4gIFJldHVybnMgbm9uemVybyBvbiBzdWNj ZXNzLiAgKi8KKysKKytzdGF0aWMgaW50CisrbmFtZXNwYWNlX3VwZGF0ZV9mdWxsIChzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvLCBMT05HRVNUIGxtaWQsCisrCQkgICAgICAgQ09SRV9BRERSIGRlYnVn X2Jhc2UsIGludCBpc19pbml0aWFsX25zKQorK3sKKysgIHN0cnVjdCBzb19saXN0ICpyZXN1bHQg PSBOVUxMLCAqc287CisrICBzdHJ1Y3QgbmFtZXNwYWNlIGxvb2t1cCwgKm5zOworKyAgdm9pZCAq KnNsb3Q7CisrCisrICAvKiBSZWFkIHRoZSBsaXN0IG9mIHNoYXJlZCBvYmplY3RzIGZyb20gdGhl IGluZmVyaW9yLiAgVGhlCisrICAgICBpbml0aWFsIG5hbWVzcGFjZSByZXF1aXJlcyBleHRyYSBw cm9jZXNzaW5nIGFuZCBpcyBoYW5kbGVkCisrICAgICBzZXBhcmF0ZWx5LiAgKi8KKysgIGlmIChp c19pbml0aWFsX25zKQorKyAgICB7CisrICAgICAgcmVzdWx0ID0gc3ZyNF9jdXJyZW50X3Nvc19m cm9tX2RlYnVnX2Jhc2UgKCk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIENPUkVf QUREUiBsbSA9IHJfbWFwX2Zyb21fZGVidWdfYmFzZSAoZGVidWdfYmFzZSk7CisrICAgICAgc3Ry dWN0IHNvX2xpc3QgKipsaW5rX3B0ciA9ICZyZXN1bHQ7CisrCisrICAgICAgaWYgKCFzdnI0X3Jl YWRfc29fbGlzdCAobG0sIDAsICZsaW5rX3B0ciwgMCkpCisrCXJldHVybiAwOworKyAgICB9Cisr CisrICAvKiBJZiB0aGUgbmFtZXNwYWNlIGlzIGVtcHR5IHRoZW4gZGVsZXRlIGl0IGZyb20gdGhl IHRhYmxlLiAgKi8KKysgIGlmIChyZXN1bHQgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmIChp bmZvLT5uYW1lc3BhY2VfdGFibGUgIT0gTlVMTCkKKysJeworKwkgIGxvb2t1cC5sbWlkID0gbG1p ZDsKKysJICBodGFiX3JlbW92ZV9lbHQgKGluZm8tPm5hbWVzcGFjZV90YWJsZSwgJmxvb2t1cCk7 CisrCX0KKysKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgLyogRmlsbCBpbiB0aGUg bGluay1tYXAgSURzIGFuZCBpbml0aWFsIG5hbWVzcGFjZSBmbGFncy4gICovCisrICBmb3IgKHNv ID0gcmVzdWx0OyBzbzsgc28gPSBzby0+bmV4dCkKKysgICAgeworKyAgICAgIHNvLT5sbV9pbmZv LT5sbWlkID0gbG1pZDsKKysgICAgICBzby0+bG1faW5mby0+aW5faW5pdGlhbF9ucyA9IGlzX2lu aXRpYWxfbnM7CisrICAgIH0KKysKKysgIC8qIENyZWF0ZSB0aGUgbmFtZXNwYWNlIHRhYmxlLCBp ZiBuZWNlc3NhcnkuICAqLworKyAgaWYgKGluZm8tPm5hbWVzcGFjZV90YWJsZSA9PSBOVUxMKQor KyAgICB7CisrICAgICAgaW5mby0+bmFtZXNwYWNlX3RhYmxlID0gaHRhYl9jcmVhdGVfYWxsb2Mg KDEsIGhhc2hfbmFtZXNwYWNlLAorKwkJCQkJCSBlcXVhbF9uYW1lc3BhY2UsCisrCQkJCQkJIGZy ZWVfbmFtZXNwYWNlLAorKwkJCQkJCSB4Y2FsbG9jLCB4ZnJlZSk7CisrICAgIH0KKysKKysgIC8q IFVwZGF0ZSB0aGUgbmFtZXNwYWNlIHRhYmxlIHdpdGggb3VyIG5ldyBsaXN0LiAgKi8KKysgIGxv b2t1cC5sbWlkID0gbG1pZDsKKysgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoaW5mby0+bmFtZXNw YWNlX3RhYmxlLCAmbG9va3VwLCBJTlNFUlQpOworKyAgaWYgKCpzbG90ID09IEhUQUJfRU1QVFlf RU5UUlkpCisrICAgIHsKKysgICAgICBucyA9IFhDTkVXIChzdHJ1Y3QgbmFtZXNwYWNlKTsKKysg ICAgICBucy0+bG1pZCA9IGxtaWQ7CisrICAgICAgKnNsb3QgPSBuczsKKysgICAgfQorKyAgZWxz ZQorKyAgICB7CisrICAgICAgbnMgPSAqc2xvdDsKKysgICAgICBzdnI0X2ZyZWVfbGlicmFyeV9s aXN0IChucy0+c29saXN0KTsKKysgICAgfQorKyAgbnMtPnNvbGlzdCA9IHJlc3VsdDsKKysKKysg IHJldHVybiAxOworK30KKysKKysvKiBVcGRhdGUgdGhpcyBuYW1lc3BhY2Ugc3RhcnRpbmcgZnJv bSB0aGUgbGluay1tYXAgZW50cnkgcGFzc2VkIGJ5CisrICAgdGhlIGxpbmtlciBpbiB0aGUgcHJv YmUncyB0aGlyZCBhcmd1bWVudC4gIFJldHVybnMgbm9uemVybyBpZiB0aGUKKysgICBsaXN0IHdh cyBzdWNjZXNzZnVsbHkgdXBkYXRlZCwgb3IgemVybyB0byBpbmRpY2F0ZSBmYWlsdXJlLiAgKi8K KysKKytzdGF0aWMgaW50CisrbmFtZXNwYWNlX3VwZGF0ZV9pbmNyZW1lbnRhbCAoc3RydWN0IHN2 cjRfaW5mbyAqaW5mbywgTE9OR0VTVCBsbWlkLAorKwkJCSAgICAgIENPUkVfQUREUiBsbSwgaW50 IGlzX2luaXRpYWxfbnMpCisreworKyAgc3RydWN0IG5hbWVzcGFjZSBsb29rdXAsICpuczsKKysg IHN0cnVjdCBzb19saXN0ICp0YWlsLCAqKmxpbmssICpzbzsKKysgIHN0cnVjdCB2YWx1ZSAqdmFs OworKworKyAgLyogRmluZCBvdXIgbmFtZXNwYWNlIGluIHRoZSB0YWJsZS4gICovCisrICBpZiAo aW5mby0+bmFtZXNwYWNlX3RhYmxlID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgbG9v a3VwLmxtaWQgPSBsbWlkOworKyAgbnMgPSBodGFiX2ZpbmQgKGluZm8tPm5hbWVzcGFjZV90YWJs ZSwgJmxvb2t1cCk7CisrICBpZiAobnMgPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICAv KiBXYWxrIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuICAqLworKyAgdGFpbCA9IG5zLT5zb2xpc3Q7 CisrICBpZiAodGFpbCA9PSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysKKysgIHdoaWxlICh0YWls LT5uZXh0KQorKyAgICB0YWlsID0gdGFpbC0+bmV4dDsKKysgIGxpbmsgPSAmdGFpbC0+bmV4dDsK KysKKysgIC8qIFJlYWQgdGhlIG5ldyBvYmplY3RzLiAgKi8KKysgIGlmICghc3ZyNF9yZWFkX3Nv X2xpc3QgKGxtLCB0YWlsLT5sbV9pbmZvLT5sbV9hZGRyLCAmbGluaywgMCkpCisrICAgIHJldHVy biAwOworKworKyAgLyogRmlsbCBpbiB0aGUgbGluay1tYXAgSURzIGFuZCBpbml0aWFsIG5hbWVz cGFjZSBmbGFncy4gICovCisrICBmb3IgKHNvID0gdGFpbDsgc287IHNvID0gc28tPm5leHQpCisr ICAgIHsKKysgICAgICBzby0+bG1faW5mby0+bG1pZCA9IGxtaWQ7CisrICAgICAgc28tPmxtX2lu Zm8tPmluX2luaXRpYWxfbnMgPSBpc19pbml0aWFsX25zOworKyAgICB9CisrCisrICByZXR1cm4g MTsKKyt9CisrCisrLyogVXBkYXRlIHRoZSBuYW1lc3BhY2UgdGFibGUgYXMgYXBwcm9wcmlhdGUg d2hlbiB1c2luZyB0aGUKKysgICBwcm9iZXMtYmFzZWQgbGlua2VyIGludGVyZmFjZS4gIERvIG5v dGhpbmcgaWYgdXNpbmcgdGhlCisrICAgc3RhbmRhcmQgaW50ZXJmYWNlLiAgKi8KKysKKytzdGF0 aWMgdm9pZAorK3N2cjRfaGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCisreworKyAgc3Ry dWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisrICBzdHJ1Y3QgcHJvYmVf YW5kX2luZm8gYnVmLCAqcGkgPSAmYnVmOworKyAgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOwor KyAgc3RydWN0IHZhbHVlICp2YWw7CisrICBMT05HRVNUIGxtaWQ7CisrICBDT1JFX0FERFIgZGVi dWdfYmFzZSwgbG0gPSAwOworKyAgaW50IGlzX2luaXRpYWxfbnM7CisrCisrICAvKiBJdCBpcyBw b3NzaWJsZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgaW5jb3JyZWN0bHkKKysg ICAgIGJ5IHRoZSBoYW5kbGVfc29saWJfZXZlbnQgaW4gaGFuZGxlX2luZmVyaW9yX2V2ZW50IGlm IEdEQiBnb2VzCisrICAgICBmdWxseSBtdWx0aS10YXJnZXQuICAqLworKyAgZ2RiX2Fzc2VydCAo YnMgIT0gTlVMTCk7CisrCisrICBpZiAoIWluZm8tPnVzaW5nX3Byb2JlcykKKysgICAgcmV0dXJu OworKworKyAgaWYgKCFzb2xpYl9ldmVudF9wcm9iZV9hdCAoaW5mbywgYnMtPmJwX2xvY2F0aW9u X2F0LCBwaSkpCisrICAgIGdvdG8gZXJyb3I7CisrCisrICBhY3Rpb24gPSBzb2xpYl9ldmVudF9w cm9iZV9hY3Rpb24gKHBpKTsKKysgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX1RBQkxFX0lOVkFM SURBVEUpCisrICAgIGdvdG8gZXJyb3I7CisrCisrICBpZiAoYWN0aW9uID09IE5BTUVTUEFDRV9O T19BQ1RJT04pCisrICAgIHJldHVybjsKKysKKysgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3Vt ZW50IChwaS0+cHJvYmUsIDApOworKyAgaWYgKHZhbCA9PSBOVUxMKQorKyAgICBnb3RvIGVycm9y OworKworKyAgbG1pZCA9IHZhbHVlX2FzX2xvbmcgKHZhbCk7CisrCisrICB2YWwgPSBldmFsdWF0 ZV9wcm9iZV9hcmd1bWVudCAocGktPnByb2JlLCAxKTsKKysgIGlmICh2YWwgPT0gTlVMTCkKKysg ICAgZ290byBlcnJvcjsKKysKKysgIGRlYnVnX2Jhc2UgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwp OworKyAgaWYgKGRlYnVnX2Jhc2UgPT0gMCkKKysgICAgZ290byBlcnJvcjsKKysKKysgIC8qIEFs d2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3ZlZC4gICovCisrICBp bmZvLT5kZWJ1Z19iYXNlID0gMDsKKysgIGlmIChsb2NhdGVfYmFzZSAoaW5mbykgPT0gMCkKKysg ICAgZ290byBlcnJvcjsKKysKKysgIGlzX2luaXRpYWxfbnMgPSAoZGVidWdfYmFzZSA9PSBpbmZv LT5kZWJ1Z19iYXNlKTsKKysKKysgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX1VQREFURV9PUl9S RUxPQUQpCisrICAgIHsKKysgICAgICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocGkt PnByb2JlLCAyKTsKKysgICAgICBpZiAodmFsICE9IE5VTEwpCisrCWxtID0gdmFsdWVfYXNfYWRk cmVzcyAodmFsKTsKKysKKysgICAgICBpZiAobG0gPT0gMCkKKysJYWN0aW9uID0gTkFNRVNQQUNF X1JFTE9BRDsKKysgICAgfQorKworKyAgaWYgKGFjdGlvbiA9PSBOQU1FU1BBQ0VfVVBEQVRFX09S X1JFTE9BRCkKKysgICAgeworKyAgICAgIGlmIChuYW1lc3BhY2VfdXBkYXRlX2luY3JlbWVudGFs IChpbmZvLCBsbWlkLCBsbSwgaXNfaW5pdGlhbF9ucykpCisrCXJldHVybjsKKysKKysgICAgICBh Y3Rpb24gPSBOQU1FU1BBQ0VfUkVMT0FEOworKyAgICB9CisrCisrICBnZGJfYXNzZXJ0IChhY3Rp b24gPT0gTkFNRVNQQUNFX1JFTE9BRCk7CisrCisrICBpZiAobmFtZXNwYWNlX3VwZGF0ZV9mdWxs IChpbmZvLCBsbWlkLCBkZWJ1Z19iYXNlLCBpc19pbml0aWFsX25zKSkKKysgICAgcmV0dXJuOwor KworKyBlcnJvcjoKKysKKysgIC8qIFdlIHNob3VsZCBuZXZlciByZWFjaCBoZXJlLCBidXQgaWYg d2UgZG8gd2UgZGlzYWJsZSB0aGUKKysgICAgIHByb2JlcyBpbnRlcmZhY2UgYW5kIHJldmVydCB0 byB0aGUgb3JpZ2luYWwgaW50ZXJmYWNlLgorKyAgICAgV2UgZG9uJ3QgcmVzZXQgdGhlIGJyZWFr cG9pbnRzIGFzIHRoZSBvbmVzIHdlJ3ZlIHNldCB1cAorKyAgICAgYXJlIGFkZXF1YXRlLiAgKi8K KysgIHdhcm5pbmcgKF8oIlByb2Jlcy1iYXNlZCBkeW5hbWljIGxpbmtlciBpbnRlcmZhY2UgZmFp bGVkLlxuIgorKwkgICAgICJSZXZlcnRpbmcgdG8gb3JpZ2luYWwgaW50ZXJmYWNlLlxuIikpOwor KworKyAgZnJlZV9uYW1lc3BhY2VfdGFibGUgKGluZm8pOworKyAgZnJlZV9wcm9iZXMgKGluZm8p OworKyAgaW5mby0+dXNpbmdfcHJvYmVzID0gMDsKKyt9CisrCisrLyogSGVscGVyIGZ1bmN0aW9u IGZvciBuYW1lc3BhY2VfdGFibGVfZmxhdHRlbi4gICovCisrCisrc3RhdGljIGludAorK25hbWVz cGFjZV90YWJsZV9mbGF0dGVuX2hlbHBlciAodm9pZCAqKnNsb3QsIHZvaWQgKmFyZykKKyt7Cisr ICBzdHJ1Y3QgbmFtZXNwYWNlICpucyA9IChzdHJ1Y3QgbmFtZXNwYWNlICopICpzbG90OworKyAg c3RydWN0IHNvX2xpc3QgKnNyYyA9IG5zLT5zb2xpc3Q7CisrICBzdHJ1Y3Qgc29fbGlzdCAqKmxp bmsgPSAoc3RydWN0IHNvX2xpc3QgKiopIGFyZzsKKysKKysgIHdoaWxlICgqbGluaykKKysgICAg bGluayA9ICYoKmxpbmspLT5uZXh0OworKworKyAgd2hpbGUgKHNyYyAhPSBOVUxMKQorKyAgICB7 CisrICAgICAgc3RydWN0IHNvX2xpc3QgKmRzdDsKKysKKysgICAgICBkc3QgPSB4bWFsbG9jIChz aXplb2YgKHN0cnVjdCBzb19saXN0KSk7CisrICAgICAgbWVtY3B5IChkc3QsIHNyYywgc2l6ZW9m IChzdHJ1Y3Qgc29fbGlzdCkpOworKworKyAgICAgIGRzdC0+bG1faW5mbyA9IHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IGxtX2luZm8pKTsKKysgICAgICBtZW1jcHkgKGRzdC0+bG1faW5mbywgc3Jj LT5sbV9pbmZvLCBzaXplb2YgKHN0cnVjdCBsbV9pbmZvKSk7CisrCisrICAgICAgKmxpbmsgPSBk c3Q7CisrICAgICAgbGluayA9ICZkc3QtPm5leHQ7CisrCisrICAgICAgc3JjID0gc3JjLT5uZXh0 OworKyAgICB9CisrCisrICAqbGluayA9IE5VTEw7CisrCisrICByZXR1cm4gMTsgLyogQ29udGlu dWUgdHJhdmVyc2FsLiAgKi8KKyt9CisrCisrLyogRmxhdHRlbiB0aGUgbmFtZXNwYWNlIHRhYmxl IGludG8gYSBzaW5nbGUgbGlzdC4gICovCisrCisrc3RhdGljIHN0cnVjdCBzb19saXN0ICoKKytu YW1lc3BhY2VfdGFibGVfZmxhdHRlbiAoaHRhYl90IG5hbWVzcGFjZV90YWJsZSkKKyt7CisrICBz dHJ1Y3Qgc29fbGlzdCAqZHN0ID0gTlVMTDsKKysKKysgIGh0YWJfdHJhdmVyc2UgKG5hbWVzcGFj ZV90YWJsZSwgbmFtZXNwYWNlX3RhYmxlX2ZsYXR0ZW5faGVscGVyLCAmZHN0KTsKKysKKysgIHJl dHVybiBkc3Q7CisrfQorKworKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc3ZyNF91cGRhdGVfc29s aWJfZXZlbnRfYnJlYWtwb2ludHMuICAqLworKworK3N0YXRpYyBpbnQKKytzdnI0X3VwZGF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgdm9pZCAqYXJnKQor K3sKKysgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOworKyAgc3Ry dWN0IGJwX2xvY2F0aW9uICpsb2M7CisrCisrICBpZiAoYi0+dHlwZSAhPSBicF9zaGxpYl9ldmVu dCkKKysgICAgcmV0dXJuIDA7IC8qIENvbnRpbnVlIGl0ZXJhdGluZy4gICovCisrCisrICBmb3Ig KGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCisrICAgIHsKKysgICAgICBzdHJ1 Y3QgcHJvYmVfYW5kX2luZm8gYnVmLCAqcGkgPSAmYnVmOworKworKyAgICAgIGlmIChzb2xpYl9l dmVudF9wcm9iZV9hdCAoaW5mbywgbG9jLCBwaSkpCisrCXsKKysJICBpZiAocGktPmluZm8tPmFj dGlvbiA9PSBOQU1FU1BBQ0VfTk9fQUNUSU9OKQorKwkgICAgYi0+ZW5hYmxlX3N0YXRlID0gKHN0 b3Bfb25fc29saWJfZXZlbnRzCisrCQkJICAgICAgID8gYnBfZW5hYmxlZCA6IGJwX2Rpc2FibGVk KTsKKysKKysJICByZXR1cm4gMDsgLyogQ29udGludWUgaXRlcmF0aW5nLiAgKi8KKysJfQorKyAg ICB9CisrCisrICByZXR1cm4gMDsgLyogQ29udGludWUgaXRlcmF0aW5nLiAgKi8KKyt9CisrCisr LyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMgYXMg YXBwcm9wcmlhdGUuCisrICAgQ2FsbGVkIHdoZW5ldmVyIHN0b3Bfb25fc29saWJfZXZlbnRzIGlz IGNoYW5nZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrc3ZyNF91cGRhdGVfc29saWJfZXZlbnRf YnJlYWtwb2ludHMgKHZvaWQpCisreworKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9z dnI0X2luZm8gKCk7CisrCisrICBpZiAoaW5mby0+dXNpbmdfcHJvYmVzKQorKyAgICBpdGVyYXRl X292ZXJfYnJlYWtwb2ludHMgKHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQsIE5V TEwpOworK30KKysKKysvKiBCb3RoIHRoZSBTdW5PUyBhbmQgdGhlIFNWUjQgZHluYW1pYyBsaW5r ZXJzIGNhbGwgYSBtYXJrZXIgZnVuY3Rpb24KKysgICBiZWZvcmUgYW5kIGFmdGVyIG1hcHBpbmcg YW5kIHVubWFwcGluZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIHNvbGUKKysgICBwdXJwb3NlIG9m IHRoaXMgbWV0aG9kIGlzIHRvIGFsbG93IGRlYnVnZ2VycyB0byBzZXQgYSBicmVha3BvaW50IHNv CisrICAgdGhleSBjYW4gdHJhY2sgdGhlc2UgY2hhbmdlcy4KKysKKysgICBTb21lIHZlcnNpb25z IG9mIHRoZSBnbGliYyBkeW5hbWljIGxpbmtlciBjb250YWluIG5hbWVkIHByb2JlcworKyAgIHRv IGFsbG93IG1vcmUgZmluZSBncmFpbmVkIHN0b3BwaW5nLiAgR2l2ZW4gdGhlIGFkZHJlc3Mgb2Yg dGhlCisrICAgb3JpZ2luYWwgbWFya2VyIGZ1bmN0aW9uLCB0aGlzIGZ1bmN0aW9uIGF0dGVtcHRz IHRvIGZpbmQgdGhlc2UKKysgICBwcm9iZXMsIGFuZCBpZiBmb3VuZCwgc2V0cyBicmVha3BvaW50 cyBvbiB0aG9zZSBpbnN0ZWFkLiAgSWYgdGhlCisrICAgcHJvYmVzIGFyZW4ndCBmb3VuZCwgYSBz aW5nbGUgYnJlYWtwb2ludCBpcyBzZXQgb24gdGhlIG9yaWdpbmFsCisrICAgbWFya2VyIGZ1bmN0 aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFr cG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJICAgICBDT1JFX0FERFIgYWRk cmVzcykKKyt7CisrICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsK KysgIHN0cnVjdCBvYmpfc2VjdGlvbiAqb3M7CisrCisrICBvcyA9IGZpbmRfcGNfc2VjdGlvbiAo YWRkcmVzcyk7CisrICBpZiAob3MgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGludCB3aXRoX3By ZWZpeDsKKysKKysgICAgICBmb3IgKHdpdGhfcHJlZml4ID0gMDsgd2l0aF9wcmVmaXggPD0gMTsg d2l0aF9wcmVmaXgrKykKKysJeworKwkgIGludCBhbGxfcHJvYmVzX2ZvdW5kID0gMTsKKysJICBp bnQgaTsKKysKKysJICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JFUzsgaSsrKQorKwkgICAgewor KwkgICAgICBjaGFyIG5hbWVbMzJdID0geyAnXDAnIH07CisrCisrCSAgICAgIC8qIEZlZG9yYSAx NywgUkhFTCA2LjIsIGFuZCBSSEVMIDYuMyBzaGlwcGVkIHdpdGggYW4KKysJCSBlYXJseSB2ZXJz aW9uIG9mIHRoZSBwcm9iZXMgY29kZSBpbiB3aGljaCB0aGUgcHJvYmVzJworKwkJIG5hbWVzIHdl cmUgcHJlZml4ZWQgd2l0aCAicnRsZF8iLiAgVGhlIGxvY2F0aW9ucyBhbmQKKysJCSBhcmd1bWVu dHMgb2YgdGhlIHByb2JlcyBhcmUgb3RoZXJ3aXNlIHRoZSBzYW1lLCBzbyB3ZQorKwkJIGNoZWNr IGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiBpZiB0aGUgdW5wcmVmaXhlZAorKwkJIHByb2JlcyBh cmUgbm90IGZvdW5kLiAgKi8KKysKKysJICAgICAgaWYgKHdpdGhfcHJlZml4KQorKwkJc3RybmNh dCAobmFtZSwgInJ0bGRfIiwgc2l6ZW9mIChuYW1lKSk7CisrCisrCSAgICAgIHN0cm5jYXQgKG5h bWUsIHByb2JlX2luZm9baV0ubmFtZSwgc2l6ZW9mIChuYW1lKSAtIHNpemVvZiAoInJ0bGRfIikp OworKworKwkgICAgICBpbmZvLT5wcm9iZXNbaV0gPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxlIChv cy0+b2JqZmlsZSwgInJ0bGQiLAorKwkJCQkJCQluYW1lKTsKKysKKysJICAgICAgaWYgKCFWRUNf bGVuZ3RoIChwcm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0pKQorKwkJeworKwkJICBmcmVlX3Byb2Jl cyAoaW5mbyk7CisrCQkgIGFsbF9wcm9iZXNfZm91bmQgPSAwOworKwkJICBicmVhazsKKysJCX0K KysJICAgIH0KKysKKysJICBpZiAoYWxsX3Byb2Jlc19mb3VuZCkKKysJICAgIHsKKysJICAgICAg aW5mby0+dXNpbmdfcHJvYmVzID0gMTsKKysKKysJICAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9Q Uk9CRVM7IGkrKykKKysJCXsKKysJCSAgc3RydWN0IHByb2JlICpwcm9iZTsKKysJCSAgaW50IGl4 OworKworKwkJICBmb3IgKGl4ID0gMDsKKysJCSAgICAgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwg aW5mby0+cHJvYmVzW2ldLCBpeCwgcHJvYmUpOworKwkJICAgICAgICsraXgpCisrCQkgICAgY3Jl YXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHByb2JlLT5hZGRyZXNzKTsKKysJ CX0KKysKKysJICAgICAgc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7Cisr CSAgICAgIHJldHVybjsKKysJICAgIH0KKysJfQorKyAgICB9CisrCisrICBjcmVhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwgYWRkcmVzcyk7CisrfQorKworIC8qIEhlbHBlciBm dW5jdGlvbiBmb3IgZ2RiX2JmZF9sb29rdXBfc3ltYm9sLiAgKi8KKyAKKyBzdGF0aWMgaW50CitA QCAtMTUwMiw2ICsyMTQ1LDkgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZv LCBpbgorICAgaW5mby0+aW50ZXJwX3RleHRfc2VjdF9sb3cgPSBpbmZvLT5pbnRlcnBfdGV4dF9z ZWN0X2hpZ2ggPSAwOworICAgaW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdyA9IGluZm8tPmludGVy cF9wbHRfc2VjdF9oaWdoID0gMDsKKyAKKysgIGZyZWVfcHJvYmVzIChpbmZvKTsKKysgIGluZm8t PnVzaW5nX3Byb2JlcyA9IDA7CisrCisgICAvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBzaGFyZWQg bGlicmFyeSBsaXN0IGluIHRoZSB0YXJnZXQsIGFuZAorICAgICAgcl9kZWJ1ZyBjb250YWlucyBy X2Jyaywgc2V0IHRoZSBicmVha3BvaW50IHRoZXJlIC0gdGhpcyBzaG91bGQKKyAgICAgIG1lYW4g cl9icmsgaGFzIGFscmVhZHkgYmVlbiByZWxvY2F0ZWQuICBBc3N1bWUgdGhlIGR5bmFtaWMgbGlu a2VyCitAQCAtMTUzMyw3ICsyMTc5LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZv ICppbmZvLCBpbgorIAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVzcywg aWYgaXQncyBUaHVtYiB0aGUgbG93IGJpdAorIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0cmlw cGVkIHRoYXQgaW5mbyBhYm92ZSBhbmQgaXQncyBub3QgY2xlYXIKKyAJIHdoYXQgYWxsIHRoZSBj b25zZXF1ZW5jZXMgYXJlIG9mIHBhc3NpbmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCistCSBh ZGRyZXNzIHRvIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8KKysJ IGFkZHJlc3MgdG8gc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUgY2Fs bCB0bworIAkgZmluZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFkZHJl c3MgYW5kIGhhdmUgc29tZQorIAkgaG9wZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQgb2Yg YnJlYWtwb2ludCB0byB1c2UgKHZpYQorIAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFuIHRo YXQgR0RCIG5lZWRzIHRvIGJlIHBvaW50ZWQgYXQgYQorQEAgLTE1NzEsNyArMjIxNyw3IEBAIGVu YWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KKyAJCSsgYmZkX3NlY3Rpb25f c2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOworIAkgICAgfQorIAorLQkgIGNyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworKwkgIHN2cjRf Y3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIp OworIAkgIHJldHVybiAxOworIAl9CisgICAgIH0KK0BAIC0xNzI5LDcgKzIzNzUsOCBAQCBlbmFi bGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCisgCisgICAgICAgaWYgKHN5bV9h ZGRyICE9IDApCisgCXsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0 X2dkYmFyY2gsIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gsCisrCQkJCQkgICAgICAgbG9hZF9hZGRy ICsgc3ltX2FkZHIpOworIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7CisgCSAgcmV0dXJuIDE7Cisg CX0KK0BAIC0xNzU1LDcgKzI0MDIsNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8g KmluZm8sIGluCisgCSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyICh0YXJnZXRfZ2RiYXJjaCwKKyAJCQkJCQkJIHN5bV9hZGRyLAorIAkJCQkJCQkgJmN1cnJl bnRfdGFyZ2V0KTsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dk YmFyY2gsIHN5bV9hZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50 cyAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKKyAJICByZXR1cm4gMTsKKyAJfQorICAgICB9 CitAQCAtMTc3MSw3ICsyNDE4LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvLCBpbgorIAkgICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKHRhcmdldF9nZGJhcmNoLAorIAkJCQkJCQkgICAgIHN5bV9hZGRyLAorIAkJCQkJCQkg ICAgICZjdXJyZW50X3RhcmdldCk7CistCSAgICAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3Bv aW50ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworKwkgICAgICBzdnI0X2NyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKKyAJICAgICAg cmV0dXJuIDE7CisgCSAgICB9CisgCX0KK0BAIC0yMjgxLDYgKzI5MjgsOSBAQCBzdnI0X3NvbGli X2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvCisgCisgICBpbmZvID0gZ2V0X3N2cjRfaW5m byAoKTsKKyAKKysgIC8qIEZyZWUgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UncyBuYW1lc3Bh Y2UgdGFibGUuICAqLworKyAgZnJlZV9uYW1lc3BhY2VfdGFibGUgKGluZm8pOworKworICAgLyog UmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkuICAqLworICAgc3ZyNF9y ZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKCk7CisgCitAQCAtMjU0Nyw0ICszMTk3LDYgQEAgX2lu aXRpYWxpemVfc3ZyNF9zb2xpYiAodm9pZCkKKyAgIHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xv YmFsX3N5bWJvbCA9IGVsZl9sb29rdXBfbGliX3N5bWJvbDsKKyAgIHN2cjRfc29fb3BzLnNhbWUg PSBzdnI0X3NhbWU7CisgICBzdnI0X3NvX29wcy5rZWVwX2RhdGFfaW5fY29yZSA9IHN2cjRfa2Vl cF9kYXRhX2luX2NvcmU7CisrICBzdnI0X3NvX29wcy5oYW5kbGVfc29saWJfZXZlbnQgPSBzdnI0 X2hhbmRsZV9zb2xpYl9ldmVudDsKKysgIHN2cjRfc29fb3BzLnVwZGF0ZV9icmVha3BvaW50cyA9 IHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOworIH0KK0luZGV4OiBnZGItNy40 LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi1zb2xpYi5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLWRsbW9wZW4tc29saWIuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjMzMDc0NjU5MSArMDIwMAor QEAgLTAsMCArMSwyNCBAQAorKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKytpbnQKKytmb28gKGludCBuKQorK3sKKysgIHBy aW50ZiAoImZvbyAlZFxuIiwgbik7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1k bG1vcGVuLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4zMzk3NDY1NzYgKzAyMDAKK0BAIC0wLDAgKzEs NTggQEAKKysvKiBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2RlZmlu ZSBfR05VX1NPVVJDRQorKyNpbmNsdWRlIDxkbGZjbi5oPgorKworK3ZvaWQKKytzdG9wICgpCisr eworK30KKysKKytpbnQKKyttYWluICgpCisreworKyAgdm9pZCAqaGFuZGxlMSwgKmhhbmRsZTIs ICpoYW5kbGUzOworKyAgdm9pZCAoKmZ1bmMpKGludCk7CisrCisrICBoYW5kbGUxID0gZGxtb3Bl biAoTE1fSURfTkVXTE0sIFNITElCX05BTUUsIFJUTERfTEFaWSk7CisrICBzdG9wICgpOworKwor KyAgZnVuYyA9ICh2b2lkICgqKShpbnQpKSBkbHN5bSAoaGFuZGxlMSwgImZvbyIpOworKyAgZnVu YyAoMSk7CisrCisrICBoYW5kbGUyID0gZGxtb3BlbiAoTE1fSURfTkVXTE0sIFNITElCX05BTUUs IFJUTERfTEFaWSk7CisrICBzdG9wICgpOworKworKyAgZnVuYyA9ICh2b2lkICgqKShpbnQpKSBk bHN5bSAoaGFuZGxlMiwgImZvbyIpOworKyAgZnVuYyAoMik7CisrCisrICBoYW5kbGUzID0gZGxv cGVuIChTSExJQl9OQU1FLCBSVExEX0xBWlkpOworKyAgc3RvcCAoKTsKKysKKysgIGZ1bmMgPSAo dm9pZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTMsICJmb28iKTsKKysgIGZ1bmMgKDMpOworKwor KyAgZGxjbG9zZSAoaGFuZGxlMSk7CisrICBzdG9wICgpOworKworKyAgZGxjbG9zZSAoaGFuZGxl Mik7CisrICBzdG9wICgpOworKworKyAgZGxjbG9zZSAoaGFuZGxlMyk7CisrICBzdG9wICgpOwor KworKyAgcmV0dXJuIDA7CisrfQorSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuOTEuMjAx MjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLmV4cAkyMDEyLTA4LTE0 IDE3OjM0OjQ0LjM0Mzc0NjU2MyArMDIwMAorQEAgLTAsMCArMSwxMjUgQEAKKysjIENvcHlyaWdo dCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtza2lwX3NobGliX3Rlc3RzXSB8fCBbaXNfcmVtb3Rl IHRhcmdldF0gfSB7CisrICAgIHJldHVybiAwCisrfQorKworK3N0YW5kYXJkX3Rlc3RmaWxlCisr Cisrc2V0IGxpYm5hbWUgJHRlc3RmaWxlLXNvbGliCisrc2V0IHNyY2ZpbGVfbGliICRzcmNkaXIv JHN1YmRpci8kbGlibmFtZS5jCisrc2V0IGJpbmZpbGVfbGliIFtzdGFuZGFyZF9vdXRwdXRfZmls ZSAkbGlibmFtZS5zb10KKysKKytzZXQgbm9ybWFsX2JwICJfZGxfZGVidWdfc3RhdGUiCisrc2V0 IHByb2Jlc19icCAiZGxfbWFpbiIKKysKKytpZiB7IFtnZGJfY29tcGlsZV9zaGxpYiAkc3JjZmls ZV9saWIgJGJpbmZpbGVfbGliIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0g IT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmlsZV9saWIu IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVz dGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSBcCisrCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFn cz0tRFNITElCX05BTUVcPVwiJGJpbmZpbGVfbGliXCIgbGlicz0tbGRsXV0gfSB7CisrICAgIHJl dHVybiAtMQorK30KKysKKysjIFJ1biAiaW5mbyBzaGFyZWRsaWJyYXJ5IiBhbmQgY2hlY2sgb3Vy IGxpYnJhcnkgaXMgc2hvd24gdGhlIGV4cGVjdGVkCisrIyBudW1iZXIgb2YgdGltZXMuCisrcHJv YyBjaGVja19pbmZvX3NoYXJlZCB7IHRlc3QgZXhwZWN0IH0geworKyAgICBnbG9iYWwgbGlibmFt ZQorKyAgICBnbG9iYWwgZ2RiX3Byb21wdAorKworKyAgICBzZXQgYWN0dWFsIDAKKysKKysgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3QgeworKwktcmUgJGxp Ym5hbWUgeworKwkgICAgaW5jciBhY3R1YWwgMQorKwkgICAgZXhwX2NvbnRpbnVlCisrCX0KKysJ LXJlICJcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgaWYgeyAkYWN0dWFsID09ICRleHBlY3Qg fSB7CisrCQlwYXNzICR0ZXN0CisrCSAgICB9IGVsc2UgeworKwkJZmFpbCAkdGVzdAorKwkgICAg fQorKwl9CisrICAgIH0KKyt9CisrCisrIyBFbmFibGUgc3RvcC1vbi1zb2xpYi1ldmVudHMKKytn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAxIgorKworKyMgUnVu IHRvIHRoZSBmaXJzdCBzdG9wCisrZ2RiX3Rlc3QgInJ1biIgIi4qU3RvcHBlZCBkdWUgdG8gc2hh cmVkIGxpYnJhcnkgZXZlbnQuKiIKKysKKysjIFhGQUlMIGlmIHdlIGFyZSBub3QgdXNpbmcgcHJv YmVzCisrc2V0IHRlc3QgImVuc3VyZSB1c2luZyBwcm9iZXMiCisrc2V0IHVzaW5nX3Byb2JlcyAw CisrZ2RiX3Rlc3RfbXVsdGlwbGUgImJ0IiAkdGVzdCB7CisrICAgIC1yZSAiIzAgK1xbXlxyXG5c XSpcXG0oX19HSV8pPyRub3JtYWxfYnBcXE0uKiRnZGJfcHJvbXB0ICQiIHsKKysJeGZhaWwgJHRl c3QKKysgICAgfQorKyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kcHJvYmVzX2Jw XFxNLiokZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysJc2V0IHVzaW5nX3Byb2JlcyAx CisrICAgIH0KKyt9CisrCisraWYgeyAkdXNpbmdfcHJvYmVzIH0geworKyAgICAjIFNldCB1cCBi cmVha3BvaW50cy4KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1l dmVudHMgMCIKKysgICAgZ2RiX3Rlc3QgImJyZWFrIHN0b3AiIHtCcmVha3BvaW50IFswLTldKyBh dCAuKn0KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYnJlYWtwb2ludCBwZW5kaW5nIG9u IgorKyAgICBnZGJfdGVzdCAiYnJlYWsgZm9vIiB7QnJlYWtwb2ludCBbMC05XSsgXChmb29cKSBw ZW5kaW5nXC59CisrCisrICAgICMgQ2hlY2sgb3VyIGxpYnJhcnkgaXNuJ3QgbG9hZGVkLgorKyAg ICBjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICMxIiAwCisrCisrICAgICMg UnVuIHRvIHRoZSBmaXJzdCBzdG9wIGFuZCBjaGVjayBvdXIgbGlicmFyeSBsb2FkZWQuCisrICAg IGdkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKysgICAg Y2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMiIgMQorKworKyAgICAjIFRo ZSBuZXh0IHN0b3Agc2hvdWxkIGJlIHRoZSBmdW5jdGlvbiBpbiB0aGUgbGlicmFyeS4KKysgICAg Z2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gZm9vIFwoXCkgZnJvbSAuKn0K KysKKysgICAgIyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hlY2sgb3VyIGxpYnJhcnkgaXMg bm93IGxvYWRlZCB0d2ljZS4KKysgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywg LiogaW4gc3RvcCBcKFwpfQorKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJy YXJ5ICMzIiAyCisrCisrICAgICMgVGhlIG5leHQgc3RvcCBzaG91bGQgYmUgdGhlIGZ1bmN0aW9u IGluIHRoZSBsaWJyYXJ5LgorKyAgICBnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAu KiBpbiBmb28gXChcKSBmcm9tIC4qfQorKworKyAgICAjIFJ1biB0byB0aGUgbmV4dCBzdG9wIGFu ZCBjaGVjayBvdXIgbGlicmFyeSBpcyBub3cgbG9hZGVkIHRocmVlCisrICAgICMgdGltZXMuCisr ICAgIGdkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKysg ICAgY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjNCIgMworKworKyAgICAj IFRoZSBuZXh0IHN0b3Agc2hvdWxkIGJlIHRoZSBmdW5jdGlvbiBpbiB0aGUgbGlicmFyeS4KKysg ICAgZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gZm9vIFwoXCkgZnJvbSAu Kn0KKysKKysgICAgIyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hlY2sgb3VyIGxpYnJhcnkg aXMgbm93IGxvYWRlZCB0d2ljZS4KKysgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTld KywgLiogaW4gc3RvcCBcKFwpfQorKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRs aWJyYXJ5ICM1IiAyCisrCisrICAgICMgUnVuIHRvIHRoZSBuZXh0IHN0b3AgYW5kIGNoZWNrIG91 ciBsaWJyYXJ5IGlzIG5vdyBsb2FkZWQgb25jZS4KKysgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3Bv aW50IFswLTldKywgLiogaW4gc3RvcCBcKFwpfQorKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5m byBzaGFyZWRsaWJyYXJ5ICM2IiAxCisrCisrICAgICMgUnVuIHRvIHRoZSBuZXh0IHN0b3AgYW5k IGNoZWNrIG91ciBsaWJyYXJ5IGlzIG5vdCBsb2FkZWQuCisrICAgIGdkYl90ZXN0ICJjIiB7QnJl YWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKysgICAgY2hlY2tfaW5mb19zaGFyZWQg ImluZm8gc2hhcmVkbGlicmFyeSAjNyIgMAorK30KK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWlu dGVycC5leHAJMjAxMi0wNi0yMSAyMjo0NjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEy LTA4LTE0IDE3OjM0OjQ0LjM0NDc0NjU2NSArMDIwMAorQEAgLTEwOSwxMiArMTA5LDE5IEBAIHBy b2Mgc3RyaXBfZGVidWcge2Rlc3R9IHsKKyAgICAgfQorIH0KKyAKKysjIFRoZSBtYXJrZXIgZnVu Y3Rpb24gZm9yIHRoZSBzdGFuZGFyZCBydW50aW1lIGxpbmtlciBpbnRlcmZhY2UgaXMKKysjIF9k bF9kZWJ1Z19zdGF0ZS4gIFRoZSBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlIGhhcyBubyBzcGVjaWZp YyBtYXJrZXIKKysjIGZ1bmN0aW9uOyB0aGUgcHJvYmUgd2Ugd2lsbCBzdG9wIG9uIChpbml0X3N0 YXJ0KSBpcyBpbiBkbF9tYWluIHNvIHdlCisrIyBjaGVjayBmb3IgdGhhdC4KKysKKytzZXQgc29s aWJfYnAgeyhfZGxfZGVidWdfc3RhdGV8ZGxfbWFpbil9CisrCisgIyBJbXBsZW1lbnRhdGlvbiBv ZiByZWFjaC4KKyAKKyBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9IHsK Ky0gICAgZ2xvYmFsIGdkYl9wcm9tcHQgZXhwZWN0X291dAorKyAgICBnbG9iYWwgZ2RiX3Byb21w dCBleHBlY3Rfb3V0IHNvbGliX2JwCisgCistICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0 YXRlIn0geworKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CisgCSMgQnJlYWtwb2ludCBv biBfZGxfZGVidWdfc3RhdGUgY2FuIGhhdmUgcHJvYmxlbXMgZHVlIHRvIGl0cyBvdmVybGFwCisg CSMgd2l0aCB0aGUgZXhpc3RpbmcgaW50ZXJuYWwgYnJlYWtwb2ludCBmcm9tIEdEQi4KKyAJZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3RvcC1vbi1zb2xpYi1ldmVudHMgMSIKK0BAIC0xNDIsMjEg KzE0OSwyMSBAQCBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9CisgCSAg ICBleHBfY29udGludWUKKyAJfQorIAktcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssIFxcLj8oX19H SV8pPyRmdW5jIFxcKC4qXFwpIGF0IC4qOlxbMC05XF0rXHJcbi4qJGdkYl9wcm9tcHQgJCIgewor LQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7CisrCSAgICBpZiB7JGZ1bmMg PT0gJHNvbGliX2JwfSB7CisgCQlmYWlsICR0ZXN0CisgCSAgICB9IGVsc2UgeworIAkJcGFzcyAk dGVzdAorIAkgICAgfQorIAl9CisgCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4YS1m XF0rIGluIFxcLj8oX19HSV8pPyRmdW5jIFxcKFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKy0J ICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0geworKwkgICAgaWYgeyRmdW5jID09 ICRzb2xpYl9icH0geworIAkJZmFpbCAkdGVzdAorIAkgICAgfSBlbHNlIHsKKyAJCXBhc3MgJHRl c3QKKyAJICAgIH0KKyAJfQorIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91cyApP3NoYXJl ZCBsaWJyYXJ5IGV2ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgeworLQkgICAgaWYgeyRmdW5jID09 ICJfZGxfZGVidWdfc3RhdGUifSB7CisrCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Cisg CQlpZiB7JGRlYnVnX3N0YXRlX2NvdW50ID09IDB9IHsKKyAJCSAgICAjIEZpcnN0IHN0b3AgZG9l cyBub3QgeWV0IHJlbG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KKyAJCSAgICAjIGRlc2NyaXB0 b3Igb24gcHBjNjQuCitAQCAtMTc1LDcgKzE4Miw3IEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBjb21t YW5kIGRpc3BsYWNlbWVudH0KKyAJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKKyAgICAgfQorIAor LSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKKysgICAgaWYgeyRmdW5jID09 ICRzb2xpYl9icH0geworIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2 ZW50cyAwIgorICAgICB9CisgfQorQEAgLTM1Nyw3ICszNjQsNyBAQCBwcm9jIHRlc3RfYXR0YWNo IHtmaWxlIGRpc3BsYWNlbWVudCB7cmVsCisgfQorIAorIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1h aW4gdHJ5bm9zeW0gZGlzcGxhY2VtZW50fSB7CistICAgIGdsb2JhbCBzcmNkaXIgc3ViZGlyIGdk Yl9wcm9tcHQgZXhwZWN0X291dCBpbmZlcmlvcl9leGl0ZWRfcmUKKysgICAgZ2xvYmFsIHNyY2Rp ciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVyaW9yX2V4aXRlZF9yZSBzb2xpYl9i cAorIAorICAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5kIGxvYWRlZCAkRklM RSB3aXRoIHN5bWJvbHMuCisgCitAQCAtMzg1LDkgKzM5Miw5IEBAIHByb2MgdGVzdF9sZCB7Zmls ZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKKyAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXJncyAk e29iamRpcn0vJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiICJzZXQgYXJncyBPQkpESVIvJHtzdWJk aXJ9LyRiaW5maWxlX3Rlc3QiCisgICAgIH0KKyAKKy0gICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0 ZSIgInJ1biIgJGRpc3BsYWNlbWVudAorKyAgICByZWFjaCAkc29saWJfYnAgInJ1biIgJGRpc3Bs YWNlbWVudAorIAorLSAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/ X2RsX2RlYnVnX3N0YXRlXFxNLioiICJkbCBidCIKKysgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xb XlxyXG5cXSpcXG0oX19HSV8pPyRzb2xpYl9icFxcTS4qIiAiZGwgYnQiCisgCisgICAgIGlmICRp Zm1haW4geworIAlyZWFjaCAibWFpbiIgY29udGludWUgIk5PTkUiCitAQCAtMzk5LDcgKzQwNiw3 IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKKyAKKyAgICAgIyBU cnkgcmUtcnVuIGlmIHRoZSBuZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZlY3QuCisgICAg IGdkYl90ZXN0ICJraWxsIiAiIiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdn ZWRcPyBcKHkgb3IgblwpIH0gInkiCistICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiICJydW4i ICRkaXNwbGFjZW1lbnQKKysgICAgcmVhY2ggJHNvbGliX2JwICJydW4iICRkaXNwbGFjZW1lbnQK KyAKKyAgICAgaWYgJGlmbWFpbiB7CisgCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxhY2VtZW50CitA QCAtNDMxLDcgKzQzOCw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlz cGwKKyAJZ2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUi ICJsb2FkIgorIAorIAlpZiAkaWZtYWluIHsKKy0JICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUi IHJ1biAkZGlzcGxhY2VtZW50CisrCSAgICByZWFjaCAkc29saWJfYnAgcnVuICRkaXNwbGFjZW1l bnQKKyAKKyAJICAgICMgVXNlIHR3byBzZXBhcmF0ZSBnZGJfdGVzdF9tdWx0aXBsZSBzdGF0ZW1l bnRzIHRvIGF2b2lkIHRpbWVvdXRzIGR1ZQorIAkgICAgIyB0byBzbG93IHByb2Nlc3Npbmcgb2Yg d2lsZGNhcmQgY2FwdHVyaW5nIGxvbmcgb3V0cHV0CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1zb2xpYi5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1z b2xpYi5jCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzU1NzQ2NTYxICswMjAwCitAQCAtMCwwICsxLDI0 IEBACisrLyogQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRl IDxzdGRpby5oPgorKworK2ludAorK2ZvbyAoaW50IG4pCisreworKyAgcHJpbnRmICgiZm9vICVk XG4iLCBuKTsKKysKKysgIHJldHVybiAwOworK30KK0luZGV4OiBnZGItNy40LjkxLjIwMTIwODE0 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40 LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMJMjAxMi0w OC0xNCAxNzozNDo0NC4zNjI3NDY1NjEgKzAyMDAKK0BAIC0wLDAgKzEsMjYgQEAKKysvKiBDb3B5 cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPGRsZmNuLmg+Cisr CisraW50CisrbWFpbiAoKQorK3sKKysgIHZvaWQgKmhhbmRsZSA9IGRsb3BlbiAoU0hMSUJfTkFN RSwgUlRMRF9MQVpZKTsKKysKKysgIGRsY2xvc2UgKGhhbmRsZSk7CisrCisrICByZXR1cm4gMDsK Kyt9CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLXByb2Jlcy5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cAkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM2Mzc0NjU2 MSArMDIwMAorQEAgLTAsMCArMSw3NiBAQAorKyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K2lmIHsgW3NraXBfc2hsaWJfdGVzdHNdIHx8IFtpc19yZW1vdGUgdGFyZ2V0XSB9IHsKKysgICAg cmV0dXJuIDAKKyt9CisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKysKKytzZXQgbGlibmFtZSAkdGVz dGZpbGUtc29saWIKKytzZXQgc3JjZmlsZV9saWIgJHNyY2Rpci8kc3ViZGlyLyRsaWJuYW1lLmMK KytzZXQgYmluZmlsZV9saWIgW3N0YW5kYXJkX291dHB1dF9maWxlICRsaWJuYW1lLnNvXQorKwor K3NldCBub3JtYWxfYnAgIl9kbF9kZWJ1Z19zdGF0ZSIKKytzZXQgcHJvYmVzX2JwICJkbF9tYWlu IgorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICRzcmNmaWxlX2xpYiAkYmluZmlsZV9saWIg XAorKwkgIFtsaXN0IGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUNdXSAhPSAiIiB9IHsKKysgICAgdW50 ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlICRiaW5maWxlX2xpYi4iCisrICAgIHJldHVybiAtMQor K30KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxl ICRzcmNmaWxlIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1EU0hMSUJfTkFNRVw9XCIk YmluZmlsZV9saWJcIiBsaWJzPS1sZGxdXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMg RW5hYmxlIHN0b3Atb24tc29saWItZXZlbnRzCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc3Rv cC1vbi1zb2xpYi1ldmVudHMgMSIKKysKKysjIFJ1biB0byB0aGUgZmlyc3Qgc3RvcAorK2dkYl90 ZXN0ICJydW4iICIuKlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50LioiCisrCisr IyBYRkFJTCBpZiB3ZSBhcmUgbm90IHVzaW5nIHByb2JlcworK3NldCB0ZXN0ICJlbnN1cmUgdXNp bmcgcHJvYmVzIgorK3NldCB1c2luZ19wcm9iZXMgMAorK2dkYl90ZXN0X211bHRpcGxlICJidCIg JHRlc3QgeworKyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kbm9ybWFsX2JwXFxN LiokZ2RiX3Byb21wdCAkIiB7CisrCXhmYWlsICR0ZXN0CisrICAgIH0KKysgICAgLXJlICIjMCAr XFteXHJcblxdKlxcbShfX0dJXyk/JHByb2Jlc19icFxcTS4qJGdkYl9wcm9tcHQgJCIgeworKwlw YXNzICR0ZXN0CisrCXNldCB1c2luZ19wcm9iZXMgMQorKyAgICB9CisrfQorKworK2lmIHsgJHVz aW5nX3Byb2JlcyB9IHsKKysgICAgIyBSdW4gdGlsIGl0IGxvYWRzIG91ciBsaWJyYXJ5CisrICAg IHNldCB0ZXN0ICJydW4gdGlsIG91ciBsaWJyYXJ5IGxvYWRzIgorKyAgICBzZXQgbG9hZGVkX2xp YnJhcnkgMAorKyAgICB3aGlsZSB7ICEkbG9hZGVkX2xpYnJhcnkgfSB7CisrCWdkYl90ZXN0X211 bHRpcGxlICJjIiAkdGVzdCB7CisrCSAgICAtcmUgIkluZmVyaW9yIGxvYWRlZCAkYmluZmlsZV9s aWJcXE0uKiRnZGJfcHJvbXB0ICQiIHsKKysJCXBhc3MgJHRlc3QKKysJCXNldCBsb2FkZWRfbGli cmFyeSAxCisrCSAgICB9CisrCSAgICAtcmUgIlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5 IGV2ZW50XFxNLiokZ2RiX3Byb21wdCAkIiB7CisrCSAgICB9CisrCX0KKysgICAgfQorKworKyAg ICAjIENhbGwgc29tZXRoaW5nIHRvIGVuc3VyZSB0aGF0IHJlbG9jYXRpb24gb2NjdXJyZWQKKysg ICAgZ2RiX3Rlc3QgImNhbGwgZm9vKDIzKSIgImZvbyAyMy4qXFxcJC4qID0gLioiCisrfQorSW5k ZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJl ZC1zb2xpYjEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM2NTc0NjU2 MSArMDIwMAorQEAgLTAsMCArMSwyNCBAQAorKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKytpbnQKKytmb28gKGludCBuKQor K3sKKysgIHByaW50ZiAoImZvbyAlZFxuIiwgbik7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRl eDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVk LXNvbGliMi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzY1NzQ2NTYx ICswMjAwCitAQCAtMCwwICsxLDI0IEBACisrLyogQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLworKworKyNpbmNsdWRlIDxzdGRpby5oPgorKworK2ludAorK2JhciAoaW50IG4pCisr eworKyAgcHJpbnRmICgiYmFyICVkXG4iLCBuKTsKKysKKysgIHJldHVybiAwOworK30KK0luZGV4 OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9p bmZvLXNoYXJlZC5jCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzY2NzQ2NTYxICswMjAwCitAQCAtMCww ICsxLDQ4IEBACisrLyogQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNp bmNsdWRlIDxkbGZjbi5oPgorKworK3ZvaWQKKytzdG9wICgpCisreworK30KKysKKytpbnQKKytt YWluICgpCisreworKyAgdm9pZCAqaGFuZGxlMSwgKmhhbmRsZTI7CisrICB2b2lkICgqZnVuYyko aW50KTsKKysKKysgIGhhbmRsZTEgPSBkbG9wZW4gKFNITElCMV9OQU1FLCBSVExEX0xBWlkpOwor KyAgc3RvcCAoKTsKKysKKysgIGhhbmRsZTIgPSBkbG9wZW4gKFNITElCMl9OQU1FLCBSVExEX0xB WlkpOworKyAgc3RvcCAoKTsKKysKKysgIGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0gKGhh bmRsZTEsICJmb28iKTsKKysgIGZ1bmMgKDEpOworKworKyAgZnVuYyA9ICh2b2lkICgqKShpbnQp KSBkbHN5bSAoaGFuZGxlMiwgImJhciIpOworKyAgZnVuYyAoMik7CisrCisrICBkbGNsb3NlICho YW5kbGUxKTsKKysgIHN0b3AgKCk7CisrCisrICBkbGNsb3NlIChoYW5kbGUyKTsKKysgIHN0b3Ag KCk7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAorPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuOTEu MjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5leHAJMjAxMi0wOC0x NCAxNzozNDo0NC4zNjc3NDY1NjEgKzAyMDAKK0BAIC0wLDAgKzEsMTM5IEBACisrIyBDb3B5cmln aHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrCisraWYgeyBbc2tpcF9zaGxpYl90ZXN0c10gfHwgW2lzX3JlbW90 ZSB0YXJnZXRdIH0geworKyAgICByZXR1cm4gMAorK30KKysKKytzdGFuZGFyZF90ZXN0ZmlsZQor KworK3NldCBsaWIxbmFtZSAkdGVzdGZpbGUtc29saWIxCisrc2V0IHNyY2ZpbGVfbGliMSAkc3Jj ZGlyLyRzdWJkaXIvJGxpYjFuYW1lLmMKKytzZXQgYmluZmlsZV9saWIxIFtzdGFuZGFyZF9vdXRw dXRfZmlsZSAkbGliMW5hbWUuc29dCisrc2V0IGRlZmluZTEgLURTSExJQjFfTkFNRVw9XCIkYmlu ZmlsZV9saWIxXCIKKysKKytzZXQgbGliMm5hbWUgJHRlc3RmaWxlLXNvbGliMgorK3NldCBzcmNm aWxlX2xpYjIgJHNyY2Rpci8kc3ViZGlyLyRsaWIybmFtZS5jCisrc2V0IGJpbmZpbGVfbGliMiBb c3RhbmRhcmRfb3V0cHV0X2ZpbGUgJGxpYjJuYW1lLnNvXQorK3NldCBkZWZpbmUyIC1EU0hMSUIy X05BTUVcPVwiJGJpbmZpbGVfbGliMlwiCisrCisraWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHNy Y2ZpbGVfbGliMSAkYmluZmlsZV9saWIxIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1m UElDXV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSAkYmluZmls ZV9saWIxLiIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGli ICRzcmNmaWxlX2xpYjIgJGJpbmZpbGVfbGliMiBcCisrCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFn cz0tZlBJQ11dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgJGJp bmZpbGVfbGliMi4iCisrICAgIHJldHVybiAtMQorK30KKysKKytzZXQgY2ZsYWdzICIkZGVmaW5l MSAkZGVmaW5lMiIKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRl c3RmaWxlICRzcmNmaWxlIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPSRjZmxhZ3MgbGli cz0tbGRsXV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIFJ1biAiaW5mbyBzaGFyZWRs aWJyYXJ5IiBhbmQgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mCisrIyBvdXIg bGlicmFyaWVzLgorK3Byb2MgY2hlY2tfaW5mb19zaGFyZWQgeyB0ZXN0IGV4cGVjdDEgZXhwZWN0 MiB9IHsKKysgICAgZ2xvYmFsIGxpYjFuYW1lCisrICAgIGdsb2JhbCBsaWIybmFtZQorKyAgICBn bG9iYWwgZ2RiX3Byb21wdAorKworKyAgICBzZXQgYWN0dWFsMSAwCisrICAgIHNldCBhY3R1YWwy IDAKKysKKysgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3Qg eworKwktcmUgJGxpYjFuYW1lIHsKKysJICAgIHNldCBhY3R1YWwxIDEKKysJICAgIGV4cF9jb250 aW51ZQorKwl9CisrCS1yZSAkbGliMm5hbWUgeworKwkgICAgc2V0IGFjdHVhbDIgMQorKwkgICAg ZXhwX2NvbnRpbnVlCisrCX0KKysJLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgaWYg eyAkYWN0dWFsMSA9PSAkZXhwZWN0MSAmJiAkYWN0dWFsMiA9PSAkZXhwZWN0MiB9IHsKKysJCXBh c3MgJHRlc3QKKysJICAgIH0gZWxzZSB7CisrCQlmYWlsICR0ZXN0CisrCSAgICB9CisrCX0KKysg ICAgfQorK30KKysKKysjIFNldCB1cCBicmVha3BvaW50cy4KKytnZGJfdGVzdCAiYnJlYWsgc3Rv cCIge0JyZWFrcG9pbnQgWzAtOV0rIGF0IC4qfQorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGJy ZWFrcG9pbnQgcGVuZGluZyBvbiIKKytnZGJfdGVzdCAiYnJlYWsgZm9vIiB7QnJlYWtwb2ludCBb MC05XSsgXChmb29cKSBwZW5kaW5nXC59CisrZ2RiX3Rlc3QgImJyZWFrIGJhciIge0JyZWFrcG9p bnQgWzAtOV0rIFwoYmFyXCkgcGVuZGluZ1wufQorKworKyMgQ2hlY2sgbmVpdGhlciBvZiB0aGUg bGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgdGhlIHN0YXJ0LgorK2dkYl90ZXN0ICJzdGFydCIge1Rl bXBvcmFyeSBicmVha3BvaW50IFswLTldKywgLiogaW4gbWFpbiBcKFwpfQorK2NoZWNrX2luZm9f c2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzEiIDAgMAorKworKyMgUnVuIHRvIHRoZSBmaXJz dCBzdG9wIGFuZCBjaGVjayB0aGF0IG9ubHkgdGhlIGZpcnN0IGxpYnJhcnkgaXMgbG9hZGVkLgor K2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGluIHN0b3AgXChcKX0KKytjaGVj a19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICMyIiAxIDAKKysKKysjIFJ1biB0byB0 aGUgc2Vjb25kIHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGxvYWRlZC4K KytnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hl Y2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMyIgMSAxCisrCisrIyBDaGVjayB0 aGF0IHRoZSBuZXh0IHN0b3AgaXMgaW4gZm9vLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBb MC05XSssIC4qIGluIGZvbyBcKFwpIGZyb20gLip9CisrCisrIyBDaGVjayB0aGF0IHRoZSBuZXh0 IHN0b3AgaXMgaW4gYmFyLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4qIGlu IGJhciBcKFwpIGZyb20gLip9CisrCisrIyBSZXN0YXJ0IHRoZSBpbmZlcmlvciBhbmQgbWFrZSBz dXJlIHRoZXJlIGFyZSBubyBicmVha3BvaW50IHJlc2V0CisrIyBlcnJvcnMuICBUaGVzZSBjYW4g aGFwcGVuIHdpdGggdGhlIHByb2Jlcy1iYXNlZCBydW50aW1lIGxpbmtlcgorKyMgaW50ZXJmYWNl IGlmIHRoZSBjYWNoZSBpcyBub3QgY2xlYXJlZCBjb3JyZWN0bHkuCisrc2V0IHRlc3QgInJlc3Rh cnQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInJ1biIgJHRlc3QgeworKyAgICAtcmUge1N0YXJ0IGl0 IGZyb20gdGhlIGJlZ2lubmluZ1w/IFwoeSBvciBuXCkgfSB7CisrCXNlbmRfZ2RiICJ5XG4iCisr CWV4cF9jb250aW51ZQorKyAgICB9CisrICAgIC1yZSB7RXJyb3IgaW4gcmUtc2V0dGluZyBicmVh a3BvaW50fSB7CisrCWZhaWwgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIlxyXG4kZ2RiX3Byb21w dCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30KKysKKysjIFdlJ3JlIGF0IHRoZSBmaXJz dCBzdG9wLiAgQ2hlY2sgdGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4KKytj aGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM0IiAxIDAKKysKKysjIFJ1biB0 byB0aGUgc2Vjb25kIHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGxvYWRl ZC4KKytnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9Cisr Y2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjNSIgMSAxCisrCisrIyBDaGVj ayB0aGF0IHRoZSBuZXh0IHN0b3AgaXMgaW4gZm9vLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2lu dCBbMC05XSssIC4qIGluIGZvbyBcKFwpIGZyb20gLip9CisrCisrIyBDaGVjayB0aGF0IHRoZSBu ZXh0IHN0b3AgaXMgaW4gYmFyLgorK2dkYl90ZXN0ICJjIiB7QnJlYWtwb2ludCBbMC05XSssIC4q IGluIGJhciBcKFwpIGZyb20gLip9CisrCisrIyBSdW4gdG8gdGhlIG5leHQgc3RvcCBhbmQgY2hl Y2sgdGhhdCB0aGUgZmlyc3QgbGlicmFyeSBoYXMgYmVlbiB1bmxvYWRlZC4KKytnZGJfdGVzdCAi YyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hlY2tfaW5mb19zaGFy ZWQgImluZm8gc2hhcmVkbGlicmFyeSAjNiIgMCAxCisrCisrIyBSdW4gdG8gdGhlIGxhc3Qgc3Rv cCBhbmQgY2hlY2sgdGhhdCBib3RoIGxpYnJhcmllcyBhcmUgZ29uZS4KKytnZGJfdGVzdCAiYyIg e0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9CisrY2hlY2tfaW5mb19zaGFyZWQg ImluZm8gc2hhcmVkbGlicmFyeSAjNyIgMCAwCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFw LXByb2JlLTdvZjcucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtN29mNy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzRkYjI0Ci0tLSAvZGV2L251bGwKKysr IGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKQEAgLTAsMCArMSwxNDcgQEAKKzIw MTItMDctMzAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorCisJKiBvYmpmaWxl cy5oIChpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24KKwlkZWNsYXJh dGlvbi4KKwkocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBMaWtld2lzZS4KKwkocmVzdW1l X3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCk6IExpa2V3aXNlLgorCSogb2JqZmlsZXMuYyAo b2JqZmlsZV9wc3BhY2VfaW5mbyk6IE5ldyBmaWVsZCAiaW5oaWJpdF91cGRhdGVzIi4KKwkoZmlu ZF9wY19zZWN0aW9uKTogRG8gbm90IHVwZGF0ZSB0aGUgc2VjdGlvbiBtYXAgaWYKKwlpbmhpYml0 X3VwZGF0ZXMgaXMgc2V0LgorCShpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVu Y3Rpb24uCisJKHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzKTogTGlrZXdpc2UuCisJKHJlc3Vt ZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFudXApOiBMaWtld2lzZS4KKwkqIHNvbGliLXN2cjQu YyAoc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQpOiBJbmhpYml0IHNlY3Rpb24gbWFwCisJdXBkYXRl cyBmb3IgY2FsbHMgdG8gZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQuCisKK0luZGV4OiBnZGItNy40 LjkxLjIwMTIwODE0L2dkYi9vYmpmaWxlcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC45MS4y MDEyMDgxNC5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTItMDgtMTQgMTc6MTY6NTQuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMuaAkyMDEyLTA4LTE0 IDE3OjIwOjU1LjkxMzE3NDYwOSArMDIwMAorQEAgLTUyNiw2ICs1MjYsMjIgQEAgZXh0ZXJuIHZv aWQgc2V0X29iamZpbGVfZGF0YSAoc3RydWN0IG9iagorIGV4dGVybiB2b2lkICpvYmpmaWxlX2Rh dGEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCSAgIGNvbnN0IHN0cnVjdCBvYmpmaWxl X2RhdGEgKmRhdGEpOworIAorKy8qIEluIG5vcm1hbCB1c2UsIHRoZSBzZWN0aW9uIG1hcCB3aWxs IGJlIHJlYnVpbHQgYnkgRklORF9QQ19TRUNUSU9OCisrICAgaWYgb2JqZmlsZXMgaGF2ZSBiZWVu IGFkZGVkLCByZW1vdmVkIG9yIHJlbG9jYXRlZCBzaW5jZSBpdCB3YXMgbGFzdAorKyAgIGNhbGxl ZC4gIENhbGxpbmcgSU5ISUJJVF9TRUNUSU9OX01BUF9VUERBVEVTIHdpbGwgaW5oaWJpdCB0aGlz CisrICAgYmVoYXZpb3IgdW50aWwgUkVTVU1FX1NFQ1RJT05fTUFQX1VQREFURVMgaXMgY2FsbGVk LiAgSWYgeW91IGNhbGwKKysgICBJTkhJQklUX1NFQ1RJT05fTUFQX1VQREFURVMgeW91IG11c3Qg ZW5zdXJlIHRoYXQgZXZlcnkgY2FsbCB0bworKyAgIEZJTkRfUENfU0VDVElPTiBpbiB0aGUgaW5o aWJpdGVkIHJlZ2lvbiByZWxhdGVzIHRvIGEgc2VjdGlvbiB0aGF0CisrICAgaXMgYWxyZWFkeSBp biB0aGUgc2VjdGlvbiBtYXAgYW5kIGhhcyBub3Qgc2luY2UgYmVlbiByZW1vdmVkIG9yCisrICAg cmVsb2NhdGVkLiAgKi8KKytleHRlcm4gdm9pZCBpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMg KHZvaWQpOworKworKy8qIFJlc3VtZSBhdXRvbWF0aWNhbGx5IHJlYnVpbGRpbmcgdGhlIHNlY3Rp b24gbWFwIGFzIHJlcXVpcmVkLiAgKi8KKytleHRlcm4gdm9pZCByZXN1bWVfc2VjdGlvbl9tYXBf dXBkYXRlcyAodm9pZCk7CisrCisrLyogVmVyc2lvbiBvZiB0aGUgYWJvdmUgc3VpdGFibGUgZm9y IHVzZSBhcyBhIGNsZWFudXAuICAqLworK2V4dGVybiB2b2lkIHJlc3VtZV9zZWN0aW9uX21hcF91 cGRhdGVzX2NsZWFudXAgKHZvaWQgKmFyZyk7CisrCisgZXh0ZXJuIHZvaWQgZGVmYXVsdF9pdGVy YXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyCisgICAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCisgICAgaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcl9jYl9mdHlw ZSAqY2IsCitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEyLTA4 LTE0IDE3OjE2OjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L29iamZpbGVzLmMJMjAxMi0wOC0xNCAxNzoyMDo1NS45MTUxNzQ2MDkgKzAyMDAKK0BAIC03MCw2 ICs3MCw5IEBAIHN0cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZvCisgICBpbnQgb2JqZmlsZXNfY2hh bmdlZF9wOworICAgc3RydWN0IG9ial9zZWN0aW9uICoqc2VjdGlvbnM7CisgICBpbnQgbnVtX3Nl Y3Rpb25zOworKworKyAgLyogTm9uemVybyBpZiBzZWN0aW9uIG1hcCB1cGRhdGVzIHNob3VsZCBi ZSBpbmhpYml0ZWQuICAqLworKyAgaW50IGluaGliaXRfdXBkYXRlczsKKyB9OworIAorIC8qIFBl ci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KK0BAIC0xMjk1LDcgKzEyOTgsNyBAQCBmaW5k X3BjX3NlY3Rpb24gKENPUkVfQUREUiBwYykKKyAgICAgcmV0dXJuIHM7CisgCisgICBwc3BhY2Vf aW5mbyA9IGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwor LSAgaWYgKHBzcGFjZV9pbmZvLT5vYmpmaWxlc19jaGFuZ2VkX3AgIT0gMCkKKysgIGlmIChwc3Bh Y2VfaW5mby0+b2JqZmlsZXNfY2hhbmdlZF9wICYmICFwc3BhY2VfaW5mby0+aW5oaWJpdF91cGRh dGVzKQorICAgICB7CisgICAgICAgdXBkYXRlX3NlY3Rpb25fbWFwIChjdXJyZW50X3Byb2dyYW1f c3BhY2UsCisgCQkJICAmcHNwYWNlX2luZm8tPnNlY3Rpb25zLAorQEAgLTE0NjMsNiArMTQ2Niwz MCBAQCBvYmpmaWxlc19jaGFuZ2VkICh2b2lkKQorICAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEg KGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7CisgfQorIAor Ky8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KKysKKyt2b2lkCisraW5oaWJpdF9z ZWN0aW9uX21hcF91cGRhdGVzICh2b2lkKQorK3sKKysgIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRh IChjdXJyZW50X3Byb2dyYW1fc3BhY2UpLT5pbmhpYml0X3VwZGF0ZXMgPSAxOworK30KKysKKysv KiBTZWUgY29tbWVudHMgaW4gb2JqZmlsZXMuaC4gICovCisrCisrdm9pZAorK3Jlc3VtZV9zZWN0 aW9uX21hcF91cGRhdGVzICh2b2lkKQorK3sKKysgIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChj dXJyZW50X3Byb2dyYW1fc3BhY2UpLT5pbmhpYml0X3VwZGF0ZXMgPSAwOworK30KKysKKysvKiBT ZWUgY29tbWVudHMgaW4gb2JqZmlsZXMuaC4gICovCisrCisrdm9pZAorK3Jlc3VtZV9zZWN0aW9u X21hcF91cGRhdGVzX2NsZWFudXAgKHZvaWQgKmFyZykKKyt7CisrICByZXN1bWVfc2VjdGlvbl9t YXBfdXBkYXRlcyAoKTsKKyt9CisrCisgLyogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9y IHRoZSAiaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlciIKKyAgICBnZGJhcmNo IG1ldGhvZC4gIEl0IGlzIGVxdWl2YWxlbnQgdG8gdXNlIHRoZSBBTExfT0JKRklMRVMgbWFjcm8s CisgICAgc2VhcmNoaW5nIHRoZSBvYmpmaWxlcyBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc3RvcmVk IGludGVybmFsbHksCitJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9zb2xpYi1zdnI0 LmMJMjAxMi0wOC0xNCAxNzoyMDo0Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjkxLjIw MTIwODE0L2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wOC0xNCAxNzoyMToxNC4wOTAxNjkyMTYgKzAy MDAKK0BAIC0xODQ3LDYgKzE4NDcsNyBAQCBzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCAoYnBzdGF0 IGJzKQorICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisgICBz dHJ1Y3QgcHJvYmVfYW5kX2luZm8gYnVmLCAqcGkgPSAmYnVmOworICAgZW51bSBwcm9iZV9hY3Rp b24gYWN0aW9uOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gTlVMTDsKKyAgIHN0cnVj dCB2YWx1ZSAqdmFsOworICAgTE9OR0VTVCBsbWlkOworICAgQ09SRV9BRERSIGRlYnVnX2Jhc2Us IGxtID0gMDsKK0BAIC0xODcwLDYgKzE4NzEsMTkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQg KGJwc3RhdCBicykKKyAgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX05PX0FDVElPTikKKyAgICAg cmV0dXJuOworIAorKyAgLyogRVZBTFVBVEVfUFJPQkVfQVJHVU1FTlQgbG9va3MgdXAgc3ltYm9s cyBpbiB0aGUgZHluYW1pYyBsaW5rZXIKKysgICAgIHVzaW5nIEZJTkRfUENfU0VDVElPTi4gIEZJ TkRfUENfU0VDVElPTiBpcyBhY2NlbGVyYXRlZCBieSBhIGNhY2hlCisrICAgICBjYWxsZWQgdGhl IHNlY3Rpb24gbWFwLiAgVGhlIHNlY3Rpb24gbWFwIGlzIGludmFsaWRhdGVkIGV2ZXJ5CisrICAg ICB0aW1lIGEgc2hhcmVkIGxpYnJhcnkgaXMgbG9hZGVkIG9yIHVubG9hZGVkLCBhbmQgaWYgdGhl IGluZmVyaW9yCisrICAgICBpcyBnZW5lcmF0aW5nIGEgbG90IG9mIHNoYXJlZCBsaWJyYXJ5IGV2 ZW50cyB0aGVuIHRoZSBzZWN0aW9uIG1hcAorKyAgICAgd2lsbCBiZSB1cGRhdGVkIGV2ZXJ5IHRp bWUgU1ZSNF9IQU5ETEVfU09MSUJfRVZFTlQgaXMgY2FsbGVkLgorKyAgICAgV2UgY2FsbGVkIEZJ TkRfUENfU0VDVElPTiBpbiBTVlI0X0NSRUFURV9TT0xJQl9FVkVOVF9CUkVBS1BPSU5UUywKKysg ICAgIHNvIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0aGUgZHluYW1pYyBsaW5rZXIncyBzZWN0aW9u cyBhcmUgaW4gdGhlCisrICAgICBzZWN0aW9uIG1hcC4gIFdlIGNhbiB0aGVyZWZvcmUgaW5oaWJp dCBzZWN0aW9uIG1hcCB1cGRhdGVzIGFjcm9zcworKyAgICAgdGhlc2UgY2FsbHMgdG8gRVZBTFVB VEVfUFJPQkVfQVJHVU1FTlQgYW5kIHNhdmUgYSBsb3Qgb2YgdGltZS4gICovCisrICBpbmhpYml0 X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKCk7CisrICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAocmVz dW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCwgTlVMTCk7CisrCisgICB2YWwgPSBldmFs dWF0ZV9wcm9iZV9hcmd1bWVudCAocGktPnByb2JlLCAwKTsKKyAgIGlmICh2YWwgPT0gTlVMTCkK KyAgICAgZ290byBlcnJvcjsKK0BAIC0xOTAxLDYgKzE5MTUsOSBAQCBzdnI0X2hhbmRsZV9zb2xp Yl9ldmVudCAoYnBzdGF0IGJzKQorIAlhY3Rpb24gPSBOQU1FU1BBQ0VfUkVMT0FEOworICAgICB9 CisgCisrICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworKyAgY2xlYW51cHMgPSBOVUxMOworKwor ICAgaWYgKGFjdGlvbiA9PSBOQU1FU1BBQ0VfVVBEQVRFX09SX1JFTE9BRCkKKyAgICAgeworICAg ICAgIGlmIChuYW1lc3BhY2VfdXBkYXRlX2luY3JlbWVudGFsIChpbmZvLCBsbWlkLCBsbSwgaXNf aW5pdGlhbF9ucykpCitAQCAtMTkyMyw2ICsxOTQwLDggQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZl bnQgKGJwc3RhdCBicykKKyAgIHdhcm5pbmcgKF8oIlByb2Jlcy1iYXNlZCBkeW5hbWljIGxpbmtl ciBpbnRlcmZhY2UgZmFpbGVkLlxuIgorIAkgICAgICJSZXZlcnRpbmcgdG8gb3JpZ2luYWwgaW50 ZXJmYWNlLlxuIikpOworIAorKyAgaWYgKGNsZWFudXBzICE9IE5VTEwpCisrICAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7CisgICBmcmVlX25hbWVzcGFjZV90YWJsZSAoaW5mbyk7CisgICBmcmVl X3Byb2JlcyAoaW5mbyk7CisgICBpbmZvLT51c2luZ19wcm9iZXMgPSAwOwoKZGlmZiAtLWdpdCBh L2dkYi1kbG9wZW4tc3RhcC1wcm9iZS10ZXN0LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LXRlc3QucGF0Y2gKaW5kZXggZWZkMzY4My4uZmIyZWJkMSAxMDA2NDQKLS0tIGEvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLXRlc3QucGF0Y2gKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3Qu cGF0Y2gKQEAgLTMwNSwxMDQgKzMwNSwzIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzE0L2dk Yi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKICAgICAgcmV0dXJuICRwcmVsaW5r X2FyZ3MKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcxNC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw NzE0Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDYt MjEgMjI6NDY6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcxNC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMi0wNy0xNSAwODo1MTozOC4y NDQ3MDEyNDggKzAyMDAKLUBAIC0xMDksMTQgKzEwOSwyMSBAQCBwcm9jIHN0cmlwX2RlYnVnIHtk ZXN0fSB7Ci0gICAgIH0KLSB9Ci0gCi0rIyBGb3JtZXIgc3ltYm9sIGZvciBzb2xpYiBjaGFuZ2Vz IG5vdGlmaWNhdGlvbnMgd2FzIF9kbF9kZWJ1Z19zdGF0ZSwgbmV3ZXIgb25lCi0rIyBpcyBkbF9t YWluIChpbiBmYWN0IF9kbF9kZWJ1Z19ub3RpZnkgYnV0IGl0IGlzIGlubGluZWQgd2l0aG91dCBh bnkgZXh0cmEKLSsjIGRlYnVnIGluZm8pLCB0aGUgcmlnaHQgb25lIG9uZSB0cmFwcyBieSBgc2V0 IHN0b3Atb24tc29saWItZXZlbnRzIDEnLgotKwotK3NldCBzb2xpYl9icCB7KF9kbF9kZWJ1Z19z dGF0ZXxkbF9tYWluKX0KLSsKLSAjIEltcGxlbWVudGF0aW9uIG9mIHJlYWNoLgotIAotIHByb2Mg cmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0gewotLSAgICBnbG9iYWwgZ2RiX3By b21wdCBleHBlY3Rfb3V0Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQgc29saWJf YnAKLSAKLS0gICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rICAgIGlmIHsk ZnVuYyA9PSAkc29saWJfYnB9IHsKLSAJIyBCcmVha3BvaW50IG9uIF9kbF9kZWJ1Z19zdGF0ZSBj YW4gaGF2ZSBwcm9ibGVtcyBkdWUgdG8gaXRzIG92ZXJsYXAKLSAJIyB3aXRoIHRoZSBleGlzdGlu ZyBpbnRlcm5hbCBicmVha3BvaW50IGZyb20gR0RCLgotKwkjIFdpdGggYWxzbyBfZGxfZGVidWdf bm90aWZ5IHdlIHdvdWxkIG5lZWQgZXZlbiB0d28gYnJlYWtwb2ludHMuCi0gCWdkYl90ZXN0X25v X291dHB1dCAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDEiCi0gICAgIH0gZWxzZWlmIHshIFtn ZGJfYnJlYWtwb2ludCAkZnVuYyBhbGxvdy1wZW5kaW5nXX0gewotIAlyZXR1cm4KLUBAIC0xNDIs MjEgKzE0OSwyMSBAQCBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9Ci0g CSAgICBleHBfY29udGludWUKLSAJfQotIAktcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssIFxcLj8o X19HSV8pPyRmdW5jIFxcKC4qXFwpIGF0IC4qOlxbMC05XF0rXHJcbi4qJGdkYl9wcm9tcHQgJCIg ewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1 bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlmYWlsICR0ZXN0Ci0gCSAgICB9IGVsc2UgewotIAkJcGFz cyAkdGVzdAotIAkgICAgfQotIAl9Ci0gCS1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4 YS1mXF0rIGluIFxcLj8oX19HSV8pPyRmdW5jIFxcKFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LS0JICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRlIn0gewotKwkgICAgaWYgeyRmdW5j ID09ICRzb2xpYl9icH0gewotIAkJZmFpbCAkdGVzdAotIAkgICAgfSBlbHNlIHsKLSAJCXBhc3Mg JHRlc3QKLSAJICAgIH0KLSAJfQotIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91cyApP3No YXJlZCBsaWJyYXJ5IGV2ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYgeyRmdW5j ID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7 Ci0gCQlpZiB7JGRlYnVnX3N0YXRlX2NvdW50ID09IDB9IHsKLSAJCSAgICAjIEZpcnN0IHN0b3Ag ZG9lcyBub3QgeWV0IHJlbG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KLSAJCSAgICAjIGRlc2Ny aXB0b3Igb24gcHBjNjQuCi1AQCAtMTc1LDcgKzE4Miw3IEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBj b21tYW5kIGRpc3BsYWNlbWVudH0KLSAJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAgICAgfQot IAotLSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKLSsgICAgaWYgeyRmdW5j ID09ICRzb2xpYl9icH0gewotIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGli LWV2ZW50cyAwIgotICAgICB9Ci0gfQotQEAgLTM1Nyw3ICszNjQsNyBAQCBwcm9jIHRlc3RfYXR0 YWNoIHtmaWxlIGRpc3BsYWNlbWVudCB7cmVsCi0gfQotIAotIHByb2MgdGVzdF9sZCB7ZmlsZSBp Zm1haW4gdHJ5bm9zeW0gZGlzcGxhY2VtZW50fSB7Ci0tICAgIGdsb2JhbCBzcmNkaXIgc3ViZGly IGdkYl9wcm9tcHQgZXhwZWN0X291dCBpbmZlcmlvcl9leGl0ZWRfcmUKLSsgICAgZ2xvYmFsIHNy Y2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVyaW9yX2V4aXRlZF9yZSBzb2xp Yl9icAotIAotICAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5kIGxvYWRlZCAk RklMRSB3aXRoIHN5bWJvbHMuCi0gCi1AQCAtMzg1LDkgKzM5Miw5IEBAIHByb2MgdGVzdF9sZCB7 ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXJn cyAke29iamRpcn0vJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QiICJzZXQgYXJncyBPQkpESVIvJHtz dWJkaXJ9LyRiaW5maWxlX3Rlc3QiCi0gICAgIH0KLSAKLS0gICAgcmVhY2ggIl9kbF9kZWJ1Z19z dGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVudAotKyAgICByZWFjaCAkc29saWJfYnAgInJ1biIgJGRp c3BsYWNlbWVudAotIAotLSAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJ Xyk/X2RsX2RlYnVnX3N0YXRlXFxNLioiICJkbCBidCIKLSsgICAgZ2RiX3Rlc3QgImJ0IiAiIzAg K1xbXlxyXG5cXSpcXG0oX19HSV8pPyRzb2xpYl9icFxcTS4qIiAiZGwgYnQiCi0gCi0gICAgIGlm ICRpZm1haW4gewotIAlyZWFjaCAibWFpbiIgY29udGludWUgIk5PTkUiCi1AQCAtMzk5LDcgKzQw Niw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAKLSAgICAg IyBUcnkgcmUtcnVuIGlmIHRoZSBuZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZlY3QuCi0g ICAgIGdkYl90ZXN0ICJraWxsIiAiIiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVi dWdnZWRcPyBcKHkgb3IgblwpIH0gInkiCi0tICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiICJy dW4iICRkaXNwbGFjZW1lbnQKLSsgICAgcmVhY2ggJHNvbGliX2JwICJydW4iICRkaXNwbGFjZW1l bnQKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0gCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxhY2VtZW50 Ci1AQCAtNDMxLDcgKzQzOCw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0g ZGlzcGwKLSAJZ2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZp bGUiICJsb2FkIgotIAotIAlpZiAkaWZtYWluIHsKLS0JICAgIHJlYWNoICJfZGxfZGVidWdfc3Rh dGUiIHJ1biAkZGlzcGxhY2VtZW50Ci0rCSAgICByZWFjaCAkc29saWJfYnAgcnVuICRkaXNwbGFj ZW1lbnQKLSAKLSAJICAgICMgVXNlIHR3byBzZXBhcmF0ZSBnZGJfdGVzdF9tdWx0aXBsZSBzdGF0 ZW1lbnRzIHRvIGF2b2lkIHRpbWVvdXRzIGR1ZQotIAkgICAgIyB0byBzbG93IHByb2Nlc3Npbmcg b2Ygd2lsZGNhcmQgY2FwdHVyaW5nIGxvbmcgb3V0cHV0CgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLXRlc3QyLnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3QyLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTRmNmIKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdDIucGF0Y2gKQEAgLTAsMCArMSw2 OSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDgvbXNnMDA1 MDAuaHRtbAorU3ViamVjdDogW3BhdGNoXSB0ZXN0c3VpdGU6IE1ha2Ugc29saWItY29ycnVwdGVk LmV4cCB1bnRlc3RlZCBmb3IgcHJvYmVzICBbUmU6IFtSRkEgMC80IHRha2UgMl0gSW1wcm92ZWQg bGlua2VyLWRlYnVnZ2VyIGludGVyZmFjZV0KKworT24gRnJpLCAxNyBBdWcgMjAxMiAyMjo1Mzo1 MyArMDIwMCwgSmFuIEtyYXRvY2h2aWwgd3JvdGU6Cis+IEl0IHJlZ3Jlc3NlcyB3aXRoIGdsaWJj LWRlYnVnaW5mbyBpbnN0YWxsZWQ6Cis+IAorPiBpbmZvIHNoYXJlZGxpYnJhcnleTQorPiBGcm9t ICAgICAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgU3ltcyBSZWFkICAgU2hhcmVkIE9i amVjdCBMaWJyYXJ5Xk0KKz4gMHgwMDAwN2ZmZmY3ZGRjYjIwICAweDAwMDA3ZmZmZjdkZjYzZDkg IFllcyAgICAgICAgIC9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMl5NCis+IDB4MDAwMDdmZmZm N2FlMDViMCAgMHgwMDAwN2ZmZmY3YjRhZDc4ICBZZXMgICAgICAgICAvbGliNjQvbGlibS5zby42 Xk0KKz4gMHgwMDAwN2ZmZmY3NzQzMWEwICAweDAwMDA3ZmZmZjc4ODNjZjAgIFllcyAgICAgICAg IC9saWI2NC9saWJjLnNvLjZeTQorPiAoZ2RiKSBGQUlMOiBnZGIuYmFzZS9zb2xpYi1jb3JydXB0 ZWQuZXhwOiBjb3JydXB0ZWQgbGlzdAorPiAKKz4gQnV0IEkgZ3Vlc3MgdGhlcmUgaXMgbm8gbG9u Z2VyIGEgd2F5IHRvIHRlc3QgaXQgd2l0aCBwcm9iZXMgc28gaXQgc2hvdWxkIGp1c3QKKz4gcnVu IHNvbWUgJ2luZm8gcHJvYmVzJyBhbmQgbWFrZSB0aGlzIHRlc3QgVU5URVNURUQgaWYgcnRsZCBw cm9iZXMgYXJlCis+IGF2YWlsYWJsZS4KKworSSBoYWQgdG8gaW1wbGVtZW50IGl0IGZvciBGZWRv cmEgYWxyZWFkeSBhbnl3YXkuCisKKworUmVnYXJkcywKK0phbgorCisKK2dkYi90ZXN0c3VpdGUv CisyMDEyLTA4LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisKKwkqIGdkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHA6IE5ldyB2YXJpYWJsZSBwcm9iZXMu CisJKGluZm8gcHJvYmVzKTogTmV3IHRlc3QuCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nv bGliLWNvcnJ1cHRlZC5leHAKK2luZGV4IDg0YjNiMGMuLmM5ZjU1ZDYgMTAwNjQ0CistLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc29saWItY29ycnVwdGVkLmV4cAorQEAgLTM2LDYgKzM2LDMzIEBAIGlm ICFbcnVudG9fbWFpbl0geworICAgICByZXR1cm4KKyB9CisgCisrIyBXaXRoIHByb2JlcyBpbnRl cmZhY2UgR0RCIG5vIGxvbmdlciBzY2FucyB0aGUgaW5mZXJpb3IgbGlicmFyeSBsaXN0IHNvIGl0 cworKyMgY29ycnVwdGlvbiBjYW5ub3QgYmUgdGVzdGVkLiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRp c2FibGUgdGhlIHByb2JlcworKyMgaW50ZXJmYWNlLgorKworK3NldCBwcm9iZXMgeyBpbml0X3N0 YXJ0IGluaXRfY29tcGxldGUgbWFwX3N0YXJ0IHJlbG9jX2NvbXBsZXRlIHVubWFwX3N0YXJ0Cisr CSAgICAgdW5tYXBfY29tcGxldGUgfQorK3NldCB0ZXN0ICJpbmZvIHByb2JlcyIKKytnZGJfdGVz dF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXnJ0bGRcWyBcdFxdKyg/OnJ0bGRf KT8oXFthLXpfXF0rKVxbIFx0XF0iIHsKKysJc2V0IGlkeCBbbHNlYXJjaCAtZXhhY3QgJHByb2Jl cyAkZXhwZWN0X291dCgxLHN0cmluZyldCisrCWlmIHsgJGlkeCA+PSAwIH0geworKwkgICAgc2V0 IHByb2JlcyBbbHJlcGxhY2UgJHByb2JlcyAkaWR4ICRpZHhdCisrCX0KKysJZXhwX2NvbnRpbnVl CisrICAgIH0KKysgICAgLXJlICJeXFteXHJcblxdKlxyXG4iIHsKKysJZXhwX2NvbnRpbnVlCisr ICAgIH0KKysgICAgLXJlICJeJGdkYl9wcm9tcHQgJCIgeworKyAgICB9CisrfQorK2lmIHsgW2xs ZW5ndGggJHByb2Jlc10gPT0gMCB9IHsKKysgICAgeGZhaWwgJHRlc3QKKysgICAgdW50ZXN0ZWQg IkdEQiBpcyB1c2luZyBwcm9iZXMiCisrICAgIHJldHVybgorK30KKysKKyBnZGJfdGVzdCAiaW5m byBzaGFyZWRsaWJyYXJ5IiAiRnJvbSAqIFRvIC4qIiAibm9ybWFsIGxpc3QiCisgCisgIyBHREIg Y2hlY2tzIHRoZXJlIGZvciBtYXRjaGluZyBMX1BSRVYuCisKCmRpZmYgLS1naXQgYS9nZGItZGxv cGVuLXN0YXAtcHJvYmUucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTkyNjkuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzU3ICswLDAgQEAKLUZyb206 IEdhcnkgQmVuc29uIDxnYmVuc29uQHJlZGhhdC5jb20+Ci1UbzogSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci1NZXNzYWdlLUlEOiA8MjAxMTA4MTAxMzM2MDUuR0I3 Mjk0QHJlZGhhdC5jb20+Ci0KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAxL2dkYi9pbmZydW4u YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4MDEub3JpZy9nZGIvaW5mcnVuLmMJ MjAxMi0wOC0wMSAxODozODoyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIw ODAxL2dkYi9pbmZydW4uYwkyMDEyLTA4LTAxIDE4OjQ0OjU5LjU2ODUxODYwMiArMDIwMAotQEAg LTM2MSw2ICszNjEsMTMgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3Rp bwotIC8qIE5vbnplcm8gaWYgd2Ugd2FudCB0byBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hl biB3ZSdyZSBub3RpZmllZAotICAgIG9mIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cyBieSB0aGUgZHlu YW1pYyBsaW5rZXIuICAqLwotIGludCBzdG9wX29uX3NvbGliX2V2ZW50czsKLSsKLStzdGF0aWMg dm9pZAotK3NldF9zdG9wX29uX3NvbGliX2V2ZW50cyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5 LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSt7Ci0rICB1cGRhdGVfc29saWJfYnJlYWtw b2ludHMgKCk7Ci0rfSAKLSsKLSBzdGF0aWMgdm9pZAotIHNob3dfc3RvcF9vbl9zb2xpYl9ldmVu dHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0gCQkJICAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTcyMjksNyArNzIzNiw3 IEBAIFNob3cgc3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KLSBJZiBub256ZXJv LCBnZGIgd2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB0aGUgZHluYW1pYyBsaW5r ZXJcblwKLSBub3RpZmllcyBnZGIgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiAgVGhlIG1vc3Qg Y29tbW9uIGV2ZW50IG9mIGludGVyZXN0XG5cCi0gdG8gdGhlIHVzZXIgd291bGQgYmUgbG9hZGlu Zy91bmxvYWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwKLS0JCQkgICAgTlVMTCwKLSsJCQkgICAg c2V0X3N0b3Bfb25fc29saWJfZXZlbnRzLAotIAkJCSAgICBzaG93X3N0b3Bfb25fc29saWJfZXZl bnRzLAotIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSAKLUluZGV4OiBnZGItNy40Ljkx LjIwMTIwODAxL2dkYi9zb2xpYi1zdnI0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIw MTIwODAxLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTAxIDE4OjM4OjI0LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4 LTAxIDE4OjQ1OjEzLjQ0OTQ0MTc4NyArMDIwMAotQEAgLTQ3LDYgKzQ3LDcgQEAKLSAjaW5jbHVk ZSAiYXV4di5oIgotICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0gI2luY2x1ZGUgImdkYl9iZmQu aCIKLSsjaW5jbHVkZSAicHJvYmUuaCIKLSAKLSBzdGF0aWMgc3RydWN0IGxpbmtfbWFwX29mZnNl dHMgKnN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7Ci0gc3RhdGljIGludCBzdnI0 X2hhdmVfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7Ci1AQCAtOTMsNiArOTQsMzIgQEAgc3RhdGlj IGNvbnN0IGNoYXIgKiBjb25zdCBzb2xpYl9icmVha19uYQotICAgTlVMTAotIH07Ci0gCi0rLyog QSBsaXN0IG9mIFN5c3RlbVRhcCBwcm9iZXMgd2hpY2gsIGlmIHByZXNlbnQgaW4gdGhlIGR5bmFt aWMgbGlua2VyLAotKyAgIGFsbG93IG1vcmUgZmluZS1ncmFpbmVkIGJyZWFrcG9pbnRzIHRvIGJl IHBsYWNlZCBvbiBzaGFyZWQgbGlicmFyeQotKyAgIGV2ZW50cy4gICovCi0rCi0rc3RydWN0IHBy b2JlX2luZm8KLSsgIHsKLSsgICAgLyogVGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KLSsgICAg Y29uc3QgY2hhciAqbmFtZTsKLSsKLSsgICAgLyogTm9uemVybyBpZiB0aGlzIHByb2JlIG11c3Qg YmUgc3RvcHBlZCBhdCBldmVuIHdoZW4KLSsgICAgICAgc3RvcC1vbi1zb2xpYi1ldmVudHMgaXMg b2ZmLiAgKi8KLSsgICAgaW50IG1hbmRhdG9yeTsKLSsgIH07Ci0rCi0rc3RhdGljIGNvbnN0IHN0 cnVjdCBwcm9iZV9pbmZvIHByb2JlX2luZm9bXSA9Ci0rewotKyAgeyJydGxkX2luaXRfc3RhcnQi LCAwfSwKLSsgIHsicnRsZF9pbml0X2NvbXBsZXRlIiwgMX0sCi0rICB7InJ0bGRfbWFwX3N0YXJ0 IiwgMH0sCi0rICB7InJ0bGRfcmVsb2NfY29tcGxldGUiLCAxfSwKLSsgIHsicnRsZF91bm1hcF9z dGFydCIsIDB9LAotKyAgeyJydGxkX3VubWFwX2NvbXBsZXRlIiwgMX0sCi0rfTsKLSsKLSsjZGVm aW5lIE5VTV9QUk9CRVMgKHNpemVvZihwcm9iZV9pbmZvKSAvIHNpemVvZihwcm9iZV9pbmZvWzBd KSkKLSsKLSBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJrcHRfbmFtZXNbXSA9Ci0gewotICAg Il9zdGFydCIsCi1AQCAtMzE0LDYgKzM0MSwxMiBAQCBzdHJ1Y3Qgc3ZyNF9pbmZvCi0gICBDT1JF X0FERFIgaW50ZXJwX3RleHRfc2VjdF9oaWdoOwotICAgQ09SRV9BRERSIGludGVycF9wbHRfc2Vj dF9sb3c7Ci0gICBDT1JFX0FERFIgaW50ZXJwX3BsdF9zZWN0X2hpZ2g7Ci0rCi0rICAvKiBTeXN0 ZW1UYXAgcHJvYmVzLiAgKi8KLSsgIFZFQyAocHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsK LSsKLSsgIC8qIE5vbnplcm8gaWYgd2UgYXJlIHVzaW5nIHRoZSBTeXN0ZW1UYXAgaW50ZXJmYWNl LiAgKi8KLSsgIGludCB1c2luZ19wcm9iZXM7Ci0gfTsKLSAKLSAvKiBQZXItcHJvZ3JhbS1zcGFj ZSBkYXRhIGtleS4gICovCi1AQCAtMzIzLDggKzM1NiwxNSBAQCBzdGF0aWMgdm9pZAotIHN2cjRf cHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAq YXJnKQotIHsKLSAgIHN0cnVjdCBzdnI0X2luZm8gKmluZm87Ci0rICBpbnQgaTsKLSAKLSAgIGlu Zm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2VfZGF0YSk7 Ci0rICBpZiAoaW5mbyA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBmb3IgKGkgPSAwOyBp IDwgTlVNX1BST0JFUzsgaSsrKQotKyAgICBWRUNfZnJlZSAocHJvYmVfcCwgaW5mby0+cHJvYmVz W2ldKTsKLSsKLSAgIHhmcmVlIChpbmZvKTsKLSB9Ci0gCi1AQCAtMTQ1MCw2ICsxNDkwLDEyNiBA QCBleGVjX2VudHJ5X3BvaW50IChzdHJ1Y3QgYmZkICphYmZkLCBzdHJ1Ci0gCQkJCQkgICAgIHRh cmcpOwotIH0KLSAKLSsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHN2cjRfdXBkYXRlX3NvbGliX2V2 ZW50X2JyZWFrcG9pbnRzLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3ZyNF91cGRhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIHZvaWQgKmFyZykKLSt7Ci0r ICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLSsgIHN0cnVjdCBi cF9sb2NhdGlvbiAqbG9jOwotKwotKyAgaWYgKGItPnR5cGUgIT0gYnBfc2hsaWJfZXZlbnQpCi0r ICAgIHJldHVybiAwOwotKwotKyAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5u ZXh0KQotKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IE5V TV9QUk9CRVM7IGkrKykKLSsJewotKwkgIGlmICghcHJvYmVfaW5mb1tpXS5tYW5kYXRvcnkpCi0r CSAgICB7Ci0rCSAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0rCSAgICAgIGludCBpeDsKLSsK LSsJICAgICAgZm9yIChpeCA9IDA7Ci0rCQkgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgaW5mby0+ cHJvYmVzW2ldLCBpeCwgcHJvYmUpOwotKwkJICAgKytpeCkKLSsJCXsKLSsJCSAgaWYgKGxvYy0+ cHNwYWNlID09IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZQotKwkJICAgICAgJiYgbG9jLT5hZGRyZXNz ID09IHByb2JlLT5hZGRyZXNzKQotKwkJICAgIHsKLSsJCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9 Ci0rCQkJc3RvcF9vbl9zb2xpYl9ldmVudHMgPyBicF9lbmFibGVkIDogYnBfZGlzYWJsZWQ7Ci0r CQkgICAgICByZXR1cm4gMDsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQot KwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNv bGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLgotKyAgIENhbGxlZCB3aGVuZXZl ciBzdG9wX29uX3NvbGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAot K3N2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh2b2lkKQotK3sKLSsgIHN0cnVj dCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotKwotKyAgaWYgKGluZm8tPnVz aW5nX3Byb2JlcykKLSsgICAgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChzdnI0X3VwZGF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50LCBOVUxMKTsKLSt9Ci0rCi0rLyogQm90aCB0aGUgU3VuT1Mg YW5kIHRoZSBTVlI0IGR5bmFtaWMgbGlua2VycyBjYWxsIGEgbWFya2VyIGZ1bmN0aW9uCi0rICAg YmVmb3JlIGFuZCBhZnRlciBtYXBwaW5nIGFuZCB1bm1hcHBpbmcgc2hhcmVkIGxpYnJhcmllcy4g IFRoZSBzb2xlCi0rICAgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBhbGxvdyBkZWJ1Z2dl cnMgdG8gc2V0IGEgYnJlYWtwb2ludCBzbwotKyAgIHRoZXkgY2FuIHRyYWNrIHRoZXNlIGNoYW5n ZXMuCi0rCi0rICAgU29tZSB2ZXJzaW9ucyBvZiB0aGUgZ2xpYmMgZHluYW1pYyBsaW5rZXIgY29u dGFpbiBTeXN0ZW1UYXAgcHJvYmVzCi0rICAgdG8gYWxsb3cgbW9yZSBmaW5lIGdyYWluZWQgc3Rv cHBpbmcuICBHaXZlbiB0aGUgYWRkcmVzcyBvZiB0aGUKLSsgICBvcmlnaW5hbCBtYXJrZXIgZnVu Y3Rpb24sIHRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gZmluZCB0aGVzZQotKyAgIHByb2Jlcywg YW5kIGlmIGZvdW5kLCBzZXRzIGJyZWFrcG9pbnRzIG9uIHRob3NlIGluc3RlYWQuICBJZiB0aGUK LSsgICBwcm9iZXMgYXJlbid0IGZvdW5kLCBhIHNpbmdsZSBicmVha3BvaW50IGlzIHNldCBvbiB0 aGUgb3JpZ2luYWwKLSsgICBTVlI0IG1hcmtlciBmdW5jdGlvbi4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBhZGRyZXNzKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmlu Zm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotKyAgc3RydWN0IG9ial9zZWN0aW9uICpvczsKLSsKLSsg IG9zID0gZmluZF9wY19zZWN0aW9uIChhZGRyZXNzKTsKLSsgIGlmIChvcyAhPSBOVUxMKQotKyAg ICB7Ci0rICAgICAgaW50IGFsbF9wcm9iZXNfZm91bmQgPSAxOwotKyAgICAgIGludCBpOwotKwot KyAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rCXsKLSsJICBpbmZvLT5w cm9iZXNbaV0gPSBmaW5kX3Byb2Jlc19pbl9vYmpmaWxlIChvcy0+b2JqZmlsZSwgInJ0bGQiLAot KwkJCQkJCSAgICBwcm9iZV9pbmZvW2ldLm5hbWUpOwotKwotKwkgIGlmICghVkVDX2xlbmd0aChw cm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0pKQotKwkgICAgewotKwkgICAgICBpbnQgajsKLSsKLSsJ ICAgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKQotKwkJewotKwkJICBWRUNfZnJlZSAo cHJvYmVfcCwgaW5mby0+cHJvYmVzW2pdKTsKLSsJCSAgaW5mby0+cHJvYmVzW2pdID0gTlVMTDsK LSsJCX0KLSsKLSsJICAgICAgYWxsX3Byb2Jlc19mb3VuZCA9IDA7Ci0rCSAgICAgIGJyZWFrOwot KwkgICAgfQotKwl9Ci0rCi0rICAgICAgaWYgKGFsbF9wcm9iZXNfZm91bmQpCi0rCXsKLSsJICBp bmZvLT51c2luZ19wcm9iZXMgPSAxOwotKwotKwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVT OyBpKyspCi0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0rCSAgICAgIGlu dCBpeDsKLSsKLSsJICAgICAgZm9yIChpeCA9IDA7Ci0rCQkgICBWRUNfaXRlcmF0ZSAocHJvYmVf cCwgaW5mby0+cHJvYmVzW2ldLCBpeCwgcHJvYmUpOwotKwkJICAgKytpeCkKLSsJCWNyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50IChnZGJhcmNoLCBwcm9iZS0+YWRkcmVzcyk7Ci0rCSAgICB9 Ci0rCi0rCSAgc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7Ci0rCSAgcmV0 dXJuOwotKwl9Ci0rICAgIH0KLSsKLSsgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChn ZGJhcmNoLCBhZGRyZXNzKTsKLSt9Ci0rCi0gLyogSGVscGVyIGZ1bmN0aW9uIGZvciBnZGJfYmZk X2xvb2t1cF9zeW1ib2wuICAqLwotIAotIHN0YXRpYyBpbnQKLUBAIC0xNDk4LDEwICsxNjU4LDE4 IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAgIGFzZWN0aW9u ICppbnRlcnBfc2VjdDsKLSAgIGdkYl9ieXRlICppbnRlcnBfbmFtZTsKLSAgIENPUkVfQUREUiBz eW1fYWRkcjsKLSsgIGludCBpOwotIAotICAgaW5mby0+aW50ZXJwX3RleHRfc2VjdF9sb3cgPSBp bmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2ggPSAwOwotICAgaW5mby0+aW50ZXJwX3BsdF9zZWN0 X2xvdyA9IGluZm8tPmludGVycF9wbHRfc2VjdF9oaWdoID0gMDsKLSAKLSsgIGZvciAoaSA9IDA7 IGkgPCBOVU1fUFJPQkVTOyBpKyspCi0rICAgIHsKLSsgICAgICBWRUNfZnJlZSAocHJvYmVfcCwg aW5mby0+cHJvYmVzW2ldKTsKLSsgICAgICBpbmZvLT5wcm9iZXNbaV0gPSBOVUxMOwotKyAgICB9 Ci0rICBpbmZvLT51c2luZ19wcm9iZXMgPSAwOwotKwotICAgLyogSWYgd2UgYWxyZWFkeSBoYXZl IGEgc2hhcmVkIGxpYnJhcnkgbGlzdCBpbiB0aGUgdGFyZ2V0LCBhbmQKLSAgICAgIHJfZGVidWcg Y29udGFpbnMgcl9icmssIHNldCB0aGUgYnJlYWtwb2ludCB0aGVyZSAtIHRoaXMgc2hvdWxkCi0g ICAgICBtZWFuIHJfYnJrIGhhcyBhbHJlYWR5IGJlZW4gcmVsb2NhdGVkLiAgQXNzdW1lIHRoZSBk eW5hbWljIGxpbmtlcgotQEAgLTE1MzMsNyArMTcwMSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0 IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAJIFRoYXQga25vd2xlZGdlIGlzIGVuY29kZWQgaW4gdGhl IGFkZHJlc3MsIGlmIGl0J3MgVGh1bWIgdGhlIGxvdyBiaXQKLSAJIGlzIDEuICBIb3dldmVyLCB3 ZSd2ZSBzdHJpcHBlZCB0aGF0IGluZm8gYWJvdmUgYW5kIGl0J3Mgbm90IGNsZWFyCi0gCSB3aGF0 IGFsbCB0aGUgY29uc2VxdWVuY2VzIGFyZSBvZiBwYXNzaW5nIGEgbm9uLWFkZHJfYml0c19yZW1v dmUnZAotLQkgYWRkcmVzcyB0byBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludC4gIFRoZSBj YWxsIHRvCi0rCSBhZGRyZXNzIHRvIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRz LiAgVGhlIGNhbGwgdG8KLSAJIGZpbmRfcGNfc2VjdGlvbiB2ZXJpZmllcyB3ZSBrbm93IGFib3V0 IHRoZSBhZGRyZXNzIGFuZCBoYXZlIHNvbWUKLSAJIGhvcGUgb2YgY29tcHV0aW5nIHRoZSByaWdo dCBraW5kIG9mIGJyZWFrcG9pbnQgdG8gdXNlICh2aWEKLSAJIHN5bWJvbCBpbmZvKS4gIEl0IGRv ZXMgbWVhbiB0aGF0IEdEQiBuZWVkcyB0byBiZSBwb2ludGVkIGF0IGEKLUBAIC0xNTcxLDcgKzE3 MzksNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCQkrIGJm ZF9zZWN0aW9uX3NpemUgKHRtcF9iZmQsIGludGVycF9zZWN0KTsKLSAJICAgIH0KLSAKLS0JICBj cmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsK LSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gs IHN5bV9hZGRyKTsKLSAJICByZXR1cm4gMTsKLSAJfQotICAgICB9Ci1AQCAtMTcyOSw3ICsxODk3 LDggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgotIAotICAgICAg IGlmIChzeW1fYWRkciAhPSAwKQotIAl7Ci0tCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9p bnQgKHRhcmdldF9nZGJhcmNoLCBsb2FkX2FkZHIgKyBzeW1fYWRkcik7Ci0rCSAgc3ZyNF9jcmVh dGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLAotKwkJCQkJICAgICAg IGxvYWRfYWRkciArIHN5bV9hZGRyKTsKLSAJICB4ZnJlZSAoaW50ZXJwX25hbWUpOwotIAkgIHJl dHVybiAxOwotIAl9Ci1AQCAtMTc1NSw3ICsxOTI0LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvLCBpbgotIAkgIHN5bV9hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21f ZnVuY19wdHJfYWRkciAodGFyZ2V0X2dkYmFyY2gsCi0gCQkJCQkJCSBzeW1fYWRkciwKLSAJCQkJ CQkJICZjdXJyZW50X3RhcmdldCk7Ci0tCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQg KHRhcmdldF9nZGJhcmNoLCBzeW1fYWRkcik7Ci0rCSAgc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRf YnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLCBzeW1fYWRkcik7Ci0gCSAgcmV0dXJuIDE7Ci0g CX0KLSAgICAgfQotQEAgLTE3NzEsNyArMTk0MCw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2 cjRfaW5mbyAqaW5mbywgaW4KLSAJICAgICAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyICh0YXJnZXRfZ2RiYXJjaCwKLSAJCQkJCQkJICAgICBzeW1fYWRkciwK LSAJCQkJCQkJICAgICAmY3VycmVudF90YXJnZXQpOwotLQkgICAgICBjcmVhdGVfc29saWJfZXZl bnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKLSsJICAgICAgc3ZyNF9j cmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLCBzeW1fYWRkcik7 Ci0gCSAgICAgIHJldHVybiAxOwotIAkgICAgfQotIAl9Ci1AQCAtMjU0Nyw0ICsyNzE2LDUgQEAg X2luaXRpYWxpemVfc3ZyNF9zb2xpYiAodm9pZCkKLSAgIHN2cjRfc29fb3BzLmxvb2t1cF9saWJf Z2xvYmFsX3N5bWJvbCA9IGVsZl9sb29rdXBfbGliX3N5bWJvbDsKLSAgIHN2cjRfc29fb3BzLnNh bWUgPSBzdnI0X3NhbWU7Ci0gICBzdnI0X3NvX29wcy5rZWVwX2RhdGFfaW5fY29yZSA9IHN2cjRf a2VlcF9kYXRhX2luX2NvcmU7Ci0rICBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMgPSBz dnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50czsKLSB9Ci1JbmRleDogZ2RiLTcuNC45 MS4yMDEyMDgwMS9nZGIvc29saWIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4 MDEub3JpZy9nZGIvc29saWIuYwkyMDEyLTA4LTAxIDE4OjM4OjI0LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3NvbGliLmMJMjAxMi0wOC0wMSAxODo0NDo1OS41 NzM1MTg1NzIgKzAyMDAKLUBAIC0xMjI2LDYgKzEyMjYsMTggQEAgbm9fc2hhcmVkX2xpYnJhcmll cyAoY2hhciAqaWdub3JlZCwgaW50Ci0gICBvYmpmaWxlX3B1cmdlX3NvbGlicyAoKTsKLSB9Ci0g Ci0rLyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMg YXMgYXBwcm9wcmlhdGUuICAqLwotKwotK3ZvaWQKLSt1cGRhdGVfc29saWJfYnJlYWtwb2ludHMg KHZvaWQpCi0rewotKyAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFy Z2V0X2dkYmFyY2gpOwotKwotKyAgaWYgKG9wcy0+dXBkYXRlX2JyZWFrcG9pbnRzICE9IE5VTEwp Ci0rICAgIG9wcy0+dXBkYXRlX2JyZWFrcG9pbnRzICgpOwotK30KLSsgIAotKwotIC8qIFJlbG9h ZCBzaGFyZWQgbGlicmFyaWVzLCBidXQgYXZvaWQgcmVsb2FkaW5nIHRoZSBzYW1lIHN5bWJvbCBm aWxlCi0gICAgd2UgYWxyZWFkeSBoYXZlIGxvYWRlZC4gICovCi0gCi1JbmRleDogZ2RiLTcuNC45 MS4yMDEyMDgwMS9nZGIvc29saWIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4 MDEub3JpZy9nZGIvc29saWIuaAkyMDEyLTAyLTAzIDE2OjE5OjM3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3NvbGliLmgJMjAxMi0wOC0wMSAxODo0NDo1OS41 NzQ1MTg1NjYgKzAyMDAKLUBAIC05MSw0ICs5MSw4IEBAIGV4dGVybiBDT1JFX0FERFIgZ2RiX2Jm ZF9sb29rdXBfc3ltYm9sX2YKLSAJCQkJCQkJCSAgICAgIHZvaWQgKiksCi0gCQkJCQkJICAgIHZv aWQgKmRhdGEpOwotIAotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50 IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KLSsKLStleHRlcm4gdm9pZCB1cGRhdGVf c29saWJfYnJlYWtwb2ludHMgKHZvaWQpOwotKwotICNlbmRpZiAvKiBTT0xJQl9IICovCi1JbmRl eDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc29saXN0LmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjkxLjIwMTIwODAxLm9yaWcvZ2RiL3NvbGlzdC5oCTIwMTItMDEtMDQgMDk6MTc6MTEuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc29saXN0LmgJMjAxMi0w OC0wMSAxODo0NDo1OS41NzQ1MTg1NjYgKzAyMDAKLUBAIC0xNDksNiArMTQ5LDEzIEBAIHN0cnVj dCB0YXJnZXRfc29fb3BzCi0gICAgICAgIGNvcmUgZmlsZSAoaW4gcGFydGljdWxhciwgZm9yIHJl YWRvbmx5IHNlY3Rpb25zKS4gICovCi0gICAgIGludCAoKmtlZXBfZGF0YV9pbl9jb3JlKSAoQ09S RV9BRERSIHZhZGRyLAotIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Ci0rCi0rICAgIC8q IEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzCi0r ICAgICAgIGFwcHJvcHJpYXRlLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyCi0rICAg ICAgIHN0b3Bfb25fc29saWJfZXZlbnRzIGlzIGNoYW5nZWQuICBUaGlzIHBvaW50ZXIgY2FuIGJl Ci0rICAgICAgIE5VTEwsIGluIHdoaWNoIGNhc2Ugbm8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGlz IG5lY2Vzc2FyeQotKyAgICAgICBmb3IgdGhpcyB0YXJnZXQuICAqLwotKyAgICB2b2lkICgqdXBk YXRlX2JyZWFrcG9pbnRzKSAodm9pZCk7Ci0gICB9OwotIAotIC8qIEZyZWUgdGhlIG1lbW9yeSBh c3NvY2lhdGVkIHdpdGggYSAoc29fbGlzdCAqKS4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMg Yi9nZGIuc3BlYwppbmRleCA3M2RmNzBlLi5hOTE1YzM4IDEwMDY0NAotLS0gYS9nZGIuc3BlYwor KysgYi9nZGIuc3BlYwpAQCAtMjcsMjAgKzI3LDIwIEBACiBTdW1tYXJ5OiBBIEdOVSBzb3VyY2Ut bGV2ZWwgZGVidWdnZXIgZm9yIEMsIEMrKywgRm9ydHJhbiwgR28gYW5kIG90aGVyIGxhbmd1YWdl cwogTmFtZTogJXs/c2NsX3ByZWZpeH1nZGIKIAotJWdsb2JhbCBzbmFwICAgICAgIDIwMTIwODAx Ci0jIFNlZSB0ZW1wc3RhbXAgb2Ygc291cmNlIGdudWxpYiBpbnN0YWxsZWQgaW50byBnZGIvZ251 bGliLyAuCislZ2xvYmFsIHNuYXAgICAgICAgMjAxMjA4MTcKKyMgU2VlIHRpbWVzdGFtcCBvZiBz b3VyY2UgZ251bGliIGluc3RhbGxlZCBpbnRvIGdkYi9nbnVsaWIvIC4KICVnbG9iYWwgc25hcGdu dWxpYiAyMDEyMDYyMwotVmVyc2lvbjogNy40LjkxLiV7c25hcH0KK1ZlcnNpb246IDcuNQogCiAj IFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBz dGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0 YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJl bGVhc2U6IDE4JXs/ZGlzdH0KK1JlbGVhc2U6IDE5JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMr IGFuZCBHUEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4 Y2VwdGlvbnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbgog R3JvdXA6IERldmVsb3BtZW50L0RlYnVnZ2VycwogIyBEbyBub3QgcHJvdmlkZSBVUkwgZm9yIHNu YXBzaG90cyBhcyB0aGUgZmlsZSBsYXN0cyB0aGVyZSBvbmx5IGZvciAyIGRheXMuCiAjIGZ0cDov L3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvcmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6Mgot U291cmNlOiBnZGItJXt2ZXJzaW9ufS50YXIuYnoyCitTb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUu b3JnL3B1Yi9nZGIvcmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgogQnVpbGRyb290OiAl KG1rdGVtcCAtdWQgJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0tWFhY WFhYKQogVVJMOiBodHRwOi8vZ251Lm9yZy9zb2Z0d2FyZS9nZGIvCiAKQEAgLTUxMiw4ICs1MTIs MTUgQEAgUGF0Y2g1Nzk6IGdkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2Vu LWRlYnVnLWZpbGVzLnBhdGNoCiAKICMgRml4IGRsb3BlbiBvZiBsaWJwdGhyZWFkLnNvLCBwYXRj aGVkIGdsaWJjIHJlcXVpcmVkIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4KICM9cHVzaAotUGF0 Y2g2MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS5wYXRjaAorUGF0Y2g2MTg6IGdkYi1kbG9wZW4t c3RhcC1wcm9iZS0xb2Y3LnBhdGNoCitQYXRjaDcxNzogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJv ZjcucGF0Y2gKK1BhdGNoNzE4OiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtM29mNy5wYXRjaAorUGF0 Y2g3MTk6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y3LnBhdGNoCitQYXRjaDcyMDogZ2RiLWRs b3Blbi1zdGFwLXByb2JlLTVvZjcucGF0Y2gKK1BhdGNoNzIxOiBnZGItZGxvcGVuLXN0YXAtcHJv YmUtNm9mNy5wYXRjaAorUGF0Y2g3MjI6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y3LnBhdGNo CiBQYXRjaDYxOTogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLXRlc3QucGF0Y2gKK1BhdGNoNzIzOiBn ZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdDIucGF0Y2gKIAogIyBXb3JrIGFyb3VuZCBQUiBsaWJj LzEzMDk3ICJsaW51eC12ZHNvLnNvLjEiIHdhcm5pbmcgbWVzc2FnZS4KICM9cHVzaApAQCAtODQ4 LDYgKzg1NSwxMyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4 cC5jIGdkYi9wLWV4cC5jIGdkYi9nby1leHAuYwogJXBhdGNoNTQ4IC1wMQogJXBhdGNoNTc5IC1w MQogJXBhdGNoNjE4IC1wMQorJXBhdGNoNzE3IC1wMQorJXBhdGNoNzE4IC1wMQorJXBhdGNoNzE5 IC1wMQorJXBhdGNoNzIwIC1wMQorJXBhdGNoNzIxIC1wMQorJXBhdGNoNzIyIC1wMQorJXBhdGNo NzIzIC1wMQogJXBhdGNoNjE5IC1wMQogJXBhdGNoNjI3IC1wMQogJXBhdGNoNjM0IC1wMQpAQCAt MTM1NSw3ICsxMzY5LDExIEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNToxfSB8fCAiJXtfdGFyZ2V0 X2NwdX0iID09ICJub2FyY2giCiAKICVjaGFuZ2Vsb2cKLSogRnJpIEF1ZyAxNyAyMDEyIEphbiBL cmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC45MS4yMDEyMDgwMS0x OAorKiBTYXQgQXVnIDE4IDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy41LTE5LmZjMTgKKy0gUmViYXNlIHRvIEZTRiBHREIgNy41LgorLSBVcGRhdGUg ZGxvcGVuIHRvIHN1cHBvcnQgdHdvIHZhcmlhbnRzIG9mIGdsaWJjIChHYXJ5IEJlbnNvbiwgQlog NjY5NDMyKS4KKworKiBGcmkgQXVnIDE3IDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNy40LjkxLjIwMTIwODAxLTE4LmZjMTgKIC0gRHJvcCBTb3VyY2Ug VVJMIGZvciBzbmFwc2hvdHMuCiAtIFNlcGFyYXRlICUle3NuYXBnbnVsaWJ9IGZyb20gJSV7c25h cH0uCiAtIEZpeCAlJXtsaWJzdGRjeHhweXRob259IHRvIGJlICUle25hbWV9LXByZWZpeGVkLgpA QCAtMTM2MywxMSArMTM4MSwxMSBAQCBmaQogLSBJbmNsdWRlIFJIRUwtNSBjb21wYXRpYmxlICUl e2J1aWxkcm9vdH0gY2xlYW51cC4KIC0gVXNlICUlX19nbG9iYWxfbGRmbGFncy4KIAotKiBXZWQg QXVnICAxIDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0g Ny40LjkxLjIwMTIwODAxLTE3CisqIFdlZCBBdWcgIDEgMjAxMiBKYW4gS3JhdG9jaHZpbCA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjQuOTEuMjAxMjA4MDEtMTcuZmMxOAogLSBSZWJh c2UgdG8gRlNGIEdEQiA3LjQuOTEuMjAxMjA4MDEuCiAtIFtkd3pdIFJlYmFzZSBpdCBmcm9tIEZT RiBHREIgSEVBRC4KIAotKiBUaHUgSnVsIDE5IDIwMTIgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJp bmcgPHJlbC1lbmdAbGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gNy40LjUwLjIwMTIwNzE0LTE2 CisqIFRodSBKdWwgMTkgMjAxMiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0Bs aXN0cy5mZWRvcmFwcm9qZWN0Lm9yZz4gLSA3LjQuNTAuMjAxMjA3MTQtMTYuZmMxOAogLSBSZWJ1 aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzE4X01hc3NfUmVi dWlsZAogCiAqIE1vbiBKdWwgMTYgMjAxMiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4gLSA3LjQuNTAuMjAxMjA3MTQtMTUuZmMxOAoKZGlmZiAtLWdpdCBhL3NvdXJj ZXMgYi9zb3VyY2VzCmluZGV4IDFlOTQ0YWYuLjQ1Yjk2MGQgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMK KysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDQ5ODEzMDdhYTk2MTliYmVjNWI3MzI2MWU0 ZTQxYzhkICBnZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLWVkNDJlZTk1 YjdhMTE0NTUxMDk0Yzg0ZWU0MTkyNjQzICBnZGItNy40LjkxLjIwMTIwODAxLnRhci5iejIKKzI0 YTY3NzlhOWZlMDI2MDY2NzcxMGRlMWIwODJlZjYxICBnZGItNy41LnRhci5iejIK