From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - Upgrade to the FSF GDB snapshot: 7.0.50.20100116 Date: Thu, 23 Jul 2026 18:29:19 GMT Message-ID: <178483135976.1.16372659607866544499.rpms-gdb-8c4c91efd97a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 8c4c91efd97a1be5b8b19a449c10c776485ade2e ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogOGM0YzkxZWZkOTdhMWJlNWI4YjE5YTQ0OWMxMGM3NzY0ODVhZGUyZQog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMTZUMjI6MzI6MTArMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzY0ODEvLTE4MzgzIGluIDQ1IGZpbGUocykKICAgICAgICAgICAg VVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy84YzRjOTFl ZmQ5N2ExYmU1YjhiMTlhNDQ5YzEwYzc3NjQ4NWFkZTJlP2JyYW5jaD1maXgtZHVwLXBhdGNoCgog ICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIC0gVXBncmFkZSB0byB0aGUgRlNGIEdEQiBzbmFw c2hvdDogNy4wLjUwLjIwMTAwMTE2Ci0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTMgY29t bWl0OgogICAgODE4MTBhMjBiMmQyYzNiZjE4ZTE1MWRlM2NkZGZjOTY0NDViM2M0NgotIFtleHBy LWN1bXVsYXRpdmVdIEFyY2hlciBicmFuY2ggaXMgbWlzc2luZyBpbiB0aGlzIHJlbGVhc2UuCi0g VXBkYXRlIHJwbS5vcmcjNzYgd29ya2Fyb3VuZCBmb3IgcnBtLTQuOCB1c2luZyBsaWJycG0uc28u MS4KLSBEaXNzZWN0IGFyY2hlci1qYW5rcmF0b2NodmlsLW1pc2MgaW50byBQYXRjaDQwMy4uLlBh dGNoNDA4LgotIFNvbWUgcmVncmVzc2lvbnMgZXhpc3QgaW4gdGhpcyByZWxlYXNlLgoKLS0tCmRp ZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2c2lnbm9yZQppbmRleCBjNWM4MDQ2Li42NWUyNTM2 IDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisrKyBiLy5jdnNpZ25vcmUKQEAgLTEsMiArMSwyIEBA Ci1nZGItNy4wLjEudGFyLmJ6MgorZ2RiLTcuMC41MC4yMDEwMDExNi50YXIuYnoyCiBsaWJzdGRj KystdjMtcHl0aG9uLXIxNTE3OTgudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtbGFyZ2Ut Y29yZS0yMDA1MTIwNi5wYXRjaCBiL2dkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5wYXRjaApp bmRleCAyODc2Yjc1Li42Zjk0NDAyIDEwMDY0NAotLS0gYS9nZGItNi4zLWxhcmdlLWNvcmUtMjAw NTEyMDYucGF0Y2gKKysrIGIvZ2RiLTYuMy1sYXJnZS1jb3JlLTIwMDUxMjA2LnBhdGNoCkBAIC0y NSwxMSArMjUsMTEgQEAKIAogCVBvcnQgdG8gR0RCLTYuNy4KIAotSW5kZXg6IGdkYi02LjguNTAu MjAwOTA5MDkvZ2RiL3N5bWZpbGUtbWVtLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9zeW1maWxlLW1lbS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmln L2dkYi9zeW1maWxlLW1lbS5jCTIwMDktMDctMDIgMTk6MjE6MDYuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS1tZW0uYwkyMDA5LTA5LTA5IDE5OjA2 OjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTU2LDYgKzU2LDE0IEBACistLS0gZ2RiLTcuMC41MC4y MDEwMDExNS5vcmlnL2dkYi9zeW1maWxlLW1lbS5jCTIwMTAtMDEtMDEgMDg6MzE6NDIuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS1tZW0uYwkyMDEw LTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTU3LDYgKzU3LDE0IEBACiAgI2lu Y2x1ZGUgImVsZi9jb21tb24uaCIKICAKICAKQEAgLTQ0LDcgKzQ0LDcgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUtbWVtLmMKICAvKiBSZWFkIGluZmVyaW9yIG1lbW9y eSBhdCBBRERSIHRvIGZpbmQgdGhlIGhlYWRlciBvZiBhIGxvYWRlZCBvYmplY3QgZmlsZQogICAg IGFuZCByZWFkIGl0cyBpbi1jb3JlIHN5bWJvbHMgb3V0IG9mIGluZmVyaW9yIG1lbW9yeS4gIFRF TVBMIGlzIGEgYmZkCiAgICAgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQncyBmb3JtYXQuICBOQU1F IGlzIHRoZSBuYW1lIHRvIHVzZSBmb3IgdGhpcwotQEAgLTc2LDcgKzg0LDcgQEAgc3ltYm9sX2Zp bGVfYWRkX2Zyb21fbWVtb3J5IChzdHJ1Y3QgYmZkIAorQEAgLTc3LDcgKzg1LDcgQEAgc3ltYm9s X2ZpbGVfYWRkX2Zyb21fbWVtb3J5IChzdHJ1Y3QgYmZkIAogICAgICBlcnJvciAoXygiYWRkLXN5 bWJvbC1maWxlLWZyb20tbWVtb3J5IG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgdGFyZ2V0IikpOwog IAogICAgbmJmZCA9IGJmZF9lbGZfYmZkX2Zyb21fcmVtb3RlX21lbW9yeSAodGVtcGwsIGFkZHIs ICZsb2FkYmFzZSwKQEAgLTUzLDEwICs1MywxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkw OS9nZGIvc3ltZmlsZS1tZW0uYwogICAgaWYgKG5iZmQgPT0gTlVMTCkKICAgICAgZXJyb3IgKF8o IkZhaWxlZCB0byByZWFkIGEgdmFsaWQgb2JqZWN0IGZpbGUgaW1hZ2UgZnJvbSBtZW1vcnkuIikp OwogIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3RhcmdldC5jCitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUw LjIwMDkwOTA5Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMDktMDktMDkgMTk6MDU6NTYuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0LmMJMjAwOS0wOS0wOSAx OTowODoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L3RhcmdldC5jCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAg KzAxMDAKIEBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBpbnQgbm9zeW1ib2wgKGNoYXIgKiwgQ09S RV9BRERSICoKICAKICBzdGF0aWMgdm9pZCB0Y29tcGxhaW4gKHZvaWQpIEFUVFJfTk9SRVRVUk47 CkBAIC02Niw3ICs2Niw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90YXJnZXQu YwogIAogIHN0YXRpYyBpbnQgcmV0dXJuX3plcm8gKHZvaWQpOwogIAotQEAgLTQ5Miw3ICs0OTIs NyBAQCB0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKHZvaWQpCitAQCAtNDk0LDcgKzQ5NCw3IEBA IHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAodm9pZCkKICAgICgqY3VycmVudF90YXJnZXQudG9f dGVybWluYWxfaW5mZXJpb3IpICgpOwogIH0KICAKQEAgLTc1LDcgKzc1LDcgQEAgSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA5MDkvZ2RiL3RhcmdldC5jCiAgbm9tZW1vcnkgKENPUkVfQUREUiBtZW1h ZGRyLCBjaGFyICpteWFkZHIsIGludCBsZW4sIGludCB3cml0ZSwKICAJICBzdHJ1Y3QgdGFyZ2V0 X29wcyAqdCkKICB7Ci1AQCAtNzExLDcgKzcxMSw3IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAo dm9pZCkKK0BAIC03MjYsNyArNzI2LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQog IAkgICAgKHZvaWQgKCopIChzdHJ1Y3QgcmVnY2FjaGUgKikpCiAgCSAgICBub3Byb2Nlc3MpOwog ICAgZGVfZmF1bHQgKGRlcHJlY2F0ZWRfeGZlcl9tZW1vcnksCkBAIC04NCw3ICs4NCw3IEBAIElu ZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90YXJnZXQuYwogIAkgICAgbm9tZW1vcnkpOwog ICAgZGVfZmF1bHQgKHRvX2ZpbGVzX2luZm8sCiAgCSAgICAodm9pZCAoKikgKHN0cnVjdCB0YXJn ZXRfb3BzICopKQotQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHRhcmdldF94ZmVyX3BhcnRpYWwgKHN0 cnVjdCB0YXJnZXRfb3BzICoKK0BAIC0xNDk3LDcgKzE0OTcsNyBAQCB0YXJnZXRfeGZlcl9wYXJ0 aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqCiAgICAgaXQgbWFrZXMgbm8gcHJvZ3Jlc3MsIGFuZCB0 aGVuIHJldHVybiBob3cgbXVjaCB3YXMgdHJhbnNmZXJyZWQpLiAqLwogIAogIGludApAQCAtOTMs NyArOTMsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0LmMKICB7CiAg ICAvKiBEaXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUgZmxhdHRlbmVkIGN1 cnJlbnRfdGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRhcmdldC0+dG9faGFz XyhhbGxfKW1lbW9yeSwgYW5kIHRoZQotQEAgLTE0NTksNyArMTQ1OSw3IEBAIHRhcmdldF9yZWFk X21lbW9yeSAoQ09SRV9BRERSIG1lbWFkZHIsIGcKK0BAIC0xNTEzLDcgKzE1MTMsNyBAQCB0YXJn ZXRfcmVhZF9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBnCiAgICAgdGhlIHRhcmdldCdzIHN0 YWNrLiAgVGhpcyBtYXkgdHJpZ2dlciBkaWZmZXJlbnQgY2FjaGUgYmVoYXZpb3IuICAqLwogIAog IGludApAQCAtMTAyLDggKzEwMiw4IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90 YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRhcmdldCwgbm90IHRo ZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNjZXNzZXMgY2hlY2sg dGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMTQ3Myw3ICsxNDczLDcg QEAgdGFyZ2V0X3JlYWRfc3RhY2sgKENPUkVfQUREUiBtZW1hZGRyLCBnZAotIH0KK0BAIC0xNTMy LDcgKzE1MzIsNyBAQCB0YXJnZXRfcmVhZF9zdGFjayAoQ09SRV9BRERSIG1lbWFkZHIsIGdkCisg ICAgQ2FsbGVycyB0aGF0IGNhbiBkZWFsIHdpdGggcGFydGlhbCB3cml0ZXMgc2hvdWxkIGNhbGwg dGFyZ2V0X3dyaXRlLiAgKi8KICAKICBpbnQKIC10YXJnZXRfd3JpdGVfbWVtb3J5IChDT1JFX0FE RFIgbWVtYWRkciwgY29uc3QgZ2RiX2J5dGUgKm15YWRkciwgaW50IGxlbikKQEAgLTExMSw3ICsx MTEsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0LmMKICB7CiAgICAv KiBEaXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUgZmxhdHRlbmVkIGN1cnJl bnRfdGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRhcmdldC0+dG9faGFzXyhh bGxfKW1lbW9yeSwgYW5kIHRoZQotQEAgLTI5NjQsOCArMjk2NCw4IEBAIGRlYnVnX3RvX3ByZXBh cmVfdG9fc3RvcmUgKHN0cnVjdCByZWdjYWMKK0BAIC0zMDk4LDggKzMwOTgsOCBAQCBkZWJ1Z190 b19wcmVwYXJlX3RvX3N0b3JlIChzdHJ1Y3QgcmVnY2FjCiAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csICJ0YXJnZXRfcHJlcGFyZV90b19zdG9yZSAoKVxuIik7CiAgfQogIApAQCAt MTIyLDcgKzEyMiw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90YXJnZXQuYwog IAkJCSAgICAgIGludCB3cml0ZSwgc3RydWN0IG1lbV9hdHRyaWIgKmF0dHJpYiwKICAJCQkgICAg ICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQogIHsKLUBAIC0yOTc1LDggKzI5NzUsOCBAQCBk ZXByZWNhdGVkX2RlYnVnX3hmZXJfbWVtb3J5IChDT1JFX0FERFIgCitAQCAtMzEwOSw4ICszMTA5 LDggQEAgZGVwcmVjYXRlZF9kZWJ1Z194ZmVyX21lbW9yeSAoQ09SRV9BRERSIAogIAkJCQkJCWF0 dHJpYiwgdGFyZ2V0KTsKICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKQEAg LTEzMywxMSArMTMzLDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90YXJnZXQu YwogIAkJICAgICAgd3JpdGUgPyAid3JpdGUiIDogInJlYWQiLCByZXR2YWwpOwogIAogICAgaWYg KHJldHZhbCA+IDApCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0LmgKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvdGFyZ2V0LmgJMjAwOS0wOS0wOSAxOTowNTo1Ni4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90YXJnZXQuaAkyMDA5 LTA5LTA5IDE5OjA3OjM2LjAwMDAwMDAwMCArMDIwMAotQEAgLTM2NiwxMCArMzY2LDEwIEBAIHN0 cnVjdCB0YXJnZXRfb3BzCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90YXJnZXQu aAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3RhcmdldC5oCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCitA QCAtNDA2LDEwICs0MDYsMTAgQEAgc3RydWN0IHRhcmdldF9vcHMKICAgICAgICAgTk9URTogY2Fn bmV5LzIwMDQtMTAtMDE6IFRoaXMgaGFzIGJlZW4gZW50aXJlbHkgc3VwZXJzZWVkZWQgYnkKICAg ICAgICAgdG9feGZlcl9wYXJ0aWFsIGFuZCBpbmZlcmlvciBpbmhlcml0YW5jZS4gICovCiAgCkBA IC0xNTIsNyArMTUyLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3RhcmdldC5o CiAgCiAgICAgIHZvaWQgKCp0b19maWxlc19pbmZvKSAoc3RydWN0IHRhcmdldF9vcHMgKik7CiAg ICAgIGludCAoKnRvX2luc2VydF9icmVha3BvaW50KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0 IGJwX3RhcmdldF9pbmZvICopOwotQEAgLTY4MCwxMiArNjgwLDEyIEBAIGV4dGVybiB2b2lkIHRh cmdldF9kY2FjaGVfaW52YWxpZGF0ZSAodm8KK0BAIC03ODYsMTIgKzc4NiwxMiBAQCBleHRlcm4g dm9pZCB0YXJnZXRfZGNhY2hlX2ludmFsaWRhdGUgKHZvCiAgCiAgZXh0ZXJuIGludCB0YXJnZXRf cmVhZF9zdHJpbmcgKENPUkVfQUREUiwgY2hhciAqKiwgaW50LCBpbnQgKik7CiAgCkBAIC0xNjgs MTMgKzE2OCwxMyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0LmgKICAK ICAvKiBGZXRjaGVzIHRoZSB0YXJnZXQncyBtZW1vcnkgbWFwLiAgSWYgb25lIGlzIGZvdW5kIGl0 IGlzIHNvcnRlZAogICAgIGFuZCByZXR1cm5lZCwgYWZ0ZXIgc29tZSBjb25zaXN0ZW5jeSBjaGVj a2luZy4gIE90aGVyd2lzZSwgTlVMTAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2Rj YWNoZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2RjYWNoZS5jCTIwMDktMDgtMzEg MjI6MTg6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvZGNh Y2hlLmMJMjAwOS0wOS0wOSAxOTowOToyMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zOTAsMTAgKzM5 MCwxMCBAQCBkY2FjaGVfZnJlZSAoRENBQ0hFICpkY2FjaGUpCi0gCi0gICAgVGhlIG1lYW5pbmcg b2YgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3IgdGFyZ2V0X3dyaXRlLiAgKi8KKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2RjYWNoZS5jCTIwMTAtMDEtMDEgMDg6MzE6MzAu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmMJMjAx MC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC00NjgsMTAgKzQ2OCwxMCBAQCBk Y2FjaGVfZnJlZSAoRENBQ0hFICpkY2FjaGUpCisgICAgTk9URTogVGhpcyBpcyBkaWZmZXJlbnQg dGhhbiB0aGUgdG9feGZlcl9wYXJ0aWFsIGludGVyZmFjZSwgaW4gd2hpY2gKKyAgICBwb3NpdGl2 ZSB2YWx1ZXMgbGVzcyB0aGFuIExFTiBtZWFuIGZ1cnRoZXIgdHJhbnNmZXJzIG1heSBiZSBwb3Nz aWJsZS4gICovCiAgCiAtaW50CiArTE9OR0VTVApAQCAtMTg1LDEwICsxODUsMTAgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2RjYWNoZS5jCiAgewogICAgaW50IGk7CiAgICBpbnQg cmVzOwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2RjYWNoZS5oCitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUw LjIwMDkwOTA5Lm9yaWcvZ2RiL2RjYWNoZS5oCTIwMDktMDgtMzEgMjI6MTg6NDUuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvZGNhY2hlLmgJMjAwOS0wOS0wOSAx OTowODo1NC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2RjYWNoZS5oCTIwMTAtMDEtMDEgMDg6MzE6MzAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmgJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAg KzAxMDAKIEBAIC0zNSw4ICszNSw4IEBAIHZvaWQgZGNhY2hlX2ZyZWUgKERDQUNIRSAqKTsKICAK ICAvKiBTaW1wbGUgdG8gY2FsbCBmcm9tIDxyZW1vdGU+X3hmZXJfbWVtb3J5ICovCkBAIC0yMDAs MTEgKzIwMCwxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvZGNhY2hlLmgKICAK ICB2b2lkIGRjYWNoZV91cGRhdGUgKERDQUNIRSAqZGNhY2hlLCBDT1JFX0FERFIgbWVtYWRkciwg Z2RiX2J5dGUgKm15YWRkciwKICAJCSAgICBpbnQgbGVuKTsKLUluZGV4OiBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi9leGVjLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2V4ZWMuYwkyMDA5 LTA3LTAyIDE5OjIxOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkv Z2RiL2V4ZWMuYwkyMDA5LTA5LTA5IDE5OjA2OjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTU2MCw3 ICs1NjAsNyBAQCBtYXBfdm1hcCAoYmZkICphYmZkLCBiZmQgKmFyY2gpCistLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wMS0xNCAyMjowMToyNC4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMJMjAxMC0wMS0xNSAwMzoy MjoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC01NzgsNyArNTc4LDcgQEAgbWFwX3ZtYXAgKGJmZCAq YWJmZCwgYmZkICphcmNoKQogIH0KICAMCiAgCkBAIC0yMTMsMTEgKzIxMywxMSBAQCBJbmRleDog Z2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvZXhlYy5jCiAgc2VjdGlvbl90YWJsZV94ZmVyX21lbW9y eV9wYXJ0aWFsIChnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmLAog IAkJCQkgICBVTE9OR0VTVCBvZmZzZXQsIExPTkdFU1QgbGVuLAogIAkJCQkgICBzdHJ1Y3QgdGFy Z2V0X3NlY3Rpb24gKnNlY3Rpb25zLAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2xp bnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIw MDktMDktMDkgMTk6MDY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkw OS9nZGIvbGludXgtbmF0LmMJMjAwOS0wOS0wOSAxOTowNjo1Ny4wMDAwMDAwMDAgKzAyMDAKLUBA IC00NjIyLDcgKzQ2MjIsNyBAQCBsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTAx LTE1IDAzOjIyOjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtNTEx Nyw3ICs1MTE3LDcgQEAgbGludXhfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqbwog ICNlbmRpZgogICAgICAgIGlmIChpdGVyYXRlX292ZXJfbHdwcyAoaWE2NF9saW51eF9jaGVja19z dGFja19yZWdpb24sICZyYW5nZSkgIT0gTlVMTCkKICAJeyAvKiBUaGlzIHJlZ2lvbiBjb250YWlu cyBpYTY0IHJzZSByZWdpc3RlcnMsIHdlIGhhdmUgdG8gcmUtcmVhZC4gICovCkBAIC0yMjYsMTAg KzIyNiwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvbGludXgtbmF0LmMKICAK ICAJICAvKiBSZS1yZWFkIHJlZ2lzdGVyIHN0YWNrIGFyZWEuICAqLwogIAkgIHh4ZmVyID0gc3Vw ZXJfeGZlcl9wYXJ0aWFsIChvcHMsIG9iamVjdCwgYW5uZXgsCi1JbmRleDogZ2RiLTYuOC41MC4y MDA5MDkwOS9nZGIvcmVtb3RlLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9yZW1v dGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvcmVtb3Rl LmMJMjAwOS0wOC0xOCAxODoxNzoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi9yZW1vdGUuYwkyMDA5LTA5LTA5IDE5OjA2OjU3LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvcmVtb3RlLmMJMjAxMC0wMS0xMiAyMjo0 MDoyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9yZW1vdGUu YwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAogQEAgLTI1LDYgKzI1LDcgQEAK ICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgogICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMjM4LDcg KzIzOCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9yZW1vdGUuYwogICNpbmNs dWRlICJpbmZlcmlvci5oIgogICNpbmNsdWRlICJiZmQuaCIKICAjaW5jbHVkZSAic3ltZmlsZS5o IgotQEAgLTU3NjQsMTIgKzU3NjUsMTkgQEAgaGFuZGxlX25vdGlmaWNhdGlvbiAoY2hhciAqYnVm LCBzaXplX3QgbAorQEAgLTYxNzUsMTIgKzYxNzYsMTkgQEAgaGFuZGxlX25vdGlmaWNhdGlvbiAo Y2hhciAqYnVmLCBzaXplX3QgbAogICAgIGlmIFNIT1VMRF9XUklURSBpcyBub256ZXJvLiAgUmV0 dXJucyBsZW5ndGggb2YgZGF0YSB3cml0dGVuIG9yCiAgICAgcmVhZDsgMCBmb3IgZXJyb3IuICBU QVJHRVQgaXMgdW51c2VkLiAgKi8KICAKQEAgLTI2MCw3ICsyNjAsNyBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDkwOS9nZGIvcmVtb3RlLmMKICAKICAgIHNldF9nZW5lcmFsX3RocmVhZCAoaW5m ZXJpb3JfcHRpZCk7CiAgCi1AQCAtNTc3OCw3ICs1Nzg2LDcgQEAgcmVtb3RlX3hmZXJfbWVtb3J5 IChDT1JFX0FERFIgbWVtX2FkZHIsIAorQEAgLTYxODksNyArNjE5Nyw3IEBAIHJlbW90ZV94ZmVy X21lbW9yeSAoQ09SRV9BRERSIG1lbV9hZGRyLCAKICAgIGVsc2UKICAgICAgcmVzID0gcmVtb3Rl X3JlYWRfYnl0ZXMgKG1lbV9hZGRyLCBidWZmZXIsIG1lbV9sZW4pOwogIApAQCAtMjY5LDEwICsy NjksMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3JlbW90ZS5jCiAgfQogIAog IC8qIFNlbmRzIGEgcGFja2V0IHdpdGggY29udGVudCBkZXRlcm1pbmVkIGJ5IHRoZSBwcmludGYg Zm9ybWF0IHN0cmluZwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3JlbW90ZS1zaW0u YworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3JlbW90ZS1zaW0uYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvcmVtb3RlLXNpbS5jCTIwMDktMDct MDIgMTk6MjE6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIv cmVtb3RlLXNpbS5jCTIwMDktMDktMDkgMTk6MDY6NTcuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wMS0wMSAwODozMTo0 MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9yZW1vdGUtc2lt LmMJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKIEBAIC03NTIsMTEgKzc1Miwx NCBAQCBnZGJzaW1fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hlCiAgCiAgICAgUmV0 dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkLiAqLwpAQCAtMjkwLDExICsyOTAs MTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3JlbW90ZS1zaW0uYwogICAgLyog SWYgbm8gcHJvZ3JhbSBpcyBydW5uaW5nIHlldCwgdGhlbiBpZ25vcmUgdGhlIHNpbXVsYXRvciBm b3IKICAgICAgIG1lbW9yeS4gIFBhc3MgdGhlIHJlcXVlc3QgZG93biB0byB0aGUgbmV4dCB0YXJn ZXQsIGhvcGVmdWxseQogICAgICAgYW4gZXhlYyBmaWxlLiAgKi8KLUluZGV4OiBnZGItNi44LjUw LjIwMDkwOTA5L2dkYi9leGVjLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVj LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2V4ZWMuaAky MDA5LTA2LTEyIDIwOjM4OjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5 MDkvZ2RiL2V4ZWMuaAkyMDA5LTA5LTA5IDE5OjA2OjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTU2 LDcgKzU2LDcgQEAgZXh0ZXJuIGludCByZXNpemVfc2VjdGlvbl90YWJsZSAoc3RydWN0IAorLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZXhlYy5oCTIwMTAtMDEtMDEgMDg6MzE6MzEu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXhlYy5oCTIwMTAt MDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtNjAsNyArNjAsNyBAQCBleHRlcm4g aW50IHJlc2l6ZV9zZWN0aW9uX3RhYmxlIChzdHJ1Y3QgCiAgCiAgICAgT25lLCBhbmQgb25seSBv bmUsIG9mIHJlYWRidWYgb3Igd3JpdGVidWYgbXVzdCBiZSBub24tTlVMTC4gICovCiAgCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJlYWRu ZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCA4MjNjMzhmLi40MzM5NDRkIDEwMDY0NAotLS0gYS9n ZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZlci0y MDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAgICAgKiBnZGIudGV4aW5m byAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUluZGV4OiBnZGItNi44 LjUwLjIwMDkwODExL2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkw ODExLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LTA4LTEzIDEwOjE0OjE1LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5 LTA4LTEzIDEwOjE0OjE4LjAwMDAwMDAwMCArMDIwMAotQEAgLTk5MSw2ICs5OTEsMTIgQEAgUmVh ZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTAtMDEtMTUgMDM6MjA6MDQuMDAwMDAwMDAwICswMTAwCitAQCAtOTk1LDYgKzk5NSwxMiBAQCBS ZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQsIHdo aWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBt YWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4K ICAKQEAgLTI4LDEwICsyOCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvZG9j L2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL21haW4uYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MTEub3JpZy9n ZGIvbWFpbi5jCTIwMDktMDgtMTMgMTA6MTQ6MTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYu OC41MC4yMDA5MDgxMS9nZGIvbWFpbi5jCTIwMDktMDgtMTMgMTA6MTQ6MTguMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0xNSAw MzoxODoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWlu LmMJMjAxMC0wMS0xNSAwMzoyMDowNC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zODIsNiArMzgyLDcg QEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIsIG5vX2FyZ3VtZW50 LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3VtZW50LCAmZGJ4X2Nv bW1hbmRzLCAxfSwKQEAgLTQ4LDEwICs0OCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvbWFpbi5jCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAg ICAtLXNlPUZJTEUgICAgICAgICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZpbGUgYW5kIGV4ZWN1dGFi bGUgZmlsZS5cblwKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9zeW1maWxlLmMKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDA5LTA4LTEzIDEwOjE0OjE1 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL3N5bWZpbGUuYwky MDA5LTA4LTEzIDEwOjE0OjE4LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5jCTIwMTAtMDEtMTUgMDM6MjA6 MDQuMDAwMDAwMDAwICswMTAwCiBAQCAtNzksNiArNzksNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9z eW10YWJfdXNlcnNfY2xlYW51cCAoCiAgCiAgLyogR2xvYmFsIHZhcmlhYmxlcyBvd25lZCBieSB0 aGlzIGZpbGUgKi8KQEAgLTYwLDE5ICs2MCwxOSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvc3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMg cmVmZXJlbmNlZC4gKi8KICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9kd2FyZjJy ZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDA5 LTA4LTEzIDEwOjE0OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEv Z2RiL2R3YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEwOjE0OjI5LjAwMDAwMDAwMCArMDIwMAotQEAg LTUzLDYgKzUzLDcgQEAKLSAjaW5jbHVkZSAianYtbGFuZy5oIgotICNpbmNsdWRlICJ2ZWMuaCIK Ky0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1 IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3 YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDAzOjIwOjE4LjAwMDAwMDAwMCArMDEwMAorQEAgLTUwLDYg KzUwLDcgQEAKKyAjaW5jbHVkZSAiYWRkcm1hcC5oIgogICNpbmNsdWRlICJibG9jay5oIgorICNp bmNsdWRlICJmLWxhbmcuaCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRs Lmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xMjQ1LDcgKzEyNDYsOCBAQCBkd2Fy ZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTIyNiw3ICsxMjI3LDgg QEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogIAogICAgICAgIGJm ZF9tYXBfb3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0ZV9zZWN0aW9u cywgTlVMTCk7CiAgICAgIH0KQEAgLTgyLDExICs4MiwxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4y MDA5MDgxMS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJy ZXYuYXNlY3Rpb24gIT0gTlVMTCk7CiAgfQogIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEv Z2RiL3RvcC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdG9wLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL3RvcC5oCTIwMDktMDEtMDMgMDY6 NTc6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvdG9wLmgJ MjAwOS0wOC0xMyAxMDoxNDoxOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01OSw2ICs1OSw3IEBAIGV4 dGVybiB2b2lkIHNldF9wcm9tcHQgKGNoYXIgKik7CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi90b3AuaAkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3RvcC5oCTIwMTAtMDEtMTUgMDM6MjA6MDQuMDAwMDAwMDAw ICswMTAwCitAQCAtNjMsNiArNjMsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJvbXB0IChjaGFyICop OwogIAogIC8qIEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93X3N5 bWJvbF9maWxlczsKCmRpZmYgLS1naXQgYS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYx MC5wYXRjaCBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCmluZGV4IDEw OTJjMzEuLjU2ZDc1YjkgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUw NjEwLnBhdGNoCisrKyBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCkBA IC0xOSwxOSArMTksMTkgQEAgUHJvcG9zZWQgdXBzdHJlYW0gYnV0IG5ldmVyIGNvbW1pdHRlZCB1 cHN0cmVhbS4KICAgICAgICAgKHNvdXJjZV9jb21tYW5kKTogVXBkYXRlIGRvY3VtZW50YXRpb24u ICBDaGVjayBwZXJtaXNzaW9ucyBpZgogICAgICAgICBGUk9NX1RUWSBpcyAtMS4KIAotSW5kZXg6 IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL2NsaS9jbGktY21kcy5jCitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvY2xpL2NsaS1jbWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUw LjIwMDkwMjI2Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMDktMDItMjcgMDA6MDQ6MzIuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvY2xpL2NsaS1jbWRzLmMJ MjAwOS0wMi0yOCAwNzoxNzo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNiw2ICszNiw3IEBACist LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTAxLTE1 IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Ns aS9jbGktY21kcy5jCTIwMTAtMDEtMTUgMDM6MTk6MTMuMDAwMDAwMDAwICswMTAwCitAQCAtMzcs NiArMzcsNyBAQAogICNpbmNsdWRlICJvYmpmaWxlcy5oIgogICNpbmNsdWRlICJzb3VyY2UuaCIK ICAjaW5jbHVkZSAiZGlzYXNtLmgiCiArI2luY2x1ZGUgImdkYl9zdGF0LmgiCisgZXh0ZXJuIHZv aWQgZGlzY29ubmVjdF9vcl9zdG9wX3RyYWNpbmcgKGludCBmcm9tX3R0eSk7CiAgCiAgI2luY2x1 ZGUgInVpLW91dC5oIgotIAotQEAgLTQ2Niw3ICs0NjcsNyBAQCBzb3VyY2Vfc2NyaXB0IChjaGFy ICpmaWxlLCBpbnQgZnJvbV90dHkpCitAQCAtNDc1LDcgKzQ3Niw3IEBAIHNvdXJjZV9zY3JpcHQg KGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKICAKICAgIGlmIChmZCA9PSAtMSkKICAgICAgewpA QCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvY2xpL2NsaS1j bWRzLmMKICAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7CiAgICAgICAgZWxzZQogIAl7Ci1AQCAt NDc1LDYgKzQ3NiwyOSBAQCBzb3VyY2Vfc2NyaXB0IChjaGFyICpmaWxlLCBpbnQgZnJvbV90dHkp CitAQCAtNDg0LDYgKzQ4NSwyOSBAQCBzb3VyY2Vfc2NyaXB0IChjaGFyICpmaWxlLCBpbnQgZnJv bV90dHkpCiAgCX0KICAgICAgfQogIApAQCAtNzAsNyArNzAsNyBAQCBJbmRleDogZ2RiLTYuOC41 MC4yMDA5MDIyNi9nZGIvY2xpL2NsaS1jbWRzLmMKICAgIGlzX3B5dGhvbiA9IHNvdXJjZV9weXRo b247CiAgICBpZiAoc3RybGVuIChmaWxlKSA+IDMgJiYgIXN0cmNtcCAoJmZpbGVbc3RybGVuIChm aWxlKSAtIDNdLCAiLnB5IikpCiAgICAgIGlzX3B5dGhvbiA9IDE7Ci1AQCAtNDg2LDYgKzUxMCw3 IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKK0BAIC00OTUsNiAr NTE5LDcgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQogICAgZWxz ZQogICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOwogIApAQCAtNzgsMTAgKzc4 LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9jbGkvY2xpLWNtZHMuYwogICAg ZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CiAgfQogIAotSW5kZXg6IGdkYi02LjguNTAuMjAw OTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAky MDA5LTAyLTI4IDA3OjE1OjU3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAkyMDEwLTAxLTE1IDAzOjE4OjIz LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw5OCBAQAogKyMgICBDb3B5cmlnaHQgMjAwNQog KyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE4MSwxNyArMTgxLDE3IEBA IEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5p dC5leHAKICt9CiArCiArcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC5nZGJpbml0IgotSW5kZXg6IGdk Yi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LnNhbXBsZQor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0 LnNhbXBsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nZGJpbml0LnNhbXBsZQkyMDA5LTAyLTI4IDA3OjE1OjU3LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LnNh bXBsZQkyMDEwLTAxLTE1IDAzOjE4OjIzLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSBAQAog K2VjaG8gIlxuaW4gZ2RiaW5pdCIKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9tYWlu LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWluLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcvZ2RiL21haW4uYwkyMDA5LTAyLTI3IDAwOjA0OjMy LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL21haW4uYwkyMDA5 LTAyLTI4IDA3OjE1OjU3LjAwMDAwMDAwMCArMDEwMAotQEAgLTg1NSw3ICs4NTUsNyBAQCBFeGNl c3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpZ25vcmVkLiAoCistLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxODoyMy4w MDAwMDAwMDAgKzAxMDAKK0BAIC04MTUsNyArODE1LDcgQEAgRXhjZXNzIGNvbW1hbmQgbGluZSBh cmd1bWVudHMgaWdub3JlZC4gKAogICAgICAgZGVidWdnaW5nIG9yIHdoYXQgZGlyZWN0b3J5IHlv dSBhcmUgaW4uICAqLwogIAogICAgaWYgKGhvbWVfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0 KQpAQCAtMjAwLDcgKzIwMCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9tYWlu LmMKICAKICAgIC8qIE5vdyBwZXJmb3JtIGFsbCB0aGUgYWN0aW9ucyBpbmRpY2F0ZWQgYnkgdGhl IGFyZ3VtZW50cy4gICovCiAgICBpZiAoY2RhcmcgIT0gTlVMTCkKLUBAIC05MjQsNyArOTI0LDcg QEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbworQEAgLTg4NCw3ICs4 ODQsNyBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvCiAgICAvKiBS ZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBp c24ndAogICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3Vs ZCBleGlzdCwgYWxzbykuICAqLwogICAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2Ri aW5pdCkKCmRpZmYgLS1naXQgYS9nZGItNi41LWdjb3JlLWkzODYtb24tYW1kNjQucGF0Y2ggYi9n ZGItNi41LWdjb3JlLWkzODYtb24tYW1kNjQucGF0Y2gKaW5kZXggN2RhZTMzMC4uMzRhYzEzZSAx MDA2NDQKLS0tIGEvZ2RiLTYuNS1nY29yZS1pMzg2LW9uLWFtZDY0LnBhdGNoCisrKyBiL2dkYi02 LjUtZ2NvcmUtaTM4Ni1vbi1hbWQ2NC5wYXRjaApAQCAtMjMsMTAgKzIzLDEwIEBACiAKIAlQb3J0 IHRvIEdEQi02LjhwcmUuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9hbWQ2NC1s aW51eC1uYXQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FtZDY0LWxpbnV4LW5h dC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmlnL2dkYi9hbWQ2NC1s aW51eC1uYXQuYwkyMDA5LTA2LTE3IDIwOjQ0OjIzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02 LjguNTAuMjAwOTA4MDIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMDktMDgtMDMgMTU6NDk6MzMu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9hbWQ2NC1s aW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjA6NTgu MDAwMDAwMDAwICswMTAwCiBAQCAtNTEsNiArNTEsOSBAQAogICNpbmNsdWRlICJpMzg2LWxpbnV4 LXRkZXAuaCIKICAjaW5jbHVkZSAiYW1kNjQtbmF0LmgiCkBAIC0xNzAsNyArMTcwLDcgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCiAgLyogVHJhbnNm ZXJpbmcgdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgYmV0d2VlbiBHREIsIGluZmVyaW9y cwogICAgIGFuZCBjb3JlIGZpbGVzLiAgKi8KICAKLUBAIC02ODIsNiArODA0LDExIEBAIF9pbml0 aWFsaXplX2FtZDY0X2xpbnV4X25hdCAodm9pZCkKK0BAIC03MjcsNiArODQ5LDExIEBAIF9pbml0 aWFsaXplX2FtZDY0X2xpbnV4X25hdCAodm9pZCkKICAgIHQtPnRvX2ZldGNoX3JlZ2lzdGVycyA9 IGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVyczsKICAgIHQtPnRvX3N0b3JlX3Jl Z2lzdGVycyA9IGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVyczsKICAKQEAgLTE4 MiwxMSArMTgyLDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9hbWQ2NC1saW51 eC1uYXQuYwogICAgLyogUmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCiAgICBsaW51eF9uYXRfYWRk X3RhcmdldCAodCk7CiAgICBsaW51eF9uYXRfc2V0X25ld190aHJlYWQgKHQsIGFtZDY0X2xpbnV4 X25ld190aHJlYWQpOwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZy5pbgor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvY29uZmlnLmluCTIwMDktMDgtMDMgMDk6NTA6 NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvY29uZmlnLmlu CTIwMDktMDgtMDMgMTU6NDg6MzEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ2LDYgKzE0Niw5IEBA CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb25maWcuaW4JMjAxMC0wMS0xNSAw MzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25m aWcuaW4JMjAxMC0wMS0xNSAwMzoyMDo1OC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNDksNiArMTQ5 LDkgQEAKICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVsZl9ocC5oPiBoZWFkZXIg ZmlsZS4gKi8KICAjdW5kZWYgSEFWRV9FTEZfSFBfSAogIApAQCAtMTk2LDcgKzE5Niw3IEBAIElu ZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBp ZiB5b3VyIHN5c3RlbSBoYXMgdGhlIGV0ZXh0IHZhcmlhYmxlLiAqLwogICN1bmRlZiBIQVZFX0VU RVhUCiAgCi1AQCAtNDg3LDYgKzQ5MCw5IEBACitAQCAtNDkwLDYgKzQ5Myw5IEBACiAgLyogRGVm aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcG9sbC5oPiBoZWFkZXIgZmlsZS4gKi8KICAj dW5kZWYgSEFWRV9TWVNfUE9MTF9ICiAgCkBAIC0yMDYsNyArMjA2LDcgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl IHRoZSA8c3lzL3Byb2Nmcy5oPiBoZWFkZXIgZmlsZS4gKi8KICAjdW5kZWYgSEFWRV9TWVNfUFJP Q0ZTX0gKICAKLUBAIC01MTQsNiArNTIwLDkgQEAKK0BAIC01MTcsNiArNTIzLDkgQEAKICAvKiBE ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8K ICAjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSAogIApAQCAtMjE2LDExICsyMTYsMTEgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSA8c3lzL3VzZXIuaD4gaGVhZGVyIGZpbGUuICovCiAgI3VuZGVmIEhBVkVfU1lT X1VTRVJfSAogIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZ3VyZQorSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvY29uZmlndXJlCTIwMDktMDgtMDMgMDk6NTA6NTcu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvY29uZmlndXJlCTIw MDktMDgtMDMgMTU6NDg6MzEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTI1NDUsNiArMTI1NDUsMjY4 IEBAIF9BQ0VPRgorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlndXJlCTIw MTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvY29uZmlndXJlCTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCitAQCAt MTAwNDMsNiArMTAwNDMsMjY4IEBAICRhc19lY2hvICIjZGVmaW5lIFNURENfSEVBREVSUyAxIiA+ PmNvbmYKICAKICBmaQogIApAQCAtNDg5LDExICs0ODksMTEgQEAgSW5kZXg6IGdkYi02LjguNTAu MjAwOTA4MDIvZ2RiL2NvbmZpZ3VyZQogICMgZWxmX2hwLmggaXMgZm9yIEhQL1VYIDY0LWJpdCBz aGFyZWQgbGlicmFyeSBzdXBwb3J0LgogICMgRklYTUU6IGtldHRlbmlzLzIwMDMwMTAyOiBJbiBt b3N0IGNhc2VzIHdlIGluY2x1ZGUgdGhlc2UgKGN0eXBlLmgsIHRpbWUuaCkKICAjIHVuY29uZGl0 aW9uYWxseSwgc28gd2hhdCdzIHRoZSBwb2ludCBpbiBjaGVja2luZyB0aGVzZT8KLUluZGV4OiBn ZGItNi44LjUwLjIwMDkwODAyL2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkw ODAyLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDA5LTA4LTAzIDA5OjUwOjU3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZ3VyZS5hYwkyMDA5LTA4LTAz IDE1OjQ4OjMxLjAwMDAwMDAwMCArMDIwMAotQEAgLTc0NCw2ICs3NDQsMTEgQEAgQUNfU1VCU1Qo UFlUSE9OX0NGTEFHUykKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCAr MDEwMAorQEAgLTc1OCw2ICs3NTgsMTEgQEAgQUNfU1VCU1QoUFlUSE9OX0NGTEFHUykKICBBQ19I RUFERVJfRElSRU5UCiAgQUNfSEVBREVSX1NUQVQKICBBQ19IRUFERVJfU1REQwpAQCAtNTA1LDEx ICs1MDUsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZ3VyZS5hYwog ICMgZWxmX2hwLmggaXMgZm9yIEhQL1VYIDY0LWJpdCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0Lgog ICMgRklYTUU6IGtldHRlbmlzLzIwMDMwMTAyOiBJbiBtb3N0IGNhc2VzIHdlIGluY2x1ZGUgdGhl c2UgKGN0eXBlLmgsIHRpbWUuaCkKICAjIHVuY29uZGl0aW9uYWxseSwgc28gd2hhdCdzIHRoZSBw b2ludCBpbiBjaGVja2luZyB0aGVzZT8KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9n Y29yZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2NvcmUuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvZ2NvcmUuYwkyMDA5LTA4LTAzIDEy OjI4OjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2djb3Jl LmMJMjAwOS0wOC0wMyAxNTo0ODozMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMjQsNiArMzI0LDEx IEBAIGdjb3JlX2NyZWF0ZV9jYWxsYmFjayAoQ09SRV9BRERSIHZhZGRyLCAKKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2djb3JlLmMJMjAxMC0wMS0xNSAwMzoxNzo1OS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nY29yZS5jCTIwMTAtMDEtMTUg MDM6MjA6NTguMDAwMDAwMDAwICswMTAwCitAQCAtMzc2LDYgKzM3NiwxMSBAQCBnY29yZV9jcmVh dGVfY2FsbGJhY2sgKENPUkVfQUREUiB2YWRkciwgCiAgICBhc2VjdGlvbiAqb3NlYzsKICAgIGZs YWd3b3JkIGZsYWdzID0gU0VDX0FMTE9DIHwgU0VDX0hBU19DT05URU5UUyB8IFNFQ19MT0FEOwog IApAQCAtNTIxLDEwICs1MjEsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dj b3JlLmMKICAgIC8qIElmIHRoZSBtZW1vcnkgc2VnbWVudCBoYXMgbm8gcGVybWlzc2lvbnMgc2V0 LCBpZ25vcmUgaXQsIG90aGVyd2lzZQogICAgICAgd2hlbiB3ZSBsYXRlciB0cnkgdG8gYWNjZXNz IGl0IGZvciByZWFkL3dyaXRlLCB3ZSdsbCBnZXQgYW4gZXJyb3IKICAgICAgIG9yIGphbSB0aGUg a2VybmVsLiAgKi8KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9nZGJfcHJvY2ZzMzIu aAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYl9wcm9jZnMzMi5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvZ2RiX3Byb2NmczMyLmgJMjAwOS0wOC0wMyAxNTo0 ODozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJfcHJv Y2ZzMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwx MjggQEAKICsjaWZkZWYgSEFWRV9TWVNfUFJPQ0ZTMzJfSAogKyNpbmNsdWRlIDxzeXMvcHJvY2Zz MzIuaD4KQEAgLTY1NCwxMCArNjU0LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dk Yi9nZGJfcHJvY2ZzMzIuaAogKyNlbmRpZgkvKiBfU1lTX1BST0NGUzMyX0ggKi8KICsKICsjZW5k aWYgLyogSEFWRV9TWVNfUFJPQ0ZTMzJfSCAqLwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIv Z2RiL2dkYl91c2VyMzIuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYl91c2Vy MzIuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dkYl91c2VyMzIuaAkyMDA5 LTA4LTAzIDE1OjQ4OjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2dkYl91c2VyMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAogQEAg LTAsMCArMSwxMDggQEAKICsjaWZkZWYgSEFWRV9TWVNfVVNFUjMyX0gKICsjaW5jbHVkZSA8c3lz L3VzZXIzMi5oPgpAQCAtNzY3LDExICs3NjcsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4 MDIvZ2RiL2dkYl91c2VyMzIuaAogKyNlbmRpZgkvKiBfU1lTX1VTRVIzMl9IICovCiArCiArI2Vu ZGlmIC8qIEhBVkVfU1lTX1VTRVIzMl9IICovCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9n ZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvbGludXgtbmF0 LmMJMjAwOS0wOC0wMyAxMjozMToyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIw MDkwODAyL2dkYi9saW51eC1uYXQuYwkyMDA5LTA4LTAzIDE1OjQ4OjMxLjAwMDAwMDAwMCArMDIw MAotQEAgLTIxOSw2ICsyMTksMjEgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBlcl94ZmVyX3BhcnRp YWwpIChzdAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0LmMJMjAx MC0wMS0xNSAwMzoyMDo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAorQEAg LTIyNSw2ICsyMjUsMjEgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBlcl94ZmVyX3BhcnRpYWwpIChz dAogIAkJCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqLAogIAkJCQkgICAgICBVTE9OR0VTVCwgTE9O R0VTVCk7CiAgCkBAIC03OTMsNyArNzkzLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIv Z2RiL2xpbnV4LW5hdC5jCiAgc3RhdGljIGludCBkZWJ1Z19saW51eF9uYXQ7CiAgc3RhdGljIHZv aWQKICBzaG93X2RlYnVnX2xpbnV4X25hdCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9t X3R0eSwKLUBAIC0zNTg2LDcgKzM2MDEsNyBAQCBsaW51eF9uYXRfZG9fdGhyZWFkX3JlZ2lzdGVy cyAoYmZkICpvYmZkCitAQCAtNDE4Nyw3ICs0MjAyLDcgQEAgbGludXhfbmF0X2RvX3RocmVhZF9y ZWdpc3RlcnMgKGJmZCAqb2JmZAogICAgZWxzZQogICAgICBmaWxsX2dyZWdzZXQgKHJlZ2NhY2hl LCAmZ3JlZ3MsIC0xKTsKICAKQEAgLTgwMiw3ICs4MDIsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4y MDA5MDgwMi9nZGIvbGludXgtbmF0LmMKICAJCQkJCSAgICAgICBub3RlX2RhdGEsCiAgCQkJCQkg ICAgICAgbm90ZV9zaXplLAogIAkJCQkJICAgICAgIGx3cCwKLUBAIC0zNjM2LDEwICszNjUxLDEw IEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQKK0BAIC00MjM3LDEw ICs0MjUyLDEwIEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQKICAg ICAgICBlbHNlCiAgCWZpbGxfZnByZWdzZXQgKHJlZ2NhY2hlLCAmZnByZWdzLCAtMSk7CiAgCkBA IC04MTUsNyArODE1LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2xpbnV4LW5h dC5jCiAgICAgIH0KICAKICAgIHJldHVybiBub3RlX2RhdGE7Ci1AQCAtMzgyMiw5ICszODM3LDkg QEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAorQEAgLTQ0MjMsOSAr NDQzOCw5IEBAIGxpbnV4X25hdF9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKICAJCSAg ICAgICBwc2FyZ3NfZW5kIC0gc3RyaW5nX2VuZCk7CiAgCSAgICB9CiAgCX0KQEAgLTgyOCwxNCAr ODI4LDE0IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9saW51eC1uYXQuYwogICAg ICB9CiAgCiAgICAvKiBEdW1wIGluZm9ybWF0aW9uIGZvciB0aHJlYWRzLiAgKi8KLUluZGV4OiBn ZGItNi44LjUwLjIwMDkwODAyL2dkYi9saW51eC1uYXQuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2xpbnV4LW5hdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgw Mi5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDA5LTA4LTAzIDEwOjUyOjAwLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2xpbnV4LW5hdC5oCTIwMDktMDgtMDMgMTU6 NDg6MzEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ0LDMgKzE0NCwxMiBAQCB2b2lkIGxpbnV4X25h dF9zd2l0Y2hfZm9yayAocHRpZF90IG5ld19wCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi9saW51eC1uYXQuaAkyMDEwLTAxLTE1IDAzOjE3OjA3LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDEtMTUgMDM6MjE6MjYu MDAwMDAwMDAwICswMTAwCitAQCAtMTY5LDMgKzE2OSwxMiBAQCBzdHJ1Y3Qgc2lnaW5mbyAqbGlu dXhfbmF0X2dldF9zaWdpbmZvIChwCiAgCi0gLyogUmV0dXJuIHRoZSBzYXZlZCBzaWdpbmZvIGFz c29jaWF0ZWQgd2l0aCBQVElELiAgKi8KLSBzdHJ1Y3Qgc2lnaW5mbyAqbGludXhfbmF0X2dldF9z aWdpbmZvIChwdGlkX3QgcHRpZCk7CisgLyogQ29tcHV0ZSBhbmQgcmV0dXJuIHRoZSBwcm9jZXNz b3IgY29yZSBvZiBhIGdpdmVuIHRocmVhZC4gICovCisgaW50IGxpbnV4X25hdF9jb3JlX29mX3Ro cmVhZF8xIChwdGlkX3QgcHRpZCk7CiArCiArLyogVGhlc2UgZnVuY3Rpb25zIG1ha2UgZWxmY29y ZSBub3RlIHNlY3Rpb25zLgogKyAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4gYnkgY29kZSBhZGp1 c3RpbmcgZGF0YSBmb3IgbXVsdGktdGFyZ2V0IGJ1aWxkcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJw bS5wYXRjaAppbmRleCBmMDdmN2VjLi4xYWFlMzM5IDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRj aApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9ldmVudC10 b3AuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDA5LTA5 LTA5IDIwOjA1OjQ4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2Ri L2V2ZW50LXRvcC5jCTIwMDktMDktMDkgMjA6MDg6MDQuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTAxLTAxIDA4OjMxOjMx LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V2ZW50LXRvcC5j CTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMsNiArMzMsNyBAQAog ICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIiAgICAgLyogZm9yIHJlc2V0X2NvbW1hbmRfbmVz dF9kZXB0aCAqLwogICNpbmNsdWRlICJtYWluLmgiCkBAIC0yOCwyNyArMjgsMTkgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2V2ZW50LXRvcC5jCiAgICAvKiBFYWNoIGludGVycHJl dGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3BsYXlpbmcgdGhlIGNvbW1hbmQKICAgICAgIHBy b21wdC4gICovCiAgICBpZiAoIWN1cnJlbnRfaW50ZXJwX2Rpc3BsYXlfcHJvbXB0X3AgKCkpCi1J bmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5jCitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5 MDkwOS5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9zeW1maWxlLmMJMjAwOS0wOS0wOSAyMDow ODowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2luY2x1ZGUgInNvbGli LmgiCi0gI2luY2x1ZGUgInJlbW90ZS5oIgotICNpbmNsdWRlICJsaWJiZmQuaCIKKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQzOjMwLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEw LTAxLTE1IDExOjQ1OjM0LjAwMDAwMDAwMCArMDEwMAorQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5j bHVkZSAiZ2RiY29yZS5oIgorICNpbmNsdWRlICJnZGJjbWQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKICsjaW5jbHVkZSAiZWxmL2V4dGVybmFsLmgiCiAgCi0gI2luY2x1ZGUgPHN5cy90eXBl cy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotQEAgLTY1LDYgKzY2LDcgQEAKLSAjaW5jbHVkZSA8 Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotKyNp bmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAKKyBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFk ICh2b2lkKTsKICAKLSBpbnQgKCpkZXByZWNhdGVkX3VpX2xvYWRfcHJvZ3Jlc3NfaG9vaykgKGNv bnN0IGNoYXIgKnNlY3Rpb24sIHVuc2lnbmVkIGxvbmcgbnVtKTsKLUBAIC0xNjczLDggKzE2NzUs MzUzIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIKK0BAIC0xMTE5 LDggKzExMjAsMzUzIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIK ICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNDAzLDcgKzM5NSw3IEBAIEluZGV4OiBnZGIt Ni44LjUwLjIwMDkwOTA5L2dkYi9zeW1maWxlLmMKICAgICBhdm9pZGFuY2UuICAqLwogIAogIHN0 cnVjdCBtaXNzaW5nX2ZpbGVwYWlyCi1AQCAtMTcyOCwxMSArMjA3NCwxNyBAQCBtaXNzaW5nX2Zp bGVwYWlyX2NoYW5nZSAodm9pZCkKK0BAIC0xMTc0LDExICsxNTIwLDE3IEBAIG1pc3NpbmdfZmls ZXBhaXJfY2hhbmdlICh2b2lkKQogICAgICAgIC8qIEFsbCB0aGVpciBtZW1vcnkgY2FtZSBqdXN0 IGZyb20gbWlzc2luZ19maWxlcGFpcl9PQlNUQUNLLiAgKi8KICAgICAgICBtaXNzaW5nX2ZpbGVw YWlyX2hhc2ggPSBOVUxMOwogICAgICB9CkBAIC00MjEsNyArNDEzLDcgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUuYwogICAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2Ug KCk7CiAgfQogIAotQEAgLTE3OTksMTQgKzIxNTEsMzQgQEAgZGVidWdfcHJpbnRfbWlzc2luZyAo Y29uc3QgY2hhciAqYmluYXJ5LAorQEAgLTEyNDUsMTQgKzE1OTcsMzQgQEAgZGVidWdfcHJpbnRf bWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAogIAogICAgKnNsb3QgPSBtaXNzaW5nX2ZpbGVw YWlyOwogIApAQCAtNDYzLDExICs0NTUsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkv Z2RiL3N5bWZpbGUuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDogZ2RiLTYuOC41MC4y MDA5MDkwOS9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3lt ZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9zeW1m aWxlLmgJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUw LjIwMDkwOTA5L2dkYi9zeW1maWxlLmgJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0zODcsNiArMzg3LDcgQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRf YWRkcl9nZQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTAt MDEtMTUgMTE6MTI6MzMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvc3ltZmlsZS5oCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCitAQCAtMzk4 LDYgKzM5OCw3IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJfZ2UKICBl eHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRf aWQsCiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1Z19zdWZmaXgpOwog IGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwgY29u c3QgY2hhciAqZGVidWcpOwpAQCAtNDc1LDEwICs0NjcsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAu MjAwOTA5MDkvZ2RiL3N5bWZpbGUuaAogIAogIC8qIEZyb20gZHdhcmYycmVhZC5jICovCiAgCi1J bmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAwOS0wOS0wOSAyMDowODowNC4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTAxLTE1IDExOjQ1 OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTEyNDgsNyArMTI0OCw3IEBAIHByb2MgZGVmYXVsdF9n ZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8g MC4iCiAgCX0KQEAgLTQ4OCwxMCArNDgwLDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5 L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgc2VuZF9nZGIgInNldCBidWlsZC1pZC12 ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiJGdkYl9wcm9tcHQgJCIg ewotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMDktMDktMDkgMjA6MDg6MDQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDA5LTA5LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTAx LTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0xNSAxMTo0NToyMC4wMDAwMDAw MDAgKzAxMDAKIEBAIC0yMjEsNyArMjIxLDcgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7 IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CkBAIC01MDEsMTAgKzQ5MywxMCBAQCBJbmRleDog Z2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogICAg ICBzZW5kX2dkYiAiMTkwLWdkYi1zZXQgYnVpbGQtaWQtdmVyYm9zZSAwXG4iCiAgICAgIGdkYl9l eHBlY3QgMTAgewogIAktcmUgIi4qMTkwLWdkYi1zZXQgYnVpbGQtaWQtdmVyYm9zZSAwXHJcbjE5 MFxcXF5kb25lXHJcbiRtaV9nZGJfcHJvbXB0JCIgewotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5 MDkvZ2RiL3R1aS90dWktaW50ZXJwLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90 dWkvdHVpLWludGVycC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmln L2dkYi90dWkvdHVpLWludGVycC5jCTIwMDktMDktMDkgMjA6MDU6NDguMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDA5LTA5LTA5 IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9n ZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTAxLTAxIDA4OjMyOjA3LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wMS0xNSAx MTo0NToyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zMCw2ICszMCw3IEBACiAgI2luY2x1ZGUgInR1 aS90dWkuaCIKICAjaW5jbHVkZSAidHVpL3R1aS1pby5oIgpAQCAtNTIyLDEwICs1MTQsMTAgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3R1aS90dWktaW50ZXJwLmMKICAgICAgICAv KiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhlIHByb21wdCB0byBkaXNwbGF5IGlzIGFuZCB3aGF0IGZ1 bmN0aW9uCiAgICAgICAgICAgaXQgd2lsbCBuZWVkIHRvIGNhbGwgYWZ0ZXIgYSB3aG9sZSBsaW5l IGlzIHJlYWQuIFRoaXMgYWxzbwogICAgICAgICAgIGRpc3BsYXlzIHRoZSBmaXJzdCBwcm9tcHQu ICAqLwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2FjbG9jYWwubTQKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hY2xvY2FsLm00CiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC41MC4yMDA5MDkwOS5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMDktMDktMDkgMjA6MDU6NDguMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvYWNsb2NhbC5tNAkyMDA5 LTA5LTA5IDIwOjA5OjMyLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUu b3JpZy9nZGIvYWNsb2NhbC5tNAkyMDA5LTExLTExIDA1OjQyOjM5LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FjbG9jYWwubTQJMjAxMC0wMS0xNSAxMTo0NToy MC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOSw2ICsxOSwxNjIgQEAgWW91IGhhdmUgYW5vdGhlciB2 ZXJzaW9uIG9mIGF1dG9jb25mLiAgSQogIElmIHlvdSBoYXZlIHByb2JsZW1zLCB5b3UgbWF5IG5l ZWQgdG8gcmVnZW5lcmF0ZSB0aGUgYnVpbGQgc3lzdGVtIGVudGlyZWx5LgogIFRvIGRvIHNvLCB1 c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1 dG9yZWNvbmYnLl0pXSkKQEAgLTY4OSwxMCArNjgxLDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi9hY2xvY2FsLm00CiAgIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUs IDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICMKICAj IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlnLmluCitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4y MDA5MDkwOS5vcmlnL2dkYi9jb25maWcuaW4JMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcuaW4JMjAwOS0wOS0wOSAy MDowODowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2NvbmZpZy5pbgkyMDEwLTAxLTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgkyMDEwLTAxLTE1IDExOjQ1OjIwLjAwMDAwMDAw MCArMDEwMAogQEAgLTQyLDYgKzQyLDkgQEAKICAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCB0 YXJnZXQgdmVjdG9yLiAqLwogICN1bmRlZiBERUZBVUxUX0JGRF9WRUMKQEAgLTcxMywxMCArNzA1 LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcuaW4KICAvKiBEZWZp bmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9M SUJVTldJTkQKICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDA5LTA5LTA5IDIwOjA4OjA0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZQky MDA5LTA5LTA5IDIwOjA5OjM1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlCTIwMTAtMDEtMTUgMTE6NDU6 MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtNjc2LDYgKzY3Niw5IEBAIFJFUE9SVF9CVUdTX1RPCiAg UEtHVkVSU0lPTgogIFRBUkdFVF9PQlMKQEAgLTcyNyw3ICs3MTksNyBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCiAgcHl0aG9uZGlyCiAgR0RCX0RBVEFESVJfUEFU SAogIEdEQl9EQVRBRElSCi1AQCAtODg2LDYgKzg4OSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdf ZGlyCitAQCAtODg4LDYgKzg5MSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCiAgd2l0aF9n ZGJfZGF0YWRpcgogIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKICB3aXRoX3B5dGhvbmRpcgpAQCAt NzM1LDcgKzcyNyw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUK ICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAg LTkyNSw2ICs5MjksOSBAQCBMREZMQUdTCitAQCAtOTI4LDYgKzkzMiw5IEBAIExERkxBR1MKICBM SUJTCiAgQ1BQRkxBR1MKICBDUFAKQEAgLTc0NSw3ICs3MzcsNyBAQCBJbmRleDogZ2RiLTYuOC41 MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE1 ODgsNiArMTU5NSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE1OTMsNiArMTYwMCw4IEBA IE9wdGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIv Z2RiXQogICAgLS13aXRoLXB5dGhvbmRpciAgICAgICAgaW5zdGFsbCBQeXRob24gZGF0YSBmaWxl cyBpbiB0aGlzIHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYi9w eXRob25dCkBAIC03NTQsNyArNzQ2LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2Ri L2NvbmZpZ3VyZQogICAgLS13aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFt ZSB1bndpbmRpbmcgc3VwcG9ydAogICAgLS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBj dXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaWJyYXJ5Ci1AQCAtMTYyMSw2ICsxNjMwLDkgQEAgU29tZSBpbmZsdWVudGlhbCBl bnZpcm9ubWVudCB2YXJpYWJsZXM6CitAQCAtMTYyNyw2ICsxNjM2LDkgQEAgU29tZSBpbmZsdWVu dGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBDUFBGTEFHUyAgICBDL0MrKy9PYmplY3Rp dmUgQyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmCiAgICAgICAg ICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNs dWRlIGRpcj4KICAgIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29yCkBAIC03NjQsNyArNzU2LDcg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAgICAg ICAgVGhlIGBZZXQgQW5vdGhlciBDIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIERl ZmF1bHRzIHRvCiAgICAgICAgICAgICAgICB0aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6 IGBiaXNvbiAteScsIGBieWFjYycsIGB5YWNjJy4KICAgIFlGTEFHUyAgICAgIFRoZSBsaXN0IG9m IGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAt NjY3NSw2ICs2Njg3LDQ4NiBAQCBfQUNFT0YKK0BAIC02NzYwLDYgKzY3NzIsNDg2IEBAIGVsc2UK ICBmaQogIAogIApAQCAtOTMzLDcgKzkyNSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5 L2dkYi9jb25maWd1cmUKICsgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAogKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICsKLSsvKiBEdXBsaWNhdGUgaGVyZSB0 aGUgZGVjbGFyYXRpb25zIHRvIHZlcmlmeSB0aGV5IG1hdGNoICJzeW1maWxlLmMiLiAgKi8KKysv KiBEdXBsaWNhdGUgaGVyZSB0aGUgZGVjbGFyYXRpb25zIHRvIHZlcmlmeSB0aGV5IG1hdGNoICJl bGZyZWFkLmMiLiAgKi8KICsjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgogKyNpbmNsdWRlIDxycG0v cnBtdHMuaD4KICsjaW5jbHVkZSA8cnBtL3JwbWRiLmg+CkBAIC0xMTg3LDcgKzExNzksNyBAQCBJ bmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCiArICAgIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICsvKiBlbmQgY29uZmRlZnMuaC4gICov CiArCi0rLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhleSBt YXRjaCAic3ltZmlsZS5jIi4gICovCisrLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xhcmF0aW9u cyB0byB2ZXJpZnkgdGhleSBtYXRjaCAiZWxmcmVhZC5jIi4gICovCiArI2luY2x1ZGUgPHJwbS9y cG1saWIuaD4KICsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+CiArI2luY2x1ZGUgPHJwbS9ycG1kYi5o PgpAQCAtMTI1MSw3ICsxMjQzLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2Nv bmZpZ3VyZQogIAogIAogIAotQEAgLTk3MjEsMjY1ICsxMDIxMywyNSBAQCAkYXNfZWNobyAiI2Rl ZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mCitAQCAtMTAwNDMsMjY1ICsxMDUzNSwyNSBAQCAk YXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mCiAgCiAgZmkKICAKQEAgLTE1 MjcsMTEgKzE1MTksMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3Vy ZQogIAogIGZpCiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlLmFj CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFjCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAwOS0wOS0w OSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9j b25maWd1cmUuYWMJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNTEs NiArMTUxLDE5OSBAQCBlbHNlCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb25m aWd1cmUuYWMJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUuYWMJMjAxMC0wMS0xNSAxMTo0NToyMC4wMDAwMDAw MDAgKzAxMDAKK0BAIC0xNTIsNiArMTUyLDE5OSBAQCBlbHNlCiAgZmkKICBBQ19TVUJTVChweXRo b25kaXIpCiAgCkBAIC0xNjY0LDcgKzE2NTYsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkw OS9nZGIvY29uZmlndXJlLmFjCiArICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgogKyAgICBDRkxB R1M9IiRDRkxBR1MgLVdlcnJvciIKICsgICAgQUNfQ09NUElMRV9JRkVMU0UoQUNfTEFOR19QUk9H UkFNKFtbCi0rLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhl eSBtYXRjaCAic3ltZmlsZS5jIi4gICovCisrLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xhcmF0 aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaCAiZWxmcmVhZC5jIi4gICovCiArI2luY2x1ZGUgPHJw bS9ycG1saWIuaD4KICsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+CiArI2luY2x1ZGUgPHJwbS9ycG1k Yi5oPgpAQCAtMTczMSwxNyArMTcyMywxNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9n ZGIvY29uZmlndXJlLmFjCiAgCiAgQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKICAK LUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9hY2luY2x1ZGUubTQKK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9hY2luY2x1ZGUubTQKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44 LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDA5LTA5LTA5IDIwOjA1OjQ4LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2FjaW5jbHVkZS5tNAky MDA5LTA5LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDEtMDggMDg6MTY6NDMuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDEtMTUg MTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMSwzICsxLDUgQEAKICsjIHNlcmlhbCAxCiAr CiAgZG5sIHdyaXR0ZW4gYnkgUm9iIFNhdm95ZSA8cm9iQGN5Z251cy5jb20+IGZvciBDeWdudXMg U3VwcG9ydAogIGRubCBtYWpvciByZXdyaXRpbmcgZm9yIFRjbCA3LjUgYnkgRG9uIExpYmVzIDxs aWJlc0BuaXN0Lmdvdj4KICAKLUBAIC03OSw4ICs4MSw2IEBAIEFDX01TR19SRVNVTFQoeWVzKQor QEAgLTgxLDggKzgzLDYgQEAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAgIyBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogICMgQm9zdG9uLCBNQSAwMjExMC0x MzAxLCBVU0EuCiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBi L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXggNWYyNjc5Yy4uNzdiYmM3ZiAxMDA2 NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLnBhdGNoCkBAIC0xLDExICsxLDExIEBACi1JbmRleDogZ2RiLTcuMC9nZGIvY29y ZWxvdy5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxvdy5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC5vcmlnL2dkYi9jb3JlbG93LmMJMjAwOS0wNy0zMSAxNzoyNToyMS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4wL2dkYi9jb3JlbG93LmMJMjAwOS0xMC0yMyAwMDox NzoyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NSw2ICs0NSwxMCBAQAotICNpbmNsdWRlICJleGNl cHRpb25zLmgiCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb3JlbG93LmMJMjAx MC0wMS0wNCAxNTo1Nzo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9jb3JlbG93LmMJMjAxMC0wMS0xNSAxMToxNDowNS4wMDAwMDAwMDAgKzAxMDAKK0BAIC00 Niw2ICs0NiwxMCBAQAogICNpbmNsdWRlICJzb2xpYi5oIgogICNpbmNsdWRlICJmaWxlbmFtZXMu aCIKKyAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCiArI2luY2x1ZGUgImF1eHYuaCIKICsjaW5jbHVk ZSAiZWxmL2NvbW1vbi5oIgogKyNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAtMTMsNyArMTMsNyBA QCBJbmRleDogZ2RiLTcuMC9nZGIvY29yZWxvdy5jCiAgCiAgCiAgI2lmbmRlZiBPX0xBUkdFRklM RQotQEAgLTI3Myw2ICsyNzcsNTIgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFz ZWN0aW9uIAorQEAgLTI5MCw2ICsyOTQsNTIgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFi ZmQsIGFzZWN0aW9uIAogICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkgLyogWWVzLCBtYWtl IGl0IGN1cnJlbnQgKi8KICB9CiAgCkBAIC02Niw3ICs2Niw3IEBAIEluZGV4OiBnZGItNy4wL2dk Yi9jb3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUgb3BlbnMgYW5kIHNldHMgdXAgdGhlIGNvcmUg ZmlsZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMzcxLDYgKzQyMSwxMiBAQCBjb3Jl X29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMzg3LDYgKzQzNywxMiBA QCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCiAgICBwdXNoX3Rhcmdl dCAoJmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCkBAIC03 NiwxMCArNzYsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2NvcmVsb3cuYwogKyAgaWYgKGJ1aWxk X2lkX2NvcmVfbG9hZHMgIT0gMCkKICsgICAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGZyb21fdHR5 KTsKICsKLSAgIGFkZF9pbmZlcmlvcl9zaWxlbnQgKGNvcmVsb3dfcGlkKTsKLSAKICAgIC8qIERv IHRoaXMgYmVmb3JlIGFja25vd2xlZGdpbmcgdGhlIGluZmVyaW9yLCBzbyBpZgotQEAgLTg3OCw0 ICs5MzQsMTEgQEAgX2luaXRpYWxpemVfY29yZWxvdyAodm9pZCkKKyAgICAgIHBvc3RfY3JlYXRl X2luZmVyaW9yIHRocm93cyAoY2FuIGhhcHBlbiBlYXNpbGx5IGlmIHlvdSdyZSBsb2FkaW5nCisg ICAgICBhIGNvcmUgZmlsZSB3aXRoIHRoZSB3cm9uZyBleGVjKSwgd2UgYXJlbid0IGxlZnQgd2l0 aCB0aHJlYWRzCitAQCAtOTI1LDQgKzk4MSwxMSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lk KQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAKICAgIGFkZF90YXJnZXQgKCZjb3JlX29wcyk7CkBA IC05MSwxMSArOTEsMTEgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5V TEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6 IGdkYi03LjAvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMDktMTAtMjMgMDA6MTI6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTM4OTYsNiArMTM4OTYsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAwMzoy Mzo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNDI1OCw2 ICsxNDI1OCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAgCkBAIC0x MjMsMTEgKzEyMywxMSBAQCBJbmRleDogZ2RiLTcuMC9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNp bmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsg c2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1 dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjAvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTI6MzguMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMC9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTc6Mjku MDAwMDAwMDAwICswMjAwCi1AQCAtMTEwMSw5ICsxMTAxLDQ5IEBAIHN2cjRfY3VycmVudF9zb3Mg KHZvaWQpCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAx MC0wMS0xNSAwMzoyMjoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9zb2xpYi1zdnI0LmMJMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKK0BA IC0xMTE2LDkgKzExMTYsNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKICAJCSAgICAgc2Fm ZV9zdHJlcnJvciAoZXJyY29kZSkpOwogIAkgIGVsc2UKICAJICAgIHsKQEAgLTE4MCwyMiArMTgw LDI1IEBAIEluZGV4OiBnZGItNy4wL2dkYi9zb2xpYi1zdnI0LmMKICAJICAgIH0KICAJICB4ZnJl ZSAoYnVmZmVyKTsKICAKLUluZGV4OiBnZGItNy4wL2dkYi9zeW1maWxlLmMKK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLm9y aWcvZ2RiL3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjAvZ2RiL3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjQzOjI4LjAwMDAwMDAwMCArMDIw MAotQEAgLTU2LDYgKzU2LDcgQEAKLSAjaW5jbHVkZSAiZWxmLWJmZC5oIgotICNpbmNsdWRlICJz b2xpYi5oIgotICNpbmNsdWRlICJyZW1vdGUuaCIKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQzOjMwLjAw MDAwMDAwMCArMDEwMAorQEAgLTM2LDYgKzM2LDEwIEBACisgI2luY2x1ZGUgImdkYi1zdGFicy5o IgorICNpbmNsdWRlICJjb21wbGFpbnRzLmgiCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCiArI2lu Y2x1ZGUgImxpYmJmZC5oIgorKyNpbmNsdWRlICJnZGJjb3JlLmgiCisrI2luY2x1ZGUgImdkYmNt ZC5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgogIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K LSAjaW5jbHVkZSA8ZmNudGwuaD4KLUBAIC0xMTczLDE2ICsxMTc0LDY1IEBAIHN5bWJvbF9maWxl X2NsZWFyIChpbnQgZnJvbV90dHkpCi0gICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBzeW1i b2wgZmlsZSBub3cuXG4iKSk7Ci0gfQorIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQg KHZvaWQpOwogIAorQEAgLTU2Nyw2ICs1NzEsMjAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZQorIAl9CisgICAgIH0KKyB9CiArLyogTG9jYXRlIE5UX0dOVV9CVUlM RF9JRCBhbmQgcmV0dXJuIGl0cyBtYXRjaGluZyBkZWJ1ZyBmaWxlbmFtZS4KICsgICBGSVhNRTog Tk9URSBkZWNvZGluZyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIHRoZSBCRkQgY29yZSBub3RlcyBk ZWNvZGluZy4gICovCiArCkBAIC0yMTAsMTAgKzIxMywxMCBAQCBJbmRleDogZ2RiLTcuMC9nZGIv c3ltZmlsZS5jCiArICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJWZXJib3NpdHkgbGV2ZWwg b2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IgaXMgJXMuXG4iKSwKICsJCSAgICB2YWx1ZSk7CiArfQot KworIAogIHN0cnVjdCBidWlsZF9pZAogICAgewotICAgICBzaXplX3Qgc2l6ZTsKK0BAIC01NzQs MTAgKzU5Miw0NCBAQCBzdHJ1Y3QgYnVpbGRfaWQKICAgICAgZ2RiX2J5dGUgZGF0YVsxXTsKICAg IH07CiAgCkBAIC0yNjAsNyArMjYzLDcgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL3N5bWZpbGUuYwog IHsKICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTExOTgsNiArMTI0OCwzNDgg QEAgYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQorQEAgLTU5Myw2ICs2NDUsMzQ4IEBAIGJ1 aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAt NjA5LDcgKzYxMiw3IEBAIEluZGV4OiBnZGItNy4wL2dkYi9zeW1maWxlLmMKICAvKiBSZXR1cm4g aWYgRklMRU5BTUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUu ICAqLwogIAogIHN0YXRpYyBpbnQKLUBAIC0xMjE1LDcgKzE2MDcsNyBAQCBidWlsZF9pZF92ZXJp ZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtNjA3LDcgKzEwMDEsNyBAQCBidWlsZF9p ZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICBpZiAoYWJmZCA9PSBOVUxMKQog ICAgICByZXR1cm4gMDsKICAKQEAgLTYxOCw3ICs2MjEsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIv c3ltZmlsZS5jCiAgCiAgICBpZiAoZm91bmQgPT0gTlVMTCkKICAgICAgd2FybmluZyAoXygiRmls ZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlkLCBmaWxlIHNraXBwZWQiKSwgZmlsZW5hbWUpOwotQEAg LTEyMzQsMTQgKzE2MjYsMTYgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFt ZSwgcworQEAgLTYyNiwxNCArMTAyMCwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIg KmZpbGVuYW1lLCBzCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYzOSw3ICs2NDIsNyBA QCBJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNv bXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAg ICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTEyNzIsNyArMTY2 NiwxMCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtNjY0 LDcgKzEwNjAsMTAgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAog IAkqcysrID0gJy8nOwogICAgICAgIHdoaWxlIChzaXplLS0gPiAwKQogIAlzICs9IHNwcmludGYg KHMsICIlMDJ4IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKQEAgLTY1MSw3ICs2NTQsNyBAQCBJbmRl eDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiAgCiAgICAgICAgLyogbHJlYWxwYXRoKCkgaXMgZXhw ZW5zaXZlIGV2ZW4gZm9yIHRoZSB1c3VhbGx5IG5vbi1leGlzdGVudCBmaWxlcy4gICovCiAgICAg ICAgaWYgKGFjY2VzcyAobGluaywgRl9PSykgPT0gMCkKLUBAIC0xMjg1LDE1ICsxNjgyLDE4NSBA QCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtNjc3LDE3ICsx MDc2LDE4OCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAgCX0K ICAKICAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCkBAIC02OTYsOSArNjk5LDkgQEAgSW5kZXg6 IGdkYi03LjAvZ2RiL3N5bWZpbGUuYwogKyAgeGZyZWUgKGxpbmspOwogKyAgeGZyZWUgKGxpbmtf YWxsKTsKICsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKworICAgcmV0dXJuIHJldHZhbDsKKyB9 CisgCiArLyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9ubHkg Zm9yIHRoZSBkdXBsaWNpdGUgbWVzc2FnZXMKICsgICAgIFRyeSB0byBpbnN0YWxsIHRoZSBoYXNo IGZpbGUgLi4uCiArICAgYXZvaWRhbmNlLiAgKi8KQEAgLTcyMSw5ICs3MjQsOSBAQCBJbmRleDog Z2RiLTcuMC9nZGIvc3ltZmlsZS5jCiArCiArICByZXR2YWwgPSBvYnN0YWNrX2FsbG9jICgmbWlz c2luZ19maWxlcGFpcl9vYnN0YWNrLCBzaXplKTsKICsgIG1lbXNldCAocmV0dmFsLCAwLCBzaXpl KTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAorKyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCiAr c3RhdGljIGhhc2h2YWxfdAogK21pc3NpbmdfZmlsZXBhaXJfaGFzaF9mdW5jIChjb25zdCBzdHJ1 Y3QgbWlzc2luZ19maWxlcGFpciAqZWxlbSkKICt7CkBAIC04MzYsNzAgKzgzOSw4OCBAQCBJbmRl eDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiArfQogKwogIHN0YXRpYyBjaGFyICoKLSBnZXRfZGVi dWdfbGlua19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgbG9uZyAqY3Jj MzJfb3V0KQorLWZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKKytmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCSAgICAgY2hhciAqKmJ1aWxkX2lkX2ZpbGVuYW1l X3JldHVybikKICB7Ci1AQCAtMTM4NCwxMyArMTk1MSwxNCBAQCBmaW5kX3NlcGFyYXRlX2RlYnVn X2ZpbGUgKHN0cnVjdCBvYmpmaWxlCi0gICB1bnNpZ25lZCBsb25nIGNyYzMyOworICAgYXNlY3Rp b24gKnNlY3Q7CisgICBjaGFyICpiYXNlbmFtZSwgKm5hbWVfY29weSwgKmRlYnVnZGlyOworQEAg LTY5OSwxMiArMTI2OSwxNiBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAo c3RyCiAgICBpbnQgaTsKICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7Ci0rICBjaGFyICpi dWlsZF9pZF9maWxlbmFtZSA9IE5VTEw7CiAgCiAtICBidWlsZF9pZCA9IGJ1aWxkX2lkX2JmZF9n ZXQgKG9iamZpbGUtPm9iZmQpOworKyAgaWYgKGJ1aWxkX2lkX2ZpbGVuYW1lX3JldHVybikKKysg ICAgKmJ1aWxkX2lkX2ZpbGVuYW1lX3JldHVybiA9IE5VTEw7CisrCiArICBidWlsZF9pZCA9IGJ1 aWxkX2lkX2JmZF9zaGRyX2dldCAob2JqZmlsZS0+b2JmZCk7CiAgICBpZiAoYnVpbGRfaWQgIT0g TlVMTCkKICAgICAgewogICAgICAgIGNoYXIgKmJ1aWxkX2lkX25hbWU7CiAgCiAtICAgICAgYnVp bGRfaWRfbmFtZSA9IGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChidWlsZF9pZCk7Ci0rICAg ICAgYnVpbGRfaWRfbmFtZSA9IGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChidWlsZF9pZCwgJmJ1aWxk X2lkX2ZpbGVuYW1lLCAxKTsKKysgICAgICBidWlsZF9pZF9uYW1lID0gYnVpbGRfaWRfdG9fZmls ZW5hbWUgKGJ1aWxkX2lkLCBidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4sCisrCQkJCQkgICAgMSk7 CiAgICAgICAgeGZyZWUgKGJ1aWxkX2lkKTsKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24g YSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0g TlVMTCAmJiBzdHJjbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZpbGUtPm5hbWUpID09IDApCi1AQCAt MTQwMCw3ICsxOTY4LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZp bGUKK0BAIC03MTQsNyArMTI4OCw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWls ZGlkIChzdHIKICAJICB4ZnJlZSAoYnVpbGRfaWRfbmFtZSk7CiAgCX0KICAgICAgICBlbHNlIGlm IChidWlsZF9pZF9uYW1lICE9IE5VTEwpCiAtICAgICAgICByZXR1cm4gYnVpbGRfaWRfbmFtZTsK LSsJewotKwkgIHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7Ci0rCSAgcmV0dXJuIGJ1aWxkX2lk X25hbWU7Ci0rCX0KKysJcmV0dXJuIGJ1aWxkX2lkX25hbWU7CiAgICAgIH0KKyAgIHJldHVybiBO VUxMOworIH0KK0BAIC04ODcsOSArMTQ2MSwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsCisgICAgICBgLmdudV9kZWJ1Z2xpbmsnIG1heSBubyBsb25nZXIgYmUg cHJlc2VudCB3aXRoIGAubm90ZS5nbnUuYnVpbGQtaWQnLiAgKi8KKyAgIGVsc2UKKyAgICAgewor LSAgICAgIGNoYXIgKmRlYnVnZmlsZTsKKysgICAgICBjaGFyICpkZWJ1Z2ZpbGUsICpidWlsZF9p ZF9maWxlbmFtZTsKKyAKKy0gICAgICBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfYnVpbGRpZCAob2JqZmlsZSk7CisrICAgICAgZGVidWdmaWxlID0gZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsCisrCQkJCQkJICAgICAgICZidWlsZF9p ZF9maWxlbmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnZmlsZSA9PSBOVUxMKQorIAlkZWJ1Z2Zp bGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rIChvYmpmaWxlKTsKK0BA IC05MDAsNiArMTQ3NSwxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsCisgCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChhYmZkLCBzeW1maWxlX2ZsYWdzLCBv YmpmaWxlKTsKKyAJICB4ZnJlZSAoZGVidWdmaWxlKTsKKyAJfQorKyAgICAgIC8qIENoZWNrIGlm IGFueSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGhhcyBiZWVuIGV4dHJhY3RlZCBvdXQuICAqLworKyAg ICAgIGVsc2UgaWYgKGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLmdu dV9kZWJ1Z2xpbmsiKQorKwkgICAgICAgIT0gTlVMTCkKKysJZGVidWdfcHJpbnRfbWlzc2luZyAo b2JqZmlsZS0+bmFtZSwgYnVpbGRfaWRfZmlsZW5hbWUpOworKworKyAgICAgIHhmcmVlIChidWls ZF9pZF9maWxlbmFtZSk7CisgICAgIH0KKyB9CiAgCi0gICBiYXNlbmFtZSA9IGdldF9kZWJ1Z19s aW5rX2luZm8gKG9iamZpbGUsICZjcmMzMik7Ci1AQCAtMTUwMSw4ICsyMDcyLDEwIEBAIGZpbmRf c2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKLSAgIAotICAgeGZyZWUgKGRlYnVn ZmlsZSk7Ci0gICBkZWJ1Z2ZpbGUgPSBOVUxMOwotKyAgZGVidWdfcHJpbnRfbWlzc2luZyAob2Jq ZmlsZS0+bmFtZSwgYnVpbGRfaWRfZmlsZW5hbWUpOwotIAotIGNsZWFudXBfcmV0dXJuX2RlYnVn ZmlsZToKLSsgIHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7Ci0gICB4ZnJlZSAoY2Fub25fbmFt ZSk7Ci0gICB4ZnJlZSAoYmFzZW5hbWUpOwotICAgeGZyZWUgKGRpcik7Ci1AQCAtNDI1Niw0ICs0 ODI5LDE2IEBAIGVhY2ggZ2xvYmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNvbXBvbmUKLSAJCQkJ ICAgICBOVUxMLAotIAkJCQkgICAgIHNob3dfZGVidWdfZmlsZV9kaXJlY3RvcnksCi0gCQkJCSAg ICAgJnNldGxpc3QsICZzaG93bGlzdCk7Ci0rCi0rICAgYWRkX3NldHNob3dfemludGVnZXJfY21k ICgiYnVpbGQtaWQtdmVyYm9zZSIsIG5vX2NsYXNzLCAmYnVpbGRfaWRfdmVyYm9zZSwKLSsgCQkJ ICAgIF8oIlwKLSsgU2V0IGRlYnVnZ2luZyBsZXZlbCBvZiB0aGUgYnVpbGQtaWQgbG9jYXRvci4i KSwgXygiXAotKyBTaG93IGRlYnVnZ2luZyBsZXZlbCBvZiB0aGUgYnVpbGQtaWQgbG9jYXRvci4i KSwgXygiXAotKyBMZXZlbCAxIChkZWZhdWx0KSBlbmFibGVzIHByaW50aW5nIHRoZSBtaXNzaW5n IGRlYnVnIGZpbGVuYW1lcyxcblwKLSsgbGV2ZWwgMiBhbHNvIHByaW50cyB0aGUgcGFyc2luZyBv ZiBiaW5hcmllcyB0byBmaW5kIHRoZSBpZGVudGlmaWNhdG9ycy4iKSwKLSsgCQkJICAgIE5VTEws Ci0rIAkJCSAgICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UsCi0rIAkJCSAgICAmc2V0bGlzdCwgJnNo b3dsaXN0KTsKLSsKLSsgICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9jaGFuZ2VkIChkZWJ1 Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOworQEAgLTEwNzIsNCArMTY1MywxNiBAQCB2b2lk CisgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKKyB7CisgICBhZGRfc3ltdGFiX2ZucyAoJmVs Zl9zeW1fZm5zKTsKKysKKysgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoImJ1aWxkLWlkLXZl cmJvc2UiLCBub19jbGFzcywgJmJ1aWxkX2lkX3ZlcmJvc2UsCisrCQkJICAgIF8oIlwKKytTZXQg ZGVidWdnaW5nIGxldmVsIG9mIHRoZSBidWlsZC1pZCBsb2NhdG9yLiIpLCBfKCJcCisrU2hvdyBk ZWJ1Z2dpbmcgbGV2ZWwgb2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IuIiksIF8oIlwKKytMZXZlbCAx IChkZWZhdWx0KSBlbmFibGVzIHByaW50aW5nIHRoZSBtaXNzaW5nIGRlYnVnIGZpbGVuYW1lcyxc blwKKytsZXZlbCAyIGFsc28gcHJpbnRzIHRoZSBwYXJzaW5nIG9mIGJpbmFyaWVzIHRvIGZpbmQg dGhlIGlkZW50aWZpY2F0b3JzLiIpLAorKwkJCSAgICBOVUxMLAorKwkJCSAgICBzaG93X2J1aWxk X2lkX3ZlcmJvc2UsCisrCQkJICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOworKworKyAgb2JzZXJ2 ZXJfYXR0YWNoX2V4ZWN1dGFibGVfY2hhbmdlZCAoZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFu Z2VkKTsKICB9Ci1JbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC5vcmlnL2dk Yi9zeW1maWxlLmgJMjAwOS0xMC0yMyAwMDoxMjozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4wL2dkYi9zeW1maWxlLmgJMjAwOS0xMC0yMyAwMDoxNzoyOS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0zODEsNiArMzgxLDEzIEBAIGV4dGVybiBpbnQgc3ltZmlsZV9tYXBfb2Zmc2V0c190b19zZWdt ZW4KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1 IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5 bWZpbGUuaAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAorQEAgLTM5Miw2ICsz OTIsMTMgQEAgZXh0ZXJuIGludCBzeW1maWxlX21hcF9vZmZzZXRzX3RvX3NlZ21lbgogIHN0cnVj dCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZ2V0X3N5bWZpbGVfc2VnbWVudF9kYXRhIChiZmQgKmFi ZmQpOwogIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHN5bWZpbGVfc2Vn bWVudF9kYXRhICpkYXRhKTsKICAKQEAgLTkxMywxMCArOTM0LDEwIEBAIEluZGV4OiBnZGItNy4w L2dkYi9zeW1maWxlLmgKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAogIGV4dGVybiBpbnQg ZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLUluZGV4OiBnZGItNy4wL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTEwLTIzIDAwOjE3OjI5LjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDEtMTUgMTE6 MTI6MzMuMDAwMDAwMDAwICswMTAwCiBAQCAtMTI0OCw2ICsxMjQ4LDE2IEBAIHByb2MgZGVmYXVs dF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGgg dG8gMC4iCiAgCX0KQEAgLTkzNCwxMCArOTU1LDEwIEBAIEluZGV4OiBnZGItNy4wL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDA7CiAgfQogIAotSW5kZXg6IGdkYi03LjAv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMDktMDktMTUgMjA6 NTE6MjYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2xpYi9taS1z dXBwb3J0LmV4cAkyMDA5LTEwLTIzIDAwOjE3OjI5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEw LTAxLTEyIDIyOjQwOjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0xNSAxMToxMjozMy4wMDAw MDAwMDAgKzAxMDAKIEBAIC0yMjEsNiArMjIxLDE2IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3Rh cnQgeyBhcmdzIH0gewogIAkgICAgfQogICAgICAJfQpAQCAtOTU1LDExICs5NzYsMTEgQEAgSW5k ZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAKICAgICAgZGV0 ZWN0X2FzeW5jCiAgCi1JbmRleDogZ2RiLTcuMC9nZGIvb2JqZmlsZXMuaAorSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLm9y aWcvZ2RiL29iamZpbGVzLmgJMjAwOS0xMC0yMyAwMDoxMjozOC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4wL2dkYi9vYmpmaWxlcy5oCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICsw MjAwCi1AQCAtNDI4LDYgKzQyOCwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQorLS0tIGdkYi03LjAuNTAu MjAxMDAxMTUub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVzLmgJMjAxMC0wMS0x NSAxMToxNDo0Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC00NDAsNiArNDQwLDEwIEBAIHN0cnVjdCBv YmpmaWxlCiAgCiAgI2RlZmluZSBPQkpGX01BSU4gKDEgPDwgNykKICAKQEAgLTk2Nyw2ICs5ODgs NiBAQCBJbmRleDogZ2RiLTcuMC9nZGIvb2JqZmlsZXMuaAogKwogKyNkZWZpbmUgT0JKRl9CVUlM RF9JRF9DT1JFX0xPQURFRCAoMSA8PCAxMikKICsKLSAvKiBUaGUgb2JqZWN0IGZpbGUgdGhhdCB0 aGUgbWFpbiBzeW1ib2wgdGFibGUgd2FzIGxvYWRlZCBmcm9tIChlLmcuIHRoZQotICAgIGFyZ3Vt ZW50IHRvIHRoZSAic3ltYm9sLWZpbGUiIG9yICJmaWxlIiBjb21tYW5kKS4gICovCisgLyogVGhl IG9iamVjdCBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHJ1bnRpbWUgY29tbW9uIG1pbmltYWwgc3lt Ym9scworICAgIGZvciBTdW5PUzQuIE5vdGUgdGhhdCB0aGlzIG9iamZpbGUgaGFzIG5vIGFzc29j aWF0ZWQgQkZELiAgKi8KICAKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0 YWNoLWluZm8ucGF0Y2ggYi9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNoLWluZm8ucGF0Y2gK aW5kZXggOWQxNzc3OC4uMDc1ZTExOCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1iejIzNTE5Ny1mb3Jr LWRldGFjaC1pbmZvLnBhdGNoCisrKyBiL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5m by5wYXRjaApAQCAtMywyMyArMywyMyBAQAogCVBvcnQgdG8gR0RCLTYuOHByZS4KIAlSZW1vdmUg dGhlIGBbJyBjaGFyYWN0ZXIgZnJvbSB0aGUgR0RCLTYuOCBkZWZhdWx0IG1lc3NhZ2UuCiAKLUlu ZGV4OiBnZGItNi43LjUwLjIwMDgwMjI3L2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuNy41MC4y MDA4MDIyNy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDA4LTAzLTAxIDEwOjMwOjQ4LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi02LjcuNTAuMjAwODAyMjcvZ2RiL2xpbnV4LW5hdC5jCTIwMDgtMDMt MDEgMTA6NDg6MjUuMDAwMDAwMDAwICswMTAwCi1AQCAtNDE1LDcgKzQxNSw3IEBAIGxpbnV4X2No aWxkX2ZvbGxvd19mb3JrIChzdHJ1Y3QgdGFyZ2V0X28KLSAgICAgICAvKiBEZXRhY2ggbmV3IGZv cmtlZCBwcm9jZXNzPyAgKi8KLSAgICAgICBpZiAoZGV0YWNoX2ZvcmspCi0gCXsKKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjI6MzEu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJ MjAxMC0wMS0xNSAwMzoyMzoyOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC03MjQsNyArNzI0LDcgQEAg aG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZQorIAkgICAgICByZW1vdmVf YnJlYWtwb2ludHNfcGlkIChHRVRfUElEIChpbmZlcmlvcl9wdGlkKSk7CisgCSAgICB9CisgCiAt CSAgaWYgKGluZm9fdmVyYm9zZSB8fCBkZWJ1Z19saW51eF9uYXQpCiArCSAgaWYgKDEgLyogRmVk b3JhIEJ1ZyAyMzUxOTcgKi8gfHwgaW5mb192ZXJib3NlIHx8IGRlYnVnX2xpbnV4X25hdCkKICAJ ICAgIHsKICAJICAgICAgdGFyZ2V0X3Rlcm1pbmFsX291cnMgKCk7CiAgCSAgICAgIGZwcmludGZf ZmlsdGVyZWQgKGdkYl9zdGRsb2csCi1JbmRleDogZ2RiLTYuNy41MC4yMDA4MDIyNy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02Ljcu NTAuMjAwODAyMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5jCTIwMDgtMDMt MDEgMTA6MzA6NDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmMJMjAxMC0wMS0xNSAwMzoyMjo1Mi4wMDAw MDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsNTcgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtNzgsMTAgKzc4LDEwIEBAIEluZGV4OiBn ZGItNi43LjUwLjIwMDgwMjI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guYwog KyAgICB9CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTYuNy41MC4yMDA4MDIyNy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAorSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNi43LjUwLjIwMDgwMjI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guZXhw CTIwMDgtMDMtMDEgMTA6NDk6MzYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAkyMDEwLTAxLTE1IDAz OjIyOjUyLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw0MyBAQAogKyMgQ29weXJpZ2h0IDIw MDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYu Ni1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaCBiL2dkYi02LjYt c2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKaW5kZXggNWI1OTE3 ZC4uNDg3MzYwOCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3 LXdhdGNocG9pbnRzMi5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAt c3ctd2F0Y2hwb2ludHMyLnBhdGNoCkBAIC0yMSwxMSArMjEsMTEgQEAKIAogCVBvcnQgdG8gR0RC LTYuOHByZS4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZmVyaW9yLmgKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZlcmlvci5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9pbmZlcmlvci5oCTIwMDktMDYtMjggMDI6MjA6 MjIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvaW5mZXJpb3Iu aAkyMDA5LTA4LTAzIDE3OjE5OjU2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4MSw3ICsxODEsMTUg QEAgZXh0ZXJuIHZvaWQgcmVvcGVuX2V4ZWNfZmlsZSAodm9pZCk7CistLS0gZ2RiLTcuMC41MC4y MDEwMDExNS5vcmlnL2dkYi9pbmZlcmlvci5oCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mZXJpb3IuaAkyMDEwLTAxLTE1 IDAzOjE3OjA3LjAwMDAwMDAwMCArMDEwMAorQEAgLTE4OCw3ICsxODgsMTUgQEAgZXh0ZXJuIHZv aWQgcmVvcGVuX2V4ZWNfZmlsZSAodm9pZCk7CiAgLyogVGhlIGByZXN1bWUnIHJvdXRpbmUgc2hv dWxkIG9ubHkgYmUgY2FsbGVkIGluIHNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4KICAgICBOb3JtYWxs eSwgdXNlIGBwcm9jZWVkJywgd2hpY2ggaGFuZGxlcyBhIGxvdCBvZiBib29ra2VlcGluZy4gICov CiAgCkBAIC00MiwxMSArNDIsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2lu ZmVyaW9yLmgKICAKICAvKiBGcm9tIG1pc2MgZmlsZXMgKi8KICAKLUluZGV4OiBnZGItNi44LjUw LjIwMDkwODAzL2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2lu ZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9pbmZy dW4uYwkyMDA5LTA3LTMxIDAxOjAxOjI3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAu MjAwOTA4MDMvZ2RiL2luZnJ1bi5jCTIwMDktMDgtMDMgMjE6Mzk6MjguMDAwMDAwMDAwICswMjAw Ci1AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMDEtMTUgMDM6MTY6NDMu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mcnVuLmMJMjAx MC0wMS0xNSAwMzoxNzozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC03Nyw3ICs3Nyw3IEBAIHN0YXRp YyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOwogIHN0YXRpYyB2b2lkIHNldF9zY2hlZGxvY2tfZnVu YyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LAogIAkJCQlzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYyk7CiAgCkBAIC01NSw3ICs1NSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dk Yi9pbmZydW4uYwogIAogIHN0YXRpYyBpbnQgY3VycmVudGx5X3N0ZXBwaW5nX29yX25leHRpbmdf Y2FsbGJhY2sgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsCiAgCQkJCQkJICAgdm9pZCAqZGF0YSk7 Ci1AQCAtMTEzNyw3ICsxMTM3LDcgQEAgbWF5YmVfc29mdHdhcmVfc2luZ2xlc3RlcCAoc3RydWN0 IGdkYmFyYworQEAgLTEzNjMsNyArMTM2Myw3IEBAIG1heWJlX3NvZnR3YXJlX3NpbmdsZXN0ZXAg KHN0cnVjdCBnZGJhcmMKICAgICBTVEVQIG5vbnplcm8gaWYgd2Ugc2hvdWxkIHN0ZXAgKHplcm8g dG8gY29udGludWUgaW5zdGVhZCkuCiAgICAgU0lHIGlzIHRoZSBzaWduYWwgdG8gZ2l2ZSB0aGUg aW5mZXJpb3IgKHplcm8gZm9yIG5vbmUpLiAgKi8KICB2b2lkCkBAIC02NCw3ICs2NCw3IEBAIElu ZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pbmZydW4uYwogIHsKICAgIGludCBzaG91bGRf cmVzdW1lID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFu dXAgKHJlc3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTE0OSwxMCArMTE0OSwxMiBAQCByZXN1bWUg KGludCBzdGVwLCBlbnVtIHRhcmdldF9zaWduYWwgc2lnCitAQCAtMTM3NiwxMCArMTM3NiwxMiBA QCByZXN1bWUgKGludCBzdGVwLCBlbnVtIHRhcmdldF9zaWduYWwgc2lnCiAgICBRVUlUOwogIAog ICAgaWYgKGRlYnVnX2luZnJ1bikKQEAgLTgxLDcgKzgxLDcgQEAgSW5kZXg6IGdkYi02LjguNTAu MjAwOTA4MDMvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBTb21lIHRhcmdldHMgKGUuZy4gU29sYXJp cyB4ODYpIGhhdmUgYSBrZXJuZWwgYnVnIHdoZW4gc3RlcHBpbmcKICAgICAgIG92ZXIgYW4gaW5z dHJ1Y3Rpb24gdGhhdCBjYXVzZXMgYSBwYWdlIGZhdWx0IHdpdGhvdXQgdHJpZ2dlcmluZwotQEAg LTEyNzEsOSArMTI3MywxMCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBvciBganVtcCcgdG8g Y29uCitAQCAtMTUwMSw5ICsxNTAzLDEwIEBAIGEgY29tbWFuZCBsaWtlIGByZXR1cm4nIG9yIGBq dW1wJyB0byBjb24KICAJICAgICBpbmRpdmlkdWFsbHkuICAqLwogIAkgIHJlc3VtZV9wdGlkID0g aW5mZXJpb3JfcHRpZDsKICAJfQpAQCAtOTQsMTYgKzk0LDE2IEBAIEluZGV4OiBnZGItNi44LjUw LjIwMDkwODAzL2dkYi9pbmZydW4uYwogIAl7CiAgCSAgLyogVXNlci1zZXR0YWJsZSAnc2NoZWR1 bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gKi8KICAJICByZXN1bWVfcHRp ZCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtMTQ3NCw3ICsxNDc3LDcgQEAgcHJvY2VlZCAoQ09SRV9B RERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7CitA QCAtMTcwOSw3ICsxNzEyLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0 X3NpZwogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQUREUiBwYzsKKyAgIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2U7CiAtICBpbnQgb25lcHJvYyA9IDA7CiArICBlbnVt IHJlc3VtZV9zdGVwIHJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBfQ09OVElOVUU7CiAgCiAgICAv KiBJZiB3ZSdyZSBzdG9wcGVkIGF0IGEgZm9yay92Zm9yaywgZm9sbG93IHRoZSBicmFuY2ggc2V0 IGJ5IHRoZQogICAgICAgInNldCBmb2xsb3ctZm9yay1tb2RlIiBjb21tYW5kOyBvdGhlcndpc2Us IHdlJ2xsIGp1c3QgcHJvY2VlZAotQEAgLTE1MDgsMTMgKzE1MTEsMTMgQEAgcHJvY2VlZCAoQ09S RV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE3NDQsMTMgKzE3NDcsMTMgQEAgcHJv Y2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgICBhY3R1YWxseSBiZSBl eGVjdXRpbmcgdGhlIGJyZWFrcG9pbnQgaW5zbiBhbnl3YXkuCiAgCSAgIFdlJ2xsIGJlICh1bi0p ZXhlY3V0aW5nIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCiAgCkBAIC0xMTksNyArMTE5 LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZnJ1bi5jCiAgICAgIH0KICAg IGVsc2UKICAgICAgewotQEAgLTE1NDUsMTMgKzE1NDgsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERS IGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE3ODEsMTMgKzE3ODQsMTMgQEAgcHJvY2VlZCAo Q09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgaXMgcmVxdWlyZWQgaXQgcmV0dXJu cyBUUlVFIGFuZCBzZXRzIHRoZSBjdXJyZW50IHRocmVhZCB0bwogIAkgdGhlIG9sZCB0aHJlYWQu ICovCiAgICAgICAgaWYgKHByZXBhcmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBAIC0xMzUsNyArMTM1 LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZnJ1bi5jCiAgICAgIHsKICAg ICAgICB0cC0+dHJhcF9leHBlY3RlZCA9IDE7CiAgICAgICAgLyogSWYgZGlzcGxhY2VkIHN0ZXBw aW5nIGlzIGVuYWJsZWQsIHdlIGNhbiBzdGVwIG92ZXIgdGhlCi1AQCAtMTYzNyw4ICsxNjQwLDEz IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0xODczLDgg KzE4NzYsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogICAg LyogUmVzZXQgdG8gbm9ybWFsIHN0YXRlLiAgKi8KICAgIGluaXRfaW5md2FpdF9zdGF0ZSAoKTsK ICAKQEAgLTE1MCw3ICsxNTAsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvaW5m cnVuLmMKICAKICAgIC8qIFdhaXQgZm9yIGl0IHRvIHN0b3AgKGlmIG5vdCBzdGFuZGFsb25lKQog ICAgICAgYW5kIGluIGFueSBjYXNlIGRlY29kZSB3aHkgaXQgc3RvcHBlZCwgYW5kIGFjdCBhY2Nv cmRpbmdseS4gICovCi1AQCAtNDE3MSwxMyArNDE3OSwxOCBAQCBpbmZydW46IG5vdCBzd2l0Y2hp bmcgYmFjayB0byBzdGVwcGVkIHRoCitAQCAtNDY1NSwxMyArNDY2MywxOCBAQCBpbmZydW46IG5v dCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCiAgCiAgLyogSXMgdGhyZWFkIFRQIGluIHRo ZSBtaWRkbGUgb2Ygc2luZ2xlLXN0ZXBwaW5nPyAgKi8KICAKQEAgLTE3NCwxMSArMTc0LDExIEBA IEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pbmZydW4uYwogIH0KICAKICAvKiBSZXR1 cm5zIHRydWUgaWYgYW55IHRocmVhZCAqYnV0KiB0aGUgb25lIHBhc3NlZCBpbiAiZGF0YSIgaXMg aW4gdGhlCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0LmMKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0wNy0zMSAxNzoyNToy MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQu YwkyMDA5LTA4LTAzIDIxOjM5OjEwLjAwMDAwMDAwMCArMDIwMAotQEAgLTIzNTEsNyArMjM1MSwx MCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqCistLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCTIw MTAtMDEtMTUgMDM6MTc6MDcuMDAwMDAwMDAwICswMTAwCitAQCAtMjg4Myw3ICsyODgzLDEwIEBA IGNvdW50X2V2ZW50c19jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICoKICBzdGF0aWMgaW50CiAg c2VsZWN0X3NpbmdsZXN0ZXBfbHdwX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lk ICpkYXRhKQogIHsKQEAgLTE5MCwxMCArMTkwLDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw ODAzL2dkYi9saW51eC1uYXQuYwogICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAgICAgcmV0dXJu IDA7Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0LmgKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuaAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02 LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvbGludXgtbmF0LmgJMjAwOS0wNS0xOCAxOToxMToyNS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQuaAky MDA5LTA4LTAzIDIxOjM5OjA5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMC0wMS0xMiAyMjo0MDoyNC4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuaAkyMDEwLTAxLTE1IDAz OjE3OjA3LjAwMDAwMDAwMCArMDEwMAogQEAgLTU1LDggKzU1LDggQEAgc3RydWN0IGx3cF9pbmZv CiAgICAvKiBJZiBub24temVybywgYSBwZW5kaW5nIHdhaXQgc3RhdHVzLiAgKi8KICAgIGludCBz dGF0dXM7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9w cGVkLnBhdGNoIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNo CmluZGV4IDRjNDYyZTEuLmE1MTgxMjIgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtYXR0YWNoLXNpZ25h bGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAorKysgYi9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQt ZGV0YWNoLXN0b3BwZWQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTYuOC41MC4y MDA5MDgwMy9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9s aW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIv bGludXgtbmF0LmMJMjAwOS0wOC0wMyAxNzoyNDowMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ni44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQuYwkyMDA5LTA4LTAzIDE3OjI3OjIzLjAwMDAw MDAwMCArMDIwMAotQEAgLTIwMiw2ICsyMDIsOSBAQCBibG9ja2VkLiAgKi8KKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMTE6NTM6MzQuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAx MC0wMS0xNSAxMjoxMzo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMDgsNiArMjA4LDkgQEAgYmxv Y2tlZC4gICovCiAgc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzICpsaW51eF9vcHM7CiAgc3RhdGlj IHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X29wc19zYXZlZDsKICAKQEAgLTEyLDggKzEyLDggQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiAgLyogVGhlIG1ldGhv ZCB0byBjYWxsLCBpZiBhbnksIHdoZW4gYSBuZXcgdGhyZWFkIGlzIGF0dGFjaGVkLiAgKi8KICBz dGF0aWMgdm9pZCAoKmxpbnV4X25hdF9uZXdfdGhyZWFkKSAocHRpZF90KTsKICAKLUBAIC03OTAs NyArNzkzLDE0IEBAIGxpbnV4X2NoaWxkX2ZvbGxvd19mb3JrIChzdHJ1Y3QgdGFyZ2V0X28KLSAJ ICBsaW51eF9wYXJlbnRfcGlkID0gcGFyZW50X3BpZDsKK0BAIC05MzMsNyArOTM2LDE0IEBAIEF0 dGFjaGluZyBhZnRlciBwcm9jZXNzICVkIGZvcmsgdG8gY2hpbGQKKyAJICBwYXJlbnRfaW5mLT53 YWl0aW5nX2Zvcl92Zm9ya19kb25lID0gMDsKICAJfQogICAgICAgIGVsc2UgaWYgKGRldGFjaF9m b3JrKQogLQl0YXJnZXRfZGV0YWNoIChOVUxMLCAwKTsKQEAgLTI2LDkgKzI2LDkgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiArCSAgdGFyZ2V0X2RldGFjaCAo TlVMTCwgMCk7CiArCX0KICAKLSAgICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZF9idWlsZCAoY2hp bGRfcGlkLCBjaGlsZF9waWQsIDApOwotICAgICAgIGFkZF90aHJlYWQgKGluZmVyaW9yX3B0aWQp OwotQEAgLTEyMzEsNiArMTI0MSw3IEBAIGxpbnV4X25hdF9wb3N0X2F0dGFjaF93YWl0IChwdGlk X3QgcHRpZCwKKyAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRldGFjaCBhYm92ZSBtYWtlcyBQQVJF TlRfSU5GIGRhbmdsaW5nLiAgKi8KKyAKK0BAIC0xNDI3LDYgKzE0MzcsNyBAQCBsaW51eF9uYXRf cG9zdF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCiAgICAgICAgaWYgKGRlYnVnX2xpbnV4X25h dCkKICAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogIAkJCSAgICAiTE5QQVc6IEF0 dGFjaGluZyB0byBhIHN0b3BwZWQgcHJvY2Vzc1xuIik7CkBAIC0zNiw4ICszNiw4IEBAIEluZGV4 OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQuYwogIAogICAgICAgIC8qIFRoZSBw cm9jZXNzIGlzIGRlZmluaXRlbHkgc3RvcHBlZC4gIEl0IGlzIGluIGEgam9iIGNvbnRyb2wKICAJ IHN0b3AsIHVubGVzcyB0aGUga2VybmVsIHByZWRhdGVzIHRoZSBUQVNLX1NUT1BQRUQgLwotQEAg LTE1MTIsNiArMTUyMyw5IEBAIEdQVDogbHdwICVzIGhhZCBzaWduYWwgJXMsIGJ1dCBpdCBpcyBp biAKLSAJKnN0YXR1cyA9IGxwLT5zdGF0dXM7CitAQCAtMTc1Nyw2ICsxNzY4LDkgQEAgR1BUOiBs d3AgJXMgaGFkIHNpZ25hbCAlcywgYnV0IGl0IGlzIGluIAorIAkJCSAgICB0YXJnZXRfc2lnbmFs X3RvX3N0cmluZyAoc2lnbm8pKTsKICAgICAgfQogIAogKyAgaWYgKCpzdGF0dXMgPT0gMCAmJiBH RVRfUElEIChscC0+cHRpZCkgPT0gcGlkX3dhc19zdG9wcGVkKQpAQCAtNDYsNyArNDYsNyBAQCBJ bmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0LmMKICAgIHJldHVybiAwOwog IH0KICAKLUBAIC0xNjIxLDYgKzE2MzUsOCBAQCBsaW51eF9uYXRfZGV0YWNoIChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzCitAQCAtMTg2Niw2ICsxODgwLDggQEAgbGludXhfbmF0X2RldGFjaCAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcwogICAgICB9CiAgICBlbHNlCiAgICAgIGxpbnV4X29wcy0+dG9f ZGV0YWNoIChvcHMsIGFyZ3MsIGZyb21fdHR5KTsKQEAgLTU1LDcgKzU1LDcgQEAgSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIFJlc3VtZSBMUC4g ICovCi1AQCAtMTc3NCw2ICsxNzkwLDE0IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMKK0BAIC0yMDMxLDYgKzIwNDcsMTQgQEAgbGludXhfbmF0X3Jlc3VtZSAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcwogICAgICAgcmVzdW1lX2NhbGxiYWNrLiAgKi8KICAgIGxwLT5z dG9wcGVkID0gMDsKICAKQEAgLTcwLDcgKzcwLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4 MDMvZ2RiL2xpbnV4LW5hdC5jCiAgICBpZiAocmVzdW1lX21hbnkpCiAgICAgIGl0ZXJhdGVfb3Zl cl9sd3BzIChwdGlkLCByZXN1bWVfY2FsbGJhY2ssIE5VTEwpOwogIAotQEAgLTMzMjIsNiArMzM0 Niw4IEBAIGxpbnV4X25hdF9tb3Vybl9pbmZlcmlvciAoc3RydWN0IHRhcmdldF8KK0BAIC0zOTIz LDYgKzM5NDcsOCBAQCBsaW51eF9uYXRfbW91cm5faW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfCiAg ICAgICAgIHRoZXJlIGFyZSBvdGhlciB2aWFibGUgZm9ya3MgdG8gZGVidWcuICBEZWxldGUgdGhl IGV4aXRpbmcKICAgICAgICAgb25lIGFuZCBjb250ZXh0LXN3aXRjaCB0byB0aGUgZmlyc3QgYXZh aWxhYmxlLiAgKi8KICAgICAgbGludXhfZm9ya19tb3Vybl9pbmZlcmlvciAoKTsKQEAgLTc5LDEw ICs3OSwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0LmMKICB9 CiAgCiAgLyogQ29udmVydCBhIG5hdGl2ZS9ob3N0IHNpZ2luZm8gb2JqZWN0LCBpbnRvL2Zyb20g dGhlIHNpZ2luZm8gaW4gdGhlCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAorSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAwOS0wMS0wMyAwNjo1ODowNy4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0 YWNoLXN0b3BwZWQuZXhwCTIwMDktMDgtMDMgMTc6MjY6MjIuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNo LXN0b3BwZWQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVk LmV4cAkyMDEwLTAxLTE1IDExOjU0OjU3LjAwMDAwMDAwMCArMDEwMAogQEAgLTYyLDcgKzYyLDY1 IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0gewogICAgICBnZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKICAgICAgZ2RiX2xvYWQgJHtiaW5maWxlfQpAQCAtMTUwLDEw ICsxNTAsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKICAgICAgICAgCiAgICAgIHNldCB0ZXN0ICIkdGhy ZWFkdHlwZTogYXR0YWNoMiB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZpbGUiCiAgICAgIGdk Yl90ZXN0X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewotSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2hzdG9wLW10LmV4 cAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9h dHRhY2hzdG9wLW10LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaHN0b3AtbXQuZXhwCTIwMDktMDEtMDMg MDY6NTg6MDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaHN0b3AtbXQuZXhwCTIwMDktMDgtMDMgMTc6MjY6MjIu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvYXR0YWNoc3RvcC1tdC5leHAJMjAxMC0wMS0wMSAwODozMjowNi4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvYXR0YWNoc3RvcC1tdC5leHAJMjAxMC0wMS0xNSAxMTo1NDo1Ny4wMDAwMDAwMDAgKzAx MDAKIEBAIC0xNzYsMTIgKzE3NiwyMyBAQCBnZGJfdGVzdCAiYnQiICIuKnNsZWVwLiooZnVuY3xt YWluKS4qIiAiCiAgIyBFeGl0IGFuZCBkZXRhY2ggdGhlIHByb2Nlc3MuCiAgZ2RiX2V4aXQKCmRp ZmYgLS1naXQgYS9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoIGIvZ2RiLTYu OC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaAppbmRleCA4MmU2NGY5Li40NDY2OTFlIDEw MDY0NAotLS0gYS9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCisrKyBiL2dk Yi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRl eDogZ2RiLTYuOC41MC4yMDA5MDkxMC9iZmQvZWxmLWJmZC5oCitJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9iZmQvZWxmLWJmZC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkx MC5vcmlnL2JmZC9lbGYtYmZkLmgJMjAwOS0wOS0wOSAyMzozODo1Ny4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNi44LjUwLjIwMDkwOTEwL2JmZC9lbGYtYmZkLmgJMjAwOS0wOS0xMCAyMzowMTox NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMTIxLDcgKzIxMjEsNyBAQCBleHRlcm4gRWxmX0ludGVy bmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2Jm ZC9lbGYtYmZkLmgJMjAwOS0xMS0yMyAxNTo0MToyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2JmZC9lbGYtYmZkLmgJMjAxMC0wMS0xNSAxMTo1MzoyMS4wMDAwMDAw MDAgKzAxMDAKK0BAIC0yMTQwLDcgKzIxNDAsNyBAQCBleHRlcm4gRWxmX0ludGVybmFsX1BoZHIg KiBfYmZkX2VsZl9maW5kCiAgZXh0ZXJuIGNoYXIgKmVsZmNvcmVfd3JpdGVfbm90ZQogICAgKGJm ZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3Qgdm9pZCAqLCBpbnQp OwogIGV4dGVybiBjaGFyICplbGZjb3JlX3dyaXRlX3BycHNpbmZvCkBAIC0xMSwxMSArMTEsMTEg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvYmZkL2VsZi1iZmQuaAogIGV4dGVybiBjaGFy ICplbGZjb3JlX3dyaXRlX3Byc3RhdHVzCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcs IGludCwgY29uc3Qgdm9pZCAqKTsKICBleHRlcm4gY2hhciAqIGVsZmNvcmVfd3JpdGVfcHN0YXR1 cwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvYmZkL2VsZi5jCitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9iZmQvZWxmLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTEw Lm9yaWcvYmZkL2VsZi5jCTIwMDktMDktMDkgMjM6Mzg6NTcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTYuOC41MC4yMDA5MDkxMC9iZmQvZWxmLmMJMjAwOS0wOS0xMCAyMzowNDoxNy4wMDAwMDAw MDAgKzAyMDAKLUBAIC04Mzk4LDYgKzgzOTgsNyBAQCBjaGFyICoKKy0tLSBnZGItNy4wLjUwLjIw MTAwMTE1Lm9yaWcvYmZkL2VsZi5jCTIwMTAtMDEtMDUgMDE6NDA6MDcuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9iZmQvZWxmLmMJMjAxMC0wMS0xNSAxMTo1MzoyMS4w MDAwMDAwMDAgKzAxMDAKK0BAIC04NDM5LDYgKzg0MzksNyBAQCBjaGFyICoKICBlbGZjb3JlX3dy aXRlX3BycHNpbmZvIChiZmQgICphYmZkLAogIAkJCWNoYXIgKmJ1ZiwKICAJCQlpbnQgICpidWZz aXosCkBAIC0yMyw3ICsyMyw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTEwL2JmZC9lbGYu YwogIAkJCWNvbnN0IGNoYXIgKmZuYW1lLAogIAkJCWNvbnN0IGNoYXIgKnBzYXJncykKICB7Ci1A QCAtODQyNCw5ICs4NDI1LDE1IEBAIGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKGJmZCAgKmFiZmQs CitAQCAtODQ2NSw5ICs4NDY2LDE1IEBAIGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKGJmZCAgKmFi ZmQsCiAgICAgICAgaW50IG5vdGVfdHlwZSA9IE5UX1BSUFNJTkZPOwogICNlbmRpZgogIApAQCAt NDIsNyArNDIsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkxMC9iZmQvZWxmLmMKICAgICAg ICByZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwKICAJCQkJIG5v dGVfbmFtZSwgbm90ZV90eXBlLCAmZGF0YSwgc2l6ZW9mIChkYXRhKSk7CiAgICAgIH0KLUBAIC04 NDQxLDkgKzg0NDgsMTUgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKK0BA IC04NDgyLDkgKzg0ODksMTUgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwK ICAgICAgICBpbnQgbm90ZV90eXBlID0gTlRfUFJQU0lORk87CiAgI2VuZGlmCiAgCkBAIC02MSwx MCArNjEsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvYmZkL2VsZi5jCiAgICAgICAg cmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90ZSAoYWJmZCwgYnVmLCBidWZzaXosCiAgCQkJCSBub3Rl X25hbWUsIG5vdGVfdHlwZSwgJmRhdGEsIHNpemVvZiAoZGF0YSkpOwogICAgICB9Ci1JbmRleDog Z2RiLTYuOC41MC4yMDA5MDkxMC9nZGIvYW1kNjQtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9hbWQ2NC1saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02 LjguNTAuMjAwOTA5MTAub3JpZy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAwOS0wOS0xMCAyMzow MTowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTEwL2dkYi9hbWQ2NC1s aW51eC1uYXQuYwkyMDA5LTA5LTEwIDIzOjAxOjE1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMC0wMS0xNSAxMTo0 NjoyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hbWQ2NC1s aW51eC1uYXQuYwkyMDEwLTAxLTE1IDExOjUzOjIxLjAwMDAwMDAwMCArMDEwMAogQEAgLTE0MCw2 ICsxNDAsNyBAQCBzdGF0aWMgaW50IGFtZDY0X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2ZmCiAgCiAg c3RhdGljIGNoYXIgKgpAQCAtOTgsMTAgKzk4LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw OTEwL2dkYi9hbWQ2NC1saW51eC1uYXQuYwogIH0KICAKICBzdGF0aWMgdm9pZAotSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA5MTAvZ2RiL2Zic2QtbmF0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9mYnNkLW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkxMC5v cmlnL2dkYi9mYnNkLW5hdC5jCTIwMDktMDctMDIgMTk6MjE6MDYuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTYuOC41MC4yMDA5MDkxMC9nZGIvZmJzZC1uYXQuYwkyMDA5LTA5LTEwIDIzOjAxOjE1 LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZmJzZC1u YXQuYwkyMDEwLTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2Zic2QtbmF0LmMJMjAxMC0wMS0xNSAxMTo1MzoyMS4wMDAwMDAwMDAgKzAx MDAKIEBAIC0yMTEsNiArMjExLDcgQEAgZmJzZF9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9i ZmQsIGludAogIAlwc2FyZ3MgPSByZWNvbmNhdCAocHNhcmdzLCBwc2FyZ3MsICIgIiwgZ2V0X2lu ZmVyaW9yX2FyZ3MgKCksIE5VTEwpOwogIApAQCAtMTEwLDE5ICsxMTAsMTkgQEAgSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA5MTAvZ2RiL2Zic2QtbmF0LmMKICAJCQkJCSAgZm5hbWUsIHBzYXJncyk7 CiAgICAgIH0KICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTEwL2dkYi9saW51eC1uYXQuYwor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC41MC4yMDA5MDkxMC5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDA5LTA5LTEwIDIz OjAxOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2xpbnV4 LW5hdC5jCTIwMDktMDktMTAgMjM6MDE6MTUuMDAwMDAwMDAwICswMjAwCi1AQCAtNTUsNiArNTUs NyBAQAotICNpbmNsdWRlICJ4bWwtc3VwcG9ydC5oIgorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUu b3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMzo1MC4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1IDExOjUz OjM0LjAwMDAwMDAwMCArMDEwMAorQEAgLTU2LDYgKzU2LDcgQEAKICAjaW5jbHVkZSAidGVybWlu YWwuaCIKICAjaW5jbHVkZSA8c3lzL3Zmcy5oPgorICNpbmNsdWRlICJzb2xpYi5oIgogKyNpbmNs dWRlICJnZGJfcHJvY2ZzMzIuaCIJLyogZm9yIHN0cnVjdCBlbGZfcHJwc2luZm8zMiAqLwogIAog ICNpZm5kZWYgU1BVRlNfTUFHSUMKICAjZGVmaW5lIFNQVUZTX01BR0lDIDB4MjNjOWI2NGUKLUBA IC0yMjIsNyArMjIzLDcgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBlcl94ZmVyX3BhcnRpYWwpIChz dAorQEAgLTIyOCw3ICsyMjksNyBAQCBzdGF0aWMgTE9OR0VTVCAoKnN1cGVyX3hmZXJfcGFydGlh bCkgKHN0CiAgLyogVGhpcyBmdW5jdGlvbnMgbWFrZSBlbGZjb3JlIG5vdGUgc2VjdGlvbnMuCiAg ICAgVGhleSBtYXkgZ2V0IG92ZXJyaWRlbiBieSBjb2RlIGFkanVzdGluZyBkYXRhIGZvciBtdWx0 aS10YXJnZXQgYnVpbGRzLiAgKi8KICBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3JpdGVfcHJwc2lu Zm8pCkBAIC0xMzEsNyArMTMxLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2xp bnV4LW5hdC5jCiAgY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzKQogICAgKGJm ZCAqLCBjaGFyICosIGludCAqLCBsb25nLCBpbnQsIGNvbnN0IHZvaWQgKikgPSBlbGZjb3JlX3dy aXRlX3Byc3RhdHVzOwogIHN0YXRpYyBjaGFyICoKLUBAIC0zOTQ2LDYgKzM5NDcsMTU5IEBAIGxp bnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKK0BAIC00NDQxLDYgKzQ0NDIs MTU5IEBAIGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKICAgIHJldHVy biBhcmdzLm5vdGVfZGF0YTsKICB9CiAgCkBAIC0yOTEsNyArMjkxLDcgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA5MTAvZ2RiL2xpbnV4LW5hdC5jCiAgLyogRmlsbHMgdGhlICJ0b19tYWtlX2Nv cmVmaWxlX25vdGUiIHRhcmdldCB2ZWN0b3IuICBCdWlsZHMgdGhlIG5vdGUKICAgICBzZWN0aW9u IGZvciBhIGNvcmVmaWxlLCBhbmQgcmV0dXJucyBpdCBpbiBhIG1hbGxvYyBidWZmZXIuICAqLwog IAotQEAgLTM5NjYsOCArNDEyMCwxNCBAQCBsaW51eF9uYXRfbWFrZV9jb3JlZmlsZV9ub3RlcyAo YmZkICpvYmZkCitAQCAtNDQ2MSw4ICs0NjE1LDE0IEBAIGxpbnV4X25hdF9tYWtlX2NvcmVmaWxl X25vdGVzIChiZmQgKm9iZmQKICAKICAgIGlmIChnZXRfZXhlY19maWxlICgwKSkKICAgICAgewpA QCAtMzA2LDcgKzMwNiw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTEwL2dkYi9saW51eC1u YXQuYwogICAgICAgIGlmIChnZXRfaW5mZXJpb3JfYXJncyAoKSkKICAJewogIAkgIGNoYXIgKnN0 cmluZ19lbmQ7Ci1AQCAtMzk4Myw5ICs0MTQzLDE1IEBAIGxpbnV4X25hdF9tYWtlX2NvcmVmaWxl X25vdGVzIChiZmQgKm9iZmQKK0BAIC00NDc4LDkgKzQ2MzgsMTUgQEAgbGludXhfbmF0X21ha2Vf Y29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAogIAkJICAgICAgIHBzYXJnc19lbmQgLSBzdHJpbmdf ZW5kKTsKICAJICAgIH0KICAJfQpAQCAtMzI0LDExICszMjQsMTEgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA5MTAvZ2RiL2xpbnV4LW5hdC5jCiAgICAgIH0KICAKICAgIC8qIER1bXAgaW5mb3Jt YXRpb24gZm9yIHRocmVhZHMuICAqLwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2xp bnV4LW5hdC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTEwLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIw MDktMDktMTAgMjM6MDE6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkx MC9nZGIvbGludXgtbmF0LmgJMjAwOS0wOS0xMCAyMzowMToxNS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xNTQsNyArMTU0LDcgQEAgc3RydWN0IHNpZ2luZm8gKmxpbnV4X25hdF9nZXRfc2lnaW5mbyAo cAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMC0wMS0x NSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9s aW51eC1uYXQuaAkyMDEwLTAxLTE1IDExOjUzOjIxLjAwMDAwMDAwMCArMDEwMAorQEAgLTE3Myw3 ICsxNzMsNyBAQCBpbnQgbGludXhfbmF0X2NvcmVfb2ZfdGhyZWFkXzEgKHB0aWRfdCBwCiAgLyog VGhlc2UgZnVuY3Rpb25zIG1ha2UgZWxmY29yZSBub3RlIHNlY3Rpb25zLgogICAgIFRoZXkgbWF5 IGdldCBvdmVycmlkZW4gYnkgY29kZSBhZGp1c3RpbmcgZGF0YSBmb3IgbXVsdGktdGFyZ2V0IGJ1 aWxkcy4gICovCiAgZXh0ZXJuIGNoYXIgKigqbGludXhfZWxmY29yZV93cml0ZV9wcnBzaW5mbykK QEAgLTMzNywxMSArMzM3LDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTEwL2dkYi9saW51 eC1uYXQuaAogIGV4dGVybiBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3JpdGVfcHJzdGF0dXMpCiAg ICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcsIGludCwgY29uc3Qgdm9pZCAqKTsKICBleHRl cm4gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3ByZnByZWcpCi1JbmRleDogZ2RiLTYuOC41 MC4yMDA5MDkxMC9nZGIvcHJvY2ZzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9w cm9jZnMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MTAub3JpZy9nZGIvcHJv Y2ZzLmMJMjAwOS0wOC0wMSAwMjowMjowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUw LjIwMDkwOTEwL2dkYi9wcm9jZnMuYwkyMDA5LTA5LTEwIDIzOjAxOjE1LjAwMDAwMDAwMCArMDIw MAotQEAgLTYxNDcsNiArNjE0Nyw3IEBAIHByb2Nmc19tYWtlX25vdGVfc2VjdGlvbiAoYmZkICpv YmZkLCBpbnQKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Byb2Nmcy5jCTIwMTAt MDEtMTQgMjI6MTU6MDAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvcHJvY2ZzLmMJMjAxMC0wMS0xNSAxMTo1MzoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC02MTg2 LDYgKzYxODYsNyBAQCBwcm9jZnNfbWFrZV9ub3RlX3NlY3Rpb24gKGJmZCAqb2JmZCwgaW50CiAg ICBub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChvYmZkLAogIAkJ CQkJICAgICAgIG5vdGVfZGF0YSwKICAJCQkJCSAgICAgICBub3RlX3NpemUsCgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuOC1iejQ1NzE4Ny1sYXJnZWZpbGUucGF0Y2ggYi9nZGItNi44LWJ6NDU3MTg3LWxh cmdlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk5ZDdhMi4uMDAw MDAwMAotLS0gYS9nZGItNi44LWJ6NDU3MTg3LWxhcmdlZmlsZS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDI2NSArMCwwIEBACi1nZGIvCi0yMDA5LTAzLTAyICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5hYzogQ2FsbCBBQ19TWVNf TEFSR0VGSUxFLgotCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJlOiBSZWdl bmVyYXRlLgotCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlLmFjCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWd1cmUuYWMJ MjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkw OTA5L2dkYi9jb25maWd1cmUuYWMJMjAwOS0wOS0wOSAyMDoxMTowNC4wMDAwMDAwMDAgKzAyMDAK LUBAIC0yOCw2ICsyOCw3IEBAIEFNX01BSU5UQUlORVJfTU9ERQotIEFDX1BST0dfQ0MKLSBBQ19V U0VfU1lTVEVNX0VYVEVOU0lPTlMKLSBnbF9FQVJMWQotK0FDX1NZU19MQVJHRUZJTEUKLSBBTV9Q Uk9HX0NDX1NUREMKLSAKLSBBQ19DT05GSUdfQVVYX0RJUiguLikKLUluZGV4OiBnZGItNi44LjUw LjIwMDkwOTA5L2dkYi9jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkw OTA5Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDA5LTA5LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZy5pbgkyMDA5LTA5LTA5IDIwOjEx OjMzLjAwMDAwMDAwMCArMDIwMAotQEAgLTc1MSwxMCArNzUxLDE2IEBACi0gIyBlbmRpZgotICNl bmRpZgotIAotKy8qIE51bWJlciBvZiBiaXRzIGluIGEgZmlsZSBvZmZzZXQsIG9uIGhvc3RzIHdo ZXJlIHRoaXMgaXMgc2V0dGFibGUuICovCi0rI3VuZGVmIF9GSUxFX09GRlNFVF9CSVRTCi0rCi0g LyogRGVmaW5lIHRvIDEgc28gPHN5cy9wcm9jLmg+IGdldHMgYSBkZWZpbml0aW9uIG9mIGFub25f aGRsLiBXb3JrcyBhcm91bmQgYQotICAgIDxzeXMvcHJvYy5oPiBwcm9ibGVtIG9uIElSSVggNS4g Ki8KLSAjdW5kZWYgX0tNRU1VU0VSCi0gCi0rLyogRGVmaW5lIGZvciBsYXJnZSBmaWxlcywgb24g QUlYLXN0eWxlIGhvc3RzLiAqLwotKyN1bmRlZiBfTEFSR0VfRklMRVMKLSsKLSAvKiBEZWZpbmUg dG8gMSBpZiBvbiBNSU5JWC4gKi8KLSAjdW5kZWYgX01JTklYCi0gCi1JbmRleDogZ2RiLTYuOC41 MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5 MDkwOS5vcmlnL2dkYi9jb25maWd1cmUJMjAwOS0wOS0wOSAyMDoxMDo0NS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUJMjAwOS0wOS0wOSAyMDox MTowNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC04ODQsNiArODg0LDcgQEAgYWNfc3Vic3RfZmlsZXM9 J2hvc3RfbWFrZWZpbGVfZnJhZycKLSBhY191c2VyX29wdHM9JwotIGVuYWJsZV9vcHRpb25fY2hl Y2tpbmcKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0rZW5hYmxlX2xhcmdlZmlsZQotIGVuYWJs ZV9kZXBlbmRlbmN5X3RyYWNraW5nCi0gd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dk Yl9kYXRhZGlyCi1AQCAtMTU2Miw2ICsxNTYzLDcgQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAt LWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCi0gICAtLWVu YWJsZS1tYWludGFpbmVyLW1vZGUgIGVuYWJsZSBtYWtlIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMg bm90IHVzZWZ1bAotIAkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFs IGluc3RhbGxlcgotKyAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBs YXJnZSBmaWxlcwotICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBv bmUtdGltZSBidWlsZAotICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyAgIGRvIG5vdCBy ZWplY3Qgc2xvdyBkZXBlbmRlbmN5IGV4dHJhY3RvcnMKLSAgIC0tZW5hYmxlLXRhcmdldHM9VEFS R0VUUwotQEAgLTQxMDAsNiArNDEwMiwyMDQgQEAgZmkKLSAKLSAKLSAKLSsjIENoZWNrIHdoZXRo ZXIgLS1lbmFibGUtbGFyZ2VmaWxlIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9sYXJn ZWZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFibGVfbGFyZ2VmaWxl OwotK2ZpCi0rCi0raWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vOyB0aGVuCi0rCi0r ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBz cGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLSsk YXNfZWNob19uICJjaGVja2luZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVk IGZvciBsYXJnZSBmaWxlcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdl ZmlsZV9DQytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgotK2Vsc2UKLSsgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9bm8KLSsgICAgIGlmIHRlc3QgIiRH Q0MiICE9IHllczsgdGhlbgotKyAgICAgICBhY19zYXZlX0NDPSRDQwotKyAgICAgICB3aGlsZSA6 OyBkbwotKwkgIyBJUklYIDYuMiBhbmQgbGF0ZXIgZG8gbm90IHN1cHBvcnQgbGFyZ2UgZmlsZXMg YnkgZGVmYXVsdCwKLSsJICMgc28gdXNlIHRoZSBDIGNvbXBpbGVyJ3MgLW4zMiBvcHRpb24gaWYg dGhhdCBoZWxwcy4KLSsJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyAv KiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSsg ICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0 Nzc1ODA3LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMg Y29tcGlsZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAg Ki8KLSsjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90 KSAxIDw8IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjI5ID09IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQot KwkJICAgICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1 cm4gMDsKLSt9Ci0rX0FDRU9GCi0rCSBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg dGhlbiA6Ci0rICBicmVhawotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dAotKwkgQ0M9IiRDQyAtbjMyIgotKwkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAi JExJTkVOTyI7IHRoZW4gOgotKyAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz0nIC1uMzInOyBicmVh awotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAotKwkg YnJlYWsKLSsgICAgICAgZG9uZQotKyAgICAgICBDQz0kYWNfc2F2ZV9DQwotKyAgICAgICBybSAt ZiBjb25mdGVzdC4kYWNfZXh0Ci0rICAgIGZpCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNQot KyRhc19lY2hvICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY2OyB9Ci0rICBpZiB0ZXN0ICIk YWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgIT0gbm87IHRoZW4KLSsgICAgQ0M9JENDJGFjX2N2X3N5 c19sYXJnZWZpbGVfQ0MKLSsgIGZpCi0rCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQg Zm9yIGxhcmdlIGZpbGVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgX0ZJTEVfT0ZG U0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAiID4mNjsgfQotK2lmIHRl c3QgIiR7YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAg JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICB3aGlsZSA6OyBkbwotKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rIC8qIENoZWNrIHRoYXQgb2ZmX3Qg Y2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotKyAgICBXZSBjYW4ndCBzaW1wbHkg ZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0rICAgIHNpbmNl IHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKLSsgICAgaW5j b3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotKyNkZWZpbmUgTEFSR0Vf T0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQotKyAgaW50 IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0rCQkgICAg ICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0rCQkgICAgICA/IDEgOiAtMV07 Ci0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YK LStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBhY19jdl9zeXNf ZmlsZV9vZmZzZXRfYml0cz1ubzsgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsj ZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyAv KiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSsg ICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0 Nzc1ODA3LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMg Y29tcGlsZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAg Ki8KLSsjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90 KSAxIDw8IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjI5ID09IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQot KwkJICAgICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1 cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo ZW4gOgotKyAgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQ7IGJyZWFrCi0rZmkKLStybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK LSsgIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPXVua25vd24KLSsgIGJyZWFrCi0rZG9uZQot K2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh Y19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdl9zeXNfZmls ZV9vZmZzZXRfYml0cyIgPiY2OyB9Ci0rY2FzZSAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMg aW4gIygKLSsgIG5vIHwgdW5rbm93bikgOzsKLSsgICopCi0rY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgotKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgJGFjX2N2X3N5c19maWxlX29mZnNldF9i aXRzCi0rX0FDRU9GCi0rOzsKLStlc2FjCi0rcm0gLXJmIGNvbmZ0ZXN0KgotKyAgaWYgdGVzdCAk YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCi0rICAgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxF UyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2lu ZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7 IH0KLStpZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZV9maWxlcytzZXR9IiA9IHNldDsgdGhlbiA6 Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHdoaWxlIDo7IGRvCi0r ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNv bmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsgLyogQ2hlY2sgdGhhdCBv ZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0rICAgIFdlIGNhbid0IHNp bXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSsgICAg c2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotKyAg ICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0rI2RlZmluZSBM QVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0r ICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLSsJ CSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLSsJCSAgICAgID8gMSA6 IC0xXTsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19B Q0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2 X3N5c19sYXJnZV9maWxlcz1ubzsgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsj ZGVmaW5lIF9MQVJHRV9GSUxFUyAxCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyAvKiBDaGVj ayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSsgICAgV2Ug Y2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3 LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGls ZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSsj ZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8 IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09 IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotKwkJICAg ICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsK LSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgot KyAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7IGJyZWFrCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsgIGFjX2N2X3N5 c19sYXJnZV9maWxlcz11bmtub3duCi0rICBicmVhawotK2RvbmUKLStmaQotK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlX2Zp bGVzIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY2OyB9Ci0rY2Fz ZSAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIGluICMoCi0rICBubyB8IHVua25vd24pIDs7Ci0rICAq KQotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIF9MQVJHRV9GSUxFUyAkYWNf Y3Zfc3lzX2xhcmdlX2ZpbGVzCi0rX0FDRU9GCi0rOzsKLStlc2FjCi0rcm0gLXJmIGNvbmZ0ZXN0 KgotKyAgZmkKLStmaQotKwotIAotIAotIAoKZGlmZiAtLWdpdCBhL2dkYi02LjgtY29uc3RhbnQt d2F0Y2hwb2ludHMucGF0Y2ggYi9nZGItNi44LWNvbnN0YW50LXdhdGNocG9pbnRzLnBhdGNoCmlu ZGV4IGRmMjlkOGQuLjE1NGMwYzcgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtY29uc3RhbnQtd2F0Y2hw b2ludHMucGF0Y2gKKysrIGIvZ2RiLTYuOC1jb25zdGFudC13YXRjaHBvaW50cy5wYXRjaApAQCAt MTgsMTEgKzE4LDExIEBACiAJZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jIChnbG9iYWxfcHRyX3B0cik6 IE5ldyB2YXJpYWJsZS4KIAkoZnVuYzQpOiBOZXcgdGVzdGluZyBjb2RlIGZvciBHTE9CQUxfUFRS X1BUUi4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2JyZWFrcG9pbnQuYworSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMDktMDgtMDQgMDY6 Mjk6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvYnJlYWtw b2ludC5jCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAwICswMjAwCi1AQCAtODIzLDcgKzgy MywxNSBAQCBpc19oYXJkd2FyZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtwb2luCistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo0Njoy OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50 LmMJMjAxMC0wMS0xNSAxMTo0OTo0OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC05NDcsNyArOTQ3LDE1 IEBAIGlzX2hhcmR3YXJlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW4KICAgICBJZiBWQUxf Q0hBSU4gaXMgbm9uLU5VTEwsICpWQUxfQ0hBSU4gd2lsbCBiZSByZWxlYXNlZCBmcm9tIHRoZQog ICAgIHZhbHVlIGNoYWluLiAgVGhlIGNhbGxlciBtdXN0IGZyZWUgdGhlIHZhbHVlcyBpbmRpdmlk dWFsbHkuICBJZgogICAgIFZBTF9DSEFJTiBpcyBOVUxMLCBhbGwgZ2VuZXJhdGVkIHZhbHVlcyB3 aWxsIGJlIGxlZnQgb24gdGhlIHZhbHVlCkBAIC0zOSw4ICszOSw4IEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwODAzL2dkYi9icmVha3BvaW50LmMKICAKICBzdGF0aWMgdm9pZAogIGZldGNoX3dh dGNocG9pbnRfdmFsdWUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCB2YWx1ZSAqKnZh bHAsCi1AQCAtNjMwMSw3ICs2MzA5LDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGlu dCBhY2Nlc3NmbAotICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CitAQCAtNzI2NCw3ICs3 MjcyLDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbAorICAgc3Ry dWN0IGJyZWFrcG9pbnQgKmIsICpzY29wZV9icmVha3BvaW50ID0gTlVMTDsKICAgIHN0cnVjdCBl eHByZXNzaW9uICpleHA7CiAgICBzdHJ1Y3QgYmxvY2sgKmV4cF92YWxpZF9ibG9jazsKIC0gIHN0 cnVjdCB2YWx1ZSAqdmFsLCAqbWFyazsKQEAgLTQ4LDcgKzQ4LDcgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDMvZ2RiL2JyZWFrcG9pbnQuYwogICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l OwogICAgY2hhciAqZXhwX3N0YXJ0ID0gTlVMTDsKICAgIGNoYXIgKmV4cF9lbmQgPSBOVUxMOwot QEAgLTYzOTIsNiArNjQwMCwyNyBAQCB3YXRjaF9jb21tYW5kXzEgKGNoYXIgKmFyZywgaW50IGFj Y2Vzc2ZsCitAQCAtNzM1Miw2ICs3MzYwLDI3IEBAIHdhdGNoX2NvbW1hbmRfMSAoY2hhciAqYXJn LCBpbnQgYWNjZXNzZmwKICAgIGV4cF92YWxpZF9ibG9jayA9IGlubmVybW9zdF9ibG9jazsKICAg IG1hcmsgPSB2YWx1ZV9tYXJrICgpOwogICAgZmV0Y2hfd2F0Y2hwb2ludF92YWx1ZSAoZXhwLCAm dmFsLCBOVUxMLCBOVUxMKTsKQEAgLTc2LDExICs3NiwxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4y MDA5MDgwMy9nZGIvYnJlYWtwb2ludC5jCiAgICBpZiAodmFsICE9IE5VTEwpCiAgICAgIHJlbGVh c2VfdmFsdWUgKHZhbCk7CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvZ2RidHlw ZXMuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAwOS0wOC0w NCAwNjozMTo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9n ZGJ0eXBlcy5oCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAwICswMjAwCi1AQCAtNzEsNyAr NzEsMjIgQEAgZW51bSB0eXBlX2NvZGUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMTUgMTE6NDk6MjYuMDAwMDAw MDAwICswMTAwCitAQCAtNzIsNyArNzIsMjIgQEAgZW51bSB0eXBlX2NvZGUKICAgICAgVFlQRV9D T0RFX1VOSU9OLAkJLyogQyB1bmlvbiBvciBQYXNjYWwgdmFyaWFudCBwYXJ0ICovCiAgICAgIFRZ UEVfQ09ERV9FTlVNLAkJLyogRW51bWVyYXRpb24gdHlwZSAqLwogICAgICBUWVBFX0NPREVfRkxB R1MsCQkvKiBCaXQgZmxhZ3MgdHlwZSAqLwpAQCAtMTA0LDExICsxMDQsMTEgQEAgSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MDMvZ2RiL2dkYnR5cGVzLmgKICAgICAgVFlQRV9DT0RFX0lOVCwJCS8q IEludGVnZXIgdHlwZSAqLwogIAogICAgICAvKiBGbG9hdGluZyB0eXBlLiAgVGhpcyBpcyAqTk9U KiBhIGNvbXBsZXggdHlwZS4gIEJld2FyZSwgdGhlcmUgYXJlIHBhcnRzCi1JbmRleDogZ2RiLTYu OC41MC4yMDA5MDgwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5 MDgwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAwOS0wOC0wNCAwNjozMjozOS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAw OS0wOC0wNCAwNjozMjo1MC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNTE3LDYgKzM1MTcsMTggQEAg VGhpcyBjb21tYW5kIHByaW50cyBhIGxpc3Qgb2Ygd2F0Y2hwb2ludAorLS0tIGdkYi03LjAuNTAu MjAxMDAxMTUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDEtMTUgMTE6MTI6MzMuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTAtMDEtMTUgMTE6NDk6MjYuMDAwMDAwMDAwICswMTAwCitAQCAtMzcyMyw2ICszNzIzLDE4 IEBAIFRoaXMgY29tbWFuZCBwcmludHMgYSBsaXN0IG9mIHdhdGNocG9pbnQKICBpdCBpcyB0aGUg c2FtZSBhcyBAY29kZXtpbmZvIGJyZWFrfSAoQHB4cmVme1NldCBCcmVha3N9KS4KICBAZW5kIHRh YmxlCiAgCkBAIC0xMjcsMTAgKzEyNywxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9n ZGIvZG9jL2dkYi50ZXhpbmZvCiAgQHZhbHVle0dEQk59IHNldHMgYSBAZGZue2hhcmR3YXJlIHdh dGNocG9pbnR9IGlmIHBvc3NpYmxlLiAgSGFyZHdhcmUKICB3YXRjaHBvaW50cyBleGVjdXRlIHZl cnkgcXVpY2tseSwgYW5kIHRoZSBkZWJ1Z2dlciByZXBvcnRzIGEgY2hhbmdlIGluCiAgdmFsdWUg YXQgdGhlIGV4YWN0IGluc3RydWN0aW9uIHdoZXJlIHRoZSBjaGFuZ2Ugb2NjdXJzLiAgSWYgQHZh bHVle0dEQk59Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3dhdGNocG9pbnQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkw ODAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMJMjAwOC0wMy0wMyAx NDoyNDoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC5jCTIwMDktMTItMzAgMTg6MzM6MzUuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuYwky MDEwLTAxLTE1IDExOjQ5OjI2LjAwMDAwMDAwMCArMDEwMAogQEAgLTQwLDYgKzQwLDcgQEAgc3Ry dWN0IGZvbyBzdHJ1Y3QxLCBzdHJ1Y3QyLCAqcHRyMSwgKnB0cgogIGludCBkb3JlYWQgPSAwOwog IApAQCAtMTM5LDcgKzEzOSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jCiAgCiAgdm9pZCBtYXJrZXIxICgpCiAgewotQEAg LTExOCw2ICsxMTksMTAgQEAgZnVuYzQgKCkKK0BAIC0xMTksNiArMTIwLDEwIEBAIGZ1bmM0ICgp CiAgICBidWZbMF0gPSAzOwogICAgZ2xvYmFsX3B0ciA9IGJ1ZjsKICAgIGJ1ZlswXSA9IDc7CkBA IC0xNTAsMTAgKzE1MCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuYwogIH0KICAKICBpbnQgbWFpbiAoKQotSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmV4cAor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBv aW50LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuZXhwCTIwMDktMDEtMDMgMDY6NTg6MDMuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3dhdGNocG9pbnQuZXhwCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2lu dC5leHAJMjAxMC0wMS0wMSAwODozMjowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5leHAJMjAxMC0wMS0x NSAxMTo1MDoyMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC02NDEsNyArNjQxLDIxIEBAIHByb2MgdGVz dF93YXRjaHBvaW50X2FuZF9icmVha3BvaW50IHt9IHsKICAJfQogICAgICB9CkBAIC0yMTYsMTAg KzIxNiwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3dhdGNocG9pbnQuZXhwCiAgICAgIH0KICB9CiAgICAgIAotQEAgLTg0Miw2ICs4NzksMTcg QEAgaWYgW2luaXRpYWxpemVdIHRoZW4gewotICAgICB9Ci0gCitAQCAtODUxLDYgKzg4OCwxNyBA QCBpZiBbaW5pdGlhbGl6ZV0gdGhlbiB7CiAgICAgIHRlc3Rfd2F0Y2hwb2ludF9hbmRfYnJlYWtw b2ludAorIAorICAgICB0ZXN0X3dhdGNocG9pbnRfaW5fYmlnX2Jsb2IKICsKICsgICAgIyBTZWUg YWJvdmUuCiArICAgIGlmIFtpc3RhcmdldCAibWlwcy1pZHQtKiJdIHRoZW4gewoKZGlmZiAtLWdp dCBhL2dkYi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2ggYi9nZGItNi44LWZvcnRyYW4t dGFnLWNvbnN0YW50LnBhdGNoCmluZGV4IGE3Y2MxZGQuLmIzZDczM2IgMTAwNjQ0Ci0tLSBhL2dk Yi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2gKKysrIGIvZ2RiLTYuOC1mb3J0cmFuLXRh Zy1jb25zdGFudC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkw ODExL2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2Fy ZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL2R3 YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEwOjE0OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02 LjguNTAuMjAwOTA4MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEwOjIyOjM2LjAwMDAw MDAwMCArMDIwMAotQEAgLTI0ODAsNiArMjQ4MCw3IEBAIHNjYW5fcGFydGlhbF9zeW1ib2xzIChz dHJ1Y3QgcGFydGlhbF9kaWUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2R3YXJm MnJlYWQuYwkyMDEwLTAxLTE1IDExOjUyOjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDExOjUzOjU3LjAwMDAwMDAw MCArMDEwMAorQEAgLTI1MjksNiArMjUyOSw3IEBAIHNjYW5fcGFydGlhbF9zeW1ib2xzIChzdHJ1 Y3QgcGFydGlhbF9kaWUKICAJICAgICAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAocGRpLCBsb3dw YywgaGlnaHBjLCBuZWVkX3BjLCBjdSk7CiAgCSAgICAgIGJyZWFrOwogIAkgICAgY2FzZSBEV19U QUdfdmFyaWFibGU6CkBAIC0xMCw3ICsxMCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODEx L2dkYi9kd2FyZjJyZWFkLmMKICAJICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6CiAgCSAgICBjYXNl IERXX1RBR191bmlvbl90eXBlOgogIAkgICAgICBpZiAoIXBkaS0+aXNfZGVjbGFyYXRpb24pCi1A QCAtMjY3NSw2ICsyNjc2LDcgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9k aWVfaQorQEAgLTI3MTksNiArMjcyMCw3IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBh cnRpYWxfZGllX2kKICAJfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIERXX1RBR192YXJpYWJs ZToKQEAgLTE4LDE1ICsxOCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9kd2Fy ZjJyZWFkLmMKICAgICAgICBpZiAocGRpLT5pc19leHRlcm5hbCkKICAJewogIAkgIC8qIEdsb2Jh bCBWYXJpYWJsZS4KLUBAIC0yODA1LDYgKzI4MDcsNyBAQCBkaWVfbmVlZHNfbmFtZXNwYWNlIChz dHJ1Y3QgZGllX2luZm8gKmRpCi0gICAgICAgcmV0dXJuIDE7Ci0gCi0gICAgIGNhc2UgRFdfVEFH X3ZhcmlhYmxlOgotKyAgICBjYXNlIERXX1RBR19jb25zdGFudDoKLSAgICAgICB7Ci0gCXN0cnVj dCBhdHRyaWJ1dGUgKmF0dHI7Ci0gCWF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zcGVj aWZpY2F0aW9uLCBjdSk7Ci1AQCAtNDc0MSw3ICs0NzQ0LDggQEAgZHdhcmYyX2FkZF9maWVsZCAo c3RydWN0IGZpZWxkX2luZm8gKmZpcAorQEAgLTQ3NzAsNyArNDc3Miw4IEBAIGR3YXJmMl9hZGRf ZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAKICAJICBmaXAtPm5vbl9wdWJsaWNfZmllbGRz ID0gMTsKICAJfQogICAgICB9CkBAIC0zNiw3ICsyOCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIw MDkwODExL2dkYi9kd2FyZjJyZWFkLmMKICAgICAgewogICAgICAgIC8qIEMrKyBzdGF0aWMgbWVt YmVyLiAgKi8KICAKLUBAIC01MjMzLDcgKzUyMzcsOCBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpCitAQCAtNTMzOSw3ICs1MzQyLDggQEAgcmVhZF9zdHJ1Y3R1cmVf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaQogICAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hp bGRfZGllLT50YWcpCiAgCXsKICAJICBpZiAoY2hpbGRfZGllLT50YWcgPT0gRFdfVEFHX21lbWJl cgpAQCAtNDYsNyArMzgsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvZHdhcmYy cmVhZC5jCiAgCSAgICB7CiAgCSAgICAgIC8qIE5PVEU6IGNhcmx0b24vMjAwMi0xMS0wNTogQSBD Kysgc3RhdGljIGRhdGEgbWVtYmVyCiAgCQkgc2hvdWxkIGJlIGEgRFdfVEFHX21lbWJlciB0aGF0 IGlzIGEgZGVjbGFyYXRpb24sIGJ1dAotQEAgLTUzNTIsNiArNTM1Nyw3IEBAIHByb2Nlc3Nfc3Ry dWN0dXJlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8KK0BAIC01NDU5LDYgKzU0NjMsNyBAQCBwcm9j ZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvCiAgICAgIHsKICAgICAgICBpZiAo Y2hpbGRfZGllLT50YWcgPT0gRFdfVEFHX21lbWJlcgogIAkgIHx8IGNoaWxkX2RpZS0+dGFnID09 IERXX1RBR192YXJpYWJsZQpAQCAtNTQsNyArNDYsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5 MDgxMS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgfHwgY2hpbGRfZGllLT50YWcgPT0gRFdfVEFHX2lu aGVyaXRhbmNlKQogIAl7CiAgCSAgLyogRG8gbm90aGluZy4gICovCi1AQCAtNjk4MCw2ICs2OTg2 LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKgorQEAgLTcxMzQs NiArNzEzOSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKICAJ ICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfc3VicHJvZ3JhbQogIAkgICYmIGFiYnJldi0+dGFn ICE9IERXX1RBR19sZXhpY2FsX2Jsb2NrCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX3Zh cmlhYmxlCkBAIC02Miw3ICs1NCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9k d2FyZjJyZWFkLmMKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbmFtZXNwYWNlCiAgCSAg JiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX21vZHVsZQogIAkgICYmIGFiYnJldi0+dGFnICE9IERX X1RBR19tZW1iZXIpCi1AQCAtNzA4OCw2ICs3MDk1LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJm ZCAqYWJmZCwgZ2RiX2J5dGUgKgorQEAgLTcyNDIsNiArNzI0OCw3IEBAIGxvYWRfcGFydGlhbF9k aWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKICAgICAgICBpZiAobG9hZF9hbGwKICAJICB8fCBh YmJyZXYtPnRhZyA9PSBEV19UQUdfc3VicHJvZ3JhbQogIAkgIHx8IGFiYnJldi0+dGFnID09IERX X1RBR192YXJpYWJsZQpAQCAtNzAsNyArNjIsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgfHwgYWJicmV2LT50YWcgPT0gRFdfVEFHX25hbWVzcGFj ZQogIAkgIHx8IHBhcnRfZGllLT5pc19kZWNsYXJhdGlvbikKICAJewotQEAgLTg5MDEsNiArODkw OSwxMSBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0CitAQCAtOTAx Niw2ICs5MDIzLDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QK ICAJICAvKiBEbyBub3QgYWRkIHRoZSBzeW1ib2wgdG8gYW55IGxpc3RzLiAgSXQgd2lsbCBiZSBm b3VuZCB2aWEKICAJICAgICBCTE9DS19GVU5DVElPTiBmcm9tIHRoZSBibG9ja3ZlY3Rvci4gICov CiAgCSAgYnJlYWs7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaCBi L2dkYi02LjgtaW5saW5pbmctYWRkb24ucGF0Y2gKaW5kZXggN2U4OTljYS4uYjQxYjgwNyAxMDA2 NDQKLS0tIGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaAorKysgYi9nZGItNi44LWlubGlu aW5nLWFkZG9uLnBhdGNoCkBAIC01LDEwICs1LDEwIEBAIGNhdXNpbmc6IEZBSUw6IGdkYi5iYXNl L3Vud2luZG9uc2lnbmFsLmV4cDogdW53aW5kb25zaWduYWwsIHN0YWNrIHVud291bmQKIHJlc3Vt ZSgpIC0+IHRhcmdldF9yZXN1bWUoKSBtb3ZlIG9mIGNsZWFyX2lubGluZV9mcmFtZV9zdGF0ZSgp IGlzIGZvcjoKIGdkYi5taS9taS1uc21vcmlidW5kLmV4cAogCi1JbmRleDogZ2RiLTYuOC45MS4y MDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5s aW5lLWJ0LmMJMjAwOS0wNi0yOCAwMjoyMDoyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44 LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwkyMDA5LTA5LTE3 IDEyOjQ5OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMJMjAxMC0wMS0wMSAwODozMjowNC4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9pbmxpbmUtYnQuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAogQEAgLTEz LDEwICsxMywxNiBAQAogICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwpAQCAtMjgs MTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9pbmxpbmUtYnQuYwogIAogIGlubGluZSBpbnQgZnVuYzEodm9pZCkKICB7Ci1JbmRleDog Z2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuYwor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1j bWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTE3Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmMJMjAwOS0wNi0yOCAwMjoyMDoyNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxp bmUtY21kcy5jCTIwMDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5jCTIw MTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuYwkyMDEwLTAxLTE1IDExOjUwOjU5 LjAwMDAwMDAwMCArMDEwMAogQEAgLTEzLDEzICsxMywxOSBAQAogICAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwpAQCAtNTQsMTAgKzU0LDEwIEBAIEluZGV4OiBnZGItNi44LjkxLjIw MDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5jCiAgaW5saW5lIGludCBm dW5jMSh2b2lkKQogIHsKICAgIGJhciAoKTsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNi44LjkxLjIwMDkwOTE3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGlu ZS1jbWRzLmV4cAkyMDA5LTA2LTI4IDAyOjIwOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02 LjguOTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmV4cAkyMDA5 LTA5LTE3IDEyOjQ5OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCTIwMTAtMDEtMDEgMDg6 MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAwMDAw ICswMTAwCiBAQCAtMjMwLDcgKzIzMCw3IEBAIHNldCBsaW5lMyBbZ2RiX2dldF9saW5lX251bWJl ciAic2V0IGJyZWEKICBnZGJfYnJlYWtwb2ludCAkbGluZTMKICBnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiY29uc2VjdXRpdmUgZnVuYzEiCkBAIC0xMTAsMTAgKzExMCwxMCBAQCBJbmRleDog Z2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhw CiArZ2RiX3Rlc3QgImluZm8gZnJhbWUiICJpbmxpbmVkIGludG8gZnJhbWUuKiIgIm91dGVyX2lu bGluZTIgaW5saW5lZCIKICtnZGJfdGVzdCAiZmluaSIgIiIgInVwIGZyb20gb3V0ZXJfaW5saW5l MiIKICtnZGJfdGVzdCAiaW5mbyBmcmFtZSIgIiBpbiBtYWluIFxbXlxuXF0qXG4gc291cmNlIGxh bmd1YWdlLioiICJtYWluIG5vdCBpbmxpbmVkIgotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcv Z2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuYworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5s aW5lLWxvY2Fscy5jCTIwMDktMDYtMjggMDI6MjA6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWxvY2Fscy5jCTIw MDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDEx NS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMJMjAxMC0wMS0wMSAw ODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAw MDAgKzAxMDAKIEBAIC0xMywxMSArMTMsMTYgQEAKICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KQEAgLTEzMywxMCArMTMzLDEwIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3 L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMKICAKICBpbmxpbmUgaW50IGZ1 bmMxKGludCBhcmcxKQogIHsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC45MS4yMDA5MDkxNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9j YWxzLmV4cAkyMDA5LTA2LTMwIDE3OjUwOjI3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02Ljgu OTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCTIwMDkt MDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAkyMDEwLTAxLTAxIDA4 OjMyOjA0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3Rz dWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCTIwMTAtMDEtMTUgMTE6NTA6NTkuMDAwMDAw MDAwICswMTAwCiBAQCAtNzcsNiArNzcsOSBAQCBpZiB7ICEgJG5vX2ZyYW1lcyB9IHsKICAKICAj IE1ha2Ugc3VyZSB0aGF0IGxvY2FscyBvbiB0aGUgc3RhY2sgYXJlIGZvdW5kLiAgVGhpcyBpcyBh biBhcnJheSB0bwpAQCAtMTU1LDExICsxNTUsMTEgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5 MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCiArICAgIHNldHVwX2tm YWlsICotKi0qICJnY2MvZGVidWcub3B0aW1pemF0aW9uIgogK30KICBnZGJfdGVzdCAicHJpbnQg YXJyYXlcWzBcXSIgIlxcXCQkZGVjaW1hbCA9IDE4NCIgInByaW50IGxvY2FsICgzKSIKLUluZGV4 OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9mcmFtZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvZnJhbWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3Jp Zy9nZGIvZnJhbWUuYwkyMDA5LTA5LTE3IDEyOjQ4OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi02LjguOTEuMjAwOTA5MTcvZ2RiL2ZyYW1lLmMJMjAwOS0wOS0xNyAxMjo0OTowMS4wMDAwMDAw MDAgKzAyMDAKLUBAIC0zMTAsNyArMzEwLDcgQEAgZnByaW50X2ZyYW1lIChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgc3RydQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZnJhbWUuYwky MDEwLTAxLTE1IDAzOjIyOjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2ZyYW1lLmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0z MTYsNyArMzE2LDcgQEAgZnByaW50X2ZyYW1lIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgc3RydQog IHN0YXRpYyBzdHJ1Y3QgZnJhbWVfaW5mbyAqCiAgc2tpcF9pbmxpbmVkX2ZyYW1lcyAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQogIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCBJbmRleDogZ2RiLTYu OC45MS4yMDA5MDkxNy9nZGIvZnJhbWUuYwogICAgICBmcmFtZSA9IGdldF9wcmV2X2ZyYW1lIChm cmFtZSk7CiAgCiAgICByZXR1cm4gZnJhbWU7Ci1AQCAtMTc3OCw2ICsxNzc4LDcgQEAgZ2V0X2Zy YW1lX2FkZHJlc3NfaW5fYmxvY2sgKHN0cnVjdCBmcmFtZQorQEAgLTE3OTIsNiArMTc5Miw3IEBA IGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrIChzdHJ1Y3QgZnJhbWUKICB7CiAgICAvKiBBIGRy YWZ0IGFkZHJlc3MuICAqLwogICAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2Zy YW1lKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIv ZnJhbWUuYwogIAogICAgc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUgPSB0aGlzX2ZyYW1l LT5uZXh0OwogIAotQEAgLTE4MjAsNiArMTgyMSw5IEBAIGdldF9mcmFtZV9hZGRyZXNzX2luX2Js b2NrIChzdHJ1Y3QgZnJhbWUKK0BAIC0xODM0LDYgKzE4MzUsOSBAQCBnZXRfZnJhbWVfYWRkcmVz c19pbl9ibG9jayAoc3RydWN0IGZyYW1lCiAgICAgICB3aGlsZSBpbiBhbiBpbmxpbmVkIGZ1bmN0 aW9uLCB0aGVuIHRoZSBjb2RlIGFkZHJlc3Mgb2YgdGhlCiAgICAgICAiY2FsbGluZyIgbm9ybWFs IGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgYWRqdXN0ZWQgZWl0aGVyLiAgKi8KICAKQEAgLTE4Niw3 ICsxODYsNyBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvZnJhbWUuYwogICAgd2hp bGUgKGdldF9mcmFtZV90eXBlIChuZXh0X2ZyYW1lKSA9PSBJTkxJTkVfRlJBTUUpCiAgICAgIG5l eHRfZnJhbWUgPSBuZXh0X2ZyYW1lLT5uZXh0OwogIAotQEAgLTE4NTEsNyArMTg1NSw3IEBAIGZp bmRfZnJhbWVfc2FsIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUKK0BAIC0xODY1LDcgKzE4Njks NyBAQCBmaW5kX2ZyYW1lX3NhbCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lCiAgCXN5bSA9IGlu bGluZV9za2lwcGVkX3N5bWJvbCAoaW5mZXJpb3JfcHRpZCk7CiAgCiAgICAgICAgaW5pdF9zYWwg KHNhbCk7CkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9n ZGIvZnJhbWUuYwogIAl7CiAgCSAgc2FsLT5zeW10YWIgPSBTWU1CT0xfU1lNVEFCIChzeW0pOwog IAkgIHNhbC0+bGluZSA9IFNZTUJPTF9MSU5FIChzeW0pOwotSW5kZXg6IGdkYi02LjguOTEuMjAw OTA5MTcvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Jy ZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIv YnJlYWtwb2ludC5jCTIwMDktMDktMTcgMTI6NDg6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTYuOC45MS4yMDA5MDkxNy9nZGIvYnJlYWtwb2ludC5jCTIwMDktMDktMTcgMTI6NDk6MTIuMDAw MDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9icmVha3BvaW50 LmMJMjAxMC0wMS0xNSAxMTo0OTo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9icmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo1MjoyMC4wMDAwMDAwMDAgKzAx MDAKIEBAIC02Miw2ICs2Miw3IEBACiAgI2luY2x1ZGUgImppdC5oIgogICNpbmNsdWRlICJ4bWwt c3lzY2FsbC5oIgpAQCAtMjA3LDcgKzIwNyw3IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3 L2dkYi9icmVha3BvaW50LmMKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAgI2lu Y2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMzIyMCwxMCArMzIyMSwyNCBAQCBicHN0 YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0CitAQCAtMzU2MCwxMCArMzU2MSwy NCBAQCBicHN0YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0CiAgICBjb25zdCBz dHJ1Y3QgYnBfbG9jYXRpb24gKmJsID0gYnMtPmJyZWFrcG9pbnRfYXQ7CiAgICBzdHJ1Y3QgYnJl YWtwb2ludCAqYiA9IGJsLT5vd25lcjsKICAKQEAgLTIzNiw3ICsyMzYsNyBAQCBJbmRleDogZ2Ri LTYuOC45MS4yMDA5MDkxNy9nZGIvYnJlYWtwb2ludC5jCiAgICAgIHsKICAgICAgICBpbnQgdmFs dWVfaXNfemVybyA9IDA7CiAgICAgICAgCi1AQCAtMzM5OSw2ICszMzk5LDEyIEBAIGJwc3RhdF9z dG9wX3N0YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHAKK0BAIC0zNzMxLDYgKzM3NDYsMTIgQEAg YnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZQogIAkJICBicy0+cHJpbnQg PSAwOwogIAkJfQogIAkgICAgICBicy0+Y29tbWFuZHMgPSBjb3B5X2NvbW1hbmRfbGluZXMgKGJz LT5jb21tYW5kcyk7CkBAIC0yNDgsOCArMjQ4LDggQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5 MTcvZ2RiL2JyZWFrcG9pbnQuYwogKwkJICBzdGVwX2ludG9faW5saW5lX2ZyYW1lIChwdGlkKTsK ICAJICAgIH0KICAKLSAJICAvKiBQcmludCBub3RoaW5nIGZvciB0aGlzIGVudHJ5IGlmIHdlIGRv bnQgc3RvcCBvciBpZiB3ZSBkb250IHByaW50LiAgKi8KLUBAIC01NTcyLDkgKzU1OTMsOSBAQCBz ZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoCisgCSAgLyogUHJpbnQgbm90 aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0b3Agb3IgZG9udCBwcmludC4gICovCitA QCAtNjAzOSw5ICs2MDYwLDkgQEAgc2V0X21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgZ2Ri YXJjaAogIHsKICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwogIApAQCAtMjYyLDExICsyNjIsMTEg QEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2JyZWFrcG9pbnQuYwogIAogICAgYiA9 IHNldF9yYXdfYnJlYWtwb2ludCAoZ2RiYXJjaCwgc2FsLCB0eXBlKTsKICAgIGItPmVuYWJsZV9z dGF0ZSA9IGJwX2VuYWJsZWQ7Ci1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvaW5saW5l LWZyYW1lLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvaW5saW5lLWZyYW1l LmMJMjAwOS0wOS0xMyAxODoyODoyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIw MDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuYwkyMDA5LTA5LTE3IDEyOjQ5OjAxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTE5OSw2ICsxOTksMTIgQEAgaW5saW5lX2ZyYW1lX3NuaWZmZXIgKGNvbnN0IHN0 cnVjdCBmcmFtZQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5saW5lLWZyYW1l LmMJMjAxMC0wMS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCAr MDEwMAorQEAgLTIxMyw2ICsyMTMsMTIgQEAgaW5saW5lX2ZyYW1lX3NuaWZmZXIgKGNvbnN0IHN0 cnVjdCBmcmFtZQogICAgaWYgKGZyYW1lX2Jsb2NrID09IE5VTEwpCiAgICAgIHJldHVybiAwOwog IApAQCAtMjc5LDcgKzI3OSw3IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmxp bmUtZnJhbWUuYwogICAgLyogQ2FsY3VsYXRlIERFUFRILCB0aGUgbnVtYmVyIG9mIGlubGluZWQg ZnVuY3Rpb25zIGF0IHRoaXMKICAgICAgIGxvY2F0aW9uLiAgKi8KICAgIGRlcHRoID0gMDsKLUBA IC0yMDgsNiArMjE0LDEwIEBAIGlubGluZV9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJh bWUKK0BAIC0yMjIsNiArMjI4LDEwIEBAIGlubGluZV9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1 Y3QgZnJhbWUKICAgICAgICBpZiAoYmxvY2tfaW5saW5lZF9wIChjdXJfYmxvY2spKQogIAlkZXB0 aCsrOwogIApAQCAtMjkwLDcgKzI5MCw3IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dk Yi9pbmxpbmUtZnJhbWUuYwogICAgICAgIGN1cl9ibG9jayA9IEJMT0NLX1NVUEVSQkxPQ0sgKGN1 cl9ibG9jayk7CiAgICAgIH0KICAKLUBAIC0yOTEsNyArMzAxLDYgQEAgc2tpcF9pbmxpbmVfZnJh bWVzIChwdGlkX3QgcHRpZCkKK0BAIC0zMDAsNyArMzEwLDYgQEAgc2tpcF9pbmxpbmVfZnJhbWVz IChwdGlkX3QgcHRpZCkKICB7CiAgICBDT1JFX0FERFIgdGhpc19wYzsKICAgIHN0cnVjdCBibG9j ayAqZnJhbWVfYmxvY2ssICpjdXJfYmxvY2s7CkBAIC0yOTgsNyArMjk4LDcgQEAgSW5kZXg6IGdk Yi02LjguOTEuMjAwOTA5MTcvZ2RiL2lubGluZS1mcmFtZS5jCiAgICBpbnQgc2tpcF9jb3VudCA9 IDA7CiAgICBzdHJ1Y3QgaW5saW5lX3N0YXRlICpzdGF0ZTsKICAKLUBAIC0zMTIsMTAgKzMyMSw3 IEBAIHNraXBfaW5saW5lX2ZyYW1lcyAocHRpZF90IHB0aWQpCitAQCAtMzIxLDEwICszMzAsNyBA QCBza2lwX2lubGluZV9mcmFtZXMgKHB0aWRfdCBwdGlkKQogIAkJIG9mIEJMT0NLX1NUQVJULiAg Ki8KICAJICAgICAgaWYgKEJMT0NLX1NUQVJUIChjdXJfYmxvY2spID09IHRoaXNfcGMKICAJCSAg fHwgYmxvY2tfc3RhcnRpbmdfcG9pbnRfYXQgKHRoaXNfcGMsIGN1cl9ibG9jaykpCkBAIC0zMTAs NyArMzEwLDcgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2lubGluZS1mcmFtZS5j CiAgCSAgICAgIGVsc2UKICAJCWJyZWFrOwogIAkgICAgfQotQEAgLTMyNyw3ICszMzMsNiBAQCBz a2lwX2lubGluZV9mcmFtZXMgKHB0aWRfdCBwdGlkKQorQEAgLTMzNiw3ICszNDIsNiBAQCBza2lw X2lubGluZV9mcmFtZXMgKHB0aWRfdCBwdGlkKQogICAgc3RhdGUgPSBhbGxvY2F0ZV9pbmxpbmVf ZnJhbWVfc3RhdGUgKHB0aWQpOwogICAgc3RhdGUtPnNraXBwZWRfZnJhbWVzID0gc2tpcF9jb3Vu dDsKICAgIHN0YXRlLT5zYXZlZF9wYyA9IHRoaXNfcGM7CkBAIC0zMTgsNyArMzE4LDcgQEAgSW5k ZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2lubGluZS1mcmFtZS5jCiAgCiAgICBpZiAoc2tp cF9jb3VudCAhPSAwKQogICAgICByZWluaXRfZnJhbWVfY2FjaGUgKCk7Ci1AQCAtMzQ1LDYgKzM1 MCwyMyBAQCBzdGVwX2ludG9faW5saW5lX2ZyYW1lIChwdGlkX3QgcHRpZCkKK0BAIC0zNTQsNiAr MzU5LDIzIEBAIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWRfdCBwdGlkKQogICAgcmVpbml0 X2ZyYW1lX2NhY2hlICgpOwogIH0KICAKQEAgLTM0MiwxMCArMzQyLDEwIEBAIEluZGV4OiBnZGIt Ni44LjkxLjIwMDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuYwogIC8qIFJldHVybiB0aGUgbnVtYmVy IG9mIGhpZGRlbiBmdW5jdGlvbnMgaW5saW5lZCBpbnRvIHRoZSBjdXJyZW50CiAgICAgZnJhbWUu ICAqLwogIAotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0 L2lubGluZS1tYXJrZXJzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4y MDA5MDkxNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5jCTIwMDkt MDYtMjggMDI6MjA6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkxNy9n ZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDA5LTA5LTE3IDEyOjQ5OjAx LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lu bGluZS1tYXJrZXJzLmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0x NSwxMSArMTUsNiBAQAogIAogIGV4dGVybiBpbnQgeCwgeTsKQEAgLTM1OCwxNCArMzU4LDE0IEBA IEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUt bWFya2Vycy5jCiAgdm9pZCBtYXJrZXIodm9pZCkKICB7CiAgICB4ICs9IHk7IC8qIHNldCBicmVh a3BvaW50IDIgaGVyZSAqLwotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2dkYnRocmVh ZC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidGhyZWFkLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTE3Lm9yaWcvZ2RiL2dkYnRocmVhZC5oCTIwMDktMDkt MTcgMTI6NDc6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIv Z2RidGhyZWFkLmgJMjAwOS0wOS0xNyAxMjo0OTowMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xOTEs NiArMTkxLDEyIEBAIHN0cnVjdCB0aHJlYWRfaW5mbwotIAotICAgLyogUHJpdmF0ZSBkYXRhIHVz ZWQgYnkgdGhlIHRhcmdldCB2ZWN0b3IgaW1wbGVtZW50YXRpb24uICAqLwotICAgc3RydWN0IHBy aXZhdGVfdGhyZWFkX2luZm8gKnByaXZhdGU7CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi9nZGJ0aHJlYWQuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnRocmVhZC5oCTIwMTAtMDEtMTUgMTE6NTE6MTku MDAwMDAwMDAwICswMTAwCitAQCAtMTk1LDYgKzE5NSwxMiBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8K KyAgIC8qIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRvIGZyZWUgUFJJVkFURS4gIElmIHRoaXMg aXMgTlVMTCwgdGhlbgorICAgICAgeGZyZWUgd2lsbCBiZSBjYWxsZWQgb24gUFJJVkFURS4gICov CisgICB2b2lkICgqcHJpdmF0ZV9kdG9yKSAoc3RydWN0IHByaXZhdGVfdGhyZWFkX2luZm8gKik7 CiArCiArICAvKiBOb256ZXJvIGlmIHRoZSBjdXJyZW50IGZyYW1lIFBDIHNob3VsZCBiZSB1bndv dW5kIGFzIHRoZSBjYWxsZXIuICBJdCBpcwogKyAgICAgdXNlZCB0byBrZWVwIHRoZSBiYWNrdHJh Y2UgdXBwZXIgbGV2ZWxzIGV4aXN0aW5nIGFmdGVyIGZpbmlzaF9jb21tYW5kIGludG8KQEAgLTM3 NSwxMSArMzc1LDExIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9nZGJ0aHJlYWQu aAogIH07CiAgCiAgLyogQ3JlYXRlIGFuIGVtcHR5IHRocmVhZCBsaXN0LCBvciBlbXB0eSB0aGUg ZXhpc3Rpbmcgb25lLiAgKi8KLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmZjbWQu YworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC45MS4yMDA5MDkxNy5vcmlnL2dkYi9pbmZjbWQuYwkyMDA5LTA5LTE3IDEyOjQ3 OjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2luZmNtZC5j CTIwMDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQzNCwxMSArMTQzNCwx MSBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2luZmNtZC5jCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mY21kLmMJMjAxMC0wMS0x NSAxMTo1MTo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNDM4LDExICsxNDM4LDExIEBAIGZpbmlz aF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAgICAgIHN0cnVjdCB0eXBlICp2 YWx1ZV90eXBlOwogIAogICAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChTWU1C T0xfVFlQRSAoYS0+ZnVuY3Rpb24pKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBJbmRleDogZ2RiLTYu OC45MS4yMDA5MDkxNy9nZGIvaW5mY21kLmMKICAJcHJpbnRfcmV0dXJuX3ZhbHVlIChTWU1CT0xf VFlQRSAoYS0+ZnVuY3Rpb24pLCB2YWx1ZV90eXBlKTsKICAgICAgfQogIAotQEAgLTE1NDYsNiAr MTU0NiwxNiBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sCitAQCAt MTU1MCw2ICsxNTUwLDE2IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlv biwKICAgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CiAgICBt YWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7 CiAgCkBAIC00MDgsOSArNDA4LDkgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2lu ZmNtZC5jCiArICAgIHRwLT5jdXJyZW50X3BjX2lzX25vdGN1cnJlbnQgPSAxOwogKwogICAgdHAt PnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3JlZ2lzdGVycywgcGxl YXNlLi4uICAqLwotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRBUkdFVF9TSUdOQUxfREVG QVVMVCwgMCk7CisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7CiAgCi1AQCAt MTU2Nyw3ICsxNTc3LDkgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9u LAorQEAgLTE1NzAsNyArMTU4MCw5IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpm dW5jdGlvbiwKICBzdGF0aWMgdm9pZAogIGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tX3R0eSkKICB7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5 MTcvZ2RiL2luZmNtZC5jCiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbjsKICAKICAgIGludCBh c3luY19leGVjID0gMDsKLUBAIC0xNTk4LDQ1ICsxNjEwLDYzIEBAIGZpbmlzaF9jb21tYW5kIChj aGFyICphcmcsIGludCBmcm9tX3R0eSkKK0BAIC0xNjAxLDQ1ICsxNjEzLDYzIEBAIGZpbmlzaF9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICAgIGlmICghdGFyZ2V0X2hhc19leGVj dXRpb24pCiAgICAgIGVycm9yIChfKCJUaGUgcHJvZ3JhbSBpcyBub3QgcnVubmluZy4iKSk7CiAg CkBAIC01MDIsNyArNTAyLDcgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2luZmNt ZC5jCiAgCiAgICAvKiBQcmludCBpbmZvIG9uIHRoZSBzZWxlY3RlZCBmcmFtZSwgaW5jbHVkaW5n IGxldmVsIG51bWJlciBidXQgbm90CiAgICAgICBzb3VyY2UuICAqLwotQEAgLTE2NTAsMTAgKzE2 ODAsMTQgQEAgZmluaXNoX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTE2 NTMsMTAgKzE2ODMsMTQgQEAgZmluaXNoX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 KQogICAgICAgIHByaW50X3N0YWNrX2ZyYW1lIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCAx LCBMT0NBVElPTik7CiAgICAgIH0KICAKQEAgLTUxOCwxMSArNTE4LDExIEBAIEluZGV4OiBnZGIt Ni44LjkxLjIwMDkwOTE3L2dkYi9pbmZjbWQuYwogIH0KICAMCiAgCi1JbmRleDogZ2RiLTYuOC45 MS4yMDA5MDkxNy9nZGIvdGFyZ2V0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90 YXJnZXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvdGFy Z2V0LmMJMjAwOS0wOS0xNyAxMjo0ODo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44Ljkx LjIwMDkwOTE3L2dkYi90YXJnZXQuYwkyMDA5LTA5LTE3IDEyOjQ5OjAxLjAwMDAwMDAwMCArMDIw MAotQEAgLTIxODcsNiArMjE4Nyw3IEBAIHRhcmdldF9yZXN1bWUgKHB0aWRfdCBwdGlkLCBpbnQg c3RlcCwgZW4KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAt MDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMjQx LDYgKzIyNDEsNyBAQCB0YXJnZXRfcmVzdW1lIChwdGlkX3QgcHRpZCwgaW50IHN0ZXAsIGVuCiAg ewogICAgc3RydWN0IHRhcmdldF9vcHMgKnQ7CiAgCkBAIC01MzAsMTAgKzUzMCwxMCBAQCBJbmRl eDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGFyZ2V0LmMKICAgIHRhcmdldF9kY2FjaGVfaW52 YWxpZGF0ZSAoKTsKICAKICAgIGZvciAodCA9IGN1cnJlbnRfdGFyZ2V0LmJlbmVhdGg7IHQgIT0g TlVMTDsgdCA9IHQtPmJlbmVhdGgpCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvaW5s aW5lLWZyYW1lLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvaW5saW5lLWZy YW1lLmgJMjAwOS0wNi0yOCAwMjoyMDoyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44Ljkx LjIwMDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuaAkyMDA5LTA5LTE3IDEyOjQ5OjAxLjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5saW5lLWZyYW1lLmgJ MjAxMC0wMS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9pbmxpbmUtZnJhbWUuaAkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEw MAogQEAgLTQzLDYgKzQzLDEwIEBAIHZvaWQgY2xlYXJfaW5saW5lX2ZyYW1lX3N0YXRlIChwdGlk X3QgcHQKICAKICB2b2lkIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWRfdCBwdGlkKTsKQEAg LTU0NSwxOSArNTQ1LDE5IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmxpbmUt ZnJhbWUuaAogIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGhpZGRlbiBmdW5jdGlvbnMgaW5saW5l ZCBpbnRvIHRoZSBjdXJyZW50CiAgICAgZnJhbWUuICAqLwogIAotSW5kZXg6IGdkYi02LjguOTEu MjAwOTA5MTcvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9n ZGIvZHdhcmYycmVhZC5jCTIwMDktMDktMTcgMTI6NDg6NTEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDktMTcgMTI6NDk6MDEu MDAwMDAwMDAwICswMjAwCi1AQCAtNDEyOCw2ICs0MTI4LDcgQEAgcmVhZF9mdW5jX3Njb3BlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgcworLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMTE6NDY6MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMTE6NTI6NTkuMDAw MDAwMDAwICswMTAwCitAQCAtNDA3OCw2ICs0MDc4LDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgcworICAgQ09SRV9BRERSIGJhc2VhZGRyOwogICAgc3RydWN0IGJs b2NrICpibG9jazsKLSAgIHVuc2lnbmVkIGRpZV9jaGlsZHJlbiA9IDA7CiAgICBpbnQgaW5saW5l ZF9mdW5jID0gKGRpZS0+dGFnID09IERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpOwogKyAgc3Ry dWN0IHR5cGUgKnR5cGU7CiAgCiAgICBpZiAoaW5saW5lZF9mdW5jKQogICAgICB7Ci1AQCAtNDE2 OSw3ICs0MTcwLDEwIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMK K0BAIC00MTA5LDcgKzQxMTAsMTAgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgcwogICAgYWRkX3RvX2N1X2Z1bmNfbGlzdCAobmFtZSwgbG93cGMsIGhpZ2hwYywgY3Up OwogIAogICAgbmV3ID0gcHVzaF9jb250ZXh0ICgwLCBsb3dwYyk7CgpkaWZmIC0tZ2l0IGEvZ2Ri LTcuMC11cHN0cmVhbS5wYXRjaCBiL2dkYi03LjAtdXBzdHJlYW0ucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGZiZGQwOGUuLjAwMDAwMDAKLS0tIGEvZ2RiLTcuMC11cHN0cmVh bS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLQotCi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDM4OC5odG1sCi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTExL21zZzAwMTU2Lmh0bWwKLVN1YmplY3Q6 IFtwYXRjaF0gRml4IGNyYXNoIG9uIHJlYWRpbmcgc3RhYnMKLQotSGksCi0KLXRoZXJlIGlzIGEg Y3Jhc2ggb24gcmVhZGluZyBzdGFicyBmcGMgYmluYXJ5OgotCWh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTM3ODM3Ci0KLVByb2dyYW0gcmVjZWl2ZWQgc2lnbmFs IFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4KLTB4MDAwMDAwMDAwMDY5ZGIzZCBpbiByZWFk X2RieF9zeW10YWIgKG9iamZpbGU9MHgxZGFmNWYwKSBhdCBkYnhyZWFkLmM6MTM2OQotMTM2OSAg ICAgICAgICAgICAgaWYgKChuYW1lc3RyaW5nWzBdID09ICctJyAmJiBuYW1lc3RyaW5nWzFdID09 ICdsJykKLQotKGdkYikgcC94IG5saXN0Lm5fc3RyeAotJDcgPSAweGZmZmZmZmY4Ci0oZ2RiKSBw IHNpemVvZihubGlzdC5uX3N0cngpCi0kMTAgPSA4Ci0KLUJlbG93IHRoZSBwYXRjaCBjb250ZXh0 IGlzOgotICAgIG5hbWVzdHJpbmcgPSAobmxpc3QtPm5fc3RyeCArIGZpbGVfc3RyaW5nX3RhYmxl X29mZnNldAotICAgICAgICAgICAgICAgICAgKyBEQlhfU1RSSU5HVEFCIChvYmpmaWxlKSk7Ci0K LXNvIElNTyB0aGUgYCh1bnNpZ25lZCknIGNhc3QgaXMgZXhjZXNzaXZlIGFzIGl0IGRvZXMgbm90 IG1hdGNoIHRoZSBleHByZXNzaW9uCi1iZWxvdy4gIFN1Y2ggY2FzdCBpcyB0aGVyZSBzaW5jZSB0 aGUgR0RCICJJbml0aWFsIHJldmlzaW9uIiAoMTk5OSkuCi0KLWBuX3N0cngnIHR5cGU6Ci1zdHJ1 Y3QgaW50ZXJuYWxfbmxpc3QKLXsKLSAgdW5zaWduZWQgbG9uZyBuX3N0cng7ICAgICAgICAgICAg ICAgICAvKiBJbmRleCBpbnRvIHN0cmluZyB0YWJsZSBvZiBuYW1lLiAgKi8KLS4uLgotfTsKLQot UmVncmVzc2lvbiB0ZXN0ZWQgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxp bnV4LWdudSB3aGljaCBkb2VzIG5vdAotbWVhbiBhbnl0aGluZyB3aXRoIHRoZSBkZWZhdWx0IERX QVJGIGRlYnVnIGluZm8uICBJdCB3YXMgaGFuZ2luZyBmb3Igc3RhYnMgc28KLXRyaWVkIGp1c3Qg YSBsYXJnZSBwYXJ0IG9mIGdkYi5iYXNlLyouZXhwIG9uIHg4Nl82NC1tMzIgLSBgdW5peC8tZ3N0 YWJzKy8tbTMyJy4KLQotSWYgaXQgaXNuJ3Qgb2J2aW91c2x5IGFwcHJvdmVkIHBsZWFzZSBmZWVs IGZyZWUgdG8gZHJvcCBpdCBhcyBvbmUgc2hvdWxkIG5vdAotdXNlIFNUQUJTIGluIHRoZSBmaXJz dCBwbGFjZS4KLQotCi1SZWdhcmRzLAotSmFuCi0KLQotZ2RiLwotMjAwOS0xMS0xNyAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBkYnhyZWFkLmMgKHNl dF9uYW1lc3RyaW5nKTogUmVtb3ZlIGNhc3QgdG8gdW5zaWduZWQuICBDaGVjayBOX1NUUlgKLQlv dmVyZmxvdy4KLQotLS0tIGEvZ2RiL2RieHJlYWQuYwotKysrIGIvZ2RiL2RieHJlYWQuYwotQEAg LTk2NSw4ICs5NjUsOSBAQCBzZXRfbmFtZXN0cmluZyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IHN0cnVjdCBpbnRlcm5hbF9ubGlzdCAqbmxpc3QpCi0gewotICAgY2hhciAqbmFtZXN0 cmluZzsKLSAKLS0gIGlmICgoKHVuc2lnbmVkKSBubGlzdC0+bl9zdHJ4ICsgZmlsZV9zdHJpbmdf dGFibGVfb2Zmc2V0KQotLSAgICAgID49IERCWF9TVFJJTkdUQUJfU0laRSAob2JqZmlsZSkpCi0r ICBpZiAobmxpc3QtPm5fc3RyeCArIGZpbGVfc3RyaW5nX3RhYmxlX29mZnNldAotKyAgICAgID49 IERCWF9TVFJJTkdUQUJfU0laRSAob2JqZmlsZSkKLSsgICAgICB8fCBubGlzdC0+bl9zdHJ4ICsg ZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0IDwgbmxpc3QtPm5fc3RyeCkKLSAgICAgewotICAgICAg IGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiYmFkIHN0cmluZyB0YWJsZSBvZmZz ZXQgaW4gc3ltYm9sICVkIiksCi0gCQkgc3ltbnVtKTsKLQotCi0KLVJlOiBbUkZBXSBGaXggInNo b3cgY29udmVuaWVuY2UiIHRlc3QKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDA5LTA5L21zZzAwNTY1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMDktMDkvbXNnMDAwOTkuaHRtbAotCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9n CTIwMDkvMDkvMTUgMTg6NTE6MjUJMS4xOTYwCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nCTIwMDkvMDkvMTcgMTc6NDk6NDYJMS4xOTYxCi0jIyAtMSwzICsxLDcgQEAKLSsyMDA5LTA5 LTE3ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotKwotKwkqIGdk Yi5iYXNlL2RlZmF1bHQuZXhwOiBGaXggInNob3cgY29udmVuaWVuY2UiLgotKwotIDIwMDktMDkt MTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJKiBsaWIvbWktc3VwcG9y dC5leHAgKG1pX2NyZWF0ZV92YXJvYmopOiBVcGRhdGUuCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOC8xMyAxNDo1ODoyNwkxLjMxCi0rKysgc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOS8xNyAxNzo0OTo0NgkxLjMy Ci1AQCAtNTk4LDcgKzU5OCw3IEBACi0gI3Rlc3Qgc2hvdyBjb25maXJtCi0gZ2RiX3Rlc3QgInNo b3cgY29uZmlybSIgIldoZXRoZXIgdG8gY29uZmlybSBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3Bl cmF0aW9ucyBpcyBvXFthLXpcXSouIiAic2hvdyBjb25maXJtIgotICN0ZXN0IHNob3cgY29udmVu aWVuY2UKLS1nZGJfdGVzdCAic2hvdyBjb252ZW5pZW5jZSIgIk5vIGRlYnVnZ2VyIGNvbnZlbmll bmNlIHZhcmlhYmxlcyBub3cgZGVmaW5lZC4oXFteXHJcblxdKlxbXHJcblxdKStDb252ZW5pZW5j ZSB2YXJpYWJsZXMgaGF2ZSBuYW1lcyBzdGFydGluZyB3aXRoIFwiLlwiOyhcW15cclxuXF0qXFtc clxuXF0pK3VzZSBcInNldFwiIGFzIGluIFwic2V0IC5mb28gPSA1XCIgdG8gZGVmaW5lIHRoZW0u IiAic2hvdyBjb252ZW5pZW5jZSIKLStnZGJfdGVzdCAic2hvdyBjb252ZW5pZW5jZSIgIlxcXCRf c2lnaW5mbyA9IHZvaWQiICJzaG93IGNvbnZlbmllbmNlIgotICN0ZXN0IHNob3cgZGlyZWN0b3Jp ZXMKLSBnZGJfdGVzdCAic2hvdyBkaXJlY3RvcmllcyIgIlNvdXJjZSBkaXJlY3RvcmllcyBzZWFy Y2hlZDogLmNkaXJcWzo7XF0uY3dkIiAic2hvdyBkaXJlY3RvcmllcyIKLSAjdGVzdCBzaG93IGVk aXRpbmcKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAwOS8wOS8xNSAxODo1MToyNAkxLjk1 MwotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDA5LzA5LzE3IDE3OjQ5OjQ2CTEuOTU0Ci0j IyAtMSwzICsxLDggQEAKLSsyMDA5LTA5LTE3ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtv dkBnb29nbGUuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChjb252ZW5pbmNlIHZhcmlhYmxlcyk6 IE1lbnRpb24KLSsJJF9zaWdpbmZvIGNvdWxkIGJlIGVtcHR5LgotKwkKLSAyMDA5LTA5LTE1ICBU b20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLnRleGluZm8gKEdEQi9N SSBWYXJpYWJsZSBPYmplY3RzKTogRG9jdW1lbnQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDA5LzA5LzE1IDE4OjUxOjI1CTEuNjI0Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAwOS8wOS8xNyAxNzo0OTo0NgkxLjYyNQotQEAgLTc4MTksOCArNzgxOSwxMCBAQAotIAotIEBp dGVtICRfc2lnaW5mbwotIEB2aW5kZXggJF9zaWdpbmZvQHJ7LCBjb252ZW5pZW5jZSB2YXJpYWJs ZX0KLS1UaGUgdmFyaWFibGUgQGNvZGV7JF9zaWdpbmZvfSBpcyBib3VuZCB0byBleHRyYSBzaWdu YWwgaW5mb3JtYXRpb24KLS1pbnNwZWN0aW9uIChAcHhyZWZ7ZXh0cmEgc2lnbmFsIGluZm9ybWF0 aW9ufSkuCi0rVGhlIHZhcmlhYmxlIEBjb2RleyRfc2lnaW5mb30gY29udGFpbnMgZXh0cmEgc2ln bmFsIGluZm9ybWF0aW9uCi0rKEBweHJlZntleHRyYSBzaWduYWwgaW5mb3JtYXRpb259KS4gIE5v dGUgdGhhdCBAY29kZXskX3NpZ2luZm99Ci0rY291bGQgYmUgZW1wdHksIGlmIHRoZSBhcHBsaWNh dGlvbiBoYXMgbm90IHlldCByZWNlaXZlZCBhbnkgc2lnbmFscy4KLStGb3IgZXhhbXBsZSwgaXQg d2lsbCBiZSBlbXB0eSBiZWZvcmUgeW91IGV4ZWN1dGUgdGhlIEBjb2Rle3J1bn0gY29tbWFuZC4K LSBAZW5kIHRhYmxlCi0gCi0gT24gSFAtVVggc3lzdGVtcywgaWYgeW91IHJlZmVyIHRvIGEgZnVu Y3Rpb24gb3IgdmFyaWFibGUgbmFtZSB0aGF0Ci0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDA5LTEyL21zZzAwMTI4Lmh0bWwKLQotIyMjIHNyYy9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwkyMDA5LzEyLzIzIDIzOjE4OjA4CTEuMjA1NAotIyMjIHNyYy9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzI0IDIxOjU3OjA2CTEuMjA1NQotIyMgLTEsMyArMSwxMCBA QAotKzIwMDktMTItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSsKLSsJRml4IGNvbXBhdGliaWxpdHkgd2l0aCBHKystNC41LgotKwkqIGdkYi5jcC9leHBh bmQtc2Fscy5jYyAobWFpbik6IFJlbW92ZSB0aGUgImV4aXQtbGluZSIgY29tbWVudC4KLSsJKiBn ZGIuY3AvZXhwYW5kLXNhbHMuZXhwOiBSZW1vdmUgYnJlYWtwb2ludCBvbiAiZXhpdC1saW5lIi4K LSsJKHVuY2F1Z2h0IHJldHVybik6IFJlbW92ZS4KLSsKLSAyMDA5LTEyLTIzICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCSAgICBQaGlsIE11bGRvb24gIDxw bXVsZG9vbkByZWRoYXQuY29tPgotIAotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBh bmQtc2Fscy5jYwkyMDA5LzA1LzExIDE1OjA1OjU2CTEuMQotKysrIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzEyLzI0IDIxOjU3OjA2CTEuMgotQEAgLTQ5LDUg KzQ5LDUgQEAKLSAgIEEgYTsKLSAgIEIgYjsKLSAKLS0gIHJldHVybiAwOwkvKiBleGl0LWxpbmUg Ki8KLSsgIHJldHVybiAwOwotIH0KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhwYW5k LXNhbHMuZXhwCTIwMDkvMDUvMTEgMTU6MDU6NTYJMS4xCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2V4cGFuZC1zYWxzLmV4cAkyMDA5LzEyLzI0IDIxOjU3OjA2CTEuMgotQEAgLTIzLDgg KzIzLDYgQEAKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLWdkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJleGl0LWxpbmUiXQotLQotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJmdW5jLWxpbmUiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJmdW5j IiAiLipmdW5jLWxpbmUuKiIKLSAKLUBAIC01Miw3ICs1MCwzIEBACi0gCSAiYnQgZnJvbSBBIgot IAotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0IGNhbGxlciBmdW5jIiAiLipmdW5j LWxpbmUuKiIKLS0KLS0jIFZlcmlmeSBHREIgcmVhbGx5IGNvdWxkIG5vdCBjYXRjaCBhbnkgb3Ro ZXIgYnJlYWtwb2ludCBsb2NhdGlvbi4KLS0KLS1nZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dW5jYXVnaHQgcmV0dXJuIiAiLipleGl0LWxpbmUuKiIKLQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAyMTMuaHRtbAotCi1bIGN1dCBdCi0KLS0tLSBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb25kYnJlYWsuZXhwCTIwMDkvMDEvMDMgMDU6NTg6 MDMJMS4xMwotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvbmRicmVhay5leHAJMjAw OS8xMS8yNSAyMDo0MzoyOQkxLjE0Ci1AQCAtMjA3LDEwICsyMDcsMTAgQEAKLSBzZXR1cF94ZmFp bCBocHBhMi4wdy0qLSogMTE1MTJDTExicwotIHNlbmRfZ2RiICJjb250aW51ZVxuIgotIGdkYl9l eHBlY3QgewotLSAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9pbnQgXFswLTlcXSssIG1h cmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRp b245KS4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxdKy4qIiB7Ci0rICAgIC1y ZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyMiBcXChhPTQzXFwp IGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb244fCRicF9sb2NhdGlvbjkpLiooJGJwX2xvY2F0 aW9uOHwkYnBfbG9jYXRpb245KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAkIiB7Ci0gCXBhc3MgInJ1 biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIiCi0gICAgIH0KLS0gICAgLXJlICJDb250aW51 aW5nXFwuLipCcmVha3BvaW50IFxbMC05XF0rLCAkaGV4IGluIG1hcmtlcjIgXFwoYT00M1xcKSBh dCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KS4qKCRicF9sb2NhdGlv bjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxdKy4qIiB7Ci0rICAgIC1yZSAiQ29udGludWluZ1xcLi4q QnJlYWtwb2ludCBcWzAtOVxdKywgJGhleCBpbiBtYXJrZXIyIFxcKGE9NDNcXCkgYXQgLiokc3Jj ZmlsZTE6KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSkuKigkYnBfbG9jYXRpb244fCRicF9s b2NhdGlvbjkpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsKLSAJeGZhaWwgInJ1biB1bnRpbCBi cmVha3BvaW50IGF0IG1hcmtlcjIiCi0gICAgIH0KLSAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7 Ci0KLQotCi1GaXggZm9yIGdmb3J0cmFuLTQuMToKLSAgLVBBU1M6IGdkYi5taS9taS12YXItY2hp bGQtZi5leHA6IG1pIHJ1bnRvIE1BSU5fXwotICArRkFJTDogZ2RiLm1pL21pLXZhci1jaGlsZC1m LmV4cDogbWkgcnVudG8gTUFJTl9fICh1bmtub3duIG91dHB1dCBhZnRlciBydW5uaW5nKQotCi1S RkM6IE1vdmUgbGFuZ3VhZ2UtY2hhbmdlZCBtZXNzYWdlIHRvIHZlcmJvc2UKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTExL21zZzAwMDMxLmh0bWwKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAwMzQuaHRtbAotCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAxOTo1MzowMwkxLjExMDMwCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAwOS8xMS8wNSAyMDo0Mzo1MgkxLjExMDMxCi0jIyAtMSwzICsxLDggQEAKLSsy MDA5LTExLTA1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgotKwot KwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmQpOiBTZWxlY3QgYSBmcmFtZSBiZWZvcmUgY2hlY2tp bmcgdGhlIGN1cnJlbnQKLSsJbGFuZ3VhZ2UuICBPbmx5IG91dHB1dCBhIG1lc3NhZ2UgaWYgdmVy Ym9zZS4KLSsKLSAyMDA5LTExLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0g Ci0gCSogc3ltdGFiLmggKFNZTUJPTF9TRVRfTElOS0FHRV9OQU1FKTogVXBkYXRlIGNvbW1lbnQu Ci0tLS0gc3JjL2dkYi90b3AuYwkyMDA5LzEwLzE5IDA5OjUxOjQyCTEuMTcyCi0rKysgc3JjL2dk Yi90b3AuYwkyMDA5LzExLzA1IDIwOjQzOjUyCTEuMTczCi1AQCAtNDU3LDEwICs0NTcsMTMgQEAK LSAKLSAgICAgfQotIAotLSAgLyogVGVsbCB0aGUgdXNlciBpZiB0aGUgbGFuZ3VhZ2UgaGFzIGNo YW5nZWQgKGV4Y2VwdCBmaXJzdCB0aW1lKS4gICovCi0rICAvKiBUZWxsIHRoZSB1c2VyIGlmIHRo ZSBsYW5ndWFnZSBoYXMgY2hhbmdlZCAoZXhjZXB0IGZpcnN0IHRpbWUpLgotKyAgICAgRmlyc3Qg bWFrZSBzdXJlIHRoYXQgYSBuZXcgZnJhbWUgaGFzIGJlZW4gc2VsZWN0ZWQsIGluIGNhc2UgdGhp cwotKyAgICAgY29tbWFuZCBvciB0aGUgaG9va3MgY2hhbmdlZCB0aGUgcHJvZ3JhbSBzdGF0ZS4g ICovCi0rICBkZXByZWNhdGVkX3NhZmVfZ2V0X3NlbGVjdGVkX2ZyYW1lICgpOwotICAgaWYgKGN1 cnJlbnRfbGFuZ3VhZ2UgIT0gZXhwZWN0ZWRfbGFuZ3VhZ2UpCi0gICAgIHsKLS0gICAgICBpZiAo bGFuZ3VhZ2VfbW9kZSA9PSBsYW5ndWFnZV9tb2RlX2F1dG8pCi0rICAgICAgaWYgKGxhbmd1YWdl X21vZGUgPT0gbGFuZ3VhZ2VfbW9kZV9hdXRvICYmIGluZm9fdmVyYm9zZSkKLSAJewotIAkgIGxh bmd1YWdlX2luZm8gKDEpOwkvKiBQcmludCB3aGF0IGNoYW5nZWQuICAqLwotIAl9CgpkaWZmIC0t Z2l0IGEvZ2RiLWFyY2hlci1waWUtMDMxNS1icmVha3BvaW50X2FkZHJlc3NfbWF0Y2gucGF0Y2gg Yi9nZGItYXJjaGVyLXBpZS0wMzE1LWJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDAwNTk3Ci0tLSAvZGV2L251bGwKKysr IGIvZ2RiLWFyY2hlci1waWUtMDMxNS1icmVha3BvaW50X2FkZHJlc3NfbWF0Y2gucGF0Y2gKQEAg LTAsMCArMSw3NyBAQAorWyBGb3J3YXJkLXBvcnRlZCBjb250ZXh0LiAgXQorCitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDE3MC5odG1sCitTdWJqZWN0 OiBbcGF0Y2ggMDMvMTVdIFBJRTogYnJlYWtwb2ludF9hZGRyZXNzX21hdGNoIGdkYmFyY2hfYWRk cl9iaXQgIHdvcmthcm91bmQKKworSGksCisKK3RoZXJlIGFyZSBhbHJlYWR5IG11bHRpcGxlIGNh c2VzIG9mIENPUkVfQUREUiBiZWluZyBtYXNrZWQgYnkgdGhlIHdpZHRoIG9mCitnZGJhcmNoX2Fk ZHJfYml0LiAgVGhpcyBzcGVjaWZpYyBuZXcgY2FzZSB3YXMgcmVxdWlyZWQgdGhlIFBJRSBzdXBw b3J0LgorCitQbGVhc2UgcmVhZCB0aGUgQyBjb21tZW50IGluIGF0dGFjaGVkIHBhdGNoLgorCitD aGVja2VkIHRoYXQgQ09SRV9BRERSIG1hdGggb3BlcmF0aW9ucyBhcmUgcHJlc2VudCBvbiA2MDAw KyBsaW5lcyBvZiBjb2RlIG9mCitHREIgc291cmNlcyB3aGljaCBtYWtlcyBpdCBpbXBvc3NpYmxl IHRvIGRvIHNvbWUgZ2VuZXJhbCBmaXggYnkgcmVwbGFjaW5nIGFsbAorCWEtPmFkZHIgPCBiLT5h ZGRyCitieQorCWFkZHJfbGVzc190aGFuIChhLT5hZGRyLCBiLT5hZGRyKQorZXRjLgorCitFdmVu IHdpdGggdGhpcyBwYXRjaCBJIHRoaW5rIHRoZXJlIGFyZSBzdGlsbCBtYW55IGJ1Z3MgbGVmdCBp biB0aGUgb3BlcmF0aW9uCitvZiB4ODZfNjQgZ2RiIGRlYnVnZ2luZyBpMzg2IHRhcmdldHMuICBE byB5b3UgZmluZCB0aGUgQysrIHdheSBhcyBhIHZpYWJsZQorb25lPworCisKK1RoYW5rcywKK0ph bgorCisgICAgCitnZGIvCisgICAgCSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2FkZHJlc3Nf bWF0Y2gpOiBOZXcgdmFyaWFibGVzIGFkZHJfYml0IGFuZAorICAgIAlhZGRyX21hc2ssIGluaXRp YWxpemUgaXQuICBNYXNrIGFkZHJlc3NlcyBieSBBRERSX01BU0suCisgICAgCSogZGVmcy5oIChD T1JFX0FERFIpOiBFeHRlbmQgdGhlIGNvbW1lbnQuCisKKy0tLSBhL2dkYi9icmVha3BvaW50LmMK KysrKyBiL2dkYi9icmVha3BvaW50LmMKK0BAIC00NTU5LDkgKzQ1NTksMTUgQEAgc3RhdGljIGlu dAorIGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFj ZTEsIENPUkVfQUREUiBhZGRyMSwKKyAJCQkgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2Uy LCBDT1JFX0FERFIgYWRkcjIpCisgeworKyAgaW50IGFkZHJfYml0ID0gZ2RiYXJjaF9hZGRyX2Jp dCAodGFyZ2V0X2dkYmFyY2gpOworKyAgQ09SRV9BRERSIGFkZHJfbWFzayA9IENPUkVfQUREUl9N QVg7CisrCisrICBpZiAoYWRkcl9iaXQgPCAoc2l6ZW9mIChDT1JFX0FERFIpICogSE9TVF9DSEFS X0JJVCkpCisrICAgIGFkZHJfbWFzayA9ICgoQ09SRV9BRERSKSAxIDw8IGFkZHJfYml0KSAtIDE7 CisrCisgICByZXR1cm4gKChnZGJhcmNoX2hhc19nbG9iYWxfYnJlYWtwb2ludHMgKHRhcmdldF9n ZGJhcmNoKQorIAkgICB8fCBhc3BhY2UxID09IGFzcGFjZTIpCistCSAgJiYgYWRkcjEgPT0gYWRk cjIpOworKwkgICYmIChhZGRyMSAmIGFkZHJfbWFzaykgPT0gKGFkZHIyICYgYWRkcl9tYXNrKSk7 CisgfQorIAorIC8qIEFzc3VtaW5nIExPQzEgYW5kIExPQzIncyB0eXBlcycgaGF2ZSBtZWFuaW5n ZnVsIHRhcmdldCBhZGRyZXNzZXMKKy0tLSBhL2dkYi9kZWZzLmgKKysrKyBiL2dkYi9kZWZzLmgK K0BAIC05OCw3ICs5OCwyMCBAQAorIC8qIEEgYnl0ZSBmcm9tIHRoZSBwcm9ncmFtIGJlaW5nIGRl YnVnZ2VkLiAgKi8KKyB0eXBlZGVmIGJmZF9ieXRlIGdkYl9ieXRlOworIAorLS8qIEFuIGFkZHJl c3MgaW4gdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuICBIb3N0IGJ5dGUgb3JkZXIuICAqLwor Ky8qIEFuIGFkZHJlc3MgaW4gdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuICBIb3N0IGJ5dGUg b3JkZXIuCisrCisrICAgSXRzIHdpZHRoIGlzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGFsbCB0aGUg c3VwcG9ydGVkIHRhcmdldHMuICBUaGF0IG1lYW5zCisrICAgMzItYml0IHRhcmdldCB3aWxsIHJ1 biBvbiBzdWNoIEdEQiB1c2luZyA2NC1iaXQgQ09SRV9BRERSIGNsdXR0ZXJpbmcgdGhlCisrICAg Yml0cyAzMi4uLjYzIHdpdGggcmFuZG9tIGRhdGEgZnJvbSBpbnRlcm5hbCBHREIgY2FsY3VsYXRp b25zLiAgR0RCIGN1cnJlbnRseQorKyAgIGluIGdlbmVyYWwgdHJ1bmNhdGVzIHRoZSBhZGRyZXNz IHdpZHRoIG9ubHkgd2hlbiBpdCBpcyBiZWluZyBwcmVzZW50ZWQvdXNlZAorKyAgIGV4dGVybmFs bHkgKHN1Y2ggYXMgYnkgdGhlIHBhZGRyZXNzIGZ1bmN0aW9uKS4KKysKKysgICBGSVhNRTogVGhp cyBpcyBzdGlsbCBub3QgcmlnaHQgYXMgYW55IEdEQiBpbnRlcm5hbCBjb21wYXJpc29ucyAoc3Vj aCBhcyA+PSkKKysgICBvZiBDT1JFX0FERFIgZG8gbm90IHVzZSB0aGUgcHJvcGVybHkgdHJ1bmNh dGVkIHdpZHRoLiAgQXMgY29udmVydGluZyBhbGwgdGhlCisrICAgQ09SRV9BRERSIG9wZXJhdGlv bnMgdG8gd2lkdGgtYXdhcmUgZnVuY3Rpb25zIGlzIG5vdCBmZWFzaWJsZSB0aGUgd2F5IG91dAor KyAgIGNvdWxkIGJlIGEgd2lkdGgtYXdhcmUgQysrIGNsYXNzIENPUkVfQUREUiByZWZlcmVuY2lu ZyBnZGJhcmNoIGFzIGl0cworKyAgIGNvbnN0cnVjdG9yIHBhcmFtZXRlci4gICovCisrCisgdHlw ZWRlZiBiZmRfdm1hIENPUkVfQUREUjsKKyAKKyAvKiBUaGUgbGFyZ2VzdCBDT1JFX0FERFIgdmFs dWUuICAqLworCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJs ZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAppbmRl eCAzMzdhODg4Li41YTllMGM1IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2Vl cC1kaXNhYmxlZC5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxl ZC5wYXRjaApAQCAtMSw2ICsxLDggQEAKLS0tLSAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0xMi0x OCAwMDoxMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0x Mi0xOCAwMDoxMzoxNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC04NTYzLDYgKzg1NjMsNDkgQEAgdXBk YXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYQorSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDEt MTUgMjE6NTE6MjAuMDAwMDAwMDAwICswMTAwCitAQCAtOTE2Nyw2ICs5MTY3LDQ5IEBAIHVwZGF0 ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKICAgIHVwZGF0ZV9nbG9iYWxfbG9j YXRpb25fbGlzdCAoMSk7CiAgfQogIApAQCAtNDUsMTQgKzQ3LDE2IEBACiArCiArICBpZiAoY2hh bmdlZCkKICsgICAgcXNvcnQgKGJwX2xvY2F0aW9uLCBicF9sb2NhdGlvbl9jb3VudCwgc2l6ZW9m ICgqYnBfbG9jYXRpb24pLAotKwkgICBicF9sb2NhdGlvbl9jb21wYXJlX2Zvcl9xc29ydCk7Cisr CSAgIGJwX2xvY2F0aW9uX2NvbXBhcmUpOwogK30KICAKICAvKiBSZXNldCBhIGJyZWFrcG9pbnQg Z2l2ZW4gaXQncyBzdHJ1Y3QgYnJlYWtwb2ludCAqIEJJTlQuCiAgICAgVGhlIHZhbHVlIHdlIHJl dHVybiBlbmRzIHVwIGJlaW5nIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBjYXRjaF9lcnJvcnMuCi0t LS0gLi9nZGIvYnJlYWtwb2ludC5oCTIwMDktMTItMTggMDA6MTM6NDguMDAwMDAwMDAwICswMTAw Ci0rKysgLi9nZGIvYnJlYWtwb2ludC5oCTIwMDktMTItMTcgMjI6MTE6MTAuMDAwMDAwMDAwICsw MTAwCi1AQCAtOTcwLDQgKzk3MCw3IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqZ2V0X3Ry YWNlcG9pbnQKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50LmgKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAky MDEwLTAxLTE1IDIxOjM1OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2JyZWFrcG9pbnQuaAkyMDEwLTAxLTE1IDIxOjUwOjEyLjAwMDAwMDAwMCArMDEwMAor QEAgLTEwMTUsNCArMTAxNSw3IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqZ2V0X3RyYWNl cG9pbnQKICAgICBpcyBuZXdseSBhbGxvY2F0ZWQ7IHRoZSBjYWxsZXIgc2hvdWxkIGZyZWUgd2hl biBkb25lIHdpdGggaXQuICAqLwogIGV4dGVybiBWRUMoYnJlYWtwb2ludF9wKSAqYWxsX3RyYWNl cG9pbnRzICh2b2lkKTsKICAKQEAgLTYwLDYzICs2NCwxOSBAQAogKwkJCQkgIHN0cnVjdCBzZWN0 aW9uX29mZnNldHMgKmRlbHRhKTsKICsKICAjZW5kaWYgLyogIWRlZmluZWQgKEJSRUFLUE9JTlRf SCkgKi8KLS0tLSAuL2dkYi9vYmpmaWxlcy5jCTIwMDktMTItMTggMDA6MTM6NDguMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvb2JqZmlsZXMuYwkyMDA5LTEyLTE3IDIzOjE5OjIyLjAwMDAwMDAw MCArMDEwMAotQEAgLTU0Niw3ICs1NDYsNyBAQCBmcmVlX2FsbF9vYmpmaWxlcyAodm9pZCkKLSAv KiBSZWxvY2F0ZSBPQkpGSUxFIHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJ TEUtPk5VTV9TRUNUSU9OUwotICAgIGVudHJpZXMgaW4gbmV3X29mZnNldHMuICBTRVBBUkFURV9E RUJVR19PQkpGSUxFIGlzIG5vdCB0b3VjaGVkIGhlcmUuICAqLwotIAotLXN0YXRpYyB2b2lkCi0r c3RhdGljIGludAotIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCi0gewotICAgc3RydWN0IG9ial9z ZWN0aW9uICpzOwotQEAgLTU2NSw3ICs1NjUsNyBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0 IG9iamZpbGUgKm9iamZpCi0gCSAgc29tZXRoaW5nX2NoYW5nZWQgPSAxOwotICAgICAgIH0KLSAg ICAgaWYgKCFzb21ldGhpbmdfY2hhbmdlZCkKLS0gICAgICByZXR1cm47Ci0rICAgICAgcmV0dXJu IDA7Ci0gICB9Ci0gCi0gICAvKiBPSywgZ2V0IGFsbCB0aGUgc3ltdGFicy4gICovCi1AQCAtNzA2 LDYgKzcwNiwxMyBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCi0g ICAgICAgZXhlY19zZXRfc2VjdGlvbl9hZGRyZXNzIChiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxl LT5vYmZkKSwgaWR4LAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVzLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL29iamZpbGVzLmMJ MjAxMC0wMS0xNSAyMTozNToxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9vYmpmaWxlcy5jCTIwMTAtMDEtMTUgMjE6NTA6NDUuMDAwMDAwMDAwICswMTAwCitA QCAtODU2LDYgKzg1NiwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9i amZpCiAgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMpKTsKICAgICAgfQotKworIAogKyAgLyogRmlu YWwgY2FsbCBvZiBicmVha3BvaW50X3JlX3NldCBjYW4ga2VlcCBicmVha3BvaW50IGxvY2F0aW9u cyBkaXNhYmxlZCBpZgogKyAgICAgdGhlaXIgYWRkcmVzc2VzIG1hdGNoLiAgKi8KICsgIGlmIChv YmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpCiArICAgIGJy ZWFrcG9pbnRzX3JlbG9jYXRlIChvYmpmaWxlLCBkZWx0YSk7CiArCi0rICByZXR1cm4gMTsKLSB9 Ci0gCi0gLyogUmVsb2NhdGUgT0JKRklMRSB0byBORVdfT0ZGU0VUUy4gIFRoZXJlIHNob3VsZCBi ZSBPQkpGSUxFLT5OVU1fU0VDVElPTlMKLUBAIC03MjAsNyArNzI3LDkgQEAgb2JqZmlsZV9yZWxv Y2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIHZvaWQKLSBvYmpmaWxlX3JlbG9jYXRlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNl dHMpCi0gewotLSAgb2JqZmlsZV9yZWxvY2F0ZTEgKG9iamZpbGUsIG5ld19vZmZzZXRzKTsKLSsg IGludCBjaGFuZ2VkID0gMDsKLSsKLSsgIGNoYW5nZWQgfD0gb2JqZmlsZV9yZWxvY2F0ZTEgKG9i amZpbGUsIG5ld19vZmZzZXRzKTsKLSAKLSAgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlICE9IE5VTEwpCi0gICAgIHsKLUBAIC03NDcsMTEgKzc1NiwxMiBAQCBvYmpmaWxlX3Jl bG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCi0gCQkJCQkgICAgIG9iamZpbGVfYWRkcnMp OwotICAgICAgIGRvX2NsZWFudXBzIChteV9jbGVhbnVwcyk7Ci0gCi0tICAgICAgb2JqZmlsZV9y ZWxvY2F0ZTEgKGRlYnVnX29iamZpbGUsIG5ld19kZWJ1Z19vZmZzZXRzKTsKLSsgICAgICBjaGFu Z2VkIHw9IG9iamZpbGVfcmVsb2NhdGUxIChkZWJ1Z19vYmpmaWxlLCBuZXdfZGVidWdfb2Zmc2V0 cyk7Ci0gICAgIH0KLSAKLSAgIC8qIFJlbG9jYXRlIGJyZWFrcG9pbnRzIGFzIG5lY2Vzc2FyeSwg YWZ0ZXIgdGhpbmdzIGFyZSByZWxvY2F0ZWQuICovCi0tICBicmVha3BvaW50X3JlX3NldCAoKTsK LSsgIGlmIChjaGFuZ2VkKQotKyAgICBicmVha3BvaW50X3JlX3NldCAoKTsKKyAgIC8qIERhdGEg Y2hhbmdlZC4gICovCisgICByZXR1cm4gMTsKICB9Ci0gDAotIC8qIFJldHVybiBub24temVybyBp ZiBPQkpGSUxFIGhhcyBwYXJ0aWFsIHN5bWJvbHMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNo ZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaAppbmRleCAz MzA2Yzc3Li5hZTE1NGFkIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gK KysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDYgKzEsOCBAQAotLS0tIGEv Z2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTU3NTQsNyArNTc1 NCwxMiBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMDEtMTUgMjE6NDE6MzIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMjE6NDI6MTkuMDAwMDAwMDAwICsw MTAwCitAQCAtNTgyMSw3ICs1ODIxLDEyIEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwKICB7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5 bWJvbCAqc3ltOwpAQCAtMTQsMTUgKzE2LDE1IEBACiAgCiAgICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKICAgIGlmIChhdHRyKQotQEAgLTU3NjMsNiArNTc2 OCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCitAQCAtNTgzMCw2ICs1ODM1LDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLAogICAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQotIAl7Ci0gCSAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0ciksIGN1KTsK KyAgICAgICAgIHsKKyAgICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAo YXR0ciksIGN1KTsKICsJICBiYXNlX3AgPSAxOwotIAl9CisgICAgICAgICB9CiAgICAgICAgZWxz ZSBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKSkKLSAJewotQEAgLTU4MjQs MTIgKzU4MzAsMTUgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgICAgIHsKK0BAIC01ODkxLDEyICs1ODk3LDE1IEBA IHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICAgICAgZWxzZQog IAkJZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKCk7CiAgCkBAIC00MCw3 ICs0Miw3IEBACiAgCSAgZWxzZQogIAkgICAgU0VUX0ZJRUxEX1BIWVNOQU1FICgqZmllbGQsIFNZ TUJPTF9MSU5LQUdFX05BTUUgKHN5bSkpOwogIAkgIEZJRUxEX1RZUEUgKCpmaWVsZCkgPSBTWU1C T0xfVFlQRSAoc3ltKTsKLUBAIC01ODQzLDcgKzU4NTIsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU5MTAsNyAr NTkxOSw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAKICAg ICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKICAgICAgICAvKiBTWU1CT0xf VkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0cyBmaWVsZHMgYXJlIHN0YXRp Yy4gICovCkBAIC00OSwxNyArNTEsMTkgQEAKICAKICAgICAgICBzZXRfZGllX3R5cGUgKGRpZSwg dHlwZSwgY3UpOwogICAgICB9Ci0tLS0gYS9nZGIvZXhlYy5jCi0rKysgYi9nZGIvZXhlYy5jCi1A QCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJleGVjLmgiCi0gI2luY2x1ZGUgIm9ic2VydmVy LmgiCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXhlYy5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wMS0xNSAyMTozNTox NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMJMjAx MC0wMS0xNSAyMTo0NzoxOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNCw2ICszNCw3IEBACiAgI2lu Y2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1ZGUg InByb2dzcGFjZS5oIgogKyNpbmNsdWRlICJzb2xpYi5oIgogIAogICNpbmNsdWRlIDxmY250bC5o PgogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTIyMCw2ICsyMjEsMTAgQEAg ZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKK0BAIC0yMjUs NiArMjI2LDEwIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIKICAg ICAgICBjaGFyICpzY3JhdGNoX3BhdGhuYW1lOwogICAgICAgIGludCBzY3JhdGNoX2NoYW47CiAg ICAgICAgc3RydWN0IHRhcmdldF9zZWN0aW9uICpzZWN0aW9ucyA9IE5VTEwsICpzZWN0aW9uc19l bmQgPSBOVUxMOwpAQCAtNzAsNyArNzQsNyBAQAogIAogICAgICAgIHNjcmF0Y2hfY2hhbiA9IG9w ZW5wIChnZXRlbnYgKCJQQVRIIiksIE9QRl9UUllfQ1dEX0ZJUlNULCBmaWxlbmFtZSwKICAJCSAg IHdyaXRlX2ZpbGVzID8gT19SRFdSIHwgT19CSU5BUlkgOiBPX1JET05MWSB8IE9fQklOQVJZLAot QEAgLTI4OCwxMiArMjkzLDIzIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBp bnQgZnJvbV90dHkpCitAQCAtMjkzLDEyICsyOTgsMjMgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hh ciAqZmlsZW5hbWUsIGludCBmcgogIAkJIHNjcmF0Y2hfcGF0aG5hbWUsIGJmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCkpKTsKICAJfQogIApAQCAtOTQsMTkgKzk4LDM3IEBACiAtICAgICAgc2V0 X2dkYmFyY2hfZnJvbV9maWxlIChleGVjX2JmZCk7CiAtCiAgICAgICAgLyogQWRkIHRoZSBleGVj dXRhYmxlJ3Mgc2VjdGlvbnMgdG8gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZXMnCi0gCSBsaXN0 IG9mIHNlY3Rpb25zLiAgKi8KLSAgICAgICBhZGRfdGFyZ2V0X3NlY3Rpb25zIChzZWN0aW9ucywg c2VjdGlvbnNfZW5kKTsKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9nZGIvZ2RidHlwZXMu aAotQEAgLTk2Niw2ICs5NjYsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9jcGx1c19zdHJ1Y3Rf dHlwZSAoc3RydWN0IHR5cGUgKik7CisgCSBsaXN0IG9mIHNlY3Rpb25zLiAgVGhpcyBwb3NzaWJs eSBwdXNoZXMgdGhlIGV4ZWNfb3BzCisgCSB0YXJnZXQuICAqLworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2dkYnR5cGVzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAyMTozNToxNi4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMTUgMjE6 NDQ6MjQuMDAwMDAwMDAwICswMTAwCitAQCAtNDA2LDYgKzQwNiw3IEBAIGVudW0gdHlwZV9pbnN0 YW5jZV9mbGFnX3ZhbHVlCisgZW51bSBmaWVsZF9sb2Nfa2luZAorICAgeworICAgICBGSUVMRF9M T0NfS0lORF9CSVRQT1MsCS8qIGJpdHBvcyAqLworKyAgICAvKiBUaGlzIGFkZHJlc3MgaXMgdW5y ZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICovCisgICAgIEZJRUxEX0xPQ19L SU5EX1BIWVNBRERSLAkvKiBwaHlzYWRkciAqLworICAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFN RQkvKiBwaHlzbmFtZSAqLworICAgfTsKK0BAIC01ODIsNiArNTgzLDcgQEAgc3RydWN0IG1haW5f dHlwZQorIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0YXJnZXQpIG9mIHRoZSBzdGF0aWMg ZmllbGQuCisgCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQgbGFiZWwgb2Yg dGhlIHN0YXRpYyBmaWVsZC4gKi8KKyAKKysJLyogVGhpcyBhZGRyZXNzIGlzIHVucmVsb2NhdGVk IGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLworIAlDT1JFX0FERFIgcGh5c2FkZHI7Cisg CWNoYXIgKnBoeXNuYW1lOworICAgICAgIH0KK0BAIC0xMTAwLDYgKzExMDIsNyBAQCBleHRlcm4g dm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBGSUVMRF9MT0NfS0lO RCh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvY19raW5kKQogICNkZWZpbmUgRklFTERfQklUUE9TKHRo aXNmbGQpICgodGhpc2ZsZCkubG9jLmJpdHBvcykKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlT TkFNRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzbmFtZSkKICsvKiBUaGlzIGFkZHJlc3Mg aXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICovCiAgI2RlZmluZSBG SUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5c2FkZHIpCi0g I2RlZmluZSBGSUVMRF9EV0FSRl9CTE9DSyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5kd2FyZl9i bG9jaykKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwgYml0cG9zKQkJCVwKLUBA IC05NzQsNiArOTc1LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfY3BsdXNfc3RydWN0X3R5cGUg KHN0cnVjdCB0eXBlICopOworICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xP Q19LSU5EX0JJVFBPUywJCVwKK0BAIC0xMTA3LDYgKzExMTAsNyBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBTRVRfRklFTERfUEhZU05BTUUodGhp c2ZsZCwgbmFtZSkJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklFTERfTE9D X0tJTkRfUEhZU05BTUUsCQlcCiAgICAgRklFTERfU1RBVElDX1BIWVNOQU1FICh0aGlzZmxkKSA9 IChuYW1lKSkKQEAgLTExNCwxNyArMTM2LDE5IEBACiAgI2RlZmluZSBTRVRfRklFTERfUEhZU0FE RFIodGhpc2ZsZCwgYWRkcikJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklF TERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCiAgICAgRklFTERfU1RBVElDX1BIWVNBRERSICh0aGlz ZmxkKSA9IChhZGRyKSkKLUBAIC05ODksNiArOTkxLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Y3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTExMTksNiArMTEyMyw3IEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZUEVf RklFTERfTE9DX0tJTkQodGhpc3R5cGUsIG4pIEZJRUxEX0xPQ19LSU5EIChUWVBFX0ZJRUxEICh0 aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlzdHlwZSwgbikgRklF TERfQklUUE9TIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxE X1NUQVRJQ19QSFlTTkFNRSh0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBF X0ZJRUxEICh0aGlzdHlwZSwgbikpCiArLyogVGhpcyBhZGRyZXNzIGlzIHVucmVsb2NhdGVkIGJ5 IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNf UEhZU0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAo dGhpc3R5cGUsIG4pKQotICNkZWZpbmUgVFlQRV9GSUVMRF9EV0FSRl9CTE9DSyh0aGlzdHlwZSwg bikgRklFTERfRFdBUkZfQkxPQ0sgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5l IFRZUEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlwZSwgbikgRklFTERfQVJUSUZJQ0lBTChUWVBF X0ZJRUxEKHRoaXN0eXBlLG4pKQotLS0tIGEvZ2RiL2p2LWxhbmcuYwotKysrIGIvZ2RiL2p2LWxh bmcuYwotQEAgLTQxNiw3ICs0MTYsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4p IEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9qdi1sYW5nLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEwLTAxLTE1IDIxOjM1OjEzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2p2LWxhbmcuYwkyMDEwLTAxLTE1IDIxOjQx OjU4LjAwMDAwMDAwMCArMDEwMAorQEAgLTQxNiw3ICs0MTYsOCBAQCBqYXZhX2xpbmtfY2xhc3Nf dHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCiAgICBmaWVsZHMgPSBOVUxMOwogICAgbmZpZWxk cy0tOwkJCS8qIEZpcnN0IHNldCB1cCBkdW1teSAiY2xhc3MiIGZpZWxkLiAqLwpAQCAtMTM0LDcg KzE1OCw3IEBACiAgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIG5maWVsZHMpID0gImNsYXNzIjsK ICAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbmZpZWxkcykgPSB2YWx1ZV90eXBlIChjbGFzKTsK ICAgIFNFVF9UWVBFX0ZJRUxEX1BSSVZBVEUgKHR5cGUsIG5maWVsZHMpOwotQEAgLTQ2Miw3ICs0 NjMsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitA QCAtNDYyLDcgKzQ2Myw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2QKICAJICBTRVRfVFlQRV9GSUVMRF9QUk9URUNURUQgKHR5cGUsIGkpOwogIAl9CiAgICAgICAg aWYgKGFjY2ZsYWdzICYgMHgwMDA4KQkvKiBBQ0NfU1RBVElDICovCkBAIC0xNDQsMjIgKzE2OCwx MyBAQAogICAgICAgIGVsc2UKICAJVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpID0gOCAqIGJv ZmZzZXQ7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkvKiBGSUVMRF9VTlJFU09MVkVE X0ZMQUcgKi8KLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9zb2xpYi1zdnI0LmMK LUBAIC0xNjcyLDE1ICsxNjcyLDIwIEBAIHN0YXRpYyBDT1JFX0FERFIKLSBzdnI0X2V4ZWNfZGlz cGxhY2VtZW50ICh2b2lkKQotIHsKLSAgIGludCBmb3VuZDsKLSsgIC8qIEVOVFJZX1BPSU5UIGlz IGEgcG9zc2libGUgZnVuY3Rpb24gZGVzY3JpcHRvciAtIGJlZm9yZQotKyAgICAgYSBjYWxsIHRv IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIuICAqLwotICAgQ09SRV9BRERSIGVu dHJ5X3BvaW50OwotIAotICAgaWYgKGV4ZWNfYmZkID09IE5VTEwpCi0gICAgIHJldHVybiAwOwot IAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDEt MTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv c29saWItc3ZyNC5jCTIwMTAtMDEtMTUgMjE6NDQ6NTUuMDAwMDAwMDAwICswMTAwCitAQCAtMTY4 OSw3ICsxNjg5LDEwIEBAIHN2cjRfZXhlY19kaXNwbGFjZW1lbnQgKHZvaWQpCiAgICBpZiAodGFy Z2V0X2F1eHZfc2VhcmNoICgmY3VycmVudF90YXJnZXQsIEFUX0VOVFJZLCAmZW50cnlfcG9pbnQp ID09IDEpCi0tICAgIHJldHVybiBlbnRyeV9wb2ludCAtIGV4ZWNfZW50cnlfcG9pbnQgKGV4ZWNf YmZkLCAmY3VycmVudF90YXJnZXQpOwotKyAgICByZXR1cm4gZW50cnlfcG9pbnQgLSBiZmRfZ2V0 X3N0YXJ0X2FkZHJlc3MgKGV4ZWNfYmZkKTsKKyAgICAgcmV0dXJuIGVudHJ5X3BvaW50IC0gYmZk X2dldF9zdGFydF9hZGRyZXNzIChleGVjX2JmZCk7CiAgCiAtICByZXR1cm4gc3ZyNF9zdGF0aWNf ZXhlY19kaXNwbGFjZW1lbnQgKCk7CiArICBpZiAoIXB0aWRfZXF1YWwgKGluZmVyaW9yX3B0aWQs IG51bGxfcHRpZCkpCkBAIC0xNjksNyArMTg0LDcgQEAKICB9CiAgCiAgLyogUmVsb2NhdGUgdGhl IG1haW4gZXhlY3V0YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCi1A QCAtMTYzMiw3ICsxNjM1LDcgQEAgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAodm9pZCkKK0BAIC0x NzAwLDcgKzE3MDMsNyBAQCBzdnI0X2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lkKQogIHN0YXRpYyB2 b2lkCiAgc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpCiAgewpAQCAtMTc4LDcg KzE5Myw3IEBACiAgCiAgICAvKiBFdmVuIGlmIERJU1BMQUNFTUVOVCBpcyAwIHN0aWxsIHRyeSB0 byByZWxvY2F0ZSBpdCBhcyB0aGlzIGlzIGEgbmV3CiAgICAgICBkaWZmZXJlbmNlIG9mIGluLW1l bW9yeSB2cy4gaW4tZmlsZSBhZGRyZXNzZXMgYW5kIHdlIGNvdWxkIGFscmVhZHkKLUBAIC0xOTc1 LDYgKzE5NzgsNyBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQorQEAgLTIwNTQsNiAr MjA1Nyw3IEBAIF9pbml0aWFsaXplX3N2cjRfc29saWIgKHZvaWQpCiAgICBzdnI0X3NvX29wcy5m cmVlX3NvID0gc3ZyNF9mcmVlX3NvOwogICAgc3ZyNF9zb19vcHMuY2xlYXJfc29saWIgPSBzdnI0 X2NsZWFyX3NvbGliOwogICAgc3ZyNF9zb19vcHMuc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sg PSBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rOwpAQCAtMTg2LDkgKzIwMSwxMSBAQAog ICAgc3ZyNF9zb19vcHMuc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgPSBzdnI0X3NwZWNpYWxfc3lt Ym9sX2hhbmRsaW5nOwogICAgc3ZyNF9zb19vcHMuY3VycmVudF9zb3MgPSBzdnI0X2N1cnJlbnRf c29zOwogICAgc3ZyNF9zb19vcHMub3Blbl9zeW1ib2xfZmlsZV9vYmplY3QgPSBvcGVuX3N5bWJv bF9maWxlX29iamVjdDsKLS0tLSBhL2dkYi9zb2xpYi5jCi0rKysgYi9nZGIvc29saWIuYwotQEAg LTEwMTQsNiArMTAxNCwxOSBAQCBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21f dHR5KQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3NvbGliLmMJMjAxMC0wMS0xNSAyMToz NToxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zb2xpYi5j CTIwMTAtMDEtMTUgMjE6NDE6NTguMDAwMDAwMDAwICswMTAwCitAQCAtMTAzNyw2ICsxMDM3LDE5 IEBAIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkKICAgIG9wcy0+c29s aWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGZyb21fdHR5KTsKICB9CiAgCkBAIC0yMDgsOSArMjI1 LDExIEBACiAgLyogR0xPQkFMIEZVTkNUSU9OCiAgCiAgICAgaW5fc29saWJfZHluc3ltX3Jlc29s dmVfY29kZSAtLSBjaGVjayB0byBzZWUgaWYgYW4gYWRkcmVzcyBpcyBpbgotLS0tIGEvZ2RiL3Nv bGliLmgKLSsrKyBiL2dkYi9zb2xpYi5oCi1AQCAtNDMsNiArNDMsOCBAQCBleHRlcm4gaW50IHNv bGliX3JlYWRfc3ltYm9scyAoc3RydWN0IHNvX2xpc3QgKiwgaW50KTsKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9zb2xpYi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi9zb2xpYi5oCTIwMTAtMDEtMDggMjM6NTI6MDQuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saWIuaAkyMDEwLTAxLTE1IDIxOjQyOjM2 LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ0LDYgKzQ0LDggQEAgZXh0ZXJuIGludCBzb2xpYl9yZWFk X3N5bWJvbHMgKHN0cnVjdCBzbwogIAogIGV4dGVybiB2b2lkIHNvbGliX2NyZWF0ZV9pbmZlcmlv cl9ob29rIChpbnQgZnJvbV90dHkpOwogIApAQCAtMjE4LDEwICsyMzcsMTIgQEAKICsKICAvKiBJ ZiBBRERSIGxpZXMgaW4gYSBzaGFyZWQgbGlicmFyeSwgcmV0dXJuIGl0cyBuYW1lLiAgKi8KICAK LSBleHRlcm4gY2hhciAqc29saWJfbmFtZV9mcm9tX2FkZHJlc3MgKENPUkVfQUREUik7Ci0tLS0g YS9nZGIvc29saXN0LmgKLSsrKyBiL2dkYi9zb2xpc3QuaAotQEAgLTg5LDYgKzg5LDkgQEAgc3Ry dWN0IHRhcmdldF9zb19vcHMKKyBleHRlcm4gY2hhciAqc29saWJfbmFtZV9mcm9tX2FkZHJlc3Mg KHN0cnVjdCBwcm9ncmFtX3NwYWNlICosIENPUkVfQUREUik7CitJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvc29saXN0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL3NvbGlzdC5oCTIwMTAtMDEtMDggMjM6NTI6MDQuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saXN0LmgJMjAxMC0wMS0xNSAyMTo0MTo1OC4w MDAwMDAwMDAgKzAxMDAKK0BAIC05Miw2ICs5Miw5IEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCiAg ICAgIC8qIFRhcmdldCBkZXBlbmRlbnQgY29kZSB0byBydW4gYWZ0ZXIgY2hpbGQgcHJvY2VzcyBm b3JrLiAgKi8KICAgICAgdm9pZCAoKnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKSAoaW50IGZy b21fdHR5KTsKICAKQEAgLTIzMSw5ICsyNTIsMTEgQEAKICAgICAgLyogRG8gYWRkaXRpb25hbCBz eW1ib2wgaGFuZGxpbmcsIGxvb2t1cCwgZXRjLiBhZnRlciBzeW1ib2xzCiAgICAgICAgIGZvciBh IHNoYXJlZCBvYmplY3QgaGF2ZSBiZWVuIGxvYWRlZC4gICovCiAgICAgIHZvaWQgKCpzcGVjaWFs X3N5bWJvbF9oYW5kbGluZykgKHZvaWQpOwotLS0tIGEvZ2RiL3N5bWZpbGUuYwotKysrIGIvZ2Ri L3N5bWZpbGUuYwotQEAgLTg3MywxNSArODczLDM2IEBAIHN5bXNfZnJvbV9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1m aWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bWZp bGUuYwkyMDEwLTAxLTE1IDIxOjM1OjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3N5bWZpbGUuYwkyMDEwLTAxLTE1IDIxOjQxOjU4LjAwMDAwMDAwMCArMDEw MAorQEAgLTgzMiwxNSArODMyLDM2IEBAIHN5bXNfZnJvbV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKICAgICAgIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgc3ltYm9sIHJlYWRpbmcu ICAqLwogICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfb2JqZmlsZSAob2JqZmlsZSk7 CiAgCkBAIC0yNzcsOSArMzAwLDExIEBACiAgICAgIH0KICAKICAgIC8qIE5vdyBlaXRoZXIgYWRk cnMgb3Igb2Zmc2V0cyBpcyBub24temVyby4gICovCi0tLS0gYS9nZGIvdmFsdWUuYwotKysrIGIv Z2RiL3ZhbHVlLmMKLUBAIC0xODkwLDcgKzE4OTAsOCBAQCB2YWx1ZV9zdGF0aWNfZmllbGQgKHN0 cnVjdCB0eXBlICp0eXBlLCBpbnQgZmllbGRubykKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi92YWx1ZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi92YWx1ZS5jCTIwMTAtMDEtMTUgMjE6MzU6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdmFsdWUuYwkyMDEwLTAxLTE1IDIxOjQxOjU4LjAwMDAwMDAwMCAr MDEwMAorQEAgLTE4OTcsNyArMTg5Nyw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5 cGUgKnR5cGUsIGkKICAgIGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBmaWVsZG5vKSA9 PSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUikKICAgICAgewogICAgICAgIHJldHZhbCA9IHZhbHVl X2F0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLApAQCAtMjg5LDcgKzMxNCw3IEBA CiAgICAgIH0KICAgIGVsc2UKICAgICAgewotQEAgLTE5MjAsNyArMTkyMSw4IEBAIHZhbHVlX3N0 YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5vKQorQEAgLTE5MjcsNyAr MTkyOCw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgCX0K ICAgICAgICBpZiAocmV0dmFsICYmIFZBTFVFX0xWQUwgKHJldHZhbCkgPT0gbHZhbF9tZW1vcnkp CiAgCVNFVF9GSUVMRF9QSFlTQUREUiAoVFlQRV9GSUVMRCAodHlwZSwgZmllbGRubyksCkBAIC0y OTksMTQgKzMyNCwzIEBACiAgICAgIH0KICAgIHJldHVybiByZXR2YWw7CiAgfQotLS0tIGdkYi03 LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwLW9yaWcJMjAw OS0xMi0yMSAxNjo1MDo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmFsZ3JpbmQtZGItYXR0YWNoLmV4cAkyMDA5LTEyLTIxIDE2OjUxOjI0LjAw MDAwMDAwMCArMDEwMAotQEAgLTY3LDYgKzY3LDggQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRl c3QgewotICAgICB9Ci0gfQotIAotK2dkYl90ZXN0ICIiICIiICJlYXQgZmlyc3QgcHJvbXB0Igot KwotICMgSW5pdGlhbGl6YXRpb24gZnJvbSBkZWZhdWx0X2dkYl9zdGFydC4KLSBnZGJfdGVzdCAi c2V0IGhlaWdodCAwIgotIGdkYl90ZXN0ICJzZXQgd2lkdGggMCIKCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLXBpZS5wYXRjaCBiL2dkYi1hcmNoZXItcGllLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwYzhhYWJiLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItcGllLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMjY0NyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcv Z2RiL3dpa2kvUHJvamVjdEFyY2hlcgotaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0Fy Y2hlckJyYW5jaE1hbmFnZW1lbnQKLQotYXJjaGVyLWphbmtyYXRvY2h2aWwtcGllLWZlZG9yYTEy Ci1HSVQgc25hcHNob3Q6Ci1jb21taXQgMmFlNjBiNTE1NmQ0M2FhYmZlNTc1Nzk0MGVhZjdiNDM3 MGZiMDVkMgotCi0KLWRpZmYgLS1naXQgYS9nZGIvYXV4di5jIGIvZ2RiL2F1eHYuYwotaW5kZXgg N2I0ZWNiZS4uN2RmOGViNSAxMDA2NDQKLS0tLSBhL2dkYi9hdXh2LmMKLSsrKyBiL2dkYi9hdXh2 LmMKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2luY2x1ZGUgImluZmVyaW9yLmgiCi0gI2luY2x1ZGUg InZhbHByaW50LmgiCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSsjaW5jbHVkZSAiZ2RiY29y ZS5oIgotIAotICNpbmNsdWRlICJhdXh2LmgiCi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLUBA IC0zMywxNSArMzQsMTEgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAKLSAKLS0vKiBUaGlzIGZ1 bmN0aW9uIGlzIGNhbGxlZCBsaWtlIGEgdG9feGZlcl9wYXJ0aWFsIGhvb2ssIGJ1dCBtdXN0IGJl Ci0tICAgY2FsbGVkIHdpdGggVEFSR0VUX09CSkVDVF9BVVhWLiAgSXQgaGFuZGxlcyBhY2Nlc3Mg dmlhCi0tICAgL3Byb2MvUElEL2F1eHYsIHdoaWNoIGlzIGEgY29tbW9uIG1ldGhvZCBmb3IgbmF0 aXZlIHRhcmdldHMuICAqLwotKy8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBhY2Nlc3MgdmlhIC9w cm9jL1BJRC9hdXh2LCB3aGljaCBpcyBhIGNvbW1vbiBtZXRob2QKLSsgICBmb3IgbmF0aXZlIHRh cmdldHMuICAqLwotIAotLUxPTkdFU1QKLS1wcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLAotLQkJICBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAotLQkJICBjb25zdCBj aGFyICphbm5leCwKLS0JCSAgZ2RiX2J5dGUgKnJlYWRidWYsCi0rc3RhdGljIExPTkdFU1QKLStw cm9jZnNfeGZlcl9hdXh2IChnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSAJCSAgY29uc3QgZ2RiX2J5dGUg KndyaXRlYnVmLAotIAkJICBVTE9OR0VTVCBvZmZzZXQsCi0gCQkgIExPTkdFU1QgbGVuKQotQEAg LTUwLDkgKzQ3LDYgQEAgcHJvY2ZzX3hmZXJfYXV4diAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywK LSAgIGludCBmZDsKLSAgIExPTkdFU1QgbjsKLSAKLS0gIGdkYl9hc3NlcnQgKG9iamVjdCA9PSBU QVJHRVRfT0JKRUNUX0FVWFYpOwotLSAgZ2RiX2Fzc2VydCAocmVhZGJ1ZiB8fCB3cml0ZWJ1Zik7 Ci0tCi0gICBwYXRobmFtZSA9IHhzdHJwcmludGYgKCIvcHJvYy8lZC9hdXh2IiwgUElER0VUIChp bmZlcmlvcl9wdGlkKSk7Ci0gICBmZCA9IG9wZW4gKHBhdGhuYW1lLCB3cml0ZWJ1ZiAhPSBOVUxM ID8gT19XUk9OTFkgOiBPX1JET05MWSk7Ci0gICB4ZnJlZSAocGF0aG5hbWUpOwotQEAgLTcyLDYg KzY2LDE1MiBAQCBwcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotICAg cmV0dXJuIG47Ci0gfQotIAotKy8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBhY2Nlc3MgdmlhIGxk LnNvJ3Mgc3ltYm9sIGBfZGxfYXV4dicuICAqLwotKwotK3N0YXRpYyBMT05HRVNUCi0rbGRfc29f eGZlcl9hdXh2IChnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSsJCSBjb25zdCBnZGJfYnl0ZSAqd3JpdGVi dWYsCi0rCQkgVUxPTkdFU1Qgb2Zmc2V0LAotKwkJIExPTkdFU1QgbGVuKQotK3sKLSsgIHN0cnVj dCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKLSsgIENPUkVfQUREUiBkYXRhX2FkZHJlc3MsIHBvaW50 ZXJfYWRkcmVzczsKLSsgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAodGFy Z2V0X2dkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgc2l6ZV90IHB0cl9zaXplID0gVFlQ RV9MRU5HVEggKHB0cl90eXBlKTsKLSsgIHNpemVfdCBhdXh2X3BhaXJfc2l6ZSA9IDIgKiBwdHJf c2l6ZTsKLSsgIGdkYl9ieXRlICpwdHJfYnVmID0gYWxsb2NhIChwdHJfc2l6ZSk7Ci0rICBMT05H RVNUIHJldHZhbDsKLSsgIHNpemVfdCBibG9jazsKLSsKLSsgIG1zeW0gPSBsb29rdXBfbWluaW1h bF9zeW1ib2wgKCJfZGxfYXV4diIsIE5VTEwsIE5VTEwpOwotKyAgaWYgKG1zeW0gPT0gTlVMTCkK LSsgICAgcmV0dXJuIC0xOwotKwotKyAgaWYgKE1TWU1CT0xfU0laRSAobXN5bSkgIT0gcHRyX3Np emUpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIC8qIFBPSU5URVJfQUREUkVTUyBpcyBhIGxvY2F0 aW9uIHdoZXJlIHRoZSBgX2RsX2F1eHYnIHZhcmlhYmxlIHJlc2lkZXMuCi0rICAgICBEQVRBX0FE RFJFU1MgaXMgdGhlIGluZmVyaW9yIHZhbHVlIHByZXNlbnQgaW4gYF9kbF9hdXh2JywgdGhlcmVm b3JlIHRoZQotKyAgICAgcmVhbCBpbmZlcmlvciBBVVhWIGFkZHJlc3MuICAqLwotKwotKyAgcG9p bnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwotKwotKyAgZGF0YV9h ZGRyZXNzID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAocG9pbnRlcl9hZGRyZXNzLCBwdHJf dHlwZSk7Ci0rCi0rICAvKiBQb3NzaWJseSBzdGlsbCBub3QgaW5pdGlhbGl6ZWQgc3VjaCBhcyBk dXJpbmcgYW4gaW5mZXJpb3Igc3RhcnR1cC4gICovCi0rICBpZiAoZGF0YV9hZGRyZXNzID09IDAp Ci0rICAgIHJldHVybiAtMTsKLSsKLSsgIGRhdGFfYWRkcmVzcyArPSBvZmZzZXQ7Ci0rCi0rICBp ZiAod3JpdGVidWYgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmICh0YXJnZXRfd3JpdGVfbWVt b3J5IChkYXRhX2FkZHJlc3MsIHdyaXRlYnVmLCBsZW4pID09IDApCi0rCXJldHVybiBsZW47Ci0r ICAgICAgZWxzZQotKwlyZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsgIC8qIFN0b3AgaWYgdHJ5aW5n IHRvIHJlYWQgcGFzdCB0aGUgZXhpc3RpbmcgQVVYViBibG9jay4gIFRoZSBmaW5hbCBBVF9OVUxM Ci0rICAgICB3YXMgYWxyZWFkeSByZXR1cm5lZCBiZWZvcmUuICAqLwotKwotKyAgaWYgKG9mZnNl dCA+PSBhdXh2X3BhaXJfc2l6ZSkKLSsgICAgewotKyAgICAgIGlmICh0YXJnZXRfcmVhZF9tZW1v cnkgKGRhdGFfYWRkcmVzcyAtIGF1eHZfcGFpcl9zaXplLCBwdHJfYnVmLAotKwkJCSAgICAgIHB0 cl9zaXplKSAhPSAwKQotKwlyZXR1cm4gLTE7Ci0rCi0rICAgICAgaWYgKGV4dHJhY3RfdHlwZWRf YWRkcmVzcyAocHRyX2J1ZiwgcHRyX3R5cGUpID09IEFUX05VTEwpCi0rCXJldHVybiAwOwotKyAg ICB9Ci0rCi0rICByZXR2YWwgPSAwOwotKyAgYmxvY2sgPSAweDQwMDsKLSsgIGdkYl9hc3NlcnQg KGJsb2NrICUgYXV4dl9wYWlyX3NpemUgPT0gMCk7Ci0rCi0rICB3aGlsZSAobGVuID4gMCkKLSsg ICAgewotKyAgICAgIGlmIChibG9jayA+IGxlbikKLSsJYmxvY2sgPSBsZW47Ci0rCi0rICAgICAg LyogUmVhZGluZyBzaXplcyBzbWFsbGVyIHRoYW4gQVVYVl9QQUlSX1NJWkUgaXMgbm90IHN1cHBv cnRlZC4gIFRhaWxzCi0rCSB1bmFsaWduZWQgdG8gQVVYVl9QQUlSX1NJWkUgd2lsbCBub3QgYmUg cmVhZCBkdXJpbmcgYSBjYWxsICh0aGV5Ci0rCSBzaG91bGQgYmUgY29tcGxldGVkIGR1cmluZyBu ZXh0IHJlYWQgd2l0aCBuZXcvZXh0ZW5kZWQgYnVmZmVyKS4gICovCi0rCi0rICAgICAgYmxvY2sg Jj0gLWF1eHZfcGFpcl9zaXplOwotKyAgICAgIGlmIChibG9jayA9PSAwKQotKwlyZXR1cm4gcmV0 dmFsOwotKwotKyAgICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGRhdGFfYWRkcmVzcywgcmVh ZGJ1ZiwgYmxvY2spICE9IDApCi0rCXsKLSsJICBpZiAoYmxvY2sgPD0gYXV4dl9wYWlyX3NpemUp Ci0rCSAgICByZXR1cm4gcmV0dmFsOwotKwotKwkgIGJsb2NrID0gYXV4dl9wYWlyX3NpemU7Ci0r CSAgY29udGludWU7Ci0rCX0KLSsKLSsgICAgICBkYXRhX2FkZHJlc3MgKz0gYmxvY2s7Ci0rICAg ICAgbGVuIC09IGJsb2NrOwotKwotKyAgICAgIC8qIENoZWNrIHRlcm1pbmFsIEFUX05VTEwuICBU aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBpbmRlZmluaXRlbHkKLSsgICAgICAgICBiZWlu ZyBleHRlbmRlZCBpdHMgUkVBREJVRiB1bnRpbCBpdCByZXR1cm5zIEVPRiAoMCkuICAqLwotKwot KyAgICAgIHdoaWxlIChibG9jayA+PSBhdXh2X3BhaXJfc2l6ZSkKLSsJewotKwkgIHJldHZhbCAr PSBhdXh2X3BhaXJfc2l6ZTsKLSsKLSsJICBpZiAoZXh0cmFjdF90eXBlZF9hZGRyZXNzIChyZWFk YnVmLCBwdHJfdHlwZSkgPT0gQVRfTlVMTCkKLSsJICAgIHJldHVybiByZXR2YWw7Ci0rCi0rCSAg cmVhZGJ1ZiArPSBhdXh2X3BhaXJfc2l6ZTsKLSsJICBibG9jayAtPSBhdXh2X3BhaXJfc2l6ZTsK LSsJfQotKyAgICB9Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0 aW9uIGlzIGNhbGxlZCBsaWtlIGEgdG9feGZlcl9wYXJ0aWFsIGhvb2ssIGJ1dCBtdXN0IGJlCi0r ICAgY2FsbGVkIHdpdGggVEFSR0VUX09CSkVDVF9BVVhWLiAgSXQgaGFuZGxlcyBhY2Nlc3MgdG8g QVVYVi4gICovCi0rCi0rTE9OR0VTVAotK21lbW9yeV94ZmVyX2F1eHYgKHN0cnVjdCB0YXJnZXRf b3BzICpvcHMsCi0rCQkgIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0rCQkgIGNvbnN0IGNo YXIgKmFubmV4LAotKwkJICBnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSsJCSAgY29uc3QgZ2RiX2J5dGUg KndyaXRlYnVmLAotKwkJICBVTE9OR0VTVCBvZmZzZXQsCi0rCQkgIExPTkdFU1QgbGVuKQotK3sK LSsgIC8qIFdvcmthcm91bmQgZ2RiLTcuMCBidWcgd2hlcmUgbGludXhfbmF0X3hmZXJfcGFydGlh bCgpIGRvZXMKLSsgICAgICAgaW5mZXJpb3JfcHRpZCA9IHBpZF90b19wdGlkIChHRVRfTFdQIChp bmZlcmlvcl9wdGlkKSk7Ci0rICAgICBhbmQgY3VycmVudF9pbmZlcmlvcigpIGFzc2VydGlvbiBm YWlscyBub3QgZmluZGluZyB0aGUgTFdQLT5QSUQuCi0rICAgICBJdCBnb3QgZml4ZWQgcG9zdC1n ZGItNy4wIGJ5OgotKyAgICAgICBBZGQgYmFzZSBtdWx0aS1leGVjdXRhYmxlL3Byb2Nlc3Mgc3Vw cG9ydCB0byBHREIuCi0rICAgICAgIDQwZmYwYTI4OWU2MTY1YWE5MzBhZjI4NGRmNWM1MjE2MmNi MGNkNWYKLSsgICAgIGJ5IGludHJvZHVjaW5nIGBjdXJyZW50X2luZmVyaW9yXycuICAqLwotKyAg c3RydWN0IGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAocHRpZF9nZXRfcGlkIChp bmZlcmlvcl9wdGlkKSk7Ci0rCi0rICBnZGJfYXNzZXJ0IChvYmplY3QgPT0gVEFSR0VUX09CSkVD VF9BVVhWKTsKLSsgIGdkYl9hc3NlcnQgKHJlYWRidWYgfHwgd3JpdGVidWYpOwotKwotKyAgIC8q IGxkX3NvX3hmZXJfYXV4diBpcyB0aGUgb25seSBmdW5jdGlvbiBzYWZlIGZvciB2aXJ0dWFsIGV4 ZWN1dGFibGVzIGJlaW5nCi0rICAgICAgZXhlY3V0ZWQgYnkgdmFsZ3JpbmQncyBtZW1jaGVjay4g IEFzIHVzaW5nIGxkX3NvX3hmZXJfYXV4diBpcyBwcm9ibGVtYXRpYwotKyAgICAgIGR1cmluZyBp bmZlcmlvciBzdGFydHVwIEdEQiBkb2VzIGNhbGwgaXQgb25seSBmb3IgYXR0YWNoZWQgcHJvY2Vz c2VzLiAgKi8KLSsKLSsgIGlmIChpbmYgPT0gTlVMTCB8fCBpbmYtPmF0dGFjaF9mbGFnICE9IDAp Ci0rICAgIHsKLSsgICAgICBMT05HRVNUIHJldHZhbDsKLSsKLSsgICAgICByZXR2YWwgPSBsZF9z b194ZmVyX2F1eHYgKHJlYWRidWYsIHdyaXRlYnVmLCBvZmZzZXQsIGxlbik7Ci0rICAgICAgaWYg KHJldHZhbCAhPSAtMSkKLSsJcmV0dXJuIHJldHZhbDsKLSsgICAgfQotKwotKyAgcmV0dXJuIHBy b2Nmc194ZmVyX2F1eHYgKHJlYWRidWYsIHdyaXRlYnVmLCBvZmZzZXQsIGxlbik7Ci0rfQotKwot IC8qIFJlYWQgb25lIGF1eHYgZW50cnkgZnJvbSAqUkVBRFBUUiwgbm90IHJlYWRpbmcgbG9jYXRp b25zID49IEVORFBUUi4KLSAgICBSZXR1cm4gMCBpZiAqUkVBRFBUUiBpcyBhbHJlYWR5IGF0IHRo ZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLSAgICBSZXR1cm4gLTEgaWYgdGhlcmUgaXMgaW5zdWZmaWNp ZW50IGJ1ZmZlciBmb3IgYSB3aG9sZSBlbnRyeS4KLWRpZmYgLS1naXQgYS9nZGIvYXV4di5oIGIv Z2RiL2F1eHYuaAotaW5kZXggNzFlNjU2Mi4uODdjMjRhZSAxMDA2NDQKLS0tLSBhL2dkYi9hdXh2 LmgKLSsrKyBiL2dkYi9hdXh2LmgKLUBAIC00MywxMSArNDMsNyBAQCBleHRlcm4gaW50IHRhcmdl dF9hdXh2X3NlYXJjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSAvKiBQcmludCB0aGUgY29u dGVudHMgb2YgdGhlIHRhcmdldCdzIEFVWFYgb24gdGhlIHNwZWNpZmllZCBmaWxlLiAqLwotIGV4 dGVybiBpbnQgZnByaW50X3RhcmdldF9hdXh2IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgc3RydWN0 IHRhcmdldF9vcHMgKm9wcyk7Ci0gCi0tLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgbGlrZSBh IHRvX3hmZXJfcGFydGlhbCBob29rLCBidXQgbXVzdCBiZQotLSAgIGNhbGxlZCB3aXRoIFRBUkdF VF9PQkpFQ1RfQVVYVi4gIEl0IGhhbmRsZXMgYWNjZXNzIHZpYQotLSAgIC9wcm9jL1BJRC9hdXh2 LCB3aGljaCBpcyBhIGNvbW1vbiBtZXRob2QgZm9yIG5hdGl2ZSB0YXJnZXRzLiAgKi8KLS0KLS1l eHRlcm4gTE9OR0VTVCBwcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAot K2V4dGVybiBMT05HRVNUIG1lbW9yeV94ZmVyX2F1eHYgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMs Ci0gCQkJCSBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAotIAkJCQkgY29uc3QgY2hhciAqYW5u ZXgsCi0gCQkJCSBnZGJfYnl0ZSAqcmVhZGJ1ZiwKLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2lu dC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXggMGYzNTEwMS4uYmZmYzVhNiAxMDA2NDQKLS0t LSBhL2dkYi9icmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC00ODA1LDcg KzQ4MDUsOCBAQCBkaXNhYmxlX2JyZWFrcG9pbnRzX2luX3NobGlicyAodm9pZCkKLSAgICAgICAg dG8gaW5zZXJ0IHRob3NlIGJyZWFrcG9pbnRzIGFuZCBmYWlsLiAgKi8KLSAgICAgaWYgKCgoYi0+ dHlwZSA9PSBicF9icmVha3BvaW50KQotIAkgfHwgKGItPnR5cGUgPT0gYnBfaGFyZHdhcmVfYnJl YWtwb2ludCkKLS0JIHx8IChiLT50eXBlID09IGJwX3RyYWNlcG9pbnQpKQotKwkgfHwgKGItPnR5 cGUgPT0gYnBfdHJhY2Vwb2ludCkKLSsJIHx8IGItPnR5cGUgPT0gYnBfc2hsaWJfZXZlbnQpCi0g CSYmICFsb2MtPnNobGliX2Rpc2FibGVkCi0gI2lmZGVmIFBDX1NPTElCCi0gCSYmIFBDX1NPTElC IChsb2MtPmFkZHJlc3MpCi1kaWZmIC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKLWlu ZGV4IDk0Njc0ZGMuLjU3YWFhZTIgMTAwNjQ0Ci0tLS0gYS9nZGIvZGVmcy5oCi0rKysgYi9nZGIv ZGVmcy5oCi1AQCAtOTgsNyArOTgsMjAgQEAKLSAvKiBBIGJ5dGUgZnJvbSB0aGUgcHJvZ3JhbSBi ZWluZyBkZWJ1Z2dlZC4gICovCi0gdHlwZWRlZiBiZmRfYnl0ZSBnZGJfYnl0ZTsKLSAKLS0vKiBB biBhZGRyZXNzIGluIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkLiAgSG9zdCBieXRlIG9yZGVy LiAgKi8KLSsvKiBBbiBhZGRyZXNzIGluIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkLiAgSG9z dCBieXRlIG9yZGVyLgotKwotKyAgIEl0cyB3aWR0aCBpcyB0aGUgbWF4aW11bSB3aWR0aCBvZiBh bGwgdGhlIHN1cHBvcnRlZCB0YXJnZXRzLiAgVGhhdCBtZWFucwotKyAgIDMyLWJpdCB0YXJnZXQg d2lsbCBydW4gb24gc3VjaCBHREIgdXNpbmcgNjQtYml0IENPUkVfQUREUiBjbHV0dGVyaW5nIHRo ZQotKyAgIGJpdHMgMzIuLi42MyB3aXRoIHJhbmRvbSBkYXRhIGZyb20gaW50ZXJuYWwgR0RCIGNh bGN1bGF0aW9ucy4gIEdEQiBjdXJyZW50bHkKLSsgICBpbiBnZW5lcmFsIHRydW5jYXRlcyB0aGUg YWRkcmVzcyB3aWR0aCBvbmx5IHdoZW4gaXQgaXMgYmVpbmcgcHJlc2VudGVkL3VzZWQKLSsgICBl eHRlcm5hbGx5IChzdWNoIGFzIGJ5IHRoZSBwYWRkcmVzcyBmdW5jdGlvbikuCi0rCi0rICAgRklY TUU6IFRoaXMgaXMgc3RpbGwgbm90IHJpZ2h0IGFzIGFueSBHREIgaW50ZXJuYWwgY29tcGFyaXNv bnMgKHN1Y2ggYXMgPj0pCi0rICAgb2YgQ09SRV9BRERSIGRvIG5vdCB1c2UgdGhlIHByb3Blcmx5 IHRydW5jYXRlZCB3aWR0aC4gIEFzIGNvbnZlcnRpbmcgYWxsIHRoZQotKyAgIENPUkVfQUREUiBv cGVyYXRpb25zIHRvIHdpZHRoLWF3YXJlIGZ1bmN0aW9ucyBpcyBub3QgZmVhc2libGUgdGhlIHdh eSBvdXQKLSsgICBjb3VsZCBiZSBhIHdpZHRoLWF3YXJlIEMrKyBjbGFzcyBDT1JFX0FERFIgcmVm ZXJlbmNpbmcgZ2RiYXJjaCBhcyBpdHMKLSsgICBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuICAqLwot KwotIHR5cGVkZWYgYmZkX3ZtYSBDT1JFX0FERFI7Ci0gCi0gLyogVGhlIGxhcmdlc3QgQ09SRV9B RERSIHZhbHVlLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvZXhlYy5jIGIvZ2RiL2V4ZWMuYwotaW5k ZXggNDU1MTUxZS4uNjdmNDBkOSAxMDA2NDQKLS0tLSBhL2dkYi9leGVjLmMKLSsrKyBiL2dkYi9l eGVjLmMKLUBAIC02NTYsOCArNjU2LDMzIEBAIHByaW50X3NlY3Rpb25faW5mbyAoc3RydWN0IHRh cmdldF9zZWN0aW9uX3RhYmxlICp0LCBiZmQgKmFiZmQpCi0gICB3cmFwX2hlcmUgKCIgICAgICAg ICIpOwotICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJmaWxlIHR5cGUgJXMuXG4iKSwgYmZkX2dldF90 YXJnZXQgKGFiZmQpKTsKLSAgIGlmIChhYmZkID09IGV4ZWNfYmZkKQotLSAgICBwcmludGZfZmls dGVyZWQgKF8oIlx0RW50cnkgcG9pbnQ6ICVzXG4iKSwKLS0gICAgICAgICAgICAgICAgICAgICBw YWRkcmVzcyAoZ2RiYXJjaCwgYmZkX2dldF9zdGFydF9hZGRyZXNzIChhYmZkKSkpOwotKyAgICB7 Ci0rICAgICAgYmZkX3ZtYSBkaXNwbGFjZW1lbnQgPSAwOwotKwotKyAgICAgIGZvciAocCA9IHQt PnNlY3Rpb25zOyBwIDwgdC0+c2VjdGlvbnNfZW5kOyBwKyspCi0rCXsKLSsJICBhc2VjdGlvbiAq YXNlY3QgPSBwLT50aGVfYmZkX3NlY3Rpb247Ci0rCi0rCSAgaWYgKChiZmRfZ2V0X3NlY3Rpb25f ZmxhZ3MgKGFiZmQsIGFzZWN0KSAmIChTRUNfQUxMT0MgfCBTRUNfTE9BRCkpCi0rCSAgICAgICE9 IChTRUNfQUxMT0MgfCBTRUNfTE9BRCkpCi0rCSAgICBjb250aW51ZTsKLSsKLSsJICBpZiAoYmZk X2dldF9zZWN0aW9uX3ZtYSAoYWJmZCwgYXNlY3QpIDw9IGFiZmQtPnN0YXJ0X2FkZHJlc3MKLSsJ ICAgICAgJiYgYWJmZC0+c3RhcnRfYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKGFiZmQs IGFzZWN0KQotKwkJCQkgICAgICAgKyBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoYXNlY3QpKQotKwkg ICAgewotKwkgICAgICBkaXNwbGFjZW1lbnQgPSBwLT5hZGRyIC0gYmZkX2dldF9zZWN0aW9uX3Zt YSAoYWJmZCwgYXNlY3QpOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICAgIGlm IChwID09IHQtPnNlY3Rpb25zX2VuZCkKLSsJd2FybmluZyAoXygiQ2Fubm90IGZpbmQgc2VjdGlv biBmb3IgdGhlIGVudHJ5IHBvaW50IG9mICVzLlxuIiksCi0rCQkgYmZkX2dldF9maWxlbmFtZSAo YWJmZCkpOwotKwotKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiXHRFbnRyeSBwb2ludDogJXNc biIpLAotKwkJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBiZmRfZ2V0X3N0YXJ0X2FkZHJlc3Mg KGFiZmQpCi0rCQkJCQkgICsgZGlzcGxhY2VtZW50KSk7Ci0rICAgIH0KLSAgIGZvciAocCA9IHQt PnNlY3Rpb25zOyBwIDwgdC0+c2VjdGlvbnNfZW5kOyBwKyspCi0gICAgIHsKLSAgICAgICBwcmlu dGZfZmlsdGVyZWQgKCJcdCVzIiwgaGV4X3N0cmluZ19jdXN0b20gKHAtPmFkZHIsIHdpZCkpOwot ZGlmZiAtLWdpdCBhL2dkYi9pbmZjbWQuYyBiL2dkYi9pbmZjbWQuYwotaW5kZXggZmFiMTg5Mi4u ZmMwZjA1ZCAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjbWQuYwotKysrIGIvZ2RiL2luZmNtZC5jCi1A QCAtMzk1LDIyICszOTUsNiBAQCBwb3N0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldF9v cHMgKnRhcmdldCwgaW50IGZyb21fdHR5KQotICAgLyogTm93IHRoYXQgd2Uga25vdyB0aGUgcmVn aXN0ZXIgbGF5b3V0LCByZXRyaWV2ZSBjdXJyZW50IFBDLiAgKi8KLSAgIHN0b3BfcGMgPSByZWdj YWNoZV9yZWFkX3BjIChnZXRfY3VycmVudF9yZWdjYWNoZSAoKSk7Ci0gCi0tICAvKiBJZiB0aGUg c29saXN0IGlzIGdsb2JhbCBhY3Jvc3MgcHJvY2Vzc2VzLCB0aGVyZSdzIG5vIG5lZWQgdG8KLS0g ICAgIHJlZmV0Y2ggaXQgaGVyZS4gICovCi0tICBpZiAoZXhlY19iZmQgJiYgIWdkYmFyY2hfaGFz X2dsb2JhbF9zb2xpc3QgKHRhcmdldF9nZGJhcmNoKSkKLS0gICAgewotLSAgICAgIC8qIFNvbWV0 aW1lcyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgaG9vayBsb2FkcyBpbml0aWFsIHNoYXJlZAotLQkg bGlicmFyaWVzLCBhbmQgc29tZXRpbWVzIGl0IGRvZXNuJ3QuICBUcnkgdG8gZG8gc28gZmlyc3Qs IHNvCi0tCSB0aGF0IHdlIGNhbiBhZGQgdGhlbSB3aXRoIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBG Uk9NX1RUWS4KLS0JIElmIHdlIG1hZGUgYWxsIHRoZSBpbmZlcmlvciBob29rIG1ldGhvZHMgY29u c2lzdGVudCwKLS0JIHRoaXMgY2FsbCBjb3VsZCBiZSByZW1vdmVkLiAgKi8KLS0jaWZkZWYgU09M SUJfQURECi0tICAgICAgU09MSUJfQUREIChOVUxMLCBmcm9tX3R0eSwgdGFyZ2V0LCBhdXRvX3Nv bGliX2FkZCk7Ci0tI2Vsc2UKLS0gICAgICBzb2xpYl9hZGQgKE5VTEwsIGZyb21fdHR5LCB0YXJn ZXQsIGF1dG9fc29saWJfYWRkKTsKLS0jZW5kaWYKLS0gICAgfQotLQotICAgaWYgKGV4ZWNfYmZk KQotICAgICB7Ci0gICAgICAgLyogQ3JlYXRlIHRoZSBob29rcyB0byBoYW5kbGUgc2hhcmVkIGxp YnJhcnkgbG9hZCBhbmQgdW5sb2FkCi1AQCAtNDE4LDcgKzQwMiwyNSBAQCBwb3N0X2NyZWF0ZV9p bmZlcmlvciAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgaW50IGZyb21fdHR5KQotICNpZmRl ZiBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSwotICAgICAgIFNPTElCX0NSRUFURV9JTkZFUklP Ul9IT09LIChQSURHRVQgKGluZmVyaW9yX3B0aWQpKTsKLSAjZWxzZQotLSAgICAgIHNvbGliX2Ny ZWF0ZV9pbmZlcmlvcl9ob29rICgpOwotKyAgICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29r IChmcm9tX3R0eSk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsgIC8qIElmIHRoZSBzb2xpc3QgaXMg Z2xvYmFsIGFjcm9zcyBwcm9jZXNzZXMsIHRoZXJlJ3Mgbm8gbmVlZCB0bwotKyAgICAgcmVmZXRj aCBpdCBoZXJlLiAgKi8KLSsgIGlmIChleGVjX2JmZCAmJiAhZ2RiYXJjaF9oYXNfZ2xvYmFsX3Nv bGlzdCAodGFyZ2V0X2dkYmFyY2gpKQotKyAgICB7Ci0rICAgICAgLyogU29tZXRpbWVzIHRoZSBw bGF0Zm9ybS1zcGVjaWZpYyBob29rIGxvYWRzIGluaXRpYWwgc2hhcmVkCi0rCSBsaWJyYXJpZXMs IGFuZCBzb21ldGltZXMgaXQgZG9lc24ndC4gIElmIGl0IGRvZXNuJ3QgRlJPTV9UVFkgd2lsbCBi ZQotKwkgaW5jb3JyZWN0bHkgMCBidXQgc3VjaCBzb2xpYiB0YXJnZXRzIHNob3VsZCBiZSBmaXhl ZCBhbnl3YXkuICBJZiB3ZQotKwkgbWFkZSBhbGwgdGhlIGluZmVyaW9yIGhvb2sgbWV0aG9kcyBj b25zaXN0ZW50LCB0aGlzIGNhbGwgY291bGQgYmUKLSsJIHJlbW92ZWQuICBDYWxsIGl0IG9ubHkg YWZ0ZXIgdGhlIHNvbGliIHRhcmdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBieQotKwkgc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2suICAqLwotKwotKyNpZmRlZiBTT0xJQl9BREQKLSsgICAgICBT T0xJQl9BREQgKE5VTEwsIDAsIHRhcmdldCwgYXV0b19zb2xpYl9hZGQpOwotKyNlbHNlCi0rICAg ICAgc29saWJfYWRkIChOVUxMLCAwLCB0YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKLSAjZW5kaWYK LSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwotaW5k ZXggOWQyOWIxNS4uZWQ0NTFkNSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZydW4uYwotKysrIGIvZ2Ri L2luZnJ1bi5jCi1AQCAtNTQ0LDcgKzU0NCw3IEBAIGZvbGxvd19leGVjIChwdGlkX3QgcGlkLCBj aGFyICpleGVjZF9wYXRobmFtZSkKLSAjaWZkZWYgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0sK LSAgIFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LIChQSURHRVQgKGluZmVyaW9yX3B0aWQpKTsK LSAjZWxzZQotLSAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCk7Ci0rICBzb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoMCk7Ci0gI2VuZGlmCi0gCi0gICBqaXRfaW5mZXJpb3JfY3JlYXRl ZF9ob29rICgpOwotZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQu YwotaW5kZXggMDkwN2YwMy4uMWMxODc4MiAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuYwot KysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtNDY3NCw3ICs0Njc0LDcgQEAgbGludXhfeGZlcl9w YXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0 LAotICAgTE9OR0VTVCB4ZmVyOwotIAotICAgaWYgKG9iamVjdCA9PSBUQVJHRVRfT0JKRUNUX0FV WFYpCi0tICAgIHJldHVybiBwcm9jZnNfeGZlcl9hdXh2IChvcHMsIG9iamVjdCwgYW5uZXgsIHJl YWRidWYsIHdyaXRlYnVmLAotKyAgICByZXR1cm4gbWVtb3J5X3hmZXJfYXV4diAob3BzLCBvYmpl Y3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSAJCQkgICAgIG9mZnNldCwgbGVuKTsKLSAK LSAgIGlmIChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9PU0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ2Ri L2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVwLmMKLWluZGV4IDY2MzQ3MDMuLjM3NzcwZjUg MTAwNjQ0Ci0tLS0gYS9nZGIvbGludXgtdGRlcC5jCi0rKysgYi9nZGIvbGludXgtdGRlcC5jCi1A QCAtMTgsMTIgKzE4LDggQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImRl ZnMuaCIKLS0jaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJnZGJ0eXBlcy5oIgotICNp bmNsdWRlICJsaW51eC10ZGVwLmgiCi0tI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0tCi0tI2luY2x1 ZGUgImVsZi1iZmQuaCIKLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIGZvciBhcmNo aXRlY3R1cmVzIHRoYXQgZG9uJ3QKLSAgICBleHRlbmQvb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIHNp Z2luZm8gc3RydWN0dXJlLiAgKi8KLUBAIC0xMzgsMzAgKzEzNCwzIEBAIGxpbnV4X2dldF9zaWdp bmZvX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIAotICAgcmV0dXJuIHNpZ2luZm9f dHlwZTsKLSB9Ci0tCi0tLyogT2JzZXJ2ZXIgZm9yIHRoZSBleGVjdXRhYmxlX2NoYW5nZWQgZXZl bnQsIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG5ldwotLSAgIGV4ZWMgYmluYXJ5IGlzIGEgUElFIChQ b3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlKSBzcGVjaW1lbiwgd2hpY2gKLS0gICBpcyBj dXJyZW50bHkgdW5zdXBwb3J0ZWQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tY2hlY2tfaXNfcGll X2JpbmFyeSAodm9pZCkKLS17Ci0tICBFbGZfSW50ZXJuYWxfRWhkciAqZWxmX2hkcjsKLS0KLS0g IGlmICghZXhlY19iZmQpCi0tICAgIHJldHVybjsKLS0gIGVsc2UgaWYgKGJmZF9nZXRfZmxhdm91 ciAoZXhlY19iZmQpICE9IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0tICAgIHJldHVybjsKLS0K LS0gIGlmIChlbGZfdGRhdGEgKGV4ZWNfYmZkKS0+ZWxmX2hlYWRlci0+ZV90eXBlID09IEVUX0RZ TikKLS0gICAgd2FybmluZyAoXygiXAotLVRoZSBjdXJyZW50IGJpbmFyeSBpcyBhIFBJRSAoUG9z aXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSksIHdoaWNoXG5cCi0tR0RCIGRvZXMgTk9UIGN1 cnJlbnRseSBzdXBwb3J0LiAgTW9zdCBkZWJ1Z2dlciBmZWF0dXJlcyB3aWxsIGZhaWwgaWYgdXNl ZFxuXAotLWluIHRoaXMgc2Vzc2lvbi5cbiIpKTsKLS19Ci0tCi0tdm9pZAotLV9pbml0aWFsaXpl X2xpbnV4X3RkZXAgKHZvaWQpCi0tewotLSAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1dGFibGVfY2hh bmdlZCAoY2hlY2tfaXNfcGllX2JpbmFyeSk7Ci0tfQotZGlmZiAtLWdpdCBhL2dkYi9udG8tcHJv Y2ZzLmMgYi9nZGIvbnRvLXByb2Nmcy5jCi1pbmRleCAwYWRiMDQ1Li5lYTg5MzMxIDEwMDY0NAot LS0tIGEvZ2RiL250by1wcm9jZnMuYwotKysrIGIvZ2RiL250by1wcm9jZnMuYwotQEAgLTY1Miw3 ICs2NTIsNyBAQCBzdGF0aWMgdm9pZAotIHByb2Nmc19wb3N0X2F0dGFjaCAocGlkX3QgcGlkKQot IHsKLSAgIGlmIChleGVjX2JmZCkKLS0gICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCk7 Ci0rICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgwKTsKLSB9Ci0gCi0gc3RhdGljIHB0 aWRfdAotQEAgLTEyMTIsNyArMTIxMiw3IEBAIHByb2Nmc19jcmVhdGVfaW5mZXJpb3IgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsIGNoYXIgKmV4ZWNfZmlsZSwKLSAKLSAgIGlmIChleGVjX2JmZCAh PSBOVUxMCi0gICAgICAgfHwgKHN5bWZpbGVfb2JqZmlsZSAhPSBOVUxMICYmIHN5bWZpbGVfb2Jq ZmlsZS0+b2JmZCAhPSBOVUxMKSkKLS0gICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCk7 Ci0rICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgwKTsKLSB9Ci0gCi0gc3RhdGljIHZv aWQKLWRpZmYgLS1naXQgYS9nZGIvb2JqZmlsZXMuYyBiL2dkYi9vYmpmaWxlcy5jCi1pbmRleCBl NTQ0MmNhLi5mYjBjZWE5IDEwMDY0NAotLS0tIGEvZ2RiL29iamZpbGVzLmMKLSsrKyBiL2dkYi9v YmpmaWxlcy5jCi1AQCAtNTQ0LDkgKzU0NCwxMCBAQCBmcmVlX2FsbF9vYmpmaWxlcyAodm9pZCkK LSB9Ci0gDAotIC8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMuICBUaGVyZSBzaG91 bGQgYmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCi0tICAgZW50cmllcyBpbiBuZXdfb2Zmc2V0cy4g ICovCi0tdm9pZAotLW9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBz dHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKLSsgICBlbnRyaWVzIGluIG5ld19v ZmZzZXRzLiAgU0VQQVJBVEVfREVCVUdfT0JKRklMRSBpcyBub3QgdG91Y2hlZCBoZXJlLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK29iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCi0gewotICAgc3RydWN0 IG9ial9zZWN0aW9uICpzOwotICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEgPQotQEAg LTYyNCw2ICs2MjUsMTAgQEAgb2JqZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRzKQotICAgICB9Ci0gICB9Ci0g Ci0rICBpZiAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCkKLSsgICAgYWRkcm1hcF9yZWxvY2F0 ZSAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCwKLSsJCSAgICAgIEFOT0ZGU0VUIChkZWx0YSwg U0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpKTsKLSsKLSAgIHsKLSAgICAgc3RydWN0IHBhcnRpYWxf c3ltdGFiICpwOwotIAotQEAgLTcwMSw2ICs3MDYsNDkgQEAgb2JqZmlsZV9yZWxvY2F0ZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRz KQotICAgICAgIGV4ZWNfc2V0X3NlY3Rpb25fYWRkcmVzcyAoYmZkX2dldF9maWxlbmFtZSAob2Jq ZmlsZS0+b2JmZCksIGlkeCwKLSAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykpOwotICAgICB9Ci0r fQotKwotKy8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMuICBUaGVyZSBzaG91bGQg YmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCi0rICAgZW50cmllcyBpbiBuZXdfb2Zmc2V0cy4gIFBy b2Nlc3MgYWxzbyBPQkpGSUxFJ3MgU0VQQVJBVEVfREVCVUdfT0JKRklMRS4KLSsKLSsgICBUaGUg bnVtYmVyIGFuZCBvcmRlcmluZyBvZiBzZWN0aW9ucyBkb2VzIGRpZmZlciBiZXR3ZWVuIHRoZSB0 d28gb2JqZmlsZXMuCi0rICAgT25seSB0aGVpciBuYW1lcyBtYXRjaC4gIEFsc28gdGhlIGZpbGUg b2Zmc2V0cyB3aWxsIGRpZmZlciAob2JqZmlsZSBiZWluZwotKyAgIHBvc3NpYmx5IHByZWxpbmtl ZCBidXQgc2VwYXJhdGVfZGVidWdfb2JqZmlsZSBpcyBwcm9iYWJseSBub3QgcHJlbGlua2VkKSBi dXQKLSsgICB0aGUgaW4tbWVtb3J5IGFic29sdXRlIGFkZHJlc3MgYXMgc3BlY2lmaWVkIGJ5IE5F V19PRkZTRVRTIG11c3QgbWF0Y2ggYm90aAotKyAgIGZpbGVzLiAgKi8KLSsKLSt2b2lkCi0rb2Jq ZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29m ZnNldHMgKm5ld19vZmZzZXRzKQotK3sKLSsgIG9iamZpbGVfcmVsb2NhdGUxIChvYmpmaWxlLCBu ZXdfb2Zmc2V0cyk7Ci0rCi0rICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSAh PSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IG9iamZpbGUgKmRlYnVnX29iamZpbGUgPSBv YmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlOwotKyAgICAgIHN0cnVjdCBzZWN0aW9uX2Fk ZHJfaW5mbyAqb2JqZmlsZV9hZGRyczsKLSsgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpu ZXdfZGVidWdfb2Zmc2V0czsKLSsgICAgICBpbnQgbmV3X2RlYnVnX251bV9zZWN0aW9uczsKLSsg ICAgICBzdHJ1Y3QgY2xlYW51cCAqbXlfY2xlYW51cHM7Ci0rCi0rICAgICAgb2JqZmlsZV9hZGRy cyA9IGJ1aWxkX3NlY3Rpb25fYWRkcl9pbmZvX2Zyb21fb2JqZmlsZSAob2JqZmlsZSk7Ci0rICAg ICAgbXlfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBvYmpmaWxlX2FkZHJzKTsKLSsK LSsgICAgICAvKiBIZXJlIE9CSkZJTEVfQUREUlMgY29udGFpbiB0aGUgY29ycmVjdCBhYnNvbHV0 ZSBhZGRyZXNzZXMsIHRoZQotKwkgcmVsYXRpdmUgb25lcyBtdXN0IGJlIGFscmVhZHkgY3JlYXRl ZCBhY2NvcmRpbmcgdG8gZGVidWdfb2JqZmlsZS4gICovCi0rCi0rICAgICAgYWRkcl9pbmZvX21h a2VfcmVsYXRpdmUgKG9iamZpbGVfYWRkcnMsIGRlYnVnX29iamZpbGUtPm9iZmQpOwotKwotKyAg ICAgIGdkYl9hc3NlcnQgKGRlYnVnX29iamZpbGUtPm51bV9zZWN0aW9ucwotKwkJICA9PSBiZmRf Y291bnRfc2VjdGlvbnMgKGRlYnVnX29iamZpbGUtPm9iZmQpKTsKLSsgICAgICBuZXdfZGVidWdf b2Zmc2V0cyA9IGFsbG9jYSAoU0laRU9GX05fU0VDVElPTl9PRkZTRVRTCi0rCQkJCQkJIChkZWJ1 Z19vYmpmaWxlLT5udW1fc2VjdGlvbnMpKTsKLSsgICAgICByZWxhdGl2ZV9hZGRyX2luZm9fdG9f c2VjdGlvbl9vZmZzZXRzIChuZXdfZGVidWdfb2Zmc2V0cywKLSsJCQkJCSAgICAgZGVidWdfb2Jq ZmlsZS0+bnVtX3NlY3Rpb25zLAotKwkJCQkJICAgICBvYmpmaWxlX2FkZHJzKTsKLSsgICAgICBk b19jbGVhbnVwcyAobXlfY2xlYW51cHMpOwotKwotKyAgICAgIG9iamZpbGVfcmVsb2NhdGUxIChk ZWJ1Z19vYmpmaWxlLCBuZXdfZGVidWdfb2Zmc2V0cyk7Ci0rICAgIH0KLSAKLSAgIC8qIFJlbG9j YXRlIGJyZWFrcG9pbnRzIGFzIG5lY2Vzc2FyeSwgYWZ0ZXIgdGhpbmdzIGFyZSByZWxvY2F0ZWQu ICovCi0gICBicmVha3BvaW50X3JlX3NldCAoKTsKLWRpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMg Yi9nZGIvcHJvY2ZzLmMKLWluZGV4IGI1NjliYWMuLjE1ODI5YzIgMTAwNjQ0Ci0tLS0gYS9nZGIv cHJvY2ZzLmMKLSsrKyBiL2dkYi9wcm9jZnMuYwotQEAgLTQzNzYsNyArNDM3Niw3IEBAIHByb2Nm c194ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVj dCBvYmplY3QsCi0gCi0gI2lmZGVmIE5FV19QUk9DX0FQSQotICAgICBjYXNlIFRBUkdFVF9PQkpF Q1RfQVVYVjoKLS0gICAgICByZXR1cm4gcHJvY2ZzX3hmZXJfYXV4diAob3BzLCBvYmplY3QsIGFu bmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSsgICAgICByZXR1cm4gbWVtb3J5X3hmZXJfYXV4diAo b3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSAJCQkgICAgICAgb2Zmc2V0 LCBsZW4pOwotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1kYXJ3aW4uYyBiL2dk Yi9zb2xpYi1kYXJ3aW4uYwotaW5kZXggOTQyOGQ5Mi4uMzU5MTE2OCAxMDA2NDQKLS0tLSBhL2dk Yi9zb2xpYi1kYXJ3aW4uYwotKysrIGIvZ2RiL3NvbGliLWRhcndpbi5jCi1AQCAtMjc3LDcgKzI3 Nyw3IEBAIGRhcndpbl9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKLSAKLSAvKiBTaGFy ZWQgbGlicmFyeSBzdGFydHVwIHN1cHBvcnQuICBTZWUgZG9jdW1lbnRhdGlvbiBpbiBzb2xpYi1z dnI0LmMgICovCi0gc3RhdGljIHZvaWQKLS1kYXJ3aW5fc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2sgKHZvaWQpCi0rZGFyd2luX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90 dHkpCi0gewotICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOwotICAgY2hhciAqKmJr cHRfbmFtZXA7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWZydi5jIGIvZ2RiL3NvbGliLWZydi5j Ci1pbmRleCBiOGQ1NTI4Li4wMDJjNTg5IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLWZydi5jCi0r KysgYi9nZGIvc29saWItZnJ2LmMKLUBAIC05NzEsNyArOTcxLDcgQEAgZnJ2X3JlbG9jYXRlX21h aW5fZXhlY3V0YWJsZSAodm9pZCkKLSAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWZydl9zb2xpYl9j cmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKLStmcnZfc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2sgKGludCBmcm9tX3R0eSkKLSB7Ci0gICAvKiBSZWxvY2F0ZSBtYWluIGV4ZWN1dGFibGUuICAq LwotICAgZnJ2X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLWRpZmYgLS1naXQgYS9nZGIv c29saWItaXJpeC5jIGIvZ2RiL3NvbGliLWlyaXguYwotaW5kZXggYTBjMWNkMi4uZjk0ZjdkYyAx MDA2NDQKLS0tLSBhL2dkYi9zb2xpYi1pcml4LmMKLSsrKyBiL2dkYi9zb2xpYi1pcml4LmMKLUBA IC0zODYsNyArMzg2LDcgQEAgZW5hYmxlX2JyZWFrICh2b2lkKQotIAotICAgIFNZTk9QU0lTCi0g Ci0tICAgdm9pZCBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoKQotKyAgIHZvaWQgc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSAKLSAgICBERVNDUklQVElPTgot IAotQEAgLTQzMSw3ICs0MzEsNyBAQCBlbmFibGVfYnJlYWsgKHZvaWQpCi0gICovCi0gCi0gc3Rh dGljIHZvaWQKLS1pcml4X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQotK2lyaXhf c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSB7Ci0gICBzdHJ1Y3Qg aW5mZXJpb3IgKmluZjsKLSAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7Ci1kaWZmIC0tZ2l0IGEv Z2RiL3NvbGliLW51bGwuYyBiL2dkYi9zb2xpYi1udWxsLmMKLWluZGV4IGIzOWNjZGIuLjg3Zjc4 NDggMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItbnVsbC5jCi0rKysgYi9nZGIvc29saWItbnVsbC5j Ci1AQCAtMzIsNyArMzIsNyBAQCBudWxsX3NwZWNpYWxfc3ltYm9sX2hhbmRsaW5nICh2b2lkKQot IH0KLSAKLSBzdGF0aWMgdm9pZAotLW51bGxfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZv aWQpCi0rbnVsbF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsK LSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLW9zZi5jIGIvZ2RiL3NvbGliLW9zZi5jCi1p bmRleCBjMjk1MzM1Li4wYWNjN2ZiIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLW9zZi5jCi0rKysg Yi9nZGIvc29saWItb3NmLmMKLUBAIC0zMDYsNyArMzA2LDcgQEAgb3NmX2NsZWFyX3NvbGliICh2 b2lkKQotICAgIEFsc28sIHdoYXQgaWYgY2hpbGQgaGFzIGV4aXQoKWVkPyAgTXVzdCBleGl0IGxv b3Agc29tZWhvdy4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1vc2Zfc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKHZvaWQpCi0rb3NmX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJv bV90dHkpCi0gewotICAgc3RydWN0IGluZmVyaW9yICppbmY7Ci0gICBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwOwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1wYTY0LmMgYi9nZGIvc29saWItcGE2NC5j Ci1pbmRleCA2MzdmYzFhLi4xNmQ0MDEwIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLXBhNjQuYwot KysrIGIvZ2RiL3NvbGliLXBhNjQuYwotQEAgLTMyOSw3ICszMjksNyBAQCBiZmRfbG9va3VwX3N5 bWJvbCAoYmZkICphYmZkLCBjaGFyICpzeW1uYW1lKQotICAgIHdpdGggc2hhcmVkIGxpYnJhcmll cyBtYXBwZWQgc2hhcmVhYmxlLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXBhNjRfc29saWJfY3Jl YXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCi0rcGE2NF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v ayAoaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsK LSAgIHVuc2lnbmVkIGludCBkbGRfZmxhZ3MsIHN0YXR1czsKLWRpZmYgLS1naXQgYS9nZGIvc29s aWItc29tLmMgYi9nZGIvc29saWItc29tLmMKLWluZGV4IDE2ZjAwYTMuLjM3YWM4Y2QgMTAwNjQ0 Ci0tLS0gYS9nZGIvc29saWItc29tLmMKLSsrKyBiL2dkYi9zb2xpYi1zb20uYwotQEAgLTE4Miw3 ICsxODIsNyBAQCBzdHJ1Y3QgewotICAgIG1lYW5zIHJ1bm5pbmcgdW50aWwgdGhlICJfc3RhcnQi IGlzIGNhbGxlZC4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1zb21fc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKHZvaWQpCi0rc29tX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJv bV90dHkpCi0gewotICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVf b3JkZXIgKHRhcmdldF9nZGJhcmNoKTsKLSAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJv bDsKLWRpZmYgLS1naXQgYS9nZGIvc29saWItc3B1LmMgYi9nZGIvc29saWItc3B1LmMKLWluZGV4 IDlmMDZmYTkuLjQ1ZTdlNjkgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3B1LmMKLSsrKyBiL2dk Yi9zb2xpYi1zcHUuYwotQEAgLTUyLDI1ICs1MiwxOSBAQAotIHN0YXRpYyB2b2lkCi0gc3B1X3Jl bG9jYXRlX21haW5fZXhlY3V0YWJsZSAoaW50IHNwdWZzX2ZkKQotIHsKLS0gIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlOwotLSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAgIHN0cnVjdCBz ZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRzOwotICAgaW50IGk7Ci0gCi0tICBmb3IgKG9iamZp bGUgPSBzeW1maWxlX29iamZpbGU7Ci0tICAgICAgIG9iamZpbGU7Ci0tICAgICAgIG9iamZpbGUg PSBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlKQotLSAgICB7Ci0tICAgICAgbmV3X29m ZnNldHMgPSB4Y2FsbG9jIChvYmpmaWxlLT5udW1fc2VjdGlvbnMsCi0tCQkJICAgICBzaXplb2Yg KHN0cnVjdCBzZWN0aW9uX29mZnNldHMpKTsKLS0gICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKHhmcmVlLCBuZXdfb2Zmc2V0cyk7Ci0rICBpZiAoc3ltZmlsZV9vYmpmaWxlID09IE5VTEwp Ci0rICAgIHJldHVybjsKLSAKLS0gICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqZmlsZS0+bnVtX3Nl Y3Rpb25zOyBpKyspCi0tICAgICAgICBuZXdfb2Zmc2V0cy0+b2Zmc2V0c1tpXSA9IFNQVUFERFIg KHNwdWZzX2ZkLCAwKTsKLSsgIG5ld19vZmZzZXRzID0gYWxsb2NhIChzeW1maWxlX29iamZpbGUt Pm51bV9zZWN0aW9ucwotKwkJCSogc2l6ZW9mIChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzKSk7Ci0g Ci0tICAgICAgb2JqZmlsZV9yZWxvY2F0ZSAob2JqZmlsZSwgbmV3X29mZnNldHMpOwotLSAgICAg IGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotLSAgICB9Ci0rICBmb3IgKGkgPSAwOyBpIDwgc3lt ZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7IGkrKykKLSsgICAgbmV3X29mZnNldHMtPm9mZnNl dHNbaV0gPSBTUFVBRERSIChzcHVmc19mZCwgMCk7Ci0rCi0rICBvYmpmaWxlX3JlbG9jYXRlIChz eW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKLSB9Ci0gCi0gLyogV2hlbiBydW5uaW5nIGEg c3RhbmQtYWxvbmUgU1BFIGV4ZWN1dGFibGUsIHdlIG1heSBuZWVkIHRvIHNraXAgb25lIG1vcmUK LUBAIC0zNzAsNyArMzY0LDcgQEAgc3B1X2VuYWJsZV9icmVhayAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gCi0gLyogQ3JlYXRlIGluZmVyaW9yIGhvb2suICAqLwotIHN0YXRpYyB2b2lkCi0t c3B1X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQotK3NwdV9zb2xpYl9jcmVhdGVf aW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIC8qIFJlbW92ZSBhbGwgcHJldmlv dXNseSBpbnN0YWxsZWQgc29saWIgYnJlYWtwb2ludHMuICBCb3RoIHRoZSBTVlI0Ci0gICAgICBj b2RlIGFuZCB1cyB3aWxsIHJlLWluc3RhbGwgYWxsIHJlcXVpcmVkIGJyZWFrcG9pbnRzLiAgKi8K LUBAIC00MDEsNyArMzk1LDcgQEAgc3B1X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lk KQotICAgICB9Ci0gCi0gICAvKiBDYWxsIFNWUjQgaG9vayAtLSB0aGlzIHdpbGwgcmUtaW5zZXJ0 IHRoZSBTVlI0IHNvbGliIGJyZWFrcG9pbnRzLiAgKi8KLS0gIHN2cjRfc29fb3BzLnNvbGliX2Ny ZWF0ZV9pbmZlcmlvcl9ob29rICgpOwotKyAgc3ZyNF9zb19vcHMuc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKGZyb21fdHR5KTsKLSAKLSAgIC8qIElmIHRoZSBpbmZlcmlvciBpcyBzdGF0aWNh bGx5IGxpbmtlZCBhZ2FpbnN0IGxpYnNwZSwgd2UgbmVlZCB0byBpbnN0YWxsCi0gICAgICBvdXIg b3duIHNvbGliIGJyZWFrcG9pbnQgcmlnaHQgbm93LiAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGlu c3RhbGxlZCBieQotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdW5vcy5jIGIvZ2RiL3NvbGliLXN1 bm9zLmMKLWluZGV4IDliMmE0NzAuLmIyYTE0N2QgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3Vu b3MuYwotKysrIGIvZ2RiL3NvbGliLXN1bm9zLmMKLUBAIC03NDAsNyArNzQwLDcgQEAgc3Vub3Nf c3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgKHZvaWQpCi0gICovCi0gCi0gc3RhdGljIHZvaWQKLS1z dW5vc19zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKLStzdW5vc19zb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVjdCB0aHJlYWRfaW5m byAqdHA7Ci0gICBzdHJ1Y3QgaW5mZXJpb3IgKmluZjsKLWRpZmYgLS1naXQgYS9nZGIvc29saWIt c3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwotaW5kZXggNjhhYWRjMC4uZWZiZTcxNyAxMDA2NDQK LS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9zb2xpYi1zdnI0LmMKLUBAIC01MCw2 ICs1MCw3IEBACi0gCi0gc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNo X2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwotIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFw X29mZnNldHMgKHZvaWQpOwotK3N0YXRpYyB2b2lkIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRh YmxlICh2b2lkKTsKLSAKLSAvKiBMaW5rIG1hcCBpbmZvIHRvIGluY2x1ZGUgaW4gYW4gYWxsb2Nh dGVkIHNvX2xpc3QgZW50cnkgKi8KLSAKLUBAIC01OTksMTEgKzYwMCwxMiBAQCBzY2FuX2R5bnRh ZyAoaW50IGR5bnRhZywgYmZkICphYmZkLCBDT1JFX0FERFIgKnB0cikKLSB7Ci0gICBpbnQgYXJj aF9zaXplLCBzdGVwLCBzZWN0X3NpemU7Ci0gICBsb25nIGR5bl90YWc7Ci0tICBDT1JFX0FERFIg ZHluX3B0ciwgZHluX2FkZHI7Ci0rICBDT1JFX0FERFIgZHluX3B0cjsKLSAgIGdkYl9ieXRlICpi dWZlbmQsICpidWZzdGFydCwgKmJ1ZjsKLSAgIEVsZjMyX0V4dGVybmFsX0R5biAqeF9keW5wXzMy OwotICAgRWxmNjRfRXh0ZXJuYWxfRHluICp4X2R5bnBfNjQ7Ci0gICBzdHJ1Y3QgYmZkX3NlY3Rp b24gKnNlY3Q7Ci0rICBzdHJ1Y3QgdGFyZ2V0X3NlY3Rpb24gKnRhcmdldF9zZWN0aW9uOwotIAot ICAgaWYgKGFiZmQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtNjE5LDcgKzYyMSwxMyBA QCBzY2FuX2R5bnRhZyAoaW50IGR5bnRhZywgYmZkICphYmZkLCBDT1JFX0FERFIgKnB0cikKLSAg IHNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5keW5hbWljIik7Ci0gICBp ZiAoc2VjdCA9PSBOVUxMKQotICAgICByZXR1cm4gMDsKLS0gIGR5bl9hZGRyID0gYmZkX3NlY3Rp b25fdm1hIChhYmZkLCBzZWN0KTsKLSsKLSsgIGZvciAodGFyZ2V0X3NlY3Rpb24gPSB0YXJnZXRf Z2V0X3NlY3Rpb25fdGFibGUgKCZleGVjX29wcyktPnNlY3Rpb25zOwotKyAgICAgICB0YXJnZXRf c2VjdGlvbiA8IHRhcmdldF9nZXRfc2VjdGlvbl90YWJsZSAoJmV4ZWNfb3BzKS0+c2VjdGlvbnNf ZW5kOwotKyAgICAgICB0YXJnZXRfc2VjdGlvbisrKQotKyAgICBpZiAoc2VjdCA9PSB0YXJnZXRf c2VjdGlvbi0+dGhlX2JmZF9zZWN0aW9uKQotKyAgICAgIGJyZWFrOwotKyAgZ2RiX2Fzc2VydCAo dGFyZ2V0X3NlY3Rpb24gPCB0YXJnZXRfZ2V0X3NlY3Rpb25fdGFibGUgKCZleGVjX29wcyktPnNl Y3Rpb25zX2VuZCk7Ci0gCi0gICAvKiBSZWFkIGluIC5keW5hbWljIGZyb20gdGhlIEJGRC4gIFdl IHdpbGwgZ2V0IHRoZSBhY3R1YWwgdmFsdWUKLSAgICAgIGZyb20gbWVtb3J5IGxhdGVyLiAgKi8K LUBAIC02NjEsNyArNjY5LDcgQEAgc2Nhbl9keW50YWcgKGludCBkeW50YWcsIGJmZCAqYWJmZCwg Q09SRV9BRERSICpwdHIpCi0gCSAgICAgQ09SRV9BRERSIHB0cl9hZGRyOwotIAotIAkgICAgIHB0 cl90eXBlID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7 Ci0tCSAgICAgcHRyX2FkZHIgPSBkeW5fYWRkciArIChidWYgLSBidWZzdGFydCkgKyBhcmNoX3Np emUgLyA4OwotKwkgICAgIHB0cl9hZGRyID0gdGFyZ2V0X3NlY3Rpb24tPmFkZHIgKyAoYnVmIC0g YnVmc3RhcnQpICsgYXJjaF9zaXplIC8gODsKLSAJICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5 IChwdHJfYWRkciwgcHRyX2J1ZiwgYXJjaF9zaXplIC8gOCkgPT0gMCkKLSAJICAgICAgIGR5bl9w dHIgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHB0cl9idWYsIHB0cl90eXBlKTsKLSAJICAgICAq cHRyID0gZHluX3B0cjsKLUBAIC0xMjU4LDcgKzEyNjYsNyBAQCBleGVjX2VudHJ5X3BvaW50IChz dHJ1Y3QgYmZkICphYmZkLCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKLSAgKi8KLSAKLSBzdGF0 aWMgaW50Ci0tZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotK2VuYWJsZV9i cmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVj dCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsKLSAgIGNoYXIgKipia3B0X25hbWVwOwotQEAgLTEy NzksNyArMTI4Nyw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKLSAg ICAgIG1lYW4gcl9icmsgaGFzIGFscmVhZHkgYmVlbiByZWxvY2F0ZWQuICBBc3N1bWUgdGhlIGR5 bmFtaWMgbGlua2VyCi0gICAgICBpcyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgcl9icmsuICAqLwot IAotLSAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRk KTsKLSsgIHNvbGliX2FkZCAoTlVMTCwgZnJvbV90dHksICZjdXJyZW50X3RhcmdldCwgYXV0b19z b2xpYl9hZGQpOwotICAgc3ltX2FkZHIgPSAwOwotICAgaWYgKGluZm8tPmRlYnVnX2Jhc2UgJiYg c29saWJfc3ZyNF9yX21hcCAoaW5mbykgIT0gMCkKLSAgICAgc3ltX2FkZHIgPSBzb2xpYl9zdnI0 X3JfYnJrIChpbmZvKTsKLUBAIC0xMzM5LDYgKzEzNDcsMTEgQEAgZW5hYmxlX2JyZWFrIChzdHJ1 Y3Qgc3ZyNF9pbmZvICppbmZvKQotICAgICAgIGJmZCAqdG1wX2JmZCA9IE5VTEw7Ci0gICAgICAg c3RydWN0IHRhcmdldF9vcHMgKnRtcF9iZmRfdGFyZ2V0OwotICAgICAgIHZvbGF0aWxlIHN0cnVj dCBnZGJfZXhjZXB0aW9uIGV4OwotKyAgICAgIGludCBhZGRyX2JpdCA9IGdkYmFyY2hfYWRkcl9i aXQgKHRhcmdldF9nZGJhcmNoKTsKLSsgICAgICBDT1JFX0FERFIgbWFzayA9IENPUkVfQUREUl9N QVg7Ci0rCi0rICAgICAgaWYgKGFkZHJfYml0IDwgKHNpemVvZiAoQ09SRV9BRERSKSAqIEhPU1Rf Q0hBUl9CSVQpKQotKwltYXNrID0gKChDT1JFX0FERFIpIDEgPDwgYWRkcl9iaXQpIC0gMTsKLSAK LSAgICAgICBzeW1fYWRkciA9IDA7Ci0gCi1AQCAtMTQwNCw3ICsxNDE3LDcgQEAgZW5hYmxlX2Jy ZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotIAkgIGluZm8tPmRlYnVnX2xvYWRlcl9uYW1l ID0geHN0cmR1cCAoaW50ZXJwX25hbWUpOwotIAkgIGluZm8tPmRlYnVnX2xvYWRlcl9vZmZzZXRf cCA9IDE7Ci0gCSAgaW5mby0+ZGVidWdfbG9hZGVyX29mZnNldCA9IGxvYWRfYWRkcjsKLS0JICBz b2xpYl9hZGQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9hZGQpOwotKwkg IHNvbGliX2FkZCAoTlVMTCwgZnJvbV90dHksICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xpYl9h ZGQpOwotIAl9Ci0gCi0gICAgICAgLyogUmVjb3JkIHRoZSByZWxvY2F0ZWQgc3RhcnQgYW5kIGVu ZCBhZGRyZXNzIG9mIHRoZSBkeW5hbWljIGxpbmtlcgotQEAgLTE0MTQsMTYgKzE0MjcsMjAgQEAg ZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotIAl7Ci0gCSAgaW50ZXJwX3Rl eHRfc2VjdF9sb3cgPQotIAkgICAgYmZkX3NlY3Rpb25fdm1hICh0bXBfYmZkLCBpbnRlcnBfc2Vj dCkgKyBsb2FkX2FkZHI7Ci0rCSAgaW50ZXJwX3RleHRfc2VjdF9sb3cgJj0gbWFzazsKLSAJICBp bnRlcnBfdGV4dF9zZWN0X2hpZ2ggPQotIAkgICAgaW50ZXJwX3RleHRfc2VjdF9sb3cgKyBiZmRf c2VjdGlvbl9zaXplICh0bXBfYmZkLCBpbnRlcnBfc2VjdCk7Ci0rCSAgaW50ZXJwX3RleHRfc2Vj dF9oaWdoICY9IG1hc2s7Ci0gCX0KLSAgICAgICBpbnRlcnBfc2VjdCA9IGJmZF9nZXRfc2VjdGlv bl9ieV9uYW1lICh0bXBfYmZkLCAiLnBsdCIpOwotICAgICAgIGlmIChpbnRlcnBfc2VjdCkKLSAJ ewotIAkgIGludGVycF9wbHRfc2VjdF9sb3cgPQotIAkgICAgYmZkX3NlY3Rpb25fdm1hICh0bXBf YmZkLCBpbnRlcnBfc2VjdCkgKyBsb2FkX2FkZHI7Ci0rCSAgaW50ZXJwX3RleHRfc2VjdF9sb3cg Jj0gbWFzazsKLSAJICBpbnRlcnBfcGx0X3NlY3RfaGlnaCA9Ci0gCSAgICBpbnRlcnBfcGx0X3Nl Y3RfbG93ICsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOwotKwkgIGlu dGVycF90ZXh0X3NlY3RfaGlnaCAmPSBtYXNrOwotIAl9Ci0gCi0gICAgICAgLyogTm93IHRyeSB0 byBzZXQgYSBicmVha3BvaW50IGluIHRoZSBkeW5hbWljIGxpbmtlci4gICovCi1AQCAtMTQ0OCw3 ICsxNDY1LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotIAotICAg ICAgIGlmIChzeW1fYWRkciAhPSAwKQotIAl7Ci0tCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFr cG9pbnQgKHRhcmdldF9nZGJhcmNoLCBsb2FkX2FkZHIgKyBzeW1fYWRkcik7Ci0rCSAgY3JlYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoLCAobG9hZF9hZGRyICsgc3lt X2FkZHIpICYgbWFzayk7Ci0gCSAgeGZyZWUgKGludGVycF9uYW1lKTsKLSAJICByZXR1cm4gMTsK LSAJfQotQEAgLTE1MTcsMTEzICsxNTM0LDEzMSBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0 X2luZm8gKmluZm8pCi0gc3RhdGljIHZvaWQKLSBzdnI0X3NwZWNpYWxfc3ltYm9sX2hhbmRsaW5n ICh2b2lkKQotIHsKLSsgIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICgpOwotIH0KLSAK LS0vKiBSZWxvY2F0ZSB0aGUgbWFpbiBleGVjdXRhYmxlLiAgVGhpcyBmdW5jdGlvbiBzaG91bGQg YmUgY2FsbGVkIHVwb24KLS0gICBzdG9wcGluZyB0aGUgaW5mZXJpb3IgcHJvY2VzcyBhdCB0aGUg ZW50cnkgcG9pbnQgdG8gdGhlIHByb2dyYW0uIAotLSAgIFRoZSBlbnRyeSBwb2ludCBmcm9tIEJG RCBpcyBjb21wYXJlZCB0byB0aGUgUEMgYW5kIGlmIHRoZXkgYXJlCi0tICAgZGlmZmVyZW50LCB0 aGUgbWFpbiBleGVjdXRhYmxlIGlzIHJlbG9jYXRlZCBieSB0aGUgcHJvcGVyIGFtb3VudC4gCi0r LyogRGVjaWRlIGlmIHRoZSBvYmpmaWxlIG5lZWRzIHRvIGJlIHJlbG9jYXRlZC4gIEFzIGluZGlj YXRlZCBhYm92ZSwKLSsgICB3ZSB3aWxsIG9ubHkgYmUgaGVyZSB3aGVuIGV4ZWN1dGlvbiBpcyBz dG9wcGVkIGF0IHRoZSBiZWdpbm5pbmcKLSsgICBvZiB0aGUgcHJvZ3JhbS4gIFJlbG9jYXRpb24g aXMgbmVjZXNzYXJ5IGlmIHRoZSBhZGRyZXNzIGF0IHdoaWNoCi0rICAgd2UgYXJlIHByZXNlbnRs eSBzdG9wcGVkIGRpZmZlcnMgZnJvbSB0aGUgc3RhcnQgYWRkcmVzcyBzdG9yZWQgaW4KLSsgICB0 aGUgZXhlY3V0YWJsZSBBTkQgdGhlcmUncyBubyBpbnRlcnByZXRlciBzZWN0aW9uLiAgVGhlIGNv bmRpdGlvbgotKyAgIHJlZ2FyZGluZyB0aGUgaW50ZXJwcmV0ZXIgc2VjdGlvbiBpcyB2ZXJ5IGlt cG9ydGFudCBiZWNhdXNlIGlmCi0rICAgdGhlcmUgKmlzKiBhbiBpbnRlcnByZXRlciBzZWN0aW9u LCBleGVjdXRpb24gd2lsbCBiZWdpbiB0aGVyZQotKyAgIGluc3RlYWQuICBXaGVuIHRoZXJlIGlz IGFuIGludGVycHJldGVyIHNlY3Rpb24sIHRoZSBzdGFydCBhZGRyZXNzCi0rICAgaXMgKHByZXN1 bWFibHkpIHVzZWQgYnkgdGhlIGludGVycHJldGVyIGF0IHNvbWUgcG9pbnQgdG8gc3RhcnQKLSsg ICBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0uCi0rCi0rICAgSWYgdGhlcmUgaXMgYW4gaW50ZXJw cmV0ZXIsIGl0IGlzIG5vcm1hbCBmb3IgaXQgdG8gYmUgc2V0IHRvIGFuCi0rICAgYXJiaXRyYXJ5 IGFkZHJlc3MgYXQgdGhlIG91dHNldC4gIFRoZSBqb2Igb2YgZmluZGluZyBpdCBpcwotKyAgIGhh bmRsZWQgaW4gZW5hYmxlX2JyZWFrKCkuCi0rCi0rICAgU28sIHRvIHN1bW1hcml6ZSwgcmVsb2Nh dGlvbnMgYXJlIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGlzIG5vCi0rICAgaW50ZXJwcmV0ZXIgc2Vj dGlvbiBhbmQgdGhlIHN0YXJ0IGFkZHJlc3Mgb2J0YWluZWQgZnJvbSB0aGUKLSsgICBleGVjdXRh YmxlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhZGRyZXNzIGF0IHdoaWNoIEdEQiBpcwotKyAgIGN1 cnJlbnRseSBzdG9wcGVkLgotICAgIAotLSAgIEFzIHdyaXR0ZW4gaXQgd2lsbCBvbmx5IGF0dGVt cHQgdG8gcmVsb2NhdGUgZXhlY3V0YWJsZXMgd2hpY2gKLS0gICBsYWNrIGludGVycHJldGVyIHNl Y3Rpb25zLiAgSXQgc2VlbXMgbGlrZWx5IHRoYXQgb25seSBkeW5hbWljCi0tICAgbGlua2VyIGV4 ZWN1dGFibGVzIHdpbGwgZ2V0IHJlbG9jYXRlZCwgdGhvdWdoIGl0IHNob3VsZCB3b3JrCi0tICAg cHJvcGVybHkgZm9yIGEgcG9zaXRpb24taW5kZXBlbmRlbnQgc3RhdGljIGV4ZWN1dGFibGUgYXMg d2VsbC4gICovCi0rICAgWyBUaGUgYXN0dXRlIHJlYWRlciB3aWxsIG5vdGUgdGhhdCB3ZSBhbHNv IHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQKLSsgICAgIHRoZSBleGVjdXRhYmxlIGluIHF1ZXN0aW9u IGhhcyB0aGUgRFlOQU1JQyBmbGFnIHNldC4gIEl0IGlzIG15Ci0rICAgICBvcGluaW9uIHRoYXQg dGhpcyB0ZXN0IGlzIHVubmVjZXNzYXJ5ICh1bmRlc2lyYWJsZSBldmVuKS4gIEl0Ci0rICAgICB3 YXMgYWRkZWQgdG8gYXZvaWQgaW5hZHZlcnRlbnQgcmVsb2NhdGlvbiBvZiBhbiBleGVjdXRhYmxl Ci0rICAgICB3aG9zZSBlX3R5cGUgbWVtYmVyIGluIHRoZSBFTEYgaGVhZGVyIGlzIG5vdCBFVF9E WU4uICBUaGVyZSBtYXkKLSsgICAgIGJlIGEgdGltZSBpbiB0aGUgZnV0dXJlIHdoZW4gaXQgaXMg ZGVzaXJhYmxlIHRvIGRvIHJlbG9jYXRpb25zCi0rICAgICBvbiBvdGhlciB0eXBlcyBvZiBmaWxl cyBhcyB3ZWxsIGluIHdoaWNoIGNhc2UgdGhpcyBjb25kaXRpb24KLSsgICAgIHNob3VsZCBlaXRo ZXIgYmUgcmVtb3ZlZCBvciBtb2RpZmllZCB0byBhY2NvbW9kYXRlIHRoZSBuZXcgZmlsZQotKyAg ICAgdHlwZS4gIChFLmcsIGFuIEVUX0VYRUMgZXhlY3V0YWJsZSB3aGljaCBoYXMgYmVlbiBidWls dCB0byBiZQotKyAgICAgcG9zaXRpb24taW5kZXBlbmRlbnQgY291bGQgc2FmZWx5IGJlIHJlbG9j YXRlZCBieSB0aGUgT1MgaWYKLSsgICAgIGRlc2lyZWQuICBJdCBpcyB0cnVlIHRoYXQgdGhpcyB2 aW9sYXRlcyB0aGUgQUJJLCBidXQgdGhlIEFCSQotKyAgICAgaGFzIGJlZW4ga25vd24gdG8gYmUg YmVudCBmcm9tIHRpbWUgdG8gdGltZS4pICAtIEtldmluLCBOb3YgMjAwMC4gXQotKyAgICovCi0g Ci0tc3RhdGljIHZvaWQKLS1zdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKLStz dGF0aWMgQ09SRV9BRERSCi0rc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQgKHZvaWQpCi0g ewotICAgYXNlY3Rpb24gKmludGVycF9zZWN0OwotICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZQotICAgICA9IGdldF90aHJlYWRfYXJjaF9yZWdjYWNoZSAoaW5mZXJpb3JfcHRpZCwgdGFyZ2V0 X2dkYmFyY2gpOwotICAgQ09SRV9BRERSIHBjID0gcmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUp OwotIAotLSAgLyogRGVjaWRlIGlmIHRoZSBvYmpmaWxlIG5lZWRzIHRvIGJlIHJlbG9jYXRlZC4g IEFzIGluZGljYXRlZCBhYm92ZSwKLS0gICAgIHdlIHdpbGwgb25seSBiZSBoZXJlIHdoZW4gZXhl Y3V0aW9uIGlzIHN0b3BwZWQgYXQgdGhlIGJlZ2lubmluZwotLSAgICAgb2YgdGhlIHByb2dyYW0u ICBSZWxvY2F0aW9uIGlzIG5lY2Vzc2FyeSBpZiB0aGUgYWRkcmVzcyBhdCB3aGljaAotLSAgICAg d2UgYXJlIHByZXNlbnRseSBzdG9wcGVkIGRpZmZlcnMgZnJvbSB0aGUgc3RhcnQgYWRkcmVzcyBz dG9yZWQgaW4KLS0gICAgIHRoZSBleGVjdXRhYmxlIEFORCB0aGVyZSdzIG5vIGludGVycHJldGVy IHNlY3Rpb24uICBUaGUgY29uZGl0aW9uCi0tICAgICByZWdhcmRpbmcgdGhlIGludGVycHJldGVy IHNlY3Rpb24gaXMgdmVyeSBpbXBvcnRhbnQgYmVjYXVzZSBpZgotLSAgICAgdGhlcmUgKmlzKiBh biBpbnRlcnByZXRlciBzZWN0aW9uLCBleGVjdXRpb24gd2lsbCBiZWdpbiB0aGVyZQotLSAgICAg aW5zdGVhZC4gIFdoZW4gdGhlcmUgaXMgYW4gaW50ZXJwcmV0ZXIgc2VjdGlvbiwgdGhlIHN0YXJ0 IGFkZHJlc3MKLS0gICAgIGlzIChwcmVzdW1hYmx5KSB1c2VkIGJ5IHRoZSBpbnRlcnByZXRlciBh dCBzb21lIHBvaW50IHRvIHN0YXJ0Ci0tICAgICBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0uCi0t Ci0tICAgICBJZiB0aGVyZSBpcyBhbiBpbnRlcnByZXRlciwgaXQgaXMgbm9ybWFsIGZvciBpdCB0 byBiZSBzZXQgdG8gYW4KLS0gICAgIGFyYml0cmFyeSBhZGRyZXNzIGF0IHRoZSBvdXRzZXQuICBU aGUgam9iIG9mIGZpbmRpbmcgaXQgaXMKLS0gICAgIGhhbmRsZWQgaW4gZW5hYmxlX2JyZWFrKCku Ci0tCi0tICAgICBTbywgdG8gc3VtbWFyaXplLCByZWxvY2F0aW9ucyBhcmUgbmVjZXNzYXJ5IHdo ZW4gdGhlcmUgaXMgbm8KLS0gICAgIGludGVycHJldGVyIHNlY3Rpb24gYW5kIHRoZSBzdGFydCBh ZGRyZXNzIG9idGFpbmVkIGZyb20gdGhlCi0tICAgICBleGVjdXRhYmxlIGlzIGRpZmZlcmVudCBm cm9tIHRoZSBhZGRyZXNzIGF0IHdoaWNoIEdEQiBpcwotLSAgICAgY3VycmVudGx5IHN0b3BwZWQu Ci0tICAgICAKLS0gICAgIFsgVGhlIGFzdHV0ZSByZWFkZXIgd2lsbCBub3RlIHRoYXQgd2UgYWxz byB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0Ci0tICAgICAgIHRoZSBleGVjdXRhYmxlIGluIHF1ZXN0 aW9uIGhhcyB0aGUgRFlOQU1JQyBmbGFnIHNldC4gIEl0IGlzIG15Ci0tICAgICAgIG9waW5pb24g dGhhdCB0aGlzIHRlc3QgaXMgdW5uZWNlc3NhcnkgKHVuZGVzaXJhYmxlIGV2ZW4pLiAgSXQKLS0g ICAgICAgd2FzIGFkZGVkIHRvIGF2b2lkIGluYWR2ZXJ0ZW50IHJlbG9jYXRpb24gb2YgYW4gZXhl Y3V0YWJsZQotLSAgICAgICB3aG9zZSBlX3R5cGUgbWVtYmVyIGluIHRoZSBFTEYgaGVhZGVyIGlz IG5vdCBFVF9EWU4uICBUaGVyZSBtYXkKLS0gICAgICAgYmUgYSB0aW1lIGluIHRoZSBmdXR1cmUg d2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gZG8gcmVsb2NhdGlvbnMKLS0gICAgICAgb24gb3RoZXIg dHlwZXMgb2YgZmlsZXMgYXMgd2VsbCBpbiB3aGljaCBjYXNlIHRoaXMgY29uZGl0aW9uCi0tICAg ICAgIHNob3VsZCBlaXRoZXIgYmUgcmVtb3ZlZCBvciBtb2RpZmllZCB0byBhY2NvbW9kYXRlIHRo ZSBuZXcgZmlsZQotLSAgICAgICB0eXBlLiAgKEUuZywgYW4gRVRfRVhFQyBleGVjdXRhYmxlIHdo aWNoIGhhcyBiZWVuIGJ1aWx0IHRvIGJlCi0tICAgICAgIHBvc2l0aW9uLWluZGVwZW5kZW50IGNv dWxkIHNhZmVseSBiZSByZWxvY2F0ZWQgYnkgdGhlIE9TIGlmCi0tICAgICAgIGRlc2lyZWQuICBJ dCBpcyB0cnVlIHRoYXQgdGhpcyB2aW9sYXRlcyB0aGUgQUJJLCBidXQgdGhlIEFCSQotLSAgICAg ICBoYXMgYmVlbiBrbm93biB0byBiZSBiZW50IGZyb20gdGltZSB0byB0aW1lLikgIC0gS2V2aW4s IE5vdiAyMDAwLiBdCi0tICAgICAqLwotLQotICAgaW50ZXJwX3NlY3QgPSBiZmRfZ2V0X3NlY3Rp b25fYnlfbmFtZSAoZXhlY19iZmQsICIuaW50ZXJwIik7Ci0gICBpZiAoaW50ZXJwX3NlY3QgPT0g TlVMTCAKLSAgICAgICAmJiAoYmZkX2dldF9maWxlX2ZsYWdzIChleGVjX2JmZCkgJiBEWU5BTUlD KSAhPSAwCi0gICAgICAgJiYgKGV4ZWNfZW50cnlfcG9pbnQgKGV4ZWNfYmZkLCAmZXhlY19vcHMp ICE9IHBjKSkKLSsgICAgcmV0dXJuIHBjIC0gZXhlY19lbnRyeV9wb2ludCAoZXhlY19iZmQsICZl eGVjX29wcyk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogV2UgcmVsb2NhdGUgYWxsIG9m IHRoZSBzZWN0aW9ucyBieSB0aGUgc2FtZSBhbW91bnQuICBUaGlzCi0rICAgYmVoYXZpb3IgaXMg bWFuZGF0ZWQgYnkgcmVjZW50IGVkaXRpb25zIG9mIHRoZSBTeXN0ZW0gViBBQkkuIAotKyAgIEFj Y29yZGluZyB0byB0aGUgU3lzdGVtIFYgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSwKLSsg ICBFZGl0aW9uIDQuMSwgcGFnZSA1LTU6Ci0rCi0rICAgICAuLi4gIFRob3VnaCB0aGUgc3lzdGVt IGNob29zZXMgdmlydHVhbCBhZGRyZXNzZXMgZm9yCi0rICAgICBpbmRpdmlkdWFsIHByb2Nlc3Nl cywgaXQgbWFpbnRhaW5zIHRoZSBzZWdtZW50cycgcmVsYXRpdmUKLSsgICAgIHBvc2l0aW9ucy4g IEJlY2F1c2UgcG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSB1c2VzIHJlbGF0aXZlCi0rICAgICBh ZGRyZXNzZXNpbmcgYmV0d2VlbiBzZWdtZW50cywgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbgotKyAg ICAgdmlydHVhbCBhZGRyZXNzZXMgaW4gbWVtb3J5IG11c3QgbWF0Y2ggdGhlIGRpZmZlcmVuY2UK LSsgICAgIGJldHdlZW4gdmlydHVhbCBhZGRyZXNzZXMgaW4gdGhlIGZpbGUuICBUaGUgZGlmZmVy ZW5jZQotKyAgICAgYmV0d2VlbiB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGFueSBzZWdtZW50IGlu IG1lbW9yeSBhbmQKLSsgICAgIHRoZSBjb3JyZXNwb25kaW5nIHZpcnR1YWwgYWRkcmVzcyBpbiB0 aGUgZmlsZSBpcyB0aHVzIGEKLSsgICAgIHNpbmdsZSBjb25zdGFudCB2YWx1ZSBmb3IgYW55IG9u ZSBleGVjdXRhYmxlIG9yIHNoYXJlZAotKyAgICAgb2JqZWN0IGluIGEgZ2l2ZW4gcHJvY2Vzcy4g IFRoaXMgZGlmZmVyZW5jZSBpcyB0aGUgYmFzZQotKyAgICAgYWRkcmVzcy4gIE9uZSB1c2Ugb2Yg dGhlIGJhc2UgYWRkcmVzcyBpcyB0byByZWxvY2F0ZSB0aGUKLSsgICAgIG1lbW9yeSBpbWFnZSBv ZiB0aGUgcHJvZ3JhbSBkdXJpbmcgZHluYW1pYyBsaW5raW5nLgotKwotKyAgIFRoZSBzYW1lIGxh bmd1YWdlIGFsc28gYXBwZWFycyBpbiBFZGl0aW9uIDQuMCBvZiB0aGUgU3lzdGVtIFYKLSsgICBB QkkgYW5kIGlzIGxlZnQgdW5zcGVjaWZpZWQgaW4gc29tZSBvZiB0aGUgZWFybGllciBlZGl0aW9u cy4gICovCi0rCi0rc3RhdGljIENPUkVfQUREUgotK3N2cjRfZXhlY19kaXNwbGFjZW1lbnQgKHZv aWQpCi0rewotKyAgaW50IGZvdW5kOwotKyAgQ09SRV9BRERSIGVudHJ5X3BvaW50OwotKwotKyAg aWYgKGV4ZWNfYmZkID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKHRhcmdldF9h dXh2X3NlYXJjaCAoJmN1cnJlbnRfdGFyZ2V0LCBBVF9FTlRSWSwgJmVudHJ5X3BvaW50KSA9PSAx KQotKyAgICByZXR1cm4gZW50cnlfcG9pbnQgLSBleGVjX2VudHJ5X3BvaW50IChleGVjX2JmZCwg JmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsgIHJldHVybiBzdnI0X3N0YXRpY19leGVjX2Rpc3BsYWNl bWVudCAoKTsKLSt9Ci0rCi0rLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZS4gIFRoaXMg ZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCi0rICAgc3RvcHBpbmcgdGhlIGluZmVyaW9y IHByb2Nlc3MgYXQgdGhlIGVudHJ5IHBvaW50IHRvIHRoZSBwcm9ncmFtLiAKLSsgICBUaGUgZW50 cnkgcG9pbnQgZnJvbSBCRkQgaXMgY29tcGFyZWQgdG8gdGhlIEFUX0VOVFJZIG9mIEFVWFYgYW5k IGlmIHRoZXkgYXJlCi0rICAgZGlmZmVyZW50LCB0aGUgbWFpbiBleGVjdXRhYmxlIGlzIHJlbG9j YXRlZCBieSB0aGUgcHJvcGVyIGFtb3VudC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzdnI0X3Jl bG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKLSt7Ci0rICBDT1JFX0FERFIgZGlzcGxhY2Vt ZW50ID0gc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAoKTsKLSsKLSsgIC8qIEV2ZW4gaWYgRElTUExB Q0VNRU5UIGlzIDAgc3RpbGwgdHJ5IHRvIHJlbG9jYXRlIGl0IGFzIHRoaXMgaXMgYSBuZXcKLSsg ICAgIGRpZmZlcmVuY2Ugb2YgaW4tbWVtb3J5IHZzLiBpbi1maWxlIGFkZHJlc3NlcyBhbmQgd2Ug Y291bGQgYWxyZWFkeQotKyAgICAgcmVsb2NhdGUgdGhlIGV4ZWN1dGFibGUgYXQgdGhpcyBmdW5j dGlvbiB0byBpbXByb3BlciBhZGRyZXNzIGJlZm9yZS4gICovCi0rCi0rICBpZiAoc3ltZmlsZV9v YmpmaWxlKQotICAgICB7Ci0tICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAgICAg ICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0czsKLS0gICAgICBpbnQgaSwgY2hh bmdlZDsKLS0gICAgICBDT1JFX0FERFIgZGlzcGxhY2VtZW50OwotLSAgICAgIAotLSAgICAgIC8q IEl0IGlzIG5lY2Vzc2FyeSB0byByZWxvY2F0ZSB0aGUgb2JqZmlsZS4gIFRoZSBhbW91bnQgdG8K LS0JIHJlbG9jYXRlIGJ5IGlzIHNpbXBseSB0aGUgYWRkcmVzcyBhdCB3aGljaCB3ZSBhcmUgc3Rv cHBlZAotLQkgbWludXMgdGhlIHN0YXJ0aW5nIGFkZHJlc3MgZnJvbSB0aGUgZXhlY3V0YWJsZS4K LS0KLS0JIFdlIHJlbG9jYXRlIGFsbCBvZiB0aGUgc2VjdGlvbnMgYnkgdGhlIHNhbWUgYW1vdW50 LiAgVGhpcwotLQkgYmVoYXZpb3IgaXMgbWFuZGF0ZWQgYnkgcmVjZW50IGVkaXRpb25zIG9mIHRo ZSBTeXN0ZW0gViBBQkkuIAotLQkgQWNjb3JkaW5nIHRvIHRoZSBTeXN0ZW0gViBBcHBsaWNhdGlv biBCaW5hcnkgSW50ZXJmYWNlLAotLQkgRWRpdGlvbiA0LjEsIHBhZ2UgNS01OgotLQotLQkgICAu Li4gIFRob3VnaCB0aGUgc3lzdGVtIGNob29zZXMgdmlydHVhbCBhZGRyZXNzZXMgZm9yCi0tCSAg IGluZGl2aWR1YWwgcHJvY2Vzc2VzLCBpdCBtYWludGFpbnMgdGhlIHNlZ21lbnRzJyByZWxhdGl2 ZQotLQkgICBwb3NpdGlvbnMuICBCZWNhdXNlIHBvc2l0aW9uLWluZGVwZW5kZW50IGNvZGUgdXNl cyByZWxhdGl2ZQotLQkgICBhZGRyZXNzZXNpbmcgYmV0d2VlbiBzZWdtZW50cywgdGhlIGRpZmZl cmVuY2UgYmV0d2VlbgotLQkgICB2aXJ0dWFsIGFkZHJlc3NlcyBpbiBtZW1vcnkgbXVzdCBtYXRj aCB0aGUgZGlmZmVyZW5jZQotLQkgICBiZXR3ZWVuIHZpcnR1YWwgYWRkcmVzc2VzIGluIHRoZSBm aWxlLiAgVGhlIGRpZmZlcmVuY2UKLS0JICAgYmV0d2VlbiB0aGUgdmlydHVhbCBhZGRyZXNzIG9m IGFueSBzZWdtZW50IGluIG1lbW9yeSBhbmQKLS0JICAgdGhlIGNvcnJlc3BvbmRpbmcgdmlydHVh bCBhZGRyZXNzIGluIHRoZSBmaWxlIGlzIHRodXMgYQotLQkgICBzaW5nbGUgY29uc3RhbnQgdmFs dWUgZm9yIGFueSBvbmUgZXhlY3V0YWJsZSBvciBzaGFyZWQKLS0JICAgb2JqZWN0IGluIGEgZ2l2 ZW4gcHJvY2Vzcy4gIFRoaXMgZGlmZmVyZW5jZSBpcyB0aGUgYmFzZQotLQkgICBhZGRyZXNzLiAg T25lIHVzZSBvZiB0aGUgYmFzZSBhZGRyZXNzIGlzIHRvIHJlbG9jYXRlIHRoZQotLQkgICBtZW1v cnkgaW1hZ2Ugb2YgdGhlIHByb2dyYW0gZHVyaW5nIGR5bmFtaWMgbGlua2luZy4KLS0KLS0JIFRo ZSBzYW1lIGxhbmd1YWdlIGFsc28gYXBwZWFycyBpbiBFZGl0aW9uIDQuMCBvZiB0aGUgU3lzdGVt IFYKLS0JIEFCSSBhbmQgaXMgbGVmdCB1bnNwZWNpZmllZCBpbiBzb21lIG9mIHRoZSBlYXJsaWVy IGVkaXRpb25zLiAgKi8KLS0KLS0gICAgICBkaXNwbGFjZW1lbnQgPSBwYyAtIGV4ZWNfZW50cnlf cG9pbnQgKGV4ZWNfYmZkLCAmZXhlY19vcHMpOwotLSAgICAgIGNoYW5nZWQgPSAwOwotLQotLSAg ICAgIG5ld19vZmZzZXRzID0geGNhbGxvYyAoc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnMs Ci0tCQkJICAgICBzaXplb2YgKHN0cnVjdCBzZWN0aW9uX29mZnNldHMpKTsKLS0gICAgICBvbGRf Y2hhaW4gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBuZXdfb2Zmc2V0cyk7Ci0rICAgICAgaW50IGk7 Ci0rCi0rICAgICAgbmV3X29mZnNldHMgPSBhbGxvY2EgKHN5bWZpbGVfb2JqZmlsZS0+bnVtX3Nl Y3Rpb25zCi0rCQkJICAgICogc2l6ZW9mICgqbmV3X29mZnNldHMpKTsKLSAKLSAgICAgICBmb3Ig KGkgPSAwOyBpIDwgc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7IGkrKykKLS0JewotLQkg IGlmIChkaXNwbGFjZW1lbnQgIT0gQU5PRkZTRVQgKHN5bWZpbGVfb2JqZmlsZS0+c2VjdGlvbl9v ZmZzZXRzLCBpKSkKLS0JICAgIGNoYW5nZWQgPSAxOwotLQkgIG5ld19vZmZzZXRzLT5vZmZzZXRz W2ldID0gZGlzcGxhY2VtZW50OwotLQl9Ci0rCW5ld19vZmZzZXRzLT5vZmZzZXRzW2ldID0gZGlz cGxhY2VtZW50OwotIAotLSAgICAgIGlmIChjaGFuZ2VkKQotLQlvYmpmaWxlX3JlbG9jYXRlIChz eW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKLSsgICAgICBvYmpmaWxlX3JlbG9jYXRlIChz eW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoZXhlY19i ZmQpCi0rICAgIHsKLSsgICAgICBhc2VjdGlvbiAqYXNlY3Q7Ci0gCi0tICAgICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgZm9yIChhc2VjdCA9IGV4ZWNfYmZkLT5zZWN0aW9uczsg YXNlY3QgIT0gTlVMTDsgYXNlY3QgPSBhc2VjdC0+bmV4dCkKLSsJZXhlY19zZXRfc2VjdGlvbl9h ZGRyZXNzIChiZmRfZ2V0X2ZpbGVuYW1lIChleGVjX2JmZCksIGFzZWN0LT5pbmRleCwKLSsJCQkJ ICBiZmRfc2VjdGlvbl92bWEgKGV4ZWNfYmZkLCBhc2VjdCkKLSsJCQkJICArIGRpc3BsYWNlbWVu dCk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTYzNSw3ICsxNjcwLDcgQEAgc3ZyNF9yZWxvY2F0ZV9t YWluX2V4ZWN1dGFibGUgKHZvaWQpCi0gCi0gICAgU1lOT1BTSVMKLSAKLS0gICB2b2lkIHN2cjRf c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCkKLSsgICB2b2lkIHN2cjRfc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSAKLSAgICBERVNDUklQVElPTgotIAotQEAg LTE2ODAsNyArMTcxNSw3IEBAIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICh2b2lkKQot ICAqLwotIAotIHN0YXRpYyB2b2lkCi0tc3ZyNF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAo dm9pZCkKLStzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkpCi0g ewotICAgc3RydWN0IGluZmVyaW9yICppbmY7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOwot QEAgLTE2ODksMTIgKzE3MjQsMTMgQEAgc3ZyNF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAo dm9pZCkKLSAgIGluZm8gPSBnZXRfc3ZyNF9pbmZvIChQSURHRVQgKGluZmVyaW9yX3B0aWQpKTsK LSAKLSAgIC8qIFJlbG9jYXRlIHRoZSBtYWluIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5LiAgKi8K LS0gIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICgpOwotKyAgaWYgKGN1cnJlbnRfaW5m ZXJpb3IgKCktPmF0dGFjaF9mbGFnID09IDApCi0rICAgIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVj dXRhYmxlICgpOwotIAotICAgaWYgKCFzdnI0X2hhdmVfbGlua19tYXBfb2Zmc2V0cyAoKSkKLSAg ICAgcmV0dXJuOwotIAotLSAgaWYgKCFlbmFibGVfYnJlYWsgKGluZm8pKQotKyAgaWYgKCFlbmFi bGVfYnJlYWsgKGluZm8sIGZyb21fdHR5KSkKLSAgICAgcmV0dXJuOwotIAotICNpZiBkZWZpbmVk KF9TQ09fRFMpCi1AQCAtMTkxMCw4ICsxOTQ2LDE5IEBAIGVsZl9sb29rdXBfbGliX3N5bWJvbCAo Y29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkgICAgICAgY29uc3QgY2hhciAqbmFt ZSwKLSAJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotLSAgaWYgKG9iamZp bGUtPm9iZmQgPT0gTlVMTAotLSAgICAgfHwgc2Nhbl9keW50YWcgKERUX1NZTUJPTElDLCBvYmpm aWxlLT5vYmZkLCBOVUxMKSAhPSAxKQotKyAgYmZkICphYmZkOwotKwotKyAgaWYgKG9iamZpbGUg PT0gc3ltZmlsZV9vYmpmaWxlKQotKyAgICBhYmZkID0gZXhlY19iZmQ7Ci0rICBlbHNlCi0rICAg IHsKLSsgICAgICAvKiBPQkpGSUxFIHNob3VsZCBoYXZlIGJlZW4gcGFzc2VkIGFzIHRoZSBub24t ZGVidWcgb25lLiAgKi8KLSsgICAgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1 Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwotKwotKyAgICAgIGFiZmQgPSBvYmpmaWxlLT5v YmZkOwotKyAgICB9Ci0rCi0rICBpZiAoYWJmZCA9PSBOVUxMIHx8IHNjYW5fZHludGFnIChEVF9T WU1CT0xJQywgYWJmZCwgTlVMTCkgIT0gMSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICByZXR1 cm4gbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChvYmpmaWxlLCBuYW1lLCBkb21h aW4pOwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi10YXJnZXQuYyBiL2dkYi9zb2xpYi10YXJnZXQu YwotaW5kZXggMDc0MTVlNC4uZDE2MGE3MCAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi10YXJnZXQu YwotKysrIGIvZ2RiL3NvbGliLXRhcmdldC5jCi1AQCAtMzA2LDcgKzMwNiw3IEBAIHNvbGliX3Rh cmdldF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKLSB9Ci0gCi0gc3RhdGljIHZvaWQK LS1zb2xpYl90YXJnZXRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCi0rc29saWJf dGFyZ2V0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkpCi0gewotICAg LyogTm90aGluZyBuZWVkZWQuICAqLwotIH0KLWRpZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dk Yi9zb2xpYi5jCi1pbmRleCAzNTc0ZTYyLi43ZWEzNjYzIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGli LmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtOTk4LDcgKzk5OCw3IEBAIGNsZWFyX3NvbGliICh2 b2lkKQotIAotICAgIFNZTk9QU0lTCi0gCi0tICAgdm9pZCBzb2xpYl9jcmVhdGVfaW5mZXJpb3Jf aG9vayAoKQotKyAgIHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0 eSkKLSAKLSAgICBERVNDUklQVElPTgotIAotQEAgLTEwMDgsMTAgKzEwMDgsMTAgQEAgY2xlYXJf c29saWIgKHZvaWQpCi0gICAgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0suICAqLwotIAotIHZv aWQKLS1zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKLStzb2xpYl9jcmVhdGVfaW5m ZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVjdCB0YXJnZXRfc29fb3BzICpv cHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoKTsKLS0gIG9wcy0+c29saWJfY3JlYXRlX2lu ZmVyaW9yX2hvb2soKTsKLSsgIG9wcy0+c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGZyb21f dHR5KTsKLSB9Ci0gCi0gLyogR0xPQkFMIEZVTkNUSU9OCi1AQCAtMTA4Nyw3ICsxMDg3LDYgQEAg cmVsb2FkX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludCBmcm9tX3R0eSwKLSAJ CQkgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmUpCi0gewotICAgbm9fc2hhcmVkX2xpYnJhcmll cyAoTlVMTCwgZnJvbV90dHkpOwotLSAgc29saWJfYWRkIChOVUxMLCBmcm9tX3R0eSwgTlVMTCwg YXV0b19zb2xpYl9hZGQpOwotICAgLyogQ3JlYXRpbmcgaW5mZXJpb3IgaG9va3MgaGVyZSBoYXMg dHdvIHB1cnBvc2VzLiBGaXJzdCwgaWYgd2UgcmVsb2FkIAotICAgICAgc2hhcmVkIGxpYnJhcmll cyB0aGVuIHRoZSBhZGRyZXNzIG9mIHNvbGliIGJyZWFrcG9pbnQgd2UndmUgY29tcHV0ZWQKLSAg ICAgIHByZXZpb3VzbHkgbWlnaHQgYmUgbm8gbG9uZ2VyIHZhbGlkLiAgRm9yIGV4YW1wbGUsIGlm IHdlIGZvcmdvdCB0byBzZXQKLUBAIC0xMTAyLDkgKzExMDEsMTkgQEAgcmVsb2FkX3NoYXJlZF9s aWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludCBmcm9tX3R0eSwKLSAjaWZkZWYgU09MSUJfQ1JF QVRFX0lORkVSSU9SX0hPT0sKLSAgICAgICBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSyAoUElE R0VUIChpbmZlcmlvcl9wdGlkKSk7Ci0gI2Vsc2UKLS0gICAgICBzb2xpYl9jcmVhdGVfaW5mZXJp b3JfaG9vayAoKTsKLSsgICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoZnJvbV90dHkp OwotICNlbmRpZgotICAgICB9Ci0rCi0rICAvKiBTb21ldGltZXMgdGhlIHBsYXRmb3JtLXNwZWNp ZmljIGhvb2sgbG9hZHMgaW5pdGlhbCBzaGFyZWQKLSsgICAgIGxpYnJhcmllcywgYW5kIHNvbWV0 aW1lcyBpdCBkb2Vzbid0LiAgSWYgaXQgZG9lc24ndCBGUk9NX1RUWSB3aWxsIGJlCi0rICAgICBp bmNvcnJlY3RseSAwIGJ1dCBzdWNoIHNvbGliIHRhcmdldHMgc2hvdWxkIGJlIGZpeGVkIGFueXdh eS4gIElmIHdlCi0rICAgICBtYWRlIGFsbCB0aGUgaW5mZXJpb3IgaG9vayBtZXRob2RzIGNvbnNp c3RlbnQsIHRoaXMgY2FsbCBjb3VsZCBiZQotKyAgICAgcmVtb3ZlZC4gIENhbGwgaXQgb25seSBh ZnRlciB0aGUgc29saWIgdGFyZ2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIGJ5Ci0rICAgICBzb2xp Yl9jcmVhdGVfaW5mZXJpb3JfaG9vay4gICovCi0rCi0rICBzb2xpYl9hZGQgKE5VTEwsIDAsIE5V TEwsIGF1dG9fc29saWJfYWRkKTsKLSsKLSAgIC8qIFdlIGhhdmUgdW5sb2FkZWQgYW5kIHRoZW4g cmVsb2FkZWQgZGVidWcgaW5mbyBmb3IgYWxsIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgICBIb3dl dmVyLCBmcmFtZXMgbWF5IHN0aWxsIHJlZmVyZW5jZSB0aGVtLCBmb3IgZXhhbXBsZSBhIGZyYW1l J3MgCi0gICAgICB1bndpbmRlciBtaWdodCBzdGlsbCBwb2ludCBvZiBEV0FSRiBGREUgc3RydWN0 dXJlcyB0aGF0IGFyZSBub3cgZnJlZWQuCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLmggYi9nZGIv c29saWIuaAotaW5kZXggY2NjNWI2My4uYWJlNWUxOSAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi5o Ci0rKysgYi9nZGIvc29saWIuaAotQEAgLTQxLDcgKzQxLDcgQEAgZXh0ZXJuIGludCBzb2xpYl9y ZWFkX3N5bWJvbHMgKHN0cnVjdCBzb19saXN0ICosIGludCk7Ci0gICAgYWRkcmVzc2VzIHRvIHdo aWNoIHRoZXkgYXJlIGxpbmtlZCwgYW5kIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8KLSAgICBy ZWFkIGluIHRoZWlyIHN5bWJvbHMgYXQgYSBsYXRlciB0aW1lLiAgKi8KLSAKLS1leHRlcm4gdm9p ZCBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSk7Ci0gCi0gLyogSWYgQUREUiBsaWVz IGluIGEgc2hhcmVkIGxpYnJhcnksIHJldHVybiBpdHMgbmFtZS4gICovCi0gCi1kaWZmIC0tZ2l0 IGEvZ2RiL3NvbGlzdC5oIGIvZ2RiL3NvbGlzdC5oCi1pbmRleCAwMDVlOGY3Li45NzI0ZmU3IDEw MDY0NAotLS0tIGEvZ2RiL3NvbGlzdC5oCi0rKysgYi9nZGIvc29saXN0LmgKLUBAIC04Nyw3ICs4 Nyw3IEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCi0gICAgIHZvaWQgKCpjbGVhcl9zb2xpYikgKHZv aWQpOwotIAotICAgICAvKiBUYXJnZXQgZGVwZW5kZW50IGNvZGUgdG8gcnVuIGFmdGVyIGNoaWxk IHByb2Nlc3MgZm9yay4gICovCi0tICAgIHZvaWQgKCpzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v aykgKHZvaWQpOwotKyAgICB2b2lkICgqc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2spIChpbnQg ZnJvbV90dHkpOwotIAotICAgICAvKiBEbyBhZGRpdGlvbmFsIHN5bWJvbCBoYW5kbGluZywgbG9v a3VwLCBldGMuIGFmdGVyIHN5bWJvbHMKLSAgICAgICAgZm9yIGEgc2hhcmVkIG9iamVjdCBoYXZl IGJlZW4gbG9hZGVkLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5jIGIvZ2RiL3N5bWZp bGUuYwotaW5kZXggYzMxYjcyYS4uNmQ3ZmExMCAxMDA2NDQKLS0tLSBhL2dkYi9zeW1maWxlLmMK LSsrKyBiL2dkYi9zeW1maWxlLmMKLUBAIC01MzYsNDAgKzUzNiwxNTEgQEAgcGxhY2Vfc2VjdGlv biAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdCwgdm9pZCAqb2JqKQotICAgYXJnLT5sb3dlc3Qg PSBzdGFydF9hZGRyICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpOwotIH0KLSAKLS0vKiBQ YXJzZSB0aGUgdXNlcidzIGlkZWEgb2YgYW4gb2Zmc2V0IGZvciBkeW5hbWljIGxpbmtpbmcsIGlu dG8gb3VyIGlkZWEKLS0gICBvZiBob3cgdG8gcmVwcmVzZW50IGl0IGZvciBmYXN0IHN5bWJvbCBy ZWFkaW5nLiAgVGhpcyBpcyB0aGUgZGVmYXVsdAotLSAgIHZlcnNpb24gb2YgdGhlIHN5bV9mbnMu c3ltX29mZnNldHMgZnVuY3Rpb24gZm9yIHN5bWJvbCByZWFkZXJzIHRoYXQKLS0gICBkb24ndCBu ZWVkIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuICBJdCBhbGxvY2F0ZXMgYSBzZWN0aW9uX29mZnNl dHMgdGFibGUKLS0gICBmb3IgdGhlIG9iamVjdGZpbGUgT0JKRklMRSBhbmQgc3R1ZmZzIEFERFIg aW50byBhbGwgb2YgdGhlIG9mZnNldHMuICAqLwotKy8qIEJ1aWxkIChhbGxvY2F0ZSBhbmQgcG9w dWxhdGUpIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyB3aXRoIGFic29sdXRlCi0rICAgYWRkcmVz c2VzIGZyb20gT0JKRklMRS0+T0JGRCBhbmQgT0JKRklMRS0+U0VDVElPTl9PRkZTRVRTLiAgKi8K LSsKLStzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKgotK2J1aWxkX3NlY3Rpb25fYWRkcl9pbmZv X2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgc3RydWN0IHRh cmdldF9zZWN0aW9uICpzZWN0aW9ucyA9IE5VTEwsICpzZWN0aW9uc19lbmQ7Ci0rICBzdHJ1Y3Qg dGFyZ2V0X3NlY3Rpb24gKnA7Ci0rICBpbnQgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0IChv YmpmaWxlLT5nZGJhcmNoKTsKLSsgIENPUkVfQUREUiBtYXNrID0gQ09SRV9BRERSX01BWDsKLSsg IHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqcmV0dmFsOwotKyAgc3RydWN0IGNsZWFudXAgKm15 X2NsZWFudXBzOwotKwotKyAgaWYgKGJ1aWxkX3NlY3Rpb25fdGFibGUgKG9iamZpbGUtPm9iZmQs ICZzZWN0aW9ucywgJnNlY3Rpb25zX2VuZCkpCi0rICAgIGVycm9yIChfKCJDYW4ndCBmaW5kIHRo ZSBmaWxlIHNlY3Rpb25zIGluIGAlcyc6ICVzIiksCi0rCSAgIGJmZF9nZXRfZmlsZW5hbWUgKG9i amZpbGUtPm9iZmQpLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rICBteV9jbGVh bnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNlY3Rpb25zKTsKLSsKLSsgIGlmIChhZGRyX2Jp dCA8IChzaXplb2YgKENPUkVfQUREUikgKiBIT1NUX0NIQVJfQklUKSkKLSsgICAgbWFzayA9ICgo Q09SRV9BRERSKSAxIDw8IGFkZHJfYml0KSAtIDE7Ci0rCi0rICBmb3IgKHAgPSBzZWN0aW9uczsg cCA8IHNlY3Rpb25zX2VuZDsgcCsrKQotKyAgICB7Ci0rICAgICAgQ09SRV9BRERSIGJhc2VhZGRy OwotKwotKyAgICAgIGdkYl9hc3NlcnQgKHAtPnRoZV9iZmRfc2VjdGlvbi0+aW5kZXggPCBvYmpm aWxlLT5udW1fc2VjdGlvbnMpOwotKyAgICAgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUt PnNlY3Rpb25fb2Zmc2V0cywKLSsJCQkgICBwLT50aGVfYmZkX3NlY3Rpb24tPmluZGV4KTsKLSsK LSsgICAgICBwLT5hZGRyID0gKHAtPmFkZHIgKyBiYXNlYWRkcikgJiBtYXNrOwotKyAgICAgIHAt PmVuZGFkZHIgPSAocC0+ZW5kYWRkciArIGJhc2VhZGRyKSAmIG1hc2s7Ci0rICAgIH0KLSsKLSsg IHJldHZhbCA9IGJ1aWxkX3NlY3Rpb25fYWRkcl9pbmZvX2Zyb21fc2VjdGlvbl90YWJsZSAoc2Vj dGlvbnMsIHNlY3Rpb25zX2VuZCk7Ci0rCi0rICBkb19jbGVhbnVwcyAobXlfY2xlYW51cHMpOwot KwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rLyogU3RvcmUgc3RydWN0IHNlY3Rpb25fYWRk cl9pbmZvIGFzIHByZXBhcmVkIChtYWRlIHJlbGF0aXZlIGFuZCB3aXRoIFNFQ1RJTkRFWAotKyAg IGZpbGxlZC1pbikgYnkgYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgaW50byBTRUNUSU9OX09GRlNF VFMgb2YgTlVNX1NFQ1RJT05TCi0rICAgZW50cmllcy4gICovCi0gCi0gdm9pZAotLWRlZmF1bHRf c3ltZmlsZV9vZmZzZXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkgc3RydWN0IHNl Y3Rpb25fYWRkcl9pbmZvICphZGRycykKLStyZWxhdGl2ZV9hZGRyX2luZm9fdG9fc2VjdGlvbl9v ZmZzZXRzIChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNldHMsCi0rCQkJCSAg ICAgICBpbnQgbnVtX3NlY3Rpb25zLAotKwkJCQkgICAgICAgc3RydWN0IHNlY3Rpb25fYWRkcl9p bmZvICphZGRycykKLSB7Ci0gICBpbnQgaTsKLSAKLS0gIG9iamZpbGUtPm51bV9zZWN0aW9ucyA9 IGJmZF9jb3VudF9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCk7Ci0tICBvYmpmaWxlLT5zZWN0aW9u X29mZnNldHMgPSAoc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqKQotLSAgICBvYnN0YWNrX2FsbG9j ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJICAgU0laRU9GX05fU0VDVElPTl9PRkZT RVRTIChvYmpmaWxlLT5udW1fc2VjdGlvbnMpKTsKLS0gIG1lbXNldCAob2JqZmlsZS0+c2VjdGlv bl9vZmZzZXRzLCAwLAotLQkgIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAob2JqZmlsZS0+bnVt X3NlY3Rpb25zKSk7Ci0rICBtZW1zZXQgKHNlY3Rpb25fb2Zmc2V0cywgMCwgU0laRU9GX05fU0VD VElPTl9PRkZTRVRTIChudW1fc2VjdGlvbnMpKTsKLSAKLS0gIC8qIE5vdyBjYWxjdWxhdGUgb2Zm c2V0cyBmb3Igc2VjdGlvbiB0aGF0IHdlcmUgc3BlY2lmaWVkIGJ5IHRoZQotLSAgICAgY2FsbGVy LiAqLwotKyAgLyogTm93IGNhbGN1bGF0ZSBvZmZzZXRzIGZvciBzZWN0aW9uIHRoYXQgd2VyZSBz cGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gKi8KLSAgIGZvciAoaSA9IDA7IGkgPCBhZGRycy0+bnVt X3NlY3Rpb25zICYmIGFkZHJzLT5vdGhlcltpXS5uYW1lOyBpKyspCi0gICAgIHsKLS0gICAgICBz dHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKm9zcCA7Ci0rICAgICAgc3RydWN0IG90aGVyX3NlY3Rpb25z ICpvc3A7Ci0gCi0tICAgICAgb3NwID0gJmFkZHJzLT5vdGhlcltpXSA7Ci0rICAgICAgb3NwID0g JmFkZHJzLT5vdGhlcltpXTsKLSAgICAgICBpZiAob3NwLT5hZGRyID09IDApCi0gICAJY29udGlu dWU7Ci0gCi0gICAgICAgLyogUmVjb3JkIGFsbCBzZWN0aW9ucyBpbiBvZmZzZXRzICovCi0gICAg ICAgLyogVGhlIHNlY3Rpb25fb2Zmc2V0cyBpbiB0aGUgb2JqZmlsZSBhcmUgaGVyZSBmaWxsZWQg aW4gdXNpbmcKLSAgICAgICAgICB0aGUgQkZEIGluZGV4LiAqLwotLSAgICAgIChvYmpmaWxlLT5z ZWN0aW9uX29mZnNldHMpLT5vZmZzZXRzW29zcC0+c2VjdGluZGV4XSA9IG9zcC0+YWRkcjsKLSsg ICAgICBzZWN0aW9uX29mZnNldHMtPm9mZnNldHNbb3NwLT5zZWN0aW5kZXhdID0gb3NwLT5hZGRy OwotKyAgICB9Ci0rfQotKwotKy8qIFJlbGF0aXZpemUgYWJzb2x1dGUgYWRkcmVzc2VzIGluIEFE RFJTIGludG8gb2Zmc2V0cyBiYXNlZCBvbiBBQkZELiAgRmlsbC1pbgotKyAgIGFsc28gU0VDVElO REVYZXMgdGhlcmUuICAqLwotKwotK3ZvaWQKLSthZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSAoc3Ry dWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycywgYmZkICphYmZkKQotK3sKLSsgIGFzZWN0aW9u ICpsb3dlcl9zZWN0OwotKyAgYXNlY3Rpb24gKnNlY3Q7Ci0rICBDT1JFX0FERFIgbG93ZXJfb2Zm c2V0OwotKyAgaW50IGk7Ci0rCi0rICAvKiBGaW5kIGxvd2VzdCBsb2FkYWJsZSBzZWN0aW9uIHRv IGJlIHVzZWQgYXMgc3RhcnRpbmcgcG9pbnQgZm9yCi0rICAgICBjb250aW5ndW91cyBzZWN0aW9u cy4gRklYTUUhISB3b24ndCB3b3JrIHdpdGhvdXQgY2FsbCB0byBmaW5kCi0rICAgICAudGV4dCBm aXJzdCwgYnV0IHRoaXMgYXNzdW1lcyB0ZXh0IGlzIGxvd2VzdCBzZWN0aW9uLiAqLwotKyAgbG93 ZXJfc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnRleHQiKTsKLSsgIGlm IChsb3dlcl9zZWN0ID09IE5VTEwpCi0rICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAoYWJmZCwg ZmluZF9sb3dlc3Rfc2VjdGlvbiwgJmxvd2VyX3NlY3QpOwotKyAgaWYgKGxvd2VyX3NlY3QgPT0g TlVMTCkKLSsgICAgewotKyAgICAgIHdhcm5pbmcgKF8oIm5vIGxvYWRhYmxlIHNlY3Rpb25zIGZv dW5kIGluIGFkZGVkIHN5bWJvbC1maWxlICVzIiksCi0rCSAgICAgICBiZmRfZ2V0X2ZpbGVuYW1l IChhYmZkKSk7Ci0rICAgICAgbG93ZXJfb2Zmc2V0ID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAg ICBsb3dlcl9vZmZzZXQgPSBiZmRfc2VjdGlvbl92bWEgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQp LCBsb3dlcl9zZWN0KTsKLSsKLSsgIC8qIENhbGN1bGF0ZSBvZmZzZXRzIGZvciB0aGUgbG9hZGFi bGUgc2VjdGlvbnMuCi0rICAgICBGSVhNRSEgU2VjdGlvbnMgbXVzdCBiZSBpbiBvcmRlciBvZiBp bmNyZWFzaW5nIGxvYWRhYmxlIHNlY3Rpb24KLSsgICAgIHNvIHRoYXQgY29udGlndW91cyBzZWN0 aW9ucyBjYW4gdXNlIHRoZSBsb3dlci1vZmZzZXQhISEKLSsKLSsgICAgIEFkanVzdCBvZmZzZXRz IGlmIHRoZSBzZWdtZW50cyBhcmUgbm90IGNvbnRpZ3VvdXMuCi0rICAgICBJZiB0aGUgc2VjdGlv biBpcyBjb250aWd1b3VzLCBpdHMgb2Zmc2V0IHNob3VsZCBiZSBzZXQgdG8KLSsgICAgIHRoZSBv ZmZzZXQgb2YgdGhlIGhpZ2hlc3QgbG9hZGFibGUgc2VjdGlvbiBsb3dlciB0aGFuIGl0Ci0rICAg ICAodGhlIGxvYWRhYmxlIHNlY3Rpb24gZGlyZWN0bHkgYmVsb3cgaXQgaW4gbWVtb3J5KS4KLSsg ICAgIHRoaXNfb2Zmc2V0ID0gbG93ZXJfb2Zmc2V0ID0gbG93ZXJfYWRkciAtIGxvd2VyX29yaWdf YWRkciAqLwotKwotKyAgZm9yIChpID0gMDsgaSA8IGFkZHJzLT5udW1fc2VjdGlvbnMgJiYgYWRk cnMtPm90aGVyW2ldLm5hbWU7IGkrKykKLSsgICAgewotKyAgICAgIGlmIChhZGRycy0+b3RoZXJb aV0uYWRkciAhPSAwKQotKwl7Ci0rCSAgc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChh YmZkLCBhZGRycy0+b3RoZXJbaV0ubmFtZSk7Ci0rCSAgaWYgKHNlY3QpCi0rCSAgICB7Ci0rCSAg ICAgIGFkZHJzLT5vdGhlcltpXS5hZGRyIC09IGJmZF9zZWN0aW9uX3ZtYSAoYWJmZCwgc2VjdCk7 Ci0rCSAgICAgIGxvd2VyX29mZnNldCA9IGFkZHJzLT5vdGhlcltpXS5hZGRyOwotKwkgICAgICAv KiBUaGlzIGlzIHRoZSBpbmRleCB1c2VkIGJ5IEJGRC4gKi8KLSsJICAgICAgYWRkcnMtPm90aGVy W2ldLnNlY3RpbmRleCA9IHNlY3QtPmluZGV4OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsK LSsJICAgICAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4gJXMiKSwgYWRkcnMt Pm90aGVyW2ldLm5hbWUsCi0rCQkgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotKwkg ICAgICBhZGRycy0+b3RoZXJbaV0uYWRkciA9IDA7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICBlbHNl Ci0rCWFkZHJzLT5vdGhlcltpXS5hZGRyID0gbG93ZXJfb2Zmc2V0OwotICAgICB9Ci0rfQotKwot Ky8qIFBhcnNlIHRoZSB1c2VyJ3MgaWRlYSBvZiBhbiBvZmZzZXQgZm9yIGR5bmFtaWMgbGlua2lu ZywgaW50byBvdXIgaWRlYQotKyAgIG9mIGhvdyB0byByZXByZXNlbnQgaXQgZm9yIGZhc3Qgc3lt Ym9sIHJlYWRpbmcuICBUaGlzIGlzIHRoZSBkZWZhdWx0Ci0rICAgdmVyc2lvbiBvZiB0aGUgc3lt X2Zucy5zeW1fb2Zmc2V0cyBmdW5jdGlvbiBmb3Igc3ltYm9sIHJlYWRlcnMgdGhhdAotKyAgIGRv bid0IG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4gIEl0IGFsbG9jYXRlcyBhIHNlY3Rpb25f b2Zmc2V0cyB0YWJsZQotKyAgIGZvciB0aGUgb2JqZWN0ZmlsZSBPQkpGSUxFIGFuZCBzdHVmZnMg QUREUiBpbnRvIGFsbCBvZiB0aGUgb2Zmc2V0cy4gICovCi0rCi0rdm9pZAotK2RlZmF1bHRfc3lt ZmlsZV9vZmZzZXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgc3RydWN0IHNlY3Rp b25fYWRkcl9pbmZvICphZGRycykKLSt7Ci0rICBvYmpmaWxlLT5udW1fc2VjdGlvbnMgPSBiZmRf Y291bnRfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQpOwotKyAgb2JqZmlsZS0+c2VjdGlvbl9vZmZz ZXRzID0gKHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKikKLSsgICAgb2JzdGFja19hbGxvYyAoJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCSAgIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAo b2JqZmlsZS0+bnVtX3NlY3Rpb25zKSk7Ci0rICByZWxhdGl2ZV9hZGRyX2luZm9fdG9fc2VjdGlv bl9vZmZzZXRzIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsCi0rCQkJCQkgb2JqZmlsZS0+bnVt X3NlY3Rpb25zLCBhZGRycyk7Ci0gCi0gICAvKiBGb3IgcmVsb2NhdGFibGUgZmlsZXMsIGFsbCBs b2FkYWJsZSBzZWN0aW9ucyB3aWxsIHN0YXJ0IGF0IHplcm8uCi0gICAgICBUaGUgemVybyBpcyBt ZWFuaW5nbGVzcywgc28gdHJ5IHRvIHBpY2sgYXJiaXRyYXJ5IGFkZHJlc3NlcyBzdWNoCi1AQCAt ODAzLDY1ICs5MTQsOCBAQCBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0gCi0gICAgICBXZSBubyBsb25nZXIgd2FybiBpZiB0aGUgbG93ZXN0IHNlY3Rpb24gaXMg bm90IGEgdGV4dCBzZWdtZW50IChhcwotICAgICAgaGFwcGVucyBmb3IgdGhlIFBBNjQgcG9ydC4g ICovCi0tICBpZiAoIW1haW5saW5lICYmIGFkZHJzICYmIGFkZHJzLT5vdGhlclswXS5uYW1lKQot LSAgICB7Ci0tICAgICAgYXNlY3Rpb24gKmxvd2VyX3NlY3Q7Ci0tICAgICAgYXNlY3Rpb24gKnNl Y3Q7Ci0tICAgICAgQ09SRV9BRERSIGxvd2VyX29mZnNldDsKLS0gICAgICBpbnQgaTsKLS0KLS0g ICAgICAvKiBGaW5kIGxvd2VzdCBsb2FkYWJsZSBzZWN0aW9uIHRvIGJlIHVzZWQgYXMgc3RhcnRp bmcgcG9pbnQgZm9yCi0tICAgICAgICAgY29udGluZ3VvdXMgc2VjdGlvbnMuIEZJWE1FISEgd29u J3Qgd29yayB3aXRob3V0IGNhbGwgdG8gZmluZAotLQkgLnRleHQgZmlyc3QsIGJ1dCB0aGlzIGFz c3VtZXMgdGV4dCBpcyBsb3dlc3Qgc2VjdGlvbi4gKi8KLS0gICAgICBsb3dlcl9zZWN0ID0gYmZk X2dldF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIudGV4dCIpOwotLSAgICAgIGlm IChsb3dlcl9zZWN0ID09IE5VTEwpCi0tCWJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+ b2JmZCwgZmluZF9sb3dlc3Rfc2VjdGlvbiwKLS0JCQkgICAgICAgJmxvd2VyX3NlY3QpOwotLSAg ICAgIGlmIChsb3dlcl9zZWN0ID09IE5VTEwpCi0tCXsKLS0JICB3YXJuaW5nIChfKCJubyBsb2Fk YWJsZSBzZWN0aW9ucyBmb3VuZCBpbiBhZGRlZCBzeW1ib2wtZmlsZSAlcyIpLAotLQkJICAgb2Jq ZmlsZS0+bmFtZSk7Ci0tCSAgbG93ZXJfb2Zmc2V0ID0gMDsKLS0JfQotLSAgICAgIGVsc2UKLS0J bG93ZXJfb2Zmc2V0ID0gYmZkX3NlY3Rpb25fdm1hIChvYmpmaWxlLT5vYmZkLCBsb3dlcl9zZWN0 KTsKLS0KLS0gICAgICAvKiBDYWxjdWxhdGUgb2Zmc2V0cyBmb3IgdGhlIGxvYWRhYmxlIHNlY3Rp b25zLgotLSAJIEZJWE1FISBTZWN0aW9ucyBtdXN0IGJlIGluIG9yZGVyIG9mIGluY3JlYXNpbmcg bG9hZGFibGUgc2VjdGlvbgotLSAJIHNvIHRoYXQgY29udGlndW91cyBzZWN0aW9ucyBjYW4gdXNl IHRoZSBsb3dlci1vZmZzZXQhISEKLS0KLS0gICAgICAgICBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGUg c2VnbWVudHMgYXJlIG5vdCBjb250aWd1b3VzLgotLSAgICAgICAgIElmIHRoZSBzZWN0aW9uIGlz IGNvbnRpZ3VvdXMsIGl0cyBvZmZzZXQgc2hvdWxkIGJlIHNldCB0bwotLSAJIHRoZSBvZmZzZXQg b2YgdGhlIGhpZ2hlc3QgbG9hZGFibGUgc2VjdGlvbiBsb3dlciB0aGFuIGl0Ci0tIAkgKHRoZSBs b2FkYWJsZSBzZWN0aW9uIGRpcmVjdGx5IGJlbG93IGl0IGluIG1lbW9yeSkuCi0tIAkgdGhpc19v ZmZzZXQgPSBsb3dlcl9vZmZzZXQgPSBsb3dlcl9hZGRyIC0gbG93ZXJfb3JpZ19hZGRyICovCi0t Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWRkcnMtPm51bV9zZWN0aW9ucyAmJiBhZGRycy0+ b3RoZXJbaV0ubmFtZTsgaSsrKQotLSAgICAgICAgICB7Ci0tICAgICAgICAgICAgaWYgKGFkZHJz LT5vdGhlcltpXS5hZGRyICE9IDApCi0tICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAg IHNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JqZmlsZS0+b2JmZCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRycy0+b3RoZXJbaV0u bmFtZSk7Ci0tICAgICAgICAgICAgICAgIGlmIChzZWN0KQotLSAgICAgICAgICAgICAgICAgIHsK LS0gICAgICAgICAgICAgICAgICAgIGFkZHJzLT5vdGhlcltpXS5hZGRyCi0tICAgICAgICAgICAg ICAgICAgICAgIC09IGJmZF9zZWN0aW9uX3ZtYSAob2JqZmlsZS0+b2JmZCwgc2VjdCk7Ci0tICAg ICAgICAgICAgICAgICAgICBsb3dlcl9vZmZzZXQgPSBhZGRycy0+b3RoZXJbaV0uYWRkcjsKLS0g ICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGluZGV4IHVzZWQgYnkgQkZELiAqLwot LSAgICAgICAgICAgICAgICAgICAgYWRkcnMtPm90aGVyW2ldLnNlY3RpbmRleCA9IHNlY3QtPmlu ZGV4IDsKLS0gICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIGVsc2UKLS0gICAg ICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICB3YXJuaW5nIChfKCJzZWN0aW9u ICVzIG5vdCBmb3VuZCBpbiAlcyIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRk cnMtPm90aGVyW2ldLm5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpmaWxl LT5uYW1lKTsKLS0gICAgICAgICAgICAgICAgICAgIGFkZHJzLT5vdGhlcltpXS5hZGRyID0gMDsK LS0gICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgZWxz ZQotLSAgICAgICAgICAgICAgYWRkcnMtPm90aGVyW2ldLmFkZHIgPSBsb3dlcl9vZmZzZXQ7Ci0t ICAgICAgICAgIH0KLS0gICAgfQotKyAgaWYgKGFkZHJzICYmIGFkZHJzLT5vdGhlclswXS5uYW1l KQotKyAgICBhZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSAoYWRkcnMsIG9iamZpbGUtPm9iZmQpOwot IAotICAgLyogSW5pdGlhbGl6ZSBzeW1ib2wgcmVhZGluZyByb3V0aW5lcyBmb3IgdGhpcyBvYmpm aWxlLCBhbGxvdyBjb21wbGFpbnRzIHRvCi0gICAgICBhcHBlYXIgZm9yIHRoaXMgbmV3IGZpbGUs IGFuZCByZWNvcmQgaG93IHZlcmJvc2UgdG8gYmUsIHRoZW4gZG8gdGhlCi1AQCAtOTU5LDcgKzEw MTMsNiBAQCBzeW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQs Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAq cHN5bXRhYjsKLSAgIGNoYXIgKmRlYnVnZmlsZSA9IE5VTEw7Ci0tICBzdHJ1Y3Qgc2VjdGlvbl9h ZGRyX2luZm8gKm9yaWdfYWRkcnMgPSBOVUxMOwotICAgc3RydWN0IGNsZWFudXAgKm15X2NsZWFu dXBzOwotICAgY29uc3QgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOwotICAg Y29uc3QgaW50IGZyb21fdHR5ID0gYWRkX2ZsYWdzICYgU1lNRklMRV9WRVJCT1NFOwotQEAgLTk4 MSwxMiArMTAzNCw2IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJm ZCAqYWJmZCwKLSAgICAgb2JqZmlsZS0+ZmxhZ3MgfD0gT0JKRl9NQUlOOwotICAgZGlzY2FyZF9j bGVhbnVwcyAobXlfY2xlYW51cHMpOwotIAotLSAgaWYgKGFkZHJzKQotLSAgICB7Ci0tICAgICAg b3JpZ19hZGRycyA9IGNvcHlfc2VjdGlvbl9hZGRyX2luZm8gKGFkZHJzKTsKLS0gICAgICBtYWtl X2NsZWFudXBfZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAob3JpZ19hZGRycyk7Ci0tICAgIH0KLS0K LSAgIC8qIFdlIGVpdGhlciBjcmVhdGVkIGEgbmV3IG1hcHBlZCBzeW1ib2wgdGFibGUsIG1hcHBl ZCBhbiBleGlzdGluZwotICAgICAgc3ltYm9sIHRhYmxlIGZpbGUgd2hpY2ggaGFzIG5vdCBoYWQg aW5pdGlhbCBzeW1ib2wgcmVhZGluZwotICAgICAgcGVyZm9ybWVkLCBvciBuZWVkIHRvIHJlYWQg YW4gdW5tYXBwZWQgc3ltYm9sIHRhYmxlLiAqLwotQEAgLTEwMzMsMTggKzEwODAsMTcgQEAgc3lt Ym9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAgICAgYC5n bnVfZGVidWdsaW5rJyBtYXkgbm8gbG9uZ2VyIGJlIHByZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1 aWxkLWlkJy4gICovCi0gICBpZiAoIWhhc19hbnlfZGVidWdfc3ltYm9scyAob2JqZmlsZSkpCi0g ICAgIGRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAob2JqZmlsZSk7Ci0rCi0g ICBpZiAoZGVidWdmaWxlKQotICAgICB7Ci0tICAgICAgaWYgKGFkZHJzICE9IE5VTEwpCi0tCXsK LS0JICBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlCi0tICAgICAgICAgICAgPSBzeW1i b2xfZmlsZV9hZGQgKGRlYnVnZmlsZSwgYWRkX2ZsYWdzLCBvcmlnX2FkZHJzLCBmbGFncyk7Ci0t CX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxl Ci0tICAgICAgICAgICAgPSBzeW1ib2xfZmlsZV9hZGQgKGRlYnVnZmlsZSwgYWRkX2ZsYWdzLCBO VUxMLCBmbGFncyk7Ci0tCX0KLSsgICAgICBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKm9iamZp bGVfYWRkcnM7Ci0rCi0rICAgICAgb2JqZmlsZV9hZGRycyA9IGJ1aWxkX3NlY3Rpb25fYWRkcl9p bmZvX2Zyb21fb2JqZmlsZSAob2JqZmlsZSk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg b2JqZmlsZV9hZGRycyk7Ci0rCi0rICAgICAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmls ZSA9IHN5bWJvbF9maWxlX2FkZCAoZGVidWdmaWxlLCBhZGRfZmxhZ3MsCi0rCQkJCQkJCSBvYmpm aWxlX2FkZHJzLCBmbGFncyk7Ci0rCi0gICAgICAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2Jq ZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluawotICAgICAgICAgPSBvYmpmaWxl OwotIAotZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCi1pbmRleCBi ZjlkOWU3Li5iZmY2YmQ4IDEwMDY0NAotLS0tIGEvZ2RiL3N5bWZpbGUuaAotKysrIGIvZ2RiL3N5 bWZpbGUuaAotQEAgLTE4MSw2ICsxODEsMTYgQEAgc3RydWN0IHN5bV9mbnMKLSAKLSB9OwotIAot K2V4dGVybiBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKgotKwkJIGJ1aWxkX3NlY3Rpb25fYWRk cl9pbmZvX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotKwotK2V4dGVy biB2b2lkIHJlbGF0aXZlX2FkZHJfaW5mb190b19zZWN0aW9uX29mZnNldHMKLSsgIChzdHJ1Y3Qg c2VjdGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNldHMsIGludCBudW1fc2VjdGlvbnMsCi0rICAg c3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycyk7Ci0rCi0rZXh0ZXJuIHZvaWQgYWRkcl9p bmZvX21ha2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsCi0rCQkJ CSAgICAgYmZkICphYmZkKTsKLSsKLSAvKiBUaGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHN5bV9mbnMu c3ltX29mZnNldHMgZm9yIHJlYWRlcnMgdGhhdCBkb24ndAotICAgIGRvIGFueXRoaW5nIHNwZWNp YWwuICAqLwotIAotZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYwotaW5k ZXggODJlMDE2My4uMDExMTdlMyAxMDA2NDQKLS0tLSBhL2dkYi9zeW10YWIuYwotKysrIGIvZ2Ri L3N5bXRhYi5jCi1AQCAtMTQ0OSw3ICsxNDQ5LDEyIEBAIGxvb2t1cF9vYmpmaWxlX2Zyb21fYmxv Y2sgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCi0gICAvKiBHbyB0aHJvdWdoIFNZTVRBQlMu ICAqLwotICAgQUxMX1NZTVRBQlMgKG9iaiwgcykKLSAgICAgaWYgKGJsb2NrID09IEJMT0NLVkVD VE9SX0JMT0NLIChCTE9DS1ZFQ1RPUiAocyksIEdMT0JBTF9CTE9DSykpCi0tICAgICAgcmV0dXJu IG9iajsKLSsgICAgICB7Ci0rCWlmIChvYmotPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xp bmspCi0rCSAgb2JqID0gb2JqLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rOwotKwot KwlyZXR1cm4gb2JqOwotKyAgICAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwotIH0KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC1saWIuYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLWxpYi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uOWNhOTQzZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbGliLmMKLUBAIC0wLDAgKzEsNDAgQEAKLSsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHly aWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0r I2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8c3Rk aW8uaD4KLSsKLSt2b2lkCi0rbGliZnVuYyAoY29uc3QgY2hhciAqYWN0aW9uKQotK3sKLSsgIGFz c2VydCAoYWN0aW9uICE9IE5VTEwpOwotKwotKyAgaWYgKHN0cmNtcCAoYWN0aW9uLCAic2VndiIp ID09IDApCi0rICAgIHJhaXNlIChTSUdTRUdWKTsKLSsKLSsgIGlmIChzdHJjbXAgKGFjdGlvbiwg InNsZWVwIikgPT0gMCkKLSsgICAgewotKyAgICAgIHB1dHMgKCJzbGVlcGluZyIpOwotKyAgICAg IGZmbHVzaCAoc3Rkb3V0KTsKLSsKLSsgICAgICBzbGVlcCAoNjApOwotKyAgICB9Ci0rCi0rICBh c3NlcnQgKDApOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC1tYWlu LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMTJlYzJiCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC1tYWluLmMK LUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0rZXh0ZXJuIHZvaWQgbGliZnVuYyAoY29uc3Qg Y2hhciAqYWN0aW9uKTsKLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0r ewotKyAgYXNzZXJ0IChhcmdjID09IDIpOwotKwotKyAgbGliZnVuYyAoYXJndlsxXSk7Ci0rCi0r ICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVh ay1pbnRlcnAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTJmNDYwYwotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCi1AQCAtMCww ICsxLDU0NSBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGhpcyB0ZXN0IG9u bHkgd29ya3Mgb24gR05VL0xpbnV4LgotK2lmIHsgIVtpc25hdGl2ZV0gfHwgW2lzX3JlbW90ZSBo b3N0XSB8fCAhW2lzdGFyZ2V0ICotbGludXgqXSB8fCBbc2tpcF9zaGxpYl90ZXN0c119IHsKLSsg ICAgY29udGludWUKLSt9Ci0rCi0rc2V0IHRlc3QgImJyZWFrLWludGVycCIKLStzZXQgYmlucHJl Zml4ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fQotKyMgT25seSB0byBnZXQgdGhlICRpbnRl cnBfc3lzdGVtIG5hbWUuCi0rc2V0IHNyY2ZpbGVfdGVzdCAic3RhcnQuYyIKLStzZXQgYmluZmls ZV90ZXN0ICR7dGVzdH0tdGVzdAotK3NldCBiaW5maWxlX2xpYiAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdH0uc28KLStzZXQgc3JjZmlsZSAiJHt0ZXN0fS1tYWluLmMiCi0rc2V0IHNyY2ZpbGVf bGliICIke3Rlc3R9LWxpYi5jIgotKwotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVf bGlifV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBVc2UgLXNvbmFtZSBzbyB0aGF0IGl0 IGlzIGxpc3RlZCB3aXRoICIgPT4gIiBieSBsZGQgYW5kIHRoaXMgdGVzdGNhc2UgbWFrZXMKLSsj IGEgY29weSBvZiAke2JpbmZpbGVfbGlifSBmb3IgZWFjaCBwcmVsaW5rIHZhcmlhbnQuCi0rCi0r aWYge1tnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9 ICR7YmluZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25hbWUs JHt0ZXN0fS5zb11dICE9ICIifSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiB7W2J1aWxk X2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgJGJpbmZpbGVfdGVzdCAke3NyY2ZpbGVfdGVzdH0ge31d ID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFJldHVybiB0aGUgaW50ZXJwcmV0 ZXIgZmlsZW5hbWUgc3RyaW5nLgotKyMgUmV0dXJuICIiIGlmIG5vIGludGVycHJldGVyIHdhcyBm b3VuZC4KLStwcm9jIHNlY3Rpb25fZ2V0IHtleGVjIHNlY3Rpb259IHsKLSsgICAgZ2xvYmFsIG9i amRpcgotKyAgICBnbG9iYWwgc3ViZGlyCi0rICAgIHNldCB0bXAgIiR7b2JqZGlyfS8ke3N1YmRp cn0vYnJlYWstaW50ZXJwLmludGVycCIKLSsgICAgc2V0IG9iamNvcHlfcHJvZ3JhbSBbdHJhbnNm b3JtIG9iamNvcHldCi0rCi0rICAgIHNldCBjb21tYW5kICJleGVjICRvYmpjb3B5X3Byb2dyYW0g LU8gYmluYXJ5IC0tc2V0LXNlY3Rpb24tZmxhZ3MgJHNlY3Rpb249QSAtLWNoYW5nZS1zZWN0aW9u LWFkZHJlc3MgJHNlY3Rpb249MCAtaiAkc2VjdGlvbiAkZXhlYyAkdG1wIgotKyAgICB2ZXJib3Nl IC1sb2cgImNvbW1hbmQgaXMgJGNvbW1hbmQiCi0rICAgIHNldCByZXN1bHQgW2NhdGNoICRjb21t YW5kIG91dHB1dF0KLSsgICAgdmVyYm9zZSAtbG9nICJyZXN1bHQgaXMgJHJlc3VsdCIKLSsgICAg dmVyYm9zZSAtbG9nICJvdXRwdXQgaXMgJG91dHB1dCIKLSsgICAgaWYgeyRyZXN1bHQgPT0gMX0g ewotKwlyZXR1cm4gIiIKLSsgICAgfQotKyAgICBzZXQgZmkgW29wZW4gJHRtcF0KLSsgICAgZmNv bmZpZ3VyZSAkZmkgLXRyYW5zbGF0aW9uIGJpbmFyeQotKyAgICBzZXQgZGF0YSBbcmVhZCAkZmld Ci0rICAgIGNsb3NlICRmaQotKyAgICAjZmlsZSBkZWxldGUgJHRtcAotKyAgICAjIC5pbnRlcnAg aGFzIHNpemUgJGxlbiArIDEgYnV0IC5nbnVfZGVidWdsaW5rIGNvbnRhaW5zIGdhcmJhZ2UgYWZ0 ZXIgXDAwMC4KLSsgICAgc2V0IGxlbiBbc3RyaW5nIGZpcnN0IFwwMDAgJGRhdGFdCi0rICAgIGlm IHskbGVuIDwgMH0gewotKwl2ZXJib3NlIC1sb2cgInNlY3Rpb24gJHNlY3Rpb24gbm90IGZvdW5k IgotKwlyZXR1cm4gIiIKLSsgICAgfQotKyAgICBzZXQgcmV0dmFsIFtzdHJpbmcgcmFuZ2UgJGRh dGEgMCBbZXhwciAkbGVuIC0gMV1dCi0rICAgIHZlcmJvc2UgLWxvZyAic2VjdGlvbiAkc2VjdGlv biBpcyA8JHJldHZhbD4iCi0rICAgIHJldHVybiAkcmV0dmFsCi0rfQotKwotKyMgTm90ZTogVGhl IHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZSBjb250ZW50IGJ1aWxkLWlkL2NyYzMyIGFyZSBub3Qg dmVyaWZpZWQKLSsjIGNvbnRyYXJ5IHRvIHRoZSBHREIgc2VhcmNoIGFsZ29yaXRobSBza2lwcGlu ZyBub24tbWF0Y2hpbmcgb25lcy4KLStwcm9jIHN5c3RlbV9kZWJ1Z19nZXQge2V4ZWN9IHsKLSsg ICAgZ2xvYmFsIGRlYnVnX3Jvb3QKLSsKLSsgICAgc2V0IGV4ZWNfYnVpbGRfaWRfZGVidWcgW2J1 aWxkX2lkX2RlYnVnX2ZpbGVuYW1lX2dldCAkZXhlY10KLSsgICAgc2V0IGRlYnVnX2Jhc2UgIltm aWxlIHRhaWwgJGV4ZWNdLmRlYnVnIgotKyAgICBzZXQgZXhlY19kaXIgW2ZpbGUgZGlybmFtZSAk ZXhlY10KLSsKLSsgICAgIyBpc2ZpbGUgcmV0dXJucyAxIGV2ZW4gZm9yIHN5bWxpbmtzIHRvIGZp bGVzLgotKyAgICBzZXQgcmV0dmFsICRkZWJ1Z19yb290LyRleGVjX2J1aWxkX2lkX2RlYnVnCi0r ICAgIGlmIFtmaWxlIGlzZmlsZSAkcmV0dmFsXSB7Ci0rCXJldHVybiAkcmV0dmFsCi0rICAgIH0K LSsgICAgc2V0IHJldHZhbCAkZXhlY19kaXIvJGRlYnVnX2Jhc2UKLSsgICAgaWYgW2ZpbGUgaXNm aWxlICRyZXR2YWxdIHsKLSsJcmV0dXJuICRyZXR2YWwKLSsgICAgfQotKyAgICBzZXQgcmV0dmFs ICRleGVjX2Rpci8uZGVidWcvJGRlYnVnX2Jhc2UKLSsgICAgaWYgW2ZpbGUgaXNmaWxlICRyZXR2 YWxdIHsKLSsJcmV0dXJuICRyZXR2YWwKLSsgICAgfQotKyAgICBzZXQgcmV0dmFsICRkZWJ1Z19y b290LyRleGVjX2Rpci8kZGVidWdfYmFzZQotKyAgICBpZiBbZmlsZSBpc2ZpbGUgJHJldHZhbF0g ewotKwlyZXR1cm4gJHJldHZhbAotKyAgICB9Ci0rICAgIHJldHVybiAiIgotK30KLSsKLStnZGJf ZXhpdAotK2dkYl9zdGFydAotK3NldCBkZWJ1Z19yb290ICIiCi0rc2V0IHRlc3QgInNob3cgZGVi dWctZmlsZS1kaXJlY3RvcnkiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAg ICAtcmUgIlRoZSBkaXJlY3Rvcnkgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUgc2Vh cmNoZWQgZm9yIGlzIFwiKC4qKVwiLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldCBkZWJ1Z19y b290ICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKyAgICB9Ci0rfQotKwotK3NldCBpbnRlcnBfc3lz dGVtIFtzZWN0aW9uX2dldCAke29iamRpcn0vJHtzdWJkaXJ9LyRiaW5maWxlX3Rlc3QgLmludGVy cF0KLStzZXQgaW50ZXJwX3N5c3RlbV9kZWJ1ZyBbc3lzdGVtX2RlYnVnX2dldCAkaW50ZXJwX3N5 c3RlbV0KLSt2ZXJib3NlIC1sb2cgIiRpbnRlcnBfc3lzdGVtIGhhcyBkZWJ1ZyAkaW50ZXJwX3N5 c3RlbV9kZWJ1ZyIKLSsKLStwcm9jIHByZWxpbmtOT19ydW4ge2FyZ30gewotKyAgICBzZXQgY29t bWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGluayAtdU4gJGFyZyIKLSsgICAgdmVyYm9zZSAtbG9n ICJjb21tYW5kIGlzICRjb21tYW5kIgotKyAgICBzZXQgcmVzdWx0IFtjYXRjaCAkY29tbWFuZCBv dXRwdXRdCi0rICAgIHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRyZXN1bHQiCi0rICAgIHZlcmJv c2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0rICAgIHJldHVybiBbbGlzdCAkcmVzdWx0ICRv dXRwdXRdCi0rfQotKwotK3Byb2MgcHJlbGlua05PIHthcmcge25hbWUge319fSB7Ci0rICAgIGlm IHskbmFtZSA9PSAiIn0gewotKwlzZXQgbmFtZSBbZmlsZSB0YWlsICRhcmddCi0rICAgIH0KLSsg ICAgc2V0IHRlc3QgInVucHJlbGluayAkbmFtZSIKLSsgICAgc2V0IHJ1biBbcHJlbGlua05PX3J1 biAkYXJnXQotKyAgICBzZXQgcmVzdWx0IFtsaW5kZXggJHJ1biAwXQotKyAgICBzZXQgb3V0cHV0 IFtsaW5kZXggJHJ1biAxXQotKyAgICBpZiB7JHJlc3VsdCA9PSAwICYmICRvdXRwdXQgPT0gIiJ9 IHsKLSsJdmVyYm9zZSAtbG9nICIkbmFtZSBoYXMgYmVlbiBub3cgdW5wcmVsaW5rZWQiCi0rCXNl dCBydW4gW3ByZWxpbmtOT19ydW4gJGFyZ10KLSsJc2V0IHJlc3VsdCBbbGluZGV4ICRydW4gMF0K LSsJc2V0IG91dHB1dCBbbGluZGV4ICRydW4gMV0KLSsgICAgfQotKyAgICAjIExhc3QgbGluZSBk b2VzIG1pc3MgdGhlIHRyYWlsaW5nIFxuLgotKyAgICBpZiB7JHJlc3VsdCA9PSAxICYmIFtyZWdl eHAge14oL3Vzci9zYmluL3ByZWxpbms6IFteIF0qIGRvZXMgbm90IGhhdmUgLmdudS5wcmVsaW5r X3VuZG8gc2VjdGlvblxuPykqJH0gJG91dHB1dF19IHsKLSsJcGFzcyAkdGVzdAotKwlyZXR1cm4g MQotKyAgICB9IGVsc2UgewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAwCi0rICAgIH0KLSt9Ci0r Ci0rcHJvYyBwcmVsaW5rWUVTIHthcmcge25hbWUgIiJ9fSB7Ci0rICAgIGlmIHskbmFtZSA9PSAi In0gewotKwlzZXQgbmFtZSBbZmlsZSB0YWlsICRhcmddCi0rICAgIH0KLSsgICAgc2V0IHRlc3Qg InByZWxpbmsgJG5hbWUiCi0rICAgIHNldCBjb21tYW5kICJleGVjIC91c3Ivc2Jpbi9wcmVsaW5r IC1xTlIgLS1uby1leGVjLXNoaWVsZCAkYXJnIgotKyAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQg aXMgJGNvbW1hbmQiCi0rICAgIHNldCByZXN1bHQgW2NhdGNoICRjb21tYW5kIG91dHB1dF0KLSsg ICAgdmVyYm9zZSAtbG9nICJyZXN1bHQgaXMgJHJlc3VsdCIKLSsgICAgdmVyYm9zZSAtbG9nICJv dXRwdXQgaXMgJG91dHB1dCIKLSsgICAgaWYgeyRyZXN1bHQgPT0gMCAmJiAkb3V0cHV0ID09ICIi fSB7Ci0rCXBhc3MgJHRlc3QKLSsJcmV0dXJuIDEKLSsgICAgfSBlbHNlIHsKLSsJZmFpbCAkdGVz dAotKwlyZXR1cm4gMAotKyAgICB9Ci0rfQotKwotKyMgUmVzb2x2ZSBzeW1saW5rcy4KLStwcm9j IHN5bWxpbmtfcmVzb2x2ZSB7ZmlsZX0gewotKyAgICBzZXQgbG9vcCAwCi0rICAgIHdoaWxlIHtb ZmlsZSB0eXBlICRmaWxlXSA9PSAibGluayJ9IHsKLSsJc2V0IHRhcmdldCBbZmlsZSByZWFkbGlu ayAkZmlsZV0KLSsJaWYge1tmaWxlIHBhdGh0eXBlICR0YXJnZXRdID09ICJyZWxhdGl2ZSJ9IHsK LSsJICAgIHNldCBzcmMyIFtmaWxlIGRpcm5hbWUgJGZpbGVdLyR0YXJnZXQKLSsJfSBlbHNlIHsK LSsJICAgIHNldCBzcmMyICR0YXJnZXQKLSsJfQotKwl2ZXJib3NlIC1sb2cgIlJlc29sdmVkIHN5 bWxpbmsgJGZpbGUgdGFyZ2V0dGluZyAkdGFyZ2V0IGFzICRzcmMyIgotKwlzZXQgZmlsZSAkc3Jj MgotKwotKwlzZXQgbG9vcCBbZXhwciAkbG9vcCArIDFdCi0rCWlmIHskbG9vcCA+IDMwfSB7Ci0r CSAgICBmYWlsICJMb29waW5nIHN5bWxpbmsgcmVzb2x1dGlvbiBmb3IgJGZpbGUiCi0rCSAgICBy ZXR1cm4gIiIKLSsJfQotKyAgICB9Ci0rICAgIHJldHVybiAkZmlsZQotK30KLSsKLStwcm9jIGNv cHkge3NyYyBkZXN0fSB7Ci0rICAgIHNldCBzcmMgW3N5bWxpbmtfcmVzb2x2ZSAkc3JjXQotKyAg ICAjIFRlc3QgbmFtZSB3b3VsZCBjb250YWluIGJ1aWxkLWlkIGhhc2ggZm9yIHN5bWxpbmstdW5y ZXNvbHZlZCAkc3JjLgotKyAgICBzZXQgdGVzdCAiY29weSBbZmlsZSB0YWlsICRzcmNdIHRvIFtm aWxlIHRhaWwgJGRlc3RdIgotKyAgICBzZXQgY29tbWFuZCAiZmlsZSBjb3B5IC1mb3JjZSAkc3Jj ICRkZXN0IgotKyAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQgaXMgJGNvbW1hbmQiCi0rICAgIGlm IFtjYXRjaCAkY29tbWFuZF0gewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAwCi0rICAgIH0gZWxz ZSB7Ci0rICAgIAlwYXNzICR0ZXN0Ci0rCXJldHVybiAxCi0rICAgIH0KLSt9Ci0rCi0rcHJvYyBz dHJpcF9kZWJ1ZyB7ZGVzdH0gewotKyAgICBzZXQgdGVzdCAic3RyaXAgW2ZpbGUgdGFpbCAkZGVz dF0iCi0rICAgIHNldCBzdHJpcF9wcm9ncmFtIFt0cmFuc2Zvcm0gc3RyaXBdCi0rICAgIHNldCBj b21tYW5kICJleGVjICRzdHJpcF9wcm9ncmFtIC0tc3RyaXAtZGVidWcgJGRlc3QiCi0rICAgIHZl cmJvc2UgLWxvZyAiY29tbWFuZCBpcyAkY29tbWFuZCIKLSsgICAgaWYgW2NhdGNoICRjb21tYW5k XSB7Ci0rCWZhaWwgJHRlc3QKLSsJcmV0dXJuIDAKLSsgICAgfSBlbHNlIHsKLSsgICAgCXBhc3Mg JHRlc3QKLSsJcmV0dXJuIDEKLSsgICAgfQotK30KLSsKLSsjIGBydW50bycgZG9lcyBub3QgY2hl Y2sgd2Ugc3RvcHBlZCByZWFsbHkgYXQgdGhlIGZ1bmN0aW9uIHdlIHNwZWNpZmllZC4KLStwcm9j IHJlYWNoIHtmdW5jIGNvbW1hbmR9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsgICAg aWYgW2dkYl9icmVha3BvaW50ICRmdW5jIGFsbG93LXBlbmRpbmddIHsKLSsJc2V0IHRlc3QgInJl YWNoICRmdW5jIgotKwlnZGJfdGVzdF9tdWx0aXBsZSAkY29tbWFuZCAkdGVzdCB7Ci0rCSAgICAt cmUgIkJyZWFrcG9pbnQgXFswLTlcXSssICRmdW5jIFxcKC4qXFwpIGF0IC4qOlxbMC05XF0rXHJc bi4qJGdkYl9wcm9tcHQgJCIgewotKwkJcGFzcyAkdGVzdAotKwkgICAgfQotKwkgICAgLXJlICJC cmVha3BvaW50IFxbMC05XF0rLCBcWzAtOXhhLWZcXSsgaW4gJGZ1bmMgXFwoXFwpKCBmcm9tIC4q KT9cclxuJGdkYl9wcm9tcHQgJCIgeyAKLSsJCXBhc3MgJHRlc3QKLSsJICAgIH0KLSsJfQotKyAg ICB9Ci0rfQotKwotK3Byb2MgdGVzdF9jb3JlIHtmaWxlfSB7Ci0rICAgIGdsb2JhbCBzcmNkaXIg c3ViZGlyIGdkYl9wcm9tcHQKLSsKLSsgICAgc2V0IGNvcmVmaWxlIFtjb3JlX2ZpbmQgJGZpbGUg e30gInNlZ3YiXQotKyAgICBpZiB7JGNvcmVmaWxlID09ICIifSB7Ci0rCXJldHVybgotKyAgICB9 Ci0rCi0rICAgIGdkYl9leGl0Ci0rICAgIGdkYl9zdGFydAotKyAgICAjIENsZWFyIGl0IHRvIG5l dmVyIGZpbmQgYW55IHNlcGFyYXRlIGRlYnVnIGluZm9zIGluICRkZWJ1Z19yb290LgotKyAgICBn ZGJfdGVzdCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IiAiIiAic2V0IGRlYnVnLWZpbGUtZGly ZWN0b3J5IGZvciBjb3JlIgotKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLSsgICAgZ2RiX2xvYWQgJGZpbGUKLSsKLSsgICAgIyBEbyBub3QgY2hlY2sgdGhlIGJpbmFy eSBmaWxlbmFtZSBhcyBpdCBtYXkgYmUgdHJ1bmNhdGVkLgotKyAgICBnZGJfdGVzdCAiY29yZS1m aWxlICRjb3JlZmlsZSIgIkNvcmUgd2FzIGdlbmVyYXRlZCBieSAuKlxyXG4jMCAuKiIgImNvcmUg bG9hZGVkIgotKwotKyAgICAjIENoZWNrIHRoZXJlIGlzIG5vICJhcmdjPWNhbid0IGNvbXB1dGUg Q0ZBIGZvciB0aGlzIGZyYW1lIi4KLSsgICAgZ2RiX3Rlc3QgImJ0IiAiI1xbMC05XF0rICtcW15c clxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuI1xbMC05XF0rICtcW15cclxuXF0qXFxt bWFpbiBcXCgoYXJnYz0yLC4qKT9cXCkuKiIgImNvcmUgbWFpbiBidCIKLSt9Ci0rCi0rcHJvYyB0 ZXN0X2F0dGFjaCB7ZmlsZX0gewotKyAgICBnbG9iYWwgYm9hcmRfaW5mbwotKwotKyAgICBnZGJf ZXhpdAotKwotKyAgICBzZXQgdGVzdCAic2xlZXAgZnVuY3Rpb24gc3RhcnRlZCIKLSsKLSsgICAg c2V0IGNvbW1hbmQgIiR7ZmlsZX0gc2xlZXAiCi0rICAgIHNldCByZXMgW3JlbW90ZV9zcGF3biBo b3N0ICRjb21tYW5kXTsKLSsgICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKwlw ZXJyb3IgIlNwYXduaW5nICRjb21tYW5kIGZhaWxlZC4iCi0rCWZhaWwgJHRlc3QKLSsJcmV0dXJu Ci0rICAgIH0KLSsgICAgc2V0IHBpZCBbZXhwX3BpZCAtaSAkcmVzXQotKyAgICBnZGJfZXhwZWN0 IHsKLSsJLXJlICJzbGVlcGluZ1xyXG4iIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwllb2Yg ewotKwkgICAgZmFpbCAiJHRlc3QgKGVvZikiCi0rCSAgICByZXR1cm4KLSsJfQotKwl0aW1lb3V0 IHsKLSsJICAgIGZhaWwgIiR0ZXN0ICh0aW1lb3V0KSIKLSsJICAgIHJldHVybgotKwl9Ci0rICAg IH0KLSsKLSsgICAgZ2RiX2V4aXQKLSsgICAgZ2RiX3N0YXJ0Ci0rICAgIGdkYl90ZXN0ICJhdHRh Y2ggJHBpZCIgIkF0dGFjaGluZyB0byBwcm9jZXNzICRwaWRcclxuLioiICJhdHRhY2giCi0rICAg ICMgQ2hlY2sgdGhlcmUgaXMgbm8gImFyZ2M9Y2FuJ3QgY29tcHV0ZSBDRkEgZm9yIHRoaXMgZnJh bWUiLgotKyAgICBnZGJfdGVzdCAiYnQiICIjXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1saWJmdW5j XFxNXFteXHJcblxdKlxyXG4jXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1tYWluIFxcKChhcmdjPTIs LiopP1xcKS4qIiAiYXR0YWNoIG1haW4gYnQiCi0rICAgIGdkYl9leGl0Ci0rCi0rICAgIHJlbW90 ZV9leGVjIGhvc3QgImtpbGwgLTkgJHBpZCIKLSt9Ci0rCi0rcHJvYyB0ZXN0X2xkIHtmaWxlIGlm bWFpbiB0cnlub3N5bX0gewotKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0Ci0r Ci0rICAgICMgRmlyc3QgdGVzdCBub3JtYWwgYGZpbGUnLWNvbW1hbmQgbG9hZGVkICRGSUxFIHdp dGggc3ltYm9scy4KLSsKLSsgICAgZ2RiX2V4aXQKLSsgICAgZ2RiX3N0YXJ0Ci0rICAgICMgQ2xl YXIgaXQgdG8gbmV2ZXIgZmluZCBhbnkgc2VwYXJhdGUgZGVidWcgaW5mb3MgaW4gJGRlYnVnX3Jv b3QuCi0rICAgIGdkYl90ZXN0ICJzZXQgZGVidWctZmlsZS1kaXJlY3RvcnkiCi0rICAgIGdkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotKyAgICBnZGJfbG9hZCAkZmlsZQotKwot KyAgICByZWFjaCAiZGxfbWFpbiIgInJ1biBzZWd2IgotKwotKyAgICBnZGJfdGVzdCAiYnQiICIj MCArXFteXHJcblxdKlxcbWRsX21haW5cXE0uKiIgImRsIGJ0IgotKwotKyAgICBpZiAkaWZtYWlu IHsKLSsJcmVhY2ggIm1haW4iIGNvbnRpbnVlCi0rCi0rCXJlYWNoICJsaWJmdW5jIiBjb250aW51 ZQotKwotKwkjIENoZWNrIHRoZXJlIGlzIG5vICJhcmdjPWNhbid0IGNvbXB1dGUgQ0ZBIGZvciB0 aGlzIGZyYW1lIi4KLSsJZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG1saWJmdW5jXFxN XFteXHJcblxdKlxyXG4jMSArXFteXHJcblxdKlxcbW1haW4gXFwoKGFyZ2M9MiwuKik/XFwpLioi ICJtYWluIGJ0IgotKwotKwl0ZXN0X2NvcmUgJGZpbGUKLSsKLSsJdGVzdF9hdHRhY2ggJGZpbGUK LSsgICAgfQotKwotKyAgICBpZiAhJHRyeW5vc3ltIHsKLSsJcmV0dXJuCi0rICAgIH0KLSsKLSsg ICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQgb2xkX2xkcHJlZml4ICRwZl9wcmVmaXgKLSsg ICAgbGFwcGVuZCBwZl9wcmVmaXggInN5bWJvbC1sZXNzOiIKLSsKLSsgICAgIyBUZXN0IGFsc28g YGV4ZWMtZmlsZSctY29tbWFuZCBsb2FkZWQgJEZJTEUgLSB0aGVyZWZvcmUgd2l0aG91dCBzeW1i b2xzLgotKyAgICAjIFNZTUJPTF9PQkpGSUxFIGlzIG5vdCBhdmFpbGFibGUgYW5kIG9ubHkgRVhF Q19CRkQgbXVzdCBiZSB1c2VkLgotKwotKyAgICBnZGJfZXhpdAotKyAgICBnZGJfc3RhcnQKLSsg ICAgIyBDbGVhciBpdCB0byBuZXZlciBmaW5kIGFueSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvcyBpbiAk ZGVidWdfcm9vdC4KLSsgICAgZ2RiX3Rlc3QgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSIKLSsg ICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rCi0rICAgICMgVGVzdCBu byAoZXJyb3IpIG1lc3NhZ2UgaGFzIGJlZW4gcHJpbnRlZCBieSBgZXhlYy1maWxlJy4KLSsgICAg c2V0IGVzY2FwZWRmaWxlIFtzdHJpbmdfdG9fcmVnZXhwICRmaWxlXQotKyAgICBnZGJfdGVzdCAi ZXhlYy1maWxlICRmaWxlIiAiZXhlYy1maWxlICRlc2NhcGVkZmlsZSIgImxvYWQiCi0rCi0rICAg IGlmICRpZm1haW4gewotKwlyZWFjaCAiZGxfbWFpbiIgcnVuCi0rCi0rCXNldCB0ZXN0ICJpbmZv IGZpbGVzIgotKwlzZXQgZW50cnlub2hleCAiIgotKwlnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAk dGVzdCB7Ci0rCSAgICAtcmUgIlxyXG5cW1x0IFxdKkVudHJ5IHBvaW50OlxbXHQgXF0qMHgoXFsw LTlhLWZcXSspXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotKwkJc2V0IGVudHJ5bm9oZXggJGV4cGVj dF9vdXQoMSxzdHJpbmcpIAotKwkJcGFzcyAkdGVzdAotKwkgICAgfQotKwl9Ci0rCWlmIHskZW50 cnlub2hleCAhPSAiIn0gewotKwkgICAgZ2RiX3Rlc3QgImJyZWFrICoweCRlbnRyeW5vaGV4IiAi IiAiYnJlYWsgYXQgZW50cnkgcG9pbnQiCi0rCSAgICBnZGJfdGVzdCAiY29udGludWUiICJcclxu QnJlYWtwb2ludCBcWzAtOVxdKywgMHgwKiRlbnRyeW5vaGV4IGluIC4qIiAiZW50cnkgcG9pbnQg cmVhY2hlZCIKLSsJfQotKyAgICB9IGVsc2UgewotKwkjIFRoZXJlIGlzIG5vIHN5bWJvbCB0byBi cmVhayBhdCBsZC5zby4gIE1vcmVvdmVyIGl0IGNhbiBleGl0IHdpdGggYW4KLSsJIyBlcnJvciBj b2RlLgotKwlnZGJfdGVzdCAicnVuIiAiUHJvZ3JhbSBleGl0ZWQgKG5vcm1hbGx5fHdpdGggY29k ZSBcWzAtOVxdKylcXC4iICJsZC5zbyBleGl0IgotKyAgICB9Ci0rCi0rICAgIHNldCBwZl9wcmVm aXggJG9sZF9sZHByZWZpeAotK30KLSsKLSsjIENyZWF0ZSBzZXBhcmF0ZSBiaW5hcmllcyBmb3Ig ZWFjaCB0ZXN0Y2FzZSAtIHRvIG1ha2UgdGhlIHBvc3NpYmxlIHJlcG9ydGVkCi0rIyBwcm9ibGVt IHJlcHJvZHVjaWJsZSBhZnRlciB0aGUgd2hvbGUgdGVzdCBydW4gZmluaXNoZXMuCi0rCi0rc2V0 IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4Ci0rZm9yZWFjaCBsZHByZWxpbmsge05PIFlFU30gewot KyAgICBmb3JlYWNoIGxkc2VwZGVidWcge05PIElOIFNFUH0gewotKwkjIFNraXAgcnVubmluZyB0 aGUgbGRzZXBkZWJ1ZyB0ZXN0IGlmIHdlIGRvIG5vdCBoYXZlIHN5c3RlbSBzZXBhcmF0ZQotKwkj IGRlYnVnIGluZm8gYXZhaWxhYmxlLgotKwlpZiB7JGludGVycF9zeXN0ZW1fZGVidWcgPT0gIiIg JiYgJGxkc2VwZGVidWcgPT0gIlNFUCJ9IHsKLSsJICAgIGNvbnRpbnVlCi0rCX0KLSsKLSsJc2V0 IGxkbmFtZSAiTERwcmVsaW5rJHtsZHByZWxpbmt9ZGVidWcke2xkc2VwZGVidWd9IgotKwlzZXQg aW50ZXJwICRiaW5wcmVmaXgtJGxkbmFtZQotKwotKwkjIHByZWxpbmsgbmVlZHMgdG8gYWx3YXlz IHByZWxpbmsgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdG8gZG8gYW55IGZpbGUKLSsJIyBtb2RpZmlj YXRpb25zIG9mIGl0cyBmaWxlcy4gIGxkLnNvIGFsc28gbmVlZHMgYWxsIHRoZSBkZXBlbmRlbmNp ZXMgdG8KLSsJIyBiZSBwcmVsaW5rZWQgdG8gb21pdCB0aGUgcmVsb2NhdGlvbiBwcm9jZXNzLiAg SW4tbWVtb3J5IGZpbGUgb2Zmc2V0cwotKwkjIGFyZSBub3QgZGVwZW5kZW50IHdoZXRoZXIgbGQu c28gd2VudCB0aGUgcHJlbGluayB3YXkgb3IgdGhyb3VnaCB0aGUKLSsJIyByZWxvY2F0aW9uIHBy b2Nlc3MuCi0rCSMKLSsJIyBGb3IgR0RCIHdlIGFyZSBub3QgaW50ZXJlc3RlZCB3aGV0aGVyIHBy ZWxpbmsgc3VjY2VlZHMgYXMgaXQgaXMKLSsJIyB0cmFuc3BhcmVudCB0byBHREIuICBHREIgaXMg YmVpbmcgdGVzdGVkIGZvciBkaWZmZXJlbmNlcyBvZiBmaWxlCi0rCSMgb2Zmc2V0cyB2cy4gaW4t bWVtb3J5IG9mZnNldHMuICBTbyB3ZSBoYXZlIHRvIHByZWxpbmsgZXZlbiBsZC5zbyBmb3IKLSsJ IyB0aGUgQklOIG1vZGlmaWNhdGlvbiB0byBoYXBwZW4gYnV0IHdlIG5lZWQgdG8gcmVzdG9yZSB0 aGUgb3JpZ2luYWwKLSsJIyBwb3NzaWJseSB1bnByZWxpbmtlZCBsZC5zbyB0byB0ZXN0IGFsbCB0 aGUgY29tYmluYXRpb25zIGZvciBHREIuCi0rCXNldCBpbnRlcnBfc2F2ZWQgJHtpbnRlcnB9LXNh dmVkCi0rCi0rCXNldCBwZl9wcmVmaXggJG9sZF9sZHByZWZpeAotKwlsYXBwZW5kIHBmX3ByZWZp eCAiJGxkbmFtZToiCi0rCi0rCWlmIHskbGRzZXBkZWJ1ZyA9PSAiTk8ifSB7Ci0rCSAgICBjb3B5 ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKLSsJICAgICMgTmV2ZXIgY2FsbCBzdHJpcC1kZWJ1ZyBi ZWZvcmUgdW5wcmVsaW5rOgotKwkgICAgIyBwcmVsaW5rOiAuLi46IFNlY3Rpb24gLm5vdGUuZ251 LmJ1aWxkLWlkIGNyZWF0ZWQgYWZ0ZXIgcHJlbGlua2luZwotKwkgICAgaWYgIVtwcmVsaW5rTk8g JGludGVycF0gewotKwkJY29udGludWUKLSsJICAgIH0KLSsJICAgIHN0cmlwX2RlYnVnICRpbnRl cnAKLSsJfSBlbHNlaWYgeyRsZHNlcGRlYnVnID09ICJJTiIgJiYgJGludGVycF9zeXN0ZW1fZGVi dWcgPT0gIiJ9IHsKLSsJICAgIGNvcHkgJGludGVycF9zeXN0ZW0gJGludGVycAotKwl9IGVsc2Vp ZiB7JGxkc2VwZGVidWcgPT0gIklOIiAmJiAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyAhPSAiIn0gewot KwkgICAgY29weSAkaW50ZXJwX3N5c3RlbSAkaW50ZXJwCi0rCSAgICBjb3B5ICRpbnRlcnBfc3lz dGVtX2RlYnVnICIke2ludGVycH0uZGVidWciCi0rCSAgICAjIGV1LXVuc3RyaXA6IERXQVJGIGRh dGEgaW4gJy4uLicgbm90IGFkanVzdGVkIGZvciBwcmVsaW5raW5nIGJpYXM7IGNvbnNpZGVyIHBy ZWxpbmsgLXUKLSsJICAgIGlmIHshW3ByZWxpbmtOTyAkaW50ZXJwXSB8fCAhW3ByZWxpbmtOTyAi JHtpbnRlcnB9LmRlYnVnIl19IHsKLSsJCWNvbnRpbnVlCi0rCSAgICB9Ci0rCSAgICBzZXQgdGVz dCAiZXUtdW5zdHJpcCB1bnByZWxpbmtlZDpbZmlsZSB0YWlsICRpbnRlcnBfc3lzdGVtXSArIFtm aWxlIHRhaWwgJGludGVycF9zeXN0ZW1fZGVidWddIHRvIFtmaWxlIHRhaWwgJGludGVycF0iCi0r CSAgICBzZXQgY29tbWFuZCAiZXhlYyBldS11bnN0cmlwIC1vICRpbnRlcnAgJGludGVycCAke2lu dGVycH0uZGVidWciCi0rCSAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQgaXMgJGNvbW1hbmQiCi0r CSAgICBpZiBbY2F0Y2ggJGNvbW1hbmRdIHsKLSsJCXNldHVwX3hmYWlsICotKi0qCi0rCQlmYWls ICR0ZXN0Ci0rCQljb250aW51ZQotKwkgICAgfSBlbHNlIHsKLSsJCXBhc3MgJHRlc3QKLSsJICAg IH0KLSsJfSBlbHNlaWYgeyRsZHNlcGRlYnVnID09ICJTRVAiICYmICRpbnRlcnBfc3lzdGVtX2Rl YnVnID09ICIifSB7Ci0rCSAgICBjb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKLSsJICAgICMg ZXUtdW5zdHJpcDogRFdBUkYgZGF0YSBpbiAnLi4uJyBub3QgYWRqdXN0ZWQgZm9yIHByZWxpbmtp bmcgYmlhczsgY29uc2lkZXIgcHJlbGluayAtdQotKwkgICAgaWYgIVtwcmVsaW5rTk8gJGludGVy cF0gewotKwkJY29udGludWUKLSsJICAgIH0KLSsJICAgIGdkYl9nbnVfc3RyaXBfZGVidWcgJGlu dGVycAotKwl9IGVsc2VpZiB7JGxkc2VwZGVidWcgPT0gIlNFUCIgJiYgJGludGVycF9zeXN0ZW1f ZGVidWcgIT0gIiJ9IHsKLSsJICAgIGNvcHkgJGludGVycF9zeXN0ZW0gJGludGVycAotKwkgICAg Y29weSAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyAiJHtpbnRlcnB9LmRlYnVnIgotKwl9Ci0rCi0rCWlm IHskbGRzZXBkZWJ1ZyA9PSAiU0VQIn0gewotKwkgICAgaWYgIVtwcmVsaW5rTk8gIiR7aW50ZXJw fS5kZWJ1ZyJdIHsKLSsJCWNvbnRpbnVlCi0rCSAgICB9Ci0rCX0gZWxzZSB7Ci0rCSAgICBmaWxl IGRlbGV0ZSAiJHtpbnRlcnB9LmRlYnVnIgotKwl9Ci0rCi0rCWlmICFbcHJlbGluayRsZHByZWxp bmsgJGludGVycF0gewotKwkgICAgY29udGludWUKLSsJfQotKwl0ZXN0X2xkICRpbnRlcnAgMCBb ZXhwciB7JGxkc2VwZGVidWcgPT0gIk5PIn1dCi0rCi0rCWlmICFbY29weSAkaW50ZXJwICRpbnRl cnBfc2F2ZWRdIHsKLSsJICAgIGNvbnRpbnVlCi0rCX0KLSsJc2V0IG9sZF9iaW5wcmVmaXggJHBm X3ByZWZpeAotKwlmb3JlYWNoIGJpbnByZWxpbmsge05PIFlFU30gewotKwkgICAgZm9yZWFjaCBi aW5zZXBkZWJ1ZyB7Tk8gSU4gU0VQfSB7Ci0rCQlmb3JlYWNoIGJpbnBpZSB7Tk8gWUVTfSB7Ci0r CQkgICAgIyBUaGlzIGNvbWJpbmF0aW9uIGlzIG5vdCBwb3NzaWJsZSwgbm9uLVBJRSAoZml4ZWQg YWRkcmVzcykKLSsJCSAgICAjIGJpbmFyeSBjYW5ub3QgYmUgcHJlbGlua2VkIHRvIGFueSAob3Ro ZXIpIGFkZHJlc3MuCi0rCQkgICAgaWYgeyRiaW5wcmVsaW5rID09ICJZRVMiICYmICRiaW5waWUg PT0gIk5PIn0gewotKwkJCWNvbnRpbnVlCi0rCQkgICAgfQotKwotKwkJICAgIHNldCBiaW5uYW1l ICJCSU5wcmVsaW5rJHtiaW5wcmVsaW5rfWRlYnVnJHtiaW5zZXBkZWJ1Z31waWUke2JpbnBpZX0i Ci0rCQkgICAgc2V0IGV4ZWMgJGJpbnByZWZpeC0kYmlubmFtZQotKwkJICAgIHNldCBkaXIgJHtl eGVjfS5kCi0rCi0rCQkgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2JpbnByZWZpeAotKwkJICAgIGxh cHBlbmQgcGZfcHJlZml4ICIkYmlubmFtZToiCi0rCi0rCQkgICAgc2V0IG9wdHMgImFkZGl0aW9u YWxfZmxhZ3M9LVdsLC0tZHluYW1pYy1saW5rZXIsJGludGVycCwtcnBhdGgsJGRpciIKLSsJCSAg ICBsYXBwZW5kIG9wdHMgImFkZGl0aW9uYWxfZmxhZ3M9LVdsLCRiaW5maWxlX2xpYiwtcnBhdGgs W2ZpbGUgZGlybmFtZSAkYmluZmlsZV9saWJdIgotKwkJICAgIGlmIHskYmluc2VwZGVidWcgIT0g Ik5PIn0gewotKwkJCWxhcHBlbmQgb3B0cyB7ZGVidWd9Ci0rCQkgICAgfQotKwkJICAgIGlmIHsk YmlucGllID09ICJZRVMifSB7Ci0rCQkJbGFwcGVuZCBvcHRzIHthZGRpdGlvbmFsX2ZsYWdzPS1m UElFIC1waWV9Ci0rCQkgICAgfQotKwkJICAgIGlmIHtbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3R9 LmV4cCBbZmlsZSB0YWlsICRleGVjXSAkc3JjZmlsZSAkb3B0c10gPT0gLTF9IHsKLSsJCQljb250 aW51ZTsKLSsJCSAgICB9Ci0rCQkgICAgaWYgeyRiaW5zZXBkZWJ1ZyA9PSAiU0VQIn0gewotKwkJ CWdkYl9nbnVfc3RyaXBfZGVidWcgJGV4ZWMKLSsJCQkjIEp1c3QgYSBzYW5pdHkgY2hlY2suICBB cyBnZGJfZ251X3N0cmlwX2RlYnVnIHVzZXMgdGhlCi0rCQkJIyAiW2ZpbGUgZGlybmFtZSAkZXhl Y10vLmRlYnVnL1tmaWxlIHRhaWwgJGV4ZWNdLmRlYnVnIgotKwkJCSMgdmFyaWFudCBkZWxldGUg dGhlIGhpZ2hlci1wcmlvcml0eSBleGVjLmRlYnVnIGZpbGUuCi0rCQkJZmlsZSBkZWxldGUgIiRl eGVjLmRlYnVnIgotKwkJICAgIH0KLSsKLSsJCSAgICAjIFN1cHBseSBhIHNlbGYtc3VmZmljZW50 IGRpcmVjdG9yeSAkZGlyIHdpdGggdGhlIHJlcXVpcmVkCi0rCQkgICAgIyBsaWJyYXJpZXMuICBU byBtYWtlIGFuIGV4ZWN1dGFibGUgcHJvcGVybHkgcHJlbGlua2VkIGFsbAotKwkJICAgICMgaXRz IGRlcGVuZGVuY2llcyBvbiBsaWJyYXJpZXMgbXVzdCBiZSBhbHNvIHByZWxpbmtlZC4gIElmCi0r CQkgICAgIyBzb21lIG9mIHRoZSBzeXN0ZW0gbGlicmFyaWVzIGlzIGN1cnJlbnRseSBub3QgcHJl bGlua2VkCi0rCQkgICAgIyB3ZSBoYXZlIG5vIHJpZ2h0IHRvIHByZWxpbmsgKG1vZGlmeSBpdCkg YXQgaXRzIGN1cnJlbnQKLSsJCSAgICAjIHN5c3RlbSBwbGFjZS4KLSsKLSsJCSAgICBmaWxlIGRl bGV0ZSAtZm9yY2UgJGRpcgotKwkJICAgIGZpbGUgbWtkaXIgJGRpcgotKwotKwkJICAgIHNldCBj b21tYW5kICJsZGQgJGV4ZWMiCi0rCQkgICAgc2V0IHJlc3VsdCBbY2F0Y2ggImV4ZWMgJGNvbW1h bmQiIG91dHB1dF0KLSsJCSAgICB2ZXJib3NlIC1sb2cgInJlc3VsdCBvZiAkY29tbWFuZCBpcyAk cmVzdWx0IgotKwkJICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IG9mICRjb21tYW5kIGlzICRvdXRw dXQiCi0rCQkgICAgaWYgeyRyZXN1bHQgIT0gMCB8fCAkb3V0cHV0ID09ICIifSB7Ci0rCQkJZmFp bCAkY29tbWFuZAotKwkJICAgIH0gZWxzZSB7Ci0rCQkJcGFzcyAkY29tbWFuZAotKwkJICAgIH0K LSsKLSsJCSAgICAjIGdkYiB0ZXN0c3VpdGUgd2lsbCBwdXQgdGhlcmUgYWxzbyBuZWVkbGVzcyAt bG0uCi0rCQkgICAgc2V0IHRlc3QgIiRjb21tYW5kIG91dHB1dCBjb250YWlucyBsaWJjIgotKwkJ ICAgIHNldCBsaWJjIFtyZWdleHAgLWFsbCAtaW5saW5lIC1saW5lIHteLiogPT4gKC9bXiBdKyku KiR9ICRvdXRwdXRdCi0rCQkgICAgaWYge1tsbGVuZ3RoICRsaWJjXSA9PSAwfSB7Ci0rCQkJZmFp bCAkdGVzdAotKwkJICAgIH0gZWxzZSB7Ci0rCQkJcGFzcyAkdGVzdAotKwkJICAgIH0KLSsKLSsJ CSAgICBzZXQgZGVzdHMge30KLSsJCSAgICBmb3Ige3NldCBpIDF9IHskaSA8IFtsbGVuZ3RoICRs aWJjXX0ge2luY3IgaSAyfSB7Ci0rCQkJc2V0IGFic3BhdGggW2xpbmRleCAkbGliYyAkaV0KLSsJ CQlzZXQgZGVzdCAiJGRpci9bZmlsZSB0YWlsICRhYnNwYXRoXSIKLSsJCQljb3B5ICRhYnNwYXRo ICRkZXN0Ci0rCQkJbGFwcGVuZCBkZXN0cyAkZGVzdAotKwkJICAgIH0KLSsKLSsJCSAgICBpZiB7 W3ByZWxpbmskYmlucHJlbGluayAiLS1keW5hbWljLWxpbmtlcj0kaW50ZXJwIC0tbGQtbGlicmFy eS1wYXRoPSRkaXIgJGV4ZWMgJGludGVycCBbY29uY2F0ICRkZXN0c10iICRleGVjXQotKwkJICAg ICAgICAmJiBbY29weSAkaW50ZXJwX3NhdmVkICRpbnRlcnBdfSB7Ci0rCQkJdGVzdF9sZCAkZXhl YyAxIFtleHByIHskYmluc2VwZGVidWcgPT0gIk5PIn1dCi0rCQkgICAgfQotKwkJfQotKwkgICAg fQotKwl9Ci0rCi0rCWZpbGUgZGVsZXRlICRpbnRlcnBfc2F2ZWQKLSsgICAgfQotK30KLStzZXQg cGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2NvcmVmaWxlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCi1p bmRleCBhMTAwM2UxLi41NDdhODk4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9jb3JlZmlsZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhw Ci1AQCAtNDIsNjUgKzQyLDEyIEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7 Ci0gICAgIHJldHVybiAtMTsKLSB9Ci0gCi0tIyBDcmVhdGUgYSBjb3JlIGZpbGUgbmFtZWQgImNv cmVmaWxlIiByYXRoZXIgdGhhbiBqdXN0ICJjb3JlIiwgdG8KLS0jIGF2b2lkIHByb2JsZW1zIHdp dGggc3lzIGFkbWluIHR5cGVzIHRoYXQgbGlrZSB0byByZWd1bGFybHkgcHJ1bmUgYWxsCi0tIyBm aWxlcyBuYW1lZCAiY29yZSIgZnJvbSB0aGUgc3lzdGVtLgotLSMKLS0jIEFyYml0cmFyaWx5IHRy eSBzZXR0aW5nIHRoZSBjb3JlIHNpemUgbGltaXQgdG8gInVubGltaXRlZCIgc2luY2UKLS0jIHRo aXMgZG9lcyBub3QgaHVydCBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBjb21tYW5kIGRvZXMgbm90IHdv cmsgYW5kCi0tIyBhbGxvd3MgdXMgdG8gZ2VuZXJhdGUgYSBjb3JlIG9uIHN5c3RlbXMgd2hlcmUg aXQgZG9lcy4KLS0jCi0tIyBTb21lIHN5c3RlbXMgYXBwZW5kICJjb3JlIiB0byB0aGUgbmFtZSBv ZiB0aGUgcHJvZ3JhbTsgb3RoZXJzIGFwcGVuZAotLSMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0g dG8gImNvcmUiOyBzdGlsbCBvdGhlcnMgKGxpa2UgTGludXgsIGFzIG9mCi0tIyBNYXkgMjAwMykg Y3JlYXRlIGNvcmVzIG5hbWVkICJjb3JlLlBJRCIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHdlCi0t IyBjb3VsZCBoYXZlIG1hbnkgY29yZSBmaWxlcyBseWluZyBhcm91bmQsIGFuZCBpdCBtYXkgYmUg ZGlmZmljdWx0IHRvCi0tIyB0ZWxsIHdoaWNoIG9uZSBpcyBvdXJzLCBzbyBsZXQncyBydW4gdGhl IHByb2dyYW0gaW4gYSBzdWJkaXJlY3RvcnkuCi0tc2V0IGZvdW5kIDAKLS1zZXQgY29yZWRpciAi JHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3JlZGlyLltnZXRwaWRdIgotLWZpbGUgbWtkaXIgJGNvcmVk aXIKLS1jYXRjaCAic3lzdGVtIFwiKGNkICR7Y29yZWRpcn07IHVsaW1pdCAtYyB1bmxpbWl0ZWQ7 ICR7YmluZmlsZX07IHRydWUpID4vZGV2L251bGwgMj4mMVwiIgotLSMgICAgICByZW1vdGVfZXhl YyBob3N0ICIke2JpbmZpbGV9IgotLWZvcmVhY2ggaSAiJHtjb3JlZGlyfS9jb3JlICR7Y29yZWRp cn0vY29yZS5jb3JlbWFrZXIuYyAke2JpbmZpbGV9LmNvcmUiIHsKLS0gICAgaWYgW3JlbW90ZV9m aWxlIGJ1aWxkIGV4aXN0cyAkaV0gewotLQlyZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgJHtvYmpk aXJ9LyR7c3ViZGlyfS9jb3JlZmlsZSIKLS0Jc2V0IGZvdW5kIDEKLS0gICAgfQotLX0KLS0jIENo ZWNrIGZvciAiY29yZS5QSUQiLgotLWlmIHsgJGZvdW5kID09IDAgfSB7Ci0tICAgIHNldCBuYW1l cyBbZ2xvYiAtbm9jb21wbGFpbiAtZGlyZWN0b3J5ICRjb3JlZGlyIGNvcmUuKl0KLS0gICAgaWYg e1tsbGVuZ3RoICRuYW1lc10gPT0gMX0gewotLSAgICAgICAgc2V0IGNvcmVmaWxlIFtmaWxlIGpv aW4gJGNvcmVkaXIgW2xpbmRleCAkbmFtZXMgMF1dCi0tICAgICAgICByZW1vdGVfZXhlYyBidWls ZCAibXYgJGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZWZpbGUiCi0tICAgICAgICBz ZXQgZm91bmQgMQotLSAgICB9Ci0tfQotLWlmIHsgJGZvdW5kID09IDAgfSB7Ci0tICAgICMgVGhl IGJyYWluZGFtYWdlZCBIUFVYIHNoZWxsIHF1aXRzIGFmdGVyIHRoZSB1bGltaXQgLWMgYWJvdmUK LS0gICAgIyB3aXRob3V0IGV4ZWN1dGluZyAke2JpbmZpbGV9LiAgU28gd2UgdHJ5IGFnYWluIHdp dGhvdXQgdGhlCi0tICAgICMgdWxpbWl0IGhlcmUgaWYgd2UgZGlkbid0IGZpbmQgYSBjb3JlIGZp bGUgYWJvdmUuCi0tICAgICMgT2gsIEkgc2hvdWxkIG1lbnRpb24gdGhhdCBhbnkgImJyYWluZGFt YWdlZCIgbm9uLVVuaXggc3lzdGVtIGhhcwotLSAgICAjIHRoZSBzYW1lIHByb2JsZW0uIEkgbGlr ZSB0aGUgY2QgYml0IHRvbywgaXQncyByZWFsbHkgbmVhdCduIHN0dWZmLgotLSAgICBjYXRjaCAi c3lzdGVtIFwiKGNkICR7b2JqZGlyfS8ke3N1YmRpcn07ICR7YmluZmlsZX07IHRydWUpID4vZGV2 L251bGwgMj4mMVwiIgotLSAgICBmb3JlYWNoIGkgIiR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZSAk e29iamRpcn0vJHtzdWJkaXJ9L2NvcmUuY29yZW1ha2VyLmMgJHtiaW5maWxlfS5jb3JlIiB7Ci0t CWlmIFtyZW1vdGVfZmlsZSBidWlsZCBleGlzdHMgJGldIHsKLS0JICAgIHJlbW90ZV9leGVjIGJ1 aWxkICJtdiAkaSAke29iamRpcn0vJHtzdWJkaXJ9L2NvcmVmaWxlIgotLQkgICAgc2V0IGZvdW5k IDEKLS0JfQotLSAgICB9Ci0rc2V0IGNvcmVmaWxlIFtjb3JlX2ZpbmQgJGJpbmZpbGUge2NvcmVt bWFwLmRhdGF9XQotK2lmIHskY29yZWZpbGUgPT0gIiJ9IHsKLSsgICAgcmV0dXJuIDA7Ci0gfQot IAotLSMgVHJ5IHRvIGNsZWFuIHVwIGFmdGVyIG91cnNlbHZlcy4gCi0tcmVtb3RlX2ZpbGUgYnVp bGQgZGVsZXRlIFtmaWxlIGpvaW4gJGNvcmVkaXIgY29yZW1tYXAuZGF0YV0KLS1yZW1vdGVfZXhl YyBidWlsZCAicm1kaXIgJGNvcmVkaXIiCi0tICAgIAotLWlmIHsgJGZvdW5kID09IDAgIH0gewot LSAgICB3YXJuaW5nICJjYW4ndCBnZW5lcmF0ZSBhIGNvcmUgZmlsZSAtIGNvcmUgdGVzdHMgc3Vw cHJlc3NlZCAtIGNoZWNrIHVsaW1pdCAtYyIKLS0gICAgcmV0dXJuIDAKLS19Ci0tCi0tIwotLSMg VGVzdCB0aGF0IHdlIGNhbiBzaW1wbHkgc3RhcnR1cCB3aXRoIGEgIi1jb3JlPWNvcmVmaWxlIiBj b21tYW5kIGxpbmUgYXJnCi0rIyBUZXN0IHRoYXQgd2UgY2FuIHNpbXBseSBzdGFydHVwIHdpdGgg YSAiLWNvcmU9JGNvcmVmaWxlIiBjb21tYW5kIGxpbmUgYXJnCi0gIyBhbmQgcmVjb2duaXplIHRo YXQgdGhlIGNvcmUgZmlsZSBpcyBhIHZhbGlkLCB1c2FibGUgY29yZSBmaWxlLgotICMgVG8gZG8g dGhpcywgd2UgbXVzdCBzaHV0ZG93biB0aGUgY3VycmVudGx5IHJ1bm5pbmcgZ2RiIGFuZCByZXN0 YXJ0Ci0gIyB3aXRoIHRoZSAtY29yZSBhcmdzLiAgV2UgY2FuJ3QgdXNlIGdkYl9zdGFydCBiZWNh dXNlIGl0IGxvb2tzIGZvcgotQEAgLTExNCwyNyArNjEsMjcgQEAgaWYgeyAkZm91bmQgPT0gMCAg fSB7Ci0gCi0gZ2RiX2V4aXQKLSBpZiAkdmVyYm9zZT4xIHRoZW4gewotLSAgICBzZW5kX3VzZXIg IlNwYXduaW5nICRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAtY29yZT0kb2JqZGly LyRzdWJkaXIvY29yZWZpbGVcbiIKLSsgICAgc2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJTlRF Uk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JGNvcmVmaWxlXG4iCi0gfQotIAotIHNldCBv bGR0aW1lb3V0ICR0aW1lb3V0Ci0gc2V0IHRpbWVvdXQgW2V4cHIgIiR0aW1lb3V0ICsgNjAiXQot IHZlcmJvc2UgIlRpbWVvdXQgaXMgbm93ICR0aW1lb3V0IHNlY29uZHMiIDIKLS1ldmFsICJzcGF3 biAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JG9iamRpci8kc3ViZGly L2NvcmVmaWxlIgotK2V2YWwgInNwYXduICRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFH UyAtY29yZT0kY29yZWZpbGUiCi0gZXhwZWN0IHsKLSAgICAgLXJlICJDb3VsZG4ndCBmaW5kIC4q IHJlZ2lzdGVycyBpbiBjb3JlIGZpbGUuKiRnZGJfcHJvbXB0ICQiIHsKLS0gICAgICAgIGZhaWwg ImFyZ3M6IC1jb3JlPWNvcmVmaWxlIChjb3VsZG4ndCBmaW5kIHJlZ3MpIgotKyAgICAgICAgZmFp bCAiYXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIChjb3VsZG4ndCBmaW5kIHJlZ3Mp IgotICAgICB9Ci0gICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qY29yZW1ha2VyLipc clxuXCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0tCXBhc3MgImFyZ3M6IC1jb3Jl PWNvcmVmaWxlIgotKwlwYXNzICJhcmdzOiAtY29yZT1bZmlsZSB0YWlsICRjb3JlZmlsZV0iCi0g ICAgIH0KLSAgICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuXCMwICAuKlwoXCku KlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0tCXBhc3MgImFyZ3M6IC1jb3JlPWNvcmVmaWxlICh3aXRo IGJhZCBwcm9ncmFtIG5hbWUpIgotKwlwYXNzICJhcmdzOiAtY29yZT1bZmlsZSB0YWlsICRjb3Jl ZmlsZV0gKHdpdGggYmFkIHByb2dyYW0gbmFtZSkiCi0gICAgIH0KLSAgICAgLXJlICIuKnJlZ2lz dGVycyBmcm9tIGNvcmUgZmlsZTogRmlsZSBpbiB3cm9uZyBmb3JtYXQuKiAkIiB7Ci0tCWZhaWwg ImFyZ3M6IC1jb3JlPWNvcmVmaWxlIChjb3VsZCBub3QgcmVhZCByZWdpc3RlcnMgZnJvbSBjb3Jl IGZpbGUpIgotKwlmYWlsICJhcmdzOiAtY29yZT1bZmlsZSB0YWlsICRjb3JlZmlsZV0gKGNvdWxk IG5vdCByZWFkIHJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZSkiCi0gICAgIH0KLS0gICAgLXJlICIu KiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogLWNvcmU9Y29yZWZpbGUiIH0KLSsgICAgLXJl ICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZp bGVdIiB9Ci0gICAgIHRpbWVvdXQgCQl7IGZhaWwgIih0aW1lb3V0KSBzdGFydGluZyB3aXRoIC1j b3JlIiB9Ci0gfQotIAotQEAgLTE0NywyMiArOTQsMjIgQEAgZXhwZWN0IHsKLSBjbG9zZTsKLSAK LSBpZiAkdmVyYm9zZT4xIHRoZW4gewotLSAgICBzZW5kX3VzZXIgIlNwYXduaW5nICRHREIgJElO VEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29yZT0kb2JqZGlyLyRzdWJkaXIv Y29yZWZpbGVcbiIKLSsgICAgc2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJTlRFUk5BTF9HREJG TEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9JGNvcmVmaWxlXG4iCi0gfQotIAotIAotLWV2 YWwgInNwYXduICRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29y ZT0kb2JqZGlyLyRzdWJkaXIvY29yZWZpbGUiOwotK2V2YWwgInNwYXduICRHREIgJElOVEVSTkFM X0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29yZT0kY29yZWZpbGUiOwotIGV4cGVjdCB7 Ci0gICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qY29yZW1ha2VyLipcclxuXCMwICAu KlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0tCXBhc3MgImFyZ3M6IGV4ZWNmaWxlIC1jb3Jl PWNvcmVmaWxlIgotKwlwYXNzICJhcmdzOiBleGVjZmlsZSAtY29yZT1bZmlsZSB0YWlsICRjb3Jl ZmlsZV0iCi0gICAgIH0KLSAgICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuXCMw ICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIgkgewotLQlwYXNzICJhcmdzOiBleGVjZmlsZSAt Y29yZT1jb3JlZmlsZSAod2l0aCBiYWQgcHJvZ3JhbSBuYW1lKSIKLSsJcGFzcyAiYXJnczogZXhl Y2ZpbGUgLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdICh3aXRoIGJhZCBwcm9ncmFtIG5hbWUp IgotICAgICB9Ci0gICAgIC1yZSAiLipyZWdpc3RlcnMgZnJvbSBjb3JlIGZpbGU6IEZpbGUgaW4g d3JvbmcgZm9ybWF0LiogJCIgewotLQlmYWlsICJhcmdzOiBleGVjZmlsZSAtY29yZT1jb3JlZmls ZSAoY291bGQgbm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIKLSsJZmFpbCAiYXJn czogZXhlY2ZpbGUgLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIChjb3VsZCBub3QgcmVhZCBy ZWdpc3RlcnMgZnJvbSBjb3JlIGZpbGUpIgotICAgICB9Ci0tICAgIC1yZSAiLiokZ2RiX3Byb21w dCAkIgl7IGZhaWwgImFyZ3M6IGV4ZWNmaWxlIC1jb3JlPWNvcmVmaWxlIiB9Ci0rICAgIC1yZSAi LiokZ2RiX3Byb21wdCAkIgl7IGZhaWwgImFyZ3M6IGV4ZWNmaWxlIC1jb3JlPVtmaWxlIHRhaWwg JGNvcmVmaWxlXSIgfQotICAgICB0aW1lb3V0IAkJeyBmYWlsICIodGltZW91dCkgc3RhcnRpbmcg d2l0aCAtY29yZSIgfQotIH0KLSBzZXQgdGltZW91dCAkb2xkdGltZW91dAotQEAgLTE3OCw3ICsx MjUsNyBAQCBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBUZXN0IGJhc2ljIGNvcmVmaWxlIHJl Y29nbml0aW9uIHZpYSBjb3JlLWZpbGUgY29tbWFuZC4KLSAKLS1zZW5kX2dkYiAiY29yZS1maWxl ICRvYmpkaXIvJHN1YmRpci9jb3JlZmlsZVxuIgotK3NlbmRfZ2RiICJjb3JlLWZpbGUgJGNvcmVm aWxlXG4iCi0gZ2RiX2V4cGVjdCB7Ci0gICAgIC1yZSAiLiogcHJvZ3JhbSBpcyBiZWluZyBkZWJ1 Z2dlZCBhbHJlYWR5Lip5IG9yIG4uICQiIHsKLSAJIyBnZGJfbG9hZCBtYXkgY29ubmVjdCB1cyB0 byBhIGdkYnNlcnZlci4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1z dXBwb3J0LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1zdXBwb3J0LmMKLWRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNjM3NjhiOS4uMDAwMDAwMAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5jCi0rKysgL2Rldi9udWxsCi1AQCAtMSwzNCArMCww IEBACi0tLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LS0KLS0gICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0K LS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS0qLwotLQotLSNpbmNs dWRlIDxzdGRpby5oPgotLQotLXZvaWQKLS1mMSAoaW50IGEpCi0tewotLSAgcHJpbnRmICgiYSA9 ICVkXG4iLCBhKTsKLS19Ci0tCi0taW50Ci0tbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK LS17Ci0tICBmMSAoMSk7Ci0tCi0tICByZXR1cm4gMDsKLS19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3BpZS1zdXBwb3J0LmV4cAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA3ZDExOGMw Li4wMDAwMDAwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1zdXBwb3J0LmV4cAot KysrIC9kZXYvbnVsbAotQEAgLTEsNTggKzAsMCBAQAotLSMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot LSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotLQotLXNldCB0ZXN0ZmlsZSBwaWUtc3VwcG9ydAotLXNldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmMKLS1zZXQgb2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Lm8KLS1zZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0tCi0taWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke29iamZpbGV9IiBvYmpl Y3Qge3F1aWV0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWZwaWV9XSAhPSAiIiB9IHsKLS0gICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBQSUUgb2JqZWN0IGZpbGUuIgotLSAgICBy ZXR1cm4gLTEKLS19Ci0taWYgIHsgW2dkYl9jb21waWxlICIke29iamZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7cXVpZXQgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tcGllfV0gIT0gIiIg fSB7Ci0tICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgUElFIGJpbmFyeS4iCi0t ICAgIHJldHVybiAtMQotLX0KLS0KLS0jIEdldCB0aGluZ3Mgc3RhcnRlZC4KLS0KLS1nZGJfZXhp dAotLWdkYl9zdGFydAotLWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotLQot LWlmIFtpc19yZW1vdGUgaG9zdF0gewotLSAgc2V0IGJpbmZpbGUgW3JlbW90ZV9kb3dubG9hZCBo b3N0ICRiaW5maWxlXQotLSAgICBpZiB7ICRiaW5maWxlID09ICIiIH0gewotLSAgICAgIHVudGVz dGVkICJDb3VsZG4ndCBkb3dubG9hZCByZW1vdGUgdGVzdCBiaW5hcnkuIgotLSAgICAgIHJldHVy biAtMQotLSAgICB9Ci0tfQotLQotLSMgVGhlIGZpbGUgY29tbWFuZCB1c2VkIHRvIGtpbGwgdGhl IHJlbW90ZSB0YXJnZXQuICBGb3IgdGhlIGJlbmVmaXQKLS0jIG9mIHRoZSB0ZXN0c3VpdGUsIHBy ZXNlcnZlIHRoaXMgYmVoYXZpb3IuCi0tc2VuZF9nZGIgImtpbGxcbiIKLS1nZGJfZXhwZWN0IDEy MCB7Ci0tICAgIC1yZSAiS2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4gLnkgb3Igbi4g JCIgewotLQlzZW5kX2dkYiAieVxuIgotLQl2ZXJib3NlICJcdFx0S2lsbGluZyBwcmV2aW91cyBw cm9ncmFtIGJlaW5nIGRlYnVnZ2VkIgotLQlleHBfY29udGludWUKLS0gICAgfQotLSAgICAtcmUg IiRnZGJfcHJvbXB0ICQiIHsKLS0JIyBPSy4KLS0gICAgfQotLX0KLS0KLS1nZGJfdGVzdCAiZmls ZSAkYmluZmlsZSIgImN1cnJlbnQgYmluYXJ5IGlzIGEgUElFLioiICJjb3JyZWN0bHkgZGV0ZWN0 ZWQgUElFIGJpbmFyeSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdy aW5kLWRiLWF0dGFjaC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRh Y2guYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjVmYWFhYWMKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3JpbmQtZGItYXR0YWNo LmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0raW50IG1haW4oKQotK3sKLSsgIHZvaWQg KnA7Ci0rCi0rICBwID0gbWFsbG9jICgxKTsKLSsgIGlmIChwID09IE5VTEwpCi0rICAgIHJldHVy biAxOwotKyAgZnJlZSAocCk7Ci0rICBmcmVlIChwKTsJLyogZG91YmxlLWZyZWUgKi8KLSsgIHJl dHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5k LWRiLWF0dGFjaC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFj aC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYzA2ZmQzCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFj aC5leHAKLUBAIC0wLDAgKzEsNzQgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStz ZXQgdGVzdCB2YWxncmluZC1kYi1hdHRhY2gKLStzZXQgc3JjZmlsZSAkdGVzdC5jCi0rc2V0IGV4 ZWN1dGFibGUgJHRlc3QKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0 YWJsZX0KLStpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHRlc3QuZXhwICRleGVjdXRhYmxlICRzcmNm aWxlIHtkZWJ1Z31dID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAot KwotKyMgcmVtb3RlX3NwYXduIGJyZWFrcyB0aGUgY29tbWFuZCBvbiBlYWNoIHdoaXRlc3BhY2Ug ZGVzcGl0ZSBwb3NzaWJsZSBxdW90aW5nLgotKyMgVXNlIGJhY2tzbGFzaC1lc2NhcGVkIHdoaXRl c3BhY2UgdGhlcmUgaW5zdGVhZDoKLSsKLStzZXQgZGJfY29tbWFuZCAiLS1kYi1jb21tYW5kPSRH REIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyBbaG9zdF9pbmZvIGdkYl9vcHRzXSAlZiAl cCIKLStyZWdzdWIgLWFsbCAiICIgJGRiX2NvbW1hbmQgIlxcICIgZGJfY29tbWFuZAotKwotK3Nl dCB0ZXN0ICJzcGF3biB2YWxncmluZCIKLStzZXQgY21kICJ2YWxncmluZCAtLWRiLWF0dGFjaD15 ZXMgJGRiX2NvbW1hbmQgJGJpbmZpbGUiCi0rc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhvc3QgJGNt ZF07Ci0raWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKyAgICB2ZXJib3NlIC1sb2cg IlNwYXduaW5nICRjbWQgZmFpbGVkLiIKLSsgICAgc2V0dXBfeGZhaWwgKi0qLSoKLSsgICAgZmFp bCAkdGVzdAotKyAgICByZXR1cm4gLTEKLSt9Ci0rcGFzcyAkdGVzdAotKyMgRGVjbGFyZSBHREIg bm93IGFzIHJ1bm5pbmcuCi0rc2V0IGdkYl9zcGF3bl9pZCAtMQotKwotK3NldCB0ZXN0ICJ2YWxn cmluZCBzdGFydGVkIgotKyMgVGhlIHRyYWlsaW5nICcuJyBkaWZmZXJzIGZvciBkaWZmZXJlbnQg bWVtY2hlY2sgdmVyc2lvbnMuCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAt cmUgIk1lbWNoZWNrLCBhIG1lbW9yeSBlcnJvciBkZXRlY3RvclxcLj9cclxuIiB7Ci0rCXBhc3Mg JHRlc3QKLSsgICAgfQotKyAgICAtcmUgInZhbGdyaW5kOiBmYWlsZWQgdG8gc3RhcnQgdG9vbCAn bWVtY2hlY2snIGZvciBwbGF0Zm9ybSAnLionOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IiB7 Ci0rCXNldHVwX3hmYWlsICotKi0qCi0rCWZhaWwgJHRlc3QKLSsJcmV0dXJuIC0xCi0rICAgIH0K LSt9Ci0rCi0rc2V0IGRvdWJsZV9mcmVlIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJkb3VibGUtZnJl ZSJdCi0rCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUgIkludmFsaWQg ZnJlZVxcKFxcKSAvIGRlbGV0ZSAvIGRlbGV0ZVxcXFtcXFxdXHJcbi4qOiBtYWluIFxcKCR7c3Jj ZmlsZX06JGRvdWJsZV9mcmVlXFwpXHJcbi4qLS0tLSBBdHRhY2ggdG8gZGVidWdnZXIgXFw/IC0t LSBcW15cclxuXF0qIC0tLS0gIiB7Ci0rCXNlbmRfZ2RiICJ5XHIiCi0rICAgIH0KLSsgICAgLXJl ICItLS0tIEF0dGFjaCB0byBkZWJ1Z2dlciBcXD8gLS0tIFxbXlxyXG5cXSogLS0tLSAiIHsKLSsJ c2VuZF9nZGIgIm5cciIKLSsJZXhwX2NvbnRpbnVlCi0rICAgIH0KLSt9Ci0rCi0rIyBJbml0aWFs aXphdGlvbiBmcm9tIGRlZmF1bHRfZ2RiX3N0YXJ0LgotK2dkYl90ZXN0ICJzZXQgaGVpZ2h0IDAi Ci0rZ2RiX3Rlc3QgInNldCB3aWR0aCAwIgotKwotK2dkYl90ZXN0ICJidCIgImluIG1haW4gXFwo LipcXCkgYXQgLioke3NyY2ZpbGV9OiRkb3VibGVfZnJlZSIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLXJhbmdlcy5leHAKLWluZGV4IDYxZTFmZTQuLjkxMDkwMzAgMTAwNjQ0Ci0tLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLmV4cAotQEAgLTU1LDYgKzU1LDEyIEBAIGdkYl9zdGFy dAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2FkICR7Ymlu ZmlsZX0KLSAKLSsjIFRlc3QgYWxzbyBvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwIHJlbG9jYXRp b25zIGZvciAtZlBJRSAtcGllIGJ1aWxkcyBiZWxvdy4KLSsjIE9uIHNvbWUgdGFyZ2V0cyBpdCBt YXkgcG9zc2libHkgZmFpbCBidXQgdGhlIHByb2dyYW0gaXMgYmVpbmcgc3RhcnRlZCBvbmx5Ci0r IyBmb3IgdGhlIFBJRSBidWlsZCBzbyB0cnkgaXQgYW55d2F5LgotKwotK3J1bnRvX21haW4KLSsK LSAjIENvcnJlY3Qgb3V0cHV0OgotICMgCUxpbmUgMzkgb2YgIi4uLy4uLy4vZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1yYW5nZXMuUyIgc3RhcnRzIGF0IGFkZHJlc3MgMHg0IGFuZCBlbmRz IGF0IDB4OC4KLSAjIFdyb25nIG91dHB1dDoKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotaW5kZXggZDBjMzQ5My4uZmJm OTEyNCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKLUBAIC0yNzc4LDYgKzI3NzgsMTEgQEAgcHJvYyBnZGJfZ251 X3N0cmlwX2RlYnVnIHsgZGVzdCBhcmdzIH0gewotICAgICAgIHJldHVybiAxCi0gICAgIH0KLSAK LSsgICAgIyBXb3JrYXJvdW5kIFBSIGJpbnV0aWxzLzEwODAyOgotKyAgICAjIFByZXNlcnZlIHRo ZSAneCcgYml0IGFsc28gZm9yIFBJRXMgKFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVz KS4KLSsgICAgc2V0IHBlcm0gW2ZpbGUgYXR0cmlidXRlcyAke2Rlc3R9IC1wZXJtaXNzaW9uc10K LSsgICAgZmlsZSBhdHRyaWJ1dGVzICR7c3RyaXBwZWRfZmlsZX0gLXBlcm1pc3Npb25zICRwZXJt Ci0rCi0gICAgICMgR2V0IHJpZCBvZiBldmVyeXRoaW5nIGJ1dCB0aGUgZGVidWcgaW5mbywgYW5k IHN0b3JlIHJlc3VsdCBpbiBkZWJ1Z19maWxlCi0gICAgICMgVGhpcyB3aWxsIGJlIGluIHRoZSAu ZGVidWcgc3ViZGlyZWN0b3J5LCBzZWUgYWJvdmUuCi0gICAgIHNldCByZXN1bHQgW2NhdGNoICJl eGVjICRzdHJpcF90b19maWxlX3Byb2dyYW0gLS1vbmx5LWtlZXAtZGVidWcgJHtkZXN0fSAtbyAk e2RlYnVnX2ZpbGV9IiBvdXRwdXRdCi1AQCAtMjgxNCw3ICsyODE5LDEyIEBAIHByb2MgZ2RiX2du dV9zdHJpcF9kZWJ1ZyB7IGRlc3QgYXJncyB9IHsKLSAgICAgICByZXR1cm4gMQotICAgICB9Ci0g Ci0tICAgcmV0dXJuIDAKLSsgICAgIyBXb3JrYXJvdW5kIFBSIGJpbnV0aWxzLzEwODAyOgotKyAg ICAjIFByZXNlcnZlIHRoZSAneCcgYml0IGFsc28gZm9yIFBJRXMgKFBvc2l0aW9uIEluZGVwZW5k ZW50IEV4ZWN1dGFibGVzKS4KLSsgICAgc2V0IHBlcm0gW2ZpbGUgYXR0cmlidXRlcyAke3N0cmlw cGVkX2ZpbGV9IC1wZXJtaXNzaW9uc10KLSsgICAgZmlsZSBhdHRyaWJ1dGVzICR7ZGVzdH0gLXBl cm1pc3Npb25zICRwZXJtCi0rCi0rICAgIHJldHVybiAwCi0gfQotIAotICMgVGVzdCB0aGUgb3V0 cHV0IG9mIEdEQl9DT01NQU5EIG1hdGNoZXMgdGhlIHBhdHRlcm4gb2J0YWluZWQKLUBAIC0zMDQz LDMgKzMwNTMsNzAgQEAgaWYge1tpbmZvIGV4aXN0cyBUUkFOU0NSSVBUXX0gewotICAgICByZXR1 cm4gW3VwbGV2ZWwgcmVhbF9zZW5kX2dkYiAkYXJnc10KLSAgIH0KLSB9Ci0rCi0rcHJvYyBjb3Jl X2ZpbmQge2JpbmZpbGUge2RlbGV0ZWZpbGVzIHt9fSB7YXJnICIifX0gewotKyAgICBnbG9iYWwg b2JqZGlyIHN1YmRpcgotKwotKyAgICBzZXQgZGVzdGNvcmUgIiRiaW5maWxlLmNvcmUiCi0rICAg IGZpbGUgZGVsZXRlICRkZXN0Y29yZQotKwotKyAgICAjIENyZWF0ZSBhIGNvcmUgZmlsZSBuYW1l ZCAiJGRlc3Rjb3JlIiByYXRoZXIgdGhhbiBqdXN0ICJjb3JlIiwgdG8KLSsgICAgIyBhdm9pZCBw cm9ibGVtcyB3aXRoIHN5cyBhZG1pbiB0eXBlcyB0aGF0IGxpa2UgdG8gcmVndWxhcmx5IHBydW5l IGFsbAotKyAgICAjIGZpbGVzIG5hbWVkICJjb3JlIiBmcm9tIHRoZSBzeXN0ZW0uCi0rICAgICMK LSsgICAgIyBBcmJpdHJhcmlseSB0cnkgc2V0dGluZyB0aGUgY29yZSBzaXplIGxpbWl0IHRvICJ1 bmxpbWl0ZWQiIHNpbmNlCi0rICAgICMgdGhpcyBkb2VzIG5vdCBodXJ0IG9uIHN5c3RlbXMgd2hl cmUgdGhlIGNvbW1hbmQgZG9lcyBub3Qgd29yayBhbmQKLSsgICAgIyBhbGxvd3MgdXMgdG8gZ2Vu ZXJhdGUgYSBjb3JlIG9uIHN5c3RlbXMgd2hlcmUgaXQgZG9lcy4KLSsgICAgIwotKyAgICAjIFNv bWUgc3lzdGVtcyBhcHBlbmQgImNvcmUiIHRvIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtOyBvdGhl cnMgYXBwZW5kCi0rICAgICMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gImNvcmUiOyBzdGls bCBvdGhlcnMgKGxpa2UgTGludXgsIGFzIG9mCi0rICAgICMgTWF5IDIwMDMpIGNyZWF0ZSBjb3Jl cyBuYW1lZCAiY29yZS5QSUQiLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB3ZQotKyAgICAjIGNvdWxk IGhhdmUgbWFueSBjb3JlIGZpbGVzIGx5aW5nIGFyb3VuZCwgYW5kIGl0IG1heSBiZSBkaWZmaWN1 bHQgdG8KLSsgICAgIyB0ZWxsIHdoaWNoIG9uZSBpcyBvdXJzLCBzbyBsZXQncyBydW4gdGhlIHBy b2dyYW0gaW4gYSBzdWJkaXJlY3RvcnkuCi0rICAgIHNldCBmb3VuZCAwCi0rICAgIHNldCBjb3Jl ZGlyICIke29iamRpcn0vJHtzdWJkaXJ9L2NvcmVkaXIuW2dldHBpZF0iCi0rICAgIGZpbGUgbWtk aXIgJGNvcmVkaXIKLSsgICAgY2F0Y2ggInN5c3RlbSBcIihjZCAke2NvcmVkaXJ9OyB1bGltaXQg LWMgdW5saW1pdGVkOyAke2JpbmZpbGV9ICR7YXJnfTsgdHJ1ZSkgPi9kZXYvbnVsbCAyPiYxXCIi Ci0rICAgICMgICAgICByZW1vdGVfZXhlYyBob3N0ICIke2JpbmZpbGV9IgotKyAgICBmb3JlYWNo IGkgIiR7Y29yZWRpcn0vY29yZSAke2NvcmVkaXJ9L2NvcmUuY29yZW1ha2VyLmMgJHtiaW5maWxl fS5jb3JlIiB7Ci0rCWlmIFtyZW1vdGVfZmlsZSBidWlsZCBleGlzdHMgJGldIHsKLSsJICAgIHJl bW90ZV9leGVjIGJ1aWxkICJtdiAkaSAkZGVzdGNvcmUiCi0rCSAgICBzZXQgZm91bmQgMQotKwl9 Ci0rICAgIH0KLSsgICAgIyBDaGVjayBmb3IgImNvcmUuUElEIi4KLSsgICAgaWYgeyAkZm91bmQg PT0gMCB9IHsKLSsJc2V0IG5hbWVzIFtnbG9iIC1ub2NvbXBsYWluIC1kaXJlY3RvcnkgJGNvcmVk aXIgY29yZS4qXQotKwlpZiB7W2xsZW5ndGggJG5hbWVzXSA9PSAxfSB7Ci0rCSAgICBzZXQgY29y ZWZpbGUgW2ZpbGUgam9pbiAkY29yZWRpciBbbGluZGV4ICRuYW1lcyAwXV0KLSsJICAgIHJlbW90 ZV9leGVjIGJ1aWxkICJtdiAkY29yZWZpbGUgJGRlc3Rjb3JlIgotKwkgICAgc2V0IGZvdW5kIDEK LSsJfQotKyAgICB9Ci0rICAgIGlmIHsgJGZvdW5kID09IDAgfSB7Ci0rCSMgVGhlIGJyYWluZGFt YWdlZCBIUFVYIHNoZWxsIHF1aXRzIGFmdGVyIHRoZSB1bGltaXQgLWMgYWJvdmUKLSsJIyB3aXRo b3V0IGV4ZWN1dGluZyAke2JpbmZpbGV9LiAgU28gd2UgdHJ5IGFnYWluIHdpdGhvdXQgdGhlCi0r CSMgdWxpbWl0IGhlcmUgaWYgd2UgZGlkbid0IGZpbmQgYSBjb3JlIGZpbGUgYWJvdmUuCi0rCSMg T2gsIEkgc2hvdWxkIG1lbnRpb24gdGhhdCBhbnkgImJyYWluZGFtYWdlZCIgbm9uLVVuaXggc3lz dGVtIGhhcwotKwkjIHRoZSBzYW1lIHByb2JsZW0uIEkgbGlrZSB0aGUgY2QgYml0IHRvbywgaXQn cyByZWFsbHkgbmVhdCduIHN0dWZmLgotKwljYXRjaCAic3lzdGVtIFwiKGNkICR7b2JqZGlyfS8k e3N1YmRpcn07ICR7YmluZmlsZX07IHRydWUpID4vZGV2L251bGwgMj4mMVwiIgotKwlmb3JlYWNo IGkgIiR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZSAke29iamRpcn0vJHtzdWJkaXJ9L2NvcmUuY29y ZW1ha2VyLmMgJHtiaW5maWxlfS5jb3JlIiB7Ci0rCSAgICBpZiBbcmVtb3RlX2ZpbGUgYnVpbGQg ZXhpc3RzICRpXSB7Ci0rCQlyZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgJGRlc3Rjb3JlIgotKwkJ c2V0IGZvdW5kIDEKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgICMgVHJ5IHRvIGNsZWFu IHVwIGFmdGVyIG91cnNlbHZlcy4gCi0rICAgIGZvcmVhY2ggZGVsZXRlZmlsZSAkZGVsZXRlZmls ZXMgewotKwlyZW1vdGVfZmlsZSBidWlsZCBkZWxldGUgW2ZpbGUgam9pbiAkY29yZWRpciAkZGVs ZXRlZmlsZV0KLSsgICAgfQotKyAgICByZW1vdGVfZXhlYyBidWlsZCAicm1kaXIgJGNvcmVkaXIi Ci0rCQotKyAgICBpZiB7ICRmb3VuZCA9PSAwICB9IHsKLSsJd2FybmluZyAiY2FuJ3QgZ2VuZXJh dGUgYSBjb3JlIGZpbGUgLSBjb3JlIHRlc3RzIHN1cHByZXNzZWQgLSBjaGVjayB1bGltaXQgLWMi Ci0rCXJldHVybiAiIgotKyAgICB9Ci0rICAgIHJldHVybiAkZGVzdGNvcmUKLSt9CgpkaWZmIC0t Z2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggYzI1ODQ0Yi4u NjdlNjUxMCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBh dGNoCkBAIC0yLDM4ICsyLDM2IEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9q ZWN0QXJjaGVyCiBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJjaGVyQnJhbmNoTWFu YWdlbWVudAogCiBHSVQgc25hcHNob3Q6Ci1jb21taXQgNmU3Mzk4OGY2NTNiYTk4NmU4NzQyZjIw OGYxN2VjMDg0MjkyY2JkNQorY29tbWl0IDgxODEwYTIwYjJkMmMzYmYxOGUxNTFkZTNjZGRmYzk2 NDQ1YjNjNDYKIAogYnJhbmNoIGBhcmNoZXInIC0gdGhlIG1lcmdlIG9mIGJyYW5jaGVzOgotYXJj aGVyLXRyb21leS1jYWxsLWZyYW1lLWNmYQogYXJjaGVyLXRyb21leS1kZWxheWVkLXN5bWZpbGUK LWFyY2hlci10cm9tZXktZHctb3AtdmFsdWUKLWFyY2hlci1qYW5rcmF0b2NodmlsLXZsYQotYXJj aGVyLWphbmtyYXRvY2h2aWwtbWlzYwotYXJjaGVyLWtlaXRocy1leHByLWN1bXVsYXRpdmUKIGFy Y2hlci10cm9tZXktcHl0aG9uCithcmNoZXItcG11bGRvb24tbmV4dC1vdmVyLXRocm93CiBhcmNo ZXItamFua3JhdG9jaHZpbC1mb3J0cmFuLW1vZHVsZQogYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0 Y2hwb2ludAotYXJjaGVyLWphbmtyYXRvY2h2aWwtYnBfbG9jYXRpb24tYWNjZWwKLWFyY2hlci1w bXVsZG9vbi1uZXh0LW92ZXItdGhyb3cKK2FyY2hlci1qYW5rcmF0b2NodmlsLXZsYQorVE9ETzph cmNoZXIta2VpdGhzLWV4cHItY3VtdWxhdGl2ZQogCiAKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZp bGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDdkNTMyMDUuLjMxOWZhYzQgMTAwNjQ0Citp bmRleCBmZjhiODZlLi5mNDUwYTdiIDEwMDY0NAogLS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysg Yi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xNjksNiArMTY5LDEwIEBAIFRBUkdFVF9TWVNURU1fUk9P VF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAjIERpZCB0aGUgdXNlciBn aXZlIHVzIGEgLS13aXRoLWdkYi1kYXRhZGlyIG9wdGlvbj8KLSBHREJfREFUQURJUiA9IEBHREJf REFUQURJUkAKK0BAIC0xNjcsNiArMTY3LDEyIEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJH RVRfU1lTVEVNX1JPT1RACisgVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lT VEVNX1JPT1RfREVGSU5FQAogIAorICMgRGlkIHRoZSB1c2VyIGdpdmUgdXMgYSAtLXdpdGgtZ2Ri LWRhdGFkaXIgb3B0aW9uPworK0dEQl9EQVRBRElSX1BBVEggPSBAR0RCX0RBVEFESVJfUEFUSEAK KysKICsjIFRoZSBhcmd1bWVudCB0byAtLXdpdGgtcHl0aG9uZGlyLiAgSWYgbm90IGdpdmVuLCB0 aGlzIGlzCiArIyBHREJfREFUQURJUl9QQVRIL3B5dGhvbi4KICtweXRob25kaXIgPSBAcHl0aG9u ZGlyQAogKworIEdEQl9EQVRBRElSID0gQEdEQl9EQVRBRElSQAorIAogICMgSGVscGVyIGNvZGUg ZnJvbSBnbnVsaWIuCi0gTElCR05VID0gZ251bGliL2xpYmdudS5hCi0gSU5DR05VID0gLUkkKHNy Y2RpcikvZ251bGliIC1JZ251bGliCi1AQCAtMjY3LDIxICsyNzEsMzcgQEAgU1VCRElSX1RVSV9D RkxBR1M9IFwKK0BAIC0yNjcsMjMgKzI3MywzOSBAQCBTVUJESVJfVFVJX0NGTEFHUz0gXAogICMK ICBTVUJESVJfUFlUSE9OX09CUyA9IFwKICAJcHl0aG9uLm8gXApAQCAtNDUsNiArNDMsNyBAQCBp bmRleCA3ZDUzMjA1Li4zMTlmYWM0IDEwMDY0NAogKwlweS1ob29rcy5vIFwKICsJcHktaW5mZXJp b3IubyBcCiArCXB5LWluZnRocmVhZC5vIFwKKyAJcHktbGF6eS1zdHJpbmcubyBcCiAgCXB5LW9i amZpbGUubyBcCiArCXB5LXBhcmFtLm8gXAogIAlweS1wcmV0dHlwcmludC5vIFwKQEAgLTYzLDYg KzYyLDcgQEAgaW5kZXggN2Q1MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICsJcHl0aG9uL3B5LWhvb2tz LmMgXAogKwlweXRob24vcHktaW5mZXJpb3IuYyBcCiArCXB5dGhvbi9weS1pbmZ0aHJlYWQuYyBc CisgCXB5dGhvbi9weS1sYXp5LXN0cmluZy5jIFwKICAJcHl0aG9uL3B5LW9iamZpbGUuYyBcCiAr CXB5dGhvbi9weS1wYXJhbS5jIFwKICAJcHl0aG9uL3B5LXByZXR0eXByaW50LmMgXApAQCAtNzEs MjUgKzcxLDE3IEBAIGluZGV4IDdkNTMyMDUuLjMxOWZhYzQgMTAwNjQ0CiAgCXB5dGhvbi9weS10 eXBlLmMgXAogIAlweXRob24vcHktdXRpbHMuYyBcCiAgCXB5dGhvbi9weS12YWx1ZS5jCi1AQCAt NzUwLDcgKzc3MCw3IEBAIGNvbmZpZy9yczYwMDAvbm0tcnM2MDAwLmggdG9wLmggYnNkLWt2bS5o IGdkYi1zdGFicy5oIHJlZ2dyb3Vwcy5oIFwKK0BAIC03NTYsNyArNzc4LDggQEAgY29uZmlnL3Jz NjAwMC9ubS1yczYwMDAuaCB0b3AuaCBic2Qta3ZtLmggZ2RiLXN0YWJzLmggcmVnZ3JvdXBzLmgg XAogIGFubm90YXRlLmggc2ltLXJlZ25vLmggZGljdGlvbmFyeS5oIGRmcC5oIG1haW4uaCBmcmFt ZS11bndpbmQuaAlcCiAgcmVtb3RlLWZpbGVpby5oIGkzODYtbGludXgtdGRlcC5oIHZheC10ZGVw Lmggb2JqYy1sYW5nLmggXAogIHNlbnRpbmVsLWZyYW1lLmggYmNhY2hlLmggc3ltZmlsZS5oIHdp bmRvd3MtdGRlcC5oIGxpbnV4LXRkZXAuaCBcCi0tZ2RiX3VzbGVlcC5oIGppdC5oIHhtbC1zeXNj YWxsLmggYWRhLW9wZXJhdG9yLmluYwotK2dkYl91c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5o IGFkYS1vcGVyYXRvci5pbmMgcHl0aG9uL3B5dGhvbi5oIHB5dGhvbi9weXRob24taW50ZXJuYWwu aAorLWdkYl91c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRvci5pbmMgbWlj cm9ibGF6ZS10ZGVwLmgKKytnZGJfdXNsZWVwLmggaml0LmggcHl0aG9uL3B5dGhvbi5oIHB5dGhv bi9weXRob24taW50ZXJuYWwuaCBcCisreG1sLXN5c2NhbGwuaCBhZGEtb3BlcmF0b3IuaW5jIG1p Y3JvYmxhemUtdGRlcC5oCiAgCiAgIyBIZWFkZXIgZmlsZXMgdGhhdCBhbHJlYWR5IGhhdmUgc3Jj ZGlyIGluIHRoZW0sIG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCiAgCi1AQCAtODc0LDcgKzg5NCw3 IEBAIGdlbmVyYXRlZF9maWxlcyA9IGNvbmZpZy5oIG9ic2VydmVyLmggb2JzZXJ2ZXIuaW5jIGFk YS1sZXguYyBcCi0gCSQoQ09NUElMRSkgJDwKLSAJJChQT1NUQ09NUElMRSkKLSAKLS1hbGw6IGdk YiQoRVhFRVhUKSAkKENPTkZJR19BTEwpIHhtbC1zeXNjYWxsLWNvcHkKLSthbGw6IGdkYiQoRVhF RVhUKSAkKENPTkZJR19BTEwpIHhtbC1zeXNjYWxsLWNvcHkgLmdkYmluaXQKLSAJQCQoTUFLRSkg JChGTEFHU19UT19QQVNTKSBETz1hbGwgIkRPRElSUz1gZWNobyAkKFNVQkRJUlMpIHwgc2VkICdz L3Rlc3RzdWl0ZS8vJ2AiIHN1YmRpcl9kbwotIC5QSE9OWTogYWxsLXR1aQotIGFsbC10dWk6ICQo VFVJKSQoRVhFRVhUKQotQEAgLTEyNjQsNiArMTI4NCwxMiBAQCBzdGFtcC1oOiAkKHNyY2Rpcikv Y29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC0xMjcwLDYgKzEyOTMsMTIgQEAgc3RhbXAtaDog JChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCiAgCSAgQ09ORklHX0xJTktTPSBcCiAg CSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIApAQCAtMTAyLDcgKzk0LDcgQEAgaW5kZXggN2Q1 MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJl IGNvbmZpZ3VyZS50Z3QgY29uZmlndXJlLmhvc3QKICAJJChTSEVMTCkgY29uZmlnLnN0YXR1cyAt LXJlY2hlY2sKICAKLUBAIC0xOTYzLDYgKzE5ODksMTQgQEAgcHl0aG9uLm86ICQoc3JjZGlyKS9w eXRob24vcHl0aG9uLmMKK0BAIC0xOTcwLDYgKzE5OTksMTQgQEAgcHl0aG9uLm86ICQoc3JjZGly KS9weXRob24vcHl0aG9uLmMKICAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGly KS9weXRob24vcHl0aG9uLmMKICAJJChQT1NUQ09NUElMRSkKICAKQEAgLTExNyw3ICsxMDksNyBA QCBpbmRleCA3ZDUzMjA1Li4zMTlmYWM0IDEwMDY0NAogIHB5LWNtZC5vOiAkKHNyY2RpcikvcHl0 aG9uL3B5LWNtZC5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0 aG9uL3B5LWNtZC5jCiAgCSQoUE9TVENPTVBJTEUpCi1AQCAtMTk3NSwxNCArMjAwOSwzOCBAQCBw eS1mdW5jdGlvbi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9uLmMKK0BAIC0xOTgyLDYg KzIwMTksMTggQEAgcHktZnVuY3Rpb24ubzogJChzcmNkaXIpL3B5dGhvbi9weS1mdW5jdGlvbi5j CiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0 aW9uLmMKICAJJChQT1NUQ09NUElMRSkKICAKQEAgLTEzMyw3ICsxMjUsMTAgQEAgaW5kZXggN2Q1 MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICsJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3Jj ZGlyKS9weXRob24vcHktaW5mdGhyZWFkLmMKICsJJChQT1NUQ09NUElMRSkKICsKLSBweS1vYmpm aWxlLm86ICQoc3JjZGlyKS9weXRob24vcHktb2JqZmlsZS5jCisgcHktbGF6eS1zdHJpbmcubzog JChzcmNkaXIpL3B5dGhvbi9weS1sYXp5LXN0cmluZy5jCisgCSQoQ09NUElMRSkgJChQWVRIT05f Q0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWxhenktc3RyaW5nLmMKKyAJJChQT1NUQ09NUElM RSkKK0BAIC0xOTkwLDEwICsyMDM5LDIyIEBAIHB5LW9iamZpbGUubzogJChzcmNkaXIpL3B5dGhv bi9weS1vYmpmaWxlLmMKICAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9w eXRob24vcHktb2JqZmlsZS5jCiAgCSQoUE9TVENPTVBJTEUpCiAgCkBAIC0xNTYsNyArMTUxLDcg QEAgaW5kZXggN2Q1MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICBweS10eXBlLm86ICQoc3JjZGlyKS9w eXRob24vcHktdHlwZS5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2Rpcikv cHl0aG9uL3B5LXR5cGUuYwogIAkkKFBPU1RDT01QSUxFKQotQEAgLTE5OTUsNiArMjA1MywzNiBA QCBweS12YWx1ZS5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKK0BAIC0yMDA2LDYgKzIw NjcsMzYgQEAgcHktdmFsdWUubzogJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCiAgCSQoQ09N UElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKICAJJChQ T1NUQ09NUElMRSkKICAKQEAgLTE5NCwxMCArMTg5LDEwIEBAIGluZGV4IDdkNTMyMDUuLjMxOWZh YzQgMTAwNjQ0CiAgIyBEZXBlbmRlbmN5IHRyYWNraW5nLiAgTW9zdCBvZiB0aGlzIGlzIGNvbmRp dGlvbmFsIG9uIEdOVSBNYWtlIGJlaW5nCiAgIyBmb3VuZCBieSBjb25maWd1cmU7IGlmIEdOVSBN YWtlIGlzIG5vdCBmb3VuZCwgd2UgZmFsbCBiYWNrIHRvIGEKIGRpZmYgLS1naXQgYS9nZGIvTkVX UyBiL2dkYi9ORVdTCi1pbmRleCA4ZDMyYzM0Li5mN2VhMjFiIDEwMDY0NAoraW5kZXggMTdkNjRm Yi4uZTBlYjE2MCAxMDA2NDQKIC0tLSBhL2dkYi9ORVdTCiArKysgYi9nZGIvTkVXUwotQEAgLTQ3 Niw2ICs0NzYsMTMgQEAgeDg2L3g4Nl82NCBEYXJ3aW4JCWlbMzQ1NjddODYtKi1kYXJ3aW4qCitA QCAtNjY5LDYgKzY2OSwxMyBAQCB4ODYveDg2XzY0IERhcndpbgkJaVszNDU2N104Ni0qLWRhcndp bioKICAKICB4ODZfNjQgTWluR1cJCQl4ODZfNjQtKi1taW5ndyoKICAKQEAgLTIxMiwxMCArMjA3 LDEwIEBAIGluZGV4IDhkMzJjMzQuLmY3ZWEyMWIgMTAwNjQ0CiAgCiAgTGF0dGljZSBNaWNvMzIg ICAgICAgICAgICAgICAgICBsbTMyLSoKIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dk Yi9hZGEtbGFuZy5jCi1pbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAoraW5kZXggMjRkZWY5 NS4uNDY4MjA0NSAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxh bmcuYwotQEAgLTE2MjEsNyArMTYyMSw3IEBAIGFkYV90eXBlX29mX2FycmF5IChzdHJ1Y3QgdmFs dWUgKmFyciwgaW50IGJvdW5kcykKK0BAIC0xNjQ0LDcgKzE2NDQsNyBAQCBhZGFfdHlwZV9vZl9h cnJheSAoc3RydWN0IHZhbHVlICphcnIsIGludCBib3VuZHMpCiAgICAgICAgICByZXR1cm4gTlVM TDsKICAgICAgICB3aGlsZSAoYXJpdHkgPiAwKQogICAgICAgICAgewpAQCAtMjI0LDIzICsyMTks NyBAQCBpbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAogICAgICAgICAgICBzdHJ1Y3QgdHlw ZSAqYXJyYXlfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAodmFsdWVfdHlwZSAoYXJyKSk7CiAgICAg ICAgICAgIHN0cnVjdCB2YWx1ZSAqbG93ID0gZGVzY19vbmVfYm91bmQgKGRlc2NyaXB0b3IsIGFy aXR5LCAwKTsKICAgICAgICAgICAgc3RydWN0IHZhbHVlICpoaWdoID0gZGVzY19vbmVfYm91bmQg KGRlc2NyaXB0b3IsIGFyaXR5LCAxKTsKLUBAIC00NzI3LDE0ICs0NzI3LDEwIEBAIGFkYV9sb29r dXBfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrMCwK LSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0gYWRhX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwg KGNvbnN0IGNoYXIgKm5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9t YWluX2VudW0gZG9tYWluKQotIHsKLS0gIGlmIChsaW5rYWdlX25hbWUgPT0gTlVMTCkKLS0gICAg bGlua2FnZV9uYW1lID0gbmFtZTsKLS0gIHJldHVybiBhZGFfbG9va3VwX3N5bWJvbCAobGlua2Fn ZV9uYW1lLCBibG9ja19zdGF0aWNfYmxvY2sgKGJsb2NrKSwgZG9tYWluLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMKTsKLSsgIHJldHVybiBhZGFfbG9va3VwX3N5bWJvbCAobmFt ZSwgYmxvY2tfc3RhdGljX2Jsb2NrIChibG9jayksIGRvbWFpbiwgTlVMTCk7Ci0gfQotIAotIAot QEAgLTEwODM5LDYgKzEwODM1LDQwIEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsIGludCAqYXJnc3ApCitAQCAtMTA5Mzcs NiArMTA5MzcsNDAgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBjLCBpbnQgKm9wbGVucCwgaW50ICphcmdzcCkKICAgICAgfQogIH0KICAKQEAgLTI4 MSw3ICsyNjAsNyBAQCBpbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAogIHN0YXRpYyBjaGFy ICoKICBhZGFfb3BfbmFtZSAoZW51bSBleHBfb3Bjb2RlIG9wY29kZSkKICB7Ci1AQCAtMTEyMjcs NiArMTEyNTcsNyBAQCBwYXJzZSAodm9pZCkKK0BAIC0xMTMyNSw2ICsxMTM1OSw3IEBAIHBhcnNl ICh2b2lkKQogIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgYWRhX2V4cF9kZXNj cmlwdG9yID0gewogICAgYWRhX3ByaW50X3N1YmV4cCwKICAgIGFkYV9vcGVyYXRvcl9sZW5ndGgs CkBAIC0yOTAsNzQgKzI2OSwxMyBAQCBpbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAogICAg YWRhX2R1bXBfc3ViZXhwX2JvZHksCiAgICBhZGFfZXZhbHVhdGVfc3ViZXhwCiBkaWZmIC0tZ2l0 IGEvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi1pbmRleCA3 ZDg0NjFjLi5mYzRiM2UwIDEwMDY0NAoraW5kZXggNWM5ZTU1OC4uNTVhMTg3MyAxMDA2NDQKIC0t LSBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYwogKysrIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi1A QCAtMjcwLDYgKzI3MCw4IEBAIGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGludCBy ZWdudW0pCi0gICByZXR1cm4gdmFsdWU7Ci0gfQotIAotKy8qIFNldCBkZWJ1ZyByZWdpc3RlciBS RUdOVU0gdG8gVkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KLSsKLSBzdGF0 aWMgdm9pZAotIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGludCByZWdudW0sIHVu c2lnbmVkIGxvbmcgdmFsdWUpCi0gewotQEAgLTI4Niw2ICsyODgsOCBAQCBhbWQ2NF9saW51eF9k cl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQotICAg ICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIpKTsK LSB9Ci0gCi0rLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1BfTElT VC4gICovCi0rCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbCAodW5z aWduZWQgbG9uZyBjb250cm9sKQotIHsKLUBAIC0yOTcsNiArMzAxLDggQEAgYW1kNjRfbGludXhf ZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKLSAgICAgYW1kNjRfbGludXhf ZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKLSB9Ci0gCi0rLyogU2V0IGFkZHJl c3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAg Ki8KLSsKLSBzdGF0aWMgdm9pZAotIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVt LCBDT1JFX0FERFIgYWRkcikKLSB7Ci1AQCAtMzEwLDE4ICszMTYsNTUgQEAgYW1kNjRfbGludXhf ZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQotICAgICBhbWQ2NF9saW51 eF9kcl9zZXQgKHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7Ci0gfQotIAotKy8q IFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBvZiBM V1BfTElTVC4gICovCi0rCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9kcl9yZXNldF9hZGRy IChpbnQgcmVnbnVtKQotIHsKLSAgIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChyZWdudW0sIDAp OwotIH0KLSAKLSsvKiBHZXQgRFJfU1RBVFVTIGZyb20gb25seSB0aGUgb25lIExXUCBvZiBJTkZF UklPUl9QVElELiAgKi8KLSsKLSBzdGF0aWMgdW5zaWduZWQgbG9uZwotIGFtZDY0X2xpbnV4X2Ry X2dldF9zdGF0dXMgKHZvaWQpCi0gewotICAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAoaW5m ZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKK0BAIC0zNTAsNiArMzUwLDIwIEBAIGFtZDY0X2xpbnV4 X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorICAgICB9CiAgfQogIAotKy8q IFVuc2V0IE1BU0sgYml0cyBpbiBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25l ZCBsb25nIG1hc2spCi0rewotKyAgc3RydWN0IGx3cF9pbmZvICpscDsKLSsgIHB0aWRfdCBwdGlk OwotKwotKyAgQUxMX0xXUFMgKGxwLCBwdGlkKQotKyAgICB7Ci0rICAgICAgdW5zaWduZWQgbG9u ZyB2YWx1ZTsKLSsgICAgICAKLSsgICAgICB2YWx1ZSA9IGFtZDY0X2xpbnV4X2RyX2dldCAocHRp ZCwgRFJfU1RBVFVTKTsKLSsgICAgICB2YWx1ZSAmPSB+bWFzazsKLSsgICAgICBhbWQ2NF9saW51 eF9kcl9zZXQgKHB0aWQsIERSX1NUQVRVUywgdmFsdWUpOwotKyAgICB9Ci0rfQotKwogKy8qIFNl ZSBpMzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgYW1kNjRfbGlu dXhfZHJfc2V0X2NvbnRyb2wKICsgICBvciBhbWQ2NF9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRo ZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQogKyAgIChhbWQ2NF9saW51eF9kciku ICAqLwpAQCAtMzcyLDM2ICsyOTAsMjIgQEAgaW5kZXggN2Q4NDYxYy4uZmM0YjNlMCAxMDA2NDQK ICsgIGZvciAocmVnbnVtID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJl Z251bSsrKQogKyAgICBhbWQ2NF9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIHJlZ251bSwg MCk7CiArfQotKworIAogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfbmV3X3RocmVhZCAocHRp ZF90IHB0aWQpCi0gewotQEAgLTY3Miw2ICs3MTUsOCBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51 eF9uYXQgKHZvaWQpCi0gICBpMzg2X2RyX2xvdy5zZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3Nl dF9hZGRyOworQEAgLTcwMiw2ICs3MTYsNyBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQg KHZvaWQpCiAgICBpMzg2X2RyX2xvdy5yZXNldF9hZGRyID0gYW1kNjRfbGludXhfZHJfcmVzZXRf YWRkcjsKICAgIGkzODZfZHJfbG93LmdldF9zdGF0dXMgPSBhbWQ2NF9saW51eF9kcl9nZXRfc3Rh dHVzOwotKyAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfdW5zZXRf c3RhdHVzOworICAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfdW5z ZXRfc3RhdHVzOwogKyAgaTM4Nl9kcl9sb3cuZGV0YWNoID0gYW1kNjRfbGludXhfZHJfZGV0YWNo OwogICAgaTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJfbGVuZ3RoICg4KTsKICAKICAgIC8qIE92ZXJy aWRlIHRoZSBHTlUvTGludXggaW5mZXJpb3Igc3RhcnR1cCBob29rLiAgKi8KIGRpZmYgLS1naXQg YS9nZGIvYmxvY2suYyBiL2dkYi9ibG9jay5jCi1pbmRleCA5N2VhNjdhLi5iMjBiZWViIDEwMDY0 NAoraW5kZXggNDhhYzIxYi4uODAwMDNiOCAxMDA2NDQKIC0tLSBhL2dkYi9ibG9jay5jCiArKysg Yi9nZGIvYmxvY2suYwotQEAgLTIyNyw4ICsyMjcsOSBAQCBibG9ja19zZXRfc2NvcGUgKHN0cnVj dCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKnNjb3BlLAotICAgQkxPQ0tfTkFNRVNQQUNFIChi bG9jayktPnNjb3BlID0gc2NvcGU7Ci0gfQotIAotLS8qIFRoaXMgcmV0dXJucyB0aGUgdXNpbmcg ZGlyZWN0aXZlcyBsaXN0IGFzc29jaWF0ZWQgd2l0aCBCTE9DSywgaWYKLS0gICBhbnkuICAqLwot Ky8qIFRoaXMgcmV0dXJucyB0aGUgZmlyc3QgdXNpbmcgZGlyZWN0aXZlcyBhc3NvY2lhdGVkIHdp dGggQkxPQ0ssIGlmCi0rICAgYW55LiAgRWFjaCBCTE9DS19OQU1FU1BBQ0UoKS0+VVNJTkcgYWxy ZWFkeSBjb250YWlucyBhbGwgdGhlIG5hbWVzcGFjZXMKLSsgICBpbXBvcnRlZCBhdCB0aGF0IGNv ZGUgcG9pbnQgLSBldmVuIHRob3NlIGZyb20gaXRzIHBhcmVudCBibG9ja3MuICAqLwotIAotIHN0 cnVjdCB1c2luZ19kaXJlY3QgKgotIGJsb2NrX3VzaW5nIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrKQotQEAgLTMxOCw2ICszMTksMjUgQEAgYWxsb2NhdGVfYmxvY2sgKHN0cnVjdCBvYnN0YWNr ICpvYnN0YWNrKQorQEAgLTMxOCw2ICszMTgsMjUgQEAgYWxsb2NhdGVfYmxvY2sgKHN0cnVjdCBv YnN0YWNrICpvYnN0YWNrKQogICAgQkxPQ0tfU1VQRVJCTE9DSyAoYmwpID0gTlVMTDsKICAgIEJM T0NLX0RJQ1QgKGJsKSA9IE5VTEw7CiAgICBCTE9DS19OQU1FU1BBQ0UgKGJsKSA9IE5VTEw7CkBA IC00MjgsNyArMzMyLDcgQEAgaW5kZXggOTdlYTY3YS4uYjIwYmVlYiAxMDA2NDQKICsgIHJldHVy biBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2JqZmlsZTsKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL2Js b2NrLmggYi9nZGIvYmxvY2suaAotaW5kZXggNTNlNzM3MS4uZDM3M2Y4YSAxMDA2NDQKK2luZGV4 IDdlZWRiNmMuLmIxNDc4MjYgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suaAogKysrIGIvZ2RiL2Js b2NrLmgKIEBAIC05Niw2ICs5NiwxNSBAQCBzdHJ1Y3QgYmxvY2sKQEAgLTQ2Myw3ICszNjcsNyBA QCBpbmRleCA1M2U3MzcxLi5kMzczZjhhIDEwMDY0NAogKwogICNlbmRpZiAvKiBCTE9DS19IICov CiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMKLWluZGV4 IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CitpbmRleCAwZGM4NDc0Li4xYTMwOWI1IDEwMDY0NAog LS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwogQEAgLTYxLDYg KzYxLDcgQEAKQEAgLTQ3NCw3MiArMzc4LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2 NDQKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAgI2luY2x1ZGUgInJlYWRsaW5l L3JlYWRsaW5lLmgiCi1AQCAtMTEyLDggKzExMyw2IEBAIHN0cnVjdCBicmVha3BvaW50ICpzZXRf cmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkJCQkJICAgICAgc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSwKLSAJCQkJCSAgICAgIGVudW0gYnB0eXBlKTsKLSAKLS1zdGF0 aWMgdm9pZCBjaGVja19kdXBsaWNhdGVzIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKLS0KLSBzdGF0 aWMgdm9pZCBicmVha3BvaW50X2FkanVzdG1lbnRfd2FybmluZyAoQ09SRV9BRERSLCBDT1JFX0FE RFIsIGludCwgaW50KTsKLSAKLSBzdGF0aWMgQ09SRV9BRERSIGFkanVzdF9icmVha3BvaW50X2Fk ZHJlc3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotQEAgLTMzNywxNCArMzM2LDE0IEBAIHN0 YXRpYyBpbnQgZXhlY3V0aW5nX3N0YXJ0dXA7Ci0gCSAgICAgQiA/IChUTVA9Qi0+bmV4dCwgMSk6 IDA7CVwKLSAJICAgICBCID0gVE1QKQotIAotLS8qIFNpbWlsYXIgaXRlcmF0b3JzIGZvciB0aGUg bG93LWxldmVsIGJyZWFrcG9pbnRzLiAgKi8KLS0KLS0jZGVmaW5lIEFMTF9CUF9MT0NBVElPTlMo QikgIGZvciAoQiA9IGJwX2xvY2F0aW9uX2NoYWluOyBCOyBCID0gQi0+Z2xvYmFsX25leHQpCi0r LyogU2ltaWxhciBpdGVyYXRvciBmb3IgdGhlIGxvdy1sZXZlbCBicmVha3BvaW50cy4gIFNBRkUg dmFyaWFudCBpcyBub3QKLSsgICBwcm92aWRlZCBzbyB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xp c3QgbXVzdCBub3QgYmUgY2FsbGVkIHdoaWxlIGV4ZWN1dGluZwotKyAgIHRoZSBibG9jayBvZiBB TExfQlBfTE9DQVRJT05TLiAgKi8KLSAKLS0jZGVmaW5lIEFMTF9CUF9MT0NBVElPTlNfU0FGRShC LFRNUCkJXAotLQlmb3IgKEIgPSBicF9sb2NhdGlvbl9jaGFpbjsJXAotLQkgICAgIEIgPyAoVE1Q PUItPmdsb2JhbF9uZXh0LCAxKTogMDsJXAotLQkgICAgIEIgPSBUTVApCi0rI2RlZmluZSBBTExf QlBfTE9DQVRJT05TKEIsQlBfVE1QKQkJCQkJXAotKwlmb3IgKEJQX1RNUCA9IGJwX2xvY2F0aW9u OwkJCQkJXAotKwkgICAgIEJQX1RNUCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQg JiYgKEIgPSAqQlBfVE1QKTsJXAotKwkgICAgIEJQX1RNUCsrKQotIAotIC8qIEl0ZXJhdG9yIGZv ciB0cmFjZXBvaW50cyBvbmx5LiAgKi8KLSAKLUBAIC0zNTYsMTAgKzM1NSwzMSBAQCBzdGF0aWMg aW50IGV4ZWN1dGluZ19zdGFydHVwOwotIAotIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50 X2NoYWluOwotIAotLXN0cnVjdCBicF9sb2NhdGlvbiAqYnBfbG9jYXRpb25fY2hhaW47Ci0rLyog QXJyYXkgaXMgc29ydGVkIGJ5IGJwX2xvY2F0aW9uX2NvbXBhcmUgLSBwcmltYXJpbHkgYnkgdGhl IEFERFJFU1MuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgYnBfbG9jYXRpb24gKipicF9sb2NhdGlv bjsKLSsKLSsvKiBOdW1iZXIgb2YgZWxlbWVudHMgb2YgQlBfTE9DQVRJT04uICAqLwotKwotK3N0 YXRpYyB1bnNpZ25lZCBicF9sb2NhdGlvbl9jb3VudDsKLSsKLSsvKiBNYXhpbXVtIGFsaWdubWVu dCBvZmZzZXQgYmV0d2VlbiBicF90YXJnZXRfaW5mby5QTEFDRURfQUREUkVTUyBhbmQgQUREUkVT UwotKyAgIGZvciB0aGUgY3VycmVudCBlbGVtZW50cyBvZiBCUF9MT0NBVElPTiB3aGljaCBnZXQg YSB2YWxpZCByZXN1bHQgZnJvbQotKyAgIGJwX2xvY2F0aW9uX2hhc19zaGFkb3cuICBZb3UgY2Fu IHVzZSBpdCBmb3Igcm91Z2hseSBsaW1pdGluZyB0aGUgc3VicmFuZ2Ugb2YKLSsgICBCUF9MT0NB VElPTiB0byBzY2FuIGZvciBzaGFkb3cgYnl0ZXMgZm9yIGFuIGFkZHJlc3MgeW91IG5lZWQgdG8g cmVhZC4gICovCi0rCi0rc3RhdGljIENPUkVfQUREUiBicF9sb2NhdGlvbl9wbGFjZWRfYWRkcmVz c19iZWZvcmVfYWRkcmVzc19tYXg7Ci0rCi0rLyogTWF4aW11bSBvZmZzZXQgcGx1cyBhbGlnbm1l bnQgYmV0d2VlbgotKyAgIGJwX3RhcmdldF9pbmZvLlBMQUNFRF9BRERSRVNTICsgYnBfdGFyZ2V0 X2luZm8uU0hBRE9XX0xFTiBhbmQgQUREUkVTUyBmb3IKLSsgICB0aGUgY3VycmVudCBlbGVtZW50 cyBvZiBCUF9MT0NBVElPTiB3aGljaCBnZXQgYSB2YWxpZCByZXN1bHQgZnJvbQotKyAgIGJwX2xv Y2F0aW9uX2hhc19zaGFkb3cuICBZb3UgY2FuIHVzZSBpdCBmb3Igcm91Z2hseSBsaW1pdGluZyB0 aGUgc3VicmFuZ2Ugb2YKLSsgICBCUF9MT0NBVElPTiB0byBzY2FuIGZvciBzaGFkb3cgYnl0ZXMg Zm9yIGFuIGFkZHJlc3MgeW91IG5lZWQgdG8gcmVhZC4gICovCi0rCi0rc3RhdGljIENPUkVfQURE UiBicF9sb2NhdGlvbl9zaGFkb3dfbGVuX2FmdGVyX2FkZHJlc3NfbWF4OwotIAotIC8qIFRoZSBs b2NhdGlvbnMgdGhhdCBubyBsb25nZXIgY29ycmVzcG9uZCB0byBhbnkgYnJlYWtwb2ludCwKLS0g ICB1bmxpbmtlZCBmcm9tIGJwX2xvY2F0aW9uX2NoYWluLCBidXQgZm9yIHdoaWNoIGEgaGl0Ci0r ICAgdW5saW5rZWQgZnJvbSBicF9sb2NhdGlvbiBhcnJheSwgYnV0IGZvciB3aGljaCBhIGhpdAot ICAgIG1heSBzdGlsbCBiZSByZXBvcnRlZCBieSBhIHRhcmdldC4gICovCi0gVkVDKGJwX2xvY2F0 aW9uX3ApICptb3JpYnVuZF9sb2NhdGlvbnMgPSBOVUxMOwotIAotQEAgLTU4Miw2ICs2MDIsNTMg QEAgZ2V0X2JyZWFrcG9pbnQgKGludCBudW0pCitAQCAtNjE2LDYgKzYxNyw1MyBAQCBnZXRfYnJl YWtwb2ludCAoaW50IG51bSkKICB9CiAgCiAgDApAQCAtNTkzLDcgKzQzMiw3IEBAIGluZGV4IDgx MWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgLyogY29uZGl0aW9uIE4gRVhQIC0tIHNldCBicmVhayBj b25kaXRpb24gb2YgYnJlYWtwb2ludCBOIHRvIEVYUC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBA IC02MDIsNDIgKzY2OSw3IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKK0BAIC02MzYsNDIgKzY4NCw3IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSkKICAgIEFMTF9CUkVBS1BPSU5UUyAoYikKICAgICAgaWYgKGItPm51bWJl ciA9PSBibnVtKQogICAgICAgIHsKQEAgLTYzNywxODEgKzQ3Niw4IEBAIGluZGV4IDgxMWNkZmIu LjBmMzUxMDEgMTAwNjQ0CiAgCXJldHVybjsKICAgICAgICB9CiAgCi1AQCAtNzM1LDM1ICs3Njcs ODggQEAgY29tbWFuZHNfZnJvbV9jb250cm9sX2NvbW1hbmQgKGNoYXIgKmFyZywgc3RydWN0IGNv bW1hbmRfbGluZSAqY21kKQotICAgICAgIH0KLSAgIGVycm9yIChfKCJObyBicmVha3BvaW50IG51 bWJlciAlZC4iKSwgYm51bSk7Ci0gfQotLQwKLSsKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgQkwt PlRBUkdFVF9JTkZPIGNvbnRhaW5zIHZhbGlkIGluZm9ybWF0aW9uLiAgKi8KLSsKLStzdGF0aWMg aW50Ci0rYnBfbG9jYXRpb25faGFzX3NoYWRvdyAoc3RydWN0IGJwX2xvY2F0aW9uICpibCkKLSt7 Ci0rICBpZiAoYmwtPmxvY190eXBlICE9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50KQotKyAg ICByZXR1cm4gMDsKLSsgIGlmICghYmwtPmluc2VydGVkKQotKyAgICByZXR1cm4gMDsKLSsgIGlm IChibC0+dGFyZ2V0X2luZm8uc2hhZG93X2xlbiA9PSAwKQotKyAgICAvKiBicCBpc24ndCB2YWxp ZCwgb3IgZG9lc24ndCBzaGFkb3cgbWVtb3J5LiAgKi8KLSsgICAgcmV0dXJuIDA7Ci0rICByZXR1 cm4gMTsKLSt9Ci0rCi0gLyogVXBkYXRlIEJVRiwgd2hpY2ggaXMgTEVOIGJ5dGVzIHJlYWQgZnJv bSB0aGUgdGFyZ2V0IGFkZHJlc3MgTUVNQUREUiwKLS0gICBieSByZXBsYWNpbmcgYW55IG1lbW9y eSBicmVha3BvaW50cyB3aXRoIHRoZWlyIHNoYWRvd2VkIGNvbnRlbnRzLiAgKi8KLSsgICBieSBy ZXBsYWNpbmcgYW55IG1lbW9yeSBicmVha3BvaW50cyB3aXRoIHRoZWlyIHNoYWRvd2VkIGNvbnRl bnRzLgotKwotKyAgIFRoZSByYW5nZSBvZiBzaGFkb3dlZCBhcmVhIGJ5IGVhY2ggYnBfbG9jYXRp b24gaXM6Ci0rICAgICBiLT5hZGRyZXNzIC0gYnBfbG9jYXRpb25fcGxhY2VkX2FkZHJlc3NfYmVm b3JlX2FkZHJlc3NfbWF4Ci0rICAgICB1cCB0byBiLT5hZGRyZXNzICsgYnBfbG9jYXRpb25fc2hh ZG93X2xlbl9hZnRlcl9hZGRyZXNzX21heAotKyAgIFRoZSByYW5nZSB3ZSB3ZXJlIHJlcXVlc3Rl ZCB0byByZXNvbHZlIHNoYWRvd3MgZm9yIGlzOgotKyAgICAgbWVtYWRkciAuLi4gbWVtYWRkciAr IGxlCi0rICAgVGh1cyB0aGUgc2FmZSBjdXRvZmYgYm91bmRhcmllcyBmb3IgcGVyZm9ybWFuY2Ug b3B0aW1pemF0aW9uIGFyZQotKyAgICAgbWVtYWRkciArIGxlbiA8PSBiLT5hZGRyZXNzIC0gYnBf bG9jYXRpb25fcGxhY2VkX2FkZHJlc3NfYmVmb3JlX2FkZHJlc3NfbWF4Ci0rICAgYW5kOgotKyAg ICAgYi0+YWRkcmVzcyArIGJwX2xvY2F0aW9uX3NoYWRvd19sZW5fYWZ0ZXJfYWRkcmVzc19tYXgg PD0gbWVtYWRkciAgKi8KLSAKLSB2b2lkCi0gYnJlYWtwb2ludF9yZXN0b3JlX3NoYWRvd3MgKGdk Yl9ieXRlICpidWYsIFVMT05HRVNUIG1lbWFkZHIsIExPTkdFU1QgbGVuKQotIHsKLS0gIHN0cnVj dCBicF9sb2NhdGlvbiAqYjsKLS0gIENPUkVfQUREUiBicF9hZGRyID0gMDsKLS0gIGludCBicF9z aXplID0gMDsKLS0gIGludCBicHRvZmZzZXQgPSAwOwotKyAgLyogTGVmdCBib3VuZGFyeSwgcmln aHQgYm91bmRhcnkgYW5kIG1lZGlhIGVsZW1lbnQgb2Ygb3VyIGJpbmFyeSBzZWFyY2guICAqLwot KyAgdW5zaWduZWQgYmNfbCwgYmNfciwgYmM7Ci0rCi0rICAvKiBGaW5kIEJDX0wgd2hpY2ggaXMg YSBsZWZ0bW9zdCBlbGVtZW50IHdoaWNoIG1heSBhZmZlY3QgQlVGIGNvbnRlbnQuICBJdCBpcwot KyAgICAgc2FmZSB0byByZXBvcnQgbG93ZXIgdmFsdWUgYnV0IGEgZmFpbHVyZSB0byByZXBvcnQg aGlnaGVyIG9uZS4gICovCi0gCi0tICBBTExfQlBfTE9DQVRJT05TIChiKQotKyAgYmNfbCA9IDA7 Ci0rICBiY19yID0gYnBfbG9jYXRpb25fY291bnQ7Ci0rICB3aGlsZSAoYmNfbCArIDEgPCBiY19y KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKwotKyAgICAgIGJjID0g KGJjX2wgKyBiY19yKSAvIDI7Ci0rICAgICAgYiA9IGJwX2xvY2F0aW9uW2JjXTsKLSsKLSsgICAg ICBpZiAoYi0+YWRkcmVzcyArIGJwX2xvY2F0aW9uX3NoYWRvd19sZW5fYWZ0ZXJfYWRkcmVzc19t YXggPj0gYi0+YWRkcmVzcwotKwkgICYmIGItPmFkZHJlc3MgKyBicF9sb2NhdGlvbl9zaGFkb3df bGVuX2FmdGVyX2FkZHJlc3NfbWF4IDw9IG1lbWFkZHIpCi0rCWJjX2wgPSBiYzsKLSsgICAgICBl bHNlCi0rCWJjX3IgPSBiYzsKLSsgICAgfQotKwotKyAgLyogTm93IGRvIGZ1bGwgcHJvY2Vzc2lu ZyBvZiB0aGUgZm91bmQgcmVsZXZhbnQgcmFuZ2Ugb2YgZWxlbWVudHMuICAqLwotKwotKyAgZm9y IChiYyA9IGJjX2w7IGJjIDwgYnBfbG9jYXRpb25fY291bnQ7IGJjKyspCi0gICB7Ci0rICAgIHN0 cnVjdCBicF9sb2NhdGlvbiAqYiA9IGJwX2xvY2F0aW9uW2JjXTsKLSsgICAgQ09SRV9BRERSIGJw X2FkZHIgPSAwOwotKyAgICBpbnQgYnBfc2l6ZSA9IDA7Ci0rICAgIGludCBicHRvZmZzZXQgPSAw OwotKwotICAgICBpZiAoYi0+b3duZXItPnR5cGUgPT0gYnBfbm9uZSkKLSAgICAgICB3YXJuaW5n IChfKCJyZWFkaW5nIHRocm91Z2ggYXBwYXJlbnRseSBkZWxldGVkIGJyZWFrcG9pbnQgIyVkPyIp LAotICAgICAgICAgICAgICAgYi0+b3duZXItPm51bWJlcik7Ci0gCi0tICAgIGlmIChiLT5sb2Nf dHlwZSAhPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludCkKLS0gICAgICBjb250aW51ZTsKLS0g ICAgaWYgKCFiLT5pbnNlcnRlZCkKLSsgICAgLyogUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOiBh bnkgZnV0aGVyIGVsZW1lbnQgY2FuIG5vIGxvbmdlciBhZmZlY3QgQlVGCi0rICAgICAgIGNvbnRl bnQuICAqLwotKwotKyAgICBpZiAoYi0+YWRkcmVzcyA+PSBicF9sb2NhdGlvbl9wbGFjZWRfYWRk cmVzc19iZWZvcmVfYWRkcmVzc19tYXgKLSsgICAgICAgICYmIG1lbWFkZHIgKyBsZW4gPD0gYi0+ YWRkcmVzcwotKwkJCSAgICAtIGJwX2xvY2F0aW9uX3BsYWNlZF9hZGRyZXNzX2JlZm9yZV9hZGRy ZXNzX21heCkKLSsgICAgICBicmVhazsKLSsKLSsgICAgaWYgKCFicF9sb2NhdGlvbl9oYXNfc2hh ZG93IChiKSkKLSAgICAgICBjb250aW51ZTsKLSsKLSAgICAgLyogQWRkcmVzc2VzIGFuZCBsZW5n dGggb2YgdGhlIHBhcnQgb2YgdGhlIGJyZWFrcG9pbnQgdGhhdAotICAgICAgICB3ZSBuZWVkIHRv IGNvcHkuICAqLwotICAgICBicF9hZGRyID0gYi0+dGFyZ2V0X2luZm8ucGxhY2VkX2FkZHJlc3M7 Ci0gICAgIGJwX3NpemUgPSBiLT50YXJnZXRfaW5mby5zaGFkb3dfbGVuOwotLSAgICBpZiAoYnBf c2l6ZSA9PSAwKQotLSAgICAgIC8qIGJwIGlzbid0IHZhbGlkLCBvciBkb2Vzbid0IHNoYWRvdyBt ZW1vcnkuICAqLwotLSAgICAgIGNvbnRpbnVlOwotIAotICAgICBpZiAoYnBfYWRkciArIGJwX3Np emUgPD0gbWVtYWRkcikKLSAgICAgICAvKiBUaGUgYnJlYWtwb2ludCBpcyBlbnRpcmVseSBiZWZv cmUgdGhlIGNodW5rIG9mIG1lbW9yeSB3ZQotQEAgLTkxMiw3ICs5OTcsNyBAQCB1cGRhdGVfd2F0 Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQotICAgc3RydWN0IGJw X2xvY2F0aW9uICpsb2M7Ci0gICBicHN0YXQgYnM7Ci0gCi0tICAvKiBXZSBkb24ndCBmcmVlIGxv Y2F0aW9ucy4gIFRoZXkgYXJlIHN0b3JlZCBpbiBicF9sb2NhdGlvbl9jaGFpbiBhbmQKLSsgIC8q IFdlIGRvbid0IGZyZWUgbG9jYXRpb25zLiAgVGhleSBhcmUgc3RvcmVkIGluIGJwX2xvY2F0aW9u IGFycmF5IGFuZAotICAgICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbnMgd2lsbCBldmVudHVhbGx5 IGRlbGV0ZSB0aGVtIGFuZCByZW1vdmUKLSAgICAgIGJyZWFrcG9pbnRzIGlmIG5lZWRlZC4gICov Ci0gICBiLT5sb2MgPSBOVUxMOwotQEAgLTEzNDcsNyArMTQzMiw3IEBAIHN0YXRpYyB2b2lkCi0g aW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQotIHsKLSAgIHN0cnVjdCBicmVha3Bv aW50ICpicHQ7Ci0tICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmIsICp0ZW1wOwotKyAgc3RydWN0IGJw X2xvY2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCBlcnJvciA9IDA7Ci0gICBpbnQgdmFsID0g MDsKLSAgIGludCBkaXNhYmxlZF9icmVha3MgPSAwOwotQEAgLTEzNjAsNyArMTQ0NSw3IEBAIGlu c2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKLSAgICAgIHRoZXJlIHdhcyBhbiBlcnJv ci4gICovCi0gICBmcHJpbnRmX3VuZmlsdGVyZWQgKHRtcF9lcnJvcl9zdHJlYW0sICJXYXJuaW5n OlxuIik7Ci0gCQotLSAgQUxMX0JQX0xPQ0FUSU9OU19TQUZFIChiLCB0ZW1wKQotKyAgQUxMX0JQ X0xPQ0FUSU9OUyAoYiwgYnBfdG1wKQotICAgICB7Ci0gICAgICAgaWYgKCFzaG91bGRfYmVfaW5z ZXJ0ZWQgKGIpIHx8IGItPmluc2VydGVkKQotIAljb250aW51ZTsKLUBAIC0xNDM0LDEwICsxNTE5 LDEwIEBAIFlvdSBtYXkgaGF2ZSByZXF1ZXN0ZWQgdG9vIG1hbnkgaGFyZHdhcmUgYnJlYWtwb2lu dHMvd2F0Y2hwb2ludHMuXG4iKTsKLSBpbnQKLSByZW1vdmVfYnJlYWtwb2ludHMgKHZvaWQpCi0g ewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpiLCAq KmJwX3RtcDsKLSAgIGludCB2YWwgPSAwOwotIAotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYikKLSsg IEFMTF9CUF9MT0NBVElPTlMgKGIsIGJwX3RtcCkKLSAgIHsKLSAgICAgaWYgKGItPmluc2VydGVk KQotICAgICAgIHZhbCB8PSByZW1vdmVfYnJlYWtwb2ludCAoYiwgbWFya191bmluc2VydGVkKTsK LUBAIC0xNDQ4LDEwICsxNTMzLDEwIEBAIHJlbW92ZV9icmVha3BvaW50cyAodm9pZCkKLSBpbnQK LSByZW1vdmVfaHdfd2F0Y2hwb2ludHMgKHZvaWQpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9u ICpiOwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCB2YWwgPSAw OwotIAotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYikKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGIsIGJw X3RtcCkKLSAgIHsKLSAgICAgaWYgKGItPmluc2VydGVkICYmIGItPmxvY190eXBlID09IGJwX2xv Y19oYXJkd2FyZV93YXRjaHBvaW50KQotICAgICAgIHZhbCB8PSByZW1vdmVfYnJlYWtwb2ludCAo YiwgbWFya191bmluc2VydGVkKTsKLUBAIC0xNDYyLDcgKzE1NDcsNyBAQCByZW1vdmVfaHdfd2F0 Y2hwb2ludHMgKHZvaWQpCi0gaW50Ci0gcmVhdHRhY2hfYnJlYWtwb2ludHMgKGludCBwaWQpCi0g ewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpiLCAq KmJwX3RtcDsKLSAgIGludCB2YWw7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gc2F2 ZV9pbmZlcmlvcl9wdGlkICgpOwotICAgc3RydWN0IHVpX2ZpbGUgKnRtcF9lcnJvcl9zdHJlYW0g PSBtZW1fZmlsZW9wZW4gKCk7Ci1AQCAtMTQ3MSw3ICsxNTU2LDcgQEAgcmVhdHRhY2hfYnJlYWtw b2ludHMgKGludCBwaWQpCi0gICBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHRtcF9lcnJv cl9zdHJlYW0pOwotIAotICAgaW5mZXJpb3JfcHRpZCA9IHBpZF90b19wdGlkIChwaWQpOwotLSAg QUxMX0JQX0xPQ0FUSU9OUyAoYikKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGIsIGJwX3RtcCkKLSAg IHsKLSAgICAgaWYgKGItPmluc2VydGVkKQotICAgICAgIHsKLUBAIC0xNTY5LDEyICsxNjU0LDQy IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50IChjaGFyICpmdW5jX25hbWUpCi0g ICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDEpOworQEAgLTE4NzAsNiArMTg4MywzNiBA QCBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoY2hhciAqZnVuY19uYW1lKQorICAg ZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgfQogIAogKy8qIEluc3RhbGwgYSBtYXN0ZXIgYnJl YWtwb2ludCBvbiB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLiAgKi8KQEAgLTg0NywyMyArNTEz LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICB2b2lkCiAgdXBkYXRlX2JyZWFr cG9pbnRzX2FmdGVyX2V4ZWMgKHZvaWQpCiAgewotICAgc3RydWN0IGJyZWFrcG9pbnQgKmI7Ci0g ICBzdHJ1Y3QgYnJlYWtwb2ludCAqdGVtcDsKLS0gIHN0cnVjdCBicF9sb2NhdGlvbiAqYnBsb2M7 Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJwbG9jLCAqKmJwbG9jcF90bXA7Ci0gCi0gICAvKiBX ZSdyZSBhYm91dCB0byBkZWxldGUgYnJlYWtwb2ludHMgZnJvbSBHREIncyBsaXN0cy4gIElmIHRo ZQotICAgICAgSU5TRVJURUQgZmxhZyBpcyB0cnVlLCBHREIgd2lsbCB0cnkgdG8gbGlmdCB0aGUg YnJlYWtwb2ludHMgYnkKLUBAIC0xNTg0LDcgKzE2OTksNyBAQCB1cGRhdGVfYnJlYWtwb2ludHNf YWZ0ZXJfZXhlYyAodm9pZCkKLSAgICAgIGJyZWFrcG9pbnRzIG91dCBhcyBzb29uIGFzIGl0IGRl dGVjdHMgYW4gZXhlYy4gIFdlIGRvbid0IGRvIHRoYXQKLSAgICAgIGhlcmUgaW5zdGVhZCwgYmVj YXVzZSB0aGVyZSBtYXkgYmUgb3RoZXIgYXR0ZW1wdHMgdG8gZGVsZXRlCi0gICAgICBicmVha3Bv aW50cyBhZnRlciBkZXRlY3RpbmcgYW4gZXhlYyBhbmQgYmVmb3JlIHJlYWNoaW5nIGhlcmUuICAq LwotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYnBsb2MpCi0rICBBTExfQlBfTE9DQVRJT05TIChicGxv YywgYnBsb2NwX3RtcCkKLSAgICAgZ2RiX2Fzc2VydCAoIWJwbG9jLT5pbnNlcnRlZCk7Ci0gCi0g ICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKLUBAIC0xNjA2LDcgKzE3MjEsNyBAQCB1 cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0xOTExLDcgKzE5NTQsNyBA QCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgICAgLyogVGhyZWFkIGV2 ZW50IGJyZWFrcG9pbnRzIG11c3QgYmUgc2V0IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAogICAgICAg ICBhcyBtdXN0IG92ZXJsYXkgZXZlbnQgYW5kIGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRzLiAg Ki8KICAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBf b3ZlcmxheV9ldmVudApAQCAtODcyLDcgKzUyMiw3IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEg MTAwNjQ0CiAgICAgICAgewogIAlkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgCWNvbnRpbnVlOwot QEAgLTE2MjEsNyArMTczNiw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lk KQorQEAgLTE5MjYsNyArMTk2OSw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2 b2lkKQogIAogICAgICAvKiBMb25nam1wIGFuZCBsb25nam1wLXJlc3VtZSBicmVha3BvaW50cyBh cmUgYWxzbyBtZWFuaW5nbGVzcwogICAgICAgICBhZnRlciBhbiBleGVjLiAgKi8KQEAgLTg4Miw3 ICs1MzIsNyBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogICAgICAgIHsKICAJZGVs ZXRlX2JyZWFrcG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xNjgyLDEyICsxNzk4LDEzIEBA IHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQorQEAgLTE5ODcsNiArMjAzMSw3 IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQogICAgY3JlYXRlX2xvbmdq bXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfbG9uZ2ptcCIpOwogICAgY3JlYXRlX2xvbmdqbXBfbWFz dGVyX2JyZWFrcG9pbnQgKCJzaWdsb25nam1wIik7CiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJf YnJlYWtwb2ludCAoIl9zaWdsb25nam1wIik7CkBAIC04OTAsMjggKzU0MCwxNSBAQCBpbmRleCA4 MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogIH0KICAKICBpbnQKLSBkZXRhY2hfYnJlYWtwb2ludHMg KGludCBwaWQpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKyAgc3RydWN0IGJwX2xv Y2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCB2YWwgPSAwOwotICAgc3RydWN0IGNsZWFudXAg Km9sZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRpZCAoKTsKLSAKLUBAIC0xNjk2LDExICsxODEz LDEyIEBAIGRldGFjaF9icmVha3BvaW50cyAoaW50IHBpZCkKLSAKLSAgIC8qIFNldCBpbmZlcmlv cl9wdGlkOyByZW1vdmVfYnJlYWtwb2ludCB1c2VzIHRoaXMgZ2xvYmFsLiAgKi8KLSAgIGluZmVy aW9yX3B0aWQgPSBwaWRfdG9fcHRpZCAocGlkKTsKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGIpCi0r ICBBTExfQlBfTE9DQVRJT05TIChiLCBicF90bXApCi0gICB7CitAQCAtMjAxMCw2ICsyMDU1LDcg QEAgZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgcGlkKQogICAgICBpZiAoYi0+aW5zZXJ0ZWQpCi0g ICAgICAgdmFsIHw9IHJlbW92ZV9icmVha3BvaW50IChiLCBtYXJrX2luc2VydGVkKTsKKyAgICAg ICB2YWwgfD0gcmVtb3ZlX2JyZWFrcG9pbnRfMSAoYiwgbWFya19pbnNlcnRlZCk7CiAgICB9CiAr ICB2YWwgfD0gdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cyAoKTsKICAgIGRvX2NsZWFudXBzIChv bGRfY2hhaW4pOwogICAgcmV0dXJuIHZhbDsKICB9Ci1AQCAtMTc5MywxMiArMTkxMSwxNCBAQCBy ZW1vdmVfYnJlYWtwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVf dCBpcykKK0BAIC0yMTA5LDEyICsyMTU1LDE0IEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVj dCBicF9sb2NhdGlvbiAqYiwgaW5zZXJ0aW9uX3N0YXRlX3QgaXMpCiAgCXJldHVybiB2YWw7CiAg ICAgICAgYi0+aW5zZXJ0ZWQgPSAoaXMgPT0gbWFya19pbnNlcnRlZCk7CiAgICAgIH0KQEAgLTky OCw5OCArNTY1LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICAgICAgICB2YWwg PSB0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQgKGItPmFkZHJlc3MsIGItPmxlbmd0aCwgCiAgCQkJ CSAgICAgIGItPndhdGNocG9pbnRfdHlwZSk7CiAgCi1AQCAtMTgyNyw5ICsxOTQ3LDkgQEAgcmVt b3ZlX2JyZWFrcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqYiwgaW5zZXJ0aW9uX3N0YXRlX3Qg aXMpCi0gdm9pZAotIG1hcmtfYnJlYWtwb2ludHNfb3V0ICh2b2lkKQotIHsKLS0gIHN0cnVjdCBi cF9sb2NhdGlvbiAqYnB0OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpicHQsICoqYnB0cF90bXA7 Ci0gCi0tICBBTExfQlBfTE9DQVRJT05TIChicHQpCi0rICBBTExfQlBfTE9DQVRJT05TIChicHQs IGJwdHBfdG1wKQotICAgICBicHQtPmluc2VydGVkID0gMDsKLSB9Ci0gCi1AQCAtMTg0OSw3ICsx OTY5LDcgQEAgdm9pZAotIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZfY29udGV4 dCBjb250ZXh0KQotIHsKLSAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVtcDsKLS0gIHN0cnVj dCBicF9sb2NhdGlvbiAqYnB0OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpicHQsICoqYnB0cF90 bXA7Ci0gICBpbnQgaXg7Ci0gCi0gICAvKiBJZiBicmVha3BvaW50IGxvY2F0aW9ucyBhcmUgc2hh cmVkIGFjcm9zcyBwcm9jZXNzZXMsIHRoZW4gdGhlcmUncwotQEAgLTE4NTcsNyArMTk3Nyw3IEBA IGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZfY29udGV4dCBjb250ZXh0KQotICAg aWYgKGdkYmFyY2hfaGFzX2dsb2JhbF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gpKQotICAg ICByZXR1cm47Ci0gCi0tICBBTExfQlBfTE9DQVRJT05TIChicHQpCi0rICBBTExfQlBfTE9DQVRJ T05TIChicHQsIGJwdHBfdG1wKQotICAgICBpZiAoYnB0LT5vd25lci0+ZW5hYmxlX3N0YXRlICE9 IGJwX3Blcm1hbmVudCkKLSAgICAgICBicHQtPmluc2VydGVkID0gMDsKLSAKLUBAIC0xOTE4LDEw ICsyMDM4LDEwIEBAIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZfY29udGV4dCBj b250ZXh0KQotIGVudW0gYnJlYWtwb2ludF9oZXJlCi0gYnJlYWtwb2ludF9oZXJlX3AgKENPUkVf QUREUiBwYykKLSB7Ci0tICBjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJwdDsKLSsgIHN0cnVj dCBicF9sb2NhdGlvbiAqYnB0LCAqKmJwdHBfdG1wOwotICAgaW50IGFueV9icmVha3BvaW50X2hl cmUgPSAwOwotIAotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYnB0KQotKyAgQUxMX0JQX0xPQ0FUSU9O UyAoYnB0LCBicHRwX3RtcCkKLSAgICAgewotICAgICAgIGlmIChicHQtPmxvY190eXBlICE9IGJw X2xvY19zb2Z0d2FyZV9icmVha3BvaW50Ci0gCSAgJiYgYnB0LT5sb2NfdHlwZSAhPSBicF9sb2Nf aGFyZHdhcmVfYnJlYWtwb2ludCkKLUBAIC0xOTYxLDE2ICsyMDgxLDE2IEBAIG1vcmlidW5kX2Jy ZWFrcG9pbnRfaGVyZV9wIChDT1JFX0FERFIgcGMpCi0gfQotIAotIC8qIFJldHVybnMgbm9uLXpl cm8gaWYgdGhlcmUncyBhIGJyZWFrcG9pbnQgaW5zZXJ0ZWQgYXQgUEMsIHdoaWNoIGlzCi0tICAg aW5zZXJ0ZWQgdXNpbmcgcmVndWxhciBicmVha3BvaW50X2NoYWluL2JwX2xvY2F0aW9uX2NoYWlu IG1lY2hhbmlzbS4KLSsgICBpbnNlcnRlZCB1c2luZyByZWd1bGFyIGJyZWFrcG9pbnRfY2hhaW4g LyBicF9sb2NhdGlvbiBhcnJheSBtZWNoYW5pc20uCi0gICAgVGhpcyBkb2VzIG5vdCBjaGVjayBm b3Igc2luZ2xlLXN0ZXAgYnJlYWtwb2ludHMsIHdoaWNoIGFyZQotICAgIGluc2VydGVkIGFuZCBy ZW1vdmVkIHVzaW5nIGRpcmVjdCB0YXJnZXQgbWFuaXB1bGF0aW9uLiAgKi8KLSAKLSBpbnQKLSBy ZWd1bGFyX2JyZWFrcG9pbnRfaW5zZXJ0ZWRfaGVyZV9wIChDT1JFX0FERFIgcGMpCi0gewotLSAg Y29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpicHQ7Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJw dCwgKipicHRwX3RtcDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGJwdCkKLSsgIEFMTF9CUF9M T0NBVElPTlMgKGJwdCwgYnB0cF90bXApCi0gICAgIHsKLSAgICAgICBpZiAoYnB0LT5sb2NfdHlw ZSAhPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludAotIAkgICYmIGJwdC0+bG9jX3R5cGUgIT0g YnBfbG9jX2hhcmR3YXJlX2JyZWFrcG9pbnQpCi1AQCAtMjAxMSwxMCArMjEzMSwxMCBAQCBicmVh a3BvaW50X2luc2VydGVkX2hlcmVfcCAoQ09SRV9BRERSIHBjKQotIGludAotIHNvZnR3YXJlX2Jy ZWFrcG9pbnRfaW5zZXJ0ZWRfaGVyZV9wIChDT1JFX0FERFIgcGMpCi0gewotLSAgY29uc3Qgc3Ry dWN0IGJwX2xvY2F0aW9uICpicHQ7Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJwdCwgKipicHRw X3RtcDsKLSAgIGludCBhbnlfYnJlYWtwb2ludF9oZXJlID0gMDsKLSAKLS0gIEFMTF9CUF9MT0NB VElPTlMgKGJwdCkKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGJwdCwgYnB0cF90bXApCi0gICAgIHsK LSAgICAgICBpZiAoYnB0LT5sb2NfdHlwZSAhPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludCkK LSAJY29udGludWU7Ci1AQCAtMjA0NCwxMiArMjE2NCwxMiBAQCBzb2Z0d2FyZV9icmVha3BvaW50 X2luc2VydGVkX2hlcmVfcCAoQ09SRV9BRERSIHBjKQotIGludAotIGJyZWFrcG9pbnRfdGhyZWFk X21hdGNoIChDT1JFX0FERFIgcGMsIHB0aWRfdCBwdGlkKQotIHsKLS0gIGNvbnN0IHN0cnVjdCBi cF9sb2NhdGlvbiAqYnB0OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpicHQsICoqYnB0cF90bXA7 Ci0gICAvKiBUaGUgdGhyZWFkIGFuZCB0YXNrIElEcyBhc3NvY2lhdGVkIHRvIFBUSUQsIGNvbXB1 dGVkIGxhemlseS4gICovCi0gICBpbnQgdGhyZWFkID0gLTE7Ci0gICBpbnQgdGFzayA9IDA7Ci0g ICAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGJwdCkKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGJwdCwg YnB0cF90bXApCi0gICAgIHsKLSAgICAgICBpZiAoYnB0LT5sb2NfdHlwZSAhPSBicF9sb2Nfc29m dHdhcmVfYnJlYWtwb2ludAotIAkgICYmIGJwdC0+bG9jX3R5cGUgIT0gYnBfbG9jX2hhcmR3YXJl X2JyZWFrcG9pbnQpCi1AQCAtMjUwMyw2ICsyNjIzLDEyIEBAIHByaW50X2l0X3R5cGljYWwgKGJw c3RhdCBicykKK0BAIC0yODk0LDYgKzI5NDIsMTIgQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0 IGJzKQogICAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7CiAgICAgICAgYnJlYWs7CiAgCkBA IC0xMDMyLDcgKzU3OCw3IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgIGNh c2UgYnBfd2F0Y2hwb2ludDoKICAgICAgY2FzZSBicF9oYXJkd2FyZV93YXRjaHBvaW50OgogICAg ICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51bWJlcik7Ci1AQCAtMjU5MCw2ICsyNzE2LDgg QEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQorQEAgLTI5ODEsNiArMzAzNSw4IEBAIHBy aW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAgY2FzZSBicF9ub25lOgogICAgICBjYXNl IGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC0xMDQxLDcgKzU4 Nyw3IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgIGNhc2UgYnBfc3RlcF9y ZXN1bWU6CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKICAgICAgY2FzZSBicF9jYWxs X2R1bW15OgotQEAgLTI5NzMsOCArMzEwMSwxMiBAQCBicHN0YXRfY2hlY2tfbG9jYXRpb24gKGNv bnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsIENPUkVfQUREUiBicF9hZGRyKQorQEAgLTMzODUs OCArMzQ0MSwxMiBAQCBicHN0YXRfY2hlY2tfbG9jYXRpb24gKGNvbnN0IHN0cnVjdCBicF9sb2Nh dGlvbiAqYmwsCiAgCiAgLyogSWYgQlMgcmVmZXJzIHRvIGEgd2F0Y2hwb2ludCwgZGV0ZXJtaW5l IGlmIHRoZSB3YXRjaGVkIHZhbHVlcwogICAgIGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBhbmQgd2Ug c2hvdWxkIHN0b3AuICBJZiBub3QsIHNldCBCUy0+c3RvcApAQCAtMTA1Niw3ICs2MDIsNyBAQCBp bmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChi cHN0YXQgYnMpCiAgewogICAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCA9IGJzLT5icmVh a3BvaW50X2F0OwotQEAgLTMwNjMsOCArMzE5NSwxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2lu dCAoYnBzdGF0IGJzKQorQEAgLTM0NzUsOCArMzUzNSwxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hw b2ludCAoYnBzdGF0IGJzKQogIAkgICAgIGFueXRoaW5nIGZvciB0aGlzIHdhdGNocG9pbnQuICAq LwogIAkgIGJzLT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7CiAgCSAgYnMtPnN0b3AgPSAwOwpA QCAtMTA2Nyw5MyArNjEzLDUxIEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgfQog IAogIAotQEAgLTMxNTcsMTcgKzMyOTEsMTkgQEAgYnBzdGF0Ci0gYnBzdGF0X3N0b3Bfc3RhdHVz IChDT1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCi0gewotICAgc3RydWN0IGJyZWFrcG9p bnQgKmIgPSBOVUxMOwotLSAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibDsKLSsgIHN0cnVj dCBicF9sb2NhdGlvbiAqYmwsICoqYmxwX3RtcDsKLSAgIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9j OwotICAgLyogUm9vdCBvZiB0aGUgY2hhaW4gb2YgYnBzdGF0J3MgKi8KLSAgIHN0cnVjdCBicHN0 YXRzIHJvb3RfYnNbMV07Ci0gICAvKiBQb2ludGVyIHRvIHRoZSBsYXN0IHRoaW5nIGluIHRoZSBj aGFpbiBjdXJyZW50bHkuICAqLwotICAgYnBzdGF0IGJzID0gcm9vdF9iczsKLSAgIGludCBpeDsK LS0gIGludCBuZWVkX3JlbW92ZV9pbnNlcnQ7Ci0rICBpbnQgbmVlZF9yZW1vdmVfaW5zZXJ0LCB1 cGRhdGVfbG9jYXRpb25zID0gMDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGJsKQotKyAgQUxM X0JQX0xPQ0FUSU9OUyAoYmwsIGJscF90bXApCi0gICB7Ci0rICAgIGJwc3RhdCBic19wcmV2ID0g YnM7Ci0rCi0gICAgIGIgPSBibC0+b3duZXI7Ci0gICAgIGdkYl9hc3NlcnQgKGIpOwotICAgICBp ZiAoIWJyZWFrcG9pbnRfZW5hYmxlZCAoYikgJiYgYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1h bmVudCkKLUBAIC0zMTg4LDYgKzMzMjQsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKENPUkVfQURE UiBicF9hZGRyLCBwdGlkX3QgcHRpZCkKLSAgICAgLyogQ29tZSBoZXJlIGlmIGl0J3MgYSB3YXRj aHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVzICovCi0gCi0gICAgIGJzID0g YnBzdGF0X2FsbG9jIChibCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0byBleHBsYWluIHN0b3Ag Ki8KLSsgICAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9PSBicyk7Ci0gCi0gICAgIC8qIEFz c3VtZSB3ZSBzdG9wLiAgU2hvdWxkIHdlIGZpbmQgd2F0Y2hwb2ludCB0aGF0IGlzIG5vdCBhY3R1 YWxseQotICAgICAgICB0cmlnZ2VyZWQsIG9yIGlmIGNvbmRpdGlvbiBvZiBicmVha3BvaW50IGlz IGZhbHNlLCB3ZSdsbCByZXNldAotQEAgLTMxOTUsMTIgKzMzMzIsMjEgQEAgYnBzdGF0X3N0b3Bf c3RhdHVzIChDT1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCi0gICAgIGJzLT5zdG9wID0g MTsKLSAgICAgYnMtPnByaW50ID0gMTsKLSAKLS0gICAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQg KGJzKTsKLS0gICAgaWYgKCFicy0+c3RvcCkKLS0gICAgICBjb250aW51ZTsKLSsgICAgaWYgKCFi cHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnMpKQotKyAgICAgIHsKLSsJLyogRW5zdXJlIGJwc3Rh dF9leHBsYWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKLSsJ ICAgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCi0rCi0rCWdkYl9hc3NlcnQgKGJzLT5wcmlu dF9pdCA9PSBwcmludF9pdF9ub29wKTsKLSsJZ2RiX2Fzc2VydCAoIWJzLT5zdG9wKTsKLSsJeGZy ZWUgKGJzKTsKLSsJYnMgPSBic19wcmV2OwotKwlicy0+bmV4dCA9IE5VTEw7Ci0rCWNvbnRpbnVl OwotKyAgICAgIH0KLSAKLSAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGIt PnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAotLQl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFz dGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBf ZXhjZXB0aW9uX21hc3RlcikKLSAgICAgICAvKiBXZSBkbyBub3Qgc3RvcCBmb3IgdGhlc2UuICAq LwotICAgICAgIGJzLT5zdG9wID0gMDsKLSAgICAgZWxzZQotQEAgLTMyMDgsMTQgKzMzNTQsMTUg QEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChDT1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCi0g ICAKLSAgICAgaWYgKGJzLT5zdG9wKQotICAgICAgIHsKLS0JKysoYi0+aGl0X2NvdW50KTsKLSsJ aWYgKGItPmVuYWJsZV9zdGF0ZSAhPSBicF9kaXNhYmxlZCkKLSsJICArKyhiLT5oaXRfY291bnQp OworQEAgLTM1OTAsNiArMzY1Miw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJl c3Nfc3BhY2UgKmFzcGFjZSwKICAKLSAJLyogV2Ugd2lsbCBzdG9wIGhlcmUgKi8KLSAJaWYgKGIt PmRpc3Bvc2l0aW9uID09IGRpc3BfZGlzYWJsZSkKLSAJICB7Ci0gCSAgICBpZiAoYi0+ZW5hYmxl X3N0YXRlICE9IGJwX3Blcm1hbmVudCkKLSAJICAgICAgYi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlz YWJsZWQ7Ci0tCSAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDApOwotKwkgICAgdXBk YXRlX2xvY2F0aW9ucyA9IDE7Ci0gCSAgfQotIAlpZiAoYi0+c2lsZW50KQotIAkgIGJzLT5wcmlu dCA9IDA7Ci1AQCAtMzIzNSw2ICszMzgyLDEwIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9B RERSIGJwX2FkZHIsIHB0aWRfdCBwdGlkKQotICAgICAgIGJzLT5wcmludF9pdCA9IHByaW50X2l0 X25vb3A7Ci0gICB9CisgICAgICAgZm9yIChibCA9IGItPmxvYzsgYmwgIT0gTlVMTDsgYmwgPSBi bC0+bmV4dCkKKyAJeworKwkgIGJwc3RhdCBic19wcmV2ID0gYnM7CisrCisgCSAgLyogRm9yIGhh cmR3YXJlIHdhdGNocG9pbnRzLCB3ZSBsb29rIG9ubHkgYXQgdGhlIGZpcnN0IGxvY2F0aW9uLgor IAkgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29yayBvbiBlbnRpcmUg ZXhwcmVzc2lvbiwKKyAJICAgICBub3QgdGhlIGluZGl2aWR1YWwgbG9jYXRpb25zLiAgRm9yIHJl YWQgd2F0Y2hvcGludHMsIHRoZQorQEAgLTM2MDcsNiArMzY3MSw3IEBAIGJwc3RhdF9zdG9wX3N0 YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKKyAJICAvKiBDb21lIGhlcmUgaWYg aXQncyBhIHdhdGNocG9pbnQsIG9yIGlmIHRoZSBicmVhayBhZGRyZXNzIG1hdGNoZXMgKi8KKyAK KyAJICBicyA9IGJwc3RhdF9hbGxvYyAoYmwsIGJzKTsJLyogQWxsb2MgYSBicHN0YXQgdG8gZXhw bGFpbiBzdG9wICovCisrCSAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9PSBicyk7CisgCisg CSAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmluZCB3YXRjaHBvaW50IHRoYXQgaXMg bm90IGFjdHVhbGx5CisgCSAgICAgdHJpZ2dlcmVkLCBvciBpZiBjb25kaXRpb24gb2YgYnJlYWtw b2ludCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKK0BAIC0zNjE0LDEyICszNjc5LDIyIEBAIGJwc3Rh dF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKKyAJICBicy0+c3Rv cCA9IDE7CisgCSAgYnMtPnByaW50ID0gMTsKKyAKKy0JICBicHN0YXRfY2hlY2tfd2F0Y2hwb2lu dCAoYnMpOworLQkgIGlmICghYnMtPnN0b3ApCistCSAgICBjb250aW51ZTsKKysJICBpZiAoIWJw c3RhdF9jaGVja193YXRjaHBvaW50IChicykpCisrCSAgICB7CisrCSAgICAgIC8qIEVuc3VyZSBi cHN0YXRfZXhwbGFpbnNfc2lnbmFsIHN0YXlzIGZhbHNlIGlmIHRoaXMgQkwgY291bGQgbm90IGJl CisrCQkgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCisrCisrCSAgICAgIGdkYl9hc3NlcnQg KGJzLT5wcmludF9pdCA9PSBwcmludF9pdF9ub29wKTsKKysJICAgICAgZ2RiX2Fzc2VydCAoIWJz LT5zdG9wKTsKKysJICAgICAgeGZyZWUgKGJzKTsKKysJICAgICAgYnMgPSBic19wcmV2OworKwkg ICAgICBicy0+bmV4dCA9IE5VTEw7CisrCSAgICAgIGNvbnRpbnVlOworKwkgICAgfQogIAotKyAg LyogRGVsYXkgdGhpcyBjYWxsIHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBBTExfQlBfTE9DQVRJT05T IGl0ZXJhdGlvbiBhYm92ZS4gICovCi0rICBpZiAodXBkYXRlX2xvY2F0aW9ucykKLSsgICAgdXBk YXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0ICgwKTsKLSsKLSAgIGZvciAoaXggPSAwOyBWRUNfaXRl cmF0ZSAoYnBfbG9jYXRpb25fcCwgbW9yaWJ1bmRfbG9jYXRpb25zLCBpeCwgbG9jKTsgKytpeCkK LSAgICAgewotICAgICAgIGlmIChsb2MtPmFkZHJlc3MgPT0gYnBfYWRkcikKLUBAIC0zNDEyLDYg KzM1NjMsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorIAkgIGlmIChiLT50eXBlID09IGJw X3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQKKy0JICAgICAgfHwg Yi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlcikKKysJICAgICAgfHwgYi0+dHlwZSA9PSBicF9s b25nam1wX21hc3RlcgorKwkgICAgICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIp CisgCSAgICAvKiBXZSBkbyBub3Qgc3RvcCBmb3IgdGhlc2UuICAqLworIAkgICAgYnMtPnN0b3Ag PSAwOworIAkgIGVsc2UKK0BAIC0zODI5LDYgKzM5MDQsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0 IGJzKQogICAgc3RydWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAKICAgIHJldHZhbC5jYWxsX2R1 bW15ID0gMDsKQEAgLTExNjEsNyArNjY1LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2 NDQKICAgIGZvciAoOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQogICAgICB7CiAgICAgICAg ZW51bSBjbGFzcyBic19jbGFzcyA9IG5vX2VmZmVjdDsKLUBAIC0zNDU4LDEwICszNjEwLDE1IEBA IGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtMzg3NSwxMCArMzk1MSwxNSBAQCBicHN0YXRf d2hhdCAoYnBzdGF0IGJzKQogIAkgICAgYnNfY2xhc3MgPSBub19lZmZlY3Q7CiAgCSAgYnJlYWs7 CiAgCWNhc2UgYnBfbG9uZ2ptcDoKQEAgLTExNzcsNyArNjgxLDcgQEAgaW5kZXggODExY2RmYi4u MGYzNTEwMSAxMDA2NDQKICAJICBicmVhazsKICAJY2FzZSBicF9zdGVwX3Jlc3VtZToKICAJICBp ZiAoYnMtPnN0b3ApCi1AQCAtMzQ4NCw2ICszNjQxLDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBi cykKK0BAIC0zOTAxLDYgKzM5ODIsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogIAljYXNl IGJwX3RocmVhZF9ldmVudDoKICAJY2FzZSBicF9vdmVybGF5X2V2ZW50OgogIAljYXNlIGJwX2xv bmdqbXBfbWFzdGVyOgpAQCAtMTE4NSw3ICs2ODksNyBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAx IDEwMDY0NAogIAkgIGJzX2NsYXNzID0gYnBfbm9zdG9wOwogIAkgIGJyZWFrOwogIAljYXNlIGJw X2NhdGNocG9pbnQ6Ci1AQCAtMzYwNSw2ICszNzYzLDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRf bG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTQwNDUsNiArNDEyNyw4IEBAIHBy aW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKICAgICAg e2JwX2FjY2Vzc193YXRjaHBvaW50LCAiYWNjIHdhdGNocG9pbnQifSwKICAgICAge2JwX2xvbmdq bXAsICJsb25nam1wIn0sCiAgICAgIHticF9sb25nam1wX3Jlc3VtZSwgImxvbmdqbXAgcmVzdW1l In0sCkBAIC0xMTk0LDE1ICs2OTgsMTUgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQK ICAgICAge2JwX3N0ZXBfcmVzdW1lLCAic3RlcCByZXN1bWUifSwKICAgICAge2JwX3dhdGNocG9p bnRfc2NvcGUsICJ3YXRjaHBvaW50IHNjb3BlIn0sCiAgICAgIHticF9jYWxsX2R1bW15LCAiY2Fs bCBkdW1teSJ9LAotQEAgLTM2MTIsNiArMzc3Miw3IEBAIHByaW50X29uZV9icmVha3BvaW50X2xv Y2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MDUyLDYgKzQxMzYsNyBAQCBwcmlu dF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHti cF90aHJlYWRfZXZlbnQsICJ0aHJlYWQgZXZlbnRzIn0sCiAgICAgIHticF9vdmVybGF5X2V2ZW50 LCAib3ZlcmxheSBldmVudHMifSwKICAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBt YXN0ZXIifSwKICsgICAge2JwX2V4Y2VwdGlvbl9tYXN0ZXIsICJleGNlcHRpb24gbWFzdGVyIn0s CiAgICAgIHticF9jYXRjaHBvaW50LCAiY2F0Y2hwb2ludCJ9LAogICAgICB7YnBfdHJhY2Vwb2lu dCwgInRyYWNlcG9pbnQifSwKLSAgICAge2JwX2ppdF9ldmVudCwgImppdCBldmVudHMifSwKLUBA IC0zNzM1LDYgKzM4OTYsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsCisgICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9p bnQifSwKK0BAIC00MTc2LDYgKzQyNjEsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlv biAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF9maW5pc2g6CiAgICAgICAg Y2FzZSBicF9sb25nam1wOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC0xMjEx LDExNiArNzE1LDE1IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgICAgY2Fz ZSBicF9zdGVwX3Jlc3VtZToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6CiAgICAg ICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTM3NDIsNiArMzkwNSw3IEBAIHByaW50X29uZV9i cmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MTgzLDYgKzQy NzAsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQg KmIsCiAgICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgICAgICAgY2FzZSBicF9vdmVybGF5 X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CiArICAgICAgY2FzZSBicF9l eGNlcHRpb25fbWFzdGVyOgogICAgICAgIGNhc2UgYnBfdHJhY2Vwb2ludDoKKyAgICAgICBjYXNl IGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgICBjYXNlIGJwX2ppdF9ldmVudDoKLSAJaWYgKG9w dHMuYWRkcmVzc3ByaW50KQotQEAgLTQxOTcsOSArNDM2MSw4IEBAIHNldF9kZWZhdWx0X2JyZWFr cG9pbnQgKGludCB2YWxpZCwgQ09SRV9BRERSIGFkZHIsIHN0cnVjdCBzeW10YWIgKnN5bXRhYiwK LSAgICAob3IgdXNlIGl0IGZvciBhbnkgb3RoZXIgcHVycG9zZSBlaXRoZXIpLgotIAotICAgIE1v cmUgc3BlY2lmaWNhbGx5LCBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludCB0eXBlcyB3 aWxsIGFsd2F5cwotLSAgIGhhdmUgYSB6ZXJvIHZhbHVlZCBhZGRyZXNzIGFuZCB3ZSBkb24ndCB3 YW50IGNoZWNrX2R1cGxpY2F0ZXMoKSB0byBtYXJrCi0tICAgYnJlYWtwb2ludHMgb2YgYW55IG9m IHRoZXNlIHR5cGVzIHRvIGJlIGEgZHVwbGljYXRlIG9mIGFuIGFjdHVhbAotLSAgIGJyZWFrcG9p bnQgYXQgYWRkcmVzcyB6ZXJvOgotKyAgIGhhdmUgYSB6ZXJvIHZhbHVlZCBhZGRyZXNzIGFuZCB3 ZSBkb24ndCB3YW50IHRvIG1hcmsgYnJlYWtwb2ludHMgb2YgYW55IG9mCi0rICAgdGhlc2UgdHlw ZXMgdG8gYmUgYSBkdXBsaWNhdGUgb2YgYW4gYWN0dWFsIGJyZWFrcG9pbnQgYXQgYWRkcmVzcyB6 ZXJvOgotIAotICAgICAgIGJwX3dhdGNocG9pbnQKLSAgICAgICBicF9oYXJkd2FyZV93YXRjaHBv aW50Ci1AQCAtNDIxOSw4OCArNDM4Miw2IEBAIGJyZWFrcG9pbnRfYWRkcmVzc19pc19tZWFuaW5n ZnVsIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQotIAkgICYmIHR5cGUgIT0gYnBfY2F0Y2hwb2lu dCk7Ci0gfQotIAotLS8qIFJlc2NhbiBicmVha3BvaW50cyBhdCB0aGUgc2FtZSBhZGRyZXNzIGFu ZCBzZWN0aW9uIGFzIEJQVCwKLS0gICBtYXJraW5nIHRoZSBmaXJzdCBvbmUgYXMgImZpcnN0IiBh bmQgYW55IG90aGVycyBhcyAiZHVwbGljYXRlcyIuCi0tICAgVGhpcyBpcyBzbyB0aGF0IHRoZSBi cHQgaW5zdHJ1Y3Rpb24gaXMgb25seSBpbnNlcnRlZCBvbmNlLgotLSAgIElmIHdlIGhhdmUgYSBw ZXJtYW5lbnQgYnJlYWtwb2ludCBhdCB0aGUgc2FtZSBwbGFjZSBhcyBCUFQsIG1ha2UKLS0gICB0 aGF0IG9uZSB0aGUgb2ZmaWNpYWwgb25lLCBhbmQgdGhlIHJlc3QgYXMgZHVwbGljYXRlcy4gICov Ci0tCi0tc3RhdGljIHZvaWQKLS1jaGVja19kdXBsaWNhdGVzX2ZvciAoQ09SRV9BRERSIGFkZHJl c3MsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbikKLS17Ci0tICBzdHJ1Y3QgYnBfbG9jYXRp b24gKmI7Ci0tICBpbnQgY291bnQgPSAwOwotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpwZXJtX2Jw ID0gMDsKLS0KLS0gIEFMTF9CUF9MT0NBVElPTlMgKGIpCi0tICAgIGlmIChiLT5vd25lci0+ZW5h YmxlX3N0YXRlICE9IGJwX2Rpc2FibGVkCi0tCSYmIGItPm93bmVyLT5lbmFibGVfc3RhdGUgIT0g YnBfY2FsbF9kaXNhYmxlZAotLQkmJiBiLT5vd25lci0+ZW5hYmxlX3N0YXRlICE9IGJwX3N0YXJ0 dXBfZGlzYWJsZWQKLS0JJiYgYi0+ZW5hYmxlZAotLQkmJiAhYi0+c2hsaWJfZGlzYWJsZWQKLS0J JiYgYi0+YWRkcmVzcyA9PSBhZGRyZXNzCS8qIGFkZHJlc3MgLyBvdmVybGF5IG1hdGNoICovCi0t CSYmICghb3ZlcmxheV9kZWJ1Z2dpbmcgfHwgYi0+c2VjdGlvbiA9PSBzZWN0aW9uKQotLQkmJiBi cmVha3BvaW50X2FkZHJlc3NfaXNfbWVhbmluZ2Z1bCAoYi0+b3duZXIpKQotLSAgICB7Ci0tICAg ICAgLyogSGF2ZSB3ZSBmb3VuZCBhIHBlcm1hbmVudCBicmVha3BvaW50PyAgKi8KLS0gICAgICBp ZiAoYi0+b3duZXItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJtYW5lbnQpCi0tCXsKLS0JICBwZXJt X2JwID0gYjsKLS0JICBicmVhazsKLS0JfQotLQkKLS0gICAgICBjb3VudCsrOwotLSAgICAgIGIt PmR1cGxpY2F0ZSA9IGNvdW50ID4gMTsKLS0gICAgfQotLQotLSAgLyogSWYgd2UgZm91bmQgYSBw ZXJtYW5lbnQgYnJlYWtwb2ludCBhdCB0aGlzIGFkZHJlc3MsIGdvIG92ZXIgdGhlCi0tICAgICBs aXN0IGFnYWluIGFuZCBkZWNsYXJlIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludHMgdGhlcmUgKGV4 Y2VwdAotLSAgICAgb3RoZXIgcGVybWFuZW50IGJyZWFrcG9pbnRzKSB0byBiZSB0aGUgZHVwbGlj YXRlcy4gICovCi0tICBpZiAocGVybV9icCkKLS0gICAgewotLSAgICAgIHBlcm1fYnAtPmR1cGxp Y2F0ZSA9IDA7Ci0tCi0tICAgICAgLyogUGVybWFuZW50IGJyZWFrcG9pbnQgc2hvdWxkIGFsd2F5 cyBiZSBpbnNlcnRlZC4gICovCi0tICAgICAgaWYgKCEgcGVybV9icC0+aW5zZXJ0ZWQpCi0tCWlu dGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0tCQkJXygiYWxsZWdlZGx5IHBlcm1h bmVudCBicmVha3BvaW50IGlzIG5vdCAiCi0tCQkJImFjdHVhbGx5IGluc2VydGVkIikpOwotLQot LSAgICAgIEFMTF9CUF9MT0NBVElPTlMgKGIpCi0tCWlmIChiICE9IHBlcm1fYnApCi0tCSAgewot LQkgICAgaWYgKGItPm93bmVyLT5lbmFibGVfc3RhdGUgIT0gYnBfcGVybWFuZW50Ci0tCQkmJiBi LT5vd25lci0+ZW5hYmxlX3N0YXRlICE9IGJwX2Rpc2FibGVkCi0tCQkmJiBiLT5vd25lci0+ZW5h YmxlX3N0YXRlICE9IGJwX2NhbGxfZGlzYWJsZWQKLS0JCSYmIGItPm93bmVyLT5lbmFibGVfc3Rh dGUgIT0gYnBfc3RhcnR1cF9kaXNhYmxlZAotLQkJJiYgYi0+ZW5hYmxlZCAmJiAhYi0+c2hsaWJf ZGlzYWJsZWQJCQotLQkJJiYgYi0+YWRkcmVzcyA9PSBhZGRyZXNzCS8qIGFkZHJlc3MgLyBvdmVy bGF5IG1hdGNoICovCi0tCQkmJiAoIW92ZXJsYXlfZGVidWdnaW5nIHx8IGItPnNlY3Rpb24gPT0g c2VjdGlvbikKLS0JCSYmIGJyZWFrcG9pbnRfYWRkcmVzc19pc19tZWFuaW5nZnVsIChiLT5vd25l cikpCi0tCSAgICAgIHsKLS0JCWlmIChiLT5pbnNlcnRlZCkKLS0JCSAgaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywKLS0JCQkJICBfKCJhbm90aGVyIGJyZWFrcG9pbnQgd2FzIGlu c2VydGVkIG9uIHRvcCBvZiAiCi0tCQkJCSAgImEgcGVybWFuZW50IGJyZWFrcG9pbnQiKSk7Ci0t Ci0tCQliLT5kdXBsaWNhdGUgPSAxOwotLQkgICAgICB9Ci0tCSAgfQotLSAgICB9Ci0tfQotLQot LXN0YXRpYyB2b2lkCi0tY2hlY2tfZHVwbGljYXRlcyAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkK LS17Ci0tICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsID0gYnB0LT5sb2M7Ci0tCi0tICBpZiAoISBi cmVha3BvaW50X2FkZHJlc3NfaXNfbWVhbmluZ2Z1bCAoYnB0KSkKLS0gICAgcmV0dXJuOwotLQot LSAgZm9yICg7IGJsOyBibCA9IGJsLT5uZXh0KQotLSAgICBjaGVja19kdXBsaWNhdGVzX2ZvciAo YmwtPmFkZHJlc3MsIGJsLT5zZWN0aW9uKTsgICAgCi0tfQotLQotIHN0YXRpYyB2b2lkCi0gYnJl YWtwb2ludF9hZGp1c3RtZW50X3dhcm5pbmcgKENPUkVfQUREUiBmcm9tX2FkZHIsIENPUkVfQURE UiB0b19hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYm51bSwgaW50 IGhhdmVfYm51bSkKLUBAIC00MzgyLDYgKzQ0NjMsOCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKK0BAIC00ODIxLDYgKzQ5MDksOCBAQCBhbGxvY2F0ZV9i cF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKICAgICAgY2FzZSBicF9maW5pc2g6 CiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKQEAg LTEzMjksNyArNzMyLDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICAgICAgY2Fz ZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICBj YXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDM5MCw2ICs0NDczLDcgQEAgYWxsb2NhdGVfYnBfbG9j YXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgyOSw2ICs0OTE5LDcgQEAgYWxs b2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBf b3ZlcmxheV9ldmVudDoKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAgIGNhc2UgYnBfbG9u Z2ptcF9tYXN0ZXI6CkBAIC0xMzM3LDcgKzc0MCw3IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEg MTAwNjQ0CiAgICAgICAgbG9jLT5sb2NfdHlwZSA9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50 OwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQ6Ci1AQCAt NDU2OCw4ICs0NjUyLDcgQEAgbWFrZV9icmVha3BvaW50X3Blcm1hbmVudCAoc3RydWN0IGJyZWFr cG9pbnQgKmIpCitAQCAtNTAxNSw4ICs1MTA2LDcgQEAgbWFrZV9icmVha3BvaW50X3Blcm1hbmVu dCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgfQogIAogIC8qIENhbGwgdGhpcyByb3V0aW5lIHdo ZW4gc3RlcHBpbmcgYW5kIG5leHRpbmcgdG8gZW5hYmxlIGEgYnJlYWtwb2ludApAQCAtMTM0Nywx MiArNzUwLDEzIEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgCiAgdm9pZAogIHNl dF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCi1AQCAtNDU4MSwxMCArNDY2NCwxMCBA QCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotICAgICAgbG9uZ2ptcCAibWFz dGVyIiBicmVha3BvaW50cy4gIEhlcmUsIHdlIHNpbXBseSBjcmVhdGUgbW9tZW50YXJ5CitAQCAt NTAyOSwxMCArNTExOSwxMSBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQog ICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJlcXVlc3RlZCB0 aHJlYWQuICAqLwogICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCi0tICAgIGlmIChi LT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyKQotKyAgICBpZiAoYi0+dHlwZSA9PSBicF9sb25n am1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpCisgICAgIGlmIChi LT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCistCSYmIGItPnR5cGUgPT0gYnBfbG9u Z2ptcF9tYXN0ZXIpCisrCSYmIChiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyCisrCSAgICB8 fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQogICAgICAgIHsKICAJc3RydWN0IGJy ZWFrcG9pbnQgKmNsb25lID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGIpOwogLQljbG9u ZS0+dHlwZSA9IGJwX2xvbmdqbXA7CkBAIC0xMzYwLDcgKzc2NCw3IEBAIGluZGV4IDgxMWNkZmIu LjBmMzUxMDEgMTAwNjQ0CiAgCWNsb25lLT50aHJlYWQgPSB0aHJlYWQ7CiAgICAgICAgfQogIH0K LUBAIC00NTk2LDcgKzQ2NzksNyBAQCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhy ZWFkKQorQEAgLTUwNDQsNyArNTEzNSw3IEBAIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKGlu dCB0aHJlYWQpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgKnRlbXA7CiAgCiAgICBBTExfQlJF QUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKQEAgLTEzNjksMzcgKzc3Myw3IEBAIGluZGV4IDgxMWNk ZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgICAgewogIAlpZiAoYi0+dGhyZWFkID09IHRocmVhZCkK ICAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci1AQCAtNDcxMCw5ICs0NzkzLDkgQEAgY3JlYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FE RFIgYWRkcmVzcykKLSB2b2lkCi0gZGlzYWJsZV9icmVha3BvaW50c19pbl9zaGxpYnMgKHZvaWQp Ci0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24g KmxvYywgKipsb2NwX3RtcDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGxvYykKLSsgIEFMTF9C UF9MT0NBVElPTlMgKGxvYywgbG9jcF90bXApCi0gICB7Ci0gICAgIHN0cnVjdCBicmVha3BvaW50 ICpiID0gbG9jLT5vd25lcjsKLSAgICAgLyogV2UgYXBwbHkgdGhlIGNoZWNrIHRvIGFsbCBicmVh a3BvaW50cywgaW5jbHVkaW5nIGRpc2FibGVkCi1AQCAtNDc0Miw3ICs0ODI1LDcgQEAgZGlzYWJs ZV9icmVha3BvaW50c19pbl9zaGxpYnMgKHZvaWQpCi0gc3RhdGljIHZvaWQKLSBkaXNhYmxlX2Jy ZWFrcG9pbnRzX2luX3VubG9hZGVkX3NobGliIChzdHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0gewot LSAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYywg Kipsb2NwX3RtcDsKLSAgIGludCBkaXNhYmxlZF9zaGxpYl9icmVha3MgPSAwOwotIAotICAgLyog U3VuT1MgYS5vdXQgc2hhcmVkIGxpYnJhcmllcyBhcmUgYWx3YXlzIG1hcHBlZCwgc28gZG8gbm90 Ci1AQCAtNDc1Myw3ICs0ODM2LDcgQEAgZGlzYWJsZV9icmVha3BvaW50c19pbl91bmxvYWRlZF9z aGxpYiAoc3RydWN0IHNvX2xpc3QgKnNvbGliKQotICAgICAgICYmIGJmZF9nZXRfZmxhdm91ciAo ZXhlY19iZmQpID09IGJmZF90YXJnZXRfYW91dF9mbGF2b3VyKQotICAgICByZXR1cm47Ci0gCi0t ICBBTExfQlBfTE9DQVRJT05TIChsb2MpCi0rICBBTExfQlBfTE9DQVRJT05TIChsb2MsIGxvY3Bf dG1wKQotICAgewotICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGxvYy0+b3duZXI7Ci0gICAg IGlmICgobG9jLT5sb2NfdHlwZSA9PSBicF9sb2NfaGFyZHdhcmVfYnJlYWtwb2ludAotQEAgLTU2 NDgsNiArNTczMSw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTYxMTks NiArNjIxMCw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQogICAgICAgIGNhc2Ug YnBfZmluaXNoOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgICBjYXNlIGJwX2xvbmdq bXBfcmVzdW1lOgpAQCAtMTQwOCw3ICs3ODIsNyBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEw MDY0NAogICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgICAgY2FzZSBicF9jYWxsX2R1 bW15OgogICAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKLUBAIC01NjU2LDYgKzU3NDEs NyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02MTI3LDYgKzYyMjAsNyBA QCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICAgICAgICBjYXNlIGJwX292ZXJsYXlf ZXZlbnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAgICAgY2FzZSBicF9sb25nam1w X21hc3RlcjoKQEAgLTE0MTYsNyArNzkwLDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2 NDQKICAJYnJlYWs7CiAgICAgICAgfQogIAotQEAgLTY5NTgsNiArNzA0NCw3IEBAIHN0cnVjdCB1 bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzCitAQCAtNzUxMSw2ICs3NjA1LDcg QEAgc3RydWN0IHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MKICB7CiAgICBz dHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVh a3BvaW50MjsKQEAgLTE0MjQsNyArNzk4LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2 NDQKICB9OwogIAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZldGNoX2luZmVyaW9y X2V2ZW50IHZpYSB0aGUKLUBAIC02OTcyLDYgKzcwNTksNyBAQCB1bnRpbF9icmVha19jb21tYW5k X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorQEAgLTc1MjUsNiArNzYyMCw3IEBAIHVudGlsX2Jy ZWFrX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCiAgICBkZWxldGVfYnJlYWtwb2lu dCAoYS0+YnJlYWtwb2ludCk7CiAgICBpZiAoYS0+YnJlYWtwb2ludDIpCiAgICAgIGRlbGV0ZV9i cmVha3BvaW50IChhLT5icmVha3BvaW50Mik7CkBAIC0xNDMyLDcgKzgwNiw3IEBAIGluZGV4IDgx MWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgfQogIAogIHZvaWQKLUBAIC02OTgzLDYgKzcwNzEsOCBA QCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdo ZXJlKQorQEAgLTc1MzYsNiArNzYzMiw4IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFy ZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJl YWtwb2ludDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MiA9IE5VTEw7CiAgICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwpAQCAtMTQ0MSw3ICs4MTUsNyBAQCBpbmRleCA4MTFj ZGZiLi4wZjM1MTAxIDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAgCi1A QCAtNzAyMSw2ICs3MTExLDkgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTc0LDYgKzc2NzIsOSBAQCB1bnRpbF9icmVh a19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAogICAg b2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50KTsK ICAKQEAgLTE0NTEsNyArODI1LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICAg IC8qIEtlZXAgd2l0aGluIHRoZSBjdXJyZW50IGZyYW1lLCBvciBpbiBmcmFtZXMgY2FsbGVkIGJ5 IHRoZSBjdXJyZW50CiAgICAgICBvbmUuICAqLwogIAotQEAgLTcwMzMsNiArNzEyNiwxMCBAQCB1 bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJl KQorQEAgLTc1ODYsNiArNzY4NywxMCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAkJCQkJICAgICAgZnJhbWVfdW53aW5kX2Nh bGxlcl9pZCAoZnJhbWUpLAogIAkJCQkJICAgICAgYnBfdW50aWwpOwogICAgICAgIG1ha2VfY2xl YW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludDIpOwpAQCAtMTQ2Miw3ICs4MzYsNyBA QCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogICAgICB9CiAgCiAgICBwcm9jZWVkICgt MSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAwKTsKLUBAIC03MDQ5LDYgKzcxNDYsNyBAQCB1bnRp bF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQor QEAgLTc2MDIsNiArNzcwNyw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCiAgICAgICAgYXJncy0+YnJlYWtwb2ludCA9IGJy ZWFrcG9pbnQ7CiAgICAgICAgYXJncy0+YnJlYWtwb2ludDIgPSBicmVha3BvaW50MjsKQEAgLTE0 NzAsMzg3ICs4NDQsNTIgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICAKICAgICAg ICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwogICAgICAgIGFkZF9jb250aW51YXRpb24g KGluZmVyaW9yX3RocmVhZCAoKSwKLUBAIC03NzU4LDYgKzc4NTYsODIgQEAgZG9fdmVjX2ZyZWUg KHZvaWQgKnApCi0gICAgIFZFQ19mcmVlIChicF9sb2NhdGlvbl9wLCAqdmVjKTsKK0BAIC04ODIz LDYgKzg5MjksNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCisg CSAgICAmJiBiLT50eXBlICE9IGJwX3RocmVhZF9ldmVudAorIAkgICAgJiYgYi0+dHlwZSAhPSBi cF9vdmVybGF5X2V2ZW50CisgCSAgICAmJiBiLT50eXBlICE9IGJwX2xvbmdqbXBfbWFzdGVyCisr CSAgICAmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKKyAJICAgICYmIGItPm51bWJl ciA+PSAwKQorIAkgIHsKKyAJICAgIGJyZWFrc190b19kZWxldGUgPSAxOworQEAgLTg4NDIsNiAr ODk0OSw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAJCSYm IGItPnR5cGUgIT0gYnBfaml0X2V2ZW50CisgCQkmJiBiLT50eXBlICE9IGJwX292ZXJsYXlfZXZl bnQKKyAJCSYmIGItPnR5cGUgIT0gYnBfbG9uZ2ptcF9tYXN0ZXIKKysJCSYmIGItPnR5cGUgIT0g YnBfZXhjZXB0aW9uX21hc3RlcgorIAkJJiYgYi0+bnVtYmVyID49IDApCisgCSAgICAgIGRlbGV0 ZV9icmVha3BvaW50IChiKTsKKyAJICB9CitAQCAtOTE1Miw2ICs5MjYwLDcgQEAgYnJlYWtwb2lu dF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorIAkgcmVzZXQgbGF0ZXIgYnkgYnJlYWtwb2ludF9y ZV9zZXQuICAqLworICAgICBjYXNlIGJwX292ZXJsYXlfZXZlbnQ6CisgICAgIGNhc2UgYnBfbG9u Z2ptcF9tYXN0ZXI6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKKyAgICAgICBkZWxl dGVfYnJlYWtwb2ludCAoYik7CisgICAgICAgYnJlYWs7CisgCitAQCAtOTE3NCw2ICs5MjgzLDgg QEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorICAgICBjYXNlIGJwX3N0ZXBf cmVzdW1lOgorICAgICBjYXNlIGJwX2xvbmdqbXA6CisgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1 bWU6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uOgorKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1 bWU6CisgICAgIGNhc2UgYnBfaml0X2V2ZW50OgorICAgICAgIGJyZWFrOworICAgICB9CitAQCAt OTIxNiw2ICs5MzI3LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCisgICBjcmVhdGVfbG9u Z2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9sb25nam1wIik7CisgICBjcmVhdGVfbG9uZ2ptcF9t YXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKKyAgIGNyZWF0ZV9sb25nam1wX21hc3Rl cl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKKysgIGNyZWF0ZV9leGNlcHRpb25fbWFzdGVy X2JyZWFrcG9pbnQgKCk7CisgfQorIAwKKyAvKiBSZXNldCB0aGUgdGhyZWFkIG51bWJlciBvZiB0 aGlzIGJyZWFrcG9pbnQ6CitAQCAtMTAxNzcsNiArMTAyODksMjIgQEAgYWxsX3RyYWNlcG9pbnRz ICgpCisgICByZXR1cm4gdHBfdmVjOwogIH0KICAKLSsvKiBBIGNvbXBhcmlzb24gZnVuY3Rpb24g Zm9yIGJwX2xvY2F0aW9uIEEgYW5kIEIgYmVpbmcgaW50ZXJmYWNlZCB0byBxc29ydC4KLSsgICBT b3J0IGVsZW1lbnRzIHByaW1hcmlseSBieSB0aGVpciBBRERSRVNTIChubyBtYXR0ZXIgd2hhdCBk b2VzCi0rICAgYnJlYWtwb2ludF9hZGRyZXNzX2lzX21lYW5pbmdmdWwgc2F5IGZvciBpdHMgT1dO RVIpLCBzZWNvbmRhcmlseSBieSBvcmRlcmluZwotKyAgIGZpcnN0IGJwX3Blcm1hbmVudCBPV05F UmVkIGVsZW1lbnRzIGFuZCB0ZXJjaWFyaWx5IGp1c3QgZW5zdXJpbmcgdGhlIGFycmF5Ci0rICAg aXMgc29ydGVkIHN0YWJsZSB3YXkgZGVzcGl0ZSBxc29ydCBiZWluZyBhbiBpbnN0YWJsZSBhbGdv cml0aG0uICAqLwotKwotK3N0YXRpYyBpbnQKLSticF9sb2NhdGlvbl9jb21wYXJlIChzdHJ1Y3Qg YnBfbG9jYXRpb24gKmEsIHN0cnVjdCBicF9sb2NhdGlvbiAqYikKLSt7Ci0rICBpbnQgYV9wZXJt ID0gYS0+b3duZXItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJtYW5lbnQ7Ci0rICBpbnQgYl9wZXJt ID0gYi0+b3duZXItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJtYW5lbnQ7Ci0rCi0rICBpZiAoYS0+ YWRkcmVzcyAhPSBiLT5hZGRyZXNzKQotKyAgICByZXR1cm4gKGEtPmFkZHJlc3MgPiBiLT5hZGRy ZXNzKSAtIChhLT5hZGRyZXNzIDwgYi0+YWRkcmVzcyk7Ci0rCi0rICAvKiBTb3J0IHBlcm1hbmVu dCBicmVha3BvaW50cyBmaXJzdC4gICovCi0rICBpZiAoYV9wZXJtICE9IGJfcGVybSkKLSsgICAg cmV0dXJuIChhX3Blcm0gPCBiX3Blcm0pIC0gKGFfcGVybSA+IGJfcGVybSk7Ci0rCi0rICAvKiBN YWtlIHRoZSB1c2VyLXZpc2libGUgb3JkZXIgc3RhYmxlIGFjcm9zcyBHREIgcnVucy4gIExvY2F0 aW9ucyBvZiB0aGUgc2FtZQotKyAgICAgYnJlYWtwb2ludCBjYW4gYmUgc29ydGVkIGluIGFyYml0 cmFyeSBvcmRlci4gICovCi0rCi0rICBpZiAoYS0+b3duZXItPm51bWJlciAhPSBiLT5vd25lci0+ bnVtYmVyKQotKyAgICByZXR1cm4gKGEtPm93bmVyLT5udW1iZXIgPiBiLT5vd25lci0+bnVtYmVy KQotKyAgICAgICAgICAgLSAoYS0+b3duZXItPm51bWJlciA8IGItPm93bmVyLT5udW1iZXIpOwot KwotKyAgcmV0dXJuIChhID4gYikgLSAoYSA8IGIpOwotK30KLSsKLSsvKiBJbnRlcmZhY2UgYnBf bG9jYXRpb25fY29tcGFyZSBhcyB0aGUgQ09NUEFSIHBhcmFtZXRlciBvZiBxc29ydCBmdW5jdGlv bi4gICovCi0rCi0rc3RhdGljIGludAotK2JwX2xvY2F0aW9uX2NvbXBhcmVfZm9yX3Fzb3J0IChj b25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgc3RydWN0IGJwX2xvY2F0aW9u ICphID0gKih2b2lkICoqKSBhcDsKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqYiA9ICoodm9pZCAq KikgYnA7Ci0rCi0rICByZXR1cm4gYnBfbG9jYXRpb25fY29tcGFyZSAoYSwgYik7Ci0rfQotKwot Ky8qIFNldCBicF9sb2NhdGlvbl9wbGFjZWRfYWRkcmVzc19iZWZvcmVfYWRkcmVzc19tYXggYW5k Ci0rICAgYnBfbG9jYXRpb25fc2hhZG93X2xlbl9hZnRlcl9hZGRyZXNzX21heCBhY2NvcmRpbmcg dG8gdGhlIGN1cnJlbnQgY29udGVudCBvZgotKyAgIHRoZSBicF9sb2NhdGlvbiBhcnJheS4gICov Ci0rCi0rc3RhdGljIHZvaWQKLSticF9sb2NhdGlvbl90YXJnZXRfZXh0ZW5zaW9uc191cGRhdGUg KHZvaWQpCi0rewotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpibCwgKipibHBfdG1wOwotKwotKyAg YnBfbG9jYXRpb25fcGxhY2VkX2FkZHJlc3NfYmVmb3JlX2FkZHJlc3NfbWF4ID0gMDsKLSsgIGJw X2xvY2F0aW9uX3NoYWRvd19sZW5fYWZ0ZXJfYWRkcmVzc19tYXggPSAwOwotKwotKyAgQUxMX0JQ X0xPQ0FUSU9OUyAoYmwsIGJscF90bXApCi0rICAgIHsKLSsgICAgICBDT1JFX0FERFIgc3RhcnQs IGVuZCwgYWRkcjsKLSsKLSsgICAgICBpZiAoIWJwX2xvY2F0aW9uX2hhc19zaGFkb3cgKGJsKSkK LSsJY29udGludWU7Ci0rCi0rICAgICAgc3RhcnQgPSBibC0+dGFyZ2V0X2luZm8ucGxhY2VkX2Fk ZHJlc3M7Ci0rICAgICAgZW5kID0gc3RhcnQgKyBibC0+dGFyZ2V0X2luZm8uc2hhZG93X2xlbjsK LSsKLSsgICAgICBnZGJfYXNzZXJ0IChibC0+YWRkcmVzcyA+PSBzdGFydCk7Ci0rICAgICAgYWRk ciA9IGJsLT5hZGRyZXNzIC0gc3RhcnQ7Ci0rICAgICAgaWYgKGFkZHIgPiBicF9sb2NhdGlvbl9w bGFjZWRfYWRkcmVzc19iZWZvcmVfYWRkcmVzc19tYXgpCi0rCWJwX2xvY2F0aW9uX3BsYWNlZF9h ZGRyZXNzX2JlZm9yZV9hZGRyZXNzX21heCA9IGFkZHI7Ci0rCi0rICAgICAgLyogWmVybyBTSEFE T1dfTEVOIHdvdWxkIG5vdCBwYXNzIGJwX2xvY2F0aW9uX2hhc19zaGFkb3cuICAqLwotKwotKyAg ICAgIGdkYl9hc3NlcnQgKGJsLT5hZGRyZXNzIDwgZW5kKTsKLSsgICAgICBhZGRyID0gZW5kIC0g YmwtPmFkZHJlc3M7Ci0rICAgICAgaWYgKGFkZHIgPiBicF9sb2NhdGlvbl9zaGFkb3dfbGVuX2Fm dGVyX2FkZHJlc3NfbWF4KQotKwlicF9sb2NhdGlvbl9zaGFkb3dfbGVuX2FmdGVyX2FkZHJlc3Nf bWF4ID0gYWRkcjsKLSsgICAgfQotK30KLSsKLSAvKiBJZiBTSE9VTERfSU5TRVJUIGlzIGZhbHNl LCBkbyBub3QgaW5zZXJ0IGFueSBicmVha3BvaW50IGxvY2F0aW9ucwotICAgIGludG8gdGhlIGlu ZmVyaW9yLCBvbmx5IHJlbW92ZSBhbHJlYWR5LWluc2VydGVkIGxvY2F0aW9ucyB0aGF0IG5vCi0g ICAgbG9uZ2VyIHNob3VsZCBiZSBpbnNlcnRlZC4gIEZ1bmN0aW9ucyB0aGF0IGRlbGV0ZSBhIGJy ZWFrcG9pbnQgb3IKLUBAIC03Nzc3LDQ5ICs3OTUxLDc4IEBAIHN0YXRpYyB2b2lkCi0gdXBkYXRl X2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKLSB7Ci0gICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYjsKLS0gIHN0cnVjdCBicF9sb2NhdGlvbiAqKm5leHQgPSAmYnBfbG9jYXRp b25fY2hhaW47Ci0tICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKLS0gIHN0cnVjdCBicF9sb2Nh dGlvbiAqbG9jMjsKLS0gIFZFQyhicF9sb2NhdGlvbl9wKSAqb2xkX2xvY2F0aW9ucyA9IE5VTEw7 Ci0tICBpbnQgcmV0OwotLSAgaW50IGl4OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICoqbG9jcCwg KmxvYzsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAKLS0gIGNsZWFudXBzID0gbWFr ZV9jbGVhbnVwIChkb192ZWNfZnJlZSwgJm9sZF9sb2NhdGlvbnMpOwotLSAgLyogU3RvcmUgb2xk IGxvY2F0aW9ucyBmb3IgZnV0dXJlIHJlZmVyZW5jZS4gICovCi0tICBmb3IgKGxvYyA9IGJwX2xv Y2F0aW9uX2NoYWluOyBsb2M7IGxvYyA9IGxvYy0+Z2xvYmFsX25leHQpCi0tICAgIFZFQ19zYWZl X3B1c2ggKGJwX2xvY2F0aW9uX3AsIG9sZF9sb2NhdGlvbnMsIGxvYyk7Ci0rICAvKiBUaGUgZmly c3QgYnBfbG9jYXRpb24gYmVpbmcgdGhlIG9ubHkgb25lIG5vbi1EVVBMSUNBVEUgZm9yIHRoZSBj dXJyZW50IHJ1bgotKyAgICAgb2YgdGhlIHNhbWUgQUREUkVTUy4gICovCi0rICBzdHJ1Y3QgYnBf bG9jYXRpb24gKmxvY19maXJzdDsKLSsKLSsgIC8qIFNhdmVkIGZvcm1lciBicF9sb2NhdGlvbiBh cnJheSB3aGljaCB3ZSBjb21wYXJlIGFnYWluc3QgdGhlIG5ld2x5IGJ1aWx0Ci0rICAgICBicF9s b2NhdGlvbiBmcm9tIHRoZSBjdXJyZW50IHN0YXRlIG9mIEFMTF9CUkVBS1BPSU5UUy4gICovCi0r ICBzdHJ1Y3QgYnBfbG9jYXRpb24gKipvbGRfbG9jYXRpb24sICoqb2xkX2xvY3A7Ci0rICB1bnNp Z25lZCBvbGRfbG9jYXRpb25fY291bnQ7Ci0rCi0rICBvbGRfbG9jYXRpb24gPSBicF9sb2NhdGlv bjsKLSsgIG9sZF9sb2NhdGlvbl9jb3VudCA9IGJwX2xvY2F0aW9uX2NvdW50OwotKyAgYnBfbG9j YXRpb24gPSBOVUxMOwotKyAgYnBfbG9jYXRpb25fY291bnQgPSAwOwotKyAgY2xlYW51cHMgPSBt YWtlX2NsZWFudXAgKHhmcmVlLCBvbGRfbG9jYXRpb24pOwotIAotLSAgYnBfbG9jYXRpb25fY2hh aW4gPSBOVUxMOwotICAgQUxMX0JSRUFLUE9JTlRTIChiKQotLSAgICB7Ci0tICAgICAgZm9yIChs b2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotLQl7Ci0tCSAgKm5leHQgPSBsb2M7 Ci0tCSAgbmV4dCA9ICYobG9jLT5nbG9iYWxfbmV4dCk7Ci0tCSAgKm5leHQgPSBOVUxMOwotLQl9 Ci0tICAgIH0KLSsgICAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQot KyAgICAgIGJwX2xvY2F0aW9uX2NvdW50Kys7Ci0rCi0rICBicF9sb2NhdGlvbiA9IHhtYWxsb2Mg KHNpemVvZiAoKmJwX2xvY2F0aW9uKSAqIGJwX2xvY2F0aW9uX2NvdW50KTsKLSsgIGxvY3AgPSBi cF9sb2NhdGlvbjsKLSsgIEFMTF9CUkVBS1BPSU5UUyAoYikKLSsgICAgZm9yIChsb2MgPSBiLT5s b2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotKyAgICAgICpsb2NwKysgPSBsb2M7Ci0rICBxc29y dCAoYnBfbG9jYXRpb24sIGJwX2xvY2F0aW9uX2NvdW50LCBzaXplb2YgKCpicF9sb2NhdGlvbiks Ci0rCSBicF9sb2NhdGlvbl9jb21wYXJlX2Zvcl9xc29ydCk7Ci0rCi0rICBicF9sb2NhdGlvbl90 YXJnZXRfZXh0ZW5zaW9uc191cGRhdGUgKCk7Ci0gCi0gICAvKiBJZGVudGlmeSBicF9sb2NhdGlv biBpbnN0YW5jZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhlIG5ldwotICAgICAg bGlzdCwgYW5kIHRoZXJlZm9yZSBzaG91bGQgYmUgZnJlZWQuICBOb3RlIHRoYXQgaXQncyBub3Qg bmVjZXNzYXJ5IHRoYXQKLSAgICAgIHRob3NlIGxvY2F0aW9ucyBzaG91bGQgYmUgcmVtb3ZlZCBm cm9tIGluZmVyaW9yIC0tIGlmIHRoZXJlJ3MgYW5vdGhlcgotICAgICAgbG9jYXRpb24gYXQgdGhl IHNhbWUgYWRkcmVzcyAocHJldmlvdXNseSBtYXJrZWQgYXMgZHVwbGljYXRlKSwKLS0gICAgIHdl IGRvbid0IG5lZWQgdG8gcmVtb3ZlL2luc2VydCB0aGUgbG9jYXRpb24uICAqLwotLSAgZm9yIChp eCA9IDA7IFZFQ19pdGVyYXRlKGJwX2xvY2F0aW9uX3AsIG9sZF9sb2NhdGlvbnMsIGl4LCBsb2Mp OyArK2l4KQotKyAgICAgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUvaW5zZXJ0IHRoZSBsb2NhdGlv bi4KLSsgICAgIAotKyAgICAgTE9DUCBpcyBrZXB0IGluIHN5bmMgd2l0aCBPTERfTE9DUCwgZWFj aCBwb2ludGluZyB0byB0aGUgY3VycmVudCBhbmQKLSsgICAgIGZvcm1lciBicF9sb2NhdGlvbiBh cnJheSBzdGF0ZSByZXNwZWN0aXZlbHkuICAqLwotKwotKyAgbG9jcCA9IGJwX2xvY2F0aW9uOwot KyAgZm9yIChvbGRfbG9jcCA9IG9sZF9sb2NhdGlvbjsgb2xkX2xvY3AgPCBvbGRfbG9jYXRpb24g KyBvbGRfbG9jYXRpb25fY291bnQ7Ci0rICAgICAgIG9sZF9sb2NwKyspCi0gICAgIHsKLS0gICAg ICAvKiBUZWxscyBpZiAnbG9jJyBpcyBmb3VuZCBhbW91bmcgdGhlIG5ldyBsb2NhdGlvbnMuICBJ ZiBub3QsIHdlCi0rICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICpvbGRfbG9jID0gKm9sZF9sb2Nw OwotKyAgICAgIHN0cnVjdCBicF9sb2NhdGlvbiAqKmxvYzJwOwotKwotKyAgICAgIC8qIFRlbGxz IGlmICdvbGRfbG9jJyBpcyBmb3VuZCBhbW91bmcgdGhlIG5ldyBsb2NhdGlvbnMuICBJZiBub3Qs IHdlCi0gCSBoYXZlIHRvIGZyZWUgaXQuICAqLwotICAgICAgIGludCBmb3VuZF9vYmplY3QgPSAw OwotICAgICAgIC8qIFRlbGxzIGlmIHRoZSBsb2NhdGlvbiBzaG91bGQgcmVtYWluIGluc2VydGVk IGluIHRoZSB0YXJnZXQuICAqLwotICAgICAgIGludCBrZWVwX2luX3RhcmdldCA9IDA7Ci0gICAg ICAgaW50IHJlbW92ZWQgPSAwOwotLSAgICAgIGZvciAobG9jMiA9IGJwX2xvY2F0aW9uX2NoYWlu OyBsb2MyOyBsb2MyID0gbG9jMi0+Z2xvYmFsX25leHQpCi0tCWlmIChsb2MyID09IGxvYykKLS0J ICB7Ci0tCSAgICBmb3VuZF9vYmplY3QgPSAxOwotLQkgICAgYnJlYWs7Ci0tCSAgfQotKwotKyAg ICAgIC8qIFNraXAgTE9DUCBlbnRyaWVzIHdoaWNoIHdpbGwgZGVmaW5pdGVseSBuZXZlciBiZSBu ZWVkZWQuICBTdG9wIGVpdGhlcgotKwkgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERf TE9DLiAgKi8KLSsgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25f Y291bnQKLSsJICAgICAmJiAoKmxvY3ApLT5hZGRyZXNzIDwgb2xkX2xvYy0+YWRkcmVzcykKLSsJ bG9jcCsrOwotKwotKyAgICAgIGZvciAobG9jMnAgPSBsb2NwOwotKwkgICAobG9jMnAgPCBicF9s b2NhdGlvbiArIGJwX2xvY2F0aW9uX2NvdW50Ci0rCSAgICAmJiAoKmxvYzJwKS0+YWRkcmVzcyA9 PSBvbGRfbG9jLT5hZGRyZXNzKTsKLSsJICAgbG9jMnArKykKLSsJewotKwkgIGlmICgqbG9jMnAg PT0gb2xkX2xvYykKLSsJICAgIHsKLSsJICAgICAgZm91bmRfb2JqZWN0ID0gMTsKLSsJICAgICAg YnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSAKLSAgICAgICAvKiBJZiB0aGlzIGxvY2F0aW9uIGlzIG5v IGxvbmdlciBwcmVzZW50LCBhbmQgaW5zZXJ0ZWQsIGxvb2sgaWYgdGhlcmUncwotIAkgbWF5YmUg YSBuZXcgbG9jYXRpb24gYXQgdGhlIHNhbWUgYWRkcmVzcy4gIElmIHNvLCBtYXJrIHRoYXQgb25l IAotQEAgLTc4MjcsMTEgKzgwMzAsMTEgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChp bnQgc2hvdWxkX2luc2VydCkKLSAJIGRvbid0IGhhdmUgYSB0aW1lIHdpbmRvdyB3aGVyZSBhIGJy ZWFrcG9pbnQgYXQgY2VydGFpbiBsb2NhdGlvbiBpcyBub3QKLSAJIGluc2VydGVkLiAgKi8KLSAK LS0gICAgICBpZiAobG9jLT5pbnNlcnRlZCkKLSsgICAgICBpZiAob2xkX2xvYy0+aW5zZXJ0ZWQp Ci0gCXsKLSAJICAvKiBJZiB0aGUgbG9jYXRpb24gaXMgaW5zZXJ0ZWQgbm93LCB3ZSBtaWdodCBo YXZlIHRvIHJlbW92ZSBpdC4gICovCi0gCi0tCSAgaWYgKGZvdW5kX29iamVjdCAmJiBzaG91bGRf YmVfaW5zZXJ0ZWQgKGxvYykpCi0rCSAgaWYgKGZvdW5kX29iamVjdCAmJiBzaG91bGRfYmVfaW5z ZXJ0ZWQgKG9sZF9sb2MpKQotIAkgICAgewotIAkgICAgICAvKiBUaGUgbG9jYXRpb24gaXMgc3Rp bGwgcHJlc2VudCBpbiB0aGUgbG9jYXRpb24gbGlzdCwgYW5kIHN0aWxsCi0gCQkgc2hvdWxkIGJl IGluc2VydGVkLiAgRG9uJ3QgZG8gYW55dGhpbmcuICAqLwotQEAgLTc4NDIsMzcgKzgwNDUsNDYg QEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKLSAJICAg ICAgLyogVGhlIGxvY2F0aW9uIGlzIGVpdGhlciBubyBsb25nZXIgcHJlc2VudCwgb3IgZ290IGRp c2FibGVkLgotIAkJIFNlZSBpZiB0aGVyZSdzIGFub3RoZXIgbG9jYXRpb24gYXQgdGhlIHNhbWUg YWRkcmVzcywgaW4gd2hpY2ggCi0gCQkgY2FzZSB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSB0aGlz IG9uZSBmcm9tIHRoZSB0YXJnZXQuICAqLwotLQkgICAgICBpZiAoYnJlYWtwb2ludF9hZGRyZXNz X2lzX21lYW5pbmdmdWwgKGxvYy0+b3duZXIpKQotLQkJZm9yIChsb2MyID0gYnBfbG9jYXRpb25f Y2hhaW47IGxvYzI7IGxvYzIgPSBsb2MyLT5nbG9iYWxfbmV4dCkKLS0JCSAgewotLQkJICAgIC8q IEZvciB0aGUgc2FrZSBvZiBzaG91bGRfaW5zZXJ0X2xvY2F0aW9uLiAgVGhlCi0tCQkgICAgICAg Y2FsbCB0byBjaGVja19kdXBsaWNhdGVzIHdpbGwgZml4IHVwIHRoaXMgbGF0ZXIuICAqLwotLQkJ ICAgIGxvYzItPmR1cGxpY2F0ZSA9IDA7Ci0tCQkgICAgaWYgKHNob3VsZF9iZV9pbnNlcnRlZCAo bG9jMikKLS0JCQkmJiBsb2MyICE9IGxvYyAmJiBsb2MyLT5hZGRyZXNzID09IGxvYy0+YWRkcmVz cykKLS0JCSAgICAgIHsJCSAgCi0tCQkJbG9jMi0+aW5zZXJ0ZWQgPSAxOwotLQkJCWxvYzItPnRh cmdldF9pbmZvID0gbG9jLT50YXJnZXRfaW5mbzsKLS0JCQlrZWVwX2luX3RhcmdldCA9IDE7Ci0t CQkJYnJlYWs7Ci0tCQkgICAgICB9Ci0tCQkgIH0KLSsKLSsJICAgICAgaWYgKGJyZWFrcG9pbnRf YWRkcmVzc19pc19tZWFuaW5nZnVsIChvbGRfbG9jLT5vd25lcikpCi0rCQl7Ci0rCQkgIGZvciAo bG9jMnAgPSBsb2NwOwotKwkJICAgICAgIChsb2MycCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRp b25fY291bnQKLSsJCQkmJiAoKmxvYzJwKS0+YWRkcmVzcyA9PSBvbGRfbG9jLT5hZGRyZXNzKTsK LSsJCSAgICAgICBsb2MycCsrKQotKwkJICAgIHsKLSsJCSAgICAgIHN0cnVjdCBicF9sb2NhdGlv biAqbG9jMiA9ICpsb2MycDsKLSsKLSsJCQl7Ci0rCQkJICAvKiBGb3IgdGhlIHNha2Ugb2Ygc2hv dWxkX2JlX2luc2VydGVkLgotKwkJCSAgICAgRHVwbGljYXRlcyBjaGVjayBiZWxvdyB3aWxsIGZp eCB1cCB0aGlzIGxhdGVyLiAgKi8KLSsJCQkgIGxvYzItPmR1cGxpY2F0ZSA9IDA7Ci0rCQkJICBp ZiAobG9jMiAhPSBvbGRfbG9jICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jMikpCi0rCQkJICAg IHsKLSsJCQkgICAgICBsb2MyLT5pbnNlcnRlZCA9IDE7Ci0rCQkJICAgICAgbG9jMi0+dGFyZ2V0 X2luZm8gPSBvbGRfbG9jLT50YXJnZXRfaW5mbzsKLSsJCQkgICAgICBrZWVwX2luX3RhcmdldCA9 IDE7Ci0rCQkJICAgICAgYnJlYWs7Ci0rCQkJICAgIH0KLSsJCQl9Ci0rCQkgICAgfQotKwkJfQot IAkgICAgfQotIAotIAkgIGlmICgha2VlcF9pbl90YXJnZXQpCi0gCSAgICB7Ci0tCSAgICAgIGlm IChyZW1vdmVfYnJlYWtwb2ludCAobG9jLCBtYXJrX3VuaW5zZXJ0ZWQpKQotKwkgICAgICBpZiAo cmVtb3ZlX2JyZWFrcG9pbnQgKG9sZF9sb2MsIG1hcmtfdW5pbnNlcnRlZCkpCi0gCQl7Ci0gCQkg IC8qIFRoaXMgaXMganVzdCBhYm91dCBhbGwgd2UgY2FuIGRvLiAgV2UgY291bGQga2VlcCB0aGlz Ci0gCQkgICAgIGxvY2F0aW9uIG9uIHRoZSBnbG9iYWwgbGlzdCwgYW5kIHRyeSB0byByZW1vdmUg aXQgbmV4dAotIAkJICAgICB0aW1lLCBidXQgdGhlcmUncyBubyBwYXJ0aWN1bGFyIHJlYXNvbiB3 aHkgd2Ugd2lsbAotIAkJICAgICBzdWNjZWVkIG5leHQgdGltZS4gIAotIAkJICAgICAKLS0JCSAg ICAgTm90ZSB0aGF0IGF0IHRoaXMgcG9pbnQsIGxvYy0+b3duZXIgaXMgc3RpbGwgdmFsaWQsCi0r CQkgICAgIE5vdGUgdGhhdCBhdCB0aGlzIHBvaW50LCBvbGRfbG9jLT5vd25lciBpcyBzdGlsbCB2 YWxpZCwKLSAJCSAgICAgYXMgZGVsZXRlX2JyZWFrcG9pbnQgZnJlZXMgdGhlIGJyZWFrcG9pbnQg b25seQotIAkJICAgICBhZnRlciBjYWxsaW5nIHVzLiAgKi8KLSAJCSAgcHJpbnRmX2ZpbHRlcmVk IChfKCJ3YXJuaW5nOiBFcnJvciByZW1vdmluZyBicmVha3BvaW50ICVkXG4iKSwgCi0tCQkJCSAg IGxvYy0+b3duZXItPm51bWJlcik7Ci0rCQkJCSAgIG9sZF9sb2MtPm93bmVyLT5udW1iZXIpOwot IAkJfQotIAkgICAgICByZW1vdmVkID0gMTsKLSAJICAgIH0KLUBAIC03ODk0LDE5ICs4MTA2LDU5 IEBAIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCAoaW50IHNob3VsZF9pbnNlcnQpCi0gCQkg bG9uZ2VyIG5lZWQgdG8ga2VlcCB0aGlzIGJyZWFrcG9pbnQuICBUaGlzIGlzIGp1c3QgYQotIAkJ IGhldXJpc3RpYywgYnV0IGlmIGl0J3Mgd3JvbmcsIHdlJ2xsIHJlcG9ydCB1bmV4cGVjdGVkIFNJ R1RSQVAsCi0gCQkgd2hpY2ggaXMgdXNhYmlsaXR5IGlzc3VlLCBidXQgbm90IGEgY29ycmVjdG5l c3MgcHJvYmxlbS4gICovCi0tCSAgICAgIGxvYy0+ZXZlbnRzX3RpbGxfcmV0aXJlbWVudCA9IDMg KiAodGhyZWFkX2NvdW50ICgpICsgMSk7Ci0tCSAgICAgIGxvYy0+b3duZXIgPSBOVUxMOwotKwkg ICAgICBvbGRfbG9jLT5ldmVudHNfdGlsbF9yZXRpcmVtZW50ID0gMyAqICh0aHJlYWRfY291bnQg KCkgKyAxKTsKLSsJICAgICAgb2xkX2xvYy0+b3duZXIgPSBOVUxMOwotIAotLQkgICAgICBWRUNf c2FmZV9wdXNoIChicF9sb2NhdGlvbl9wLCBtb3JpYnVuZF9sb2NhdGlvbnMsIGxvYyk7Ci0rCSAg ICAgIFZFQ19zYWZlX3B1c2ggKGJwX2xvY2F0aW9uX3AsIG1vcmlidW5kX2xvY2F0aW9ucywgb2xk X2xvYyk7Ci0gCSAgICB9Ci0gCSAgZWxzZQotLQkgICAgZnJlZV9icF9sb2NhdGlvbiAobG9jKTsK LSsJICAgIGZyZWVfYnBfbG9jYXRpb24gKG9sZF9sb2MpOwotIAl9Ci0gICAgIH0KLSAKLS0gIEFM TF9CUkVBS1BPSU5UUyAoYikKLSsgIC8qIFJlc2NhbiBicmVha3BvaW50cyBhdCB0aGUgc2FtZSBh ZGRyZXNzIGFuZCBzZWN0aW9uLAotKyAgICAgbWFya2luZyB0aGUgZmlyc3Qgb25lIGFzICJmaXJz dCIgYW5kIGFueSBvdGhlcnMgYXMgImR1cGxpY2F0ZXMiLgotKyAgICAgVGhpcyBpcyBzbyB0aGF0 IHRoZSBicHQgaW5zdHJ1Y3Rpb24gaXMgb25seSBpbnNlcnRlZCBvbmNlLgotKyAgICAgSWYgd2Ug aGF2ZSBhIHBlcm1hbmVudCBicmVha3BvaW50IGF0IHRoZSBzYW1lIHBsYWNlIGFzIEJQVCwgbWFr ZQotKyAgICAgdGhhdCBvbmUgdGhlIG9mZmljaWFsIG9uZSwgYW5kIHRoZSByZXN0IGFzIGR1cGxp Y2F0ZXMuICBQZXJtYW5lbnQKLSsgICAgIGJyZWFrcG9pbnRzIGFyZSBzb3J0ZWQgZmlyc3QgZm9y IHRoZSBzYW1lIGFkZHJlc3MuICAqLwotKwotKyAgbG9jX2ZpcnN0ID0gTlVMTDsKLSsgIEFMTF9C UF9MT0NBVElPTlMgKGxvYywgbG9jcCkKLSAgICAgewotLSAgICAgIGNoZWNrX2R1cGxpY2F0ZXMg KGIpOwotKyAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiID0gbG9jLT5vd25lcjsKLSsKLSsgICAg ICBpZiAoYi0+ZW5hYmxlX3N0YXRlID09IGJwX2Rpc2FibGVkCi0rCSAgfHwgYi0+ZW5hYmxlX3N0 YXRlID09IGJwX2NhbGxfZGlzYWJsZWQKLSsJICB8fCBiLT5lbmFibGVfc3RhdGUgPT0gYnBfc3Rh cnR1cF9kaXNhYmxlZAotKwkgIHx8ICFsb2MtPmVuYWJsZWQKLSsJICB8fCBsb2MtPnNobGliX2Rp c2FibGVkCi0rCSAgfHwgIWJyZWFrcG9pbnRfYWRkcmVzc19pc19tZWFuaW5nZnVsIChiKSkKLSsJ Y29udGludWU7Ci0rCi0rICAgICAgLyogUGVybWFuZW50IGJyZWFrcG9pbnQgc2hvdWxkIGFsd2F5 cyBiZSBpbnNlcnRlZC4gICovCi0rICAgICAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJt YW5lbnQgJiYgISBsb2MtPmluc2VydGVkKQotKwlpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9f TElORV9fLAotKwkJCV8oImFsbGVnZWRseSBwZXJtYW5lbnQgYnJlYWtwb2ludCBpcyBub3QgIgot KwkJCSJhY3R1YWxseSBpbnNlcnRlZCIpKTsKLSsKLSsgICAgICBpZiAobG9jX2ZpcnN0ID09IE5V TEwKLSsJICAvKiBhZGRyZXNzIC8gb3ZlcmxheSBtYXRjaCAqLwotKwkgIHx8IGxvYy0+YWRkcmVz cyAhPSBsb2NfZmlyc3QtPmFkZHJlc3MKLSsJICB8fCAob3ZlcmxheV9kZWJ1Z2dpbmcgJiYgbG9j LT5zZWN0aW9uICE9IGxvY19maXJzdC0+c2VjdGlvbikpCi0rCXsKLSsJICBsb2NfZmlyc3QgPSBs b2M7Ci0rCSAgbG9jLT5kdXBsaWNhdGUgPSAwOwotKwkgIGNvbnRpbnVlOwotKwl9Ci0rCi0rICAg ICAgbG9jLT5kdXBsaWNhdGUgPSAxOwotKwotKyAgICAgIGlmIChsb2NfZmlyc3QtPm93bmVyLT5l bmFibGVfc3RhdGUgPT0gYnBfcGVybWFuZW50ICYmIGxvYy0+aW5zZXJ0ZWQKLSsgICAgICAgICAg JiYgYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1hbmVudCkKLSsJaW50ZXJuYWxfZXJyb3IgKF9f RklMRV9fLCBfX0xJTkVfXywKLSsJCQlfKCJhbm90aGVyIGJyZWFrcG9pbnQgd2FzIGluc2VydGVk IG9uIHRvcCBvZiAiCi0rCQkJImEgcGVybWFuZW50IGJyZWFrcG9pbnQiKSk7Ci0gICAgIH0KLSAK LSAgIGlmIChicmVha3BvaW50c19hbHdheXNfaW5zZXJ0ZWRfbW9kZSAoKSAmJiBzaG91bGRfaW5z ZXJ0Ci1AQCAtODA4Myw2ICs4MzM1LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5KQotIAkgICAgJiYgYi0+dHlwZSAhPSBicF90aHJlYWRfZXZlbnQKLSAJICAgICYm IGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAotIAkgICAgJiYgYi0+dHlwZSAhPSBicF9sb25n am1wX21hc3RlcgotKwkgICAgJiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25fbWFzdGVyCi0gCSAg ICAmJiBiLT5udW1iZXIgPj0gMCkKLSAJICB7Ci0gCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsK LUBAIC04MTAyLDYgKzgzNTUsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpCi0gCQkmJiBiLT50eXBlICE9IGJwX2ppdF9ldmVudAotIAkJJiYgYi0+dHlwZSAhPSBi cF9vdmVybGF5X2V2ZW50Ci0gCQkmJiBiLT50eXBlICE9IGJwX2xvbmdqbXBfbWFzdGVyCi0rCQkm JiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKLSAJCSYmIGItPm51bWJlciA+PSAwKQot IAkgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci0gCSAgfQotQEAgLTg0MDQsNiArODY1OCw3 IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAJIHJlc2V0IGxhdGVyIGJ5 IGJyZWFrcG9pbnRfcmVfc2V0LiAgKi8KLSAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgotICAg ICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6 Ci0gICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotICAgICAgIGJyZWFrOwotIAotQEAgLTg0 MjcsNiArODY4Miw4IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAg Y2FzZSBicF9sb25nam1wOgotICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgotICAgICBjYXNl IGJwX2ppdF9ldmVudDoKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0rICAgIGNhc2UgYnBfZXhj ZXB0aW9uX3Jlc3VtZToKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotQEAgLTg0NjIsNiArODcx OSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0ICh2b2lkKQotICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVy X2JyZWFrcG9pbnQgKCJfbG9uZ2ptcCIpOwotICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFr cG9pbnQgKCJzaWdsb25nam1wIik7Ci0gICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2lu dCAoIl9zaWdsb25nam1wIik7Ci0rICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50 ICgpOwotIH0KLSAMCi0gLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVha3Bv aW50OgotQEAgLTkzMjcsNiArOTU4NSwyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkKLSAgIHJldHVy biB0cF92ZWM7Ci0gfQotIAotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyBy ZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLworKy8qIENhbGwgdHlwZV9t YXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZp bGUuICAqLwogKwogK3N0YXRpYyB2b2lkCiArYnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQgKHZv aWQpCkBAIC0xODY5LDE0ICs5MDgsMTQgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQK ICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywg dGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNy byB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTk4NTAsNCArMTAxMjQsNSBAQCBpbmZlcmlv ciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9k ZSBpcyBvZmYuIiksCitAQCAtMTA3MjEsNCArMTA4NDksNSBAQCBpbmZlcmlvciBpbiBhbGwtc3Rv cCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiks CiAgICBhdXRvbWF0aWNfaGFyZHdhcmVfYnJlYWtwb2ludHMgPSAxOwogIAogICAgb2JzZXJ2ZXJf YXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJyZWFrcG9pbnRfYWJvdXRfdG9fcHJvY2VlZCk7CiAr ICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChicmVha3BvaW50X3R5cGVzX21hcmtfdXNlZCk7 CiAgfQogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmggYi9nZGIvYnJlYWtwb2ludC5oCi1p bmRleCBiYTQ5OWM2Li44MGY3MDJmIDEwMDY0NAoraW5kZXggNmIzNzNhMy4uNTlhYTQxMiAxMDA2 NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmgKICsrKyBiL2dkYi9icmVha3BvaW50LmgKIEBAIC01 Niw2ICs1NiwxMyBAQCBlbnVtIGJwdHlwZQpAQCAtMTkwMywxOCArOTQyLDcgQEAgaW5kZXggYmE0 OTljNi4uODBmNzAyZiAxMDA2NDQKICAgICAgYnBfY2F0Y2hwb2ludCwKICAKICAgICAgYnBfdHJh Y2Vwb2ludCwKLUBAIC0yMjgsMTAgKzIzOCw2IEBAIHN0cnVjdCBicF9sb2NhdGlvbgotICAgICAg dGhlIHNhbWUgcGFyZW50IGJyZWFrcG9pbnQuICAqLwotICAgc3RydWN0IGJwX2xvY2F0aW9uICpu ZXh0OwotIAotLSAgLyogUG9pbnRlciB0byB0aGUgbmV4dCBicmVha3BvaW50IGxvY2F0aW9uLCBp biBhIGdsb2JhbAotLSAgICAgbGlzdCBvZiBhbGwgYnJlYWtwb2ludCBsb2NhdGlvbnMuICAqLwot LSAgc3RydWN0IGJwX2xvY2F0aW9uICpnbG9iYWxfbmV4dDsKLS0gCi0gICAvKiBUeXBlIG9mIHRo aXMgYnJlYWtwb2ludCBsb2NhdGlvbi4gICovCi0gICBlbnVtIGJwX2xvY190eXBlIGxvY190eXBl OwotIAotQEAgLTU4Myw2ICs1ODksMTAgQEAgc3RydWN0IGJwc3RhdF93aGF0CitAQCAtNjAzLDYg KzYxMywxMCBAQCBzdHJ1Y3QgYnBzdGF0X3doYXQKICAgICAgICAgY29udGludWluZyBmcm9tIGEg Y2FsbCBkdW1teSB3aXRob3V0IHBvcHBpbmcgdGhlIGZyYW1lIGlzIG5vdCBhCiAgICAgICAgIHVz ZWZ1bCBvbmUpLiAgKi8KICAgICAgaW50IGNhbGxfZHVtbXk7CkBAIC0xOTI1LDcgKzk1Myw3IEBA IGluZGV4IGJhNDk5YzYuLjgwZjcwMmYgMTAwNjQ0CiAgICB9OwogIAogIC8qIFRoZSBwb3NzaWJs ZSByZXR1cm4gdmFsdWVzIGZvciBwcmludF9icHN0YXQsIHByaW50X2l0X25vcm1hbCwKLUBAIC05 NDYsNiArOTU2LDkgQEAgZXh0ZXJuIGludCBjYXRjaGluZ19zeXNjYWxsX251bWJlciAoaW50IHN5 c2NhbGxfbnVtYmVyKTsKK0BAIC05ODUsNiArOTk5LDkgQEAgZXh0ZXJuIGludCBjYXRjaGluZ19z eXNjYWxsX251bWJlciAoaW50IHN5c2NhbGxfbnVtYmVyKTsKICAvKiBUZWxsIGEgYnJlYWtwb2lu dCB0byBiZSBxdWlldC4gICovCiAgZXh0ZXJuIHZvaWQgbWFrZV9icmVha3BvaW50X3NpbGVudCAo c3RydWN0IGJyZWFrcG9pbnQgKik7CiAgCkBAIC0xOTM1LDQzMiArOTYzLDIwIEBAIGluZGV4IGJh NDk5YzYuLjgwZjcwMmYgMTAwNjQ0CiAgLyogUmV0dXJuIGEgdHJhY2Vwb2ludCB3aXRoIHRoZSBn aXZlbiBudW1iZXIgaWYgZm91bmQuICAqLwogIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqZ2V0 X3RyYWNlcG9pbnQgKGludCBudW0pOwogIAotZGlmZiAtLWdpdCBhL2dkYi9jLWV4cC55IGIvZ2Ri L2MtZXhwLnkKLWluZGV4IGY4ZTRmMTIuLjViNDdlMmUgMTAwNjQ0Ci0tLS0gYS9nZGIvYy1leHAu eQotKysrIGIvZ2RiL2MtZXhwLnkKLUBAIC0xMTcsNiArMTE3LDggQEAgc3RhdGljIGludCB5eWxl eCAodm9pZCk7Ci0gCi0gdm9pZCB5eWVycm9yIChjaGFyICopOwotIAotKy8qIENsZWFudXAgZm9y ICdub25lbXB0eV90eXBlbGlzdCcgKi8KLStzdGF0aWMgc3RydWN0IGNsZWFudXAgKnR5cGVsaXN0 X2NsZWFudXA7Ci0gJX0KLSAKLSAvKiBBbHRob3VnaCB0aGUgeWFjYyAidmFsdWUiIG9mIGFuIGV4 cHJlc3Npb24gaXMgbm90IHVzZWQsCi1AQCAtMTU3LDYgKzE1OSw3IEBAIHZvaWQgeXllcnJvciAo Y2hhciAqKTsKLSAlewotIC8qIFlZU1RZUEUgZ2V0cyBkZWZpbmVkIGJ5ICV1bmlvbiAqLwotIHN0 YXRpYyBpbnQgcGFyc2VfbnVtYmVyIChjaGFyICosIGludCwgaW50LCBZWVNUWVBFICopOwotK3N0 YXRpYyBzdHJ1Y3Qgc3Rva2VuIG9wZXJhdG9yX3N0b2tlbiAoY29uc3QgY2hhciAqKTsKLSAlfQot IAotICV0eXBlIDx2b2lkdmFsPiBleHAgZXhwMSB0eXBlX2V4cCBzdGFydCB2YXJpYWJsZSBxdWFs aWZpZWRfbmFtZSBsY3VybHkKLUBAIC0xOTksOSArMjAyLDEyIEBAIHN0YXRpYyBpbnQgcGFyc2Vf bnVtYmVyIChjaGFyICosIGludCwgaW50LCBZWVNUWVBFICopOwotIAotICV0b2tlbiA8c3N5bT4g TkFNRV9PUl9JTlQgCi0gCi0rJXRva2VuIE9QRVJBVE9SCi0gJXRva2VuIFNUUlVDVCBDTEFTUyBV TklPTiBFTlVNIFNJWkVPRiBVTlNJR05FRCBDT0xPTkNPTE9OCi0gJXRva2VuIFRFTVBMQVRFCi0g JXRva2VuIEVSUk9SCi0rJXRva2VuIE5FVyBERUxFVEUKLSsldHlwZSA8c3ZhbD4gb3BlcmF0b3IK LSAKLSAvKiBTcGVjaWFsIHR5cGUgY2FzZXMsIHB1dCBpbiB0byBhbGxvdyB0aGUgcGFyc2VyIHRv IGRpc3Rpbmd1aXNoIGRpZmZlcmVudAotICAgIGxlZ2FsIGJhc2V0eXBlcy4gICovCi1AQCAtNDAx LDYgKzQwNywzNiBAQCBhcmdsaXN0CToJYXJnbGlzdCAnLCcgZXhwICAgJXByZWMgQUJPVkVfQ09N TUEKLSAJCQl7IGFyZ2xpc3RfbGVuKys7IH0KLSAJOwotIAotK2V4cCAgICAgOiAgICAgICBleHAg JygnIG5vbmVtcHR5X3R5cGVsaXN0ICcpJyBjb25zdF9vcl92b2xhdGlsZQotKwkJCXsgaW50IGk7 Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRSk7Ci0rCQkJICB3cml0 ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSAkPGl2ZWM+M1swXSk7Ci0rCQkJICBmb3IgKGkg PSAwOyBpIDwgJDxpdmVjPjNbMF07ICsraSkKLSsJCQkgICAgd3JpdGVfZXhwX2VsdF90eXBlICgk PHR2ZWM+M1tpICsgMV0pOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0KChMT05HRVNUKSAk PGl2ZWM+M1swXSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRSk7 Ci0rCQkJICBkb19jbGVhbnVwcyAodHlwZWxpc3RfY2xlYW51cCk7Ci0rCQkJfQotKwk7Ci0rCi0r LyoKLStleHAgICAgIDogICAgICAgQkxPQ0tOQU1FICcoJyBub25lbXB0eV90eXBlbGlzdCAnKScK LSsJCQl7IGludCBpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFRZUEVfSU5TVEFOQ0Vf TE9PS1VQKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfc3ltICgkMS5zeW0pOwotKwkJCSAgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKFRZUEVfSU5TVEFOQ0VfTE9PS1VQKTsKLSsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2Nz dCAoKExPTkdFU1QpICQ8aXZlYz4zWzBdKTsKLSsJCQkgIGZvciAoaSA9IDA7IGkgPCAkPGl2ZWM+ M1swXTsgKytpKQotKwkJCSAgICB3cml0ZV9leHBfZWx0X3R5cGUgKCQ8dHZlYz4zW2kgKyAxXSk7 Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QoKExPTkdFU1QpICQ8aXZlYz4zWzBdKTsKLSsJ CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNFKTsKLSsJCQkgIGRvX2NsZWFu dXBzICh0eXBlbGlzdF9jbGVhbnVwKTsKLSsJCQl9Ci0rCTsKLSsqLwotKwotIHJjdXJseQk6CSd9 JwotIAkJCXsgJCQgPSBlbmRfYXJnbGlzdCAoKSAtIDE7IH0KLSAJOwotQEAgLTcwMyw2ICs3Mzks NyBAQCB2YXJpYWJsZToJYmxvY2sgQ09MT05DT0xPTiBuYW1lCi0gcXVhbGlmaWVkX25hbWU6CXR5 cGViYXNlIENPTE9OQ09MT04gbmFtZQotIAkJCXsKLSAJCQkgIHN0cnVjdCB0eXBlICp0eXBlID0g JDE7Ci0rCQkJICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSAJCQkgIGlmIChUWVBFX0NPREUgKHR5 cGUpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLSAJCQkgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9 IFRZUEVfQ09ERV9VTklPTgotIAkJCSAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9D T0RFX05BTUVTUEFDRSkKLUBAIC03MTgsNiArNzU1LDcgQEAgcXVhbGlmaWVkX25hbWU6CXR5cGVi YXNlIENPTE9OQ09MT04gbmFtZQotIAkJCXsKLSAJCQkgIHN0cnVjdCB0eXBlICp0eXBlID0gJDE7 Ci0gCQkJICBzdHJ1Y3Qgc3Rva2VuIHRtcF90b2tlbjsKLSsJCQkgIENIRUNLX1RZUEVERUYgKHR5 cGUpOwotIAkJCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1NUUlVDVAotIAkJ CSAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OCi0gCQkJICAgICAg JiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfTkFNRVNQQUNFKQotQEAgLTc0MCwxMiAr Nzc4LDEzIEBAIHF1YWxpZmllZF9uYW1lOgl0eXBlYmFzZSBDT0xPTkNPTE9OIG5hbWUKLSAJOwot IAotIHZhcmlhYmxlOglxdWFsaWZpZWRfbmFtZQotKwl8CUNPTE9OQ09MT04gcXVhbGlmaWVkX25h bWUKLSAJfAlDT0xPTkNPTE9OIG5hbWUKLSAJCQl7Ci0gCQkJICBjaGFyICpuYW1lID0gY29weV9u YW1lICgkMik7Ci0gCQkJICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gCQkJICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKm1zeW1ib2w7Ci0tCi0rCQkJICAKLSAJCQkgIHN5bSA9Ci0gCQkJICAgIGxvb2t1 cF9zeW1ib2wgKG5hbWUsIChjb25zdCBzdHJ1Y3QgYmxvY2sgKikgTlVMTCwKLSAJCQkJCSAgIFZB Ul9ET01BSU4sIChpbnQgKikgTlVMTCk7Ci1AQCAtODgzLDcgKzkyMiw3IEBAIGFycmF5X21vZDoJ J1snICddJwotIGZ1bmNfbW9kOgknKCcgJyknCi0gCQkJeyAkJCA9IDA7IH0KLSAJfAknKCcgbm9u ZW1wdHlfdHlwZWxpc3QgJyknCi0tCQkJeyBmcmVlICgkMik7ICQkID0gMDsgfQotKwkJCXsgZG9f Y2xlYW51cHMgKHR5cGVsaXN0X2NsZWFudXApOyAkJCA9IDA7IH0KLSAJOwotIAotIC8qIFdlIHVz ZWQgdG8gdHJ5IHRvIHJlY29nbml6ZSBwb2ludGVyIHRvIG1lbWJlciB0eXBlcyBoZXJlLCBidXQK LUBAIC0xMDg4LDEyICsxMTI3LDE1IEBAIHR5cGVuYW1lOglUWVBFTkFNRQotIG5vbmVtcHR5X3R5 cGVsaXN0Ci0gCToJdHlwZQotIAkJeyAkJCA9IChzdHJ1Y3QgdHlwZSAqKikgbWFsbG9jIChzaXpl b2YgKHN0cnVjdCB0eXBlICopICogMik7Ci0rCQkgIHR5cGVsaXN0X2NsZWFudXAgPSBtYWtlX2Ns ZWFudXAgKGZyZWUsICQkKTsKLSAJCSAgJDxpdmVjPiRbMF0gPSAxOwkvKiBOdW1iZXIgb2YgdHlw ZXMgaW4gdmVjdG9yICovCi0gCQkgICQkWzFdID0gJDE7Ci0gCQl9Ci0gCXwJbm9uZW1wdHlfdHlw ZWxpc3QgJywnIHR5cGUKLSAJCXsgaW50IGxlbiA9IHNpemVvZiAoc3RydWN0IHR5cGUgKikgKiAo KysoJDxpdmVjPjFbMF0pICsgMSk7Ci0gCQkgICQkID0gKHN0cnVjdCB0eXBlICoqKSByZWFsbG9j ICgoY2hhciAqKSAkMSwgbGVuKTsKLSsJCSAgZGlzY2FyZF9jbGVhbnVwcyAodHlwZWxpc3RfY2xl YW51cCk7Ci0rCQkgIHR5cGVsaXN0X2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKGZyZWUsICQkKTsK LSAJCSAgJCRbJDxpdmVjPiRbMF1dID0gJDM7Ci0gCQl9Ci0gCTsKLUBAIC0xMTE3LDEwICsxMTU5 LDEzNSBAQCBjb25zdF9vcl92b2xhdGlsZV9ub29wdDogIAljb25zdF9hbmRfdm9sYXRpbGUKLSAJ CQl7IHB1c2hfdHlwZSAodHBfdm9sYXRpbGUpOyB9Ci0gCTsKLSAKLStvcGVyYXRvcjoJT1BFUkFU T1IgTkVXCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIiBuZXciKTsgfQotKwl8CU9QRVJB VE9SIERFTEVURQotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCIgZGVsZXRlIik7IH0KLSsJ fAlPUEVSQVRPUiBORVcgJ1snICddJwotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCIgbmV3 W10iKTsgfQotKwl8CU9QRVJBVE9SIERFTEVURSAnWycgJ10nCi0rCQkJeyAkJCA9IG9wZXJhdG9y X3N0b2tlbiAoIiBkZWxldGVbXSIpOyB9Ci0rCXwJT1BFUkFUT1IgJysnCi0rCQkJeyAkJCA9IG9w ZXJhdG9yX3N0b2tlbiAoIisiKTsgfQotKwl8CU9QRVJBVE9SICctJwotKwkJCXsgJCQgPSBvcGVy YXRvcl9zdG9rZW4gKCItIik7IH0KLSsJfAlPUEVSQVRPUiAnKicKLSsJCQl7ICQkID0gb3BlcmF0 b3Jfc3Rva2VuICgiKiIpOyB9Ci0rCXwJT1BFUkFUT1IgJy8nCi0rCQkJeyAkJCA9IG9wZXJhdG9y X3N0b2tlbiAoIi8iKTsgfQotKwl8CU9QRVJBVE9SICclJwotKwkJCXsgJCQgPSBvcGVyYXRvcl9z dG9rZW4gKCIlIik7IH0KLSsJfAlPUEVSQVRPUiAnXicKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rv a2VuICgiXiIpOyB9Ci0rCXwJT1BFUkFUT1IgJyYnCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tl biAoIiYiKTsgfQotKwl8CU9QRVJBVE9SICd8JwotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4g KCJ8Iik7IH0KLSsJfAlPUEVSQVRPUiAnficKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgi fiIpOyB9Ci0rCXwJT1BFUkFUT1IgJyEnCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIiEi KTsgfQotKwl8CU9QRVJBVE9SICc9JwotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCI9Iik7 IH0KLSsJfAlPUEVSQVRPUiAnPCcKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiPCIpOyB9 Ci0rCXwJT1BFUkFUT1IgJz4nCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIj4iKTsgfQot Kwl8CU9QRVJBVE9SIEFTU0lHTl9NT0RJRlkKLSsJCQl7IGNvbnN0IGNoYXIgKm9wID0gInVua25v d24iOwotKwkJCSAgc3dpdGNoICgkMikKLSsJCQkgICAgewotKwkJCSAgICBjYXNlIEJJTk9QX1JT SDoKLSsJCQkgICAgICBvcCA9ICI+Pj0iOwotKwkJCSAgICAgIGJyZWFrOwotKwkJCSAgICBjYXNl IEJJTk9QX0xTSDoKLSsJCQkgICAgICBvcCA9ICI8PD0iOwotKwkJCSAgICAgIGJyZWFrOwotKwkJ CSAgICBjYXNlIEJJTk9QX0FERDoKLSsJCQkgICAgICBvcCA9ICIrPSI7Ci0rCQkJICAgICAgYnJl YWs7Ci0rCQkJICAgIGNhc2UgQklOT1BfU1VCOgotKwkJCSAgICAgIG9wID0gIi09IjsKLSsJCQkg ICAgICBicmVhazsKLSsJCQkgICAgY2FzZSBCSU5PUF9NVUw6Ci0rCQkJICAgICAgb3AgPSAiKj0i OwotKwkJCSAgICAgIGJyZWFrOwotKwkJCSAgICBjYXNlIEJJTk9QX0RJVjoKLSsJCQkgICAgICBv cCA9ICIvPSI7Ci0rCQkJICAgICAgYnJlYWs7Ci0rCQkJICAgIGNhc2UgQklOT1BfUkVNOgotKwkJ CSAgICAgIG9wID0gIiU9IjsKLSsJCQkgICAgICBicmVhazsKLSsJCQkgICAgY2FzZSBCSU5PUF9C SVRXSVNFX0lPUjoKLSsJCQkgICAgICBvcCA9ICJ8PSI7Ci0rCQkJICAgICAgYnJlYWs7Ci0rCQkJ ICAgIGNhc2UgQklOT1BfQklUV0lTRV9BTkQ6Ci0rCQkJICAgICAgb3AgPSAiJj0iOwotKwkJCSAg ICAgIGJyZWFrOwotKwkJCSAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgotKwkJCSAgICAgIG9w ID0gIl49IjsKLSsJCQkgICAgICBicmVhazsKLSsJCQkgICAgZGVmYXVsdDoKLSsJCQkgICAgICBi cmVhazsKLSsJCQkgICAgfQotKwotKwkJCSAgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKG9wKTsKLSsJ CQl9Ci0rCXwJT1BFUkFUT1IgTFNICi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIjw8Iik7 IH0KLSsJfAlPUEVSQVRPUiBSU0gKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiPj4iKTsg fQotKwl8CU9QRVJBVE9SIEVRVUFMCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIj09Iik7 IH0KLSsJfAlPUEVSQVRPUiBOT1RFUVVBTAotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCIh PSIpOyB9Ci0rCXwJT1BFUkFUT1IgTEVRCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIjw9 Iik7IH0KLSsJfAlPUEVSQVRPUiBHRVEKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiPj0i KTsgfQotKwl8CU9QRVJBVE9SIEFOREFORAotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCIm JiIpOyB9Ci0rCXwJT1BFUkFUT1IgT1JPUgotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCJ8 fCIpOyB9Ci0rCXwJT1BFUkFUT1IgSU5DUkVNRU5UCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tl biAoIisrIik7IH0KLSsJfAlPUEVSQVRPUiBERUNSRU1FTlQKLSsJCQl7ICQkID0gb3BlcmF0b3Jf c3Rva2VuICgiLS0iKTsgfQotKwl8CU9QRVJBVE9SICcsJwotKwkJCXsgJCQgPSBvcGVyYXRvcl9z dG9rZW4gKCIsIik7IH0KLSsJfAlPUEVSQVRPUiBBUlJPV19TVEFSCi0rCQkJeyAkJCA9IG9wZXJh dG9yX3N0b2tlbiAoIi0+KiIpOyB9Ci0rCXwJT1BFUkFUT1IgQVJST1cKLSsJCQl7ICQkID0gb3Bl cmF0b3Jfc3Rva2VuICgiLT4iKTsgfQotKwl8CU9QRVJBVE9SICcoJyAnKScKLSsJCQl7ICQkID0g b3BlcmF0b3Jfc3Rva2VuICgiKCkiKTsgfQotKwl8CU9QRVJBVE9SICdbJyAnXScKLSsJCQl7ICQk ID0gb3BlcmF0b3Jfc3Rva2VuICgiW10iKTsgfQotKwl8CU9QRVJBVE9SIHB0eXBlCi0rCQkJeyBj aGFyICpuYW1lLCAqY2Fub247Ci0rCQkJICBsb25nIGxlbmd0aDsKLSsJCQkgIHN0cnVjdCB1aV9m aWxlICpidWYgPSBtZW1fZmlsZW9wZW4gKCk7Ci0rCi0rCQkJICBjX3ByaW50X3R5cGUgKCQyLCBO VUxMLCBidWYsIC0xLCAwKTsKLSsJCQkgIG5hbWUgPSB1aV9maWxlX3hzdHJkdXAgKGJ1ZiwgJmxl bmd0aCk7Ci0rCQkJICBjYW5vbiA9IGNwX2Nhbm9uaWNhbGl6ZV9zdHJpbmcgKG5hbWUpOwotKwkJ CSAgaWYgKGNhbm9uICE9IE5VTEwpCi0rCQkJICAgIHsKLSsJCQkgICAgICB4ZnJlZSAobmFtZSk7 Ci0rCQkJICAgICAgbmFtZSA9IGNhbm9uOwotKwkJCSAgICB9Ci0rCQkJICB1aV9maWxlX2RlbGV0 ZSAoYnVmKTsKLSsJCQkgICQkID0gb3BlcmF0b3Jfc3Rva2VuIChuYW1lKTsKLSsJCQl9Ci0rCTsK LSsKLSsKLSsKLSBuYW1lCToJTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9Ci0gCXwJQkxPQ0tOQU1F IHsgJCQgPSAkMS5zdG9rZW47IH0KLSAJfAlUWVBFTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9Ci0g CXwJTkFNRV9PUl9JTlQgIHsgJCQgPSAkMS5zdG9rZW47IH0KLSsJfAlvcGVyYXRvciB7ICQkID0g JDE7IH0KLSAJOwotIAotIG5hbWVfbm90X3R5cGVuYW1lIDoJTkFNRQotQEAgLTExMzYsNiArMTMw MywyMCBAQCBuYW1lX25vdF90eXBlbmFtZSA6CU5BTUUKLSAKLSAlJQotIAotKy8qIFJldHVybnMg YSBzdG9rZW4gb2YgdGhlIG9wZXJhdG9yIG5hbWUgZ2l2ZW4gYnkgT1AgKHdoaWNoIGRvZXMgbm90 Ci0rICAgaW5jbHVkZSB0aGUgc3RyaW5nICJvcGVyYXRvciIpLiAgVGhlIHJlc3VsdCBpcyB4bWFs bG9jJ2QuICAqLwotK3N0YXRpYyBzdHJ1Y3Qgc3Rva2VuCi0rb3BlcmF0b3Jfc3Rva2VuIChjb25z dCBjaGFyICpvcCkKLSt7Ci0rICBzdGF0aWMgY29uc3QgY2hhciAqb3BlcmF0b3Jfc3RyaW5nID0g Im9wZXJhdG9yIjsKLSsgIHN0cnVjdCBzdG9rZW4gc3QgPSB7IE5VTEwsIDAgfTsKLSsgIHN0Lmxl bmd0aCA9IHN0cmxlbiAob3BlcmF0b3Jfc3RyaW5nKSArIHN0cmxlbiAob3ApOwotKyAgc3QucHRy ID0geG1hbGxvYyAoc3QubGVuZ3RoICsgMSk7Ci0rICBzdHJjcHkgKHN0LnB0ciwgb3BlcmF0b3Jf c3RyaW5nKTsKLSsgIHN0cmNhdCAoc3QucHRyLCBvcCk7Ci0rICByZXR1cm4gc3Q7Ci0rfTsKLSsK LSAvKiBUYWtlIGNhcmUgb2YgcGFyc2luZyBhIG51bWJlciAoYW55dGhpbmcgdGhhdCBzdGFydHMg d2l0aCBhIGRpZ2l0KS4KLSAgICBTZXQgeXlsdmFsIGFuZCByZXR1cm4gdGhlIHRva2VuIHR5cGU7 IHVwZGF0ZSBsZXhwdHIuCi0gICAgTEVOIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBp dC4gICovCi1AQCAtMTcxNCw2ICsxODk1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0b2tlbiBp ZGVudF90b2tlbnNbXSA9Ci0gICAgIHsibG9uZyIsIExPTkcsIE9QX05VTEwsIDB9LAotICAgICB7 InRydWUiLCBUUlVFS0VZV09SRCwgT1BfTlVMTCwgMX0sCi0gICAgIHsiaW50IiwgSU5UX0tFWVdP UkQsIE9QX05VTEwsIDB9LAotKyAgICB7Im5ldyIsIE5FVywgT1BfTlVMTCwgMX0sCi0rICAgIHsi ZGVsZXRlIiwgREVMRVRFLCBPUF9OVUxMLCAxfSwKLSsgICAgeyJvcGVyYXRvciIsIE9QRVJBVE9S LCBPUF9OVUxMLCAxfSwKLSAKLSAgICAgeyJhbmQiLCBBTkRBTkQsIEJJTk9QX0VORCwgMX0sCi0g ICAgIHsiYW5kX2VxIiwgQVNTSUdOX01PRElGWSwgQklOT1BfQklUV0lTRV9BTkQsIDF9LAotQEAg LTE4MjIsNiArMjAwNiwxMyBAQCBzdGF0aWMgaW50IGxhc3Rfd2FzX3N0cnVjdG9wOwotIHN0YXRp YyBpbnQKLSB5eWxleCAodm9pZCkKLSB7Ci0rICAvKiBuYW1lX3ByZWZpeCBzdG9yZXMgdGhlIGZ1 bGwgcXVhbGlmaWNhdGlvbiBvZiBhIHZhcmlhYmxlIHRoYXQgaXMKLSsgICAgIHNwZWNpZmllZCBp biB0aGUgZXhwcmVzc2lvbi4gSXQgaXMgdXNlZCB0byBlbGVtaW5hdGUgY29uZnVzaW9uIAotKyAg ICAgZHVyaW5nIGxvb2t1cC4qLwotKyAgc3RhdGljIGNoYXIgKm5hbWVfcHJlZml4ID0gTlVMTDsK LSsgIHN0YXRpYyBpbnQgbmFtZV9wcmVmaXhfbGVuID0gMDsKLSsgIHN0YXRpYyBpbnQgdGVybWlu YXRlX3ByZWZpeCA9IDA7Ci0rICAKLSAgIGludCBjOwotICAgaW50IG5hbWVsZW47Ci0gICB1bnNp Z25lZCBpbnQgaTsKLUBAIC0xODMwLDkgKzIwMjEsMTkgQEAgeXlsZXggKHZvaWQpCi0gICBjaGFy ICpjb3B5OwotIAotICAgbGFzdF93YXNfc3RydWN0b3AgPSAwOwotLQotKyAgCi0gIHJldHJ5Ogot LQotKyAgCi0rICBpZiAodGVybWluYXRlX3ByZWZpeAotKyAgICAgIHx8IGxleHB0ciAhPSBuYW1l X3ByZWZpeCArIG5hbWVfcHJlZml4X2xlbikKLSsgICAgewotKyAgICAgIC8qIFNvbWUgdG9rZW4g d2FzIHNraXBwZWQsIHNvIGNsZWFyIG5hbWVfcHJlZml4LiAqLwotKyAgICAgIG5hbWVfcHJlZml4 ID0gTlVMTDsKLSsgICAgICBuYW1lX3ByZWZpeF9sZW4gPSAwOwotKyAgICB9Ci0rICAgIAotKyAg dGVybWluYXRlX3ByZWZpeCA9IDE7Ci0rICAJICAJICAKLSAgIC8qIENoZWNrIGlmIHRoaXMgaXMg YSBtYWNybyBpbnZvY2F0aW9uIHRoYXQgd2UgbmVlZCB0byBleHBhbmQuICAqLwotICAgaWYgKCEg c2Nhbm5pbmdfbWFjcm9fZXhwYW5zaW9uICgpKQotICAgICB7Ci1AQCAtMTg2OCwxMCArMjA2OSwx OSBAQCB5eWxleCAodm9pZCkKLSAJICAgICYmIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSAh PSBsYW5ndWFnZV9jcGx1cykKLSAJICBicmVhazsKLSAKLSsJaWYgKHRva2VudGFiMltpXS50b2tl biA9PSBDT0xPTkNPTE9OKQotKwkgIHsKLSsJICAgIG5hbWVfcHJlZml4X2xlbiArPSAyOwotKwkg ICAgdGVybWluYXRlX3ByZWZpeCA9IDA7Ci0rCSAgICBpZiAobmFtZV9wcmVmaXggPT0gTlVMTCkK LSsJICAgICAgbmFtZV9wcmVmaXggPSBsZXhwdHI7Ci0rCSAgfQotKwotIAlsZXhwdHIgKz0gMjsK LSAJeXlsdmFsLm9wY29kZSA9IHRva2VudGFiMltpXS5vcGNvZGU7Ci0gCWlmIChpbl9wYXJzZV9m aWVsZCAmJiB0b2tlbnRhYjJbaV0udG9rZW4gPT0gQVJST1cpCi0gCSAgbGFzdF93YXNfc3RydWN0 b3AgPSAxOwotKwkKLSAJcmV0dXJuIHRva2VudGFiMltpXS50b2tlbjsKLSAgICAgICB9Ci0gCi1A QCAtMTkwMCw2ICsyMTEwLDggQEAgeXlsZXggKHZvaWQpCi0gICAgICAgICByZXR1cm4gMDsKLSAK LSAgICAgY2FzZSAnICc6Ci0rICAgICAgbmFtZV9wcmVmaXhfbGVuKys7Ci0rICAgICAgdGVybWlu YXRlX3ByZWZpeCA9IDA7Ci0gICAgIGNhc2UgJ1x0JzoKLSAgICAgY2FzZSAnXG4nOgotICAgICAg IGxleHB0cisrOwotQEAgLTIwNTcsMTEgKzIyNjksMTMgQEAgeXlsZXggKHZvaWQpCi0gICAgIGVy cm9yICgiSW52YWxpZCBjaGFyYWN0ZXIgJyVjJyBpbiBleHByZXNzaW9uLiIsIGMpOwotIAotICAg LyogSXQncyBhIG5hbWUuICBTZWUgaG93IGxvbmcgaXQgaXMuICAqLwotKyAgCi0gICBuYW1lbGVu ID0gMDsKLSAgIGZvciAoYyA9IHRva3N0YXJ0W25hbWVsZW5dOwotICAgICAgICAoYyA9PSAnXycg fHwgYyA9PSAnJCcgfHwgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotIAl8fCAoYyA+PSAnYScgJiYg YyA8PSAneicpIHx8IChjID49ICdBJyAmJiBjIDw9ICdaJykgfHwgYyA9PSAnPCcpOykKLSAgICAg ewotKyAgICAKLSAgICAgICAvKiBUZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdHMgYXJlIHBhcnQgb2Yg dGhlIG5hbWUuCi0gCSBGSVhNRTogVGhpcyBtaXNoYW5kbGVzIGBwcmludCAkYTw0JiYkYT4zJy4g ICovCi0gCi1AQCAtMjEyNSwxNCArMjMzOSwyOSBAQCB5eWxleCAodm9pZCkKLSAgICAgIGN1cnJl bnRseSBhcyBuYW1lcyBvZiB0eXBlczsgTkFNRSBmb3Igb3RoZXIgc3ltYm9scy4KLSAgICAgIFRo ZSBjYWxsZXIgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGNhcmUgYWJvdXQgdGhlIGRpc3RpbmN0aW9u LiAgKi8KLSAgIHsKLSsgICAgY2hhciAqdG1wID0gY29weTsKLSAgICAgc3RydWN0IHN5bWJvbCAq c3ltOwotICAgICBpbnQgaXNfYV9maWVsZF9vZl90aGlzID0gMDsKLSAgICAgaW50IGhleHR5cGU7 Ci0gCi0tICAgIHN5bSA9IGxvb2t1cF9zeW1ib2wgKGNvcHksIGV4cHJlc3Npb25fY29udGV4dF9i bG9jaywKLSsgICAgaWYgKG5hbWVfcHJlZml4ICE9IE5VTEwpCi0rICAgICAgdG1wID0gc2F2ZXN0 cmluZyAobmFtZV9wcmVmaXgsIG5hbWVfcHJlZml4X2xlbituYW1lbGVuKTsKLSsKLSsgICAgc3lt ID0gbG9va3VwX3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2NvbnRleHRfYmxvY2ssCi0gCQkJIFZB Ul9ET01BSU4sCi0gCQkJIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9j cGx1cwotIAkJCSA/ICZpc19hX2ZpZWxkX29mX3RoaXMgOiAoaW50ICopIE5VTEwpOwotKwkJCSAK LSsgICAgLyogS2VlcCB0aGlzIG5hbWUgYXMgdGhlIHByZWZpeCBmb3IgdGhlIG5leHQgbmFtZS4g Ki8KLSsgICAgaWYgKHN5bSkKLSsgICAgICB7Ci0rCWlmIChuYW1lX3ByZWZpeCA9PSBOVUxMKQot KwkgIG5hbWVfcHJlZml4ID0gdG9rc3RhcnQ7Ci0rCi0rCW5hbWVfcHJlZml4X2xlbiArPSBuYW1l bGVuOwotKwl0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsgICAgICB9Ci0rCi0gICAgIC8qIENhbGwg bG9va3VwX3N5bXRhYiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5bXRhYiwgaW4gY2FzZSB0aGVyZSBh cmUKLSAgICAgICAgbm8gcHN5bXRhYnMgKGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVyZSBjaGFu Z2UgdG8gYmxvdyBhd2F5IHRoZQotICAgICAgICBwc3ltdGFicyBvbmNlIG9uY2Ugc3ltYm9scyBh cmUgcmVhZCkuICAqLwotQEAgLTIxOTEsNiArMjQyMCw3IEBAIHl5bGV4ICh2b2lkKQotICAgICB5 eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29mX3RoaXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7Ci0gICAg IGlmIChpbl9wYXJzZV9maWVsZCAmJiAqbGV4cHRyID09ICdcMCcpCi0gICAgICAgc2F3X25hbWVf YXRfZW9mID0gMTsKLSsgICAgICAgIAotICAgICByZXR1cm4gTkFNRTsKLSAgIH0KLSB9CiBkaWZm IC0tZ2l0IGEvZ2RiL2MtbGFuZy5jIGIvZ2RiL2MtbGFuZy5jCi1pbmRleCBkMDE0OTBjLi5iYzM1 YTNlIDEwMDY0NAoraW5kZXggZDYyMDg4MS4uZDRhMjI5ZCAxMDA2NDQKIC0tLSBhL2dkYi9jLWxh bmcuYwogKysrIGIvZ2RiL2MtbGFuZy5jCi1AQCAtNzE1LDcgKzcxNSw3IEBAIGNfZ2V0X3N0cmlu ZyAoc3RydWN0IHZhbHVlICp2YWx1ZSwgZ2RiX2J5dGUgKipidWZmZXIsIGludCAqbGVuZ3RoLAor QEAgLTcxNyw3ICs3MTcsNyBAQCBjX2dldF9zdHJpbmcgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIGdk Yl9ieXRlICoqYnVmZmVyLCBpbnQgKmxlbmd0aCwKICAgICAgIElmIGxlbmd0aCByZXR1cm5lZCBm cm9tIHJlYWRfc3RyaW5nIHdhcyA+IDAsIHJldHVybiB0aGUgbnVtYmVyIG9mCiAgICAgICBjaGFy YWN0ZXJzIHJlYWQgYnkgZGl2aWRpbmcgdGhlIG51bWJlciBvZiBieXRlcyBieSB3aWR0aC4gICov CiAgICBpZiAoKmxlbmd0aCAhPSAwKQogLSAgICAgKmxlbmd0aCA9ICpsZW5ndGggLyB3aWR0aDsK ICsgICAgKmxlbmd0aCA9ICpsZW5ndGggLyB3aWR0aDsKICAKLSAgICpjaGFyc2V0ID0gdGFyZ2V0 X2NoYXJzZXQgKCk7CisgICAqY2hhcl90eXBlID0gZWxlbWVudF90eXBlOwogIAotQEAgLTEwMzgs NiArMTAzOCw5IEBAIGV2YWx1YXRlX3N1YmV4cF9jIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs IHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMTA0MCw2ICsxMDQwLDkgQEAgZXZhbHVhdGVf c3ViZXhwX2MgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwgc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwKICAgIHJldHVybiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKGV4cGVjdF90eXBlLCBleHAs IHBvcywgbm9zaWRlKTsKICB9CiAgCkBAIC0yMzcwLDcgKzk4Niw3IEBAIGluZGV4IGQwMTQ5MGMu LmJjMzVhM2UgMTAwNjQ0CiAgCiAgDAogIC8qIFRhYmxlIG1hcHBpbmcgb3Bjb2RlcyBpbnRvIHN0 cmluZ3MgZm9yIHByaW50aW5nIG9wZXJhdG9ycwotQEAgLTExMzgsNiArMTE0MSw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgZXhwX2Rlc2NyaXB0b3JfYyA9CitAQCAtMTE0 MCw2ICsxMTQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVz Y3JpcHRvcl9jID0KICB7CiAgICBwcmludF9zdWJleHBfc3RhbmRhcmQsCiAgICBvcGVyYXRvcl9s ZW5ndGhfc3RhbmRhcmQsCkBAIC0yMzc5LDk1ICs5OTUsMTUgQEAgaW5kZXggZDAxNDkwYy4uYmMz NWEzZSAxMDA2NDQKICAgIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCiAgICBldmFsdWF0ZV9z dWJleHBfYwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2RiL2MtdHlwZXByaW50 LmMKLWluZGV4IGIxOTMwODAuLjA0Y2YzYmMgMTAwNjQ0CitpbmRleCBkMWFmNDgxLi4xYzkzMGI1 IDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBiL2dkYi9jLXR5cGVwcmludC5j Ci1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJjLWxhbmcuaCIKLSAjaW5jbHVkZSAidHlw ZXByaW50LmgiCi0gI2luY2x1ZGUgImNwLWFiaS5oIgotKyNpbmNsdWRlICJqdi1sYW5nLmgiCi0g Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLUBAIC00MCw4 ICs0MSw2IEBAIHN0YXRpYyB2b2lkIGNwX3R5cGVfcHJpbnRfbWV0aG9kX2FyZ3MgKHN0cnVjdCB0 eXBlICptdHlwZSwgY2hhciAqcHJlZml4LAotIAkJCQkgICAgICAgY2hhciAqdmFyc3RyaW5nLCBp bnQgc3RhdGljcCwKLSAJCQkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwotIAotLXN0 YXRpYyB2b2lkIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmls ZSAqKTsKLS0KLSBzdGF0aWMgdm9pZCBjcF90eXBlX3ByaW50X2Rlcml2YXRpb25faW5mbyAoc3Ry dWN0IHVpX2ZpbGUgKiwgc3RydWN0IHR5cGUgKik7Ci0gCi0gc3RhdGljIHZvaWQgY190eXBlX3By aW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQs Ci1AQCAtMTk5LDYgKzE5OCwyMyBAQCBjcF90eXBlX3ByaW50X21ldGhvZF9hcmdzIChzdHJ1Y3Qg dHlwZSAqbXR5cGUsIGNoYXIgKnByZWZpeCwgY2hhciAqdmFyc3RyaW5nLAotICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICJ2b2lkIik7Ci0gCi0gICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIpIik7Ci0rCi0rICAvKiBGb3Igbm9uLXN0YXRpYyBtZXRob2RzLCByZWFkIHF1YWxpZmll cnMgZnJvbSB0aGUgdHlwZSBvZgotKyAgICAgVEhJUy4gICovCi0rICBpZiAoIXN0YXRpY3ApCi0r ICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZG9tYWluOwotKwotKyAgICAgIGdkYl9hc3NlcnQg KG5hcmdzID4gMCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFIChhcmdzWzBdLnR5cGUp ID09IFRZUEVfQ09ERV9QVFIpOwotKyAgICAgIGRvbWFpbiA9IFRZUEVfVEFSR0VUX1RZUEUgKGFy Z3NbMF0udHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfQ09OU1QgKGRvbWFpbikpCi0rCWZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiBjb25zdCIpOwotKwotKyAgICAgIGlmIChUWVBFX1ZPTEFU SUxFIChkb21haW4pKQotKwlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgdm9sYXRpbGUiKTsK LSsgICAgfQotIH0KLSAKLSAKLUBAIC0zNTUsMTAgKzM3MSwxNCBAQCBjX3R5cGVfcHJpbnRfbW9k aWZpZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAotIC8q IFByaW50IG91dCB0aGUgYXJndW1lbnRzIG9mIFRZUEUsIHdoaWNoIHNob3VsZCBoYXZlIFRZUEVf Q09ERV9NRVRIT0QKLSAgICBvciBUWVBFX0NPREVfRlVOQywgdG8gU1RSRUFNLiAgQXJ0aWZpY2lh bCBhcmd1bWVudHMsIHN1Y2ggYXMgInRoaXMiCi0tICAgaW4gbm9uLXN0YXRpYyBtZXRob2RzLCBh cmUgZGlzcGxheWVkLiAgKi8KLSsgICBpbiBub24tc3RhdGljIG1ldGhvZHMsIGFyZSBkaXNwbGF5 ZWQgaWYgU0hPV19BUlRJRklDSUFMIGlzCi0rICAgbm9uLXplcm8uIExBTkdVQUdFIGlzIHRoZSBs YW5ndWFnZSBpbiB3aGljaCBUWVBFIHdhcyBkZWZpbmVkLiAgVGhpcyBpcwotKyAgIGEgbmVjZXNz YXJ5IGV2aWwgc2luY2UgdGhpcyBjb2RlIGlzIHVzZWQgYnkgdGhlIEMsIEMrKywgYW5kIEphdmEK LSsgICBiYWNrZW5kcy4gKi8KLSAKLS1zdGF0aWMgdm9pZAotLWNfdHlwZV9wcmludF9hcmdzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt2b2lkCi0rY190eXBl X3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAot KwkJICAgaW50IHNob3dfYXJ0aWZpY2lhbCwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkKLSB7Ci0g ICBpbnQgaSwgbGVuOwotICAgc3RydWN0IGZpZWxkICphcmdzOwotQEAgLTM3MCwxMyArMzkwLDE5 IEBAIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSkKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKysp Ci0gICAgIHsKLSsgICAgICBpZiAoVFlQRV9GSUVMRF9BUlRJRklDSUFMICh0eXBlLCBpKSAmJiAh c2hvd19hcnRpZmljaWFsKQotKwljb250aW51ZTsKLSsKLSAgICAgICBpZiAocHJpbnRlZF9hbnkp Ci0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwotIAkgIHdyYXBfaGVy ZSAoIiAgICAiKTsKLSAJfQotIAotLSAgICAgIGNfcHJpbnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBF ICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwotKyAgICAgIGlmIChsYW5ndWFnZSA9PSBs YW5ndWFnZV9qYXZhKQotKwlqYXZhX3ByaW50X3R5cGUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwg aSksICIiLCBzdHJlYW0sIC0xLCAwKTsKLSsgICAgICBlbHNlCi0rCWNfcHJpbnRfdHlwZSAoVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwotICAgICAgIHByaW50 ZWRfYW55ID0gMTsKLSAgICAgfQotIAotQEAgLTU2MCw3ICs1ODYsMTIgQEAgY190eXBlX3ByaW50 X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwKK0BAIC01NTgsNyArNTU4LDEyIEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCWZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIikiKTsKICAKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJb Iik7CiAtICAgICAgaWYgKFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPiAw Ci0rICAgICAgaWYgKFRZUEVfQVJSQVlfQk9VTkRfSVNfRFdBUkZfQkxPQ0sgKHR5cGUsIDEpKQor KyAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX0RXQVJGX0JMT0NLICh0eXBlKSkK ICsJewogKwkgIC8qIE5vIF8oKSAtIHByaW50ZWQgc291cmNlcyBzaG91bGQgbm90IGJlIGxvY2Fs ZSBkZXBlbmRlbnQuICAqLwogKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZhcmlhYmxl Iik7CkBAIC0yNDc2LDIwICsxMDEyLDExIEBAIGluZGV4IGIxOTMwODAuLjA0Y2YzYmMgMTAwNjQ0 CiAgCSYmICFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCiAgCWZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwKICAJCQkgIChUWVBFX0xFTkdUSCAodHlwZSkK LUBAIC01OTMsNyArNjI0LDcgQEAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgICAgICBpZiAocGFzc2VkX2Ff cHRyKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7Ci0gICAgICAgaWYgKCFkZW1h bmdsZWRfYXJncykKLS0JY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIHN0cmVhbSk7Ci0rCWNfdHlw ZV9wcmludF9hcmdzICh0eXBlLCBzdHJlYW0sIDEsIGxhbmd1YWdlX2MpOwotICAgICAgIGNfdHlw ZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwg c2hvdywKLSAJCQkJICAgcGFzc2VkX2FfcHRyLCAwKTsKLSAgICAgICBicmVhazsKIGRpZmYgLS1n aXQgYS9nZGIvY2xpL2NsaS1jbWRzLmMgYi9nZGIvY2xpL2NsaS1jbWRzLmMKLWluZGV4IGNlN2My YTYuLjYzODBmZWMgMTAwNjQ0CitpbmRleCA0ODMzODk4Li45OTJjNDZmIDEwMDY0NAogLS0tIGEv Z2RiL2NsaS9jbGktY21kcy5jCiArKysgYi9nZGIvY2xpL2NsaS1jbWRzLmMKLUBAIC00Niw2ICs0 Niw4IEBACitAQCAtNDcsNiArNDcsOCBAQCBleHRlcm4gdm9pZCBkaXNjb25uZWN0X29yX3N0b3Bf dHJhY2luZyAoaW50IGZyb21fdHR5KTsKICAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCiAg I2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgogIApAQCAtMjQ5OCw3ICsxMDI1LDcgQEAgaW5kZXgg Y2U3YzJhNi4uNjM4MGZlYyAxMDA2NDQKICAjaWZkZWYgVFVJCiAgI2luY2x1ZGUgInR1aS90dWku aCIJCS8qIEZvciB0dWlfYWN0aXZlIGV0LmFsLiAgICovCiAgI2VuZGlmCi1AQCAtMTgzLDYgKzE4 NSw3IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0OworQEAgLTE4NCw2 ICsxODYsNyBAQCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2hvd2NoZWNrbGlzdDsKICAKICAv KiBDb21tYW5kIHRyYWNpbmcgc3RhdGUuICAqLwogIApAQCAtMjUwNiw3ICsxMDMzLDcgQEAgaW5k ZXggY2U3YzJhNi4uNjM4MGZlYyAxMDA2NDQKICBpbnQgc291cmNlX3ZlcmJvc2UgPSAwOwogIGlu dCB0cmFjZV9jb21tYW5kcyA9IDA7CiAgDAotQEAgLTQ0NCw2ICs0NDcsNyBAQCBzb3VyY2Vfc2Ny aXB0IChjaGFyICpmaWxlLCBpbnQgZnJvbV90dHkpCitAQCAtNDQ4LDYgKzQ1MSw3IEBAIHNvdXJj ZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKICAgIHN0cnVjdCBjbGVhbnVwICpv bGRfY2xlYW51cHM7CiAgICBjaGFyICpmdWxsX3BhdGhuYW1lID0gTlVMTDsKICAgIGludCBmZDsK QEAgLTI1MTQsNyArMTA0MSw3IEBAIGluZGV4IGNlN2MyYTYuLjYzODBmZWMgMTAwNjQ0CiAgCiAg ICBpZiAoZmlsZSA9PSBOVUxMIHx8ICpmaWxlID09IDApCiAgICAgIHsKLUBAIC00NzYsOCArNDgw LDE2IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKK0BAIC00ODAs OCArNDg0LDE2IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKICAJ fQogICAgICB9CiAgCkBAIC0yNTMyLDcgKzEwNTksNyBAQCBpbmRleCBjZTdjMmE2Li42MzgwZmVj IDEwMDY0NAogIAogICAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CiAgfQotQEAgLTQ5MSwx NSArNTAzLDMwIEBAIHNvdXJjZV92ZXJib3NlX2NsZWFudXAgKHZvaWQgKm9sZF92YWx1ZSkKK0BA IC00OTUsMTUgKzUwNywzMCBAQCBzb3VyY2VfdmVyYm9zZV9jbGVhbnVwICh2b2lkICpvbGRfdmFs dWUpCiAgICB4ZnJlZSAob2xkX3ZhbHVlKTsKICB9CiAgCkBAIC0yNTY3LDcgKzEwOTQsNyBAQCBp bmRleCBjZTdjMmE2Li42MzgwZmVjIDEwMDY0NAogIAogICAgLyogLXYgY2F1c2VzIHRoZSBzb3Vy Y2UgY29tbWFuZCB0byBydW4gaW4gdmVyYm9zZSBtb2RlLgogICAgICAgV2Ugc3RpbGwgaGF2ZSB0 byBiZSBhYmxlIHRvIGhhbmRsZSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMgaW4gYQotQEAgLTUwNywy MyArNTM0LDI4IEBAIHNvdXJjZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCitA QCAtNTExLDIzICs1MzgsMjggQEAgc291cmNlX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKICAKICAgIGlmIChhcmdzKQogICAgICB7CkBAIC0yNjA5LDcgKzExMzYsNyBAQCBpbmRl eCBjZTdjMmE2Li42MzgwZmVjIDEwMDY0NAogIH0KICAKICAKLUBAIC0xMzA3LDcgKzEzMzksOSBA QCBSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEUuXG5cCitAQCAtMTMwOSw3ICsx MzQxLDkgQEAgUmVhZCBjb21tYW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBGSUxFLlxuXAogIE9wdGlv bmFsIC12IHN3aXRjaCAoYmVmb3JlIHRoZSBmaWxlbmFtZSkgY2F1c2VzIGVhY2ggY29tbWFuZCBp blxuXAogIEZJTEUgdG8gYmUgZWNob2VkIGFzIGl0IGlzIGV4ZWN1dGVkLlxuXAogIE5vdGUgdGhh dCB0aGUgZmlsZSBcIiVzXCIgaXMgcmVhZCBhdXRvbWF0aWNhbGx5IGluIHRoaXMgd2F5XG5cCkBA IC0yNjIxLDE5ICsxMTQ4LDEwIEBAIGluZGV4IGNlN2MyYTYuLjYzODBmZWMgMTAwNjQ0CiAgCSAg ICAgICBzb3VyY2VfaGVscF90ZXh0LCAmY21kbGlzdCk7CiAgICBzZXRfY21kX2NvbXBsZXRlciAo YywgZmlsZW5hbWVfY29tcGxldGVyKTsKIGRpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dk Yi9jb2ZmcmVhZC5jCi1pbmRleCA4ODhmOGI0Li42NTQ5NGI4IDEwMDY0NAoraW5kZXggZWNhNjYx OC4uMDU3OWNlNiAxMDA2NDQKIC0tLSBhL2dkYi9jb2ZmcmVhZC5jCiArKysgYi9nZGIvY29mZnJl YWQuYwotQEAgLTM0Niw3ICszNDYsNyBAQCBjb2ZmX2FsbG9jX3R5cGUgKGludCBpbmRleCkKLSAg ICAgIFdlIHdpbGwgZmlsbCBpdCBpbiBsYXRlciBpZiB3ZSBmaW5kIG91dCBob3cuICAqLwotICAg aWYgKHR5cGUgPT0gTlVMTCkKLSAgICAgewotLSAgICAgIHR5cGUgPSBhbGxvY190eXBlIChjdXJy ZW50X29iamZpbGUpOwotKyAgICAgIHR5cGUgPSBhbGxvY190eXBlIChjdXJyZW50X29iamZpbGUs IE5VTEwpOwotICAgICAgICp0eXBlX2FkZHIgPSB0eXBlOwotICAgICB9Ci0gICByZXR1cm4gdHlw ZTsKLUBAIC0yMTIxLDYgKzIxMjEsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgY29mZl9zeW1f Zm5zID0KK0BAIC0yMTI2LDYgKzIxMjYsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgY29mZl9z eW1fZm5zID0KICAgIGNvZmZfbmV3X2luaXQsCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhp bmcgZ2JsIHRvIGVudGlyZSBzeW10YWIgKi8KICAgIGNvZmZfc3ltZmlsZV9pbml0LAkJLyogc3lt X2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwogICAgY29m Zl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3lt dGFiICovCkBAIC0yNjQyLDcgKzExNjAsNyBAQCBpbmRleCA4ODhmOGI0Li42NTQ5NGI4IDEwMDY0 NAogICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgeGxhdGUgZXh0 ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLwogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkv KiBzeW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KIGRpZmYgLS1naXQg YS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgotaW5kZXggNDcxNjUyNC4uMDc0NWM2NSAx MDA2NDQKK2luZGV4IGViZGU4NzYuLjkwN2IyNzUgMTAwNjQ0CiAtLS0gYS9nZGIvY29uZmlnLmlu CiArKysgYi9nZGIvY29uZmlnLmluCiBAQCAtNDYsMTEgKzQ2LDEwIEBACkBAIC0yNjU5LDcgKzEx NzcsNyBAQCBpbmRleCA0NzE2NTI0Li4wNzQ1YzY1IDEwMDY0NAogICN1bmRlZiBHREJfREFUQURJ Ul9SRUxPQ0FUQUJMRQogIAogIC8qIERlZmluZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRl ZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0LiAqLwotQEAgLTY0Nyw2ICs2NDYsOSBAQAorQEAgLTY1 Myw2ICs2NTIsOSBAQAogICAgICdwdHJkaWZmX3QnLiAqLwogICN1bmRlZiBQVFJESUZGX1RfU1VG RklYCiAgCkBAIC0yOTExLDcgKzE0MjksNyBAQCBpbmRleCAwMDAwMDAwLi40OWFjNDIwCiArI2Rl ZmluZSBUQVJHRVRfUkVHSU9OX1NJWkVfT0tfRk9SX0hXX1dBVENIUE9JTlQoU0laRSkgMQogKwog ZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1pbmRleCA0NmU3YmZl Li5lYTY2N2YwIDEwMDc1NQoraW5kZXggN2YyNmM2NC4uMDU0MmY3ZSAxMDA3NTUKIC0tLSBhL2dk Yi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzYsNiArNjc2LDggQEAgUkVQ T1JUX0JVR1NfVE8KQEAgLTI5MjMsNyArMTQ0MSw3IEBAIGluZGV4IDQ2ZTdiZmUuLmVhNjY3ZjAg MTAwNzU1CiAgR0RCX0RBVEFESVIKICBERUJVR0RJUgogIGFtX19mYXN0ZGVwQ0NfRkFMU0UKLUBA IC04ODMsNiArODg1LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKK0BAIC04ODUsNiAr ODg3LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKICB3aXRoX3NlcGFyYXRlX2RlYnVn X2RpcgogIHdpdGhfZ2RiX2RhdGFkaXIKICB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCkBAIC0yOTMx LDcgKzE0NDksNyBAQCBpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1NQogIGVuYWJsZV90YXJn ZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RiY2xpCi1AQCAtMTU4MSw2ICsxNTg0 LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE1ODYsNiArMTU4OSwxMCBAQCBPcHRpb25h bCBQYWNrYWdlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KICAg IC0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRICiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCkBAIC0y OTQyLDcgKzE0NjAsNyBAQCBpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1NQogICAgLS13aXRo LWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAog ICAgLS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFk IG9mIHRoZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAt NjYwMiw2ICs2NjA5LDczIEBAIF9BQ0VPRgorQEAgLTY4NjYsNiArNjg3Myw3MyBAQCBfQUNFT0YK ICBmaQogIAogIApAQCAtMzAxNiw3ICsxNTM0LDcgQEAgaW5kZXggNDZlN2JmZS4uZWE2NjdmMCAx MDA3NTUKICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVzdHN1aXRlIgotQEAgLTkyODIs NiArOTM1Niw4IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUFlUSE9OIDEiID4+Y29uZmRlZnMu aAorQEAgLTk2MDQsNiArOTY3OCw4IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUFlUSE9OIDEi ID4+Y29uZmRlZnMuaAogICAgQ09ORklHX09CUz0iJENPTkZJR19PQlMgXCQoU1VCRElSX1BZVEhP Tl9PQlMpIgogICAgQ09ORklHX0RFUFM9IiRDT05GSUdfREVQUyBcJChTVUJESVJfUFlUSE9OX0RF UFMpIgogICAgQ09ORklHX1NSQ1M9IiRDT05GSUdfU1JDUyBcJChTVUJESVJfUFlUSE9OX1NSQ1Mp IgpAQCAtMzAyNiwxMCArMTU0NCwxMCBAQCBpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1NQog IAogICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAodGFrZW4gZnJvbSBw eXRob24tY29uZmlnIC0tY2ZsYWdzKS4KIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmFjIGIv Z2RiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGU0MjE4Mi4uZTdmOTdjZiAxMDA2NDQKK2luZGV4IGVi YjBhOTUuLmM4ZWJhZmUgMTAwNjQ0CiAtLS0gYS9nZGIvY29uZmlndXJlLmFjCiArKysgYi9nZGIv Y29uZmlndXJlLmFjCi1AQCAtMTA3LDYgKzEwNyw1MSBAQCBBU19IRUxQX1NUUklORyhbLS13aXRo LXJlbG9jYXRlZC1zb3VyY2VzPVBBVEhdLCBbYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBh dAorQEAgLTEwOCw2ICsxMDgsNTEgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQt c291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXQKICAgICAgICAg ICAgICAgIFtSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMuIF0pCiAgXSkKICAK QEAgLTMwODEsNyArMTU5OSw3IEBAIGluZGV4IDBlNDIxODIuLmU3Zjk3Y2YgMTAwNjQ0CiAgQUNf Q09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKICAKICAjIENoZWNrIHdoZXRoZXIgdG8gc3Vw cG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLUBAIC02NTgsNiArNzAzLDgg QEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iID0geWVzOyB0aGVuCitAQCAtNjc0LDYgKzcx OSw4IEBAIGlmIHRlc3QgIiR7aGF2ZV9saWJweXRob259IiA9IHllczsgdGhlbgogICAgQ09ORklH X09CUz0iJENPTkZJR19PQlMgXCQoU1VCRElSX1BZVEhPTl9PQlMpIgogICAgQ09ORklHX0RFUFM9 IiRDT05GSUdfREVQUyBcJChTVUJESVJfUFlUSE9OX0RFUFMpIgogICAgQ09ORklHX1NSQ1M9IiRD T05GSUdfU1JDUyBcJChTVUJESVJfUFlUSE9OX1NSQ1MpIgpAQCAtMzA5MCw4MTggKzE2MDgsNjQg QEAgaW5kZXggMGU0MjE4Mi4uZTdmOTdjZiAxMDA2NDQKICAgIEVOQUJMRV9DRkxBR1M9IiRFTkFC TEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKICAKICAgICMgRmxhZ3MgbmVlZGVk IHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNvbmZpZyAtLWNmbGFn cykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NwLW5hbWUtcGFyc2VyLnkgYi9nZGIvY3AtbmFtZS1wYXJz ZXIueQotaW5kZXggNjI4MDBiOC4uOTdkNTg3YiAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lLXBh cnNlci55Ci0rKysgYi9nZGIvY3AtbmFtZS1wYXJzZXIueQotQEAgLTEsNyArMSw2IEBACi0gLyog WUFDQyBwYXJzZXIgZm9yIEMrKyBuYW1lcywgZm9yIEdEQi4KLSAKLS0gICBDb3B5cmlnaHQgKEMp IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDkKLS0gICBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcs IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gICAgUGFydHMg b2YgdGhlIGxleGVyIGFyZSBiYXNlZCBvbiBjLWV4cC55IGZyb20gR0RCLgotIAotQEAgLTM4OSw3 ICszODgsNyBAQCBmdW5jdGlvbgotIAkJfAljb2xvbl9leHRfb25seSBmdW5jdGlvbl9hcmdsaXN0 IHN0YXJ0X29wdAotIAkJCXsgJCQgPSBmaWxsX2NvbXAgKERFTUFOR0xFX0NPTVBPTkVOVF9UWVBF RF9OQU1FLCAkMSwgJDIuY29tcCk7Ci0gCQkJICBpZiAoJDMpICQkID0gZmlsbF9jb21wIChERU1B TkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQzKTsgfQotLQotKwkJfAljb2xvbl9leHRf b25seQotIAkJfAljb252ZXJzaW9uX29wX25hbWUgc3RhcnRfb3B0Ci0gCQkJeyAkJCA9ICQxLmNv bXA7Ci0gCQkJICBpZiAoJDIpICQkID0gZmlsbF9jb21wIChERU1BTkdMRV9DT01QT05FTlRfTE9D QUxfTkFNRSwgJCQsICQyKTsgfQotZGlmZiAtLWdpdCBhL2dkYi9jcC1uYW1lc3BhY2UuYyBiL2dk Yi9jcC1uYW1lc3BhY2UuYwotaW5kZXggZDJkOGYyZS4uZGIyNmEwMSAxMDA2NDQKLS0tLSBhL2dk Yi9jcC1uYW1lc3BhY2UuYwotKysrIGIvZ2RiL2NwLW5hbWVzcGFjZS5jCi1AQCAtMzYsMTQgKzM2 LDE3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjcF9jb3B5X3VzaW5ncyAoc3RydWN0 IHVzaW5nX2RpcmVjdCAqdXNpbmcsCi0gCQkJCQkgICAgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sp OwotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25z dCBjaGFyICpuYW1lLAotLQkJCQkJICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJ CQkJICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCSAgICAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbiwKLSAJCQkJCSAgICAgIGNvbnN0IGNoYXIgKnNjb3BlLAotIAkJCQkJ ICAgICAgaW50IHNjb3BlX2xlbik7Ci0gCi0rc3RhdGljIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1 cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0r Ci0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAq bmFtZSwKLS0JCQkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0g CQkJCQkgIGludCBhbm9ueW1vdXNfbmFtZXNwYWNlKTsKLUBAIC0xMTksNyArMTIyLDcgQEAgY3Bf c2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJv bCkKLSAJCSBhbm9ueW1vdXMgbmFtZXNwYWNlLiAgU28gYWRkIHN5bWJvbHMgaW4gaXQgdG8gdGhl Ci0gCQkgbmFtZXNwYWNlIGdpdmVuIGJ5IHRoZSBwcmV2aW91cyBjb21wb25lbnQgaWYgdGhlcmUg aXMKLSAJCSBvbmUsIG9yIHRvIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGlmIHRoZXJlIGlzbid0LiAg Ki8KLS0JICAgICAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoZGVzdCwgc3JjKTsKLSsJICAgICAg Y3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoZGVzdCwgc3JjLCAiIiwgIiIsIDApOwotIAkgICAgfQot IAkgIC8qIFRoZSAiKyAyIiBpcyBmb3IgdGhlICI6OiIuICAqLwotIAkgIHByZXZpb3VzX2NvbXBv bmVudCA9IG5leHRfY29tcG9uZW50ICsgMjsKLUBAIC0xMzQsNyArMTM3LDggQEAgY3Bfc2Nhbl9m b3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCkKLSAg ICBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLCBkb24ndCBhZGQgaXQgdHdpY2UuICAqLwotIAotIHZv aWQKLS1jcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0LCBjb25zdCBjaGFy ICpzcmMpCi0rY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwgY29uc3Qg Y2hhciAqc3JjLCBjb25zdCBjaGFyKiBhbGlhcywKLSsJCQljb25zdCBjaGFyICpkZWNsYXJhdGlv biwgY29uc3QgaW50IGxpbmVfbnVtYmVyKQotIHsKLSAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1 cnJlbnQ7Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXc7Ci1AQCAtMTQ4LDcgKzE1Miw4IEBA IGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNy YykKLSAJcmV0dXJuOwotICAgICB9Ci0gCi0tICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3Vz aW5nIChkZXN0LCBzcmMsIHVzaW5nX2RpcmVjdGl2ZXMpOwotKyAgdXNpbmdfZGlyZWN0aXZlcyA9 IGNwX2FkZF91c2luZyAoZGVzdCwgc3JjLCBhbGlhcywgZGVjbGFyYXRpb24sCi0rCQkJCSAgIGxp bmVfbnVtYmVyLCB1c2luZ19kaXJlY3RpdmVzKTsKLSAKLSB9CitkaWZmIC0tZ2l0IGEvZ2RiL2Ri eHJlYWQuYyBiL2dkYi9kYnhyZWFkLmMKK2luZGV4IDgxNmEzNTUuLmU5ZjU2ZjkgMTAwNjQ0Cist LS0gYS9nZGIvZGJ4cmVhZC5jCisrKysgYi9nZGIvZGJ4cmVhZC5jCitAQCAtMzU3MCw2ICszNTcw LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIGFvdXRfc3ltX2ZucyA9CisgICBkYnhfbmV3X2lu aXQsCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVudGlyZSBzeW10YWIg Ki8KKyAgIGRieF9zeW1maWxlX2luaXQsCS8qIHN5bV9pbml0OiByZWFkIGluaXRpYWwgaW5mbywg c2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KKyAgIGRieF9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVh ZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCisrICBOVUxMLAkJCQkvKiBzeW1f cmVhZF9wc3ltYm9scyAqLworICAgZGJ4X3N5bWZpbGVfZmluaXNoLAkJLyogc3ltX2ZpbmlzaDog ZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCisgICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0 cywgLyogc3ltX29mZnNldHM6IHBhcnNlIHVzZXIncyBvZmZzZXRzIHRvCisgCQkJICAgICAgaW50 ZXJuYWwgZm9ybSAqLworZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9j L2dkYi50ZXhpbmZvCitpbmRleCAyNTNlMjUxLi42ZDczZmM1IDEwMDY0NAorLS0tIGEvZ2RiL2Rv Yy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbworQEAgLTk2Miw4ICs5NjIs MTAgQEAgQ29ubmVjdCB0byBwcm9jZXNzIElEIEB2YXJ7bnVtYmVyfSwgYXMgd2l0aCB0aGUgQGNv ZGV7YXR0YWNofSBjb21tYW5kLgorIEBpdGVteCAteCBAdmFye2ZpbGV9CisgQGNpbmRleCBAY29k ZXstLWNvbW1hbmR9CisgQGNpbmRleCBAY29kZXsteH0KKy1FeGVjdXRlIEB2YWx1ZXtHREJOfSBj b21tYW5kcyBmcm9tIGZpbGUgQHZhcntmaWxlfS4gIEB4cmVme0NvbW1hbmQKKy1GaWxlcywsIENv bW1hbmQgZmlsZXN9LgorK0V4ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0uICBJ ZiBAdmFye2ZpbGV9IGVuZHMgaW4KKytAc2FtcHsucHl9LCB0aGVuIHRoZSBmaWxlIGlzIGV2YWx1 YXRlZCBhcyBQeXRob24gY29kZS4gIElmIFB5dGhvbgorK3N1cHBvcnQgaXMgbm90IGVuYWJsZWQg aW4gdGhpcyBAdmFsdWV7R0RCTn0sIHRoZW4gYW4gZXJyb3Igb2NjdXJzLgorK0B4cmVme0NvbW1h bmQgRmlsZXMsLCBDb21tYW5kIGZpbGVzfS4KICAKLUBAIC0yMDEsNyArMjA2LDEwIEBAIGNwX2lz X2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQotIH0KKyBAaXRlbSAtZXZhbC1jb21t YW5kIEB2YXJ7Y29tbWFuZH0KKyBAaXRlbXggLWV4IEB2YXJ7Y29tbWFuZH0KK0BAIC0xMTU1LDYg KzExNTcsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCisgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNl fSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KKyBAYyBGSVhN RToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAg Ci0gLyogQ3JlYXRlIGEgbmV3IHN0cnVjdCB1c2luZyBkaXJlY3Qgd2hpY2ggaW1wb3J0cyB0aGUg bmFtZXNwYWNlIFNSQwotLSAgIGludG8gdGhlIHNjb3BlIERFU1QuCi0rICAgaW50byB0aGUgc2Nv cGUgREVTVC4gIEFMSUFTIGlzIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UKLSsg ICBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIEFMSUFTIGlzIGFuIGVtcHR5IHN0cmluZyAgdGhl biB0aGUKLSsgICBuYW1lc3BhY2UgaXMga25vd24gYnkgaXRzIG9yaWdpbmFsIG5hbWUuCi0rCi0g ICAgU2V0IGl0cyBuZXh0IG1lbWJlciBpbiB0aGUgbGlua2VkIGxpc3QgdG8gTkVYVDsgYWxsb2Nh dGUgYWxsIG1lbW9yeQotICAgIHVzaW5nIHhtYWxsb2MuICBJdCBjb3BpZXMgdGhlIHN0cmluZ3Ms IHNvIE5BTUUgY2FuIGJlIGEgdGVtcG9yYXJ5Ci0gICAgc3RyaW5nLiAgKi8KLUBAIC0yMDksMTQg KzIxNywyMSBAQCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSkKLSBzdHJ1 Y3QgdXNpbmdfZGlyZWN0ICoKLSBjcF9hZGRfdXNpbmcgKGNvbnN0IGNoYXIgKmRlc3QsCi0gICAg ICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCi0rICAgICAgICAgICAgICBjb25zdCBjaGFyICph bGlhcywKLSsgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotKyAgICAgICAg ICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAotIAkgICAgICBzdHJ1Y3QgdXNpbmdfZGlyZWN0 ICpuZXh0KQotIHsKLSAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKnJldHZhbDsKLSAKLSAgIHJldHZh bCA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHVzaW5nX2RpcmVjdCkpOwotLSAgcmV0dmFsLT5p bXBvcnRfc3JjID0gc2F2ZXN0cmluZyAoc3JjLCBzdHJsZW4oc3JjKSk7Ci0tICByZXR2YWwtPmlt cG9ydF9kZXN0ID0gc2F2ZXN0cmluZyAoZGVzdCwgc3RybGVuKGRlc3QpKTsKLSsgIHJldHZhbC0+ aW1wb3J0X3NyYyA9IHNhdmVzdHJpbmcgKHNyYywgc3RybGVuIChzcmMpKTsKLSsgIHJldHZhbC0+ aW1wb3J0X2Rlc3QgPSBzYXZlc3RyaW5nIChkZXN0LCBzdHJsZW4gKGRlc3QpKTsKLSsgIHJldHZh bC0+YWxpYXMgPSBzYXZlc3RyaW5nIChhbGlhcywgc3RybGVuIChhbGlhcykpOwotKyAgcmV0dmFs LT5kZWNsYXJhdGlvbiA9IHNhdmVzdHJpbmcgKGRlY2xhcmF0aW9uLCBzdHJsZW4gKGRlY2xhcmF0 aW9uKSk7Ci0rICByZXR2YWwtPmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7Ci0gICByZXR2YWwt Pm5leHQgPSBuZXh0OwotKyAgcmV0dmFsLT5zZWFyY2hlZCA9IDA7CisrQGl0ZW0gLVAKKytAY2lu ZGV4IEBjb2Rley1QfQorK0BpdGVteCAtLXB5dGhvbgorK0BjaW5kZXggQGNvZGV7LS1weXRob259 CisrQ2hhbmdlIGludGVycHJldGF0aW9uIG9mIGNvbW1hbmQgbGluZSBzbyB0aGF0IHRoZSBhcmd1 bWVudCBpbW1lZGlhdGVseQorK2ZvbGxvd2luZyB0aGlzIHN3aXRjaCBpcyB0YWtlbiB0byBiZSB0 aGUgbmFtZSBvZiBhIFB5dGhvbiBzY3JpcHQgZmlsZS4KKytUaGlzIG9wdGlvbiBzdG9wcyBvcHRp b24gcHJvY2Vzc2luZzsgc3Vic2VxdWVudCBvcHRpb25zIGFyZSBwYXNzZWQgdG8KKytQeXRob24g YXMgQGNvZGV7c3lzLmFyZ3Z9LiAgVGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgaWYgUHl0 aG9uCisrc2NyaXB0aW5nIHN1cHBvcnQgd2FzIGVuYWJsZWQgd2hlbiBAdmFsdWV7R0RCTn0gd2Fz IGNvbmZpZ3VyZWQuCisrCisgQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50 dWFsbHkKKyBAaXRlbSAtdHVpCisgQGNpbmRleCBAY29kZXstLXR1aX0KK0BAIC0xOTEwMSw3ICsx OTExMyw3IEBAIGNvbW1hbmQ6CisgQHRhYmxlIEBjb2RlCisgQGtpbmRleCBzb3VyY2UKKyBAY2lu ZGV4IGV4ZWN1dGUgY29tbWFuZHMgZnJvbSBhIGZpbGUKKy1AaXRlbSBzb3VyY2UgW0Bjb2Rley12 fV0gQHZhcntmaWxlbmFtZX0KKytAaXRlbSBzb3VyY2UgW0Bjb2Rley12fV0gW0Bjb2Rley1wfV0g QHZhcntmaWxlbmFtZX0KKyBFeGVjdXRlIHRoZSBjb21tYW5kIGZpbGUgQHZhcntmaWxlbmFtZX0u CisgQGVuZCB0YWJsZQogIAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAtMjQxLDEwICsyNTYs MTggQEAgY3BfY29weV91c2luZ3MgKHN0cnVjdCB1c2luZ19kaXJlY3QgKnVzaW5nLAotIAkJCQkg ICAgb2JzdGFjayk7Ci0gICAgICAgcmV0dmFsLT5pbXBvcnRfZGVzdCA9IG9ic2F2ZXN0cmluZyAo dXNpbmctPmltcG9ydF9kZXN0LCBzdHJsZW4gKHVzaW5nLT5pbXBvcnRfZGVzdCksCi0gCQkJCSAg ICBvYnN0YWNrKTsKLSsgICAgICByZXR2YWwtPmFsaWFzID0gb2JzYXZlc3RyaW5nICh1c2luZy0+ YWxpYXMsIHN0cmxlbiAodXNpbmctPmFsaWFzKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvYnN0YWNrKTsKLSsgICAgICByZXR2YWwtPmRlY2xhcmF0aW9uID0gb2JzYXZl c3RyaW5nICh1c2luZy0+ZGVjbGFyYXRpb24sIHN0cmxlbiAodXNpbmctPmRlY2xhcmF0aW9uKSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnN0YWNrKTsKLSAgICAgICBy ZXR2YWwtPm5leHQgPSBjcF9jb3B5X3VzaW5ncyAodXNpbmctPm5leHQsIG9ic3RhY2spOwotIAot KyAgICAgIHJldHZhbC0+c2VhcmNoZWQgPSB1c2luZy0+c2VhcmNoZWQ7Ci0rCi0gICAgICAgeGZy ZWUgKHVzaW5nLT5pbXBvcnRfc3JjKTsKLSAgICAgICB4ZnJlZSAodXNpbmctPmltcG9ydF9kZXN0 KTsKLSsgICAgICB4ZnJlZSAodXNpbmctPmFsaWFzKTsKLSsgICAgICB4ZnJlZSAodXNpbmctPmRl Y2xhcmF0aW9uKTsKLSAgICAgICB4ZnJlZSAodXNpbmcpOwotIAotICAgICAgIHJldHVybiByZXR2 YWw7Ci1AQCAtMjYxLDEyICsyODQsNDggQEAgY3BfY29weV91c2luZ3MgKHN0cnVjdCB1c2luZ19k aXJlY3QgKnVzaW5nLAotIAotIHN0cnVjdCBzeW1ib2wgKgotIGNwX2xvb2t1cF9zeW1ib2xfbm9u bG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAotIAkJCSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJICAgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluKQotIHsKLS0gIHJldHVybiBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1l LCBsaW5rYWdlX25hbWUsIGJsb2NrLCBkb21haW4sCi0tCQkJCSBibG9ja19zY29wZSAoYmxvY2sp LCAwKTsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bTsgCi0rICBjb25zdCBjaGFyICpzY29wZSA9IGJs b2NrX3Njb3BlIChibG9jayk7Ci0rCi0rICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChu YW1lLCBibG9jaywgZG9tYWluLCBzY29wZSwgMCk7Ci0rICBpZiAoc3ltICE9IE5VTEwpCi0rICAg IHJldHVybiBzeW07Ci0rCi0rICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2Uoc2Nv cGUsIG5hbWUsIGJsb2NrLCBkb21haW4pOwotK30KLSsKLSsvKiBTZWFyY2hlcyBmb3IgTkFNRSBp biB0aGUgY3VycmVudCBuYW1lc3BhY2UsIGFuZCBieSBhcHBseWluZyByZWxldmFudCBpbXBvcnQK LSsgICBzdGF0ZW1lbnRzIGJlbG9uZ2luZyB0byBCTE9DSyBhbmQgaXRzIHBhcmVudHMuICBTQ09Q RSBpcyB0aGUgbmFtZXNwYWNlCi0rICAgc2NvcGUgb2YgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhl IHNlYXJjaCBpcyBiZWluZyBldmFsdWF0ZWQuICAqLwotKwotK3N0cnVjdCBzeW1ib2wqCi0rY3Bf bG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rewotKyAgc3RydWN0IHN5bWJvbCAq c3ltOwotKwotKyAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wgaW4gdGhlIGdpdmVu IG5hbWVzcGFjZS4gICovCi0rICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAo c2NvcGUsIG5hbWUsIGJsb2NrLCBkb21haW4pOwotKyAgaWYgKCBzeW0gIT0gTlVMTCkKLSsgICAg cmV0dXJuIHN5bTsKLSsgICAgCi0rICAvKiBTZWFyY2ggZm9yIG5hbWUgaW4gbmFtZXNwYWNlcyBp bXBvcnRlZCB0byB0aGlzIGFuZCBwYXJlbnQgYmxvY2tzLiAgKi8KLSsgIHdoaWxlIChibG9jayAh PSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzKHNj b3BlLG5hbWUsIGJsb2NrLCBkb21haW4sMCwxKTsKLSsKLSsgICAgICBpZiAoc3ltKQotKyAgICAg ICAgcmV0dXJuIHN5bTsKLSsKLSsgICAgICBibG9jayA9IEJMT0NLX1NVUEVSQkxPQ0soYmxvY2sp OwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSB9Ci0gCi0gLyogTG9va3VwIE5BTUUgYXQg bmFtZXNwYWNlIHNjb3BlIChvciwgaW4gQyB0ZXJtcywgaW4gc3RhdGljIGFuZAotQEAgLTI4NCw5 ICszNDMsOCBAQCBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAot ICAgICJBOjp4IiwgYW5kIGlmIHRoYXQgY2FsbCBmYWlscywgdGhlbiB0aGUgZmlyc3QgY2FsbCBs b29rcyBmb3IKLSAgICAieCIuICAqLwotIAotLXN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLStzdHJ1 Y3Qgc3ltYm9sICoKLSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAot LQkJCWNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQljb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrLAotIAkJCWNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAJCQljb25zdCBjaGFyICpzY29w ZSwKLUBAIC0zMDgsOCArMzY2LDcgQEAgbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hh ciAqbmFtZSwKLSAJICBuZXdfc2NvcGVfbGVuICs9IDI7Ci0gCX0KLSAgICAgICBuZXdfc2NvcGVf bGVuICs9IGNwX2ZpbmRfZmlyc3RfY29tcG9uZW50IChzY29wZSArIG5ld19zY29wZV9sZW4pOwot LSAgICAgIHN5bSA9IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwg YmxvY2ssCi0tCQkJCSAgICBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKLSsgICAgICBz eW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBibG9jaywgZG9tYWluLCBzY29wZSwg bmV3X3Njb3BlX2xlbik7Ci0gICAgICAgaWYgKHN5bSAhPSBOVUxMKQotIAlyZXR1cm4gc3ltOwot ICAgICB9Ci1AQCAtMzIwLDI1ICszNzcsOTggQEAgbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29u c3QgY2hhciAqbmFtZSwKLSAgIG5hbWVzcGFjZSA9IGFsbG9jYSAoc2NvcGVfbGVuICsgMSk7Ci0g ICBzdHJuY3B5IChuYW1lc3BhY2UsIHNjb3BlLCBzY29wZV9sZW4pOwotICAgbmFtZXNwYWNlW3Nj b3BlX2xlbl0gPSAnXDAnOwotLSAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChu YW1lc3BhY2UsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0JCQkJICAgICBibG9jaywgZG9tYWluKTsK LSsgIHJldHVybiBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAobmFtZXNwYWNlLCBuYW1l LGJsb2NrLCBkb21haW4pOwotIH0KLSAKLS0vKiBMb29rIHVwIE5BTUUgaW4gdGhlIEMrKyBuYW1l c3BhY2UgTkFNRVNQQUNFLCBhcHBseWluZyB0aGUgdXNpbmcKLS0gICBkaXJlY3RpdmVzIHRoYXQg YXJlIGFjdGl2ZSBpbiBCTE9DSy4gIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4KLSsvKiBMb29r IHVwIE5BTUUgaW4gdGhlIEMrKyBuYW1lc3BhY2UgTkFNRVNQQUNFLiBPdGhlciBhcmd1bWVudHMg YXJlIGFzIGluCi0gICAgY3BfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCi0gCi0rc3RhdGlj IHN0cnVjdCBzeW1ib2wgKgotK2NwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjb25zdCBj aGFyICpuYW1lc3BhY2UsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJICAgICAg IGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rCQkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbikKLSt7Ci0rCi0rICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcpCi0rICAgIHsKLSsg ICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxlIChuYW1lLCBibG9jayxkb21haW4sIDApOwot KyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICpjb25jYXRlbmF0ZWRfbmFtZQot Kwk9IGFsbG9jYSAoc3RybGVuIChuYW1lc3BhY2UpICsgMiArIHN0cmxlbiAobmFtZSkgKyAxKTsK LSsgICAgICBzdHJjcHkgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lc3BhY2UpOwotKyAgICAgIHN0 cmNhdCAoY29uY2F0ZW5hdGVkX25hbWUsICI6OiIpOwotKyAgICAgIHN0cmNhdCAoY29uY2F0ZW5h dGVkX25hbWUsIG5hbWUpOwotKyAgICAgIHJldHVybiBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbmNh dGVuYXRlZF9uYW1lLCBibG9jaywgZG9tYWluLAotKwkJCQljcF9pc19hbm9ueW1vdXMgKG5hbWVz cGFjZSkpOwotKyAgICB9Ci0rfQotKwotKy8qIFVzZWQgZm9yIGNsZWFudXBzIHRvIHJlc2V0IHRo ZSAic2VhcmNoZWQiIGZsYWcgaW5jYXNlCi0rICAgb2YgYW4gZXJyb3IuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rcmVzZXRfZGlyZWN0aXZlX3NlYXJjaGVkICh2b2lkICpkYXRhKQotK3sKLSsgIHN0 cnVjdCB1c2luZ19kaXJlY3QgKmRpcmVjdCA9IGRhdGE7Ci0rICBkaXJlY3QtPnNlYXJjaGVkID0g MDsKLSt9Ci0rCi0rLyogU2VhcmNoIGZvciBOQU1FIGJ5IGFwcGx5aW5nIGFsbCBpbXBvcnQgc3Rh dGVtZW50cyBiZWxvbmdpbmcKLSsgICB0byBCTE9DSyB3aGljaCBhcmUgYXBwbGljYWJsZSBpbiBT Q09QRS4gSWYgREVDTEFSQVRJT05fT05MWSB0aGUgc2VhcmNoCi0rICAgaXMgcmVzdHJpY3RlZCB0 byB1c2luZyBkZWNsYXJhdGlvbnMuCi0rICAgRXhhbXBsZToKLSsKLSsgICAgIG5hbWVzcGFjZSBB ewotKyAgICAgICBpbnQgeDsKLSsgICAgIH0KLSsgICAgIHVzaW5nIEE6Ong7Ci0rCi0rICAgSWYg U0VBUkNIX1BBUkVOVFMgdGhlIHNlYXJjaCB3aWxsIGluY2x1ZGUgaW1wb3J0cyB3aGljaCBhcmUg YXBwbGljYWJsZSBpbgotKyAgIHBhcmVudHMgb2Ygc2NvcGVzLgotKyAgIEV4YW1wbGU6Ci0rCi0r ICAgICBuYW1lc3BhY2UgQXsKLSsgICAgICAgdXNpbmcgbmFtZXNwYWNlIFg7Ci0rICAgICAgIG5h bWVzcGFjZSBCewotKyAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBZOwotKyAgICAgICB9Ci0rICAg ICB9Ci0rCi0rICAgSWYgU0NPUEUgaXMgIkE6OkIiIGFuZCBTRUFSQ0hfUEFSRU5UUyBpcyB0cnVl IHRoZSBpbXBvcnRzIG9mIG5hbWVzcGFjZXMgWAotKyAgIGFuZCBZIHdpbGwgYmUgY29uc2lkZXJl ZC4gSWYgU0VBUkNIX1BBUkVOVFMgaXMgZmFsc2Ugb25seSB0aGUgaW1wb3J0IG9mIFkKLSsgICBp cyBjb25zaWRlcmVkLiAgKi8KLSsKLSBzdHJ1Y3Qgc3ltYm9sICoKLS1jcF9sb29rdXBfc3ltYm9s X25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAotLQkJCSAgICBjb25zdCBjaGFyICpu YW1lLAotLQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0tCQkJICAgIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLStj cF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZGVjbGFyYXRpb25fb25seSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWFy Y2hfcGFyZW50cykKLSB7Ci0tICBjb25zdCBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjdXJyZW50Owot LSAgc3RydWN0IHN5bWJvbCAqc3ltOwotKyAgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3VycmVudDsK LSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0rICBpbnQgZGlyZWN0aXZlX21hdGNoOwot KyAgaW50IGN1cnJlbnRfbGluZTsKLSsgIHN0cnVjdCBjbGVhbnVwICpzZWFyY2hlZF9jbGVhbnVw OwotKwotKyAgaWYoIWRlY2xhcmF0aW9uX29ubHkpCi0rICAgIC8qIEZpcnN0LCB0cnkgdG8gZmlu ZCB0aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuICAqLwotKyAgICBzeW0gPSBjcF9s b29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoc2NvcGUsIG5hbWUsIGJsb2NrLCBkb21haW4pOwot IAotLSAgLyogRmlyc3QsIGdvIHRocm91Z2ggdGhlIHVzaW5nIGRpcmVjdGl2ZXMuICBJZiBhbnkg b2YgdGhlbSBhZGQgbmV3Ci0rICBpZiAoIHN5bSAhPSBOVUxMKQotKyAgICByZXR1cm4gc3ltOwot KwotKyAgaWYgKGhhc19zdGFja19mcmFtZXMgKCkpCi0rICAgIGN1cnJlbnRfbGluZSA9IGZpbmRf cGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkubGluZTsKLSsgIGVs c2UKLSsgICAgY3VycmVudF9saW5lID0gMDsKLSsKLSsgIC8qIEdvIHRocm91Z2ggdGhlIHVzaW5n IGRpcmVjdGl2ZXMuICBJZiBhbnkgb2YgdGhlbSBhZGQgbmV3Ci0gICAgICBuYW1lcyB0byB0aGUg bmFtZXNwYWNlIHdlJ3JlIHNlYXJjaGluZyBpbiwgc2VlIGlmIHdlIGNhbiBmaW5kIGEKLSAgICAg IG1hdGNoIGJ5IGFwcGx5aW5nIHRoZW0uICAqLwotIAotQEAgLTM0NiwzOSArNDc2LDc4IEBAIGNw X2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0gICAgICAg IGN1cnJlbnQgIT0gTlVMTDsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpCi0gICAg IHsKLS0gICAgICBpZiAoc3RyY21wIChuYW1lc3BhY2UsIGN1cnJlbnQtPmltcG9ydF9kZXN0KSA9 PSAwKQotKyAgCi0rICAgICAgLyogSWYgdGhlIGltcG9ydCBkZXN0aW5hdGlvbiBpcyB0aGUgY3Vy cmVudCBzY29wZSBvciBvbmUgb2YgaXRzIGFuY2VzdG9ycyB0aGVuCi0rICAgICAgICAgaXQgaXMg YXBwbGljYWJsZS4gICovCi0rICAgICAgZGlyZWN0aXZlX21hdGNoID0gc2VhcmNoX3BhcmVudHMg PwotKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cm5jbXAgKHNjb3BlLCBjdXJyZW50LT5pbXBv cnRfZGVzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oY3VycmVu dC0+aW1wb3J0X2Rlc3QpKSA9PSAwIDoKLSsgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAg KHNjb3BlLCBjdXJyZW50LT5pbXBvcnRfZGVzdCkgPT0gMDsKLSsKLSsgICAgICBpZiAoZGlyZWN0 aXZlX21hdGNoICYmCi0rICAgICAgICAgIGN1cnJlbnQtPmxpbmVfbnVtYmVyIDwgY3VycmVudF9s aW5lICYmCi0rICAgICAgICAgICFjdXJyZW50LT5zZWFyY2hlZCkKLSAJewotLQkgIHN5bSA9IGNw X2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3JjLAotLQkJCQkJICAg IG5hbWUsCi0tCQkJCQkgICAgbGlua2FnZV9uYW1lLAotLQkJCQkJICAgIGJsb2NrLAotLQkJCQkJ ICAgIGRvbWFpbik7Ci0rCSAgY3VycmVudC0+c2VhcmNoZWQgPSAxOwotKwkgIHNlYXJjaGVkX2Ns ZWFudXAgPSBtYWtlX2NsZWFudXAgKHJlc2V0X2RpcmVjdGl2ZV9zZWFyY2hlZCwgY3VycmVudCk7 Ci0rCi0rCSAgLyogSWYgdGhlcmUgaXMgYW4gaW1wb3J0IG9mIGEgc2luZ2xlIGRlY2xhcmF0aW9u LCBjb21wYXJlIHRoZSBpbXBvcnRlZAotKwkgICAgIGRlY2xhcmF0aW9uIHdpdGggdGhlIHNvdWdo dCBvdXQgbmFtZS4gSWYgdGhlcmUgaXMgYSBtYXRjaCBwYXNzCi0rCSAgICAgY3VycmVudC0+aW1w b3J0X3NyYyBhcyBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0aGUKLSsJ ICAgICBpbXBvcnRlZCBuYW1lc3BhY2UuICAqLwotKwkgIGlmIChzdHJjbXAgKCIiLCBjdXJyZW50 LT5kZWNsYXJhdGlvbikgIT0gMCkKLSsJICAgIHsKLSsJICAgIGlmIChzdHJjbXAgKG5hbWUsIGN1 cnJlbnQtPmRlY2xhcmF0aW9uKSA9PSAwKQotKwkgICAgICB7Ci0rCSAgICAgIHN5bSA9IGNwX2xv b2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3JjLAotKwkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSsJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKLSsJICAgICAgfQotKwotKwkgICAg Y3VycmVudC0+c2VhcmNoZWQgPSAwOwotKwkgICAgaWYgKHN5bSkKLSsJICAgICAgcmV0dXJuIHN5 bTsKLSsKLSsJICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwkgICAKLSsJICBpZiAoZGVjbGFyYXRp b25fb25seSkKLSsJICAgIHsKLSsJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKLSsJICAgIGRp c2NhcmRfY2xlYW51cHMgKHNlYXJjaGVkX2NsZWFudXApOwotKwkgICAgY29udGludWU7Ci0rCSAg ICB9Ci0rCi0rCSAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMpID09IDApCi0rCSAg ICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMgbWF0 Y2hlcyB0aGUKLSsJICAgICAgIHNvdWdodCBuYW1lLiBQYXNzIGN1cnJlbnQtPmlubmVyIGFzIHRo ZSBOQU1FIHRvIGRpcmVjdCB0aGUKLSsJICAgICAgIHNlYXJjaCB0b3dhcmRzIHRoZSBhbGlhc2Vk IG5hbWVzcGFjZSAqLwotKwkgICAgewotKwkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9u YW1lc3BhY2UgKHNjb3BlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN1cnJlbnQtPmltcG9ydF9zcmMsCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmxvY2ssCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9tYWluKTsKLSsJICAgIH0gZWxzZSBpZiAoc3RyY21wICgiIiwgY3VycmVudC0+YWxp YXMpID09IDApewotKwkgICAgLyogSWYgdGhpcyBpbXBvcnQgc3RhdGVtZW50IGNyZWF0ZXMgbm8g YWxpYXMsIHBhc3MgY3VycmVudC0+aW5uZXIgYXMKLSsJICAgICAgIE5BTUVTUEFDRSB0byBkaXJl Y3QgdGhlIHNlYXJjaCB0b3dhcmRzIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UuICovCi0rCSAgICAg IHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY3VycmVudC0+aW1wb3J0X3NyYywKLSsJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvbWFpbiwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp OwotKwkgICAgfQotKwotKwkgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKLSsJICBkaXNjYXJkX2Ns ZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKLSsKLSAJICBpZiAoc3ltICE9IE5VTEwpCi0gCSAg ICByZXR1cm4gc3ltOwotIAl9Ci0gICAgIH0KLSAKLS0gIC8qIFdlIGRpZG4ndCBmaW5kIGFueXRo aW5nIGJ5IGFwcGx5aW5nIGFueSBvZiB0aGUgdXNpbmcgZGlyZWN0aXZlcwotLSAgICAgdGhhdCBh cmUgc3RpbGwgYXBwbGljYWJsZTsgc28gbGV0J3Mgc2VlIGlmIHdlJ3ZlIGdvdCBhIG1hdGNoCi0t ICAgICB1c2luZyB0aGUgY3VycmVudCBuYW1lc3BhY2UuICAqLwotLSAgCi0tICBpZiAobmFtZXNw YWNlWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxl IChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLAotLQkJCQkgZG9tYWluLCAwKTsKLS0gICAgfQot LSAgZWxzZQotLSAgICB7Ci0tICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUKLS0JPSBhbGxv Y2EgKHN0cmxlbiAobmFtZXNwYWNlKSArIDIgKyBzdHJsZW4gKG5hbWUpICsgMSk7Ci0tICAgICAg c3RyY3B5IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZXNwYWNlKTsKLS0gICAgICBzdHJjYXQgKGNv bmNhdGVuYXRlZF9uYW1lLCAiOjoiKTsKLS0gICAgICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1l LCBuYW1lKTsKLS0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbmNhdGVuYXRlZF9u YW1lLCBsaW5rYWdlX25hbWUsCi0tCQkJCWJsb2NrLCBkb21haW4sIAotLQkJCQljcF9pc19hbm9u eW1vdXMgKG5hbWVzcGFjZSkpOwotLSAgICAgIHJldHVybiBzeW07Ci0tICAgIH0KLSsgIHJldHVy biBOVUxMOwotIH0KLSAKLSAvKiBMb29rIHVwIE5BTUUgaW4gQkxPQ0sncyBzdGF0aWMgYmxvY2sg YW5kIGluIGdsb2JhbCBibG9ja3MuICBJZgotQEAgLTM4OCwxNyArNTU3LDE1IEBAIGNwX2xvb2t1 cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0gCi0gc3RhdGljIHN0 cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKLS0J CSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgY29uc3Qgc3RydWN0IGJsb2Nr ICpibG9jaywKLSAJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0gCQkgICAgaW50IGFu b255bW91c19uYW1lc3BhY2UpCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltID0gTlVMTDsKLSAK LS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2Nr LCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9zdGF0aWMgKG5hbWUsIGJsb2NrLCBk b21haW4pOwotICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3ltOwotLQotICAgaWYg KGFub255bW91c19uYW1lc3BhY2UpCi0gICAgIHsKLSAgICAgICAvKiBTeW1ib2xzIGRlZmluZWQg aW4gYW5vbnltb3VzIG5hbWVzcGFjZXMgaGF2ZSBleHRlcm5hbCBsaW5rYWdlCi1AQCAtNDA4LDEy ICs1NzUsMTEgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpuYW1lLAotICAgICAg IGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2NrID0gYmxvY2tfZ2xvYmFsX2Jsb2NrIChi bG9jayk7Ci0gICAgICAgCi0gICAgICAgaWYgKGdsb2JhbF9ibG9jayAhPSBOVUxMKQotLQlzeW0g PSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgbGlua2FnZV9uYW1lLCBnbG9iYWxfYmxv Y2ssCi0tCQkJCSAgICAgICBkb21haW4pOwotKwlzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9ibG9j ayAobmFtZSwgZ2xvYmFsX2Jsb2NrLCBkb21haW4pOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsK LS0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBi bG9jaywgZG9tYWluKTsKLSsgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwg YmxvY2ssIGRvbWFpbik7Ci0gICAgIH0KLSAKLSAgIGlmIChzeW0gIT0gTlVMTCkKLUBAIC00MzQs NiArNjAwLDcgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpuYW1lLAotICAgICAg IHN5bSA9IGxvb2t1cF9wb3NzaWJsZV9uYW1lc3BhY2Vfc3ltYm9sIChuYW1lKTsKLSAgICAgICBp ZiAoc3ltICE9IE5VTEwpCi0gCXJldHVybiBzeW07Ci0rCi0gICAgIH0KLSAKLSAgIHJldHVybiBO VUxMOwotQEAgLTQ2MSw5ICs2MjgsOCBAQCBjcF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0cnVjdCB0 eXBlICpwYXJlbnRfdHlwZSwKLSAJICAgbG9va3VwX3N5bWJvbF9uYW1lc3BhY2Ugd29ya3Mgd2hl biBsb29raW5nIHRoZW0gdXAuICAqLwotIAotIAljb25zdCBjaGFyICpwYXJlbnRfbmFtZSA9IFRZ UEVfVEFHX05BTUUgKHBhcmVudF90eXBlKTsKLS0Jc3RydWN0IHN5bWJvbCAqc3ltID0gY3BfbG9v a3VwX3N5bWJvbF9uYW1lc3BhY2UgKHBhcmVudF9uYW1lLAotKwlzdHJ1Y3Qgc3ltYm9sICpzeW0g PSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAocGFyZW50X25hbWUsCi0gCQkJCQkJCSBu ZXN0ZWRfbmFtZSwKLS0JCQkJCQkJIE5VTEwsCi0gCQkJCQkJCSBibG9jaywKLSAJCQkJCQkJIFZB Ul9ET01BSU4pOwotIAlpZiAoc3ltID09IE5VTEwgfHwgU1lNQk9MX0NMQVNTIChzeW0pICE9IExP Q19UWVBFREVGKQotQEAgLTcwOSw3ICs4NzUsNyBAQCBjaGVja19vbmVfcG9zc2libGVfbmFtZXNw YWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKLSAKLSAgIG1lbWNweSAobmFt ZV9jb3B5LCBuYW1lLCBsZW4pOwotICAgbmFtZV9jb3B5W2xlbl0gPSAnXDAnOwotLSAgc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWVfY29weSwgTlVMTCwgVkFSX0RPTUFJTik7 Ci0rICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZV9jb3B5LCBWQVJfRE9N QUlOKTsKLSAKLSAgIGlmIChzeW0gPT0gTlVMTCkKLSAgICAgewotQEAgLTc0OSw3ICs5MTUsNyBA QCBsb29rdXBfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSkKLSAg ICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gCi0gICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoZ2V0X3Bvc3NpYmxlX25hbWVzcGFjZV9ibG9jayAob2JqZmlsZSksCi0tCQkJCSBuYW1l LCBOVUxMLCBWQVJfRE9NQUlOKTsKLSsJCQkJIG5hbWUsIFZBUl9ET01BSU4pOwotIAotICAgICAg IGlmIChzeW0gIT0gTlVMTCkKLSAJcmV0dXJuIHN5bTsKLWRpZmYgLS1naXQgYS9nZGIvY3Atc3Vw cG9ydC5jIGIvZ2RiL2NwLXN1cHBvcnQuYwotaW5kZXggZjEyZDc4NS4uMjNiMzRjMSAxMDA2NDQK LS0tLSBhL2dkYi9jcC1zdXBwb3J0LmMKLSsrKyBiL2dkYi9jcC1zdXBwb3J0LmMKLUBAIC0zMiw2 ICszMiw5IEBACi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1ZGUgImNvbXBsYWludHMuaCIK LSAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNs dWRlICJleHByZXNzaW9uLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0gCi0gI2luY2x1ZGUgInNh ZmUtY3R5cGUuaCIKLSAKLUBAIC03MCw2ICs3MywxOCBAQCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqbWFpbnRfY3BsdXNfY21kX2xpc3QgPSBOVUxMOwotIHN0YXRpYyB2b2lkIG1haW50X2NwbHVz X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsKLSBzdGF0aWMgdm9pZCBmaXJzdF9j b21wb25lbnRfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOwotIAotKy8qIE9wZXJh dG9yIHZhbGlkYXRpb24uCi0rICAgTk9URTogTXVsdGktYnl0ZSBvcGVyYXRvcnMgKHVzdWFsbHkg dGhlIGFzc2lnbm1lbnQgdmFyaWV0eSBvcGVyYXRvcikKLSsgICBtdXN0IGFwcGVhciBiZWZvcmUg dGhlIHNpbmdsZSBieXRlIHZlcnNpb24sIGkuZS4sICIrPSIgYmVmb3JlICIrIi4gICovCi0rc3Rh dGljIGNvbnN0IGNoYXIgKm9wZXJhdG9yX3Rva2Vuc1tdID0KLSsgIHsKLSsgICAgIisrIiwgIis9 IiwgIisiLCAiLT4qIiwgIi0+IiwgIi0tIiwgIi09IiwgIi0iLCAiKj0iLCAiKiIsICIvPSIsICIv IiwKLSsgICAgIiU9IiwgIiUiLCAiIT0iLCAiPT0iLCAiISIsICImJiIsICI8PD0iLCAiPDwiLCAi Pj49IiwgIj4+IiwKLSsgICAgIjw9IiwgIjwiLCAiPj0iLCAiPiIsICJ+IiwgIiY9IiwgIiYiLCAi fD0iLCAifHwiLCAifCIsICJePSIsICJeIiwKLSsgICAgIj0iLCAiKCkiLCAiW10iLCAiLCIsICJu ZXciLCAiZGVsZXRlIgotKyAgICAvKiBuZXdbXSBhbmQgZGVsZXRlW10gcmVxdWlyZSBzcGVjaWFs IHdoaXRlc3BhY2UgaGFuZGxpbmcgKi8KLSsgIH07Ci0rCi0gLyogUmV0dXJuIDEgaWYgU1RSSU5H IGlzIGNsZWFybHkgYWxyZWFkeSBpbiBjYW5vbmljYWwgZm9ybS4gIFRoaXMKLSAgICBmdW5jdGlv biBpcyBjb25zZXJ2YXRpdmU7IHRoaW5ncyB3aGljaCBpdCBkb2VzIG5vdCByZWNvZ25pemUgYXJl Ci0gICAgYXNzdW1lZCB0byBiZSBub24tY2Fub25pY2FsLCBhbmQgdGhlIHBhcnNlciB3aWxsIHNv cnQgdGhlbSBvdXQKLUBAIC0xNzUsNyArMTkwLDggQEAgbWFuZ2xlZF9uYW1lX3RvX2NvbXAgKGNv bnN0IGNoYXIgKm1hbmdsZWRfbmFtZSwgaW50IG9wdGlvbnMsCi0gICByZXR1cm4gcmV0OwotIH0K LSAKLS0vKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGNvbnRhaW5pbmcgbWV0aG9kIFBI WVNOQU1FLiAgKi8KLSsvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIG5hbWVzcGFj ZSBjb250YWluaW5nCi0rICAgZnVuY3Rpb24sIG1ldGhvZCwgb3IgdmFyaWFibGUgUEhZU05BTUUu ICAqLwotIAotIGNoYXIgKgotIGNwX2NsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hh ciAqcGh5c25hbWUpCi1AQCAtODI1LDkgKzg0MSw5IEBAIHJlYWRfaW5fcHN5bXRhYnMgKGNvbnN0 IGNoYXIgKmZ1bmNfbmFtZSkKLSAgICAgaWYgKHBzLT5yZWFkaW4pCi0gICAgICAgY29udGludWU7 Ci0gCi0tICAgIGlmICgobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCBOVUxM LCAxLCBWQVJfRE9NQUlOKQotKyAgICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1 bmNfbmFtZSwgMSwgVkFSX0RPTUFJTikKLSAJICE9IE5VTEwpCi0tCXx8IChsb29rdXBfcGFydGlh bF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIE5VTEwsIDAsIFZBUl9ET01BSU4pCi0rCXx8IChsb29r dXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIDAsIFZBUl9ET01BSU4pCi0gCSAgICAh PSBOVUxMKSkKLSAgICAgICBwc3ltdGFiX3RvX3N5bXRhYiAocHMpOwotICAgfQotQEAgLTkwOSw2 ICs5MjUsMTA3IEBAIGZpcnN0X2NvbXBvbmVudF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKLSAKLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NwX3N1 cHBvcnQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGVzICovCi0gCi0rI2RlZmluZSBTS0lQX1NQQUNF KFApCQkJCVwKLSsgIGRvCQkJCQkJXAotKyAgewkJCQkJCVwKLSsgICAgd2hpbGUgKCooUCkgPT0g JyAnIHx8ICooUCkgPT0gJ1x0JykJCVwKLSsgICAgICArKyhQKTsJCQkJCVwKLSsgIH0JCQkJCQlc Ci0rICB3aGlsZSAoMCkKLSsKLSsvKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIG9wZXJhdG9y IG5hbWUgb3IgMCBpZiBJTlBVVCBkb2VzIG5vdAotKyAgIHBvaW50IHRvIGEgdmFsaWQgQysrIG9w ZXJhdG9yLiAgSU5QVVQgc2hvdWxkIHN0YXJ0IHdpdGggIm9wZXJhdG9yIi4gICovCi0raW50Ci0r Y3BfdmFsaWRhdGVfb3BlcmF0b3IgKGNvbnN0IGNoYXIgKmlucHV0KQotK3sKLSsgIGludCBpOwot KyAgY2hhciAqY29weTsKLSsgIGNvbnN0IGNoYXIgKnA7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwcjsKLSsgIHN0cnVjdCB2YWx1ZSAqdmFsOwotKyAgc3RydWN0IGdkYl9leGNlcHRpb24gZXhj ZXB0OwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSsKLSsgIHAgPSBpbnB1dDsKLSsK LSsgIGlmIChzdHJuY21wIChwLCAib3BlcmF0b3IiLCA4KSA9PSAwKQotKyAgICB7Ci0rICAgICAg aW50IHZhbGlkID0gMDsKLSsgICAgICBwICs9IDg7Ci0rCi0rICAgICAgU0tJUF9TUEFDRSAocCk7 Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAob3BlcmF0b3JfdG9rZW5zKSAvIHNpemVv ZiAob3BlcmF0b3JfdG9rZW5zWzBdKTsKLSsJICAgKytpKQotKwl7Ci0rCSAgaW50IGxlbmd0aCA9 IHN0cmxlbiAob3BlcmF0b3JfdG9rZW5zW2ldKTsKLSsJICAvKiBCeSB1c2luZyBzdHJuY21wIGhl cmUsIHdlIE1VU1QgaGF2ZSBvcGVyYXRvcl90b2tlbnMgb3JkZXJlZCEKLSsJICAgICBTZWUgYWRk aXRpb25hbCBub3RlcyB3aGVyZSBvcGVyYXRvcl90b2tlbnMgaXMgZGVmaW5lZCBhYm92ZS4gICov Ci0rCSAgaWYgKHN0cm5jbXAgKHAsIG9wZXJhdG9yX3Rva2Vuc1tpXSwgbGVuZ3RoKSA9PSAwKQot KwkgICAgewotKwkgICAgICBjb25zdCBjaGFyICpvcCA9IHA7Ci0rCSAgICAgIHZhbGlkID0gMTsK LSsJICAgICAgcCArPSBsZW5ndGg7Ci0rCi0rCSAgICAgIGlmIChzdHJuY21wIChvcCwgIm5ldyIs IDMpID09IDAKLSsJCSAgfHwgc3RybmNtcCAob3AsICJkZWxldGUiLCA2KSA9PSAwKQotKwkJewot KwotKwkJICAvKiBTcGVjaWFsIGNhc2U6IG5ld1tdIGFuZCBkZWxldGVbXS4gIFdlIG11c3QgYmUg Y2FyZWZ1bAotKwkJICAgICB0byBzd2FsbG93IHdoaXRlc3BhY2UgYmVmb3JlL2luICJbXSIuICAq LwotKwkJICBTS0lQX1NQQUNFIChwKTsKLSsKLSsJCSAgaWYgKCpwID09ICdbJykKLSsJCSAgICB7 Ci0rCQkgICAgICArK3A7Ci0rCQkgICAgICBTS0lQX1NQQUNFIChwKTsKLSsJCSAgICAgIGlmICgq cCA9PSAnXScpCi0rCQkJKytwOwotKwkJICAgICAgZWxzZQotKwkJCXZhbGlkID0gMDsKLSsJCSAg ICB9Ci0rCQl9Ci0rCi0rCSAgICAgIGlmICh2YWxpZCkKLSsJCXJldHVybiAocCAtIGlucHV0KTsK LSsJICAgIH0KLSsJfQotKwotKyAgICAgIC8qIENoZWNrIGlucHV0IGZvciBhIGNvbnZlcnNpb24g b3BlcmF0b3IuICAqLwotKwotKyAgICAgIC8qIFNraXAgcGFzdCBiYXNlIHR5cGVuYW1lICovCi0r ICAgICAgd2hpbGUgKCpwICE9ICcqJyAmJiAqcCAhPSAnJicgJiYgKnAgIT0gMCAmJiAqcCAhPSAn ICcpCi0rCSsrcDsKLSsgICAgICBTS0lQX1NQQUNFIChwKTsKLSsKLSsgICAgICAvKiBBZGQgbW9k aWZpZXJzICcqJy8nJicgKi8KLSsgICAgICB3aGlsZSAoKnAgPT0gJyonIHx8ICpwID09ICcmJykK LSsJewotKwkgICsrcDsKLSsJICBTS0lQX1NQQUNFIChwKTsKLSsJfQotKwotKyAgICAgIC8qIENo ZWNrIGZvciB2YWxpZCB0eXBlLiAgW1JlbWVtYmVyOiBpbnB1dCBzdGFydHMgd2l0aCAKLSsJICJv cGVyYXRvciIuXSAgKi8KLSsgICAgICBjb3B5ID0gc2F2ZXN0cmluZyAoaW5wdXQgKyA4LCBwIC0g aW5wdXQgLSA4KTsKLSsgICAgICBleHByID0gTlVMTDsKLSsgICAgICB2YWwgPSBOVUxMOwotKyAg ICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsKLSsJICBleHByID0g cGFyc2VfZXhwcmVzc2lvbiAoY29weSk7Ci0rCSAgdmFsID0gZXZhbHVhdGVfdHlwZSAoZXhwcik7 Ci0rCX0KLSsKLSsgICAgICB4ZnJlZSAoY29weSk7Ci0rICAgICAgaWYgKGV4cHIpCi0rCXhmcmVl IChleHByKTsKLSsKLSsgICAgICBpZiAodmFsICE9IE5VTEwgJiYgdmFsdWVfdHlwZSAodmFsKSAh PSBOVUxMKQotKwlyZXR1cm4gKHAgLSBpbnB1dCk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwot K30KLSsKLSB2b2lkCi0gX2luaXRpYWxpemVfY3Bfc3VwcG9ydCAodm9pZCkKLSB7Ci1kaWZmIC0t Z2l0IGEvZ2RiL2NwLXN1cHBvcnQuaCBiL2dkYi9jcC1zdXBwb3J0LmgKLWluZGV4IGI1YTVjNWYu LjNmNDhmOTggMTAwNjQ0Ci0tLS0gYS9nZGIvY3Atc3VwcG9ydC5oCi0rKysgYi9nZGIvY3Atc3Vw cG9ydC5oCi1AQCAtMzgsMTUgKzM4LDMzIEBAIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQ7Ci0g Ci0gLyogVGhpcyBzdHJ1Y3QgaXMgZGVzaWduZWQgdG8gc3RvcmUgZGF0YSBmcm9tIHVzaW5nIGRp cmVjdGl2ZXMuICBJdAotICAgIHNheXMgdGhhdCBuYW1lcyBmcm9tIG5hbWVzcGFjZSBJTVBPUlRf U1JDIHNob3VsZCBiZSB2aXNpYmxlIHdpdGhpbgotLSAgIG5hbWVzcGFjZSBJTVBPUlRfREVTVC4g SU1QT1JUX0RFU1Qgc2hvdWxkIGFsd2F5cyBiZSBhIHN0cmljdCBpbml0aWFsCi0tICAgc3Vic3Ry aW5nIG9mIElNUE9SVF9TUkMuIFRoZXNlIGZvcm0gYSBsaW5rZWQgbGlzdDsgTkVYVCBpcyB0aGUg bmV4dCBlbGVtZW50Ci0tICAgb2YgdGhlIGxpc3QuICAqLwotKyAgIG5hbWVzcGFjZSBJTVBPUlRf REVTVC4gIElNUE9SVF9ERVNUIHNob3VsZCBhbHdheXMgYmUgYSBzdHJpY3QgaW5pdGlhbAotKyAg IHN1YnN0cmluZyBvZiBJTVBPUlRfU1JDLiAgVGhlc2UgZm9ybSBhIGxpbmtlZCBsaXN0OyBORVhU IGlzIHRoZSBuZXh0Ci0rICAgZWxlbWVudCBvZiB0aGUgbGlzdC4gIEFMSUFTIGlzIHNldCB0byBh IG5vbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGltcG9ydGVkCi0rICAgbmFtZXNwYWNlIGhhcyBiZWVu IGFsaWFzZWQuRWc6Ci0rICAgICAgIG5hbWVzcGFjZSBDPUE6OkI7Ci0rICAgQUxJQVMgPSAiQyIK LSsgICBERUNMQVJBVElPTiBpcyB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgZGVjbGFyYXRpb24s IGlmIHRoaXMgaW1wb3J0IAotKyAgIHN0YXRlbWVudCByZXByZXNlbnRzIG9uZS4gRWc6Ci0rICAg ICAgIHVzaW5nIEE6Ong7Ci0rICAgV2hlcmUgeCBpcyB2YXJpYWJsZSBpbiBuYW1lc3BhY2UgQS4g ZGVjbGFyYXRpb24gaXMgc2V0IHRvIHguICAKLSsqLwotIAotIHN0cnVjdCB1c2luZ19kaXJlY3QK LSB7Ci0gICBjaGFyICppbXBvcnRfc3JjOwotICAgY2hhciAqaW1wb3J0X2Rlc3Q7Ci0rCi0rICBj aGFyICphbGlhczsKLSsKLSsgIGNoYXIgKmRlY2xhcmF0aW9uOwotKwotKyAgaW50IGxpbmVfbnVt YmVyOwotKwotICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4dDsKLSsKLSsgIC8qIFVzZWQgZHVy aW5nIGltcG9ydCBzZWFyY2ggdG8gdGVtcG9yYXJseSBtYXJrIHRoaXMgbm9kZSBhcyBzZWFyY2Vk LiAgKi8KLSsgIGludCBzZWFyY2hlZDsKLSB9OwotIAotIAotQEAgLTU0LDYgKzcyLDcgQEAgc3Ry dWN0IHVzaW5nX2RpcmVjdAotIAotIGV4dGVybiBjaGFyICpjcF9jYW5vbmljYWxpemVfc3RyaW5n IChjb25zdCBjaGFyICpzdHJpbmcpOwotIAotKwotIGV4dGVybiBjaGFyICpjcF9jbGFzc19uYW1l X2Zyb21fcGh5c25hbWUgKGNvbnN0IGNoYXIgKnBoeXNuYW1lKTsKLSAKLSBleHRlcm4gY2hhciAq bWV0aG9kX25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpOwotQEAgLTcy LDE1ICs5MSwyMyBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqKm1ha2Vfc3ltYm9sX292ZXJsb2Fk X2xpc3QgKGNvbnN0IGNoYXIgKiwKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNwX2xvb2t1cF9ydHRp X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCQkJCQkgc3RydWN0IGJsb2NrICpibG9jayk7Ci0g Ci0rZXh0ZXJuIGludCBjcF92YWxpZGF0ZV9vcGVyYXRvciAoY29uc3QgY2hhciAqaW5wdXQpOwot KwotIC8qIEZ1bmN0aW9ucy92YXJpYWJsZXMgZnJvbSBjcC1uYW1lc3BhY2UuYy4gICovCi0gCi0g ZXh0ZXJuIGludCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSk7Ci0gCi0g ZXh0ZXJuIHZvaWQgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphbGlhcywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkZWNsYXJhdGlvbiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGluZV9udW1i ZXIpOwotIAotIGV4dGVybiBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjcF9hZGRfdXNpbmcgKGNvbnN0 IGNoYXIgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqc3JjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmFsaWFzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlciwKLSAJCQkJCSAgc3Ry dWN0IHVzaW5nX2RpcmVjdCAqbmV4dCk7Ci0gCi0gZXh0ZXJuIHZvaWQgY3BfaW5pdGlhbGl6ZV9u YW1lc3BhY2UgKHZvaWQpOwotQEAgLTk3LDE1ICsxMjQsMjAgQEAgZXh0ZXJuIHZvaWQgY3Bfc2V0 X2Jsb2NrX3Njb3BlIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCi0gZXh0ZXJuIHZvaWQg Y3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5 bWJvbCk7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbm9ubG9j YWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkJIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwK LSAJCQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCQkgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluKTsKLSAKLStzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX2ltcG9y dHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25fb25s eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWFyY2hf cGFyZW50cyk7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbmFt ZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0tCQkJCQkJICBjb25zdCBjaGFyICpuYW1l LAotLQkJCQkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJCQkJCSAgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywKLS0JCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0g Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0cnVjdCB0eXBl ICpwYXJlbnRfdHlwZSwKLSAJCQkJCSAgIGNvbnN0IGNoYXIgKm5lc3RlZF9uYW1lLAotZGlmZiAt LWdpdCBhL2dkYi9kYnhyZWFkLmMgYi9nZGIvZGJ4cmVhZC5jCi1pbmRleCA3Y2IwMTZkLi5iYjll MzVhIDEwMDY0NAotLS0tIGEvZ2RiL2RieHJlYWQuYwotKysrIGIvZ2RiL2RieHJlYWQuYwotQEAg LTM1ODEsNiArMzU4MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMgPQot ICAgZGJ4X25ld19pbml0LAkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBl bnRpcmUgc3ltdGFiICovCi0gICBkYnhfc3ltZmlsZV9pbml0LAkvKiBzeW1faW5pdDogcmVhZCBp bml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICBkYnhfc3ltZmlsZV9yZWFk LAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBpbnRvIHN5bXRhYiAqLwotKyAgTlVM TCwJCQkJLyogc3ltX3JlYWRfcHN5bWJvbHMgKi8KLSAgIGRieF9zeW1maWxlX2ZpbmlzaCwJCS8q IHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwotICAgZGVmYXVsdF9z eW1maWxlX29mZnNldHMsIC8qIHN5bV9vZmZzZXRzOiBwYXJzZSB1c2VyJ3Mgb2Zmc2V0cyB0bwot IAkJCSAgICAgIGludGVybmFsIGZvcm0gKi8KLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhp bmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQK LS0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBA IC05NTksOCArOTU5LDEwIEBAIENvbm5lY3QgdG8gcHJvY2VzcyBJRCBAdmFye251bWJlcn0sIGFz IHdpdGggdGhlIEBjb2Rle2F0dGFjaH0gY29tbWFuZC4KLSBAaXRlbXggLXggQHZhcntmaWxlfQot IEBjaW5kZXggQGNvZGV7LS1jb21tYW5kfQotIEBjaW5kZXggQGNvZGV7LXh9Ci0tRXhlY3V0ZSBA dmFsdWV7R0RCTn0gY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0uICBAeHJlZntDb21tYW5k Ci0tRmlsZXMsLCBDb21tYW5kIGZpbGVzfS4KLStFeGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBA dmFye2ZpbGV9LiAgSWYgQHZhcntmaWxlfSBlbmRzIGluCi0rQHNhbXB7LnB5fSwgdGhlbiB0aGUg ZmlsZSBpcyBldmFsdWF0ZWQgYXMgUHl0aG9uIGNvZGUuICBJZiBQeXRob24KLStzdXBwb3J0IGlz IG5vdCBlbmFibGVkIGluIHRoaXMgQHZhbHVle0dEQk59LCB0aGVuIGFuIGVycm9yIG9jY3Vycy4K LStAeHJlZntDb21tYW5kIEZpbGVzLCwgQ29tbWFuZCBmaWxlc30uCi0gCi0gQGl0ZW0gLWV2YWwt Y29tbWFuZCBAdmFye2NvbW1hbmR9Ci0gQGl0ZW14IC1leCBAdmFye2NvbW1hbmR9Ci1AQCAtMTE1 Miw2ICsxMTU0LDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgotIFJ1biB1c2luZyBAdmFye2Rl dmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0gQGMg RklYTUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRl LgotIAotK0BpdGVtIC1QCi0rQGNpbmRleCBAY29kZXstUH0KLStAaXRlbXggLS1weXRob24KLStA Y2luZGV4IEBjb2Rley0tcHl0aG9ufQotK0NoYW5nZSBpbnRlcnByZXRhdGlvbiBvZiBjb21tYW5k IGxpbmUgc28gdGhhdCB0aGUgYXJndW1lbnQgaW1tZWRpYXRlbHkKLStmb2xsb3dpbmcgdGhpcyBz d2l0Y2ggaXMgdGFrZW4gdG8gYmUgdGhlIG5hbWUgb2YgYSBQeXRob24gc2NyaXB0IGZpbGUuCi0r VGhpcyBvcHRpb24gc3RvcHMgb3B0aW9uIHByb2Nlc3Npbmc7IHN1YnNlcXVlbnQgb3B0aW9ucyBh cmUgcGFzc2VkIHRvCi0rUHl0aG9uIGFzIEBjb2Rle3N5cy5hcmd2fS4gIFRoaXMgb3B0aW9uIGlz IG9ubHkgYXZhaWxhYmxlIGlmIFB5dGhvbgotK3NjcmlwdGluZyBzdXBwb3J0IHdhcyBlbmFibGVk IHdoZW4gQHZhbHVle0dEQk59IHdhcyBjb25maWd1cmVkLgotKwotIEBjIHJlc29sdmUgdGhlIHNp dHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5Ci0gQGl0ZW0gLXR1aQotIEBjaW5kZXggQGNvZGV7 LS10dWl9Ci1AQCAtMTg2NjAsNyArMTg2NzIsNyBAQCBjb21tYW5kOgotIEB0YWJsZSBAY29kZQot IEBraW5kZXggc291cmNlCi0gQGNpbmRleCBleGVjdXRlIGNvbW1hbmRzIGZyb20gYSBmaWxlCi0t QGl0ZW0gc291cmNlIFtAY29kZXstdn1dIEB2YXJ7ZmlsZW5hbWV9Ci0rQGl0ZW0gc291cmNlIFtA Y29kZXstdn1dIFtAY29kZXstcH1dIEB2YXJ7ZmlsZW5hbWV9Ci0gRXhlY3V0ZSB0aGUgY29tbWFu ZCBmaWxlIEB2YXJ7ZmlsZW5hbWV9LgotIEBlbmQgdGFibGUKLSAKLUBAIC0xODY3Nyw2ICsxODY4 OSwxMSBAQCBJZiBAY29kZXstdn0sIGZvciB2ZXJib3NlIG1vZGUsIGlzIGdpdmVuIHRoZW4gQHZh bHVle0dEQk59IGRpc3BsYXlzCi0gZWFjaCBjb21tYW5kIGFzIGl0IGlzIGV4ZWN1dGVkLiAgVGhl IG9wdGlvbiBtdXN0IGJlIGdpdmVuIGJlZm9yZQotIEB2YXJ7ZmlsZW5hbWV9LCBhbmQgaXMgaW50 ZXJwcmV0ZWQgYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUgYW55d2hlcmUgZWxzZS4KK0BAIC0xOTEx OCw2ICsxOTEzMCwxMSBAQCBJZiBAY29kZXstdn0sIGZvciB2ZXJib3NlIG1vZGUsIGlzIGdpdmVu IHRoZW4gQHZhbHVle0dEQk59IGRpc3BsYXlzCisgZWFjaCBjb21tYW5kIGFzIGl0IGlzIGV4ZWN1 dGVkLiAgVGhlIG9wdGlvbiBtdXN0IGJlIGdpdmVuIGJlZm9yZQorIEB2YXJ7ZmlsZW5hbWV9LCBh bmQgaXMgaW50ZXJwcmV0ZWQgYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUgYW55d2hlcmUgZWxzZS4K ICAKICtJZiBAdmFye2ZpbGVuYW1lfSBlbmRzIGluIEBzYW1wey5weX0sIG9yIGlmIEBjb2Rley1w fSwgZm9yIFB5dGhvbiwgaXMKICtnaXZlbiB0aGVuIEB2YWx1ZXtHREJOfSBldmFsdWF0ZXMgdGhl IGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFzIFB5dGhvbgpAQCAtMzkxMSw3ICsxNjc1LDcgQEAgaW5k ZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQKICBDb21tYW5kcyB0aGF0IHdvdWxkIGFzayBmb3Ig Y29uZmlybWF0aW9uIGlmIHVzZWQgaW50ZXJhY3RpdmVseSBwcm9jZWVkCiAgd2l0aG91dCBhc2tp bmcgd2hlbiB1c2VkIGluIGEgY29tbWFuZCBmaWxlLiAgTWFueSBAdmFsdWV7R0RCTn0gY29tbWFu ZHMgdGhhdAogIG5vcm1hbGx5IHByaW50IG1lc3NhZ2VzIHRvIHNheSB3aGF0IHRoZXkgYXJlIGRv aW5nIG9taXQgdGhlIG1lc3NhZ2VzCi1AQCAtMTg5MzgsOCArMTg5NTUsNiBAQCBjb250YWluaW5n IEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKK0BAIC0xOTM3OSw4ICsxOTM5Niw2IEBAIGNvbnRh aW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAoQHZh bHVle0dEQlB9KSBweXRob24KQEAgLTM5MjAsNyArMTY4NCw3IEBAIGluZGV4IDFmOThmYTUuLjll MjQ0ODIgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMTg5NTIsNiArMTg5Njcs MTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBA Y29kZXttYWludCBzZXQKK0BAIC0xOTM5Myw2ICsxOTQwOCwxNCBAQCBpbiBhIFB5dGhvbiBzY3Jp cHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBjb2Rle21haW50IHNldAogIHB5dGhv biBwcmludC1zdGFja306IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0 YWNrCiAgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24gc3Rh Y2sgcHJpbnRpbmcgaXMKICBkaXNhYmxlZC4KQEAgLTM5MzUsNyArMTY5OSw3IEBAIGluZGV4IDFm OThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQGVuZCB0YWJsZQogIAogIEBub2RlIFB5dGhvbiBBUEkK LUBAIC0xODk1OSw2ICsxODk4MiwxNCBAQCBkaXNhYmxlZC4KK0BAIC0xOTQwMCw2ICsxOTQyMywx NCBAQCBkaXNhYmxlZC4KICBAY2luZGV4IHB5dGhvbiBhcGkKICBAY2luZGV4IHByb2dyYW1taW5n IGluIHB5dGhvbgogIApAQCAtMzk1MCw3ICsxNzE0LDcgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4 MiAxMDA2NDQKICBAY2luZGV4IHB5dGhvbiBzdGRvdXQKICBAY2luZGV4IHB5dGhvbiBwYWdpbmF0 aW9uCiAgQXQgc3RhcnR1cCwgQHZhbHVle0dEQk59IG92ZXJyaWRlcyBQeXRob24ncyBAY29kZXtz eXMuc3Rkb3V0fSBhbmQKLUBAIC0xODk3MSwxMyArMTkwMDIsMTcgQEAgc2l0dWF0aW9uLCBhIFB5 dGhvbiBAY29kZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KK0BAIC0x OTQxMiwxMyArMTk0NDMsMTcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29kZXtLZXlib2FyZElu dGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KICAqIEJhc2ljIFB5dGhvbjo6ICAgICAgICAg ICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCiAgKiBFeGNlcHRpb24gSGFuZGxpbmc6Ogog ICogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5 dGhvbiBjb2RlLgpAQCAtMzk2Nyw5ICsxNzMxLDkgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAx MDA2NDQKICAqIE9iamZpbGVzIEluIFB5dGhvbjo6ICAgICAgICAgIE9iamVjdCBmaWxlcy4KICsq IEJyZWFrcG9pbnRzIEluIFB5dGhvbjo6ICAgICAgIE1hbmlwdWxhdGluZyBicmVha3BvaW50cyB1 c2luZyBQeXRob24uCiAgKiBGcmFtZXMgSW4gUHl0aG9uOjogICAgICAgICAgICBBY2Vzc2luZyBp bmZlcmlvciBzdGFjayBmcmFtZXMgZnJvbSBQeXRob24uCisgKiBMYXp5IFN0cmluZ3MgSW4gUHl0 aG9uOjogICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgbGF6eSBzdHJpbmdzLgogIEBlbmQg bWVudQotIAotQEAgLTE5MDA0LDYgKzE5MDM5LDEyIEBAIGNvbW1hbmQgYXMgaGF2aW5nIG9yaWdp bmF0ZWQgZnJvbSB0aGUgdXNlciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5LgorQEAgLTE5NDQ2 LDYgKzE5NDgxLDEyIEBAIGNvbW1hbmQgYXMgaGF2aW5nIG9yaWdpbmF0ZWQgZnJvbSB0aGUgdXNl ciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5LgogIEl0IG11c3QgYmUgYSBib29sZWFuIHZhbHVl LiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gQGNvZGV7RmFsc2V9LgogIEBlbmQgZGVmdW4K ICAKQEAgLTM5ODIsNyArMTc0Niw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAg QGZpbmRleCBnZGIucGFyYW1ldGVyCiAgQGRlZnVuIHBhcmFtZXRlciBwYXJhbWV0ZXIKICBSZXR1 cm4gdGhlIHZhbHVlIG9mIGEgQHZhbHVle0dEQk59IHBhcmFtZXRlci4gIEB2YXJ7cGFyYW1ldGVy fSBpcyBhCi1AQCAtMTkwMjAsNiArMTkwNjEsNyBAQCBhIFB5dGhvbiB2YWx1ZSBvZiB0aGUgYXBw cm9wcmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgorQEAgLTE5NDYyLDYgKzE5NTAzLDcgQEAgYSBQ eXRob24gdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1cm5lZC4KICBAZGVm dW4gaGlzdG9yeSBudW1iZXIKICBSZXR1cm4gYSB2YWx1ZSBmcm9tIEB2YWx1ZXtHREJOfSdzIHZh bHVlIGhpc3RvcnkgKEBweHJlZntWYWx1ZQogIEhpc3Rvcnl9KS4gIEB2YXJ7bnVtYmVyfSBpbmRp Y2F0ZXMgd2hpY2ggaGlzdG9yeSBlbGVtZW50IHRvIHJldHVybi4KQEAgLTM5OTAsMTcgKzE3NTQs MTAgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQKICBJZiBAdmFye251bWJlcn0gaXMg bmVnYXRpdmUsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgdGFrZSBpdHMgYWJzb2x1dGUgdmFsdWUK ICBhbmQgY291bnQgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBlbGVtZW50IChpLmUuLCB0aGUgbW9z dCByZWNlbnQgZWxlbWVudCkgdG8KICBmaW5kIHRoZSB2YWx1ZSB0byByZXR1cm4uICBJZiBAdmFy e251bWJlcn0gaXMgemVybywgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbAotQEAgLTE5MDMxLDYgKzE5 MDczLDI4IEBAIElmIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHRoZSByZXR1cm4gdmFsdWUgaXMg YWx3YXlzIGFuIGluc3RhbmNlIG9mCi0gQGNvZGV7Z2RiLlZhbHVlfSAoQHB4cmVme1ZhbHVlcyBG cm9tIEluZmVyaW9yfSkuCitAQCAtMTk0ODYsNiArMTk1MjgsMjEgQEAgY29tcHV0ZSB2YWx1ZXMs IGZvciBleGFtcGxlLCBpdCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhCisg Y29udmVuaWVuY2UgdmFyaWFibGUgKEBweHJlZntDb252ZW5pZW5jZSBWYXJzfSkgYXMgYSBAY29k ZXtnZGIuVmFsdWV9LgogIEBlbmQgZGVmdW4KICAKLStAZmluZGV4IGdkYi5wYXJzZV9hbmRfZXZh bAotK0BkZWZ1biBwYXJzZV9hbmRfZXZhbCBleHByZXNzaW9uCi0rUGFyc2UgQHZhcntleHByZXNz aW9ufSBhcyBhbiBleHByZXNzaW9uIGluIHRoZSBjdXJyZW50IGxhbmd1YWdlLAotK2V2YWx1YXRl IGl0LCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBAY29kZXtnZGIuVmFsdWV9LgotK0B2YXJ7 ZXhwcmVzc2lvbn0gbXVzdCBiZSBhIHN0cmluZy4KLStAZW5kIGRlZnVuCi0rCiArQGZpbmRleCBn ZGIucG9zdF9ldmVudAogK0BkZWZ1biBwb3N0X2V2ZW50IGV2ZW50CiArUHV0IEB2YXJ7ZXZlbnR9 LCBhIGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgbm8gYXJndW1lbnRzLCBpbnRvCkBAIC00MDE5LDcg KzE3NzYsNyBAQCBpbmRleCAxZjk4ZmE1Li45ZTI0NDgyIDEwMDY0NAogIEBmaW5kZXggZ2RiLndy aXRlCiAgQGRlZnVuIHdyaXRlIHN0cmluZwogIFByaW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJO fSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLgotQEAgLTE5MDQ1LDYgKzE5MTA5 LDExIEBAIEZsdXNoIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3Ry ZWFtLiAgRmx1c2hpbmcKK0BAIC0xOTUwMCw2ICsxOTU1NywxMSBAQCBGbHVzaCBAdmFsdWV7R0RC Tn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4gIEZsdXNoaW5nCiAgZnVuY3Rp b24uCiAgQGVuZCBkZWZ1bgogIApAQCAtNDAzMSwyMSArMTc4OCw3IEBAIGluZGV4IDFmOThmYTUu LjllMjQ0ODIgMTAwNjQ0CiAgQG5vZGUgRXhjZXB0aW9uIEhhbmRsaW5nCiAgQHN1YnN1YnNlY3Rp b24gRXhjZXB0aW9uIEhhbmRsaW5nCiAgQGNpbmRleCBweXRob24gZXhjZXB0aW9ucwotQEAgLTE5 MTgxLDYgKzE5MjUwLDEzIEBAIFRoZSB0eXBlIG9mIHRoaXMgQGNvZGV7Z2RiLlZhbHVlfS4gIFRo ZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhCi0gVGhlIGZvbGxvd2luZyBtZXRob2RzIGFy ZSBwcm92aWRlZDoKLSAKLSBAdGFibGUgQGNvZGUKLStAZGVmbWV0aG9kIFZhbHVlIGNhc3QgdHlw ZQotK0Nhc3QgdGhlIEBjb2Rle2dkYi5WYWx1ZX0gdG8gdGhlIHR5cGUgcmVwcmVzZW50ZWQgYnkg QHZhcnt0eXBlfSwgYW5kCi0rcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5WYWx1ZX0uICBAdmFye3R5 cGV9IG11c3QgYmUgYSBAY29kZXtnZGIuVHlwZX0KLStvYmplY3QuICBJZiB0aGUgY2FzdCBjYW5u b3QgYmUgcGVyZm9ybWVkIGZvciBzb21lIHJlYXNvbiwgYW4gZXhjZXB0aW9uCi0raXMgdGhyb3du LgotK0BlbmQgZGVmbWV0aG9kCi0rCi0gQGRlZm1ldGhvZCBWYWx1ZSBkZXJlZmVyZW5jZQotIEZv ciBwb2ludGVyIGRhdGEgdHlwZXMsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgQGNvZGV7Z2Ri LlZhbHVlfSBvYmplY3QKLSB3aG9zZSBjb250ZW50cyBpcyB0aGUgb2JqZWN0IHBvaW50ZWQgdG8g YnkgdGhlIHBvaW50ZXIuICBGb3IgZXhhbXBsZSwgaWYKLUBAIC0xOTI1Miw2ICsxOTMyOCw5IEBA IG1vZHVsZToKK0BAIC0xOTczOCw2ICsxOTgwMCw5IEBAIG1vZHVsZToKICBUaGlzIGZ1bmN0aW9u IGxvb2tzIHVwIGEgdHlwZSBieSBuYW1lLiAgQHZhcntuYW1lfSBpcyB0aGUgbmFtZSBvZiB0aGUK ICB0eXBlIHRvIGxvb2sgdXAuICBJdCBtdXN0IGJlIGEgc3RyaW5nLgogIApAQCAtNDA1NSwyMCAr MTc5OCw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgT3JkaW5hcmlseSwgdGhp cyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBpbnN0YW5jZSBvZiBAY29kZXtnZGIuVHlwZX0uCiAg SWYgdGhlIG5hbWVkIHR5cGUgY2Fubm90IGJlIGZvdW5kLCBpdCB3aWxsIHRocm93IGFuIGV4Y2Vw dGlvbi4KICBAZW5kIGRlZnVuCi1AQCAtMTkzMDQsNiArMTkzODMsMTIgQEAgVGhpcyBpcyBAY29k ZXtUcnVlfSBpZiB0aGUgZmllbGQgaXMgYXJ0aWZpY2lhbCwgdXN1YWxseSBtZWFuaW5nIHRoYXQK LSBpdCB3YXMgcHJvdmlkZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBub3QgdGhlIHVzZXIuICBUaGlz IGF0dHJpYnV0ZSBpcwotIGFsd2F5cyBwcm92aWRlZCwgYW5kIGlzIEBjb2Rle0ZhbHNlfSBpZiB0 aGUgZmllbGQgaXMgbm90IGFydGlmaWNpYWwuCi0gCi0rQGl0ZW0gaXNfYmFzZV9jbGFzcwotK1Ro aXMgaXMgQGNvZGV7VHJ1ZX0gaWYgdGhlIGZpZWxkIHJlcHJlc2VudHMgYSBiYXNlIGNsYXNzIG9m IGEgQ0B0eysrfQotK3N0cnVjdHVyZS4gIFRoaXMgYXR0cmlidXRlIGlzIGFsd2F5cyBwcm92aWRl ZCwgYW5kIGlzIEBjb2Rle0ZhbHNlfQotK2lmIHRoZSBmaWVsZCBpcyBub3QgYSBiYXNlIGNsYXNz IG9mIHRoZSB0eXBlIG9uIHdoaWNoIEBjb2Rle2ZpZWxkc30gd2FzCi0rY2FsbGVkLCBvciBpZiB0 aGF0IHR5cGUgd2FzIG5vdCBhIENAdHsrK30gY2xhc3MuCi0rCi0gQGl0ZW0gYml0c2l6ZQotIElm IHRoZSBmaWVsZCBpcyBwYWNrZWQsIG9yIGlzIGEgYml0ZmllbGQsIHRoZW4gdGhpcyB3aWxsIGhh dmUgYQotIG5vbi16ZXJvIHZhbHVlLCB3aGljaCBpcyB0aGUgc2l6ZSBvZiB0aGUgZmllbGQgaW4g Yml0cy4gIE90aGVyd2lzZSwKLUBAIC0xOTM1Niw3ICsxOTQ0MSw3IEBAIElmIHRoZSB0eXBlIGRv ZXMgbm90IGhhdmUgYSB0YXJnZXQsIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4KK0BAIC0xOTg2 MCw3ICsxOTkyNSw3IEBAIElmIHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQsIHRoaXMg bWV0aG9kIHdpbGwgdGhyb3cgYW4KICBleGNlcHRpb24uCiAgQGVuZCBkZWZtZXRob2QKICAKQEAg LTQwNzcsNyArMTgwNyw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgSWYgdGhp cyBAY29kZXtnZGIuVHlwZX0gaXMgYW4gaW5zdGFudGlhdGlvbiBvZiBhIHRlbXBsYXRlLCB0aGlz IHdpbGwKICByZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2VudHMgdGhl IHR5cGUgb2YgdGhlCiAgQHZhcntufXRoIHRlbXBsYXRlIGFyZ3VtZW50LgotQEAgLTE5MzY0LDcg KzE5NDQ5LDggQEAgcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRz IHRoZSB0eXBlIG9mIHRoZQorQEAgLTE5ODY4LDcgKzE5OTMzLDggQEAgcmV0dXJuIGEgbmV3IEBj b2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQogIElmIHRoaXMg QGNvZGV7Z2RiLlR5cGV9IGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUsIHRoaXMgd2lsbCB0aHJvdyBh bgogIGV4Y2VwdGlvbi4gIE9yZGluYXJpbHksIG9ubHkgQ0B0eysrfSBjb2RlIHdpbGwgaGF2ZSB0 ZW1wbGF0ZSB0eXBlcy4KICAKQEAgLTQwODcsNyArMTgxNyw3IEBAIGluZGV4IDFmOThmYTUuLjll MjQ0ODIgMTAwNjQ0CiAgQGVuZCBkZWZtZXRob2QKICBAZW5kIHRhYmxlCiAgCi1AQCAtMTk3MTgs NiArMTk4MDQsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CitAQCAtMjAyMjIsNiArMjAy ODgsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CiAgZ2RiLmxpYnN0ZGN4eC52Ni5yZWdp c3Rlcl9wcmludGVycyAoZ2RiLmN1cnJlbnRfb2JqZmlsZSAoKSkKICBAZW5kIHNtYWxsZXhhbXBs ZQogIApAQCAtNDA5NSw5ICsxODI1LDkgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQK ICtAc3Vic3Vic2VjdGlvbiBJbmZlcmlvcnMgSW4gUHl0aG9uCiArCiArUHJvZ3JhbXMgd2hpY2gg YXJlIGJlaW5nIHJ1biB1bmRlciBAdmFsdWV7R0RCTn0gYXJlIGNhbGxlZCBpbmZlcmlvcnMKLSso QHB4cmVme0luZmVyaW9yc30pLiAgUHl0aG9uIHNjcmlwdHMgY2FuIGFjY2VzcyBpbmZvcm1hdGlv biBhYm91dCBhbmQKLSttYW5pcHVsYXRlIGluZmVyaW9ycyBjb250cm9sbGVkIGJ5IEB2YWx1ZXtH REJOfSB2aWEgb2JqZWN0cyBvZiB0aGUKLStAY29kZXtnZGIuSW5mZXJpb3J9IGNsYXNzLgorKyhA cHhyZWZ7SW5mZXJpb3JzIGFuZCBQcm9ncmFtc30pLiAgUHl0aG9uIHNjcmlwdHMgY2FuIGFjY2Vz cworK2luZm9ybWF0aW9uIGFib3V0IGFuZCBtYW5pcHVsYXRlIGluZmVyaW9ycyBjb250cm9sbGVk IGJ5IEB2YWx1ZXtHREJOfQorK3ZpYSBvYmplY3RzIG9mIHRoZSBAY29kZXtnZGIuSW5mZXJpb3J9 IGNsYXNzLgogKwogK1RoZSBmb2xsb3dpbmcgaW5mZXJpb3ItcmVsYXRlZCBmdW5jdGlvbnMgYXJl IGF2YWlsYWJsZSBpbiB0aGUgQGNvZGV7Z2RifQogK21vZHVsZToKQEAgLTQyMDksNyArMTkzOSw3 IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQG5vZGUgQ29tbWFuZHMgSW4gUHl0 aG9uCiAgQHN1YnN1YnNlY3Rpb24gQ29tbWFuZHMgSW4gUHl0aG9uCiAgCi1AQCAtMTk5NzAsNiAr MjAxNzEsMTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtHREJO fS4gIERlcGVuZGluZyBvbiBob3cgdGhlCitAQCAtMjA0NzQsNiArMjA2NTUsMTM1IEBAIHJlZ2lz dHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtHREJOfS4gIERlcGVuZGluZyBvbiBo b3cgdGhlCiAgUHl0aG9uIGNvZGUgaXMgcmVhZCBpbnRvIEB2YWx1ZXtHREJOfSwgeW91IG1heSBu ZWVkIHRvIGltcG9ydCB0aGUKICBAY29kZXtnZGJ9IG1vZHVsZSBleHBsaWNpdGx5LgogIApAQCAt NDM0NSw3ICsyMDc1LDcgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQKICBAbm9kZSBG dW5jdGlvbnMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gV3JpdGluZyBuZXcgY29udmVuaWVu Y2UgZnVuY3Rpb25zCiAgCi1AQCAtMjAwNzQsNiArMjA0MDQsODIgQEAgd2hpY2ggaXMgdXNlZCB0 byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfSwgZm9yIG1vcmUKK0BA IC0yMDU3OCw2ICsyMDg4OCw4MiBAQCB3aGljaCBpcyB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWUu ICBAeHJlZntQcmV0dHkgUHJpbnRpbmd9LCBmb3IgbW9yZQogIGluZm9ybWF0aW9uLgogIEBlbmQg ZGVmaXZhcgogIApAQCAtNDQyOCw3ICsyMTU4LDcgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAx MDA2NDQKICBAbm9kZSBGcmFtZXMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gQWNlc3Npbmcg aW5mZXJpb3Igc3RhY2sgZnJhbWVzIGZyb20gUHl0aG9uLgogIAotQEAgLTIwMTM4LDYgKzIwNTQ0 LDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgorQEAgLTIwNjQyLDYgKzIxMDI4LDE0IEBAIGZ1 bmN0aW9uIHRvIGEgc3RyaW5nLgogIFJldHVybnMgdGhlIGZyYW1lJ3MgcmVzdW1lIGFkZHJlc3Mu CiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTQ0NDMsNyArMjE3Myw3IEBAIGluZGV4IDFmOThmYTUu LjllMjQ0ODIgMTAwNjQ0CiAgQGRlZm1ldGhvZCBGcmFtZSBvbGRlcgogIFJldHVybiB0aGUgZnJh bWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KICBAZW5kIGRlZm1ldGhvZAotQEAgLTIwMTQ2LDEw ICsyMDU2MCwxOCBAQCBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMgZnJhbWUuCitA QCAtMjA2NTAsMTAgKzIxMDQ0LDE4IEBAIFJldHVybiB0aGUgZnJhbWUgdGhhdCBjYWxsZWQgdGhp cyBmcmFtZS4KICBSZXR1cm4gdGhlIGZyYW1lIGNhbGxlZCBieSB0aGlzIGZyYW1lLgogIEBlbmQg ZGVmbWV0aG9kCiAgCkBAIC00NDYxLDEyICsyMTkxLDEyIEBAIGluZGV4IDFmOThmYTUuLjllMjQ0 ODIgMTAwNjQ0CiArQGVuZCBkZWZtZXRob2QKICBAZW5kIHRhYmxlCiAgCi0gQG5vZGUgSW50ZXJw cmV0ZXJzCisgQG5vZGUgTGF6eSBTdHJpbmdzIEluIFB5dGhvbgogZGlmZiAtLWdpdCBhL2dkYi9k b2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCi1pbmRleCBjMmJlM2Y3 Li5hNzgxMWFiIDEwMDY0NAoraW5kZXggMzQ3Yzg2MC4uNWQ3MDAyZSAxMDA2NDQKIC0tLSBhL2dk Yi9kb2MvZ2RiaW50LnRleGluZm8KICsrKyBiL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KLUBAIC0y MTE0LDYgKzIxMTQsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5bWJv bHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKK0BAIC0yMTA3LDYgKzIxMDcsMTggQEAg dGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5bWJvbHMgaW5jcmVtZW50YWxseS4g IEZvciBpbnN0YW5jZSwKICB3ZSBjcmVhdGUgQGRmbntwYXJ0aWFsIHN5bWJvbCB0YWJsZXN9IGNv bnNpc3Rpbmcgb2Ygb25seSBzZWxlY3RlZAogIHN5bWJvbHMsIGFuZCBvbmx5IGV4cGFuZCB0aGVt IHRvIGZ1bGwgc3ltYm9sIHRhYmxlcyB3aGVuIG5lY2Vzc2FyeS4KICAKQEAgLTQ0ODUsNyArMjIx NSw3IEBAIGluZGV4IGMyYmUzZjcuLmE3ODExYWIgMTAwNjQ0CiAgQHNlY3Rpb24gU3ltYm9sIFJl YWRpbmcKICAKICBAY2luZGV4IHN5bWJvbCByZWFkaW5nCi1AQCAtMjIwNiw2ICsyMjE4LDcgQEAg c3ltdGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVu IHNldCB0byAxLCBhbmQKK0BAIC0yMTk5LDYgKzIyMTEsNyBAQCBzeW10YWIuICBVcG9uIHJldHVy biwgQGNvZGV7cHN0LT5yZWFkaW59IHNob3VsZCBoYXZlIGJlZW4gc2V0IHRvIDEsIGFuZAogIHpl cm8gaWYgdGhlcmUgd2VyZSBubyBzeW1ib2xzIGluIHRoYXQgcGFydCBvZiB0aGUgc3ltYm9sIGZp bGUuCiAgQGVuZCB0YWJsZQogIApAQCAtNDQ5Myw3ICsyMjIzLDcgQEAgaW5kZXggYzJiZTNmNy4u YTc4MTFhYiAxMDA2NDQKICBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXMKICAKICBAdmFs dWV7R0RCTn0gaGFzIHRocmVlIHR5cGVzIG9mIHN5bWJvbCB0YWJsZXM6Ci1AQCAtMjMwMSw2ICsy MzE0LDcgQEAgYW5kIGFsbCB0aGUgcHN5bWJvbHMgdGhlbXNlbHZlcyBhcmUgYWxsb2NhdGVkIGlu IGEgcGFpciBvZiBsYXJnZSBhcnJheXMKK0BAIC0yMjk0LDYgKzIzMDcsNyBAQCBhbmQgYWxsIHRo ZSBwc3ltYm9scyB0aGVtc2VsdmVzIGFyZSBhbGxvY2F0ZWQgaW4gYSBwYWlyIG9mIGxhcmdlIGFy cmF5cwogIG9uIGFuIG9ic3RhY2ssIHNvIHRoZXJlIGlzIGxpdHRsZSB0byBiZSBnYWluZWQgYnkg dHJ5aW5nIHRvIGZyZWUgdGhlbQogIHVubGVzcyB5b3Ugd2FudCB0byBkbyBhIGxvdCBtb3JlIHdv cmsuCiAgCkBAIC00NTAxLDcgKzIyMzEsNyBAQCBpbmRleCBjMmJlM2Y3Li5hNzgxMWFiIDEwMDY0 NAogIEBzZWN0aW9uIFR5cGVzCiAgCiAgQHVubnVtYmVyZWRzdWJzZWMgRnVuZGFtZW50YWwgVHlw ZXMgKGUuZy4sIEBjb2Rle0ZUX1ZPSUR9LCBAY29kZXtGVF9CT09MRUFOfSkuCi1AQCAtMjMyMyw2 ICsyMzM3LDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5k IGFyZSBkaXN0aW5ndWlzaGVkIGJ5CitAQCAtMjMxNiw2ICsyMzMwLDcgQEAgdHlwZXMgbWFwIHRv IG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CiAg b3RoZXIgbWVtYmVycyBvZiB0aGUgdHlwZSBzdHJ1Y3QsIHN1Y2ggYXMgd2hldGhlciB0aGUgdHlw ZSBpcyBzaWduZWQKICBvciB1bnNpZ25lZCwgYW5kIGhvdyBtYW55IGJpdHMgaXQgdXNlcy4KICAK QEAgLTQ1MDksNyArMjIzOSw3IEBAIGluZGV4IGMyYmUzZjcuLmE3ODExYWIgMTAwNjQ0CiAgQHVu bnVtYmVyZWRzdWJzZWMgQnVpbHRpbiBUeXBlcyAoZS5nLiwgQGNvZGV7YnVpbHRpbl90eXBlX3Zv aWR9LCBAY29kZXtidWlsdGluX3R5cGVfY2hhcn0pLgogIAogIFRoZXNlIGFyZSBpbnN0YW5jZXMg b2YgdHlwZSBzdHJ1Y3RzIHRoYXQgcm91Z2hseSBjb3JyZXNwb25kIHRvCi1AQCAtMjMzNyw2ICsy MzUyLDcgQEAgb25seSBvbmUgaW5zdGFuY2UgZXhpc3RzLCB3aGlsZSBAZmlsZXtjLWxhbmcuY30g YnVpbGRzIGFzIG1hbnkKK0BAIC0yMzMwLDYgKzIzNDUsNyBAQCBvbmx5IG9uZSBpbnN0YW5jZSBl eGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQogIEBjb2Rle1RZUEVf Q09ERV9JTlR9IHR5cGVzIGFzIG5lZWRlZCwgd2l0aCBlYWNoIG9uZSBhc3NvY2lhdGVkIHdpdGgK ICBzb21lIHBhcnRpY3VsYXIgb2JqZmlsZS4KICAKQEAgLTQ1MTcsNyArMjI0Nyw3IEBAIGluZGV4 IGMyYmUzZjcuLmE3ODExYWIgMTAwNjQ0CiAgQHNlY3Rpb24gT2JqZWN0IEZpbGUgRm9ybWF0cwog IEBjaW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0cwogIAotQEAgLTI0MjIsNiArMjQzOCw3IEBAIFNP TSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFnZSBBQkkpLgorQEAgLTI0MTUsNiArMjQzMSw3IEBA IFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFnZSBBQkkpLgogIAogIFRoZSBTT00gcmVhZGVy IGlzIGluIEBmaWxle3NvbXJlYWQuY30uCiAgCkBAIC00NTI1LDcgKzIyNTUsNyBAQCBpbmRleCBj MmJlM2Y3Li5hNzgxMWFiIDEwMDY0NAogIEBzZWN0aW9uIERlYnVnZ2luZyBGaWxlIEZvcm1hdHMK ICAKICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNoYXJhY3RlcmlzdGljcyBvZiBkZWJ1Z2dpbmcg aW5mb3JtYXRpb24gdGhhdAotQEAgLTI0OTMsNiArMjUxMCw3IEBAIERXQVJGIDMgaXMgYW4gaW1w cm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgorQEAgLTI0ODYsNiArMjUwMyw3IEBAIERXQVJGIDMg aXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgogIEBjaW5kZXggU09NIGRlYnVnZ2lu ZyBpbmZvCiAgTGlrZSBDT0ZGLCB0aGUgU09NIGRlZmluaXRpb24gaW5jbHVkZXMgZGVidWdnaW5n IGluZm9ybWF0aW9uLgogIApAQCAtNDUzMyw3ICsyMjYzLDcgQEAgaW5kZXggYzJiZTNmNy4uYTc4 MTFhYiAxMDA2NDQKICBAc2VjdGlvbiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBAdmFs dWV7R0RCTn0KICAKICBAY2luZGV4IGFkZGluZyBkZWJ1Z2dpbmcgaW5mbyByZWFkZXIKLUBAIC0y NTE1LDYgKzI1MzMsNyBAQCB3aWxsIG9ubHkgZXZlciBiZSBpbXBsZW1lbnRlZCBieSBvbmUgb2Jq ZWN0IGZpbGUgZm9ybWF0IG1heSBiZSBjYWxsZWQKK0BAIC0yNTA4LDYgKzI1MjYsNyBAQCB3aWxs IG9ubHkgZXZlciBiZSBpbXBsZW1lbnRlZCBieSBvbmUgb2JqZWN0IGZpbGUgZm9ybWF0IG1heSBi ZSBjYWxsZWQKICBkaXJlY3RseS4gIFRoaXMgaW50ZXJmYWNlIHNob3VsZCBiZSBkZXNjcmliZWQg aW4gYSBmaWxlCiAgQGZpbGV7YmZkL2xpYkB2YXJ7eHl6fS5ofSwgd2hpY2ggaXMgaW5jbHVkZWQg YnkgQHZhbHVle0dEQk59LgogIApAQCAtNDU0MSw3ICsyMjcxLDcgQEAgaW5kZXggYzJiZTNmNy4u YTc4MTFhYiAxMDA2NDQKICBAc2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBmb3IgU3ltYm9sIEZp bGVzCiAgCiAgTW9zdCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVkIHN5bWJvbCBmaWxl IGlzIHN0b3JlZCBvbgotQEAgLTI1MjYsMTAgKzI1NDUsNDUgQEAgcmVsZWFzZWQgd2hlbiB0aGUg b2JqZmlsZSBpcyB1bmxvYWRlZCBvciByZWxvYWRlZC4gIFRoZXJlZm9yZSBvbmUKK0BAIC0yNTE5 LDEwICsyNTM4LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3Ig cmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCiAgb2JqZmlsZSBtdXN0IG5vdCByZWZlcmVuY2Ugc3lt Ym9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2JqZmlsZTsKICB0aGV5IGNvdWxkIGJlIHVu bG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4KICAKQEAgLTQ1OTIsMTEgKzIzMjIsMTEgQEAgaW5k ZXggYzJiZTNmNy4uYTc4MTFhYiAxMDA2NDQKICAKICBAbm9kZSBMYW5ndWFnZSBTdXBwb3J0CiBk aWZmIC0tZ2l0IGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpIGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhp Ci1pbmRleCA0OTg0ZjMxLi5mY2YxYjVkIDEwMDY0NAoraW5kZXggZGIzZDExNC4uNzU5MjAwZiAx MDA2NDQKIC0tLSBhL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQogKysrIGIvZ2RiL2RvYy9vYnNlcnZl ci50ZXhpCi1AQCAtMjA2LDYgKzIwNiwxMSBAQCBFaXRoZXIgQHZhbHVle0dEQk59IGRldGFjaGVk IGZyb20gdGhlIGluZmVyaW9yLCBvciB0aGUgaW5mZXJpb3IKLSBleGl0ZWQuICBUaGUgYXJndW1l bnQgQHZhcntwaWR9IGlkZW50aWZpZXMgdGhlIGluZmVyaW9yLgorQEAgLTIxMyw2ICsyMTMsMTEg QEAgQnl0ZXMgZnJvbSBAdmFye2RhdGF9IHRvIEB2YXJ7ZGF0YX0gKyBAdmFye2xlbn0gaGF2ZSBi ZWVuIHdyaXR0ZW4KKyB0byB0aGUgY3VycmVudCBpbmZlcmlvciBhdCBAdmFye2FkZHJ9LgogIEBl bmQgZGVmdHlwZWZ1bgogIAogK0BkZWZ0eXBlZnVuIHZvaWQgbWFya191c2VkICh2b2lkKQpAQCAt NDYwOCw3ICsyMzM4LDcgQEAgaW5kZXggNDk4NGYzMS4uZmNmMWI1ZCAxMDA2NDQKICBUaGlzIG9i c2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFsIHRlc3RpbmcuICBEbyBub3QgdXNlLiAgCiAgU2Vl IHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYy LWZyYW1lLmMgYi9nZGIvZHdhcmYyLWZyYW1lLmMKLWluZGV4IDY2OGM0MzQuLmMyOWMzYTUgMTAw NjQ0CitpbmRleCA5OTEwMGQ3Li41OTE1MjQ5IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMi1mcmFt ZS5jCiArKysgYi9nZGIvZHdhcmYyLWZyYW1lLmMKIEBAIC0zOCw2ICszOCw3IEBACkBAIC00NjE5 LDcgKzIzNDksNyBAQCBpbmRleCA2NjhjNDM0Li5jMjljM2E1IDEwMDY0NAogIAogIHN0cnVjdCBj b21wX3VuaXQ7CiAgCi1AQCAtMTU3NCw2ICsxNTc1LDE0IEBAIGR3YXJmMl9mcmFtZV9maW5kX2Zk ZSAoQ09SRV9BRERSICpwYykKK0BAIC0xNTgyLDYgKzE1ODMsMTQgQEAgZHdhcmYyX2ZyYW1lX2Zp bmRfZmRlIChDT1JFX0FERFIgKnBjKQogICAgICAgIENPUkVfQUREUiBvZmZzZXQ7CiAgICAgICAg Q09SRV9BRERSIHNlZWtfcGM7CiAgCkBAIC00NjM1LDcgKzIzNjUsNyBAQCBpbmRleCA2NjhjNDM0 Li5jMjljM2E1IDEwMDY0NAogICAgICAgIGlmIChmZGVfdGFibGUgPT0gTlVMTCkKICAJY29udGlu dWU7CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2FyZjJleHByLmMKLWlu ZGV4IDQ2YmM5ZDcuLmU2NzU1NzUgMTAwNjQ0CitpbmRleCA1ZTI3ZDM4Li42MjhiYTg4IDEwMDY0 NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwogKysrIGIvZ2RiL2R3YXJmMmV4cHIuYwogQEAgLTg0 OCw2ICs4NDgsMTMgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dCAqY3R4LApAQCAtNDY1Myw3ICsyMzgzLDcgQEAgaW5kZXggNDZiYzlkNy4uZTY3NTU3NSAxMDA2 NDQKICAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgi KSwgb3ApOwogIAl9CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJl eHByLmgKLWluZGV4IGE5YThhMDUuLmQ0NDkwMTIgMTAwNjQ0CitpbmRleCA0MzdjYTM5Li5mN2Zj ZTkyIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAogKysrIGIvZ2RiL2R3YXJmMmV4cHIu aAogQEAgLTEwMiwxMCArMTAyLDEwIEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKQEAgLTQ2 NjksMTAgKzIzOTksMTAgQEAgaW5kZXggYTlhOGEwNS4uZDQ0OTAxMiAxMDA2NDQKICAgIC8qIFRo ZSBjdXJyZW50IGRlcHRoIG9mIGR3YXJmIGV4cHJlc3Npb24gcmVjdXJzaW9uLCB2aWEgRFdfT1Bf Y2FsbCosCiAgICAgICBEV19PUF9mYnJlZywgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcywgZXRj LiwgYW5kIHRoZSBtYXhpbXVtCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3 YXJmMmxvYy5jCi1pbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAoraW5kZXggNjY3OWQ3NC4u NTRkMmJhZSAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuYwogKysrIGIvZ2RiL2R3YXJmMmxv Yy5jCi1AQCAtMTE2LDYgKzExNiw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCitAQCAtMTIx LDYgKzEyMSw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCiAgewogICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lOwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CkBAIC00NjgyLDkgKzI0 MTIsOSBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIH07CiAgCiAgLyogSGVscGVy IGZ1bmN0aW9ucyBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KLUBAIC0xNzcsMjIg KzE4MCwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2UgKHZvaWQgKmJhdG9uLCBnZGJfYnl0ZSAq KnN0YXJ0LCBzaXplX3QgKiBsZW5ndGgpCi0gICAgICAgKnN0YXJ0ID0gZmluZF9sb2NhdGlvbl9l eHByZXNzaW9uIChzeW1iYXRvbiwgbGVuZ3RoLAotIAkJCQkJIGdldF9mcmFtZV9hZGRyZXNzX2lu X2Jsb2NrIChmcmFtZSkpOworQEAgLTE4OSwyMiArMTkyLDMzIEBAIGR3YXJmX2V4cHJfZnJhbWVf YmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKKyAgICAgICBz eW1iYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKKyAgICAgICAqc3Rh cnQgPSBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKHN5bWJhdG9uLCBsZW5ndGgsIHBjKTsKICAg ICAgfQogLSAgZWxzZQogKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5j KSA9PSAmZHdhcmYyX2xvY2V4cHJfZnVuY3MpCkBAIC00NzI1LDcgKzI0NTUsNyBAQCBpbmRleCAz YTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIH0KICAKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtMjE1LDYg KzIyOSwxMjkgQEAgZHdhcmZfZXhwcl90bHNfYWRkcmVzcyAodm9pZCAqYmF0b24sIENPUkVfQURE UiBvZmZzZXQpCitAQCAtMjI3LDYgKzI0MSwxMjkgQEAgZHdhcmZfZXhwcl90bHNfYWRkcmVzcyAo dm9pZCAqYmF0b24sIENPUkVfQUREUiBvZmZzZXQpCiAgICByZXR1cm4gdGFyZ2V0X3RyYW5zbGF0 ZV90bHNfYWRkcmVzcyAoZGViYXRvbi0+b2JqZmlsZSwgb2Zmc2V0KTsKICB9CiAgCkBAIC00ODU1 LDcgKzI1ODUsNyBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIHN0cnVjdCBwaWVj ZV9jbG9zdXJlCiAgewogICAgLyogVGhlIG51bWJlciBvZiBwaWVjZXMgdXNlZCB0byBkZXNjcmli ZSB0aGlzIHZhcmlhYmxlLiAgKi8KLUBAIC0zODIsOSArNTE5LDggQEAgZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK K0BAIC00MDgsOSArNTQ1LDggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJCQkgIHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnBlcl9jdSkKICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKQEAgLTQ4 NjYsMTQgKzI1OTYsMTMgQEAgaW5kZXggM2E4MTIwMi4uODVmNDQ4NyAxMDA2NDQKICAKICAgIGlm IChzaXplID09IDApCiAgICAgIHsKLUBAIC0zOTQsMjIgKzUzMCw4IEBAIGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzYyAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUs CitAQCAtNDIwLDIyICs1NTYsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgICAgIHJldHVybiByZXR2 YWw7CiAgICAgIH0KICAKIC0gIGJhdG9uLmZyYW1lID0gZnJhbWU7CiAtICBiYXRvbi5vYmpmaWxl ID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpOwotKyAgY3R4ID0gZHdhcmZfZXhwcl9w cmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7Ci0gCistCiAtICBjdHggPSBuZXdf ZHdhcmZfZXhwcl9jb250ZXh0ICgpOwogLSAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVf ZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwogLQpAQCAtNDg4NSwxMiArMjYxNCwxMyBAQCBpbmRl eCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogLSAgY3R4LT5nZXRfZnJhbWVfYmFzZSA9IGR3YXJm X2V4cHJfZnJhbWVfYmFzZTsKIC0gIGN0eC0+Z2V0X2ZyYW1lX2NmYSA9IGR3YXJmX2V4cHJfZnJh bWVfY2ZhOwogLSAgY3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9leHByX3Rsc19hZGRyZXNz OwotLQorKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBl cl9jdSk7CisgCiAtICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7CiAgICBpZiAo Y3R4LT5udW1fcGllY2VzID4gMCkKICAgICAgewogICAgICAgIHN0cnVjdCBwaWVjZV9jbG9zdXJl ICpjOwotQEAgLTQzOSw2ICs1NjEsMTEgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC00NjUsNiArNTg3 LDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCSAgICBDT1JFX0FERFIgYWRkcmVzcyA9IGR3YXJmX2V4 cHJfZmV0Y2ggKGN0eCwgMCk7CiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZfZXhw cl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCkBAIC00OTAyLDcgKzI2MzIsNyBA QCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIAkgICAgcmV0dmFsID0gYWxsb2NhdGVf dmFsdWUgKFNZTUJPTF9UWVBFICh2YXIpKTsKICAJICAgIFZBTFVFX0xWQUwgKHJldHZhbCkgPSBs dmFsX21lbW9yeTsKICAJICAgIHNldF92YWx1ZV9sYXp5IChyZXR2YWwsIDEpOwotQEAgLTgxNSw3 ICs5NDIsNyBAQCBzdGF0aWMgaW50CitAQCAtODcyLDcgKzk5OSw3IEBAIHN0YXRpYyBpbnQKICBs b2NsaXN0X2Rlc2NyaWJlX2xvY2F0aW9uIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pCiAgewogICAgLyogRklYTUU6IENvdWxkIHByaW50IHRoZSBlbnRpcmUg bGlzdCBvZiBsb2NhdGlvbnMuICAqLwpAQCAtNDkxMSw3ICsyNjQxLDcgQEAgaW5kZXggM2E4MTIw Mi4uODVmNDQ4NyAxMDA2NDQKICAgIHJldHVybiAxOwogIH0KICAKLUBAIC04MzEsMTYgKzk1OCw1 NiBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC04ODgsMTYgKzEwMTUsNTYgQEAgbG9jbGlzdF90 cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsCiAgCiAgICBkYXRhID0gZmluZF9sb2NhdGlvbl9leHByZXNzaW9uIChkbGJhdG9u LCAmc2l6ZSwgYXgtPnNjb3BlKTsKICAgIGlmIChkYXRhID09IE5VTEwpCkBAIC00OTcyLDEwICsy NzAyLDEwIEBAIGluZGV4IDNhODEyMDIuLjg1ZjQ0ODcgMTAwNjQ0CiArICBtaXNzaW5nX3RyYWNl cG9pbnRfdmFyX3JlZgogK307CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5oIGIvZ2RiL2R3 YXJmMmxvYy5oCi1pbmRleCAwYmZjZmNhLi4wMTAxOGQ2IDEwMDY0NAoraW5kZXggZmEwYmQxMS4u ZmRlYTJiNCAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuaAogKysrIGIvZ2RiL2R3YXJmMmxv Yy5oCi1AQCAtNzEsNSArNzEsMTEgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCitAQCAt NzIsNSArNzIsMTEgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAgCiAgZXh0ZXJuIGNv bnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNzOwogIGV4 dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5j czsKQEAgLTQ5ODgsMjMgKzI3MTgsMTkgQEAgaW5kZXggMGJmY2ZjYS4uMDEwMThkNiAxMDA2NDQK ICAKICAjZW5kaWYgLyogZHdhcmYybG9jLmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVh ZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKK2lu ZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysg Yi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNDgsNiArNDgsMTIgQEAKK0BAIC00OCw2ICs0OCw4IEBA CiAgI2luY2x1ZGUgImdkYmNtZC5oIgogICNpbmNsdWRlICJibG9jay5oIgogICNpbmNsdWRlICJh ZGRybWFwLmgiCi0rI2luY2x1ZGUgImYtbGFuZy5oIgotKyNpbmNsdWRlICJjLWxhbmcuaCIKLSsj aW5jbHVkZSAidHlwZXByaW50LmgiCi0rI2luY2x1ZGUgImp2LWxhbmcuaCIKLSsjaW5jbHVkZSAi dmVjLmgiCiArI2luY2x1ZGUgImJsb2NrLmgiCisrI2luY2x1ZGUgImYtbGFuZy5oIgogIAogICNp bmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtOTMsNyArOTks NyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJuYW1lc19oZWFkZXIKK0BAIC05Niw3ICs5OCw3IEBAIHR5 cGVkZWYgc3RydWN0IHB1Ym5hbWVzX2hlYWRlcgogIF9QVUJOQU1FU19IRUFERVI7CiAgI2RlZmlu ZSBfQUNUVUFMX1BVQk5BTUVTX0hFQURFUl9TSVpFIDEzCiAgCkBAIC01MDEzLDcgKzI3MzksNyBA QCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgIEJlY2F1c2Ugb2YgYWxpZ25tZW50 IGNvbnN0cmFpbnRzLCB0aGlzIHN0cnVjdHVyZSBoYXMgcGFkZGluZyBhbmQgY2Fubm90CiAgICAg YmUgbWFwcGVkIGRpcmVjdGx5IG9udG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgLmRlYnVnX2luZm8g c2VjdGlvbi4gICovCiAgdHlwZWRlZiBzdHJ1Y3QgYXJhbmdlc19oZWFkZXIKLUBAIC0xNTAsNyAr MTU2LDEwIEBAIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvCitAQCAtMTUzLDcgKzE1NSwxMCBA QCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbwogICAgYXNlY3Rpb24gKmFzZWN0aW9uOwogICAg Z2RiX2J5dGUgKmJ1ZmZlcjsKICAgIGJmZF9zaXplX3R5cGUgc2l6ZTsKQEAgLTUwMjUsMTAgKzI3 NTEsMTAgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICB9OwogIAogIHN0cnVjdCBk d2FyZjJfcGVyX29iamZpbGUKLUBAIC0zMzYsNiArMzQ1LDE5IEBAIHN0cnVjdCBkd2FyZjJfY3UK LSAKLSAgIC8qIEZpZWxkIGByYW5nZXNfb2Zmc2V0JyBpcyBmaWxsZWQgaW47IGZsYWcgYXMgdGhl IHZhbHVlIG1heSBiZSB6ZXJvLiAgKi8KLSAgIHVuc2lnbmVkIGludCBoYXNfcmFuZ2VzX29mZnNl dCA6IDE7CitAQCAtMzMzLDYgKzMzOCwxOSBAQCBzdHJ1Y3QgZHdhcmYyX2N1CisgICAgICBESUVz IGZvciBuYW1lc3BhY2VzLCB3ZSBkb24ndCBuZWVkIHRvIHRyeSB0byBpbmZlciB0aGVtCisgICAg ICBmcm9tIG1hbmdsZWQgbmFtZXMuICAqLworICAgdW5zaWduZWQgaW50IGhhc19uYW1lc3BhY2Vf aW5mbyA6IDE7CiArCiArICAvKiBGaWVsZHMgYXJlIHZhbGlkIGFjY29yZGluZyB0byB0aGUgTEFO R1VBR0UgZmllbGQuICAqLwogKyAgdW5pb24KQEAgLTUwNDUsNDEgKzI3NzEsMTcgQEAgaW5kZXgg NGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICB9OwogIAogIC8qIFBlcnNpc3RlbnQgZGF0YSBoZWxk IGZvciBhIGNvbXBpbGF0aW9uIHVuaXQsIGV2ZW4gd2hlbiBub3QKLUBAIC00OTUsOCArNTE3LDcg QEAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8KLSAgICAgdW5zaWduZWQgaW50IGhhc19ieXRlX3Np emUgOiAxOwotIAotICAgICAvKiBUaGUgbmFtZSBvZiB0aGlzIERJRS4gIE5vcm1hbGx5IHRoZSB2 YWx1ZSBvZiBEV19BVF9uYW1lLCBidXQKLS0gICAgICAgc29tZXRpbWVzIERXX1RBR19NSVBTX2xp bmthZ2VfbmFtZSBvciBhIHN0cmluZyBjb21wdXRlZCBpbiBzb21lCi0tICAgICAgIG90aGVyIGZh c2hpb24uICAqLwotKyAgICAgICBzb21ldGltZXMgYSBkZWZhdWx0IG5hbWUgZm9yIHVubmFtZWQg RElFcy4gICovCi0gICAgIGNoYXIgKm5hbWU7Ci0gICAgIGNoYXIgKmRpcm5hbWU7Ci0gCi1AQCAt Njg5LDYgKzcxMCwxMSBAQCBzdHJ1Y3QgZmllbGRfaW5mbwotICAgICBpbnQgbmZuZmllbGRzOwot ICAgfTsKLSAKLSsvKiBBIHZlY3RvciB1c2VkIGR1cmluZyBsaW5rYWdlIG5hbWUgZ2VuZXJhdGlv bi4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgZGllX2luZm8gKmRpZV9pbmZvX3A7Ci0rREVGX1ZFQ19Q IChkaWVfaW5mb19wKTsKLStzdGF0aWMgVkVDKGRpZV9pbmZvX3ApICpkaWVfbGlzdDsKLSsKLSAv KiBPbmUgaXRlbSBvbiB0aGUgcXVldWUgb2YgY29tcGlsYXRpb24gdW5pdHMgdG8gcmVhZCBpbiBm dWxsIHN5bWJvbHMKLSAgICBmb3IuICAqLwotIHN0cnVjdCBkd2FyZjJfcXVldWVfaXRlbQotQEAg LTgwMCw3ICs4MjYsMTAgQEAgc3RhdGljIHZvaWQgc2Nhbl9wYXJ0aWFsX3N5bWJvbHMgKHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICosCitAQCAtNzg4LDYgKzgwNiw5IEBAIHN0YXRpYyB2b2lkIHNj YW5fcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqLAogIHN0YXRpYyB2 b2lkIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKiwKICAJCQkJ c3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLS1zdGF0aWMgaW50IHBkaV9uZWVkc19uYW1lc3BhY2Ug KGVudW0gZHdhcmZfdGFnIHRhZyk7CiArc3RhdGljIGdkYl9ieXRlICpyZWFkX2NvbXBfdW5pdF9o ZWFkIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKiwgZ2RiX2J5dGUgKiwKICsJCQkJICAgICAgYmZk ICopOwogKwotK3N0YXRpYyBpbnQgZGllX25lZWRzX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZv ICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Cisgc3RhdGljIGludCBwZGlfbmVlZHNfbmFtZXNwYWNl IChlbnVtIGR3YXJmX3RhZyB0YWcpOwogIAogIHN0YXRpYyB2b2lkIGFkZF9wYXJ0aWFsX25hbWVz cGFjZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKLSAJCQkJICAgQ09SRV9BRERSICps b3dwYywgQ09SRV9BRERSICpoaWdocGMsCi1AQCAtODI1LDYgKzg1NCwxMCBAQCBzdGF0aWMgdm9p ZCBkd2FyZjJfcHN5bXRhYl90b19zeW10YWIgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqKTsKK0BA IC04MTMsNiArODM0LDEwIEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYiAo c3RydWN0IHBhcnRpYWxfc3ltdGFiICopOwogIAogIHN0YXRpYyB2b2lkIHBzeW10YWJfdG9fc3lt dGFiXzEgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqKTsKICAKQEAgLTUwOTAsNDIgKzI3OTIsNyBA QCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIHN0YXRpYyB2b2lkIGR3YXJmMl9yZWFk X2FiYnJldnMgKGJmZCAqYWJmZCwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIAogIHN0YXRpYyB2 b2lkIGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSAodm9pZCAqKTsKLUBAIC05NDUsNiArOTc4LDEx IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqdGFnX3R5cGVfdG9fdHlwZSAoc3RydWN0IGRpZV9pbmZv ICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICpyZWFkX3R5 cGVfZGllIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLStzdGF0 aWMgY2hhciAqcGh5c25hbWVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqKTsKLSsKLStzdGF0aWMgdm9pZCBwaHlzbmFtZV9wcmVmaXhfMSAoc3RydWN0IHVp X2ZpbGUgKiwgc3RydWN0IGRpZV9pbmZvICosCi0rCQkJICAgICAgIHN0cnVjdCBkd2FyZjJfY3Ug Kik7Ci0rCi0gc3RhdGljIGNoYXIgKmRldGVybWluZV9wcmVmaXggKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotIHN0YXRpYyBjaGFyICp0eXBlbmFtZV9jb25j YXQgKHN0cnVjdCBvYnN0YWNrICosCi1AQCAtOTY0LDcgKzEwMDIsOCBAQCBzdGF0aWMgaW50IGR3 YXJmMl9yYW5nZXNfcmVhZCAodW5zaWduZWQsIENPUkVfQUREUiAqLCBDT1JFX0FERFIgKiwKLSAJ CQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKik7Ci0g Ci0gc3RhdGljIGludCBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICosCi0t CQkJCSBDT1JFX0FERFIgKiwgQ09SRV9BRERSICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0rCQkJ CSBDT1JFX0FERFIgKiwgQ09SRV9BRERSICosIHN0cnVjdCBkd2FyZjJfY3UgKiwKLSsJCQkJIHN0 cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KTsKLSAKLSBzdGF0aWMgdm9pZCBnZXRfc2NvcGVfcGNf Ym91bmRzIChzdHJ1Y3QgZGllX2luZm8gKiwKLSAJCQkJIENPUkVfQUREUiAqLCBDT1JFX0FERFIg KiwKLUBAIC05ODgsMTcgKzEwMjcsMjUgQEAgc3RhdGljIHZvaWQgZHdhcmYyX2F0dGFjaF9mbl9m aWVsZHNfdG9fdHlwZSAoc3RydWN0IGZpZWxkX2luZm8gKiwKLSAKLSBzdGF0aWMgdm9pZCBwcm9j ZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3Ug Kik7Ci0gCi0tc3RhdGljIGNvbnN0IGNoYXIgKmRldGVybWluZV9jbGFzc19uYW1lIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwKLS0JCQkJCSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci0tCi0gc3RhdGlj IHZvaWQgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYy X2N1ICopOwotIAotIHN0YXRpYyB2b2lkIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLStzdGF0aWMgdm9pZCByZWFkX2ltcG9ydF9z dGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotKwot IHN0YXRpYyB2b2lkIHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpOworQEAgLTk5NSw2ICsxMDIwLDE1IEBAIHN0YXRpYyB2b2lkIHJlYWRfbW9k dWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIAogIHN0 YXRpYyB2b2lkIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKik7CiAgCkBAIC01MTQxLDI4ICsyODA4LDE3IEBAIGluZGV4IDRjY2Uz NmIuLmZiMGE2OTMgMTAwNjQ0CiAgc3RhdGljIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9uYW1lIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJCQkJICAgaW50ICppc19hbm9ueW1vdXMsIHN0cnVjdCBk d2FyZjJfY3UgKik7CiAgCi1AQCAtMTAzMiw3ICsxMDc5LDEwIEBAIHN0YXRpYyBnZGJfYnl0ZSAq cmVhZF9mdWxsX2RpZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKK0BA IC0xMDMwLDYgKzEwNjQsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9p bmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi0gc3RhdGljIHZvaWQgcHJvY2Vzc19kaWUg KHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworIHN0YXRpYyBjaGFyICpk d2FyZjJfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAq KTsKICAKLS1zdGF0aWMgY2hhciAqZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZv ICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0rc3RhdGljIGNoYXIgKmR3YXJmMl9waHlzbmFtZSAo c3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0rCiArc3RhdGljIGNoYXIg KmZvcnRyYW5fbW9kdWxlX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiArCQkJ CQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLSAKKysKICBzdGF0aWMgY2hhciAqZHdhcmYyX2Nh bm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVjdCBkd2FyZjJfY3UgKiwKICAJCQkJICAgICAg IHN0cnVjdCBvYnN0YWNrICopOwotQEAgLTEwNzYsNyArMTEyNiw3IEBAIHN0YXRpYyBpbnQgaXNf cmVmX2F0dHIgKHN0cnVjdCBhdHRyaWJ1dGUgKik7Ci0gCi0gc3RhdGljIHVuc2lnbmVkIGludCBk d2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0IChzdHJ1Y3QgYXR0cmlidXRlICopOwotIAotLXN0YXRp YyBpbnQgZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChzdHJ1Y3QgYXR0cmlidXRlICos IGludCk7Ci0rc3RhdGljIENPUkVfQUREUiBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUg KHN0cnVjdCBhdHRyaWJ1dGUgKiwgQ09SRV9BRERSKTsKICAKLSBzdGF0aWMgc3RydWN0IGRpZV9p bmZvICpmb2xsb3dfZGllX3JlZl9vcl9zaWcgKHN0cnVjdCBkaWVfaW5mbyAqLAotIAkJCQkJICAg ICAgIHN0cnVjdCBhdHRyaWJ1dGUgKiwKLUBAIC0xMTQ4LDYgKzExOTgsOSBAQCBzdGF0aWMgdm9p ZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOworQEAgLTExNDQsNiArMTE4MSw5IEBAIHN0 YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQg ZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAodm9pZCAqKTsKICAKQEAgLTUxNzIsNyArMjgyOCw3 IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgc3RhdGljIHN0cnVjdCB0eXBlICpz ZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkgIHN0 cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTE2NywyMiArMTIyMCwzMSBAQCBzdGF0aWMgdm9p ZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CitAQCAt MTE2MywyMiArMTIwMywzMSBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGll X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCkBA IC01MjEzLDcgKzI4NjksNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIH0KICAK ICAvKiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMsIHdlIGNhbiBlaXRoZXIgbG9vayBmb3IgIi48bmFt ZT4iLCBvciBmb3IKLUBAIC0xMjc1LDEwICsxMzM3LDEzIEBAIGR3YXJmMl9sb2NhdGVfc2VjdGlv bnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmVfcHRyKQorQEAgLTEy NzEsMTAgKzEzMjAsMTMgQEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2Vj dGlvbiAqc2VjdHAsIHZvaWQgKmlnbm9yZV9wdHIpCiAgfQogIAogIC8qIERlY29tcHJlc3MgYSBz ZWN0aW9uIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgemxpYi4gIFN0b3JlIHRoZQpAQCAtNTIy OSw3ICsyODg1LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiX2J5dGUgKipvdXRidWYsIGJmZF9zaXplX3R5cGUgKm91dHNpemUp CiAgewogICAgYmZkICphYmZkID0gb2JqZmlsZS0+b2JmZDsKLUBAIC0xMjk1LDYgKzEzNjAsNyBA QCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0 aW9uICpzZWN0cCwKK0BAIC0xMjkxLDYgKzEzNDMsNyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKICAgIHpfc3RyZWFt IHN0cm07CiAgICBpbnQgcmM7CiAgICBpbnQgaGVhZGVyX3NpemUgPSAxMjsKQEAgLTUyMzcsNyAr Mjg5Myw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCiAgICBpZiAoYmZkX3Nl ZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgIT0gMAogICAgICAgIHx8IGJmZF9i cmVhZCAoY29tcHJlc3NlZF9idWZmZXIsIGNvbXByZXNzZWRfc2l6ZSwgYWJmZCkgIT0gY29tcHJl c3NlZF9zaXplKQotQEAgLTEzMjQsOCArMTM5MCwxMyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKK0BAIC0xMzIwLDgg KzEzNzMsMTMgQEAgemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBhc2VjdGlvbiAqc2VjdHAsCiAgICBzdHJtLmF2YWlsX2luID0gY29tcHJlc3NlZF9zaXpl IC0gaGVhZGVyX3NpemU7CiAgICBzdHJtLm5leHRfaW4gPSAoQnl0ZWYqKSBjb21wcmVzc2VkX2J1 ZmZlciArIGhlYWRlcl9zaXplOwogICAgc3RybS5hdmFpbF9vdXQgPSB1bmNvbXByZXNzZWRfc2l6 ZTsKQEAgLTUyNTMsNyArMjkwOSw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAg ICByYyA9IGluZmxhdGVJbml0ICgmc3RybSk7CiAgICB3aGlsZSAoc3RybS5hdmFpbF9pbiA+IDAp CiAgICAgIHsKLUBAIC0xMzQ2LDI2ICsxNDE3LDE3NiBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKK0BAIC0xMzQyLDI2 ICsxNDAwLDE3NiBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGFzZWN0aW9uICpzZWN0cCwKICAgICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBjb25j bHVkaW5nIERXQVJGIHVuY29tcHJlc3Npb24gaW4gJyVzJzogJWQiKSwKICAgICAgICAgICAgIGJm ZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCByYyk7CiAgCkBAIC01NDM1LDcgKzMwOTEsNyBAQCBpbmRl eCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIAogICAgaWYgKGluZm8tPmFzZWN0aW9uID09IE5V TEwgfHwgaW5mby0+c2l6ZSA9PSAwKQogICAgICByZXR1cm47Ci1AQCAtMTM3OCw3ICsxNTk5LDcg QEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorQEAgLTEzNzQsNyArMTU4Miw3IEBAIGR3YXJmMl9y ZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyAqaW5mbykKICAgICAgICAvKiBVcG9uIGRlY29tcHJlc3Npb24sIHVwZGF0ZSB0aGUg YnVmZmVyIGFuZCBpdHMgc2l6ZS4gICovCiAgICAgICAgaWYgKHN0cm5jbXAgKGhlYWRlciwgIlpM SUIiLCBzaXplb2YgKGhlYWRlcikpID09IDApCiAgICAgICAgICB7CkBAIC01NDQ0LDcgKzMxMDAs NyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIAkJCQkgICAmaW5mby0+c2l6ZSk7 CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KLUBAIC0xNDAxLDcgKzE2MjIsNyBAQCBk d2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJm Ml9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTM5Nyw3ICsxNjA1LDcgQEAgZHdhcmYyX3JlYWRf c2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvICppbmZvKQogIAogICAgICAgIGlmIChyZXRidWYgIT0gTUFQX0ZBSUxFRCkKICAJewpAQCAt NTQ1Myw3ICszMTA5LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAJICBpbmZv LT5idWZmZXIgPSByZXRidWYgKyAoc2VjdHAtPmZpbGVwb3MgJiAocGFnZXNpemUgLSAxKSkgOwog IAkgIHJldHVybjsKICAJfQotQEAgLTE0MDksOCArMTYzMCwxNSBAQCBkd2FyZjJfcmVhZF9zZWN0 aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8g KmluZm8pCitAQCAtMTQwNSw4ICsxNjEzLDE1IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKICAj ZW5kaWYKICAKICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3JtYWwsIG5vdC1jb21w cmVzc2VkIHNlY3Rpb24uICAqLwpAQCAtNTQ3MSw3ICszMTI3LDcgQEAgaW5kZXggNGNjZTM2Yi4u ZmIwYTY5MyAxMDA2NDQKICAKICAgIC8qIFdoZW4gZGVidWdnaW5nIC5vIGZpbGVzLCB3ZSBtYXkg bmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2VlCiAgICAgICBodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KLUBAIC0xNDE5LDYgKzE2 NDcsOCBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTQxNSw2ICsxNjMwLDggQEAgZHdh cmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9pbmZvICppbmZvKQogICAgcmV0YnVmID0gc3ltZmlsZV9yZWxvY2F0ZV9kZWJ1Z19z ZWN0aW9uIChhYmZkLCBzZWN0cCwgYnVmKTsKICAgIGlmIChyZXRidWYgIT0gTlVMTCkKICAgICAg ewpAQCAtNTQ4MCw3ICszMTM2LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAg ICAgICBpbmZvLT5idWZmZXIgPSByZXRidWY7CiAgICAgICAgcmV0dXJuOwogICAgICB9Ci1AQCAt MTQyNyw2ICsxNjU3LDE5IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0xNDIzLDYgKzE2 NDAsMTkgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0 cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQogICAgICAgIHx8IGJmZF9icmVhZCAoYnVm LCBpbmZvLT5zaXplLCBhYmZkKSAhPSBpbmZvLT5zaXplKQogICAgICBlcnJvciAoXygiRHdhcmYg RXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0YSBmcm9tICclcyciKSwKICAJICAgYmZkX2dldF9m aWxlbmFtZSAoYWJmZCkpOwpAQCAtNTUwMCwxMDIgKzMxNTYsMTMgQEAgaW5kZXggNGNjZTM2Yi4u ZmIwYTY5MyAxMDA2NDQKICB9CiAgCiAgLyogRmlsbCBpbiBTRUNUUCwgQlVGUCBhbmQgU0laRVAg d2l0aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCi1AQCAtMTgxMCw2ICsyMDUzLDM3 IEBAIGxvb2t1cF9zaWduYXR1cmVkX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBVTE9O R0VTVCBzaWcpCi0gICByZXR1cm4gZW50cnk7Ci0gfQotIAotKy8qIEZpbmQgdGhlIGJhc2UgYWRk cmVzcyBvZiB0aGUgY29tcGlsYXRpb24gdW5pdCBmb3IgcmFuZ2UgbGlzdHMgYW5kCi0rICAgbG9j YXRpb24gbGlzdHMuICBJdCB3aWxsIG5vcm1hbGx5IGJlIHNwZWNpZmllZCBieSBEV19BVF9sb3df cGMuCi0rICAgSW4gRFdBUkYtMyBkcmFmdCA0LCB0aGUgYmFzZSBhZGRyZXNzIGNvdWxkIGJlIG92 ZXJyaWRkZW4gYnkKLSsgICBEV19BVF9lbnRyeV9wYy4gIEl0J3MgYmVlbiByZW1vdmVkLCBidXQg R0NDIHN0aWxsIHVzZXMgdGhpcyBmb3IKLSsgICBjb21waWxhdGlvbiB1bml0cyB3aXRoIGRpc2Nv bnRpbnVvdXMgcmFuZ2VzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2R3YXJmMl9maW5kX2Jhc2Vf YWRkcmVzcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sK LSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rCi0rICBjdS0+YmFzZV9rbm93biA9IDA7Ci0r ICBjdS0+YmFzZV9hZGRyZXNzID0gMDsKLSsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9lbnRyeV9wYywgY3UpOwotKyAgaWYgKGF0dHIpCi0rICAgIHsKLSsgICAgICBjdS0+YmFz ZV9hZGRyZXNzID0gRFdfQUREUiAoYXR0cik7Ci0rICAgICAgY3UtPmJhc2Vfa25vd24gPSAxOwot KyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfbG93X3BjLCBjdSk7Ci0rICAgICAgaWYgKGF0dHIpCi0rCXsKLSsJICBjdS0+YmFzZV9h ZGRyZXNzID0gRFdfQUREUiAoYXR0cik7Ci0rCSAgY3UtPmJhc2Vfa25vd24gPSAxOwotKwl9Ci0r ICAgIH0KLSt9Ci0rCi0gLyogU3Vicm91dGluZSBvZiBwcm9jZXNzX3R5cGVfY29tcF91bml0IGFu ZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnNfaGFyZAotICAgIHRvIGNvbWJpbmUgdGhlIGNvbW1vbiBw YXJ0cy4KLSAgICBQcm9jZXNzIGEgY29tcGlsYXRpb24gdW5pdCBmb3IgYSBwc3ltdGFiLgotQEAg LTIzNTksNyArMjYzMyw3IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0IHBhcnRp YWxfZGllX2luZm8gKnBkaSwKLSAJIGlnbm9yaW5nIHRoZW0uICAqLwotICAgICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSAJCSBfKCJ1bmhhbmRsZWQgY29udGFpbmluZyBESUUg dGFnICVkIGZvciBESUUgYXQgJWQiKSwKLS0JCSBwYXJlbnQtPnRhZywgcGRpLT5vZmZzZXQpOwot KwkJIHBhcmVudC0+dGFnLCByZWFsX3BkaS0+b2Zmc2V0KTsKLSAgICAgICBwYXJlbnQtPnNjb3Bl ID0gZ3JhbmRwYXJlbnRfc2NvcGU7Ci0gICAgIH0KLSAKLUBAIC0yMzc0LDEyICsyNjQ4LDIyIEBA IHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKLSAJ CSAgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0gICBjaGFyICpwYXJlbnRfc2NvcGU7 Ci0rICBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcmVhbF9wZGk7Ci0gCi0tICBwYXJlbnRfc2Nv cGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHBkaSwgY3UpOwotLSAgaWYgKHBhcmVudF9z Y29wZSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0gIGVsc2UKLSsgIC8qIFdlIG5lZWQg dG8gbG9vayBhdCBvdXIgcGFyZW50IERJRTsgaWYgd2UgaGF2ZSBhIERXX0FUX3NwZWNpZmljYXRp b24sCi0rICAgICB0aGVuIHRoaXMgbWVhbnMgdGhlIHBhcmVudCBvZiB0aGUgc3BlY2lmaWNhdGlv biBESUUuCi0rICAgICBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgZG9lcyB0aGlzIGxvb3AgYWxz bywgYnV0IHdlIGRvIGl0IGhlcmUKLSsgICAgIHNpbmNlIHdlIG5lZWQgdG8gZXhhbWluZSByZWFs X3BkaS0+cGFyZW50IG91cnNlbHZlcy4gICovCi0rCi0rICByZWFsX3BkaSA9IHBkaTsKLSsgIHdo aWxlIChyZWFsX3BkaS0+aGFzX3NwZWNpZmljYXRpb24pCi0rICAgIHJlYWxfcGRpID0gZmluZF9w YXJ0aWFsX2RpZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LCBjdSk7Ci0rCi0rICBwYXJlbnRfc2Nv cGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHJlYWxfcGRpLCBjdSk7Ci0rICBpZiAocGFy ZW50X3Njb3BlICE9IE5VTEwpCi0gICAgIHJldHVybiB0eXBlbmFtZV9jb25jYXQgKE5VTEwsIHBh cmVudF9zY29wZSwgcGRpLT5uYW1lLCBjdSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSB9Ci0gCi0g c3RhdGljIHZvaWQKLUBAIC0yMzk1LDEyICsyNjc5LDkgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChz dHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAKLSAg IGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZf VEVYVCAob2JqZmlsZSkpOwotIAotLSAgaWYgKHBkaV9uZWVkc19uYW1lc3BhY2UgKHBkaS0+dGFn KSkKLS0gICAgewotLSAgICAgIGFjdHVhbF9uYW1lID0gcGFydGlhbF9kaWVfZnVsbF9uYW1lIChw ZGksIGN1KTsKLS0gICAgICBpZiAoYWN0dWFsX25hbWUpCi0tCWJ1aWx0X2FjdHVhbF9uYW1lID0g MTsKLS0gICAgfQotKyAgYWN0dWFsX25hbWUgPSBwYXJ0aWFsX2RpZV9mdWxsX25hbWUgKHBkaSwg Y3UpOwotKyAgaWYgKGFjdHVhbF9uYW1lKQotKyAgICBidWlsdF9hY3R1YWxfbmFtZSA9IDE7Ci0g Ci0gICBpZiAoYWN0dWFsX25hbWUgPT0gTlVMTCkKLSAgICAgYWN0dWFsX25hbWUgPSBwZGktPm5h bWU7Ci1AQCAtMjQ5MSw2ICsyNzcyLDEyIEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBh cnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMjU0OCw2ICsy Nzc4LDEzIEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBk aSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCQkJICAgJm9iamZpbGUtPmdsb2JhbF9wc3ltYm9s cywKICAJCQkgICAwLCAoQ09SRV9BRERSKSAwLCBjdS0+bGFuZ3VhZ2UsIG9iamZpbGUpOwogICAg ICAgIGJyZWFrOwogKyAgICBjYXNlIERXX1RBR19tb2R1bGU6CiArICAgICAgYWRkX3BzeW1ib2xf dG9fbGlzdCAoYWN0dWFsX25hbWUsIHN0cmxlbiAoYWN0dWFsX25hbWUpLAorKwkJCSAgIGJ1aWx0 X2FjdHVhbF9uYW1lLAogKwkJCSAgIE1PRFVMRV9ET01BSU4sIExPQ19TVEFUSUMsCiArCQkJICAg Jm9iamZpbGUtPmdsb2JhbF9wc3ltYm9scywKICsJCQkgICAwLCAoQ09SRV9BRERSKSAwLCBjdS0+ bGFuZ3VhZ2UsIG9iamZpbGUpOwpAQCAtNTYwMyw3MCArMzE3MCw3IEBAIGluZGV4IDRjY2UzNmIu LmZiMGE2OTMgMTAwNjQ0CiAgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CiAgICAgIGNhc2Ug RFdfVEFHX2ludGVyZmFjZV90eXBlOgogICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToK LUBAIC0yNTMyLDM0ICsyODE5LDE3IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRp YWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgYnJlYWs7Ci0g ICAgIH0KLSAKLS0gIC8qIENoZWNrIHRvIHNlZSBpZiB3ZSBzaG91bGQgc2NhbiB0aGUgbmFtZSBm b3IgcG9zc2libGUgbmFtZXNwYWNlCi0tICAgICBpbmZvLiAgT25seSBkbyB0aGlzIGlmIHRoaXMg aXMgQysrLCBpZiB3ZSBkb24ndCBoYXZlIG5hbWVzcGFjZQotLSAgICAgZGVidWdnaW5nIGluZm8g aW4gdGhlIGZpbGUsIGlmIHRoZSBwc3ltIGlzIG9mIGFuIGFwcHJvcHJpYXRlIHR5cGUKLS0gICAg IChvdGhlcndpc2Ugd2UnbGwgaGF2ZSBwc3ltID09IE5VTEwpLCBhbmQgaWYgd2UgYWN0dWFsbHkg aGFkIGEKLS0gICAgIG1hbmdsZWQgbmFtZSB0byBiZWdpbiB3aXRoLiAgKi8KLS0KLS0gIC8qIEZJ WE1FIGRyb3cvMjAwNC0wMi0yMjogV2h5IGRvbid0IHdlIGRvIHRoaXMgZm9yIGNsYXNzZXMsIGku ZS4gdGhlCi0tICAgICBjYXNlcyB3aGljaCBkbyBub3Qgc2V0IFBTWU0gYWJvdmU/ICAqLwotLQot LSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwotLSAgICAgICYmIGN1LT5oYXNf bmFtZXNwYWNlX2luZm8gPT0gMAotLSAgICAgICYmIHBzeW0gIT0gTlVMTAotLSAgICAgICYmIFNZ TUJPTF9DUExVU19ERU1BTkdMRURfTkFNRSAocHN5bSkgIT0gTlVMTCkKLS0gICAgY3BfY2hlY2tf cG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbHMgKFNZTUJPTF9DUExVU19ERU1BTkdMRURfTkFNRSAo cHN5bSksCi0tCQkJCQkgb2JqZmlsZSk7Ci0tCi0gICBpZiAoYnVpbHRfYWN0dWFsX25hbWUpCi0g ICAgIHhmcmVlIChhY3R1YWxfbmFtZSk7Ci0gfQotIAotLS8qIERldGVybWluZSB3aGV0aGVyIGEg ZGllIG9mIHR5cGUgVEFHIGxpdmluZyBpbiBhIEMrKyBjbGFzcyBvcgotLSAgIG5hbWVzcGFjZSBu ZWVkcyB0byBoYXZlIHRoZSBuYW1lIG9mIHRoZSBzY29wZSBwcmVwZW5kZWQgdG8gdGhlCi0tICAg bmFtZSBsaXN0ZWQgaW4gdGhlIGRpZS4gICovCi0rLyogRGV0ZXJtaW5lIHdoZXRoZXIgRElFIG5l ZWRzIHRvIGhhdmUgdGhlIG5hbWUgb2YgdGhlIHNjb3BlIHByZXBlbmRlZAotKyAgIHRvIHRoZSBu YW1lIGxpc3RlZCBpbiB0aGUgZGllLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tcGRpX25lZWRzX25h bWVzcGFjZSAoZW51bSBkd2FyZl90YWcgdGFnKQotK2RpZV9uZWVkc19uYW1lc3BhY2UgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBzd2l0Y2ggKHRh ZykKLSsgIHN3aXRjaCAoZGllLT50YWcpCi0gICAgIHsKLSAgICAgY2FzZSBEV19UQUdfbmFtZXNw YWNlOgotICAgICBjYXNlIERXX1RBR190eXBlZGVmOgotQEAgLTI1NjksNyArMjgzOSwyMyBAQCBw ZGlfbmVlZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3RhZyB0YWcpCi0gICAgIGNhc2UgRFdfVEFH X3VuaW9uX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0gICAgIGNh c2UgRFdfVEFHX2VudW1lcmF0b3I6Ci0rICAgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06Ci0rICAg IGNhc2UgRFdfVEFHX21lbWJlcjoKLSAgICAgICByZXR1cm4gMTsKLSsKLSsgICAgY2FzZSBEV19U QUdfdmFyaWFibGU6Ci0rICAgICAgewotKwlzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotKwlhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOwotKwlpZiAoYXR0 cikKLSsJICByZXR1cm4gMTsKLSsJYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4dGVy bmFsLCBjdSk7Ci0rCWlmIChhdHRyID09IE5VTEwgJiYgZGllLT5wYXJlbnQtPnRhZyAhPSBEV19U QUdfbmFtZXNwYWNlKQotKwkgIHJldHVybiAwOwotKwlyZXR1cm4gMTsKLSsgICAgICB9Ci0rICAg ICAgYnJlYWs7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLUBA IC0yNjAyLDEyICsyODg4LDEyIEBAIHN0YXRpYyB2b2lkCitAQCAtMjY2MSwxMiArMjg5OCwxMiBA QCBzdGF0aWMgdm9pZAogIGFkZF9wYXJ0aWFsX21vZHVsZSAoc3RydWN0IHBhcnRpYWxfZGllX2lu Zm8gKnBkaSwgQ09SRV9BRERSICpsb3dwYywKICAJCSAgICBDT1JFX0FERFIgKmhpZ2hwYywgaW50 IG5lZWRfcGMsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsKQEAgLTU2ODMsMzUgKzMxODcsNyBA QCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIH0KICAKICAvKiBSZWFkIGEgcGFydGlh bCBkaWUgY29ycmVzcG9uZGluZyB0byBhIHN1YnByb2dyYW0gYW5kIGNyZWF0ZSBhIHBhcnRpYWwK LUBAIC0yNjk4LDI3ICsyOTg0LDYgQEAgZ3Vlc3Nfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0 aWFsX2RpZV9pbmZvICpzdHJ1Y3RfcGRpLAotIAotICAgICAgIGlmIChyZWFsX3BkaS0+ZGllX3Bh cmVudCAhPSBOVUxMKQotIAlyZXR1cm47Ci0tCi0tICAgICAgd2hpbGUgKGNoaWxkX3BkaSAhPSBO VUxMKQotLQl7Ci0tCSAgaWYgKGNoaWxkX3BkaS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQot LQkgICAgewotLQkgICAgICBjaGFyICphY3R1YWxfY2xhc3NfbmFtZQotLQkJPSBsYW5ndWFnZV9j bGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGN1LT5sYW5ndWFnZV9kZWZuLAotLQkJCQkJCSAgICAg Y2hpbGRfcGRpLT5uYW1lKTsKLS0JICAgICAgaWYgKGFjdHVhbF9jbGFzc19uYW1lICE9IE5VTEwp Ci0tCQl7Ci0tCQkgIHN0cnVjdF9wZGktPm5hbWUKLS0JCSAgICA9IG9ic2F2ZXN0cmluZyAoYWN0 dWFsX2NsYXNzX25hbWUsCi0tCQkJCSAgICBzdHJsZW4gKGFjdHVhbF9jbGFzc19uYW1lKSwKLS0J CQkJICAgICZjdS0+Y29tcF91bml0X29ic3RhY2spOwotLQkJICB4ZnJlZSAoYWN0dWFsX2NsYXNz X25hbWUpOwotLQkJfQotLQkgICAgICBicmVhazsKLS0JICAgIH0KLS0KLS0JICBjaGlsZF9wZGkg PSBjaGlsZF9wZGktPmRpZV9zaWJsaW5nOwotLQl9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMzI5NSw2 ICszNTYwLDE0IEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCitAQCAtMzMzMCw2ICszNTY3LDE0IEBAIHByb2Nlc3NfZGllIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIGNhc2UgRFdfVEFHX2lt cG9ydGVkX2RlY2xhcmF0aW9uOgogICAgICBjYXNlIERXX1RBR19pbXBvcnRlZF9tb2R1bGU6CiAg ICAgICAgcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSAxOwpAQCAtNTcyNiwyNDYgKzMy MDIsMjEgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAgICAgICBpZiAoZGllLT5j aGlsZCAhPSBOVUxMICYmIChkaWUtPnRhZyA9PSBEV19UQUdfaW1wb3J0ZWRfZGVjbGFyYXRpb24K ICAJCQkJIHx8IGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9mb3J0cmFuKSkKICAJY29tcGxhaW50 ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJUYWcgJyVzJyBoYXMgdW5leHBlY3RlZCBjaGlsZHJl biIpLAotQEAgLTMzMTAsNDEgKzM1ODMsNzEgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAvKiBSZXR1cm4gdGhlIGZ1bGx5IHF1YWxp ZmllZCBuYW1lIG9mIERJRSwgYmFzZWQgb24gaXRzIERXX0FUX25hbWUuCi0gICAgSWYgc2NvcGUg cXVhbGlmaWVycyBhcmUgYXBwcm9wcmlhdGUgdGhleSB3aWxsIGJlIGFkZGVkLiAgVGhlIHJlc3Vs dAotICAgIHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlX29ic3RhY2ssIG9yIE5VTEwg aWYgdGhlIERJRSBkb2VzCi0tICAgbm90IGhhdmUgYSBuYW1lLiAgKi8KLSsgICBub3QgaGF2ZSBh IG5hbWUuCi0rCi0rICAgVGhlIG91dHB1dCBzdHJpbmcgd2lsbCBiZSBjYW5vbmljYWxpemVkIChp ZiBDKysvSmF2YSkuICovCi0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotIGR3YXJmMl9mdWxsX25h bWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAgY2hhciAqcHJlZml4LCAqbmFtZTsKLS0gIHN0cnVj dCB1aV9maWxlICpidWYgPSBOVUxMOwotKyAgY2hhciAqbmFtZTsKLSAKLSAgIG5hbWUgPSBkd2Fy ZjJfbmFtZSAoZGllLCBjdSk7Ci0tICBpZiAoIW5hbWUpCi0tICAgIHJldHVybiBOVUxMOwotIAot ICAgLyogVGhlc2UgYXJlIHRoZSBvbmx5IGxhbmd1YWdlcyB3ZSBrbm93IGhvdyB0byBxdWFsaWZ5 IG5hbWVzIGluLiAgKi8KLS0gIGlmIChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfY3BsdXMKLS0g ICAgICAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfamF2YSkKLS0gICAgcmV0dXJuIG5hbWU7 Ci0rICBpZiAobmFtZSAhPSBOVUxMCi0rICAgICAgJiYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFn ZV9jcGx1cyB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkpCi0rICAgIHsKLSsgICAg ICBpZiAoZGllX25lZWRzX25hbWVzcGFjZSAoZGllLCBjdSkpCi0rCXsKLSsJICBsb25nIGxlbmd0 aDsKLSsJICBjaGFyICpwcmVmaXg7Ci0rCSAgc3RydWN0IHVpX2ZpbGUgKmJ1ZjsKLSAKLS0gIC8q IElmIG5vIHByZWZpeCBpcyBuZWNlc3NhcnkgZm9yIHRoaXMgdHlwZSBvZiBESUUsIHJldHVybiB0 aGUKLS0gICAgIHVucXVhbGlmaWVkIG5hbWUuICBUaGUgb3RoZXIgdGhyZWUgdGFncyBsaXN0ZWQg Y291bGQgYmUgaGFuZGxlZAotLSAgICAgaW4gcGRpX25lZWRzX25hbWVzcGFjZSwgYnV0IHRoYXQg cmVxdWlyZXMgYnJvYWRlciBjaGFuZ2VzLiAgKi8KLS0gIGlmICghcGRpX25lZWRzX25hbWVzcGFj ZSAoZGllLT50YWcpCi0tICAgICAgJiYgZGllLT50YWcgIT0gRFdfVEFHX3N1YnByb2dyYW0KLS0g ICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdfdmFyaWFibGUKLS0gICAgICAmJiBkaWUtPnRhZyAh PSBEV19UQUdfbWVtYmVyKQotLSAgICByZXR1cm4gbmFtZTsKLSsJICBidWYgPSBtZW1fZmlsZW9w ZW4gKCk7Ci0rCSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0rCSAgaWYg KCpwcmVmaXggIT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgY2hhciAqcHJlZml4ZWRfbmFtZSA9 IHR5cGVuYW1lX2NvbmNhdCAoTlVMTCwgcHJlZml4LCBuYW1lLCBjdSk7Ci0rCSAgICAgIGZwdXRz X3VuZmlsdGVyZWQgKHByZWZpeGVkX25hbWUsIGJ1Zik7Ci0rCSAgICAgIHhmcmVlIChwcmVmaXhl ZF9uYW1lKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBmcHV0c191bmZpbHRlcmVkIChuYW1l LCBidWYpOwotIAotLSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0tICBp ZiAoKnByZWZpeCAhPSAnXDAnKQotLSAgICBuYW1lID0gdHlwZW5hbWVfY29uY2F0ICgmY3UtPm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywgcHJlZml4LAotLQkJCSAgICBuYW1lLCBjdSk7Ci0rCSAg bmFtZSA9IHVpX2ZpbGVfb2JzYXZlc3RyaW5nIChidWYsICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLAotKwkJCQkgICAgICAgJmxlbmd0aCk7Ci0rCSAgdWlfZmlsZV9kZWxldGUgKGJ1Zik7 Ci0rCi0rCSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSsJICAgIHsKLSsJ ICAgICAgY2hhciAqY25hbWUKLSsJCT0gZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChuYW1lLCBj dSwKLSsJCQkJCSAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rCSAgICAgIGlm IChjbmFtZSAhPSBOVUxMKQotKwkJbmFtZSA9IGNuYW1lOwotKwkgICAgfQotKwl9Ci0rICAgIH0K LSAKLSAgIHJldHVybiBuYW1lOwotIH0KLSAKLSsvKiBSZWFkIHRoZSBnaXZlbiBESUUncyBEV19B VF9kZWNsX2xpbmUgbnVtYmVyLiAgUmV0dXJuIC0xIGlmIGluIGNhc2Ugb2YgYW4KLSsgICBlcnJv ci4gICovCi0rCi0rc3RhdGljIGludAotK2R3YXJmMl9yZWFkX2RlY2xfbGluZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1 dGUgKmxpbmVfYXR0cjsKLSsKLSsgIGxpbmVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X2RlY2xfbGluZSwgY3UpOwotKyAgaWYgKGxpbmVfYXR0cikKLSsgICAgcmV0dXJuIERXX1VOU05E IChsaW5lX2F0dHIpOwotKwotKyAgcmV0dXJuIC0xOwotK30KLSsKLSAvKiBSZWFkIHRoZSBpbXBv cnQgc3RhdGVtZW50IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gZGllIGFuZCByZWNvcmQgaXQuICAq LwotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzM1NCw5ICszNjU3LDE1IEBAIHJlYWRfaW1wb3J0X3N0 YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAg c3RydWN0IGRpZV9pbmZvICppbXBvcnRlZF9kaWU7Ci0gICBjb25zdCBjaGFyICppbXBvcnRlZF9u YW1lOwotICAgY29uc3QgY2hhciAqaW1wb3J0ZWRfbmFtZV9wcmVmaXg7Ci0tICBjb25zdCBjaGFy ICppbXBvcnRfcHJlZml4OwotICAgY2hhciAqY2Fub25pY2FsX25hbWU7Ci0tCi0rICBjb25zdCBj aGFyICppbXBvcnRfYWxpYXM7Ci0rICBjb25zdCBjaGFyICppbXBvcnRlZF9kZWNsYXJhdGlvbiA9 ICIiOwotKyAgY29uc3QgY2hhciAqaW1wb3J0X3ByZWZpeDsKLSsgIAotKyAgaW50IGxpbmVfbnVt YmVyID0gLTE7Ci0rICAKLSsgIGludCBpc19hbm9ueW1vdXMgPSAwOwotKyAgCi0gICBpbXBvcnRf YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2ltcG9ydCwgY3UpOwotICAgaWYgKGltcG9y dF9hdHRyID09IE5VTEwpCi0gICAgIHsKLUBAIC0zNDA0LDE3ICszNzEzLDI3IEBAIHJlYWRfaW1w b3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgLyogRklYTUU6IGR3YXJmMl9uYW1lIChk aWUpOyBmb3IgdGhlIGxvY2FsIG5hbWUgYWZ0ZXIgaW1wb3J0LiAgKi8KLS0KLS0gIC8qIEZpZ3Vy ZSBvdXQgd2hlcmUgdGhlIHN0YXRlbWVudCBpcyBiZWluZyBpbXBvcnRlZCB0by4gICovCi0rICAv KiBGaWd1cmUgb3V0IHRoZSBsb2NhbCBuYW1lIGFmdGVyIGltcG9ydC4gICovCi0rICBpbXBvcnRf YWxpYXMgPSBkd2FyZjJfbmFtZShkaWUsIGN1KTsKLSsgIGlmKGltcG9ydF9hbGlhcyA9PSBOVUxM KXsKLSsgICAgaW1wb3J0X2FsaWFzID0gIiI7Ci0rICB9Ci0rICAKLSsgIC8qIERldGVybWluZSB0 aGUgbGluZSBudW1iZXIgYXQgd2hpY2ggdGhlIGltcG9ydCB3YXMgbWFkZSAqLwotKyAgbGluZV9u dW1iZXIgPSBkd2FyZjJfcmVhZF9kZWNsX2xpbmUoZGllLCBjdSk7Ci0rICAKLSsgIC8qIEZpZ3Vy ZSBvdXQgd2hlcmUgdGhlIHN0YXRlbWVudCBpcyBiZWluZyBpbXBvcnRlZCB0byAqLwotICAgaW1w b3J0X3ByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwotIAotICAgLyogRmlndXJl IG91dCB3aGF0IHRoZSBzY29wZSBvZiB0aGUgaW1wb3J0ZWQgZGllIGlzIGFuZCBwcmVwZW5kIGl0 Ci0gICAgICB0byB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgZGllLiAgKi8KLSAgIGltcG9ydGVk X25hbWVfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoaW1wb3J0ZWRfZGllLCBjdSk7Ci0tCi0t ICBpZiAoc3RybGVuIChpbXBvcnRlZF9uYW1lX3ByZWZpeCkgPiAwKQotLSAgICB7Ci0rICAKLSsg IGlmKGltcG9ydGVkX2RpZS0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UpewotKyAgICBpbXBvcnRl ZF9kZWNsYXJhdGlvbiA9IGltcG9ydGVkX25hbWU7Ci0rICAgIGNhbm9uaWNhbF9uYW1lID0gKGNo YXIqKWltcG9ydGVkX25hbWVfcHJlZml4OwotKyAgfWVsc2V7Ci0rICAgIGlmKHN0cmxlbiAoaW1w b3J0ZWRfbmFtZV9wcmVmaXgpID4gMCl7Ci0gICAgICAgY2Fub25pY2FsX25hbWUgPSBhbGxvY2Eg KHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxlbiAoaW1wb3J0ZWRfbmFt ZSkgKyAxKTsKLSAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBpbXBvcnRlZF9uYW1lX3By ZWZpeCk7Ci0gICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6Iik7Ci1AQCAtMzQyNSw4 ICszNzQ0LDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgIGNhbm9uaWNhbF9uYW1lID0gYWxsb2NhIChz dHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7Ci0gICAgICAgc3RyY3B5IChjYW5vbmljYWxfbmFt ZSwgaW1wb3J0ZWRfbmFtZSk7Ci0gICAgIH0KLS0KLS0gIHVzaW5nX2RpcmVjdGl2ZXMgPSBjcF9h ZGRfdXNpbmcgKGltcG9ydF9wcmVmaXgsY2Fub25pY2FsX25hbWUsIHVzaW5nX2RpcmVjdGl2ZXMp OwotKyAgfQotKyAgCi0rICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChpbXBvcnRf cHJlZml4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fub25pY2FsX25h bWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfYWxpYXMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZF9kZWNsYXJhdGlvbiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZGlyZWN0aXZlcyk7Ci0gfQotIAot IHN0YXRpYyB2b2lkCi1AQCAtMzY5NSw2ICs0MDIwLDE0IEBAIGluaGVyaXRfYWJzdHJhY3RfZGll cyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cjsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9h YnN0cmFjdF9vcmlnaW4sIGN1KTsKLSsgIAotKyAgLyogR0NDIDQuMyBpbmNvcnJlY3RseSB1c2Vz IERXX0FUX3NwZWNpZmljYXRpb24gdG8gaW5kaWNhdGUgZGllIGluaGVyaXRlbmNlCi0rICAgICBp biB0aGUgY2FzZSBvZiBpbXBvcnQgc3RhdGVtZW50cy4gVGhlIGZvbGxvd2luZyBpcyB0byBhY2Nv bW1vZGF0ZSAKLSsgICAgIHRoYXQuICAqLwotKyAgaWYoIWF0dHIpewotKyAgICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOwotKyAgfQotKyAgCi0gICBp ZiAoIWF0dHIpCi0gICAgIHJldHVybjsKLSAKLUBAIC0zNzkzLDYgKzQxMjYsNyBAQCByZWFkX2Z1 bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAg IGNoYXIgKm5hbWU7Ci0gICBDT1JFX0FERFIgYmFzZWFkZHI7Ci0gICBzdHJ1Y3QgYmxvY2sgKmJs b2NrOwotKyAgdW5zaWduZWQgZGllX2NoaWxkcmVuID0gMDsKLSAgIGludCBpbmxpbmVkX2Z1bmMg PSAoZGllLT50YWcgPT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSk7Ci0gCi0gICBpZiAoaW5s aW5lZF9mdW5jKQotQEAgLTM4MTEsMTMgKzQxNDUsMjMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gCi0gICBiYXNlYWRkciA9 IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZp bGUpKTsKLSAKLS0gIG5hbWUgPSBkd2FyZjJfbGlua2FnZV9uYW1lIChkaWUsIGN1KTsKLSsgIG5h bWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0gCi0gICAvKiBJZ25vcmUgZnVuY3Rpb25zIHdp dGggbWlzc2luZyBvciBlbXB0eSBuYW1lcyBhbmQgZnVuY3Rpb25zIHdpdGgKLSAgICAgIG1pc3Np bmcgb3IgaW52YWxpZCBsb3cgYW5kIGhpZ2ggcGMgYXR0cmlidXRlcy4gICovCi0tICBpZiAobmFt ZSA9PSBOVUxMIHx8ICFkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmbG93cGMsICZoaWdocGMs IGN1KSkKLSsgIGlmIChuYW1lID09IE5VTEwgfHwgIWR3YXJmMl9nZXRfcGNfYm91bmRzIChkaWUs ICZsb3dwYywgJmhpZ2hwYywgY3UsIE5VTEwpKXsKLSsgICAgLyogZXhwbG9yZSBhYnN0cmFjdCBv cmlnaW5zIGlmIHByZXNlbnQuIFRoZXkgbWlnaHQgY29udGFpbiB1c2VmdWwgaW5mb3JtYXRpb24K LSsgICAgIHN1Y2ggYXMgaW1wb3J0IHN0YXRlbWVudHMuICovCi0rICAgIGNoaWxkX2RpZSA9IGRp ZS0+Y2hpbGQ7Ci0rICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0rICAg ICAgewotKwljaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hpbGRfZGllKTsKLSsJZGllX2NoaWxk cmVuKys7Ci0rICAgICAgfQotKyAgICBpbmhlcml0X2Fic3RyYWN0X2RpZXMoZGllLCBjdSk7Ci0g ICAgIHJldHVybjsKLS0KLSsgIH0KLSsgIAotICAgbG93cGMgKz0gYmFzZWFkZHI7Ci0gICBoaWdo cGMgKz0gYmFzZWFkZHI7Ci0gCi1AQCAtMzg0NCwxNCArNDE4OCwxOSBAQCByZWFkX2Z1bmNfc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zODgx LDYgKzQxMjYsMTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBjdS0+bGlzdF9pbl9zY29wZSA9ICZsb2NhbF9zeW1i b2xzOwogIAotLSAgaWYgKGRpZS0+Y2hpbGQgIT0gTlVMTCkKICsgIHN3aXRjaCAoY3UtPmxhbmd1 YWdlKQotICAgICB7Ci0tICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLS0gICAgICB3aGls ZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQotLQl7Ci0tCSAgcHJvY2Vzc19kaWUgKGNo aWxkX2RpZSwgY3UpOwotLQkgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwot LQl9CisrICAgIHsKICsgICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFuOgogKyAgICAgIGN1LT5sYW5n dWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZSA9IE5VTEw7CiArICAgICAgYnJlYWs7CiArICAgIH0K ICsKLSsgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICB3aGlsZSAoY2hpbGRfZGllICYmIGNo aWxkX2RpZS0+dGFnKQotKyAgICB7Ci0rICAgICAgcHJvY2Vzc19kaWUgKGNoaWxkX2RpZSwgY3Up OwotKyAgICAgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwotKyAgICAgIGRp ZV9jaGlsZHJlbisrOwotICAgICB9Ci0gCi0gICBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKGRpZSwg Y3UpOwotQEAgLTM4NjcsNiArNDIxNiwxMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIGlmIChkaWUtPmNoaWxkICE9IE5V TEwpCisgICAgIHsKKyAgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOworQEAgLTM5MDQsNiAr NDE1NiwxMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKICAJCQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KSwKICAJCQlwcm9j ZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5mbyk7CiAgCkBAIC01OTc5LDIxNiArMzIzMCw3IEBAIGlu ZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgICAvKiBJZiB3ZSBoYXZlIGFkZHJlc3MgcmFu Z2VzLCByZWNvcmQgdGhlbS4gICovCiAgICBkd2FyZjJfcmVjb3JkX2Jsb2NrX3JhbmdlcyAoZGll LCBibG9jaywgYmFzZWFkZHIsIGN1KTsKICAgIAotQEAgLTM5MDMsNyArNDI1OSw3IEBAIHJlYWRf bGV4aWNhbF9ibG9ja19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotICAgICAgYXMgbXVsdGlwbGUgbGV4aWNhbCBibG9ja3M/ICBIYW5kbGluZyBjaGls ZHJlbiBpbiBhIHNhbmUgd2F5IHdvdWxkCi0gICAgICBiZSBuYXN0eS4gIE1pZ2h0IGJlIGVhc2ll ciB0byBwcm9wZXJseSBleHRlbmQgZ2VuZXJpYyBibG9ja3MgdG8gCi0gICAgICBkZXNjcmliZSBy YW5nZXMuICAqLwotLSAgaWYgKCFkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmbG93cGMsICZo aWdocGMsIGN1KSkKLSsgIGlmICghZHdhcmYyX2dldF9wY19ib3VuZHMgKGRpZSwgJmxvd3BjLCAm aGlnaHBjLCBjdSwgTlVMTCkpCi0gICAgIHJldHVybjsKLSAgIGxvd3BjICs9IGJhc2VhZGRyOwot ICAgaGlnaHBjICs9IGJhc2VhZGRyOwotQEAgLTM5MjAsNyArNDI3Niw3IEBAIHJlYWRfbGV4aWNh bF9ibG9ja19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotICAgICB9Ci0gICBuZXcgPSBwb3BfY29udGV4dCAoKTsKLSAKLS0gIGlmIChsb2NhbF9zeW1i b2xzICE9IE5VTEwpCi0rICBpZiAobG9jYWxfc3ltYm9scyAhPSBOVUxMIHx8IHVzaW5nX2RpcmVj dGl2ZXMgIT0gTlVMTCkKLSAgICAgewotICAgICAgIHN0cnVjdCBibG9jayAqYmxvY2sKLSAgICAg ICAgID0gZmluaXNoX2Jsb2NrICgwLCAmbG9jYWxfc3ltYm9scywgbmV3LT5vbGRfYmxvY2tzLCBu ZXctPnN0YXJ0X2FkZHIsCi1AQCAtNDA3NSw3ICs0NDMxLDggQEAgZHdhcmYyX3Jhbmdlc19yZWFk ICh1bnNpZ25lZCBvZmZzZXQsIENPUkVfQUREUiAqbG93X3JldHVybiwKLSAgICBkaXNjb250aW51 b3VzLCBpLmUuIGRlcml2ZWQgZnJvbSBEV19BVF9yYW5nZXMgaW5mb3JtYXRpb24uICAqLwotIHN0 YXRpYyBpbnQKLSBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIENP UkVfQUREUiAqbG93cGMsCi0tCQkgICAgICBDT1JFX0FERFIgKmhpZ2hwYywgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0rCQkgICAgICBDT1JFX0FERFIgKmhpZ2hwYywgc3RydWN0IGR3YXJmMl9jdSAq Y3UsCi0rCQkgICAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkKLSB7Ci0gICBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyOwotICAgQ09SRV9BRERSIGxvdyA9IDA7Ci1AQCAtNDEwMyw3ICs0NDYw LDcgQEAgZHdhcmYyX2dldF9wY19ib3VuZHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBDT1JFX0FE RFIgKmxvd3BjLAotIAl7Ci0gCSAgLyogVmFsdWUgb2YgdGhlIERXX0FUX3JhbmdlcyBhdHRyaWJ1 dGUgaXMgdGhlIG9mZnNldCBpbiB0aGUKLSAJICAgICAuZGVidWdfcmFuZ2VzIHNlY3Rpb24uICAq LwotLQkgIGlmICghZHdhcmYyX3Jhbmdlc19yZWFkIChEV19VTlNORCAoYXR0ciksICZsb3csICZo aWdoLCBjdSwgTlVMTCkpCi0rCSAgaWYgKCFkd2FyZjJfcmFuZ2VzX3JlYWQgKERXX1VOU05EIChh dHRyKSwgJmxvdywgJmhpZ2gsIGN1LCBwc3QpKQotIAkgICAgcmV0dXJuIDA7Ci0gCSAgLyogRm91 bmQgZGlzY29udGludW91cyByYW5nZSBvZiBhZGRyZXNzZXMuICAqLwotIAkgIHJldCA9IC0xOwot QEAgLTQxNDIsNyArNDQ5OSw3IEBAIGR3YXJmMl9nZXRfc3VicHJvZ3JhbV9wY19ib3VuZHMgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLAotICAgQ09SRV9BRERSIGxvdywgaGlnaDsKLSAgIHN0cnVjdCBk aWVfaW5mbyAqY2hpbGQgPSBkaWUtPmNoaWxkOwotIAotLSAgaWYgKGR3YXJmMl9nZXRfcGNfYm91 bmRzIChkaWUsICZsb3csICZoaWdoLCBjdSkpCi0rICBpZiAoZHdhcmYyX2dldF9wY19ib3VuZHMg KGRpZSwgJmxvdywgJmhpZ2gsIGN1LCBOVUxMKSkKLSAgICAgewotICAgICAgICpsb3dwYyA9IG1p biAoKmxvd3BjLCBsb3cpOwotICAgICAgICpoaWdocGMgPSBtYXggKCpoaWdocGMsIGhpZ2gpOwot QEAgLTQxNzksNyArNDUzNiw3IEBAIGdldF9zY29wZV9wY19ib3VuZHMgKHN0cnVjdCBkaWVfaW5m byAqZGllLAotICAgQ09SRV9BRERSIGJlc3RfaGlnaCA9IChDT1JFX0FERFIpIDA7Ci0gICBDT1JF X0FERFIgY3VycmVudF9sb3csIGN1cnJlbnRfaGlnaDsKLSAKLS0gIGlmIChkd2FyZjJfZ2V0X3Bj X2JvdW5kcyAoZGllLCAmY3VycmVudF9sb3csICZjdXJyZW50X2hpZ2gsIGN1KSkKLSsgIGlmIChk d2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmY3VycmVudF9sb3csICZjdXJyZW50X2hpZ2gsIGN1 LCBOVUxMKSkKLSAgICAgewotICAgICAgIGJlc3RfbG93ID0gY3VycmVudF9sb3c7Ci0gICAgICAg YmVzdF9oaWdoID0gY3VycmVudF9oaWdoOwotQEAgLTQ0NzQsNyArNDgzMSw3IEBAIGR3YXJmMl9h ZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAot IAlyZXR1cm47Ci0gCi0gICAgICAgLyogR2V0IHBoeXNpY2FsIG5hbWUuICAqLwotLSAgICAgIHBo eXNuYW1lID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7Ci0rICAgICAgcGh5c25hbWUg PSBkd2FyZjJfcGh5c25hbWUgKGRpZSwgY3UpOwotIAotICAgICAgIC8qIFRoZSBuYW1lIGlzIGFs cmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAotIAkg bmVlZCB0byBkdXBsaWNhdGUgaXQgZm9yIHRoZSB0eXBlLiAgKi8KLUBAIC00NjE3LDcgKzQ5NzQs NyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0 IGRpZV9pbmZvICpkaWUsCi0gICAgIHJldHVybjsKLSAKLSAgIC8qIEdldCB0aGUgbWFuZ2xlZCBu YW1lLiAgKi8KLS0gIHBoeXNuYW1lID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7Ci0r ICBwaHlzbmFtZSA9IGR3YXJmMl9waHlzbmFtZSAoZGllLCBjdSk7Ci0gCi0gICAvKiBMb29rIHVw IG1lbWJlciBmdW5jdGlvbiBuYW1lIGluIGZpZWxkbGlzdC4gICovCi0gICBmb3IgKGkgPSAwOyBp IDwgZmlwLT5uZm5maWVsZHM7IGkrKykKLUBAIC00NjYxLDcgKzUwMTgsNyBAQCBkd2FyZjJfYWRk X21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUs Ci0gICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZyB3aXRoIHRoaXMgb2Jq ZmlsZSwgc28gd2UgZG9uJ3QKLSAgICAgIG5lZWQgdG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlw ZS4gICovCi0gICBmbnAtPnBoeXNuYW1lID0gcGh5c25hbWUgPyBwaHlzbmFtZSA6ICIiOwotLSAg Zm5wLT50eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0rICBmbnAtPnR5cGUgPSBhbGxvY190 eXBlIChvYmpmaWxlLCBOVUxMKTsKLSAgIHRoaXNfdHlwZSA9IHJlYWRfdHlwZV9kaWUgKGRpZSwg Y3UpOwotICAgaWYgKHRoaXNfdHlwZSAmJiBUWVBFX0NPREUgKHRoaXNfdHlwZSkgPT0gVFlQRV9D T0RFX0ZVTkMpCi0gICAgIHsKLUBAIC00NzIxLDE4ICs1MDc4LDE4IEBAIGR3YXJmMl9hZGRfbWVt YmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLSAg ICAgewotICAgICAgIC8qIFN1cHBvcnQgdGhlIC5kZWJ1Z19sb2Mgb2Zmc2V0cyAqLwotICAgICAg IGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotLSAgICAgICAgewotLSAgICAgICAgICBm bnAtPnZvZmZzZXQgPSBkZWNvZGVfbG9jZGVzYyAoRFdfQkxPQ0sgKGF0dHIpLCBjdSkgKyAyOwot LSAgICAgICAgfQotKwl7Ci0rCSAgZm5wLT52b2Zmc2V0ID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JM T0NLIChhdHRyKSwgY3UpICsgMjsKLSsJfQotICAgICAgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19z ZWN0aW9uX29mZnNldCAoYXR0cikpCi0tICAgICAgICB7Ci0rCXsKLSAJICBkd2FyZjJfY29tcGxl eF9sb2NhdGlvbl9leHByX2NvbXBsYWludCAoKTsKLS0gICAgICAgIH0KLSsJfQotICAgICAgIGVs c2UKLS0gICAgICAgIHsKLSsJewotIAkgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21w bGFpbnQgKCJEV19BVF92dGFibGVfZWxlbV9sb2NhdGlvbiIsCi0gCQkJCQkJIGZpZWxkbmFtZSk7 Ci0tICAgICAgICB9Ci0rCX0KLSAgICB9Ci0gfQotIAotQEAgLTQ4NDUsNyArNTIwMiw3IEBAIHF1 aXJrX2djY19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICByZXR1cm4gTlVMTDsKLSAKLSAgIGRvbWFpbl90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9GSUVMRF9UWVBFIChwZm5fdHlwZSwgMCkpOwotLSAg dHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOwotKyAgdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZp bGUsIE5VTEwpOwotICAgc21hc2hfdG9fbWV0aG9kX3R5cGUgKHR5cGUsIGRvbWFpbl90eXBlLCBU WVBFX1RBUkdFVF9UWVBFIChwZm5fdHlwZSksCi0gCQkJVFlQRV9GSUVMRFMgKHBmbl90eXBlKSwg VFlQRV9ORklFTERTIChwZm5fdHlwZSksCi0gCQkJVFlQRV9WQVJBUkdTIChwZm5fdHlwZSkpOwot QEAgLTQ4OTgsNyArNTI1NSw3IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICByZXR1cm4gc2V0X2RpZV90eXBl IChkaWUsIHR5cGUsIGN1KTsKLSAgICAgfQotIAotLSAgdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZp bGUpOwotKyAgdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUsIE5VTEwpOwotICAgSU5JVF9DUExV U19TUEVDSUZJQyAodHlwZSk7Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwot QEAgLTQ5MDcsMTQgKzUyNjQsMTggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgIGlmIChjdS0+bGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfY3BsdXMKLSAJICB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkK LSAJewotLQkgIGNvbnN0IGNoYXIgKm5ld19wcmVmaXggPSBkZXRlcm1pbmVfY2xhc3NfbmFtZSAo ZGllLCBjdSk7Ci0tCSAgVFlQRV9UQUdfTkFNRSAodHlwZSkgPSAoY2hhciAqKSBuZXdfcHJlZml4 OwotKwkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxfbmFtZSAo ZGllLCBjdSk7Ci0rCSAgaWYgKGRpZS0+dGFnID09IERXX1RBR19zdHJ1Y3R1cmVfdHlwZQotKwkg ICAgICB8fCBkaWUtPnRhZyA9PSBEV19UQUdfY2xhc3NfdHlwZSkKLSsJICAgIFRZUEVfTkFNRSAo dHlwZSkgPSBUWVBFX1RBR19OQU1FICh0eXBlKTsKLSAJfQotICAgICAgIGVsc2UKLSAJewotIAkg IC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxl LCBzbwotIAkgICAgIHdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlwZS4g ICovCi0tCSAgVFlQRV9UQUdfTkFNRSAodHlwZSkgPSBuYW1lOwotKwkgIFRZUEVfVEFHX05BTUUg KHR5cGUpID0gKGNoYXIgKikgbmFtZTsKLSsJICBpZiAoZGllLT50YWcgPT0gRFdfVEFHX2NsYXNz X3R5cGUpCi0rCSAgICBUWVBFX05BTUUgKHR5cGUpID0gVFlQRV9UQUdfTkFNRSAodHlwZSk7Ci0g CX0KLSAgICAgfQotIAotQEAgLTUxMjQsNyArNTQ4NSw3IEBAIHJlYWRfZW51bWVyYXRpb25fdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgIHJl dHVybiBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwotICAgICB9Ci0gCi0tICB0eXBlID0g YWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0rICB0eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSwgTlVM TCk7Ci0gCi0gICBUWVBFX0NPREUgKHR5cGUpID0gVFlQRV9DT0RFX0VOVU07Ci0gICBuYW1lID0g ZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci1AQCAtNTE1Miw1MSArNTUxMyw2IEBAIHJlYWRf ZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQotICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7Ci0gfQotIAotLS8q IERldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgdHlwZSByZXByZXNlbnRlZCBieSBESUUsIHdoaWNo IHNob3VsZCBiZQotLSAgIGEgbmFtZWQgQysrIG9yIEphdmEgY29tcG91bmQgdHlwZS4gIFJldHVy biB0aGUgbmFtZSBpbiBxdWVzdGlvbiwKLS0gICBhbGxvY2F0ZWQgb24gdGhlIG9iamZpbGUgb2Jz dGFjay4gICovCi0tCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWRldGVybWluZV9jbGFzc19uYW1l IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0tewotLSAgY29u c3QgY2hhciAqbmV3X3ByZWZpeCA9IE5VTEw7Ci0tCi0tICAvKiBJZiB3ZSBkb24ndCBoYXZlIG5h bWVzcGFjZSBkZWJ1ZyBpbmZvLCBndWVzcyB0aGUgbmFtZSBieSB0cnlpbmcKLS0gICAgIHRvIGRl bWFuZ2xlIHRoZSBuYW1lcyBvZiBtZW1iZXJzLCBqdXN0IGxpa2Ugd2UgZGlkIGluCi0tICAgICBn dWVzc19zdHJ1Y3R1cmVfbmFtZS4gICovCi0tICBpZiAoIXByb2Nlc3NpbmdfaGFzX25hbWVzcGFj ZV9pbmZvKQotLSAgICB7Ci0tICAgICAgc3RydWN0IGRpZV9pbmZvICpjaGlsZDsKLS0KLS0gICAg ICBmb3IgKGNoaWxkID0gZGllLT5jaGlsZDsKLS0JICAgY2hpbGQgIT0gTlVMTCAmJiBjaGlsZC0+ dGFnICE9IDA7Ci0tCSAgIGNoaWxkID0gc2libGluZ19kaWUgKGNoaWxkKSkKLS0JewotLQkgIGlm IChjaGlsZC0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQotLQkgICAgewotLQkgICAgICBjaGFy ICpwaHlzX3ByZWZpeAotLQkJPSBsYW5ndWFnZV9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGN1 LT5sYW5ndWFnZV9kZWZuLAotLQkJCQkJCSAgICAgZHdhcmYyX2xpbmthZ2VfbmFtZQotLQkJCQkJ CSAgICAgKGNoaWxkLCBjdSkpOwotLQotLQkgICAgICBpZiAocGh5c19wcmVmaXggIT0gTlVMTCkK LS0JCXsKLS0JCSAgbmV3X3ByZWZpeAotLQkJICAgID0gb2JzYXZlc3RyaW5nIChwaHlzX3ByZWZp eCwgc3RybGVuIChwaHlzX3ByZWZpeCksCi0tCQkJCSAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVf b2JzdGFjayk7Ci0tCQkgIHhmcmVlIChwaHlzX3ByZWZpeCk7Ci0tCQkgIGJyZWFrOwotLQkJfQot LQkgICAgfQotLQl9Ci0tICAgIH0KLS0KLS0gIGlmIChuZXdfcHJlZml4ID09IE5VTEwpCi0tICAg IG5ld19wcmVmaXggPSBkd2FyZjJfZnVsbF9uYW1lIChkaWUsIGN1KTsKLS0KLS0gIHJldHVybiBu ZXdfcHJlZml4OwotLX0KLS0KLSAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBkaWUgd2hpY2ggYmVn aW5zIGFuIGVudW1lcmF0aW9uLCBwcm9jZXNzIGFsbAotICAgIHRoZSBkaWVzIHRoYXQgZGVmaW5l IHRoZSBtZW1iZXJzIG9mIHRoZSBlbnVtZXJhdGlvbiwgYW5kIGNyZWF0ZSB0aGUKLSAgICBzeW1i b2wgZm9yIHRoZSBlbnVtZXJhdGlvbiB0eXBlLgotQEAgLTUyNzQsNiArNTU5MCwyOSBAQCBwcm9j ZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCitAQCAtNTM4NSw2ICs1NjQ0LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19z eW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtNjIxOCw3ICszMjYwLDcgQEAg aW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlv biBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElF J3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25h bAogICAgIGFycmF5cy4gICovCi1AQCAtNTI4Nyw3ICs1NjI2LDcgQEAgcmVhZF9hcnJheV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTM5OCw3 ICs1NjgwLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlw ZSwgKmluZGV4X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKICAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC02MjI3LDcgKzMyNjksNyBAQCBpbmRleCA0Y2Nl MzZiLi5mYjBhNjkzIDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFy ICpuYW1lOwogIAotQEAgLTUzMzQsMTYgKzU2NzMsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTQ0NSwxNiArNTcy NywxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVhZF9hcnJh eV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTYyNDksMTQxICszMjkx LDI3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCiAgICAvKiBVbmRlcnN0YW5k IER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAg ICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmli dXRlIHRvIHRoZQotQEAgLTU0MTAsMTIgKzU3NDQsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgcmV0dXJuIHNldF9kaWVf dHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOworQEAgLTU2NTksMjAgKzU5MzYsMTU1IEBAIHJlYWRf bmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg ICAgIH0KICB9CiAgCi0tLyogRmlyc3QgY3V0OiBpbnN0YWxsIGVhY2ggY29tbW9uIGJsb2NrIG1l bWJlciBhcyBhIGdsb2JhbCB2YXJpYWJsZS4gICovCi0rLyogQ3JlYXRlIGFwcHJvcHJpYXRlIGxv Y2FsbHktc2NvcGVkIHZhcmlhYmxlcyBmb3IgYWxsIHRoZSBEV19UQUdfY29tbW9uX2Jsb2NrCi0r ICAgZW50cmllcy4gIENyZWF0ZSBhbHNvIFRZUEVfQ09ERV9TVFJVQ1QgbGlzdGluZyBhbGwgc3Vj aCB2YXJpYWJsZXMgdG8gYmUKLSsgICBhdmFpbGFibGUgZm9yIGBpbmZvIGNvbW1vbicuICBDT01N T05fQkxPQ0tfRE9NQUlOIGlzIHVzZWQgdG8gc2VwYXRlIHRoZQotKyAgIGNvbW1vbiBibG9ja3Mg bmFtZSBuYW1lc3BhY2UgZnJvbSByZWd1bGFyIHZhcmlhYmxlIG5hbWVzLiAgKi8KKy0vKiBSZWFk IGEgRm9ydHJhbiBtb2R1bGUuICAqLworKy8qIFJlYWQgYSBGb3J0cmFuIG1vZHVsZSBhcyBnbG9i YWwgc3ltYm9sIHdoaWNoIGNhbiBiZSBsYXRlciBsb29rZWQgdXAgYnkKKysgICBmX2xvb2t1cF9z eW1ib2xfbm9ubG9jYWwuICAqLwogIAogIHN0YXRpYyB2b2lkCi0gcmVhZF9jb21tb25fYmxvY2sg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyByZWFkX21vZHVs ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsKLS0gIHN0 cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSAg IHN0cnVjdCBzeW1ib2wgKnN5bTsKLSAgIENPUkVfQUREUiBiYXNlID0gKENPUkVfQUREUikgMDsK LUBAIC01NDI1LDI1ICs1NzYxLDU1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIHsKLSAgICAgICAvKiBTdXBwb3J0 IHRoZSAuZGVidWdfbG9jIG9mZnNldHMgKi8KLSAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2Nr IChhdHRyKSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChE V19CTE9DSyAoYXR0ciksIGN1KTsKLS0gICAgICAgIH0KLSsJewotKwkgIGJhc2UgPSBkZWNvZGVf bG9jZGVzYyAoRFdfQkxPQ0sgKGF0dHIpLCBjdSk7Ci0rCX0KLSAgICAgICBlbHNlIGlmIChhdHRy X2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpKQotLSAgICAgICAgewotKwl7Ci0gCSAgZHdh cmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKCk7Ci0tICAgICAgICB9Ci0rCX0K LSAgICAgICBlbHNlCi0tICAgICAgICB7Ci0rCXsKLSAJICBkd2FyZjJfaW52YWxpZF9hdHRyaWJf Y2xhc3NfY29tcGxhaW50ICgiRFdfQVRfbG9jYXRpb24iLAotIAkJCQkJCSAiY29tbW9uIGJsb2Nr IG1lbWJlciIpOwotLSAgICAgICAgfQotKwl9Ci0gICAgIH0KLSAgIGlmIChkaWUtPmNoaWxkICE9 IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpm aWxlOwotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllOwotKyAgICAgIHN0cnVjdCB0 eXBlICp0eXBlOwotKyAgICAgIHN0cnVjdCBmaWVsZCAqZmllbGQ7Ci0rICAgICAgY2hhciAqbmFt ZTsKLSsgICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0rCi0rICAgICAgdHlwZSA9IGFsbG9jX3R5 cGUgKG9iamZpbGUsIE5VTEwpOwotKyAgICAgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVf U1RSVUNUOwotKyAgICAgIC8qIEFydGlmaWNpYWwgdHlwZSB0byBiZSB1c2VkIG9ubHkgYnkgYGlu Zm8gY29tbW9uJy4gICovCi0rICAgICAgVFlQRV9OQU1FICh0eXBlKSA9ICI8Y29tbW9uPiI7Ci0r Ci0gICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLSAgICAgICB3aGlsZSAoY2hpbGRfZGll ICYmIGNoaWxkX2RpZS0+dGFnKQotIAl7Ci0rCSAgVFlQRV9ORklFTERTICh0eXBlKSsrOwotKwkg IGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwotKwl9Ci0rCi0rICAgICAgVFlQ RV9GSUVMRFMgKHR5cGUpID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywKLSsJCQkJCSAgc2l6ZW9mICgqVFlQRV9GSUVMRFMgKHR5cGUpKQotKwkJCQkJICAqIFRZUEVf TkZJRUxEUyAodHlwZSkpOwotKyAgICAgIG1lbXNldCAoVFlQRV9GSUVMRFMgKHR5cGUpLCAwLCBz aXplb2YgKCpUWVBFX0ZJRUxEUyAodHlwZSkpCi0rCQkJCSAgICAgKiBUWVBFX05GSUVMRFMgKHR5 cGUpKTsKLSsgICAgICAKLSsgICAgICBmaWVsZCA9IFRZUEVfRklFTERTICh0eXBlKTsKLSsgICAg ICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotKyAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hp bGRfZGllLT50YWcpCi0rCXsKLSsJICAvKiBDcmVhdGUgdGhlIHN5bWJvbCBpbiB0aGUgRFdfVEFH X2NvbW1vbl9ibG9jayBibG9jayBpbiB0aGUgY3VycmVudAotKwkgICAgIHN5bWJvbCBzY29wZS4g ICovCi0gCSAgc3ltID0gbmV3X3N5bWJvbCAoY2hpbGRfZGllLCBOVUxMLCBjdSk7Ci0rCi0rCSAg LyogVW5kb2N1bWVudGVkIGluIERXQVJGMywgd2hlbiBpdCBjYW4gYmUgcHJlc2VudD8gICovCi0g CSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0 aW9uLCBjdSk7Ci0gCSAgaWYgKGF0dHIpCi0gCSAgICB7Ci1AQCAtNTQ2MSw4ICs1ODI3LDI1IEBA IHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCi0gCSAgICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID0gYmFzZSArIGJ5dGVf b2Zmc2V0OwotIAkgICAgICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xz KTsKLSAJICAgIH0KLSsKLSsJICBpZiAoU1lNQk9MX0NMQVNTIChzeW0pID09IExPQ19TVEFUSUMp Ci0rCSAgICBTRVRfRklFTERfUEhZU0FERFIgKCpmaWVsZCwgU1lNQk9MX1ZBTFVFX0FERFJFU1Mg KHN5bSkpOwotKwkgIGVsc2UKLSsJICAgIFNFVF9GSUVMRF9QSFlTTkFNRSAoKmZpZWxkLCBTWU1C T0xfTElOS0FHRV9OQU1FIChzeW0pKTsKLSsJICBGSUVMRF9UWVBFICgqZmllbGQpID0gU1lNQk9M X1RZUEUgKHN5bSk7Ci0rCSAgRklFTERfTkFNRSAoKmZpZWxkKSA9IFNZTUJPTF9OQVRVUkFMX05B TUUgKHN5bSk7Ci0rCSAgZmllbGQrKzsKLSAJICBjaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hp bGRfZGllKTsKLSAJfQotKwotKyAgICAgIC8qIFRZUEVfTEVOR1RIICh0eXBlKSBpcyBsZWZ0IDAg LSBpdCBpcyBvbmx5IGEgdmlydHVhbCBzdHJ1Y3R1cmUgZXZlbgotKwkgd2l0aCBubyBjb25zZWN1 dGl2ZSBhZGRyZXNzIHNwYWNlLiAgKi8KLSsKLSsgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUs IHR5cGUsIGN1KTsKLSsgICAgICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVz ZWQgYXMgYWxsIGl0cyBmaWVsZHMgYXJlIHN0YXRpYy4gICovCi0rICAgICAgU1lNQk9MX1ZBTFVF X0FERFJFU1MgKHN5bSkgPSBiYXNlOwotKwotKyAgICAgIHNldF9kaWVfdHlwZSAoZGllLCB0eXBl LCBjdSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNTUzMCw3ICs1OTEzLDcgQEAgcmVhZF9uYW1lc3Bh Y2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBp ZiAoaXNfYW5vbnltb3VzKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqcHJldmlvdXNfcHJlZml4ID0g ZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0tCSAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAo cHJldmlvdXNfcHJlZml4LCBUWVBFX05BTUUgKHR5cGUpKTsKLSsJICBjcF9hZGRfdXNpbmdfZGly ZWN0aXZlIChwcmV2aW91c19wcmVmaXgsIFRZUEVfTkFNRSAodHlwZSksICIiLCAiIiwgZHdhcmYy X3JlYWRfZGVjbF9saW5lKGRpZSwgY3UpKTsKLSAJfQotICAgICB9Ci0gCi1AQCAtNTU0NiwyMCAr NTkyOSwxNTUgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKLSAgICAgfQotIH0KLSAKLS0vKiBSZWFkIGEgRm9ydHJhbiBtb2R1bGUu ICAqLwotKy8qIFJlYWQgYSBGb3J0cmFuIG1vZHVsZSBhcyBnbG9iYWwgc3ltYm9sIHdoaWNoIGNh biBiZSBsYXRlciBsb29rZWQgdXAgYnkKLSsgICBmX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwuICAq LwotIAotIHN0YXRpYyB2b2lkCi0gcmVhZF9tb2R1bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZSA9 IGRpZS0+Y2hpbGQ7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsKLSsgIHR5cGUgPSByZWFkX21v ZHVsZV90eXBlIChkaWUsIGN1KTsKKy0gIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllID0gZGll LT5jaGlsZDsKKysgIHN0cnVjdCB0eXBlICp0eXBlOworIAorLSAgLyogRklYTUU6IFN1cHBvcnQg dGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxlIG5hbWVzcGFjZXMuICAqLworKyAgdHlwZSA9IHJl YWRfbW9kdWxlX3R5cGUgKGRpZSwgY3UpOwogKwogKyAgaWYgKHR5cGUpCiArICAgIG5ld19zeW1i b2wgKGRpZSwgdHlwZSwgY3UpOwogK30KLSsKKyAKICsvKiBSZWFkIGEgRm9ydHJhbiBtb2R1bGUg YXMgdHlwZS4KICsKICsgICBNb2R1bGVzIHByZXNlbnQgb25seSBhcyBkZWNsYXJhdGlvbnMgLSBi ZWluZyB1c2VkIG9ubHkgZm9yIERXX0FUX2ltcG9ydCBvZgpAQCAtNjQxMiwxMCArMzM0MCw5IEBA IGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiArICB0eXBlID0gaW5pdF90eXBlIChUWVBF X0NPREVfTU9EVUxFLCAwLCAwLCBtb2R1bGVfbmFtZSwgb2JqZmlsZSk7CiArCiArICAvKiBDcmVh dGUgYSBjb250ZXh0IGZvciByZWFkaW5nIHRoZSBtb2R1bGUgdmFyaWFibGVzLiAgKi8KLSAKLS0g IC8qIEZJWE1FOiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVsZSBuYW1lc3BhY2Vz LiAgKi8KKysKICsgIG5ldyA9IHB1c2hfY29udGV4dCAoMCwgMCk7Ci0gCisrCiArICBzYXZlX2Zp bGVfc3ltYm9scyA9IGZpbGVfc3ltYm9sczsKICsgIGZpbGVfc3ltYm9scyA9IE5VTEw7CiArICBz YXZlX2dsb2JhbF9zeW1ib2xzID0gZ2xvYmFsX3N5bWJvbHM7CkBAIC02NTE5LDExICszNDQ2LDEx IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiArICBzeW0gPSBuZXdfc3ltYm9sIChp bXBvcnRlZF9kaWUsIE5VTEwsIGN1KTsKICsKICsgIGlmIChzeW0gJiYgcmVuYW1lKQotKyAgICAo c3ltKS0+Z2luZm8ubGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25h bWUgPSByZW5hbWU7CisrICAgIFNZTUJPTF9DUExVU19ERU1BTkdMRURfTkFNRSAoc3ltKSA9IHJl bmFtZTsKICB9CiAgCiAgLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgcmVwcmVz ZW50ZWQgYnkgRElFLiAgU2V0Ci1AQCAtNTcyNCwyOSArNjI0MiwxMTMgQEAgcmVhZF90YWdfc3Ry aW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC01ODM3LDI5ICs2MjQ5LDExMyBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0eXBlICp0eXBlLCAq cmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyOwpAQCAtNjUzMiw3ICszNDU5LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2 NDQKICsKICsgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2lu dDsKICsgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklMRSwgbm90IGFzIGEg cGVybWFuZW50IHR5cGUuICAqLwotKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUs IE5VTEwpOworKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOwogKyAgLyogTE9X X0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLwogKyAgcmFu Z2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRleF90eXBlLCAwLCAt MSk7CiArCkBAIC02NjA4LDggKzM1MzUsOCBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0 NAogKwkJfQogKwkgICAgfQogKwotKwkgIFRZUEVfUkFOR0VfQk9VTkRfU0VUX0RXQVJGX0JMT0NL IChyYW5nZV90eXBlLCAxKTsKLSsJICBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLIChyYW5nZV90eXBl LCAxKSA9IGxlbmd0aF9iYXRvbjsKKysJICBUWVBFX0hJR0hfQk9VTkRfSVNfRFdBUkZfQkxPQ0sg KHJhbmdlX3R5cGUpID0gMTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdo LnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247CiArCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90 eXBlKSA9IDE7CiArCX0KICAgICAgfQpAQCAtNjYzMiw4ICszNTU5LDggQEAgaW5kZXggNGNjZTM2 Yi4uZmIwYTY5MyAxMDA2NDQKIC0gICAgICAgIH0KICsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpKQogKwl7Ci0rCSAgVFlQRV9SQU5HRV9CT1VORF9TRVRfRFdBUkZf QkxPQ0sgKHJhbmdlX3R5cGUsIDEpOwotKwkgIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKHJhbmdl X3R5cGUsIDEpID0KKysJICBUWVBFX0hJR0hfQk9VTkRfSVNfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5 cGUpID0gMTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZf YmxvY2sgPQogKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwog KwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwogKwl9CkBAIC02NjUxLDcgKzM1Nzgs NyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgY2hhcl90eXBlID0gbGFuZ3Vh Z2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlw ZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAK LUBAIC01ODQxLDcgKzY0NDMsNiBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKgorQEAgLTU5NTksNyAr NjQ1NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCiAgcmVhZF90eXBlZGVmIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgewogICAgc3RydWN0IG9iamZpbGUg Km9iamZpbGUgPSBjdS0+b2JqZmlsZTsKQEAgLTY2NTksMTcgKzM1ODYsMTcgQEAgaW5kZXggNGNj ZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwogICAgc3Ry dWN0IHR5cGUgKnRoaXNfdHlwZTsKICAKLUBAIC01OTQ5LDggKzY1NTAsNyBAQCByZWFkX3N1YnJh bmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC02MDY3LDggKzY1NjIsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0eXBlICpiYXNlX3R5cGU7CiAg ICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0t ICBpbnQgbG93ID0gMDsKLS0gIGludCBoaWdoID0gLTE7Ci0rICBpbnQgbG93OworLSAgTE9OR0VT VCBsb3cgPSAwOworLSAgTE9OR0VTVCBoaWdoID0gLTE7CisrICBMT05HRVNUIGxvdzsKICAgIGNo YXIgKm5hbWU7CisgICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CiAgICAKLSAgIGJhc2VfdHlwZSA9 IGRpZV90eXBlIChkaWUsIGN1KTsKLUBAIC01OTYzLDQyICs2NTYzLDg5IEBAIHJlYWRfc3VicmFu Z2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAg LTYwODIsNDkgKzY1NzYsMTAxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJICAgICAwLCBOVUxMLCBjdS0+b2JqZmls ZSk7CiAgICAgIH0KICAKQEAgLTY2ODAsNiArMzYwNyw5IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2 OTMgMTAwNjQ0CiAtICAgIH0KICsgIC8qIExPV19CT1VORCBhbmQgSElHSF9CT1VORCBhcmUgc2V0 IGZvciByZWFsIGJlbG93LiAgKi8KICsgIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAo TlVMTCwgYmFzZV90eXBlLCAwLCAtMSk7CisrCisrICBuZWdhdGl2ZV9tYXNrID0gCisrICAgIChM T05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQg LSAxKTsKICAKIC0gIC8qIEZJWE1FOiBGb3IgdmFyaWFibGUgc2l6ZWQgYXJyYXlzIGVpdGhlciBv ZiB0aGVzZSBjb3VsZCBiZQogLSAgICAgYSB2YXJpYWJsZSByYXRoZXIgdGhhbiBhIGNvbnN0YW50 IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCkBAIC02Njg5LDkgKzM2MTksOSBAQCBpbmRleCA0Y2Nl MzZiLi5mYjBhNjkzIDEwMDY0NAogLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRf dmFsdWUgKGF0dHIsIDApOwogKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSkKICsgICAgewotKyAgICAgIFRZUEVfUkFOR0VfQk9VTkRfU0VUX0RXQVJGX0JMT0NLIChyYW5n ZV90eXBlLCAwKTsKLSsgICAgICBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLIChyYW5nZV90eXBlLCAw KSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24KLSsJCQkJCQkJCSAgICAgKGF0dHIsIGN1 KTsKKysgICAgICBUWVBFX0xPV19CT1VORF9JU19EV0FSRl9CTE9DSyAocmFuZ2VfdHlwZSkgPSAx OworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2Jsb2Nr ID0KKysJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKICsgICAg ICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgICAvKiBGb3Igc2V0dGluZyBh IGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2luZy4gICovCiArICAg ICAgbG93ID0gMDsKQEAgLTY3MTQsNiArMzY0NCw4IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMg MTAwNjQ0CiArCSAgICAgIGxvdyA9IDA7CiArCSAgICB9CiArCX0KKysgICAgICBpZiAoIVRZUEVf VU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21hc2spKQorKwlsb3cgfD0g bmVnYXRpdmVfbWFzazsKICsgICAgICBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7 CiArICAgICAgaWYgKGxvdyA+PSAwKQogKwlUWVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7 CkBAIC02NzM3LDYgKzM2NjksOCBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogLSAg ICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUuICAqLwogLSAg ICAgICAgICBoaWdoID0gbG93IC0gMTsKIC0gICAgICAgIH0KKy0gICAgICBlbHNlCistICAgICAg ICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKICsgIGlm ICghYXR0ciB8fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0dHJfZm9ybV9pc19j b25zdGFudCAoYXR0cikpKQogKyAgICB7CiArICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2NvdW50LCBjdSk7CkBAIC02NzQ3LDM1ICszNjgxLDQ3IEBAIGluZGV4IDRjY2UzNmIu LmZiMGE2OTMgMTAwNjQ0CiArCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CiArCX0K ICsgICAgICAvKiBQYXNzIGl0IG5vdyBhcyB0aGUgcmVndWxhciBEV19BVF91cHBlcl9ib3VuZC4g ICovCi0rICAgIH0KLSsKKyAgICAgfQorIAorLSAgbmVnYXRpdmVfbWFzayA9IAorLSAgICAoTE9O R0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NIQVJfQklUIC0g MSk7CistICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZl X21hc2spKQorLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKKy0gIGlmICghVFlQRV9VTlNJR05F RCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQorLSAgICBoaWdoIHw9IG5l Z2F0aXZlX21hc2s7CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQog KyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9CT1VORF9TRVRfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5 cGUsIDEpOwotKyAgICAgIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUsIDEpID0g ZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbgotKwkJCQkJCQkJICAgICAoYXR0ciwgY3UpOwor KyAgICAgIFRZUEVfSElHSF9CT1VORF9JU19EV0FSRl9CTE9DSyAocmFuZ2VfdHlwZSkgPSAxOwor KyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9ibG9jayA9 CisrCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7CiArICAgICAg VFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CiArICAgIH0KICsgIGVsc2UKICsgICAgewog KyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCVRZUEVf SElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUg KGF0dHIsIDApOwotICAgICAgIGVsc2UKLS0gICAgICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJf Y29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOwogKwl7Ci0rCSAgVFlQRV9SQU5HRV9VUFBFUl9CT1VO RF9JU19VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKHJh bmdlX3R5cGUpID0gbG93IC0gMTsKLSsJfQotICAgICB9CisrCSAgTE9OR0VTVCBoaWdoOwogIAog LSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywg aGlnaCk7CisrCSAgaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwg MCk7CisrCSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRp dmVfbWFzaykpCisrCSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CisrCSAgVFlQRV9ISUdIX0JP VU5EIChyYW5nZV90eXBlKSA9IGhpZ2g7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICBUWVBF X0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrCSAgVFlQRV9ISUdIX0JP VU5EIChyYW5nZV90eXBlKSA9IGxvdyAtIDE7CisrCX0KKysgICAgfQorKwogKyAgLyogRFdfQVRf Yml0X3N0cmlkZSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgYXMgd2UgY291bnQgaW4gYnl0ZXMu ICAqLwogKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc3RyaWRlLCBjdSk7 CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogKyAgICB7Ci0rICAg ICAgVFlQRV9SQU5HRV9CT1VORF9TRVRfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUsIDIpOwotKyAg ICAgIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUsIDIpID0gZHdhcmYyX2F0dHJf dG9fbG9jZXhwcl9iYXRvbgotKwkJCQkJCQkJICAgICAoYXR0ciwgY3UpOworKyAgICAgIFRZUEVf QllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICBUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrID0KKysJ CQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKICsgICAgICBUWVBF X0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgfQogKyAgZWxzZSBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQpAQCAtNjc4OCw3ICszNzM0LDcgQEAgaW5kZXgg NGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBj dSk7CiAgICBpZiAobmFtZSkKLUBAIC02NDY5LDYgKzcxMTYsNyBAQCBsb2FkX3BhcnRpYWxfZGll cyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCitAQCAt NjU4Myw2ICs3MTI5LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUg KmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RB R19sZXhpY2FsX2Jsb2NrCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX3ZhcmlhYmxlCiAg CSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZQpAQCAtNjc5NiwyNyArMzc0Miw3 IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCSAgJiYgYWJicmV2LT50YWcgIT0g RFdfVEFHX21lbWJlcikKICAJewogIAkgIC8qIE90aGVyd2lzZSB3ZSBza2lwIHRvIHRoZSBuZXh0 IHNpYmxpbmcsIGlmIGFueS4gICovCi1AQCAtNjY4OSw5ICs3MzM3LDYgQEAgcmVhZF9wYXJ0aWFs X2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAotIAkgIGlmIChwYXJ0X2Rp ZS0+ZGlybmFtZSA9PSBOVUxMKQotIAkgICAgcGFydF9kaWUtPmRpcm5hbWUgPSBEV19TVFJJTkcg KCZhdHRyKTsKLSAJICBicmVhazsKLS0JY2FzZSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZToKLS0J ICBwYXJ0X2RpZS0+bmFtZSA9IERXX1NUUklORyAoJmF0dHIpOwotLQkgIGJyZWFrOwotIAljYXNl IERXX0FUX2xvd19wYzoKLSAJICBoYXNfbG93X3BjX2F0dHIgPSAxOwotIAkgIHBhcnRfZGllLT5s b3dwYyA9IERXX0FERFIgKCZhdHRyKTsKLUBAIC02OTIzLDcgKzc1NjgsOCBAQCBmaXh1cF9wYXJ0 aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAotICAgLyogSWYgd2Ug Zm91bmQgYSByZWZlcmVuY2UgYXR0cmlidXRlIGFuZCB0aGUgRElFIGhhcyBubyBuYW1lLCB0cnkK LSAgICAgIHRvIGZpbmQgYSBuYW1lIGluIHRoZSByZWZlcnJlZCB0byBESUUuICAqLwotIAotLSAg aWYgKHBhcnRfZGllLT5uYW1lID09IE5VTEwgJiYgcGFydF9kaWUtPmhhc19zcGVjaWZpY2F0aW9u KQotKyAgaWYgKHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbgotKyAgICAgICYmIChwYXJ0X2Rp ZS0+bmFtZSA9PSBOVUxMIHx8ICFwYXJ0X2RpZS0+aXNfZXh0ZXJuYWwpKQotICAgICB7Ci0gICAg ICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNwZWNfZGllOwotIAotQEAgLTgyNjUsMTAgKzg5 MTEsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IHN5bWJvbCAqc3ltLAorQEAgLTgzMzEsMTAgKzg4NzgsMTIgQEAgdmFyX2RlY29kZV9sb2Nh dGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogICAgICAg KGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkgbG9jYXRpb24gaXMK ICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBldGMuKS4gIFRoZW4g YWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEknbSBhc3N1bWluZyB0 aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtNjgzMSw1NyArMzc1NywyNyBAQCBp bmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHBvaW50ZXIg dG8gYSBEV0FSRiBpbmZvcm1hdGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAt ODI5MCwyMSArODkzOCwzMCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAotICAgYmFzZWFkZHIgPSBB Tk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxl KSk7Ci0gCi0tICBpZiAoZGllLT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZSkKLS0gICAgbmFtZSA9 IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotLSAgZWxzZQotLSAgICBuYW1lID0gVFlQ RV9OQU1FICh0eXBlKTsKLS0KLSsgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0gICBp ZiAobmFtZSkKLSAgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VuYW1lOwotKwotICAg ICAgIHN5bSA9IChzdHJ1Y3Qgc3ltYm9sICopIG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCitAQCAtODM2NywxMCArODkxNiwxNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog IAkJCQkJICAgICBzaXplb2YgKHN0cnVjdCBzeW1ib2wpKTsKICAgICAgICBPQkpTVEFUIChvYmpm aWxlLCBuX3N5bXMrKyk7CiAgICAgICAgbWVtc2V0IChzeW0sIDAsIHNpemVvZiAoc3RydWN0IHN5 bWJvbCkpOwogKyAgICAgIC8qIFNvbWUgbWV0aG9kcyBhcmUgY2FsbGVkIHcvbyBjaGVja2luZyBT WU1CT0xfQ09NUFVURURfT1BTIHZhbGlkaXR5LiAgKi8KICsgICAgICBTWU1CT0xfQ09NUFVURURf T1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOwogIAotLSAgICAgIC8qIENhY2hlIHRo aXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4g ICovCisgICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRl bWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KICAgICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5bSkg PSBjdS0+bGFuZ3VhZ2U7Ci0tICAgICAgU1lNQk9MX1NFVF9OQU1FUyAoc3ltLCBuYW1lLCBzdHJs ZW4gKG5hbWUpLCBvYmpmaWxlKTsKLSsKLSsgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5h bWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwotKwotKyAgICAg IGxpbmthZ2VuYW1lID0gZHdhcmYyX3BoeXNuYW1lIChkaWUsIGN1KTsKLSsgICAgICBTWU1CT0xf U0VUX05BTUVTIChzeW0sIGxpbmthZ2VuYW1lLCBzdHJsZW4gKGxpbmthZ2VuYW1lKSwgb2JqZmls ZSk7CisgICAgICAgU1lNQk9MX1NFVF9OQU1FUyAoc3ltLCBuYW1lLCBzdHJsZW4gKG5hbWUpLCAw LCBvYmpmaWxlKTsKICsgICAgICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4p CiArCXsKLSsJICAoc3ltKS0+Z2luZm8ubGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMu ZGVtYW5nbGVkX25hbWUgPQotKwkgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKTsKKysJICBT WU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKHN5bSkgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChz eW0pOwogKwkgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkgPSBmb3J0cmFuX21vZHVsZV9saW5r YWdlX25hbWUgKGRpZSwgY3UpOwogKwl9CiAgCiAgICAgICAgLyogRGVmYXVsdCBhc3N1bXB0aW9u cy4KICAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0eXBlIG9yIGRlY29kZSBpdCBmcm9tIHRoZSBk aWUuICAqLwotQEAgLTg0MDIsOSArOTA1OSwyOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkgIGlm IChhdHRyKQotIAkgICAgeworQEAgLTg0NzAsNyArOTAyNiwxOCBAQCBuZXdfc3ltYm9sIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKLSsKICAJICAg ICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwotKwotKwkg ICAgICAvKiBGb3J0cmFuIGV4cGxpY2l0ZWx5IGltcG9ydHMgYW55IGdsb2JhbCBzeW1ib2xzIHRv IHRoZSBsb2NhbAotKwkJIHNjb3BlIGJ5IERXX1RBR19jb21tb25fYmxvY2suICAqLwotKwkgICAg ICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4gJiYgZGllLT5wYXJlbnQKLSsJ CSAgJiYgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfY29tbW9uX2Jsb2NrKQotKwkJYXR0cjIg PSBOVUxMOwotKwogIAkgICAgICBpZiAoYXR0cjIgJiYgKERXX1VOU05EIChhdHRyMikgIT0gMCkp CiAtCQlhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKICsJCXsKQEAg LTY4OTksMjQgKzM3OTUsMTAgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAJICAg ICAgZWxzZQogIAkJYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsK ICAJICAgIH0KLUBAIC04NTM0LDcgKzkyMTAsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkgIGFk ZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7Ci0gCSAgYnJlYWs7Ci0g CWNhc2UgRFdfVEFHX2VudW1lcmF0b3I6Ci0tCSAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSA9 IChjaGFyICopIGR3YXJmMl9mdWxsX25hbWUgKGRpZSwgY3UpOwotKwkgIFNZTUJPTF9MSU5LQUdF X05BTUUgKHN5bSkgPSAoY2hhciAqKSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0gCSAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbnN0X3ZhbHVlLCBjdSk7Ci0gCSAgaWYgKGF0dHIp Ci0gCSAgICB7Ci1AQCAtODU1OCw2ICs5MjM0LDE2IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAt ODYzMSw2ICs5MTk4LDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgU1lNQk9MX0NMQVNTIChz eW0pID0gTE9DX1RZUEVERUY7CiAgCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxf c3ltYm9scyk7CiAgCSAgYnJlYWs7Ci0rCWNhc2UgRFdfVEFHX2NvbW1vbl9ibG9jazoKLSsJICBT WU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfU1RBVElDOwotKwkgIFNZTUJPTF9ET01BSU4gKHN5bSkg PSBDT01NT05fQkxPQ0tfRE9NQUlOOwotKwkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+ bGlzdF9pbl9zY29wZSk7Ci0rCSAgYnJlYWs7CiArCWNhc2UgRFdfVEFHX21vZHVsZToKICsJICBT WU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfU1RBVElDOwogKwkgIFNZTUJPTF9ET01BSU4gKHN5bSkg PSBNT0RVTEVfRE9NQUlOOwpAQCAtNjkyNSwxNyArMzgwNyw3IEBAIGluZGV4IDRjY2UzNmIuLmZi MGE2OTMgMTAwNjQ0CiAgCWRlZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4g IEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBz aW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1AQCAtODU3MSw4ICs5MjU3 LDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICAvKiBGb3IgdGhlIGJlbmVmaXQgb2Ygb2xk IHZlcnNpb25zIG9mIEdDQywgY2hlY2sgZm9yIGFub255bW91cwotIAkgbmFtZXNwYWNlcyBiYXNl ZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAqLwotICAgICAgIGlmICghcHJvY2Vzc2luZ19oYXNf bmFtZXNwYWNlX2luZm8KLS0JICAmJiBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKLS0J ICAmJiBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZSwgY3UpICE9IE5V TEwpCi0rCSAgJiYgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQotIAljcF9zY2FuX2Zv cl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltKTsKLSAgICAgfQotICAgcmV0dXJuIChzeW0pOwot QEAgLTg4MjMsMTIgKzk1MDgsMTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg5NTcsMTIgKzk1MjksMTggQEAgcmVhZF90 eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAg ICBjYXNlIERXX1RBR19uYW1lc3BhY2U6CiAgICAgICAgdGhpc190eXBlID0gcmVhZF9uYW1lc3Bh Y2VfdHlwZSAoZGllLCBjdSk7CiAgICAgICAgYnJlYWs7CkBAIC02OTU0LDE4OCArMzgyNiwxMCBA QCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9 CiAgCi1AQCAtODkxMCwxMCArOTYwMSwxMDAgQEAgZGV0ZXJtaW5lX3ByZWZpeCAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkgICAgIFNvIGl0IGRvZXMgbm90 IG5lZWQgYSBwcmVmaXguICAqLwotIAkgIHJldHVybiAiIjsKLSAgICAgICBkZWZhdWx0OgotLQly ZXR1cm4gZGV0ZXJtaW5lX3ByZWZpeCAocGFyZW50LCBjdSk7Ci0rICAgICAgICByZXR1cm4gZGV0 ZXJtaW5lX3ByZWZpeCAocGFyZW50LCBjdSk7Ci0gICAgICAgfQotIH0KLSAKLSsvKiBEZXRlcm1p bmVzIHRoZSBwcmVmaXggZm9yIGEgc3ltYm9sJ3MgcGh5c25hbWUuICBVbmxpa2UgZGV0ZXJtaW5l X3ByZWZpeCwKLSsgICB0aGlzIG1ldGhvZCBkb2VzIG5vdCBzaW1wbHkgbG9vayBhdCB0aGUgRElF J3MgaW1tZWRpYXRlIHBhcmVudC4KLSsgICBJdCB3aWxsIGNvbXB1dGUgdGhlIHN5bWJvbCdzIHBo eXNuYW1lIGJ5IHNjYW5uaW5nIHRocm91Z2ggYWxsIHBhcmVudAotKyAgIERJRXMgdW50aWwgaXQg Z2V0cyB0byB0aGUgY29tcGlsYXRpb24gdW5pdCdzIERJRS4gICovCi0rCi0rc3RhdGljIGNoYXIg KgotK3BoeXNuYW1lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotK3sKLSsgIGxvbmcgbGVuZ3RoOwotKyAgc3RydWN0IHVpX2ZpbGUgKmJ1ZjsKLSsg IHN0cnVjdCBkaWVfaW5mbyAqZCwgKnNwZWNfZGllOwotKyAgc3RydWN0IGR3YXJmMl9jdSAqc3Bl Y19jdTsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICAvKiBDb25zdHJ1Y3QgYSBzdGFjayBjb250YWlu aW5nIGFsbCBvZiB0aGUgRElFJ3MgcGFyZW50cy4gIENhdXRpb24KLSsgICAgIG11c3QgYmUgb2Jz ZXJ2ZWQgZm9yIGRlYWxpbmcgd2l0aCBEV19BVF9zcGVjaWZpY2F0aW9uLiAqLwotKyAgc3BlY19j dSA9IGN1OwotKyAgc3BlY19kaWUgPSBkaWVfc3BlY2lmaWNhdGlvbiAoZGllLCAmc3BlY19jdSk7 Ci0rICBpZiAoc3BlY19kaWUgIT0gTlVMTCkKLSsgICAgZCA9IHNwZWNfZGllLT5wYXJlbnQ7Ci0r ICBlbHNlCi0rICAgIGQgPSBkaWUtPnBhcmVudDsKLSsgIHdoaWxlIChkICE9IE5VTEwgJiYgZC0+ dGFnICE9IERXX1RBR19jb21waWxlX3VuaXQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwotKwotKyAgICAgIHNwZWNfZGllID0gZGllX3NwZWNpZmljYXRpb24gKGQsICZz cGVjX2N1KTsKLSsgICAgICBpZiAoc3BlY19kaWUgIT0gTlVMTCkKLSsJZCA9IHNwZWNfZGllOwot KwotKyAgICAgIFZFQ19xdWlja19wdXNoIChkaWVfaW5mb19wLCBkaWVfbGlzdCwgZCk7Ci0rICAg ICAgZCA9IGQtPnBhcmVudDsKLSsgICAgfQotKwotKyAgLyogTm93IHBvcCBhbGwgdGhlIGVsZW1l bnRzLCBwcmludGluZyB0aGVpciBuYW1lcyBhcyB3ZSBnby4gICovCi0rICBidWYgPSBtZW1fZmls ZW9wZW4gKCk7Ci0rICB3aGlsZSAoIVZFQ19lbXB0eSAoZGllX2luZm9fcCwgZGllX2xpc3QpKQot KyAgICB7Ci0rICAgICAgZCA9IFZFQ19wb3AgKGRpZV9pbmZvX3AsIGRpZV9saXN0KTsKLSsgICAg ICBwaHlzbmFtZV9wcmVmaXhfMSAoYnVmLCBkLCBjdSk7Ci0rCi0rICAgICAgaWYgKCFWRUNfZW1w dHkgKGRpZV9pbmZvX3AsIGRpZV9saXN0KSkKLSsJewotKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfY3BsdXMpCi0rCSAgICBmcHV0c191bmZpbHRlcmVkICgiOjoiLCBidWYpOwotKwkg IGVsc2UKLSsJICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIuIiwgYnVmKTsKLSsJfQotKyAgICB9Ci0r Ci0rICBuYW1lID0gdWlfZmlsZV9vYnNhdmVzdHJpbmcgKGJ1ZiwgJmN1LT5vYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssICZsZW5ndGgpOwotKyAgdWlfZmlsZV9kZWxldGUgKGJ1Zik7Ci0rICByZXR1 cm4gbmFtZTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStwaHlzbmFtZV9wcmVmaXhfMSAoc3RydWN0 IHVpX2ZpbGUgKmJ1Ziwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0rCQkgICBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKLSt7Ci0rICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSsgIGdkYl9hc3NlcnQg KGJ1ZiAhPSBOVUxMKTsKLSsKLSsgIGlmIChkaWUgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIHN3 aXRjaCAoZGllLT50YWcpCi0rCXsKLSsJY2FzZSBEV19UQUdfbmFtZXNwYWNlOgotKwkgIG5hbWUg PSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rCSAgaWYgKG5hbWUgPT0gTlVMTCkKLSsJICAgIG5h bWUgPSAiKGFub255bW91cyBuYW1lc3BhY2UpIjsKLSsJICBicmVhazsKLSsKLSsJY2FzZSBEV19U QUdfY2xhc3NfdHlwZToKLSsJY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0rCWNhc2UgRFdf VEFHX3VuaW9uX3R5cGU6Ci0rCWNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0rCWNhc2Ug RFdfVEFHX2ludGVyZmFjZV90eXBlOgotKwljYXNlIERXX1RBR19zdWJwcm9ncmFtOgotKwkgIG5h bWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rCSAgYnJlYWs7Ci0rCi0rCWRlZmF1bHQ6Ci0r CSAgYnJlYWs7Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKG5hbWUgIT0gTlVMTCkKLSsgICAgZnB1 dHNfdW5maWx0ZXJlZCAobmFtZSwgYnVmKTsKLSt9Ci0rCi0gLyogUmV0dXJuIGEgbmV3bHktYWxs b2NhdGVkIHN0cmluZyBmb3JtZWQgYnkgY29uY2F0ZW5hdGluZyBQUkVGSVggYW5kCi0gICAgU1VG RklYIHdpdGggYXBwcm9wcmlhdGUgc2VwYXJhdG9yLiAgSWYgUFJFRklYIG9yIFNVRkZJWCBpcyBO VUxMIG9yIGVtcHR5LCB0aGVuCi0gICAgc2ltcGx5IGNvcHkgdGhlIFNVRkZJWCBvciBQUkVGSVgs IHJlc3BlY3RpdmVseS4gIElmIE9CUyBpcyBub24tbnVsbCwKLUBAIC04OTYzLDE3ICs5NzQ0LDEx MSBAQCBzaWJsaW5nX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUpCi0gICByZXR1cm4gZGllLT5z aWJsaW5nOworQEAgLTkxMTAsNiArOTY4OCwzOSBAQCBkd2FyZjJfbGlua2FnZV9uYW1lIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICByZXR1cm4gZHdhcmYy X25hbWUgKGRpZSwgY3UpOwogIH0KICAKLS0vKiBHZXQgbGlua2FnZSBuYW1lIG9mIGEgZGllLCBy ZXR1cm4gTlVMTCBpZiBub3QgZm91bmQuICAqLwotKy8qIENvbnN0cnVjdCBhIHBoeXNuYW1lIGZv ciB0aGUgZ2l2ZW4gRElFIGluIENVLiAqLwotIAotIHN0YXRpYyBjaGFyICoKLS1kd2FyZjJfbGlu a2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0r ZHdhcmYyX3BoeXNuYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gewotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0r ICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotKwotKyAgLyogVGhlc2UgYXJlIHRoZSBv bmx5IGxhbmd1YWdlcyB3ZSBrbm93IGhvdyB0byBxdWFsaWZ5IG5hbWVzIGluLiAgKi8KLSsgIGlm IChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfY3BsdXMKLSsgICAgICAmJiBjdS0+bGFuZ3VhZ2Ug IT0gbGFuZ3VhZ2VfamF2YSkKLSsgICAgcmV0dXJuIG5hbWU7Ci0rCi0rICBpZiAoZGllX25lZWRz X25hbWVzcGFjZSAoZGllLCBjdSkpCi0rICAgIHsKLSsgICAgICBsb25nIGxlbmd0aDsKLSsgICAg ICBjaGFyICpwcmVmaXg7Ci0rICAgICAgc3RydWN0IHVpX2ZpbGUgKmJ1ZjsKLSsKLSsgICAgICBw cmVmaXggPSBwaHlzbmFtZV9wcmVmaXggKGRpZSwgY3UpOwotKyAgICAgIGJ1ZiA9IG1lbV9maWxl b3BlbiAoKTsKLSsgICAgICBpZiAoKnByZWZpeCAhPSAnXDAnKQotKwl7Ci0rCSAgY2hhciAqcHJl Zml4ZWRfbmFtZSA9IHR5cGVuYW1lX2NvbmNhdCAoTlVMTCwgcHJlZml4LCBuYW1lLCBjdSk7Ci0r CSAgZnB1dHNfdW5maWx0ZXJlZCAocHJlZml4ZWRfbmFtZSwgYnVmKTsKLSsJICB4ZnJlZSAocHJl Zml4ZWRfbmFtZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWZwdXRzX3VuZmlsdGVyZWQgKG5hbWUg PyBuYW1lIDogIiIsIGJ1Zik7Ci0rCi0rICAgICAgLyogRm9yIEphdmEgYW5kIEMrKyBtZXRob2Rz LCBhcHBlbmQgZm9ybWFsIHBhcmFtZXRlciB0eXBlCi0rCSBpbmZvcm1hdGlvbi4gKi8KLSsgICAg ICBpZiAoKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cyB8fCBjdS0+bGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfamF2YSkKLSsJICAmJiBkaWUtPnRhZyA9PSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJ ewotKwkgIHN0cnVjdCB0eXBlICp0eXBlID0gcmVhZF90eXBlX2RpZSAoZGllLCBjdSk7Ci0rCi0r CSAgY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIGJ1ZiwgMCwgY3UtPmxhbmd1YWdlKTsKLSsKLSsJ ICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpCi0rCSAgICB7Ci0rCSAgICAgIC8q IEZvciBqYXZhLCB3ZSBtdXN0IGFwcGVuZCB0aGUgcmV0dXJuIHR5cGUgdG8gbWV0aG9kIG5hbWVz LiAqLwotKwkgICAgICBpZiAoZGllLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCi0rCQlqYXZh X3ByaW50X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCAiIiwgYnVmLCAwLCAwKTsKLSsJ ICAgIH0KLSsJICBlbHNlIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0rCSAg ICB7Ci0rCSAgICAgIC8qIGNfdHlwZV9wcmludF9hcmdzIGFkZHMgYXJndW1lbnQgdHlwZXMsIGJ1 dCBpdCBkb2VzCi0rCQkgbm90IGFkZCBhbnkgbmVjZXNzYXJ5ICJjb25zdCIuICovCi0rCSAgICAg IGlmIChUWVBFX05GSUVMRFMgKHR5cGUpID4gMCAmJiBUWVBFX0ZJRUxEX0FSVElGSUNJQUwgKHR5 cGUsIDApCi0rCQkgICYmIFRZUEVfQ09OU1QgKFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgMCkpKSkKLSsJCWZwdXRzX3VuZmlsdGVyZWQgKCIgY29uc3QiLCBidWYpOwot KwkgICAgfQotKwl9Ci0rCi0rICAgICAgbmFtZSA9IHVpX2ZpbGVfb2JzYXZlc3RyaW5nIChidWYs ICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICAmbGVuZ3RoKTsKLSsgICAg ICB1aV9maWxlX2RlbGV0ZSAoYnVmKTsKLSsKLSsgICAgICBpZiAoY3UtPmxhbmd1YWdlID09IGxh bmd1YWdlX2NwbHVzKQotKwl7Ci0rCSAgY2hhciAqY25hbWUKLSsJICAgID0gZHdhcmYyX2Nhbm9u aWNhbGl6ZV9uYW1lIChuYW1lLCBjdSwKLSsJCQkJCSZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrKTsKLSsJICBpZiAoY25hbWUgIT0gTlVMTCkKLSsJICAgIG5hbWUgPSBjbmFtZTsKLSsJfQot KyAgICB9Ci0rCi0rICByZXR1cm4gbmFtZTsKLSt9Ci0rCiArLyogUmV0dXJuIHRoZSBmdWxseSBx dWFsaWZpZWQgLnN5bXRhYiBuYW1lIGZvciBzeW1ib2xzIGNvbnRhaW5lZCBpbiBGb3J0cmFuCiAr ICAgbW9kdWxlcy4gIFJldHVybiBEV0FSRjJfTkFNRSBvdGhlcndpc2UuICAqLwogKwpAQCAtNzE1 NSwxMSArMzg0OSw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiArICAgICAgaWYg KG1vZHVsZV9uYW1lKQogKwl7CiArCSAgY2hhciAqcmV0dmFsOwotIAotLSAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0ciAm JiBEV19TVFJJTkcgKGF0dHIpKQotLSAgICByZXR1cm4gRFdfU1RSSU5HIChhdHRyKTsKLS0gIHJl dHVybiBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisrCiArCSAgLyogYF9fbW9kdWxlbmFtZV9NT0Rf dmFyaWFibGVuYW1lMCcuICAqLwogKwkgIHJldHZhbCA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAogKwkJCQkgIDIgKyBzdHJsZW4gKG1vZHVsZV9uYW1lKSAr IDUgKyBzdHJsZW4gKG5hbWUpCkBAIC03MTcxLDI0MSArMzg2MSwxMiBAQCBpbmRleCA0Y2NlMzZi Li5mYjBhNjkzIDEwMDY0NAogKyAgICB9CiArCiArICByZXR1cm4gbmFtZTsKLSB9Ci0gCi0gLyog R2V0IG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gICovCi1AQCAtMTAy MDAsMTEgKzExMDc1LDExIEBAIGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogUmV0dXJuIHRoZSBjb25zdGFu dCB2YWx1ZSBoZWxkIGJ5IHRoZSBnaXZlbiBhdHRyaWJ1dGUuICBSZXR1cm4gLTEKLSsvKiBSZXR1 cm4gdGhlIGNvbnN0YW50IHZhbHVlIGhlbGQgYnkgdGhlIGdpdmVuIGF0dHJpYnV0ZS4gIFJldHVy biBERUZBVUxUX1ZBTFVFCi0gICAgaWYgdGhlIHZhbHVlIGhlbGQgYnkgdGhlIGF0dHJpYnV0ZSBp cyBub3QgY29uc3RhbnQuICAqLwotIAotLXN0YXRpYyBpbnQKLS1kd2FyZjJfZ2V0X2F0dHJfY29u c3RhbnRfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGludCBkZWZhdWx0X3ZhbHVlKQot K3N0YXRpYyBDT1JFX0FERFIKLStkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsIENPUkVfQUREUiBkZWZhdWx0X3ZhbHVlKQotIHsKLSAgIGlmIChh dHRyLT5mb3JtID09IERXX0ZPUk1fc2RhdGEpCi0gICAgIHJldHVybiBEV19TTkQgKGF0dHIpOwot QEAgLTExMDA5LDggKzExODg0LDYgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVf aGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKLSB7Ci0gICBnZGJfYnl0ZSAqbWFjX3B0 ciwgKm1hY19lbmQ7Ci0gICBzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmN1cnJlbnRfZmlsZSA9 IDA7Ci0tICBlbnVtIGR3YXJmX21hY2luZm9fcmVjb3JkX3R5cGUgbWFjaW5mb190eXBlOwotLSAg aW50IGF0X2NvbW1hbmRsaW5lOwotIAotICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5m by5idWZmZXIgPT0gTlVMTCkKLSAgICAgewotQEAgLTExMDE4LDI5ICsxMTg5MSwxOSBAQCBkd2Fy Zl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zm c2V0LAotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgLyogRmlyc3QgcGFzczogRmluZCB0 aGUgbmFtZSBvZiB0aGUgYmFzZSBmaWxlbmFtZS4KLS0gICAgIFRoaXMgZmlsZW5hbWUgaXMgbmVl ZGVkIGluIG9yZGVyIHRvIHByb2Nlc3MgYWxsIG1hY3JvcyB3aG9zZSBkZWZpbml0aW9uCi0tICAg ICAob3IgdW5kZWZpbml0aW9uKSBjb21lcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGVzZSBt YWNyb3MgYXJlIGRlZmluZWQKLS0gICAgIGJlZm9yZSB0aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFy dF9maWxlIGVudHJ5LCBhbmQgeWV0IHN0aWxsIG5lZWQgdG8gYmUKLS0gICAgIGFzc29jaWF0ZWQg dG8gdGhlIGJhc2UgZmlsZS4KLS0KLS0gICAgIFRvIGRldGVybWluZSB0aGUgYmFzZSBmaWxlIG5h bWUsIHdlIHNjYW4gdGhlIG1hY3JvIGRlZmluaXRpb25zIHVudGlsIHdlCi0tICAgICByZWFjaCB0 aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LiAgV2UgdGhlbiBpbml0aWFsaXpl Ci0tICAgICBDVVJSRU5UX0ZJTEUgYWNjb3JkaW5nbHkgc28gdGhhdCBhbnkgbWFjcm8gZGVmaW5p dGlvbiBmb3VuZCBiZWZvcmUgdGhlCi0tICAgICBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUg Y2FuIHN0aWxsIGJlIGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICovCi0tCi0gICBtYWNf cHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciArIG9mZnNldDsKLSAgIG1h Y19lbmQgPSBkd2FyZjJfcGVyX29iamZpbGUtPm1hY2luZm8uYnVmZmVyCi0gICAgICsgZHdhcmYy X3Blcl9vYmpmaWxlLT5tYWNpbmZvLnNpemU7Ci0gCi0tICBkbwotKyAgZm9yICg7OykKLSAgICAg ewotKyAgICAgIGVudW0gZHdhcmZfbWFjaW5mb19yZWNvcmRfdHlwZSBtYWNpbmZvX3R5cGU7Cisr fQogKwotICAgICAgIC8qIERvIHdlIGF0IGxlYXN0IGhhdmUgcm9vbSBmb3IgYSBtYWNpbmZvIHR5 cGUgYnl0ZT8gICovCi0gICAgICAgaWYgKG1hY19wdHIgPj0gbWFjX2VuZCkKLSAgICAgICAgIHsK LS0JICAvKiBDb21wbGFpbnQgaXMgcHJpbnRlZCBkdXJpbmcgdGhlIHNlY29uZCBwYXNzIGFzIEdE QiB3aWxsIHByb2JhYmx5Ci0tCSAgICAgc3RvcCB0aGUgZmlyc3QgcGFzcyBlYXJsaWVyIHVwb24g ZmluZGluZyBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUuICAqLwotLQkgIGJyZWFrOwotKwkgIGR3YXJm Ml9tYWNyb3NfdG9vX2xvbmdfY29tcGxhaW50ICgpOwotKyAgICAgICAgICByZXR1cm47Ci0gICAg ICAgICB9Ci0gCi0gICAgICAgbWFjaW5mb190eXBlID0gcmVhZF8xX2J5dGUgKGFiZmQsIG1hY19w dHIpOwotQEAgLTExMDUxLDkyICsxMTkxNCw3IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVj dCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gICAgICAgICAgIC8qIEEg emVybyBtYWNpbmZvIHR5cGUgaW5kaWNhdGVzIHRoZSBlbmQgb2YgdGhlIG1hY3JvCi0gICAgICAg ICAgICAgIGluZm9ybWF0aW9uLiAgKi8KLSAgICAgICAgIGNhc2UgMDoKLS0JICBicmVhazsKLS0K LS0JY2FzZSBEV19NQUNJTkZPX2RlZmluZToKLS0JY2FzZSBEV19NQUNJTkZPX3VuZGVmOgotLQkg IC8qIE9ubHkgc2tpcCB0aGUgZGF0YSBieSBNQUNfUFRSLiAgKi8KLS0JICB7Ci0tCSAgICB1bnNp Z25lZCBpbnQgYnl0ZXNfcmVhZDsKLS0KLS0JICAgIHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZk LCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0tCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0t CSAgICByZWFkX3N0cmluZyAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFj X3B0ciArPSBieXRlc19yZWFkOwotLQkgIH0KLS0JICBicmVhazsKLS0KLS0JY2FzZSBEV19NQUNJ TkZPX3N0YXJ0X2ZpbGU6Ci0tCSAgewotLQkgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7Ci0t CSAgICBpbnQgbGluZSwgZmlsZTsKLS0KLS0JICAgIGxpbmUgPSByZWFkX3Vuc2lnbmVkX2xlYjEy OCAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0ciArPSBieXRlc19y ZWFkOwotLQkgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAm Ynl0ZXNfcmVhZCk7Ci0tCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0tCi0tCSAgICBjdXJy ZW50X2ZpbGUgPSBtYWNyb19zdGFydF9maWxlIChmaWxlLCBsaW5lLCBjdXJyZW50X2ZpbGUsIGNv bXBfZGlyLAotLQkJCQkJICAgICBsaCwgY3UtPm9iamZpbGUpOwotLQkgIH0KLS0JICBicmVhazsK LS0KLS0JY2FzZSBEV19NQUNJTkZPX2VuZF9maWxlOgotLQkgIC8qIE5vIGRhdGEgdG8gc2tpcCBi eSBNQUNfUFRSLiAgKi8KLS0JICBicmVhazsKLS0KLS0JY2FzZSBEV19NQUNJTkZPX3ZlbmRvcl9l eHQ6Ci0tCSAgLyogT25seSBza2lwIHRoZSBkYXRhIGJ5IE1BQ19QVFIuICAqLwotLQkgIHsKLS0J ICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotLQotLQkgICAgcmVhZF91bnNpZ25lZF9sZWIx MjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLS0JICAgIG1hY19wdHIgKz0gYnl0ZXNf cmVhZDsKLS0JICAgIHJlYWRfc3RyaW5nIChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0t CSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0tCSAgfQotLQkgIGJyZWFrOwotLQotLQlkZWZh dWx0OgotLQkgIGJyZWFrOwotLQl9Ci0tICAgIH0gd2hpbGUgKG1hY2luZm9fdHlwZSAhPSAwICYm IGN1cnJlbnRfZmlsZSA9PSBOVUxMKTsKLS0KLS0gIC8qIFNlY29uZCBwYXNzOiBQcm9jZXNzIGFs bCBlbnRyaWVzLgotLQotLSAgICAgVXNlIHRoZSBBVF9DT01NQU5EX0xJTkUgZmxhZyB0byBkZXRl cm1pbmUgd2hldGhlciB3ZSBhcmUgc3RpbGwgcHJvY2Vzc2luZwotLSAgICAgY29tbWFuZC1saW5l IG1hY3JvIGRlZmluaXRpb25zL3VuZGVmaW5pdGlvbnMuICBUaGlzIGZsYWcgaXMgdW5zZXQgd2hl biB3ZQotLSAgICAgcmVhY2ggdGhlIGZpcnN0IERXX01BQ0lORk9fc3RhcnRfZmlsZSBlbnRyeS4g ICovCi0tCi0tICBtYWNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciAr IG9mZnNldDsKLS0KLS0gIC8qIERldGVybWluZXMgaWYgR0RCIGlzIHN0aWxsIGJlZm9yZSBmaXJz dCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUuICBJZiB0cnVlCi0tICAgICBHREIgaXMgc3RpbGwgcmVh ZGluZyB0aGUgZGVmaW5pdGlvbnMgZnJvbSBjb21tYW5kIGxpbmUuICBGaXJzdAotLSAgICAgRFdf TUFDSU5GT19zdGFydF9maWxlIHdpbGwgbmVlZCB0byBiZSBpZ25vcmVkIGFzIGl0IHdhcyBhbHJl YWR5IGV4ZWN1dGVkCi0tICAgICB0byBjcmVhdGUgQ1VSUkVOVF9GSUxFIGZvciB0aGUgbWFpbiBz b3VyY2UgaG9sZGluZyBhbHNvIHRoZSBjb21tYW5kIGxpbmUKLS0gICAgIGRlZmluaXRpb25zLiAg T24gZmlyc3QgbWV0IERXX01BQ0lORk9fc3RhcnRfZmlsZSB0aGlzIGZsYWcgaXMgcmVzZXQgdG8K LS0gICAgIG5vcm1hbGx5IGV4ZWN1dGUgYWxsIHRoZSByZW1haW5pbmcgRFdfTUFDSU5GT19zdGFy dF9maWxlIG1hY2luZm9zLiAgKi8KLS0KLS0gIGF0X2NvbW1hbmRsaW5lID0gMTsKLS0KLS0gIGRv Ci0tICAgIHsKLS0gICAgICAvKiBEbyB3ZSBhdCBsZWFzdCBoYXZlIHJvb20gZm9yIGEgbWFjaW5m byB0eXBlIGJ5dGU/ICAqLwotLSAgICAgIGlmIChtYWNfcHRyID49IG1hY19lbmQpCi0tCXsKLS0J ICBkd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAoKTsKLS0JICBicmVhazsKLS0JfQot LQotLSAgICAgIG1hY2luZm9fdHlwZSA9IHJlYWRfMV9ieXRlIChhYmZkLCBtYWNfcHRyKTsKLS0g ICAgICBtYWNfcHRyKys7Ci0tCi0tICAgICAgc3dpdGNoIChtYWNpbmZvX3R5cGUpCi0tCXsKLS0J ICAvKiBBIHplcm8gbWFjaW5mbyB0eXBlIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBtYWNybwot LQkgICAgIGluZm9ybWF0aW9uLiAgKi8KLS0JY2FzZSAwOgotLQkgIGJyZWFrOwotKyAgICAgICAg ICByZXR1cm47Ci0gCi0gICAgICAgICBjYXNlIERXX01BQ0lORk9fZGVmaW5lOgotICAgICAgICAg Y2FzZSBEV19NQUNJTkZPX3VuZGVmOgotQEAgLTExMTUxLDMxICsxMTkyOSwxOSBAQCBkd2FyZl9k ZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0 LAotICAgICAgICAgICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAKLSAgICAgICAgICAgICBp ZiAoISBjdXJyZW50X2ZpbGUpCi0tCSAgICAgIHsKLS0JCS8qIERXQVJGIHZpb2xhdGlvbiBhcyBu byBtYWluIHNvdXJjZSBpcyBwcmVzZW50LiAgKi8KLS0JCWNvbXBsYWludCAoJnN5bWZpbGVfY29t cGxhaW50cywKLS0JCQkgICBfKCJkZWJ1ZyBpbmZvIHdpdGggbm8gbWFpbiBzb3VyY2UgZ2l2ZXMg bWFjcm8gJXMgIgotLQkJCSAgICAgIm9uIGxpbmUgJWQ6ICVzIiksCi0tCQkJICAgbWFjaW5mb190 eXBlID09Ci0tCQkJICAgRFdfTUFDSU5GT19kZWZpbmUgPyBfKCJkZWZpbml0aW9uIikgOiBtYWNp bmZvX3R5cGUgPT0KLS0JCQkgICBEV19NQUNJTkZPX3VuZGVmID8gXygidW5kZWZpbml0aW9uIikg OgotLQkJCSAgICJzb21ldGhpbmctb3Itb3RoZXIiLCBsaW5lLCBib2R5KTsKLS0JCWJyZWFrOwot LQkgICAgICB9Ci0tCSAgICBpZiAoKGxpbmUgPT0gMCAmJiAhYXRfY29tbWFuZGxpbmUpIHx8IChs aW5lICE9IDAgJiYgYXRfY29tbWFuZGxpbmUpKQotIAkgICAgICBjb21wbGFpbnQgKCZzeW1maWxl X2NvbXBsYWludHMsCi0tCQkJIF8oImRlYnVnIGluZm8gZ2l2ZXMgJXMgbWFjcm8gJXMgd2l0aCAl cyBsaW5lICVkOiAlcyIpLAotLQkJCSBhdF9jb21tYW5kbGluZSA/IF8oImNvbW1hbmQtbGluZSIp IDogXygiaW4tZmlsZSIpLAotKwkJCSBfKCJkZWJ1ZyBpbmZvIGdpdmVzIG1hY3JvICVzIG91dHNp ZGUgb2YgYW55IGZpbGU6ICVzIiksCi0gCQkJIG1hY2luZm9fdHlwZSA9PQotLQkJCSBEV19NQUNJ TkZPX2RlZmluZSA/IF8oImRlZmluaXRpb24iKSA6IG1hY2luZm9fdHlwZSA9PQotLQkJCSBEV19N QUNJTkZPX3VuZGVmID8gXygidW5kZWZpbml0aW9uIikgOgotLQkJCSAic29tZXRoaW5nLW9yLW90 aGVyIiwKLS0JCQkgbGluZSA9PSAwID8gXygiemVybyIpIDogXygibm9uLXplcm8iKSwgbGluZSwg Ym9keSk7Ci0tCi0tCSAgICBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lORk9fZGVmaW5lKQot LQkgICAgICBwYXJzZV9tYWNyb19kZWZpbml0aW9uIChjdXJyZW50X2ZpbGUsIGxpbmUsIGJvZHkp OwotLQkgICAgZWxzZSBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lORk9fdW5kZWYpCi0tCSAg ICAgIG1hY3JvX3VuZGVmIChjdXJyZW50X2ZpbGUsIGxpbmUsIGJvZHkpOwotKwkJCSBEV19NQUNJ TkZPX2RlZmluZSA/ICJkZWZpbml0aW9uIiA6IG1hY2luZm9fdHlwZSA9PQotKwkJCSBEV19NQUNJ TkZPX3VuZGVmID8gInVuZGVmaW5pdGlvbiIgOgotKwkJCSAic29tZXRoaW5nLW9yLW90aGVyIiwg Ym9keSk7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgewotKyAgICAgICAgICAg ICAgICBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lORk9fZGVmaW5lKQotKyAgICAgICAgICAg ICAgICAgIHBhcnNlX21hY3JvX2RlZmluaXRpb24gKGN1cnJlbnRfZmlsZSwgbGluZSwgYm9keSk7 Ci0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNJTkZPX3Vu ZGVmKQotKyAgICAgICAgICAgICAgICAgIG1hY3JvX3VuZGVmIChjdXJyZW50X2ZpbGUsIGxpbmUs IGJvZHkpOwotKyAgICAgICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFr OwotIAotQEAgLTExMTg5LDIyICsxMTk1NSw5IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVj dCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gICAgICAgICAgICAgZmls ZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0g ICAgICAgICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotIAotLQkgICAgaWYgKChsaW5lID09 IDAgJiYgIWF0X2NvbW1hbmRsaW5lKSB8fCAobGluZSAhPSAwICYmIGF0X2NvbW1hbmRsaW5lKSkK LS0JICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotLQkJCSBfKCJkZWJ1ZyBp bmZvIGdpdmVzIHNvdXJjZSAlZCBpbmNsdWRlZCAiCi0tCQkJICAgImZyb20gJXMgYXQgJXMgbGlu ZSAlZCIpLAotLQkJCSBmaWxlLCBhdF9jb21tYW5kbGluZSA/IF8oImNvbW1hbmQtbGluZSIpIDog XygiZmlsZSIpLAotLQkJCSBsaW5lID09IDAgPyBfKCJ6ZXJvIikgOiBfKCJub24temVybyIpLCBs aW5lKTsKLS0KLS0JICAgIGlmIChhdF9jb21tYW5kbGluZSkKLS0JICAgICAgewotLQkJLyogVGhp cyBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgd2FzIGV4ZWN1dGVkIGluIHRoZSBwYXNzIG9uZS4gICov Ci0tCQlhdF9jb21tYW5kbGluZSA9IDA7Ci0tCSAgICAgIH0KLS0JICAgIGVsc2UKLS0JICAgICAg Y3VycmVudF9maWxlID0gbWFjcm9fc3RhcnRfZmlsZSAoZmlsZSwgbGluZSwKLS0JCQkJCSAgICAg ICBjdXJyZW50X2ZpbGUsIGNvbXBfZGlyLAotLQkJCQkJICAgICAgIGxoLCBjdS0+b2JqZmlsZSk7 Ci0rICAgICAgICAgICAgY3VycmVudF9maWxlID0gbWFjcm9fc3RhcnRfZmlsZSAoZmlsZSwgbGlu ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50 X2ZpbGUsIGNvbXBfZGlyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxoLCBjdS0+b2JqZmlsZSk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgYnJlYWs7 Ci0gCi1AQCAtMTEyNTgsNyArMTIwMTEsNyBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3Qg bGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAotICAgICAgICAgICB9Ci0gICAg ICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAgICB9IHdoaWxlIChtYWNpbmZvX3R5cGUgIT0g MCk7Ci0rICAgIH0KLSB9CisgLyogR2V0IG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5v dCBmb3VuZC4gICovCiAgCi0gLyogQ2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSdzIGZvcm0gaXMgYSBE V19GT1JNX2Jsb2NrKgotQEAgLTExMzE4LDYgKzEyMDcxLDM0IEBAIGF0dHJfZm9ybV9pc19jb25z dGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKKyBzdGF0aWMgY2hhciAqCitAQCAtMTE0NTUs NiArMTIwNjYsMzQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICph dHRyKQogICAgICB9CiAgfQogIApAQCAtNzQ0MCw3ICszOTAxLDcgQEAgaW5kZXggNGNjZTM2Yi4u ZmIwYTY5MyAxMDA2NDQKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRl ZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCSAgICAg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtMTEzNDcsMzUgKzEyMTI4LDI1IEBAIGR3YXJmMl9z eW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJv bCAqc3ltLAorQEAgLTExNDg0LDM1ICsxMjEyMywyNSBAQCBkd2FyZjJfc3ltYm9sX21hcmtfY29t cHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAg ICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwogICAg ICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAgICB9CkBAIC03NDkx LDcgKzM5NTIsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgICB9CiAgfQog IAotQEAgLTExNjYzLDYgKzEyNDM0LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9p ZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExODAwLDYgKzEyNDI5LDMx IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQg Kml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7 CiAgfQogIApAQCAtNzUyMywxNiArMzk4NCwxNiBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEw MDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZl IGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5j ZSwgcmV0dXJuIFRZUEUuICAqLwogIAotQEAgLTExNjcxLDYgKzEyNDY3LDggQEAgc2V0X2RpZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTExODA4LDYgKzEyNDYyLDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog IHsKICAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOwogIAogKyAg ZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotICAgaWYgKGN1LT50eXBl X2hhc2ggPT0gTlVMTCkKLSAgICAgewotICAgICAgIGdkYl9hc3NlcnQgKGN1LT5wZXJfY3UgIT0g TlVMTCk7Ci1AQCAtMTE4MTMsMjMgKzEyNjExLDEzIEBAIHNob3dfZHdhcmYyX2NtZCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5KQorICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRoYXQg dGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKKyAgICAgIGluaXRpYWxpemVkIChpZiBu b3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCisgICAgICB3ZSBz aG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFyZWEgaXMK K0BAIC0xMTk2MywyMyArMTI2MTksMTMgQEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdzLCBp bnQgZnJvbV90dHkpCiAgICBjbWRfc2hvd19saXN0IChzaG93X2R3YXJmMl9jbWRsaXN0LCBmcm9t X3R0eSwgIiIpOwogIH0KICAKQEAgLTc1NjAsNyArNDAyMSw3IEBAIGluZGV4IDRjY2UzNmIuLmZi MGE2OTMgMTAwNjQ0CiAgfQogIAogIC8qIG11bm1hcCBkZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklM RSwgaWYgbmVjZXNzYXJ5LiAgKi8KLUBAIC0xMTgzOCwxNSArMTI2MjYsMTUgQEAgc3RhdGljIHZv aWQKK0BAIC0xMTk4OCwxNSArMTI2MzQsMTUgQEAgc3RhdGljIHZvaWQKICBkd2FyZjJfcGVyX29i amZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCiAgewogICAgc3Ry dWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZGF0YSA9IGQ7CkBAIC03NTg1LDM5ICs0MDQ2LDU2IEBA IGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgfQogIAogIHZvaWQgX2luaXRpYWxpemVf ZHdhcmYyX3JlYWQgKHZvaWQpOwotQEAgLTExODU0LDYgKzEyNjQyLDcgQEAgdm9pZCBfaW5pdGlh bGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7Ci0gdm9pZAotIF9pbml0aWFsaXplX2R3YXJmMl9yZWFk ICh2b2lkKQotIHsKLSsgIGRpZV9saXN0ID0gVkVDX2FsbG9jIChkaWVfaW5mb19wLCAzMik7Ci0g ICBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleQotICAgICA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YV93 aXRoX2NsZWFudXAgKE5VTEwsIGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlKTsKLSAKIGRpZmYgLS1n aXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwotaW5kZXggNmU3OWQ0YS4uMTk4YmFl MyAxMDA2NDQKK2luZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CiAtLS0gYS9nZGIvZWxmcmVh ZC5jCiArKysgYi9nZGIvZWxmcmVhZC5jCi1AQCAtNzI4LDEwICs3MjgsMTggQEAgZWxmX3N5bWZp bGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBtYWlubGluZSkKK0BAIC04Nzks MjAgKzg3OSwxMyBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg aW50IHN5bWZpbGVfZmxhZ3MpCiAgCQkJCXN0cl9zZWN0LT5maWxlcG9zLAogIAkJCQliZmRfc2Vj dGlvbl9zaXplIChhYmZkLCBzdHJfc2VjdCkpOwogICAgICB9Ci0rCistICBpZiAoZHdhcmYyX2hh c19pbmZvIChvYmpmaWxlKSkKKy0gICAgeworLSAgICAgIC8qIERXQVJGIDIgc2VjdGlvbnMgKi8K Ky0gICAgICBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKG9iamZpbGUpOworLSAgICB9CistCistICAv KiBGSVhNRToga2V0dGVuaXMvMjAwMzA1MDQ6IFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgaW50ZWdy YXRlZCB3aXRoCistICAgICBkd2FyZjJyZWFkLmMgaW4gYSBiZXR0ZXIgd2F5LiAgKi8KKy0gIGR3 YXJmMl9idWlsZF9mcmFtZV9pbmZvIChvYmpmaWxlKTsKKyAKICsgIGlmIChkd2FyZjJfaGFzX2lu Zm8gKG9iamZpbGUpKQogKyAgICBkd2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJtYXAgKG9iamZpbGUp OwotK30KLSsKLStzdGF0aWMgdm9pZAotK3JlYWRfcHN5bXMgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQotK3sKLSAgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQorICAgLyogSWYgdGhl IGZpbGUgaGFzIGl0cyBvd24gc3ltYm9sIHRhYmxlcyBpdCBoYXMgbm8gc2VwYXJhdGUgZGVidWcg aW5mby4KKyAgICAgIGAuZHluc3ltJy9gLnN5bXRhYicgZ28gdG8gTVNZTUJPTFMsIGAuZGVidWdf aW5mbycgZ29lcyB0byBTWU1UQUJTL1BTWU1UQUJTLgorICAgICAgYC5nbnVfZGVidWdsaW5rJyBt YXkgbm8gbG9uZ2VyIGJlIHByZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCist ICBpZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkpCisrICBlbHNlCiAg ICAgIHsKLSAgICAgICAvKiBEV0FSRiAyIHNlY3Rpb25zICovCi0tICAgICAgZHdhcmYyX2J1aWxk X3BzeW10YWJzIChvYmpmaWxlLCBtYWlubGluZSk7Ci0rICAgICAgZHdhcmYyX2J1aWxkX3BzeW10 YWJzIChvYmpmaWxlLCAwKTsKKyAgICAgICBjaGFyICpkZWJ1Z2ZpbGU7CisgCitAQCAtOTEwLDYg KzkwMywyMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50 IHN5bWZpbGVfZmxhZ3MpCiAgICAgIH0KKyB9CiAgCi0gICAvKiBGSVhNRToga2V0dGVuaXMvMjAw MzA1MDQ6IFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgaW50ZWdyYXRlZCB3aXRoCi1AQCAtODgxLDYg Kzg4OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9Cisrc3RhdGljIHZv aWQKKytyZWFkX3BzeW1zIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBpZiAoZHdh cmYyX2hhc19pbmZvIChvYmpmaWxlKSkKKysgICAgeworKyAgICAgIC8qIERXQVJGIDIgc2VjdGlv bnMgKi8KKysgICAgICBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKG9iamZpbGUpOworKyAgICB9Cisr CisrICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMzA1MDQ6IFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUg aW50ZWdyYXRlZCB3aXRoCisrICAgICBkd2FyZjJyZWFkLmMgaW4gYSBiZXR0ZXIgd2F5LiAgKi8K KysgIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChvYmpmaWxlKTsKKyt9CisrCisgLyogVGhpcyBj bGVhbnMgdXAgdGhlIG9iamZpbGUncyBkZXByZWNhdGVkX3N5bV9zdGFiX2luZm8gcG9pbnRlciwg YW5kCisgICAgdGhlIGNoYWluIG9mIHN0YWJfc2VjdGlvbl9pbmZvJ3MsIHRoYXQgbWlnaHQgYmUg ZGFuZ2xpbmcgZnJvbQorICAgIGl0LiAgKi8KK0BAIC0xMDUyLDYgKzEwNTksNyBAQCBzdGF0aWMg c3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQogICAgZWxmX25ld19pbml0LAkJCS8qIHN5bV9u ZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAqLwogICAgZWxmX3N5 bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiByZWFkIGluaXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5 bV9yZWFkKCkgKi8KICAgIGVsZl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5 bWJvbCBmaWxlIGludG8gc3ltdGFiICovCkBAIC03NjI2LDYwICs0MTA0LDIzIEBAIGluZGV4IDZl NzlkNGEuLjE5OGJhZTMgMTAwNjQ0CiAgICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJLyogc3lt X29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24gKi8KICAgIGVsZl9z eW1maWxlX3NlZ21lbnRzLAkJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlv biBmcm9tCiBkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKLWluZGV4IDI5MjY0 NjUuLmI1M2Y4OTUgMTAwNjQ0CitpbmRleCAzZGJiYzhiLi40ZGViODJkIDEwMDY0NAogLS0tIGEv Z2RiL2V2YWwuYwogKysrIGIvZ2RiL2V2YWwuYwotQEAgLTM5LDggKzM5LDEyIEBACitAQCAtMzks MTAgKzM5LDEyIEBACiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAjaW5jbHVkZSAicmVnY2Fj aGUuaCIKICAjaW5jbHVkZSAidXNlci1yZWdzLmgiCiArI2luY2x1ZGUgInB5dGhvbi9weXRob24u aCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKLSsjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKLSsj aW5jbHVkZSAib2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKKyAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKICAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgogKyNpbmNsdWRlICJk d2FyZjJsb2MuaCIKICAKICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotQEAgLTY1MSw2ICs2 NTUsMzYgQEAgcHRybWF0aF90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICB9Ci0gfQot IAotKy8qIENvbnN0cnVjdHMgYSBmYWtlIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXIg dHlwZXMuICovCi0rc3RhdGljIHZvaWQKLStmcmVlX3BhcmFtX3R5cGVzICh2b2lkICphcmcpCi0r ewotKyAgc3RydWN0IHR5cGUgKnR5cGUgPSAoc3RydWN0IHR5cGUgKikgYXJnOwotKyAgeGZyZWUg KFRZUEVfRklFTERTICh0eXBlKSk7Ci0rICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsK LSsgIHhmcmVlICh0eXBlKTsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLSttYWtlX3Bh cmFtcyAoaW50IG51bV90eXBlcywgc3RydWN0IHR5cGUgKipwYXJhbV90eXBlcykKLSt7Ci0rICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IFhaQUxMT0MgKHN0cnVjdCB0eXBlKTsKLSsgIFRZUEVfTUFJTl9U WVBFICh0eXBlKSA9IFhaQUxMT0MgKHN0cnVjdCBtYWluX3R5cGUpOwotKyAgVFlQRV9MRU5HVEgg KHR5cGUpID0gMTsKLSsgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVfTUVUSE9EOwotKyAg VFlQRV9WUFRSX0ZJRUxETk8gKHR5cGUpID0gLTE7Ci0rICBUWVBFX0NIQUlOICh0eXBlKSA9IHR5 cGU7Ci0rICBUWVBFX05GSUVMRFMgKHR5cGUpID0gbnVtX3R5cGVzOwotKyAgVFlQRV9GSUVMRFMg KHR5cGUpID0gKHN0cnVjdCBmaWVsZCAqKQotKyAgICBUWVBFX1pBTExPQyAodHlwZSwgc2l6ZW9m IChzdHJ1Y3QgZmllbGQpICogbnVtX3R5cGVzKTsKLSsKLSsgIHdoaWxlIChudW1fdHlwZXMtLSA+ IDApCi0rICAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbnVtX3R5cGVzKSA9IHBhcmFtX3R5cGVz W251bV90eXBlc107Ci0rCi0rICBtYWtlX2NsZWFudXAgKGZyZWVfcGFyYW1fdHlwZXMsIHR5cGUp OwotKyAgcmV0dXJuIHR5cGU7Ci0rfQotKwotIHN0cnVjdCB2YWx1ZSAqCi0gZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCQkJICBzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLUBAIC02NzEsNiArNzA1LDcgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtNjk2LDYgKzY5OCw3 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAog ICAgbG9uZyBtZW1fb2Zmc2V0OwogICAgc3RydWN0IHR5cGUgKiphcmdfdHlwZXM7CiAgICBpbnQg c2F2ZV9wb3MxOwpAQCAtNzY4Nyw4NyArNDEyOCw3IEBAIGluZGV4IDI5MjY0NjUuLmI1M2Y4OTUg MTAwNjQ0CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29k ZTsKLUBAIC02ODQsNyArNzE5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCi0gCWdvdG8gbm9zaWRlcmV0OwotICAgICAgIGFyZzEgPSB2YWx1 ZV9hZ2dyZWdhdGVfZWx0IChleHAtPmVsdHNbcGMgKyAxXS50eXBlLAotIAkJCQkgICZleHAtPmVs dHNbcGMgKyAzXS5zdHJpbmcsCi0tCQkJCSAgMCwgbm9zaWRlKTsKLSsJCQkJICBleHBlY3RfdHlw ZSwgMCwgbm9zaWRlKTsKLSAgICAgICBpZiAoYXJnMSA9PSBOVUxMKQotIAllcnJvciAoXygiVGhl cmUgaXMgbm8gZmllbGQgbmFtZWQgJXMiKSwgJmV4cC0+ZWx0c1twYyArIDNdLnN0cmluZyk7Ci0g ICAgICAgcmV0dXJuIGFyZzE7Ci1AQCAtMTI5Myw3ICsxMzI4LDYgQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAgYXJndmVjID0gKHN0 cnVjdCB2YWx1ZSAqKikgYWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSAqIChuYXJncyAr IDMpKTsKLSAgICAgICBpZiAob3AgPT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9Q X01QVFIpCi0gCXsKLS0JICBuYXJncysrOwotIAkgIC8qIEZpcnN0LCBldmFsdWF0ZSB0aGUgc3Ry dWN0dXJlIGludG8gYXJnMiAqLwotIAkgIHBjMiA9ICgqcG9zKSsrOwotIAotQEAgLTEzMTcsMjEg KzEzNTEsNDAgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCi0gCi0gCSAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBv cywgbm9zaWRlKTsKLSAKLS0JICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmICh2YWx1ZV90 eXBlIChhcmcxKSkpCi0tCSAgICAgICE9IFRZUEVfQ09ERV9NRVRIT0RQVFIpCi0tCSAgICBlcnJv ciAoXygiTm9uLXBvaW50ZXItdG8tbWVtYmVyIHZhbHVlIHVzZWQgaW4gcG9pbnRlci10by1tZW1i ZXIgIgotLQkJICAgICAiY29uc3RydWN0IikpOwotLQotLQkgIGlmIChub3NpZGUgPT0gRVZBTF9B Vk9JRF9TSURFX0VGRkVDVFMpCi0rCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZzEpKTsKLSsJICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCi0gCSAgICB7Ci0tCSAgICAg IHN0cnVjdCB0eXBlICptZXRob2RfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy ZzEpKTsKLS0JICAgICAgYXJnMSA9IHZhbHVlX3plcm8gKG1ldGhvZF90eXBlLCBub3RfbHZhbCk7 Ci0rCSAgICBjYXNlIFRZUEVfQ09ERV9NRVRIT0RQVFI6Ci0rCSAgICAgIGlmIChub3NpZGUgPT0g RVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCi0rCQlhcmcxID0gdmFsdWVfemVybyAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksIG5vdF9sdmFsKTsKLSsJICAgICAgZWxzZQotKwkJYXJnMSA9IGNwbHVz X21ldGhvZF9wdHJfdG9fdmFsdWUgKCZhcmcyLCBhcmcxKTsKLSsKLSsJICAgICAgLyogTm93LCBz YXkgd2hpY2ggYXJndW1lbnQgdG8gc3RhcnQgZXZhbHVhdGluZyBmcm9tICovCi0rCSAgICAgIG5h cmdzKys7Ci0rCSAgICAgIHRlbSA9IDI7Ci0rCSAgICAgIGFyZ3ZlY1sxXSA9IGFyZzI7Ci0rCSAg ICAgIGJyZWFrOwotKwotKwkgICAgY2FzZSBUWVBFX0NPREVfTUVNQkVSUFRSOgotKwkgICAgICAv KiBOb3csIGNvbnZlcnQgdGhlc2UgdmFsdWVzIHRvIGFuIGFkZHJlc3MuICAqLwotKwkgICAgICBh cmcyID0gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9ET01BSU5fVFlQRSAo dHlwZSkpLAotKwkJCQkgYXJnMik7Ci0rCi0rCSAgICAgIG1lbV9vZmZzZXQgPSB2YWx1ZV9hc19s b25nIChhcmcxKTsKLSsKLSsJICAgICAgYXJnMSA9IHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3Vw X3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAotKwkJCQkJIHZhbHVlX2Fz X2xvbmcgKGFyZzIpICsgbWVtX29mZnNldCk7Ci0rCSAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFy ZzEpOwotKwkgICAgICB0ZW0gPSAxOwotKwkgICAgICBicmVhazsKLSsKLSsJICAgIGRlZmF1bHQ6 Ci0rCSAgICAgIGVycm9yIChfKCJOb24tcG9pbnRlci10by1tZW1iZXIgdmFsdWUgdXNlZCBpbiBw b2ludGVyLXRvLW1lbWJlciAiCi0rCQkgICAgICAgImNvbnN0cnVjdCIpKTsKLSAJICAgIH0KLS0J ICBlbHNlCi0tCSAgICBhcmcxID0gY3BsdXNfbWV0aG9kX3B0cl90b192YWx1ZSAoJmFyZzIsIGFy ZzEpOwotIAotLQkgIC8qIE5vdywgc2F5IHdoaWNoIGFyZ3VtZW50IHRvIHN0YXJ0IGV2YWx1YXRp bmcgZnJvbSAqLwotLQkgIHRlbSA9IDI7Ci0rCSAgYXJndmVjWzBdID0gYXJnMTsKLSAJfQotICAg ICAgIGVsc2UgaWYgKG9wID09IFNUUlVDVE9QX1NUUlVDVCB8fCBvcCA9PSBTVFJVQ1RPUF9QVFIp Ci0gCXsKLUBAIC0xNDU3LDggKzE1MTAsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJfQotICAgICAgIGVsc2UgaWYgKG9wID09IFNUUlVD VE9QX01FTUJFUiB8fCBvcCA9PSBTVFJVQ1RPUF9NUFRSKQotIAl7Ci0tCSAgYXJndmVjWzFdID0g YXJnMjsKLS0JICBhcmd2ZWNbMF0gPSBhcmcxOwotKwkgIC8qIFBvaW50ZXIgdG8gbWVtYmVyLiAg YXJndmVjIGlzIGFscmVhZHkgc2V0IHVwLiAgKi8KLSAJfQotICAgICAgIGVsc2UgaWYgKG9wID09 IE9QX1ZBUl9WQUxVRSkKLSAJewotQEAgLTE1NDksNiArMTYwMSw4IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTE1ODgsNiArMTU5MSw4 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAog IAogICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5n IHdpdGguICAqLwogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhw LCBwb3MsIG5vc2lkZSk7CkBAIC03Nzc2LDcgKzQxMzcsNyBAQCBpbmRleCAyOTI2NDY1Li5iNTNm ODk1IDEwMDY0NAogICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcx KSk7CiAgICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCi1AQCAtMTU2OSw2ICsxNjIz LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs CitAQCAtMTYwOCw2ICsxNjEzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogIAkg ICAgfQogIAl9IApAQCAtNzc4NCw0NSArNDE0NSw3IEBAIGluZGV4IDI5MjY0NjUuLmI1M2Y4OTUg MTAwNjQ0CiAgCiAgICAgICAgc3dpdGNoIChjb2RlKQogIAl7Ci1AQCAtMTcxNiw2ICsxNzcxLDM3 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAot IAkgIGVycm9yIChfKCJub24tcG9pbnRlci10by1tZW1iZXIgdmFsdWUgdXNlZCBpbiBwb2ludGVy LXRvLW1lbWJlciBjb25zdHJ1Y3QiKSk7Ci0gCX0KLSAKLSsgICAgY2FzZSBUWVBFX0lOU1RBTkNF OgotKyAgICAgIG5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdj b25zdCk7Ci0rICAgICAgYXJnX3R5cGVzID0gKHN0cnVjdCB0eXBlICoqKSBhbGxvY2EgKG5hcmdz ICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7Ci0rICAgICAgZm9yIChpeCA9IDA7IGl4IDwgbmFy Z3M7ICsraXgpCi0rCWFyZ190eXBlc1tpeF0gPSBleHAtPmVsdHNbcGMgKyAxICsgaXggKyAxXS50 eXBlOwotKwotKyAgICAgIGV4cGVjdF90eXBlID0gbWFrZV9wYXJhbXMgKG5hcmdzLCBhcmdfdHlw ZXMpOwotKyAgICAgICoocG9zKSArPSAzICsgbmFyZ3M7Ci0rICAgICAgcmV0dXJuIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwotKwotKyAg ICBjYXNlIFRZUEVfSU5TVEFOQ0VfTE9PS1VQOgotKyAgICAgIHsKLSsJaW50IGk7Ci0rCXN0cnVj dCBzeW1ib2wgKnN5bTsKLSsJc3RydWN0IHR5cGUgKiphcmdfdHlwZXM7Ci0rCSgqcG9zKSArPSAz OwotKwlwcmludGYgKCJUWVBFX0lOU1RBTkNFX0xPT0tVUFxuIik7Ci0rCWFyZ190eXBlcyA9IChz dHJ1Y3QgdHlwZSAqKikgYWxsb2NhIChUWVBFX05GSUVMRFMgKGV4cGVjdF90eXBlKQotKwkJCQkJ ICAgICAqIHNpemVvZiAoc3RydWN0IHR5cGUgKikpOwotKwlmb3IgKGkgPSAwOyBpIDwgVFlQRV9O RklFTERTIChleHBlY3RfdHlwZSk7ICsraSkKLSsJICBhcmdfdHlwZXNbaV0gPSBUWVBFX0ZJRUxE X1RZUEUgKGV4cGVjdF90eXBlLCBpKTsKLSsJKHZvaWQpIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKGFy Z190eXBlcywgVFlQRV9ORklFTERTIChleHBlY3RfdHlwZSksCi0rCQkJCSAgICBOVUxMIC8qIG5v IG5lZWQgZm9yIG5hbWUgKi8sCi0rCQkJCSAgICAwIC8qIG5vdCBtZXRob2QgKi8sCi0rCQkJCSAg ICAwIC8qIHN0cmljdCBtYXRjaCAqLywKLSsJCQkJICAgIE5VTEwsIGV4cC0+ZWx0c1twYyArIDFd LnN5bWJvbCwgTlVMTCwKLSsJCQkJICAgICZzeW0sIE5VTEwpOwotKwlpID0gMDsKLSsgICAgICB9 Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgQklOT1BfQ09OQ0FUOgotICAgICAgIGFyZzEg PSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0gICAg ICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRl KTsKLUBAIC0xOTg3LDEzICsyMDczLDE5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIwNDAsMTMgKzIwNDYsMTkgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICAgICAgewogIAlp bnQgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOwogIAlpbnQgYXJyYXlfc2l6ZV9h cnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKQEAgLTc4NDIsNyArNDE2NSw3IEBAIGluZGV4IDI5MjY0 NjUuLmI1M2Y4OTUgMTAwNjQ0CiAgCXRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAoYXJnMSkpOwogIAluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOwog IAotQEAgLTIwMjMsNiArMjExNSw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIwNzYsNiArMjA4OCw5IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgICAgdXBwZXIgPSBmNzdf Z2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKICAJICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJv dW5kICh0bXBfdHlwZSk7CiAgCkBAIC03ODUyLDcgKzQxNzUsNyBAQCBpbmRleCAyOTI2NDY1Li5i NTNmODk1IDEwMDY0NAogIAkgICAgYXJyYXlfc2l6ZV9hcnJheVtuYXJncyAtIGkgLSAxXSA9IHVw cGVyIC0gbG93ZXIgKyAxOwogIAogIAkgICAgLyogWmVyby1ub3JtYWxpemUgc3Vic2NyaXB0cyBz byB0aGF0IG9mZnNldHRpbmcgd2lsbCB3b3JrLiAqLwotQEAgLTIwNDEsMTMgKzIxMzYsMjUgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAt MjA5NCwxMyArMjEwOSwyNSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKICAJICAgICAgdG1wX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RB UkdFVF9UWVBFICh0bXBfdHlwZSkpOwogIAkgIH0KICAKQEAgLTc4NjQsMTAgKzQxODcsNyBAQCBp bmRleCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0NAogLQlvZmZzZXRfaXRlbSA9IHN1YnNjcmlwdF9h cnJheVtuZGltZW5zaW9ucyAtIDFdOwogKwlvZmZzZXRfaXRlbSA9IDA7CiArCW9mZnNldF9ieXRl ID0gMDsKLSAKLS0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID4gMDsgLS1pKQotLQkgIG9m ZnNldF9pdGVtID0KLS0JICAgIGFycmF5X3NpemVfYXJyYXlbaSAtIDFdICogb2Zmc2V0X2l0ZW0g KyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworKwogKwlmb3IgKGkgPSBuZGltZW5zaW9ucyAtIDE7 IGkgPj0gMDsgLS1pKQogKwkgIHsKICsJICAgIG9mZnNldF9pdGVtICo9IGFycmF5X3NpemVfYXJy YXlbaV07CkBAIC03ODc2LDEzICs0MTk2LDE2IEBAIGluZGV4IDI5MjY0NjUuLmI1M2Y4OTUgMTAw NjQ0CiArCSAgICBlbHNlCiArCSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtp XSAqIGJ5dGVfc3RyaWRlX2FycmF5W2ldOwogKwkgIH0KLSsKKyAKKy0JZm9yIChpID0gbmRpbWVu c2lvbnMgLSAxOyBpID4gMDsgLS1pKQorLQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3Np emVfYXJyYXlbaSAtIDFdICogb2Zmc2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwog KwllbGVtZW50X3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUp KTsKICsJb2Zmc2V0X2J5dGUgKz0gb2Zmc2V0X2l0ZW0gKiBlbGVtZW50X3NpemU7CiAgCiAgCS8q IExldCB1cyBub3cgcGxheSBhIGRpcnR5IHRyaWNrOiB3ZSB3aWxsIHRha2UgYXJnMSAKICAJICAg d2hpY2ggaXMgYSB2YWx1ZSBub2RlIHBvaW50aW5nIHRvIHRoZSB0b3Btb3N0IGxldmVsCi1AQCAt MjA1Nyw3ICsyMTY0LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCitAQCAtMjExMCw3ICsyMTM3LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgIHJldHVybnMgdGhlIGNvcnJlY3Qg dHlwZSB2YWx1ZSAqLwogIAogIAlkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIChhcmcxLCB0bXBf dHlwZSk7CkBAIC03ODkxLDcgKzQyMTQsNyBAQCBpbmRleCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0 NAogICAgICAgIH0KICAKICAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLUBAIC0yMjkxLDE0 ICsyMzk4LDIyIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLAorQEAgLTIzNDQsMTQgKzIzNzEsMjIgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk IChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICAgICAgaWYgKGV4cGVjdF90eXBlICYmIFRZ UEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCiAgCWV4cGVjdF90eXBlID0g VFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0X3R5cGUpKTsKICAgICAgICBh cmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7CkBA IC03OTE2LDcgKzQyMzksNyBAQCBpbmRleCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0NAogICAgICAg IGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKICAJewogIAkgIHR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAtMjMwNywxMiArMjQy MiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKK0BAIC0yMzYwLDEyICsyMzk1LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgIC8qIEluIEMgeW91IGNhbiBkZXJlZmVyZW5jZSBh biBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAqLwogIAkgICAgICB8fCBUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9BUlJBWQogIAkgICAgKQpAQCAtNzk0MCw3ICs0MjYzLDcgQEAgaW5k ZXggMjkyNjQ2NS4uYjUzZjg5NSAxMDA2NDQKICAJICBlbHNlCiAgCSAgICBlcnJvciAoXygiQXR0 ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikpOwogIAl9Ci1A QCAtMjMyMiw5ICsyNDQzLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzNzUsOSArMjQxNiwxNCBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJIGRvLiAgImxvbmcgbG9uZyIg dmFyaWFibGVzIGFyZSByYXJlIGVub3VnaCB0aGF0CiAgCSBCVUlMVElOX1RZUEVfTE9OR0VTVCB3 b3VsZCBzZWVtIHRvIGJlIGEgbWlzdGFrZS4gICovCiAgICAgICAgaWYgKFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX0lOVCkKQEAgLTc5NTgsMTYgKzQyODEsNyBAQCBpbmRleCAyOTI2NDY1 Li5iNTNmODk1IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1BfQUREUjoKICAgICAgICAvKiBDKys6 IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCi1AQCAtMjU5OCw3 ICsyNzI0LDcgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9hZGRyZXNzIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgKnBvcywKLSAgICAgICAoKnBvcykgKz0gNSArIEJZVEVTX1RPX0VYUF9FTEVN ICh0ZW0gKyAxKTsKLSAgICAgICB4ID0gdmFsdWVfYWdncmVnYXRlX2VsdCAoZXhwLT5lbHRzW3Bj ICsgMV0udHlwZSwKLSAJCQkgICAgICAgJmV4cC0+ZWx0c1twYyArIDNdLnN0cmluZywKLS0JCQkg ICAgICAgMSwgbm9zaWRlKTsKLSsJCQkgICAgICAgTlVMTCwgMSwgbm9zaWRlKTsKLSAgICAgICBp ZiAoeCA9PSBOVUxMKQotIAllcnJvciAoXygiVGhlcmUgaXMgbm8gZmllbGQgbmFtZWQgJXMiKSwg JmV4cC0+ZWx0c1twYyArIDNdLnN0cmluZyk7Ci0gICAgICAgcmV0dXJuIHg7Ci1AQCAtMjY0Myw3 ICsyNzY5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNz aW9uICpleHAsCitAQCAtMjY5Niw3ICsyNzQyLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29l cmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9w OwogICAgaW50IHBjOwpAQCAtNzk3Niw3ICs0MjkwLDcgQEAgaW5kZXggMjkyNjQ2NS4uYjUzZjg5 NSAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwog IAotQEAgLTI2NTQsMTIgKzI3ODAsMTcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24g KHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjcwNywxMiArMjc1MywxNyBAQCBldmFsdWF0 ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewog ICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5z eW1ib2w7CkBAIC03OTk1LDcgKzQzMDksNyBAQCBpbmRleCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0 NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMjcxMSw5ICsyODQyLDEz IEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgKnBvcykKK0BAIC0yNzY0LDkgKzI4MTUsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXpl b2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQogIAogICAgICBjYXNlIE9QX1ZB Ul9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTgwMTMsNjMgKzQzMjcsMTcgQEAgaW5k ZXggMjkyNjQ2NS4uYjUzZjg5NSAxMDA2NDQKICAgICAgZGVmYXVsdDoKICAgICAgICB2YWwgPSBl dmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIEVWQUxfQVZPSURfU0lERV9FRkZF Q1RTKTsKIGRpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAot aW5kZXggZWZmZTFmMC4uM2UwODNjYSAxMDA2NDQKK2luZGV4IGU0ZTg1OTguLmNhOTZiOWIgMTAw NjQ0CiAtLS0gYS9nZGIvZXhwcmVzc2lvbi5oCiArKysgYi9nZGIvZXhwcmVzc2lvbi5oCi1AQCAt ODgsNiArODgsMTYgQEAgZW51bSBleHBfb3Bjb2RlCi0gICAgICAgIHdoZW4gWCBpcyBhIHBvaW50 ZXIgaW5zdGVhZCBvZiBhbiBhZ2dyZWdhdGUuICAqLwotICAgICBTVFJVQ1RPUF9NUFRSLAotIAot KyAgICAvKiBUWVBFX0lOU1RBTkNFIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgYSBz cGVjaWZpYwotKyAgICAgICB0eXBlIGluc3RhbnRpYXRpb24gZm9yIG92ZXJsb2FkZWQgbWV0aG9k cy9mdW5jdGlvbnMuIFRoZSBmb3JtYXQKLSsgICAgICAgaXM6IFRZUEVfSU5TVEFOQ0UgbnVtX3R5 cGVzIHR5cGUwIC4uLiB0eXBlTiBudW1fdHlwZXMgVFlQRV9JTlNUQU5DRSovCi0rICAgIFRZUEVf SU5TVEFOQ0UsCi0rCi0rICAgIC8qIFRZUEVfSU5TVEFOQ0VfTE9PS1VQIGlzIHVzZWQgd2hlbiB0 aGUgdXNlciBzcGVjaWZpZXMgYSBzcGVjaWZpYwotKyAgICAgICB0eXBlIGluc3RhbnRpYXRpb24g b2YgYSBmdW5jdGlvbiAobm90IGEgbWV0aG9kKS4gSW4gdGhpcyBjYXNlLAotKyAgICAgICB3ZSBt dXN0IHRvc3MgdGhlIHJlc3VsdHMgb2YgdGhlIHBhcnNlciBhbmQgbWFudWFsbHkgZG8gdGhlIGxv b2t1cC4gKi8KLSsgICAgVFlQRV9JTlNUQU5DRV9MT09LVVAsCi0rCi0gICAgIC8qIGVuZCBvZiBD KysuICAqLwotIAotICAgICAvKiBGb3IgTW9kdWxhLTIgaW50ZWdlciBkaXZpc2lvbiBESVYgKi8K LUBAIC00MzgsNCArNDQ4LDUgQEAgZXh0ZXJuIGNoYXIgKm9wX3N0cmluZyAoZW51bSBleHBfb3Bj b2RlKTsKK0BAIC00NDUsNCArNDQ1LDUgQEAgZXh0ZXJuIGNoYXIgKm9wX3N0cmluZyAoZW51bSBl eHBfb3Bjb2RlKTsKICBleHRlcm4gdm9pZCBkdW1wX3Jhd19leHByZXNzaW9uIChzdHJ1Y3QgZXhw cmVzc2lvbiAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopOwogIGV4dGVybiB2b2lkIGR1bXBf cHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICop OwogIAogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoRVhQUkVTU0lPTl9IKSAqLwotZGlmZiAtLWdp dCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLWluZGV4IGMwNGM4ZjQuLmRkY2Q0NjAgMTAw NjQ0Ci0tLS0gYS9nZGIvZi1leHAueQotKysrIGIvZ2RiL2YtZXhwLnkKLUBAIC0xOTYsNiArMTk2 LDcgQEAgc3RhdGljIGludCBwYXJzZV9udW1iZXIgKGNoYXIgKiwgaW50LCBpbnQsIFlZU1RZUEUg Kik7Ci0gLyogU3BlY2lhbCB0eXBlIGNhc2VzLCBwdXQgaW4gdG8gYWxsb3cgdGhlIHBhcnNlciB0 byBkaXN0aW5ndWlzaCBkaWZmZXJlbnQKLSAgICBsZWdhbCBiYXNldHlwZXMuICAqLwotICV0b2tl biBJTlRfS0VZV09SRCBJTlRfUzJfS0VZV09SRCBMT0dJQ0FMX1MxX0tFWVdPUkQgTE9HSUNBTF9T Ml9LRVlXT1JEIAotKyV0b2tlbiBMT0dJQ0FMX1M4X0tFWVdPUkQgCi0gJXRva2VuIExPR0lDQUxf S0VZV09SRCBSRUFMX0tFWVdPUkQgUkVBTF9TOF9LRVlXT1JEIFJFQUxfUzE2X0tFWVdPUkQgCi0g JXRva2VuIENPTVBMRVhfUzhfS0VZV09SRCBDT01QTEVYX1MxNl9LRVlXT1JEIENPTVBMRVhfUzMy X0tFWVdPUkQgCi0gJXRva2VuIEJPT0xfQU5EIEJPT0xfT1IgQk9PTF9OT1QgICAKLUBAIC02MDYs NiArNjA3LDggQEAgdHlwZWJhc2UgIC8qIEltcGxlbWVudHMgKGFwcHJveGltYXRlbHkpOiAodHlw ZS1xdWFsaWZpZXIpKiB0eXBlLXNwZWNpZmllciAqLwotIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUt PmJ1aWx0aW5faW50ZWdlcl9zMjsgfQotIAl8CUNIQVJBQ1RFUiAKLSAJCQl7ICQkID0gcGFyc2Vf Zl90eXBlLT5idWlsdGluX2NoYXJhY3RlcjsgfQotKwl8CUxPR0lDQUxfUzhfS0VZV09SRAotKwkJ CXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbF9zODt9Ci0gCXwJTE9HSUNBTF9L RVlXT1JEIAotIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbDsgfQotIAl8 CUxPR0lDQUxfUzJfS0VZV09SRAotQEAgLTg1OCw2ICs4NjEsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHRva2VuIGY3N19rZXl3b3Jkc1tdID0KLSAgIHsgImludGVnZXJfMiIsIElOVF9TMl9LRVlX T1JELCBCSU5PUF9FTkQgfSwKLSAgIHsgImxvZ2ljYWxfMSIsIExPR0lDQUxfUzFfS0VZV09SRCwg QklOT1BfRU5EIH0sCi0gICB7ICJsb2dpY2FsXzIiLCBMT0dJQ0FMX1MyX0tFWVdPUkQsIEJJTk9Q X0VORCB9LAotKyAgeyAibG9naWNhbF84IiwgTE9HSUNBTF9TOF9LRVlXT1JELCBCSU5PUF9FTkQg fSwKLSAgIHsgImNvbXBsZXhfOCIsIENPTVBMRVhfUzhfS0VZV09SRCwgQklOT1BfRU5EIH0sCi0g ICB7ICJpbnRlZ2VyIiwgSU5UX0tFWVdPUkQsIEJJTk9QX0VORCB9LAotICAgeyAibG9naWNhbCIs IExPR0lDQUxfS0VZV09SRCwgQklOT1BfRU5EIH0sCiBkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5j IGIvZ2RiL2YtbGFuZy5jCi1pbmRleCAxOWMxMzE2Li40Y2MyYTQwIDEwMDY0NAoraW5kZXggYjkx NGI0OS4uNzliNDZkMiAxMDA2NDQKIC0tLSBhL2dkYi9mLWxhbmcuYwogKysrIGIvZ2RiL2YtbGFu Zy5jCiBAQCAtMzEsNiArMzEsOCBAQApAQCAtODA4MSw0NSArNDM0OSw3IEBAIGluZGV4IDE5YzEz MTYuLjRjYzJhNDAgMTAwNjQ0CiAgCiAgCiAgLyogRm9sbG93aW5nIGlzIGR1YmlvdXMgc3R1ZmYg dGhhdCBoYWQgYmVlbiBpbiB0aGUgeGNvZmYgcmVhZGVyLiAqLwotQEAgLTU1LDIwICs1Nyw2IEBA IHR5cGVkZWYgc3RydWN0IHNhdmVkX2JmX3N5bW51bSBTQVZFRF9CRiwgKlNBVkVEX0JGX1BUUjsK LSAvKiBMb2NhbCBmdW5jdGlvbnMgKi8KLSAKLSBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9mX2xh bmd1YWdlICh2b2lkKTsKLS0jaWYgMAotLXN0YXRpYyB2b2lkIGNsZWFyX2Z1bmN0aW9uX2xpc3Qg KHZvaWQpOwotLXN0YXRpYyBsb25nIGdldF9iZl9mb3JfZmNuIChsb25nKTsKLS1zdGF0aWMgdm9p ZCBjbGVhcl9iZl9saXN0ICh2b2lkKTsKLS1zdGF0aWMgdm9pZCBwYXRjaF9hbGxfY29tbW9uc19i eV9uYW1lIChjaGFyICosIENPUkVfQUREUiwgaW50KTsKLS1zdGF0aWMgU0FWRURfRjc3X0NPTU1P Tl9QVFIgZmluZF9maXJzdF9jb21tb25fbmFtZWQgKGNoYXIgKik7Ci0tc3RhdGljIHZvaWQgYWRk X2NvbW1vbl9lbnRyeSAoc3RydWN0IHN5bWJvbCAqKTsKLS1zdGF0aWMgdm9pZCBhZGRfY29tbW9u X2Jsb2NrIChjaGFyICosIENPUkVfQUREUiwgaW50LCBjaGFyICopOwotLXN0YXRpYyBTQVZFRF9G VU5DVElPTiAqYWxsb2NhdGVfc2F2ZWRfZnVuY3Rpb25fbm9kZSAodm9pZCk7Ci0tc3RhdGljIFNB VkVEX0JGX1BUUiBhbGxvY2F0ZV9zYXZlZF9iZl9ub2RlICh2b2lkKTsKLS1zdGF0aWMgQ09NTU9O X0VOVFJZX1BUUiBhbGxvY2F0ZV9jb21tb25fZW50cnlfbm9kZSAodm9pZCk7Ci0tc3RhdGljIFNB VkVEX0Y3N19DT01NT05fUFRSIGFsbG9jYXRlX3NhdmVkX2Y3N19jb21tb25fbm9kZSAodm9pZCk7 Ci0tc3RhdGljIHZvaWQgcGF0Y2hfY29tbW9uX2VudHJpZXMgKFNBVkVEX0Y3N19DT01NT05fUFRS LCBDT1JFX0FERFIsIGludCk7Ci0tI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQgZl9wcmludGNoYXIg KGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0pOwotIHN0 YXRpYyB2b2lkIGZfZW1pdF9jaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsCi1AQCAtMjU5 LDYgKzI0Nyw3IEBAIGVudW0gZl9wcmltaXRpdmVfdHlwZXMgewotICAgZl9wcmltaXRpdmVfdHlw ZV9sb2dpY2FsLAotICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3MxLAotICAgZl9wcmltaXRp dmVfdHlwZV9sb2dpY2FsX3MyLAotKyAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3M4LAotICAg Zl9wcmltaXRpdmVfdHlwZV9pbnRlZ2VyLAotICAgZl9wcmltaXRpdmVfdHlwZV9pbnRlZ2VyX3My LAotICAgZl9wcmltaXRpdmVfdHlwZV9yZWFsLAotQEAgLTI4OSw2ICsyNzgsOCBAQCBmX2xhbmd1 YWdlX2FyY2hfaW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgID0gYnVpbHRpbi0+ YnVpbHRpbl9sb2dpY2FsX3MxOwotICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJp bWl0aXZlX3R5cGVfbG9naWNhbF9zMl0KLSAgICAgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxf czI7Ci0rICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZl9wcmltaXRpdmVfdHlwZV9sb2dp Y2FsX3M4XQotKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zODsKLSAgIGxhaS0+cHJp bWl0aXZlX3R5cGVfdmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX3JlYWxdCi0gICAgID0gYnVpbHRp bi0+YnVpbHRpbl9yZWFsOwotICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJpbWl0 aXZlX3R5cGVfcmVhbF9zOF0KLUBAIC0zMDYsNiArMjk3LDQ2IEBAIGZfbGFuZ3VhZ2VfYXJjaF9p bmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0zMDYsNiArMzA4LDQ4IEBAIGZfbGFu Z3VhZ2VfYXJjaF9pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIGxhaS0+Ym9vbF90 eXBlX2RlZmF1bHQgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxfczI7CiAgfQogIApAQCAtODEz MSw2ICs0MzYxLDcgQEAgaW5kZXggMTljMTMxNi4uNGNjMmE0MCAxMDA2NDQKICsKICtzdGF0aWMg c3RydWN0IHN5bWJvbCAqCiArZl9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpu YW1lLAorKwkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAogKwkJCSAgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKICsJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICt7CkBAIC04 MTQ1LDcgKzQzNzYsNyBAQCBpbmRleCAxOWMxMzE2Li40Y2MyYTQwIDEwMDY0NAogKyAgICAgIHN0 cnVjdCB0eXBlICp0eXBlOwogKyAgICAgIHN0cnVjdCBzeW1ib2wgKnJldHZhbDsKICsKLSsgICAg ICBzeW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAodXNlLT5tb2R1bGVfbmFtZSwgYmxvY2ssIE1P RFVMRV9ET01BSU4pOworKyAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfZ2xvYmFsICh1c2UtPm1v ZHVsZV9uYW1lLCBOVUxMLCBibG9jaywgTU9EVUxFX0RPTUFJTik7CiArCiArICAgICAgLyogTW9k dWxlIG5hbWUgbG9va3VwIHNob3VsZCBub3QgZmFpbCB3aXRoIGNvcnJlY3QgZGVidWcgaW5mby4g ICovCiArICAgICAgaWYgKHN5bSA9PSBOVUxMKQpAQCAtODE1NSw3ICs0Mzg2LDggQEAgaW5kZXgg MTljMTMxNi4uNGNjMmE0MCAxMDA2NDQKICsgICAgICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9NT0RVTEUpOwogKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfTU9EVUxF X0JMT0NLICh0eXBlKSAhPSBOVUxMKTsKICsKLSsgICAgICByZXR2YWwgPSBsb29rdXBfYmxvY2tf c3ltYm9sIChUWVBFX01PRFVMRV9CTE9DSyAodHlwZSksIG5hbWUsIGRvbWFpbik7CisrICAgICAg cmV0dmFsID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoVFlQRV9NT0RVTEVfQkxPQ0sgKHR5cGUpLCBu YW1lLAorKwkJCQkgICAgbGlua2FnZV9uYW1lLCBkb21haW4pOwogKyAgICAgIGlmIChyZXR2YWwp CiArCXJldHVybiByZXR2YWw7CiArICAgIH0KQEAgLTgxNjYsNyArNDM5OCw3IEBAIGluZGV4IDE5 YzEzMTYuLjRjYzJhNDAgMTAwNjQ0CiAgLyogVGhpcyBpcyBkZWNsYXJlZCBpbiBjLWxhbmcuaCBi dXQgaXQgaXMgc2lsbHkgdG8gaW1wb3J0IHRoYXQgZmlsZSBmb3Igd2hhdAogICAgIGlzIGFscmVh ZHkganVzdCBhIGhhY2suICovCiAgZXh0ZXJuIGludCBjX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFs dWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKLUBAIC0zMzMsNyArMzY0LDcgQEAgY29uc3Qgc3RydWN0 IGxhbmd1YWdlX2RlZm4gZl9sYW5ndWFnZV9kZWZuID0KK0BAIC0zMzMsNyArMzc3LDcgQEAgY29u c3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZl9sYW5ndWFnZV9kZWZuID0KICAgIGNfdmFsdWVfcHJp bnQsCQkvKiBGSVhNRSAqLwogICAgTlVMTCwJCQkJLyogTGFuZ3VhZ2Ugc3BlY2lmaWMgc2tpcF90 cmFtcG9saW5lICovCiAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgCS8qIG5hbWVfb2ZfdGhp cyAqLwpAQCAtODE3NSw0MTUgKzQ0MDcsOCBAQCBpbmRleCAxOWMxMzE2Li40Y2MyYTQwIDEwMDY0 NAogICAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUsLyogbG9va3VwX3RyYW5zcGFyZW50 X3R5cGUgKi8KICAgIE5VTEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHN5bWJvbCBkZW1hbmds ZXIgKi8KICAgIE5VTEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIGNsYXNzX25hbWVfZnJvbV9w aHlzbmFtZSAqLwotQEAgLTM3Miw2ICs0MDMsMTAgQEAgYnVpbGRfZm9ydHJhbl90eXBlcyAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgID0gYXJjaF9ib29sZWFuX3R5cGUgKGdkYmFyY2gs IGdkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoKSwgMSwKLSAJCQkgImxvZ2ljYWwqMiIpOwotIAot KyAgYnVpbHRpbl9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbF9zOAotKyAgICA9IGFyY2hfYm9vbGVh bl90eXBlIChnZGJhcmNoLCBnZGJhcmNoX2xvbmdfbG9uZ19iaXQgKGdkYmFyY2gpLCAxLAotKwkJ CSAibG9naWNhbCo4Iik7Ci0rCi0gICBidWlsdGluX2ZfdHlwZS0+YnVpbHRpbl9pbnRlZ2VyCi0g ICAgID0gYXJjaF9pbnRlZ2VyX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJj aCksIDAsCi0gCQkJICJpbnRlZ2VyIik7Ci1AQCAtNDE4LDM5NSArNDUzLDMgQEAgX2luaXRpYWxp emVfZl9sYW5ndWFnZSAodm9pZCkKLSAKLSAgIGFkZF9sYW5ndWFnZSAoJmZfbGFuZ3VhZ2VfZGVm bik7Ci0gfQotLQotLSNpZiAwCi0tc3RhdGljIFNBVkVEX0JGX1BUUgotLWFsbG9jYXRlX3NhdmVk X2JmX25vZGUgKHZvaWQpCi0tewotLSAgU0FWRURfQkZfUFRSIG5ldzsKLS0KLS0gIG5ldyA9IChT QVZFRF9CRl9QVFIpIHhtYWxsb2MgKHNpemVvZiAoU0FWRURfQkYpKTsKLS0gIHJldHVybiAobmV3 KTsKLS19Ci0tCi0tc3RhdGljIFNBVkVEX0ZVTkNUSU9OICoKLS1hbGxvY2F0ZV9zYXZlZF9mdW5j dGlvbl9ub2RlICh2b2lkKQotLXsKLS0gIFNBVkVEX0ZVTkNUSU9OICpuZXc7Ci0tCi0tICBuZXcg PSAoU0FWRURfRlVOQ1RJT04gKikgeG1hbGxvYyAoc2l6ZW9mIChTQVZFRF9GVU5DVElPTikpOwot LSAgcmV0dXJuIChuZXcpOwotLX0KLS0KLS1zdGF0aWMgU0FWRURfRjc3X0NPTU1PTl9QVFIKLS1h bGxvY2F0ZV9zYXZlZF9mNzdfY29tbW9uX25vZGUgKHZvaWQpCi0tewotLSAgU0FWRURfRjc3X0NP TU1PTl9QVFIgbmV3OwotLQotLSAgbmV3ID0gKFNBVkVEX0Y3N19DT01NT05fUFRSKSB4bWFsbG9j IChzaXplb2YgKFNBVkVEX0Y3N19DT01NT04pKTsKLS0gIHJldHVybiAobmV3KTsKLS19Ci0tCi0t c3RhdGljIENPTU1PTl9FTlRSWV9QVFIKLS1hbGxvY2F0ZV9jb21tb25fZW50cnlfbm9kZSAodm9p ZCkKLS17Ci0tICBDT01NT05fRU5UUllfUFRSIG5ldzsKLS0KLS0gIG5ldyA9IChDT01NT05fRU5U UllfUFRSKSB4bWFsbG9jIChzaXplb2YgKENPTU1PTl9FTlRSWSkpOwotLSAgcmV0dXJuIChuZXcp OwotLX0KLS0jZW5kaWYKLS0KLS1TQVZFRF9GNzdfQ09NTU9OX1BUUiBoZWFkX2NvbW1vbl9saXN0 ID0gTlVMTDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCi0tU0FWRURfRjc3X0NPTU1P Tl9QVFIgdGFpbF9jb21tb25fbGlzdCA9IE5VTEw7CS8qIFB0ciB0byBsYXN0IHNhdmVkIENPTU1P TiAgKi8KLS1TQVZFRF9GNzdfQ09NTU9OX1BUUiBjdXJyZW50X2NvbW1vbiA9IE5VTEw7CS8qIFB0 ciB0byBjdXJyZW50IENPTU1PTiAqLwotLQotLSNpZiAwCi0tc3RhdGljIFNBVkVEX0JGX1BUUiBz YXZlZF9iZl9saXN0ID0gTlVMTDsJLyogUHRyIHRvICguYmYsZnVuY3Rpb24pIAotLQkJCQkJCSAg IGxpc3QgKi8KLS1zdGF0aWMgU0FWRURfQkZfUFRSIHNhdmVkX2JmX2xpc3RfZW5kID0gTlVMTDsJ LyogUHRyIHRvIGFib3ZlIGxpc3QncyBlbmQgKi8KLS1zdGF0aWMgU0FWRURfQkZfUFRSIGN1cnJl bnRfaGVhZF9iZl9saXN0ID0gTlVMTDsJLyogQ3VycmVudCBoZWFkIG9mIGFib3ZlIGxpc3QKLS0J CQkJCQkJICovCi0tCi0tc3RhdGljIFNBVkVEX0JGX1BUUiB0bXBfYmZfcHRyOwkvKiBHZW5lcmlj IHRlbXBvcmFyeSBmb3IgdXNlIAotLQkJCQkgICBpbiBtYWNyb3MgKi8KLS0KLS0vKiBUaGUgZm9s bG93aW5nIGZ1bmN0aW9uIHNpbXBseSBlbnRlcnMgYSBnaXZlbiBjb21tb24gYmxvY2sgb250byAK LS0gICB0aGUgZ2xvYmFsIGNvbW1vbiBibG9jayBjaGFpbiAqLwotLQotLXN0YXRpYyB2b2lkCi0t YWRkX2NvbW1vbl9ibG9jayAoY2hhciAqbmFtZSwgQ09SRV9BRERSIG9mZnNldCwgaW50IHNlY251 bSwgY2hhciAqZnVuY19zdGFiKQotLXsKLS0gIFNBVkVEX0Y3N19DT01NT05fUFRSIHRtcDsKLS0g IGNoYXIgKmMsICpsb2NhbF9jb3B5X2Z1bmNfc3RhYjsKLS0KLS0gIC8qIElmIHRoZSBDT01NT04g YmxvY2sgd2UgYXJlIHRyeWluZyB0byBhZGQgaGFzIGEgYmxhbmsgCi0tICAgICBuYW1lIChpLmUu ICIjQkxOS19DT00iKSB0aGVuIHdlIHNldCBpdCB0byBfX0JMQU5LCi0tICAgICBiZWNhdXNlIHRo ZSBkYXJuICIjIiBjaGFyYWN0ZXIgbWFrZXMgR0RCJ3MgaW5wdXQgCi0tICAgICBwYXJzZXIgaGF2 ZSBmaXRzLiAqLwotLQotLQotLSAgaWYgKHN0cmNtcCAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVf T1JJR0lOQUwpID09IDAKLS0gICAgICB8fCBzdHJjbXAgKG5hbWUsIEJMQU5LX0NPTU1PTl9OQU1F X01GNzcpID09IDApCi0tICAgIHsKLS0KLS0gICAgICB4ZnJlZSAobmFtZSk7Ci0tICAgICAgbmFt ZSA9IGFsbG9jYSAoc3RybGVuIChCTEFOS19DT01NT05fTkFNRV9MT0NBTCkgKyAxKTsKLS0gICAg ICBzdHJjcHkgKG5hbWUsIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMKTsKLS0gICAgfQotLQotLSAg dG1wID0gYWxsb2NhdGVfc2F2ZWRfZjc3X2NvbW1vbl9ub2RlICgpOwotLQotLSAgbG9jYWxfY29w eV9mdW5jX3N0YWIgPSB4bWFsbG9jIChzdHJsZW4gKGZ1bmNfc3RhYikgKyAxKTsKLS0gIHN0cmNw eSAobG9jYWxfY29weV9mdW5jX3N0YWIsIGZ1bmNfc3RhYik7Ci0tCi0tICB0bXAtPm5hbWUgPSB4 bWFsbG9jIChzdHJsZW4gKG5hbWUpICsgMSk7Ci0tCi0tICAvKiBsb2NhbF9jb3B5X2Z1bmNfc3Rh YiBpcyBhIHN0YWJzdHJpbmcsIGxldCB1cyBmaXJzdCBleHRyYWN0IHRoZSAKLS0gICAgIGZ1bmN0 aW9uIG5hbWUgZnJvbSB0aGUgc3RhYiBieSBOVUxMaW5nIG91dCB0aGUgJzonIGNoYXJhY3Rlci4g Ki8KLS0KLS0KLS0gIGMgPSBOVUxMOwotLSAgYyA9IHN0cmNociAobG9jYWxfY29weV9mdW5jX3N0 YWIsICc6Jyk7Ci0tCi0tICBpZiAoYykKLS0gICAgKmMgPSAnXDAnOwotLSAgZWxzZQotLSAgICBl cnJvciAoXygiTWFsZm9ybWVkIGZ1bmN0aW9uIFNUQUIgZm91bmQgaW4gYWRkX2NvbW1vbl9ibG9j aygpIikpOwotLQotLQotLSAgdG1wLT5vd25pbmdfZnVuY3Rpb24gPSB4bWFsbG9jIChzdHJsZW4g KGxvY2FsX2NvcHlfZnVuY19zdGFiKSArIDEpOwotLQotLSAgc3RyY3B5ICh0bXAtPm93bmluZ19m dW5jdGlvbiwgbG9jYWxfY29weV9mdW5jX3N0YWIpOwotLQotLSAgc3RyY3B5ICh0bXAtPm5hbWUs IG5hbWUpOwotLSAgdG1wLT5vZmZzZXQgPSBvZmZzZXQ7Ci0tICB0bXAtPm5leHQgPSBOVUxMOwot LSAgdG1wLT5lbnRyaWVzID0gTlVMTDsKLS0gIHRtcC0+c2VjbnVtID0gc2VjbnVtOwotLQotLSAg Y3VycmVudF9jb21tb24gPSB0bXA7Ci0tCi0tICBpZiAoaGVhZF9jb21tb25fbGlzdCA9PSBOVUxM KQotLSAgICB7Ci0tICAgICAgaGVhZF9jb21tb25fbGlzdCA9IHRhaWxfY29tbW9uX2xpc3QgPSB0 bXA7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgewotLSAgICAgIHRhaWxfY29tbW9uX2xpc3QtPm5l eHQgPSB0bXA7Ci0tICAgICAgdGFpbF9jb21tb25fbGlzdCA9IHRtcDsKLS0gICAgfQotLX0KLS0j ZW5kaWYKLS0KLS0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNpbXBseSBlbnRlcnMgYSBnaXZl biBjb21tb24gZW50cnkgb250byAKLS0gICB0aGUgImN1cnJlbnRfY29tbW9uIiBibG9jayB0aGF0 IGhhcyBiZWVuIHNhdmVkIGF3YXkuICovCi0tCi0tI2lmIDAKLS1zdGF0aWMgdm9pZAotLWFkZF9j b21tb25fZW50cnkgKHN0cnVjdCBzeW1ib2wgKmVudHJ5X3N5bV9wdHIpCi0tewotLSAgQ09NTU9O X0VOVFJZX1BUUiB0bXA7Ci0tCi0tCi0tCi0tICAvKiBUaGUgb3JkZXIgb2YgdGhpcyBsaXN0IGlz IGltcG9ydGFudCwgc2luY2UgCi0tICAgICB3ZSBleHBlY3QgdGhlIGVudHJpZXMgdG8gYXBwZWFy IGluIGRlY2wuCi0tICAgICBvcmRlciB3aGVuIHdlIGxhdGVyIGlzc3VlICJpbmZvIGNvbW1vbiIg Y2FsbHMgKi8KLS0KLS0gIHRtcCA9IGFsbG9jYXRlX2NvbW1vbl9lbnRyeV9ub2RlICgpOwotLQot LSAgdG1wLT5uZXh0ID0gTlVMTDsKLS0gIHRtcC0+c3ltYm9sID0gZW50cnlfc3ltX3B0cjsKLS0K LS0gIGlmIChjdXJyZW50X2NvbW1vbiA9PSBOVUxMKQotLSAgICBlcnJvciAoXygiQXR0ZW1wdCB0 byBhZGQgQ09NTU9OIGVudHJ5IHdpdGggbm8gYmxvY2sgb3BlbiEiKSk7Ci0tICBlbHNlCi0tICAg IHsKLS0gICAgICBpZiAoY3VycmVudF9jb21tb24tPmVudHJpZXMgPT0gTlVMTCkKLS0JewotLQkg IGN1cnJlbnRfY29tbW9uLT5lbnRyaWVzID0gdG1wOwotLQkgIGN1cnJlbnRfY29tbW9uLT5lbmRf b2ZfZW50cmllcyA9IHRtcDsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIGN1cnJlbnRfY29t bW9uLT5lbmRfb2ZfZW50cmllcy0+bmV4dCA9IHRtcDsKLS0JICBjdXJyZW50X2NvbW1vbi0+ZW5k X29mX2VudHJpZXMgPSB0bXA7Ci0tCX0KLS0gICAgfQotLX0KLS0jZW5kaWYKLS0KLS0vKiBUaGlz IHJvdXRpbmUgZmluZHMgdGhlIGZpcnN0IGVuY291bnRyZWQgQ09NTU9OIGJsb2NrIG5hbWVkICJu YW1lIiAqLwotLQotLSNpZiAwCi0tc3RhdGljIFNBVkVEX0Y3N19DT01NT05fUFRSCi0tZmluZF9m aXJzdF9jb21tb25fbmFtZWQgKGNoYXIgKm5hbWUpCi0tewotLQotLSAgU0FWRURfRjc3X0NPTU1P Tl9QVFIgdG1wOwotLQotLSAgdG1wID0gaGVhZF9jb21tb25fbGlzdDsKLS0KLS0gIHdoaWxlICh0 bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIGlmIChzdHJjbXAgKHRtcC0+bmFtZSwgbmFtZSkg PT0gMCkKLS0JcmV0dXJuICh0bXApOwotLSAgICAgIGVsc2UKLS0JdG1wID0gdG1wLT5uZXh0Owot LSAgICB9Ci0tICByZXR1cm4gKE5VTEwpOwotLX0KLS0jZW5kaWYKLS0KLS0vKiBUaGlzIHJvdXRp bmUgZmluZHMgdGhlIGZpcnN0IGVuY291bnRyZWQgQ09NTU9OIGJsb2NrIG5hbWVkICJuYW1lIiAK LS0gICB0aGF0IGJlbG9uZ3MgdG8gZnVuY3Rpb24gZnVuY25hbWUgKi8KLS0KLS1TQVZFRF9GNzdf Q09NTU9OX1BUUgotLWZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAqbmFtZSwgY2hhciAq ZnVuY25hbWUpCi0tewotLQotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgdG1w ID0gaGVhZF9jb21tb25fbGlzdDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewot LSAgICAgIGlmIChzdHJjbXAgKHRtcC0+bmFtZSwgbmFtZSkgPT0gMAotLQkgICYmIHN0cmNtcCAo dG1wLT5vd25pbmdfZnVuY3Rpb24sIGZ1bmNuYW1lKSA9PSAwKQotLQlyZXR1cm4gKHRtcCk7Ci0t ICAgICAgZWxzZQotLQl0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS0gIHJldHVybiAoTlVMTCk7 Ci0tfQotLQotLQotLSNpZiAwCi0tCi0tLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBjYWxs ZWQgdG8gcGF0Y2ggdXAgdGhlIG9mZnNldHMgCi0tICAgZm9yIHRoZSBzdGF0aWNzIGNvbnRhaW5l ZCBpbiB0aGUgQ09NTU9OIGJsb2NrIG5hbWVkCi0tICAgIm5hbWUuIiAgKi8KLS0KLS1zdGF0aWMg dm9pZAotLXBhdGNoX2NvbW1vbl9lbnRyaWVzIChTQVZFRF9GNzdfQ09NTU9OX1BUUiBibGssIENP UkVfQUREUiBvZmZzZXQsIGludCBzZWNudW0pCi0tewotLSAgQ09NTU9OX0VOVFJZX1BUUiBlbnRy eTsKLS0KLS0gIGJsay0+b2Zmc2V0ID0gb2Zmc2V0OwkJLyogS2VlcCB0aGlzIGFyb3VuZCBmb3Ig ZnV0dXJlIHVzZS4gKi8KLS0KLS0gIGVudHJ5ID0gYmxrLT5lbnRyaWVzOwotLQotLSAgd2hpbGUg KGVudHJ5ICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBTWU1CT0xfVkFMVUUgKGVudHJ5LT5zeW1i b2wpICs9IG9mZnNldDsKLS0gICAgICBTWU1CT0xfU0VDVElPTiAoZW50cnktPnN5bWJvbCkgPSBz ZWNudW07Ci0tCi0tICAgICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKLS0gICAgfQotLSAgYmxrLT5z ZWNudW0gPSBzZWNudW07Ci0tfQotLQotLS8qIFBhdGNoIGFsbCBjb21tb25zIG5hbWVkICJuYW1l IiB0aGF0IG5lZWQgcGF0Y2hpbmcuU2luY2UgQ09NTU9OCi0tICAgYmxvY2tzIG9jY3VyIHdpdGgg cmVsYXRpdmUgaW5mcmVxdWVuY3ksIHdlIHNpbXBseSBkbyBhIGxpbmVhciBzY2FuIG9uCi0tICAg dGhlIG5hbWUuICBFdmVudHVhbGx5LCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcyB3aWxsIGJlIGEK LS0gICBoYXNoZWQtbG9va3VwLiAgU2VjbnVtIGlzIHRoZSBzZWN0aW9uIG51bWJlciBmb3IgdGhl IC5ic3Mgc2VjdGlvbgotLSAgICh3aGljaCBpcyB3aGVyZSBjb21tb24gZGF0YSBsaXZlcykuICov Ci0tCi0tc3RhdGljIHZvaWQKLS1wYXRjaF9hbGxfY29tbW9uc19ieV9uYW1lIChjaGFyICpuYW1l LCBDT1JFX0FERFIgb2Zmc2V0LCBpbnQgc2VjbnVtKQotLXsKLS0KLS0gIFNBVkVEX0Y3N19DT01N T05fUFRSIHRtcDsKLS0KLS0gIC8qIEZvciBibGFuayBjb21tb24gYmxvY2tzLCBjaGFuZ2UgdGhl IGNhbm9uaWNhbCByZXByc2VudGF0aW9uIAotLSAgICAgb2YgYSBibGFuayBuYW1lICovCi0tCi0t ICBpZiAoc3RyY21wIChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9PUklHSU5BTCkgPT0gMAotLSAg ICAgIHx8IHN0cmNtcCAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTUY3NykgPT0gMCkKLS0gICAg ewotLSAgICAgIHhmcmVlIChuYW1lKTsKLS0gICAgICBuYW1lID0gYWxsb2NhIChzdHJsZW4gKEJM QU5LX0NPTU1PTl9OQU1FX0xPQ0FMKSArIDEpOwotLSAgICAgIHN0cmNweSAobmFtZSwgQkxBTktf Q09NTU9OX05BTUVfTE9DQUwpOwotLSAgICB9Ci0tCi0tICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0 OwotLQotLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaWYgKENPTU1PTl9O RUVEU19QQVRDSElORyAodG1wKSkKLS0JaWYgKHN0cmNtcCAodG1wLT5uYW1lLCBuYW1lKSA9PSAw KQotLQkgIHBhdGNoX2NvbW1vbl9lbnRyaWVzICh0bXAsIG9mZnNldCwgc2VjbnVtKTsKLS0KLS0g ICAgICB0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS19Ci0tI2VuZGlmCi0tCi0tLyogVGhpcyBt YWNybyBhZGRzIHRoZSBzeW1ib2wtbnVtYmVyIGZvciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9u IAotLSAgICh0aGUgc3ltYm9sIG51bWJlciBvZiB0aGUgLmJmKSByZWZlcmVuY2VkIGJ5IHN5bW51 bV9mY24gdG8gYSAKLS0gICBsaXN0LiAgVGhpcyBsaXN0LCBpbiByZWFsaXR5IHNob3VsZCBiZSBh IEZJRk8gcXVldWUgYnV0IHNpbmNlIAotLSAgICNsaW5lIHByYWdtYXMgc29tZXRpbWVzIGNhdXNl IGxpbmUgcmFuZ2VzIHRvIGdldCBtZXNzZWQgdXAgCi0tICAgd2Ugc2ltcGx5IGNyZWF0ZSBhIGxp bmVhciBsaXN0LiAgVGhpcyBsaXN0IGNhbiB0aGVuIGJlIHNlYXJjaGVkIAotLSAgIGZpcnN0IGJ5 IGEgcXVldWVpbmcgYWxnb3JpdGhtIGFuZCB1cG9uIGZhaWx1cmUgZmFsbCBiYWNrIHRvIAotLSAg IGEgbGluZWFyIHNjYW4uICovCi0tCi0tI2lmIDAKLS0jZGVmaW5lIEFERF9CRl9TWU1OVU0oYmZf c3ltLGZjbl9zeW0pIFwKLS0gIFwKLS0gIGlmIChzYXZlZF9iZl9saXN0ID09IE5VTEwpIFwKLS17 IFwKLS0gICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAotLSAgICAg IFwKLS0JdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7IFwKLS0JICB0bXBfYmZfcHRy LT5zeW1udW1fZmNuID0gKGZjbl9zeW0pOyAgXAotLQkgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5V TEw7IFwKLS0JICAgICAgXAotLQkJY3VycmVudF9oZWFkX2JmX2xpc3QgPSBzYXZlZF9iZl9saXN0 ID0gdG1wX2JmX3B0cjsgXAotLQkJICBzYXZlZF9iZl9saXN0X2VuZCA9IHRtcF9iZl9wdHI7IFwK LS0JCSAgfSBcCi0tZWxzZSBcCi0teyAgXAotLSAgICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3Nh dmVkX2JmX25vZGUoKTsgXAotLSAgICAgICBcCi0tICAgICAgICAgdG1wX2JmX3B0ci0+c3ltbnVt X2JmID0gKGJmX3N5bSk7ICBcCi0tCSAgIHRtcF9iZl9wdHItPnN5bW51bV9mY24gPSAoZmNuX3N5 bSk7ICBcCi0tCSAgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7ICBcCi0tCSAgICAgICBcCi0t CQkgc2F2ZWRfYmZfbGlzdF9lbmQtPm5leHQgPSB0bXBfYmZfcHRyOyAgXAotLQkJICAgc2F2ZWRf YmZfbGlzdF9lbmQgPSB0bXBfYmZfcHRyOyBcCi0tCQkgICB9Ci0tI2VuZGlmCi0tCi0tLyogVGhp cyBmdW5jdGlvbiBmcmVlcyB0aGUgZW50aXJlICguYmYsZnVuY3Rpb24pIGxpc3QgKi8KLS0KLS0j aWYgMAotLXN0YXRpYyB2b2lkCi0tY2xlYXJfYmZfbGlzdCAodm9pZCkKLS17Ci0tCi0tICBTQVZF RF9CRl9QVFIgdG1wID0gc2F2ZWRfYmZfbGlzdDsKLS0gIFNBVkVEX0JGX1BUUiBuZXh0ID0gTlVM TDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIG5leHQgPSB0bXAt Pm5leHQ7Ci0tICAgICAgeGZyZWUgKHRtcCk7Ci0tICAgICAgdG1wID0gbmV4dDsKLS0gICAgfQot LSAgc2F2ZWRfYmZfbGlzdCA9IE5VTEw7Ci0tfQotLSNlbmRpZgotLQotLWludCBnbG9iYWxfcmVt b3RlX2RlYnVnOwotLQotLSNpZiAwCi0tCi0tc3RhdGljIGxvbmcKLS1nZXRfYmZfZm9yX2ZjbiAo bG9uZyB0aGVfZnVuY3Rpb24pCi0tewotLSAgU0FWRURfQkZfUFRSIHRtcDsKLS0gIGludCBucHJv YmVzID0gMDsKLS0KLS0gIC8qIEZpcnN0IHVzZSBhIHNpbXBsZSBxdWV1aW5nIGFsZ29yaXRobSAo aS5lLiBsb29rIGFuZCBzZWUgaWYgdGhlIAotLSAgICAgaXRlbSBhdCB0aGUgaGVhZCBvZiB0aGUg cXVldWUgaXMgdGhlIG9uZSB5b3Ugd2FudCkgICovCi0tCi0tICBpZiAoc2F2ZWRfYmZfbGlzdCA9 PSBOVUxMKQotLSAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotLQkJICAg IF8oImNhbm5vdCBnZXQgLmJmIG5vZGUgb2ZmIGVtcHR5IGxpc3QiKSk7Ci0tCi0tICBpZiAoY3Vy cmVudF9oZWFkX2JmX2xpc3QgIT0gTlVMTCkKLS0gICAgaWYgKGN1cnJlbnRfaGVhZF9iZl9saXN0 LT5zeW1udW1fZmNuID09IHRoZV9mdW5jdGlvbikKLS0gICAgICB7Ci0tCWlmIChnbG9iYWxfcmVt b3RlX2RlYnVnKQotLQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIioiKTsKLS0K LS0JdG1wID0gY3VycmVudF9oZWFkX2JmX2xpc3Q7Ci0tCWN1cnJlbnRfaGVhZF9iZl9saXN0ID0g Y3VycmVudF9oZWFkX2JmX2xpc3QtPm5leHQ7Ci0tCXJldHVybiAodG1wLT5zeW1udW1fYmYpOwot LSAgICAgIH0KLS0KLS0gIC8qIElmIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsgKHByb2JhYmx5IGJl Y2F1c2UgI2xpbmUgZGlyZWN0aXZlcyB3ZXJlIAotLSAgICAgdXNlZCBpbiB0aGUgc291cmNlZmls ZSBhbmQgdGhleSBtZXNzZWQgdXAgb3VyIGludGVybmFsIHRhYmxlcykgd2Ugbm93IGRvCi0tICAg ICB0aGUgdWdseSBsaW5lYXIgc2NhbiAqLwotLQotLSAgaWYgKGdsb2JhbF9yZW1vdGVfZGVidWcp Ci0tICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIlxuZGVmYXVsdGluZyB0byBs aW5lYXIgc2NhblxuIik7Ci0tCi0tICBucHJvYmVzID0gMDsKLS0gIHRtcCA9IHNhdmVkX2JmX2xp c3Q7Ci0tICB3aGlsZSAodG1wICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBucHJvYmVzKys7Ci0t ICAgICAgaWYgKHRtcC0+c3ltbnVtX2ZjbiA9PSB0aGVfZnVuY3Rpb24pCi0tCXsKLS0JICBpZiAo Z2xvYmFsX3JlbW90ZV9kZWJ1ZykKLS0JICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVy ciwgIkZvdW5kIGluICVkIHByb2Jlc1xuIiwgbnByb2Jlcyk7Ci0tCSAgY3VycmVudF9oZWFkX2Jm X2xpc3QgPSB0bXAtPm5leHQ7Ci0tCSAgcmV0dXJuICh0bXAtPnN5bW51bV9iZik7Ci0tCX0KLS0g ICAgICB0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS0KLS0gIHJldHVybiAoLTEpOwotLX0KLS0K LS1zdGF0aWMgU0FWRURfRlVOQ1RJT05fUFRSIHNhdmVkX2Z1bmN0aW9uX2xpc3QgPSBOVUxMOwot LXN0YXRpYyBTQVZFRF9GVU5DVElPTl9QVFIgc2F2ZWRfZnVuY3Rpb25fbGlzdF9lbmQgPSBOVUxM OwotLQotLXN0YXRpYyB2b2lkCi0tY2xlYXJfZnVuY3Rpb25fbGlzdCAodm9pZCkKLS17Ci0tICBT QVZFRF9GVU5DVElPTl9QVFIgdG1wID0gc2F2ZWRfZnVuY3Rpb25fbGlzdDsKLS0gIFNBVkVEX0ZV TkNUSU9OX1BUUiBuZXh0ID0gTlVMTDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAg ewotLSAgICAgIG5leHQgPSB0bXAtPm5leHQ7Ci0tICAgICAgeGZyZWUgKHRtcCk7Ci0tICAgICAg dG1wID0gbmV4dDsKLS0gICAgfQotLQotLSAgc2F2ZWRfZnVuY3Rpb25fbGlzdCA9IE5VTEw7Ci0t fQotLSNlbmRpZgogZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAotaW5k ZXggNzExYmRiYS4uOWQ3ZDkyYiAxMDA2NDQKK2luZGV4IGI5OGM1NTYuLmM2ODM3OWEgMTAwNjQ0 CiAtLS0gYS9nZGIvZi1sYW5nLmgKICsrKyBiL2dkYi9mLWxhbmcuaAogQEAgLTI4LDYgKzI4LDEw IEBAIGV4dGVybiB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQgaW4gZi1leHAueSAq LwpAQCAtODU5Nyw1NyArNDQyMiw3IEBAIGluZGV4IDcxMWJkYmEuLjlkN2Q5MmIgMTAwNjQ0CiAg ZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwg aW50LCBDT1JFX0FERFIsCiAgCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJCWNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwotQEAgLTQ3LDQxICs1MSw4IEBAIGVudW0gZjkw X3JhbmdlX3R5cGUKLSAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxvdzpoaWdoKSIgICov Ci0gICB9OwotIAotLXN0cnVjdCBjb21tb25fZW50cnkKLS0gIHsKLS0gICAgc3RydWN0IHN5bWJv bCAqc3ltYm9sOwkvKiBUaGUgc3ltYm9sIG5vZGUgY29ycmVzcG9uZGluZwotLQkJCQkgICB0byB0 aGlzIGNvbXBvbmVudCAqLwotLSAgICBzdHJ1Y3QgY29tbW9uX2VudHJ5ICpuZXh0OwkvKiBUaGUg bmV4dCBjb21wb25lbnQgKi8KLS0gIH07Ci0tCi0tc3RydWN0IHNhdmVkX2Y3N19jb21tb24KLS0g IHsKLS0gICAgY2hhciAqbmFtZTsJCQkvKiBOYW1lIG9mIENPTU1PTiAqLwotLSAgICBjaGFyICpv d25pbmdfZnVuY3Rpb247CS8qIE5hbWUgb2YgcGFyZW50IGZ1bmN0aW9uICovCi0tICAgIGludCBz ZWNudW07CQkJLyogU2VjdGlvbiAjIG9mIC5ic3MgKi8KLS0gICAgQ09SRV9BRERSIG9mZnNldDsJ CS8qIE9mZnNldCBmcm9tIC5ic3MgZm9yIAotLQkJCQkgICB0aGlzIGJsb2NrICovCi0tICAgIHN0 cnVjdCBjb21tb25fZW50cnkgKmVudHJpZXM7CS8qIExpc3Qgb2YgYmxvY2sncyBjb21wb25lbnRz ICovCi0tICAgIHN0cnVjdCBjb21tb25fZW50cnkgKmVuZF9vZl9lbnRyaWVzOwkvKiBwdHIuIHRv IGVuZCBvZiBjb21wb25lbnRzICovCi0tICAgIHN0cnVjdCBzYXZlZF9mNzdfY29tbW9uICpuZXh0 OwkvKiBOZXh0IHNhdmVkIENPTU1PTiBibG9jayAqLwotLSAgfTsKLS0KLS10eXBlZGVmIHN0cnVj dCBzYXZlZF9mNzdfY29tbW9uIFNBVkVEX0Y3N19DT01NT04sICpTQVZFRF9GNzdfQ09NTU9OX1BU UjsKLS0KLS10eXBlZGVmIHN0cnVjdCBjb21tb25fZW50cnkgQ09NTU9OX0VOVFJZLCAqQ09NTU9O X0VOVFJZX1BUUjsKLS0KLS1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgaGVhZF9jb21tb25f bGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCi0tZXh0ZXJuIFNBVkVEX0Y3N19D T01NT05fUFRSIHRhaWxfY29tbW9uX2xpc3Q7CS8qIFB0ciB0byBsYXN0IHNhdmVkIENPTU1PTiAg Ki8KLS1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgY3VycmVudF9jb21tb247CS8qIFB0ciB0 byBjdXJyZW50IENPTU1PTiAqLwotLQotLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BUUiBmaW5k X2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAqKTsKLS0KLS0jZGVmaW5lIFVOSU5J VElBTElaRURfU0VDTlVNIC0xCi0tI2RlZmluZSBDT01NT05fTkVFRFNfUEFUQ0hJTkcoYmxrKSAo KGJsayktPnNlY251bSA9PSBVTklOSVRJQUxJWkVEX1NFQ05VTSkKLS0KLSAjZGVmaW5lIEJMQU5L X0NPTU1PTl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAgKi8KLSAj ZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3NyBhc3Np Z25lZCAgKi8KLS0jZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JMQU5LIgkv KiBMb2NhbCBHREIgKi8KLSAKLSAvKiBXaGVuIHJlYXNvbmFibGUgYXJyYXkgYm91bmRzIGNhbm5v dCBiZSBmZXRjaGVkLCBzdWNoIGFzIHdoZW4gCi0gICAgeW91IGFzayB0byAnbXQgcHJpbnQgc3lt Ym9scycgYW5kIHRoZXJlIGlzIG5vIHN0YWNrIGZyYW1lIGFuZCAKLUBAIC0xMTMsNiArODQsNyBA QCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX2xvZ2ljYWw7 Ci0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2FsX3MxOwotICAgc3RydWN0IHR5cGUgKmJ1 aWx0aW5fbG9naWNhbF9zMjsKLSsgIHN0cnVjdCB0eXBlICpidWlsdGluX2xvZ2ljYWxfczg7Ci0g ICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9yZWFsOwotICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fcmVh bF9zODsKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX3JlYWxfczE2OwotQEAgLTEyNSwzICs5Nywx MCBAQCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKK0BAIC0xMjUsMyArMTI5LDEwIEBAIHN0cnVjdCBi dWlsdGluX2ZfdHlwZQogIC8qIFJldHVybiB0aGUgRm9ydHJhbiB0eXBlIHRhYmxlIGZvciB0aGUg c3BlY2lmaWVkIGFyY2hpdGVjdHVyZS4gICovCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBidWlsdGlu X2ZfdHlwZSAqYnVpbHRpbl9mX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKICAKQEAg LTg2NTksMTAgKzQ0MzQsMTAgQEAgaW5kZXggNzExYmRiYS4uOWQ3ZDkyYiAxMDA2NDQKICsgICAg Y2hhciBtb2R1bGVfbmFtZVsxXTsKICsgIH07CiBkaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50 LmMgYi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggNmM5NjY4Zi4uODUyYjlhOCAxMDA2NDQKK2lu ZGV4IDAzMzI5MzIuLjZlODY2OGMgMTAwNjQ0CiAtLS0gYS9nZGIvZi10eXBlcHJpbnQuYwogKysr IGIvZ2RiL2YtdHlwZXByaW50LmMKLUBAIC0zMSw3ICszMSw3IEBACitAQCAtMzIsNyArMzIsNyBA QAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgInRhcmdldC5oIgogICNpbmNsdWRl ICJmLWxhbmcuaCIKQEAgLTg2NzEsNyArNDQ0Niw3IEBAIGluZGV4IDZjOTY2OGYuLjg1MmI5YTgg MTAwNjQ0CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAK LUBAIC00OCw2ICs0OCwzNCBAQCB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKK0BAIC00OSw2ICs0OSwzNCBAQCB2b2lkIGZf dHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUg KiwKICB2b2lkIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsIGludCk7CiAgDAogIApAQCAtODcwNiw3ICs0NDgxLDcgQEAgaW5kZXggNmM5NjY4 Zi4uODUyYjlhOCAxMDA2NDQKICAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8gaW5kZW50IGxpbmVz IGJ5LiAgKi8KICAKICB2b2lkCi1AQCAtNTcsNiArODUsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlLCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitA QCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjaGFyICp2 YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgICBlbnVtIHR5cGVfY29kZSBjb2Rl OwogICAgaW50IGRlbWFuZ2xlZF9hcmdzOwogIApAQCAtODcxNiw3ICs0NDkxLDcgQEAgaW5kZXgg NmM5NjY4Zi4uODUyYjlhOCAxMDA2NDQKICAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBlLCBzdHJl YW0sIHNob3csIGxldmVsKTsKICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogICAgaWYgKCh2 YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAtMTY2LDYgKzE5Nyw5 IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCitAQCAtMTY1LDYgKzE5Niw5IEBAIGZfdHlwZV9wcmludF92YXJz cGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAg CiAgICBRVUlUOwogIApAQCAtODcyNywyMyArNDUwMiwxMCBAQCBpbmRleCA2Yzk2NjhmLi44NTJi OWE4IDEwMDY0NAogICAgICB7CiAgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgogZGlmZiAtLWdp dCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1pbmRleCAwYTU3NDA0Li5h OWNjYzc3IDEwMDY0NAoraW5kZXggOWJkMzY0MC4uZjUyYjg1OCAxMDA2NDQKIC0tLSBhL2dkYi9m LXZhbHByaW50LmMKICsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBAIC0zNCwxMCArMzQsOCBAQAot ICNpbmNsdWRlICJnZGJjb3JlLmgiCi0gI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAi YmxvY2suaCIKLS0KLS0jaWYgMAotLXN0YXRpYyBpbnQgdGhlcmVfaXNfYV92aXNpYmxlX2NvbW1v bl9uYW1lZCAoY2hhciAqKTsKLS0jZW5kaWYKLSsjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgotKyNp bmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxw cmludCAodm9pZCk7Ci0gc3RhdGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBp bnQpOwotQEAgLTU0LDE1ICs1MiwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZP UlRSQU5fRElNUyArIDFdWzJdOworQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29m ZnNldF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOwogIC8qIFRoZSBmb2xsb3dpbmcgbWFj cm8gZ2l2ZXMgdXMgdGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAogICAgIG4g aXMgMSBiYXNlZC4gKi8KICAKQEAgLTg3NjQsNyArNDUyNiw3IEBAIGluZGV4IDBhNTc0MDQuLmE5 Y2NjNzcgMTAwNjQ0CiAgICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQg KHR5cGUpKQogICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicgaW4gRjc3 IikpOwogIAotQEAgLTcyLDE0ICs3MiwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0 eXBlICp0eXBlKQorQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVj dCB0eXBlICp0eXBlKQogIGludAogIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5 cGUpCiAgewpAQCAtODc4Nyw3ICs0NTQ5LDcgQEAgaW5kZXggMGE1NzQwNC4uYTljY2M3NyAxMDA2 NDQKICAgICAgfQogIAogICAgcmV0dXJuIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFMVUUgKHR5 cGUpOwotQEAgLTEzNSwyNCArMTM4LDI5IEBAIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRf dGJsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKK0BAIC0xMzUs MjQgKzE0MCwyOSBAQCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgICAgICAgdXBwZXIgPSBmNzdfZ2V0 X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKICAgICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3Vu ZCAodG1wX3R5cGUpOwogIApAQCAtODgyMyw3ICs0NTg1LDcgQEAgaW5kZXggMGE1NzQwNC4uYTlj Y2M3NyAxMDA2NDQKICAgICAgfQogIH0KICAKLUBAIC0xNzIsMzQgKzE4MCwzNCBAQCBmNzdfcHJp bnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwK K0BAIC0xNzIsMzQgKzE4MiwzNCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5k aW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICAgIGlmIChuc3MgIT0gbmRpbWVuc2lv bnMpCiAgICAgIHsKQEAgLTg4NjcsNyArNDYyOSw3IEBAIGluZGV4IDBhNTc0MDQuLmE5Y2NjNzcg MTAwNjQ0CiAgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKICAJfQogICAg ICB9Ci1AQCAtMjUzLDYgKzI2MSw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCitAQCAtMjUzLDYg KzI2Myw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICBDT1JFX0FERFIgYWRkcjsKICAgIGlu dCBpbmRleDsKICAKQEAgLTg4NzcsMjUzICs0NjM5LDE3IEBAIGluZGV4IDBhNTc0MDQuLmE5Y2Nj NzcgMTAwNjQ0CiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKICAgIHN3aXRjaCAoVFlQRV9DT0RF ICh0eXBlKSkKICAgICAgewotQEAgLTQ2NywyMiArNDc4LDU0IEBAIGZfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZz ZXQsCi0gICByZXR1cm4gMDsKLSB9CitkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmRjbWQuYyBiL2dkYi9m aW5kY21kLmMKK2luZGV4IGM3NTIzMTYuLmRmMjY4N2MgMTAwNjQ0CistLS0gYS9nZGIvZmluZGNt ZC5jCisrKysgYi9nZGIvZmluZGNtZC5jCitAQCAtMjcsNyArMjcsNyBAQAorIAorIC8qIENvcGll ZCBmcm9tIGJmZF9wdXRfYml0cy4gICovCiAgCiAtc3RhdGljIHZvaWQKLS1saXN0X2FsbF92aXNp YmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCi0rc3RhdGljIGludAotK2luZm9fY29tbW9uX2Nv bW1hbmRfZm9yX2Jsb2NrIChzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKmNvbW5hbWUpCi0gewotLSAgU0FWRURfRjc3 X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgdG1wID0gaGVhZF9jb21tb25fbGlzdDsKLS0KLS0gIHBy aW50Zl9maWx0ZXJlZCAoXygiQWxsIENPTU1PTiBibG9ja3MgdmlzaWJsZSBhdCB0aGlzIGxldmVs OlxuXG4iKSk7Ci0tCi0tICB3aGlsZSAodG1wICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAo c3RyY21wICh0bXAtPm93bmluZ19mdW5jdGlvbiwgZnVubmFtZSkgPT0gMCkKLS0JcHJpbnRmX2Zp bHRlcmVkICgiJXNcbiIsIHRtcC0+bmFtZSk7Ci0tCi0tICAgICAgdG1wID0gdG1wLT5uZXh0Owot LSAgICB9Ci0rICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOwotKyAgc3RydWN0IHN5bWJvbCAq c3ltOwotKyAgaW50IHZhbHVlc19wcmludGVkID0gMDsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0r ICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwotKwotKyAgZ2V0X3VzZXJfcHJpbnRf b3B0aW9ucyAoJm9wdHMpOwotKwotKyAgQUxMX0JMT0NLX1NZTUJPTFMgKGJsb2NrLCBpdGVyLCBz eW0pCi0rICAgIGlmIChTWU1CT0xfRE9NQUlOIChzeW0pID09IENPTU1PTl9CTE9DS19ET01BSU4p Ci0rICAgICAgewotKyAgICAgIAlzdHJ1Y3QgdHlwZSAqdHlwZSA9IFNZTUJPTF9UWVBFIChzeW0p OwotKwlpbnQgaW5kZXg7Ci0rCi0rCWdkYl9hc3NlcnQgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBM T0NfU1RBVElDKTsKLSsJZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf U1RSVUNUKTsKLSsKLSsJaWYgKGNvbW5hbWUgJiYgKCFTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0p Ci0rCSAgICAgICAgICAgICAgICB8fCBzdHJjbXAgKGNvbW5hbWUsIFNZTUJPTF9MSU5LQUdFX05B TUUgKHN5bSkpICE9IDApKQotKwkgIGNvbnRpbnVlOwotKwotKwl2YWx1ZXNfcHJpbnRlZCA9IDE7 Ci0rCWlmIChTWU1CT0xfUFJJTlRfTkFNRSAoc3ltKSkKLSsJICBwcmludGZfZmlsdGVyZWQgKF8o IkNvbnRlbnRzIG9mIEY3NyBDT01NT04gYmxvY2sgJyVzJzpcbiIpLAotKwkJCSAgIFNZTUJPTF9Q UklOVF9OQU1FIChzeW0pKTsKLSsJZWxzZQotKwkgIHByaW50Zl9maWx0ZXJlZCAoXygiQ29udGVu dHMgb2YgYmxhbmsgQ09NTU9OIGJsb2NrOlxuIikpOwotKwkKLSsJZm9yIChpbmRleCA9IDA7IGlu ZGV4IDwgVFlQRV9ORklFTERTICh0eXBlKTsgaW5kZXgrKykKLSsJICB7Ci0rCSAgICBzdHJ1Y3Qg dmFsdWUgKnZhbDsKLSsKLSsJICAgIGdkYl9hc3NlcnQgKGZpZWxkX2lzX3N0YXRpYyAoJlRZUEVf RklFTEQgKHR5cGUsIGluZGV4KSkpOwotKwkgICAgdmFsID0gdmFsdWVfc3RhdGljX2ZpZWxkICh0 eXBlLCBpbmRleCk7Ci0rCi0rCSAgICBwcmludGZfZmlsdGVyZWQgKCIlcyA9ICIsIFRZUEVfRklF TERfTkFNRSAodHlwZSwgaW5kZXgpKTsKLSsJICAgIHZhbHVlX3ByaW50ICh2YWwsIGdkYl9zdGRv dXQsICZvcHRzKTsKLSsJICAgIHB1dGNoYXJfZmlsdGVyZWQgKCdcbicpOwotKwkgIH0KLSsKLSsJ cHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Ci0rICAgICAgfQotKwotKyAgcmV0dXJuIHZhbHVlc19w cmludGVkOwotIH0KLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJpbnQgb3V0IHRo ZSB2YWx1ZXMgaW4gYSBnaXZlbiBDT01NT04gCi1AQCAtNDkyLDExICs1MzUsOSBAQCBsaXN0X2Fs bF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCi0gc3RhdGljIHZvaWQKLSBpbmZvX2Nv bW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCi0gewotLSAgU0FWRURf Rjc3X0NPTU1PTl9QVFIgdGhlX2NvbW1vbjsKLS0gIENPTU1PTl9FTlRSWV9QVFIgZW50cnk7Ci0g ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmk7Ci0tICBjaGFyICpmdW5uYW1lID0gMDsKLS0gIHN0cnVj dCBzeW1ib2wgKmZ1bmM7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKyAgaW50IHZhbHVlc19w cmludGVkID0gMDsKLSAKLSAgIC8qIFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRpc3BsYXkgdGhlIGNv bnRlbnRzIG9mIEY3NyBDT01NT04gCi0gICAgICBibG9jayBzdXBwb3NlZGx5IHZpc2libGUgaW4g dGhpcyBmdW5jdGlvbi4gIExldCB1cyAKLUBAIC01MDgsMTM2ICs1NDksMzIgQEAgaW5mb19jb21t b25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IGZyb21fdHR5KQotICAgLyogVGhlIGZvbGxv d2luZyBpcyBnZW5lcmFsbHkgcmlwcGVkIG9mZiBmcm9tIHN0YWNrLmMncyByb3V0aW5lIAotICAg ICAgcHJpbnRfZnJhbWVfaW5mbygpICovCi0gCi0tICBmdW5jID0gZmluZF9wY19mdW5jdGlvbiAo Z2V0X2ZyYW1lX3BjIChmaSkpOwotLSAgaWYgKGZ1bmMpCi0tICAgIHsKLS0gICAgICAvKiBJbiBj ZXJ0YWluIHBhdGhvbG9naWNhbCBjYXNlcywgdGhlIHN5bXRhYnMgZ2l2ZSB0aGUgd3JvbmcKLS0g ICAgICAgICBmdW5jdGlvbiAod2hlbiB3ZSBhcmUgaW4gdGhlIGZpcnN0IGZ1bmN0aW9uIGluIGEg ZmlsZSB3aGljaAotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGhvdXQgZGVidWdnaW5nIHN5bWJv bHMsIHRoZSBwcmV2aW91cyBmdW5jdGlvbgotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGggZGVi dWdnaW5nIHN5bWJvbHMsIGFuZCB0aGUgImZvby5vIiBzeW1ib2wKLS0gICAgICAgICB0aGF0IGlz IHN1cHBvc2VkIHRvIHRlbGwgdXMgd2hlcmUgdGhlIGZpbGUgd2l0aCBkZWJ1Z2dpbmcgc3ltYm9s cwotLSAgICAgICAgIGVuZHMgaGFzIGJlZW4gdHJ1bmNhdGVkIGJ5IGFyIGJlY2F1c2UgaXQgaXMg bG9uZ2VyIHRoYW4gMTUKLS0gICAgICAgICBjaGFyYWN0ZXJzKS4KLS0KLS0gICAgICAgICBTbyBs b29rIGluIHRoZSBtaW5pbWFsIHN5bWJvbCB0YWJsZXMgYXMgd2VsbCwgYW5kIGlmIGl0IGNvbWVz Ci0tICAgICAgICAgdXAgd2l0aCBhIGxhcmdlciBhZGRyZXNzIGZvciB0aGUgZnVuY3Rpb24gdXNl IHRoYXQgaW5zdGVhZC4KLS0gICAgICAgICBJIGRvbid0IHRoaW5rIHRoaXMgY2FuIGV2ZXIgY2F1 c2UgYW55IHByb2JsZW1zOyB0aGVyZSBzaG91bGRuJ3QKLS0gICAgICAgICBiZSBhbnkgbWluaW1h bCBzeW1ib2xzIGluIHRoZSBtaWRkbGUgb2YgYSBmdW5jdGlvbi4KLS0gICAgICAgICBGSVhNRTog IChOb3QgbmVjZXNzYXJpbHkgdHJ1ZS4gIFdoYXQgYWJvdXQgdGV4dCBsYWJlbHMpICovCi0tCi0t ICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gCi0tCWxvb2t1cF9taW5pbWFs X3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLQotLSAgICAgIGlmIChtc3ltYm9s ICE9IE5VTEwKLS0JICAmJiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpCi0tCSAgICAg ID4gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYykpKSkKLS0JZnVubmFtZSA9 IFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpOwotLSAgICAgIGVsc2UKLS0JZnVubmFtZSA9 IFNZTUJPTF9MSU5LQUdFX05BTUUgKGZ1bmMpOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0g ICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQotLSAgICAgIGxvb2t1cF9taW5p bWFsX3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLQotLSAgICAgIGlmIChtc3lt Ym9sICE9IE5VTEwpCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsK LS0gICAgICBlbHNlIC8qIEdvdCBubyAnZnVubmFtZScsIGNvZGUgYmVsb3cgd2lsbCBmYWlsLiAg Ki8KLS0JZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGZvciBmcmFtZS4iKSk7Ci0tICAgIH0K LS0KLS0gIC8qIElmIGNvbW5hbWUgaXMgTlVMTCwgd2UgYXNzdW1lIHRoZSB1c2VyIHdpc2hlcyB0 byBzZWUgdGhlIAotLSAgICAgd2hpY2ggQ09NTU9OIGJsb2NrcyBhcmUgdmlzaWJsZSBoZXJlIGFu ZCB0aGVuIHJldHVybiAqLwotLQotLSAgaWYgKGNvbW5hbWUgPT0gMCkKLSsgIGJsb2NrID0gZ2V0 X2ZyYW1lX2Jsb2NrIChmaSwgMCk7Ci0rICBpZiAoYmxvY2sgPT0gTlVMTCkKLSAgICAgewotLSAg ICAgIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoZnVubmFtZSk7Ci0rICAgICAgcHJpbnRmX2Zp bHRlcmVkIChfKCJObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFibGUuXG4iKSk7Ci0gICAgICAg cmV0dXJuOwotICAgICB9Ci0gCi0tICB0aGVfY29tbW9uID0gZmluZF9jb21tb25fZm9yX2Z1bmN0 aW9uIChjb21uYW1lLCBmdW5uYW1lKTsKLS0KLS0gIGlmICh0aGVfY29tbW9uKQotKyAgd2hpbGUg KGJsb2NrKQotICAgICB7Ci0tICAgICAgaWYgKHN0cmNtcCAoY29tbmFtZSwgQkxBTktfQ09NTU9O X05BTUVfTE9DQUwpID09IDApCi0tCXByaW50Zl9maWx0ZXJlZCAoXygiQ29udGVudHMgb2YgYmxh bmsgQ09NTU9OIGJsb2NrOlxuIikpOwotLSAgICAgIGVsc2UKLS0JcHJpbnRmX2ZpbHRlcmVkIChf KCJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICclcyc6XG4iKSwgY29tbmFtZSk7Ci0tCi0t ICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKLS0gICAgICBlbnRyeSA9IHRoZV9jb21tb24t PmVudHJpZXM7Ci0tCi0tICAgICAgd2hpbGUgKGVudHJ5ICE9IE5VTEwpCi0tCXsKLS0JICBwcmlu dF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIGVudHJ5LT5zeW1ib2wsIGZpLCBnZGJfc3Rkb3V0 LCAwKTsKLS0JICBlbnRyeSA9IGVudHJ5LT5uZXh0OwotLQl9Ci0rICAgICAgaWYgKGluZm9fY29t bW9uX2NvbW1hbmRfZm9yX2Jsb2NrIChibG9jaywgZmksIGNvbW5hbWUpKQotKwl2YWx1ZXNfcHJp bnRlZCA9IDE7Ci0rICAgICAgLyogQWZ0ZXIgaGFuZGxpbmcgdGhlIGZ1bmN0aW9uJ3MgdG9wLWxl dmVsIGJsb2NrLCBzdG9wLiAgRG9uJ3QKLSsgICAgICAgICBjb250aW51ZSB0byBpdHMgc3VwZXJi bG9jaywgdGhlIGJsb2NrIG9mIHBlci1maWxlIHN5bWJvbHMuICAqLwotKyAgICAgIGlmIChCTE9D S19GVU5DVElPTiAoYmxvY2spKQotKwlicmVhazsKLSsgICAgICBibG9jayA9IEJMT0NLX1NVUEVS QkxPQ0sgKGJsb2NrKTsKLSAgICAgfQotLSAgZWxzZQotLSAgICBwcmludGZfZmlsdGVyZWQgKF8o IkNhbm5vdCBsb2NhdGUgdGhlIGNvbW1vbiBibG9jayAlcyBpbiBmdW5jdGlvbiAnJXMnXG4iKSwK LS0JCSAgICAgY29tbmFtZSwgZnVubmFtZSk7Ci0tfQotLQotLS8qIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyBhCi0tICAgRjc3IGNvbW1vbiBibG9j ayB2aXNpYmxlIGF0IHRoZSBjdXJyZW50IHNjb3BlIGNhbGxlZCAnY29tbmFtZScuICovCi0tCi0t I2lmIDAKLS1zdGF0aWMgaW50Ci0tdGhlcmVfaXNfYV92aXNpYmxlX2NvbW1vbl9uYW1lZCAoY2hh ciAqY29tbmFtZSkKLS17Ci0tICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0aGVfY29tbW9uOwotLSAg c3RydWN0IGZyYW1lX2luZm8gKmZpOwotLSAgY2hhciAqZnVubmFtZSA9IDA7Ci0tICBzdHJ1Y3Qg c3ltYm9sICpmdW5jOwotLQotLSAgaWYgKGNvbW5hbWUgPT0gTlVMTCkKLS0gICAgZXJyb3IgKF8o IkNhbm5vdCBkZWFsIHdpdGggTlVMTCBjb21tb24gbmFtZSEiKSk7Ci0gCi0tICBmaSA9IGdldF9z ZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Ci0tCi0tICAvKiBUaGUgZm9s bG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQgb2ZmIGZyb20gc3RhY2suYydzIHJvdXRpbmUgCi0t ICAgICBwcmludF9mcmFtZV9pbmZvKCkgKi8KLS0KLS0gIGZ1bmMgPSBmaW5kX3BjX2Z1bmN0aW9u IChmaS0+cGMpOwotLSAgaWYgKGZ1bmMpCi0rICBpZiAoIXZhbHVlc19wcmludGVkKQotICAgICB7 Ci0tICAgICAgLyogSW4gY2VydGFpbiBwYXRob2xvZ2ljYWwgY2FzZXMsIHRoZSBzeW10YWJzIGdp dmUgdGhlIHdyb25nCi0tICAgICAgICAgZnVuY3Rpb24gKHdoZW4gd2UgYXJlIGluIHRoZSBmaXJz dCBmdW5jdGlvbiBpbiBhIGZpbGUgd2hpY2gKLS0gICAgICAgICBpcyBjb21waWxlZCB3aXRob3V0 IGRlYnVnZ2luZyBzeW1ib2xzLCB0aGUgcHJldmlvdXMgZnVuY3Rpb24KLS0gICAgICAgICBpcyBj b21waWxlZCB3aXRoIGRlYnVnZ2luZyBzeW1ib2xzLCBhbmQgdGhlICJmb28ubyIgc3ltYm9sCi0t ICAgICAgICAgdGhhdCBpcyBzdXBwb3NlZCB0byB0ZWxsIHVzIHdoZXJlIHRoZSBmaWxlIHdpdGgg ZGVidWdnaW5nIHN5bWJvbHMKLS0gICAgICAgICBlbmRzIGhhcyBiZWVuIHRydW5jYXRlZCBieSBh ciBiZWNhdXNlIGl0IGlzIGxvbmdlciB0aGFuIDE1Ci0tICAgICAgICAgY2hhcmFjdGVycykuCi0t Ci0tICAgICAgICAgU28gbG9vayBpbiB0aGUgbWluaW1hbCBzeW1ib2wgdGFibGVzIGFzIHdlbGws IGFuZCBpZiBpdCBjb21lcwotLSAgICAgICAgIHVwIHdpdGggYSBsYXJnZXIgYWRkcmVzcyBmb3Ig dGhlIGZ1bmN0aW9uIHVzZSB0aGF0IGluc3RlYWQuCi0tICAgICAgICAgSSBkb24ndCB0aGluayB0 aGlzIGNhbiBldmVyIGNhdXNlIGFueSBwcm9ibGVtczsgdGhlcmUgc2hvdWxkbid0Ci0tICAgICAg ICAgYmUgYW55IG1pbmltYWwgc3ltYm9scyBpbiB0aGUgbWlkZGxlIG9mIGEgZnVuY3Rpb24uCi0t ICAgICAgICAgRklYTUU6ICAoTm90IG5lY2Vzc2FyaWx5IHRydWUuICBXaGF0IGFib3V0IHRleHQg bGFiZWxzKSAqLwotLQotLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxv b2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKLS0KLS0gICAgICBpZiAobXN5bWJv bCAhPSBOVUxMCi0tCSAgJiYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKQotLQkgICAg ICA+IEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKGZ1bmMpKSkpCi0tCWZ1bm5hbWUg PSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLSsgICAgICBpZiAoY29tbmFtZSkKLSsJ cHJpbnRmX2ZpbHRlcmVkIChfKCJObyBjb21tb24gYmxvY2sgJyVzJy5cbiIpLCBjb21uYW1lKTsK LSAgICAgICBlbHNlCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChmdW5jKTsKLSsJ cHJpbnRmX2ZpbHRlcmVkIChfKCJObyBjb21tb24gYmxvY2tzLlxuIikpOwotICAgICB9Ci0tICBl bHNlCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQotLSAg ICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKLS0KLS0gICAgICBpZiAo bXN5bWJvbCAhPSBOVUxMKQotLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJv bCk7Ci0tICAgIH0KLS0KLS0gIHRoZV9jb21tb24gPSBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24g KGNvbW5hbWUsIGZ1bm5hbWUpOwotLQotLSAgcmV0dXJuICh0aGVfY29tbW9uID8gMSA6IDApOwot IH0KLS0jZW5kaWYKLSAKLSB2b2lkCi0gX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCkKLWRp ZmYgLS1naXQgYS9nZGIvZmluZGNtZC5jIGIvZ2RiL2ZpbmRjbWQuYwotaW5kZXggMWQyODkxNC4u ZDE3NjM0MSAxMDA2NDQKLS0tLSBhL2dkYi9maW5kY21kLmMKLSsrKyBiL2dkYi9maW5kY21kLmMK LUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gLyogQ29waWVkIGZyb20gYmZkX3B1dF9iaXRzLiAgKi8K LSAKLS1zdGF0aWMgdm9pZAotK3ZvaWQKLSBwdXRfYml0cyAoYmZkX3VpbnQ2NF90IGRhdGEsIGNo YXIgKmJ1ZiwgaW50IGJpdHMsIGJmZF9ib29sZWFuIGJpZ19wKQorK3ZvaWQKKyBwdXRfYml0cyAo YmZkX3VpbnQ2NF90IGRhdGEsIGNoYXIgKmJ1ZiwgaW50IGJpdHMsIGJmZF9ib29sZWFuIGJpZ19w KQogIHsKICAgIGludCBpOwogQEAgLTQ1LDYgKzQ1LDQxIEBAIHB1dF9iaXRzIChiZmRfdWludDY0 X3QgZGF0YSwgY2hhciAqYnVmLCBpbnQgYml0cywgYmZkX2Jvb2xlYW4gYmlnX3ApCkBAIC05Mjg3 LDcgKzQ4MTMsNyBAQCBpbmRleCAxZDI4OTE0Li5kMTc2MzQxIDEwMDY0NAogIAogICAgLyogUmVj b3JkIGFuZCBwcmludCB0aGUgcmVzdWx0cy4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIu YyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CitpbmRleCBl MTE3YThlLi42YmQzNzI0IDEwMDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIuYwogKysrIGIvZ2RiL2Zp bmR2YXIuYwogQEAgLTM1LDYgKzM1LDcgQEAKQEAgLTkyOTYsOSArNDgyMiw5IEBAIGluZGV4IDhj MDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiArI2luY2x1ZGUg ImR3YXJmMmxvYy5oIgogIAotIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBHREIg aGFzIG5lZWRlZCB0aGVzZSBmb3IgYSBsb25nIHRpbWUuLi4KLSAgICBBbGwgZXh0cmFjdCBhIHRh cmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzIExFTiBieXRlcyBsb25nLiAgKi8K LUBAIC0zOTQsMjcgKzM5NSwxNiBAQCBzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAoc3RydWN0IHN5 bWJvbCAqc3ltKQorIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJh Y3QnIGZ1bmN0aW9ucyByZXR1cm4gYQorICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRh cmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCitAQCAtMzk3LDI3ICszOTgsMTYg QEAgc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHN0cnVjdCBzeW1ib2wgKnN5bSkKICAvKiBHaXZl biBhIHN0cnVjdCBzeW1ib2wgZm9yIGEgdmFyaWFibGUsCiAgICAgYW5kIGEgc3RhY2sgZnJhbWUg aWQsIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZQogICAgIGFuZCByZXR1cm4gYSAocG9p bnRlciB0byBhKSBzdHJ1Y3QgdmFsdWUgY29udGFpbmluZyB0aGUgdmFsdWUuIApAQCAtOTMzMCw3 ICs0ODU2LDcgQEAgaW5kZXggOGMwMjdjOS4uZDIwMWY3NiAxMDA2NDQKICAKICAgIGlmIChzeW1i b2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAg LTQyMiwzMiArNDEyLDQwIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC00MjUsMzIgKzQxNSw0MCBAQCByZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgICBz d2l0Y2ggKFNZTUJPTF9DTEFTUyAodmFyKSkKICAgICAgewogICAgICBjYXNlIExPQ19DT05TVDoK QEAgLTkzOTEsNyArNDkxNyw3IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAgCXJl dHVybiB2OwogICAgICAgIH0KICAKLUBAIC00ODksMTIgKzQ4NywyMyBAQCByZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDky LDEyICs0OTAsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIExPQ19CTE9D SzoKQEAgLTk0MjEsNyArNDk0Nyw3IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAg CiAgICAgIGNhc2UgTE9DX1JFR0lTVEVSOgogICAgICBjYXNlIExPQ19SRUdQQVJNX0FERFI6Ci1A QCAtNTEzLDcgKzUyMiw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MTYsNyArNTI1LDYgQEAgcmVhZF92YXJfdmFs dWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAkgICAg ICBlcnJvciAoXygiVmFsdWUgb2YgcmVnaXN0ZXIgdmFyaWFibGUgbm90IGF2YWlsYWJsZS4iKSk7 CiAgCiAgCSAgICBhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVndmFsKTsKQEAgLTk0MjksNyAr NDk1NSw3IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAgCSAgfQogIAllbHNlCiAg CSAgewotQEAgLTU1NiwxOCArNTY0LDMzIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9s ICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01NTksMTggKzU2NywzMyBAQCBy ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9DX09QVElNSVpFRF9PVVQ6CkBAIC05 NDY5LDcgKzQ5OTUsNyBAQCBpbmRleCA4YzAyN2M5Li5kMjAxZjc2IDEwMDY0NAogIH0KICAKICAv KiBJbnN0YWxsIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgcmVnaXN0ZXIgdmFsdWVzLiAgKi8KLUBA IC02MDQsMTAgKzYyNywxMSBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTYwNywxMCArNjMwLDExIEBA IHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUs IGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CkBAIC05NDgzLDcgKzUwMDks NyBAQCBpbmRleCA4YzAyN2M5Li5kMjAxZjc2IDEwMDY0NAogICAgICB7CiAgICAgICAgLyogVGhl IElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhlCiAgICAg ICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0IG5lZWQg dG8KLUBAIC02MjEsNyArNjQ1LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUg KnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC02MjQsNyAr NjQ4LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdu dW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9GUkFNRV9JRCAodikg PSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKICAgICAgICBWQUxVRV9SRUdOVU0gKHYpID0gcmVnbnVt OwogICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdkYmFyY2gsCkBAIC05NDkyLDI1 ICs1MDE4LDYgQEAgaW5kZXggOGMwMjdjOS4uZDIwMWY3NiAxMDA2NDQKICAgICAgfQogICAgZWxz ZQogICAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2ZyYW1lLmMgYi9nZGIvZnJhbWUuYwotaW5kZXgg NzkzMmI0OC4uNGU3YzQzNCAxMDA2NDQKLS0tLSBhL2dkYi9mcmFtZS5jCi0rKysgYi9nZGIvZnJh bWUuYwotQEAgLTExNzEsNiArMTE3MSwxNCBAQCBoYXNfc3RhY2tfZnJhbWVzICh2b2lkKQotICAg aWYgKHB0aWRfZXF1YWwgKGluZmVyaW9yX3B0aWQsIG51bGxfcHRpZCkpCi0gICAgIHJldHVybiAw OwotIAotKyAgLyogRklYTUU6IFdvcmthcm91bmQgYXJjaGVyLXRyb21leS1weXRob24gY3Jhc2gg aW4KLSsgICAgIGFkZF9pbmZlcmlvcl9vYmplY3QtPmdldF9jdXJyZW50X2FyY2ggb24gRlNGIEdE QiB1cGRhdGU6Ci0rICAgICBpc190aHJlYWRfc3RhdGUgd291bGQgYXNzZXJ0aW9uIGNoZWNrIGhl cmUgYXMKLSsgICAgIHJlbW90ZV9zdGFydF9yZW1vdGUtPmFkZF9pbmZlcmlvcl9zaWxlbnQtPm9i c2VydmVyX25vdGlmeV9uZXdfaW5mZXJpb3IgaXMKLSsgICAgIGJlZm9yZSByZW1vdGVfc3RhcnRf cmVtb3RlLT5hZGRfdGhyZWFkX3NpbGVudC4gICovCi0rICBpZiAoZmluZF90aHJlYWRfcHRpZCAo aW5mZXJpb3JfcHRpZCkgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICAvKiBEb24ndCB0 cnkgdG8gcmVhZCBmcm9tIGEgZGVhZCB0aHJlYWQuICAqLwotICAgaWYgKGlzX2V4aXRlZCAoaW5m ZXJpb3JfcHRpZCkpCi0gICAgIHJldHVybiAwOwogZGlmZiAtLWdpdCBhL2dkYi9nZGJpbml0Lmlu IGIvZ2RiL2dkYmluaXQuaW4KIGluZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0CiAtLS0gYS9n ZGIvZ2RiaW5pdC5pbgpAQCAtOTkzOCw3ICs1NDQ1LDcgQEAgaW5kZXggMDAwMDAwMC4uYjgyMTNm NQogKyAgTlVMTCwKICt9OwogZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0 aHJlYWQuaAotaW5kZXggNzlkMzNmZS4uZDNiNGZhMSAxMDA2NDQKK2luZGV4IGNkMjRlYWYuLjEx OWFmN2QgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidGhyZWFkLmgKICsrKyBiL2dkYi9nZGJ0aHJlYWQu aAogQEAgLTE4NSw2ICsxODUsMTAgQEAgc3RydWN0IHRocmVhZF9pbmZvCkBAIC05OTUxLDggKzU0 NTgsOCBAQCBpbmRleCA3OWQzM2ZlLi5kM2I0ZmExIDEwMDY0NAogKwogICAgLyogUHJpdmF0ZSBk YXRhIHVzZWQgYnkgdGhlIHRhcmdldCB2ZWN0b3IgaW1wbGVtZW50YXRpb24uICAqLwogICAgc3Ry dWN0IHByaXZhdGVfdGhyZWFkX2luZm8gKnByaXZhdGU7Ci0gfTsKLUBAIC0yNDksNiArMjUzLDkg QEAgZXh0ZXJuIHN0cnVjdCB0aHJlYWRfaW5mbyAqYW55X3RocmVhZF9vZl9wcm9jZXNzIChpbnQg cGlkKTsKKyAKK0BAIC0yNTcsNiArMjYxLDkgQEAgZXh0ZXJuIHN0cnVjdCB0aHJlYWRfaW5mbyAq YW55X2xpdmVfdGhyZWFkX29mX3Byb2Nlc3MgKGludCBwaWQpOwogIC8qIENoYW5nZSB0aGUgcHRp ZCBvZiB0aHJlYWQgT0xEX1BUSUQgdG8gTkVXX1BUSUQuICAqLwogIHZvaWQgdGhyZWFkX2NoYW5n ZV9wdGlkIChwdGlkX3Qgb2xkX3B0aWQsIHB0aWRfdCBuZXdfcHRpZCk7CiAgCkBAIC05OTYzLDEw ICs1NDcwLDEwIEBAIGluZGV4IDc5ZDMzZmUuLmQzYjRmYTEgMTAwNjQ0CiAgICAgb25jZSBmb3Ig ZWFjaCBrbm93biB0aHJlYWQuICAqLwogIHR5cGVkZWYgaW50ICgqdGhyZWFkX2NhbGxiYWNrX2Z1 bmMpIChzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgdm9pZCAqKTsKIGRpZmYgLS1naXQgYS9nZGIvZ2Ri dHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1pbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAor aW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0eXBlcy5jCiArKysg Yi9nZGIvZ2RidHlwZXMuYwotQEAgLTM4LDYgKzM4LDkgQEAKK0BAIC0zOSw2ICszOSw5IEBACiAg I2luY2x1ZGUgImNwLWFiaS5oIgogICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCiAgI2luY2x1ZGUg Imhhc2h0YWIuaCIKQEAgLTk5NzYsNyArNTQ4Myw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMg MTAwNjQ0CiAgCiAgCiAgLyogRmxvYXRmb3JtYXQgcGFpcnMuICAqLwotQEAgLTExOCwxMyArMTIx LDMxIEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwg aW50KTsKK0BAIC0xMTksNiArMTIyLDI0IEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAo c3RydWN0IGZpZWxkICosIGludCwgaW50KTsKICBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxkbGlz dHMgKHN0cnVjdCB0eXBlICosIGludCk7CiAgc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1ZmYg KHN0cnVjdCB0eXBlICosIGludCk7CiAgCkBAIC0xMDAwMSwxNSArNTUwOCw3IEBAIGluZGV4IDJm NzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiAgCiAgLyogQWxsb2NhdGUgYSBuZXcgT0JKRklMRS1hc3Nv Y2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0CiAgICAgd2l0aCBzb21lIGRlZmF1bHRz LiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLSAgICBvbiB0aGUg b2JqZmlsZSdzIG9iamZpbGVfb2JzdGFjay4gICovCi0gCi0gc3RydWN0IHR5cGUgKgotLWFsbG9j X3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2FsbG9jX3R5cGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBzdHJ1Y3QgdHlwZSAqcGFyZW50KQotIHsKLSAgIHN0cnVjdCB0eXBlICp0 eXBlOwotIAotQEAgLTE0OCw2ICsxNjksMzkgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCitAQCAtMTQ5LDYgKzE3MCwzOSBAQCBhbGxvY190eXBlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKICAgIHJldHVybiB0eXBlOwogIH0KICAKQEAgLTEwMDQ5LDE2ICs1NTQ4LDcg QEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAvKiBBbGxvY2F0ZSBhIG5ldyBHREJB UkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKICAgICB3aXRoIHNvbWUg ZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAogICAg IG9uIHRoZSBoZWFwLiAgKi8KLUBAIC0xODQsNyArMjM4LDcgQEAgc3RydWN0IHR5cGUgKgotIGFs bG9jX3R5cGVfY29weSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCi0gewotICAgaWYgKFRZUEVf T0JKRklMRV9PV05FRCAodHlwZSkpCi0tICAgIHJldHVybiBhbGxvY190eXBlIChUWVBFX09XTkVS ICh0eXBlKS5vYmpmaWxlKTsKLSsgICAgcmV0dXJuIGFsbG9jX3R5cGUgKFRZUEVfT1dORVIgKHR5 cGUpLm9iamZpbGUsIChzdHJ1Y3QgdHlwZSAqKSB0eXBlKTsKLSAgIGVsc2UKLSAgICAgcmV0dXJu IGFsbG9jX3R5cGVfYXJjaCAoVFlQRV9PV05FUiAodHlwZSkuZ2RiYXJjaCk7Ci0gfQotQEAgLTI3 Myw3ICszMjcsNyBAQCBtYWtlX3BvaW50ZXJfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCB0eXBlICoqdHlwZXB0cikKK0BAIC0yNzQsNyArMzI4LDcgQEAgbWFrZV9wb2ludGVyX3R5cGUg KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCiAgCiAgICBpZiAodHlw ZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgb25l LiAgKi8KICAgICAgewpAQCAtMTAwNjcsNyArNTU1Nyw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJm MmMgMTAwNjQ0CiAgICAgICAgaWYgKHR5cGVwdHIpCiAgCSp0eXBlcHRyID0gbnR5cGU7CiAgICAg IH0KLUBAIC0zNTAsNyArNDA0LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKK0BAIC0zNTEsNyArNDA1LDcgQEAgbWFrZV9y ZWZlcmVuY2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikK ICAKICAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0 byBhbGxvY2F0ZSBvbmUuICAqLwogICAgICB7CkBAIC0xMDA3NiwyMiArNTU2NiwxNSBAQCBpbmRl eCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogICAgICAgIGlmICh0eXBlcHRyKQogIAkqdHlwZXB0 ciA9IG50eXBlOwogICAgICB9Ci1AQCAtNzIxLDEyICs3NzUsMTMgQEAgY3JlYXRlX3JhbmdlX3R5 cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCi0g ICAgIFRZUEVfVEFSR0VUX1NUVUIgKHJlc3VsdF90eXBlKSA9IDE7Ci0gICBlbHNlCi0gICAgIFRZ UEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAoaW5k ZXhfdHlwZSkpOwotLSAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAyOwotKyAgVFlQRV9O RklFTERTIChyZXN1bHRfdHlwZSkgPSAzOwotICAgVFlQRV9GSUVMRFMgKHJlc3VsdF90eXBlKSA9 IFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwKLSAJCQkJCSAgIFRZUEVfTkZJRUxEUyAocmVzdWx0 X3R5cGUpCi0gCQkJCQkgICAqIHNpemVvZiAoc3RydWN0IGZpZWxkKSk7CitAQCAtNzI2LDYgKzc4 MCw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVj dCB0eXBlICppbmRleF90eXBlLAorICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVv ZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwogICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBl KSA9IGxvd19ib3VuZDsKICAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9i b3VuZDsKICsgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7CiAgCiAgICBpZiAo bG93X2JvdW5kID49IDApCiAgICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1A QCAtODI2LDI2ICs4ODEsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1 bHRfdHlwZSwKK0BAIC04MjUsMjYgKzg4MCw0NSBAQCBjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0 IHR5cGUgKnJlc3VsdF90eXBlLAogIAogICAgVFlQRV9DT0RFIChyZXN1bHRfdHlwZSkgPSBUWVBF X0NPREVfQVJSQVk7CiAgICBUWVBFX1RBUkdFVF9UWVBFIChyZXN1bHRfdHlwZSkgPSBlbGVtZW50 X3R5cGU7CkBAIC0xMDExNiwxMCArNTU5OSwxMCBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEw MDY0NAogKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVudGltZSBpbmZvcm1hdGlv biBsaWtlCiArICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5vdCBiZWluZyBhdmFpbGFi bGUgZHVyaW5nIHRoZQogKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCi0rICBpZiAo VFlQRV9SQU5HRV9CT1VORF9JU19EV0FSRl9CTE9DSyAocmFuZ2VfdHlwZSwgMCkKLSsgICAgICB8 fCBUWVBFX1JBTkdFX0JPVU5EX0lTX0RXQVJGX0JMT0NLIChyYW5nZV90eXBlLCAxKQotKyAgICAg IHx8IFRZUEVfUkFOR0VfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKLSsg ICAgICB8fCBUWVBFX1JBTkdFX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkg CisrICBpZiAoVFlQRV9MT1dfQk9VTkRfSVNfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUpCisrICAg ICAgfHwgVFlQRV9ISUdIX0JPVU5EX0lTX0RXQVJGX0JMT0NLIChyYW5nZV90eXBlKQorKyAgICAg IHx8IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCisrICAgICAgfHwgVFlQ RV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCiArICAgICAgfHwgZ2V0X2Rpc2Ny ZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKICsg ICAgewogKyAgICAgIGxvd19ib3VuZCA9IDA7CkBAIC0xMDE1MCw3ICs1NjMzLDcgQEAgaW5kZXgg MmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAKICAgIHJldHVybiByZXN1bHRfdHlwZTsKICB9Ci1A QCAtMTMzMSw2ICsxNDA1LDg0IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAodm9pZCkKK0BAIC0x MzMxLDYgKzE0MDUsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAodm9pZCkKICAgIGNvbXBs YWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7 CiAgfQogIApAQCAtMTAxNjIsMTMgKzU2NDUsMTIgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAx MDA2NDQKICsgICBjbGVhcmVkIEZVTExfU1BBTiByZXR1cm4gdmFsdWUgKHRoZSBleHBlY3RlZCBT SVpFT0YpIGZvciBub24temVybwogKyAgIFRZUEVfQllURV9TVFJJREUgdmFsdWVzLiAgKi8KICsK LStzdGF0aWMgQ09SRV9BRERSCisrc3RhdGljIExPTkdFU1QKICt0eXBlX2xlbmd0aF9nZXQgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4p CiArewogKyAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7Ci0rICBpbnQgY291bnQ7Ci0rICBDT1JF X0FERFIgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBmYWxzZSBHQ0Mgd2FybmluZy4g ICovCi0rICBDT1JFX0FERFIgZWxlbWVudF9zaXplOworKyAgTE9OR0VTVCBieXRlX3N0cmlkZSA9 IDA7CS8qIGA9IDAnIGZvciBhIGZhbHNlIEdDQyB3YXJuaW5nLiAgKi8KKysgIExPTkdFU1QgY291 bnQsIGVsZW1lbnRfc2l6ZSwgcmV0dmFsOwogKwogKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0g VFlQRV9DT0RFX0FSUkFZCiArICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVf U1RSSU5HKQpAQCAtMTAxODEsMTUgKzU2NjMsMTUgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAx MDA2NDQKICsgICAgcmV0dXJuIDA7CiArCiArICByYW5nZV90eXBlID0gVFlQRV9JTkRFWF9UWVBF ICh0eXBlKTsKLSsgIGlmIChUWVBFX1JBTkdFX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAocmFu Z2VfdHlwZSkKLSsgICAgICB8fCBUWVBFX1JBTkdFX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAo cmFuZ2VfdHlwZSkpCisrICBpZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBl KQorKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpKQogKyAg ICByZXR1cm4gMDsKICsgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZ UEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7CiArICAvKiBJdCBtYXkgaGFwcGVuIGZvciB3 cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8KICsgIGlm IChjb3VudCA8IDApCi0rICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZh bGlkIGJvdW5kcyAlZC4uJWQiKSwKLSsJICAgICBUWVBFX05BTUUgKHR5cGUpLCBUWVBFX0xPV19C T1VORCAocmFuZ2VfdHlwZSksCi0rCSAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSk7 CisrICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAl cy4uJXMiKSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQRV9MT1dfQk9V TkQgKHJhbmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JPVU5EIChyYW5n ZV90eXBlKSkpOwogKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGNvdW50ID09 IDAgcmlnaHQuICAqLwogKyAgaWYgKGNvdW50IDw9IDApCiArICAgIHJldHVybiAwOwpAQCAtMTAy MDUsMTIgKzU2ODcsMzQgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICsJICBieXRl X3N0cmlkZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOwogKwl9CiAr ICAgIH0KKysKKysgIC8qIEZvciBub3csIHdlIGNvbnNlcnZhdGl2ZWx5IHRha2UgdGhlIGFycmF5 IGxlbmd0aCB0byBiZSAwIGlmIGl0cyBsZW5ndGgKKysgICAgIGV4Y2VlZHMgVUlOVF9NQVguICBU aGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgZm9yIHggPCAwLAorKyAgICAgKFVMT05HRVNUKSB4 ID09IC14ICsgVUxPTkdFU1RfTUFYICsgMSwgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJh bnRlZWQKKysgICAgIGJ5IEMsIGJ1dCBpcyB1c3VhbGx5IHRydWUgKGJlY2F1c2UgaXQgd291bGQg YmUgdHJ1ZSBpZiB4IHdlcmUgdW5zaWduZWQKKysgICAgIHdpdGggaXRzIGhpZ2gtb3JkZXIgYml0 IG9uKS4gSXQgdXNlcyB0aGUgZmFjdCB0aGF0IGhpZ2hfYm91bmQtbG93X2JvdW5kIGlzCisrICAg ICBhbHdheXMgcmVwcmVzZW50YWJsZSBpbiBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5k LWxvd19ib3VuZCsxCisrICAgICBvdmVyZmxvd3MsIGl0IG92ZXJmbG93cyB0byAwLiAgV2UgbXVz dCBjaGFuZ2UgdGhlc2UgdGVzdHMgaWYgd2UgZGVjaWRlIHRvCisrICAgICBpbmNyZWFzZSB0aGUg cmVwcmVzZW50YXRpb24gb2YgVFlQRV9MRU5HVEggZnJvbSB1bnNpZ25lZCBpbnQgdG8gVUxPTkdF U1QuCisrICAgICAqLworKwogKyAgaWYgKGZ1bGxfc3BhbikKLSsgICAgcmV0dXJuIGNvdW50ICog Ynl0ZV9zdHJpZGU7CisrICAgIHsKKysgICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3RyaWRl OworKyAgICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3RyaWRl IHx8IHJldHZhbCA+IFVJTlRfTUFYKQorKwlyZXR2YWwgPSAwOworKyAgICAgIHJldHVybiByZXR2 YWw7CisrICAgIH0KICsgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQogKyAgICB0YXJnZXRfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKICsgIGVsZW1lbnRf c2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOwotKyAgcmV0dXJu IChjb3VudCAtIDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7CisrICByZXR2YWwgPSAo Y291bnQgLSAxKSAqIGJ5dGVfc3RyaWRlICsgZWxlbWVudF9zaXplOworKyAgaWYgKHJldHZhbCA8 IGVsZW1lbnRfc2l6ZQorKyAgICAgIHx8IChieXRlX3N0cmlkZSAhPSAwCisrICAgICAgICAgICYm IChyZXR2YWwgLSBlbGVtZW50X3NpemUpIC8gYnl0ZV9zdHJpZGUgIT0gY291bnQgLSAxKQorKyAg ICAgIHx8IHJldHZhbCA+IFVJTlRfTUFYKQorKyAgICByZXR2YWwgPSAwOworKyAgcmV0dXJuIHJl dHZhbDsKICt9CiArCiArLyogUHJlcGFyZSBUWVBFIGFmdGVyIGJlaW5nIHJlYWQgaW4gYnkgdGhl IGJhY2tlbmQuICBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbgpAQCAtMTAyMzUsMTcgKzU3MzksNyBA QCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogIC8qIEFkZGVkIGJ5IEJyeWFuIEJvcmVo YW0sIEtld2lsbCwgU3VuIFNlcCAxNyAxODowNzoxNyAxOTg5LgogIAogICAgIElmIHRoaXMgaXMg YSBzdHViYmVkIHN0cnVjdCAoaS5lLiBkZWNsYXJlZCBhcyBzdHJ1Y3QgZm9vICopLCBzZWUgaWYK LUBAIC0xMzQ3LDcgKzE0OTksOCBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCi0gLyog RmluZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJl YWwgdHlwZSwKLSAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzIGFuZCBj b21wbGV0aW5nIG9wYXF1ZSBvciBzdHViCi0gICAgdHlwZXMuICBDb21wbGV0aW9uIGNoYW5nZXMg dGhlIFRZUEUgYXJndW1lbnQsIGJ1dCBzdHJpcHBpbmcgb2YKLS0gICB0eXBlZGVmcyBkb2VzIG5v dC4gICovCi0rICAgdHlwZWRlZnMgZG9lcyBub3QuICBTdGlsbCBvcmlnaW5hbCBwYXNzZWQgVFlQ RSB3aWxsIGhhdmUgVFlQRV9MRU5HVEgKLSsgICB1cGRhdGVkLiAgRklYTUU6IFJlbW92ZSB0aGlz IGRlcGVuZGVuY3kgKG9ubHkgYWRhX3RvX2ZpeGVkX3R5cGU/KS4gICovCi0gCi0gc3RydWN0IHR5 cGUgKgotIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotQEAgLTE0NTcsMzQgKzE2 MTAsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtMTQ2Miw1MSAr MTYzNSwzNiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICAgICAgIH0K ICAgICAgfQogIApAQCAtMTAyNjQsOCArNTc1OCw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMg MTAwNjQ0CiArICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EWU5BTUlDICh0eXBlKSA9PSAwKTsKICsg ICAgfQogKwotKyAgaWYgKCFjdXJyZW50bHlfcmVhZGluZ19zeW10YWIKLSsgICAgICAmJiAoVFlQ RV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkpCisrICBpZiAoVFlQ RV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKICAgICAgewogLSAg ICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKQEAgLTEwMjg1 LDIzICs1Nzc4LDQwIEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiAgCSAgLyogTm93 IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBlLCBiYXNlZCBvbiBpdHMKIC0J ICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4KIC0J ICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMgd2hlcmUgdGhlIGhpZ2ggYm91 bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4gICovCi0tCSAgY29uc3Qg aW50IGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKTsKLS0JICBjb25zdCBp bnQgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSk7Ci0tCSAgaW50IG5i X2VsZW1lbnRzOwotLQkKKy0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4gKi8K Ky0JICBjb25zdCBMT05HRVNUIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBl KTsKKy0JICBjb25zdCBMT05HRVNUIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJhbmdl X3R5cGUpOworLQkgIFVMT05HRVNUIGxlbjsKKy0KIC0JICBpZiAoaGlnaF9ib3VuZCA8IGxvd19i b3VuZCkKLS0JICAgIG5iX2VsZW1lbnRzID0gMDsKLS0JICBlbHNlCi0tCSAgICBuYl9lbGVtZW50 cyA9IGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxOwotLQkKLS0JICBUWVBFX0xFTkdUSCAodHlw ZSkgPSBuYl9lbGVtZW50cyAqIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CistCSAgICBsZW4g PSAwOworLQkgIGVsc2UgeworLQkgICAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFr ZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAKKy0JICAgICAgIGlmIGl0cyBsZW5ndGggZXhjZWVk cyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMKKy0JICAgICAgIHRoYXQgZm9yIHgg PCAwLCAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLAorLQkgICAgICAgd2hp Y2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1 ZQorLQkgICAgICAgKGJlY2F1c2UgaXQgd291bGQgYmUgdHJ1ZSBpZiB4IHdlcmUgdW5zaWduZWQg d2l0aCBpdHMKKy0JICAgICAgIGhpZ2gtb3JkZXIgYml0IG9uKS4gSXQgdXNlcyB0aGUgZmFjdCB0 aGF0CistCSAgICAgICBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcyBhbHdheXMgcmVwcmVzZW50YWJs ZSBpbgorLQkgICAgICAgVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQr MSBvdmVyZmxvd3MsCistCSAgICAgICBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdl IHRoZXNlIHRlc3RzIGlmIHdlIAorLQkgICAgICAgZGVjaWRlIHRvIGluY3JlYXNlIHRoZSByZXBy ZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSAorLQkgICAgICAgZnJvbSB1bnNpZ25lZCBpbnQgdG8g VUxPTkdFU1QuICovCistCSAgICBVTE9OR0VTVCB1bG93ID0gbG93X2JvdW5kLCB1aGlnaCA9IGhp Z2hfYm91bmQ7CistCSAgICBVTE9OR0VTVCB0bGVuID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBl KTsKKy0KKy0JICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7CistCSAgICBpZiAo dGxlbiA9PSAwIHx8IChsZW4gLyB0bGVuIC0gMSArIHVsb3cpICE9IHVoaWdoIAorLQkJfHwgbGVu ID4gVUlOVF9NQVgpCistCSAgICAgIGxlbiA9IDA7CistCSAgfQorLQkgIFRZUEVfTEVOR1RIICh0 eXBlKSA9IGxlbjsKICsJICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlw ZSdzIGxlbmd0aC4gICovCiArCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gdHlwZV9sZW5ndGhfZ2V0 ICh0eXBlLCB0YXJnZXRfdHlwZSwgMCk7CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAw OwogIAl9CiAgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkFO R0UpCi1AQCAtMTQ5Miw5ICsxNjQ4LDEyIEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0 eXBlKQorQEAgLTE1MTQsOSArMTY3MiwxMiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAq dHlwZSkKICAJICBUWVBFX0xFTkdUSCAodHlwZSkgPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUp OwogIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKICAJfQpAQCAtMTAzMTQsMzcgKzU4 MjQsMTUgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAgIHJldHVybiB0eXBlOwog IH0KICAKLUBAIC0xNzE2LDcgKzE4NzUsNyBAQCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNv ZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAK LS0gIHR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSsgIHR5cGUgPSBhbGxvY190eXBlIChv YmpmaWxlLCBOVUxMKTsKLSAgIFRZUEVfQ09ERSAodHlwZSkgPSBjb2RlOwotICAgVFlQRV9MRU5H VEggKHR5cGUpID0gbGVuZ3RoOwotIAotQEAgLTE3NjAsNiArMTkxOSwxMCBAQCBpbml0X3R5cGUg KGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKLSAgICAgewotICAg ICAgIElOSVRfQ1BMVVNfU1BFQ0lGSUMgKHR5cGUpOworQEAgLTE4MDksNiArMTk3MCw3IEBAIGlu aXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmd0aCwgaW50IGZsYWdzLAorICAg ICAgICAgVFlQRV9TUEVDSUZJQ19GSUVMRCAodHlwZSkgPSBUWVBFX1NQRUNJRklDX0NBTExJTkdf Q09OVkVOVElPTjsKKyAgICAgICAgIGJyZWFrOwogICAgICB9CiArCi0rICBpZiAoIW9iamZpbGUp Ci0rICAgIHR5cGVfaW5jcmVmICh0eXBlKTsKLSsKICAgIHJldHVybiB0eXBlOwogIH0KICAKLUBA IC0yMDA0LDcgKzIxNjcsOCBAQCByYW5rX29uZV90eXBlIChzdHJ1Y3QgdHlwZSAqcGFybSwgc3Ry dWN0IHR5cGUgKmFyZykKLSAgICAgICBzd2l0Y2ggKFRZUEVfQ09ERSAoYXJnKSkKLSAJewotIAlj YXNlIFRZUEVfQ09ERV9QVFI6Ci0tCSAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAo cGFybSkpID09IFRZUEVfQ09ERV9WT0lEKQotKwkgIGlmIChUWVBFX0NPREUgKFRZUEVfVEFSR0VU X1RZUEUgKHBhcm0pKSA9PSBUWVBFX0NPREVfVk9JRAotKwkgICAgICAmJiBUWVBFX0NPREUgKFRZ UEVfVEFSR0VUX1RZUEUgKGFyZykpICE9IFRZUEVfQ09ERV9WT0lEKQotIAkgICAgcmV0dXJuIFZP SURfUFRSX0NPTlZFUlNJT05fQkFETkVTUzsKLSAJICBlbHNlCi0gCSAgICByZXR1cm4gcmFua19v bmVfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAocGFybSksIAotQEAgLTI4MjAsMzMgKzI5ODQsNDIg QEAgdHlwZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9y aHMpCitAQCAtMjg4OSwzMyArMzA1MSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0 ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKICB9CiAgCiAgLyogQWxsb2NhdGUgdGhlIGhh c2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKQEAgLTEwNDAyLDcg KzU4OTAsNyBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogICAgICByZXR1cm4gdHlw ZTsKICAKICAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3QgYmUgcG9pbnRpbmcgdG8gYW55IHR5cGVz IGluIG90aGVyIG9iamZpbGVzOwotQEAgLTI4NjEsOCArMzAzNCwxMCBAQCBjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yOTMwLDggKzMxMDEsMTAgQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICBuZXdfdHlw ZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOwogIAogICAgLyogV2Ug bXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBj YXNlCkBAIC0xMDQxNSw3ICs1OTAzLDcgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQK ICAgIHN0b3JlZC0+b2xkID0gdHlwZTsKICAgIHN0b3JlZC0+bmV3ID0gbmV3X3R5cGU7CiAgICAq c2xvdCA9IHN0b3JlZDsKLUBAIC0yODczLDYgKzMwNDgsMTkgQEAgY29weV90eXBlX3JlY3Vyc2l2 ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMjk0Miw2ICszMTE1LDE5IEBAIGNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9PQkpGSUxF X09XTkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2gg PSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAgLTEwNDM1LDcgKzU5MjMsNyBAQCBpbmRleCAy Zjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCiAgICAgIFRZ UEVfTkFNRSAobmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CiAgICBpZiAo VFlQRV9UQUdfTkFNRSAodHlwZSkpCi1AQCAtMjg4MSwxMiArMzA2OSw0NSBAQCBjb3B5X3R5cGVf cmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yOTUwLDEyICszMTM2LDQ1 IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQ RV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7 CiAgICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAt MTA0ODEsNyArNTk2OSw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiAgICAgICAg VFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxMT0MgKG5maWVsZHMsIHN0cnVjdCBmaWVsZCk7 CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKICAJewotQEAgLTI4OTUsOCAr MzExNiw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor QEAgLTI5NjQsOCArMzE4Myw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5cGUsIGkpID0gVFlQRV9G SUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp KSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC0xMDQ5Miw0MCArNTk4 MCw2OCBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogIAkgIGlmIChUWVBFX0ZJRUxE X05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkgPSAK ICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAtMjkxNSw2 ICszMTM2LDE2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAotIAkJCQkgIHhzdHJkdXAgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FICh0eXBlLAotIAkJ CQkJCQkJICAgICAgIGkpKSk7Ci0gCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBGSUVMRF9MT0Nf S0lORF9EV0FSRl9CTE9DSzoKLSsJICAgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv bicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCQkgaXQgaXMgZXhwZWN0ZWQgdG8g YmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLiAgKi8KLSsJICAgICAgaWYgKFRZUEVf Tk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCi0rCQkgIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSkKLSsJCVNFVF9GSUVMRF9EV0FSRl9CTE9DSyAoVFlQRV9GSUVMRCAobmV3X3R5cGUs IGkpLCBOVUxMKTsKLSsJICAgICAgZWxzZQotKwkJU0VUX0ZJRUxEX0JJVFBPUyAoVFlQRV9GSUVM RCAobmV3X3R5cGUsIGkpLAotKwkJICAgZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0ZJ RUxEX0RXQVJGX0JMT0NLICh0eXBlLCBpKSkpOwotKwkgICAgICBicmVhazsKLSAJICAgIGRlZmF1 bHQ6Ci0gCSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJICAg ICAgXygiVW5leHBlY3RlZCB0eXBlIGZpZWxkIGxvY2F0aW9uIGtpbmQ6ICVkIiksCi1AQCAtMjky MywxNyArMzE1NCwzMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKK0BAIC0yOTkyLDI0ICszMjExLDc1IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKLSsgIC8qIENvbnZlcnQgVFlQRV9S QU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIGludG8gYSByZWd1bGFyIGJvdW5kLiAgKi8KLSsgIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRQotKyAgICAgICYmIFRZUEVfUkFO R0VfSElHSF9CT1VORF9JU19DT1VOVCAodHlwZSkpCi0rICAgIHsKLSsgICAgICBUWVBFX1JBTkdF X0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7Ci0rICAgICAgVFlQRV9ISUdIX0JP VU5EIChuZXdfdHlwZSkgPSBUWVBFX0xPV19CT1VORCAodHlwZSkKLSsJCQkJICAgKyBUWVBFX0hJ R0hfQk9VTkQgKHR5cGUpIC0gMTsKLSsgICAgfQotKwogKyAgLyogQm90aCBGSUVMRF9MT0NfS0lO RF9EV0FSRl9CTE9DSyBhbmQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIHdlcmUKICsg ICAgIHBvc3NpYmx5IGNvbnZlcnRlZC4gICovCiArICBUWVBFX0RZTkFNSUMgKG5ld190eXBlKSA9 IDA7CiArCisgICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5kcyBpbmZvcm1hdGlv bi4gKi8KKyAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKKyAgICAg eworICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChz dHJ1Y3QgcmFuZ2VfYm91bmRzKSk7CisgICAgICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUp ID0gKlRZUEVfUkFOR0VfREFUQSAodHlwZSk7CisrCisrICAgICAgaWYgKFRZUEVfTE9XX0JPVU5E X0lTX0RXQVJGX0JMT0NLICh0eXBlKSkKKysJeworKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4 cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4gICovCisrCSAgaWYg KFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkKKysJICAgICAgfHwgVFlQRV9OT1RfQVNTT0NJQVRF RCAodHlwZSkpCisrCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZf YmxvY2sgPSBOVUxMOworKwkgIGVsc2UKKysJICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkg PSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5 cGUpLT5sb3cudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9MT1dfQk9VTkRfSVNfRFdBUkZfQkxP Q0sgKG5ld190eXBlKSA9IDA7CisrCX0KKysKKysgICAgICBpZiAoVFlQRV9ISUdIX0JPVU5EX0lT X0RXQVJGX0JMT0NLICh0eXBlKSkKKysJeworKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJf YmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVj dGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4gICovCisrCSAgaWYgKFRZ UEVfTk9UX0FMTE9DQVRFRCAodHlwZSkKKysJICAgICAgfHwgVFlQRV9OT1RfQVNTT0NJQVRFRCAo dHlwZSkpCisrCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC51LmR3YXJmX2Js b2NrID0gTlVMTDsKKysJICBlbHNlCisrCSAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9 IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAorKwkJCSAgICAgICAoVFlQRV9SQU5HRV9EQVRBIChu ZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9ISUdIX0JPVU5EX0lTX0RX QVJGX0JMT0NLIChuZXdfdHlwZSkgPSAwOworKwl9CisrCisrICAgICAgaWYgKFRZUEVfQllURV9T VFJJREVfSVNfRFdBUkZfQkxPQ0sgKHR5cGUpKQorKwl7CisrCSAgLyogYHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCisrCSAgICAgaXQg aXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLiAgKi8KKysJ ICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0eXBlKQorKwkgICAgICB8fCBUWVBFX05PVF9BU1NP Q0lBVEVEICh0eXBlKSkKKysJICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0 cmlkZS51LmR3YXJmX2Jsb2NrID0gTlVMTDsKKysJICBlbHNlCisrCSAgICBUWVBFX0JZVEVfU1RS SURFIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJCQkoVFlQRV9SQU5H RV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfYmxvY2spOworKwkgIFRZUEVf QllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0sgKG5ld190eXBlKSA9IDA7CisrCX0KKysKKysgICAg ICAvKiBDb252ZXJ0IFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCBpbnRvIGEgcmVndWxh ciBib3VuZC4gICovCisrICAgICAgaWYgKFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAo dHlwZSkpCisrCXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JP VU5EICh0eXBlKQorKwkJCQkgICAgICAgKyBUWVBFX0hJR0hfQk9VTkQgKHR5cGUpIC0gMTsKKysJ ICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7CisrCX0KKyAg ICAgfQorIAogICAgLyogQ29weSBwb2ludGVycyB0byBvdGhlciB0eXBlcy4gICovCiAgICBpZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpCiAgICAgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBl KSA9IApAQCAtMTA1NDYsNyArNjA2Miw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAwNjQ0 CiAgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RF IGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxp a2UKLUBAIC0yOTUxLDYgKzMxOTUsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCitAQCAtMzAyNyw2ICszMjk3LDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAK QEAgLTEwNTY0LDcgKzYwODAsNyBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogIC8q IE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAm IHJlZmVyZW5jZQogICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgogICAgIAotQEAgLTI5NzMs NiArMzIyOCwyMTcgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0z MDQ5LDYgKzMzMzAsMTk5IEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCiAg ICByZXR1cm4gbmV3X3R5cGU7CiAgfQogIApAQCAtMTA1OTMsNyArNjEwOSw3IEBAIGluZGV4IDJm NzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiArICAvKiBgc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlJyBo YW5kbGluZyBpcyB1bnN1cHBvcnRlZCBieSB0aGlzIGZ1bmN0aW9uLiAgKi8KICsgIGdkYl9hc3Nl cnQgKChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJVQ1QKICsJICAgICAgICYmIFRZ UEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OKQotKwkgICAgICB8fCAhSEFWRV9DUExV U19TVFJVQ1QgKHR5cGUpIHx8ICFUWVBFX0NQTFVTX1NQRUNJRklDICh0eXBlKSk7CisrCSAgICAg IHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOwogKwogKyAgaWYgKCEoKml0ZXIpICh0eXBl LCBkYXRhKSkKICsgICAgcmV0dXJuOwpAQCAtMTA2NDEsMTAgKzYxNTcsNyBAQCBpbmRleCAyZjc3 ZGNhLi45MGFiZjJjIDEwMDY0NAogKyAgICB9CiArICB4ZnJlZSAoVFlQRV9GSUVMRFMgKHR5cGUp KTsKICsKLSsgIC8qIGBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUnIGhhbmRsaW5nIGlzIHVuc3Vw cG9ydGVkIGJ5IHRoaXMgZnVuY3Rpb24uICAqLwotKyAgZ2RiX2Fzc2VydCAoKFRZUEVfQ09ERSAo dHlwZSkgIT0gVFlQRV9DT0RFX1NUUlVDVAotKwkgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAh PSBUWVBFX0NPREVfVU5JT04pCi0rCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkg fHwgIVRZUEVfQ1BMVVNfU1BFQ0lGSUMgKHR5cGUpKTsKKysgIGdkYl9hc3NlcnQgKCFIQVZFX0NQ TFVTX1NUUlVDVCAodHlwZSkpOwogKwogKyAgeGZyZWUgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7 CiArfQpAQCAtMTA3MjUsMjEgKzYyMzgsNiBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0 NAogKyAgbWFpbl90eXBlX2NyYXdsICh0eXBlLCB0eXBlX21hcmtfdXNlZF9jcmF3bCwgTlVMTCk7 CiArfQogKwotKy8qIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBUWVBFLiAgKi8K LSsKLSt2b2lkCi0rdHlwZV9pbmNyZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSt9Ci0rCi0r LyogRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgZm9yIFRZUEUuICBJZiBUWVBFIGhhcyBu byBtb3JlCi0rICAgcmVmZXJlbmNlcywgZGVsZXRlIGl0LiAgKi8KLSsKLSt2b2lkCi0rdHlwZV9k ZWNyZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSt9Ci0rCiArLyogQSB0cmF2ZXJzZSBjYWxs YmFjayBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSB3aGljaCByZW1vdmVzIGFueQogKyAgIHR5 cGVfZGlzY2FyZGFibGUgd2hvc2UgcmVmZXJlbmNlIGNvdW50IGlzIG5vdyB6ZXJvICh1bnVzZWQg bGluaykuICAqLwogKwpAQCAtMTA3ODIsNyArNjI4MCw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJm MmMgMTAwNjQ0CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9ucyB0byBpbml0aWFsaXplIGFyY2hpdGVj dHVyZS1zcGVjaWZpYyB0eXBlcy4gICovCiAgCi1AQCAtMzQ2Myw2ICszOTI5LDExIEBAIHZvaWQK K0BAIC0zNTM5LDYgKzQwMTMsMTEgQEAgdm9pZAogIF9pbml0aWFsaXplX2dkYnR5cGVzICh2b2lk KQogIHsKICAgIGdkYnR5cGVzX2RhdGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0 IChnZGJ0eXBlc19wb3N0X2luaXQpOwpAQCAtMTA3OTUsMTAgKzYyOTMsMTAgQEAgaW5kZXggMmY3 N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAKICAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92 ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAogZGlmZiAtLWdpdCBhL2dk Yi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWluZGV4IGJlNmVkNTUuLjZhNTFhNGUgMTAw NjQ0CitpbmRleCA4ZTczY2EwLi44NTg4OGUxIDEwMDY0NAogLS0tIGEvZ2RiL2dkYnR5cGVzLmgK ICsrKyBiL2dkYi9nZGJ0eXBlcy5oCi1AQCAtMTM3LDYgKzEzNyw4IEBAIGVudW0gdHlwZV9jb2Rl CitAQCAtMTM4LDYgKzEzOCw4IEBAIGVudW0gdHlwZV9jb2RlCiAgCiAgICAgIFRZUEVfQ09ERV9E RUNGTE9BVCwJCS8qIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQuICAqLwogIApAQCAtMTA4MDcsNyAr NjMwNSw3IEBAIGluZGV4IGJlNmVkNTUuLjZhNTFhNGUgMTAwNjQ0CiAgICAgIC8qIEludGVybmFs IGZ1bmN0aW9uIHR5cGUuICAqLwogICAgICBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJT04KICAg IH07Ci1AQCAtMjEzLDYgKzIxNSwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQor QEAgLTIxNCw2ICsyMTYsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAKICAj ZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ190YXJn ZXRfc3R1YikKICAKQEAgLTEwODE5LDcgKzYzMTcsNyBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRl IDEwMDY0NAogIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25k aW5nIHR5cGUgaGFkIAogICAqIGEgc3RhdGljIG1vZGlmaWVyLgogICAqIE5vdGU6IFRoaXMgbWF5 IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJzCi1AQCAtMjc4LDYgKzI4 NSw0OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorQEAgLTI3OSw2ICsyODYsNDgg QEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAjZGVmaW5lIFRZUEVfT1dORVIodCkg VFlQRV9NQUlOX1RZUEUodCktPm93bmVyCiAgI2RlZmluZSBUWVBFX09CSkZJTEUodCkgKFRZUEVf T0JKRklMRV9PV05FRCh0KT8gVFlQRV9PV05FUih0KS5vYmpmaWxlIDogTlVMTCkKICAKQEAgLTEw ODY4LDcgKzYzNjYsMTcgQEAgaW5kZXggYmU2ZWQ1NS4uNmE1MWE0ZSAxMDA2NDQKICAvKiBDb25z dGFudCB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFzIGEK ICAgKiBjb25zdCBtb2RpZmllci4KICAgKi8KLUBAIC0zNjUsNiArNDE0LDEzIEBAIHN0cnVjdCBt YWluX3R5cGUKK0BAIC0zMzYsOCArMzg1LDcgQEAgZW51bSBmaWVsZF9sb2Nfa2luZAorICAgewor ICAgICBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCS8qIGJpdHBvcyAqLworICAgICBGSUVMRF9MT0Nf S0lORF9QSFlTQUREUiwJLyogcGh5c2FkZHIgKi8KKy0gICAgRklFTERfTE9DX0tJTkRfUEhZU05B TUUsCS8qIHBoeXNuYW1lICovCistICAgIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLCS8qIGR3 YXJmX2Jsb2NrICovCisrICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FCS8qIHBoeXNuYW1lICov CisgICB9OworIAorIC8qIEEgZGlzY3JpbWluYW50IHRvIGRldGVybWluZSB3aGljaCBmaWVsZCBp biB0aGUgbWFpbl90eXBlLnR5cGVfc3BlY2lmaWMKK0BAIC0zODYsNiArNDM0LDEzIEBAIHN0cnVj dCBtYWluX3R5cGUKICAgIHVuc2lnbmVkIGludCBmbGFnX25vdHRleHQgOiAxOwogICAgdW5zaWdu ZWQgaW50IGZsYWdfZml4ZWRfaW5zdGFuY2UgOiAxOwogICAgdW5zaWduZWQgaW50IGZsYWdfb2Jq ZmlsZV9vd25lZCA6IDE7CkBAIC0xMDg4MCw5ICs2Mzg4LDkgQEAgaW5kZXggYmU2ZWQ1NS4uNmE1 MWE0ZSAxMDA2NDQKICsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hc3NvY2lhdGVkIDogMTsKICsg IHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkciA6IDE7CiAgCi0gICAvKiBO dW1iZXIgb2YgZmllbGRzIGRlc2NyaWJlZCBmb3IgdGhpcyB0eXBlLiAgVGhpcyBmaWVsZCBhcHBl YXJzIGF0Ci0gICAgICB0aGlzIGxvY2F0aW9uIGJlY2F1c2UgaXQgcGFja3MgbmljZWx5IGhlcmUu ICAqLwotQEAgLTQzMSw2ICs0ODcsMjAgQEAgc3RydWN0IG1haW5fdHlwZQorICAgLyogQSBkaXNj cmltaW5hbnQgdGVsbGluZyB1cyB3aGljaCBmaWVsZCBvZiB0aGUgdHlwZV9zcGVjaWZpYyB1bmlv bgorICAgICAgaXMgYmVpbmcgdXNlZCBmb3IgdGhpcyB0eXBlLCBpZiBhbnkuICAqLworQEAgLTQ1 Niw2ICs1MTEsMjAgQEAgc3RydWN0IG1haW5fdHlwZQogIAogICAgc3RydWN0IHR5cGUgKnRhcmdl dF90eXBlOwogIApAQCAtMTA5MDMsNyArNjQxMSw0OCBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRl IDEwMDY0NAogICAgLyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3JpcHRp b24gb2YgZWFjaCBmaWVsZC4KICAgICAgIEZvciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBlcywg dGhlcmUgaXMgb25lICJmaWVsZCIsCiAgICAgICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4gdHlw ZSBvZiB0aGUgc2V0IG9yIGFycmF5LgotQEAgLTUzOCw2ICs2MDgsOSBAQCBzdHJ1Y3QgbWFpbl90 eXBlCitAQCAtNDkyLDEyICs1NjEsNiBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgCisgCUNPUkVfQURE UiBwaHlzYWRkcjsKKyAJY2hhciAqcGh5c25hbWU7CistCistCS8qIFRoZSBmaWVsZCBsb2NhdGlv biBjYW4gYmUgY29tcHV0ZWQgYnkgZXZhbHVhdGluZyB0aGUgZm9sbG93aW5nIERXQVJGCistCSAg IGJsb2NrLiAgVGhpcyBjYW4gYmUgdXNlZCBpbiBGb3J0cmFuIHZhcmlhYmxlLWxlbmd0aCBhcnJh eXMsIGZvcgorLQkgICBpbnN0YW5jZS4gICovCistCistCXN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbiAqZHdhcmZfYmxvY2s7CisgICAgICAgfQorICAgICAgIGxvYzsKKyAKK0BAIC01MzUsMTMg KzU5OCwyMiBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgCisgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMK KyAgICAgeworKyAgICAgIHN0cnVjdAorKwl7CisrCSAgdW5pb24KKysJICAgIHsKKysJICAgICAg c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysJICAgICAgTE9OR0VT VCBjb25zdGFudDsKKysJICAgIH0KKysJICB1OworKwkgIHVuc2lnbmVkIGlzX2R3YXJmX2Jsb2Nr IDogMTsKKysJfQorICAgICAgIC8qIExvdyBib3VuZCBvZiByYW5nZS4gKi8KKy0KKy0gICAgICBM T05HRVNUIGxvdzsKKy0KKysgICAgICBsb3csCisgICAgICAgLyogSGlnaCBib3VuZCBvZiByYW5n ZS4gKi8KKy0KKy0gICAgICBMT05HRVNUIGhpZ2g7CisrICAgICAgaGlnaCwKKysgICAgICAvKiBC eXRlIHN0cmlkZSBvZiByYW5nZS4gKi8KKysgICAgICBieXRlX3N0cmlkZTsKKyAKKyAgICAgICAv KiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhpZ2ggYXJl CisgICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJhbmdlIHZhbHVl IGlzCitAQCAtNTkzLDYgKzY2NSw5IEBAIHN0cnVjdCBtYWluX3R5cGUKICAgICAgICAgc3VwcG9y dGluZyBtdWx0aXBsZSBBQklzLiAgUmlnaHQgbm93IHRoaXMgaXMgb25seSBmZXRjaGVkIGZyb20K ICAgICAgICAgdGhlIER3YXJmLTIgRFdfQVRfY2FsbGluZ19jb252ZW50aW9uIGF0dHJpYnV0ZS4g ICovCiAgICAgIHVuc2lnbmVkIGNhbGxpbmdfY29udmVudGlvbjsKQEAgLTEwOTEzLDcgKzY0NjIs NyBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogICAgfSB0eXBlX3NwZWNpZmljOwog IH07CiAgCi1AQCAtODEyLDkgKzg4NSw5IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2NwbHVzX3N0 cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05MDAsOSArOTc1LDkgQEAgZXh0ZXJuIHZv aWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBUWVBF X1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cG9pbnRlcl90eXBlCiAgI2RlZmlu ZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5yZWZlcmVuY2VfdHlw ZQogICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRoaXN0eXBlKS0+Y2hhaW4KQEAgLTEw OTI2LDkgKzY0NzUsOSBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogICAgIGNhbGxz IGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4gICov CiAgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCiAgLyog Tm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3 YW50IHRoZSByZWFsCi1AQCAtODIzLDIzICs4OTYsNDQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Y3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkxMSwxNSArOTg2LDI2IEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNk ZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5m aWVsZHMKLSAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlz dHlwZSktPmZpZWxkcworICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9U WVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwogICNkZWZpbmUgVFlQRV9URU1QTEFURV9B UkdTKHRoaXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+dGVtcGxhdGVfYXJn cwogKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLKHRoaXN0eXBlKSBUWVBF X01BSU5fVFlQRSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmR3YXJmX2Jsb2NrCiArI2RlZmlu ZSBUWVBFX0RBVEFfTE9DQVRJT05fQUREUih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0 eXBlKS0+ZGF0YV9sb2NhdGlvbi5hZGRyCkBAIC0xMDkzNiw0MiArNjQ4NSw0MSBAQCBpbmRleCBi ZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogKyNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEKHRoaXN0eXBl KSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCiAgCiAgI2RlZmluZSBUWVBF X0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQotICNkZWZpbmUgVFlQ RV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9GSUVMRF9CSVRQT1MgKHJhbmdlX3R5cGUsIDAp Ci0gI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9GSUVMRF9CSVRQT1Mg KHJhbmdlX3R5cGUsIDEpCi0tCi0tLyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3IgRk9SVFJBTiBh cnJheXMgKi8KLS0KLS0jZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVE KGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0ZJRUxEX0FSVElGSUNJQUwoVFlQRV9JTkRFWF9UWVBF KChhcnJheXR5cGUpKSwxKSkKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREUocmFuZ2VfdHlwZSkg VFlQRV9GSUVMRF9CSVRQT1MgKHJhbmdlX3R5cGUsIDIpCi0rCi0rLyogV2hldGhlciB3ZSBzaG91 bGQgdXNlIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKGFuZCBub3QgVFlQRV9GSUVMRF9CSVRQT1Mp LiAgKi8KLSsjZGVmaW5lIFRZUEVfUkFOR0VfQk9VTkRfSVNfRFdBUkZfQkxPQ0socmFuZ2VfdHlw ZSwgZmllbGRubykgXAotKyAgKFRZUEVfRklFTERfTE9DX0tJTkQgKHJhbmdlX3R5cGUsIGZpZWxk bm8pID09IEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLKQotKyNkZWZpbmUgVFlQRV9SQU5HRV9C T1VORF9TRVRfRFdBUkZfQkxPQ0socmFuZ2VfdHlwZSwgZmllbGRubykgXAotKyAgKFRZUEVfRklF TERfTE9DX0tJTkQgKHJhbmdlX3R5cGUsIGZpZWxkbm8pID0gRklFTERfTE9DX0tJTkRfRFdBUkZf QkxPQ0spCi0rI2RlZmluZSBUWVBFX0FSUkFZX0JPVU5EX0lTX0RXQVJGX0JMT0NLKGFycmF5X3R5 cGUsIGZpZWxkbm8pIFwKLSsgIFRZUEVfUkFOR0VfQk9VTkRfSVNfRFdBUkZfQkxPQ0sgKFRZUEVf SU5ERVhfVFlQRSAoYXJyYXlfdHlwZSksIGZpZWxkbm8pCi0rCi0rLyogVW5ib3VuZCBhcnJheXMs IHN1Y2ggYXMgR0NDIGFycmF5W107IGF0IGVuZCBvZiBzdHJ1Y3QuICAqLwotKyNkZWZpbmUgVFlQ RV9SQU5HRV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQocmFuZ2V0eXBlKSBcCi0rICAgVFlQRV9G SUVMRF9BUlRJRklDSUFMKChyYW5nZXR5cGUpLDApCi0rI2RlZmluZSBUWVBFX1JBTkdFX1VQUEVS X0JPVU5EX0lTX1VOREVGSU5FRChyYW5nZXR5cGUpIFwKLSsgICBUWVBFX0ZJRUxEX0FSVElGSUNJ QUwoKHJhbmdldHlwZSksMSkKKyAjZGVmaW5lIFRZUEVfUkFOR0VfREFUQSh0aGlzdHlwZSkgVFlQ RV9NQUlOX1RZUEUodGhpc3R5cGUpLT5mbGRzX2JuZHMuYm91bmRzCistI2RlZmluZSBUWVBFX0xP V19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdworLSNk ZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90 eXBlKS0+aGlnaAorKyNkZWZpbmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5H RV9EQVRBKHJhbmdlX3R5cGUpLT5sb3cudS5jb25zdGFudAorKyNkZWZpbmUgVFlQRV9ISUdIX0JP VU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaC51LmNvbnN0 YW50CisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFU QShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5jb25zdGFudAorICNkZWZpbmUgVFlQRV9MT1df Qk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKKyAgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2Vf dHlwZSktPmxvd191bmRlZmluZWQKKyAjZGVmaW5lIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQo cmFuZ2VfdHlwZSkgXAorICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaF91bmRl ZmluZWQKKysjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX0lTX0RXQVJGX0JMT0NLKHJhbmdlX3R5cGUp IFwKKysgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy5pc19kd2FyZl9ibG9jawor KyNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX0lTX0RXQVJGX0JMT0NLKHJhbmdlX3R5cGUpIFwKKysg ICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2guaXNfZHdhcmZfYmxvY2sKKysjZGVm aW5lIFRZUEVfQllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0socmFuZ2VfdHlwZSkgXAorKyAgIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUuaXNfZHdhcmZfYmxvY2sKKyAK KyAvKiBNb3RvLXNwZWNpZmljIHN0dWZmIGZvciBGT1JUUkFOIGFycmF5cyAqLworIAorQEAgLTky OCwxMSArMTAxNCwyMyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1 Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVE KGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0ZJRUxEX0FSVElGSUNJQUwoVFlQRV9JTkRFWF9UWVBF KChhcnJheXR5cGUpKSwwKSkKLS0KLS0jZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFM VUUoYXJyYXl0eXBlKSBcCi0tICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFy cmF5dHlwZSkpKSkKLSsgICBUWVBFX1JBTkdFX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAoVFlQ RV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKQotKyNkZWZpbmUgVFlQRV9BUlJBWV9VUFBFUl9CT1VO RF9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCi0rICAgVFlQRV9SQU5HRV9VUFBFUl9CT1VORF9J U19VTkRFRklORUQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKKyAgICBUWVBFX0xPV19C T1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisgCisrI2RlZmluZSBU WVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX0RXQVJGX0JMT0NLKGFycmF5dHlwZSkgXAorKyAgIFRZ UEVfSElHSF9CT1VORF9JU19EV0FSRl9CTE9DSyhUWVBFX0lOREVYX1RZUEUoYXJyYXl0eXBlKSkK KysjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfRFdBUkZfQkxPQ0soYXJyYXl0eXBl KSBcCisrICAgVFlQRV9MT1dfQk9VTkRfSVNfRFdBUkZfQkxPQ0soVFlQRV9JTkRFWF9UWVBFKGFy cmF5dHlwZSkpCisrCisgI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFKGFycmF5 dHlwZSkgXAorICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUp KSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkg XAogLSAgIChUWVBFX0xPV19CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkKICsg IFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpCi0rI2RlZmluZSBU WVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAotKyAgVFlQRV9ISUdIX0JP VU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpCisrCiArLyogVFlQRV9CWVRFX1NUUklE RSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlCiAr ICAgZWxlbWVudCBzaXplIGlmIG5vIHNwZWNpZmljIHN0cmlkZSB2YWx1ZSBpcyBrbm93bi4gICov CiArI2RlZmluZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFKGFycmF5dHlwZSkJCVwKQEAg LTEwOTgxLDI0ICs2NTI5LDQxIEBAIGluZGV4IGJlNmVkNTUuLjZhNTFhNGUgMTAwNjQ0CiAgCiAg LyogQysrICovCiAgCi1AQCAtODU1LDYgKzk0OSw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2Nw bHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfQ1BMVVNfU1BF Q0lGSUModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlwZV9zcGVjaWZpYy5j cGx1c19zdHVmZgotICNkZWZpbmUgVFlQRV9GTE9BVEZPUk1BVCh0aGlzdHlwZSkgVFlQRV9NQUlO X1RZUEUodGhpc3R5cGUpLT50eXBlX3NwZWNpZmljLmZsb2F0Zm9ybWF0CitAQCAtOTYxLDYgKzEw NTksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAq KTsKKyAjZGVmaW5lIFRZUEVfR05BVF9TUEVDSUZJQyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUo dGhpc3R5cGUpLT50eXBlX3NwZWNpZmljLmduYXRfc3R1ZmYKKyAjZGVmaW5lIFRZUEVfREVTQ1JJ UFRJVkVfVFlQRSh0aGlzdHlwZSkgVFlQRV9HTkFUX1NQRUNJRklDKHRoaXN0eXBlKS0+ZGVzY3Jp cHRpdmVfdHlwZQogICNkZWZpbmUgVFlQRV9DQUxMSU5HX0NPTlZFTlRJT04odGhpc3R5cGUpIFRZ UEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlwZV9zcGVjaWZpYy5jYWxsaW5nX2NvbnZlbnRpb24K ICsjZGVmaW5lIFRZUEVfTU9EVUxFX0JMT0NLKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlz dHlwZSktPnR5cGVfc3BlY2lmaWMubW9kdWxlX2Jsb2NrCi0gI2RlZmluZSBUWVBFX0JBU0VDTEFT Uyh0aGlzdHlwZSxpbmRleCkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5maWVsZHNbaW5kZXhd LnR5cGUKKyAjZGVmaW5lIFRZUEVfQkFTRUNMQVNTKHRoaXN0eXBlLGluZGV4KSBUWVBFX0ZJRUxE X1RZUEUodGhpc3R5cGUsIGluZGV4KQogICNkZWZpbmUgVFlQRV9OX0JBU0VDTEFTU0VTKHRoaXN0 eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+bl9iYXNlY2xhc3NlcwotICNkZWZp bmUgVFlQRV9CQVNFQ0xBU1NfTkFNRSh0aGlzdHlwZSxpbmRleCkgVFlQRV9NQUlOX1RZUEUodGhp c3R5cGUpLT5maWVsZHNbaW5kZXhdLm5hbWUKLUBAIC0xMTMxLDcgKzEyMjYsNyBAQCBleHRlcm4g Y29uc3Qgc3RydWN0IGZsb2F0Zm9ybWF0ICpmbG9hdGZvcm1hdHNfaWJtX2xvbmdfZG91YmxlW0JG RF9FTkRJQU5fVU5LTk9XTgotICAgIFVzZSBhbGxvY190eXBlX2FyY2ggdG8gYWxsb2NhdGUgYSB0 eXBlIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZS4KLSAgICBVc2UgYWxsb2NfdHlwZV9jb3B5IHRv IGFsbG9jYXRlIGEgdHlwZSB3aXRoIHRoZSBzYW1lIG93bmVyIGFzIGEKLSAgICBwcmUtZXhpc3Rp bmcgdGVtcGxhdGUgdHlwZSwgbm8gbWF0dGVyIHdoZXRoZXIgb2JqZmlsZSBvciBnZGJhcmNoLiAg Ki8KLS1leHRlcm4gc3RydWN0IHR5cGUgKmFsbG9jX3R5cGUgKHN0cnVjdCBvYmpmaWxlICopOwot K2V4dGVybiBzdHJ1Y3QgdHlwZSAqYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKiwgc3RydWN0 IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICphbGxvY190eXBlX2FyY2ggKHN0cnVjdCBn ZGJhcmNoICopOwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqYWxsb2NfdHlwZV9jb3B5IChjb25zdCBz dHJ1Y3QgdHlwZSAqKTsKLSAKLUBAIC0xMjI2LDYgKzEzMjEsMTggQEAgZXh0ZXJuIHN0cnVjdCB0 eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKKyAj ZGVmaW5lIFRZUEVfQkFTRUNMQVNTX05BTUUodGhpc3R5cGUsaW5kZXgpIFRZUEVfRklFTERfTkFN RSh0aGlzdHlwZSwgaW5kZXgpCitAQCAtOTc5LDcgKzEwNzgsNiBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAjZGVmaW5lIEZJRUxEX0JJVFBP Uyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5iaXRwb3MpCisgI2RlZmluZSBGSUVMRF9TVEFUSUNf UEhZU05BTUUodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5c25hbWUpCisgI2RlZmluZSBGSUVM RF9TVEFUSUNfUEhZU0FERFIodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5c2FkZHIpCistI2Rl ZmluZSBGSUVMRF9EV0FSRl9CTE9DSyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5kd2FyZl9ibG9j aykKKyAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwgYml0cG9zKQkJCVwKKyAgIChG SUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCQlcCisgICAg RklFTERfQklUUE9TICh0aGlzZmxkKSA9IChiaXRwb3MpKQorQEAgLTk4OSw5ICsxMDg3LDYgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2Rl ZmluZSBTRVRfRklFTERfUEhZU0FERFIodGhpc2ZsZCwgYWRkcikJCQlcCisgICAoRklFTERfTE9D X0tJTkQgKHRoaXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCisgICAgRklFTERf U1RBVElDX1BIWVNBRERSICh0aGlzZmxkKSA9IChhZGRyKSkKKy0jZGVmaW5lIFNFVF9GSUVMRF9E V0FSRl9CTE9DSyh0aGlzZmxkLCBhZGRyKQkJCVwKKy0gIChGSUVMRF9MT0NfS0lORCAodGhpc2Zs ZCkgPSBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSywJXAorLSAgIEZJRUxEX0RXQVJGX0JMT0NL ICh0aGlzZmxkKSA9IChhZGRyKSkKKyAjZGVmaW5lIEZJRUxEX0FSVElGSUNJQUwodGhpc2ZsZCkg KCh0aGlzZmxkKS5hcnRpZmljaWFsKQorICNkZWZpbmUgRklFTERfQklUU0laRSh0aGlzZmxkKSAo KHRoaXNmbGQpLmJpdHNpemUpCisgCitAQCAtMTAwMiw3ICsxMDk3LDYgQEAgZXh0ZXJuIHZvaWQg YWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2RlZmluZSBUWVBFX0ZJ RUxEX0JJVFBPUyh0aGlzdHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJRUxEICh0aGlzdHlw ZSwgbikpCisgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzdHlwZSwgbikg RklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCisgI2RlZmlu ZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BI WVNBRERSIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCistI2RlZmluZSBUWVBFX0ZJRUxEX0RX QVJGX0JMT0NLKHRoaXN0eXBlLCBuKSBGSUVMRF9EV0FSRl9CTE9DSyAoVFlQRV9GSUVMRCAodGhp c3R5cGUsIG4pKQorICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBG SUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCisgI2RlZmluZSBUWVBFX0ZJ RUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlw ZSxuKSkKKyAjZGVmaW5lIFRZUEVfRklFTERfUEFDS0VEKHRoaXN0eXBlLCBuKSAoRklFTERfQklU U0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKSE9MCkKK0BAIC0xMzMzLDYgKzE0MjcsMTggQEAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3Qg dHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsK ICAKQEAgLTExMDE3LDcgKzY1ODIsNyBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAog IGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBl ICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKLUBA IC0xMjYyLDYgKzEzNjksOCBAQCBleHRlcm4gaW50IGdldF9kaXNjcmV0ZV9ib3VuZHMgKHN0cnVj dCB0eXBlICosIExPTkdFU1QgKiwgTE9OR0VTVCAqKTsKK0BAIC0xMzY5LDYgKzE0NzUsOCBAQCBl eHRlcm4gaW50IGdldF9kaXNjcmV0ZV9ib3VuZHMgKHN0cnVjdCB0eXBlICosIExPTkdFU1QgKiwg TE9OR0VTVCAqKTsKICAKICBleHRlcm4gaW50IGlzX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdHlwZSAqKTsKICAKQEAgLTExMDI2LDcgKzY1OTEsNyBAQCBpbmRleCBiZTZlZDU1Li42 YTUxYTRlIDEwMDY0NAogIC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KICAKICAjZGVmaW5lIExF TkdUSF9NQVRDSChidikgKChidiktPnJhbmtbMF0pCi1AQCAtMTMyNCwxMCArMTQzMywxNSBAQCBl eHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFyICosIGludCk7CitAQCAtMTQz MSwxMCArMTUzOSwxMSBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFy ICosIGludCk7CiAgCiAgZXh0ZXJuIGh0YWJfdCBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKICAKQEAgLTExMDM5LDE0MCArNjYwNCwxNSBAQCBpbmRl eCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogIAogK2V4dGVybiB2b2lkIGZyZWVfYWxsX3R5cGVz ICh2b2lkKTsKICsKLStleHRlcm4gdm9pZCB0eXBlX2luY3JlZiAoc3RydWN0IHR5cGUgKnR5cGUp OwotKwotK2V4dGVybiB2b2lkIHR5cGVfZGVjcmVmIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rCiAg I2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvZ251LXYzLWFiaS5jIGIv Z2RiL2dudS12My1hYmkuYwotaW5kZXggMGY5ZDQ0ZS4uYzkxMGU4OCAxMDA2NDQKLS0tLSBhL2dk Yi9nbnUtdjMtYWJpLmMKLSsrKyBiL2dkYi9nbnUtdjMtYWJpLmMKLUBAIC0yNiw2ICsyNiw3IEBA Ci0gI2luY2x1ZGUgImRlbWFuZ2xlLmgiCi0gI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0gI2luY2x1 ZGUgInZhbHByaW50LmgiCi0rI2luY2x1ZGUgImMtbGFuZy5oIgotIAotICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC00NTksMTAgKzQ2MCw4IEBA IGdudXYzX2ZpbmRfbWV0aG9kX2luIChzdHJ1Y3QgdHlwZSAqZG9tYWluLCBDT1JFX0FERFIgdm9m ZnNldCwKLSAJCSAgICAgIExPTkdFU1QgYWRqdXN0bWVudCkKLSB7Ci0gICBpbnQgaTsKLS0gIGNv bnN0IGNoYXIgKnBoeXNuYW1lOwotIAotICAgLyogU2VhcmNoIHRoaXMgY2xhc3MgZmlyc3QuICAq LwotLSAgcGh5c25hbWUgPSBOVUxMOwotICAgaWYgKGFkanVzdG1lbnQgPT0gMCkKLSAgICAgewot ICAgICAgIGludCBsZW47Ci1AQCAtNTkwLDE1ICs1ODksMjQgQEAgZ251djNfcHJpbnRfbWV0aG9k X3B0ciAoY29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzLAotIAl7Ci0gCSAgY2hhciAqZGVtYW5nbGVk X25hbWUgPSBjcGx1c19kZW1hbmdsZSAocGh5c25hbWUsCi0gCQkJCQkJIERNR0xfQU5TSSB8IERN R0xfUEFSQU1TKTsKLS0JICBpZiAoZGVtYW5nbGVkX25hbWUgIT0gTlVMTCkKLSsJICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICImdmlydHVhbCAiKTsKLSsJICBpZiAoZGVtYW5nbGVkX25hbWUg PT0gTlVMTCkKLSsJICAgIGZwdXRzX2ZpbHRlcmVkIChwaHlzbmFtZSwgc3RyZWFtKTsKLSsJICBl bHNlCi0gCSAgICB7Ci0tCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiZ2aXJ0dWFs ICIpOwotIAkgICAgICBmcHV0c19maWx0ZXJlZCAoZGVtYW5nbGVkX25hbWUsIHN0cmVhbSk7Ci0g CSAgICAgIHhmcmVlIChkZW1hbmdsZWRfbmFtZSk7Ci0tCSAgICAgIHJldHVybjsKLSAJICAgIH0K LSsJICByZXR1cm47Ci0gCX0KLSAgICAgfQotKyAgZWxzZSBpZiAocHRyX3ZhbHVlICE9IDApCi0r ICAgIHsKLSsgICAgICAvKiBGb3VuZCBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9uOiBwcmludCBvdXQg dGhlIHR5cGUuICAqLwotKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgiKCIsIHN0cmVhbSk7Ci0rICAg ICAgY19wcmludF90eXBlICh0eXBlLCAiIiwgc3RyZWFtLCAtMSwgMCk7Ci0rICAgICAgZnB1dHNf ZmlsdGVyZWQgKCIpICIsIHN0cmVhbSk7Ci0rICAgIH0KLSAKLSAgIC8qIFdlIGRpZG4ndCBmaW5k IGl0OyBwcmludCB0aGUgcmF3IGRhdGEuICAqLwotICAgaWYgKHZiaXQpCiBkaWZmIC0tZ2l0IGEv Z2RiL2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwotaW5kZXggZmU4NDhm Zi4uOTA1ZGNjMyAxMDA2NDQKK2luZGV4IGZmODM3ZjIuLjE3MTA0ODcgMTAwNjQ0CiAtLS0gYS9n ZGIvaTM4Ni1saW51eC1uYXQuYwogKysrIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKLUBAIC01ODYs NiArNTg2LDggQEAgaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCB0 YXJnZXRfb3BzICpvcHMsCi0gCi0gc3RhdGljIHVuc2lnbmVkIGxvbmcgaTM4Nl9saW51eF9kcltE Ul9DT05UUk9MICsgMV07Ci0gCi0rLyogR2V0IGRlYnVnIHJlZ2lzdGVyIFJFR05VTSB2YWx1ZSBm cm9tIG9ubHkgdGhlIG9uZSBMV1Agb2YgUFRJRC4gICovCi0rCi0gc3RhdGljIHVuc2lnbmVkIGxv bmcKLSBpMzg2X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGludCByZWdudW0pCi0gewotQEAg LTYxNCw2ICs2MTYsOCBAQCBpMzg2X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGludCByZWdu dW0pCi0gICByZXR1cm4gdmFsdWU7Ci0gfQotIAotKy8qIFNldCBkZWJ1ZyByZWdpc3RlciBSRUdO VU0gdG8gVkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KLSsKLSBzdGF0aWMg dm9pZAotIGkzODZfbGludXhfZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSwgdW5zaWdu ZWQgbG9uZyB2YWx1ZSkKLSB7Ci1AQCAtNjMwLDYgKzYzNCw4IEBAIGkzODZfbGludXhfZHJfc2V0 IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKLSAgICAgcGVy cm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZGVidWcgcmVnaXN0ZXIiKSk7Ci0gfQot IAotKy8qIFNldCBEUl9DT05UUk9MIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAq LwotKwotIHN0YXRpYyB2b2lkCi0gaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQg bG9uZyBjb250cm9sKQotIHsKLUBAIC02NDEsNiArNjQ3LDggQEAgaTM4Nl9saW51eF9kcl9zZXRf Y29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotICAgICBpMzg2X2xpbnV4X2RyX3NldCAo cHRpZCwgRFJfQ09OVFJPTCwgY29udHJvbCk7Ci0gfQotIAotKy8qIFNldCBhZGRyZXNzIFJFR05V TSAoemVybyBiYXNlZCkgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0rCi0g c3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FE RFIgYWRkcikKLSB7Ci1AQCAtNjU0LDE4ICs2NjIsNTUgQEAgaTM4Nl9saW51eF9kcl9zZXRfYWRk ciAoaW50IHJlZ251bSwgQ09SRV9BRERSIGFkZHIpCi0gICAgIGkzODZfbGludXhfZHJfc2V0IChw dGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwotIH0KLSAKLSsvKiBTZXQgYWRkcmVz cyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIHplcm8gaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAq LwotKwotIHN0YXRpYyB2b2lkCi0gaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIChpbnQgcmVnbnVt KQotIHsKLSAgIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKHJlZ251bSwgMCk7Ci0gfQotIAotKy8q IEdldCBEUl9TVEFUVVMgZnJvbSBvbmx5IHRoZSBvbmUgTFdQIG9mIElORkVSSU9SX1BUSUQuICAq LwotKwotIHN0YXRpYyB1bnNpZ25lZCBsb25nCi0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzICh2 b2lkKQotIHsKLSAgIHJldHVybiBpMzg2X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJf U1RBVFVTKTsKK0BAIC02OTYsNiArNjk2LDIxIEBAIGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVz ICh1bnNpZ25lZCBsb25nIG1hc2spCisgICAgIH0KICB9CiAgCi0rLyogVW5zZXQgTUFTSyBiaXRz IGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0rCi0rc3RhdGljIHZv aWQKLStpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQotK3sK LSsgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0rICBwdGlkX3QgcHRpZDsKLSsKLSsgIEFMTF9MV1BT IChscCwgcHRpZCkKLSsgICAgewotKyAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7Ci0rICAgICAg Ci0rICAgICAgdmFsdWUgPSBpMzg2X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKLSsg ICAgICB2YWx1ZSAmPSB+bWFzazsKLSsgICAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgRFJf U1RBVFVTLCB2YWx1ZSk7Ci0rICAgIH0KLSt9Ci0rCiArLyogU2VlIGkzODZfZHJfbG93X3R5cGUu ZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sCiAr ICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSBy ZWdpc3RlciBjYWNoZQogKyAgIChpMzg2X2xpbnV4X2RyKS4gICovCkBAIC0xMTE5MSw1NiArNjYz MSwxOSBAQCBpbmRleCBmZTg0OGZmLi45MDVkY2MzIDEwMDY0NAogIHN0YXRpYyB2b2lkCiAgaTM4 Nl9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKICB7Ci1AQCAtODM3LDYgKzg4Miw4IEBA IF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0ICh2b2lkKQotICAgaTM4Nl9kcl9sb3cuc2V0X2Fk ZHIgPSBpMzg2X2xpbnV4X2RyX3NldF9hZGRyOworQEAgLTg2OCw2ICs4ODMsNyBAQCBfaW5pdGlh bGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKICAgIGkzODZfZHJfbG93LnJlc2V0X2FkZHIgPSBp Mzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CiAgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gaTM4 Nl9saW51eF9kcl9nZXRfc3RhdHVzOwotKyAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gaTM4 Nl9saW51eF9kcl91bnNldF9zdGF0dXM7CisgICBpMzg2X2RyX2xvdy51bnNldF9zdGF0dXMgPSBp Mzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKICsgIGkzODZfZHJfbG93LmRldGFjaCA9IGkzODZf bGludXhfZHJfZGV0YWNoOwogICAgaTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJfbGVuZ3RoICg0KTsK ICAKICAgIC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8K IGRpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCi1pbmRleCAzMjVi NGRmLi42MzFjY2Q2IDEwMDY0NAoraW5kZXggZmEwY2NlNi4uNDJkZmQxYyAxMDA2NDQKIC0tLSBh L2dkYi9pMzg2LW5hdC5jCiArKysgYi9nZGIvaTM4Ni1uYXQuYwotQEAgLTEzNyw4ICsxMzcsMTEg QEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUgaTM4Nl9kcl9sb3c7Ci0gI2RlZmluZSBJMzg2X0RS X0dFVF9SV19MRU4oaSkgXAotICAgKChkcl9jb250cm9sX21pcnJvciA+PiAoRFJfQ09OVFJPTF9T SElGVCArIERSX0NPTlRST0xfU0laRSAqIChpKSkpICYgMHgwZikKLSAKLSsvKiBNYXNrIHRoYXQg dGhpcyBJJ3RoIHdhdGNocG9pbnQgaGFzIHRyaWdnZXJlZC4gICovCi0rI2RlZmluZSBJMzg2X0RS X1dBVENIX01BU0soaSkJKDEgPDwgKGkpKQotKwotIC8qIERpZCB0aGUgd2F0Y2hwb2ludCB3aG9z ZSBhZGRyZXNzIGlzIGluIHRoZSBJJ3RoIHJlZ2lzdGVyIGJyZWFrPyAgKi8KLS0jZGVmaW5lIEkz ODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0dXNfbWlycm9yICYgKDEgPDwgKGkpKSkKLSsjZGVm aW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0dXNfbWlycm9yICYgSTM4Nl9EUl9XQVRD SF9NQVNLIChpKSkKLSAKLSAvKiBBIG1hY3JvIHRvIGxvb3Agb3ZlciBhbGwgZGVidWcgcmVnaXN0 ZXJzLiAgKi8KLSAjZGVmaW5lIEFMTF9ERUJVR19SRUdJU1RFUlMoaSkJZm9yIChpID0gMDsgaSA8 IERSX05BRERSOyBpKyspCi1AQCAtMzU4LDYgKzM2MSwxMCBAQCBpMzg2X2luc2VydF9hbGlnbmVk X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCB1bnNpZ25lZCBsZW5fcndfYml0cykKLSAgIGkz ODZfZHJfbG93LnNldF9hZGRyIChpLCBhZGRyKTsKLSAgIGkzODZfZHJfbG93LnNldF9jb250cm9s IChkcl9jb250cm9sX21pcnJvcik7Ci0gCi0rICAvKiBPbmx5IGEgc2FuaXR5IGNoZWNrIGZvciBs ZWZ0b3ZlciBiaXRzIChzZXQgcG9zc2libHkgb25seSBieSBpbmZlcmlvcikuICAqLwotKyAgaWYg KGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cykKLSsgICAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVz IChJMzg2X0RSX1dBVENIX01BU0sgKGkpKTsKLSsKLSAgIHJldHVybiAwOwotIH0KLSAKLUBAIC0z ODcsNiArMzk0LDExIEBAIGkzODZfcmVtb3ZlX2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQotIAkgICAgICBpMzg2X2RyX2xvdy5zZXRfY29u dHJvbCAoZHJfY29udHJvbF9taXJyb3IpOwotIAkgICAgICBpZiAoaTM4Nl9kcl9sb3cucmVzZXRf YWRkcikKLSAJCWkzODZfZHJfbG93LnJlc2V0X2FkZHIgKGkpOwotKwotKwkgICAgICAvKiBTdGF0 dXMgbXVzdCBiZSBhbHJlYWR5IHF1ZXJpZWQgZm9yIGVhY2ggTFdQLiAgT3RoZXJ3aXNlIGl0IHdp bGwKLSsJICAgICAgICAgYmUgbG9zdCBpbiBhbGwtc3RvcCBtb2RlICsgYnJlYWtwb2ludCBhbHdh eXMtaW5zZXJ0ZWQgb2ZmLiAgKi8KLSsJICAgICAgaWYgKGkzODZfZHJfbG93LnVuc2V0X3N0YXR1 cykKLSsJCWkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyAoSTM4Nl9EUl9XQVRDSF9NQVNLIChpKSk7 Ci0gCSAgICB9Ci0gCSAgcmV0dmFsID0gMDsKLSAJfQotQEAgLTUyMCw2ICs1MzIsMTcgQEAgaTM4 Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQor QEAgLTUyNyw2ICs1MjcsMTcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsIGludCBsZW4sIGludCB0eXBlKQogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0xMTI1 OCwzNyArNjY2MSw3IEBAIGluZGV4IDMyNWI0ZGYuLjYzMWNjZDYgMTAwNjQ0CiAgLyogUmV0dXJu IG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24gdGhhdCBzdGFydHMgYXQK ICAgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0ZXMuICAqLwogIAot QEAgLTU3OCwyOCArNjAxLDcgQEAgc3RhdGljIGludAotIGkzODZfc3RvcHBlZF9ieV93YXRjaHBv aW50ICh2b2lkKQotIHsKLSAgIENPUkVfQUREUiBhZGRyID0gMDsKLS0gIHJldHVybiBpMzg2X3N0 b3BwZWRfZGF0YV9hZGRyZXNzICgmY3VycmVudF90YXJnZXQsICZhZGRyKTsKLS19Ci0tCi0tLyog UmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBpbmZlcmlvciBoYXMgc29tZSBicmVhay93YXRjaHBvaW50 IHRoYXQKLS0gICB0cmlnZ2VyZWQuICAqLwotLQotLXN0YXRpYyBpbnQKLS1pMzg2X3N0b3BwZWRf YnlfaHdicCAodm9pZCkKLS17Ci0tICBpbnQgaTsKLS0KLS0gIGRyX3N0YXR1c19taXJyb3IgPSBp Mzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOwotLSAgaWYgKG1haW50X3Nob3dfZHIpCi0tICAgIGkz ODZfc2hvd19kciAoInN0b3BwZWRfYnlfaHdicCIsIDAsIDAsIGh3X2V4ZWN1dGUpOwotLQotLSAg QUxMX0RFQlVHX1JFR0lTVEVSUyhpKQotLSAgICB7Ci0tICAgICAgaWYgKEkzODZfRFJfV0FUQ0hf SElUIChpKSkKLS0JcmV0dXJuIDE7Ci0tICAgIH0KLS0KLS0gIHJldHVybiAwOwotKyAgcmV0dXJu IHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0LCAmYWRkcik7Ci0g fQotIAotIC8qIEluc2VydCBhIGhhcmR3YXJlLWFzc2lzdGVkIGJyZWFrcG9pbnQgYXQgQlBfVEdU LT5wbGFjZWRfYWRkcmVzcy4KLUBAIC02OTMsNiArNjk1LDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2lu dHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorQEAgLTY3OSw2ICs2OTAsNyBAQCBpMzg2X3VzZV93 YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCiAgICB0LT50b19zdG9wcGVkX2RhdGFf YWRkcmVzcyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7CiAgICB0LT50b19pbnNlcnRfd2F0 Y2hwb2ludCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7CiAgICB0LT50b19yZW1vdmVfd2F0Y2hw b2ludCA9IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7CkBAIC0xMTI5Nyw4NCArNjY3MCwzMyBAQCBp bmRleCAzMjViNGRmLi42MzFjY2Q2IDEwMDY0NAogICAgdC0+dG9fcmVtb3ZlX2h3X2JyZWFrcG9p bnQgPSBpMzg2X3JlbW92ZV9od19icmVha3BvaW50OwogIH0KIGRpZmYgLS1naXQgYS9nZGIvaTM4 Ni1uYXQuaCBiL2dkYi9pMzg2LW5hdC5oCi1pbmRleCBmNDliOWY2Li5jZDMxOTU4IDEwMDY0NAor aW5kZXggNzMxN2U3ZC4uZWE5MTRhNSAxMDA2NDQKIC0tLSBhL2dkYi9pMzg2LW5hdC5oCiArKysg Yi9nZGIvaTM4Ni1uYXQuaAotQEAgLTQ5LDE2ICs0OSwyMyBAQCBleHRlcm4gdm9pZCBpMzg2X3Vz ZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gICAgZnVuY3Rpb25zIGFyZToK LSAKLSAgICAgICBzZXRfY29udHJvbCAgICAgICAgICAgICAgLS0gc2V0IHRoZSBkZWJ1ZyBjb250 cm9sIChEUjcpCi0tCQkJCSAgcmVnaXN0ZXIgdG8gYSBnaXZlbiB2YWx1ZQotKwkJCQkgIHJlZ2lz dGVyIHRvIGEgZ2l2ZW4gdmFsdWUgZm9yIGFsbCBMV1BzCitAQCAtNjIsNiArNjIsMTAgQEAgZXh0 ZXJuIHZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICopOworICAg ICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUgc3BlY2lmaWVkIGJpdHMg b2YgdGhlIGRlYnVnCisgCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBhbGwgTFdQcwog IAotICAgICAgIHNldF9hZGRyICAgICAgICAgICAgICAgICAtLSBwdXQgYW4gYWRkcmVzcyBpbnRv IG9uZSBkZWJ1ZwotLQkJCQkgIHJlZ2lzdGVyCi0rCQkJCSAgcmVnaXN0ZXIgZm9yIGFsbCBMV1Bz Ci0gCi0gICAgICAgcmVzZXRfYWRkciAgICAgICAgICAgICAgIC0tIHJlc2V0IHRoZSBhZGRyZXNz IHN0b3JlZCBpbgotLQkJCQkgIG9uZSBkZWJ1ZyByZWdpc3RlcgotKwkJCQkgIG9uZSBkZWJ1ZyBy ZWdpc3RlciBmb3IgYWxsIExXUHMKLSAKLSAgICAgICBnZXRfc3RhdHVzICAgICAgICAgICAgICAg LS0gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZGVidWcKLS0JCQkJICBzdGF0dXMgKERSNikgcmVn aXN0ZXIuCi0rCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBjdXJyZW50IExXUAotKwot KyAgICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUgc3BlY2lmaWVkIGJp dHMgb2YgdGhlIGRlYnVnCi0rCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBhbGwgTFdQ cwotKwogKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVhciBhbGwgZGVidWcg cmVnaXN0ZXJzIG9mIG9ubHkgdGhlCiArCQkJCSAgSU5GRVJJT1JfUFRJRCB0YXNrIHdpdGhvdXQg YWZmZWN0aW5nIGFueQogKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KLSAKKysKICAgICBBZGRpdGlv bmFsbHksIHRoZSBuYXRpdmUgZmlsZSBzaG91bGQgc2V0IHRoZSBkZWJ1Z19yZWdpc3Rlcl9sZW5n dGgKICAgICBmaWVsZCB0byA0IG9yIDggZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMg dXNlZCBmb3IKLUBAIC03MCw2ICs3Nyw4IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlCi0gICAg IHZvaWQgKCpzZXRfYWRkcikgKGludCwgQ09SRV9BRERSKTsKKyAgICBkZXViZyByZWdpc3RlcnMu ICAqLworQEAgLTczLDYgKzc3LDcgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUKICAgICAgdm9p ZCAoKnJlc2V0X2FkZHIpIChpbnQpOwogICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXR1cykg KHZvaWQpOwotKyAgICB2b2lkICgqdW5zZXRfc3RhdHVzKSAodW5zaWduZWQgbG9uZyk7CisgICAg IHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKICsgICAgdm9pZCAoKmRldGFj aCkgKHZvaWQpOwogICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOwogICAgfTsKICAKLWRp ZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwotaW5kZXggYzlkOThjZi4u Mjc3Mzk5YSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjYWxsLmMKLSsrKyBiL2dkYi9pbmZjYWxsLmMK LUBAIC00NDEsNiArNDQxLDcgQEAgY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUg KmZ1bmN0aW9uLCBpbnQgbmFyZ3MsIHN0cnVjdCB2YWx1ZSAqKmFyZ3MpCi0gICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaDsKLSAgIHN0cnVjdCBicmVha3BvaW50ICp0ZXJtaW5hdGVfYnAgPSBOVUxM OwotICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0bTsKLSsgIHN0cnVjdCBjbGVhbnVwICp0ZXJt aW5hdGVfYnBfY2xlYW51cCA9IE5VTEw7Ci0gICBwdGlkX3QgY2FsbF90aHJlYWRfcHRpZDsKLSAg IHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotQEAgLTc3Miw3 ICs3NzMsNyBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24s IGludCBuYXJncywgc3RydWN0IHZhbHVlICoqYXJncykKLSAKLSAgIC8qIFJlZ2lzdGVyIGEgY2xl YW4tdXAgZm9yIHVud2luZF9vbl90ZXJtaW5hdGluZ19leGNlcHRpb25fYnJlYWtwb2ludC4gICov Ci0gICBpZiAodGVybWluYXRlX2JwKQotLSAgICBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9p bnQgKHRlcm1pbmF0ZV9icCk7Ci0rICAgIHRlcm1pbmF0ZV9icF9jbGVhbnVwID0gbWFrZV9jbGVh bnVwX2RlbGV0ZV9icmVha3BvaW50ICh0ZXJtaW5hdGVfYnApOwotIAotICAgLyogLSBTTklQIC0g U05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLQot ICAgICAgSWYgeW91J3JlIGxvb2tpbmcgdG8gaW1wbGVtZW50IGFzeW5jaHJvbm91cyBkdW1teS1m cmFtZXMsIHRoZW4KLUBAIC05ODcsNiArOTg4LDExIEBAIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRv bmUgZXhlY3V0aW5nLCBHREIgd2lsbCBzaWxlbnRseSBzdG9wLiIpLAotICAgICAgIGludGVybmFs X2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oIi4uLiBzaG91bGQgbm90IGJlIGhlcmUiKSk7 Ci0gICAgIH0KLSAKLSsgIC8qIElmIHdlIGdldCBoZXJlIGFuZCB0aGUgc3RkOjp0ZXJtaW5hdGUo KSBicmVha3BvaW50IGhhcyBiZWVuIHNldCwKLSsgICAgIGl0IGhhcyB0byBiZSBjbGVhbmVkIG1h bnVhbGx5LiAgKi8KLSsgIGlmICh0ZXJtaW5hdGVfYnApCi0rICAgIGRvX2NsZWFudXBzICh0ZXJt aW5hdGVfYnBfY2xlYW51cCk7Ci0rCi0gICAvKiBJZiB3ZSBnZXQgaGVyZSB0aGUgY2FsbGVkIEZV TkNUSU9OIHJhbiB0byBjb21wbGV0aW9uLAotICAgICAgYW5kIHRoZSBkdW1teSBmcmFtZSBoYXMg YWxyZWFkeSBiZWVuIHBvcHBlZC4gICovCi0gCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIv Z2RiL2luZmNtZC5jCi1pbmRleCA5ZTk4MjkwLi5mYWIxODkyIDEwMDY0NAoraW5kZXggMjFhMjIz My4uMzRhMzcxOCAxMDA2NDQKIC0tLSBhL2dkYi9pbmZjbWQuYwogKysrIGIvZ2RiL2luZmNtZC5j Ci1AQCAtODAxLDcgKzgwMSw3IEBAIG5leHRpX2NvbW1hbmQgKGNoYXIgKmNvdW50X3N0cmluZywg aW50IGZyb21fdHR5KQorQEAgLTgwNSw3ICs4MDUsNyBAQCBuZXh0aV9jb21tYW5kIChjaGFyICpj b3VudF9zdHJpbmcsIGludCBmcm9tX3R0eSkKICAgIHN0ZXBfMSAoMSwgMSwgY291bnRfc3RyaW5n KTsKICB9CiAgCkBAIC0xMTM4Myw3ICs2NzA1LDcgQEAgaW5kZXggOWU5ODI5MC4uZmFiMTg5MiAx MDA2NDQKICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZykKICB7 CiAgICBpbnQgdGhyZWFkID0gKiAoaW50ICopIGFyZzsKLUBAIC04NDEsMTAgKzg0MSwxMyBAQCBz dGVwXzEgKGludCBza2lwX3N1YnJvdXRpbmVzLCBpbnQgc2luZ2xlX2luc3QsIGNoYXIgKmNvdW50 X3N0cmluZykKK0BAIC04NDUsMTAgKzg0NSwxMyBAQCBzdGVwXzEgKGludCBza2lwX3N1YnJvdXRp bmVzLCBpbnQgc2luZ2xlX2luc3QsIGNoYXIgKmNvdW50X3N0cmluZykKICAKICAgIGlmICghc2lu Z2xlX2luc3QgfHwgc2tpcF9zdWJyb3V0aW5lcykJCS8qIGxlYXZlIHNpIGNvbW1hbmQgYWxvbmUg Ki8KICAgICAgewpAQCAtMTEzOTcsNyArNjcxOSw3IEBAIGluZGV4IDllOTgyOTAuLmZhYjE4OTIg MTAwNjQ0CiAgCiAgICAgICAgbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50 X2NsZWFudXAsICZ0aHJlYWQpOwogICAgICB9Ci1AQCAtMTE5Myw2ICsxMTk2LDE1IEBAIHNpZ25h bF9jb21tYW5kIChjaGFyICpzaWdudW1fZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTE5Nyw2ICsx MjAwLDE1IEBAIHNpZ25hbF9jb21tYW5kIChjaGFyICpzaWdudW1fZXhwLCBpbnQgZnJvbV90dHkp CiAgICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2lnLCAwKTsKICB9CiAgCkBAIC0xMTQx Myw3ICs2NzM1LDcgQEAgaW5kZXggOWU5ODI5MC4uZmFiMTg5MiAxMDA2NDQKICAvKiBQcm9jZWVk IHVudGlsIHdlIHJlYWNoIGEgZGlmZmVyZW50IHNvdXJjZSBsaW5lIHdpdGggcGMgZ3JlYXRlciB0 aGFuCiAgICAgb3VyIGN1cnJlbnQgb25lIG9yIGV4aXQgdGhlIGZ1bmN0aW9uLiAgV2Ugc2tpcCBj YWxscyBpbiBib3RoIGNhc2VzLgogIAotQEAgLTEyMDksNiArMTIyMSw4IEBAIHVudGlsX25leHRf Y29tbWFuZCAoaW50IGZyb21fdHR5KQorQEAgLTEyMTMsNiArMTIyNSw4IEBAIHVudGlsX25leHRf Y29tbWFuZCAoaW50IGZyb21fdHR5KQogICAgc3RydWN0IHN5bWJvbCAqZnVuYzsKICAgIHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgc2FsOwogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVy aW9yX3RocmVhZCAoKTsKQEAgLTExNDIyLDcgKzY3NDQsNyBAQCBpbmRleCA5ZTk4MjkwLi5mYWIx ODkyIDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAgICBzZXRfc3RlcF9m cmFtZSAoKTsKLUBAIC0xMjQ0LDcgKzEyNTgsMTkgQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQg ZnJvbV90dHkpCitAQCAtMTI0OCw3ICsxMjYyLDE5IEBAIHVudGlsX25leHRfY29tbWFuZCAoaW50 IGZyb21fdHR5KQogIAogICAgdHAtPnN0ZXBfbXVsdGkgPSAwOwkJLyogT25seSBvbmUgY2FsbCB0 byBwcm9jZWVkICovCiAgCkBAIC0xMTQ0Miw3ICs2NzY0LDcgQEAgaW5kZXggOWU5ODI5MC4uZmFi MTg5MiAxMDA2NDQKICB9CiAgCiAgc3RhdGljIHZvaWQKLUBAIC0xNDIxLDYgKzE0NDcsNyBAQCBm aW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKK0BAIC0xNDI1LDYgKzE0NTEs NyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKICAgIGlmIChicyAh PSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKICAgICAgb2JzZXJ2ZXJfbm90aWZ5X25v cm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7CiAgICBkZWxldGVfYnJlYWtwb2lu dCAoYS0+YnJlYWtwb2ludCk7CkBAIC0xMTQ1MCw3ICs2NzcyLDcgQEAgaW5kZXggOWU5ODI5MC4u ZmFiMTg5MiAxMDA2NDQKICB9CiAgCiAgc3RhdGljIHZvaWQKLUBAIC0xNTA0LDYgKzE1MzEsNyBA QCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKK0BAIC0xNTA4LDYgKzE1MzUsNyBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0 IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCBi cmVha3BvaW50ICpicmVha3BvaW50OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKICAg IHN0cnVjdCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb25fYXJncyAqY2FyZ3M7CkBAIC0xMTQ1 OCw3ICs2NzgwLDcgQEAgaW5kZXggOWU5ODI5MC4uZmFiMTg5MiAxMDA2NDQKICAKICAgIHNhbCA9 IGZpbmRfcGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksIDApOwogICAgc2FsLnBjID0gZ2V0 X2ZyYW1lX3BjIChmcmFtZSk7Ci1AQCAtMTUxNCw2ICsxNTQyLDEwIEBAIGZpbmlzaF9mb3J3YXJk IChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAg LTE1MTgsNiArMTU0NiwxMCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rp b24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAKICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xl YW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludCk7CiAgCkBAIC0xMTQ2NywxMyArNjc4 OSwxMyBAQCBpbmRleCA5ZTk4MjkwLi5mYWIxODkyIDEwMDY0NAogKyAgbWFrZV9jbGVhbnVwIChk ZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwogKwogICAgdHAtPnBy b2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3JlZ2lzdGVycywgcGxlYXNl Li4uICAqLwotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVM VCwgMCk7CisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7CiAgCiBkaWZmIC0t Z2l0IGEvZ2RiL2luZmVyaW9yLmggYi9nZGIvaW5mZXJpb3IuaAotaW5kZXggZjFiNWQxNy4uMzFh ZGQ3ZCAxMDA2NDQKK2luZGV4IDk3OThlZjEuLmU5NzgzZmIgMTAwNjQ0CiAtLS0gYS9nZGIvaW5m ZXJpb3IuaAogKysrIGIvZ2RiL2luZmVyaW9yLmgKLUBAIC0yNzIsNiArMjcyLDggQEAgZXh0ZXJu IHZvaWQgaW50ZXJydXB0X3RhcmdldF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkp OworQEAgLTI3OSw2ICsyNzksOCBAQCBleHRlcm4gdm9pZCBpbnRlcnJ1cHRfdGFyZ2V0X2NvbW1h bmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSk7CiAgCiAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0 X3RhcmdldF8xIChpbnQgYWxsX3RocmVhZHMpOwogIApAQCAtMTE0ODMsNyArNjgwNSw3IEBAIGlu ZGV4IGYxYjVkMTcuLjMxYWRkN2QgMTAwNjQ0CiAgCiAgZXh0ZXJuIHZvaWQgbm90aWNlX25ld19p bmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIv Z2RiL2luZnJ1bi5jCi1pbmRleCBmZjdjNmI5Li45ZDI5YjE1IDEwMDY0NAoraW5kZXggNDI2Yjgx Ni4uYmQ2NTI1OCAxMDA2NDQKIC0tLSBhL2dkYi9pbmZydW4uYwogKysrIGIvZ2RiL2luZnJ1bi5j CiBAQCAtNDUsNiArNDUsOCBAQApAQCAtMTE0OTUsNyArNjgxNyw3IEBAIGluZGV4IGZmN2M2Yjku LjlkMjliMTUgMTAwNjQ0CiAgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAjaW5jbHVkZSAibWkv bWktY29tbW9uLmgiCiAgI2luY2x1ZGUgImV2ZW50LXRvcC5oIgotQEAgLTE3ODIsNiArMTc4NCw4 IEBAIHN0YXRpYyB2b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtMjAxMyw2ICsyMDE1LDggQEAgc3RhdGljIHZvaWQg aW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRfc2FsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwKICAJCQkJCQkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc3Jfc2FsLAogIAkJCQkJCSAg c3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKICBzdGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1 bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsKQEAgLTExNTA0LDcg KzY4MjYsNyBAQCBpbmRleCBmZjdjNmI5Li45ZDI5YjE1IDEwMDY0NAogIAogIHN0YXRpYyB2b2lk IHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKICBz dGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0 ZSAqZWNzKTsKLUBAIC0yNjg3LDYgKzI2OTEsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKK0BAIC0yOTQyLDYgKzI5NDYsMTAg QEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUg KmVjcykKICAKICAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9y ZWdjYWNoZSAoZWNzLT5wdGlkKSk7CiAgCkBAIC0xMTUxMiwxMCArNjgzNCwxMCBAQCBpbmRleCBm ZjdjNmI5Li45ZDI5YjE1IDEwMDY0NAogKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5k IGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwogKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJl ZCAoJmVjcy0+d3MpOwogKwotICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdCA9 IGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RvcF9wYywgZWNzLT5wdGlkKTsKLSAKLSAgICAgICBlY3Mt PnJhbmRvbV9zaWduYWwgPSAhYnBzdGF0X2V4cGxhaW5zX3NpZ25hbCAoZWNzLT5ldmVudF90aHJl YWQtPnN0b3BfYnBzdGF0KTsKLUBAIC0yNzI0LDYgKzI3MzIsMTAgQEAgaGFuZGxlX2luZmVyaW9y X2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKKyAgICAgICBlY3Mt PmV2ZW50X3RocmVhZC0+c3RvcF9icHN0YXQKKyAJPSBicHN0YXRfc3RvcF9zdGF0dXMgKGdldF9y ZWdjYWNoZV9hc3BhY2UgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKSwKKyAJCQkgICAgICBzdG9w X3BjLCBlY3MtPnB0aWQpOworQEAgLTMwMjYsNiArMzAzNCwxMCBAQCBoYW5kbGVfaW5mZXJpb3Jf ZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogIAogICAgICAgIHN0 b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChlY3MtPnB0aWQp KTsKICAKQEAgLTExNTIzLDI5ICs2ODQ1LDEwIEBAIGluZGV4IGZmN2M2YjkuLjlkMjliMTUgMTAw NjQ0CiArCSBjb25mdXNlIGJwc3RhdF9zdG9wX3N0YXR1cyBhbmQgYnBzdGF0X2V4cGxhaW5zX3Np Z25hbC4gICovCiArICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkICgmZWNzLT53cyk7CiArCi0g ICAgICAgLyogVGhpcyBjYXVzZXMgdGhlIGV2ZW50cG9pbnRzIGFuZCBzeW1ib2wgdGFibGUgdG8g YmUgcmVzZXQuCi0gICAgICAgICAgTXVzdCBkbyB0aGlzIG5vdywgYmVmb3JlIHRyeWluZyB0byBk ZXRlcm1pbmUgd2hldGhlciB0bwotICAgICAgICAgIHN0b3AuICAqLwotQEAgLTI4NDUsNiArMjg1 Nyw5IEBAIHRhcmdldHMgc2hvdWxkIGFkZCBuZXcgdGhyZWFkcyB0byB0aGUgdGhyZWFkIGxpc3Qg dGhlbXNlbHZlcyBpbiBub24tc3RvcCBtb2RlLiIpCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKTsKLSAgICAg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7 Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRpZCAo KTsKLSsKLSsgICAgICBpbmZlcmlvcl9wdGlkID0gZWNzLT5wdGlkOwotIAotICAgICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogc3RvcF9wYyA9ICVzXG4iLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIHN0b3BfcGMpKTsKLUBA IC0yODYxLDYgKzI4NzYsOCBAQCB0YXJnZXRzIHNob3VsZCBhZGQgbmV3IHRocmVhZHMgdG8gdGhl IHRocmVhZCBsaXN0IHRoZW1zZWx2ZXMgaW4gbm9uLXN0b3AgbW9kZS4iKQotICAgICAgICAgICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJpbmZydW46IChubyBkYXRhIGFkZHJlc3MgYXZhaWxhYmxlKVxuIik7Ci0gCX0K LSsKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAgICAgfQorICAgICAgIC8qIERv IHdoYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBvZiB0aGUgdmZvcmsu ICAqLworICAgICAgIGhhbmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQgKDEpOwogIAotICAg aWYgKHN0ZXBwaW5nX3Bhc3Rfc2luZ2xlc3RlcF9icmVha3BvaW50KQotQEAgLTM0NjgsMjMgKzM0 ODUsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CitAQCAtMzc4NCwyMyArMzc5NiwzMyBA QCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAJZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBw aW5nX292ZXJfYnJlYWtwb2ludCA9IDE7CiAgCkBAIC0xMTU5MSw3ICs2ODk0LDcgQEAgaW5kZXgg ZmY3YzZiOS4uOWQyOWIxNSAxMDA2NDQKICAJa2VlcF9nb2luZyAoZWNzKTsKICAJcmV0dXJuOwog IAotQEAgLTM0OTYsNiArMzUyMyw1MyBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1Q X1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CitAQCAtMzgxMiw2ICsz ODM0LDUzIEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJj aF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKICAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJl YWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7CiAgCWRlbGV0ZV9zdGVwX3Jlc3Vt ZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CiAgCkBAIC0xMTY0NSw3ICs2OTQ4LDcg QEAgaW5kZXggZmY3YzZiOS4uOWQyOWIxNSAxMDA2NDQKICAJZWNzLT5ldmVudF90aHJlYWQtPnN0 b3Bfc3RlcCA9IDE7CiAgCXByaW50X3N0b3BfcmVhc29uIChFTkRfU1RFUFBJTkdfUkFOR0UsIDAp OwogIAlzdG9wX3N0ZXBwaW5nIChlY3MpOwotQEAgLTQ1MDAsNiArNDU3NCw5NiBAQCBpbnNlcnRf bG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVf QUREUiBwYykKK0BAIC00ODMxLDYgKzQ5MDAsOTYgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2Jy ZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCiAgICAgIHNl dF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsIGJwX2xvbmdqbXBfcmVz dW1lKTsKICB9CiAgCkBAIC0xMTc0MiwxNyArNzA0NSw4IEBAIGluZGV4IGZmN2M2YjkuLjlkMjli MTUgMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9u X2NvbnRyb2xfc3RhdGUgKmVjcykKICB7Ci1AQCAtNDU2OCw2ICs0NzMyLDggQEAga2VlcF9nb2lu ZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCSAgICB9Ci0gCSAgaWYg KGUucmVhc29uIDwgMCkKLSAJICAgIHsKLSsJICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLSsJCWV4 Y2VwdGlvbl9mcHJpbnRmIChnZGJfc3RkbG9nLCBlLCAiaW5mcnVuOiBleGNlcHRpb24gd2hpbGUg aW5zZXJ0aW5nIGJyZWFrcG9pbnRzOiAiKTsKLSAJICAgICAgc3RvcF9zdGVwcGluZyAoZWNzKTsK LSAJICAgICAgcmV0dXJuOwotIAkgICAgfQogZGlmZiAtLWdpdCBhL2dkYi9qdi1sYW5nLmMgYi9n ZGIvanYtbGFuZy5jCi1pbmRleCA2YjY4ZTdkLi41MDk1MTgwIDEwMDY0NAoraW5kZXggMjRiNjY3 My4uMjJlZDk2MCAxMDA2NDQKIC0tLSBhL2dkYi9qdi1sYW5nLmMKICsrKyBiL2dkYi9qdi1sYW5n LmMKIEBAIC0xMTIxLDYgKzExMjEsNyBAQCBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgZXhw X2Rlc2NyaXB0b3JfamF2YSA9CkBAIC0xMTc2MywyMjggKzcwNTcsMTQgQEAgaW5kZXggNmI2OGU3 ZC4uNTA5NTE4MCAxMDA2NDQKICAgIG9wX25hbWVfc3RhbmRhcmQsCiAgICBkdW1wX3N1YmV4cF9i b2R5X3N0YW5kYXJkLAogICAgZXZhbHVhdGVfc3ViZXhwX2phdmEKLWRpZmYgLS1naXQgYS9nZGIv bGFuZ3VhZ2UuaCBiL2dkYi9sYW5ndWFnZS5oCi1pbmRleCBjNjUwZTA3Li42NjBmZGY2IDEwMDY0 NAotLS0tIGEvZ2RiL2xhbmd1YWdlLmgKLSsrKyBiL2dkYi9sYW5ndWFnZS5oCi1AQCAtMjM3LDcg KzIzNyw2IEBAIHN0cnVjdCBsYW5ndWFnZV9kZWZuCi0gICAgICAgIHZhcmlhYmxlcy4gICovCi0g Ci0gICAgIHN0cnVjdCBzeW1ib2wgKigqbGFfbG9va3VwX3N5bWJvbF9ub25sb2NhbCkgKGNvbnN0 IGNoYXIgKiwKLS0JCQkJCQkgY29uc3QgY2hhciAqLAotIAkJCQkJCSBjb25zdCBzdHJ1Y3QgYmxv Y2sgKiwKLSAJCQkJCQkgY29uc3QgZG9tYWluX2VudW0pOwotIAotZGlmZiAtLWdpdCBhL2dkYi9s aW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKLWluZGV4IDNlOTQzYTEuLmI5NmQ0MjUgMTAwNjQ0 Ci0tLS0gYS9nZGIvbGluZXNwZWMuYwotKysrIGIvZ2RiL2xpbmVzcGVjLmMKLUBAIC0zMCw2ICsz MCw3IEBACi0gI2luY2x1ZGUgInZhbHVlLmgiCi0gI2luY2x1ZGUgImNvbXBsZXRlci5oIgotICNp bmNsdWRlICJjcC1hYmkuaCIKLSsjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgotICNpbmNsdWRlICJw YXJzZXItZGVmcy5oIgotICNpbmNsdWRlICJibG9jay5oIgotICNpbmNsdWRlICJvYmpjLWxhbmcu aCIKLUBAIC04MzksMTMgKzg0MCwzMyBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJncHRyLCBp bnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKLSAgICAgfQot ICAgZWxzZSBpZiAocGFyZW5fcG9pbnRlciAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgcCA9IHBh cmVuX3BvaW50ZXIgKyAxOwotKyAgICAgIC8qIFdlIG5lZWQgdG8gZGVhbCB3aXRoIG1ldGhvZCBh bmQgZnVuY3Rpb24gb3ZlcmxvYWRzCi0rCSB3aXRoIG5vIHBhcmFtZXRlcnMuIEdkYiBhbmQgZ2Nj IChhbmQgd2hvIGtub3dzIGFib3V0IG90aGVyCi0rCSBjb21waWxlcnMpIGFyZSB2ZXJ5IGluY29u c2lzdGVudCB3aXRoIHRoZSBrZXl3b3JkICJ2b2lkIi4KLSsJIENhbm9uaWNhbGl6aW5nIEMrKyB0 eXBlcyBpcyBpbnN1ZmZpY2llbnQgaW4gdGhpcyBjYXNlLCBzaW5jZQotKwkgd2Ugc3RpbGwgbmVl ZCB0byBlbmZvcmNlIHRoZSBwcmVzZW5jZSAob3IgbGFjayB0aGVyZW9mKSBvZgotKwkgInZvaWQi LiBGb3Igc2ltcGxpY2l0eSwgb21pdCB0aGUga2V5d29yZCAidm9pZCIgaWYgcHJlc2VudC4gKi8K LSsgICAgICBpZiAoc3RybmNtcCAocGFyZW5fcG9pbnRlciAtIDUsICIodm9pZCkiLCA2KSA9PSAw KQotKwl7Ci0rCSAgY2hhciAqYSwgKmI7Ci0rCSAgYSA9IHBhcmVuX3BvaW50ZXIgLSA0OwotKwkg IGIgPSBwYXJlbl9wb2ludGVyOwotKwkgIHdoaWxlICgoKihhKyspID0gKihiKyspKSAhPSAnXDAn KSA7Ci0rCSAgKmEgPSAnXDAnOwotKwkgIHAgPSBwYXJlbl9wb2ludGVyIC0gMzsKLSsJfQotKyAg ICAgIGVsc2UKLSsJcCA9IHBhcmVuX3BvaW50ZXIgKyAxOwotICAgICB9Ci0gICBlbHNlCi0gICAg IHsKLSAgICAgICBwID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotICAgICB9Ci0gCi0rICAvKiBN YWtlIHN1cmUgd2Uga2VlcCBpbXBvcnRhbnQga2V3b3JkcyBsaWtlICJjb25zdCIgKi8KLSsgIGlm IChzdHJuY21wIChwLCAiIGNvbnN0IiwgNikgPT0gMCkKLSsgICAgcCArPSA2OwotKwotICAgLyog S2VlcCBhbnkgdGVtcGxhdGUgcGFyYW1ldGVycyAqLwotICAgaWYgKCpwID09ICc8JykKLSAgICAg cCA9IGZpbmRfdGVtcGxhdGVfbmFtZV9lbmQgKHApOwotQEAgLTEyNTcsNiArMTI3OCw5IEBAIGRl Y29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipj YW5vbmljYWwsCi0gICAgICAgLyogTW92ZSBwb2ludGVyIGFoZWFkIHRvIG5leHQgZG91YmxlLWNv bG9uLiAgKi8KLSAgICAgICB3aGlsZSAoKnAgJiYgKHBbMF0gIT0gJyAnKSAmJiAocFswXSAhPSAn XHQnKSAmJiAocFswXSAhPSAnXCcnKSkKLSAJewotKwkgIGlmIChjdXJyZW50X2xhbmd1YWdlLT5s YV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSsJICAgIHAgKz0gY3BfdmFsaWRhdGVfb3Bl cmF0b3IgKHApOwotKwotIAkgIGlmIChwWzBdID09ICc8JykKLSAJICAgIHsKLSAJICAgICAgdGVt cF9lbmQgPSBmaW5kX3RlbXBsYXRlX25hbWVfZW5kIChwKTsKLUBAIC0xMzM0LDYgKzEzNTgsMTUg QEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFy ICoqKmNhbm9uaWNhbCwKLSAJICB3aGlsZSAoKnAgJiYgKnAgIT0gJyAnICYmICpwICE9ICdcdCcg JiYgKnAgIT0gJywnICYmICpwICE9ICc6JykKLSAJICAgIHArKzsKLSAJICAvKiBBdCB0aGlzIHBv aW50IHAtPiIiLiAgU3RyaW5nIGVuZGVkLiAgKi8KLSsJICAvKiBOb3BlLCBDKysgb3BlcmF0b3Jz IGNvdWxkIGhhdmUgc3BhY2VzIGluIHRoZW0KLSsJICAgICAoImZvbzo6b3BlcmF0b3IgPCIgb3Ig ImZvbzo6b3BlcmF0b3IgZGVsZXRlIFtdIikuCi0rCSAgICAgSSBhcG9sb2dpemUsIHRoaXMgaXMg YSBiaXQgaGFja3kuLi4gICovCi0rCSAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdl ID09IGxhbmd1YWdlX2NwbHVzCi0rCSAgICAgICYmICpwID09ICcgJyAmJiBwIC0gOCAtICphcmdw dHIgKyAxID4gMCkKLSsJICAgIHsKLSsJICAgICAgLyogVGhlIGFib3ZlIGxvb3AgaGFzIGFscmVh ZHkgc3dhbGxvd2VkICJvcGVyYXRvciIuICAqLwotKwkgICAgICBwICs9IGNwX3ZhbGlkYXRlX29w ZXJhdG9yIChwIC0gOCkgLSA4OwotKwkgICAgfQotIAl9Ci0gCi0gICAgICAgLyogQWxsb2NhdGUg b3VyIG93biBjb3B5IG9mIHRoZSBzdWJzdHJpbmcgYmV0d2VlbiBhcmdwdHIgYW5kCi1AQCAtMTQw Nyw2ICsxNDQwLDcgQEAgbG9va3VwX3ByZWZpeF9zeW0gKGNoYXIgKiphcmdwdHIsIGNoYXIgKnAp Ci0gewotICAgY2hhciAqcDE7Ci0gICBjaGFyICpjb3B5OwotKyAgc3RydWN0IHN5bWJvbCAqc3lt OwotIAotICAgLyogRXh0cmFjdCB0aGUgY2xhc3MgbmFtZS4gICovCi0gICBwMSA9IHA7Ci1AQCAt MTQyNSw3ICsxNDU5LDI2IEBAIGxvb2t1cF9wcmVmaXhfc3ltIChjaGFyICoqYXJncHRyLCBjaGFy ICpwKQotICAgLyogQXQgdGhpcyBwb2ludCBwMS0+Ijo6aW5BOjpmdW4iLCBwLT4iaW5BOjpmdW4i IGNvcHktPiJBQUEiLAotICAgICAgYXJncHRyLT4iaW5BOjpmdW4iICovCi0gCi0tICByZXR1cm4g bG9va3VwX3N5bWJvbCAoY29weSwgMCwgU1RSVUNUX0RPTUFJTiwgMCk7Ci0rICBzeW0gPSBsb29r dXBfc3ltYm9sIChjb3B5LCAwLCBTVFJVQ1RfRE9NQUlOLCAwKTsKLSsgIGlmIChzeW0gPT0gTlVM TCkKLSsgICAgewotKyAgICAgIC8qIFR5cGVkZWZzIGFyZSBpbiBWQVJfRE9NQUlOIHNvIHRoZSBh Ym92ZSBzeW1ib2wgbG9va3VwIHdpbGwKLSsJIGZhaWwgd2hlbiB0aGUgdXNlciBhdHRlbXB0cyB0 byBsb29rdXAgYSBtZXRob2Qgb2YgYSBjbGFzcwotKwkgdmlhIGEgdHlwZWRlZidkIG5hbWUgKE5P VCB2aWEgdGhlIGNsYXNzZXMgbmFtZSwgd2hpY2ggaXMgYWxyZWFkeQotKwkgaGFuZGxlZCBpbiBz eW1ib2xfbWF0Y2hlc19kb21haW4pLiAgU28gdHJ5IHRoZSBsb29rdXAgYWdhaW4KLSsJIHVzaW5n IFZBUl9ET01BSU4gKHdoZXJlIHR5cGVkZWZzIGxpdmUpIGFuZCBkb3VibGUtY2hlY2sgdGhhdCB3 ZQotKwkgZm91bmQgYSBzdHJ1Y3QvY2xhc3MgdHlwZS4gICovCi0rICAgICAgc3RydWN0IHN5bWJv bCAqcyA9IGxvb2t1cF9zeW1ib2wgKGNvcHksIDAsIFZBUl9ET01BSU4sIDApOwotKyAgICAgIGlm IChzICE9IE5VTEwpCi0rCXsKLSsJICBzdHJ1Y3QgdHlwZSAqdCA9IFNZTUJPTF9UWVBFIChzKTsK LSsJICBDSEVDS19UWVBFREVGICh0KTsKLSsJICBpZiAoVFlQRV9DT0RFICh0KSA9PSBUWVBFX0NP REVfU1RSVUNUKQotKwkgICAgcmV0dXJuIHM7Ci0rCX0KLSsgICAgfQotKwotKyAgcmV0dXJuIHN5 bTsKLSB9Ci0gCi0gLyogVGhpcyBmaW5kcyB0aGUgbWV0aG9kIENPUFkgaW4gdGhlIGNsYXNzIHdo b3NlIHR5cGUgaXMgVCBhbmQgd2hvc2UKLUBAIC0xNDc0LDI2ICsxNTI3LDE2IEBAIGZpbmRfbWV0 aG9kIChpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwgY2hhciAqc2F2ZWRfYXJn LAotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBjaGFyICp0bXA7Ci0tCi0tICAgICAg aWYgKGlzX29wZXJhdG9yX25hbWUgKGNvcHkpKQotLQl7Ci0tCSAgdG1wID0gKGNoYXIgKikgYWxs b2NhIChzdHJsZW4gKGNvcHkgKyAzKSArIDkpOwotLQkgIHN0cmNweSAodG1wLCAib3BlcmF0b3Ig Iik7Ci0tCSAgc3RyY2F0ICh0bXAsIGNvcHkgKyAzKTsKLS0JfQotLSAgICAgIGVsc2UKLS0JdG1w ID0gY29weTsKLSAgICAgICBpZiAobm90X2ZvdW5kX3B0cikKLSAgICAgICAgICpub3RfZm91bmRf cHRyID0gMTsKLS0gICAgICBpZiAodG1wWzBdID09ICd+JykKLSsgICAgICBpZiAoY29weVswXSA9 PSAnficpCi0gCWNwbHVzcGx1c19lcnJvciAoc2F2ZWRfYXJnLAotIAkJCSAidGhlIGNsYXNzIGAl cycgZG9lcyBub3QgaGF2ZSBkZXN0cnVjdG9yIGRlZmluZWRcbiIsCi0gCQkJIFNZTUJPTF9QUklO VF9OQU1FIChzeW1fY2xhc3MpKTsKLSAgICAgICBlbHNlCi0gCWNwbHVzcGx1c19lcnJvciAoc2F2 ZWRfYXJnLAotIAkJCSAidGhlIGNsYXNzICVzIGRvZXMgbm90IGhhdmUgYW55IG1ldGhvZCBuYW1l ZCAlc1xuIiwKLS0JCQkgU1lNQk9MX1BSSU5UX05BTUUgKHN5bV9jbGFzcyksIHRtcCk7Ci0rCQkJ IFNZTUJPTF9QUklOVF9OQU1FIChzeW1fY2xhc3MpLCBjb3B5KTsKLSAgICAgfQotIH0KLSAKLUBA IC0xNzgwLDcgKzE4MjMsNyBAQCBzeW1ib2xfZm91bmQgKGludCBmdW5maXJzdGxpbmUsIGNoYXIg KioqY2Fub25pY2FsLCBjaGFyICpjb3B5LAotIAl7Ci0gCSAgc3RydWN0IGJsb2NrdmVjdG9yICpi diA9IEJMT0NLVkVDVE9SIChTWU1CT0xfU1lNVEFCIChzeW0pKTsKLSAJICBzdHJ1Y3QgYmxvY2sg KmIgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7Ci0tCSAgaWYgKGxvb2t1 cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIE5VTEwsIFZBUl9ET01BSU4pICE9IE5VTEwpCi0rCSAg aWYgKGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIFZBUl9ET01BSU4pICE9IE5VTEwpCi0g CSAgICBidWlsZF9jYW5vbmljYWxfbGluZV9zcGVjICh2YWx1ZXMuc2FscywgY29weSwgY2Fub25p Y2FsKTsKLSAJfQotICAgICAgIHJldHVybiB2YWx1ZXM7CiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4 LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCA5OGY2MzQ3Li4wOTA3ZjAzIDEwMDY0NAor aW5kZXggMDM1NjNjZC4uODE0NTYyOSAxMDA2NDQKIC0tLSBhL2dkYi9saW51eC1uYXQuYwogKysr IGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtMTcxMCw2ICsxNzEwLDcgQEAgcmVzdW1lX2NhbGxiYWNr IChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQotICAgICAgIGxwLT5zdG9wcGVkID0g MDsKLSAgICAgICBscC0+c3RlcCA9IDA7Ci0gICAgICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAs IHNpemVvZiAobHAtPnNpZ2luZm8pKTsKLSsgICAgICBscC0+d2F0Y2hwb2ludF9oaXRfc2V0ID0g MDsKLSAgICAgfQotICAgZWxzZSBpZiAobHAtPnN0b3BwZWQgJiYgZGVidWdfbGludXhfbmF0KQot ICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSQzogTm90IHJlc3VtaW5nIHNp YmxpbmcgJXMgKGhhcyBwZW5kaW5nKVxuIiwKLUBAIC0xODQ3LDYgKzE4NDgsNyBAQCBsaW51eF9u YXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotIAotICAgbGludXhfb3BzLT50b19y ZXN1bWUgKGxpbnV4X29wcywgcHRpZCwgc3RlcCwgc2lnbm8pOwotICAgbWVtc2V0ICgmbHAtPnNp Z2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKLSsgIGxwLT53YXRjaHBvaW50X2hpdF9z ZXQgPSAwOwotIAotICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSAgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAotQEAgLTIyODYsNiArMjI4OCw3OCBAQCBtYXliZV9jbGVhcl9pZ25v cmVfc2lnaW50IChzdHJ1Y3QgbHdwX2luZm8gKmxwKQotICAgICB9CitAQCAtMjY0Myw2ICsyNjQz LDM5IEBAIGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMg Km9wcywgQ09SRV9BRERSICphZGRyX3ApCisgICByZXR1cm4gbHAtPnN0b3BwZWRfZGF0YV9hZGRy ZXNzX3A7CiAgfQogIAotKy8qIEZldGNoIHRoZSBwb3NzaWJsZSB0cmlnZ2VyZWQgZGF0YSB3YXRj aHBvaW50IGluZm8gYW5kIHN0b3JlIGl0IHRvIExQLgotKyAgIFRoZSBoYXJkd2FyZSBkYXRhIHdh dGNocG9pbnQgdHJpZ2dlciBnZXRzIGNsZWFyZWQgZHVyaW5nIHRoaXMgZmV0Y2guICAqLwotKwot K3N0YXRpYyB2b2lkCi0rc2F2ZV9zaWd0cmFwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQotK3sKLSsg IHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0rCi0rICAvKiBsaW51eF9uYXRfc3RvcHBlZF9k YXRhX2FkZHJlc3MgaXMgbm90IGV2ZW4gaW5zdGFsbGVkIGluIHRoaXMgY2FzZS4gICovCi0rICBp ZiAobGludXhfb3BzLT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9PSBOVUxMKQotKyAgICByZXR1 cm47Ci0rCi0rICBvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7Ci0rICBpbmZlcmlv cl9wdGlkID0gbHAtPnB0aWQ7Ci0rCi0rICBscC0+d2F0Y2hwb2ludF9oaXRfc2V0ID0KLSsgICAg bGludXhfb3BzLT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0LCAmbHAt PndhdGNocG9pbnRfaGl0KTsKLSsKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotK30KLSsK LSsvKiBXcmFwIHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcyB3aGVyZSB0aGUgR05VL0xpbnV4 IG5hdGl2ZSB0YXJnZXQgbWF5IGJlCi0rICAgZGlyZWN0ZWQgYnkgdGhlIHdhdGNocG9pbnQvZGVi dWcgcmVnaXN0ZXIgbnVtYmVyLiAgQmFzZSB0aGUgcmVwb3J0ZWQgdmFsdWUKLSsgICBvbiB0aGUg dHJpZ2dlcmVkIGRhdGEgYWRkcmVzcyBpbnN0ZWFkLiAgRHVyaW5nIGluZmVyaW9yIHN0b3AgdGhl IGFzc2lnbm1lbnQKLSsgICBvZiB3YXRjaHBvaW50L2RlYnVnIHJlZ2lzdGVycyBtYXkgY2hhbmdl IG1ha2luZyB0aGUgcmVnaXN0ZXIgbnVtYmVyIHNwZWNpZmljCi0rICAgdHJpZ2dlciBpbmZvIHN0 YWxlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNz IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKLSt7Ci0rICBzdHJ1 Y3QgbHdwX2luZm8gKmxwID0gZmluZF9sd3BfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSsKLSsgIGdk Yl9hc3NlcnQgKGxwICE9IE5VTEwpOwotKwotKyAgKmFkZHJfcCA9IGxwLT53YXRjaHBvaW50X2hp dDsKLSsKLSsgIHJldHVybiBscC0+d2F0Y2hwb2ludF9oaXRfc2V0OwotK30KLSsKICsvKiBJbiBg c2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHdpdGggbXVsdGl0aHJlYWRlZCBwYXJlbnQgd2Ug bmVlZCB0byBkZXRhY2gKICsgICB3YXRjaHBvaW50cyBmcm9tIGFsbCB0aGUgTFdQcy4gIEluIHN1 Y2ggY2FzZSBJTkZFUklPUl9QVElEIHdpbGwgYmUgdGhlCiArICAgbm9uLXRocmVhZGVkIG5ldyBj aGlsZCB3aGlsZSBMV1BfTElTVCB3aWxsIHN0aWxsIGNvbnRhaW4gYWxsIHRoZSB0aHJlYWRzIG9m CkBAIC0xMjAyMSw2MiArNzEwMSwxNyBAQCBpbmRleCA5OGY2MzQ3Li4wOTA3ZjAzIDEwMDY0NAog IC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4gICovCiAgCiAgc3RhdGljIGludAotQEAgLTIz MzcsNiArMjQxMSw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwg dm9pZCAqZGF0YSkKLSAJICAgICAgLyogU2F2ZSB0aGUgdHJhcCdzIHNpZ2luZm8gaW4gY2FzZSB3 ZSBuZWVkIGl0IGxhdGVyLiAgKi8KLSAJICAgICAgc2F2ZV9zaWdpbmZvIChscCk7Ci0gCi0rCSAg ICAgIHNhdmVfc2lndHJhcCAobHApOwotKwotIAkgICAgICAvKiBOb3cgcmVzdW1lIHRoaXMgTFdQ IGFuZCBnZXQgdGhlIFNJR1NUT1AgZXZlbnQuICovCi0gCSAgICAgIGVycm5vID0gMDsKLSAJICAg ICAgcHRyYWNlIChQVFJBQ0VfQ09OVCwgR0VUX0xXUCAobHAtPnB0aWQpLCAwLCAwKTsKLUBAIC0y NzAxLDEwICsyNzc3LDE0IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50 IHN0YXR1cywgaW50IG9wdGlvbnMpCi0gICAgICAgYWRkX3RocmVhZCAobHAtPnB0aWQpOwotICAg ICB9Ci0gCi0tICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5mbyBpbiBjYXNlIHdlIG5lZWQgaXQg bGF0ZXIuICAqLwotICAgaWYgKFdJRlNUT1BQRUQgKHN0YXR1cykKLSAgICAgICAmJiAoV1NUT1BT SUcgKHN0YXR1cykgPT0gU0lHVFJBUCB8fCBXU1RPUFNJRyAoc3RhdHVzKSA9PSBUUkFQX0lTX1NZ U0NBTEwpKQotLSAgICBzYXZlX3NpZ2luZm8gKGxwKTsKLSsgICAgewotKyAgICAgIC8qIFNhdmUg dGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICovCi0rICAgICAg c2F2ZV9zaWdpbmZvIChscCk7Ci0rCi0rICAgICAgc2F2ZV9zaWd0cmFwIChscCk7Ci0rICAgIH0K LSAKLSAgIC8qIEhhbmRsZSBHTlUvTGludXgncyBleHRlbmRlZCB3YWl0c3RhdHVzIGZvciB0cmFj ZSBldmVudHMuCi0gICAgICBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgV1NUT1BTSUcgaXMg c2lnbmFsaW5nIHRoYXQKLUBAIC00OTk5LDYgKzUwNzksMTAgQEAgbGludXhfbmF0X2FkZF90YXJn ZXQgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQotICAgdC0+dG9fdGhyZWFkX2FsaXZlID0gbGludXhf bmF0X3RocmVhZF9hbGl2ZTsKLSAgIHQtPnRvX3BpZF90b19zdHIgPSBsaW51eF9uYXRfcGlkX3Rv X3N0cjsKLSAgIHQtPnRvX2hhc190aHJlYWRfY29udHJvbCA9IHRjX3NjaGVkbG9jazsKLSsgIGlm IChsaW51eF9vcHMtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKQotKyAgICB0LT50b19zdG9wcGVk X2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKK0BAIC01NTE5 LDYgKzU1NTIsOCBAQCBsaW51eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0IHRhcmdldF9vcHMgKnQp CisgICB0LT50b190aHJlYWRfYWRkcmVzc19zcGFjZSA9IGxpbnV4X25hdF90aHJlYWRfYWRkcmVz c19zcGFjZTsKKyAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGxpbnV4X25hdF9zdG9w cGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4 X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKICsgIGlmIChsaW51eF9vcHMtPnRvX2RldGFjaF93 YXRjaHBvaW50cykKICsgICAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gbGludXhfbmF0X2Rl dGFjaF93YXRjaHBvaW50czsKICAKICAgIHQtPnRvX2Nhbl9hc3luY19wID0gbGludXhfbmF0X2Nh bl9hc3luY19wOwogICAgdC0+dG9faXNfYXN5bmNfcCA9IGxpbnV4X25hdF9pc19hc3luY19wOwot ZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuaCBiL2dkYi9saW51eC1uYXQuaAotaW5kZXggZWFl NzRmMy4uNzMyMDRmYyAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuaAotKysrIGIvZ2RiL2xp bnV4LW5hdC5oCi1AQCAtNjIsNiArNjIsMTIgQEAgc3RydWN0IGx3cF9pbmZvCi0gICAgICBiZSB0 aGUgYWRkcmVzcyBvZiBhIGhhcmR3YXJlIHdhdGNocG9pbnQuICAqLwotICAgc3RydWN0IHNpZ2lu Zm8gc2lnaW5mbzsKLSAKLSsgIC8qIFdBVENIUE9JTlRfSElUX1NFVCBpcyBub24temVybyBpZiB0 aGlzIExXUCBzdG9wcGVkIHdpdGggYSB0cmFwIGFuZCBhIGRhdGEKLSsgICAgIHdhdGNocG9pbnQg aGFzIGJlZW4gZm91bmQgYXMgdHJpZ2dlcmVkLiAgSW4gc3VjaCBjYXNlIFdBVENIUE9JTlRfSElU Ci0rICAgICBjb250YWlucyBkYXRhIGFkZHJlc3Mgb2YgdGhlIHRyaWdnZXJlZCBkYXRhIHdhdGNo cG9pbnQuICAqLwotKyAgdW5zaWduZWQgd2F0Y2hwb2ludF9oaXRfc2V0IDogMTsKLSsgIENPUkVf QUREUiB3YXRjaHBvaW50X2hpdDsKLSsKLSAgIC8qIE5vbi16ZXJvIGlmIHdlIGV4cGVjdCBhIGR1 cGxpY2F0ZWQgU0lHSU5ULiAgKi8KLSAgIGludCBpZ25vcmVfc2lnaW50OwotIAogZGlmZiAtLWdp dCBhL2dkYi9tMi1sYW5nLmMgYi9nZGIvbTItbGFuZy5jCi1pbmRleCA4OGM3ZTVlLi4yZDBiM2Nh IDEwMDY0NAoraW5kZXggODBlOWJmOS4uMzA1Nzc3NCAxMDA2NDQKIC0tLSBhL2dkYi9tMi1sYW5n LmMKICsrKyBiL2dkYi9tMi1sYW5nLmMKIEBAIC0zNTYsNiArMzU2LDcgQEAgY29uc3Qgc3RydWN0 IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX21vZHVsYTIgPQpAQCAtMTIwODgsMTkgKzcx MjMsMTkgQEAgaW5kZXggODhjN2U1ZS4uMmQwYjNjYSAxMDA2NDQKICAgIGR1bXBfc3ViZXhwX2Jv ZHlfc3RhbmRhcmQsCiAgICBldmFsdWF0ZV9zdWJleHBfbW9kdWxhMgogZGlmZiAtLWdpdCBhL2dk Yi9tYWNob3JlYWQuYyBiL2dkYi9tYWNob3JlYWQuYwotaW5kZXggNWY5YTBmZS4uNjZmYTA2NyAx MDA2NDQKK2luZGV4IDAyYjYxZDMuLjEzYWI1OTUgMTAwNjQ0CiAtLS0gYS9nZGIvbWFjaG9yZWFk LmMKICsrKyBiL2dkYi9tYWNob3JlYWQuYwotQEAgLTY4MSw2ICs2ODEsNyBAQCBzdGF0aWMgc3Ry dWN0IHN5bV9mbnMgbWFjaG9fc3ltX2ZucyA9IHsKK0BAIC03NTUsNiArNzU1LDcgQEAgc3RhdGlj IHN0cnVjdCBzeW1fZm5zIG1hY2hvX3N5bV9mbnMgPSB7CiAgICBtYWNob19uZXdfaW5pdCwgICAg ICAgICAgICAgICAvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVudGlyZSBz eW10YWIgKi8KICAgIG1hY2hvX3N5bWZpbGVfaW5pdCwgICAgICAgICAgIC8qIHN5bV9pbml0OiBy ZWFkIGluaXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KICAgIG1hY2hvX3N5bWZp bGVfcmVhZCwgICAgICAgICAgIC8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBz eW10YWIgKi8KICsgIE5VTEwsCQkJCS8qIHN5bV9yZWFkX3BzeW1ib2xzICovCiAgICBtYWNob19z eW1maWxlX2ZpbmlzaCwgICAgICAgICAvKiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUs IGNsZWFudXAgKi8KICAgIG1hY2hvX3N5bWZpbGVfb2Zmc2V0cywgICAgICAgIC8qIHN5bV9vZmZz ZXRzOiAgeGxhdGUgZXh0ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLwotICAgTlVMTCAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogbmV4dDogcG9pbnRlciB0byBuZXh0IHN0cnVjdCBzeW1fZm5z ICovCisgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8qIHN5bV9zZWdtZW50czogR2V0IHNl Z21lbnQgaW5mb3JtYXRpb24gZnJvbQogZGlmZiAtLWdpdCBhL2dkYi9tYWluLmMgYi9nZGIvbWFp bi5jCi1pbmRleCA1NTQxMWE4Li5hYzlhNTQwIDEwMDY0NAoraW5kZXggMGNjMGY3NS4uZTNmYzJl NiAxMDA2NDQKIC0tLSBhL2dkYi9tYWluLmMKICsrKyBiL2dkYi9tYWluLmMKIEBAIC00MCw2ICs0 MCw3IEBACkBAIC0xMjEyMiw3ICs3MTU3LDcgQEAgaW5kZXggNTU0MTFhOC4uYWM5YTU0MCAxMDA2 NDQKICAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKIEBAIC00MzQsMTAgKzQzNywxNCBAQCBj YXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsiYXJncyIsIG5vX2FyZ3VtZW50LCAm c2V0X2FyZ3MsIDF9LAotICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCisg ICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCiAgICAgICAgeyJyZXR1cm4t Y2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0LCAxfSwKICsj aWYgSEFWRV9QWVRIT04KICsgICAgICB7InB5dGhvbiIsIG5vX2FyZ3VtZW50LCAwLCAnUCd9LApA QCAtMTIyNTEsNyArNzI4Niw3IEBAIGluZGV4IDU1NDExYTguLmFjOWE1NDAgMTAwNjQ0CiAgICAt LXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNz LlxuXAogICIpLCBzdHJlYW0pOwogZGlmZiAtLWdpdCBhL2dkYi9tYWludC5jIGIvZ2RiL21haW50 LmMKLWluZGV4IGVjYmFlMTIuLjgwZmMzNmUgMTAwNjQ0CitpbmRleCA0MzE2ZDY2Li5mZThhMDY5 IDEwMDY0NAogLS0tIGEvZ2RiL21haW50LmMKICsrKyBiL2dkYi9tYWludC5jCiBAQCAtOTE0LDQg KzkxNCwxMiBAQCBXaGVuIGVuYWJsZWQgR0RCIGlzIHByb2ZpbGVkLiIpLApAQCAtMTIyNjcsMjEg KzczMDIsOCBAQCBpbmRleCBlY2JhZTEyLi44MGZjMzZlIDEwMDY0NAogKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKICB9Ci1kaWZmIC0tZ2l0IGEv Z2RiL21kZWJ1Z3JlYWQuYyBiL2dkYi9tZGVidWdyZWFkLmMKLWluZGV4IGFhYzgyZTkuLjYyNjI5 MmMgMTAwNjQ0Ci0tLS0gYS9nZGIvbWRlYnVncmVhZC5jCi0rKysgYi9nZGIvbWRlYnVncmVhZC5j Ci1AQCAtNDgwMiw3ICs0ODAyLDcgQEAgbmV3X3R5cGUgKGNoYXIgKm5hbWUpCi0gewotICAgc3Ry dWN0IHR5cGUgKnQ7Ci0gCi0tICB0ID0gYWxsb2NfdHlwZSAoY3VycmVudF9vYmpmaWxlKTsKLSsg IHQgPSBhbGxvY190eXBlIChjdXJyZW50X29iamZpbGUsIE5VTEwpOwotICAgVFlQRV9OQU1FICh0 KSA9IG5hbWU7Ci0gICBUWVBFX0NQTFVTX1NQRUNJRklDICh0KSA9IChzdHJ1Y3QgY3BsdXNfc3Ry dWN0X3R5cGUgKikgJmNwbHVzX3N0cnVjdF9kZWZhdWx0OwotICAgcmV0dXJuIHQ7CiBkaWZmIC0t Z2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQtdmFyLmMKLWluZGV4IDBi YWFhODMuLjk0ZWJmZWIgMTAwNjQ0CitpbmRleCBiMjI3NDExLi4zYjkzMmYwIDEwMDY0NAogLS0t IGEvZ2RiL21pL21pLWNtZC12YXIuYwogKysrIGIvZ2RiL21pL21pLWNtZC12YXIuYwogQEAgLTY5 Nyw3ICs2OTcsNiBAQCBtaV9jbWRfdmFyX3VwZGF0ZSAoY2hhciAqY29tbWFuZCwgY2hhciAqKmFy Z3YsIGludCBhcmdjKQpAQCAtMTIyOTMsMTAgKzczMTUsMTAgQEAgaW5kZXggMGJhYWE4My4uOTRl YmZlYiAxMDA2NDQKICAKICAgICAgICB2YXJvYmpfdXBkYXRlX29uZSAodmFyLCBwcmludF92YWx1 ZXMsIDEgLyogZXhwbGljaXQgKi8pOwogZGlmZiAtLWdpdCBhL2dkYi9taS9taS1tYWluLmMgYi9n ZGIvbWkvbWktbWFpbi5jCi1pbmRleCA4NTdhNWQ1Li42MTgxMDAyIDEwMDY0NAoraW5kZXggZGRl MDA2Mi4uODMyY2ZjYyAxMDA2NDQKIC0tLSBhL2dkYi9taS9taS1tYWluLmMKICsrKyBiL2dkYi9t aS9taS1tYWluLmMKLUBAIC0xMTMwLDcgKzExMzAsNyBAQCBtaV9jbWRfbGlzdF9mZWF0dXJlcyAo Y2hhciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQorQEAgLTE0MDAsNyArMTQwMCw3 IEBAIG1pX2NtZF9saXN0X2ZlYXR1cmVzIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50 IGFyZ2MpCiAgICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsIE5VTEwsICJmcm96ZW4t dmFyb2JqcyIpOwogICAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCBOVUxMLCAicGVu ZGluZy1icmVha3BvaW50cyIpOwogICAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCBO VUxMLCAidGhyZWFkLWluZm8iKTsKQEAgLTEyMzA2LDcgKzczMjgsNyBAQCBpbmRleCA4NTdhNWQ1 Li42MTgxMDAyIDEwMDY0NAogICAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCBOVUxM LCAicHl0aG9uIik7CiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIv bWlwc3JlYWQuYwotaW5kZXggYTg0MDAzZi4uOTI0YzFjNSAxMDA2NDQKK2luZGV4IDRlZjgxN2Uu LjFjNTM1NzQgMTAwNjQ0CiAtLS0gYS9nZGIvbWlwc3JlYWQuYwogKysrIGIvZ2RiL21pcHNyZWFk LmMKIEBAIC0zOTQsNiArMzk0LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIGVjb2ZmX3N5bV9m bnMgPQpAQCAtMTIzMTgsMTQgKzczNDAsMTMgQEAgaW5kZXggYTg0MDAzZi4uOTI0YzFjNSAxMDA2 NDQKICAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLAkvKiBzeW1fb2Zmc2V0czogZHVtbXkgRklY TUUgdGlsIGltcGxlbSBzeW0gcmVsb2MgKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJ Lyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0 IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYwotaW5kZXggOGRjY2E3MC4uZTU0NDJj YSAxMDA2NDQKK2luZGV4IDBiMDdlMzcuLjVkZTUzMDAgMTAwNjQ0CiAtLS0gYS9nZGIvb2JqZmls ZXMuYwogKysrIGIvZ2RiL29iamZpbGVzLmMKLUBAIC02MzQsNiArNjM0LDExIEBAIG9iamZpbGVf cmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICpuZXdfb2Zmc2V0cykKK0BAIC03ODksNiArNzg5LDEwIEBAIG9iamZpbGVfcmVsb2NhdGUxIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNl dHMpCiAgICAgIH0KICAgIH0KICAKLSsgIC8qIEFscmVhZCBRVUlDS19BRERSTUFQIHRpc2VsZiBh c3N1bWVzIGFsbCBzZWN0aW9ucyBoYXZlIHRoZSBzYW1lIG9mZnNldC4gICovCiArICBpZiAob2Jq ZmlsZS0+cXVpY2tfYWRkcm1hcCkKICsgICAgYWRkcm1hcF9yZWxvY2F0ZSAob2JqZmlsZS0+cXVp Y2tfYWRkcm1hcCwKICsJCSAgICAgIEFOT0ZGU0VUIChkZWx0YSwgU0VDVF9PRkZfVEVYVCAob2Jq ZmlsZSkpKTsKQEAgLTEyMzMzLDcgKzczNTQsMTYgQEAgaW5kZXggOGRjY2E3MC4uZTU0NDJjYSAx MDA2NDQKICAgIHsKICAgICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqcHN5bTsKICAKLUBAIC03 MzEsNiArNzM2LDIwIEBAIGhhdmVfcGFydGlhbF9zeW1ib2xzICh2b2lkKQorQEAgLTkxNCw3ICs5 MTgsNyBAQCBvYmpmaWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0 IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCisgaW50Cisgb2JqZmlsZV9oYXNfcGFydGlh bF9zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CistICByZXR1cm4gb2JqZmls ZS0+cHN5bXRhYnMgIT0gTlVMTDsKKysgIHJldHVybiBvYmpmaWxlLT5wc3ltdGFicyAhPSBOVUxM IHx8IG9iamZpbGUtPnF1aWNrX2FkZHJtYXA7CisgfQorIAorIC8qIFJldHVybiBub24temVybyBp ZiBPQkpGSUxFIGhhcyBmdWxsIHN5bWJvbHMuICAqLworQEAgLTk1NCw2ICs5NTgsMjAgQEAgaGF2 ZV9wYXJ0aWFsX3N5bWJvbHMgKHZvaWQpCiAgICAgIGlmIChvYmpmaWxlX2hhc19wYXJ0aWFsX3N5 bWJvbHMgKG9mcCkpCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CkBAIC0xMjM1NSwxMCArNzM4NSwx MCBAQCBpbmRleCA4ZGNjYTcwLi5lNTQ0MmNhIDEwMDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9n ZGIvb2JqZmlsZXMuaCBiL2dkYi9vYmpmaWxlcy5oCi1pbmRleCA2MmZhNDk4Li4xZmM5YzZhIDEw MDY0NAoraW5kZXggYzY4OTYyMi4uZWIzYWUxMCAxMDA2NDQKIC0tLSBhL2dkYi9vYmpmaWxlcy5o CiArKysgYi9nZGIvb2JqZmlsZXMuaAotQEAgLTIxMiw2ICsyMTIsMTEgQEAgc3RydWN0IG9iamZp bGUKK0BAIC0yMTMsNiArMjEzLDExIEBAIHN0cnVjdCBvYmpmaWxlCiAgCiAgICAgIHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqcHN5bXRhYnM7CiAgCkBAIC0xMjM3MCw3ICs3NDAwLDcgQEAgaW5kZXgg NjJmYTQ5OC4uMWZjOWM2YSAxMDA2NDQKICAgICAgLyogTWFwIGFkZHJlc3NlcyB0byB0aGUgZW50 cmllcyBvZiBQU1lNVEFCUy4gIEl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IHRvCiAgICAgICAg IGhhdmUgYSBtYXAgcGVyIHRoZSB3aG9sZSBwcm9jZXNzIGJ1dCBBRERSTUFQIGNhbm5vdCBzZWxl Y3RpdmVseSByZW1vdmUKICAgICAgICAgaXRzIGl0ZW1zIGR1cmluZyBGUkVFX09CSkZJTEUuICBU aGlzIG1hcHBpbmcgaXMgYWxyZWFkeSBwcmVzZW50IGV2ZW4gZm9yCi1AQCAtNDE0LDYgKzQxOSwx NSBAQCBzdHJ1Y3Qgb2JqZmlsZQorQEAgLTQyNiw2ICs0MzEsMTUgQEAgc3RydWN0IG9iamZpbGUK ICAKICAjZGVmaW5lIE9CSkZfVVNFUkxPQURFRAkoMSA8PCAzKQkvKiBVc2VyIGxvYWRlZCAqLwog IApAQCAtMTIzODMsMTAgKzc0MTMsMTAgQEAgaW5kZXggNjJmYTQ5OC4uMWZjOWM2YSAxMDA2NDQK ICsKICsjZGVmaW5lIE9CSkZfTUFJTiAoMSA8PCA3KQogKwotIC8qIFRoZSBvYmplY3QgZmlsZSB0 aGF0IHRoZSBtYWluIHN5bWJvbCB0YWJsZSB3YXMgbG9hZGVkIGZyb20gKGUuZy4gdGhlCi0gICAg YXJndW1lbnQgdG8gdGhlICJzeW1ib2wtZmlsZSIgb3IgImZpbGUiIGNvbW1hbmQpLiAgKi8KKyAv KiBUaGUgb2JqZWN0IGZpbGUgdGhhdCBjb250YWlucyB0aGUgcnVudGltZSBjb21tb24gbWluaW1h bCBzeW1ib2xzCisgICAgZm9yIFN1bk9TNC4gTm90ZSB0aGF0IHRoaXMgb2JqZmlsZSBoYXMgbm8g YXNzb2NpYXRlZCBCRkQuICAqLwogIAotQEAgLTU2OCw2ICs1ODIsMTMgQEAgZXh0ZXJuIHZvaWQg Z2RiX2JmZF91bnJlZiAoc3RydWN0IGJmZCAqYWJmZCk7CitAQCAtNjA2LDYgKzYyMCwxMyBAQCBl eHRlcm4gdm9pZCBnZGJfYmZkX3VucmVmIChzdHJ1Y3QgYmZkICphYmZkKTsKICAgIEFMTF9PQkpG SUxFUyAob2JqZmlsZSkJIFwKICAgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHAp CiAgCkBAIC0xMjM5NywxNCArNzQyNywxNCBAQCBpbmRleCA2MmZhNDk4Li4xZmM5YzZhIDEwMDY0 NAogKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQkJCQkJXAogKyAgICBBTExfT0JKRklMRV9QU1lN VEFCUyAocmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpLCBwKQogKwotIC8qIFRyYXZl cnNlIGFsbCBtaW5pbWFsIHN5bWJvbHMgaW4gYWxsIG9iamZpbGVzLiAgKi8KLSAKLSAjZGVmaW5l CUFMTF9NU1lNQk9MUyhvYmpmaWxlLCBtKSBcCisgI2RlZmluZSBBTExfUFNQQUNFX1BTWU1UQUJT KHNzLCBvYmpmaWxlLCBwKQkJXAorICAgQUxMX1BTUEFDRV9PQkpGSUxFUyAoc3MsIG9iamZpbGUp CQkJXAorICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcCkKIGRpZmYgLS1naXQg YS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCBlZjkzOGUzLi5jMjQzYmQ4IDEwMDY0 NAoraW5kZXggMjg4NTUwNi4uNzc5YjgxOSAxMDA2NDQKIC0tLSBhL2dkYi9wYXJzZS5jCiArKysg Yi9nZGIvcGFyc2UuYwotQEAgLTYzLDYgKzYzLDcgQEAgY29uc3Qgc3RydWN0IGV4cF9kZXNjcmlw dG9yIGV4cF9kZXNjcmlwdG9yX3N0YW5kYXJkID0KK0BAIC02Miw2ICs2Miw3IEBAIGNvbnN0IHN0 cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zdGFuZGFyZCA9CiAgICB7CiAgICAg IHByaW50X3N1YmV4cF9zdGFuZGFyZCwKICAgICAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkLApA QCAtMTI0MTIsMjMgKzc0NDIsNyBAQCBpbmRleCBlZjkzOGUzLi5jMjQzYmQ4IDEwMDY0NAogICAg ICBvcF9uYW1lX3N0YW5kYXJkLAogICAgICBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkLAogICAg ICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQKLUBAIC04MzcsNiArODM4LDE1IEBAIG9wZXJhdG9y X2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIsIGludCBlbmRwb3MsCi0g ICAgICAgYXJncyA9IDEgKyBsb25nZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tlbmRwb3MgLSAyXS5s b25nY29uc3QpOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIFRZUEVfSU5TVEFOQ0U6Ci0r ICAgICAgb3BsZW4gPSA0ICsgbG9uZ2VzdF90b19pbnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0u bG9uZ2NvbnN0KTsKLSsgICAgICBhcmdzID0gMTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2Fz ZSBUWVBFX0lOU1RBTkNFX0xPT0tVUDoKLSsgICAgICBvcGxlbiA9IDM7Ci0rICAgICAgYnJlYWs7 Ci0rCi0gICAgIGNhc2UgT1BfT0JKQ19NU0dDQUxMOgkvKiBPYmplY3RpdmUgQyBtZXNzYWdlICht ZXRob2QpIGNhbGwgKi8KLSAgICAgICBvcGxlbiA9IDQ7Ci0gICAgICAgYXJncyA9IDEgKyBsb25n ZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3QpOwotQEAgLTEzNTUs NiArMTM2NSwxNTAgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4u LikKK0BAIC0xMzU5LDYgKzEzNjAsMTUwIEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25z dCBjaGFyICp5LCAuLi4pCiAgICB2YV9lbmQgKGFyZ3MpOwogIH0KICAKQEAgLTEyNTgwLDEwICs3 NTk0LDEwIEBAIGluZGV4IGVmOTM4ZTMuLmMyNDNiZDggMTAwNjQ0CiAgX2luaXRpYWxpemVfcGFy c2UgKHZvaWQpCiAgewogZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNl ci1kZWZzLmgKLWluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0CitpbmRleCA2ZmNmN2FlLi4z ZjVlZmU4IDEwMDY0NAogLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKICsrKyBiL2dkYi9wYXJzZXIt ZGVmcy5oCi1AQCAtMTg5LDYgKzE4OSwxMyBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGgg KHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosIGludCAqKTsKK0BAIC0xOTAsNiArMTkw LDEzIEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aCAoc3RydWN0IGV4cHJlc3Npb24gKiwg aW50LCBpbnQgKiwgaW50ICopOwogIAogIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwgaW50ICopOwogIApAQCAtMTI1 OTcsNyArNzYxMSw3IEBAIGluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0CiAgZXh0ZXJuIGNo YXIgKm9wX25hbWVfc3RhbmRhcmQgKGVudW0gZXhwX29wY29kZSk7CiAgCiAgZXh0ZXJuIHN0cnVj dCB0eXBlICpmb2xsb3dfdHlwZXMgKHN0cnVjdCB0eXBlICopOwotQEAgLTI2Nyw2ICsyNzQsMjAg QEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCitAQCAtMjY4LDYgKzI3NSwyMCBAQCBzdHJ1Y3QgZXhw X2Rlc2NyaXB0b3IKICAgICAgICAgdGhlIG51bWJlciBvZiBzdWJleHByZXNzaW9ucyBpdCB0YWtl cy4gICovCiAgICAgIHZvaWQgKCpvcGVyYXRvcl9sZW5ndGgpIChzdHJ1Y3QgZXhwcmVzc2lvbios IGludCwgaW50KiwgaW50ICopOwogIApAQCAtMTI2MTgsNyArNzYzMiw3IEBAIGluZGV4IGNiZGE5 YzMuLmEwN2U2ZjIgMTAwNjQ0CiAgICAgIC8qIE5hbWUgb2YgdGhpcyBvcGVyYXRvciBmb3IgZHVt cGluZyBwdXJwb3Nlcy4gICovCiAgICAgIGNoYXIgKigqb3BfbmFtZSkgKGVudW0gZXhwX29wY29k ZSk7CiAgCi1AQCAtMjk5LDQgKzMyMCw4IEBAIGV4dGVybiB2b2lkIHByaW50X3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50ICosCitAQCAtMzAwLDQgKzMyMSw4IEBAIGV4 dGVybiB2b2lkIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50 ICosCiAgCiAgZXh0ZXJuIHZvaWQgcGFyc2VyX2ZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAq LCAuLi4pIEFUVFJfRk9STUFUIChwcmludGYsIDIgLDMpOwogIApAQCAtMTI2MjgsNyArNzY0Miw3 IEBAIGluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0CiArCiAgI2VuZGlmIC8qIFBBUlNFUl9E RUZTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5jIGIvZ2RiL3BwYy1saW51 eC1uYXQuYwotaW5kZXggNDdiNzRhZC4uMjJmYjJmYyAxMDA2NDQKK2luZGV4IDEwZmY3M2QuLjVi NjhmNTYgMTAwNjQ0CiAtLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCiArKysgYi9nZGIvcHBjLWxp bnV4LW5hdC5jCiBAQCAtMTM5MSw2ICsxMzkxLDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydykKQEAgLTEyNjY1LDcgKzc2Nzks NyBAQCBpbmRleCA0N2I3NGFkLi4yMmZiMmZjIDEwMDY0NAogICAgdC0+dG9fc3RvcHBlZF9kYXRh X2FkZHJlc3MgPSBwcGNfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3M7CiAgICB0LT50b193YXRj aHBvaW50X2FkZHJfd2l0aGluX3JhbmdlID0gcHBjX2xpbnV4X3dhdGNocG9pbnRfYWRkcl93aXRo aW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwot aW5kZXggNWQ4YjkzNi4uZmIwYTQ1NSAxMDA2NDQKK2luZGV4IDg4ZGIwOGIuLjE4ZGFlOWUgMTAw NjQ0CiAtLS0gYS9nZGIvcHJpbnRjbWQuYwogKysrIGIvZ2RiL3ByaW50Y21kLmMKIEBAIC00Niw3 ICs0Niw2IEBACkBAIC0xMjY3NSw4ICs3Njg5LDggQEAgaW5kZXggNWQ4YjkzNi4uZmIwYTQ1NSAx MDA2NDQKIC0jaW5jbHVkZSAic29saWIuaCIKICAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKICAj aW5jbHVkZSAiY2hhcnNldC5oIgotIAotQEAgLTkwMCw2ICs4OTksMTEgQEAgcHJpbnRfY29tbWFu ZF8xIChjaGFyICpleHAsIGludCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQorICNpbmNsdWRlICJh cmNoLXV0aWxzLmgiCitAQCAtOTQxLDYgKzk0MCwxMSBAQCBwcmludF9jb21tYW5kXzEgKGNoYXIg KmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCiAgICBlbHNlCiAgICAgIHZhbCA9IGFj Y2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKICAKQEAgLTEyNjg4LDcgKzc3MDIsNyBAQCBpbmRleCA1 ZDhiOTM2Li5mYjBhNDU1IDEwMDY0NAogICAgaWYgKHZvaWRwcmludCB8fCAodmFsICYmIHZhbHVl X3R5cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZ UEVfQ09ERV9WT0lEKSkKICAgICAgewotQEAgLTEzOTYsNiArMTQwMCwyMiBAQCB4X2NvbW1hbmQg KGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTE0MzcsNiArMTQ0MSwyMiBAQCB4X2NvbW1h bmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9p bnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CiAgICAgIH0KICB9CkBAIC0x MjcxMSw3ICs3NzI1LDcgQEAgaW5kZXggNWQ4YjkzNi4uZmIwYTQ1NSAxMDA2NDQKICAMCiAgCiAg LyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFpbi4KLUBAIC0xNzk4 LDUwICsxODE4LDYgQEAgZGlzYWJsZV9kaXNwbGF5X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSkKK0BAIC0xODU5LDUyICsxODc5LDYgQEAgZGlzYWJsZV9kaXNwbGF5X2NvbW1hbmQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKICAgICAgICB9CiAgfQogIApAQCAtMTI3MjcsNiAr Nzc0MSw3IEBAIGluZGV4IDVkOGI5MzYuLmZiMGE0NTUgMTAwNjQ0CiAtICBjb25zdCB1bmlvbiBl eHBfZWxlbWVudCAqY29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKIC0KIC0gIGlmIChkLT5ibG9jayAh PSBOVUxMCistICAgICAgJiYgZC0+cHNwYWNlID09IHNvbGliLT5wc3BhY2UKIC0gICAgICAmJiBz b2xpYl9jb250YWluc19hZGRyZXNzX3AgKHNvbGliLCBkLT5ibG9jay0+c3RhcnRhZGRyKSkKIC0g ICAgcmV0dXJuIDE7CiAtCkBAIC0xMjc0Nyw3ICs3NzYyLDggQEAgaW5kZXggNWQ4YjkzNi4uZmIw YTQ1NSAxMDA2NDQKIC0JICAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9sKTsKIC0KIC0JICBp ZiAoYmxvY2sgIT0gTlVMTAotLQkgICAgICAmJiBzb2xpYl9jb250YWluc19hZGRyZXNzX3AgKHNv bGliLCBibG9jay0+c3RhcnRhZGRyKSkKKy0JICAgICAgJiYgc29saWJfY29udGFpbnNfYWRkcmVz c19wIChzb2xpYiwKKy0JCQkJCSAgIGJsb2NrLT5zdGFydGFkZHIpKQogLQkgICAgcmV0dXJuIDE7 CiAtCiAtCSAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbi0+b2JqZmlsZSA9PSBzb2xpYi0+b2JqZmls ZSkKQEAgLTEyNzYyLDcgKzc3NzgsNyBAQCBpbmRleCA1ZDhiOTM2Li5mYjBhNDU1IDEwMDY0NAog IC8qIGRpc3BsYXlfY2hhaW4gaXRlbXMgcG9pbnQgdG8gYmxvY2tzIGFuZCBleHByZXNzaW9ucy4g IFNvbWUgZXhwcmVzc2lvbnMgaW4KICAgICB0dXJuIG1heSBwb2ludCB0byBzeW1ib2xzLgogICAg IEJvdGggc3ltYm9scyBhbmQgYmxvY2tzIGFyZSBvYnN0YWNrX2FsbG9jJ2Qgb24gb2JqZmlsZV9z dGFjaywgYW5kIGFyZQotQEAgLTE4NTMsMTggKzE4MjksMjAgQEAgZGlzcGxheV91c2VzX3NvbGli X3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAorQEAgLTE5MTYsMTggKzE4OTAsMjAgQEAgZGlz cGxheV91c2VzX3NvbGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAogIHN0YXRpYyB2b2lk CiAgY2xlYXJfZGFuZ2xpbmdfZGlzcGxheV9leHByZXNzaW9ucyAoc3RydWN0IHNvX2xpc3QgKnNv bGliKQogIHsKQEAgLTEyNzkzLDcgKzc4MDksNyBAQCBpbmRleCA1ZDhiOTM2Li5mYjBhNDU1IDEw MDY0NAogIH0KICAMCiAgCi1AQCAtMjc0OSw0ICsyNzI3LDYgQEAgU2hvdyBwcmludGluZyBvZiBz b3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCitA QCAtMjgxMiw0ICsyNzg4LDYgQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5k IGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCiAgCQkJICAgTlVMTCwKICAJCQkg ICBzaG93X3ByaW50X3N5bWJvbF9maWxlbmFtZSwKICAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hv d3ByaW50bGlzdCk7CkBAIC0xNDAwNCwxMCArOTAyMCwxMCBAQCBpbmRleCAwMDAwMDAwLi44MDE5 ZTlkCiArfTsKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBiL2dkYi9w eXRob24vcHktYnJlYWtwb2ludC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uYWZhOTUyNgoraW5kZXggMDAwMDAwMC4uNzgzMzg1ZQogLS0tIC9kZXYvbnVsbAogKysrIGIv Z2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKLUBAIC0wLDAgKzEsNjY1IEBACitAQCAtMCwwICsx LDY2NiBAQAogKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gYnJlYWtwb2ludHMKICsKICsgICBDb3B5 cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0x NDAzNiw3ICs5MDUyLDggQEAgaW5kZXggMDAwMDAwMC4uYWZhOTUyNgogKyNpbmNsdWRlICJnZGJj bWQuaCIKICsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiArI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0r CisrI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICsKICsv KiBGcm9tIGJyZWFrcG9pbnQuYy4gICovCiArZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICpicmVh a3BvaW50X2NoYWluOwpAQCAtMTQ1MDQsNyArOTUyMSw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1 MjYKICt7CiArICBicmVha3BvaW50X29iamVjdCAqbmV3YnA7CiArICBzdHJ1Y3QgYnJlYWtwb2lu dCAqYnA7Ci0rICBQeUdJTFN0YXRlX1NUQVRFIHN0YXRlOworKyAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXA7CiArCiArICBpZiAobnVtIDwgMCkKICsgICAgcmV0dXJuOwpAQCAtMTQ1MjksNyArOTU0 Niw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYKICsKICsgICsrYnBweV9saXZlOwogKwotKyAg c3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9u X2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICBpZiAo YnBweV9wZW5kaW5nX29iamVjdCkKICsgICAgewpAQCAtMTQ1NjIsNyArOTU3OSw3IEBAIGluZGV4 IDAwMDAwMDAuLmFmYTk1MjYKICsgIC8qIEp1c3QgaWdub3JlIGVycm9ycyBoZXJlLiAgKi8KICsg IFB5RXJyX0NsZWFyICgpOwogKwotKyAgUHlHSUxTdGF0ZV9SZWxlYXNlIChzdGF0ZSk7CisrICBk b19jbGVhbnVwcyAoY2xlYW51cCk7CiArfQogKwogKy8qIENhbGxiYWNrIHRoYXQgaXMgdXNlZCB3 aGVuIGEgYnJlYWtwb2ludCBpcyBkZWxldGVkLiAgVGhpcyB3aWxsCkBAIC0xNDU3MCw5ICs5NTg3 LDkgQEAgaW5kZXggMDAwMDAwMC4uYWZhOTUyNgogK3N0YXRpYyB2b2lkCiArZ2RicHlfYnJlYWtw b2ludF9kZWxldGVkIChpbnQgbnVtKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7Cisr ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICsKLSsgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1 cmUgKCk7CisrICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2gg KCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwogKyAgaWYgKEJQUFlfVkFMSURfUCAobnVtKSkKICsgICAg ewogKyAgICAgIGJwcHlfYnJlYWtwb2ludHNbbnVtXS0+YnAgPSBOVUxMOwpAQCAtMTQ1ODAsNyAr OTU5Nyw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYKICsgICAgICBicHB5X2JyZWFrcG9pbnRz W251bV0gPSBOVUxMOwogKyAgICAgIC0tYnBweV9saXZlOwogKyAgICB9Ci0rICBQeUdJTFN0YXRl X1JlbGVhc2UgKHN0YXRlKTsKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKICt9CiArCiArDApA QCAtMTQ2NzQsNyArOTY5MSw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYKICsgIGJyZWFrcG9p bnRfb2JqZWN0X2dldHNldAkgIC8qIHRwX2dldHNldCAqLwogK307CiBkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9weS1jbWQuYyBiL2dkYi9weXRob24vcHktY21kLmMKLWluZGV4IDUyOGFjYTYuLjA0 YjNmZDEgMTAwNjQ0CitpbmRleCBhZTQ2MmQ5Li4yMmQxNDA1IDEwMDY0NAogLS0tIGEvZ2RiL3B5 dGhvbi9weS1jbWQuYwogKysrIGIvZ2RiL3B5dGhvbi9weS1jbWQuYwogQEAgLTQ5LDggKzQ5LDcg QEAgc3RhdGljIHN0cnVjdCBjbWRweV9jb21wbGV0ZXIgY29tcGxldGVyc1tdID0KQEAgLTE0NzM5 LDcgKzk3NTYsNyBAQCBpbmRleCA1MjhhY2E2Li4wNGIzZmQxIDEwMDY0NAogICAgICByZXR1cm4g LTE7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1mcmFtZS5jIGIvZ2RiL3B5dGhvbi9w eS1mcmFtZS5jCi1pbmRleCAyNzk0MTVjLi41ZDhjZTBhIDEwMDY0NAoraW5kZXggMzM0YmFkOS4u NTI0MzUzZCAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktZnJhbWUuYwogKysrIGIvZ2RiL3B5 dGhvbi9weS1mcmFtZS5jCiBAQCAtMjAyLDEwICsyMDIsNTkgQEAgZnJhcHlfcGMgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTE0OTg0LDEzICsxMDAwMSwxMyBAQCBpbmRleCAw MDAwMDAwLi5hMzE0MGJjCiArfQogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktaW5mZXJpb3Iu YyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjVlOTBjYzIKK2luZGV4IDAwMDAwMDAuLmIyNTlhYjUKIC0tLSAvZGV2L251bGwK ICsrKyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwotQEAgLTAsMCArMSw5MjYgQEAKK0BAIC0w LDAgKzEsOTM0IEBACiArLyogUHl0aG9uIGludGVyZmFjZSB0byBpbmZlcmlvcnMuCiArCi0rICAg Q29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENv cHlyaWdodCAoQykgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsK ICsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCiArCkBAIC0xNTA3Miw3ICsxMDA4OSw3IEBA IGluZGV4IDAwMDAwMDAuLjVlOTBjYzIKICsKICsvKiBMaXN0IGNvbnRhaW5pbmcgaW5mZXJpb3Jf b2JqZWN0cy4gIFRoaXMgbGlzdCBvd25zIGEgcmVmZXJlbmNlIHRvIGVhY2gKICsgICBvYmplY3Qg aXQgY29udGFpbnMuICAqLwotK3N0YXRpYyBzdHJ1Y3QgaW5mbGlzdF9lbnRyeSAqaW5mZXJpb3Jf bGlzdDsKKytzdGF0aWMgc3RydWN0IGluZmxpc3RfZW50cnkgKmdkYnB5X2luZmVyaW9yX2xpc3Q7 CiArCiArc3RhdGljIGludCBuaW5mZXJpb3JzOwogKwpAQCAtMTUwOTQsNyArMTAxMTEsMTAgQEAg aW5kZXggMDAwMDAwMC4uNWU5MGNjMgogKyAgICAgIHJldHVybjsKICsgICAgfQogKwotKyAgY2xl YW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xh bmd1YWdlKTsKKysgIC8qIFdoaWxlIGNyZWF0aW5nIG5ldyBpbmZlcmlvciBubyBpbmZlcmlvciB0 aHJlYWQgaXMgYXZhaWxhYmxlLiAgVGhlcmVmb3JlCisrICAgICBnZXRfY3VycmVudF9hcmNoIGhh cyBubyB2YWxpZCBjdXJyZW50IGZyYW1lIChhbmQgaXQgd291bGQgY3Jhc2gpLiAgKi8KKysKKysg IGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAodGFyZ2V0X2dkYmFyY2gsIGN1cnJlbnRfbGFu Z3VhZ2UpOwogKwogKyAgaW5mX29iaiA9IFB5T2JqZWN0X05ldyAoaW5mZXJpb3Jfb2JqZWN0LCAm aW5mZXJpb3Jfb2JqZWN0X3R5cGUpOwogKyAgaWYgKCFpbmZfb2JqKQpAQCAtMTUxMTEsOSArMTAx MzEsOSBAQCBpbmRleCAwMDAwMDAwLi41ZTkwY2MyCiArCiArICBlbnRyeSA9IHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IGluZmxpc3RfZW50cnkpKTsKICsgIGVudHJ5LT5pbmZfb2JqID0gaW5mX29i ajsKLSsgIGVudHJ5LT5uZXh0ID0gaW5mZXJpb3JfbGlzdDsKKysgIGVudHJ5LT5uZXh0ID0gZ2Ri cHlfaW5mZXJpb3JfbGlzdDsKICsKLSsgIGluZmVyaW9yX2xpc3QgPSBlbnRyeTsKKysgIGdkYnB5 X2luZmVyaW9yX2xpc3QgPSBlbnRyeTsKICsKICsgIG5pbmZlcmlvcnMrKzsKICsKQEAgLTE1MTI2 LDEyICsxMDE0NiwxMiBAQCBpbmRleCAwMDAwMDAwLi41ZTkwY2MyCiArc3RhdGljIHZvaWQKICtk ZWxldGVfaW5mZXJpb3Jfb2JqZWN0IChpbnQgcGlkKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUg c3RhdGU7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICsgIHN0cnVjdCBpbmZsaXN0X2Vu dHJ5ICoqaW5mX2VudHJ5LCAqaW5mX3RtcDsKICsgIHN0cnVjdCB0aHJlYWRsaXN0X2VudHJ5ICp0 aF9lbnRyeSwgKnRoX3RtcDsKICsKICsgIC8qIEZpbmQgaW5mZXJpb3Jfb2JqZWN0IGZvciB0aGUg Z2l2ZW4gUElELiAgKi8KLSsgIGZvciAoaW5mX2VudHJ5ID0gJmluZmVyaW9yX2xpc3Q7ICppbmZf ZW50cnkgIT0gTlVMTDsKKysgIGZvciAoaW5mX2VudHJ5ID0gJmdkYnB5X2luZmVyaW9yX2xpc3Q7 ICppbmZfZW50cnkgIT0gTlVMTDsKICsgICAgICAgaW5mX2VudHJ5ID0gJigqaW5mX2VudHJ5KS0+ bmV4dCkKICsgICAgaWYgKCgqaW5mX2VudHJ5KS0+aW5mX29iai0+aW5mZXJpb3ItPnBpZCA9PSBw aWQpCiArICAgICAgYnJlYWs7CkBAIC0xNTEzOSw3ICsxMDE1OSw3IEBAIGluZGV4IDAwMDAwMDAu LjVlOTBjYzIKICsgIGlmICghKmluZl9lbnRyeSkKICsgICAgcmV0dXJuOwogKwotKyAgc3RhdGUg PSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAo Z2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICBpbmZfdG1wID0g KmluZl9lbnRyeTsKICsgIGluZl90bXAtPmluZl9vYmotPmluZmVyaW9yID0gTlVMTDsKQEAgLTE1 MTYyLDcgKzEwMTgyLDcgQEAgaW5kZXggMDAwMDAwMC4uNWU5MGNjMgogKwogKyAgbmluZmVyaW9y cy0tOwogKwotKyAgUHlHSUxTdGF0ZV9SZWxlYXNlIChzdGF0ZSk7CisrICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7CiArfQogKwogKy8qIEZpbmRzIHRoZSBQeXRob24gSW5mZXJpb3Igb2JqZWN0IGZv ciB0aGUgZ2l2ZW4gcGlkLiAgUmV0dXJucyBhIGJvcnJvd2VkCkBAIC0xNTE3Miw3ICsxMDE5Miw3 IEBAIGluZGV4IDAwMDAwMDAuLjVlOTBjYzIKICt7CiArICBzdHJ1Y3QgaW5mbGlzdF9lbnRyeSAq cDsKICsKLSsgIGZvciAocCA9IGluZmVyaW9yX2xpc3Q7IHAgIT0gTlVMTDsgcCA9IHAtPm5leHQp CisrICBmb3IgKHAgPSBnZGJweV9pbmZlcmlvcl9saXN0OyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0 KQogKyAgICBpZiAocC0+aW5mX29iai0+aW5mZXJpb3ItPnBpZCA9PSBwaWQpCiArICAgICAgcmV0 dXJuIChQeU9iamVjdCAqKSBwLT5pbmZfb2JqOwogKwpAQCAtMTUxODksNyArMTAyMDksNyBAQCBp bmRleCAwMDAwMDAwLi41ZTkwY2MyCiArICBzdHJ1Y3QgdGhyZWFkbGlzdF9lbnRyeSAqcTsKICsK ICsgIHBpZCA9IFBJREdFVCAocHRpZCk7Ci0rICBmb3IgKHAgPSBpbmZlcmlvcl9saXN0OyBwICE9 IE5VTEw7IHAgPSBwLT5uZXh0KQorKyAgZm9yIChwID0gZ2RicHlfaW5mZXJpb3JfbGlzdDsgcCAh PSBOVUxMOyBwID0gcC0+bmV4dCkKICsgICAgaWYgKHAtPmluZl9vYmotPmluZmVyaW9yLT5waWQg PT0gcGlkKQogKyAgICAgIGZvciAocSA9IHAtPmluZl9vYmotPnRocmVhZHM7IHEgIT0gTlVMTDsg cSA9IHEtPm5leHQpCiArCWlmIChwdGlkX2VxdWFsIChxLT50aHJlYWRfb2JqLT50aHJlYWQtPnB0 aWQsIHB0aWQpKQpAQCAtMTUyMDUsMTkgKzEwMjI1LDIyIEBAIGluZGV4IDAwMDAwMDAuLjVlOTBj YzIKICtzdGF0aWMgdm9pZAogK2FkZF90aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7CisrICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cDsKICsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmo7CiArICBpbmZlcmlvcl9vYmpl Y3QgKmluZl9vYmo7CiArICBzdHJ1Y3QgdGhyZWFkbGlzdF9lbnRyeSAqZW50cnk7CiArCi0rICBz dGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlICgpOworKyAgLyogTm90ZSB0aGF0IHRoZSBhcmNoIGRv ZXMgbm90IG1hdHRlciBoZXJlLCBiZWNhdXNlIHdlIGNhbid0IHJ1bgorKyAgICAgYXJiaXRyYXJ5 IFB5dGhvbiBjb2RlLiAgQ2FsbGluZyBnZXRfY3VycmVudF9hcmNoIGhlcmUgd2lsbAorKyAgICAg Y3Jhc2guICAqLworKyAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52ICh0YXJnZXRfZ2RiYXJj aCwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICB0aHJlYWRfb2JqID0gY3JlYXRlX3RocmVhZF9v YmplY3QgKHRwKTsKICsgIGlmICghdGhyZWFkX29iaikKICsgICAgewogKyAgICAgIHdhcm5pbmcg KF8oIkNhbid0IGNyZWF0ZSBQeXRob24gSW5mZXJpb3JUaHJlYWQgb2JqZWN0LiIpKTsKICsgICAg ICBnZGJweV9wcmludF9zdGFjayAoKTsKLSsgICAgICBQeUdJTFN0YXRlX1JlbGVhc2UgKHN0YXRl KTsKKysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiArICAgICAgcmV0dXJuOwogKyAgICB9 CiArCkBAIC0xNTIzMCwxMyArMTAyNTMsMTMgQEAgaW5kZXggMDAwMDAwMC4uNWU5MGNjMgogKyAg aW5mX29iai0+dGhyZWFkcyA9IGVudHJ5OwogKyAgaW5mX29iai0+bnRocmVhZHMrKzsKICsKLSsg IFB5R0lMU3RhdGVfUmVsZWFzZSAoc3RhdGUpOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwog K30KICsKICtzdGF0aWMgdm9pZAogK2RlbGV0ZV90aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhyZWFk X2luZm8gKnRwLCBpbnQgaWdub3JlKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7Cisr ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICsgIGluZmVyaW9yX29iamVjdCAqaW5mX29iajsK ICsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmo7CiArICBzdHJ1Y3QgdGhyZWFkbGlzdF9lbnRy eSAqKmVudHJ5LCAqdG1wOwpAQCAtMTUyNTMsNyArMTAyNzYsNyBAQCBpbmRleCAwMDAwMDAwLi41 ZTkwY2MyCiArICBpZiAoISplbnRyeSkKICsgICAgcmV0dXJuOwogKwotKyAgc3RhdGUgPSBQeUdJ TFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1 cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICB0bXAgPSAqZW50cnk7CiAr ICB0bXAtPnRocmVhZF9vYmotPnRocmVhZCA9IE5VTEw7CkBAIC0xNTI2NSw3ICsxMDI4OCw3IEBA IGluZGV4IDAwMDAwMDAuLjVlOTBjYzIKICsgIHhmcmVlICh0bXApOwogKwogKwotKyAgUHlHSUxT dGF0ZV9SZWxlYXNlIChzdGF0ZSk7CisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiArfQogKwog K3N0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTM0Myw3ICsxMDM2Niw5IEBAIGluZGV4IDAwMDAwMDAu LjVlOTBjYzIKICsKICsgIC8qIFRoZSBsaXN0IGlzIGluIHJldmVyc2Ugb3JkZXIgb2YgaW5mZXJp b3IgYWdlIChpLmUuLCBuZXdlc3QgY29tZXMgZmlyc3QpLAogKyAgICAgaXMgdGhpcyBhIHByb2Js ZW0/ICAqLwotKyAgZm9yIChpID0gMCwgZW50cnkgPSBpbmZlcmlvcl9saXN0OyBpIDwgbmluZmVy aW9yczsgaSsrLCBlbnRyeSA9IGVudHJ5LT5uZXh0KQorKyAgZm9yIChpID0gMCwgZW50cnkgPSBn ZGJweV9pbmZlcmlvcl9saXN0OworKyAgICAgICBpIDwgbmluZmVyaW9yczsKKysgICAgICAgaSsr LCBlbnRyeSA9IGVudHJ5LT5uZXh0KQogKyAgICB7CiArICAgICAgUHlfSU5DUkVGIChlbnRyeS0+ aW5mX29iaik7CiArICAgICAgUHlUdXBsZV9TRVRfSVRFTSAodHVwbGUsIGksIChQeU9iamVjdCAq KSBlbnRyeS0+aW5mX29iaik7CkBAIC0xNTc2NywxMCArMTA3OTIsMTAgQEAgaW5kZXggMDAwMDAw MC4uNWU5MGNjMgogKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiSW5mZXJpb3Ii LAogKwkJICAgICAgKFB5T2JqZWN0ICopICZpbmZlcmlvcl9vYmplY3RfdHlwZSk7CiArCi0rICBp bmZlcmlvcl9saXN0ID0gTlVMTDsKKysgIGdkYnB5X2luZmVyaW9yX2xpc3QgPSBOVUxMOwogKyAg bmluZmVyaW9ycyA9IDA7CiArCi0rICBvYnNlcnZlcl9hdHRhY2hfbmV3X2luZmVyaW9yIChhZGRf aW5mZXJpb3Jfb2JqZWN0KTsKKysgIG9ic2VydmVyX2F0dGFjaF9pbmZlcmlvcl9hcHBlYXJlZCAo YWRkX2luZmVyaW9yX29iamVjdCk7CiArICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3JfZXhpdCAo ZGVsZXRlX2luZmVyaW9yX29iamVjdCk7CiArICBvYnNlcnZlcl9hdHRhY2hfbmV3X3RocmVhZCAo YWRkX3RocmVhZF9vYmplY3QpOwogKyAgb2JzZXJ2ZXJfYXR0YWNoX3RocmVhZF9leGl0IChkZWxl dGVfdGhyZWFkX29iamVjdCk7CkBAIC0xNzA5MiwxOSArMTIxMTcsMTEgQEAgaW5kZXggMDAwMDAw MC4uMWY1OTFhOAogKyAgUHlUeXBlX0dlbmVyaWNOZXcJCSAgLyogdHBfbmV3ICovCiArfTsKIGRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMgYi9nZGIvcHl0aG9uL3B5LXBy ZXR0eXByaW50LmMKLWluZGV4IDVkNjk2YzguLmE2MzQ4YmEgMTAwNjQ0CitpbmRleCAxOTNmOTdj Li4yZjJiMzY1IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiArKysg Yi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLUBAIC0xMjEsNiArMTIxLDcgQEAgZmluZF9w cmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnZhbHVlKQotICAgCi0gICByZXR1cm4gZnVuY3Rpb247 Ci0gfQotKwotIC8qIFByZXR0eS1wcmludCBhIHNpbmdsZSB2YWx1ZSwgdmlhIHRoZSBwcmludGVy IG9iamVjdCBQUklOVEVSLgotICAgIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLCBh IFB5T2JqZWN0IGNvbnRhaW5pbmcgdGhlIHN0cmluZwotICAgIGlzIHJldHVybmVkLiAgT3RoZXJ3 aXNlLCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlLAotQEAgLTE0MSwxMCArMTQyLDE1 IEBAIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpwcmludGVyLCBzdHJ1Y3QgdmFs dWUgKipvdXRfdmFsdWUpCi0gCSAgaWYgKCEgZ2RicHlfaXNfc3RyaW5nIChyZXN1bHQpKQorQEAg LTE0MywxMCArMTQzLDE1IEBAIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpwcmlu dGVyLCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCisgCSAgaWYgKCEgZ2RicHlfaXNfc3RyaW5n IChyZXN1bHQpICYmICEgZ2RicHlfaXNfbGF6eV9zdHJpbmcgKHJlc3VsdCkpCiAgCSAgICB7CiAg CSAgICAgICpvdXRfdmFsdWUgPSBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9uIChyZXN1bHQpOwog LQkgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQgKCkpCkBAIC0xNzEyMyw3ICsxMjE0MCw3IEBAIGlu ZGV4IDVkNjk2YzguLmE2MzQ4YmEgMTAwNjQ0CiAgCSAgICB9CiAgCX0KICAgICAgfQotQEAgLTU1 NiwxNCArNTYyLDcgQEAgZ2RicHlfZ2V0X3Zhcm9ial9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHZh bHVlICp2YWx1ZSkKK0BAIC02MDQsMTQgKzYwOSw3IEBAIGdkYnB5X2dldF92YXJvYmpfcHJldHR5 X3ByaW50ZXIgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpCiAgewogICAgUHlPYmplY3QgKnZhbF9vYmo7 CiAgICBQeU9iamVjdCAqcHJldHR5X3ByaW50ZXIgPSBOVUxMOwpAQCAtMTc4MDksNyArMTI4MjYs NyBAQCBpbmRleCAwMDAwMDAwLi44MzBlNTg2CiArICBzYWxfb2JqZWN0X2dldHNldAkJICAvKiB0 cF9nZXRzZXQgKi8KICt9OwogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIvZ2Ri L3B5dGhvbi9weS10eXBlLmMKLWluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0CitpbmRleCBh OTdjMTI1Li5hYzM2NmJiIDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS10eXBlLmMKICsrKyBi L2dkYi9weXRob24vcHktdHlwZS5jCiBAQCAtMjcsNiArMjcsOCBAQApAQCAtMTc4NDAsMTkgKzEy ODU3LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQKICBzdGF0aWMgUHlUeXBlT2Jq ZWN0IHR5cGVfb2JqZWN0X3R5cGU7CiAgCiAgLyogQSBGaWVsZCBvYmplY3QuICAqLwotQEAgLTE2 OSw2ICsxNzcsMTEgQEAgY29udmVydF9maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVs ZCkKLSAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nIChyZXN1bHQsICJhcnRpZmljaWFsIiwg YXJnKSA8IDApCi0gICAgIGdvdG8gZmFpbGFyZzsKLSAKLSsgIGFyZyA9IGZpZWxkIDwgVFlQRV9O X0JBU0VDTEFTU0VTICh0eXBlKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKLSsgIFB5X0lOQ1JFRiAo YXJnKTsKLSsgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nIChyZXN1bHQsICJpc19iYXNlX2Ns YXNzIiwgYXJnKSA8IDApCi0rICAgIGdvdG8gZmFpbGFyZzsKLSsKLSAgIGFyZyA9IFB5TG9uZ19G cm9tTG9uZyAoVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBmaWVsZCkpOwotICAgaWYgKCFhcmcp Ci0gICAgIGdvdG8gZmFpbDsKLUBAIC0zNjEsNyArMzc0LDcgQEAgdHlweV9nZXRfc2l6ZW9mIChQ eU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK0BAIC00MzQsNyArNDQyLDcgQEAgdHlweV9n ZXRfc2l6ZW9mIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKICB9CiAgCiAgc3RhdGlj IHN0cnVjdCB0eXBlICoKQEAgLTE3ODYxLDcgKzEyODY2LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUx MjI0OCAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IE5VTEw7CiAgICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci1AQCAtMzc1LDcgKzM4OCw3IEBAIHR5cHlf bG9va3VwX3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCitAQCAtNDQ4LDcgKzQ1Niw3IEBAIHR5 cHlfbG9va3VwX3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCiAgCXR5cGUgPSBsb29rdXBfZW51 bSAodHlwZV9uYW1lICsgNSwgTlVMTCk7CiAgICAgICAgZWxzZQogIAl0eXBlID0gbG9va3VwX3R5 cGVuYW1lIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoLApAQCAtMTc4NzAsNyArMTI4 NzUsNyBAQCBpbmRleCA1OTBkOTBhLi5mNTEyMjQ4IDEwMDY0NAogICAgICB9CiAgICBpZiAoZXhj ZXB0LnJlYXNvbiA8IDApCiAgICAgIHsKLUBAIC0zODksNyArNDAyLDggQEAgdHlweV9sb29rdXBf dHlwZW5hbWUgKGNoYXIgKnR5cGVfbmFtZSkKK0BAIC00NjIsNyArNDcwLDggQEAgdHlweV9sb29r dXBfdHlwZW5hbWUgKGNoYXIgKnR5cGVfbmFtZSkKICB9CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBl ICoKQEAgLTE3ODgwLDcgKzEyODg1LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQK ICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAgIGNoYXIgKnR5cGVfbmFtZTsKLUBAIC00MDQs NyArNDE4LDcgQEAgdHlweV9sb29rdXBfdHlwZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAq ZGVtYW5nbGVkKQorQEAgLTQ3Nyw3ICs0ODYsNyBAQCB0eXB5X2xvb2t1cF90eXBlIChzdHJ1Y3Qg ZGVtYW5nbGVfY29tcG9uZW50ICpkZW1hbmdsZWQpCiAgICAgICAgfHwgZGVtYW5nbGVkX3R5cGUg PT0gREVNQU5HTEVfQ09NUE9ORU5UX0NPTlNUCiAgICAgICAgfHwgZGVtYW5nbGVkX3R5cGUgPT0g REVNQU5HTEVfQ09NUE9ORU5UX1ZPTEFUSUxFKQogICAgICB7CkBAIC0xNzg4OSw3ICsxMjg5NCw3 IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0CiAgICAgICAgaWYgKCEgdHlwZSkKICAJ cmV0dXJuIE5VTEw7CiAgCi1AQCAtNDIyLDcgKzQzNiw3IEBAIHR5cHlfbG9va3VwX3R5cGUgKHN0 cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRlbWFuZ2xlZCkKK0BAIC00OTUsNyArNTA0LDcgQEAg dHlweV9sb29rdXBfdHlwZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVkKQog ICAgICB9CiAgCiAgICB0eXBlX25hbWUgPSBjcF9jb21wX3RvX3N0cmluZyAoZGVtYW5nbGVkLCAx MCk7CkBAIC0xNzg5OCw3ICsxMjkwMyw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0 CiAgICB4ZnJlZSAodHlwZV9uYW1lKTsKICAKICAgIHJldHVybiB0eXBlOwotQEAgLTQzNiwxMCAr NDUwLDIzIEBAIHR5cHlfdGVtcGxhdGVfYXJndW1lbnQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncykKK0BAIC01MDksMTAgKzUxOCwyMyBAQCB0eXB5X3RlbXBsYXRlX2FyZ3VtZW50IChQ eU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiAgICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9u ZW50ICpkZW1hbmdsZWQ7CiAgICBjb25zdCBjaGFyICplcnI7CiAgICBzdHJ1Y3QgdHlwZSAqYXJn dHlwZTsKQEAgLTE3OTIzLDcgKzEyOTI4LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2 NDQKICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKICAgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9SRUYpCiAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSk7Ci1AQCAtNDgyLDcgKzUwOSw3IEBAIHR5cHlfdGVtcGxhdGVfYXJn dW1lbnQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK0BAIC01NTUsNyArNTc3LDcg QEAgdHlweV90ZW1wbGF0ZV9hcmd1bWVudCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQogICAgICAgIHJldHVybiBOVUxMOwogICAgICB9CiAgCkBAIC0xNzkzMiw3ICsxMjkzNyw3IEBA IGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0CiAgICBpZiAoISBhcmd0eXBlKQogICAgICBy ZXR1cm4gTlVMTDsKICAKLUBAIC01MjQsOCArNTUxLDU5IEBAIHR5cHlfc3RyIChQeU9iamVjdCAq c2VsZikKK0BAIC01OTcsOCArNjE5LDU5IEBAIHR5cHlfc3RyIChQeU9iamVjdCAqc2VsZikKICAK ICAMCiAgCkBAIC0xNzk5Miw3ICsxMjk5Nyw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAw NjQ0CiAgc3RhdGljIHZvaWQKICBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCB2b2lkICpkYXR1bSkKICB7Ci1AQCAtNTQzLDEyICs2MjEsMTMgQEAgc2F2ZV9vYmpm aWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCitAQCAtNjE2 LDEyICs2ODksMTMgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZGF0dW0pCiAgICAgIHsKICAgICAgICB0eXBlX29iamVjdCAqbmV4dCA9IG9iai0+ bmV4dDsKICAKQEAgLTE4MDEwLDcgKzEzMDE1LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAx MDA2NDQKICAKICAgICAgICBvYmogPSBuZXh0OwogICAgICB9Ci1AQCAtNTU5LDQxICs2MzgsMjUg QEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0 dW0pCitAQCAtNjMyLDQxICs3MDYsMjUgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgfQogIAogIHN0YXRpYyB2b2lkCkBAIC0xODA2 NCw3ICsxMzA2OSw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0CiAgfQogIAogIC8q IENyZWF0ZSBhIG5ldyBUeXBlIHJlZmVycmluZyB0byBUWVBFLiAgKi8KLUBAIC02MDQsNyArNjY3 LDEwIEBAIHR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTY3Nyw3 ICs3MzUsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgCiAg ICB0eXBlX29iaiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBl KTsKICAgIGlmICh0eXBlX29iaikKQEAgLTE4MDc2LDcgKzEzMDgxLDcgQEAgaW5kZXggNTkwZDkw YS4uZjUxMjI0OCAxMDA2NDQKICAKICAgIHJldHVybiAoUHlPYmplY3QgKikgdHlwZV9vYmo7CiAg fQotQEAgLTYyMywxNCArNjg5LDI4IEBAIHR5cGVfb2JqZWN0X3RvX3R5cGUgKFB5T2JqZWN0ICpv YmopCitAQCAtNjk2LDE0ICs3NTcsMjggQEAgdHlwZV9vYmplY3RfdG9fdHlwZSAoUHlPYmplY3Qg Km9iaikKICBQeU9iamVjdCAqCiAgZ2RicHlfbG9va3VwX3R5cGUgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogIHsKQEAgLTE4MTA4LDcgKzEzMTEzLDcgQEAg aW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQKICAgIGlmICghIHR5cGUpCiAgICAgIHJldHVy biBOVUxMOwogIAotQEAgLTY2NCw2ICs3NDQsOCBAQCBnZGJweV9pbml0aWFsaXplX3R5cGVzICh2 b2lkKQorQEAgLTczNyw2ICs4MTIsOCBAQCBnZGJweV9pbml0aWFsaXplX3R5cGVzICh2b2lkKQog IAogICAgUHlfSU5DUkVGICgmZmllbGRfb2JqZWN0X3R5cGUpOwogICAgUHlNb2R1bGVfQWRkT2Jq ZWN0IChnZGJfbW9kdWxlLCAiRmllbGQiLCAoUHlPYmplY3QgKikgJmZpZWxkX29iamVjdF90eXBl KTsKQEAgLTE4MTE4LDcgKzEzMTIzLDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQK ICAKICAMCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS11dGlscy5jIGIvZ2RiL3B5dGhvbi9w eS11dGlscy5jCi1pbmRleCA0OWMwNDM3Li44NGE0NzZlIDEwMDY0NAoraW5kZXggNGNjZjk3Zi4u ODdjZGU3MyAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktdXRpbHMuYwogKysrIGIvZ2RiL3B5 dGhvbi9weS11dGlscy5jCiBAQCAtMTksNiArMTksNyBAQApAQCAtMTgxNzksNyArMTMxODQsNyBA QCBpbmRleCA0OWMwNDM3Li44NGE0NzZlIDEwMDY0NAogKyAgcmV0dXJuIDE7CiArfQogZGlmZiAt LWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotaW5k ZXggMDE0NjU5My4uYjgyZmNiNiAxMDA2NDQKK2luZGV4IGE3OTI4MTkuLmJkYWM4MGUgMTAwNjQ0 CiAtLS0gYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKICsrKyBiL2dkYi9weXRob24vcHktdmFsdWUu YwogQEAgLTI1LDYgKzI1LDcgQEAKQEAgLTE4MjAxLDcgKzEzMjA2LDcgQEAgaW5kZXggMDE0NjU5 My4uYjgyZmNiNiAxMDA2NDQKICAjZGVmaW5lIGJ1aWx0aW5fdHlwZV9weWJvb2wgXAogICAgbGFu Z3VhZ2VfYm9vbF90eXBlIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoKQogIAotQEAg LTkxMyw3ICs5MTgsMzQgQEAgY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAoUHlPYmplY3QgKm9i aikKK0BAIC05NDUsNyArOTUwLDM0IEBAIGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gKFB5T2Jq ZWN0ICpvYmopCiAgCXsKICAJICBMT05HRVNUIGwgPSBQeUxvbmdfQXNMb25nTG9uZyAob2JqKTsK ICAKQEAgLTE4MjM3LDcgKzEzMjQyLDcgQEAgaW5kZXggMDE0NjU5My4uYjgyZmNiNiAxMDA2NDQK ICAJICAgIHZhbHVlID0gdmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGluX3R5cGVfcHlsb25nLCBs KTsKICAJfQogICAgICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sgKG9iaikpCi1AQCAtOTcyLDYg KzEwMDQsMjUgQEAgZ2RicHlfaGlzdG9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQorQEAgLTEwMTEsNiArMTA0MywyNSBAQCBnZGJweV9oaXN0b3J5IChQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MpCiAgICByZXR1cm4gdmFsdWVfdG9fdmFsdWVfb2JqZWN0IChyZXNfdmFs KTsKICB9CiAgCkBAIC0xODI2Myw3ICsxMzI2OCw3IEBAIGluZGV4IDAxNDY1OTMuLmI4MmZjYjYg MTAwNjQ0CiAgdm9pZAogIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQogIHsKLUBAIC05 ODIsNiArMTAzMyw4IEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQorQEAgLTEwMjEs NiArMTA3Miw4IEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQogICAgUHlNb2R1bGVf QWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmplY3QgKikgJnZhbHVlX29iamVj dF90eXBlKTsKICAKICAgIHZhbHVlc19pbl9weXRob24gPSBOVUxMOwpAQCAtMTgyNzMsMTAgKzEz Mjc4LDEwIEBAIGluZGV4IDAxNDY1OTMuLmI4MmZjYjYgMTAwNjQ0CiAgCiAgDAogZGlmZiAtLWdp dCBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCi1pbmRleCA2N2E3OGFmLi40NzY2MmQ5IDEwMDY0NAoraW5kZXggOTE5NmYwOC4uNTIz MGE4YyAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKICsrKyBiL2dk Yi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLUBAIC02MSwzMyArNjEsNzYgQEAgdHlwZWRlZiBp bnQgUHlfc3NpemVfdDsKK0BAIC02MSwzNiArNjEsNzkgQEAgdHlwZWRlZiBpbnQgUHlfc3NpemVf dDsKICAjZGVmaW5lIFB5RXZhbF9SZWxlYXNlTG9jaygpIDAKICAjZW5kaWYKICAKQEAgLTE4MzEy LDYgKzEzMzE3LDggQEAgaW5kZXggNjdhNzhhZi4uNDc2NjJkOSAxMDA2NDQKICBQeU9iamVjdCAq Z2RicHlfc2VsZWN0ZWRfZnJhbWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CiAr UHlPYmplY3QgKmdkYnB5X2Jsb2NrX2Zvcl9wYyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICph cmdzKTsKICBQeU9iamVjdCAqZ2RicHlfbG9va3VwX3R5cGUgKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKKyBQeU9iamVjdCAqZ2RicHlfY3JlYXRlX2xhenlf c3RyaW5nX29iamVjdCAoQ09SRV9BRERSIGFkZHJlc3MsIGxvbmcgbGVuZ3RoLAorIAkJCQkJICAg Y29uc3QgY2hhciAqZW5jb2RpbmcsIHN0cnVjdCB0eXBlICp0eXBlKTsKICtQeU9iamVjdCAqZ2Ri cHlfaW5mZXJpb3JzIChQeU9iamVjdCAqdW51c2VkLCBQeU9iamVjdCAqdW51c2VkMik7CiArUHlP YmplY3QgKmdkYnB5X3NlbGVjdGVkX3RocmVhZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICph cmdzKTsKICAKQEAgLTE4MzQ3LDEzICsxMzM1NCwxNCBAQCBpbmRleCA2N2E3OGFmLi40NzY2MmQ5 IDEwMDY0NAogK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9ibG9ja3MgKHZvaWQpOwogIHZvaWQgZ2Ri cHlfaW5pdGlhbGl6ZV9mdW5jdGlvbnMgKHZvaWQpOwogIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9v YmpmaWxlICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfbGF6eV9zdHJpbmcgKHZvaWQp OwogK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9wYXJhbWV0ZXJzICh2b2lkKTsKICt2b2lkIGdkYnB5 X2luaXRpYWxpemVfdGhyZWFkICh2b2lkKTsKICt2b2lkIGdkYnB5X2luaXRpYWxpemVfaW5mZXJp b3IgKHZvaWQpOwogIAogIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcHlfZGVjcmVmIChQ eU9iamVjdCAqcHkpOwogIAotQEAgLTk3LDYgKzE0MCwxMiBAQCBzdHJ1Y3QgY2xlYW51cCAqZW5z dXJlX3B5dGhvbl9lbnYgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTEwMCw2ICsxNDMs MTIgQEAgc3RydWN0IGNsZWFudXAgKmVuc3VyZV9weXRob25fZW52IChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKICBleHRlcm4gc3RydWN0IGdkYmFyY2ggKnB5dGhvbl9nZGJhcmNoOwogIGV4dGVy biBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG9uX2xhbmd1YWdlOwogIApAQCAtMTgz NjYsNyArMTMzNzQsNyBAQCBpbmRleCA2N2E3OGFmLi40NzY2MmQ5IDEwMDY0NAogIC8qIFVzZSB0 aGlzIGFmdGVyIGEgVFJZX0VYQ0VQVCB0byB0aHJvdyB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uCiAg ICAgZXhjZXB0aW9uLiAgKi8KICAjZGVmaW5lIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OKEV4Y2Vw dGlvbikJCQkJXAotQEAgLTEwNyw2ICsxNTYsMTkgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBsYW5n dWFnZV9kZWZuICpweXRob25fbGFuZ3VhZ2U7CitAQCAtMTEwLDYgKzE1OSwxOSBAQCBleHRlcm4g Y29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5ndWFnZTsKICAJCQkgICAgICIl cyIsIEV4Y2VwdGlvbi5tZXNzYWdlKTsJCQlcCiAgICAgIH0gd2hpbGUgKDApCiAgCkBAIC0xODM4 Niw5ICsxMzM5NCw5IEBAIGluZGV4IDY3YTc4YWYuLjQ3NjYyZDkgMTAwNjQ0CiAgCiAgdm9pZCBn ZGJweV9wcmludF9zdGFjayAodm9pZCk7CiAgCi1AQCAtMTE4LDE3ICsxODAsMjIgQEAgY2hhciAq cHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoUHlPYmplY3QgKm9iaik7Ci0gUHlPYmplY3Qg KnRhcmdldF9zdHJpbmdfdG9fdW5pY29kZSAoY29uc3QgZ2RiX2J5dGUgKnN0ciwgaW50IGxlbmd0 aCk7Ci0gaW50IGdkYnB5X2lzX3N0cmluZyAoUHlPYmplY3QgKm9iaik7CitAQCAtMTI1LDE3ICsx ODcsMjIgQEAgZ2RiX2J5dGUgKmdkYnB5X2V4dHJhY3RfbGF6eV9zdHJpbmcgKFB5T2JqZWN0ICpz dHJpbmcsCisgCQkJCSAgICAgc3RydWN0IHR5cGUgKipzdHJfdHlwZSwgCisgCQkJCSAgICAgbG9u ZyAqbGVuZ3RoLCBjaGFyICoqZW5jb2RpbmcpOwogIAogK2ludCBnZGJweV9pc192YWx1ZV9vYmpl Y3QgKFB5T2JqZWN0ICpvYmopOwogKwpAQCAtMTg0MTEsNyArMTM0MTksNyBAQCBpbmRleCA2N2E3 OGFmLi40NzY2MmQ5IDEwMDY0NAogIAogICNlbmRpZiAvKiBHREJfUFlUSE9OX0lOVEVSTkFMX0gg Ki8KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24u YwotaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKK2luZGV4IDgyNzM3MmMuLjE3MWNkNWIg MTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCiArKysgYi9nZGIvcHl0aG9uL3B5dGhv bi5jCiBAQCAtMjcsNiArMjcsNyBAQApAQCAtMTg1MTAsNyArMTM1MTgsNyBAQCBpbmRleCAyNTRi ZDI4Li41YTJhOWFlIDEwMDY0NAogIH0KICAKICAvKiBBIFB5dGhvbiBmdW5jdGlvbiB3aGljaCBl dmFsdWF0ZXMgYSBzdHJpbmcgdXNpbmcgdGhlIGdkYiBDTEkuICAqLwotQEAgLTMxOSw2ICszMjcs MjMzIEBAIGV4ZWN1dGVfZ2RiX2NvbW1hbmQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn cykKK0BAIC0zMjMsNiArMzMxLDEwNSBAQCBleGVjdXRlX2dkYl9jb21tYW5kIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpCiAgICBQeV9SRVRVUk5fTk9ORTsKICB9CiAgCkBAIC0xODUy Nyw3ICsxMzUzNSw3IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiArICBpZiAoIVB5 QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJLIiwgJnBjKSkKICsgICAgcmV0dXJuIE5VTEw7CiArCi0r ICBzb25hbWUgPSBzb2xpYl9uYW1lX2Zyb21fYWRkcmVzcyAocGMpOworKyAgc29uYW1lID0gc29s aWJfbmFtZV9mcm9tX2FkZHJlc3MgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwgcGMpOwogKyAgaWYg KHNvbmFtZSkKICsgICAgc3RyX29iaiA9IFB5U3RyaW5nX0RlY29kZSAoc29uYW1lLCBzdHJsZW4g KHNvbmFtZSksIGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7CiArICBlbHNlCkBAIC0xODYxMywyOCAr MTM2MjEsMTMgQEAgaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKICsgIFB5X1JFVFVSTl9O T05FOwogK30KICsKLSsvKiBQYXJzZSBhIHN0cmluZyBhbmQgZXZhbHVhdGUgaXQgYXMgYW4gZXhw cmVzc2lvbi4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoKLStnZGJweV9wYXJzZV9hbmRfZXZhbCAo UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIGNoYXIgKmV4cHJfc3RyOwot KyAgc3RydWN0IHZhbHVlICpyZXN1bHQgPSBOVUxMOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9l eGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAicyIs ICZleHByX3N0cikpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQs IFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IHBhcnNlX2FuZF9ldmFs IChleHByX3N0cik7Ci0rICAgIH0KLSsgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQp OwotKwotKyAgcmV0dXJuIHZhbHVlX3RvX3ZhbHVlX29iamVjdCAocmVzdWx0KTsKLSt9Ci0rCi0r DAotKworIC8qIFBhcnNlIGEgc3RyaW5nIGFuZCBldmFsdWF0ZSBpdCBhcyBhbiBleHByZXNzaW9u LiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIGdkYnB5X3BhcnNlX2FuZF9ldmFsIChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitAQCAtMzQ1LDYgKzQ1MiwxMTQgQEAgZ2RicHlfcGFy c2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAKKyAMCisgCiAr LyogUG9zdGluZyBhbmQgaGFuZGxpbmcgZXZlbnRzLiAgKi8KICsKICsvKiBBIHNpbmdsZSBldmVu dC4gICovCkBAIC0xODY2MSwxMSArMTM2NTQsMTEgQEAgaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAx MDA2NDQKICtzdGF0aWMgdm9pZAogK2dkYnB5X3J1bl9ldmVudHMgKGludCBlcnIsIGdkYl9jbGll bnRfZGF0YSBpZ25vcmUpCiArewotKyAgUHlHSUxTdGF0ZV9TVEFURSBzdGF0ZTsKKysgIHN0cnVj dCBjbGVhbnVwICpjbGVhbnVwOwogKyAgY2hhciBidWZmZXJbMTAwXTsKICsgIGludCByOwogKwot KyAgc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBlbnN1cmVfcHl0 aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICAv KiBKdXN0IHJlYWQgd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBmZC4gIEl0IGlzIHJlbGF0 aXZlbHkKICsgICAgIGhhcm1sZXNzIGlmIHRoZXJlIGFyZSBhbnkgYnl0ZXMgbGVmdCBvdmVyLiAg Ki8KQEAgLTE4Njg3LDcgKzEzNjgwLDcgQEAgaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQK ICsgICAgICB4ZnJlZSAoaXRlbSk7CiArICAgIH0KICsKLSsgIFB5R0lMU3RhdGVfUmVsZWFzZSAo c3RhdGUpOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwogK30KICsKICsvKiBTdWJtaXQgYW4g ZXZlbnQgdG8gdGhlIGdkYiB0aHJlYWQuICAqLwpAQCAtMTg3NDEsMTAgKzEzNzM0LDEyIEBAIGlu ZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiArICAgIH0KICt9CiArCi0gDAotIAorKwwKKysK ICAvKiBQcmludGluZy4gICovCi1AQCAtMzU3LDYgKzU5Miw2OSBAQCBnZGJweV9wcmludF9zdGFj ayAodm9pZCkKKyAKKyAvKiBBIHB5dGhvbiBmdW5jdGlvbiB0byB3cml0ZSBhIHNpbmdsZSBzdHJp bmcgdXNpbmcgZ2RiJ3MgZmlsdGVyZWQKK0BAIC0zODEsNiArNTk2LDY3IEBAIGdkYnB5X3ByaW50 X3N0YWNrICh2b2lkKQogIAogIAwKICAKQEAgLTE4Nzc4LDEwICsxMzc3Myw5IEBAIGluZGV4IDI1 NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiArcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFy ICoqYXJndikKICt7CiArICBGSUxFICppbnB1dDsKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7 CiArCiArICAvKiBXZSBuZXZlciBmcmVlIHRoaXMsIHNpbmNlIHdlIHBsYW4gdG8gZXhpdCBhdCB0 aGUgZW5kLiAgKi8KLSsgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUgKCk7CisrICBlbnN1cmVf cHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiAr ICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOwogKyAgUHlTeXNfU2V0QXJndiAoYXJnYyAtIDEs IGFyZ3YgKyAxKTsKQEAgLTE4Nzk5LDE0ICsxMzc5MywxMyBAQCBpbmRleCAyNTRiZDI4Li41YTJh OWFlIDEwMDY0NAogK3ZvaWQKICtzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqc3RyZWFtLCBj aGFyICpmaWxlKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7Ci0rCi0rICBzdGF0ZSA9 IFB5R0lMU3RhdGVfRW5zdXJlICgpOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CiArCisr ICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJl bnRfbGFuZ3VhZ2UpOwogKyAgUHlSdW5fU2ltcGxlRmlsZSAoc3RyZWFtLCBmaWxlKTsKICsKICsg IGZjbG9zZSAoc3RyZWFtKTsKLSsgIFB5R0lMU3RhdGVfUmVsZWFzZSAoc3RhdGUpOworKyAgZG9f Y2xlYW51cHMgKGNsZWFudXApOwogK30KICsKICsMCkBAIC0xODgxNCw3ICsxMzgwNyw3IEBAIGlu ZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiAgLyogVGhlICJjdXJyZW50IiBvYmpmaWxlLiAg VGhpcyBpcyBzZXQgd2hlbiBnZGIgZGV0ZWN0cyB0aGF0IGEgbmV3CiAgICAgb2JqZmlsZSBoYXMg YmVlbiBsb2FkZWQuICBJdCBpcyBvbmx5IHNldCBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgY2FsbAog ICAgIHRvIGdkYnB5X25ld19vYmpmaWxlOyBpdCBpcyBOVUxMIGF0IG90aGVyIHRpbWVzLiAgKi8K LUBAIC01MDEsNiArNzk5LDEzIEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChz dHJ1Y3QgY29tbWFuZF9saW5lICpjbWQpCitAQCAtNTI1LDYgKzgwMSwxMyBAQCBldmFsX3B5dGhv bl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqY21kKQogICAgZXJy b3IgKF8oIlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvcHkgb2Yg R0RCLiIpKTsKICB9CiAgCkBAIC0xODgyOCw3ICsxMzgyMSw3IEBAIGluZGV4IDI1NGJkMjguLjVh MmE5YWUgMTAwNjQ0CiAgI2VuZGlmIC8qIEhBVkVfUFlUSE9OICovCiAgCiAgDAotQEAgLTU5Miwx MyArODk3LDI3IEBAIEVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBj b2RlIHdoZW4gYW4gb2JqZWN0IGlzIG9wZW5lZC4iKSwKK0BAIC02MTYsMTQgKzg5OSwyOCBAQCBF bmFibGVzIG9yIGRpc2FibGVzIGF1dG8tbG9hZGluZyBvZiBQeXRob24gY29kZSB3aGVuIGFuIG9i amVjdCBpcyBvcGVuZWQuIiksCiAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudCAoZ2RiX21v ZHVsZSwgIlZFUlNJT04iLCAoY2hhciopIHZlcnNpb24pOwogICAgUHlNb2R1bGVfQWRkU3RyaW5n Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJIT1NUX0NPTkZJRyIsIChjaGFyKikgaG9zdF9uYW1lKTsK ICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAiVEFSR0VUX0NPTkZJ RyIsIChjaGFyKikgdGFyZ2V0X25hbWUpOwpAQCAtMTg4NTAsMTMgKzEzODQzLDE0IEBAIGluZGV4 IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiAgICBnZGJweV9pbml0aWFsaXplX3R5cGVzICgpOwog KyAgZ2RicHlfaW5pdGlhbGl6ZV9wYXJhbWV0ZXJzICgpOwogICAgZ2RicHlfaW5pdGlhbGl6ZV9v YmpmaWxlICgpOworICAgZ2RicHlfaW5pdGlhbGl6ZV9sYXp5X3N0cmluZyAoKTsKICsgIGdkYnB5 X2luaXRpYWxpemVfdGhyZWFkICgpOwogKyAgZ2RicHlfaW5pdGlhbGl6ZV9pbmZlcmlvciAoKTsK ICsgIGdkYnB5X2luaXRpYWxpemVfZXZlbnRzICgpOwogIAogICAgUHlSdW5fU2ltcGxlU3RyaW5n ICgiaW1wb3J0IGdkYiIpOwogICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiZ2RiLnByZXR0eV9wcmlu dGVycyA9IFtdIik7Ci1AQCAtNjM0LDYgKzk1MywxNSBAQCBjbGFzcyBHZGJPdXRwdXRGaWxlOlxu XAorQEAgLTY1OSw2ICs5NTYsMTUgQEAgY2xhc3MgR2RiT3V0cHV0RmlsZTpcblwKICBcblwKICBz eXMuc3RkZXJyID0gR2RiT3V0cHV0RmlsZSgpXG5cCiAgc3lzLnN0ZG91dCA9IEdkYk91dHB1dEZp bGUoKVxuXApAQCAtMTg4NzIsNyArMTM4NjYsNyBAQCBpbmRleCAyNTRiZDI4Li41YTJhOWFlIDEw MDY0NAogICIpOwogIAogICAgLyogUmVsZWFzZSB0aGUgR0lMIHdoaWxlIGdkYiBydW5zLiAgKi8K LUBAIC02NTMsOSArOTgxLDE0IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQor QEAgLTY3OCw5ICs5ODQsMTQgQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9CiAg ICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCiAgICB7ICJleGVjdXRlIiwgZXhlY3V0 ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTLAogICAgICAiRXhlY3V0ZSBhIGdkYiBjb21tYW5k IiB9LApAQCAtMTg4ODcsNyArMTM4ODEsNyBAQCBpbmRleCAyNTRiZDI4Li41YTJhOWFlIDEwMDY0 NAogICAgeyAiZGVmYXVsdF92aXN1YWxpemVyIiwgZ2RicHlfZGVmYXVsdF92aXN1YWxpemVyLCBN RVRIX1ZBUkFSR1MsCiAgICAgICJGaW5kIHRoZSBkZWZhdWx0IHZpc3VhbGl6ZXIgZm9yIGEgVmFs dWUuIiB9LAogIAotQEAgLTY3Niw2ICsxMDA5LDM3IEBAIFJldHVybiBhIHN0cmluZyBleHBsYWlu aW5nIHVud2luZCBzdG9wIHJlYXNvbi4iIH0sCitAQCAtNzAxLDExICsxMDEyLDM5IEBAIFJldHVy biBhIHN0cmluZyBleHBsYWluaW5nIHVud2luZCBzdG9wIHJlYXNvbi4iIH0sCiAgICAgICJsb29r dXBfdHlwZSAobmFtZSBbLCBibG9ja10pIC0+IHR5cGVcblwKICBSZXR1cm4gYSBUeXBlIGNvcnJl c3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5hbWUuIiB9LAogIApAQCAtMTg5MTYsOSArMTM5MTAsMTEg QEAgaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKICsgICAgImluZmVyaW9ycyAoKSAtPiAo Z2RiLkluZmVyaW9yLCAuLi4pLlxuXAogK1JldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIGlu ZmVyaW9ycy4iIH0sCiArCi0rICB7ICJwYXJzZV9hbmRfZXZhbCIsIGdkYnB5X3BhcnNlX2FuZF9l dmFsLCBNRVRIX1ZBUkFSR1MsCi0rICAgICJQYXJzZSBhIHN0cmluZyBhcyBhbiBleHByZXNzaW9u LCBldmFsdWF0ZSBpdCwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIgfSwKLSsKKyAgIHsgInBhcnNl X2FuZF9ldmFsIiwgZ2RicHlfcGFyc2VfYW5kX2V2YWwsIE1FVEhfVkFSQVJHUywKKyAgICAgInBh cnNlX2FuZF9ldmFsIChTdHJpbmcpIC0+IFZhbHVlLlxuXAorIFBhcnNlIFN0cmluZyBhcyBhbiBl eHByZXNzaW9uLCBldmFsdWF0ZSBpdCwgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgVmFsdWUu IgorICAgfSwKKyAKICsgIHsgInBvc3RfZXZlbnQiLCBnZGJweV9wb3N0X2V2ZW50LCBNRVRIX1ZB UkFSR1MsCiArICAgICJQb3N0IGFuIGV2ZW50IGludG8gZ2RiJ3MgZXZlbnQgbG9vcC4iIH0sCiAr CkBAIC0xODkyNiw3ICsxMzkyMiw3IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiAg ICAgICJXcml0ZSBhIHN0cmluZyB1c2luZyBnZGIncyBmaWx0ZXJlZCBzdHJlYW0uIiB9LAogICAg eyAiZmx1c2giLCBnZGJweV9mbHVzaCwgTUVUSF9OT0FSR1MsCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKLWluZGV4IGU5NzAxODAuLmJiYjYx ODQgMTAwNjQ0CitpbmRleCBmMzU4MjdiLi4xYTViOWE4IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhv bi9weXRob24uaAogKysrIGIvZ2RiL3B5dGhvbi9weXRob24uaAogQEAgLTI0LDYgKzI0LDEwIEBA CkBAIC0xODk0MSw3ICsxMzkzNyw3IEBAIGluZGV4IGU5NzAxODAuLmJiYjYxODQgMTAwNjQ0CiAg CQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiBkaWZmIC0tZ2l0IGEvZ2Ri L3NjbS1sYW5nLmMgYi9nZGIvc2NtLWxhbmcuYwotaW5kZXggZGUzNDg5NC4uMDc1MThiMCAxMDA2 NDQKK2luZGV4IDFkMDVmOGEuLmUyMDE1YzQgMTAwNjQ0CiAtLS0gYS9nZGIvc2NtLWxhbmcuYwog KysrIGIvZ2RiL3NjbS1sYW5nLmMKIEBAIC0yMzMsNiArMjMzLDcgQEAgY29uc3Qgc3RydWN0IGV4 cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3NjbSA9CkBAIC0xODk1MiwxMjIgKzEzOTQ4LDEx IEBAIGluZGV4IGRlMzQ4OTQuLjA3NTE4YjAgMTAwNjQ0CiAgICBvcF9uYW1lX3N0YW5kYXJkLAog ICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKICAgIGV2YWx1YXRlX2V4cAotZGlmZiAtLWdp dCBhL2dkYi9zY20tdmFscHJpbnQuYyBiL2dkYi9zY20tdmFscHJpbnQuYwotaW5kZXggY2MzMzE5 YS4uZDBkNDcwMiAxMDA2NDQKLS0tLSBhL2dkYi9zY20tdmFscHJpbnQuYwotKysrIGIvZ2RiL3Nj bS12YWxwcmludC5jCi1AQCAtNjIsOSArNjIsOSBAQCBzY21faW5mZXJpb3JfcHJpbnQgKHN0cnVj dCB0eXBlICp0eXBlLCBMT05HRVNUIHZhbHVlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotICAg ICB7Ci0gICAgICAgLyogWFhYOiBTaG91bGQgd2UgY2FjaGUgdGhlc2Ugc3ltYm9scz8gICovCi0g ICAgICAgZ2RiX291dHB1dF9zeW0gPQotLQlsb29rdXBfc3ltYm9sX2dsb2JhbCAoImdkYl9vdXRw dXQiLCBOVUxMLCBOVUxMLCBWQVJfRE9NQUlOKTsKLSsJbG9va3VwX3N5bWJvbF9nbG9iYWwgKCJn ZGJfb3V0cHV0IiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0gICAgICAgZ2RiX291dHB1dF9sZW5fc3lt ID0KLS0JbG9va3VwX3N5bWJvbF9nbG9iYWwgKCJnZGJfb3V0cHV0X2xlbmd0aCIsIE5VTEwsIE5V TEwsIFZBUl9ET01BSU4pOwotKwlsb29rdXBfc3ltYm9sX2dsb2JhbCAoImdkYl9vdXRwdXRfbGVu Z3RoIiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0gCi0gICAgICAgaWYgKChnZGJfb3V0cHV0X3N5bSA9 PSBOVUxMKSB8fCAoZ2RiX291dHB1dF9sZW5fc3ltID09IE5VTEwpKQotIAlyZXQgPSAtMTsKLWRp ZmYgLS1naXQgYS9nZGIvc29saWItZGFyd2luLmMgYi9nZGIvc29saWItZGFyd2luLmMKLWluZGV4 IDhiOTZhNmYuLjk0MjhkOTIgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItZGFyd2luLmMKLSsrKyBi L2dkYi9zb2xpYi1kYXJ3aW4uYwotQEAgLTM4OSw3ICszODksNiBAQCBkYXJ3aW5fcmVsb2NhdGVf c2VjdGlvbl9hZGRyZXNzZXMgKHN0cnVjdCBzb19saXN0ICpzbywKLSBzdGF0aWMgc3RydWN0IHN5 bWJvbCAqCi0gZGFyd2luX2xvb2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSAJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJICBjb25zdCBjaGFyICpsaW5r YWdlX25hbWUsCi0gCQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgcmV0dXJu IE5VTEw7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXNwdS5jIGIvZ2RiL3NvbGliLXNwdS5jCi1p bmRleCAxOWUzMjEyLi45ZjA2ZmE5IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLXNwdS5jCi0rKysg Yi9nZGIvc29saWItc3B1LmMKLUBAIC0zMzQsMTYgKzMzNCwxMyBAQCBzcHVfYmZkX29wZW4gKGNo YXIgKnBhdGhuYW1lKQotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBzcHVfbG9va3VwX2xpYl9z eW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJICAgICAgIGNvbnN0IGNo YXIgKm5hbWUsCi0tCQkgICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJICAgICAg IGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBpZiAoYmZkX2dldF9hcmNoIChvYmpm aWxlLT5vYmZkKSA9PSBiZmRfYXJjaF9zcHUpCi0tICAgIHJldHVybiBsb29rdXBfZ2xvYmFsX3N5 bWJvbF9mcm9tX29iamZpbGUgKG9iamZpbGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0JCQkJCSAg ICAgIGRvbWFpbik7Ci0rICAgIHJldHVybiBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZp bGUgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7Ci0gCi0gICBpZiAoc3ZyNF9zb19vcHMubG9va3Vw X2xpYl9nbG9iYWxfc3ltYm9sICE9IE5VTEwpCi0tICAgIHJldHVybiBzdnI0X3NvX29wcy5sb29r dXBfbGliX2dsb2JhbF9zeW1ib2wgKG9iamZpbGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0JCQkJ CQkgZG9tYWluKTsKLSsgICAgcmV0dXJuIHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5 bWJvbCAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKLSAgIHJldHVybiBOVUxMOwotIH0KLSAKLWRp ZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwotaW5kZXggNmNm YWE4NS4uNjhhYWRjMCAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9z b2xpYi1zdnI0LmMKLUBAIC0xOTA4LDE1ICsxOTA4LDEzIEBAIHN0cnVjdCB0YXJnZXRfc29fb3Bz IHN2cjRfc29fb3BzOwotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBlbGZfbG9va3VwX2xpYl9z eW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJICAgICAgIGNvbnN0IGNo YXIgKm5hbWUsCi0tCQkgICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJICAgICAg IGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBpZiAob2JqZmlsZS0+b2JmZCA9PSBO VUxMCi0gICAgICB8fCBzY2FuX2R5bnRhZyAoRFRfU1lNQk9MSUMsIG9iamZpbGUtPm9iZmQsIE5V TEwpICE9IDEpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgcmV0dXJuIGxvb2t1cF9nbG9iYWxf c3ltYm9sX2Zyb21fb2JqZmlsZQotLQkJKG9iamZpbGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9t YWluKTsKLSsgIHJldHVybiBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKG9iamZp bGUsIG5hbWUsIGRvbWFpbik7Ci0gfQotIAotIGV4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUg X2luaXRpYWxpemVfc3ZyNF9zb2xpYjsgLyogLVdtaXNzaW5nLXByb3RvdHlwZXMgKi8KLWRpZmYg LS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCi1pbmRleCBhMmFkMGM0Li4zNTc0ZTYy IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtMTEyNywx MyArMTEyNywxMiBAQCBzaG93X2F1dG9fc29saWJfYWRkIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwg aW50IGZyb21fdHR5LAotIHN0cnVjdCBzeW1ib2wgKgotIHNvbGliX2dsb2JhbF9sb29rdXAgKGNv bnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJICAgICBjb25zdCBjaGFyICpuYW1lLAot LQkJICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3Bz ICh0YXJnZXRfZ2RiYXJjaCk7Ci0gCi0gICBpZiAob3BzLT5sb29rdXBfbGliX2dsb2JhbF9zeW1i b2wgIT0gTlVMTCkKLS0gICAgcmV0dXJuIG9wcy0+bG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChv YmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0rICAgIHJldHVybiBvcHMtPmxv b2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKLSAgIHJldHVy biBOVUxMOwotIH0KLSAKLWRpZmYgLS1naXQgYS9nZGIvc29saXN0LmggYi9nZGIvc29saXN0LmgK LWluZGV4IDYzYTZiYTAuLjAwNWU4ZjcgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saXN0LmgKLSsrKyBi L2dkYi9zb2xpc3QuaAotQEAgLTExNCw3ICsxMTQsNiBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcwot ICAgICAvKiBIb29rIGZvciBsb29raW5nIHVwIGdsb2JhbCBzeW1ib2xzIGluIGEgbGlicmFyeS1z cGVjaWZpYyB3YXkuICAqLwotICAgICBzdHJ1Y3Qgc3ltYm9sICogKCpsb29rdXBfbGliX2dsb2Jh bF9zeW1ib2wpIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQkgY29uc3Qg Y2hhciAqbmFtZSwKLS0JCQkJCQkgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJCSBj b25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotICAgICAvKiBHaXZlbiB0d28gc29fbGlzdCBv YmplY3RzLCBvbmUgZnJvbSB0aGUgR0RCIHRocmVhZCBsaXN0Ci1AQCAtMTQ2LDcgKzE0NSw2IEBA IGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqY3VycmVudF90YXJnZXRfc29fb3BzOwotIC8q IEhhbmRsZXIgZm9yIGxpYnJhcnktc3BlY2lmaWMgZ2xvYmFsIHN5bWJvbCBsb29rdXAgaW4gc29s aWIuYy4gICovCi0gc3RydWN0IHN5bWJvbCAqc29saWJfZ2xvYmFsX2xvb2t1cCAoY29uc3Qgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCSAgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkg ICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKLSAKLSAjZW5kaWYKIGRpZmYgLS1naXQgYS9nZGIvc29tcmVhZC5jIGIvZ2RiL3Nv bXJlYWQuYwotaW5kZXggMzZhMmIyOC4uNGQ1YmRhOSAxMDA2NDQKK2luZGV4IGM3YmVhYmEuLmUz MTE2NGMgMTAwNjQ0CiAtLS0gYS9nZGIvc29tcmVhZC5jCiArKysgYi9nZGIvc29tcmVhZC5jCi1A QCAtNDM1LDYgKzQzNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucyA9CitA QCAtNDMyLDYgKzQzMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucyA9CiAg ICBzb21fbmV3X2luaXQsCQkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBl bnRpcmUgc3ltdGFiICovCiAgICBzb21fc3ltZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQg aW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwogICAgc29tX3N5bWZpbGVfcmVh ZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KQEAgLTE5 MDc1LDQ2ICsxMzk2MCwxMSBAQCBpbmRleCAzNmEyYjI4Li40ZDViZGE5IDEwMDY0NAogICAgc29t X3N5bWZpbGVfZmluaXNoLAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVh bnVwICovCiAgICBzb21fc3ltZmlsZV9vZmZzZXRzLAkJLyogc3ltX29mZnNldHM6ICBUcmFuc2xh dGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24gKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50 cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCi1kaWZmIC0t Z2l0IGEvZ2RiL3NwdS10ZGVwLmMgYi9nZGIvc3B1LXRkZXAuYwotaW5kZXggN2U3YWI5Yy4uYTAx NGI3YSAxMDA2NDQKLS0tLSBhL2dkYi9zcHUtdGRlcC5jCi0rKysgYi9nZGIvc3B1LXRkZXAuYwot QEAgLTE4MzksNyArMTgzOSw3IEBAIHNwdV9jYXRjaF9zdGFydCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOwotICAgICAgIHN0cnVjdCBzeW10YWJf YW5kX2xpbmUgc2FsOwotIAotLSAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2Nr LCAibWFpbiIsIE5VTEwsIFZBUl9ET01BSU4pOwotKyAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGJsb2NrLCAibWFpbiIsIFZBUl9ET01BSU4pOwotICAgICAgIGlmIChzeW0pCi0gCXsK LSAJICBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCBvYmpmaWxlKTsKLWRpZmYgLS1naXQgYS9n ZGIvc3RhYnNyZWFkLmMgYi9nZGIvc3RhYnNyZWFkLmMKLWluZGV4IGU2MmJiMTUuLmFkNjU2OGUg MTAwNjQ0Ci0tLS0gYS9nZGIvc3RhYnNyZWFkLmMKLSsrKyBiL2dkYi9zdGFic3JlYWQuYwotQEAg LTMyMiw3ICszMjIsNyBAQCBkYnhfYWxsb2NfdHlwZSAoaW50IHR5cGVudW1zWzJdLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKLSAKLSAgIGlmICh0eXBlbnVtc1swXSA9PSAtMSkKLSAgICAgewot LSAgICAgIHJldHVybiAoYWxsb2NfdHlwZSAob2JqZmlsZSkpOwotKyAgICAgIHJldHVybiAoYWxs b2NfdHlwZSAob2JqZmlsZSwgTlVMTCkpOwotICAgICB9Ci0gCi0gICB0eXBlX2FkZHIgPSBkYnhf bG9va3VwX3R5cGUgKHR5cGVudW1zLCBvYmpmaWxlKTsKLUBAIC0zMzIsNyArMzMyLDcgQEAgZGJ4 X2FsbG9jX3R5cGUgKGludCB0eXBlbnVtc1syXSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0g ICAgICBXZSB3aWxsIGZpbGwgaXQgaW4gbGF0ZXIgaWYgd2UgZmluZCBvdXQgaG93LiAgKi8KLSAg IGlmICgqdHlwZV9hZGRyID09IDApCi0gICAgIHsKLS0gICAgICAqdHlwZV9hZGRyID0gYWxsb2Nf dHlwZSAob2JqZmlsZSk7Ci0rICAgICAgKnR5cGVfYWRkciA9IGFsbG9jX3R5cGUgKG9iamZpbGUs IE5VTEwpOwotICAgICB9Ci0gCi0gICByZXR1cm4gKCp0eXBlX2FkZHIpOwogZGlmZiAtLWdpdCBh L2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKLWluZGV4IDFjMzc4MDEuLjU5NGViMTYgMTAwNjQ0 CitpbmRleCA2ZTE5OGUwLi45NGEzZWY5IDEwMDY0NAogLS0tIGEvZ2RiL3N0YWNrLmMKICsrKyBi L2dkYi9zdGFjay5jCi1AQCAtMTMwOCwyNCArMTMwOCwyNCBAQCBiYWNrdHJhY2VfY29tbWFuZF8x IChjaGFyICpjb3VudF9leHAsIGludCBzaG93X2xvY2FscywgaW50IGZyb21fdHR5KQorQEAgLTEz MDksMjQgKzEzMDksMjQgQEAgYmFja3RyYWNlX2NvbW1hbmRfMSAoY2hhciAqY291bnRfZXhwLCBp bnQgc2hvd19sb2NhbHMsIGludCBmcm9tX3R0eSkKICAgIGVsc2UKICAgICAgY291bnQgPSAtMTsK ICAKQEAgLTE5MTU3LDM4ICsxNDAwNywxMSBAQCBpbmRleCAxYzM3ODAxLi41OTRlYjE2IDEwMDY0 NAogIAogICAgZm9yIChpID0gMCwgZmkgPSB0cmFpbGluZzsgZmkgJiYgY291bnQtLTsgaSsrLCBm aSA9IGdldF9wcmV2X2ZyYW1lIChmaSkpCiAgICAgIHsKLUBAIC0xNDczLDYgKzE0NzMsOCBAQCBw cmludF9ibG9ja19mcmFtZV9sb2NhbHMgKHN0cnVjdCBibG9jayAqYiwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lLAotIAljYXNlIExPQ19DT01QVVRFRDoKLSAJICBpZiAoU1lNQk9MX0lTX0FSR1VN RU5UIChzeW0pKQotIAkgICAgYnJlYWs7Ci0rCSAgaWYgKFNZTUJPTF9ET01BSU4gKHN5bSkgPT0g Q09NTU9OX0JMT0NLX0RPTUFJTikKLSsJICAgIGJyZWFrOwotIAkgIHZhbHVlc19wcmludGVkID0g MTsKLSAJICBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIHN5bSwgZnJhbWUsIHN0cmVh bSwgNCAqIG51bV90YWJzKTsKLSAJICBicmVhazsKIGRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5j IGIvZ2RiL3N5bWZpbGUuYwotaW5kZXggMjQ1ODIwMS4uYzMxYjcyYSAxMDA2NDQKK2luZGV4IDg5 Y2MwN2MuLmI3NTlmMTAgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltZmlsZS5jCiArKysgYi9nZGIvc3lt ZmlsZS5jCi1AQCAtOTIxLDYgKzkyMSwxNyBAQCBuZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgaW50IGFkZF9mbGFncykKLSAgIGNsZWFyX2NvbXBsYWludHMgKCZz eW1maWxlX2NvbXBsYWludHMsIDAsIGFkZF9mbGFncyAmIFNZTUZJTEVfVkVSQk9TRSk7Ci0gfQot IAotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdHJ1ZSBpZiBPQkpGSUxFIGhh cyBhbnkgZGVidWcKLSsgICBzeW1ib2xzLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0 aWMgaW50Ci0raGFzX2FueV9kZWJ1Z19zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK LSt7Ci0rICByZXR1cm4gKG9iamZpbGUtPnBzeW10YWJzIHx8IG9iamZpbGUtPnF1aWNrX2FkZHJt YXAKLSsJICB8fCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZQotKwkgICAgICAmJiAo b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZS0+cHN5bXRhYnMKLSsJCSAgfHwgb2JqZmls ZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZS0+cXVpY2tfYWRkcm1hcCkpKTsKLSt9Ci0rCi0gLyog UHJvY2VzcyBhIHN5bWJvbCBmaWxlLCBhcyBlaXRoZXIgdGhlIG1haW4gZmlsZSBvciBhcyBhIGR5 bmFtaWNhbGx5Ci0gICAgbG9hZGVkIGZpbGUuCi0gCi1AQCAtOTU4LDEzICs5NjksMTYgQEAgc3lt Ym9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAorQEAgLTk2OCwx MyArOTY4LDE2IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAq YWJmZCwKICAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBidXJwIGlmIHdlJ2QgYmUKICAgICAg IGludGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcgc3ltYm9scy4gICovCiAgCkBA IC0xOTIwNiw4ICsxNDAyOSw4IEBAIGluZGV4IDI0NTgyMDEuLmMzMWI3MmEgMTAwNjQ0CiArICAg IG9iamZpbGUtPmZsYWdzIHw9IE9CSkZfTUFJTjsKICAgIGRpc2NhcmRfY2xlYW51cHMgKG15X2Ns ZWFudXBzKTsKICAKLSAgIGlmIChhZGRycykKLUBAIC05OTcsNiArMTAxMSw4IEBAIHN5bWJvbF9m aWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKKyAgIC8qIFdlIGVpdGhl ciBjcmVhdGVkIGEgbmV3IG1hcHBlZCBzeW1ib2wgdGFibGUsIG1hcHBlZCBhbiBleGlzdGluZwor QEAgLTEwMDEsNiArMTAwNCw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNl dHMgKGJmZCAqYWJmZCwKICAKICAgIGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cpIHx8IHJlYWRu b3dfc3ltYm9sX2ZpbGVzKQogICAgICB7CkBAIC0xOTIxNiw3MCArMTQwMzksMjggQEAgaW5kZXgg MjQ1ODIwMS4uYzMxYjcyYSAxMDA2NDQKICAgICAgICBpZiAoZnJvbV90dHkgfHwgaW5mb192ZXJi b3NlKQogIAl7CiAgCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oImV4cGFuZGluZyB0byBmdWxsIHN5 bWJvbHMuLi4iKSk7Ci1AQCAtMTAxNSw3ICsxMDMxLDcgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhf YWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAgLyogSWYgdGhlIGZpbGUgaGFzIGl0cyBv d24gc3ltYm9sIHRhYmxlcyBpdCBoYXMgbm8gc2VwYXJhdGUgZGVidWcgaW5mby4KLSAgICAgIGAu ZHluc3ltJy9gLnN5bXRhYicgZ28gdG8gTVNZTUJPTFMsIGAuZGVidWdfaW5mbycgZ29lcyB0byBT WU1UQUJTL1BTWU1UQUJTLgotICAgICAgYC5nbnVfZGVidWdsaW5rJyBtYXkgbm8gbG9uZ2VyIGJl IHByZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCi0tICBpZiAob2JqZmlsZS0+ cHN5bXRhYnMgPT0gTlVMTCkKLSsgIGlmICghaGFzX2FueV9kZWJ1Z19zeW1ib2xzIChvYmpmaWxl KSkKLSAgICAgZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChvYmpmaWxlKTsK LSAgIGlmIChkZWJ1Z2ZpbGUpCi0gICAgIHsKLUBAIC0xMDM5LDkgKzEwNTUsMTAgQEAgc3ltYm9s X2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAgICAgIHhmcmVl IChkZWJ1Z2ZpbGUpOwotICAgICB9Ci0gCi0rICAvKiBoYXNfYW55X2RlYnVnX3N5bWJvbHMgaXMg bm90IGZ1bGx5IGNvbXBhdGlibGUgd2l0aCB0aGUgZm9ybWVyIGNhbGxzIHdoaWNoCi0rICAgICB3 b3VsZCBqdXN0IGJlIG5lZWRsZXNzbHkgZXhwZW5zaXZlIGhlcmUuICAqLwotICAgaWYgKChmcm9t X3R0eSB8fCBpbmZvX3ZlcmJvc2UpCi0tICAgICAgJiYgIW9iamZpbGVfaGFzX3BhcnRpYWxfc3lt Ym9scyAob2JqZmlsZSkKLS0gICAgICAmJiAhb2JqZmlsZV9oYXNfZnVsbF9zeW1ib2xzIChvYmpm aWxlKSkKLSsgICAgICAmJiAhaGFzX2FueV9kZWJ1Z19zeW1ib2xzIChvYmpmaWxlKSkKLSAgICAg ewotICAgICAgIHdyYXBfaGVyZSAoIiIpOwotICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCIo bm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQpLi4uIikpOwotQEAgLTI0MjIsMTQgKzI0MzksMTUg QEAgcmVyZWFkX3N5bWJvbHMgKHZvaWQpCi0gCSAgICAgICAgIHplcm8gaXMgT0sgc2luY2UgZGJ4 cmVhZC5jIGFsc28gZG9lcyB3aGF0IGl0IG5lZWRzIHRvIGRvIGlmCi0gCSAgICAgICAgIG9iamZp bGUtPmdsb2JhbF9wc3ltYm9scy5zaXplIGlzIDAuICAqLwotIAkgICAgICAoKm9iamZpbGUtPnNm LT5zeW1fcmVhZCkgKG9iamZpbGUsIDApOwotLQkgICAgICBpZiAoIW9iamZpbGVfaGFzX3BhcnRp YWxfc3ltYm9scyAob2JqZmlsZSkKLS0JCSAgJiYgIW9iamZpbGVfaGFzX2Z1bGxfc3ltYm9scyAo b2JqZmlsZSkpCi0rCSAgICAgIGlmICghaGFzX2FueV9kZWJ1Z19zeW1ib2xzIChvYmpmaWxlKSkK LSAJCXsKLSAJCSAgd3JhcF9oZXJlICgiIik7Ci0gCQkgIHByaW50Zl91bmZpbHRlcmVkIChfKCIo bm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQpXG4iKSk7Ci0gCQkgIHdyYXBfaGVyZSAoIiIpOwot IAkJfQotIAotKwkgICAgICBvYmpmaWxlLT5mbGFncyAmPSB+T0JKRl9TWU1UQUJTX1JFQUQ7Ci0r Ci0gCSAgICAgIC8qIFdlJ3JlIGRvbmUgcmVhZGluZyB0aGUgc3ltYm9sIGZpbGU7IGZpbmlzaCBv ZmYgY29tcGxhaW50cy4gICovCi0gCSAgICAgIGNsZWFyX2NvbXBsYWludHMgKCZzeW1maWxlX2Nv bXBsYWludHMsIDAsIDEpOwotIAotQEAgLTI3MjcsNyArMjc0NSw3IEBAIGFsbG9jYXRlX3N5bXRh YiAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIH0KLSAKLSBzdHJ1 Y3QgcGFydGlhbF9zeW10YWIgKgotLWFsbG9jYXRlX3BzeW10YWIgKGNoYXIgKmZpbGVuYW1lLCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSthbGxvY2F0ZV9wc3ltdGFiIChjb25zdCBjaGFyICpm aWxlbmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotICAgc3RydWN0IHBhcnRpYWxf c3ltdGFiICpwc3ltdGFiOwotIAotQEAgLTMwNDEsNyArMzA1OSw4IEBAIGFnYWluMjoKLSAKLSBz dHJ1Y3QgcGFydGlhbF9zeW10YWIgKgotIHN0YXJ0X3BzeW10YWJfY29tbW9uIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKLS0JCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKnNlY3Rpb25f b2Zmc2V0cywgY2hhciAqZmlsZW5hbWUsCi0rCQkgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICpzZWN0aW9uX29mZnNldHMsCi0rCQkgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwKLSAJCSAg ICAgIENPUkVfQUREUiB0ZXh0bG93LCBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKipnbG9iYWxfc3lt cywKLSAJCSAgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnN0YXRpY19zeW1zKQotIHsKK0BA IC0yMzIzLDYgKzIzMjgsNyBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKKyAJICBvYmpmaWxlLT5z eW10YWJzID0gTlVMTDsKKyAJICBvYmpmaWxlLT5wc3ltdGFicyA9IE5VTEw7CisgCSAgb2JqZmls ZS0+cHN5bXRhYnNfYWRkcm1hcCA9IE5VTEw7CisrCSAgb2JqZmlsZS0+cXVpY2tfYWRkcm1hcCA9 IE5VTEw7CisgCSAgb2JqZmlsZS0+ZnJlZV9wc3ltdGFicyA9IE5VTEw7CisgCSAgb2JqZmlsZS0+ Y3BfbmFtZXNwYWNlX3N5bXRhYiA9IE5VTEw7CisgCSAgb2JqZmlsZS0+bXN5bWJvbHMgPSBOVUxM OworQEAgLTIzMzMsNiArMjMzOSw4IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQorIAkgIG1lbXNl dCAoJm9iamZpbGUtPm1zeW1ib2xfZGVtYW5nbGVkX2hhc2gsIDAsCisgCQkgIHNpemVvZiAob2Jq ZmlsZS0+bXN5bWJvbF9kZW1hbmdsZWRfaGFzaCkpOworIAorKwkgIG9iamZpbGUtPmZsYWdzICY9 IH5PQkpGX1NZTVRBQlNfUkVBRDsKKysKKyAJICBvYmpmaWxlLT5wc3ltYm9sX2NhY2hlID0gYmNh Y2hlX3htYWxsb2MgKCk7CisgCSAgb2JqZmlsZS0+bWFjcm9fY2FjaGUgPSBiY2FjaGVfeG1hbGxv YyAoKTsKKyAJICBvYmpmaWxlLT5maWxlbmFtZV9jYWNoZSA9IGJjYWNoZV94bWFsbG9jICgpOwog ZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCi1pbmRleCA4YzkyNDlj Li5iZjlkOWU3IDEwMDY0NAoraW5kZXggN2FlODE5Yy4uZjNmNmViMyAxMDA2NDQKIC0tLSBhL2dk Yi9zeW1maWxlLmgKICsrKyBiL2dkYi9zeW1maWxlLmgKLUBAIC0xNDAsNiArMTQwLDEyIEBAIHN0 cnVjdCBzeW1fZm5zCitAQCAtMTM5LDYgKzEzOSwxMiBAQCBzdHJ1Y3Qgc3ltX2ZucwogIAogICAg dm9pZCAoKnN5bV9yZWFkKSAoc3RydWN0IG9iamZpbGUgKiwgaW50KTsKICAKQEAgLTE5MjkyLDEw MCArMTQwNzMsMjAgQEAgaW5kZXggOGM5MjQ5Yy4uYmY5ZDllNyAxMDA2NDQKICAgIC8qIENhbGxl ZCB3aGVuIHdlIGFyZSBmaW5pc2hlZCB3aXRoIGFuIG9iamZpbGUuICBTaG91bGQgZG8gYWxsCiAg ICAgICBjbGVhbnVwIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlIG9iamVjdCBmaWxlIGZvcm1hdCBm b3IgdGhlCiAgICAgICBwYXJ0aWN1bGFyIG9iamZpbGUuICAqLwotQEAgLTI2Niw3ICsyNzIsNyBA QCBleHRlcm4gdm9pZCBmcmVlX3NlY3Rpb25fYWRkcl9pbmZvIChzdHJ1Y3Qgc2VjdGlvbl9hZGRy X2luZm8gKik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqc3RhcnRfcHN5bXRh Yl9jb21tb24gKHN0cnVjdCBvYmpmaWxlICosCi0gCQkJCQkJICAgIHN0cnVjdCBzZWN0aW9uX29m ZnNldHMgKiwKLS0JCQkJCQkgICAgY2hhciAqLCBDT1JFX0FERFIsCi0rCQkJCQkJICAgIGNvbnN0 IGNoYXIgKiwgQ09SRV9BRERSLAotIAkJCQkJCSAgICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKios Ci0gCQkJCQkJICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKik7Ci0gCi1AQCAtMzA5LDcgKzMx NSw3IEBAIGV4dGVybiBpbnQgYXV0b19zb2xpYl9saW1pdDsKLSAKLSBleHRlcm4gdm9pZCBzZXRf aW5pdGlhbF9sYW5ndWFnZSAodm9pZCk7Ci0gCi0tZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRh YiAqYWxsb2NhdGVfcHN5bXRhYiAoY2hhciAqLCBzdHJ1Y3Qgb2JqZmlsZSAqKTsKLStleHRlcm4g c3RydWN0IHBhcnRpYWxfc3ltdGFiICphbGxvY2F0ZV9wc3ltdGFiIChjb25zdCBjaGFyICosIHN0 cnVjdCBvYmpmaWxlICopOwotIAotIGV4dGVybiB2b2lkIGRpc2NhcmRfcHN5bXRhYiAoc3RydWN0 IHBhcnRpYWxfc3ltdGFiICopOwotIAotQEAgLTM3OCw3ICszODQsNyBAQCB2b2lkIGZyZWVfc3lt ZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZGF0YSk7CitA QCAtMzg5LDcgKzM5NSw3IEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0 IHN5bWZpbGVfc2VnbWVudF9kYXRhICpkYXRhKTsKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwog IAogIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKIC0KICtl eHRlcm4gdm9pZCBkd2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJtYXAgKHN0cnVjdCBvYmpmaWxlICop OwotIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9wc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKiwg aW50KTsKKyBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxl ICopOwogIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1Y3Qgb2JqZmls ZSAqKTsKICAKLWRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2MuYwotaW5k ZXggZWIzNTM2OS4uZGZkOGM4YyAxMDA2NDQKLS0tLSBhL2dkYi9zeW1taXNjLmMKLSsrKyBiL2dk Yi9zeW1taXNjLmMKLUBAIC0xMTI4LDcgKzExMjgsNyBAQCBtYWludGVuYW5jZV9jaGVja19zeW10 YWJzIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKLSAgICAgd2hpbGUgKGxlbmd0aC0tKQot ICAgICAgIHsKLSAJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgU1lNQk9MX0xJTktBR0Vf TkFNRSAoKnBzeW0pLAotLQkJCQkgICBOVUxMLCBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotKwkJ CQkgICBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICBw cmludGZfZmlsdGVyZWQgKCJTdGF0aWMgc3ltYm9sIGAiKTsKLUBAIC0xMTQ1LDcgKzExNDUsNyBA QCBtYWludGVuYW5jZV9jaGVja19zeW10YWJzIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkK LSAgICAgd2hpbGUgKGxlbmd0aC0tKQotICAgICAgIHsKLSAJc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYiwgU1lNQk9MX0xJTktBR0VfTkFNRSAoKnBzeW0pLAotLQkJCQkgICBOVUxMLCBTWU1C T0xfRE9NQUlOICgqcHN5bSkpOwotKwkJCQkgICBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotIAlp ZiAoIXN5bSkKLSAJICB7Ci0gCSAgICBwcmludGZfZmlsdGVyZWQgKCJHbG9iYWwgc3ltYm9sIGAi KTsKIGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDhkOWQ3 MmMuLjgyZTAxNjMgMTAwNjQ0CitpbmRleCA0MjYzMjZkLi5iYWM0Y2EzIDEwMDY0NAogLS0tIGEv Z2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKLUBAIC00Miw2ICs0Miw3IEBACi0gI2lu Y2x1ZGUgImFkYS1sYW5nLmgiCi0gI2luY2x1ZGUgInAtbGFuZy5oIgotICNpbmNsdWRlICJhZGRy bWFwLmgiCi0rI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKLSAKLSAjaW5jbHVkZSAiaGFzaHRhYi5o IgotIAotQEAgLTg1LDcgKzg2LDYgQEAgc3RhdGljIGludCBmaW5kX2xpbmVfY29tbW9uIChzdHJ1 Y3QgbGluZXRhYmxlICosIGludCwgaW50ICopOwotIGNoYXIgKm9wZXJhdG9yX2NoYXJzIChjaGFy ICpwLCBjaGFyICoqZW5kKTsKLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJv bF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAotIAkJCQkJIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJCQkgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluLAotIAkJCQkJIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsCi1AQCAtOTMsMjAg KzkzLDE5IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eCAoY29uc3Qg Y2hhciAqbmFtZSwKLSAKLSBzdGF0aWMKLSBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1 eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCWNvbnN0IGNoYXIgKmxpbmthZ2VfbmFt ZSwKLSAJCQkJCWNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJCQljb25zdCBkb21haW5f ZW51bSBkb21haW4pOwotKwkJCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAotKwkJCQkJZW51 bSBsYW5ndWFnZSBsYW5ndWFnZSwKLSsJCQkJCWludCAqaXNfYV9maWVsZF9vZl90aGlzKTsKLSAK LSBzdGF0aWMKLSBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQg YmxvY2tfaW5kZXgsCi0gCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkgIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSAK LSBzdGF0aWMKLSBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50 IGJsb2NrX2luZGV4LAotIAkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCSAgIGNvbnN0 IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7 Ci0gCi0gc3RhdGljIGludCBmaWxlX21hdGNoZXMgKGNoYXIgKiwgY2hhciAqKiwgaW50KTsKLUBA IC0yNzEsNyArMjcwLDcgQEAgbG9va3VwX3BhcnRpYWxfc3ltdGFiIChjb25zdCBjaGFyICpuYW1l KQorQEAgLTI3MSw3ICsyNzEsNyBAQCBsb29rdXBfcGFydGlhbF9zeW10YWIgKGNvbnN0IGNoYXIg Km5hbWUpCiAgICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbF9wYXRoKTsKICAgICAgfQog IApAQCAtMTkzOTQsNyArMTQwOTUsNyBAQCBpbmRleCA4ZDlkNzJjLi44MmUwMTYzIDEwMDY0NAog ICAgewogICAgICBpZiAoRklMRU5BTUVfQ01QIChuYW1lLCBwc3QtPmZpbGVuYW1lKSA9PSAwKQog ICAgICAgIHsKLUBAIC00MTQsNyArNDEzLDggQEAgc3ltYm9sX2luaXRfbGFuZ3VhZ2Vfc3BlY2lm aWMgKHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sLAorQEAgLTQxNCw3ICs0MTQs OCBAQCBzeW1ib2xfaW5pdF9sYW5ndWFnZV9zcGVjaWZpYyAoc3RydWN0IGdlbmVyYWxfc3ltYm9s X2luZm8gKmdzeW1ib2wsCiAgICBnc3ltYm9sLT5sYW5ndWFnZSA9IGxhbmd1YWdlOwogICAgaWYg KGdzeW1ib2wtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCiAgICAgICAgfHwgZ3N5bWJvbC0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YQpAQCAtMTk0MDQsMTYgKzE0MTA1LDcgQEAgaW5kZXgg OGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAgICAgewogICAgICAgIGdzeW1ib2wtPmxhbmd1YWdl X3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lID0gTlVMTDsKICAgICAgfQot QEAgLTQ3NCw3ICs0NzQsNyBAQCBzeW1ib2xfZmluZF9kZW1hbmdsZWRfbmFtZSAoc3RydWN0IGdl bmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wsCi0gICAgICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfYXV0bykKLSAgICAgewotICAgICAgIGRlbWFuZ2xlZCA9Ci0tICAgICAgICBj cGx1c19kZW1hbmdsZSAobWFuZ2xlZCwgRE1HTF9QQVJBTVMgfCBETUdMX0FOU0kpOwotKyAgICAg ICAgY3BsdXNfZGVtYW5nbGUgKG1hbmdsZWQsIERNR0xfUEFSQU1TIHwgRE1HTF9BTlNJIHwgRE1H TF9WRVJCT1NFKTsKLSAgICAgICBpZiAoZGVtYW5nbGVkICE9IE5VTEwpCi0gCXsKLSAJICBnc3lt Ym9sLT5sYW5ndWFnZSA9IGxhbmd1YWdlX2NwbHVzOwotQEAgLTYzMyw2ICs2MzMsNyBAQCBzeW1i b2xfbmF0dXJhbF9uYW1lIChjb25zdCBzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJv bCkKK0BAIC02OTUsNiArNjk2LDcgQEAgc3ltYm9sX25hdHVyYWxfbmFtZSAoY29uc3Qgc3RydWN0 IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wpCiAgICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6 CiAgICAgIGNhc2UgbGFuZ3VhZ2VfamF2YToKICAgICAgY2FzZSBsYW5ndWFnZV9vYmpjOgpAQCAt MTk0MjEsNyArMTQxMTMsNyBAQCBpbmRleCA4ZDlkNzJjLi44MmUwMTYzIDEwMDY0NAogICAgICAg IGlmIChnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZpYy5kZW1hbmdsZWRf bmFtZSAhPSBOVUxMKQogIAlyZXR1cm4gZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNf c3BlY2lmaWMuZGVtYW5nbGVkX25hbWU7CiAgICAgICAgYnJlYWs7Ci1AQCAtNjU4LDYgKzY1OSw3 IEBAIHN5bWJvbF9kZW1hbmdsZWRfbmFtZSAoY29uc3Qgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2lu Zm8gKmdzeW1ib2wpCitAQCAtNzIwLDYgKzcyMiw3IEBAIHN5bWJvbF9kZW1hbmdsZWRfbmFtZSAo Y29uc3Qgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wpCiAgICAgIGNhc2UgbGFu Z3VhZ2VfY3BsdXM6CiAgICAgIGNhc2UgbGFuZ3VhZ2VfamF2YToKICAgICAgY2FzZSBsYW5ndWFn ZV9vYmpjOgpAQCAtMTk0MjksNyArMTQxMjEsNyBAQCBpbmRleCA4ZDlkNzJjLi44MmUwMTYzIDEw MDY0NAogICAgICAgIGlmIChnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZp Yy5kZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQogIAlyZXR1cm4gZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3Bl Y2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWU7CiAgICAgICAgYnJlYWs7Ci1AQCAt ODY4LDcgKzg3MCwxMyBAQCBmaW5kX3BjX3NlY3RfcHN5bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1 Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCitAQCAtOTMxLDcgKzkzNCwxMyBAQCBmaW5kX3BjX3Nl Y3RfcHN5bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCiAg ICAgICB0aGFuIHRoZSBsYXRlciB1c2VkIFRFWFRMT1cvVEVYVEhJR0ggb25lLiAgKi8KICAKICAg IEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKQEAgLTE5NDQ0LDcgKzE0MTM2LDcgQEAgaW5kZXggOGQ5 ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAgICAgICB7CiAgCXN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAq cHN0OwogIAotQEAgLTkwMSw2ICs5MDksNyBAQCBmaW5kX3BjX3NlY3RfcHN5bXRhYiAoQ09SRV9B RERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCitAQCAtOTY0LDYgKzk3Myw3IEBA IGZpbmRfcGNfc2VjdF9wc3ltdGFiIChDT1JFX0FERFIgcGMsIHN0cnVjdCBvYmpfc2VjdGlvbiAq c2VjdGlvbikKICAJICAgIHJldHVybiBwc3Q7CiAgCSAgfQogICAgICAgIH0KQEAgLTE5NDUyLDcg KzE0MTQ0LDcgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAKICAgIC8qIEV4aXN0 aW5nIFBTWU1UQUJTX0FERFJNQVAgbWFwcGluZyBpcyBwcmVzZW50IGV2ZW4gZm9yIFBBUlRJQUxf U1lNVEFCcwogICAgICAgd2hpY2ggc3RpbGwgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGZ1bGwgU1lN VEFCcyByZWFkLiAgQnV0IGl0IGlzIG5vdAotQEAgLTExNjgsNiArMTE3NywyMiBAQCBmaXh1cF9w c3ltYm9sX3NlY3Rpb24gKHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqcHN5bSwgc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCitAQCAtMTIzMSw2ICsxMjQxLDIyIEBAIGZpeHVwX3BzeW1ib2xfc2VjdGlv biAoc3RydWN0IHBhcnRpYWxfc3ltYm9sICpwc3ltLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK ICAgIHJldHVybiBwc3ltOwogIH0KICAKQEAgLTE5NDc1LDMyMiArMTQxNjcsMTUgQEAgaW5kZXgg OGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAvKiBGaW5kIHRoZSBkZWZpbml0aW9uIGZvciBhIHNw ZWNpZmllZCBzeW1ib2wgbmFtZSBOQU1FCiAgICAgaW4gZG9tYWluIERPTUFJTiwgdmlzaWJsZSBm cm9tIGxleGljYWwgYmxvY2sgQkxPQ0suCiAgICAgUmV0dXJucyB0aGUgc3RydWN0IHN5bWJvbCBw b2ludGVyLCBvciB6ZXJvIGlmIG5vIHN5bWJvbCBpcyBmb3VuZC4KLUBAIC0xMTk0LDEwICsxMjE5 LDE0IEBAIGxvb2t1cF9zeW1ib2xfaW5fbGFuZ3VhZ2UgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gewotICAgY2hhciAqZGVtYW5nbGVkX25hbWUgPSBOVUxM OwotICAgY29uc3QgY2hhciAqbW9kaWZpZWRfbmFtZSA9IE5VTEw7Ci0tICBjb25zdCBjaGFyICpt YW5nbGVkX25hbWUgPSBOVUxMOwotICAgc3RydWN0IHN5bWJvbCAqcmV0dXJudmFsOwotICAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0g Ci0rICBpZihzdHJuY21wKG5hbWUsICI6OiIsIDIpID09IDApey8qIHRoaXMgbXVzdCBiZSBhIGds b2JhbCBuYW1lICovCi0rICAgIG5hbWUgPSBuYW1lKzI7Ci0rICAgIGJsb2NrID0gTlVMTDsKLSsg IH0KLSsgIAotICAgbW9kaWZpZWRfbmFtZSA9IG5hbWU7CitAQCAtMTUzNCw2ICsxNTYwLDcgQEAg bG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAq bWFpbl9vYmpmaWxlLAorICAgICAgICAgfQogIAotICAgLyogSWYgd2UgYXJlIHVzaW5nIEMrKyBv ciBKYXZhLCBkZW1hbmdsZSB0aGUgbmFtZSBiZWZvcmUgZG9pbmcgYSBsb29rdXAsIHNvCi1AQCAt MTIwNyw3ICsxMjM2LDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAq bmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAgICAgICBkZW1hbmdsZWRfbmFtZSA9 IGNwbHVzX2RlbWFuZ2xlIChuYW1lLCBETUdMX0FOU0kgfCBETUdMX1BBUkFNUyk7Ci0gICAgICAg aWYgKGRlbWFuZ2xlZF9uYW1lKQotIAl7Ci0tCSAgbWFuZ2xlZF9uYW1lID0gbmFtZTsKLSAJICBt b2RpZmllZF9uYW1lID0gZGVtYW5nbGVkX25hbWU7Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg ZGVtYW5nbGVkX25hbWUpOwotIAl9Ci1AQCAtMTIyOSw3ICsxMjU3LDYgQEAgbG9va3VwX3N5bWJv bF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j aywKLSAJCSAgICAgIAkJICAgICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TIHwgRE1HTF9KQVZB KTsKLSAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUpCi0gCXsKLS0JICBtYW5nbGVkX25hbWUgPSBu YW1lOwotIAkgIG1vZGlmaWVkX25hbWUgPSBkZW1hbmdsZWRfbmFtZTsKLSAJICBtYWtlX2NsZWFu dXAgKHhmcmVlLCBkZW1hbmdsZWRfbmFtZSk7Ci0gCX0KLUBAIC0xMjQ4LDggKzEyNzUsOCBAQCBs b29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3Qg YmxvY2sgKmJsb2NrLAotICAgICAgIG1vZGlmaWVkX25hbWUgPSBjb3B5OwotICAgICB9Ci0gCi0t ICByZXR1cm52YWwgPSBsb29rdXBfc3ltYm9sX2F1eCAobW9kaWZpZWRfbmFtZSwgbWFuZ2xlZF9u YW1lLCBibG9jaywKLS0JCQkJIGRvbWFpbiwgbGFuZywgaXNfYV9maWVsZF9vZl90aGlzKTsKLSsg IHJldHVybnZhbCA9IGxvb2t1cF9zeW1ib2xfYXV4IChtb2RpZmllZF9uYW1lLCBibG9jaywgZG9t YWluLCBsYW5nLAotKwkJCQkgaXNfYV9maWVsZF9vZl90aGlzKTsKLSAgIGRvX2NsZWFudXBzIChj bGVhbnVwKTsKLSAKLSAgIHJldHVybiByZXR1cm52YWw7Ci1AQCAtMTI3Myw5ICsxMzAwLDkgQEAg bG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j aywKLSAgICB3ZWxsLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX3N5 bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLS0J CSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwK LS0JCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsIGludCAqaXNfYV9maWVsZF9vZl90aGlzKQot K2xvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotKwkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxhbmd1YWdlIGxh bmd1YWdlLAotKwkJICAgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCi0gewotICAgc3RydWN0IHN5 bWJvbCAqc3ltOwotICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdkZWY7Ci1AQCAt MTI5MSw1NSArMTMxOCwxOSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotICAgLyogU2VhcmNoIHNwZWNpZmllZCBibG9jayBh bmQgaXRzIHN1cGVyaW9ycy4gIERvbid0IHNlYXJjaAotICAgICAgU1RBVElDX0JMT0NLIG9yIEdM T0JBTF9CTE9DSy4gICovCi0gCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAobmFt ZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xf YXV4X2xvY2FsIChuYW1lLCBibG9jaywgZG9tYWluLCBsYW5ndWFnZSwgaXNfYV9maWVsZF9vZl90 aGlzKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAKLS0gIC8qIElm IHJlcXVlc3RlZCB0byBkbyBzbyBieSB0aGUgY2FsbGVyIGFuZCBpZiBhcHByb3ByaWF0ZSBmb3Ig TEFOR1VBR0UsCi0tICAgICBjaGVjayB0byBzZWUgaWYgTkFNRSBpcyBhIGZpZWxkIG9mIGB0aGlz Jy4gKi8KLS0KLS0gIGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdlKTsKLS0KLS0gIGlm IChsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxkX29mX3RoaXMg IT0gTlVMTAotLSAgICAgICYmIGJsb2NrICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3Qg c3ltYm9sICpzeW0gPSBOVUxMOwotLSAgICAgIC8qICd0aGlzJyBpcyBvbmx5IGRlZmluZWQgaW4g dGhlIGZ1bmN0aW9uJ3MgYmxvY2ssIHNvIGZpbmQgdGhlCi0tCSBlbmNsb3NpbmcgZnVuY3Rpb24g YmxvY2suICAqLwotLSAgICAgIGZvciAoOyBibG9jayAmJiAhQkxPQ0tfRlVOQ1RJT04gKGJsb2Nr KTsKLS0JICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jaykpOwotLQotLSAgICAgIGlm IChibG9jayAmJiAhZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxvY2spKSkKLS0Jc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhpcywKLS0JCQkJ ICAgTlVMTCwgVkFSX0RPTUFJTik7Ci0tICAgICAgaWYgKHN5bSkKLS0JewotLQkgIHN0cnVjdCB0 eXBlICp0ID0gc3ltLT50eXBlOwotLQotLQkgIC8qIEknbSBub3QgcmVhbGx5IHN1cmUgdGhhdCB0 eXBlIG9mIHRoaXMgY2FuIGV2ZXIKLS0JICAgICBiZSB0eXBlZGVmZWQ7IGp1c3QgYmUgc2FmZS4g ICovCi0tCSAgQ0hFQ0tfVFlQRURFRiAodCk7Ci0tCSAgaWYgKFRZUEVfQ09ERSAodCkgPT0gVFlQ RV9DT0RFX1BUUgotLQkgICAgICB8fCBUWVBFX0NPREUgKHQpID09IFRZUEVfQ09ERV9SRUYpCi0t CSAgICB0ID0gVFlQRV9UQVJHRVRfVFlQRSAodCk7Ci0tCi0tCSAgaWYgKFRZUEVfQ09ERSAodCkg IT0gVFlQRV9DT0RFX1NUUlVDVAotLQkgICAgICAmJiBUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09E RV9VTklPTikKLS0JICAgIGVycm9yIChfKCJJbnRlcm5hbCBlcnJvcjogYCVzJyBpcyBub3QgYW4g YWdncmVnYXRlIiksCi0tCQkgICBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMpOwotLQotLQkgIGlm IChjaGVja19maWVsZCAodCwgbmFtZSkpCi0tCSAgICB7Ci0tCSAgICAgICppc19hX2ZpZWxkX29m X3RoaXMgPSAxOwotLQkgICAgICByZXR1cm4gTlVMTDsKLS0JICAgIH0KLS0JfQotLSAgICB9Ci0r ICAvKiB0aGlzIHN5bWJvbCB3YXMgZm91bmQgdG8gYmUgYSBtZW1iZXIgdmFyaWFibGUKLSsgICAg IGRvIG5vdCBwZXJmb3JtIHRoZSBnbG9iYWwgc2VhcmNoLiAqLwotKyAgaWYgKGlzX2FfZmllbGRf b2ZfdGhpcyAmJiAqaXNfYV9maWVsZF9vZl90aGlzKQotKyAgICByZXR1cm4gTlVMTDsKLSAKLSAg IC8qIE5vdyBkbyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZSBmb3IgTEFOR1VBR0UgdG8gbG9vawot ICAgICAgdXAgc3RhdGljIGFuZCBnbG9iYWwgdmFyaWFibGVzLiAgKi8KLS0KLS0gIHN5bSA9IGxh bmdkZWYtPmxhX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxv Y2ssIGRvbWFpbik7Ci0rICBsYW5nZGVmID0gbGFuZ3VhZ2VfZGVmIChsYW5ndWFnZSk7Ci0rICBz eW0gPSBsYW5nZGVmLT5sYV9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChuYW1lLCBibG9jaywgZG9t YWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAKLUBAIC0xMzQ5 LDExICsxMzQwLDExIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICpsaW5rYWdlX25hbWUsCi0gICAgICBkZXNpcmVkIG5hbWUgYXMgYSBmaWxlLWxldmVs IHN0YXRpYywgdGhlbiBkbyBwc3ltdGFiLXRvLXN5bXRhYgotICAgICAgY29udmVyc2lvbiBvbiB0 aGUgZmx5IGFuZCByZXR1cm4gdGhlIGZvdW5kIHN5bWJvbC4gKi8KLSAKLS0gIHN5bSA9IGxvb2t1 cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBk b21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoU1RBVElDX0JMT0NL LCBuYW1lLCBkb21haW4pOwotICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3ltOwot IAotLSAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFt ZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfcHN5 bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkK LSAgICAgcmV0dXJuIHN5bTsKLSAKLUBAIC0xMzY0LDMwICsxMzU1LDgxIEBAIGxvb2t1cF9zeW1i b2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gICAg RG9uJ3Qgc2VhcmNoIFNUQVRJQ19CTE9DSyBvciBHTE9CQUxfQkxPQ0suICAqLwotIAotIHN0YXRp YyBzdHJ1Y3Qgc3ltYm9sICoKLS1sb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotLQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rbG9va3VwX3N5bWJvbF9h dXhfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0r CQkJIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSwKLSsJ CQkgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltOwot LSAgY29uc3Qgc3RydWN0IGJsb2NrICpzdGF0aWNfYmxvY2sgPSBibG9ja19zdGF0aWNfYmxvY2sg KGJsb2NrKTsKLSsgIGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2NrID0gYmxvY2tfZ2xv YmFsX2Jsb2NrIChibG9jayk7Ci0rICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2l0ZXJhdG9y ID0gYmxvY2s7Ci0rICBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ2RlZjsKLSsKLSsg IGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdlKTsKLSAKLSAgIC8qIENoZWNrIGlmIGVp dGhlciBubyBibG9jayBpcyBzcGVjaWZpZWQgb3IgaXQncyBhIGdsb2JhbCBibG9jay4gICovCi0g Ci0tICBpZiAoc3RhdGljX2Jsb2NrID09IE5VTEwpCi0rICBpZiAoZ2xvYmFsX2Jsb2NrID09IE5V TEwpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgd2hpbGUgKGJsb2NrICE9IHN0YXRpY19ibG9j aykKLSsgIHdoaWxlIChibG9ja19pdGVyYXRvciAhPSBnbG9iYWxfYmxvY2spCi0gICAgIHsKLS0g ICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgbGlua2FnZV9uYW1lLCBi bG9jaywgZG9tYWluKTsKLSsKLSsgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAo bmFtZSwgYmxvY2tfaXRlcmF0b3IsIGRvbWFpbik7Ci0rCi0gICAgICAgaWYgKHN5bSAhPSBOVUxM KQotIAlyZXR1cm4gc3ltOwotLQotLSAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2spICE9 IE5VTEwgJiYgYmxvY2tfaW5saW5lZF9wIChibG9jaykpCi0tCWJyZWFrOwotLSAgICAgIGJsb2Nr ID0gQkxPQ0tfU1VQRVJCTE9DSyAoYmxvY2spOwotKyAgICAKLSsgICAgICBpZiAobGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfY3BsdXMgKQotKyAgICAgICAgewotKyAgICAgICAgICBzeW0gPSBjcF9sb29r dXBfc3ltYm9sX2ltcG9ydHMgKGJsb2NrX3Njb3BlIChibG9ja19pdGVyYXRvciksIG5hbWUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfaXRlcmF0b3Is IGRvbWFpbiwgMSwgMSk7Ci0rCi0rICAgICAgICAgIGlmIChzeW0gIT0gTlVMTCkKLSsgICAgICAg ICAgICByZXR1cm4gc3ltOwotKyAgICAgICAgfQotKwotKyAgICAgIGlmIChsYW5nZGVmLT5sYV9u YW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxkX29mX3RoaXMgIT0gTlVMTAotKwkgICYm IEJMT0NLX0ZVTkNUSU9OIChibG9ja19pdGVyYXRvcikpCi0rICAgICAgICB7Ci0rICAgICAgICAg IGlmICghZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxvY2tfaXRlcmF0b3IpKSkKLSsgICAgICAg ICAgICB7Ci0rICAgICAgICAgICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9ja19p dGVyYXRvciwKLSsJCQkJCSBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMsCi0rCQkJCQkgVkFSX0RP TUFJTik7Ci0rCi0rCi0rICAgICAgICAgICAgICBpZiAoc3ltKQotKyAgICAgICAgICAgICAgICB7 Ci0rICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKnQgPSBzeW0tPnR5cGU7Ci0rCi0rICAg ICAgICAgICAgICAgICAgLyogSSdtIG5vdCByZWFsbHkgc3VyZSB0aGF0IHR5cGUgb2YgdGhpcyBj YW4gZXZlcgotKyAgICAgICAgICAgICAgICAgICAgIGJlIHR5cGVkZWZlZDsganVzdCBiZSBzYWZl LiAgKi8KLSsgICAgICAgICAgICAgICAgICBDSEVDS19UWVBFREVGICh0KTsKLSsgICAgICAgICAg ICAgICAgICBpZiAoVFlQRV9DT0RFICh0KSA9PSBUWVBFX0NPREVfUFRSCi0rICAgICAgICAgICAg ICAgICAgICAgIHx8IFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1JFRikKLSsgICAgICAgICAg ICAgICAgICAgICAgdCA9IFRZUEVfVEFSR0VUX1RZUEUgKHQpOwotKwotKyAgICAgICAgICAgICAg ICAgIGlmIChUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLSsgICAgICAgICAgICAg ICAgICAgICAgJiYgVFlQRV9DT0RFICh0KSAhPSBUWVBFX0NPREVfVU5JT04pCi0rICAgICAgICAg ICAgICAgICAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJyb3I6IGAlcycgaXMgbm90IGFuIGFnZ3Jl Z2F0ZSIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdkZWYtPmxhX25hbWVfb2ZfdGhp cyk7Ci0rCi0rICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrX2ZpZWxkICh0LCBuYW1lKSkKLSsg ICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgKmlzX2FfZmllbGRf b2ZfdGhpcyA9IDE7Ci0rICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotKyAgICAg ICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotKyAg ICAgICAgfQotKwotKyAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2tfaXRlcmF0b3IpICE9 IE5VTEwgJiYgYmxvY2tfaW5saW5lZF9wIChibG9ja19pdGVyYXRvcikpCi0rICAgICAgICBicmVh azsKLSsKLSsgICAgICBibG9ja19pdGVyYXRvciA9IEJMT0NLX1NVUEVSQkxPQ0sgKGJsb2NrX2l0 ZXJhdG9yKTsKLSAgICAgfQotIAotLSAgLyogV2UndmUgcmVhY2hlZCB0aGUgZWRnZSBvZiB0aGUg ZnVuY3Rpb24gd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0LiAgKi8KLSsgIC8qIFdlJ3ZlIHJlYWNo ZWQgdGhlIGdsb2JhbCBibG9jayB3aXRob3V0IGZpbmRpbmcgYSByZXN1bHQuICAqLwotIAotICAg cmV0dXJuIE5VTEw7Ci0gfQotQEAgLTE0MTYsMTMgKzE0NTgsMTIgQEAgbG9va3VwX29iamZpbGVf ZnJvbV9ibG9jayAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaykKLSAgICBibG9ja19mb3VuZCBh cHByb3ByaWF0ZWx5LiAgKi8KLSAKLSBzdHJ1Y3Qgc3ltYm9sICoKLS1sb29rdXBfc3ltYm9sX2F1 eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJ CSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotK2xvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChj b25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCSBjb25zdCBk b21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltOwotIAotLSAgc3lt ID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWlu KTsKLSsgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOwot ICAgaWYgKHN5bSkKLSAgICAgewotICAgICAgIGJsb2NrX2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTQz OCw3ICsxNDc5LDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUs IGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSBzdHJ1Y3Qgc3ltYm9sICoKLSBsb29rdXBfZ2xv YmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot IAkJCQkgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkgICBjb25zdCBjaGFyICpsaW5rYWdlX25h bWUsCi0gCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3Qgc3lt Ym9sICpzeW07Ci1AQCAtMTQ1Miw3ICsxNDkyLDcgQEAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJv bV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIHsKLSAgICAgYnYg PSBCTE9DS1ZFQ1RPUiAocyk7Ci0gICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBH TE9CQUxfQkxPQ0spOwotLSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFt ZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9s IChibG9jaywgbmFtZSwgZG9tYWluKTsKLSAgICAgaWYgKHN5bSkKLSAgICAgICB7Ci0gCWJsb2Nr X2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTQ2MSwyMyArMTUwMSwyMyBAQCBsb29rdXBfZ2xvYmFsX3N5 bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgfQot IAotICAgLyogTm93IGdvIHRocm91Z2ggcHN5bXRhYnMuICAqLwotKyAgcmVxdWlyZV9wYXJ0aWFs X3N5bWJvbHMgKChzdHJ1Y3Qgb2JqZmlsZSAqKSBvYmpmaWxlKTsKLSAgIEFMTF9PQkpGSUxFX1BT WU1UQUJTIChvYmpmaWxlLCBwcykKLSAgIHsKLSAgICAgaWYgKCFwcy0+cmVhZGluCi0tCSYmIGxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0JCQkJICAxLCBk b21haW4pKQotKwkmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCAxLCBkb21haW4p KQotICAgICAgIHsKLSAJcyA9IFBTWU1UQUJfVE9fU1lNVEFCIChwcyk7Ci0gCWJ2ID0gQkxPQ0tW RUNUT1IgKHMpOwotIAlibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NL KTsKLS0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFt ZSwgZG9tYWluKTsKLSsJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRv bWFpbik7Ci0gCXJldHVybiBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCAoc3RydWN0IG9iamZp bGUgKilvYmpmaWxlKTsKLSAgICAgICB9Ci0gICB9Ci0gCi0gICBpZiAob2JqZmlsZS0+c2VwYXJh dGVfZGVidWdfb2JqZmlsZSkKLSAgICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21f b2JqZmlsZSAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSwKLS0JCQkJCSAgICAgIG5h bWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsJCQkJCSAgICAgIG5hbWUsIGRvbWFpbik7Ci0g Ci0gICByZXR1cm4gTlVMTDsKLSB9Ci1AQCAtMTQ4OCw4ICsxNTI4LDcgQEAgbG9va3VwX2dsb2Jh bF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAg ICBzdGF0aWMgc3ltYm9scy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotLWxvb2t1 cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLS0JCQkgICBjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0rbG9va3VwX3N5bWJvbF9hdXhfc3lt dGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAkJCSAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci1AQCAtMTUwMiw3 ICsxNTQxLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAot ICAgewotICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKLSAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RP Ul9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJv bCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgICAgc3ltID0gbG9va3Vw X2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0gICAgIGlmIChzeW0pCi0gICAg ICAgewotIAlibG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE1MjAsNyArMTU1OSw2IEBAIGxvb2t1 cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLSAKLSBzdGF0aWMgc3RydWN0 IHN5bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwg Y29uc3QgY2hhciAqbmFtZSwKLS0JCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJ CSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3lt OwotQEAgLTE1MzEsMTYgKzE1NjksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGlu dCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAvKiBOb3cgZ28gdGhyb3Vn aCBwc3ltdGFicy4gICovCisrICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKChzdHJ1Y3Qg b2JqZmlsZSAqKSBvYmpmaWxlKTsKKyAgICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmls ZSwgcHMpCisgICAgICAgICB7CisgICAgICAgICAgIGlmICghcHMtPnJlYWRpbgorQEAgLTE2MDEs NyArMTYyOCw3IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgs IGNvbnN0IGNoYXIgKm5hbWUsCiAgICBzdHJ1Y3Qgc3ltdGFiICpzOwogICAgY29uc3QgaW50IHBz eW10YWJfaW5kZXggPSAoYmxvY2tfaW5kZXggPT0gR0xPQkFMX0JMT0NLID8gMSA6IDApOwogIApA QCAtMTk3OTgsMTQ4ICsxNDE4Myw4IEBAIGluZGV4IDhkOWQ3MmMuLjgyZTAxNjMgMTAwNjQ0CiAr ICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQogICAgewogICAgICBpZiAoIXBz LT5yZWFkaW4KLS0JJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgbGlua2FnZV9u YW1lLAotLQkJCQkgIHBzeW10YWJfaW5kZXgsIGRvbWFpbikpCi0rCSYmIGxvb2t1cF9wYXJ0aWFs X3N5bWJvbCAocHMsIG5hbWUsIHBzeW10YWJfaW5kZXgsIGRvbWFpbikpCi0gICAgICAgewotIAlz ID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSAJYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gCWJs b2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBibG9ja19pbmRleCk7Ci0tCXN5bSA9IGxvb2t1 cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0rCXN5 bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOwotIAlpZiAoIXN5 bSkKLSAJICB7Ci0gCSAgICAvKiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCBhcyBh IGxhc3QgcmVzb3J0IHRyeQotQEAgLTE1NTcsNyArMTU5NCw3IEBAIGxvb2t1cF9zeW1ib2xfYXV4 X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCi0gCSAgICBibG9j ayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwKLSAJCQkJICAgICAgIGJsb2NrX2luZGV4ID09IEdM T0JBTF9CTE9DSyA/Ci0gCQkJCSAgICAgICBTVEFUSUNfQkxPQ0sgOiBHTE9CQUxfQkxPQ0spOwot LQkgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFt ZSwgZG9tYWluKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1l LCBkb21haW4pOwotIAkgICAgaWYgKCFzeW0pCi0gCSAgICAgIGVycm9yIChfKCJJbnRlcm5hbDog JXMgc3ltYm9sIGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBidXQgbm90IGluIHN5bXRhYi5cbiVz IG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlv blxuKGlmIGEgdGVtcGxhdGUsIHRyeSBzcGVjaWZ5aW5nIGFuIGluc3RhbnRpYXRpb246ICVzPHR5 cGU+KS4iKSwKLSAJCSAgICAgYmxvY2tfaW5kZXggPT0gR0xPQkFMX0JMT0NLID8gImdsb2JhbCIg OiAic3RhdGljIiwKLUBAIC0xNTc2LDcgKzE2MTMsNiBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3lt dGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAotIHN0cnVjdCBzeW1i b2wgKgotIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0t CQkJICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCSAgICAgIGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2ssCi0gCQkJICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsK LUBAIC0xNjEwLDExICsxNjQ2LDExIEBAIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNv bnN0IGNoYXIgKm5hbWUsCi0gICAgICB0aGFuIHRoYXQgb25lLCBzbyBJIGRvbid0IHRoaW5rIHdl IHNob3VsZCB3b3JyeSBhYm91dCB0aGF0IGZvcgotICAgICAgbm93LiAgKi8KLSAKLS0gIHN5bSA9 IGxvb2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLCBkb21haW4p OwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9zdGF0aWMgKG5hbWUsIGJsb2NrLCBkb21haW4pOwot ICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3ltOwotIAotLSAgcmV0dXJuIGxvb2t1 cF9zeW1ib2xfZ2xvYmFsIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLCBkb21haW4pOwotKyAg cmV0dXJuIGxvb2t1cF9zeW1ib2xfZ2xvYmFsIChuYW1lLCBibG9jaywgZG9tYWluKTsKLSB9Ci0g Ci0gLyogTG9va3VwIGEgc3ltYm9sIGluIHRoZSBzdGF0aWMgYmxvY2sgYXNzb2NpYXRlZCB0byBC TE9DSywgaWYgdGhlcmUKLUBAIC0xNjIyLDE0ICsxNjU4LDEzIEBAIGJhc2ljX2xvb2t1cF9zeW1i b2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCi0gc3RydWN0IHN5bWJvbCAqCi0gbG9v a3VwX3N5bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgICBjb25zdCBjaGFy ICpsaW5rYWdlX25hbWUsCi0gCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJ ICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLSAgIGNvbnN0IHN0cnVjdCBibG9j ayAqc3RhdGljX2Jsb2NrID0gYmxvY2tfc3RhdGljX2Jsb2NrIChibG9jayk7Ci0gCi0gICBpZiAo c3RhdGljX2Jsb2NrICE9IE5VTEwpCi0tICAgIHJldHVybiBsb29rdXBfc3ltYm9sX2F1eF9ibG9j ayAobmFtZSwgbGlua2FnZV9uYW1lLCBzdGF0aWNfYmxvY2ssIGRvbWFpbik7Ci0rICAgIHJldHVy biBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgc3RhdGljX2Jsb2NrLCBkb21haW4pOwot ICAgZWxzZQotICAgICByZXR1cm4gTlVMTDsKLSB9Ci1AQCAtMTYzOSw3ICsxNjc0LDYgQEAgbG9v a3VwX3N5bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCi0gc3RydWN0IHN5bWJvbCAq Ci0gbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgICBjb25z dCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2Nr LAotIAkJICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLUBAIC0xNjQ5LDE1ICsx NjgzLDE1IEBAIGxvb2t1cF9zeW1ib2xfZ2xvYmFsIChjb25zdCBjaGFyICpuYW1lLAotICAgLyog Q2FsbCBsaWJyYXJ5LXNwZWNpZmljIGxvb2t1cCBwcm9jZWR1cmUuICAqLwotICAgb2JqZmlsZSA9 IGxvb2t1cF9vYmpmaWxlX2Zyb21fYmxvY2sgKGJsb2NrKTsKLSAgIGlmIChvYmpmaWxlICE9IE5V TEwpCi0tICAgIHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKG9iamZpbGUsIG5hbWUsIGxpbmth Z2VfbmFtZSwgZG9tYWluKTsKLSsgICAgc3ltID0gc29saWJfZ2xvYmFsX2xvb2t1cCAob2JqZmls ZSwgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsK LSAKLS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFt ZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfc3lt dGFicyAoR0xPQkFMX0JMT0NLLCBuYW1lLCBkb21haW4pOwotICAgaWYgKHN5bSAhPSBOVUxMKQot ICAgICByZXR1cm4gc3ltOwotIAotLSAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJz IChHTE9CQUxfQkxPQ0ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgIHJldHVybiBs b29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoR0xPQkFMX0JMT0NLLCBuYW1lLCBkb21haW4pOwot IH0KLSAKLSBpbnQKLUBAIC0xNjgxLDE0ICsxNzE1LDExIEBAIHN5bWJvbF9tYXRjaGVzX2RvbWFp biAoZW51bSBsYW5ndWFnZSBzeW1ib2xfbGFuZ3VhZ2UsCi0gfQotIAotIC8qIExvb2ssIGluIHBh cnRpYWxfc3ltdGFiIFBTVCwgZm9yIHN5bWJvbCB3aG9zZSBuYXR1cmFsIG5hbWUgaXMgTkFNRS4K LS0gICBJZiBMSU5LQUdFX05BTUUgaXMgbm9uLU5VTEwsIGNoZWNrIGluIGFkZGl0aW9uIHRoYXQg dGhlIHN5bWJvbCdzCi0tICAgbGlua2FnZSBuYW1lIG1hdGNoZXMgaXQuICBDaGVjayB0aGUgZ2xv YmFsIHN5bWJvbHMgaWYgR0xPQkFMLCB0aGUKLS0gICBzdGF0aWMgc3ltYm9scyBpZiBub3QgKi8K LSsgICBDaGVjayB0aGUgZ2xvYmFsIHN5bWJvbHMgaWYgR0xPQkFMLCB0aGUgc3RhdGljIHN5bWJv bHMgaWYgbm90LiAqLwotIAotIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqCi0gbG9va3VwX3BhcnRp YWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwK LS0JCSAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsIGludCBnbG9iYWwsCi0tCQkgICAg ICAgZG9tYWluX2VudW0gZG9tYWluKQotKwkJICAgICAgIGludCBnbG9iYWwsIGRvbWFpbl9lbnVt IGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKnRlbXA7Ci0gICBzdHJ1Y3Qg cGFydGlhbF9zeW1ib2wgKipzdGFydCwgKipwc3ltOwotQEAgLTE3NDAsOSArMTc3MSw3IEBAIGxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNo YXIgKm5hbWUsCi0gCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImZhaWxl ZCBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVjayIpKTsKLSAKLSAgICAgICB3aGlsZSAodG9wIDw9 IHJlYWxfdG9wCi0tCSAgICAgJiYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCi0tCQkgPyBzdHJjbXAg KFNZTUJPTF9MSU5LQUdFX05BTUUgKCp0b3ApLCBsaW5rYWdlX25hbWUpID09IDAKLS0JCSA6IFNZ TUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqdG9wLG5hbWUpKSkKLSsJICAgICAmJiBTWU1CT0xf TUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnRvcCwgbmFtZSkpCi0gCXsKLSAJICBpZiAoc3ltYm9sX21h dGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCp0b3ApLAotIAkJCQkgICAgIFNZTUJPTF9E T01BSU4gKCp0b3ApLCBkb21haW4pKQotQEAgLTE3NTksMTUgKzE3ODgsOSBAQCBsb29rdXBfcGFy dGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1l LAotICAgICAgIGZvciAocHN5bSA9IHN0YXJ0OyBwc3ltIDwgc3RhcnQgKyBsZW5ndGg7IHBzeW0r KykKLSAJewotIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFHRSAo KnBzeW0pLAotLQkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCpwc3ltKSwgZG9tYWluKSkKLS0JICAg IHsKLS0JICAgICAgaWYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCi0tCQkgID8gc3RyY21wIChTWU1C T0xfTElOS0FHRV9OQU1FICgqcHN5bSksIGxpbmthZ2VfbmFtZSkgPT0gMAotLQkJICA6IFNZTUJP TF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqcHN5bSwgbmFtZSkpCi0tCQl7Ci0tCQkgIHJldHVybiAo KnBzeW0pOwotLQkJfQotLQkgICAgfQotKwkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCpwc3ltKSwg ZG9tYWluKQotKwkgICAgICAmJiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnBzeW0sIG5h bWUpKQotKwkgICAgcmV0dXJuICgqcHN5bSk7Ci0gCX0KLSAgICAgfQotIAotQEAgLTE4MDksMjIg KzE4MzIsMjUgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5h bWUpCi0gICB7Ci0gICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICBibG9jayA9IEJMT0NL VkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2Nr X3N5bWJvbCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOwotKyAgICBzeW0gPSBs b29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7Ci0gICAgIGlm IChzeW0gJiYgIVRZUEVfSVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkpCi0gICAgICAgewot IAlyZXR1cm4gU1lNQk9MX1RZUEUgKHN5bSk7CisgCSYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAo cHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKK0BAIC0xODg2LDcgKzE5MTMsMTEgQEAgYmFzaWNfbG9v a3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgICAgfQogICAgfQog IApAQCAtMTk5NTAsMzYgKzE0MTk1LDkgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQK ICsgICAgIGNhbGwgYnV0IHRoYXQgd291bGQgYmVoYXZlIG5vbmRldGVybWluaXN0aWNhbGx5LiAg Ki8KICsgIEFMTF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwgcHMpCiAgICB7Ci0tICAgIGlm ICghcHMtPnJlYWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBOVUxMLAot LQkJCQkJICAgICAgMSwgU1RSVUNUX0RPTUFJTikpCi0rICAgIGlmICghcHMtPnJlYWRpbiAmJiBs b29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCAxLCBTVFJVQ1RfRE9NQUlOKSkKLSAgICAg ICB7Ci0gCXMgPSBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOwotIAlidiA9IEJMT0NLVkVDVE9SIChz KTsKLSAJYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7Ci0tCXN5 bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlO KTsKLSsJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01B SU4pOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICAvKiBUaGlzIHNob3VsZG4ndCBiZSBuZWNl c3NhcnksIGJ1dCBhcyBhIGxhc3QgcmVzb3J0Ci1AQCAtMTgzMyw3ICsxODU5LDcgQEAgYmFzaWNf bG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gCSAgICAgKiB0aGUg cHN5bXRhYiBnZXRzIGl0IHdyb25nIGluIHNvbWUgY2FzZXMuCi0gCSAgICAgKi8KLSAJICAgIGJs b2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwotLQkgICAgc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOwot KwkgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01B SU4pOwotIAkgICAgaWYgKCFzeW0pCi0gCSAgICAgIGVycm9yIChfKCJJbnRlcm5hbDogZ2xvYmFs IHN5bWJvbCBgJXMnIGZvdW5kIGluICVzIHBzeW10YWIgYnV0IG5vdCBpbiBzeW10YWIuXG5cCi0g JXMgbWF5IGJlIGFuIGlubGluZWQgZnVuY3Rpb24sIG9yIG1heSBiZSBhIHRlbXBsYXRlIGZ1bmN0 aW9uXG5cCi1AQCAtMTg1NywyMSArMTg4MywyNiBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRf dHlwZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgIHsKLSAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7 Ci0gICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwotLSAg ICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RP TUFJTik7Ci0rICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJV Q1RfRE9NQUlOKTsKLSAgICAgaWYgKHN5bSAmJiAhVFlQRV9JU19PUEFRVUUgKFNZTUJPTF9UWVBF IChzeW0pKSkKLSAgICAgICB7Ci0gCXJldHVybiBTWU1CT0xfVFlQRSAoc3ltKTsKKyAgICAgaWYg KCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIE5VTEwsCisg CQkJCQkgICAgICAxLCBTVFJVQ1RfRE9NQUlOKSkKK0BAIC0xOTM0LDcgKzE5NjUsMTIgQEAgYmFz aWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgICAgfQog ICAgfQogIApAQCAtMTk5OTEsMjcgKzE0MjA5LDkgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAx MDA2NDQKICsgICAgIGNhbGwgYnV0IHRoYXQgd291bGQgYmVoYXZlIG5vbmRldGVybWluaXN0aWNh bGx5LiAgKi8KICsgIEFMTF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwgcHMpCiAgICB7Ci0t ICAgIGlmICghcHMtPnJlYWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBO VUxMLCAwLCBTVFJVQ1RfRE9NQUlOKSkKLSsgICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9w YXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIDAsIFNUUlVDVF9ET01BSU4pKQorICAgICBpZiAoIXBz LT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgTlVMTCwgMCwgU1RS VUNUX0RPTUFJTikpCiAgICAgICAgewotIAlzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSAJ YnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBT VEFUSUNfQkxPQ0spOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwg TlVMTCwgU1RSVUNUX0RPTUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2Nr LCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJaWYgKCFzeW0pCi0gCSAgewotIAkgICAgLyogVGhp cyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydAotQEAgLTE4ODAs NyArMTkxMSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpu YW1lKQotIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9uZyBpbiBzb21lIGNhc2VzLgot IAkgICAgICovCi0gCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JM T0NLKTsKLS0JICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBOVUxM LCBTVFJVQ1RfRE9NQUlOKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2Nr LCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJICAgIGlmICghc3ltKQotIAkgICAgICBlcnJvciAo XygiSW50ZXJuYWw6IHN0YXRpYyBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3ltdGFiIGJ1dCBu b3QgaW4gc3ltdGFiLlxuXAotICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkg YmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MDUsOSArMTkzNiwyMyBAQCBmaW5kX21h aW5fcHN5bXRhYiAodm9pZCkKK0BAIC0xOTc1LDcgKzIwMTEsMjEgQEAgZmluZF9tYWluX3BzeW10 YWIgKHZvaWQpCiAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsKICAgIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlOwogIApAQCAtMjAwMjMsNyArMTQyMjMsNyBAQCBpbmRleCA4ZDlkNzJjLi44 MmUwMTYzIDEwMDY0NAogKyAgICByZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSk7CiAr ICAgIEFMTF9PQkpGSUxFX1BTWU1UQUJTIChvYmpmaWxlLCBwc3QpCiArICAgIHsKLSsgICAgICBp ZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5fbmFtZSAoKSwgMSwgVkFSX0RPTUFJ TikpCisrICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25hbWUgKCks IE5VTEwsIDEsIFZBUl9ET01BSU4pKQogKwl7CiArCSAgcmV0dXJuIHBzdDsKICsJfQpAQCAtMjAw MzIsNDkgKzE0MjMyLDkgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICsKICsgIEFM TF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwgcHN0KQogICAgewotLSAgICBpZiAobG9va3Vw X3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5fbmFtZSAoKSwgTlVMTCwgMSwgVkFSX0RPTUFJTikp Ci0rICAgIGlmIChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbWFpbl9uYW1lICgpLCAxLCBW QVJfRE9NQUlOKSkKKyAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25h bWUgKCksIE5VTEwsIDEsIFZBUl9ET01BSU4pKQogICAgICAgIHsKLSAJcmV0dXJuIChwc3QpOwot ICAgICAgIH0KLUBAIC0xOTI1LDE0ICsxOTcwLDEwIEBAIGZpbmRfbWFpbl9wc3ltdGFiICh2b2lk KQotICAgIHNlYXJjaCBvbiB0aGUgc3ltYm9scy4gIEVhY2ggc3ltYm9sIHdoaWNoIGlzIG1hcmtl ZCBhcyBiZWluZyBhIE9iakMvQysrCi0gICAgc3ltYm9sIChsYW5ndWFnZV9jcGx1cyBvciBsYW5n dWFnZV9vYmpjIHNldCkgaGFzIGJvdGggdGhlIGVuY29kZWQgYW5kCi0gICAgbm9uLWVuY29kZWQg bmFtZXMgdGVzdGVkIGZvciBhIG1hdGNoLgotLQotLSAgIElmIExJTktBR0VfTkFNRSBpcyBub24t TlVMTCwgdmVyaWZ5IHRoYXQgYW55IHN5bWJvbCB3ZSBmaW5kIGhhcyB0aGlzCi0tICAgcGFydGlj dWxhciBtYW5nbGVkIG5hbWUuCi0gKi8KLSAKLSBzdHJ1Y3Qgc3ltYm9sICoKLSBsb29rdXBfYmxv Y2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpuYW1lLAot LQkJICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOwotQEAgLTE5NDUs OSArMTk4Niw3IEBAIGxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxv Y2ssIGNvbnN0IGNoYXIgKm5hbWUsCi0gCSAgIHN5bSA9IGRpY3RfaXRlcl9uYW1lX25leHQgKG5h bWUsICZpdGVyKSkKLSAJewotIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9M QU5HVUFHRSAoc3ltKSwKLS0JCQkJICAgICBTWU1CT0xfRE9NQUlOIChzeW0pLCBkb21haW4pCi0t CSAgICAgICYmIChsaW5rYWdlX25hbWUgIT0gTlVMTAotLQkJICA/IHN0cmNtcCAoU1lNQk9MX0xJ TktBR0VfTkFNRSAoc3ltKSwgbGlua2FnZV9uYW1lKSA9PSAwIDogMSkpCi0rCQkJCSAgICAgU1lN Qk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKSkKLSAJICAgIHJldHVybiBzeW07Ci0gCX0KLSAgICAg ICByZXR1cm4gTlVMTDsKLUBAIC0xOTY3LDkgKzIwMDYsNyBAQCBsb29rdXBfYmxvY2tfc3ltYm9s IChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpuYW1lLAotIAkgICBzeW0g PSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAmaXRlcikpCi0gCXsKLSAJICBpZiAoc3ltYm9s X21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKHN5bSksCi0tCQkJCSAgICAgU1lNQk9M X0RPTUFJTiAoc3ltKSwgZG9tYWluKQotLQkgICAgICAmJiAobGlua2FnZV9uYW1lICE9IE5VTEwK LS0JCSAgPyBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGxpbmthZ2VfbmFtZSkg PT0gMCA6IDEpKQotKwkJCQkgICAgIFNZTUJPTF9ET01BSU4gKHN5bSksIGRvbWFpbikpCi0gCSAg ICB7Ci0gCSAgICAgIHN5bV9mb3VuZCA9IHN5bTsKLSAJICAgICAgaWYgKCFTWU1CT0xfSVNfQVJH VU1FTlQgKHN5bSkpCi1AQCAtMzE3Miw3ICszMjA5LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIg KnJlZ2V4cCwgZG9tYWluX2VudW0ga2luZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKK0BA IC0zMjYxLDcgKzMzMTEsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5f ZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAogICAgICAgbWF0Y2hpbmcgdGhl IHJlZ2V4cC4gIFRoYXQgd2F5IHdlIGRvbid0IGhhdmUgdG8gcmVwcm9kdWNlIGFsbCBvZgogICAg ICAgdGhlIG1hY2hpbmVyeSBiZWxvdy4gKi8KICAKQEAgLTIwMDg0LDgxICsxNDI0NCwyMiBAQCBp bmRleCA4ZDlkNzJjLi44MmUwMTYzIDEwMDY0NAogICAgICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wg Kipib3VuZCwgKipnYm91bmQsICoqc2JvdW5kOwogICAgICBpbnQga2VlcF9nb2luZyA9IDE7CiBk aWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCi1pbmRleCA3NDBkNGUwLi40 NjFmZjk1IDEwMDY0NAoraW5kZXggODAwZmZkOC4uM2VkNjk0NyAxMDA2NDQKIC0tLSBhL2dkYi9z eW10YWIuaAogKysrIGIvZ2RiL3N5bXRhYi5oCi1AQCAtMTcxLDkgKzE3MSw2IEBAIGV4dGVybiBD T1JFX0FERFIgc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChDT1JFX0FERFIsIHN0cnVjdCBvYmpf c2VjdGlvbiAqKTsKLSAjZGVmaW5lIFNZTUJPTF9TRUNUSU9OKHN5bWJvbCkJCShzeW1ib2wpLT5n aW5mby5zZWN0aW9uCi0gI2RlZmluZSBTWU1CT0xfT0JKX1NFQ1RJT04oc3ltYm9sKQkoc3ltYm9s KS0+Z2luZm8ub2JqX3NlY3Rpb24KLSAKLS0jZGVmaW5lIFNZTUJPTF9DUExVU19ERU1BTkdMRURf TkFNRShzeW1ib2wpCVwKLS0gIChzeW1ib2wpLT5naW5mby5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1 c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZQotLQotIC8qIEluaXRpYWxpemVzIHRoZSBsYW5ndWFn ZSBkZXBlbmRlbnQgcG9ydGlvbiBvZiBhIHN5bWJvbAotICAgIGRlcGVuZGluZyB1cG9uIHRoZSBs YW5ndWFnZSBmb3IgdGhlIHN5bWJvbC4gKi8KLSAjZGVmaW5lIFNZTUJPTF9JTklUX0xBTkdVQUdF X1NQRUNJRklDKHN5bWJvbCxsYW5ndWFnZSkgXAotQEAgLTM5NCw3ICszOTEsMTMgQEAgdHlwZWRl ZiBlbnVtIGRvbWFpbl9lbnVtX3RhZworQEAgLTM5Niw3ICszOTYsMTAgQEAgdHlwZWRlZiBlbnVt IGRvbWFpbl9lbnVtX3RhZwogICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKICAgIC8qIEFsbCBkZWZp bmVkIHR5cGVzICovCiAtICBUWVBFU19ET01BSU4KICsgIFRZUEVTX0RPTUFJTiwKICsKLSsgIC8q IEZvcnRyYW4gY29tbW9uIGJsb2Nrcy4gIFRoZWlyIG5hbWluZyBtdXN0IGJlIHNlcGFyYXRlIGZy b20gVkFSX0RPTUFJTi4gICovCi0rICBDT01NT05fQkxPQ0tfRE9NQUlOLAotKwogKyAgLyogRm9y dHJhbiBtb2R1bGUuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZS4gICovCiArICBNT0RV TEVfRE9NQUlOCiAgfQogIGRvbWFpbl9lbnVtOwogIAotQEAgLTk5MCw3ICs5OTMsNiBAQCBleHRl cm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1 Y3QgYmxvY2sgKiwKLSAgICB0aGF0IGNhbid0IHRoaW5rIG9mIGFueXRoaW5nIGJldHRlciB0byBk by4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1cF9zeW1ib2xfbm9u bG9jYWwgKGNvbnN0IGNoYXIgKiwKLS0JCQkJCQkgICAgY29uc3QgY2hhciAqLAotIAkJCQkJCSAg ICBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKLSAJCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0pOwot IAotQEAgLTEwMDEsNyArMTAwMyw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpiYXNpY19sb29r dXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCi0gICAgaXMgb25lOyBkbyBub3RoaW5n IGlmIEJMT0NLIGlzIE5VTEwgb3IgYSBnbG9iYWwgYmxvY2suICAqLwotIAotIGV4dGVybiBzdHJ1 Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJ CSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgICAgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKLSAJCQkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotQEAg LTEwMDksNyArMTAxMCw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX3N0 YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKLSAgICBuZWNlc3NhcnkpLiAgKi8KLSAKLSBleHRlcm4g c3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0t CQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICAgIGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2ssCi0gCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSAK LUBAIC0xMDE4LDIxICsxMDE4LDE4IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3lt Ym9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKLSAgICB3aWxsIGZpeCB1cCB0aGUgc3ltYm9s IGlmIG5lY2Vzc2FyeS4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1i b2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICAgICAgIGNvbnN0IGNoYXIg KmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAot IAkJCQkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0gCi0gLyogTG9va3VwIGEg cGFydGlhbCBzeW1ib2wuICAqLwotIAotIGV4dGVybiBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKmxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICosCi0tCQkJCQkJICAg ICBjb25zdCBjaGFyICosCi0gCQkJCQkJICAgICBjb25zdCBjaGFyICosIGludCwKLSAJCQkJCQkg ICAgIGRvbWFpbl9lbnVtKTsKLSAKLSAvKiBsb29rdXAgYSBzeW1ib2wgYnkgbmFtZSwgd2l0aGlu IGEgc3BlY2lmaWVkIGJsb2NrICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9i bG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqLCBjb25zdCBjaGFyICosCi0tCQkJCQkg ICBjb25zdCBjaGFyICosCi0gCQkJCQkgICBjb25zdCBkb21haW5fZW51bSk7Ci0gCi0gLyogbG9v a3VwIGEgW3N0cnVjdCwgdW5pb24sIGVudW1dIGJ5IG5hbWUsIHdpdGhpbiBhIHNwZWNpZmllZCBi bG9jayAqLwotQEAgLTEwNjIsNiArMTA1OSw4IEBAIGV4dGVybiB2b2lkIGNsZWFyX3BjX2Z1bmN0 aW9uX2NhY2hlICh2b2lkKTsKK0BAIC0xMDY1LDYgKzEwNjgsOCBAQCBleHRlcm4gdm9pZCBjbGVh cl9wY19mdW5jdGlvbl9jYWNoZSAodm9pZCk7CiAgCiAgLyogZnJvbSBzeW10YWIuYzogKi8KICAK QEAgLTIwMTY3LDE2ICsxNDI2OCw4IEBAIGluZGV4IDc0MGQ0ZTAuLjQ2MWZmOTUgMTAwNjQ0CiAg LyogbG9va3VwIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGJ5IGZpbGVuYW1lICovCiAgCiAgZXh0ZXJu IHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqbG9va3VwX3BhcnRpYWxfc3ltdGFiIChjb25zdCBjaGFy ICopOwotQEAgLTEzNTYsNyArMTM1NSw2IEBAIGV4dGVybiAvKmNvbnN0ICovIGNoYXIgKm1haW5f bmFtZSAodm9pZCk7Ci0gLyogQ2hlY2sgZ2xvYmFsIHN5bWJvbHMgaW4gb2JqZmlsZS4gICovCi0g c3RydWN0IHN5bWJvbCAqbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJ CQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkJICBjb25zdCBkb21haW5fZW51 bSBkb21haW4pOwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKIGRpZmYgLS1n aXQgYS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIg MTAwNjQ0CitpbmRleCBlZGY4Njk3Li5hN2VkMjA2IDEwMDY0NAogLS0tIGEvZ2RiL3RhcmdldC5j CiArKysgYi9nZGIvdGFyZ2V0LmMKIEBAIC0xMjQsNiArMTI0LDggQEAgc3RhdGljIGludCBkZWJ1 Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CkBAIC0yMDE4OCw3 ICsxNDI4MSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgc3RhdGljIGludCBk ZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOwogIAogIHN0YXRpYyBpbnQgZGVi dWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQURE UiAqKTsKLUBAIC02MjIsNiArNjI0LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQor QEAgLTYyNCw2ICs2MjYsNyBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCiAgICAgICAg SU5IRVJJVCAodG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQsIHQpOwogICAgICAgIElOSEVSSVQgKHRv X2luc2VydF93YXRjaHBvaW50LCB0KTsKICAgICAgICBJTkhFUklUICh0b19yZW1vdmVfd2F0Y2hw b2ludCwgdCk7CkBAIC0yMDE5Niw3ICsxNDI4OSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIg MTAwNjQ0CiAgICAgICAgSU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwogICAg ICAgIElOSEVSSVQgKHRvX2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOwogICAgICAgIElO SEVSSVQgKHRvX2hhdmVfY29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzMzLDYgKzcz Niw5IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03NDcsNiArNzUwLDkgQEAg dXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQogICAgZGVfZmF1bHQgKHRvX3JlbW92ZV93YXRj aHBvaW50LAogIAkgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQpKQogIAkgICAgcmV0 dXJuX21pbnVzX29uZSk7CkBAIC0yMDIwNiw3ICsxNDI5OSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3 ZmFiNzIgMTAwNjQ0CiAgICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAogIAkg ICAgKGludCAoKikgKHZvaWQpKQogIAkgICAgcmV0dXJuX3plcm8pOwotQEAgLTMxNzMsNiArMzE3 OSwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCB0eXBlKQorQEAgLTMzMDIsNiArMzMwOCwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQogICAgcmV0dXJuIHJl dHZhbDsKICB9CiAgCkBAIC0yMDIyNiw3ICsxNDMxOSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFi NzIgMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBkZWJ1Z190b190ZXJtaW5hbF9pbml0ICh2b2lkKQog IHsKLUBAIC0zNDIwLDYgKzM0MzksNyBAQCBzZXR1cF90YXJnZXRfZGVidWcgKHZvaWQpCitAQCAt MzU0OSw2ICszNTY4LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQogICAgY3VycmVudF90 YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtw b2ludDsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9f aW5zZXJ0X3dhdGNocG9pbnQ7CiAgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2lu dCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwpAQCAtMjAyMzUsMTAgKzE0MzI4LDEwIEBA IGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgICBjdXJyZW50X3RhcmdldC50b19zdG9w cGVkX2RhdGFfYWRkcmVzcyA9IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzOwogICAgY3Vy cmVudF90YXJnZXQudG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9IGRlYnVnX3RvX3dh dGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIv Z2RiL3RhcmdldC5oCi1pbmRleCBiMWNiODUyLi4zYzA2ZWJhIDEwMDY0NAoraW5kZXggYTAyMGJm Ny4uMmM1ZTU4ZSAxMDA2NDQKIC0tLSBhL2dkYi90YXJnZXQuaAogKysrIGIvZ2RiL3RhcmdldC5o Ci1AQCAtMzk1LDYgKzM5NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCitAQCAtNDE5LDYgKzQxOSw3 IEBAIHN0cnVjdCB0YXJnZXRfb3BzCiAgICAgIGludCAoKnRvX3JlbW92ZV9od19icmVha3BvaW50 KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwogICAgICBpbnQg KCp0b19yZW1vdmVfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwogICAgICBpbnQg KCp0b19pbnNlcnRfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwpAQCAtMjAyNDYs MTYgKzE0MzM5LDcgQEAgaW5kZXggYjFjYjg1Mi4uM2MwNmViYSAxMDA2NDQKICAgICAgaW50ICgq dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7CiAgICAgIGludCB0b19oYXZlX3N0ZXBw YWJsZV93YXRjaHBvaW50OwogICAgICBpbnQgdG9faGF2ZV9jb250aW51YWJsZV93YXRjaHBvaW50 OwotQEAgLTExMjQsNyArMTEyNSw3IEBAIGV4dGVybiBjaGFyICpub3JtYWxfcGlkX3RvX3N0ciAo cHRpZF90IHB0aWQpOwotIC8qIEhhcmR3YXJlIHdhdGNocG9pbnQgaW50ZXJmYWNlcy4gICovCi0g Ci0gLyogUmV0dXJucyBub24temVybyBpZiB3ZSB3ZXJlIHN0b3BwZWQgYnkgYSBoYXJkd2FyZSB3 YXRjaHBvaW50IChtZW1vcnkgcmVhZCBvcgotLSAgIHdyaXRlKS4gICovCi0rICAgd3JpdGUpLiAg T25seSB0aGUgSU5GRVJJT1JfUFRJRCB0YXNrIGlzIGJlaW5nIHF1ZXJpZWQuICAqLwotIAotICNk ZWZpbmUgdGFyZ2V0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCBcCi0gICAgKCpjdXJyZW50X3Rhcmdl dC50b19zdG9wcGVkX2J5X3dhdGNocG9pbnQpCi1AQCAtMTE2NiwxNCArMTE2NywyNiBAQCBleHRl cm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKK0BAIC0xMjYyLDYgKzEy NjMsMTUgQEAgZXh0ZXJuIGNoYXIgKm5vcm1hbF9waWRfdG9fc3RyIChwdGlkX3QgcHRpZCk7CiAg I2RlZmluZQl0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQoYWRkciwgbGVuLCB0eXBlKQlcCiAgICAg ICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50KSAoYWRkciwgbGVuLCB0eXBl KQogIApAQCAtMjAyNzEsMjAgKzE0MzU1LDcgQEAgaW5kZXggYjFjYjg1Mi4uM2MwNmViYSAxMDA2 NDQKICAjZGVmaW5lIHRhcmdldF9pbnNlcnRfaHdfYnJlYWtwb2ludChnZGJhcmNoLCBicF90Z3Qp IFwKICAgICAgICgqY3VycmVudF90YXJnZXQudG9faW5zZXJ0X2h3X2JyZWFrcG9pbnQpIChnZGJh cmNoLCBicF90Z3QpCiAgCi0gI2RlZmluZSB0YXJnZXRfcmVtb3ZlX2h3X2JyZWFrcG9pbnQoZ2Ri YXJjaCwgYnBfdGd0KSBcCi0gICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV9od19icmVh a3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQotIAotLSNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0 YV9hZGRyZXNzKHRhcmdldCwgeCkgXAotLSAgICAoKnRhcmdldC50b19zdG9wcGVkX2RhdGFfYWRk cmVzcykgKHRhcmdldCwgeCkKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgdGFyZ2V0IGtub3dzIHRo ZSBkYXRhIGFkZHJlc3Mgd2hpY2ggdHJpZ2dlcmVkIHRoaXMKLSsgICB0YXJnZXRfc3RvcHBlZF9i eV93YXRjaHBvaW50LCBpbiBzdWNoIGNhc2UgcGxhY2UgaXQgdG8gKkFERFJfUC4gIE9ubHkgdGhl Ci0rICAgSU5GRVJJT1JfUFRJRCB0YXNrIGlzIGJlaW5nIHF1ZXJpZWQuICAqLwotKyNkZWZpbmUg dGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNzKHRhcmdldCwgYWRkcl9wKSBcCi0rICAgICgqdGFy Z2V0LnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKSAodGFyZ2V0LCBhZGRyX3ApCi0gCi0gI2RlZmlu ZSB0YXJnZXRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSh0YXJnZXQsIGFkZHIsIHN0YXJ0 LCBsZW5ndGgpIFwKLSAgICgqdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2Up ICh0YXJnZXQsIGFkZHIsIHN0YXJ0LCBsZW5ndGgpCi1AQCAtMTIwMyw2ICsxMjE2LDIwIEBAIGV4 dGVybiBpbnQgdGFyZ2V0X3NlYXJjaF9tZW1vcnkgKENPUkVfQUREUiBzdGFydF9hZGRyLAorQEAg LTEzMDIsNiArMTMxMiwyMCBAQCBleHRlcm4gaW50IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JF X0FERFIgc3RhcnRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9O R0VTVCBwYXR0ZXJuX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT1JF X0FERFIgKmZvdW5kX2FkZHJwKTsKICAKQEAgLTIwMzAyLDMxOCArMTQzNzMsOSBAQCBpbmRleCBi MWNiODUyLi4zYzA2ZWJhIDEwMDY0NAogKwogK3ZvaWQgcHV0X2JpdHMgKGJmZF91aW50NjRfdCBk YXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRfYm9vbGVhbiBiaWdfcCk7CiArCi0gLyogQ29t bWFuZCBsb2dnaW5nIGZhY2lsaXR5LiAgKi8KKyAvKiBUcmFjZXBvaW50LXJlbGF0ZWQgb3BlcmF0 aW9ucy4gICovCiAgCi0gI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJCQkJCQlcCi1AQCAt MTMyMiw2ICsxMzQ5LDE0IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X29wcyAqZmluZF90YXJnZXRf YmVuZWF0aCAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gCi0gZXh0ZXJuIGNoYXIgKnRhcmdldF9n ZXRfb3NkYXRhIChjb25zdCBjaGFyICp0eXBlKTsKLSAKLSsvKiBSZWFkIE9TIGRhdGEgb2JqZWN0 IG9mIHR5cGUgVFlQRSBmcm9tIHRoZSB0YXJnZXQsIGFuZCByZXR1cm4gaXQgaW4KLSsgICBYTUwg Zm9ybWF0LiAgVGhlIHJlc3VsdCBpcyBOVUwtdGVybWluYXRlZCBhbmQgcmV0dXJuZWQgYXMgYSBz dHJpbmcsCi0rICAgYWxsb2NhdGVkIHVzaW5nIHhtYWxsb2MuICBJZiBhbiBlcnJvciBvY2N1cnMg b3IgdGhlIHRyYW5zZmVyIGlzCi0rICAgdW5zdXBwb3J0ZWQsIE5VTEwgaXMgcmV0dXJuZWQuICBF bXB0eSBvYmplY3RzIGFyZSByZXR1cm5lZCBhcwotKyAgIGFsbG9jYXRlZCBidXQgZW1wdHkgc3Ry aW5ncy4gICovCi0rCi0rZXh0ZXJuIGNoYXIgKnRhcmdldF9nZXRfb3NkYXRhIChjb25zdCBjaGFy ICp0eXBlKTsKLSsKLSAMCi0gLyogU3R1ZmYgdGhhdCBzaG91bGQgYmUgc2hhcmVkIGFtb25nIHRo ZSB2YXJpb3VzIHJlbW90ZSB0YXJnZXRzLiAgKi8KLSAKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3Bvd2VycGMtcG93ZXI3LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv cG93ZXJwYy1wb3dlcjcuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u YWUzMDFkYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9wb3dl cnBjLXBvd2VyNy5leHAKLUBAIC0wLDAgKzEsMTc1IEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFRlc3QgUG93ZXJQQyBQb3dlcjcgaW5zdHJ1Y3Rpb25z IGRpc2Fzc2VtYmx5LgotKwotK2lmIHshW2lzdGFyZ2V0ICJwb3dlcnBjKi0qLSoiXX0gdGhlbiB7 Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIFBvd2VyUEMgUG93ZXI3IGluc3RydWN0aW9ucyBkaXNh c3NlbWJseS4iCi0rICAgIHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgInBvd2VycGMtcG93 ZXI3IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LnMKLStzZXQgb2JqZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9Lm8KLSsKLStpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpmaWxlfSIgb2JqZWN0IHtkZWJ1Z31dICE9ICIi IH0gewotKyAgICB1bnRlc3RlZCAiUG93ZXJQQyBQb3dlcjcgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2Vt Ymx5IgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStn ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke29iamZpbGV9 Ci0rIAotKwotKyMgRGlzYXNzZW1ibGUgdGhlIGZ1bmN0aW9uLgotKwotK3NldCB0ZXN0ICJkaXNh c3MgZnVuYyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXHJc bkR1bXAgb2YgYXNzZW1ibGVyIGNvZGUgZm9yIGZ1bmN0aW9uIGZ1bmM6KFxyXG4uKlxyXG4pRW5k IG9mIGFzc2VtYmxlciBkdW1wLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldCBmdW5jICRleHBl Y3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rCi0rcHJvYyBpbnN0 cl90b19wYXR0IHtvZmZzZXQgaW5zdHJ9IHsKLSsgICAgIyAweDAwMDAwMDAwMDAwMDAwMTggPGZ1 bmMrMjQ+OglzdHh2ZDJ4IHZzNDMscjQscjUKLSsgICAgcmV0dXJuICIuKlxyXG5bc3RyaW5nIG1h cCB7MHggMHgwKn0gJG9mZnNldF0gPGZ1bmNcXCs/XFswLTlcXSo+OlxbIFx0XF0qW3N0cmluZyBt YXAgW2xpc3QgeyB9ICJcWyBcdFxdKyIgLiB7XC59XSAkaW5zdHJdXFsgXHRcXSpcclxuLioiCi0r fQotKwotKyMgS0ZBSUwgc3RyaW5ncyB3b3VsZCBub3QgZXhpc3QgaWYgLU1hbnkgd291bGQgcHJp bnQgdGhlIHNhbWUgYXMgLU1wb3dlcjcuCi0rIyBUaGF0IG1lYW5zIHRoZSBwb3dlcjcgZm9ybSBz aG91bGQgYmUgdGhlIHByZWZlcnJlZCBvbmUuCi0rIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAwOS0wMy90aHJlYWRzLmh0bWwjMDAwMjAKLSsKLStwcm9jIGZ1bmNfY2hl Y2sge29mZnNldCBpbnN0ciB7a2ZhaWwgIiJ9fSB7Ci0rICAgIGdsb2JhbCBmdW5jCi0rCi0rICAg IHNldCB0ZXN0ICJGb3VuZCAkb2Zmc2V0OiAkaW5zdHIiCi0rICAgIGlmIFtyZWdleHAgLW5vY2Fz ZSAtbGluZSBbaW5zdHJfdG9fcGF0dCAkb2Zmc2V0ICRpbnN0cl0gJGZ1bmNdIHsKLSsJcGFzcyAk dGVzdAotKyAgICB9IGVsc2VpZiB7JGtmYWlsICE9ICIiICYmIFtyZWdleHAgLW5vY2FzZSAtbGlu ZSBbaW5zdHJfdG9fcGF0dCAkb2Zmc2V0ICRrZmFpbF0gJGZ1bmNdfSB7Ci0rCWtmYWlsIGdkYi9O Tk5OICR0ZXN0Ci0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30KLSsKLStm dW5jX2NoZWNrICAgMHgwICJseHZkMnggIHZzMyxyNCxyNSIKLStmdW5jX2NoZWNrICAgMHg0ICJs eHZkMnV4IHZzMyxyNCxyNSIKLStmdW5jX2NoZWNrICAgMHg4ICJseHZkMnggIHZzNDMscjQscjUi Ci0rZnVuY19jaGVjayAgIDB4YyAibHh2ZDJ1eCB2czQzLHI0LHI1IgotK2Z1bmNfY2hlY2sgIDB4 MTAgInN0eHZkMnggdnMzLHI0LHI1IgotK2Z1bmNfY2hlY2sgIDB4MTQgInN0eHZkMnV4IHZzMyxy NCxyNSIKLStmdW5jX2NoZWNrICAweDE4ICJzdHh2ZDJ4IHZzNDMscjQscjUiCi0rZnVuY19jaGVj ayAgMHgxYyAic3R4dmQydXggdnM0MyxyNCxyNSIKLStmdW5jX2NoZWNrICAweDIwICJ4eG1yZ2hk IHZzMyx2czQsdnM1IgotK2Z1bmNfY2hlY2sgIDB4MjQgInh4bXJnaGQgdnM0Myx2czQ0LHZzNDUi Ci0rZnVuY19jaGVjayAgMHgyOCAieHhtcmdsZCB2czMsdnM0LHZzNSIKLStmdW5jX2NoZWNrICAw eDJjICJ4eG1yZ2xkIHZzNDMsdnM0NCx2czQ1IgotK2Z1bmNfY2hlY2sgIDB4MzAgInh4bXJnaGQg dnMzLHZzNCx2czUiCi0rZnVuY19jaGVjayAgMHgzNCAieHhtcmdoZCB2czQzLHZzNDQsdnM0NSIK LStmdW5jX2NoZWNrICAweDM4ICJ4eG1yZ2xkIHZzMyx2czQsdnM1IgotK2Z1bmNfY2hlY2sgIDB4 M2MgInh4bXJnbGQgdnM0Myx2czQ0LHZzNDUiCi0rZnVuY19jaGVjayAgMHg0MCAieHhwZXJtZGkg dnMzLHZzNCx2czUsMSIKLStmdW5jX2NoZWNrICAweDQ0ICJ4eHBlcm1kaSB2czQzLHZzNDQsdnM0 NSwxIgotK2Z1bmNfY2hlY2sgIDB4NDggInh4cGVybWRpIHZzMyx2czQsdnM1LDIiCi0rZnVuY19j aGVjayAgMHg0YyAieHhwZXJtZGkgdnM0Myx2czQ0LHZzNDUsMiIKLStmdW5jX2NoZWNrICAweDUw ICJ4dm1vdmRwIHZzMyx2czQiCi0rZnVuY19jaGVjayAgMHg1NCAieHZtb3ZkcCB2czQzLHZzNDQi Ci0rZnVuY19jaGVjayAgMHg1OCAieHZtb3ZkcCB2czMsdnM0IgotK2Z1bmNfY2hlY2sgIDB4NWMg Inh2bW92ZHAgdnM0Myx2czQ0IgotK2Z1bmNfY2hlY2sgIDB4NjAgInh2Y3BzZ25kcCB2czMsdnM0 LHZzNSIKLStmdW5jX2NoZWNrICAweDY0ICJ4dmNwc2duZHAgdnM0Myx2czQ0LHZzNDUiCi0rZnVu Y19jaGVjayAgMHg2OCAid2FpdCIKLStmdW5jX2NoZWNrICAweDZjICJ3YWl0IgotK2Z1bmNfY2hl Y2sgIDB4NzAgIndhaXRyc3YiCi0rZnVuY19jaGVjayAgMHg3NCAid2FpdHJzdiIKLStmdW5jX2No ZWNrICAweDc4ICJ3YWl0aW1wbCIKLStmdW5jX2NoZWNrICAweDdjICJ3YWl0aW1wbCIKLStmdW5j X2NoZWNrICAweDgwICJkb3plIgotK2Z1bmNfY2hlY2sgIDB4ODQgIm5hcCIKLStmdW5jX2NoZWNr ICAweDg4ICJzbGVlcCIKLStmdW5jX2NoZWNrICAweDhjICJydndpbmtsZSIKLStmdW5jX2NoZWNr ICAweDkwICJwcnR5dyAgIHIzLHI0IgotK2Z1bmNfY2hlY2sgIDB4OTQgInBydHlkICAgcjEzLHIx NCIKLStmdW5jX2NoZWNrICAweDk4ICJtZmNmYXIgIHIxMCIgICAgICAgICAgICJtZnNwciAgIHIx MCwyOCIKLStmdW5jX2NoZWNrICAweDljICJtdGNmYXIgIHIxMSIgICAgICAgICAgICJtdHNwciAg IDI4LHIxMSIKLStmdW5jX2NoZWNrICAweGEwICJjbXBiICAgIHIzLHI0LHI1IgotK2Z1bmNfY2hl Y2sgIDB4YTQgImx3emNpeCAgcjEwLHIxMSxyMTIiCi0rZnVuY19jaGVjayAgMHhhOCAiZGFkZCAg ICBmMTYsZjE3LGYxOCIKLStmdW5jX2NoZWNrICAweGFjICJkYWRkcSAgIGYyMCxmMjIsZjI0Igot K2Z1bmNfY2hlY2sgIDB4YjAgImRzcyAgICAgMyIKLStmdW5jX2NoZWNrICAweGI0ICJkc3NhbGwi Ci0rZnVuY19jaGVjayAgMHhiOCAiZHN0ICAgICByNSxyNCwxIgotK2Z1bmNfY2hlY2sgIDB4YmMg ImRzdHQgICAgcjgscjcsMCIKLStmdW5jX2NoZWNrICAweGMwICJkc3RzdCAgIHI1LHI2LDMiCi0r ZnVuY19jaGVjayAgMHhjNCAiZHN0c3R0ICByNCxyNSwyIgotK2Z1bmNfY2hlY2sgIDB4YzggImRp dndlICAgcjEwLHIxMSxyMTIiCi0rZnVuY19jaGVjayAgMHhjYyAiZGl2d2UuICByMTEscjEyLHIx MyIKLStmdW5jX2NoZWNrICAweGQwICJkaXZ3ZW8gIHIxMixyMTMscjE0IgotK2Z1bmNfY2hlY2sg IDB4ZDQgImRpdndlby4gcjEzLHIxNCxyMTUiCi0rZnVuY19jaGVjayAgMHhkOCAiZGl2d2V1ICBy MTAscjExLHIxMiIKLStmdW5jX2NoZWNrICAweGRjICJkaXZ3ZXUuIHIxMSxyMTIscjEzIgotK2Z1 bmNfY2hlY2sgIDB4ZTAgImRpdndldW8gcjEyLHIxMyxyMTQiCi0rZnVuY19jaGVjayAgMHhlNCAi ZGl2d2V1by4gcjEzLHIxNCxyMTUiCi0rZnVuY19jaGVjayAgMHhlOCAiYnBlcm1kICByNyxyMTcs cjI3IgotK2Z1bmNfY2hlY2sgIDB4ZWMgInBvcGNudHcgcjEwLHIyMCIKLStmdW5jX2NoZWNrICAw eGYwICJwb3BjbnRkIHIxMCxyMjAiCi0rZnVuY19jaGVjayAgMHhmNCAibGRicnggICByMjAscjIx LHIyMiIKLStmdW5jX2NoZWNrICAweGY4ICJzdGRicnggIHIyMCxyMjEscjIyIgotK2Z1bmNfY2hl Y2sgIDB4ZmMgImxmaXd6eCAgZjEwLDAscjEwIgotK2Z1bmNfY2hlY2sgMHgxMDAgImxmaXd6eCAg ZjEwLHI5LHIxMCIKLStmdW5jX2NoZWNrIDB4MTA0ICJmY2ZpZHMgIGY0LGY1IgotK2Z1bmNfY2hl Y2sgMHgxMDggImZjZmlkcy4gZjQsZjUiCi0rZnVuY19jaGVjayAweDEwYyAiZmNmaWR1cyBmNCxm NSIKLStmdW5jX2NoZWNrIDB4MTEwICJmY2ZpZHVzLiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTE0 ICJmY3Rpd3UgIGY0LGY1IgotK2Z1bmNfY2hlY2sgMHgxMTggImZjdGl3dS4gZjQsZjUiCi0rZnVu Y19jaGVjayAweDExYyAiZmN0aXd1eiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTIwICJmY3Rpd3V6 LiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTI0ICJmY3RpZHUgIGY0LGY1IgotK2Z1bmNfY2hlY2sg MHgxMjggImZjdGlkdS4gZjQsZjUiCi0rZnVuY19jaGVjayAweDEyYyAiZmN0aWR1eiBmNCxmNSIK LStmdW5jX2NoZWNrIDB4MTMwICJmY3RpZHV6LiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTM0ICJm Y2ZpZHUgIGY0LGY1IgotK2Z1bmNfY2hlY2sgMHgxMzggImZjZmlkdS4gZjQsZjUiCi0rZnVuY19j aGVjayAweDEzYyAiZnRkaXYgICBjcjAsZjEwLGYxMSIKLStmdW5jX2NoZWNrIDB4MTQwICJmdGRp diAgIGNyNyxmMTAsZjExIgotK2Z1bmNfY2hlY2sgMHgxNDQgImZ0c3FydCAgY3IwLGYxMCIKLStm dW5jX2NoZWNrIDB4MTQ4ICJmdHNxcnQgIGNyNyxmMTAiCi0rZnVuY19jaGVjayAweDE0YyAiZGNi dHQgICByOCxyOSIgICAgICAgICAiZGNidCAgICAxNixyOCxyOSIKLStmdW5jX2NoZWNrIDB4MTUw ICJkY2J0c3R0IHI4LHI5IiAgICAgICAgICJkY2J0c3QgIDE2LHI4LHI5IgotK2Z1bmNfY2hlY2sg MHgxNTQgImRjZmZpeCAgZjEwLGYxMiIKLStmdW5jX2NoZWNrIDB4MTU4ICJkY2ZmaXguIGYyMCxm MjIiCi0rZnVuY19jaGVjayAweDE1YyAibGJhcnggICByMTAscjExLHIxMiIKLStmdW5jX2NoZWNr IDB4MTYwICJsYmFyeCAgIHIxMCxyMTEscjEyIgotK2Z1bmNfY2hlY2sgMHgxNjQgImxiYXJ4ICAg cjEwLHIxMSxyMTIsMSIKLStmdW5jX2NoZWNrIDB4MTY4ICJsaGFyeCAgIHIyMCxyMjEscjIyIgot K2Z1bmNfY2hlY2sgMHgxNmMgImxoYXJ4ICAgcjIwLHIyMSxyMjIiCi0rZnVuY19jaGVjayAweDE3 MCAibGhhcnggICByMjAscjIxLHIyMiwxIgotK2Z1bmNfY2hlY2sgMHgxNzQgInN0YmN4LiAgcjEw LHIxMSxyMTIiCi0rZnVuY19jaGVjayAweDE3OCAic3RoY3guICByMTAscjExLHIxMiIKLStmdW5j X2NoZWNrIDB4MTdjICJmcmUgICAgIGYxNCxmMTUiCi0rZnVuY19jaGVjayAweDE4MCAiZnJlLiAg ICBmMTQsZjE1IgotK2Z1bmNfY2hlY2sgMHgxODQgImZyZXMgICAgZjE0LGYxNSIKLStmdW5jX2No ZWNrIDB4MTg4ICJmcmVzLiAgIGYxNCxmMTUiCi0rZnVuY19jaGVjayAweDE4YyAiZnJzcXJ0ZSBm MTQsZjE1IgotK2Z1bmNfY2hlY2sgMHgxOTAgImZyc3FydGUuIGYxNCxmMTUiCi0rZnVuY19jaGVj ayAweDE5NCAiZnJzcXJ0ZXMgZjE0LGYxNSIKLStmdW5jX2NoZWNrIDB4MTk4ICJmcnNxcnRlcy4g ZjE0LGYxNSIKLStmdW5jX2NoZWNrIDB4MTljICJpc2VsICAgIHIyLHIzLHI0LDI4IgotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcucyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcucwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjk4YjJlNzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcucwotQEAgLTAsMCArMSwxMDcgQEAKLSsJLnRleHQKLSsJ Lmdsb2JsCWZ1bmMKLStmdW5jOgotKwkubG9uZwkweDdjNjQyZTk4CS8qICAgMDogbHh2ZDJ4ICB2 czMscjQscjUgICAgICAgICAqLwotKwkubG9uZwkweDdjNjQyZWQ4CS8qICAgNDogbHh2ZDJ1eCB2 czMscjQscjUgICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZTk5CS8qICAgODogbHh2ZDJ4ICB2 czQzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZWQ5CS8qICAgYzogbHh2ZDJ1eCB2 czQzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdjNjQyZjk4CS8qICAxMDogc3R4dmQyeCB2 czMscjQscjUgICAgICAgICAqLwotKwkubG9uZwkweDdjNjQyZmQ4CS8qICAxNDogc3R4dmQydXgg dnMzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZjk5CS8qICAxODogc3R4dmQyeCB2 czQzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZmQ5CS8qICAxYzogc3R4dmQydXgg dnM0MyxyNCxyNSAgICAgICAqLwotKwkubG9uZwkweGYwNjQyODUwCS8qICAyMDogeHhtcmdoZCB2 czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2ODU3CS8qICAyNDogeHhtcmdoZCB2 czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyYjUwCS8qICAyODogeHhtcmdsZCB2 czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2YjU3CS8qICAyYzogeHhtcmdsZCB2 czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyODUwCS8qICAzMDogeHhtcmdoZCB2 czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2ODU3CS8qICAzNDogeHhtcmdoZCB2 czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyYjUwCS8qICAzODogeHhtcmdsZCB2 czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2YjU3CS8qICAzYzogeHhtcmdsZCB2 czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyOTUwCS8qICA0MDogeHhwZXJtZGkg dnMzLHZzNCx2czUsMSAgICAqLwotKwkubG9uZwkweGYxNmM2OTU3CS8qICA0NDogeHhwZXJtZGkg dnM0Myx2czQ0LHZzNDUsMSAqLwotKwkubG9uZwkweGYwNjQyYTUwCS8qICA0ODogeHhwZXJtZGkg dnMzLHZzNCx2czUsMiAgICAqLwotKwkubG9uZwkweGYxNmM2YTU3CS8qICA0YzogeHhwZXJtZGkg dnM0Myx2czQ0LHZzNDUsMiAqLwotKwkubG9uZwkweGYwNjQyNzgwCS8qICA1MDogeHZtb3ZkcCB2 czMsdnM0ICAgICAgICAgICAqLwotKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1NDogeHZtb3ZkcCB2 czQzLHZzNDQgICAgICAgICAqLwotKwkubG9uZwkweGYwNjQyNzgwCS8qICA1ODogeHZtb3ZkcCB2 czMsdnM0ICAgICAgICAgICAqLwotKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1YzogeHZtb3ZkcCB2 czQzLHZzNDQgICAgICAgICAqLwotKwkubG9uZwkweGYwNjQyZjgwCS8qICA2MDogeHZjcHNnbmRw IHZzMyx2czQsdnM1ICAgICAqLwotKwkubG9uZwkweGYxNmM2Zjg3CS8qICA2NDogeHZjcHNnbmRw IHZzNDMsdnM0NCx2czQ1ICAqLwotKwkubG9uZwkweDdjMDAwMDdjCS8qICA2ODogd2FpdCAgICAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMDAwMDdjCS8qICA2Yzogd2FpdCAgICAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMjAwMDdjCS8qICA3MDogd2FpdHJzdiAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMjAwMDdjCS8qICA3NDogd2FpdHJzdiAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjNDAwMDdjCS8qICA3ODogd2FpdGltcGwg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjNDAwMDdjCS8qICA3Yzogd2FpdGltcGwg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwMzI0CS8qICA4MDogZG96ZSAgICAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwMzY0CS8qICA4NDogbmFwICAgICAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwM2E0CS8qICA4ODogc2xlZXAgICAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwM2U0CS8qICA4YzogcnZ3aW5rbGUg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjODMwMTM0CS8qICA5MDogcHJ0eXcgICBy MyxyNCAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdkY2QwMTc0CS8qICA5NDogcHJ0eWQgICBy MTMscjE0ICAgICAgICAgICAqLwotKwkubG9uZwkweDdkNWMwMmE2CS8qICA5ODogbWZjZmFyICBy MTAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdkN2MwM2E2CS8qICA5YzogbXRjZmFyICBy MTEgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjODMyYmY4CS8qICBhMDogY21wYiAgICBy MyxyNCxyNSAgICAgICAgICAqLwotKwkubG9uZwkweDdkNGI2NjJhCS8qICBhNDogbHd6Y2l4ICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweGVlMTE5MDA0CS8qICBhODogZGFkZCAgICBm MTYsZjE3LGYxOCAgICAgICAqLwotKwkubG9uZwkweGZlOTZjMDA0CS8qICBhYzogZGFkZHEgICBm MjAsZjIyLGYyNCAgICAgICAqLwotKwkubG9uZwkweDdjNjAwNjZjCS8qICBiMDogZHNzICAgICAz ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDAwNjZjCS8qICBiNDogZHNzYWxsICAg ICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMjUyMmFjCS8qICBiODogZHN0ICAgICBy NSxyNCwxICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDgzYWFjCS8qICBiYzogZHN0dCAgICBy OCxyNywwICAgICAgICAgICAqLwotKwkubG9uZwkweDdjNjUzMmVjCS8qICBjMDogZHN0c3QgICBy NSxyNiwzICAgICAgICAgICAqLwotKwkubG9uZwkweDdlNDQyYWVjCS8qICBjNDogZHN0c3R0ICBy NCxyNSwyICAgICAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MzU2CS8qICBjODogZGl2d2UgICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNmM2YjU3CS8qICBjYzogZGl2d2UuICBy MTEscjEyLHIxMyAgICAgICAqLwotKwkubG9uZwkweDdkOGQ3NzU2CS8qICBkMDogZGl2d2VvICBy MTIscjEzLHIxNCAgICAgICAqLwotKwkubG9uZwkweDdkYWU3ZjU3CS8qICBkNDogZGl2d2VvLiBy MTMscjE0LHIxNSAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MzE2CS8qICBkODogZGl2d2V1ICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNmM2YjE3CS8qICBkYzogZGl2d2V1LiBy MTEscjEyLHIxMyAgICAgICAqLwotKwkubG9uZwkweDdkOGQ3NzE2CS8qICBlMDogZGl2d2V1byBy MTIscjEzLHIxNCAgICAgICAqLwotKwkubG9uZwkweDdkYWU3ZjE3CS8qICBlNDogZGl2d2V1by4g cjEzLHIxNCxyMTUgICAgICAqLwotKwkubG9uZwkweDdlMjdkOWY4CS8qICBlODogYnBlcm1kICBy NyxyMTcscjI3ICAgICAgICAqLwotKwkubG9uZwkweDdlOGEwMmY0CS8qICBlYzogcG9wY250dyBy MTAscjIwICAgICAgICAgICAqLwotKwkubG9uZwkweDdlOGEwM2Y0CS8qICBmMDogcG9wY250ZCBy MTAscjIwICAgICAgICAgICAqLwotKwkubG9uZwkweDdlOTViNDI4CS8qICBmNDogbGRicnggICBy MjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdlOTViNTI4CS8qICBmODogc3RkYnJ4ICBy MjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdkNDA1NmVlCS8qICBmYzogbGZpd3p4ICBm MTAsMCxyMTAgICAgICAgICAqLwotKwkubG9uZwkweDdkNDk1NmVlCS8qIDEwMDogbGZpd3p4ICBm MTAscjkscjEwICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZTljCS8qIDEwNDogZmNmaWRzICBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZTlkCS8qIDEwODogZmNmaWRzLiBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZjljCS8qIDEwYzogZmNmaWR1cyBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZjlkCS8qIDExMDogZmNmaWR1cy4g ZjQsZjUgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFjCS8qIDExNDogZmN0aXd1ICBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFkCS8qIDExODogZmN0aXd1LiBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFlCS8qIDExYzogZmN0aXd1eiBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFmCS8qIDEyMDogZmN0aXd1ei4g ZjQsZjUgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVjCS8qIDEyNDogZmN0aWR1ICBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVkCS8qIDEyODogZmN0aWR1LiBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVlCS8qIDEyYzogZmN0aWR1eiBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVmCS8qIDEzMDogZmN0aWR1ei4g ZjQsZjUgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjljCS8qIDEzNDogZmNmaWR1ICBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjlkCS8qIDEzODogZmNmaWR1LiBm NCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjMGE1OTAwCS8qIDEzYzogZnRkaXYgICBj cjAsZjEwLGYxMSAgICAgICAqLwotKwkubG9uZwkweGZmOGE1OTAwCS8qIDE0MDogZnRkaXYgICBj cjcsZjEwLGYxMSAgICAgICAqLwotKwkubG9uZwkweGZjMDA1MTQwCS8qIDE0NDogZnRzcXJ0ICBj cjAsZjEwICAgICAgICAgICAqLwotKwkubG9uZwkweGZmODA1MTQwCS8qIDE0ODogZnRzcXJ0ICBj cjcsZjEwICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDg0YTJjCS8qIDE0YzogZGNidHQgICBy OCxyOSAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDg0OWVjCS8qIDE1MDogZGNidHN0dCBy OCxyOSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVkNDA2NjQ0CS8qIDE1NDogZGNmZml4ICBm MTAsZjEyICAgICAgICAgICAqLwotKwkubG9uZwkweGVlODBiNjQ1CS8qIDE1ODogZGNmZml4LiBm MjAsZjIyICAgICAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MDY4CS8qIDE1YzogbGJhcnggICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MDY4CS8qIDE2MDogbGJhcnggICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MDY5CS8qIDE2NDogbGJhcnggICBy MTAscjExLHIxMiwxICAgICAqLwotKwkubG9uZwkweDdlOTViMGU4CS8qIDE2ODogbGhhcnggICBy MjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdlOTViMGU4CS8qIDE2YzogbGhhcnggICBy MjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdlOTViMGU5CS8qIDE3MDogbGhhcnggICBy MjAscjIxLHIyMiwxICAgICAqLwotKwkubG9uZwkweDdkNGI2NTZkCS8qIDE3NDogc3RiY3guICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNGI2NWFkCS8qIDE3ODogc3RoY3guICBy MTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODMwCS8qIDE3YzogZnJlICAgICBm MTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODMxCS8qIDE4MDogZnJlLiAgICBm MTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODMwCS8qIDE4NDogZnJlcyAgICBm MTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODMxCS8qIDE4ODogZnJlcy4gICBm MTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODM0CS8qIDE4YzogZnJzcXJ0ZSBm MTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODM1CS8qIDE5MDogZnJzcXJ0ZS4g ZjE0LGYxNSAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODM0CS8qIDE5NDogZnJzcXJ0ZXMg ZjE0LGYxNSAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODM1CS8qIDE5ODogZnJzcXJ0ZXMu IGYxNCxmMTUgICAgICAgICAqLwotKwkubG9uZwkweDdjNDMyNzFlCS8qIDE5YzogaXNlbCAgICBy MixyMyxyNCwyOCAgICAgICAqLworICNkZWZpbmUgdGFyZ2V0X3RyYWNlX2luaXQoKSBcCiBkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwogbmV3IGZp bGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjgzZmFhZjYKQEAgLTIxNzc5LDcgKzE1NTQx LDcgQEAgaW5kZXggMDAwMDAwMC4uYjA1NDExZQogKwogK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIg InR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIGFycmF5IgogZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYXJyYXlpZHguYwotaW5kZXggOThkNGQzNS4uZjk4YTY1NiAxMDA2NDQKK2luZGV4IGVj YzMyODkuLmY3OWFkNDAgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmMKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwogQEAgLTE3LDYg KzE3LDEzIEBACkBAIC0yMTc5Nyw3ICsxNTU1OSw3IEBAIGluZGV4IDk4ZDRkMzUuLmY5OGE2NTYg MTAwNjQ0CiAgbWFpbiAodm9pZCkKICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hcnJheWlkeC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAot aW5kZXggNzFjZTRhYS4uYWYwZTVmOCAxMDA2NDQKK2luZGV4IDBlZjZjNGIuLjMzMGVkODcgMTAw NjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAogKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKIEBAIC01OSw0ICs1OSwxMiBAQCBnZGJf dGVzdCAicHJpbnQgYXJyYXkiIFwKQEAgLTIxODE1LDcgKzE1NTc3LDcgQEAgaW5kZXggNzFjZTRh YS4uYWYwZTVmOCAxMDA2NDQKICsgICAgfQogK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2hlbHAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotaW5k ZXggZDc2Y2MzNi4uNDk2ZmYxOCAxMDA2NDQKK2luZGV4IGQ3MTY0MWIuLmRiZTg2ZWIgMTAwNjQ0 CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCiArKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2hlbHAuZXhwCiBAQCAtNjA2LDcgKzYwNiw3IEBAIGdkYl90ZXN0ICJoZWxw IHN0ZXBpIiAiU3RlcCBvbmUgaW5zdHJ1Y3Rpb24gZXhhY3RseVwuXFtcclxuXF0rQXJndW1lbnQg TiBtZWFucyBkCkBAIC0yMTg4NSwxNSArMTU2NDcsMzMgQEAgaW5kZXggMDAwMDAwMC4uNmQ4MmU3 MwogKwogK2dkYl90ZXN0IHtzZXQgJHZhcnN0cnVjdCA9IHN0YXRpY3N0cnVjdH0KICtnZGJfdGVz dCB7cCAkdmFyc3RydWN0LmZpZWxkfSAiID0gMSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9s aW5lbm8tbWFrZXVwLWZ1bmMuYworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv cmFkaXguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAKK2luZGV4IDlmZDZj YjUuLjkzYWExNDIgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JhZGl4LmV4 cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAKK0BAIC0xNjMsMTMgKzE2 Myw2IEBAIGdkYl90ZXN0ICJzZXQgcmFkaXgiIFwKKyAgICAgIklucHV0IGFuZCBvdXRwdXQgcmFk aWNlcyBub3cgc2V0IHRvIGRlY2ltYWwgMTAsIGhleCBhLCBvY3RhbCAxMlwuIiBcCisgICAgICJS ZXNldCByYWRpY2VzIgorIAorLWdkYl90ZXN0ICJzZXQgaW5wdXQtcmFkaXggMCIgXAorLSAgICAi Tm9uc2Vuc2UgaW5wdXQgcmFkaXggYGBkZWNpbWFsIDAnJzsgaW5wdXQgcmFkaXggdW5jaGFuZ2Vk XFwuIiBcCistICAgICJSZWplY3QgaW5wdXQtcmFkaXggMCIKKy1nZGJfdGVzdCAic2hvdyBpbnB1 dC1yYWRpeCIgXAorLSAgICAiRGVmYXVsdCBpbnB1dCByYWRpeCBmb3IgZW50ZXJpbmcgbnVtYmVy cyBpcyAxMFxcLiIgXAorLSAgICAiSW5wdXQgcmFkaXggdW5jaGFuZ2VkIGFmdGVyIHJlamVjdGlu ZyAwIgorLQorIGdkYl90ZXN0ICJzZXQgaW5wdXQtcmFkaXggMSIgXAorICAgICAiTm9uc2Vuc2Ug aW5wdXQgcmFkaXggYGBkZWNpbWFsIDEnJzsgaW5wdXQgcmFkaXggdW5jaGFuZ2VkXFwuIiBcCisg ICAgICJSZWplY3QgaW5wdXQtcmFkaXggMSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZs b3cuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFhMDIyMGUKK2luZGV4 IDAwMDAwMDAuLmM1ZDVlZTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvbGluZW5vLW1ha2V1cC1mdW5jLmMKLUBAIC0wLDAgKzEsMjEgQEAKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMKK0BAIC0wLDAgKzEsMzAgQEAKICsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIENv cHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdo dCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTIxOTA4LDU4ICsxNTY4OCwyNiBAQCBpbmRleCAwMDAwMDAw Li4xYTAyMjBlCiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rdm9pZAot K2Z1bmMgKHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2xpbmVuby1tYWtldXAuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC5j Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmIyMGU5OAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKLUBAIC0w LDAgKzEsMzUgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysjaW5jbHVkZSA8c3RkbGliLmg+CiArCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sK KysgIGludCBhcnJheVthcmdjXTsKICsKLSsvKiBEV19BVF9sb3dfcGMtRFdfQVRfaGlnaF9wYyBz aG91bGQgY292ZXIgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgbGluZSBudW1iZXIKLSsgICBpbmZvcm1h dGlvbiAoLmRlYnVnX2xpbmUpIHNvIHdlIGNhbm5vdCB1c2UgYW4gZXh0ZXJuYWwgb2JqZWN0IGZp bGUuCi0rICAgCi0rICAgSXQgbXVzdCBub3QgYmUganVzdCBhIGxhYmVsIGFzIGl0IHdvdWxkIGFs aWFzIG9uIHRoZSBuZXh0IGZ1bmN0aW9uIGV2ZW4gZm9yCi0rICAgY29ycmVjdCBHREIuICBUaGVy ZWZvcmUgc29tZSBzdHViIGRhdGEgbXVzdCBiZSBwbGFjZWQgdGhlcmUuCi0rICAgCi0rICAgV2Ug bmVlZCB0byBwcm92aWRlIGEgcmVhbCBzdHViIGZ1bmN0aW9uIGJvZHkgYXMgYXQgbGVhc3QgczM5 MAotKyAgIChzMzkwX2FuYWx5emVfcHJvbG9ndWUpIHdvdWxkIHNraXAgdGhlIHdob2xlIGJvZHkg dGlsbCByZWFjaGluZyBgbWFpbicuICAqLworKyAgYXJyYXlbMF0gPSBhcnJheVswXTsKICsKLStl eHRlcm4gdm9pZCBmdW5jICh2b2lkKTsKLSthc20gKCJmdW5jOiAuaW5jYmluIFwiZ2RiLmJhc2Uv bGluZW5vLW1ha2V1cC1mdW5jLmJpblwiIik7CisrICBhYm9ydCAoKTsKICsKLStpbnQKLSttYWlu ICh2b2lkKQotK3sKLSsgIGZ1bmMgKCk7CiArICByZXR1cm4gMDsKICt9Ci1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvbGluZW5vLW1ha2V1cC5leHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVy Zmxvdy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wYzc1Yjg0Citp bmRleCAwMDAwMDAwLi43MjAzYTQ4CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2xpbmVuby1tYWtldXAuZXhwCi1AQCAtMCwwICsxLDc4IEBACi0rIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAorQEAgLTAsMCArMSwxMDggQEAKKysjIENvcHly aWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yMTk3NCwzNDQgKzE1NzIyLDI3IEBAIGluZGV4IDAwMDAw MDAuLjBjNzViODQKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStzZXQgdGVzdGZp bGUgImxpbmVuby1tYWtldXAiCi0rc2V0IHNyY2Z1bmNmaWxlICR7dGVzdGZpbGV9LWZ1bmMuYwor KyMgV2UgY291bGQgY3Jhc2ggaW46CisrIyAjMCAgYmxvY2tfbGlua2FnZV9mdW5jdGlvbiAoYmw9 MHgwKSBhdCAuLi8uLi9nZGIvYmxvY2suYzo2OQorKyMgIzEgIGluIGR3YXJmX2Jsb2NrX2dldF9m cmFtZV9iYXNlICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjk3CisrIyAgIDk3CSAg ZnJhbWVmdW5jID0gYmxvY2tfbGlua2FnZV9mdW5jdGlvbiAoZ2V0X2ZyYW1lX2Jsb2NrIChmcmFt ZSwgTlVMTCkpOworKyMgIzIgIGluIGV4ZWN1dGVfc3RhY2tfb3AgKC4uLikgYXQgLi4vLi4vZ2Ri L2R3YXJmMmV4cHIuYzo0OTYKKysjICMzICBpbiBkd2FyZl9ibG9ja19leGVjX2NvcmUgKCkgYXQg Li4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MTU2CisrIyAjNCAgZHdhcmZfYmxvY2tfZXhlYyAoLi4u KSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoyMDYKKysjICM1ICBpbiByYW5nZV90eXBlX2Nv dW50X2JvdW5kX2ludGVybmFsICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0eXBlcy5jOjE0MzAKKysj ICM2ICBpbiBjcmVhdGVfYXJyYXlfdHlwZSAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMuYzo4 NDAKKysjIC4uLgorKyMgIzIxIGluIHBzeW10YWJfdG9fc3ltdGFiICguLi4pIGF0IC4uLy4uL2dk Yi9zeW1maWxlLmM6MjkyCisrIyAuLi4KKysjICMyOSBpbiBiYWNrdHJhY2VfY29tbWFuZF8xICgp IGF0IC4uLy4uL2dkYi9zdGFjay5jOjEyNzMKKysKKytzZXQgdGVzdGZpbGUgdmxhLW92ZXJmbG93 Cisrc2V0IHNoZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5zaAogK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgb2JqZnVuY2ZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLm8KLStzZXQgYmluZnVuY2ZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLmJpbgogK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2Z1bmNmaWxlfSIgIiR7b2JqZnVuY2ZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewot KyAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBz byBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0r Ci0rc2V0IG9iamNvcHkgW2NhdGNoICJleGVjIG9iamNvcHkgLU8gYmluYXJ5IC0tb25seS1zZWN0 aW9uIC50ZXh0ICR7b2JqZnVuY2ZpbGV9ICR7YmluZnVuY2ZpbGV9IiBvdXRwdXRdCi0rdmVyYm9z ZSAtbG9nICJvYmpjb3B5PSRvYmpjb3B5OiAkb3V0cHV0IgotK2lmIHsgJG9iamNvcHkgIT0gMCB9 IHsKLSsgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxl ZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0r fQotK3NldCBiaW5mdW5jZmlsZXNpemUgW2ZpbGUgc2l6ZSAkYmluZnVuY2ZpbGVdCi0rdmVyYm9z ZSAtbG9nICJmaWxlIHNpemUgJGJpbmZ1bmNmaWxlID0gJGJpbmZ1bmNmaWxlc2l6ZSIKLSsKLStp ZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgZ2RiX3N1cHByZXNzX2Vu dGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMg ZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0 YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHti aW5maWxlfQotKwotK3NldCBiX2FkZHIgIiIKLStzZXQgdGVzdCAiYnJlYWsgZnVuYyIKLStnZGJf dGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiQnJlYWtwb2ludCBcWzAtOVxd KyBhdCAoMHhcWzAtOWEtZlxdKylcclxuJGdkYl9wcm9tcHQgJCIgewotKwlzZXQgYl9hZGRyICRl eHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJCcmVh a3BvaW50IFxbMC05XF0rIGF0ICgweFxbMC05YS1mXF0rKTogLipcclxuJGdkYl9wcm9tcHQgJCIg ewotKwlzZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlmYWlsICR0ZXN0Ci0rICAg IH0KLSt9Ci0rdmVyYm9zZSAtbG9nICJiX2FkZHI9PCRiX2FkZHI+IgotKwotK3NldCBwX2FkZHIg IiIKLStzZXQgdGVzdCAicHJpbnQgZnVuYyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVz dCB7Ci0rICAgIC1yZSAiXFwkXFswLTlcXSsgPSB7PHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGlu Zm8+fSAoMHhcWzAtOWEtZlxdKykgPGZ1bmM+XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IHBf YWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK3Zl cmJvc2UgLWxvZyAicF9hZGRyPTwkcF9hZGRyPiIKLSsKLStzZXQgdGVzdCAiYnJlYWsgYWRkcmVz cyBiZWxvbmdzIHRvIGZ1bmMiCi0raWYgeyRiX2FkZHIgPT0gJHBfYWRkcn0gewotKyAgICBwYXNz ICIkdGVzdCAoZXhhY3QgbWF0Y2gpIgotK30gZWxzZSB7Ci0rICAgIHNldCBza2lwIFtleHByICRi X2FkZHIgLSAkcF9hZGRyXQotKyAgICBpZiB7JHNraXAgPiAwICYmICRza2lwIDwgJGJpbmZ1bmNm aWxlc2l6ZX0gewotKwlwYXNzICIkdGVzdCAocHJvbG9ndWUgc2tpcCBieSAkc2tpcCBieXRlcyki Ci0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21hY3NjcC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L21hY3NjcC5leHAKLWluZGV4IDU1YzRkMzEuLmRmMjVkM2MgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL21hY3NjcC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv bWFjc2NwLmV4cAotQEAgLTMzLDYgKzMzLDE0IEBAIGlmIFt0ZXN0X2NvbXBpbGVyX2luZm8gZ2Nj Kl0gewotICAgICBsYXBwZW5kIG9wdGlvbnMgYWRkaXRpb25hbF9mbGFncz0tZzMKLSB9Ci0gCi0r IyBXb3JrYXJvdW5kIGNjYWNoZSBtYWtpbmcgbGluZW5vIG5vbi16ZXJvIGZvciBjb21tYW5kLWxp bmUgZGVmaW5pdGlvbnMuCi0raWYge1tmaW5kX2djY10gPT0gImdjYyIgJiYgW2ZpbGUgZXhlY3V0 YWJsZSAiL3Vzci9iaW4vZ2NjIl19IHsKLSsgICAgc2V0IHJlc3VsdCBbY2F0Y2ggImV4ZWMgd2hp Y2ggZ2NjIiBvdXRwdXRdCi0rICAgIGlmIHskcmVzdWx0ID09IDAgJiYgW3N0cmluZyBmaXJzdCAi L2NjYWNoZS8iICRvdXRwdXRdID49IC0xfSB7Ci0rICAgICAgIGxhcHBlbmQgb3B0aW9ucyAiY29t cGlsZXI9L3Vzci9iaW4vZ2NjIgotKyAgICB9Ci0rfQotKwotICMgR2VuZXJhdGUgdGhlIGludGVy bWVkaWF0ZSBvYmplY3QgZmlsZS4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgRGFyd2luIHRvCi0gIyBo YXZlIGFjY2VzcyB0byB0aGUgLmRlYnVnX21hY2luZm8gc2VjdGlvbi4KLSBpZiAge1tnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS9tYWNzY3AxLmMiICIke29iamZpbGV9IiBcCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3JhZGl4LmV4cAotaW5kZXggNzUwZmQyMy4uZGZkYjkyOSAxMDA2NDQKLS0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmFkaXguZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3JhZGl4LmV4cAotQEAgLTE2MiwxMyArMTYyLDYgQEAgZ2RiX3Rlc3QgInNldCByYWRp eCIgXAotICAgICAiSW5wdXQgYW5kIG91dHB1dCByYWRpY2VzIG5vdyBzZXQgdG8gZGVjaW1hbCAx MCwgaGV4IGEsIG9jdGFsIDEyXC4iIFwKLSAgICAgIlJlc2V0IHJhZGljZXMiCi0gCi0tZ2RiX3Rl c3QgInNldCBpbnB1dC1yYWRpeCAwIiBcCi0tICAgICJOb25zZW5zZSBpbnB1dCByYWRpeCBgYGRl Y2ltYWwgMCcnOyBpbnB1dCByYWRpeCB1bmNoYW5nZWRcXC4iIFwKLS0gICAgIlJlamVjdCBpbnB1 dC1yYWRpeCAwIgotLWdkYl90ZXN0ICJzaG93IGlucHV0LXJhZGl4IiBcCi0tICAgICJEZWZhdWx0 IGlucHV0IHJhZGl4IGZvciBlbnRlcmluZyBudW1iZXJzIGlzIDEwXFwuIiBcCi0tICAgICJJbnB1 dCByYWRpeCB1bmNoYW5nZWQgYWZ0ZXIgcmVqZWN0aW5nIDAiCi0tCi0gZ2RiX3Rlc3QgInNldCBp bnB1dC1yYWRpeCAxIiBcCi0gICAgICJOb25zZW5zZSBpbnB1dCByYWRpeCBgYGRlY2ltYWwgMScn OyBpbnB1dCByYWRpeCB1bmNoYW5nZWRcXC4iIFwKLSAgICAgIlJlamVjdCBpbnB1dC1yYWRpeCAx IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3JpbmQtYXR0YWNoLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWF0dGFjaC5jCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODRiNTdkYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guYwotQEAgLTAsMCArMSwyOCBAQAot Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRs aWIuaD4KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCAqYSA9IG1hbGxvYyAoMSk7 Ci0rCi0rICBhWzEwXSA9IDA7CQkvKiBjcmFzaC1oZXJlICovCi0rCi0rICByZXR1cm4gMDsKLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guZXhwCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWY5YjI2ZQotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guZXhwCi1AQCAtMCwwICsxLDk0 IEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlIHZhbGdyaW5k LWF0dGFjaAotK3NldCBzaGZpbGUgJHt0ZXN0ZmlsZX0uc2gKLStzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4 aXQKLStnZGJfc3RvcF9zdXBwcmVzc2luZ190ZXN0czsKLSsKLStzZXQgVkFMR1JJTkQgInZhbGdy aW5kIgotKwotKyMgU3ludGF4IGZvciAke3NoZmlsZX0gaXM6IDxiaW5maWxlPiA8dmFsZ3JpbmQ+ IDxkYi1jb21tYW5kLWFyZ3VtZW50cz4KLStzZXQgVkFMR1JJTkRfU1BBV04gInNoICR7c3JjZGly fS8ke3N1YmRpcn0vJHtzaGZpbGV9ICRiaW5maWxlICRWQUxHUklORCAkR0RCICRJTlRFUk5BTF9H REJGTEFHUyAkR0RCRkxBR1MgW2hvc3RfaW5mbyBnZGJfb3B0c10iCi0rCi0rc2V0IHRlc3QgInNw YXduIHZhbGdyaW5kIgotK3ZlcmJvc2UgIlNwYXduaW5nICRWQUxHUklORF9TUEFXTiIKLSsKLStp ZiBbaW5mbyBleGlzdHMgZ2RiX3NwYXduX2lkXSB7Ci0rICAgIGZhaWwgJHRlc3QKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotK2lmICFbaXNfcmVtb3RlIGhvc3RdIHsKLSsgICAgaWYgeyBbd2hpY2gg JFZBTEdSSU5EXSA9PSAwIH0gdGhlbiB7Ci0rCXVudGVzdGVkICJDb3VsZG4ndCBmaW5kICRWQUxH UklORCIKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSt9Ci0rc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhv c3QgIiRWQUxHUklORF9TUEFXTiJdCi0raWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewot KyAgICBwZXJyb3IgIlNwYXduaW5nICRWQUxHUklORF9TUEFXTiBmYWlsZWQuIgotKyAgICByZXR1 cm4gLTEKLSt9Ci0rc2V0IGdkYl9zcGF3bl9pZCAtMTsKLSsKLStnZGJfZXhwZWN0IHsKLSsgICAg LXJlICItLS0tIEF0dGFjaCB0byBkZWJ1Z2dlciBcXD8gLS0tIFxcXFtSZXR1cm4vTi9uL1kveS9D L2NcXFxdIC0tLS0gJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgZW9mIHsKLSsJcGVy cm9yICIoZW9mKSAkVkFMR1JJTkQgbmV2ZXIgaW5pdGlhbGl6ZWQiCi0rCXJlbW90ZV9jbG9zZSBo b3N0Ci0rCXJldHVybiAtMQotKyAgICB9Ci0rICAgIHRpbWVvdXQgewotKwlwZXJyb3IgIih0aW1l b3V0KSAkVkFMR1JJTkQgbmV2ZXIgaW5pdGlhbGl6ZWQiCi0rCXJlbW90ZV9jbG9zZSBob3N0Ci0r CXJldHVybiAtMQotKyAgICB9Ci0rfQotK3NlbmRfZ2RiICJ5XG4iCi0rCi0rc2V0IHRlc3QgInNw YXduIGdkYiIKLStzZXQgdGVzdDIgImNyYXNoIGxpbmUgY2F1Z2h0IgotK2dkYl9leHBlY3Qgewot KyAgICAtcmUgInN0YXJ0aW5nIGRlYnVnZ2VyIHdpdGggY21kOi4qIGluIG1haW4gLiogY3Jhc2gt aGVyZSAuKlxbXHJcblxdJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rCXBhc3MgJHRl c3QyCi0rICAgIH0KLSsgICAgLXJlICJzdGFydGluZyBkZWJ1Z2dlciB3aXRoIGNtZDouKlxbXHJc blxdJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rCWZhaWwgJHRlc3QyCi0rICAgIH0K LSsgICAgZW9mIHsKLSsJcGVycm9yICIoZW9mKSAkR0RCIG5ldmVyIGluaXRpYWxpemVkIgotKwly ZW1vdGVfY2xvc2UgaG9zdAotKwlyZXR1cm4gLTEKLSsgICAgfQotKyAgICB0aW1lb3V0IHsKLSsJ cGVycm9yICIodGltZW91dCkgJEdEQiBuZXZlciBpbml0aWFsaXplZCIKLSsJcmVtb3RlX2Nsb3Nl IGhvc3QKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSt9Ci0rCi0rcmVtb3RlX2Nsb3NlIGhvc3QKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWF0dGFjaC5zaCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3JpbmQtYXR0YWNoLnNoCi1uZXcgZmlsZSBtb2RlIDEw MDc1NQotaW5kZXggMDAwMDAwMC4uZjAyYzZmNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guc2gKLUBAIC0wLDAgKzEsMjAgQEAKLSsj ISAvYmluL3NoCi0rCi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rQklORklMRT0iJDEi OyBzaGlmdAotK1ZBTEdSSU5EPSIkMSI7IHNoaWZ0Ci0rIiRWQUxHUklORCIgLS1kYi1hdHRhY2g9 eWVzIC0tZGItY29tbWFuZD0iJCogJWYgJXAiICIkQklORklMRSIKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEtb3ZlcmZsb3cuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmM1 ZDVlZTAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92 ZXJmbG93LmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFy Z2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGludCBhcnJheVthcmdjXTsKLSsKLSsgIGFycmF5WzBd ID0gYXJyYXlbMF07Ci0rCi0rICBhYm9ydCAoKTsKLSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi43MjAzYTQ4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLUBAIC0wLDAgKzEsMTA4IEBACi0rIyBDb3B5cmln aHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBXZSBjb3VsZCBjcmFzaCBpbjoKLSsjICMwICBibG9ja19s aW5rYWdlX2Z1bmN0aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5Ci0rIyAjMSAg aW4gZHdhcmZfYmxvY2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJs b2NrLmM6OTcKLSsjICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChn ZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBOVUxMKSk7Ci0rIyAjMiAgaW4gZXhlY3V0ZV9zdGFja19v cCAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgotKyMgIzMgIGluIGR3YXJmX2Js b2NrX2V4ZWNfY29yZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoxNTYKLSsjICM0ICBk d2FyZl9ibG9ja19leGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIwNgotKyMg IzUgIGluIHJhbmdlX3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4vLi4vZ2Ri L2dkYnR5cGVzLmM6MTQzMAotKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4pIGF0IC4u Ly4uL2dkYi9nZGJ0eXBlcy5jOjg0MAotKyMgLi4uCi0rIyAjMjEgaW4gcHN5bXRhYl90b19zeW10 YWIgKC4uLikgYXQgLi4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKLSsjIC4uLgotKyMgIzI5IGluIGJh Y2t0cmFjZV9jb21tYW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3MwotKwotK3NldCB0 ZXN0ZmlsZSB2bGEtb3ZlcmZsb3cKLStzZXQgc2hmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0tZ2RiLnNoCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2Rl YnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJv Z3JhbSIKLSsgICAgcmV0dXJuIC0xCisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIi IH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAg IHJldHVybiAtMQogK30KICsKICtzZXQgZiBbb3BlbiAifGdldGNvbmYgUEFHRVNJWkUiICJyIl0K QEAgLTIyNTEzLDU1OCArMTU5NDQsMjggQEAgaW5kZXggMDAwMDAwMC4uNWRhNzM3OAogK2dkYl90 ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQg dGVtcDEiCiArZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMgNzggdGltZXM+IiAi c2Vjb25kOiBwcmludCB0ZW1wMiIKICtnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8cmVwZWF0 cyA0OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAzIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWh3LmMKLWluZGV4IDhkYTlhZjUuLmUyZGU1M2EgMTAwNjQ0Ci0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS93YXRjaHBvaW50LWh3LmMKLUBAIC0yMCw1ICsyMCwxMSBAQCBpbnQgd2F0Y2hlZTsK LSBpbnQKLSBtYWluICh2b2lkKQotIHsKLSsgIHZvbGF0aWxlIGludCBkdW1teTsKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbiBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL01ha2VmaWxlLmluCitpbmRleCBjOTkwYTY0Li5jOTY0ZGI5IDEwMDY0NAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L01ha2VmaWxlLmluCitAQCAtNCw3ICs0LDcgQEAgc3JjZGlyID0gQHNyY2RpckAKKyBFWEVDVVRB QkxFUyA9IGFtYmlndW91cyBhbm5vdGEyIGFub24tdW5pb24gY3BsdXNmdW5jcyBjdHRpYWRkIFwK KyAJZGVyaXZhdGlvbiBpbmhlcml0IGxvY2FsIG1lbWJlci1wdHIgbWV0aG9kIG1pc2MgXAorICAg ICAgICAgb3ZlcmxvYWQgb3ZsZGJyZWFrIHJlZi10eXAgcmVmLXR5cDIgdGVtcGxhdGVzIHVzZXJk ZWYgdmlydGZ1bmMgbmFtZXNwYWNlIFwKKy0JcmVmLXR5cGVzIHJlZi1wYXJhbXMgbWV0aG9kMiBw cjk1OTQgZ2RiMjQ5NSB2aXJ0ZnVuYzIKKysJcmVmLXR5cGVzIHJlZi1wYXJhbXMgbWV0aG9kMiBw cjk1OTQgZ2RiMjQ5NSBnZGI5NTkzIHZpcnRmdW5jMgorIAorIGFsbCBpbmZvIGluc3RhbGwtaW5m byBkdmkgaW5zdGFsbCB1bmluc3RhbGwgaW5zdGFsbGNoZWNrIGNoZWNrOgorIAlAZWNobyAiTm90 aGluZyB0byBiZSBkb25lIGZvciAkQC4uLiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9nZGI5NTkzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjc4M2M5NjIKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKK0BAIC0wLDAgKzEsMTgwIEBACisr LyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsg IGR1bW15ID0gd2F0Y2hlZTsKLSsgIGR1bW15ID0gMTsKLSsgIGR1bW15ID0gMjsJLyogYnJlYWst YXQtZXhpdCAqLwotKwotICAgcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dh dGNocG9pbnQtaHcuZXhwCi1pbmRleCBhMmJiNzMxLi5kNzRkNmM3IDEwMDY0NAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmV4cAotQEAgLTIxLDE5ICsyMSwxMiBAQCBpZiB7KCFb aXN0YXJnZXQgImk/ODYtKi0qIl0gJiYgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdCi0gICAgIHJl dHVybgotIH0KLSAKLS1zZXQgdGVzdGZpbGUgd2F0Y2hwb2ludC1odwotLXNldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKLS1zZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 Ci0taWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotLSAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rc2V0IHRlc3Qgd2F0Y2hwb2ludC1odwot K3NldCBzcmNmaWxlICR7dGVzdH0uYwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 fS5leHAgJHt0ZXN0fSAke3NyY2ZpbGV9XSB9IHsKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLWdk Yl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0tZ2RiX2xvYWQgJHtiaW5maWxlfQotLQotICMgQ3JlYXRlIHRoZSB3YXRjaHBvaW50IGJlZm9y ZSB0aGUgaW5mZXJpb3IgZ2V0cyBzdGFydGVkLiAgTm93IHRoZSBuYXRpdmUgQ1BVCi0gIyB0YXJn ZXQgaXMgc3RpbGwgbm90IGFjdGl2ZSBhbmQgaXRzIGB0b19jYW5fdXNlX2h3X2JyZWFrcG9pbnQn IGlzIG5vdAotICMgaW5zdGFsbGVkLCB0aGVyZWZvcmUgb25seSBhIHNvZnR3YXJlIHdhdGNocG9p bnQgZ2V0cyBjcmVhdGVkLgotQEAgLTQzLDEwICszNiw0MCBAQCBnZGJfdGVzdCAid2F0Y2ggd2F0 Y2hlZSIgImF0Y2hwb2ludCAxOiB3YXRjaGVlIgotICMgYHJ1bnRvX21haW4nIG9yIGBydW50byBt YWluJyB3b3VsZCBkZWxldGUgdGhlIHdhdGNocG9pbnQgY3JlYXRlZCBhYm92ZS4KLSAKLSBpZiB7 IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7Ci0tICAgIHVudGVzdGVkIHN0YXJ0Ci0rICAgIHVudGVz dGVkICR7dGVzdH0uZXhwCi0gICAgIHJldHVybiAtMQotIH0KLSBnZGJfdGVzdCAiIiAibWFpbiAu KiBhdCAuKiIgInN0YXJ0IgotIAotICMgQ2hlY2sgaXQgaXMgcmVhbGx5IGEgYGh3Jy13YXRjaHBv aW50LgotIGdkYl90ZXN0ICJpbmZvIHdhdGNocG9pbnRzIiAiMSAqaHcgd2F0Y2hwb2ludCAuKiB3 YXRjaGVlIgotKwotKyMgQmVmb3JlIHRoZSBpbmZlcmlvciBnZXRzIHN0YXJ0ZWQgd2Ugd291bGQg Z2V0OgotKyMgCVRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdHlwZSBvZiBoYXJkd2FyZSB3 YXRjaHBvaW50LgotK2dkYl90ZXN0ICJkZWxldGUgMSIKLStnZGJfdGVzdCAicndhdGNoIHdhdGNo ZWUiCi0rCi0rc2V0IGJyZWFrbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQtZXhp dCJdCi0rZ2RiX2JyZWFrcG9pbnQgJGJyZWFrbGluZQotKwotK2dkYl90ZXN0ICJjb250aW51ZSIg IkNvbnRpbnVpbmcuXHJcbkhhcmR3YXJlIHJlYWQgd2F0Y2hwb2ludCAzOiB3YXRjaGVlXHJcblxy XG5WYWx1ZSA9IDBcclxuLioiCi0rCi0rIyBIZXJlIHNob3VsZCBiZSBubyByZXBlYXRlZCBub3Rp ZmljYXRpb24gb2YgdGhlIHJlYWQgd2F0Y2hwb2ludC4KLStnZGJfdGVzdCAiY29udGludWUiIFwK LSsJICJDb250aW51aW5nXFwuXFsgXHJcblxdK0JyZWFrcG9pbnQgXFswLTlcXSssIC4qYnJlYWst YXQtZXhpdC4qIiBcCi0rCSAiY29udGludWUgdG8gYnJlYWstYXQtZXhpdCBhZnRlciByd2F0Y2gi Ci0rCi0rY2xlYW5fcmVzdGFydCAke3Rlc3R9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAg IHVudGVzdGVkICR7dGVzdH0uZXhwCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAi aGJyZWFrICR7c3JjZmlsZX06JHticmVha2xpbmV9IiBcCi0rCSAiSGFyZHdhcmUgYXNzaXN0ZWQg YnJlYWtwb2ludCAyIGF0IDB4XFswLTlhLWZcXSs6IGZpbGUgLioke3NyY2ZpbGV9LCBsaW5lICR7 YnJlYWtsaW5lfVxcLiIgXAotKwkgImhicmVhayIKLSsKLStnZGJfdGVzdCAiY29udGludWUiIFwK LSsJICJDb250aW51aW5nXFwuXFsgXHJcblxdK0JyZWFrcG9pbnQgXFswLTlcXSssIC4qYnJlYWst YXQtZXhpdC4qIiBcCi0rCSAiY29udGludWUgdG8gYnJlYWstYXQtZXhpdCBhZnRlciBoYnJlYWsi Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvTWFrZWZpbGUuaW4gYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbgotaW5kZXggMGEwODdjNy4uYjQ4ODBmMiAxMDA2NDQK LS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL01ha2VmaWxlLmluCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9NYWtlZmlsZS5pbgotQEAgLTQsNyArNCw3IEBAIHNyY2RpciA9IEBzcmNkaXJA Ci0gRVhFQ1VUQUJMRVMgPSBhbWJpZ3VvdXMgYW5ub3RhMiBhbm9uLXVuaW9uIGNwbHVzZnVuY3Mg Y3R0aWFkZCBcCi0gCWRlcml2YXRpb24gaW5oZXJpdCBsb2NhbCBtZW1iZXItcHRyIG1ldGhvZCBt aXNjIFwKLSAgICAgICAgIG92ZXJsb2FkIG92bGRicmVhayByZWYtdHlwIHJlZi10eXAyIHRlbXBs YXRlcyB1c2VyZGVmIHZpcnRmdW5jIG5hbWVzcGFjZSBcCi0tCXJlZi10eXBlcyByZWYtcGFyYW1z IG1ldGhvZDIgcHI5NTk0IGdkYjI0OTUKLSsJcmVmLXR5cGVzIHJlZi1wYXJhbXMgbWV0aG9kMiBw cjk1OTQgZ2RiMjQ5NSBnZGI5NTkzCi0gCi0gYWxsIGluZm8gaW5zdGFsbC1pbmZvIGR2aSBpbnN0 YWxsIHVuaW5zdGFsbCBpbnN0YWxsY2hlY2sgY2hlY2s6Ci0gCUBlY2hvICJOb3RoaW5nIHRvIGJl IGRvbmUgZm9yICRALi4uIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJl bG9jYXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cAotaW5kZXgg NDA5NWNjZi4uMDNjMDdkNSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJl bG9jYXRlLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3AtcmVsb2NhdGUuZXhwCi1A QCAtMzAsNyArMzAsNyBAQCBwcm9jIGdldF9mdW5jX2FkZHJlc3MgeyBmdW5jIH0gewotICAgICBn bG9iYWwgZ2RiX3Byb21wdCBoZXgKLSAKLSAgICAgc2V0IHJmdW5jIFtzdHJpbmdfdG9fcmVnZXhw ICRmdW5jXQotLSAgICBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgJyR7ZnVuY30nIiAiZ2V0IGFk ZHJlc3Mgb2YgJHtmdW5jfSIgewotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgJHtmdW5j fSIgImdldCBhZGRyZXNzIG9mICR7ZnVuY30iIHsKLSAJLXJlICJcXFwkXFswLTlcXSsgPSBcXHsu KlxcfSAoMHwoJGhleCkgPCR7cmZ1bmN9PilcW1xyXG5cXSske2dkYl9wcm9tcHR9ICQiIHsKLSAJ ICAgICMgJDEgPSB7aW50ICgpfSAweDI0IDxmdW5jdGlvbl9iYXI+Ci0gCSAgICAjIEJ1dCBpZiB0 aGUgZnVuY3Rpb24gaXMgYXQgemVybywgdGhlIG5hbWUgbWF5IGJlIG9taXR0ZWQuCi1AQCAtMTMw LDcgKzEzMCw3IEBAIGdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlfSAwIC1zICR7 ZnVuYzFfc2VjfSAweDEwMDAwIC1zICR7ZnVuYzJfc2VjfSAwCi0gCSJ5IgotIAotICMgTWFrZSBz dXJlIHRoZSBmdW5jdGlvbiBhZGRyZXNzZXMgd2VyZSB1cGRhdGVkLgotLWdkYl90ZXN0ICJicmVh ayAqJyRmdW5jMV9uYW1lJyIgXAotK2dkYl90ZXN0ICJicmVhayAqJGZ1bmMxX25hbWUiIFwKLSAg ICAgIkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgMHgxLi4uLjogZmlsZSAuKiIKLS1nZGJfdGVzdCAi YnJlYWsgKickZnVuYzJfbmFtZSciIFwKLStnZGJfdGVzdCAiYnJlYWsgKiRmdW5jMl9uYW1lIiBc Ci0gICAgICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IDB4Mi4uLi46IGZpbGUgLioiCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2NwbHVzZnVuY3MuY2MKLWluZGV4IDdmMDMzZDYuLjExZGJhMDYgMTAwNjQ0Ci0tLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmNjCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9jcGx1c2Z1bmNzLmNjCi1AQCAtNDYsNyArNDYsOSBAQCBwdWJsaWM6Ci0gICB2b2lk ICBvcGVyYXRvciBbXSAgICAgKGZvbyYpOwotICAgdm9pZCAgb3BlcmF0b3IgKCkgICAgIChmb28m KTsKLSAgIHZvaWQqIG9wZXJhdG9yIG5ldyAgICAoc2l6ZV90KSB0aHJvdyAoKTsKLSsgIHZvaWQq IG9wZXJhdG9yIG5ld1tdICAoc2l6ZV90KSB0aHJvdyAoKTsKLSAgIHZvaWQgIG9wZXJhdG9yIGRl bGV0ZSAodm9pZCAqKTsKLSsgIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZVtdICh2b2lkICopOwotICAg LyoqLyAgb3BlcmF0b3IgaW50ICAgICgpOwotICAgLyoqLyAgb3BlcmF0b3IgY2hhciogICgpOwot IAotQEAgLTExNSw3ICsxMTcsOSBAQCB2b2lkICBmb286Om9wZXJhdG9yIC0+KiAgICAoZm9vJiBh Zm9vKSB7IGFmb28uaWZvbyA9IDA7IH0KLSB2b2lkICBmb286Om9wZXJhdG9yIFtdICAgICAoZm9v JiBhZm9vKSB7IGFmb28uaWZvbyA9IDA7IH0KLSB2b2lkICBmb286Om9wZXJhdG9yICgpICAgICAo Zm9vJiBhZm9vKSB7IGFmb28uaWZvbyA9IDA7IH0KLSB2b2lkKiBmb286Om9wZXJhdG9yIG5ldyAg ICAoc2l6ZV90IGl2YWwpIHRocm93ICgpIHsgaXZhbCA9IDA7IHJldHVybiAwOyB9Ci0rdm9pZCog Zm9vOjpvcGVyYXRvciBuZXdbXSAgICAoc2l6ZV90IGl2YWwpIHRocm93ICgpIHsgaXZhbCA9IDA7 IHJldHVybiAwOyB9Ci0gdm9pZCAgZm9vOjpvcGVyYXRvciBkZWxldGUgKHZvaWQgKnB0cikgeyBw dHIgPSAwOyB9Ci0rdm9pZCAgZm9vOjpvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqcHRyKSB7IHB0 ciA9IDA7IH0KLSAvKiovICBmb286Om9wZXJhdG9yIGludCAgICAoKSB7IHJldHVybiAwOyB9Ci0g LyoqLyAgZm9vOjpvcGVyYXRvciBjaGFyKiAgKCkgeyByZXR1cm4gMDsgfQotIAotQEAgLTE5MSw2 ICsxOTUsMTIgQEAgY2hhciAqCWRtX3R5cGVfY2hhcl9zdGFyIChjaGFyICogcCkJCXsgcmV0dXJu IHA7IH0KLSBpbnQJZG1fdHlwZV9mb29fcmVmIChmb28gJiBmb28pCQl7IHJldHVybiBmb28uaWZv bzsgfQotIGludCAqCWRtX3R5cGVfaW50X3N0YXIgKGludCAqIHApCQl7IHJldHVybiBwOyB9Ci0g bG9uZyAqCWRtX3R5cGVfbG9uZ19zdGFyIChsb25nICogcCkJCXsgcmV0dXJuIHA7IH0KLStpbnQJ ZG1fdHlwZV9zaG9ydCAoc2hvcnQgaSkJCQl7IHJldHVybiBpOyB9Ci0raW50CWRtX3R5cGVfbG9u ZyAobG9uZyBpKQkJCXsgcmV0dXJuIGk7IH0KLSBpbnQJZG1fdHlwZV91bnNpZ25lZF9pbnQgKHVu c2lnbmVkIGludCBpKQl7IHJldHVybiBpOyB9Ci0raW50CWRtX3R5cGVfdW5zaWduZWRfc2hvcnQg KHVuc2lnbmVkIHNob3J0IGkpCXsgcmV0dXJuIGk7IH0KLStpbnQJZG1fdHlwZV91bnNpZ25lZF9s b25nICh1bnNpZ25lZCBsb25nIGkpCXsgcmV0dXJuIGk7IH0KLSBpbnQJZG1fdHlwZV92b2lkICh2 b2lkKQkJCXsgcmV0dXJuIDA7IH0KLSB2b2lkICoJZG1fdHlwZV92b2lkX3N0YXIgKHZvaWQgKiBw KQkJeyByZXR1cm4gcDsgfQotK3R5cGVkZWYgaW50IG15aW50OwotK2ludAlkbV90eXBlX3R5cGVk ZWYgKG15aW50IGkpCQl7IHJldHVybiBpOyB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvY3BsdXNmdW5jcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4 cAotaW5kZXggNWUwODc2OC4uMmVjNTBjYSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2NwbHVzZnVuY3MuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNz LmV4cAotQEAgLTYzLDEyICs2MywyOCBAQCBzZXQgZG1fdHlwZV9mb29fcmVmIAkJImZvbyYiCi0g c2V0IGRtX3R5cGVfaW50X3N0YXIJCSJpbnQqIgotIHNldCBkbV90eXBlX2xvbmdfc3RhcgkJImxv bmcqIgotIHNldCBkbV90eXBlX3Vuc2lnbmVkX2ludAkidW5zaWduZWQiCi0tc2V0IGRtX3R5cGVf dm9pZAkJIiIKLStzZXQgZG1fdHlwZV92b2lkCQkidm9pZCIKLSBzZXQgZG1fdHlwZV92b2lkX3N0 YXIJCSJ2b2lkKiIKLSAKLSsjIFNvbWUgb3RoZXIgdmFnYXJpZXMgb2YgR0RCJ3MgdHlwZSBwcmlu dGluZyBtYWNoaW5lcnkuICBUaGUgaW50ZWdlciB0eXBlcwotKyMgbWF5IGhhdmUgdW5zaWduZWQg YmVmb3JlIG9yIGFmdGVyIHRoZWlyIGxlbmd0aCwgYW5kIG1heSBoYXZlICJpbnQiCi0rIyBhcHBl bmRlZC4gIFRoZSBjaGFyKiBjb252ZXJzaW9uIG9wZXJhdG9yIG1heSBoYXZlIG5hbWUgImNoYXIq IiBldmVuIGlmCi0rIyB0aGUgdHlwZSBpcyAiY2hhciAqIiwgYmVjYXVzZSB0aGUgbmFtZSBjb21l cyBmcm9tIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbgotKyMgYW5kIHRoZSB0eXBlIGZyb20gR0RCLiAg RnVuY3Rpb24gdHlwZXMgbWF5IG5vdCBzZWUgdGhyb3VnaCB0eXBlZGVmcy4KLSsKLStzZXQgZG1f dHlwZV9zaG9ydAkJInNob3J0IgotK3NldCBkbV90eXBlX2xvbmcJCSJsb25nIgotK3NldCBkbV90 eXBlX3Vuc2lnbmVkX3Nob3J0CSJ1bnNpZ25lZCBzaG9ydCIKLStzZXQgZG1fdHlwZV91bnNpZ25l ZF9sb25nCSJ1bnNpZ25lZCBsb25nIgotK3NldCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIJImNoYXIq IgotK3NldCBkbV9vcGVyYXRvcl9jaGFyX3N0YXJfcXVvdGVkCSJjaGFyXFwqIgotK3NldCBkbV90 eXBlX3R5cGVkZWYJCTAKLSsKLSBwcm9jIHByb2JlX2RlbWFuZ2xlciB7IH0gewotICAgICBnbG9i YWwgZ2RiX3Byb21wdAotICAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY29tbWEKLSsgICAgZ2xvYmFs IGRtX29wZXJhdG9yX2NoYXJfc3RhcgotKyAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY2hhcl9zdGFy X3F1b3RlZAotICAgICBnbG9iYWwgZG1fdHlwZV9jaGFyX3N0YXIKLSAgICAgZ2xvYmFsIGRtX3R5 cGVfY2hhcl9zdGFyX3F1b3RlZAotICAgICBnbG9iYWwgZG1fdHlwZV9mb29fcmVmCi1AQCAtNzcs OCArOTMsMTMgQEAgcHJvYyBwcm9iZV9kZW1hbmdsZXIgeyB9IHsKLSAgICAgZ2xvYmFsIGRtX3R5 cGVfdW5zaWduZWRfaW50Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQKLSAgICAgZ2xvYmFsIGRt X3R5cGVfdm9pZF9zdGFyCi0rICAgIGdsb2JhbCBkbV90eXBlX3Nob3J0Ci0rICAgIGdsb2JhbCBk bV90eXBlX3Vuc2lnbmVkX3Nob3J0Ci0rICAgIGdsb2JhbCBkbV90eXBlX2xvbmcKLSsgICAgZ2xv YmFsIGRtX3R5cGVfdW5zaWduZWRfbG9uZwotKyAgICBnbG9iYWwgZG1fdHlwZV90eXBlZGVmCi0g Ci0tICAgIHNlbmRfZ2RiICJwcmludCAmJ2Zvbzo6b3BlcmF0b3IsKGZvbyYpJ1xuIgotKyAgICBz ZW5kX2dkYiAicHJpbnQgJmZvbzo6b3BlcmF0b3IsKGZvbyYpXG4iCi0gICAgIGdkYl9leHBlY3Qg ewotIAktcmUgIi4qZm9vOjpvcGVyYXRvciwgXFwoLipmb28uKiYuKlxcKS4qXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSAJICAgICMgdjIgZGVtYW5nbGVyCi1AQCAtOTcsNiArMTE4LDI2IEBAIHByb2Mg cHJvYmVfZGVtYW5nbGVyIHsgfSB7Ci0gCX0KLSAgICAgfQotIAotKyAgICBzZW5kX2dkYiAicHJp bnQgJmZvbzo6b3BlcmF0b3IgY2hhciooJGRtX3R5cGVfdm9pZClcbiIKLSsgICAgZ2RiX2V4cGVj dCB7Ci0rCS1yZSAiLipmb286Om9wZXJhdG9yIGNoYXIgXFwqXFwodm9pZFxcKS4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJICAgICMgdjIgZGVtYW5nbGVyIG9yIEdEQiB0eXBlIHByaW50ZXIKLSsJ ICAgIHNldCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIgImNoYXIgKiIKLSsJICAgIHNldCBkbV9vcGVy YXRvcl9jaGFyX3N0YXJfcXVvdGVkICJjaGFyIFxcKiIKLSsJICAgIHBhc3MgImRldGVjdCBkbV9v cGVyYXRvcl9jaGFyX3N0YXIiCi0rCX0KLSsJLXJlICIuKmZvbzo6b3BlcmF0b3IgY2hhclxcKlxc KFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgdjMgZGVtYW5nbGVyCi0rCSAgICBw YXNzICJkZXRlY3QgZG1fb3BlcmF0b3JfY2hhcl9zdGFyIgotKwl9Ci0rCS1yZSAiLiokZ2RiX3By b21wdCAkIiB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fb3BlcmF0b3JfY2hhcl9zdGFyIgotKwl9 Ci0rCXRpbWVvdXQgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIK LSsJfQotKyAgICB9Ci0rCi0gICAgIHNlbmRfZ2RiICJwcmludCAmJ2RtX3R5cGVfY2hhcl9zdGFy J1xuIgotICAgICBnZGJfZXhwZWN0IHsKLSAJLXJlICIuKmRtX3R5cGVfY2hhcl9zdGFyXFwoY2hh ciBcXCpcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci1AQCAtMTY2LDYgKzIwNywxMSBAQCBwcm9j IHByb2JlX2RlbWFuZ2xlciB7IH0gewotIAkgICAgIyB2MyBkZW1hbmdsZXIKLSAJICAgIHBhc3Mg ImRldGVjdCBkbV90eXBlX2xvbmdfc3RhciIKLSAJfQotKwktcmUgIi4qZG1fdHlwZV9sb25nX3N0 YXJcXChsb25nIGludCBcXCpcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIEdDQyB2 MyBhbmQgR0RCJ3MgdHlwZSBwcmludGVyCi0rCSAgICBzZXQgZG1fdHlwZV9sb25nX3N0YXIgImxv bmcgaW50ICoiCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV9sb25nX3N0YXIiCi0rCX0KLSAJ LXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSAJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX2xvbmdf c3RhciIKLSAJfQotQEAgLTIzMCw2ICsyNzYsMTAxIEBAIHByb2MgcHJvYmVfZGVtYW5nbGVyIHsg fSB7Ci0gCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV92b2lkX3N0YXIgKHRpbWVvdXQpIgotIAl9 Ci0gICAgIH0KLSsKLSsgICAgc2VuZF9nZGIgInByaW50ICYnZG1fdHlwZV9zaG9ydCdcbiIKLSsg ICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX3Nob3J0XFwoc2hvcnRcXCkuKlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJzCi0rCSAgICBwYXNz ICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV9zaG9ydFxcKHNo b3J0IGludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgR0RCIHR5cGUgcHJpbnRl cgotKwkgICAgc2V0IGRtX3R5cGVfc2hvcnQgInNob3J0IGludCIKLSsJICAgIHBhc3MgImRldGVj dCBkbV90eXBlX3Nob3J0IgotKwl9Ci0rCS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBm YWlsICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwg ImRldGVjdCBkbV90eXBlX3Nob3J0ICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0rCi0rICAgIHNl bmRfZ2RiICJwcmludCAmJ2RtX3R5cGVfdW5zaWduZWRfc2hvcnQnXG4iCi0rICAgIGdkYl9leHBl Y3QgewotKwktcmUgIi4qZG1fdHlwZV91bnNpZ25lZF9zaG9ydFxcKHVuc2lnbmVkIHNob3J0XFwp LipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkg ICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQiCi0rCX0KLSsJLXJlICIuKmRt X3R5cGVfdW5zaWduZWRfc2hvcnRcXChzaG9ydCB1bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3By b21wdCAkIiB7Ci0rCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90eXBlX3Vu c2lnbmVkX3Nob3J0ICJzaG9ydCB1bnNpZ25lZCBpbnQiCi0rCSAgICBwYXNzICJkZXRlY3QgZG1f dHlwZV91bnNpZ25lZF9zaG9ydCIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkg ICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQiCi0rCX0KLSsJdGltZW91dCB7 Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV91bnNpZ25lZF9zaG9ydCAodGltZW91dCkiCi0r CX0KLSsgICAgfQotKwotKyAgICBzZW5kX2dkYiAicHJpbnQgJidkbV90eXBlX2xvbmcnXG4iCi0r ICAgIGdkYl9leHBlY3QgewotKwktcmUgIi4qZG1fdHlwZV9sb25nXFwobG9uZ1xcKS4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMKLSsJICAgIHBhc3Mg ImRldGVjdCBkbV90eXBlX2xvbmciCi0rCX0KLSsJLXJlICIuKmRtX3R5cGVfbG9uZ1xcKGxvbmcg aW50XFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBHREIgdHlwZSBwcmludGVyCi0r CSAgICBzZXQgZG1fdHlwZV9sb25nICJsb25nIGludCIKLSsJICAgIHBhc3MgImRldGVjdCBkbV90 eXBlX2xvbmciCi0rCX0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIGZhaWwgImRl dGVjdCBkbV90eXBlX2xvbmciCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICBmYWlsICJkZXRlY3Qg ZG1fdHlwZV9sb25nICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0rCi0rICAgIHNlbmRfZ2RiICJw cmludCAmJ2RtX3R5cGVfdW5zaWduZWRfbG9uZydcbiIKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1y ZSAiLipkbV90eXBlX3Vuc2lnbmVkX2xvbmdcXCh1bnNpZ25lZCBsb25nXFwpLipcclxuJGdkYl9w cm9tcHQgJCIgewotKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkgICAgcGFzcyAiZGV0 ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV91bnNpZ25l ZF9sb25nXFwobG9uZyB1bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAg ICAjIEdEQiB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgImxv bmcgdW5zaWduZWQgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9u ZyIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRt X3R5cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVj dCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgKHRpbWVvdXQpIgotKwl9Ci0rICAgIH0KLSsKLSsgICAg c2VuZF9nZGIgInByaW50ICYnZG1fdHlwZV90eXBlZGVmJ1xuIgotKyAgICBnZGJfZXhwZWN0IHsK LSsJLXJlICIuKmRtX3R5cGVfdHlwZWRlZlxcKGludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMKLSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBl X3R5cGVkZWYiCi0rCX0KLSsJLXJlICIuKmRtX3R5cGVfdHlwZWRlZlxcKG15aW50XFwpLipcclxu JGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBHREIgdHlwZSBwcmludGVyCi0rCSAgICBzZXQgZG1f dHlwZV90eXBlZGVmIDEKLSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX3R5cGVkZWYiCi0rCX0K LSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3R5 cGVkZWYiCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV90eXBl ZGVmICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0gfQotIAotICMKLUBAIC0yNDEsNiArMzgyLDcg QEAgcHJvYyBpbmZvX2Z1bmNfcmVnZXhwIHsgbmFtZSBkZW1hbmdsZWQgfSB7Ci0gICAgIGdsb2Jh bCBnZGJfcHJvbXB0Ci0gCi0gICAgIHNlbmRfZ2RiICJpbmZvIGZ1bmN0aW9uICRuYW1lXG4iCi0r ICAgIHNldCBkZW1hbmdsZWQgW3JlZ3N1YiB7XFxcKHZvaWRcXFwpfSAkZGVtYW5nbGVkIHtcKFwp fV0KLSAgICAgZ2RiX2V4cGVjdCB7Ci0gCS1yZSAiLipGaWxlIC4qOlxyXG4oY2xhc3MgfCkkZGVt YW5nbGVkXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotIAkgICAgcGFzcyAiaW5mbyBmdW5jdGlvbiBm b3IgXCIkbmFtZVwiIgotQEAgLTI3NywxNiArNDE5LDE2IEBAIHByb2MgcHJpbnRfYWRkcl8yIHsg bmFtZSBnb29kIH0gewotIAotICAgICBzZXQgZ29vZF9wYXR0ZXJuIFtzdHJpbmdfdG9fcmVnZXhw ICRnb29kXQotIAotLSAgICBzZW5kX2dkYiAicHJpbnQgJickbmFtZSdcbiIKLSsgICAgc2VuZF9n ZGIgInByaW50ICYkbmFtZVxuIgotICAgICBnZGJfZXhwZWN0IHsKLSAJLXJlICIuKiA9IC4qICRo ZXggPCRnb29kX3BhdHRlcm4+XHJcbiRnZGJfcHJvbXB0ICQiIHsKLS0JICAgIHBhc3MgInByaW50 ICYnJG5hbWUnIgotKwkgICAgcGFzcyAicHJpbnQgJiRuYW1lIgotIAl9Ci0gCS1yZSAiLiokZ2Ri X3Byb21wdCAkIiB7Ci0tCSAgICBmYWlsICJwcmludCAmJyRuYW1lJyIKLSsJICAgIGZhaWwgInBy aW50ICYkbmFtZSIKLSAJfQotIAl0aW1lb3V0IHsKLS0JICAgIGZhaWwgInByaW50ICYnJG5hbWUn ICh0aW1lb3V0KSIKLSsJICAgIGZhaWwgInByaW50ICYkbmFtZSAodGltZW91dCkiCi0gCX0KLSAg ICAgfQotIH0KLUBAIC0zMjcsNyArNDY5LDEyIEBAIHByb2MgcHJpbnRfYWRkcl8yX2tmYWlsIHsg bmFtZSBnb29kIGJhZCBidWdpZCB9IHsKLSAjCi0gCi0gcHJvYyBwcmludF9hZGRyIHsgbmFtZSB9 IHsKLS0gICAgcHJpbnRfYWRkcl8yICIkbmFtZSIgIiRuYW1lIgotKyAgICBzZXQgZXhwZWN0ZWQg W3JlZ3N1YiB7XCh2b2lkXCl9ICRuYW1lIHsoKX1dCi0rICAgIGlmIHtbc3RyaW5nIGZpcnN0ICI6 OiIgJG5hbWVdID09IC0xfSB7Ci0rCSMgQyBmdW5jdGlvbiAtLSBtdXN0IGJlIHF1dG9lZAotKwlz ZXQgbmFtZSAiJyRuYW1lJyIKLSsgICAgfQotKyAgICBwcmludF9hZGRyXzIgIiRuYW1lIiAkZXhw ZWN0ZWQKLSB9Ci0gCi0gIwotQEAgLTM0NSw4ICs0OTIsOSBAQCBwcm9jIHByaW50X2FkZHIgeyBu YW1lIH0gewotIAotIHByb2MgdGVzdF9sb29rdXBfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKLSAg ICAgZ2xvYmFsIGRtX29wZXJhdG9yX2NvbW1hCi0rICAgIGdsb2JhbCBkbV9vcGVyYXRvcl9jaGFy X3N0YXIKLSAgICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCi0tICAgIGdsb2JhbCBkbV90eXBl X2NoYXJfc3Rhcl9xdW90ZWQKLSsgICAgZ2xvYmFsIGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90 ZWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfZm9vX3JlZgotICAgICBnbG9iYWwgZG1fdHlwZV92b2lk Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgotQEAgLTQwNCw4ICs1NTIsOCBAQCBwcm9j IHRlc3RfbG9va3VwX29wZXJhdG9yX2Z1bmN0aW9ucyB7fSB7Ci0gCi0gICAgIGluZm9fZnVuYyAi b3BlcmF0b3IgaW50KCIJImludCBmb286Om9wZXJhdG9yIGludCgkZG1fdHlwZV92b2lkKTsiCi0g ICAgIGluZm9fZnVuYyAib3BlcmF0b3IoKSgiCSJ2b2lkIGZvbzo6b3BlcmF0b3IoKSgkZG1fdHlw ZV9mb29fcmVmKTsiCi0tICAgIGluZm9fZnVuYyAib3BlcmF0b3IgJGRtX3R5cGVfY2hhcl9zdGFy X3F1b3RlZFwoIiBcCi0tCQkJCSJjaGFyICpmb286Om9wZXJhdG9yICRkbV90eXBlX2NoYXJfc3Rh clwoJGRtX3R5cGVfdm9pZCk7IgotKyAgICBpbmZvX2Z1bmMgIm9wZXJhdG9yICRkbV9vcGVyYXRv cl9jaGFyX3N0YXJfcXVvdGVkXCgiIFwKLSsJCQkJImNoYXIgKmZvbzo6b3BlcmF0b3IgJGRtX29w ZXJhdG9yX2NoYXJfc3RhclwoJGRtX3R5cGVfdm9pZCk7IgotIAotIH0KLSAKLUBAIC00MjAsNiAr NTY4LDcgQEAgcHJvYyB0ZXN0X3BhZGRyX29wZXJhdG9yX2Z1bmN0aW9ucyB7fSB7Ci0gICAgIGds b2JhbCBkbV90eXBlX3Vuc2lnbmVkX2ludAotICAgICBnbG9iYWwgZG1fdHlwZV92b2lkCi0gICAg IGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgotKyAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY2hhcl9z dGFyCi0gCi0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IqKCRkbV90eXBlX2Zvb19yZWYp IgotICAgICBwcmludF9hZGRyICJmb286Om9wZXJhdG9yJSgkZG1fdHlwZV9mb29fcmVmKSIKLUBA IC00NjAsMTcgKzYwOSwyMCBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25zIHt9 IHsKLSAgICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvclxbXF0oJGRtX3R5cGVfZm9vX3JlZiki Ci0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IoKSgkZG1fdHlwZV9mb29fcmVmKSIKLSAK LS0gICAgZ2RiX3Rlc3QgInByaW50ICYnZm9vOjpvcGVyYXRvciBuZXcnIiBcCi0rICAgIGdkYl90 ZXN0ICJwcmludCAmZm9vOjpvcGVyYXRvciBuZXciIFwKLSAJIiA9IC4qICRoZXggPGZvbzo6b3Bl cmF0b3IgbmV3XFwoLipcXCkofCBzdGF0aWMpPiIKLSsgICAgZ2RiX3Rlc3QgInByaW50ICZmb286 Om9wZXJhdG9yIG5ld1xbXF0iIFwKLSsJIiA9IC4qICRoZXggPGZvbzo6b3BlcmF0b3IgbmV3XFxc W1xcXF1cXCguKlxcKSh8IHN0YXRpYyk+IiAgICAKLSAgICAgaWYgeyAhJGhwX2FDQ19jb21waWxl ciB9IHsKLSAJcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciBkZWxldGUoJGRtX3R5cGVfdm9pZF9z dGFyKSIKLSsJcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciBkZWxldGVbXSgkZG1fdHlwZV92b2lk X3N0YXIpIgotICAgICB9IGVsc2UgewotIAlnZGJfdGVzdCAicHJpbnQgJidmb286Om9wZXJhdG9y IGRlbGV0ZSgkZG1fdHlwZV92b2lkX3N0YXIpIHN0YXRpYyciIFwKLSAJICAgICIgPSAuKigweFxb MC05YS1mXF0rfCkgPGZvbzo6b3BlcmF0b3IgZGVsZXRlLio+IgotICAgICB9Ci0gCi0gICAgIHBy aW50X2FkZHIgImZvbzo6b3BlcmF0b3IgaW50KCRkbV90eXBlX3ZvaWQpIgotLSAgICBwcmludF9h ZGRyICJmb286Om9wZXJhdG9yICRkbV90eXBlX2NoYXJfc3RhclwoJGRtX3R5cGVfdm9pZCkiCi0r ICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IgJGRtX29wZXJhdG9yX2NoYXJfc3RhclwoJGRt X3R5cGVfdm9pZCkiCi0gfQotIAotICMKLUBAIC00ODAsMTcgKzYzMiwyMSBAQCBwcm9jIHRlc3Rf cGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKLSBwcm9jIHRlc3RfcGFkZHJfb3ZlcmxvYWRl ZF9mdW5jdGlvbnMge30gewotICAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9pbnQKLSAgICAg Z2xvYmFsIGRtX3R5cGVfdm9pZAotKyAgICBnbG9iYWwgZG1fdHlwZV9zaG9ydAotKyAgICBnbG9i YWwgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAotKyAgICBnbG9iYWwgZG1fdHlwZV9sb25nCi0rICAg IGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcKLSAKLSAgICAgcHJpbnRfYWRkciAib3Zlcmxv YWQxYXJnKCRkbV90eXBlX3ZvaWQpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoY2hh cikiCi0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhzaWduZWQgY2hhcikiCi0gICAgIHBy aW50X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25lZCBjaGFyKSIKLS0gICAgcHJpbnRfYWRkciAi b3ZlcmxvYWQxYXJnKHNob3J0KSIKLS0gICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKHVuc2ln bmVkIHNob3J0KSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRkbV90eXBlX3Nob3J0 KSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRkbV90eXBlX3Vuc2lnbmVkX3Nob3J0 KSIKLSAgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGludCkiCi0gICAgIHByaW50X2FkZHIg Im92ZXJsb2FkMWFyZygkZG1fdHlwZV91bnNpZ25lZF9pbnQpIgotLSAgICBwcmludF9hZGRyICJv dmVybG9hZDFhcmcobG9uZykiCi0tICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25l ZCBsb25nKSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRkbV90eXBlX2xvbmcpIgot KyAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoJGRtX3R5cGVfdW5zaWduZWRfbG9uZykiCi0g ICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhmbG9hdCkiCi0gICAgIHByaW50X2FkZHIgIm92 ZXJsb2FkMWFyZyhkb3VibGUpIgotIAotQEAgLTUxMywxNyArNjY5LDMxIEBAIHByb2MgdGVzdF9w YWRkcl9oYWlyeV9mdW5jdGlvbnMge30gewotICAgICBnbG9iYWwgZG1fdHlwZV9jaGFyX3N0YXIK LSAgICAgZ2xvYmFsIGRtX3R5cGVfaW50X3N0YXIKLSAgICAgZ2xvYmFsIGRtX3R5cGVfbG9uZ19z dGFyCi0rICAgIGdsb2JhbCBkbV90eXBlX3R5cGVkZWYKLSAKLSAgICAgcHJpbnRfYWRkcl8yICJo YWlyeWZ1bmMxIiAiaGFpcnlmdW5jMShpbnQpIgotLSAgICBwcmludF9hZGRyXzIgImhhaXJ5ZnVu YzIiICJoYWlyeWZ1bmMyKGludCAoKikoJGRtX3R5cGVfY2hhcl9zdGFyKSkiCi0tICAgIHByaW50 X2FkZHJfMiAiaGFpcnlmdW5jMyIgImhhaXJ5ZnVuYzMoaW50ICgqKShzaG9ydCAoKikoJGRtX3R5 cGVfbG9uZ19zdGFyKSkpIgotLSAgICBwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzQiICJoYWlyeWZ1 bmM0KGludCAoKikoc2hvcnQgKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKSIKLS0KLS0gICAgIyBn ZGItZ25hdHMgYnVnIGdkYi8xOToKLS0gICAgIyAiZ2RiIHYzIGRlbWFuZ2xlciBmYWlscyBvbiBo YWlyeWZ1bmM1IGhhaXJ5ZnVuYzYgaGFpcnlmdW5jNyIKLS0gICAgcHJpbnRfYWRkcl8yX2tmYWls ICJoYWlyeWZ1bmM1IiAiaGFpcnlmdW5jNShpbnQgKCooKikoJGRtX3R5cGVfY2hhcl9zdGFyKSko bG9uZykpIiAiaGFpcnlmdW5jNShpbnQgKCopKGxvbmcpICgqKShjaGFyKikpIiAiZ2RiLzE5Igot LSAgICBwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzYiICJoYWlyeWZ1bmM2KGludCAoKigq KSgkZG1fdHlwZV9pbnRfc3RhcikpKGxvbmcpKSIgImhhaXJ5ZnVuYzYoaW50ICgqKShsb25nKSAo KikoaW50KikpIiAiZ2RiLzE5IgotLSAgICBwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzci ICJoYWlyeWZ1bmM3KGludCAoKigqKShpbnQgKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKShsb25n KSkiICJoYWlyeWZ1bmM3KGludCAoKikobG9uZykgKCopKGludCAoKikoY2hhciopKSkiICJnZGIv MTkiCi0rCi0rICAgIGlmIHskZG1fdHlwZV90eXBlZGVmID09IDB9IHsKLSsJcHJpbnRfYWRkcl8y ICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihpbnQgKCopKCRkbV90eXBlX2NoYXJfc3RhcikpIgot KwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzMiICJoYWlyeWZ1bmMzKGludCAoKikoc2hvcnQgKCop KCRkbV90eXBlX2xvbmdfc3RhcikpKSIKLSsJcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmM0IiAiaGFp cnlmdW5jNChpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkiCi0rCi0rCSMg Z2RiLWduYXRzIGJ1ZyBnZGIvMTk6Ci0rCSMgImdkYiB2MyBkZW1hbmdsZXIgZmFpbHMgb24gaGFp cnlmdW5jNSBoYWlyeWZ1bmM2IGhhaXJ5ZnVuYzciCi0rCXByaW50X2FkZHJfMl9rZmFpbCAiaGFp cnlmdW5jNSIgImhhaXJ5ZnVuYzUoaW50ICgqKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKGxvbmcp KSIgImhhaXJ5ZnVuYzUoaW50ICgqKShsb25nKSAoKikoY2hhciopKSIgImdkYi8xOSIKLSsJcHJp bnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM2IiAiaGFpcnlmdW5jNihpbnQgKCooKikoJGRtX3R5 cGVfaW50X3N0YXIpKShsb25nKSkiICJoYWlyeWZ1bmM2KGludCAoKikobG9uZykgKCopKGludCop KSIgImdkYi8xOSIKLSsJcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM3IiAiaGFpcnlmdW5j NyhpbnQgKCooKikoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkobG9uZykpIiAiaGFpcnlm dW5jNyhpbnQgKCopKGxvbmcpICgqKShpbnQgKCopKGNoYXIqKSkpIiAiZ2RiLzE5IgotKyAgICB9 IGVsc2UgewotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzIiICJoYWlyeWZ1bmMyKFBGUGNfaSki Ci0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jMyIgImhhaXJ5ZnVuYzMoUEZQRlBsX3NfaSkiCi0r CXByaW50X2FkZHJfMiAiaGFpcnlmdW5jNCIgImhhaXJ5ZnVuYzQoUEZQRlBjX3NfaSkiCi0rCi0r CSMgZ2RiLWduYXRzIGJ1ZyBnZGIvMTk6Ci0rCSMgImdkYiB2MyBkZW1hbmdsZXIgZmFpbHMgb24g aGFpcnlmdW5jNSBoYWlyeWZ1bmM2IGhhaXJ5ZnVuYzciCi0rCXByaW50X2FkZHJfMiAiaGFpcnlm dW5jNSIgImhhaXJ5ZnVuYzUoUEZQY19QRmxfaSkiCi0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5j NiIgImhhaXJ5ZnVuYzYoUEZQaV9QRmxfaSkiCi0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jNyIg ImhhaXJ5ZnVuYzcoUEZQRlBjX2lfUEZsX2kpIgotKyAgICB9Ci0gfQotIAotIHByb2MgZG9fdGVz dHMge30gewotQEAgLTUzNCw2ICs3MDQsNyBAQCBwcm9jIGRvX3Rlc3RzIHt9IHsKLSAgICAgZ2xv YmFsIHNyY2RpcgotICAgICBnbG9iYWwgYmluZmlsZQotICAgICBnbG9iYWwgZ2RiX3Byb21wdAot KyAgICBnbG9iYWwgZG1fdHlwZV9pbnRfc3RhcgotIAotICAgICBzZXQgcHJtc19pZCAwCi0gICAg IHNldCBidWdfaWQgMAotQEAgLTU1Nyw2ICs3MjgsMTAgQEAgcHJvYyBkb190ZXN0cyB7fSB7Ci0g ICAgIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25zCi0gICAgIHRlc3RfcGFkZHJfaGFpcnlf ZnVuY3Rpb25zCi0gICAgIHRlc3RfbG9va3VwX29wZXJhdG9yX2Z1bmN0aW9ucwotKwotKyAgICAj IEEgcmVncmVzc2lvbiB0ZXN0IG9uIGVycm9ycyBpbnZvbHZpbmcgb3BlcmF0b3JzCi0rICAgIGdk Yl90ZXN0ICJsaXN0IGZvbzo6b3BlcmF0b3IgJGRtX3R5cGVfaW50X3N0YXIiIFwKLSsJIi4qdGhl IGNsYXNzIGZvbyBkb2VzIG5vdCBoYXZlIGFueSBtZXRob2QgbmFtZWQgb3BlcmF0b3IgJGRtX3R5 cGVfaW50X3N0YXIuKiIKLSB9Ci0gCi0gZG9fdGVzdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQt c2Fscy5leHAKLWluZGV4IDNjMzAyYzMuLmNkMDQ5NmQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4 cGFuZC1zYWxzLmV4cAotQEAgLTQ4LDcgKzQ4LDcgQEAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImNhbGxlciIgIi4qY2FsbGVyLWxpbmUuKiIKLSAKLSAjIFRlc3QgR0RCIGNhdWdodCB0aGlz IHJldHVybiBjYWxsIGFuZCBub3QgdGhlIG5leHQgb25lIHRocm91Z2ggQjo6QigpCi0gZ2RiX3Rl c3QgImJ0IiBcCi0tCSAiIzAgXFteXHJcblxdKiBBIFxbXlxyXG5cXSpcclxuIzEgXFteXHJcblxd KiBtYWluIFxbXlxyXG5cXSoiIFwKLSsJICIjMCBcW15cclxuXF0qIChBOjopP0EgXFteXHJcblxd KlxyXG4jMSBcW15cclxuXF0qIG1haW4gXFteXHJcblxdKiIgXAotIAkgImJ0IGZyb20gQSIKLSAK LSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibmV4dCBjYWxsZXIgZnVuYyIgIi4qZnVuYy1s aW5lLioiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi43ODNjOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9nZGI5NTkzLmNjCi1AQCAtMCwwICsxLDE4MCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDgsIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQpAQCAtMjM0MzMsMjYxICsxNjMzNCwxNTkgQEAgaW5kZXggMDAwMDAwMC4u ZWU5YWVmZgogK2dkYl90ZXN0ICJhZHZhbmNlICRsaW5lIiBcCiArICAiLipjYXRjaCAoLi4uKS4q IiBcCiArICAiYWR2YW5jZS1vdmVyLXRocm93IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL21lbWJlci1wdHIuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmNj Ci1pbmRleCAxZGZmNzBhLi42NDhiMmFmIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbWVtYmVyLXB0ci5jYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5j YwotQEAgLTEzOCw2ICsxMzgsNyBAQCBjbGFzcyBEaWFtb25kIDogcHVibGljIFBhZGRpbmcsIHB1 YmxpYyBMZWZ0LCBwdWJsaWMgUmlnaHQKLSB7Ci0gcHVibGljOgotICAgdmlydHVhbCBpbnQgdmdl dF9iYXNlICgpOwotKyAgaW50ICgqZnVuY19wdHIpIChpbnQpOwotIH07Ci0gCi0gaW50IERpYW1v bmQ6OnZnZXRfYmFzZSAoKQotQEAgLTE0NSw2ICsxNDYsMTIgQEAgaW50IERpYW1vbmQ6OnZnZXRf YmFzZSAoKQotICAgcmV0dXJuIHRoaXMtPkxlZnQ6OnggKyAyMDAwOwotIH0KLSAKLStpbnQKLStm dW5jIChpbnQgeCkKLSt7Ci0rICByZXR1cm4gMTkgKyB4OwotK30KLSsKLSBpbnQgbWFpbiAoKQot IHsKLSAgIEEgYTsKLUBAIC0xNjIsNiArMTY5LDcgQEAgaW50IG1haW4gKCkKLSAgIGludCAoRGlh bW9uZDo6KnJpZ2h0X3ZwbWYpICgpOwotICAgaW50IChCYXNlOjoqYmFzZV92cG1mKSAoKTsKLSAg IGludCBEaWFtb25kOjoqZGlhbW9uZF9wbWk7Ci0rICBpbnQgKCogRGlhbW9uZDo6KmRpYW1vbmRf cGZ1bmNfcHRyKSAoaW50KTsKLSAKLSAgIFBNSSBudWxsX3BtaTsKLSAgIFBNRiBudWxsX3BtZjsK LUBAIC0xNzksNiArMTg3LDcgQEAgaW50IG1haW4gKCkKLSAKLSAgIGRpYW1vbmQuTGVmdDo6eCA9 IDc3OwotICAgZGlhbW9uZC5SaWdodDo6eCA9IDg4OwotKyAgZGlhbW9uZC5mdW5jX3B0ciA9IGZ1 bmM7Ci0gCi0gICAvKiBTb21lIHZhbGlkIHBvaW50ZXIgdG8gbWVtYmVycyBmcm9tIGEgYmFzZSBj bGFzcy4gICovCi0gICBsZWZ0X3BtZiA9IChpbnQgKERpYW1vbmQ6OiopICgpKSAoaW50IChMZWZ0 OjoqKSAoKSkgKCZCYXNlOjpnZXRfeCk7Ci1AQCAtMTkzLDExICsyMDIsMTkgQEAgaW50IG1haW4g KCkKLSAgIC8qIEEgcG9pbnRlciB0byBkYXRhIG1lbWJlciBmcm9tIGEgYmFzZSBjbGFzcy4gICov Ci0gICBkaWFtb25kX3BtaSA9IChpbnQgRGlhbW9uZDo6KikgKGludCBMZWZ0OjoqKSAmQmFzZTo6 eDsKLSAKLSsgIC8qIEEgcG9pbnRlciB0byBkYXRhIG1lbWJlciwgd2hlcmUgdGhlIG1lbWJlciBp cyBpdHNlbGYgYSBwb2ludGVyIHRvCi0rICAgICBhIGZ1bmN0aW9uLiAgKi8KLSsgIGRpYW1vbmRf cGZ1bmNfcHRyID0gKGludCAoKiBEaWFtb25kOjoqKSAoaW50KSkgJkRpYW1vbmQ6OmZ1bmNfcHRy OwotKwotICAgbnVsbF9wbWkgPSBOVUxMOwotICAgbnVsbF9wbWYgPSBOVUxMOwotIAotICAgcG1p ID0gTlVMTDsgLyogQnJlYWtwb2ludCAxIGhlcmUuICAqLwotIAotKyAgLy8gSW52YWxpZCAodXNl cyBkaWFtb25kX3BmdW5jX3B0ciBhcyBhIGZ1bmN0aW9uKToKLSsgIC8vIGRpYW1vbmQuKmRpYW1v bmRfcGZ1bmNfcHRyICgyMCk7Ci0rICAoZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIpICgyMCk7 Ci0rCi0gICBrID0gKGEuKnBtZikoMyk7Ci0gCi0gICBwbWkgPSAmQTo6amo7Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9tZW1iZXItcHRyLmV4cAotaW5kZXggYjY5ZDRhZC4uODNkZDBkNSAxMDA2NDQKLS0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9tZW1iZXItcHRyLmV4cAotQEAgLTM5MCw2ICszOTAsMzMgQEAgZ2RiX3Rlc3RfbXVs dGlwbGUgInByaW50ICgoaW50KSBwbWkpID09ICgoY2hhciAqKSAmYS5qIC0gKGNoYXIgKikgJiBh KSIgJG5hbWUgewotICAgICB9Ci0gfQotIAotKyMgQ2hlY2sgcG9pbnRlcnMgdG8gZGF0YSBtZW1i ZXJzLCB3aGljaCBhcmUgdGhlbXNlbHZlcyBwb2ludGVycyB0bwotKyMgZnVuY3Rpb25zLiAgVGhl c2UgYmVoYXZlIGxpa2UgZGF0YSBtZW1iZXJzLCBub3QgbGlrZSBwb2ludGVycyB0bwotKyMgbWVt YmVyIGZ1bmN0aW9ucy4KLSsKLStnZGJfdGVzdCAicHR5cGUgZGlhbW9uZF9wZnVuY19wdHIiIFwK LSsgICAgInR5cGUgPSBpbnQgXFwoXFwqRGlhbW9uZDo6XFwqXFwpXFwoaW50XFwpIgotKwotK2dk Yl90ZXN0ICJwdHlwZSBkaWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciIgXAotKyAgICAidHlwZSA9 IGludCBcXChcXCpcXClcXChpbnRcXCkiCi0rCi0rIyBUaGlzIG9uZSBpcyBpbnZhbGlkOyAoKSBi aW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiAuKiwgc28gaXQgdHJpZXMgdG8KLSsjIGNhbGwgdGhlIG1l bWJlciBwb2ludGVyIGFzIGEgbm9ybWFsIHBvaW50ZXItdG8tZnVuY3Rpb24uCi0rCi0rZ2RiX3Rl c3QgInByaW50IGRpYW1vbmQuKmRpYW1vbmRfcGZ1bmNfcHRyICgyMCkiIFwKLSsgICAgIkludmFs aWQgZGF0YSB0eXBlIGZvciBmdW5jdGlvbiB0byBiZSBjYWxsZWQuIgotKwotKyMgV2l0aCBwYXJl bnRoZXNlcywgaXQgaXMgdmFsaWQuCi0rCi0rZ2RiX3Rlc3QgInByaW50IChkaWFtb25kLipkaWFt b25kX3BmdW5jX3B0cikgKDIwKSIgXAotKyAgICAiJHZobiA9IDM5IgotKwotKyMgTWFrZSBzdXJl IHRoYXQgd2UgZG8gbm90IGludGVycHJldCB0aGlzIGFzIGVpdGhlciBhIG1lbWJlciBwb2ludGVy Ci0rIyBjYWxsIG9yIGEgbWVtYmVyIGZ1bmN0aW9uIGNhbGwuCi0rCi0rZ2RiX3Rlc3QgInByaW50 IGRpYW1vbmQuZnVuY19wdHIgKDIwKSIgXAotKyAgICAiJHZobiA9IDM5IgotKwotICMgPT09PT09 PT09PT09PT09PT09PT09PT09PT0KLSAjIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uCi0gIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PQotQEAgLTQyMCw3ICs0NDcsNyBAQCBnZGJfdGVzdF9t dWx0aXBsZSAicHR5cGUgcG1mIiAkbmFtZSB7Ci0gCi0gc2V0IG5hbWUgInByaW50IHBtZiIKLSBn ZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgcG1mIiAkbmFtZSB7Ci0tICAgIC1yZSAiJHZobiA9ICRo ZXggPEE6OmJhclxcKGludFxcKT5cclxuJGdkYl9wcm9tcHQgJCIgewotKyAgICAtcmUgIiR2aG4g PSBcXChpbnQgXFwoQTo6XFwqXFwpXFwoQSBcXCosIGludFxcKVxcKSAkaGV4IDxBOjpiYXJcXChp bnRcXCk+XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJcGFzcyAkbmFtZQotICAgICB9Ci0gICAgIC1y ZSAiJHZobiA9IC4qbm90IHN1cHBvcnRlZCB3aXRoIEhQIGFDQy4qXHJcbiRnZGJfcHJvbXB0ICQi IHsKLUBAIC02MDgsNiArNjM1LDkgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IChhLipwbWYp KDMpIiAkbmFtZSB7Ci0gICAgIH0KLSB9Ci0gCi0rZ2RiX3Rlc3QgInB0eXBlIGEuKnBtZiIgInR5 cGUgPSBpbnQgXFwoQSBcXCosIGludFxcKSIKLStnZGJfdGVzdCAicHR5cGUgKGEuKnBtZikoMyki ICJ0eXBlID0gaW50IgotKwotICMgUHJpbnQgb3V0IGEgcG9pbnRlciB0byBkYXRhIG1lbWJlciB3 aGljaCByZXF1aXJlcyBsb29raW5nIGludG8KLSAjIGEgYmFzZSBjbGFzcy4KLSBnZGJfdGVzdCAi cHJpbnQgZGlhbW9uZF9wbWkiICIkdmhuID0gJkJhc2U6OngiCi1AQCAtNjU4LDUgKzY4OCw1IEBA IGdkYl90ZXN0ICJwcmludCBudWxsX3BtaSA9ICZBOjpqIiAiJHZobiA9ICZBOjpqIgotIGdkYl90 ZXN0ICJwcmludCBudWxsX3BtaSA9IDAiICIkdmhuID0gTlVMTCIKLSAKLSBnZGJfdGVzdCAicHJp bnQgbnVsbF9wbWYiICIkdmhuID0gTlVMTCIKLS1nZGJfdGVzdCAicHJpbnQgbnVsbF9wbWYgPSAm QTo6Zm9vIiAiJHZobiA9ICRoZXggPEE6OmZvbyA/XFwoaW50XFwpPiIKLStnZGJfdGVzdCAicHJp bnQgbnVsbF9wbWYgPSAmQTo6Zm9vIiAiJHZobiA9IFxcKGludCBcXChBOjpcXCpcXClcXChBIFxc KiwgaW50XFwpXFwpICRoZXggPEE6OmZvbyA/XFwoaW50XFwpPiIKLSBnZGJfdGVzdCAicHJpbnQg bnVsbF9wbWYgPSAwIiAiJHZobiA9IE5VTEwiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLW11bHRpcGxlLWltcG9ydHMuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9uYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5jYworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1hcmFuZ2VzLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42YjE4MGQ2 CitpbmRleCAwMDAwMDAwLi5kNWI5Y2E1CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5jYwotQEAgLTAsMCArMSwyMCBA QAotK25hbWVzcGFjZSBBIHsKLSsgIGludCB4ID0gMTE7Ci0rICBuYW1lc3BhY2V7Ci0rICAgIGlu dCB4eCA9IDIyOwotKyAgfQotK30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt YXJhbmdlcy5TCitAQCAtMCwwICsxLDE0MCBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rdXNpbmcgbmFtZXNwYWNlIEE7CisrICAgQ29w eXJpZ2h0IDIwMDQsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCi0rbmFtZXNwYWNlewotKyAgaW50IHh4eCA9IDMzOwotK307CisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KICsKLStpbnQgbWFpbigpCi0rewotKyAgeDsKLSsgIHh4OwotKyAg eHh4OwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLmU0YmI5ZjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cAotQEAgLTAsMCArMSw0OSBAQAotKyMg Q29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0r ICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KKysvKiBUZXN0IC5kZWJ1Z19hcmFuZ2VzIGNvbnRh aW5pbmcgemVybyBhZGRyZXNzX3NpemUuICAqLwogKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVn X2lkIDAKKysvKiBEdW1teSBmdW5jdGlvbiB0byBwcm92aWRlIGRlYnVnIGluZm9ybWF0aW9uIGZv ci4gICovCiArCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzCi0rc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsK LSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1 cm4gLTEKLSt9CisrCS50ZXh0CisrLkxiZWdpbl90ZXh0MToKKysJLmdsb2JsIG1haW4KKysJLnR5 cGUgbWFpbiwgJWZ1bmN0aW9uCisrbWFpbjoKKysuTGJlZ2luX21haW46CisrCS5pbnQgMAorKy5M ZW5kX21haW46CisrCS5zaXplIG1haW4sIC4tbWFpbgorKy5MZW5kX3RleHQxOgogKwotKyMgR2V0 IHRoaW5ncyBzdGFydGVkLgorKy8qIERlYnVnIGluZm9ybWF0aW9uICovCiArCi0rZ2RiX2V4aXQK LStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJf bG9hZCAke2JpbmZpbGV9CisrCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCisrLkxjdTFfYmVnaW46Cisr CS8qIENVIGhlYWRlciAqLworKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJCS8qIExl bmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFfc3RhcnQ6CisrCS4yYnl0ZQkyCQkJ CS8qIERXQVJGIFZlcnNpb24gKi8KKysJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8qIE9mZnNl dCBpbnRvIGFiYnJldiBzZWN0aW9uICovCisrCS5ieXRlCTQJCQkJLyogUG9pbnRlciBzaXplICov CiArCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRl c3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGltcG9ydGVkIHdpdGhpbgotKyMgdGhlIGZ1bmN0aW9u LgorKwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21w aWxlX3VuaXQgKi8KKysJLjRieXRlCS5MZW5kX3RleHQxCQkJLyogRFdfQVRfaGlnaF9wYyAqLwor KwkuNGJ5dGUJLkxiZWdpbl90ZXh0MQkJCS8qIERXX0FUX2xvd19wYyAqLworKwkuYXNjaWkJImZp bGUxLnR4dFwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysJLmFzY2lpCSJHTlUgQyAzLjMuM1wwIgkJ CS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS5ieXRlCTEJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMp ICovCiArCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KKysJLyogbWFpbiAqLwor KwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJ MQkJCS8qIERXX0FUX2V4dGVybmFsICovCisrCS5ieXRlCQkxCQkJLyogRFdfQVRfZGVjbF9maWxl ICovCisrCS5ieXRlCQkyCQkJLyogRFdfQVRfZGVjbF9saW5lICovCisrCS5hc2NpaQkJIm1haW5c MCIJCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTHR5cGVfaW50LS5MY3UxX2JlZ2luCS8q IERXX0FUX3R5cGUgKi8KKysJLjRieXRlCQkuTGJlZ2luX21haW4JLyogRFdfQVRfbG93X3BjICov CisrCS40Ynl0ZQkJLkxlbmRfbWFpbgkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkuYnl0ZQkJMQkJ CS8qIERXX0FUX2ZyYW1lX2Jhc2U6IGxlbmd0aCAqLworKwkuYnl0ZQkJMHg1NQkJCS8qIERXX0FU X2ZyYW1lX2Jhc2U6IERXX09QX3JlZzUgKi8KICsKLStnZGJfdGVzdCAicHJpbnQgeCIgIlxcJFxb MC05XF0uKiA9IDExIgotK2dkYl90ZXN0ICJwcmludCB4eCIgIlxcJFxbMC05XF0uKiA9IDIyIgot K2dkYl90ZXN0ICJwcmludCB4eHgiICJcXCRcWzAtOVxdLiogPSAzMyIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45NzIzZjg3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLUBAIC0wLDAgKzEs MzYgQEAKLStuYW1lc3BhY2UgQQotK3sKLSsgIG5hbWVzcGFjZSBCCi0rICB7Ci0rICAgIGludCBh YiA9IDExOwotKyAgfQotK30KKysuTHR5cGVfaW50OgorKwkudWxlYjEyOAkzCQkJLyogQWJicmV2 OiBEV19UQUdfYmFzZV90eXBlICovCisrCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUg Ki8KKysJLmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5dGUJCTUJCQkvKiBE V19BVF9lbmNvZGluZyAqLwogKwotK25hbWVzcGFjZSBDCi0rewotKyAgbmFtZXNwYWNlIEQKLSsg IHsKLSsgICAgdXNpbmcgbmFtZXNwYWNlIEE6OkI7CisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNo aWxkcmVuIG9mIENVICovCiArCi0rICAgIGludAotKyAgICBzZWNvbmQoKQotKyAgICB7Ci0rICAg ICAgYWI7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgIH0KKysuTGN1MV9lbmQ6CiArCi0r ICBpbnQKLSsgIGZpcnN0KCkKLSsgIHsKLSsgICAgLy9hYjsKLSsgICAgcmV0dXJuIEQ6OnNlY29u ZCgpOwotKyAgfQotK30KKysvKiBBYmJyZXYgdGFibGUgKi8KKysJLnNlY3Rpb24gLmRlYnVnX2Fi YnJldgorKy5MYWJicmV2MV9iZWdpbjoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICov CisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkx CQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3Bj ICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkudWxlYjEyOAkweDEx CQkJLyogRFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAq LworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8q IERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAq LworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDEz CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwogKwotK2ludAotK21haW4oKQotK3sKLSsgIC8vYWI7Ci0rICByZXR1cm4g Qzo6Zmlyc3QoKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNw YWNlLW5lc3RlZC1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1u ZXN0ZWQtaW1wb3J0cy5leHAKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51 bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJMAkJCS8qIGhh c19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDNmCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KKysJ LnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS51bGViMTI4CTB4M2EJCQkvKiBE V19BVF9kZWNsX2ZpbGUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwor KwkudWxlYjEyOAkweDNiCQkJLyogRFdfQVRfZGVjbF9saW5lICovCisrCS51bGViMTI4CTB4YgkJ CS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwor KwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDQ5CQkJ LyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisr CS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyog RFdfRk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisr CS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkudWxlYjEyOAkweDQwCQkJLyog RFdfQVRfZnJhbWVfYmFzZSAqLworKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIx MjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBoYXNfY2hp bGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkw eDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRl X3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEy OAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9S TV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKy8qIGFyYW5nZXMgdGFibGUgKi8K KysJLnNlY3Rpb24gLmRlYnVnX2FyYW5nZXMKKysJLmxvbmcJLkxhcmFuZ2VzX2VuZCAtIDFmCisr MToKKysJLjJieXRlCTIJCQkJLyogYXJhbmdlcyBWZXJzaW9uICovCisrCS40Ynl0ZQkuTGN1MV9i ZWdpbiAtIC5kZWJ1Z19pbmZvCS8qIE9mZnNldCBpbnRvIC5kZWJ1Z19pbmZvIHNlY3Rpb24gKi8K KysJLyogVGhlIEdEQiBjcmFzaGVyIGlzIHRoaXMgemVybyB2YWx1ZS4gICovCisrCS5ieXRlCQkw CQkJLyogYXJhbmdlcyBhZGRyZXNzX3NpemUgKi8KKysJLmJ5dGUJCTAJCQkvKiBhcmFuZ2VzIHNl Z21lbnRfc2l6ZSAqLworKworKy5MYXJhbmdlc19lbmQ6CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItYXJhbmdlcy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5k Mjc5ZmI1CitpbmRleCAwMDAwMDAwLi4zOTYzMmQ1CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuZXhwCi1AQCAtMCwwICsx LDU3IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5leHAKK0BAIC0wLDAg KzEsNDAgQEAKKysjIENvcHlyaWdodCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CkBAIC0yMzcwMiw0MTQgKzE2NTAxLDI2MCBAQCBpbmRleCAwMDAwMDAwLi5kMjc5ZmI1CiAr IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0r ICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19p ZCAwCisrIyBUZXN0IC5kZWJ1Z19hcmFuZ2VzIGNvbnRhaW5pbmcgemVybyBhZGRyZXNzX3NpemUu CiArCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cwotK3NldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmNjCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCisr IyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FS Ri0yIGFuZCB1c2UgZ2FzLgorKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRh cmdldHMuCisraWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYgIVtpc3RhcmdldCAq LSotZ251Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KKysgICAgJiYgIVtpc3Rhcmdl dCAqLSotb3BlbmJzZCpdCisrICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCisrICAgICYm ICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0geworKyAgICByZXR1cm4gMCAgCiArfQogKwot KyMgR2V0IHRoaW5ncyBzdGFydGVkLgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQorK3Nl dCB0ZXN0ZmlsZSAiZHcyLWFyYW5nZXMiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUworK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsKLSsjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK2lmICFbcnVudG9fbWFpbl0gdGhl biB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKLSsgICAg Y29udGludWUKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge25vZGVidWd9XSAhPSAiIiB9IHsKKysgICAg cmV0dXJuIC0xCiArfQogKwotK2dkYl90ZXN0ICJwcmludCBhYiIgIk5vIHN5bWJvbCAuKiBpbiBj dXJyZW50IGNvbnRleHQuIgotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0rZ2RiX2JyZWFrcG9pbnQgQzo6Zmlyc3QKLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiQzo6Zmlyc3QiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFiIiAiTm8gc3ltYm9sIC4q IGluIGN1cnJlbnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInByaW50IEM6OkQ6OmFiIiAiPSAxMSIK LSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK2dkYl9i cmVha3BvaW50IEM6OkQ6OnNlY29uZAotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJDOjpE OjpzZWNvbmQiCisrY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKICsKLStnZGJfdGVzdCAicHJpbnQg YWIiICI9IDExIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1u by1pbXBvcnRzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMu Y2MKKysjIEZhaWxlZCBnZGJfbG9hZCB3b3VsZCBhYm9ydCB0aGUgdGVzdGNhc2UgZXhlY3V0aW9u IGVhcmxpZXIuCisrcGFzcyAiZmlsZSBsb2FkZWQiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1zdHJpcHBlZC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDFjNjhh YgoraW5kZXggMDAwMDAwMC4uMWYwMmQ5MAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuY2MKLUBAIC0wLDAgKzEsMzcgQEAKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYworQEAgLTAsMCArMSw0 MiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CiArCi0rbmFtZXNwYWNlIEEKLSt7Ci0rICBpbnQgX2EgPSAxMTsKKysgICBDb3B5cmlnaHQgMjAw NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsgIG5hbWVzcGFjZSBCeworKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rICAgIGludCBhYiA9IDIyOworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIAorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywKKysgICBVU0EuICAqLwogKwotKyAgICBuYW1lc3BhY2UgQ3sKICsKLSsgICAgICBpbnQg YWJjID0gMzM7CisrLyogVGhlIGZ1bmN0aW9uIGBmdW5jMScgdHJhY2VkIGludG8gbXVzdCBoYXZl IGRlYnVnIGluZm8gb24gb2Zmc2V0ID4gMDsKKysgICAoRFdfVU5TTkQgKGF0dHIpKS4gIFRoaXMg aXMgdGhlIHJlYXNvbiBvZiBgZnVuYzAnIGV4aXN0ZW5jZS4gICovCiArCi0rICAgICAgaW50IHNl Y29uZCgpewotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgfQorK3ZvaWQKKytmdW5jMChpbnQg YSwgaW50IGIpCisreworK30KICsKLSsgICAgfQorKy8qIGBmdW5jMScgYmVpbmcgdHJhY2VkIGlu dG8gbXVzdCBoYXZlIHNvbWUgYXJndW1lbnRzIHRvIGR1bXAuICAqLwogKwotKyAgICBpbnQgZmly c3QoKXsKLSsgICAgICBfYTsKLSsgICAgICBhYjsKLSsgICAgICBDOjphYmM7Ci0rICAgICAgcmV0 dXJuIEM6OnNlY29uZCgpOwotKyAgICB9Ci0rICB9Cisrdm9pZAorK2Z1bmMxKGludCBhLCBpbnQg YikKKyt7CisrICBmdW5jMCAoYSxiKTsKICt9CiArCi0rCiAraW50Ci0rbWFpbigpCisrbWFpbih2 b2lkKQogK3sKLSsgIEE6Ol9hOwotKyAgQTo6Qjo6YWI7Ci0rICBBOjpCOjpDOjphYmM7Ci0rICBy ZXR1cm4gQTo6Qjo6Zmlyc3QoKTsKKysgIGZ1bmMxICgxLCAyKTsKKysgIHJldHVybiAwOwogK30K LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5leHAKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uZTUwODEwMworaW5kZXggMDAwMDAwMC4uMWM2ZTg0YQogLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMu ZXhwCi1AQCAtMCwwICsxLDc2IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBw ZWQuZXhwCitAQCAtMCwwICsxLDc5IEBACisrIyBDb3B5cmlnaHQgMjAwNiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKKysjIAogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCisrIyAKICsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNl ICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLStz ZXQgdGVzdGZpbGUgbmFtZXNwYWNlLW5vLWltcG9ydHMKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291 bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEdl dCB0aGluZ3Mgc3RhcnRlZC4KKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQorKyMgTWluaW1hbCBEV0FSRi0yIHVuaXQgdGVzdAogKwotKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0raWYgIVtydW50b19t YWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWlu IgotKyAgICBjb250aW51ZQorKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRz IHdoaWNoIHN1cHBvcnQgRFdBUkYtMi4KKysjIEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxp a2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAgICYmICFbaXN0 YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisrICAgICYmICFb aXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQor KyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0dXJuIDAgIAog K30KICsKLStnZGJfdGVzdCAicHJpbnQgQTo6X2EiICI9IDExIgotK2dkYl90ZXN0ICJwcmludCBB OjpCOjphYiIgIj0gMjIiCi0rZ2RiX3Rlc3QgInByaW50IEE6OkI6OkM6OmFiYyIgIj0gMzMiCi0r Ci0rZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4i Ci0rZ2RiX3Rlc3QgInByaW50IGFiIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4i Ci0rZ2RiX3Rlc3QgInByaW50IGFiYyIgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQu IgotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rZ2Ri X2JyZWFrcG9pbnQgQTo6Qjo6Zmlyc3QKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQTo6 Qjo6Zmlyc3QiCi0rCi0rZ2RiX3Rlc3QgInByaW50IEE6Ol9hIiAiPSAxMSIKLStnZGJfdGVzdCAi cHJpbnQgQTo6Qjo6YWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBBOjpCOjpDOjphYmMiICI9 IDMzIgotKwotK2dkYl90ZXN0ICJwcmludCBfYSIgIj0gMTEiCi0rZ2RiX3Rlc3QgInByaW50IGFi IiAiPSAyMiIKLStnZGJfdGVzdCAicHJpbnQgQzo6YWJjIiAiPSAzMyIKLSsKLStnZGJfdGVzdCAi cHJpbnQgYWJjIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4iCi0rCi0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStnZGJfYnJlYWtwb2ludCBB OjpCOjpDOjpzZWNvbmQKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQTo6Qjo6Qzo6c2Vj b25kIgorK3NldCB0ZXN0ZmlsZSAiZHcyLXN0cmlwcGVkIgorK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LngKICsK LStnZGJfdGVzdCAicHJpbnQgQTo6X2EiICI9IDExIgotK2dkYl90ZXN0ICJwcmludCBBOjpCOjph YiIgIj0gMjIiCi0rZ2RiX3Rlc3QgInByaW50IEE6OkI6OkM6OmFiYyIgIj0gMzMiCisrcmVtb3Rl X2V4ZWMgYnVpbGQgInJtIC1mICR7YmluZmlsZX0iCiArCi0rZ2RiX3Rlc3QgInByaW50IF9hIiAi PSAxMSIKLStnZGJfdGVzdCAicHJpbnQgYWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBhYmMi ICI9IDMzIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1 cnNpdmUuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmNjCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDZkNGMxOAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5jYwotQEAg LTAsMCArMSw0NyBAQAotK25hbWVzcGFjZSBBewotKyAgaW50IGF4ID0gOTsKKysjIGdldCB0aGUg dmFsdWUgb2YgZ2NjX2NvbXBpbGVkCisraWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1d IHsKKysgICAgcmV0dXJuIC0xCiArfQogKwotK25hbWVzcGFjZSBCewotKyAgdXNpbmcgbmFtZXNw YWNlIEE7CisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIGdjYyBhcyB3ZSB1c2UgYWRk aXRpb25hbF9mbGFncz1GSVhNRQorK2lmIHskZ2NjX2NvbXBpbGVkID09IDB9IHsKKysgICAgcmV0 dXJuIDAKICt9CiArCi0rbmFtZXNwYWNlIEN7Ci0rICB1c2luZyBuYW1lc3BhY2UgQjsKKytpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWdnZGIzfV0gIT0gIiIgfSB7 CisrICAgIHJldHVybiAtMQogK30KICsKLSt1c2luZyBuYW1lc3BhY2UgQzsKLSsKLSsvLy0tLS0t LS0tLS0tLS0tLQotK25hbWVzcGFjZSBEewotKyAgdXNpbmcgbmFtZXNwYWNlIEQ7Ci0rICBpbnQg ZHggPSA5OTsKLSt9Ci0rdXNpbmcgbmFtZXNwYWNlIEQ7CisrcmVtb3RlX2V4ZWMgYnVpbGQgIm9i amNvcHkgLVIgLmRlYnVnX2xvYyAke2JpbmZpbGV9IgorK3NldCBzdHJpcF9vdXRwdXQgW3JlbW90 ZV9leGVjIGJ1aWxkICJvYmpkdW1wIC1oICR7YmluZmlsZX0iXQogKwotKy8vLS0tLS0tLS0tLS0t LS0tCi0rbmFtZXNwYWNlewotKyAgbmFtZXNwYWNlewotKyAgICBpbnQgeHggPSA5OTk7Ci0rICB9 Cisrc2V0IHRlc3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgcHJlc2VydmF0aW9uIgorK2lmIFsgcmVn ZXhwICIuZGVidWdfaW5mbyAiICRzdHJpcF9vdXRwdXRdICB7CisrICAgIHBhc3MgIiR0ZXN0ICgu ZGVidWdfaW5mbyBwcmVzZXJ2ZWQpIgorK30gZWxzZSB7CisrICAgIGZhaWwgIiR0ZXN0ICguZGVi dWdfaW5mbyBnb3QgYWxzbyBzdHJpcHBlZCkiCiArfQogKwotKy8vLS0tLS0tLS0tLS0tLS0tCi0r bmFtZXNwYWNlIEV7Ci0rICBpbnQgZXggPSA5OTk5OworK3NldCB0ZXN0ICJzdHJpcHBpbmcgdGVz dCBmaWxlIGZ1bmN0aW9uYWxpdHkiCisraWYgWyByZWdleHAgIi5kZWJ1Z19sb2MgIiAkc3RyaXBf b3V0cHV0XSAgeworKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2xvYyBzdGlsbCBwcmVzZW50KSIK Kyt9IGVsc2UgeworKyAgICBwYXNzICIkdGVzdCAoLmRlYnVnX2xvYyBzdHJpcHBlZCkiCiArfQog KwotK25hbWVzcGFjZSBGewotKyAgbmFtZXNwYWNlIEZFID0gRTsKLSt9CisrZ2RiX2V4aXQKKytn ZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9h ZCAke2JpbmZpbGV9CiArCi0rbmFtZXNwYWNlIEd7Ci0rICBuYW1lc3BhY2UgR0YgPSBGOwotK30K KysjIEZvciBDIHByb2dyYW1zLCAic3RhcnQiIHNob3VsZCBzdG9wIGluIG1haW4oKS4KICsKLSsv Ly0tLS0tLS0tLS0tLS0tLS0KLStpbnQgbWFpbigpewotKyAgdXNpbmcgbmFtZXNwYWNlIEQ7Ci0r ICBuYW1lc3BhY2UgR1ggPSBHOwotKyAgcmV0dXJuIGF4ICsgZHggKyB4eCArIEc6OkdGOjpGRTo6 ZXg7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1 cnNpdmUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5leHAK KytnZGJfdGVzdCAic3RhcnQiIFwKKysgICAgICAgICAiLiptYWluIFxcKFxcKSBhdCAuKiIgXAor KyAgICAgICAgICJzdGFydCIKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgICAgICAgICJmdW5jLiog XFwoLipcXCkgYXQgLioiIFwKKysgICAgICAgICAic3RlcCIKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUwog bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU1NDM3NTcKK2luZGV4IDAwMDAw MDAuLjVmY2RkODQKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1yZWN1cnNpdmUuZXhwCi1AQCAtMCwwICsxLDc1IEBACi0rIyBDb3B5cmlnaHQgMjAw OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAotK30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJl ci1kYXRhLWxvY2F0aW9uLlMKK0BAIC0wLDAgKzEsODMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotK3NldCBwcm1zX2lkIDAKLStzZXQg YnVnX2lkIDAKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKLStzZXQgdGVzdGZpbGUgbmFtZXNwYWNlLXJlY3Vyc2l2ZQotK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmNjCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQor KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0raWYgW2dldF9jb21waWxlcl9pbmZv ICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xOwotK30KKysgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgogKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotKyMgR2V0IHRo aW5ncyBzdGFydGVkLgorKy8qIERlYnVnIGluZm9ybWF0aW9uICovCiArCi0rZ2RiX2V4aXQKLStn ZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9h ZCAke2JpbmZpbGV9CisrCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCisrLkxjdTFfYmVnaW46CisrCS8q IENVIGhlYWRlciAqLworKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0 aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFfc3RhcnQ6CisrCS4yYnl0ZQkyCQkJCS8q IERXQVJGIFZlcnNpb24gKi8KKysJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8qIE9mZnNldCBp bnRvIGFiYnJldiBzZWN0aW9uICovCisrCS5ieXRlCTQJCQkJLyogUG9pbnRlciBzaXplICovCiAr Ci0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KKysJLyogQ1UgZGllICovCisrCS51 bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQki ZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5jXDAiCS8qIERXX0FUX25hbWUgKi8KKysJ LmFzY2lpCSJHTlUgQyA0LjMuMlwwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS5ieXRlCTEJ CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpICovCiArCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRlc3QgcHJpbnRpbmcgZnJvbSBuYW1lc3BhY2UgaW1w b3J0ZWQgaW50bwotKyMgaW1wb3J0ZWQgbmFtZXNwYWNlCisrLkx0eXBlX3VjaGFyOgorKwkudWxl YjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KKysJLmFzY2lpCQki c29tZV9zdHJ1Y3RcMCIJCS8qIERXX0FUX25hbWUgKi8KICsKLStnZGJfdGVzdCAicHJpbnQgYXgi ICI9IDkiCisrCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19tZW1iZXIgKi8KKysJLmFz Y2lpCQkiZmllbGRcMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTAJCQkvKiBEV19BVF9k YXRhX21lbWJlcl9sb2NhdGlvbiAqLwogKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0rIyB0ZXN0IHRoYXQgZ2RiIGNhbiBwcmludCB3aXRob3V0IGZhbGxp bmcgCi0rIyBpbnRvIHNlYXJjaCBsb29wCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVu IG9mIHNvbWVfc3RydWN0ICovCiArCi0rZ2RiX3Rlc3QgInByaW50IGR4IiAiPSA5OSIKKysJLmJ5 dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KICsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgdGVzdCBwcmludGluZyBmcm9tIG5hbWVz cGFjZSBpbXBvcnRlZCBpbnRvCi0rIyBpbXBvcnRlZCBuYW1lc3BhY2Ugd2hlcmUgaW1wb3J0cyBh cmUgaW1wbGljaXQKLSsjIGFub255bW91cyBuYW1lc3BhY2UgaW1wb3J0cy4KKysuTGN1MV9lbmQ6 CiArCi0rZ2RiX3Rlc3QgInByaW50IHh4IiAiPSA5OTkiCisrLyogQWJicmV2IHRhYmxlICovCisr CS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJ CQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVf dW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov CisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJ CQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3Vh Z2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwot KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IHBy aW50aW5nIHVzaW5nIHJlY3Vyc2l2ZSBuYW1lc3BhY2UKLSsjIGFsaWFzZXMuCisrCS51bGViMTI4 CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfVEFHX3N0cnVj dHVyZV90eXBlICovCisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4 CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJp bmcgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KICsKLStzZXR1cF9rZmFpbCAiZ2RiLzEwNTQxIiAiKi0qLSoiCi0rZ2Ri X3Rlc3QgInB0eXBlIEc6OkdGIiAiPSBuYW1lc3BhY2UgRiIKKysJLnVsZWIxMjgJMwkJCS8qIEFi YnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MGQJCQkvKiBEV19UQUdfbWVtYmVyICovCisrCS5i eXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25h bWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJ MHgzOAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCisrCS51bGViMTI4CTB4MGIJ CQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0rc2V0dXBfa2ZhaWwgImdkYi8xMDU0 MSIgIiotKi0qIgotK2dkYl90ZXN0ICJwcmludCBHOjpHRjo6RkU6OmV4IiAiPSA5OTk5IgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRp b25zLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlv bnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xNzNlNDliCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3RyZXNzLWRl Y2xhcmF0aW9ucy5jYwotQEAgLTAsMCArMSw5MyBAQAotK2ludCBhOwotK2ludCBiOwotK2ludCBj OwotK2ludCBkOwotK2ludCBlOwotK2ludCBmOwotK2ludCBnOwotK2ludCBoOwotK2ludCBpOwot K2ludCBqOwotK2ludCBrOwotK2ludCBsOwotK2ludCBtOwotK2ludCBuOwotK2ludCBvOwotK2lu dCBwOwotK2ludCBxOwotK2ludCByOwotK2ludCBzOwotK2ludCB0OwotK2ludCB1OwotK2ludCB2 OwotK2ludCB3OwotK2ludCB4OwotK2ludCB5OwotK2ludCB6OwotKwotK25hbWVzcGFjZSBBCi0r ewotKyAgaW50IHh5ejsKLSsKLSsgIHVzaW5nIDo6YTsKLSsgIHVzaW5nIDo6YjsKLSsgIHVzaW5n IDo6YzsKLSsgIHVzaW5nIDo6ZDsKLSsgIHVzaW5nIDo6ZTsKLSsgIHVzaW5nIDo6ZjsKLSsgIHVz aW5nIDo6ZzsKLSsgIHVzaW5nIDo6aDsKLSsgIHVzaW5nIDo6aTsKLSsgIHVzaW5nIDo6ajsKLSsg IHVzaW5nIDo6azsKLSsgIHVzaW5nIDo6bDsKLSsgIHVzaW5nIDo6bTsKLSsgIHVzaW5nIDo6bjsK LSsgIHVzaW5nIDo6bzsKLSsgIHVzaW5nIDo6cDsKLSsgIHVzaW5nIDo6cTsKLSsgIHVzaW5nIDo6 cjsKLSsgIHVzaW5nIDo6czsKLSsgIHVzaW5nIDo6dDsKLSsgIHVzaW5nIDo6dTsKLSsgIHVzaW5n IDo6djsKLSsgIHVzaW5nIDo6dzsKLSsgIHVzaW5nIDo6eDsKLSsgIHVzaW5nIDo6eTsKLSsgIHVz aW5nIDo6ejsKLSsKLSt9Ci0rCi0rdXNpbmcgQTo6YTsKLSt1c2luZyBBOjpiOwotK3VzaW5nIEE6 OmM7Ci0rdXNpbmcgQTo6ZDsKLSt1c2luZyBBOjplOwotK3VzaW5nIEE6OmY7Ci0rdXNpbmcgQTo6 ZzsKLSt1c2luZyBBOjpoOwotK3VzaW5nIEE6Omk7Ci0rdXNpbmcgQTo6ajsKLSt1c2luZyBBOjpr OwotK3VzaW5nIEE6Omw7Ci0rdXNpbmcgQTo6bTsKLSt1c2luZyBBOjpuOwotK3VzaW5nIEE6Om87 Ci0rdXNpbmcgQTo6cDsKLSt1c2luZyBBOjpxOwotK3VzaW5nIEE6OnI7Ci0rdXNpbmcgQTo6czsK LSt1c2luZyBBOjp0OwotK3VzaW5nIEE6OnU7Ci0rdXNpbmcgQTo6djsKLSt1c2luZyBBOjp3Owot K3VzaW5nIEE6Ong7Ci0rdXNpbmcgQTo6eTsKLSt1c2luZyBBOjp6OwotKwotK3VzaW5nIG5hbWVz cGFjZSBBOwotKwotK2ludCBtYWluICgpCi0rewotKyAgcmV0dXJuIDA7Ci0rfQotXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRp b24uZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjIyYTE0ZQoraW5k ZXggMDAwMDAwMC4uYzQxMTUxYwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCi1AQCAtMCwwICsxLDUwIEBA Ci0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9u LmV4cAorQEAgLTAsMCArMSwzNyBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTI0 MTI0LDIxODMgKzE2NzY5LDI4MCBAQCBpbmRleCAwMDAwMDAwLi5mMjJhMTRlCiArIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFj ZSAkdHJhY2VsZXZlbAorKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdo aWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysjIEZvciBub3cgcGljayBhIHNhbXBs aW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAg ICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisr ICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0q LWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0 dXJuIDAgIAogK30KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCisrc2V0IHRlc3Rm aWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uIgorK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LlMKKytzZXQgYmluZmlsZSAke3Rlc3RmaWxlfS54CiArCi0rc2V0IHRlc3RmaWxlIG5h bWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MK LStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2JpbmZpbGV9IiBvYmpl Y3Qge25vZGVidWd9XSAhPSAiIiB9IHsKICsgICAgcmV0dXJuIC0xCiArfQogKwotK2lmIFtnZXRf Y29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0rICAgIHJldHVybiAtMTsKLSt9Ci0rCi0rIyBH ZXQgdGhpbmdzIHN0YXJ0ZWQuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYg IVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRoZSBzZWFyY2ggY2FuIGZhaWwg ZWZmaWNpZW50bHkgCi0rCi0rZ2RiX3Rlc3QgInByaW50IGZha2V4IiAiTm8gc3ltYm9sIFwiZmFr ZXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZS1zdHJlc3MuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Ut c3RyZXNzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjM0MDgzZQot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVz cy5jYwotQEAgLTAsMCArMSw2MCBAQAotKwotK25hbWVzcGFjZSBBeyBpbnQgeDsgfQotK25hbWVz cGFjZSBCeyBpbnQgeDsgfQotK25hbWVzcGFjZSBDeyBpbnQgeDsgfQotK25hbWVzcGFjZSBEeyBp bnQgeDsgfQotK25hbWVzcGFjZSBFeyBpbnQgeDsgfQotK25hbWVzcGFjZSBGeyBpbnQgeDsgfQot K25hbWVzcGFjZSBHeyBpbnQgeDsgfQotK25hbWVzcGFjZSBIeyBpbnQgeDsgfQotK25hbWVzcGFj ZSBJeyBpbnQgeDsgfQotK25hbWVzcGFjZSBKeyBpbnQgeDsgfQotK25hbWVzcGFjZSBLeyBpbnQg eDsgfQotK25hbWVzcGFjZSBMeyBpbnQgeDsgfQotK25hbWVzcGFjZSBNeyBpbnQgeDsgfQotK25h bWVzcGFjZSBOeyBpbnQgeDsgfQotK25hbWVzcGFjZSBPeyBpbnQgeDsgfQotK25hbWVzcGFjZSBQ eyBpbnQgeDsgfQotK25hbWVzcGFjZSBReyBpbnQgeDsgfQotK25hbWVzcGFjZSBSeyBpbnQgeDsg fQotK25hbWVzcGFjZSBTeyBpbnQgeDsgfQotK25hbWVzcGFjZSBUeyBpbnQgeDsgfQotK25hbWVz cGFjZSBVeyBpbnQgeDsgfQotK25hbWVzcGFjZSBWeyBpbnQgeDsgfQotK25hbWVzcGFjZSBXeyBp bnQgeDsgfQotK25hbWVzcGFjZSBYeyBpbnQgeDsgfQotK25hbWVzcGFjZSBZeyBpbnQgeDsgfQot K25hbWVzcGFjZSBaeyBpbnQgeDsgfQotKwotKwotK2ludCBtYWluKCl7Ci0rCi0rICB1c2luZyBu YW1lc3BhY2UgQTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBCOwotKyAgdXNpbmcgbmFtZXNwYWNlIEM7 Ci0rICB1c2luZyBuYW1lc3BhY2UgRDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBFOwotKyAgdXNpbmcg bmFtZXNwYWNlIEY7Ci0rICB1c2luZyBuYW1lc3BhY2UgRzsKLSsgIHVzaW5nIG5hbWVzcGFjZSBI OwotKyAgdXNpbmcgbmFtZXNwYWNlIEk7Ci0rICB1c2luZyBuYW1lc3BhY2UgSjsKLSsgIHVzaW5n IG5hbWVzcGFjZSBLOwotKyAgdXNpbmcgbmFtZXNwYWNlIEw7Ci0rICB1c2luZyBuYW1lc3BhY2Ug TTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBOOwotKyAgdXNpbmcgbmFtZXNwYWNlIE87Ci0rICB1c2lu ZyBuYW1lc3BhY2UgUDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBROwotKyAgdXNpbmcgbmFtZXNwYWNl IFI7Ci0rICB1c2luZyBuYW1lc3BhY2UgUzsKLSsgIHVzaW5nIG5hbWVzcGFjZSBUOwotKyAgdXNp bmcgbmFtZXNwYWNlIFU7Ci0rICB1c2luZyBuYW1lc3BhY2UgVjsKLSsgIHVzaW5nIG5hbWVzcGFj ZSBXOwotKyAgdXNpbmcgbmFtZXNwYWNlIFg7Ci0rICB1c2luZyBuYW1lc3BhY2UgWTsKLSsgIHVz aW5nIG5hbWVzcGFjZSBaOworK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKICsKLSsgIHJldHVybiAw OwotK30KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLXN0cmVzcy5leHAKKytnZGJfdGVzdCAicHR5cGUgc3RydWN0IHNvbWVfc3RydWN0 IiAidHlwZSA9IHN0cnVjdCBzb21lX3N0cnVjdCB7XFtcclxuIFx0XF0qdm9pZCBmaWVsZDtcW1xy XG4gXHRcXSp9IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYt c3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAog bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE4MDY1MjMKK2luZGV4IDAwMDAw MDAuLmNkMzQ4NmIKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1zdHJlc3MuZXhwCi1AQCAtMCwwICsxLDUwIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorQEAgLTAsMCArMSw0MiBAQAorKyMgQ29weXJpZ2h0IDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCisrIyAKICsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwor KyMgCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gIAogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2 ZWwKLSt9CisrIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAK KysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgQXJyYXkgZWxlbWVu dCBzdHJpZGUgbXVzdCBub3QgYmUKKysjIHNwZWNpZmllZCBpbiB0aGUgbnVtYmVyIG9mIGVsZW1l bnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBpbnN0ZWFkLgorKyMgT3JpZ2luYWwgcHJvYmxl bToKKysjIChnZGIpIHAgYzQwcHQoMSkKKysjICQxID0gJzAtaGVsbG8nLCAnICcgPHJlcGVhdHMg MzMgdGltZXM+CisrIyAoZ2RiKSBwIGM0MHB0KDIpCisrIyB3YXJuaW5nOiBGb3J0cmFuIGFycmF5 IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50IHNpemUKICsKLStzZXQgdGVzdGZp bGUgbmFtZXNwYWNlLXN0cmVzcwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0rc2V0IGJp bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJs ZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxl IHRlc3QgcHJvZ3JhbSIKKytzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCisrc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uZjkwCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxl fS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjc3fV0gfSB7CiArICAgIHJldHVy biAtMQogK30KICsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICBy ZXR1cm4gLTE7CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKICt9CiArCi0rIyBH ZXQgdGhpbmdzIHN0YXJ0ZWQuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg ImJyZWFrLWhlcmUiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAi LipicmVhay1oZXJlLioiCisrZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAnMC1oZWxsby4qIgor K2dkYl90ZXN0ICJwIGM0MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi5lNDkyYjNhCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKK0BAIC0wLDAgKzEsNDAgQEAKKyshIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgRmlsZSB3cml0dGVuIGJ5IEFsYW4gTWF0 c3Vva2EuCiArCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrcHJvZ3JhbSByZXBybwogKwot K2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgbWFpbiIKLSsgICAgY29udGludWUKLSt9CisrICB0eXBlIHNtYWxsX3N0cmlkZQor KyAgICAgY2hhcmFjdGVyKjQwIGxvbmdfc3RyaW5nCisrICAgICBpbnRlZ2VyICAgICAgc21hbGxf cGFkCisrICBlbmQgdHlwZSBzbWFsbF9zdHJpZGUKICsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRoZSBzZWFyY2ggY2FuIGZhaWwg ZWZmaWNpZW50bHkgCisrICB0eXBlKHNtYWxsX3N0cmlkZSksIGRpbWVuc2lvbiAoMjApLCB0YXJn ZXQgOjogdW5wbGVhc2FudAorKyAgY2hhcmFjdGVyKjQwLCBwb2ludGVyLCBkaW1lbnNpb24oOik6 OiBjNDBwdAogKwotK2dkYl90ZXN0ICJwcmludCB5IiAiTm8gc3ltYm9sIFwieVwiIGluIGN1cnJl bnQgY29udGV4dC4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LXVzaW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCi1pbmRl eCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXVzaW5nLmNjCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNp bmcuY2MKLUBAIC0xLDI2ICsxLDEyOSBAQAotK25hbWVzcGFjZSBNCi0rewotKyAgaW50IHggPSA5 MTE7Ci0rfQorKyAgaW50ZWdlciBpCiArCi0rbmFtZXNwYWNlIE4KLSt7Ci0rICBpbnQgeCA9IDkx MjsKLSt9CisrICBkbyBpID0gMCwxOQorKyAgICAgdW5wbGVhc2FudChpKzEpJXNtYWxsX3BhZCA9 IGkrMQorKyAgICAgdW5wbGVhc2FudChpKzEpJWxvbmdfc3RyaW5nID0gY2hhciAoaWNoYXIoJzAn KSArIGkpIC8vICctaGVsbG8nCisrICBlbmQgZG8KICsKLStpbnQgbWFya2VyMTAgKCkKLSt7Ci0r ICB1c2luZyBuYW1lc3BhY2UgTTsKLSsgIGludCB5ID0geCArIDE7ICAgICAgIC8vIG1hcmtlcjEw IHN0b3AKLSsgIHVzaW5nIG5hbWVzcGFjZSBOOwotKyAgcmV0dXJuIHk7Ci0rfQorKyAgYzQwcHQg PT4gdW5wbGVhc2FudCVsb25nX3N0cmluZwogKwotK25hbWVzcGFjZSBKCi0rewotKyAgaW50IGp4 ID0gNDQ7Ci0rfQorKyAgcHJpbnQgKiwgYzQwcHQgICEgYnJlYWstaGVyZQogKwotK25hbWVzcGFj ZSBLCi0rewotKyAgaW50Ci0rICBtYXJrZXI5ICgpCi0rICB7Ci0rICAgIC8veDsKLSsgICAgcmV0 dXJuIG1hcmtlcjEwICgpOwotKyAgfQotK30KLSsKLStuYW1lc3BhY2UgTAotK3sKLSsgIHVzaW5n IG5hbWVzcGFjZSBKOwotKyAgaW50Ci0rICBtYXJrZXI4ICgpCi0rICB7Ci0rICAgIGp4OwotKyAg ICByZXR1cm4gSzo6bWFya2VyOSAoKTsKLSsgIH0KLSt9Ci0rCi0rbmFtZXNwYWNlIEcKLSt7Ci0r ICBuYW1lc3BhY2UgSAotKyAgewotKyAgICBpbnQgZ2h4ID0gNjsKLSsgIH0KLSt9Ci0rCi0rbmFt ZXNwYWNlIEkKLSt7ICAKLSsgIGludAotKyAgbWFya2VyNyAoKQotKyAgewotKyAgICB1c2luZyBu YW1lc3BhY2UgRzo6SDsKLSsgICAgZ2h4OwotKyAgICByZXR1cm4gTDo6bWFya2VyOCAoKTsKLSsg IH0KLSt9Ci0rCi0rbmFtZXNwYWNlIEUKLSt7Ci0rICBuYW1lc3BhY2UgRgotKyAgewotKyAgICBp bnQgZWZ4ID0gNTsKLSsgIH0KLSt9Ci0rCi0rdXNpbmcgbmFtZXNwYWNlIEU6OkY7Ci0raW50Ci0r bWFya2VyNiAoKQotK3sKLSsgIGVmeDsKLSsgIHJldHVybiBJOjptYXJrZXI3ICgpOwotK30KLSsK LSBuYW1lc3BhY2UgQQotIHsKLSAgIGludCBfYSA9IDE7Ci0gICBpbnQgeCA9IDI7Ci0gfQotIAot LWludCBtYXJrZXI0KCl7Ci0tCXVzaW5nIEE6Ong7Ci0tCXJldHVybiAwOwotK25hbWVzcGFjZSBD Ci0rewotKyAgaW50IGNjID0gMzsKLSt9Ci0rCi0rbmFtZXNwYWNlIEQKLSt7Ci0rICBpbnQgZHgg PSA0OwotK30KLSsKLSt1c2luZyBuYW1lc3BhY2UgQzsKLStpbnQKLSttYXJrZXI1ICgpCi0rewot KyAgY2M7Ci0rICByZXR1cm4gbWFya2VyNiAoKTsKLSt9Ci0rCi0raW50Ci0rbWFya2VyNCAoKQot K3sKLSsgIHVzaW5nIEQ6OmR4OwotKyAgcmV0dXJuIG1hcmtlcjUgKCk7Ci0gfQotIAotLWludCBt YXJrZXIzKCl7Ci0tCXJldHVybiBtYXJrZXI0KCk7Ci0raW50Ci0rbWFya2VyMyAoKQotK3sKLSsg IHJldHVybiBtYXJrZXI0ICgpOwotIH0KLSAKLS1pbnQgbWFya2VyMigpCi0raW50Ci0rbWFya2Vy MiAoKQotIHsKLSAgIG5hbWVzcGFjZSBCID0gQTsKLSAgIEI6Ol9hOwotLSAgcmV0dXJuIG1hcmtl cjMoKTsKLSsgIHJldHVybiBtYXJrZXIzICgpOwotIH0KLSAKLS1pbnQgbWFya2VyMSgpCi0raW50 Ci0rbWFya2VyMSAoKQotIHsKLSAgIGludCB0b3RhbCA9IDA7Ci0gICB7Ci1AQCAtMjksMTcgKzEz MiwxOCBAQCBpbnQgbWFya2VyMSgpCi0gICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7Ci0gICAgICAg aW50IGMgPSAyOwotICAgICAgIHsKLS0gICAgICAgIGludCBkID0gMzsKLS0gICAgICAgIHRvdGFs ID0gX2EgKyBiICsgYyArIGQgKyBtYXJrZXIyKCk7IC8vIG1hcmtlcjEgc3RvcAotKwlpbnQgZCA9 IDM7Ci0rCXRvdGFsID0gX2EgKyBiICsgYyArIGQgKyBtYXJrZXIyICgpOyAvLyBtYXJrZXIxIHN0 b3AKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLSAgIHJldHVybiB0b3RhbDsKLSB9Ci0gCi0taW50 IG1haW4oKQotK2ludAotK21haW4gKCkKLSB7Ci0gICB1c2luZyBuYW1lc3BhY2UgQTsKLSAgIF9h OwotLSAgcmV0dXJuIG1hcmtlcjEoKTsKLSsgIHJldHVybiBtYXJrZXIxICgpOwotIH0KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmV4cAotaW5kZXggZjI0OTczZi4uZmMyMzEx NSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS11c2luZy5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS11c2luZy5leHAKLUBAIC0yOCw2 ICsyOCwxMSBAQCBpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYgotICAgICByZXR1cm4gLTEKLSB9Ci0g Ci0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xOwot K30KLSsKLSsKLSAjIEdldCB0aGluZ3Mgc3RhcnRlZC4KLSAKLSBnZGJfZXhpdAotQEAgLTQ2LDQy ICs1MSwxNTUgQEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKLSAKLSBnZGJfdGVzdCAicHJpbnQg X2EiICI9IDEiCi0gCi0rIyBUZXN0IHRoYXQgbmFtZXMgYXJlIG5vdCBwcmludGVkIHdoZW4gdGhl eSAKLSsjIGFyZSBub3QgaW1wb3J0ZWQKLSsKLStnZGJfYnJlYWtwb2ludCBtYXJrZXIzCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjMiCi0rCi0rI3NlbmRfZ2RiICJicmVhayBt YXJrZXIzXG4iCi0rI3NlbmRfZ2RiICJjb250aW51ZVxuIgotKwotK2dkYl90ZXN0ICJwcmludCBf YSIgIk5vIHN5bWJvbCBcIl9hXCIgaW4gY3VycmVudCBjb250ZXh0LiIgIlByaW50IF9hIHdpdGhv dXQgaW1wb3J0IgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKwotICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyB0ZXN0IHByaW50aW5nIG9m IG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvIAotICMgYSBzY29wZSBjb250YWluaW5nIHRoZSBwYy4K LSAKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IG1haW4iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotIGdkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxIHN0b3AiXQotIGdkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJtYXJrZXIxIHN0b3AiCi0gCi0gZ2RiX3Rlc3QgInByaW50IF9hIiAiPSAxIiAi cHJpbnQgX2EgaW4gYSBuZXN0ZWQgc2NvcGUiCi0gCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQK LStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZp bGV9Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsj IHRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGltcG9ydGVkIGludG8gCi0rIyBmaWxlIHNjb3Bl LgotKwotKwotK2lmICFbcnVudG8gbWFya2VyNV0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFya2VyNSIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2Ri X3Rlc3QgInByaW50IGNjIiAiPSAzIgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwot KwotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBUZXN0 IHByaW50aW5nIG9mIG5hbWVzcGFjZSBhbGlhc2VzCi0gCi0tc2V0dXBfa2ZhaWwgImdkYi83OTM1 IiAiKi0qLSoiCi0gaWYgIVtydW50byBtYXJrZXIyXSB0aGVuIHsKLSAgICAgcGVycm9yICJjb3Vs ZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJrZXIyIgotICAgICBjb250aW51ZQotIH0KLSAKLS1n ZGJfdGVzdCAicHJpbnQgQjo6YSIgIj0gMSIKLStnZGJfdGVzdCAicHJpbnQgQjo6X2EiICI9IDEi Ci0rCi0rZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3ltYm9sIFwiX2FcIiBpbiBjdXJyZW50IGNv bnRleHQuIiAicHJpbnQgX2EgaW4gbmFtZXNwYWNlIGFsaWFzIHNjb3BlIgotK2dkYl90ZXN0ICJw cmludCB4IiAiTm8gc3ltYm9sIFwieFwiIGluIGN1cnJlbnQgY29udGV4dC4iICJwcmludCB4IGlu IG5hbWVzcGFjZSBhbGlhcyBzY29wZSIKLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsK LSAKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICMgVGVz dCB0aGF0IG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVuIHRoZXkgCi0gIyBhcmUgbm90IGltcG9y dGVkCi0gCi0tZ2RiX2JyZWFrcG9pbnQgIm1hcmtlcjMiCi0tZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgIm1hcmtlcjMiCi0raWYgeyFbcnVudG8gbWFya2VyM119IHsKLSsgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJrZXIzIgotK30KLSAKLS1nZGJfdGVzdCAicHJp bnQgX2EiICJObyBzeW1ib2wgXCJfYVwiIGluIGN1cnJlbnQgY29udGV4dC4iICJQcmludCBhIHdp dGhvdXQgaW1wb3J0IgotKyMgZ2NjLTQtMyBwdXRzIGltcG9ydCBzdGF0ZW1lbnRzIGZvciBhbGlh c2VzIGluCi0rIyB0aGUgZ2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgdGhlIGNvcnJlc3BvbmRpbmcK LSsjIGZ1bmN0aW9uIHNjb3BlLiBUaGVzZSB3cm9uZyBpbXBvcnQgc3RhdGVtZW50cyB0aHJvdwot KyMgdGhpcyB0ZXN0IG9mZi4gVGhpcyBpcyBmaXhlZCBpbiBnY2MtNC00LgotK2lmIFt0ZXN0X2Nv bXBpbGVyX2luZm8gZ2NjLTQtMy0qXSB0aGVuIHsgc2V0dXBfeGZhaWwgKi0qLSogfQotKwotK2dk Yl90ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJvbCBcIl9hXCIgaW4gY3VycmVudCBjb250ZXh0LiIg IlByaW50IF9hIHdpdGhvdXQgaW1wb3J0IgotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBUZXN0IHByaW50aW5nIG9mIGluZGl2aWR1YWxseSBpbXBv cnRlZCBlbGVtZW50cwotIAotLXNldHVwX2tmYWlsICJnZGIvNzkzNiIgIiotKi0qIgotIGlmICFb cnVudG8gbWFya2VyNF0gdGhlbiB7Ci0gICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFr cG9pbnQgbWFya2VyNCIKLSAgICAgY29udGludWUKLSB9Ci0gCi0tZ2RiX3Rlc3QgInByaW50IHgi ICI9IDIiCi0rZ2RiX3Rlc3QgInByaW50IGR4IiAiPSA0IgotKwotKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IHByaW50aW5nIG9mIG5hbWVzcGFj ZSBhbGlhc2VzCi0rCi0raWYgIVtydW50byBtYXJrZXI1XSB0aGVuIHsKLSsgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gbWFya2VyNSIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3Qg InByaW50IGVmeCIgIj0gNSIKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGluZyBvZiB2YXJpYWJsZXMgaW1wb3J0ZWQgZnJvbQot KyMgbmVzdGVkIG5hbWVzcGFjZXMKLSsKLStpZiAhW3J1bnRvIEk6Om1hcmtlcjddIHRoZW4gewot KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IEk6Om1hcmtlcjciCi0rICAg IGNvbnRpbnVlCi0rfQotKwotK2dkYl90ZXN0ICJwcmludCBnaHgiICI9IDYiCi0rCi0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgdGhhdCB2YXJp YWJsZXMgYXJlIG5vdCBwcmludGVkIGluIGEgbmFtZXNwYWNlCi0rIyB0aGF0IGlzIHNpYmxpbmcg dG8gdGhlIG5hbWVzcGFjZSBjb250YWluaW5nIGFuIGltcG9ydAotKwotK2lmICFbcnVudG8gTDo6 bWFya2VyOF0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQg TDo6bWFya2VyOCIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3QgInByaW50IGp4IiAi PSA0NCIKLSsKLStnZGJfYnJlYWtwb2ludCAiSzo6bWFya2VyOSIKLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiSzo6bWFya2VyOSIKLSsKLStnZGJfdGVzdCAicHJpbnQgangiICJObyBzeW1i b2wgXCJqeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgdGhhdCB2YXJpYWJsZXMgYXJlIG9ubHkg cHJpbnRlZCBhZnRlciB0aGUgbGluZQotKyMgY29udGFpbmluZyB0aGUgaW1wb3J0Ci0rCi0raWYg IVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAibWFya2VyMTAgc3RvcCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgIm1hcmtlcjEwIHN0b3AiCi0rCi0rIyBBc3NlcnQgdGhhdCBNOjp4IGlzIHByaW50ZWQgYW5k IG5vdCBOOjp4Ci0rZ2RiX3Rlc3QgInByaW50IHgiICI9IDkxMSIgInByaW50IHggKGZyb20gTTo6 eCkiCi0rCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKLWluZGV4IDc2YjFiODIuLjIwNDJk YjIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi1AQCAtMjQsNiArMjQsNyBAQAot ICMgZm9yIG5hbWVzcGFjZXMuCi0gIyBOb3RlOiBBcyBvZiAyMDAwLTA2LTAzLCB0aGV5IHBhc3Nl ZCB1bmRlciBnKysgLSBkamIKLSAKLStsb2FkX2xpYiAiY3Atc3VwcG9ydC5leHAiCi0gCi0gaWYg JHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLUBAIC0yNTks MTEgKzI2MCwxNiBAQCBnZGJfdGVzdCAicHR5cGUgRSIgInR5cGUgPSBuYW1lc3BhY2UgQzo6RDo6 RSIKLSBnZGJfdGVzdCAicHR5cGUgQ0NsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpDQ2xhc3MgXHtc clxuICBwdWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3MgXHspXHJcbiAgICBpbnQgeDtcclxuXH0iCi0g Z2RiX3Rlc3QgInB0eXBlIENDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6OkND bGFzczo6TmVzdGVkQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3M6Ok5lc3Rl ZENsYXNzIFx7KVxyXG4gICAgaW50IHk7XHJcblx9IgotIGdkYl90ZXN0ICJwdHlwZSBOZXN0ZWRD bGFzcyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gY3VycmVudCBjb250ZXh0LiIKLS1z ZXR1cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLS1nZGJfdGVzdCAicHR5cGUgOjpDOjpDQ2xh c3MiICJ0eXBlID0gY2xhc3MgQzo6Q0NsYXNzIFx7XHJcbiAgcHVibGljOlxyXG4gICAgaW50IHg7 XHJcblx9IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotLWdkYl90ZXN0ICJwdHlw ZSA6OkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6Q0NsYXNzOjpOZXN0 ZWRDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB5O1xyXG5cfSIKLS1zZXR1cF9rZmFp bCAiZ2RiLzE0NDgiICIqLSotKiIKLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6 Qzo6Q0NsYXNzIiAiIiAiY2xhc3MiICJDOjpDQ2xhc3MiIFwKLSsJewotKwkgICAgeyBmaWVsZCBw dWJsaWMgImludCB4OyIgfQotKwl9Ci0rY3BfdGVzdF9wdHlwZV9jbGFzcyBcCi0rCSJwdHlwZSA6 OkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICIiICJjbGFzcyIgIkM6OkNDbGFzczo6TmVzdGVkQ2xh c3MiIFwKLSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB5OyIgfQotKwl9Ci0gZ2RiX3Rl c3QgInB0eXBlIDo6Qzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFzc1wiIGlu IG5hbWVzcGFjZSBcIkNcIi4iCi0gZ2RiX3Rlc3QgInB0eXBlIEM6OkNDbGFzcyIgIk5vIHN5bWJv bCBcIkNDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi0gZ2RiX3Rlc3QgInB0eXBlIEM6 OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJObyB0eXBlIFwiQ0NsYXNzXCIgd2l0aGluIGNsYXNzIG9y IG5hbWVzcGFjZSBcIkM6OkNcIi4iCi1AQCAtMjczLDggKzI3OSwxMSBAQCBnZGJfdGVzdCAicHR5 cGUgQzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFzc1wiIGluIG5hbWVzcGFj ZSBcIkM6OkNcIgotIAotIGdkYl90ZXN0ICJwcmludCBjT3RoZXJGaWxlIiAiXFwkXFswLTlcXS4q ID0gMzE2IgotIGdkYl90ZXN0ICJwdHlwZSBPdGhlckZpbGVDbGFzcyIgInR5cGUgPSAoY2xhc3Mg Qzo6T3RoZXJGaWxlQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpPdGhlckZpbGVDbGFz cyBceylcclxuICAgIGludCB6O1xyXG5cfSIKLS1zZXR1cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSot KiIKLS1nZGJfdGVzdCAicHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgInR5cGUgPSBjbGFzcyBD OjpPdGhlckZpbGVDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB6O1xyXG5cfSIKLStj cF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3MiICIiICJj bGFzcyIgIkM6Ok90aGVyRmlsZUNsYXNzIiBcCi0rCXsKLSsJICAgIHsgZmllbGQgcHVibGljICJp bnQgejsiIH0KLSsJfQotIGdkYl90ZXN0ICJwdHlwZSBDOjpPdGhlckZpbGVDbGFzcyIgIk5vIHN5 bWJvbCBcIk90aGVyRmlsZUNsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiLiIKLSAKLSAjIFNv bWUgYW5vbnltb3VzIG5hbWVzcGFjZSB0ZXN0cy4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9vdmVybG9hZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmVybG9hZC5leHAK LWluZGV4IDI0MDI1YTIuLmE3MjkzMmUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9vdmVybG9hZC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cAot QEAgLTc0LDEyICs3NCwxMiBAQCBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50 IG92ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCk7IgotIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhv ZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoY2hhclxcKTsiCi0gc2V0IHJlX21ldGhvZHMJIiR7 cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKTsiCi0gc2V0 IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCh1bnNpZ25l ZCBjaGFyXFwpOyIKLS1zZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJs b2FkMWFyZ1xcKHNob3J0XFwpOyIKLS1zZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9 aW50IG92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpOyIKLStzZXQgcmVfbWV0aG9kcwki JHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKTsiCi0r c2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCgodW5z aWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKTsiCi0gc2V0IHJlX21ldGhvZHMJ IiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChpbnRcXCk7IgotIHNldCByZV9t ZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgaW50 XFwpOyIKLS1zZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFy Z1xcKGxvbmdcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3Zl cmxvYWQxYXJnXFwodW5zaWduZWQgbG9uZ1xcKTsiCi0rc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0 aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChsb25nKCBpbnQpP1xcKTsiCi0rc2V0IHJlX21l dGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgbG9u Z3xsb25nIHVuc2lnbmVkKSggaW50KT9cXCk7IgotIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhv ZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoZmxvYXRcXCk7IgotIHNldCByZV9tZXRob2RzCSIk e3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpOyIKLSBzZXQgcmVf bWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkZm5hcmdcXCgodm9pZHwpXFwp OyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmxkYnJlYWsuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAotaW5kZXggOGE2Yjc5NS4uOTk5N2E0NSAx MDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292bGRicmVhay5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL292bGRicmVhay5leHAKLUBAIC0xMjcsMTAgKzEyNywyNCBAQCBw cm9jIHNldF9icF9vdmVybG9hZGVkIHtuYW1lIGV4cGVjdGVkbWVudSBteWNob2ljZSBicG51bWJl ciBsaW5lbnVtYmVyfSB7Ci0gfQotIAotICMgVGhpcyBpcyB0aGUgZXhwZWN0ZWQgbWVudSBmb3Ig b3ZlcmxvYWQxYXJnLgotLSMgTm90ZSB0aGUgYXJnIHR5cGUgdmFyaWF0aW9ucyBvbiBsaW5lcyA2 IGFuZCAxMy4KLSsjIE5vdGUgdGhlIGFyZyB0eXBlIHZhcmlhdGlvbnMgZm9yIHZvaWQgYW5kIGlu dGVnZXIgdHlwZXMuCi0gIyBUaGlzIGFjY29tbW9kYXRlcyBkaWZmZXJlbnQgdmVyc2lvbnMgb2Yg ZysrLgotIAotLXNldCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzBcXFxdIGNhbmNlbFxyXG5cXFxb MVxcXF0gYWxsXHJcblxcXFsyXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGRvdWJsZVxcKSBhdC4q JHNyY2ZpbGU6MTIxXHJcblxcXFszXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGZsb2F0XFwpIGF0 Liokc3JjZmlsZToxMjBcclxuXFxcWzRcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQg bG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHJcblxcXFs1XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xc KGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOFxyXG5cXFxbNlxcXF0gZm9vOjpvdmVybG9hZDFhcmdc XCgodW5zaWduZWQgaW50fHVuc2lnbmVkKVxcKSBhdC4qJHNyY2ZpbGU6MTE3XHJcblxcXFs3XFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2XHJcblxcXFs4XFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVc clxuXFxcWzlcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjEx NFxyXG5cXFxbMTBcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgY2hhclxcKSBhdC4q JHNyY2ZpbGU6MTEzXHJcblxcXFsxMVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hh clxcKSBhdC4qJHNyY2ZpbGU6MTEyXHJcblxcXFsxMlxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChj aGFyXFwpIGF0Liokc3JjZmlsZToxMTFcclxuXFxcWzEzXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xc KCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMFxyXG4+ICQiCi0rc2V0ICAgIG1lbnVfb3Zlcmxv YWQxYXJnICJcXFxbMFxcXF0gY2FuY2VsXHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcg IlxcXFsxXFxcXSBhbGxcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzJcXFxd IGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFcclxuIgotK2Fw cGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZmxv YXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJc XFxbNFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgbG9uZ3xsb25nIHVuc2lnbmVk KSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQx YXJnICJcXFxbNVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nKCBpbnQpP1xcKSBhdC4qJHNy Y2ZpbGU6MTE4XHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs2XFxcXSBmb286 Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBpbnR8dW5zaWduZWQpXFwpIGF0Liokc3JjZmlsZTox MTdcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzdcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwoaW50XFwpIGF0Liokc3JjZmlsZToxMTZcclxuIgotK2FwcGVuZCBtZW51X292ZXJs b2FkMWFyZyAiXFxcWzhcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIHNob3J0fHNo b3J0IHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNVxyXG4iCi0rYXBwZW5kIG1l bnVfb3ZlcmxvYWQxYXJnICJcXFxbOVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydCggaW50 KT9cXCkgYXQuKiRzcmNmaWxlOjExNFxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJc XFxbMTBcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgY2hhclxcKSBhdC4qJHNyY2Zp bGU6MTEzXHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsxMVxcXF0gZm9vOjpv dmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHJcbiIKLSthcHBl bmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsxMlxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChjaGFy XFwpIGF0Liokc3JjZmlsZToxMTFcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxc WzEzXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMFxy XG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICI+ICQiCi0gCi0gIyBTZXQgbXVsdGlwbGUt c3ltYm9scyB0byAiYXNrIiwgdG8gYWxsb3cgdXMgdG8gdGVzdCB0aGUgdXNlCi0gIyBvZiB0aGUg bXVsdGlwbGUtY2hvaWNlIG1lbnUgd2hlbiBicmVha2luZyBvbiBhbiBvdmVybG9hZGVkIG1ldGhv ZC4KLUBAIC0xNTcsMTcgKzE3MSwxNyBAQCBzZXRfYnBfb3ZlcmxvYWRlZCAiZm9vOjpvdmVybG9h ZDFhcmciICIkbWVudV9vdmVybG9hZDFhcmciIDEzICAgMTMgMTEwCi0gCi0gZ2RiX3Rlc3QgImlu Zm8gYnJlYWsiIFwKLSAgICAgIk51bSAgICAgVHlwZVxbXHQgXF0rRGlzcCBFbmIgQWRkcmVzc1xb XHQgXF0rV2hhdC4qCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQg XF0rJGhleFxbXHQgXF0raW4gbWFpbiBhdC4qJHNyY2ZpbGU6NDlccgotK1xbMC05XF0rXFtcdCBc XSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIG1haW4oXFwoKHx2 b2lkKVxcKSk/IGF0Liokc3JjZmlsZTo0OVxyCi0gXFtcdCBcXSticmVha3BvaW50IGFscmVhZHkg aGl0IDEgdGltZVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQg XF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChjaGFyXFwpIGF0Liokc3JjZmls ZToxMTFccgotIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRo ZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNm aWxlOjExMlxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0Liok c3JjZmlsZToxMTNccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0 IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCkgYXQuKiRzcmNm aWxlOjExNFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBzaG9ydFxcKSBhdC4q JHNyY2ZpbGU6MTE1XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBh dC4qJHNyY2ZpbGU6MTE0XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5 XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBzaG9y dHxzaG9ydCB1bnNpZ25lZCkoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTVccgotIFxbMC05XF0r XFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6 b3ZlcmxvYWQxYXJnXFwoaW50XFwpIGF0Liokc3JjZmlsZToxMTZccgotIFxbMC05XF0rXFtcdCBc XSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zlcmxv YWQxYXJnXFwoKHVuc2lnbmVkfHVuc2lnbmVkIGludClcXCkgYXQuKiRzcmNmaWxlOjExN1xyCi0t XFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0r aW4gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nXFwpIGF0Liokc3JjZmlsZToxMThccgotLVxbMC05 XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZv bzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgbG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHIKLStc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMThccgot K1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxd K2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIGxvbmd8bG9uZyB1bnNpZ25lZCkoIGlu dCk/XFwpIGF0Liokc3JjZmlsZToxMTlccgotIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAg ICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZmxvYXRc XCkgYXQuKiRzcmNmaWxlOjEyMFxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtl ZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChkb3VibGVcXCkg YXQuKiRzcmNmaWxlOjEyMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodm9pZHwpXFwpIGF0 Liokc3JjZmlsZToxMTAiIFwKLUBAIC0yMTUsMTcgKzIyOSwxNyBAQCBnZGJfZXhwZWN0IHsKLSAK LSBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAotICAgICAiTnVtICAgICBUeXBlXFtcdCBcXStEaXNw IEVuYiBBZGRyZXNzXFtcdCBcXStXaGF0LioKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluIGF0Liokc3JjZmlsZTo0OVxyCi0r XFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0r aW4gbWFpbihcXCgofHZvaWQpXFwpKT8gYXQuKiRzcmNmaWxlOjQ5XHIKLSBcW1x0IFxdK2JyZWFr cG9pbnQgYWxyZWFkeSBoaXQgMSB0aW1lXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJc XCkgYXQuKiRzcmNmaWxlOjExMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtl ZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hh clxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAg a2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVk IGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9y dFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAg a2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVk IHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50 ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hv cnQoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTRccgotK1xbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo KHVuc2lnbmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjEx NVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxb XHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxlOjExNlxyCi0g XFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0r aW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWduZWQgaW50KVxcKSBhdC4qJHNy Y2ZpbGU6MTE3XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBc XSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmdcXCkgYXQuKiRzcmNmaWxl OjExOFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0Liokc3Jj ZmlsZToxMTlccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxd KyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50KT9cXCkgYXQuKiRz cmNmaWxlOjExOFxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQg XF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgbG9uZ3xsb25n IHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0gXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKGRvdWJsZVxcKSBhdC4qJHNyY2ZpbGU6MTIxXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xc KCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMCIgXAotQEAgLTI5NiwxMiArMzEwLDEyIEBAIGdk Yl90ZXN0ICJpbmZvIGJyZWFrIiBcCi0gICAgICJOdW0gICAgIFR5cGVcW1x0IFxdK0Rpc3AgRW5i IEFkZHJlc3NcW1x0IFxdK1doYXQuKgotIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwp IGF0Liokc3JjZmlsZToxMjFccgotIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVw IHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZmxvYXRcXCkgYXQu KiRzcmNmaWxlOjEyMFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwp IGF0Liokc3JjZmlsZToxMTlccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVw IHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4q JHNyY2ZpbGU6MTE4XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxv bmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHIKLStcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMThccgotIFxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwoKHVuc2lnbmVkfHVuc2lnbmVkIGludClcXCkgYXQuKiRzcmNmaWxlOjExN1xy Ci0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQg XF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxlOjExNlxyCi0tXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE1XHIK LS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBc XStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTRccgotK1xb MC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2lu IGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50 KT9cXCkgYXQuKiRzcmNmaWxlOjExNVxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAg IGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydCgg aW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNFxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNp Z25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNccgotIFxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo c2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMlxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFr cG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdc XChjaGFyXFwpIGF0Liokc3JjZmlsZToxMTFccgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL3NoYWRvd2luZy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYwot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZkOWMyZjEKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYwotQEAgLTAsMCArMSw0 OCBAQAotK25hbWVzcGFjZSBBCi0rewotKyAgaW50IHggPSAxMTsKLSt9Ci0rCi0raW50IHggPSAy MjsKLStpbnQgeSA9IDA7Ci0rCi0rY2xhc3MgQgotK3sKLStwdWJsaWM6Ci0rICBpbnQgeDsKLSsK LSsgIGludAotKyAgZnVuYygpCi0rICB7Ci0rICAgIHggPSAzMzsKLSsgICAgeSs9eDsgLy8gbWFy a2VyMQotKwotKyAgICAgIHsKLSsgICAgICAgIGludCB4ID0gNDQ7Ci0rICAgICAgICB5Kz14OyAv LyBtYXJrZXIyCi0rCi0rICAgICAgICAgIHsKLSsgICAgICAgICAgICBpbnQgeCA9IDU1OwotKyAg ICAgICAgICAgIHkrPXg7IC8vIG1hcmtlcjMKLSsKLSsgICAgICAgICAgICAgIHsKLSsgICAgICAg ICAgICAgICAgaW50IHogPSB4OyAvL3ByZXZlbnQgZ2NjIGZyb20gb3B0aW1pemluZyBhd2F5IHRo aXMgc2NvcGUKLSsgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7Ci0rICAgICAgICAg ICAgICAgIHkrPXg7IC8vIG1hcmtlcjQKLSsKLSsgICAgICAgICAgICAgICAgdXNpbmcgQTo6eDsK LSsgICAgICAgICAgICAgICAgeSs9eDsgLy8gbWFya2VyNQotKyAgICAgICAgICAgICAgICAKLSsg ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMtPng7Ci0rICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgIH0KLSsgICAgICB9Ci0rICB9Ci0rfTsKLSsKLStpbnQKLSttYWluKCkKLSt7Ci0rICBCIHRo ZUI7Ci0rICByZXR1cm4gdGhlQi5mdW5jKCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL3NoYWRvd2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3dpbmcu ZXhwCisrZW5kIHByb2dyYW0gcmVwcm8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY5MjJlZWQKK2luZGV4IDAw MDAwMDAuLjBjY2ViZTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L3NoYWRvd2luZy5leHAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmV4cAorQEAgLTAsMCArMSwxNDUgQEAKKysjIENvcHlyaWdodCAyMDA3IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIworKyMgCiArIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiArIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiArIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKKysjIAogKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAK ICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQor KyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPi4KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCisrIyBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRhaW5zIHRlc3RzIGZv ciBkeW5hbWljYWxseQorKyMgYWxsb2NhdGVkIEZvcnRyYW4gYXJyYXlzLgorKyMgSXQgZGVwZW5k cyBvbiB0aGUgR0NDIGR5bmFtaWMgRm9ydHJhbiBhcnJheXMgRFdBUkYgc3VwcG9ydDoKKysjIAlo dHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyMjQ0CiArCi0rc2V0 IHRlc3RmaWxlIHNoYWRvd2luZwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCisrc2V0IHRl c3RmaWxlICJkeW5hbWljIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0 ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KICsKLStpZiBbZ2V0X2NvbXBpbGVyX2lu Zm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTE7CisraWYgIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtk ZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBp bGUgJHtzcmNmaWxlfSIKKysgICAgcmV0dXJuIC0xCiArfQogKwotKyMgR2V0IHRoaW5ncyBzdGFy dGVkLgotKwogK2dkYl9leGl0CiArZ2RiX3N0YXJ0CiArZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotK2lmICFbcnVudG9fbWFpbl0g dGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKKytp ZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgTUFJTl9fIgogKyAgICBjb250aW51ZQogK30KICsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGluZyBvZiBjbGFzcyB2 YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGdsb2JhbCB2YXJpYWJsZQotKwotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxIl0KLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAibWFya2VyMSIKLSsKLStnZGJfdGVzdCAicHJpbnQgeCIgIj0gMzMiICJQ cmludCBjbGFzcyB4IHNoYWRvd2luZyBnbG9iYWwgeCIKLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGluZyBsb2NhbCB2YXJp YWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGNsYXNzIHZhcmlhYmxlCi0rCi0rZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtlcjIiXQotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJtYXJrZXIyIgotKwotK2dkYl90ZXN0ICJwcmludCB4IiAiPSA0NCIgIlByaW50 IGxvY2FsIHggc2hhZG93aW5nIGNsYXNzIHgiCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgaW5uZXIgc2NvcGUgeCBpcyBwcmludGVkIG5v dCBvdXRlciBzY29wZQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJt YXJrZXIzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMyIKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1pbml0Il0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAidmFyeC1pbml0IgorK2dkYl90ZXN0ICJwIHZhcngiICJcXCRcWzAtOVxd KiA9IDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFsbG9jYXRlZD4iICJwIHZhcnggdW5hbGxv Y2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gPChvYmplY3R8dGhlIGFycmF5 KSBpcyBub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZhcnggdW5hbGxvY2F0ZWQiCisrZ2RiX3Rlc3Qg InAgdmFyeCgxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUg b2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAi cCB2YXJ4KDEsNSwxNykgdW5hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpPTEi ICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2Ug dGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1LDE3KT0x IHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiICIoQ2Fubm90IGFj Y2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8 YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwdHlwZSB2YXJ4KDEsNSwxNykgdW5hbGxvY2F0 ZWQiCiArCi0rZ2RiX3Rlc3QgInByaW50IHgiICI9IDU1IiAiUHJpbnQgaW5uZXIgc2NvcGUgeCIK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIKKysjICQxID0gKCgg KCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAs IDAsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChc XChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0 ZWQiCisrIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdD QyB1c2VzIDEuCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5 NDk2NzI5NSkiICJwIGwgaWYgdmFyeCBhbGxvY2F0ZWQiCiArCi0rIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgcHJpbnRpbmcgbG9jYWwgdmFyaWFi bGUgaXMgbm90IHNoYWRvd2VkCi0rIyBieSBuYW1lc3BhY2UgdmFyaWFibGUKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1maWxsZWQiXQorK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJ2YXJ4LWZpbGxlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDIsIDUsIDE3KSIg IlxcJFxbMC05XF0qID0gNiIKKytnZGJfdGVzdCAicCB2YXJ4KDEsIDUsIDE3KSIgIlxcJFxbMC05 XF0qID0gNyIKKytnZGJfdGVzdCAicCB2YXJ4KDIsIDYsIDE4KSIgIlxcJFxbMC05XF0qID0gOCIK KytnZGJfdGVzdCAicCB2YXJ4KDYsIDE1LCAyOCkiICJcXCRcWzAtOVxdKiA9IDkiCisrIyBUaGUg bGF0dGVyIG9uZSBpcyBmb3IgdGhlIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggcG9p bnRlciB0eXBlLgorK2dkYl90ZXN0ICJwIHZhcnYiICJcXCRcWzAtOVxdKiA9ICg8KG9iamVjdHx0 aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0 byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVk LikiICJwIHZhcnYgdW5hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9 ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNz IGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5v dCBhc3NvY2lhdGVkLikiICJwdHlwZSB2YXJ2IHVuYXNzb2NpYXRlZCIKICsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyNCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgIm1hcmtlcjQiCi0rCi0rZ2RiX3Rlc3QgInByaW50IHgiICI9IDU1IiAiUHJpbnQg bG9jYWwgeCBub3QgbmFtZXNwYWNlIHgiCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgaW1wb3J0ZWQgbmFtZXNwYWNlIGVsZW1lbnQgaXMg cHJpbnRlZAotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXI1 Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyNSIKLSsKLStpZiBbdGVzdF9j b21waWxlcl9pbmZvIGdjYy00LTMtKl0gdGhlbiB7IHNldHVwX3hmYWlsICotKi0qIH0KLSsKLStn ZGJfdGVzdCAicHJpbnQgeCIgIj0gMTEiICJQcmludCBpbXBvcnRlZCBuYW1lc3BhY2UgeCIKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMuUyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uZDViOWNhNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMKLUBAIC0wLDAgKzEsMTQwIEBACi0rLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmln aHQgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogVGVz dCAuZGVidWdfYXJhbmdlcyBjb250YWluaW5nIHplcm8gYWRkcmVzc19zaXplLiAgKi8KLSsKLSsv KiBEdW1teSBmdW5jdGlvbiB0byBwcm92aWRlIGRlYnVnIGluZm9ybWF0aW9uIGZvci4gICovCi0r Ci0rCS50ZXh0Ci0rLkxiZWdpbl90ZXh0MToKLSsJLmdsb2JsIG1haW4KLSsJLnR5cGUgbWFpbiwg JWZ1bmN0aW9uCi0rbWFpbjoKLSsuTGJlZ2luX21haW46Ci0rCS5pbnQgMAotKy5MZW5kX21haW46 Ci0rCS5zaXplIG1haW4sIC4tbWFpbgotKy5MZW5kX3RleHQxOgotKwotKy8qIERlYnVnIGluZm9y bWF0aW9uICovCi0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46Ci0rCS8q IENVIGhlYWRlciAqLwotKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0 aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTFfc3RhcnQ6Ci0rCS4yYnl0ZQkyCQkJCS8q IERXQVJGIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8qIE9mZnNldCBp bnRvIGFiYnJldiBzZWN0aW9uICovCi0rCS5ieXRlCTQJCQkJLyogUG9pbnRlciBzaXplICovCi0r Ci0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBp bGVfdW5pdCAqLwotKwkuNGJ5dGUJLkxlbmRfdGV4dDEJCQkvKiBEV19BVF9oaWdoX3BjICovCi0r CS40Ynl0ZQkuTGJlZ2luX3RleHQxCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS5hc2NpaQkiZmls ZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJ LyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykg Ki8KLSsKLSsJLyogbWFpbiAqLwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3Vi cHJvZ3JhbSAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS5ieXRlCQkx CQkJLyogRFdfQVRfZGVjbF9maWxlICovCi0rCS5ieXRlCQkyCQkJLyogRFdfQVRfZGVjbF9saW5l ICovCi0rCS5hc2NpaQkJIm1haW5cMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQkuTHR5 cGVfaW50LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLjRieXRlCQkuTGJlZ2luX21h aW4JLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkJLkxlbmRfbWFpbgkJLyogRFdfQVRfaGln aF9wYyAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2ZyYW1lX2Jhc2U6IGxlbmd0aCAqLwotKwku Ynl0ZQkJMHg1NQkJCS8qIERXX0FUX2ZyYW1lX2Jhc2U6IERXX09QX3JlZzUgKi8KLSsKLSsuTHR5 cGVfaW50OgotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCi0r CS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTQJCQkvKiBEV19B VF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKwku Ynl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKwotKy5MY3UxX2VuZDoKLSsK LSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgotKy5MYWJicmV2 MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4 MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxk cmVuICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4 CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93 X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkw eDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5n ICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkw eDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFu Z3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyZQkJCS8q IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0r CS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkudWxlYjEyOAkweGMJCQkv KiBEV19GT1JNX2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHgzYQkJCS8qIERXX0FUX2RlY2xfZmlsZSAq LwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2IJ CQkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJ CS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICov Ci0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgxMQkJ CS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8K LSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJ LyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4NDAJCQkvKiBEV19BVF9mcmFtZV9iYXNl ICovCi0rCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0r CS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDI0CQkJLyogRFdf VEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxl YjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1f c3RyaW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxl YjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2UJCQkvKiBEV19B VF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCi0rLyogYXJhbmdlcyB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVi dWdfYXJhbmdlcwotKwkubG9uZwkuTGFyYW5nZXNfZW5kIC0gMWYKLSsxOgotKwkuMmJ5dGUJMgkJ CQkvKiBhcmFuZ2VzIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MY3UxX2JlZ2luIC0gLmRlYnVnX2lu Zm8JLyogT2Zmc2V0IGludG8gLmRlYnVnX2luZm8gc2VjdGlvbiAqLwotKwkvKiBUaGUgR0RCIGNy YXNoZXIgaXMgdGhpcyB6ZXJvIHZhbHVlLiAgKi8KLSsJLmJ5dGUJCTAJCQkvKiBhcmFuZ2VzIGFk ZHJlc3Nfc2l6ZSAqLwotKwkuYnl0ZQkJMAkJCS8qIGFyYW5nZXMgc2VnbWVudF9zaXplICovCi0r Ci0rLkxhcmFuZ2VzX2VuZDoKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWFyYW5nZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjM5NjMyZDUKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5leHAKLUBA IC0wLDAgKzEsNDAgQEAKLSsjIENvcHlyaWdodCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLSsjIFRlc3QgLmRlYnVnX2FyYW5nZXMgY29udGFpbmluZyB6ZXJvIGFkZHJl c3Nfc2l6ZS4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGlj aCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGlu ZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1l YWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVy biAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJkdzItYXJhbmdlcyIKLStzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5TCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKLSsKLSsjIEZhaWxlZCBnZGJf bG9hZCB3b3VsZCBhYm9ydCB0aGUgdGVzdGNhc2UgZXhlY3V0aW9uIGVhcmxpZXIuCi0rcGFzcyAi ZmlsZSBsb2FkZWQiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWYwMmQ5MAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCi1AQCAtMCwwICsx LDQyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBV U0EuICAqLwotKwotKwotKy8qIFRoZSBmdW5jdGlvbiBgZnVuYzEnIHRyYWNlZCBpbnRvIG11c3Qg aGF2ZSBkZWJ1ZyBpbmZvIG9uIG9mZnNldCA+IDA7Ci0rICAgKERXX1VOU05EIChhdHRyKSkuICBU aGlzIGlzIHRoZSByZWFzb24gb2YgYGZ1bmMwJyBleGlzdGVuY2UuICAqLwotKwotK3ZvaWQKLStm dW5jMChpbnQgYSwgaW50IGIpCi0rewotK30KLSsKLSsvKiBgZnVuYzEnIGJlaW5nIHRyYWNlZCBp bnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0byBkdW1wLiAgKi8KLSsKLSt2b2lkCi0rZnVu YzEoaW50IGEsIGludCBiKQotK3sKLSsgIGZ1bmMwIChhLGIpOwotK30KLSsKLStpbnQKLSttYWlu KHZvaWQpCi0rewotKyAgZnVuYzEgKDEsIDIpOwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi4xYzZlODRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAotQEAgLTAsMCArMSw3OSBAQAotKyMgQ29weXJp Z2h0IDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBNaW5pbWFsIERXQVJGLTIgdW5p dCB0ZXN0Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRh cmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAq LSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAgJiYgIVtpc3Rhcmdl dCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCi0rICAgICYm ICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4gMCAgCi0rfQotKwot K3NldCB0ZXN0ZmlsZSAiZHcyLXN0cmlwcGVkIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMK LStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LngKLSsKLStyZW1v dGVfZXhlYyBidWlsZCAicm0gLWYgJHtiaW5maWxlfSIKLSsKLSsjIGdldCB0aGUgdmFsdWUgb2Yg Z2NjX2NvbXBpbGVkCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiBnY2MgYXMg d2UgdXNlIGFkZGl0aW9uYWxfZmxhZ3M9RklYTUUKLStpZiB7JGdjY19jb21waWxlZCA9PSAwfSB7 Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYWRkaXRp b25hbF9mbGFncz0tZ2dkYjN9XSAhPSAiIiB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3Jl bW90ZV9leGVjIGJ1aWxkICJvYmpjb3B5IC1SIC5kZWJ1Z19sb2MgJHtiaW5maWxlfSIKLStzZXQg c3RyaXBfb3V0cHV0IFtyZW1vdGVfZXhlYyBidWlsZCAib2JqZHVtcCAtaCAke2JpbmZpbGV9Il0K LSsKLStzZXQgdGVzdCAic3RyaXBwaW5nIHRlc3QgZmlsZSBwcmVzZXJ2YXRpb24iCi0raWYgWyBy ZWdleHAgIi5kZWJ1Z19pbmZvICIgJHN0cmlwX291dHB1dF0gIHsKLSsgICAgcGFzcyAiJHRlc3Qg KC5kZWJ1Z19pbmZvIHByZXNlcnZlZCkiCi0rfSBlbHNlIHsKLSsgICAgZmFpbCAiJHRlc3QgKC5k ZWJ1Z19pbmZvIGdvdCBhbHNvIHN0cmlwcGVkKSIKLSt9Ci0rCi0rc2V0IHRlc3QgInN0cmlwcGlu ZyB0ZXN0IGZpbGUgZnVuY3Rpb25hbGl0eSIKLStpZiBbIHJlZ2V4cCAiLmRlYnVnX2xvYyAiICRz dHJpcF9vdXRwdXRdICB7Ci0rICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfbG9jIHN0aWxsIHByZXNl bnQpIgotK30gZWxzZSB7Ci0rICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfbG9jIHN0cmlwcGVkKSIK LSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBGb3IgQyBwcm9ncmFtcywg InN0YXJ0IiBzaG91bGQgc3RvcCBpbiBtYWluKCkuCi0rCi0rZ2RiX3Rlc3QgInN0YXJ0IiBcCi0r ICAgICAgICAgIi4qbWFpbiBcXChcXCkgYXQgLioiIFwKLSsgICAgICAgICAic3RhcnQiCi0rZ2Ri X3Rlc3QgInN0ZXAiIFwKLSsgICAgICAgICAiZnVuYy4qIFxcKC4qXFwpIGF0IC4qIiBcCi0rICAg ICAgICAgInN0ZXAiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi41ZmNkZDg0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCi1AQCAtMCwwICsx LDgzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVi dWcgaW5mb3JtYXRpb24gKi8KLSsKLSsJLnNlY3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdp bjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJ LyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRl CTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyog T2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNp emUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19U QUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQkiZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2Nh dGlvbi5jXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmFzY2lpCSJHTlUgQyA0LjMuMlwwIgkJCS8q IERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTEJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpICov Ci0rCi0rLkx0eXBlX3VjaGFyOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3Ry dWN0dXJlX3R5cGUgKi8KLSsJLmFzY2lpCQkic29tZV9zdHJ1Y3RcMCIJCS8qIERXX0FUX25hbWUg Ki8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX21lbWJlciAqLwotKwkuYXNj aWkJCSJmaWVsZFwwIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2Rh dGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVu IG9mIHNvbWVfc3RydWN0ICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9m IENVICovCi0rCi0rLkxjdTFfZW5kOgotKwotKy8qIEFiYnJldiB0YWJsZSAqLwotKwkuc2VjdGlv biAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEyOAkxCQkJLyogQWJi cmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8K LSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdf QVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxl YjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdf Rk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xhbmd1YWdlICovCi0r CS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIx MjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19UQUdfc3Ry dWN0dXJlX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIx MjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0 cmluZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJ LnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNf Y2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEy OAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDM4CQkJLyogRFdfQVRf ZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHgwYgkJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5leHAKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jNDExNTFjCi0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2Nh dGlvbi5leHAKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERX QVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkg dGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0 ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFy Z2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAg JiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0r Ci0rc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uIgotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgYmluZmlsZSAke3Rlc3RmaWxlfS54Ci0rCi0raWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke29iamRp cn0vJHtzdWJkaXJ9LyR7YmluZmlsZX0iIG9iamVjdCB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkYmluZmlsZQotKwotK2dkYl90ZXN0 ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0IHNvbWVfc3RydWN0IHtc W1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9jb21tb24tYmxvY2suZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uODg4ZjZjMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9jb21tb24tYmxvY2suZXhwCi1AQCAtMCwwICsxLDEwMSBAQAotKyMgQ29weXJpZ2h0IDIw MDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBi eSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rc2V0IHRl c3RmaWxlICJjb21tb24tYmxvY2siCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0rc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotKwotK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhl Y3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3Vs ZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhp dAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dk Yl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBl cnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQot K30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic3RvcC1oZXJlLW91 dCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0b3AtaGVyZS1vdXQiCi0rCi0rIyBD b21tb24gYmxvY2sgbmFtaW5nIHdpdGggc291cmNlIG5hbWUgL2Zvby86Ci0rIyAgICAgICAgICAg ICAgICAuc3ltdGFiICBEV19UQUdfY29tbW9uX2Jsb2NrJ3MgRFdfQVRfbmFtZQotKyMgSW50ZWwg Rm9ydHJhbiAgZm9vXyAgICAgZm9vXwotKyMgR05VIEZvcnRyYW4gICAgZm9vXyAgICAgZm9vCi0r I3NldCBzdWZmaXggIl8iCi0rc2V0IHN1ZmZpeCAiIgotKwotK3NldCBpbnQ0IHsoaW50ZWdlclwo a2luZD00XCl8SU5URUdFUlwoNFwpKX0KLStzZXQgcmVhbDQgeyhyZWFsXChraW5kPTRcKXxSRUFM XCg0XCkpfQotK3NldCByZWFsOCB7KHJlYWxcKGtpbmQ9OFwpfFJFQUxcKDhcKSl9Ci0rCi0rZ2Ri X3Rlc3QgIndoYXRpcyBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1 cnJlbnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInB0eXBlIGZvbyRzdWZmaXgiICJObyBzeW1ib2wg XCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicCBmb28kc3Vm Zml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCi0rZ2Ri X3Rlc3QgIndoYXRpcyBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIgaW4g Y3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicHR5cGUgZm9fbyRzdWZmaXgiICJObyBzeW1i b2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInAgZm9f byRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4i Ci0rCi0rZ2RiX3Rlc3QgImluZm8gbG9jYWxzIiAiaXhfeCA9IDExXHJcbml5X3kgPSAyMlxyXG5p el96ID0gMzNcclxuaXggPSAxXHJcbml5ID0gMlxyXG5peiA9IDMiICJpbmZvIGxvY2FscyBvdXQi Ci0rZ2RiX3Rlc3QgImluZm8gY29tbW9uIiAiQ29udGVudHMgb2YgRjc3IENPTU1PTiBibG9jayAn Zm9fbyc6XHJcbml4X3ggPSAxMVxyXG5peV95ID0gMjJcclxuaXpfeiA9IDMzXHJcblxyXG5Db250 ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb28nOlxyXG5peCA9IDFcclxuaXkgPSAyXHJcbml6 ID0gMyIgImluZm8gY29tbW9uIG91dCIKLSsKLStnZGJfdGVzdCAicHR5cGUgaXgiICJ0eXBlID0g JGludDQiICJwdHlwZSBpeCBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl5IiAidHlwZSA9ICRyZWFs NCIgInB0eXBlIGl5IG91dCIKLStnZGJfdGVzdCAicHR5cGUgaXoiICJ0eXBlID0gJHJlYWw4IiAi cHR5cGUgaXogb3V0IgotK2dkYl90ZXN0ICJwdHlwZSBpeF94IiAidHlwZSA9ICRpbnQ0IiAicHR5 cGUgaXhfeCBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl5X3kiICJ0eXBlID0gJHJlYWw0IiAicHR5 cGUgaXlfeSBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl6X3oiICJ0eXBlID0gJHJlYWw4IiAicHR5 cGUgaXpfeiBvdXQiCi0rCi0rZ2RiX3Rlc3QgInAgaXgiICIgPSAxICoiICJwIGl4IG91dCIKLStn ZGJfdGVzdCAicCBpeSIgIiA9IDIgKiIgInAgaXkgb3V0IgotK2dkYl90ZXN0ICJwIGl6IiAiID0g MyAqIiAicCBpeiBvdXQiCi0rZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDExICoiICJwIGl4X3ggb3V0 IgotK2dkYl90ZXN0ICJwIGl5X3kiICIgPSAyMiAqIiAicCBpeV95IG91dCIKLStnZGJfdGVzdCAi cCBpel96IiAiID0gMzMgKiIgInAgaXpfeiBvdXQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInN0b3AtaGVyZS1pbiJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInN0b3AtaGVyZS1pbiIKLSsKLStnZGJfdGVzdCAid2hhdGlzIGZvbyRzdWZmaXgiICJObyBz eW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgIndoYXRpcyBmb28kc3Vm Zml4IGluIgotK2dkYl90ZXN0ICJwdHlwZSBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1 ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iICJwdHlwZSBmb28kc3VmZml4IGluIgotK2dkYl90 ZXN0ICJwIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBj b250ZXh0LiIgInAgZm9vJHN1ZmZpeCBpbiIKLStnZGJfdGVzdCAid2hhdGlzIGZvX28kc3VmZml4 IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAid2hhdGlz IGZvX28kc3VmZml4IGluIgotK2dkYl90ZXN0ICJwdHlwZSBmb19vJHN1ZmZpeCIgIk5vIHN5bWJv bCBcImZvX28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgInB0eXBlIGZvX28kc3VmZml4 IGluIgotK2dkYl90ZXN0ICJwIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhc IiBpbiBjdXJyZW50IGNvbnRleHQuIiAicCBmb19vJHN1ZmZpeCBpbiIKLSsKLStnZGJfdGVzdCAi aW5mbyBsb2NhbHMiICJpeCA9IDExXHJcbml5MiA9IDIyXHJcbml6ID0gMzNcclxuaXhfeCA9IDFc clxuaXlfeSA9IDJcclxuaXpfejIgPSAzXHJcbml5ID0gNVxyXG5pel96ID0gNTUiICJpbmZvIGxv Y2FscyBpbiIKLStnZGJfdGVzdCAiaW5mbyBjb21tb24iICJDb250ZW50cyBvZiBGNzcgQ09NTU9O IGJsb2NrICdmb19vJzpcclxuaXggPSAxMVxyXG5peTIgPSAyMlxyXG5peiA9IDMzXHJcblxyXG5D b250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb28nOlxyXG5peF94ID0gMVxyXG5peV95ID0g MlxyXG5pel96MiA9IDMiICJpbmZvIGNvbW1vbiBpbiIKLSsKLStnZGJfdGVzdCAicHR5cGUgaXgi ICJ0eXBlID0gJGludDQiICJwdHlwZSBpeCBpbiIKLStnZGJfdGVzdCAicHR5cGUgaXkyIiAidHlw ZSA9ICRyZWFsNCIgInB0eXBlIGl5MiBpbiIKLStnZGJfdGVzdCAicHR5cGUgaXoiICJ0eXBlID0g JHJlYWw4IiAicHR5cGUgaXogaW4iCi0rZ2RiX3Rlc3QgInB0eXBlIGl4X3giICJ0eXBlID0gJGlu dDQiICJwdHlwZSBpeF94IGluIgotK2dkYl90ZXN0ICJwdHlwZSBpeV95IiAidHlwZSA9ICRyZWFs NCIgInB0eXBlIGl5X3kgaW4iCi0rZ2RiX3Rlc3QgInB0eXBlIGl6X3oyIiAidHlwZSA9ICRyZWFs OCIgInB0eXBlIGl6X3oyIGluIgotKwotK2dkYl90ZXN0ICJwIGl4IiAiID0gMTEgKiIgInAgaXgg aW4iCi0rZ2RiX3Rlc3QgInAgaXkyIiAiID0gMjIgKiIgInAgaXkyIGluIgotK2dkYl90ZXN0ICJw IGl6IiAiID0gMzMgKiIgInAgaXogaW4iCi0rZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDEgKiIgInAg aXhfeCBpbiIKLStnZGJfdGVzdCAicCBpeV95IiAiID0gMiAqIiAicCBpeV95IGluIgotK2dkYl90 ZXN0ICJwIGl6X3oyIiAiID0gMyAqIiAicCBpel96MiBpbiIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2NvbW1vbi1ibG9jay5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi5iNjE0ZThhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2NvbW1vbi1ibG9jay5mOTAKLUBAIC0wLDAgKzEsNjcgQEAKLSshIENvcHlyaWdodCAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK LSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNv dXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBK YWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RC IHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4K LSsKLStzdWJyb3V0aW5lIGluCi0rCi0rICAgSU5URUdFUio0ICAgICAgICAgICAgaXgKLSsgICBS RUFMKjQgICAgICAgICAgICAgICBpeTIKLSsgICBSRUFMKjggICAgICAgICAgICAgICBpegotKwot KyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAgICAgICAgICAgICBp eV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfejIKLSsKLSsgICBjb21tb24gL2ZvX28v aXgsaXkyLGl6Ci0rICAgY29tbW9uIC9mb28vaXhfeCxpeV95LGl6X3oyCi0rCi0rICAgaXkgPSA1 Ci0rICAgaXpfeiA9IDU1Ci0rCi0rICAgaWYgKGl4IC5uZS4gMTEgLm9yLiBpeTIgLm5lLiAyMi4w IC5vci4gaXogLm5lLiAzMy4wKSBjYWxsIGFib3J0Ci0rICAgaWYgKGl4X3ggLm5lLiAxIC5vci4g aXlfeSAubmUuIDIuMCAub3IuIGl6X3oyIC5uZS4gMy4wKSBjYWxsIGFib3J0Ci0rCi0rICAgaXgg PSAwCQkJCQkhIHN0b3AtaGVyZS1pbgotKwotK2VuZCBzdWJyb3V0aW5lIGluCi0rCi0rcHJvZ3Jh bSBjb21tb25fdGVzdAotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4Ci0rICAgUkVBTCo0 ICAgICAgICAgICAgICAgaXkKLSsgICBSRUFMKjggICAgICAgICAgICAgICBpegotKwotKyAgIElO VEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAgICAgICAgICAgICBpeV95Ci0r ICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfegotKwotKyAgIGNvbW1vbiAvZm9vL2l4LGl5LGl6 Ci0rICAgY29tbW9uIC9mb19vL2l4X3gsaXlfeSxpel96Ci0rCi0rICAgaXggPSAxCi0rICAgaXkg PSAyLjAKLSsgICBpeiA9IDMuMAotKwotKyAgIGl4X3ggPSAxMQotKyAgIGl5X3kgPSAyMi4wCi0r ICAgaXpfeiA9IDMzLjAKLSsKLSsgICBjYWxsIGluCQkJCQkhIHN0b3AtaGVyZS1vdXQKLSsKLStl bmQgcHJvZ3JhbSBjb21tb25fdGVzdAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHdhcmYtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYt c3RyaWRlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmNkMzQ4NmIK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3Ry aWRlLmV4cAotQEAgLTAsMCArMSw0MiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuICAKLSsKLSsjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEFycmF5IGVsZW1lbnQgc3RyaWRlIG11c3Qgbm90IGJlCi0r IyBzcGVjaWZpZWQgaW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBidXQgaW4gYSBudW1iZXIgb2Yg Ynl0ZXMgaW5zdGVhZC4KLSsjIE9yaWdpbmFsIHByb2JsZW06Ci0rIyAoZ2RiKSBwIGM0MHB0KDEp Ci0rIyAkMSA9ICcwLWhlbGxvJywgJyAnIDxyZXBlYXRzIDMzIHRpbWVzPgotKyMgKGdkYikgcCBj NDBwdCgyKQotKyMgd2FybmluZzogRm9ydHJhbiBhcnJheSBzdHJpZGUgbm90IGRpdmlzaWJsZSBi eSB0aGUgZWxlbWVudCBzaXplCi0rCi0rc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LmY5MAotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0 ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3N31dIH0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJy b3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9 Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWhlcmUiXQot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAiLipicmVhay1oZXJlLioi Ci0rZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAnMC1oZWxsby4qIgotK2dkYl90ZXN0ICJwIGM0 MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJm LXN0cmlkZS5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNDkyYjNh Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0 cmlkZS5mOTAKLUBAIC0wLDAgKzEsNDAgQEAKLSshIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQot KyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuCi0rIQotKyEgRmlsZSB3cml0dGVuIGJ5IEFsYW4gTWF0c3Vva2EuCi0rCi0rcHJv Z3JhbSByZXBybwotKwotKyAgdHlwZSBzbWFsbF9zdHJpZGUKLSsgICAgIGNoYXJhY3Rlcio0MCBs b25nX3N0cmluZwotKyAgICAgaW50ZWdlciAgICAgIHNtYWxsX3BhZAotKyAgZW5kIHR5cGUgc21h bGxfc3RyaWRlCi0rCi0rICB0eXBlKHNtYWxsX3N0cmlkZSksIGRpbWVuc2lvbiAoMjApLCB0YXJn ZXQgOjogdW5wbGVhc2FudAotKyAgY2hhcmFjdGVyKjQwLCBwb2ludGVyLCBkaW1lbnNpb24oOik6 OiBjNDBwdAotKwotKyAgaW50ZWdlciBpCi0rCi0rICBkbyBpID0gMCwxOQotKyAgICAgdW5wbGVh c2FudChpKzEpJXNtYWxsX3BhZCA9IGkrMQotKyAgICAgdW5wbGVhc2FudChpKzEpJWxvbmdfc3Ry aW5nID0gY2hhciAoaWNoYXIoJzAnKSArIGkpIC8vICctaGVsbG8nCi0rICBlbmQgZG8KLSsKLSsg IGM0MHB0ID0+IHVucGxlYXNhbnQlbG9uZ19zdHJpbmcKLSsKLSsgIHByaW50ICosIGM0MHB0ICAh IGJyZWFrLWhlcmUKLSsKLStlbmQgcHJvZ3JhbSByZXBybwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGNjZWJl MAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LmV4cAotQEAgLTAsMCArMSwxNDUgQEAKLSsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250YWlucyB0ZXN0cyBmb3IgZHluYW1pY2FsbHkKLSsj IGFsbG9jYXRlZCBGb3J0cmFuIGFycmF5cy4KLSsjIEl0IGRlcGVuZHMgb24gdGhlIEdDQyBkeW5h bWljIEZvcnRyYW4gYXJyYXlzIERXQVJGIHN1cHBvcnQ6Ci0rIyAJaHR0cDovL2djYy5nbnUub3Jn L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjI0NAotKwotK3NldCB0ZXN0ZmlsZSAiZHluYW1p YyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcg cXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNm aWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4g dG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4LWluaXQiXQotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2YXJ4LWluaXQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0g PChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCB1bmFsbG9jYXRl ZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlz IG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2 YXJ4KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmpl Y3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZh cngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNyk9MSIgIihD YW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUg KG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInAgdmFyeCgxLDUsMTcpPTEgdW5h bGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNz IGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJh eSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInB0eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIK LSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIKLSsjICQxID0g KCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAo IDAsIDAsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVh bChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxv Y2F0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUs IEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58 NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFyeCBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAidmFyeC1maWxsZWQiCi0rZ2RiX3Rlc3QgInAgdmFyeCgyLCA1LCAxNykiICJcXCRc WzAtOVxdKiA9IDYiCi0rZ2RiX3Rlc3QgInAgdmFyeCgxLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9 IDciCi0rZ2RiX3Rlc3QgInAgdmFyeCgyLCA2LCAxOCkiICJcXCRcWzAtOVxdKiA9IDgiCi0rZ2Ri X3Rlc3QgInAgdmFyeCg2LCAxNSwgMjgpIiAiXFwkXFswLTlcXSogPSA5IgotKyMgVGhlIGxhdHRl ciBvbmUgaXMgZm9yIHRoZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIg dHlwZS4KLStnZGJfdGVzdCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFy cmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNj ZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAi cCB2YXJ2IHVuYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChv YmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxV bmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNz b2NpYXRlZC4pIiAicHR5cGUgdmFydiB1bmFzc29jaWF0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZhcnYtYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5 KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2YXJ2IGFzc29jaWF0 ZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDYiICJwIHZh cnYoMywgNywgMTkpIGFzc29jaWF0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEu MDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05 XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFydiBhc3NvY2lhdGVkIgot K2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxc KDYsNToxNSwxNzoyOFxcKSIgInB0eXBlIHZhcnggd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCi0rIyBJ bnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgdGhlIHBvaW50ZXIgdHlwZS4KLStn ZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP3JlYWwoXFwoa2lu ZD00XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKVxcKT8iICJwdHlwZSB2YXJ2IGFzc29jaWF0 ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtZmlsbGVk Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydi1maWxsZWQiCi0rZ2RiX3Rlc3Qg InAgdmFyeCgzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDEwIiAicCB2YXJ4KDMsIDcsIDE5KSB3 aXRoIHZhcnYgZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZhcnYoMywgNywgMTkpIiAiXFwkXFswLTlc XSogPSAxMCIgInAgdmFydigzLCA3LCAxOSkgZmlsbGVkIgotKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWRlYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZhcnYtZGVhc3NvY2lhdGVkIgotKyMgVGhlIGxhdHRlciBvbmUgaXMgZm9y IHRoZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlwZS4KLStnZGJf dGVzdCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3Qg YXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmpl Y3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRlYXNz b2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChvYmplY3R8dGhlIGFy cmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNj ZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAi cHR5cGUgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0g XFwuRkFMU0VcXC4iICJwIGwgaWYgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFy digxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0 KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZFxcLiIKLStnZGJf dGVzdCAicHR5cGUgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFj Y2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2Np YXRlZFxcLiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1k ZWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZGVhbGxvY2F0 ZWQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmplY3R8dGhlIGFycmF5 KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5 cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAi cHR5cGUgdmFyeCBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCBsIiAiXFwkXFswLTlcXSogPSBc XC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwIHZhcngo MSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkg YmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInAgdmFyeCgx LDUsMTcpIGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiICIoQ2Fu bm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChv YmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwdHlwZSB2YXJ4KDEsNSwxNykgZGVh bGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnkt cGFzc2VkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeS1wYXNzZWQiCi0rIyAk MSA9ICgoICggMSwgMSwgMSwgMSwgMSwgMSkgKCAxLCAxLCAxLCAxLCAxLCAxKSAtLS0gLCAxKSAp ICggKCAxLCAxLCAuLi4pIC4uLikgLi4uKQotK2dkYl90ZXN0ICJwIHZhcnkiICJcXCRcWzAtOVxd KiA9IFxcKFxbKCkxLCAuXF0qXFwpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2YXJ5LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnkt ZmlsbGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ5IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwp fFxcKjQpIFxcKDEwLDEwXFwpIgotK2dkYl90ZXN0ICJwIHZhcnkoMSwgMSkiICJcXCRcWzAtOVxd KiA9IDgiCi0rZ2RiX3Rlc3QgInAgdmFyeSgyLCAyKSIgIlxcJFxbMC05XF0qID0gOSIKLStnZGJf dGVzdCAicCB2YXJ5KDEsIDMpIiAiXFwkXFswLTlcXSogPSAxMCIKLSsjICQxID0gKCggKCAzLCAz LCAzLCAzLCAzLCAzKSAoIDMsIDMsIDMsIDMsIDMsIDMpIC0tLSAsIDMpICkgKCAoIDMsIDMsIC4u LikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0gXFwoXFsoKTMs IC5cXSpcXCkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnct YWxtb3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3Rm aWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8 XFwqNCkgXFwoNSw0LDNcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05 XF0qID0gMSIKLSsjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUs IDUpIC0tLSAsIDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFy dyIgIlxcJFxbMC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwp IiAicCB2YXJ3IGZpbGxlZCIKLSsjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRy YW4gY29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsjIG91dGVyIGZ1bmN0 aW9uIG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgotKyMgV2UgbmVlZCBi b3RoIHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBz dGlsbCBiZQotKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlz aCcuCi0rZ2RiX3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28g XFwoeCwgelxcKDI6NiwgNDo3LCA2OjhcXClcXCkpIgotK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAi XFwkXFswLTlcXSogPSAzIgotK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2 IgotK2dkYl90ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgotK2dkYl90ZXN0ICJw IHooNCw0LDYpIiAiXFwkXFswLTlcXSogPSAxIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2YXJ6LWFsbW9zdGZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZhcnotYWxtb3N0ZmlsbGVkIgotKyMgR0NDIHVzZXMgdGhlIHBvaW50ZXIgdHlwZSBo ZXJlLCBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IGRvZXMgbm90LgotK2dkYl90ZXN0 ICJwdHlwZSB2YXJ6IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8 XFwqNCkgXFwoXFwqXFwpXFwpPyIKLSsjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDgg aGFzIGEgYnVnIGhlcmUgLSAoMjoxMSw3OjcpCi0rIyBhcyBpdCBwcm9kdWNlcyBEV19BVF9sb3dl cl9ib3VuZCA9PSBEV19BVF91cHBlcl9ib3VuZCA9PSA3LgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ0 IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoMjox MSw3OlxcKlxcKVxcKT8iCi0rZ2RiX3Rlc3QgInAgdmFyeiIgIlxcJFxbMC05XF0qID0gXFwoXFwp IgotK2dkYl90ZXN0ICJwIHZhcnQiICJcXCRcWzAtOVxdKiA9IFxcKFxcKSIKLStnZGJfdGVzdCAi cCB2YXJ6KDMpIiAiXFwkXFswLTlcXSogPSA0IgotKyMgbWFwcyB0byBmb286OnZhcnkoMSwxKQot K2dkYl90ZXN0ICJwIHZhcnQoMiw3KSIgIlxcJFxbMC05XF0qID0gOCIKLSsjIG1hcHMgdG8gZm9v Ojp2YXJ5KDIsMikKLStnZGJfdGVzdCAicCB2YXJ0KDMsOCkiICJcXCRcWzAtOVxdKiA9IDkiCi0r IyBtYXBzIHRvIGZvbzo6dmFyeSgxLDMpCi0rZ2RiX3Rlc3QgInAgdmFydCgyLDkpIiAiXFwkXFsw LTlcXSogPSAxMCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBmNDM1NjQKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAKLUBAIC0wLDAgKzEsOTggQEAK LSshIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSsh IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0r ISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxl IGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFs IGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1v ZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGJhegotKyAgcmVhbCwgdGFyZ2V0LCBh bGxvY2F0YWJsZSA6OiB2YXJ4ICg6LCA6LCA6KQotKyAgcmVhbCwgcG9pbnRlciA6OiB2YXJ2ICg6 LCA6LCA6KQotKyAgcmVhbCwgdGFyZ2V0IDo6IHZhcnUgKDEsIDIsIDMpCi0rICBsb2dpY2FsIDo6 IGwKLSsgIGFsbG9jYXRlICh2YXJ4ICgxOjYsIDU6MTUsIDE3OjI4KSkgICAgICAgICAgICAhIHZh cngtaW5pdAotKyAgbCA9IGFsbG9jYXRlZCAodmFyeCkKLSsgIHZhcngoOiwgOiwgOikgPSA2ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcngtYWxsb2NhdGVkCi0rICB2YXJ4KDEsIDUs IDE3KSA9IDcKLSsgIHZhcngoMiwgNiwgMTgpID0gOAotKyAgdmFyeCg2LCAxNSwgMjgpID0gOQot KyAgdmFydiA9PiB2YXJ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1m aWxsZWQKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydigzLCA3LCAxOSkgPSAxMCAg ICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydi1hc3NvY2lhdGVkCi0rICB2YXJ2ID0+IG51 bGwgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWZpbGxlZAotKyAgbCA9 IGFzc29jaWF0ZWQgKHZhcnYpCi0rICBkZWFsbG9jYXRlICh2YXJ4KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ2LWRlYXNzb2NpYXRlZAotKyAgbCA9IGFsbG9jYXRlZCAodmFyeCkK LSsgIHZhcnUoOiwgOiwgOikgPSAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcngt ZGVhbGxvY2F0ZWQKLSsgIGFsbG9jYXRlICh2YXJ2ICgxOjYsIDU6MTUsIDE3OjI4KSkKLSsgIGwg PSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydig6LCA6LCA6KSA9IDYKLSsgIHZhcnYoMSwgNSwg MTcpID0gNwotKyAgdmFydigyLCA2LCAxOCkgPSA4Ci0rICB2YXJ2KDYsIDE1LCAyOCkgPSA5Ci0r ICBkZWFsbG9jYXRlICh2YXJ2KQotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2YXJ2ID0+ IHZhcnUKLSsgIHZhcnYoMSwgMSwgMSkgPSA2Ci0rICB2YXJ2KDEsIDIsIDMpID0gNwotKyAgbCA9 IGFzc29jaWF0ZWQgKHZhcnYpCi0rZW5kIHN1YnJvdXRpbmUgYmF6Ci0rc3Vicm91dGluZSBmb28g KHZhcnksIHZhcncpCi0rICByZWFsIDo6IHZhcnkgKDosIDopCi0rICByZWFsIDo6IHZhcncgKDos IDosIDopCi0rICB2YXJ5KDosIDopID0gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB2YXJ5LXBhc3NlZAotKyAgdmFyeSgxLCAxKSA9IDgKLSsgIHZhcnkoMiwgMikgPSA5Ci0rICB2 YXJ5KDEsIDMpID0gMTAKLSsgIHZhcncoOiwgOiwgOikgPSA1ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAhIHZhcnktZmlsbGVkCi0rICB2YXJ3KDEsIDEsIDEpID0gNgotKyAgdmFydygyLCAy LCAyKSA9IDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydy1hbG1vc3RmaWxsZWQK LStlbmQgc3Vicm91dGluZSBmb28KLStzdWJyb3V0aW5lIGJhciAodmFyeiwgdmFydCkKLSsgIHJl YWwgOjogdmFyeiAoKikKLSsgIHJlYWwgOjogdmFydCAoMjoxMSwgNzoqKQotKyAgdmFyeigxOjMp ID0gNAotKyAgdmFyeigyKSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEg dmFyei1hbG1vc3RmaWxsZWQKLSsgIHZhcnQoMiw3KSA9IHZhcnQoMiw3KQotK2VuZCBzdWJyb3V0 aW5lIGJhcgotK3Byb2dyYW0gdGVzdAotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgZm9v ICh2YXJ5LCB2YXJ3KQotKyAgICByZWFsIDo6IHZhcnkgKDosIDopCi0rICAgIHJlYWwgOjogdmFy dyAoOiwgOiwgOikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGlu dGVyZmFjZQotKyAgICBzdWJyb3V0aW5lIGJhciAodmFyeiwgdmFydCkKLSsgICAgcmVhbCA6OiB2 YXJ6ICgqKQotKyAgICByZWFsIDo6IHZhcnQgKDI6MTEsIDc6KikKLSsgICAgZW5kIHN1YnJvdXRp bmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIHJlYWwgOjogeCAoMTAsIDEwKSwgeSAoNSksIHooOCwg OCwgOCkKLSsgIHgoOiw6KSA9IDEKLSsgIHkoOikgPSAyCi0rICB6KDosOiw6KSA9IDMKLSsgIGNh bGwgYmF6Ci0rICBjYWxsIGZvbyAoeCwgeigyOjYsIDQ6NywgNjo4KSkKLSsgIGNhbGwgYmFyICh5 LCB4KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5uZS4gOSAub3IuIHgg KDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYgKHggKDEsIDMpIC5uZS4gMTApIGNhbGwg YWJvcnQKLSsgIGlmICh6ICgyLCA0LCA2KSAubmUuIDYgLm9yLiB6ICgzLCA1LCA3KSAubmUuIDcg Lm9yLiB6ICgyLCA0LCA3KSAubmUuIDUpIGNhbGwgYWJvcnQKLSsgIGlmIChhbnkgKHkgLm5lLiAo LzQsIDUsIDQsIDIsIDIvKSkpIGNhbGwgYWJvcnQKLSsgIGNhbGwgZm9vICh0cmFuc3Bvc2UgKHgp LCB6KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5uZS4gOSAub3IuIHgg KDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYgKHggKDMsIDEpIC5uZS4gMTApIGNhbGwg YWJvcnQKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJh cnktbW9kdWxlLWxpYi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLWxpYi5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MzY5ZDM0 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnkt bW9kdWxlLWxpYi5mOTAKLUBAIC0wLDAgKzEsMjggQEAKLSshIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rCi0rbW9kdWxlIGxpYgotKyAgICAgICAgaW50ZWdlciA6OiB2YXJfaSA9IDEKLStj b250YWlucwotKyAgICAgICAgc3Vicm91dGluZSBsaWJfZnVuYwotKyAgICAgICAgaWYgKHZhcl9p IC5uZS4gMSkgY2FsbCBhYm9ydAotKyAgICAgICAgdmFyX2kgPSAyCi0rICAgICAgICBlbmQgc3Vi cm91dGluZSBsaWJfZnVuYwotK2VuZCBtb2R1bGUgbGliCi0rCi0rbW9kdWxlIGxpYm1hbnkKLSsg ICAgICAgIGludGVnZXIgOjogdmFyX2ogPSAzCi0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9rID0g NAotK2VuZCBtb2R1bGUgbGlibWFueQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vbGlicmFyeS1tb2R1bGUtbWFpbi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2xpYnJhcnktbW9kdWxlLW1haW4uZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uZGU2M2E2NQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9saWJyYXJ5LW1vZHVsZS1tYWluLmY5MAotQEAgLTAsMCArMSwyMyBAQAotKyEgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rISAKLSshIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rISAKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rISAKLSshIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgICAgICAgIHVzZSBsaWIKLSsJdXNlIGxpYm1hbnks IG9ubHk6IHZhcl9qCi0rICAgICAgICBpZiAodmFyX2kgLm5lLiAxKSBjYWxsIGFib3J0Ci0rCWNh bGwgbGliX2Z1bmMKLSsgICAgICAgIGlmICh2YXJfaSAubmUuIDIpIGNhbGwgYWJvcnQKLSsgICAg ICAgIGlmICh2YXJfaiAubmUuIDMpIGNhbGwgYWJvcnQKLSsgICAgICAgIHZhcl9pID0gdmFyX2kg ICAgICAgICAgICAgICAgICEgaS1pcy0yCi0rZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2xpYnJhcnktbW9kdWxlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjRiNGVhNGMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vbGlicmFyeS1tb2R1bGUuZXhwCi1AQCAtMCwwICsxLDUzIEBACi0rIyBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlICJsaWJyYXJ5LW1vZHVsZSIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS1tYWluLmY5MAotK3NldCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5m OTAKLStzZXQgbGliZmlsZSAke3Rlc3RmaWxlfS1saWIuc28KLStzZXQgYmluZmlsZSAke3Rlc3Rm aWxlfQotKwotKyMgUmVxdWlyZWQgZm9yIC1mUElDIGJ5IGdkYl9jb21waWxlX3NobGliLgotK2lm IFtnZXRfY29tcGlsZXJfaW5mbyBub3QtdXNlZF0gewotKyAgIHdhcm5pbmcgIkNvdWxkIG5vdCBn ZXQgY29tcGlsZXIgaW5mbyIKLSsgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIHsgW2dkYl9jb21w aWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbGliZmlsZX0iICRvYmpkaXIvJHN1 YmRpci8kbGliZmlsZSB7ZGVidWcgZjc3fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3Vs ZG4ndCBjb21waWxlICR7c3JjbGliZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIHBy ZXBhcmVfZm9yX3Rlc3RpbmcgY2Fubm90IGJlIHVzZWQgYXMgbGlua2luZyB3aXRoICRsaWJmaWxl IGNhbm5vdCBiZSBwYXNzZWQKLSsjIGp1c3QgZm9yIHRoZSBsaW5raW5nIHBoYXNlIChhbmQgbm90 IHRoZSBzb3VyY2UgY29tcGlsYXRpb24gcGhhc2UpLiAgQW5kIGFueQotKyMgd2FybmluZ3Mgb24g aWdub3JlZCAkbGliZmlsZSBhYm9ydCB0aGUgcHJvY2Vzcy4KLSsKLStpZiAgeyBbZ2RiX2NvbXBp bGUgW2xpc3QgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kbGliZmls ZV0gJG9iamRpci8kc3ViZGlyLyRiaW5maWxlIGV4ZWN1dGFibGUge2RlYnVnIGY3N31dICE9ICIi IH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkYmluZmlsZQotKwotK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJpLWlzLTIiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJpLWlzLTIi ICIuKmktaXMtMi4qIgotK2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9IDIiCi0rZ2RiX3Rlc3Qg InByaW50IHZhcl9qIiAiID0gMyIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2siICJObyBzeW1ib2wg XCJ2YXJfa1wiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2xvZ2ljYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9s b2dpY2FsLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmVmNzZmNDMK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbG9naWNhbC5l eHAKLUBAIC0wLDAgKzEsNDQgQEAKLSsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3NldCB0ZXN0ZmlsZSAibG9naWNhbCIKLStz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJk aXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9 XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5p dGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lm ICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJl YWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJzdG9wLWhlcmUiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJzdG9wLWhlcmUiCi0rZ2RiX3Rlc3QgInAgbCIgIiA9IFxcLlRSVUVcXC4iCi0rZ2RiX3Rl c3QgInAgbDEiICIgPSBcXC5UUlVFXFwuIgotK2dkYl90ZXN0ICJwIGwyIiAiID0gXFwuVFJVRVxc LiIKLStnZGJfdGVzdCAicCBsNCIgIiA9IFxcLlRSVUVcXC4iCi0rZ2RiX3Rlc3QgInAgbDgiICIg PSBcXC5UUlVFXFwuIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbG9n aWNhbC5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xvZ2ljYWwuZjkwCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDIyOTMwNAotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sb2dpY2FsLmY5MAotQEAgLTAsMCArMSwzMyBA QAotKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQot KyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEK LSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZp bGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2lu YWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEg TW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3Byb2dyYW0gdGVzdAotKyAgbG9naWNhbCA6OiBsCi0r ICBsb2dpY2FsIChraW5kPTEpIDo6IGwxCi0rICBsb2dpY2FsIChraW5kPTIpIDo6IGwyCi0rICBs b2dpY2FsIChraW5kPTQpIDo6IGw0Ci0rICBsb2dpY2FsIChraW5kPTgpIDo6IGw4Ci0rICBsID0g LlRSVUUuCi0rICBsMSA9IC5UUlVFLgotKyAgbDIgPSAuVFJVRS4KLSsgIGw0ID0gLlRSVUUuCi0r ICBsOCA9IC5UUlVFLgotKyAgbCA9IC5GQUxTRS4JCQkJCSEgc3RvcC1oZXJlCi0rZW5kCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCi1pbmRleCAzNDJjY2VlLi5jODM2YzNjIDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKLUBAIC0xNSwyMSArMTUsMzEgQEAKLSAK LSBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKLSBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLS1z ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0gCi0taWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLS0gICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0 ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XSB9IHsKLSAgICAgcmV0 dXJuIC0xCi0gfQotIAotLWdkYl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0tZ2RiX2xvYWQgJHtiaW5maWxlfQotLQotIGlmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKLSAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCi0gICAgIGNvbnRpbnVlCi0gfQotIAotLWdkYl90ZXN0ICJwcmludCBpIiAiID0gNDIi Ci0rIyBEbyBub3QgdXNlIHNpbXBsZSBzaW5nbGUtbGV0dGVyIG5hbWVzIGFzIEdEQiB3b3VsZCBw aWNrIHVwIGZvciBleHBlY3RlZGx5Ci0rIyBub25leGlzdGluZyBzeW1ib2xzIHNvbWUgc3RhdGlj IHZhcmlhYmxlcyBmcm9tIHN5c3RlbSBsaWJyYXJpZXMgZGVidWdpbmZvcy4KLSsKLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiaS1pcy0xIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiaS1pcy0xIiAiLippLWlzLTEuKiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2ki ICIgPSAxIiAicHJpbnQgdmFyX2kgdmFsdWUgMSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiaS1pcy0yIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiaS1p cy0yIiAiLippLWlzLTIuKiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAyIiAicHJpbnQg dmFyX2kgdmFsdWUgMiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi YS1iLWMtZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImEtYi1jLWQiICIuKmEtYi1j LWQuKiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2EiICJObyBzeW1ib2wgXCJ2YXJfYVwiIGluIGN1 cnJlbnQgY29udGV4dFxcLiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2IiICIgPSAxMSIKLStnZGJf dGVzdCAicHJpbnQgdmFyX2MiICJObyBzeW1ib2wgXCJ2YXJfY1wiIGluIGN1cnJlbnQgY29udGV4 dFxcLiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2QiICIgPSAxMiIKLStnZGJfdGVzdCAicHJpbnQg dmFyX2kiICIgPSAxNCIgInByaW50IHZhcl9pIHZhbHVlIDE0IgotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vbW9kdWxlLmY5MAotaW5kZXggNTAxY2NjOC4uMTE4OTMxZCAxMDA2NDQKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9tb2R1bGUuZjkwCi1AQCAtMTMsMTAgKzEzLDM3IEBACi0gISBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICEg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0gCi0tbW9kdWxlIG1vZAotLSAgICAgICAgaW50ZWdlciA6OiBpID0gNDIK LS1lbmQgbW9kdWxlIG1vZAotK21vZHVsZSBtb2QxCi0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9p ID0gMQotK2VuZCBtb2R1bGUgbW9kMQotIAotLSAgICAgICAgdXNlIG1vZAotLSAgICAgICAgcHJp bnQgKiwgaQotK21vZHVsZSBtb2QyCi0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9pID0gMgotK2Vu ZCBtb2R1bGUgbW9kMgotKwotK21vZHVsZSBtb2RtYW55Ci0rICAgICAgICBpbnRlZ2VyIDo6IHZh cl9hID0gMTAsIHZhcl9iID0gMTEsIHZhcl9jID0gMTIsIHZhcl9pID0gMTQKLStlbmQgbW9kdWxl IG1vZG1hbnkKLSsKLSsgICAgICAgIHN1YnJvdXRpbmUgc3ViMQotKyAgICAgICAgdXNlIG1vZDEK LSsgICAgICAgIGlmICh2YXJfaSAubmUuIDEpIGNhbGwgYWJvcnQKLSsgICAgICAgIHZhcl9pID0g dmFyX2kgICAgICAgICAgICAgICAgICAgICAgICAgISBpLWlzLTEKLSsgICAgICAgIGVuZAotKwot KyAgICAgICAgc3Vicm91dGluZSBzdWIyCi0rICAgICAgICB1c2UgbW9kMgotKyAgICAgICAgaWYg KHZhcl9pIC5uZS4gMikgY2FsbCBhYm9ydAotKyAgICAgICAgdmFyX2kgPSB2YXJfaSAgICAgICAg ICAgICAgICAgICAgICAgICAhIGktaXMtMgotKyAgICAgICAgZW5kCi0rCi0rICAgICAgICB1c2Ug bW9kbWFueSwgb25seTogdmFyX2IsIHZhcl9kID0+IHZhcl9jLCB2YXJfaQotKwotKyAgICAgICAg Y2FsbCBzdWIxCi0rICAgICAgICBjYWxsIHN1YjIKLSsKLSsgICAgICAgIGlmICh2YXJfYiAubmUu IDExKSBjYWxsIGFib3J0Ci0rICAgICAgICBpZiAodmFyX2QgLm5lLiAxMikgY2FsbCBhYm9ydAot KyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMTQpIGNhbGwgYWJvcnQKLSsgICAgICAgIHZhcl9iID0g dmFyX2IgICAgICAgICAgICAgICAgICAgICAgICAgISBhLWItYy1kCi0gZW5kCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdHJpbmcuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uYjExMjBjMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdHJpbmcuZXhwCi1AQCAtMCwwICsxLDU5IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IyAKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4gIAotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAidmFydi1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAidmFydi1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwIHZhcngoMywgNywgMTkpIiAi XFwkXFswLTlcXSogPSA2IiAicCB2YXJ4KDMsIDcsIDE5KSB3aXRoIHZhcnYgYXNzb2NpYXRlZCIK KytnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFydigz LCA3LCAxOSkgYXNzb2NpYXRlZCIKKysjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDgg dXNlcyAtMSB0aGVyZSwgR0NDIHVzZXMgMS4KKytnZGJfdGVzdCAicCBsIiAiXFwkXFswLTlcXSog PSAoXFwuVFJVRVxcLnw0Mjk0OTY3Mjk1KSIgInAgbCBpZiB2YXJ2IGFzc29jaWF0ZWQiCisrZ2Ri X3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1 OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCB3aXRoIHZhcnYgYXNzb2NpYXRlZCIKKysjIEludGVs IEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggdXNlcyB0aGUgcG9pbnRlciB0eXBlLgorK2dkYl90 ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRc XCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpXFwpPyIgInB0eXBlIHZhcnYgYXNzb2NpYXRlZCIK ICsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgSXQgY29udGFp bnMgdGVzdHMgZm9yIEZvcnRyYW4KLSsjIHN0cmluZ3Mgd2l0aCBkeW5hbWljIGxlbmd0aC4KKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1maWxsZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWZpbGxlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDMs IDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcngoMywgNywgMTkpIHdpdGggdmFydiBm aWxsZWQiCisrZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDEwIiAi cCB2YXJ2KDMsIDcsIDE5KSBmaWxsZWQiCiArCi0rc2V0IHRlc3RmaWxlICJzdHJpbmciCi0rc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2 LWRlYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtZGVhc3Nv Y2lhdGVkIgorKyMgVGhlIGxhdHRlciBvbmUgaXMgZm9yIHRoZSBJbnRlbCBGb3J0cmFuIENvbXBp bGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlwZS4KKytnZGJfdGVzdCAicCB2YXJ2IiAiXFwkXFswLTlc XSogPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFj Y2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBp cyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5 cGUgdmFydiIgInR5cGUgPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58 LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2Ug dGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicHR5cGUgdmFydiBkZWFzc29jaWF0ZWQi CisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwuRkFMU0VcXC4iICJwIGwgaWYgdmFy diBkZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInAgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nl c3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFy cmF5KSBpcyBub3QgYXNzb2NpYXRlZFxcLiIKKytnZGJfdGVzdCAicHR5cGUgdmFydigxLDUsMTcp IiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNl IHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZFxcLiIKICsKLStpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4 ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291 bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgotKyAgICByZXR1cm4gLTEKLSt9CisrZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtZGVhbGxvY2F0ZWQiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwIHZhcngi ICJcXCRcWzAtOVxdKiA9IDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFsbG9jYXRlZD4iICJw IHZhcnggZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gPChvYmpl Y3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZhcnggZGVhbGxvY2F0ZWQi CisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwuRkFMU0VcXC4iICJwIGwgaWYgdmFy eCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICIoQ2Fubm90IGFjY2Vz cyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJy YXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1LDE3KSBkZWFsbG9jYXRlZCIKKytn ZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRv IGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxs b2NhdGVkXFwuIiAicHR5cGUgdmFyeCgxLDUsMTcpIGRlYWxsb2NhdGVkIgogKwotK2dkYl9leGl0 Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2Ri X2xvYWQgJHtiaW5maWxlfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ5LXBhc3NlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnktcGFzc2VkIgor KyMgJDEgPSAoKCAoIDEsIDEsIDEsIDEsIDEsIDEpICggMSwgMSwgMSwgMSwgMSwgMSkgLS0tICwg MSkgKSAoICggMSwgMSwgLi4uKSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2YXJ5IiAiXFwkXFsw LTlcXSogPSBcXChcWygpMSwgLlxdKlxcKSIKICsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7 Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBj b250aW51ZQotK30KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeS1m aWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LWZpbGxlZCIKKytnZGJf dGVzdCAicHR5cGUgdmFyeSIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCgxMCwx MFxcKSIKKytnZGJfdGVzdCAicCB2YXJ5KDEsIDEpIiAiXFwkXFswLTlcXSogPSA4IgorK2dkYl90 ZXN0ICJwIHZhcnkoMiwgMikiICJcXCRcWzAtOVxdKiA9IDkiCisrZ2RiX3Rlc3QgInAgdmFyeSgx LCAzKSIgIlxcJFxbMC05XF0qID0gMTAiCisrIyAkMSA9ICgoICggMywgMywgMywgMywgMywgMykg KCAzLCAzLCAzLCAzLCAzLCAzKSAtLS0gLCAzKSApICggKCAzLCAzLCAuLi4pIC4uLikgLi4uKQor K2dkYl90ZXN0ICJwIHZhcnciICJcXCRcWzAtOVxdKiA9IFxcKFxbKCkzLCAuXF0qXFwpIgogKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXItaW5pdCJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1pbml0IgotK2dkYl90ZXN0ICJwdHlwZSBjIiAidHlw ZSA9IGNoYXJhY3RlcihcXChraW5kPTFcXCl8XFwqMSkiCi0rZ2RiX3Rlc3QgInB0eXBlIGQiICJ0 eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9OFxcKXxcXCo4KSIKLStnZGJfdGVzdCAicHR5cGUgZSIg InR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIgotK2dkYl90ZXN0ICJwdHlwZSBm IiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoNyw4OjEwXFwpIgotK2dk Yl90ZXN0ICJwdHlwZSAqZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2lu dGVyIHZhbHVlLiIKLStnZGJfdGVzdCAicHR5cGUgKmYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtp bmQ9NFxcKXxcXCo0KSBcXCg3XFwpIgotK2dkYl90ZXN0ICJwIGMiICJcXCRcWzAtOVxdKiA9ICdj JyIKLStnZGJfdGVzdCAicCBkIiAiXFwkXFswLTlcXSogPSAnZCAgICAgICAnIgotK2dkYl90ZXN0 ICJwIGUiICJcXCRcWzAtOVxdKiA9ICdnICAgJyIKLStnZGJfdGVzdCAicCBmIiAiXFwkXFswLTlc XSogPSBcXChcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAg JywgJ2ggICAnXFwpIFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywg J2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2gg ICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCkiCi0rZ2RiX3Rlc3QgInAgKmUiICJBdHRlbXB0IHRv IHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCi0rZ2RiX3Rlc3QgInAgKmYi ICJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCisrZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxtb3N0ZmlsbGVkIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxsZWQiCisrZ2RiX3Rlc3Qg InB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNSw0LDNcXCki CisrZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0qID0gMSIKKysjICQxID0g KCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUpIC0tLSAsIDUpICkgKCAo IDUsIDUsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0g XFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAicCB2YXJ3IGZpbGxlZCIK KysjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1heSBj b3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKKysjIG91dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhlIGV4 aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgorKyMgV2UgbmVlZCBib3RoIHZhcmlhbnRzIGFzIGRl cGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGlsbCBiZQorKyMgZXhlY3V0 aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcuCisrZ2RiX3Rlc3QgImZp bmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwoeCwgelxcKDI6NiwgNDo3 LCA2OjhcXClcXCkpIgorK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwkXFswLTlcXSogPSAzIgor K2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2IgorK2dkYl90ZXN0ICJwIHoo Miw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgorK2dkYl90ZXN0ICJwIHooNCw0LDYpIiAiXFwkXFsw LTlcXSogPSAxIgogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXIt ZmluaXNoIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZpbmlzaCIKLStnZGJf dGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0IgotK2dkYl90ZXN0 ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2YgICAnLCAnZiAgICcs ICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIgInAgKmYgcmUtc2V0 IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAorK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2YXJ6LWFsbW9zdGZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZhcnotYWxtb3N0ZmlsbGVkIgorKyMgR0NDIHVzZXMgdGhlIHBvaW50ZXIgdHlw ZSBoZXJlLCBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IGRvZXMgbm90LgorK2dkYl90 ZXN0ICJwdHlwZSB2YXJ6IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRc XCl8XFwqNCkgXFwoXFwqXFwpXFwpPyIKKysjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4w MDggaGFzIGEgYnVnIGhlcmUgLSAoMjoxMSw3OjcpCisrIyBhcyBpdCBwcm9kdWNlcyBEV19BVF9s b3dlcl9ib3VuZCA9PSBEV19BVF91cHBlcl9ib3VuZCA9PSA3LgorK2dkYl90ZXN0ICJwdHlwZSB2 YXJ0IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwo MjoxMSw3OlxcKlxcKVxcKT8iCisrZ2RiX3Rlc3QgInAgdmFyeiIgIlxcJFxbMC05XF0qID0gXFwo XFwpIgorK2dkYl90ZXN0ICJwIHZhcnQiICJcXCRcWzAtOVxdKiA9IFxcKFxcKSIKKytnZGJfdGVz dCAicCB2YXJ6KDMpIiAiXFwkXFswLTlcXSogPSA0IgorKyMgbWFwcyB0byBmb286OnZhcnkoMSwx KQorK2dkYl90ZXN0ICJwIHZhcnQoMiw3KSIgIlxcJFxbMC05XF0qID0gOCIKKysjIG1hcHMgdG8g Zm9vOjp2YXJ5KDIsMikKKytnZGJfdGVzdCAicCB2YXJ0KDMsOCkiICJcXCRcWzAtOVxdKiA9IDki CisrIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDMpCisrZ2RiX3Rlc3QgInAgdmFydCgyLDkpIiAiXFwk XFswLTlcXSogPSAxMCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5 bmFtaWMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIyNmRjNWQKK2luZGV4IDAwMDAwMDAuLjBm NDM1NjQKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAotKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMuZjkwCitAQCAtMCwwICsxLDk4IEBACisrISBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICshCiArISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyEgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAg LTI2MzEwLDI0OCArMTcwNTIsMTY4IEBAIGluZGV4IDAwMDAwMDAuLjIyNmRjNWQKICshIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAogKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKICshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB LgotKyEKLSshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHluYW1p Yy5leHAuCi0rISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4uCi0rISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rc3Vicm91dGluZSBmb28g KGUsIGYpCi0rICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCi0rICBjaGFyYWN0ZXIgKGxlbj04KSA6 OiBkCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBm ICgxOjcsIDg6MTApCi0rICBjID0gJ2MnCi0rICBkID0gJ2QnCi0rICBlID0gJ2UnICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAotKyAgZiA9ICdmJwotKyAg ZigxLDkpID0gJ2YyJwotKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICEgdmFyLWZpbmlzaAotK2VuZCBzdWJyb3V0aW5lIGZvbwotKyAgY2hhcmFjdGVyIChs ZW49NCkgOjogZywgaCAoMTo3LCA4OjEwKQotKyAgZyA9ICdnJwotKyAgaCA9ICdoJwotKyAgY2Fs bCBmb28gKGcsIGgpCi0rZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3Nl bGZ0ZXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKLWluZGV4IDQ5 NWFlNDUuLmQwOGQ3YTQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRl c3QuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1AQCAtOTUs NiArOTUsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2NyaXB0 aW9uICJzdGVwIG92ZXIgdHR5YXJnIGluaXRpYWxpemF0aW9uIgotIAkJc2V0IGNvbW1hbmQgInN0 ZXAiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qcHl0aG9uX3NjcmlwdCA9IDAuKiRnZGJfcHJvbXB0 ICQiIHsKLSsJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhvbl9zY3JpcHQgaW5pdGlh bGl6YXRpb24iCi0rCQlzZXQgY29tbWFuZCAic3RlcCIKLSsJICAgIH0KLSAJICAgIC1yZSAiLip0 aW1lX2F0X3N0YXJ0dXAgPSBnZXRfcnVuX3RpbWUuKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBk ZXNjcmlwdGlvbiAibmV4dCBvdmVyIGdldF9ydW5fdGltZSBhbmQgZXZlcnl0aGluZyBpdCBjYWxs cyIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmphdmEvam5wZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTcxMzkxZQotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAotQEAgLTAsMCArMSw3NyBAQAotKyMg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgc3Ry YWNlICR0cmFjZWxldmVsCi0rfQotKwotK2xvYWRfbGliICJqYXZhLmV4cCIKLSsKLStzZXQgdGVz dGZpbGUgImpucGUiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uamF2YQotK3NldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbY29tcGlsZV9qYXZhX2Zy b21fc291cmNlICR7c3JjZGlyfS8kc3ViZGlyLyR7c3JjZmlsZX0gJHtiaW5maWxlfSAiLWciXSAh PSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNkaXJ9LyRzdWJk aXIvJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStz ZXQgYnVnX2lkIDAKLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0rCi0rZ2RiX2V4aXQK LStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJf bG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFr IGhlcmUiICR0ZXN0ZmlsZS5qYXZhXQotK2dkYl90ZXN0ICJicmVhayAkdGVzdGZpbGUuamF2YTok bGluZSIgIiIKLSsKLStnZGJfdGVzdCAicnVuIiBcCi0rICAiLy8gYnJlYWsgaGVyZS4qIiBcCi0r ICAicnVuIGphdmEgbmV4dC1vdmVyLXRocm93IgotKwotKyMgU2VlIHdoZXRoZXIgd2UgaGF2ZSB0 aGUgbmVlZGVkIHVud2luZGVyIGhvb2tzLgotK3NldCBvayAxCi0rZ2RiX3Rlc3RfbXVsdGlwbGUg InByaW50IF9VbndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2 YSIgewotKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIKLSsgICAgfQotKyAg ICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4kZ2RiX3Byb21wdCAk IiB7Ci0rCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4gdGhl IHJlc3VsdHMuCi0rCXNldHVwX3hmYWlsICotKi0qCi0rCWZhaWwgImNoZWNrIGZvciB1bndpbmRl ciBob29rIGluIGphdmEiCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsg ICAgdW50ZXN0ZWQgam5wZS5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0ICJo YW5kbGUgU0lHU0VHViBub3N0b3Agbm9wcmludCIgXAotKyAgIlNJR1NFR1YuKmZhdWx0IiBcCi0r ICAiZGlzYWJsZSBTSUdTRUdWIGZvciBuZXh0LW92ZXItTlBFIgotKwotKyMgVGhlIGxpbmUgd2hl cmUgd2Ugc3RvcCBkaWZmZXIgYWNjb3JkaW5nIHRvIGdjajsgY2hlY2sganVzdCB3ZSBkaWQgbm90 IGFscmVhZHkKLSsjIGV4ZWN1dGUgdGhlIGNhdGNoIHBvaW50LgotKwotK2dkYl90ZXN0ICJuZXh0 IiBcCi0rICAiIiBcCi0rICAibmV4dCBvdmVyIE5QRSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAiY2F0Y2ggcG9pbnQiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJjYXRjaCBwb2ludCIgIi4qLy8gY2F0Y2ggcG9pbnQuKiIKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2YSBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5w ZS5qYXZhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzUyNDgzMAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEKLUBAIC0w LDAgKzEsMzggQEAKLSsvLyBUZXN0IG5leHQtb3Zlci1OUEUuCi0rLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KLSsgICAqLwotKwotK3B1YmxpYyBjbGFzcyBqbnBlCi0rewotKyAgcHVi bGljIHN0YXRpYyBTdHJpbmcgbnBlICgpCi0rICB7Ci0rICAgIHJldHVybiAoKE9iamVjdCkgbnVs bCkudG9TdHJpbmcoKTsKLSsgIH0KLSsKLSsgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJp bmdbXSBhcmdzKQotKyAgewotKyAgICB0cnkKLSsgICAgICB7Ci0rCVN5c3RlbS5vdXQucHJpbnRs biAobnBlICgpKTsgLy8gYnJlYWsgaGVyZQotKyAgICAgIH0KLSsgICAgY2F0Y2ggKE51bGxQb2lu dGVyRXhjZXB0aW9uIG4pCi0rICAgICAgewotKwlTeXN0ZW0ub3V0LnByaW50bG4gKCJzdWNjZXNz Iik7IC8vIGNhdGNoIHBvaW50Ci0rICAgICAgfQotKyAgfQotK30KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi43MjlmNDU3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLUBAIC0wLDAgKzEsMjIg QEAKLSsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKyEgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysh IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJj ZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1 YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRl c3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KICsK LStpbnQKLStmdW5jIChpbnQgKmFycikKLSt7Ci0rICByZXR1cm4gYXJyWzBdOwotK30KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYworK3N1YnJvdXRpbmUgYmF6 CisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZhcnggKDosIDosIDopCisrICByZWFs LCBwb2ludGVyIDo6IHZhcnYgKDosIDosIDopCisrICByZWFsLCB0YXJnZXQgOjogdmFydSAoMSwg MiwgMykKKysgIGxvZ2ljYWwgOjogbAorKyAgYWxsb2NhdGUgKHZhcnggKDE6NiwgNToxNSwgMTc6 MjgpKSAgICAgICAgICAgICEgdmFyeC1pbml0CisrICBsID0gYWxsb2NhdGVkICh2YXJ4KQorKyAg dmFyeCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1hbGxv Y2F0ZWQKKysgIHZhcngoMSwgNSwgMTcpID0gNworKyAgdmFyeCgyLCA2LCAxOCkgPSA4CisrICB2 YXJ4KDYsIDE1LCAyOCkgPSA5CisrICB2YXJ2ID0+IHZhcnggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ4LWZpbGxlZAorKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCisrICB2 YXJ2KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWFzc29j aWF0ZWQKKysgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh IHZhcnYtZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIGRlYWxsb2NhdGUgKHZh cngpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZGVhc3NvY2lhdGVkCisrICBs ID0gYWxsb2NhdGVkICh2YXJ4KQorKyAgdmFydSg6LCA6LCA6KSA9IDEwICAgICAgICAgICAgICAg ICAgICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAorKyAgYWxsb2NhdGUgKHZhcnYgKDE6Niwg NToxNSwgMTc6MjgpKQorKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCisrICB2YXJ2KDosIDosIDop ID0gNgorKyAgdmFydigxLCA1LCAxNykgPSA3CisrICB2YXJ2KDIsIDYsIDE4KSA9IDgKKysgIHZh cnYoNiwgMTUsIDI4KSA9IDkKKysgIGRlYWxsb2NhdGUgKHZhcnYpCisrICBsID0gYXNzb2NpYXRl ZCAodmFydikKKysgIHZhcnYgPT4gdmFydQorKyAgdmFydigxLCAxLCAxKSA9IDYKKysgIHZhcnYo MSwgMiwgMykgPSA3CisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKytlbmQgc3Vicm91dGluZSBi YXoKKytzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykKKysgIHJlYWwgOjogdmFyeSAoOiwgOikK KysgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKKysgIHZhcnkoOiwgOikgPSA0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2VkCisrICB2YXJ5KDEsIDEpID0gOAorKyAg dmFyeSgyLCAyKSA9IDkKKysgIHZhcnkoMSwgMykgPSAxMAorKyAgdmFydyg6LCA6LCA6KSA9IDUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeS1maWxsZWQKKysgIHZhcncoMSwgMSwg MSkgPSA2CisrICB2YXJ3KDIsIDIsIDIpID0gNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB2YXJ3LWFsbW9zdGZpbGxlZAorK2VuZCBzdWJyb3V0aW5lIGZvbworK3N1YnJvdXRpbmUgYmFy ICh2YXJ6LCB2YXJ0KQorKyAgcmVhbCA6OiB2YXJ6ICgqKQorKyAgcmVhbCA6OiB2YXJ0ICgyOjEx LCA3OiopCisrICB2YXJ6KDE6MykgPSA0CisrICB2YXJ6KDIpID0gNSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZpbGxlZAorKyAgdmFydCgyLDcpID0gdmFy dCgyLDcpCisrZW5kIHN1YnJvdXRpbmUgYmFyCisrcHJvZ3JhbSB0ZXN0CisrICBpbnRlcmZhY2UK KysgICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCisrICAgIHJlYWwgOjogdmFyeSAoOiwg OikKKysgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQorKyAgICBlbmQgc3Vicm91dGluZQorKyAg ZW5kIGludGVyZmFjZQorKyAgaW50ZXJmYWNlCisrICAgIHN1YnJvdXRpbmUgYmFyICh2YXJ6LCB2 YXJ0KQorKyAgICByZWFsIDo6IHZhcnogKCopCisrICAgIHJlYWwgOjogdmFydCAoMjoxMSwgNzoq KQorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgcmVhbCA6OiB4ICgx MCwgMTApLCB5ICg1KSwgeig4LCA4LCA4KQorKyAgeCg6LDopID0gMQorKyAgeSg6KSA9IDIKKysg IHooOiw6LDopID0gMworKyAgY2FsbCBiYXoKKysgIGNhbGwgZm9vICh4LCB6KDI6NiwgNDo3LCA2 OjgpKQorKyAgY2FsbCBiYXIgKHksIHgpCisrICBpZiAoeCAoMSwgMSkgLm5lLiA4IC5vci4geCAo MiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0CisrICBpZiAoeCAo MSwgMykgLm5lLiAxMCkgY2FsbCBhYm9ydAorKyAgaWYgKHogKDIsIDQsIDYpIC5uZS4gNiAub3Iu IHogKDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQsIDcpIC5uZS4gNSkgY2FsbCBhYm9ydAor KyAgaWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwgMi8pKSkgY2FsbCBhYm9ydAorKyAgY2Fs bCBmb28gKHRyYW5zcG9zZSAoeCksIHopCisrICBpZiAoeCAoMSwgMSkgLm5lLiA4IC5vci4geCAo MiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0CisrICBpZiAoeCAo MywgMSkgLm5lLiAxMCkgY2FsbCBhYm9ydAorK2VuZAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbGliLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbGliLmY5MAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjMwOTBlN2UKK2luZGV4IDAwMDAwMDAuLjYzNjlkMzQKIC0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbGliLmY5MAogQEAg LTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rZXh0 ZXJuIGludCBmdW5jIChpbnQgKmFycik7CisrISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyshIAorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshIAor KyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyshIAorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgog KwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgaW50IGFycltdID0geyA0MiB9OworK21vZHVs ZSBsaWIKKysgICAgICAgIGludGVnZXIgOjogdmFyX2kgPSAxCisrY29udGFpbnMKKysgICAgICAg IHN1YnJvdXRpbmUgbGliX2Z1bmMKKysgICAgICAgIGlmICh2YXJfaSAubmUuIDEpIGNhbGwgYWJv cnQKKysgICAgICAgIHZhcl9pID0gMgorKyAgICAgICAgZW5kIHN1YnJvdXRpbmUgbGliX2Z1bmMK KytlbmQgbW9kdWxlIGxpYgogKwotKyAgZnVuYyAoYXJyKTsKKyttb2R1bGUgbGlibWFueQorKyAg ICAgICAgaW50ZWdlciA6OiB2YXJfaiA9IDMKKysgICAgICAgIGludGVnZXIgOjogdmFyX2sgPSA0 CisrZW5kIG1vZHVsZSBsaWJtYW55CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9saWJyYXJ5LW1vZHVsZS1tYWluLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bGlicmFyeS1tb2R1bGUtbWFpbi5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi5kZTYzYTY1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2xpYnJhcnktbW9kdWxlLW1haW4uZjkwCitAQCAtMCwwICsxLDIzIEBACisrISBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshIAorKyEgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyshIAorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshIAorKyEgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAorKyAgICAgICAgdXNlIGxpYgorKwl1 c2UgbGlibWFueSwgb25seTogdmFyX2oKKysgICAgICAgIGlmICh2YXJfaSAubmUuIDEpIGNhbGwg YWJvcnQKKysJY2FsbCBsaWJfZnVuYworKyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMikgY2FsbCBh Ym9ydAorKyAgICAgICAgaWYgKHZhcl9qIC5uZS4gMykgY2FsbCBhYm9ydAorKyAgICAgICAgdmFy X2kgPSB2YXJfaSAgICAgICAgICAgICAgICAgISBpLWlzLTIKKytlbmQKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uZjJkZTcxOAoraW5kZXggMDAwMDAwMC4uNGI0ZWE0YwogLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhw Ci1AQCAtMCwwICsxLDMzIEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJh cnktbW9kdWxlLmV4cAorQEAgLTAsMCArMSw1MyBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIworKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCkBAIC0yNjU2MCw2MzkgKzE3MjIyLDYwMiBA QCBpbmRleCAwMDAwMDAwLi5mMmRlNzE4CiArIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgogKyMKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KKysj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgogKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgYXJyYXktZnJvbS1y ZWdpc3Rlci5leHAgImFycmF5LWZyb20tcmVnaXN0ZXIiICAgICAgXAotKwkJCSAge2FycmF5LWZy b20tcmVnaXN0ZXIuYyBhcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuY30gXAotKwkJCSAge2RlYnVn IG9wdGltaXplPS1PMn1dIH0gewotKyAgICByZXR1cm4gLTEKKytzZXQgdGVzdGZpbGUgImxpYnJh cnktbW9kdWxlIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LW1haW4uZjkwCisrc2V0IHNyY2xp YmZpbGUgJHt0ZXN0ZmlsZX0tbGliLmY5MAorK3NldCBsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5z bworK3NldCBiaW5maWxlICR7dGVzdGZpbGV9CisrCisrIyBSZXF1aXJlZCBmb3IgLWZQSUMgYnkg Z2RiX2NvbXBpbGVfc2hsaWIuCisraWYgW2dldF9jb21waWxlcl9pbmZvIG5vdC11c2VkXSB7Cisr ICAgd2FybmluZyAiQ291bGQgbm90IGdldCBjb21waWxlciBpbmZvIgorKyAgIHJldHVybiAtMQog K30KICsKLStpZiAhW3J1bnRvIGZ1bmNdIHRoZW4geworK2lmICB7IFtnZGJfY29tcGlsZV9zaGxp YiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGlyLyRzdWJkaXIvJGxp YmZpbGUge2RlYnVnIGY3N31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2xpYmZpbGV9IgogKyAgICByZXR1cm4gLTEKICt9CiArCi0rZ2RiX3Rlc3QgInAg YXJyIiAiXFwkXFswLTlcXSsgPSBcXChpbnQgXFwqXFwpICoweFxbMC05YS1mXF0rIgotKwotKyMg U2VlbiByZWdyZXNzaW9uOgotKyMgQWRkcmVzcyByZXF1ZXN0ZWQgZm9yIGlkZW50aWZpZXIgImFy ciIgd2hpY2ggaXMgaW4gcmVnaXN0ZXIgJHJkaQotK2dkYl90ZXN0ICJwIGFyclxbMFxdIiAiXFwk XFswLTlcXSsgPSA0MiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJh bi1zdHJpbmcuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmY5OTdlZWMKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5leHAKLUBAIC0w LDAgKzEsNDEgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0r Ci0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+LgotKwotKyMgVGVzdCBHREIgY2FuIGNvcGUgd2l0aCBGb3J0cmFuIHN0 cmluZ3MgaGF2aW5nIHRoZWlyIGxlbmd0aCBwcmVzZW50IGluIGEgQ1BVCi0rIyByZWdpc3Rlci4g IFdpdGggLU8wIHRoZSBzdHJpbmcgbGVuZ3RoIGlzIHBhc3NlZCBvbiB0aGUgc3RhY2suICBUbyBt YWtlIHRoaXMKLSsjIHRlc3QgbWVhbmluZ2Z1bCB0aGUgZm9sbG93IGFzc2VydGlvbiBzaG91bGQg cGFzcy4gIEl0IGlzIG5vdCBiZWluZyBjaGVja2VkCi0rIyBoZXJlIGFzIHRoZSAiX3MiIHN5bWJv bCBpcyBjb21waWxlciBkZXBlbmRlbnQ6Ci0rIyAgIChnZGIpIGluZm8gYWRkcmVzcyBfcwotKyMg ICBTeW1ib2wgIl9zIiBpcyBhIHZhcmlhYmxlIGluIHJlZ2lzdGVyIFhYLgorKyMgcHJlcGFyZV9m b3JfdGVzdGluZyBjYW5ub3QgYmUgdXNlZCBhcyBsaW5raW5nIHdpdGggJGxpYmZpbGUgY2Fubm90 IGJlIHBhc3NlZAorKyMganVzdCBmb3IgdGhlIGxpbmtpbmcgcGhhc2UgKGFuZCBub3QgdGhlIHNv dXJjZSBjb21waWxhdGlvbiBwaGFzZSkuICBBbmQgYW55CisrIyB3YXJuaW5ncyBvbiBpZ25vcmVk ICRsaWJmaWxlIGFib3J0IHRoZSBwcm9jZXNzLgogKwotK3NldCB0ZXN0IGZvcnRyYW4tc3RyaW5n Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0fS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdH0uZXhwICR7dGVzdH0gJHtzcmNmaWxlfSB7ZGVidWcgZjc3IGFkZGl0aW9uYWxfZmxhZ3M9 LU8yfV0gfSB7CisraWYgIHsgW2dkYl9jb21waWxlIFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3Jj ZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBl eGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgJHtzcmNmaWxlfSIKICsgICAgcmV0dXJuIC0xCiArfQogKworK2NsZWFuX3Jlc3Rh cnQgJGJpbmZpbGUKKysKICtpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CiArICAgIHBlcnJvciAi Y291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgogKyAgICBjb250aW51ZQogK30KICsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicyA9IHMiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJzID0gcyIKLStnZGJfdGVzdCAiZnJhbWUiICIuKnM9J2Zvbycu KiIKLStnZGJfdGVzdCAicHR5cGUgcyIgInR5cGUgPSBjaGFyYWN0ZXJcXCozIgotK2dkYl90ZXN0 ICJwIHMiICJcXCRcWzAtOVxdKiA9ICdmb28nIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLm9wdC9mb3J0cmFuLXN0cmluZy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJh bi1zdHJpbmcuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTQ4ZDUy MAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3Ry aW5nLmY5MAotQEAgLTAsMCArMSwyOCBAQAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0r ISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9y IGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotKyAgc3Vicm91 dGluZSBmKHMpCi0rICBjaGFyYWN0ZXIqKCopIHMKLSsgIHMgPSBzCi0rICBlbmQKLSsKLSsgIHBy b2dyYW0gbWFpbgotKyAgY2FsbCBmICgnZm9vJykKLSsgIGVuZAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWNtZC5leHAKLWluZGV4IGY2ZWY5MzguLjEwMzJhMmQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWNtZC5leHAKLUBAIC0yMCwzNiArMjAsMTUgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7 Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLS0jIFVzYWdlOiBnZGJfcHlfdGVzdF9t dWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgotLSMgUnVuIGEgdGVz dCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgotLSMg QWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VM VC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNlLgot LXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewotLSAgICBnbG9iYWwgZ2Ri X3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdzIHsKLS0JaWYge1tnZGJf dGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7Ci0tCSAgICAtcmUgIlxbXHJc blxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQiIHsKLS0JCXBhc3MgIiRu YW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9XX0gewotLQkgICAgcmV0dXJuIDEKLS0JfQotLSAg ICB9Ci0tICAgIHJldHVybiAwCi0tfQotLQotICMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSAK LSBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgotIAotLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hlbGxvLCB3b3JsZCEn IiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdk Yl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNh YmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQi CXt9Ci0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRo b24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQotIH0KKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiaS1pcy0yIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiaS1pcy0yIiAiLippLWlzLTIuKiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAy IgorK2dkYl90ZXN0ICJwcmludCB2YXJfaiIgIiA9IDMiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9r IiAiTm8gc3ltYm9sIFwidmFyX2tcIiBpbiBjdXJyZW50IGNvbnRleHRcXC4iCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9tb2R1bGUuZXhwCitpbmRleCAwYWNjZTRmLi5iOTUyMTYyIDEwMDY0NAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKK0BAIC0xNSwyMSArMTUsMzEgQEAKICAKLSAjIFRl c3QgYSBzaW1wbGUgY29tbWFuZC4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAot aW5kZXggYTY3ZWFhMy4uNTM4MGMwZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mcmFtZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFt ZS5leHAKLUBAIC0yMCw0MCArMjAsMjggQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgIHN0 cmFjZSAkdHJhY2VsZXZlbAotIH0KKyBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKKyBzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5mOTAKKy1zZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9CiAgCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotKwotK2dkYl9leGl0Ci0rZ2Ri X3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rCi0raWYgIVtw eXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBp cyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQotK30KLSsKLSBzZXQgdGVzdGZpbGUgInB5LWZyYW1l IgotIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLSBzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0gaWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIg fSB7Ci0gICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCistaWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKKy0gICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XSB9IHsKICAgICAg cmV0dXJuIC0xCiAgfQogIAotLSMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCByZXBvcnQgYSBm YWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0tIyBJZiByZXBvcnRfcGFz cyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0tcHJv YyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHtjbWQgbmFtZSByZXBvcnRfcGFzc30gewotLSAgZ2xv YmFsIGdkYl9wcm9tcHQKLS0KLS0gIGdkYl90ZXN0X211bHRpcGxlICRjbWQgJG5hbWUgewotLSAg ICAgIC1yZSAiVHJhY2ViYWNrLiokZ2RiX3Byb21wdCAkIiAgeyBmYWlsICRuYW1lIH0KLS0gICAg ICAtcmUgIiRnZGJfcHJvbXB0ICQiCSAgICAgIHsgaWYgJHJlcG9ydF9wYXNzIHsgcGFzcyAkbmFt ZSB9IH0KLS0gIH0KLS19Ci0tCi0tIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotLQogLWdkYl9l eGl0CiAtZ2RiX3N0YXJ0CiAtZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0g Z2RiX2xvYWQgJHtiaW5maWxlfQotIAotLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQg J2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90 IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24g c3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUg IiRnZGJfcHJvbXB0ICQiCXt9Ci0tfQotLQotICMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1aXJl IGV4ZWN1dGlvbi4KLSAKLSBpZiAhW3J1bnRvX21haW5dIHRoZW4gewotQEAgLTY1LDE5ICs1Mywy MCBAQCBnZGJfYnJlYWtwb2ludCAiZjIiCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrcG9pbnQgYXQgZjIiCi0gZ2RiX3Rlc3QgInVwIiAiIiAiIgotIAotLWdkYl9weV90ZXN0X3Np bGVudF9jbWQgInB5dGhvbiBmMSA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKSIgImdldCBzZWNvbmQg ZnJhbWUiIDAKLS1nZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjAgPSBmMS5uZXdlciAo KSIgImdldCBmaXJzdCBmcmFtZSIgMAotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBm cmFtZXMgPSBnZGIuc2VsZWN0ZWRfdGhyZWFkICgpLmZyYW1lcyAoKSIgImdldCBmcmFtZXMgbGlz dCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgZnJhbWVzIiAiXFwoPGdkYi5GcmFtZSBvYmpl Y3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sIDxnZGIuRnJhbWUgb2JqZWN0IGF0IDB4XFtcWzp4 ZGlnaXQ6XF1cXSs+LCA8Z2RiLkZyYW1lIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPlxc KSIgInZlcmlmeSBmcmFtZXMgbGlzdCIKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24g ZjAgPSBmcmFtZXNcWzBcXSIgImdldCBmaXJzdCBmcmFtZSIgMAotK2dkYl9weV90ZXN0X3NpbGVu dF9jbWQgInB5dGhvbiBmMSA9IGZyYW1lc1xbMVxdIiAiZ2V0IHNlY29uZCBmcmFtZSIgMAotIAot IGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjEiICIgPSBGYWxzZSIg InRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgotIGdkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBlcXVhbGl0eSBjb21wYXJp c29uICh0cnVlKSIKLS1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYx IiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKLS1nZGJfdGVz dCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYwIiAiID0gRmFsc2UiICJ0ZXN0IGlu ZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jl c3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVlIiAidGVzdCBGcmFtZS5pc192YWxpZCIK LSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLm5hbWUgKCkiICIgPSBmMiIg InRlc3QgRnJhbWUubmFtZSIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw LnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUi Ci0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC51bndpbmRfc3RvcF9yZWFz b24gKCkgPT0gZ2RiLkZSQU1FX1VOV0lORF9OT19SRUFTT04iICIgPSBUcnVlIiAidGVzdCBGcmFt ZS50eXBlIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLmZyYW1lX3N0 b3BfcmVhc29uX3N0cmluZyAoZ2RiLkZSQU1FX1VOV0lORF9JTk5FUl9JRCkiICIgPSBwcmV2aW91 cyBmcmFtZSBpbm5lciB0byB0aGlzIGZyYW1lIFxcKGNvcnJ1cHQgc3RhY2tcXD9cXCkiICJ0ZXN0 IGdkYi5mcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmciCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAn cmVzdWx0ID0nLCBmMC5wYyAoKSIgIiA9IFxbMC05XF0rIiAidGVzdCBGcmFtZS5wYyIKLStnZGJf dGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLmZ1bmN0aW9uICgpIiAiID0gc3ltYm9s IGZvciBmMiIgInRlc3QgRnJhbWUuZnVuY3Rpb24iCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAn cmVzdWx0ID0nLCBmMC5vbGRlciAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLm9sZGVy IgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjEubmV3ZXIgKCkgPT0gZjAi ICIgPSBUcnVlIiAidGVzdCBGcmFtZS5uZXdlciIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3VyZWx5X2RvZXNudF9leGlz dCcpIiBcCi1AQCAtODUsNCArNzQsNyBAQCBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3VyZWx5X2RvZXNudF9leAotICAgInRl c3QgRnJhbWUucmVhZF92YXIgLSBlcnJvciIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1 bHQgPScsIGYwLnJlYWRfdmFyICgnYScpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92YXIgLSBz dWNjZXNzIgotIAotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVj dGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUgKCkgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBnZGIu bmV3ZXN0X2ZyYW1lIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNl bGVjdGVkX2ZyYW1lICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1l IgotKwotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8 Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxv Y2siCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mdW5jdGlvbi5leHAKLWluZGV4IDMwZmRl N2QuLjE0Y2Q5MGMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVu Y3Rpb24uZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhw Ci1AQCAtMjAsMzYgKzIwLDE1IEBAIGlmICR0cmFjZWxldmVsIHRoZW4gewotICAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKLSB9Ci0gCi0tIyBVc2FnZTogZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgTkFNRSBJ TlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KLS0jIFJ1biBhIHRlc3QgbmFtZWQgTkFNRSwg Y29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4KLS0jIEFmdGVyIGVhY2ggaW5w dXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBSRVNVTFQuCi0tIyBTdWNjZWVk IGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lzZS4KLS1wcm9jIGdkYl9weV90 ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKLS0gICAgZ2xvYmFsIGdkYl9wcm9tcHQKLS0gICAg Zm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7Ci0tCWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUg JGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewotLQkgICAgLXJlICJcW1xyXG5cXSooJHJlc3VsdClc W1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7Ci0tCQlwYXNzICIkbmFtZSAtICRpbnB1dCIK LS0JICAgIH0KLS0JfV19IHsKLS0JICAgIHJldHVybiAxCi0tCX0KLS0gICAgfQotLSAgICByZXR1 cm4gMAotLX0KKy1nZGJfbG9hZCAke2JpbmZpbGV9CiAtCi0gIyBTdGFydCB3aXRoIGEgZnJlc2gg Z2RiLgotIAotIGdkYl9leGl0Ci0gZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0gCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBwcmludCAnaGVsbG8s IHdvcmxkISciICJ2ZXJpZnkgcHl0aG9uIHN1cHBvcnQiIHsKLS0gICAgLXJlICJub3Qgc3VwcG9y dGVkLiokZ2RiX3Byb21wdCAkIgl7Ci0tICAgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0 IGlzIGRpc2FibGVkIgotLSAgICAgIHJldHVybiAtMQotLSAgICB9Ci0tICAgIC1yZSAiJGdkYl9w cm9tcHQgJCIJe30KLStpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4gewotKyAgdW5zdXBwb3J0 ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgotKyAgcmV0dXJuIC0xCisgaWYgIVtydW50 byBNQUlOX19dIHRoZW4geworICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50 IE1BSU5fXyIKKyAgICAgY29udGludWUKICB9CiAgCi0gZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgImlu cHV0IGNvbnZlbmllbmNlIGZ1bmN0aW9uIiBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWluZmVyaW9yLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5m ZXJpb3IuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBiNDgyOTkKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5j Ci1AQCAtMCwwICsxLDQ5IEBACi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxp Yi5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2Rl ZmluZSBDSFVOS19TSVpFIDE2MDAwIC8qIHNhbWUgYXMgZmluZGNtZC5jJ3MgKi8KLSsjZGVmaW5l IEJVRl9TSVpFICgyICogQ0hVTktfU0laRSkgLyogYXQgbGVhc3QgdHdvIGNodW5rcyAqLwotKwot K3N0YXRpYyBpbnQ4X3QgaW50OF9zZWFyY2hfYnVmWzEwMF07Ci0rc3RhdGljIGludDE2X3QgaW50 MTZfc2VhcmNoX2J1ZlsxMDBdOwotK3N0YXRpYyBpbnQzMl90IGludDMyX3NlYXJjaF9idWZbMTAw XTsKLStzdGF0aWMgaW50NjRfdCBpbnQ2NF9zZWFyY2hfYnVmWzEwMF07Ci0rCi0rc3RhdGljIGNo YXIgKnNlYXJjaF9idWY7Ci0rc3RhdGljIGludCBzZWFyY2hfYnVmX3NpemU7CistZ2RiX3Rlc3Qg InByaW50IGkiICIgPSA0MiIKKysjIERvIG5vdCB1c2Ugc2ltcGxlIHNpbmdsZS1sZXR0ZXIgbmFt ZXMgYXMgR0RCIHdvdWxkIHBpY2sgdXAgZm9yIGV4cGVjdGVkbHkKKysjIG5vbmV4aXN0aW5nIHN5 bWJvbHMgc29tZSBzdGF0aWMgdmFyaWFibGVzIGZyb20gc3lzdGVtIGxpYnJhcmllcyBkZWJ1Z2lu Zm9zLgogKwotK3N0YXRpYyBpbnQgeDsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAiaS1pcy0xIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiaS1pcy0xIiAiLipp LWlzLTEuKiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAxIiAicHJpbnQgdmFyX2kgdmFs dWUgMSIKICsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiaS1pcy0yIl0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiaS1pcy0yIiAiLippLWlzLTIuKiIKKytnZGJf dGVzdCAicHJpbnQgdmFyX2kiICIgPSAyIiAicHJpbnQgdmFyX2kgdmFsdWUgMiIKICsKLStpbnQg ZjIgKGludCBhKQotK3sKLSsgIGNoYXIgKnN0ciA9ICJoZWxsbywgdGVzdHN1aXRlIjsKKytnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYS1iLWMtZCJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImEtYi1jLWQiICIuKmEtYi1jLWQuKiIKKytnZGJfdGVzdCAicHJpbnQg dmFyX2EiICJObyBzeW1ib2wgXCJ2YXJfYVwiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKKytnZGJf dGVzdCAicHJpbnQgdmFyX2IiICIgPSAxMSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2MiICJObyBz eW1ib2wgXCJ2YXJfY1wiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKKytnZGJfdGVzdCAicHJpbnQg dmFyX2QiICIgPSAxMiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAxNCIgInByaW50IHZh cl9pIHZhbHVlIDE0IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9k dWxlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAoraW5kZXggODFl ZjM3Ni4uZmI2ZWNjZCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9k dWxlLmY5MAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZjkwCitAQCAt MTMsMTAgKzEzLDM3IEBACisgISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCistbW9kdWxl IG1vZAorLSAgICAgICAgaW50ZWdlciA6OiBpID0gNDIKKy1lbmQgbW9kdWxlIG1vZAorK21vZHVs ZSBtb2QxCisrICAgICAgICBpbnRlZ2VyIDo6IHZhcl9pID0gMQorK2VuZCBtb2R1bGUgbW9kMQor IAorLSAgICAgICAgdXNlIG1vZAorLSAgICAgICAgcHJpbnQgKiwgaQorK21vZHVsZSBtb2QyCisr ICAgICAgICBpbnRlZ2VyIDo6IHZhcl9pID0gMgorK2VuZCBtb2R1bGUgbW9kMgogKwotKyAgcHV0 cyAoc3RyKTsJLyogQnJlYWsgaGVyZS4gICovCisrbW9kdWxlIG1vZG1hbnkKKysgICAgICAgIGlu dGVnZXIgOjogdmFyX2EgPSAxMCwgdmFyX2IgPSAxMSwgdmFyX2MgPSAxMiwgdmFyX2kgPSAxNAor K2VuZCBtb2R1bGUgbW9kbWFueQogKwotKyAgcmV0dXJuICsrYTsKLSt9CisrICAgICAgICBzdWJy b3V0aW5lIHN1YjEKKysgICAgICAgIHVzZSBtb2QxCisrICAgICAgICBpZiAodmFyX2kgLm5lLiAx KSBjYWxsIGFib3J0CisrICAgICAgICB2YXJfaSA9IHZhcl9pICAgICAgICAgICAgICAgICAgICAg ICAgICEgaS1pcy0xCisrICAgICAgICBlbmQKICsKLStpbnQgZjEgKGludCBhLCBpbnQgYikKLSt7 Ci0rICByZXR1cm4gZjIoYSkgKyBiOwotK30KKysgICAgICAgIHN1YnJvdXRpbmUgc3ViMgorKyAg ICAgICAgdXNlIG1vZDIKKysgICAgICAgIGlmICh2YXJfaSAubmUuIDIpIGNhbGwgYWJvcnQKKysg ICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICAgICAgICAgISBpLWlzLTIKKysg ICAgICAgIGVuZAogKwotK3N0YXRpYyB2b2lkCi0raW5pdF9idWZzICgpCi0rewotKyAgc2VhcmNo X2J1Zl9zaXplID0gQlVGX1NJWkU7Ci0rICBzZWFyY2hfYnVmID0gbWFsbG9jIChzZWFyY2hfYnVm X3NpemUpOwotKyAgaWYgKHNlYXJjaF9idWYgPT0gTlVMTCkKLSsgICAgZXhpdCAoMSk7Ci0rICBt ZW1zZXQgKHNlYXJjaF9idWYsICd4Jywgc2VhcmNoX2J1Zl9zaXplKTsKLSt9CisrICAgICAgICB1 c2UgbW9kbWFueSwgb25seTogdmFyX2IsIHZhcl9kID0+IHZhcl9jLCB2YXJfaQogKwotK2ludCBt YWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsgIGluaXRfYnVmcyAoKTsKKysgICAg ICAgIGNhbGwgc3ViMQorKyAgICAgICAgY2FsbCBzdWIyCiArCi0rICByZXR1cm4gZjEgKDEsIDIp OwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3Iu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9yLmV4cAorKyAgICAgICAg aWYgKHZhcl9iIC5uZS4gMTEpIGNhbGwgYWJvcnQKKysgICAgICAgIGlmICh2YXJfZCAubmUuIDEy KSBjYWxsIGFib3J0CisrICAgICAgICBpZiAodmFyX2kgLm5lLiAxNCkgY2FsbCBhYm9ydAorKyAg ICAgICAgdmFyX2IgPSB2YXJfYiAgICAgICAgICAgICAgICAgICAgICAgICAhIGEtYi1jLWQKKyBl bmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi43MTliMTc4CitpbmRleCAwMDAwMDAwLi5iMTEyMGMzCiAtLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuZXhwCi1A QCAtMCwwICsxLDIwMSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhw CitAQCAtMCwwICsxLDU5IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKKysjIAogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCisrIyAKICsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHREIgdGVzdHN1aXRl LiAgSXQgdGVzdHMgdGhlIG1lY2hhbmlzbQotKyMgZXhwb3NpbmcgaW5mZXJpb3JzIHRvIFB5dGhv bi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0r fQotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKysjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLiAgCiArCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCiArCi0raWYgIVtweXRob25fc3VwcG9ydGVk XSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsg IHJldHVybiAtMQotK30KKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRl LiAgSXQgY29udGFpbnMgdGVzdHMgZm9yIEZvcnRyYW4KKysjIHN0cmluZ3Mgd2l0aCBkeW5hbWlj IGxlbmd0aC4KICsKLStzZXQgdGVzdGZpbGUgInB5LWluZmVyaW9yIgotK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKKytzZXQgdGVzdGZpbGUgInN0cmluZyIKKytzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5mOTAKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CiAr Ci0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisraWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgJHtzcmNmaWxlfSIKICsgICAgcmV0dXJuIC0xCiArfQogKworK2dkYl9leGl0Cisr Z2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCiArZ2RiX2xv YWQgJHtiaW5maWxlfQogKwotKyMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1aXJlIGV4ZWN1dGlv bi4KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBmYWlsICJDYW4ndCBydW4gdG8g bWFpbiIKLSsgICAgcmV0dXJuIDAKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBl cnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQog K30KICsKLStydW50byBbZ2RiX2dldF9saW5lX251bWJlciAiQnJlYWsgaGVyZS4iXQotKwotKyMg VGVzdCBiYXNpYyBnZGIuSW5mZXJpb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9kcy4KLSsKLStnZGJf cHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gaW5mZXJpb3JzID0gZ2RiLmluZmVyaW9ycyAoKSIg ImdldCBpbmZlcmlvcnMgbGlzdCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgaW5mZXJpb3Jz IiAiXFwoPGdkYi5JbmZlcmlvciBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sXFwpIiAi dmVyaWZ5IGluZmVyaW9ycyBsaXN0IgotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBp MCA9IGluZmVyaW9yc1xbMFxdIiAiZ2V0IGZpcnN0IGluZmVyaW9yIiAwCi0rCi0rZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBpMCA9PSBpbmZlcmlvcnNcWzBcXSIgIiA9IFRydWUi ICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotK2dkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgaTAubnVtIiAiID0gXFswLTlcXSsiICJ0ZXN0IEluZmVyaW9yLm51bSIK LStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwLnBpZCIgIiA9IFxbMC05XF0r IiAidGVzdCBJbmZlcmlvci5waWQiCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0n LCBpMC53YXNfYXR0YWNoZWQiICIgPSBGYWxzZSIgInRlc3QgSW5mZXJpb3Iud2FzX2F0dGFjaGVk IgotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgaTAudGhyZWFkcyAoKSIgIlxcKDxnZGIuSW5mZXJp b3JUaHJlYWQgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+LFxcKSIgInRlc3QgSW5mZXJp b3IudGhyZWFkcyIKLSsKLSsjIFRlc3QgbWVtb3J5IHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMu Ci0rCi0rZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGFkZHIgPSBnZGIuc2VsZWN0ZWRf ZnJhbWUgKCkucmVhZF92YXIgKCdzdHInKSIgXAotKyAgInJlYWQgc3RyIGFkZHJlc3MiIDAKLStn ZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc3RyID0gZ2RiLmluZmVyaW9ycygpXFswXF0u cmVhZF9tZW1vcnkgKGFkZHIsIDUpIiBcCi0rICAicmVhZCBzdHIgY29udGVudHMiIDEKLStnZGJf cHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc3RyXFsxXF0gPSAnYSciICJjaGFuZ2Ugc3RyIiAw Ci0rZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGdkYi5pbmZlcmlvcnMoKVxbMFxdLndy aXRlX21lbW9yeSAoYWRkciwgc3RyKSIgXAotKyAgIndyaXRlIHN0ciIgMQotK2dkYl90ZXN0ICJw cmludCBzdHIiICIgPSAweFxbXFs6eGRpZ2l0OlxdXF0rIFwiaGFsbG8sIHRlc3RzdWl0ZVwiIiBc Ci0rICAiZW5zdXJlIHN0ciB3YXMgY2hhbmdlZCBpbiB0aGUgaW5mZXJpb3IiCisrZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhci1pbml0Il0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmFyLWluaXQiCisrZ2RiX3Rlc3QgInB0eXBlIGMiICJ0eXBlID0gY2hhcmFj dGVyKFxcKGtpbmQ9MVxcKXxcXCoxKSIKKytnZGJfdGVzdCAicHR5cGUgZCIgInR5cGUgPSBjaGFy YWN0ZXIoXFwoa2luZD04XFwpfFxcKjgpIgorK2dkYl90ZXN0ICJwdHlwZSBlIiAidHlwZSA9IGNo YXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkiCisrZ2RiX3Rlc3QgInB0eXBlIGYiICJ0eXBlID0g Y2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3LDg6MTBcXCkiCisrZ2RiX3Rlc3QgInB0 eXBlICplIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUu IgorK2dkYl90ZXN0ICJwdHlwZSAqZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxc KjQpIFxcKDdcXCkiCisrZ2RiX3Rlc3QgInAgYyIgIlxcJFxbMC05XF0qID0gJ2MnIgorK2dkYl90 ZXN0ICJwIGQiICJcXCRcWzAtOVxdKiA9ICdkICAgICAgICciCisrZ2RiX3Rlc3QgInAgZSIgIlxc JFxbMC05XF0qID0gJ2cgICAnIgorK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxc KCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdc XCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdo ICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAg JywgJ2ggICAnXFwpIFxcKSIKKytnZGJfdGVzdCAicCAqZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250 ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKKytnZGJfdGVzdCAicCAqZiIgIkF0dGVtcHQg dG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKICsKLSsjIFRlc3QgbWVt b3J5IHNlYXJjaC4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWZp bmlzaCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCisrZ2RiX3Rl c3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKKytnZGJfdGVzdCAi cCBmIiAiXFwkXFswLTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAgJywgJ2YgICAnLCAn ZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJwICpmIHJlLXNldCIK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5mOTAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi4yMjZkYzVkCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N0cmluZy5mOTAKK0BAIC0wLDAgKzEsMzcgQEAKKyshIENvcHlyaWdodCAy MDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFu IHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBi eSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZvciB0aGUg R0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t Pi4KICsKLStzZXQgaGV4X251bWJlciB7MHhbMC05YS1mQS1GXVswLTlhLWZBLUZdKn0KLStzZXQg ZGVjX251bWJlciB7WzAtOV0rfQotK3NldCBoaXN0b3J5X3ByZWZpeCB7WyRdWzAtOV0qID0gfQot K3NldCBuZXdsaW5lIHtbXHJcbl0rfQotK3NldCBwYXR0ZXJuX25vdF9mb3VuZCAiJHtuZXdsaW5l fS5dIgotK3NldCBvbmVfcGF0dGVybl9mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TF0i Ci0rc2V0IHR3b19wYXR0ZXJuc19mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TCwgJHtk ZWNfbnVtYmVyfUxdIgorK3N1YnJvdXRpbmUgZm9vIChlLCBmKQorKyAgY2hhcmFjdGVyIChsZW49 MSkgOjogYworKyAgY2hhcmFjdGVyIChsZW49OCkgOjogZAorKyAgY2hhcmFjdGVyIChsZW49Kikg OjogZQorKyAgY2hhcmFjdGVyIChsZW49KikgOjogZiAoMTo3LCA4OjEwKQorKyAgYyA9ICdjJwor KyAgZCA9ICdkJworKyAgZSA9ICdlJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFyLWluaXQKKysgIGYgPSAnZicKKysgIGYoMSw5KSA9ICdmMicKKysgIGMgPSAnYycg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhci1maW5pc2gKKytlbmQg c3Vicm91dGluZSBmb28KKysgIGNoYXJhY3RlciAobGVuPTQpIDo6IGcsIGggKDE6NywgODoxMCkK KysgIGcgPSAnZycKKysgIGggPSAnaCcKKysgIGNhbGwgZm9vIChnLCBoKQorK2VuZAorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5nZGIvc2VsZnRlc3QuZXhwCitpbmRleCA5ZTc4N2YwLi41Y2ExNWQ1IDEwMDY0NAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorQEAgLTk1LDYgKzk1LDEwIEBAIHByb2MgZG9fc3RlcHNf YW5kX25leHRzIHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHR0eWFyZyBpbml0 aWFsaXphdGlvbiIKKyAJCXNldCBjb21tYW5kICJzdGVwIgorIAkgICAgfQorKwkgICAgLXJlICIu KnB5dGhvbl9zY3JpcHQgPSAwLiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQgZGVzY3JpcHRpb24g InN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgorKwkJc2V0IGNvbW1hbmQg InN0ZXAiCisrCSAgICB9CisgCSAgICAtcmUgIi4qdGltZV9hdF9zdGFydHVwID0gZ2V0X3J1bl90 aW1lLiokZ2RiX3Byb21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBnZXRf cnVuX3RpbWUgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCisgCQlzZXQgY29tbWFuZCAibmV4dCIK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuamF2YS9qbnBlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAuLmU3MTM5MWUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv am5wZS5leHAKK0BAIC0wLDAgKzEsNzcgQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyMgVGVzdCBzdHJpbmcgcGF0dGVybi4KKysjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rZ2RiX3Rlc3QgInNldCAqKGludDMyX3QqKSAmaW50 OF9zZWFyY2hfYnVmXFsxMFxdID0gMHg2MTYxNjE2MSIgIiIgIiIKLStnZGJfdGVzdCAicHkgc2Vh cmNoX2J1ZiA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ2ludDhfc2VhcmNoX2J1 ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNz IiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAi IiAiIgorK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgc3RyYWNlICR0cmFjZWxldmVsCisrfQog KwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5 IChzdGFydF9hZGRyLCBsZW5ndGgsICdhYWEnKSIgXAotKyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5k fSIgImZpbmQgc3RyaW5nIHBhdHRlcm4iCisrbG9hZF9saWIgImphdmEuZXhwIgogKwotKyMgVGVz dCBub3QgZmluZGluZyBwYXR0ZXJuIGJlY2F1c2Ugc2VhcmNoIHJhbmdlIHRvbyBzbWFsbCwgd2l0 aAotKyMgcG90ZW50aWFsIGZpbmQgYXQgdGhlIGVkZ2Ugb2YgdGhlIHJhbmdlLgorK3NldCB0ZXN0 ZmlsZSAiam5wZSIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5qYXZhCisrc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtjb21waWxlX2phdmFfZnJv bV9zb3VyY2UgJHtzcmNkaXJ9LyRzdWJkaXIvJHtzcmNmaWxlfSAke2JpbmZpbGV9ICItZyJdICE9 ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Rpcn0vJHN1YmRp ci8ke3NyY2ZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CiArCi0rZ2RiX3Rlc3QgInB5IHByaW50 IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIDEwKzMsICdh YWFhJykiIFwKLSsgICIke3BhdHRlcm5fbm90X2ZvdW5kfSIgInBhdHRlcm4gbm90IGZvdW5kIGF0 IGVuZCBvZiByYW5nZSIKKytzZXQgcHJtc19pZCAwCisrc2V0IGJ1Z19pZCAwCiArCi0rIyBJbmNy ZWFzZSB0aGUgc2VhcmNoIHJhbmdlIGJ5IDEgYW5kIHdlIHNob3VsZCBmaW5kIHRoZSBwYXR0ZXJu LgorKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2Ri LmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTArMysxLCBcWydh JywgJ2EnLCAnYScsICdhJ1xdKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAicGF0dGVy biBmb3VuZCBhdCBlbmQgb2YgcmFuZ2UiCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0r IyBUZXN0IG1heC1jb3VudCB3aXRoIHNpemUsIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlciBwb3Np dGlvbgorK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhayBoZXJlIiAkdGVzdGZp bGUuamF2YV0KKytnZGJfdGVzdCAiYnJlYWsgJHRlc3RmaWxlLmphdmE6JGxpbmUiICIiCiArCi0r Z2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0 YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIDEsIDEpIiBcCi0rICAiJHtvbmVfcGF0 dGVybl9mb3VuZH0iICJzaXplID0gMSwgbWF4X2NvdW50ID0gMSIKKytnZGJfdGVzdCAicnVuIiBc CisrICAiLy8gYnJlYWsgaGVyZS4qIiBcCisrICAicnVuIGphdmEgbmV4dC1vdmVyLXRocm93Igog KwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5 IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbMHg2MSwgMHg2MVxdLCAxLCAyKSIgXAotKyAgIiR7dHdv X3BhdHRlcm5zX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAyLCBub3JtYWwgb3JkZXJp bmciCisrIyBTZWUgd2hldGhlciB3ZSBoYXZlIHRoZSBuZWVkZWQgdW53aW5kZXIgaG9va3MuCisr c2V0IG9rIDEKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hvb2siICJj aGVjayBmb3IgdW53aW5kZXIgaG9vayBpbiBqYXZhIiB7CisrICAgIC1yZSAiPSAuKl9VbndpbmRf RGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICJjaGVjayBmb3IgdW53aW5k ZXIgaG9vayBpbiBqYXZhIgorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9sIC4qIGluIGN1cnJl bnQgY29udGV4dC4/XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJIyBQYXNzIHRoZSB0ZXN0IHNvIHdl IGRvbid0IGdldCBib2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KKysJc2V0dXBfeGZhaWwgKi0q LSoKKysJZmFpbCAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIKKysJc2V0IG9rIDAK KysgICAgfQorK30KKytpZiB7ISRva30geworKyAgICB1bnRlc3RlZCBqbnBlLmV4cAorKyAgICBy ZXR1cm4gLTEKKyt9CiArCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxd LnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIHNpemUg PSAxLCBtYXhfY291bnQgPSAyKSIgXAotKyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5kfSIgInNpemUg PSAxLCBtYXhfY291bnQgPSAyLCBub3JtYWwgb3JkZXJpbmcsIHdpdGgga2V5d29yZHMiCisrZ2Ri X3Rlc3QgImhhbmRsZSBTSUdTRUdWIG5vc3RvcCBub3ByaW50IiBcCisrICAiU0lHU0VHVi4qZmF1 bHQiIFwKKysgICJkaXNhYmxlIFNJR1NFR1YgZm9yIG5leHQtb3Zlci1OUEUiCiArCi0rZ2RiX3Rl c3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2Fk ZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIG1heF9jb3VudCA9IDIsIHNpemUgPSAxKSIgXAot KyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAyLCBpbnZl cnRlZCBvcmRlcmluZyIKKysjIFRoZSBsaW5lIHdoZXJlIHdlIHN0b3AgZGlmZmVyIGFjY29yZGlu ZyB0byBnY2o7IGNoZWNrIGp1c3Qgd2UgZGlkIG5vdCBhbHJlYWR5CisrIyBleGVjdXRlIHRoZSBj YXRjaCBwb2ludC4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0u c2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWydhJywgJ2EnXF0sIG1heF9jb3Vu dCA9IDIpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAibWF4X2NvdW50ID0gMiwgd2l0 aCBrZXl3b3JkIgorK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiIiBcCisrICAibmV4dCBvdmVyIE5Q RSIKICsKLSsjIFRlc3QgMTYtYml0IHBhdHRlcm4uCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgImNhdGNoIHBvaW50Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi Y2F0Y2ggcG9pbnQiICIuKi8vIGNhdGNoIHBvaW50LioiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuamF2YS9qbnBlLmphdmEgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2 YQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjM1MjQ4MzAKKy0tLSAvZGV2 L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5qYXZhCitAQCAtMCwwICsx LDM4IEBACisrLy8gVGVzdCBuZXh0LW92ZXItTlBFLgorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rZ2RiX3Rlc3QgInNldCBpbnQxNl9zZWFy Y2hfYnVmXFsxMFxdID0gMHgxMjM0IiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0g Z2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50MTZfc2VhcmNoX2J1ZicpIiAiIiAi IgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgot K2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgotK2dk Yl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDE2X3QpIDB4MTIz NCcpIiAiIiAiIgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hf bWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4MTIzNCwgMikiIFwKLSsgICIke29uZV9wYXR0 ZXJuX2ZvdW5kfSIgImZpbmQgMTYtYml0IHBhdHRlcm4sIHdpdGggcHl0aG9uIHBhdHRlcm4iCisr ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2Ri LmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBwYXR0 ZXJuKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCAxNi1iaXQgcGF0dGVybiwg d2l0aCB2YWx1ZSBwYXR0ZXJuIgorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rIyBUZXN0 IDMyLWJpdCBwYXR0ZXJuLgorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICAgKi8K ICsKLStnZGJfdGVzdCAic2V0IGludDMyX3NlYXJjaF9idWZcWzEwXF0gPSAweDEyMzQ1Njc4IiAi IiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJl YWRfdmFyICgnaW50MzJfc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9h ZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBz ZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2Ri LnBhcnNlX2FuZF9ldmFsICgnKGludDMyX3QpIDB4MTIzNDU2NzgnKSIgIiIgIiIKKytwdWJsaWMg Y2xhc3Mgam5wZQorK3sKKysgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5wZSAoKQorKyAgeworKyAg ICByZXR1cm4gKChPYmplY3QpIG51bGwpLnRvU3RyaW5nKCk7CisrICB9CiArCi0rZ2RiX3Rlc3Qg InB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIs IGxlbmd0aCwgMHgxMjM0NTY3OCwgNCkiIFwKLSsgICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgImZp bmQgMzItYml0IHBhdHRlcm4sIHdpdGggcHl0aG9uIHBhdHRlcm4iCi0rZ2RiX3Rlc3QgInB5IHBy aW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0 aCwgcGF0dGVybikiIFwKLSsgICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgImZpbmQgMzItYml0IHBh dHRlcm4sIHdpdGggdmFsdWUgcGF0dGVybiIKKysgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChT dHJpbmdbXSBhcmdzKQorKyAgeworKyAgICB0cnkKKysgICAgICB7CisrCVN5c3RlbS5vdXQucHJp bnRsbiAobnBlICgpKTsgLy8gYnJlYWsgaGVyZQorKyAgICAgIH0KKysgICAgY2F0Y2ggKE51bGxQ b2ludGVyRXhjZXB0aW9uIG4pCisrICAgICAgeworKwlTeXN0ZW0ub3V0LnByaW50bG4gKCJzdWNj ZXNzIik7IC8vIGNhdGNoIHBvaW50CisrICAgICAgfQorKyAgfQorK30KK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MjlmNDU3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKK0BAIC0wLDAgKzEs MjIgQEAKKysvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr Ci0rIyBUZXN0IDY0LWJpdCBwYXR0ZXJuLgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwotK2dkYl90ZXN0ICJzZXQgaW50NjRfc2VhcmNoX2J1Zlxb MTBcXSA9IDB4ZmVkY2JhOTg3NjU0MzIxMExMIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hf YnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50NjRfc2VhcmNoX2J1Zicp IiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAi IiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAi IgotK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDY0X3Qp IDB4ZmVkY2JhOTg3NjU0MzIxMExMJykiICIiICIiCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNo X21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCAweGZlZGNiYTk4NzY1NDMyMTAsIDgpIiBcCi0r ICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDY0LWJpdCBwYXR0ZXJuLCB3aXRoIHB5dGhv biBwYXR0ZXJuIgotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFy Y2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIHBhdHRlcm4pIiBcCi0rICAiJHtvbmVfcGF0 dGVybl9mb3VuZH0iICJmaW5kIDY0LWJpdCBwYXR0ZXJuLCB3aXRoIHZhbHVlIHBhdHRlcm4iCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsjIFRlc3QgbWl4ZWQtc2l6ZWQgcGF0dGVybnMu CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rZ2RiX3Rlc3QgInNldCAq KGludDhfdCopICZzZWFyY2hfYnVmXFsxMFxdID0gMHg2MiIgIiIgIiIKLStnZGJfdGVzdCAic2V0 ICooaW50MTZfdCopICZzZWFyY2hfYnVmXFsxMVxdID0gMHg2MzYzIiAiIiAiIgotK2dkYl90ZXN0 ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWzEzXF0gPSAweDY0NjQ2NDY0IiAiIiAiIgot K2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFy ICgnc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNo X2J1ZlxbMFxdLmFkZHJlc3MiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHBhdHRlcm4xID0gZ2RiLnBh cnNlX2FuZF9ldmFsICgnKGludDhfdCkgMHg2MicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0 ZXJuMiA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhpbnQxNl90KSAweDYzNjMnKSIgIiIgIiIKLStn ZGJfdGVzdCAicHkgcGF0dGVybjMgPSBnZGIucGFyc2VfYW5kX2V2YWwgKCcoaW50MzJfdCkgMHg2 NDY0NjQ2NCcpIiAiIiAiIgorK2ludAorK2Z1bmMgKGludCAqYXJyKQorK3sKKysgIHJldHVybiBh cnJbMF07CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5j CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMzA5MGU3ZQorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwor QEAgLTAsMCArMSwyOCBAQAorKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2Vh cmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTAwLCBcW3BhdHRlcm4xLCBwYXR0ZXJuMiwgcGF0dGVy bjNcXSkiIFwKLSsgICAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCBtaXhlZC1zaXplZCBw YXR0ZXJuIgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgogKwotKyMgVGVzdCBzZWFyY2ggc3Bhbm5pbmcgYSBsYXJnZSByYW5nZSwgaW4gdGhlIHBhcnRp Y3VsYXIgY2FzZSBvZiBuYXRpdmUKLSsjIHRhcmdldHMsIHRlc3QgdGhlIHNlYXJjaCBzcGFubmlu ZyBtdWx0aXBsZSBjaHVua3MuCi0rIyBSZW1vdGUgdGFyZ2V0cyBtYXkgaW1wbGVtZW50IHRoZSBz ZWFyY2ggZGlmZmVyZW50bHkuCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLStz ZXQgQ0hVTktfU0laRSAxNjAwMCA7CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLStnZGJf dGVzdCAic2V0ICooaW50MzJfdCopICZzZWFyY2hfYnVmXFswKiR7Q0hVTktfU0laRX0rMTAwXF0g PSAweDEyMzQ1Njc4IiAiIiAiIgotK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9i dWZcWzEqJHtDSFVOS19TSVpFfSsxMDBcXSA9IDB4MTIzNDU2NzgiICIiICIiCi0rZ2RiX3Rlc3Qg InB5IHN0YXJ0X2FkZHIgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdzZWFyY2hf YnVmJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IGdkYi5zZWxlY3RlZF9mcmFtZSAo KS5yZWFkX3ZhciAoJ3NlYXJjaF9idWZfc2l6ZScpIiAiIiAiIgorKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwogKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClc WzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4MTIzNDU2NzgsIDQpIiBc Ci0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2VhcmNoIHNwYW5uaW5nIGxhcmdlIHJhbmdl IgorK2V4dGVybiBpbnQgZnVuYyAoaW50ICphcnIpOwogKwotKyMgRm9yIG5hdGl2ZSB0YXJnZXRz LCB0ZXN0IGEgcGF0dGVybiBzdHJhZGRsaW5nIGEgY2h1bmsgYm91bmRhcnkuCisraW50CisrbWFp biAodm9pZCkKKyt7CisrICBpbnQgYXJyW10gPSB7IDQyIH07CiArCi0raWYgW2lzbmF0aXZlXSB7 Ci0rICAgIGdkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWyR7Q0hVTktfU0la RX0tMVxdID0gMHhmZGI5NzUzMSIgIiIgIiIKKysgIGZ1bmMgKGFycik7CiArCi0rICAgIGdkYl90 ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9h ZGRyLCBsZW5ndGgsIDB4ZmRiOTc1MzEsIDQpIiBcCi0rICAgICAgIiR7b25lX3BhdHRlcm5fZm91 bmR9IiAiZmluZCBwYXR0ZXJuIHN0cmFkZGxpbmcgY2h1bmsgYm91bmRhcnkiCisrICByZXR1cm4g MDsKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVh ZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVhZC5jCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCiBuZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uMjJlYjlmMgoraW5kZXggMDAwMDAwMC4uZjJkZTcxOAogLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVhZC5j Ci1AQCAtMCwwICsxLDE0IEBACi0raW50IGYyIChpbnQgYSkKLSt7Ci0rICByZXR1cm4gKythOwot K30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAor QEAgLTAsMCArMSwzMyBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K KysjCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KICsKLStpbnQg ZjEgKGludCBhLCBpbnQgYikKLSt7Ci0rICByZXR1cm4gZjIoYSkgKyBiOworK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgYXJyYXktZnJvbS1yZWdpc3Rlci5leHAgImFycmF5LWZyb20tcmVnaXN0 ZXIiICAgICAgXAorKwkJCSAge2FycmF5LWZyb20tcmVnaXN0ZXIuYyBhcnJheS1mcm9tLXJlZ2lz dGVyLWZ1bmMuY30gXAorKwkJCSAge2RlYnVnIG9wdGltaXplPS1PMn1dIH0geworKyAgICByZXR1 cm4gLTEKICt9CiArCi0raW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKyAg cmV0dXJuIGYxICgxLCAyKTsKKytpZiAhW3J1bnRvIGZ1bmNdIHRoZW4geworKyAgICByZXR1cm4g LTEKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVh ZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mdGhyZWFkLmV4cAorKworK2dk Yl90ZXN0ICJwIGFyciIgIlxcJFxbMC05XF0rID0gXFwoaW50IFxcKlxcKSAqMHhcWzAtOWEtZlxd KyIKKysKKysjIFNlZW4gcmVncmVzc2lvbjoKKysjIEFkZHJlc3MgcmVxdWVzdGVkIGZvciBpZGVu dGlmaWVyICJhcnIiIHdoaWNoIGlzIGluIHJlZ2lzdGVyICRyZGkKKytnZGJfdGVzdCAicCBhcnJc WzBcXSIgIlxcJFxbMC05XF0rID0gNDIiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2ZvcnRyYW4tc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0 cmluZy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lOWQxOGI3Citp bmRleCAwMDAwMDAwLi5mOTk3ZWVjCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktaW5mdGhyZWFkLmV4cAotQEAgLTAsMCArMSw1OCBAQAotKyMgQ29weXJp Z2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cAorQEAgLTAsMCArMSw0MSBAQAorKyMg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCisrIyAKICsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIworKyMgCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIHRoZSBtZWNoYW5p c20KLSsjIGV4cG9zaW5nIGluZmVyaW9yIHRocmVhZHMgdG8gUHl0aG9uLgotKwotK2lmICR0cmFj ZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rIyBTdGFydCB3 aXRoIGEgZnJlc2ggZ2RiLgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkg VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAog KwotK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBvcnRlZCAicHl0aG9u IHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSt9CisrIyBUaGlzIGZpbGUgd2Fz IHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgog KwotK3NldCB0ZXN0ZmlsZSAicHktaW5mdGhyZWFkIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisrIyBUZXN0 IEdEQiBjYW4gY29wZSB3aXRoIEZvcnRyYW4gc3RyaW5ncyBoYXZpbmcgdGhlaXIgbGVuZ3RoIHBy ZXNlbnQgaW4gYSBDUFUKKysjIHJlZ2lzdGVyLiAgV2l0aCAtTzAgdGhlIHN0cmluZyBsZW5ndGgg aXMgcGFzc2VkIG9uIHRoZSBzdGFjay4gIFRvIG1ha2UgdGhpcworKyMgdGVzdCBtZWFuaW5nZnVs IHRoZSBmb2xsb3cgYXNzZXJ0aW9uIHNob3VsZCBwYXNzLiAgSXQgaXMgbm90IGJlaW5nIGNoZWNr ZWQKKysjIGhlcmUgYXMgdGhlICJfcyIgc3ltYm9sIGlzIGNvbXBpbGVyIGRlcGVuZGVudDoKKysj ICAgKGdkYikgaW5mbyBhZGRyZXNzIF9zCisrIyAgIFN5bWJvbCAiX3MiIGlzIGEgdmFyaWFibGUg aW4gcmVnaXN0ZXIgWFguCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7 Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisrc2V0IHRlc3Qg Zm9ydHJhbi1zdHJpbmcKKytzZXQgc3JjZmlsZSAke3Rlc3R9LmY5MAorK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0fS5leHAgJHt0ZXN0fSAke3NyY2ZpbGV9IHtkZWJ1ZyBmNzcgYWRk aXRpb25hbF9mbGFncz0tTzJ9XSB9IHsKICsgICAgcmV0dXJuIC0xCiArfQogKwotK2dkYl9sb2Fk ICR7YmluZmlsZX0KLSsKLSsjIFRoZSBmb2xsb3dpbmcgdGVzdHMgcmVxdWlyZSBleGVjdXRpb24u Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1h aW4iCi0rICAgIHJldHVybiAwCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJy b3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKICt9 CiArCi0rcnVudG8gW2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrIGhlcmUuIl0KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicyA9IHMiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJzID0gcyIKKytnZGJfdGVzdCAiZnJhbWUiICIuKnM9J2ZvbycuKiIKKytnZGJf dGVzdCAicHR5cGUgcyIgInR5cGUgPSBjaGFyYWN0ZXJcXCozIgorK2dkYl90ZXN0ICJwIHMiICJc XCRcWzAtOVxdKiA9ICdmb28nIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9m b3J0cmFuLXN0cmluZy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJhbi1zdHJpbmcu ZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTQ4ZDUyMAorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmY5MAor QEAgLTAsMCArMSwyOCBAQAorKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K KyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMu ZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJl ZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotKyMgVGVzdCBiYXNpYyBnZGIu SW5mZXJpb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9kcy4KKysgIHN1YnJvdXRpbmUgZihzKQorKyAg Y2hhcmFjdGVyKigqKSBzCisrICBzID0gcworKyAgZW5kCiArCi0rZ2RiX3B5X3Rlc3Rfc2lsZW50 X2NtZCAicHl0aG9uIHQwID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAoKSIgInRlc3QgZ2RiLnNlbGVj dGVkX3RocmVhZCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgdDAiICJcXDxnZGIuSW5mZXJp b3JUaHJlYWQgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidmVyaWZ5IEluZmVyaW9y VGhyZWFkIG9iamVjdCIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIHQwLm51 bSIgIiA9IFxbMC05XF0rIiAidGVzdCBJbmZlcmlvci5udW0iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKLWluZGV4IGI0YjM3NzYuLjM1OWM0ZWQgMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCi1AQCAtMjcsMTIg KzI3LDIwIEBAIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysg IHByb2dyYW0gbWFpbgorKyAgY2FsbCBmICgnZm9vJykKKysgIGVuZAorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWNtZC5leHAKK2luZGV4IDJhM2VkMGQuLmZmNWRlMzMgMTAwNjQ0CistLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWNtZC5leHAKK0BAIC0yMCwzNiArMjAsMTUgQEAgaWYgJHRyYWNlbGV2ZWwgdGhl biB7CisgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorIH0KKyAKKy0jIFVzYWdlOiBnZGJfcHlfdGVz dF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgorLSMgUnVuIGEg dGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0Lgor LSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJF U1VMVC4KKy0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNl LgorLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30geworLSAgICBnbG9iYWwg Z2RiX3Byb21wdAorLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdzIHsKKy0JaWYge1tn ZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7CistCSAgICAtcmUgIlxb XHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQiIHsKKy0JCXBhc3Mg IiRuYW1lIC0gJGlucHV0IgorLQkgICAgfQorLQl9XX0geworLQkgICAgcmV0dXJuIDEKKy0JfQor LSAgICB9CistICAgIHJldHVybiAwCistfQorLQogICMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4K KyAKICBnZGJfZXhpdAogIGdkYl9zdGFydAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIv JHN1YmRpcgorIAogLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hlbGxvLCB3b3Js ZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7CiAtICAgIC1yZSAibm90IHN1cHBvcnRlZC4q JGdkYl9wcm9tcHQgJCIJewogLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBk aXNhYmxlZCIKQEAgLTI3MjAyLDM0ICsxNzgyNywxNCBAQCBpbmRleCBiNGIzNzc2Li4zNTljNGVk IDEwMDY0NAogK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CiArICB1bnN1cHBvcnRlZCAi cHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCiArICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBSdW4g YSBjb21tYW5kIGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRob24gZXhjZXB0 aW9uIGlzIHRocm93bi4KLSsjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9ydCBhIHBhc3Mg aWYgbm8gZXhjZXB0aW9uIGlzIHRocm93bi4KLStwcm9jIGdkYl9weV90ZXN0X3NpbGVudF9jbWQg e2NtZCBuYW1lIHJlcG9ydF9wYXNzfSB7Ci0rICBnbG9iYWwgZ2RiX3Byb21wdAotKwotKyAgZ2Ri X3Rlc3RfbXVsdGlwbGUgJGNtZCAkbmFtZSB7Ci0rICAgICAgLXJlICJUcmFjZWJhY2suKiRnZGJf cHJvbXB0ICQiICB7IGZhaWwgJG5hbWUgfQotKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJICAg ICAgeyBpZiAkcmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQotKyAgfQotIH0KLSAKLSAjIFJ1 biBhIGNvbW1hbmQgaW4gR0RCLCBhbmQgcmVwb3J0IGEgZmFpbHVyZSBpZiBhIFB5dGhvbiBleGNl cHRpb24gaXMgdGhyb3duLgotQEAgLTEwMiw2ICsxMTAsOCBAQCBwcm9jIHJ1bl9sYW5nX3Rlc3Rz IHtsYW5nfSB7Ci0gCi0gICAgIGdkYl90ZXN0ICJwcmludCBjIiAiID0gY29udGFpbmVyICRoZXgg XCJjb250YWluZXJcIiB3aXRoIDIgZWxlbWVudHMgPSB7JG5sICouMC4gPSAyMywkbmwgKi4xLiA9 IDcyJG5sfSIKLSAKLSsgICAgZ2RiX3Rlc3QgInByaW50IG51bGxzdHIiICJSdW50aW1lRXJyb3I6 IEVycm9yIHJlYWRpbmcgc3RyaW5nIGZyb20gaW5mZXJpb3IuKiIKLSsKLSAgICAgZ2RiX3Rlc3Qg ImNvbnRpbnVlIiAiUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHlcLiIKICB9CiAgCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXRlbXBsYXRlLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5leHAKLWluZGV4IGNlYTZhZTAuLmM5YTYzZDQgMTAw NjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwCi1AQCAtMjAsNiArMjAs MTcgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7CisgIyBUZXN0IGEgc2ltcGxlIGNvbW1hbmQuCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKK2luZGV4IDg2ZmU2NjAuLjRjNzI5NWYg MTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCitAQCAtMjAsNDAgKzIwLDI4 IEBAIGlmICR0cmFjZWxldmVsIHRoZW4gewogICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKICB9CiAg CkBAIC0yNzI0NCwyMCArMTc4NDksMzQgQEAgaW5kZXggY2VhNmFlMC4uYzlhNjNkNCAxMDA2NDQK ICsgIHJldHVybiAtMQogK30KICsKLSBzZXQgdGVzdGZpbGUgInB5LXRlbXBsYXRlIgotIHNldCBz cmNmaWxlICR7dGVzdGZpbGV9LmNjCisgc2V0IHRlc3RmaWxlICJweS1mcmFtZSIKKyBzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfQotQEAgLTI5LDIwICs0MCw2IEBAIGlmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFwKKysKKyBpZiB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKyAgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQogIAorLSMgUnVuIGEgY29t bWFuZCBpbiBHREIsIGFuZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBp cyB0aHJvd24uCistIyBJZiByZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5v IGV4Y2VwdGlvbiBpcyB0aHJvd24uCistcHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHtjbWQg bmFtZSByZXBvcnRfcGFzc30geworLSAgZ2xvYmFsIGdkYl9wcm9tcHQKKy0KKy0gIGdkYl90ZXN0 X211bHRpcGxlICRjbWQgJG5hbWUgeworLSAgICAgIC1yZSAiVHJhY2ViYWNrLiokZ2RiX3Byb21w dCAkIiAgeyBmYWlsICRuYW1lIH0KKy0gICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCSAgICAgIHsg aWYgJHJlcG9ydF9wYXNzIHsgcGFzcyAkbmFtZSB9IH0KKy0gIH0KKy19CistCiAtIyBTdGFydCB3 aXRoIGEgZnJlc2ggZ2RiLgogLQogLWdkYl9leGl0CiAtZ2RiX3N0YXJ0CiAtZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0tCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBw cmludCAyMyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgeworIGdkYl9sb2FkICR7YmluZmlsZX0K KyAKKy1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywgd29ybGQhJyIgInZl cmlmeSBweXRob24gc3VwcG9ydCIgewogLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJv bXB0ICQiCXsKIC0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQi CiAtICAgICAgcmV0dXJuIC0xCkBAIC0yNzI2NSw4NCArMTc4ODQsNTAgQEAgaW5kZXggY2VhNmFl MC4uYzlhNjNkNCAxMDA2NDQKIC0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQogLX0KIC0KLSBw cm9jIHRlc3RfdGVtcGxhdGVfYXJnIHt0eXBlfSB7Ci0gICAgIGdsb2JhbCB0ZXN0ZmlsZSBzcmNk aXIgc3ViZGlyIHNyY2ZpbGUgYmluZmlsZQotICAgICBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktdmFsdWUuZXhwCi1pbmRleCAyOTU4MjMzLi4wZGUxY2FlIDEwMDY0NAotLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotQEAgLTI5Miw2ICsyOTIsMTUgQEAgcHJvYyB0ZXN0 X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKLSAgICAgInByaW50IHZhbHVlJ3MgdHlwZSIKLSB9Ci0g Ci0rIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGEgY2FzdCBmYWlsdXJlLiAgVGhlIGJ1ZyB3YXMgdGhh dCBpZiB3ZSBjYXN0IGEKLSsjIHZhbHVlIHRvIGl0cyBvd24gdHlwZSwgZ2RiIGNvdWxkIGNyYXNo LiAgVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdlCi0rIyBjb3VsZCBlbmQgdXAgZG91YmxlLWZyZWVp bmcgYSBzdHJ1Y3QgdmFsdWUuCi0rcHJvYyB0ZXN0X2Nhc3RfcmVncmVzc2lvbiB7fSB7Ci0rICBn ZGJfdGVzdCAicHl0aG9uIHYgPSBnZGIuVmFsdWUoNSkiICIiICJjcmVhdGUgdmFsdWUgZm9yIGNh c3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gdiA9IHYuY2FzdCh2LnR5cGUpIiAiIiAiY2Fz dCB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgotKyAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCB2IiAiNSIg InByaW50IHZhbHVlIGZvciBjYXN0IHRlc3QiCi0rfQotKwotICMgUmVncmVzc2lvbiB0ZXN0IGZv ciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAotICMgdGhl IHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcg YQotICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0byBwcm9jZWVkLgotQEAgLTM2NiwxNiArMzc1LDIz IEBAIHByb2MgdGVzdF9zdWJzY3JpcHRfcmVncmVzc2lvbiB7bGFuZ30gewotIGdkYl9leGl0Ci0g Z2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0tZ2RiX2xv YWQgJHtiaW5maWxlfQorICMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1aXJlIGV4ZWN1dGlvbi4K ICAKLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywgd29ybGQhJyIgInZl cmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJv bXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQi Ci0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQot K2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1 cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSB9CisgaWYgIVtydW50b19tYWluXSB0 aGVuIHsKK0BAIC02NSwxOSArNTMsMjAgQEAgZ2RiX2JyZWFrcG9pbnQgImYyIgorIGdkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJicmVha3BvaW50IGF0IGYyIgorIGdkYl90ZXN0ICJ1cCIgIiIg IiIKICAKLStzZXQgdGVzdGZpbGUgInB5LXZhbHVlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfbG9hZCAk e2JpbmZpbGV9Ci0rCi0gdGVzdF92YWx1ZV9jcmVhdGlvbgotIHRlc3RfdmFsdWVfbnVtZXJpY19v cHMKLSB0ZXN0X3ZhbHVlX2Jvb2xlYW4KLUBAIC0zOTEsNiArNDA3LDcgQEAgaWYgIVtydW50b19t YWluXSB0aGVuIHsKKy1nZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjEgPSBnZGIuc2Vs ZWN0ZWRfZnJhbWUgKCkiICJnZXQgc2Vjb25kIGZyYW1lIiAwCistZ2RiX3B5X3Rlc3Rfc2lsZW50 X2NtZCAicHl0aG9uIGYwID0gZjEubmV3ZXIgKCkiICJnZXQgZmlyc3QgZnJhbWUiIDAKKytnZGJf cHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZnJhbWVzID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAo KS5mcmFtZXMgKCkiICJnZXQgZnJhbWVzIGxpc3QiIDEKKytnZGJfdGVzdCAicHl0aG9uIHByaW50 IGZyYW1lcyIgIlxcKDxnZGIuRnJhbWUgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+LCA8 Z2RiLkZyYW1lIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiwgPGdkYi5GcmFtZSBvYmpl Y3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz5cXCkiICJ2ZXJpZnkgZnJhbWVzIGxpc3QiCisrZ2Ri X3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGYwID0gZnJhbWVzXFswXF0iICJnZXQgZmlyc3Qg ZnJhbWUiIDAKKytnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjEgPSBmcmFtZXNcWzFc XSIgImdldCBzZWNvbmQgZnJhbWUiIDAKICAKLSB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCi0gdGVz dF92YWx1ZV9hZnRlcl9kZWF0aAotK3Rlc3RfY2FzdF9yZWdyZXNzaW9uCisgZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBmMSIgIiA9IEZhbHNlIiAidGVzdCBlcXVhbGl0 eSBjb21wYXJpc29uIChmYWxzZSkiCisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0n LCBmMCA9PSBmMCIgIiA9IFRydWUiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgor LWdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjEiICIgPSBUcnVlIiAi dGVzdCBpbmVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgorLWdkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjAiICIgPSBGYWxzZSIgInRlc3QgaW5lcXVhbGl0eSBjb21w YXJpc29uIChmYWxzZSkiCisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5p c192YWxpZCAoKSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLmlzX3ZhbGlkIgorIGdkYl90ZXN0ICJw eXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAubmFtZSAoKSIgIiA9IGYyIiAidGVzdCBGcmFtZS5u YW1lIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAudHlwZSAoKSA9PSBn ZGIuTk9STUFMX0ZSQU1FIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUudHlwZSIKKyBnZGJfdGVzdCAi cHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnVud2luZF9zdG9wX3JlYXNvbiAoKSA9PSBnZGIu RlJBTUVfVU5XSU5EX05PX1JFQVNPTiIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUiCisgZ2Ri X3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBnZGIuZnJhbWVfc3RvcF9yZWFzb25fc3Ry aW5nIChnZGIuRlJBTUVfVU5XSU5EX0lOTkVSX0lEKSIgIiA9IHByZXZpb3VzIGZyYW1lIGlubmVy IHRvIHRoaXMgZnJhbWUgXFwoY29ycnVwdCBzdGFja1xcP1xcKSIgInRlc3QgZ2RiLmZyYW1lX3N0 b3BfcmVhc29uX3N0cmluZyIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw LnBjICgpIiAiID0gXFswLTlcXSsiICJ0ZXN0IEZyYW1lLnBjIgorK2dkYl90ZXN0ICJweXRob24g cHJpbnQgJ3Jlc3VsdCA9JywgZjAuZnVuY3Rpb24gKCkiICIgPSBzeW1ib2wgZm9yIGYyIiAidGVz dCBGcmFtZS5mdW5jdGlvbiIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw Lm9sZGVyICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUub2xkZXIiCisgZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMS5uZXdlciAoKSA9PSBmMCIgIiA9IFRydWUiICJ0 ZXN0IEZyYW1lLm5ld2VyIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAu cmVhZF92YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4aXN0JykiIFwKK0BAIC04 NSw0ICs3NCw3IEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAucmVhZF92 YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4CisgICAidGVzdCBGcmFtZS5yZWFk X3ZhciAtIGVycm9yIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAucmVh ZF92YXIgKCdhJykiICIgPSAxIiAidGVzdCBGcmFtZS5yZWFkX3ZhciAtIHN1Y2Nlc3MiCiAgCi0g IyBUaGUgZm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRvIHRlc3QgZWl0aGVy IEMgb3IgQysrCi0gIyB2YWx1ZXMuIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weXRob24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5leHAKLWlu ZGV4IDUyMjNmYzguLjAzZTFlYWIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHl0aG9uLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5leHAK LUBAIC0yNiwzMCArMjYsOSBAQCBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdkYl9yZWluaXRpYWxp emVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUgKCkgPT0gZjAiICIgPSBUcnVl IiAidGVzdCBnZGIubmV3ZXN0X2ZyYW1lIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3Vs dCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNl bGVjdGVkX2ZyYW1lIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAu YmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRl c3QgRnJhbWUuYmxvY2siCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZ1bmN0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mdW5jdGlvbi5leHAK K2luZGV4IDQ2MTI5NWQuLmVhMzM1OTYgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZnVuY3Rpb24uZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt ZnVuY3Rpb24uZXhwCitAQCAtMjAsMzYgKzIwLDE1IEBAIGlmICR0cmFjZWxldmVsIHRoZW4gewor ICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyB9CiAgCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhv biBwcmludCAyMyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAtcmUgIm5vdCBzdXBw b3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBv cnQgaXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0gICAgLXJlICIkZ2Ri X3Byb21wdCAkIgl7fQotLX0KLS0KIC0jIFVzYWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1F IElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgogLSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1F LCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgogLSMgQWZ0ZXIgZWFjaCBp bnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VMVC4KQEAgLTI3MzU5 LDQyNiArMTc5NDQsMzE1IEBAIGluZGV4IDUyMjNmYzguLjAzZTFlYWIgMTAwNjQ0CiAtCX0KIC0g ICAgfQogLSAgICByZXR1cm4gMAorLX0KKy0KKyAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCisg CisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKyAKKy1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywgd29ybGQh JyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgeworLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRn ZGJfcHJvbXB0ICQiCXsKKy0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlz YWJsZWQiCistICAgICAgcmV0dXJuIC0xCistICAgIH0KKy0gICAgLXJlICIkZ2RiX3Byb21wdCAk Igl7fQogK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CiArICB1bnN1cHBvcnRlZCAicHl0 aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCiArICByZXR1cm4gLTEKICB9CiAgCi0gZ2RiX3B5X3Rl c3RfbXVsdGlwbGUgIm11bHRpLWxpbmUgcHl0aG9uIGNvbW1hbmQiIFwKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKKyBnZGJfcHlf dGVzdF9tdWx0aXBsZSAiaW5wdXQgY29udmVuaWVuY2UgZnVuY3Rpb24iIFwKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1pbmZlcmlvci5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uNGRjMzA4YgoraW5kZXggMDAwMDAwMC4uMGI0ODI5OQogLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCi1A QCAtMCwwICsxLDE3NSBAQAotKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9p bnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgotKwotKyAgIENvcHlyaWdodCAyMDA4 LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gICovCi0rCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktaW5mZXJpb3IuYworQEAgLTAsMCArMSw0OSBAQAorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNp bmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CiArI2luY2x1ZGUgPHN0cmlu Zy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgogKwotK3N0YXRpYyB2b2lkCi0rZGVsYXkgKHZvaWQp Ci0rewotKyAgaW50IGkgPSB1c2xlZXAgKDEwMDAwMDAgLyAxMDApOwotKyAgYXNzZXJ0IChpID09 IDAgfHwgZXJybm8gPT0gRUlOVFIpOwotK30KKysjZGVmaW5lIENIVU5LX1NJWkUgMTYwMDAgLyog c2FtZSBhcyBmaW5kY21kLmMncyAqLworKyNkZWZpbmUgQlVGX1NJWkUgKDIgKiBDSFVOS19TSVpF KSAvKiBhdCBsZWFzdCB0d28gY2h1bmtzICovCiArCi0rI2lmIGRlZmluZWQgRk9MTE9XX1BBUkVO VAorK3N0YXRpYyBpbnQ4X3QgaW50OF9zZWFyY2hfYnVmWzEwMF07Cisrc3RhdGljIGludDE2X3Qg aW50MTZfc2VhcmNoX2J1ZlsxMDBdOworK3N0YXRpYyBpbnQzMl90IGludDMyX3NlYXJjaF9idWZb MTAwXTsKKytzdGF0aWMgaW50NjRfdCBpbnQ2NF9zZWFyY2hfYnVmWzEwMF07CiArCi0rc3RhdGlj IHZvaWQKLStmb3Jrb2ZmIChpbnQgbnIpCi0rewotKyAgcGlkX3QgY2hpbGQsIHBpZF9nb3Q7Ci0r ICBpbnQgZXhpdF9jb2RlID0gNDIgKyBucjsKLSsgIGludCBzdGF0dXMsIGk7Cisrc3RhdGljIGNo YXIgKnNlYXJjaF9idWY7Cisrc3RhdGljIGludCBzZWFyY2hfYnVmX3NpemU7CiArCi0rICBjaGls ZCA9IGZvcmsgKCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQotKyAgICB7Ci0rICAgIGNhc2UgLTE6Ci0r ICAgICAgYXNzZXJ0ICgwKTsKLSsgICAgY2FzZSAwOgotKyAgICAgIHByaW50ZiAoImNoaWxkJWQ6 ICVkXG4iLCBuciwgKGludCkgZ2V0cGlkICgpKTsKLSsgICAgICAvKiBEZWxheSB0byBnZXQgYm90 aCB0aGUgImNoaWxkJWQiIGFuZCAicGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRlZCB3aXRob3V0Ci0r CSBhIHJhY2UgYnJlYWtpbmcgZXhwZWN0IGJ5IGl0cyBlbmRsZXNzIHdhaXQgb24gYCRnZGJfcHJv bXB0JCc6Ci0rCSBCcmVha3BvaW50IDMsIGJyZWFrcG9pbnQgKCkgYXQgLi4vLi4vLi4vZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYzozMwotKwkgMzMgICAgICB9Ci0r CSAoZ2RiKSBwYXJlbnQyOiAxNDIyMyAgKi8KLSsgICAgICBpID0gc2xlZXAgKDEpOwotKyAgICAg IGFzc2VydCAoaSA9PSAwKTsKKytzdGF0aWMgaW50IHg7CiArCi0rICAgICAgLyogV2UgbXVzdCBu b3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8K LSsgICAgICB2YXIrKzsKLSsgICAgICBicmVha3BvaW50ICgpOwogKwotKyAgICAgIF9leGl0IChl eGl0X2NvZGUpOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHByaW50ZiAoInBhcmVudCVkOiAlZFxu IiwgbnIsIChpbnQpIGNoaWxkKTsKLSsgICAgICAvKiBEZWxheSB0byBnZXQgYm90aCB0aGUgImNo aWxkJWQiIGFuZCAicGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRlZCwgc2VlCi0rCSBhYm92ZS4gICov Ci0rICAgICAgaSA9IHNsZWVwICgxKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7CisraW50IGYy IChpbnQgYSkKKyt7CisrICBjaGFyICpzdHIgPSAiaGVsbG8sIHRlc3RzdWl0ZSI7CiArCi0rICAg ICAgcGlkX2dvdCA9IHdhaXQgKCZzdGF0dXMpOwotKyAgICAgIGFzc2VydCAocGlkX2dvdCA9PSBj aGlsZCk7Ci0rICAgICAgYXNzZXJ0IChXSUZFWElURUQgKHN0YXR1cykpOwotKyAgICAgIGFzc2Vy dCAoV0VYSVRTVEFUVVMgKHN0YXR1cykgPT0gZXhpdF9jb2RlKTsKKysgIHB1dHMgKHN0cik7CS8q IEJyZWFrIGhlcmUuICAqLwogKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChh Z2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCi0rICAgICAgYnJlYWtwb2lu dCAoKTsKLSsgICAgfQorKyAgcmV0dXJuICsrYTsKICt9CiArCi0rI2VsaWYgZGVmaW5lZCBGT0xM T1dfQ0hJTEQKLSsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHVzcjFfZ290OwotKwotK3N0YXRpYyB2 b2lkCi0raGFuZGxlcl91c3IxIChpbnQgc2lnbm8pCisraW50IGYxIChpbnQgYSwgaW50IGIpCiAr ewotKyAgdXNyMV9nb3QrKzsKKysgIHJldHVybiBmMihhKSArIGI7CiArfQogKwogK3N0YXRpYyB2 b2lkCi0rZm9ya29mZiAoaW50IG5yKQorK2luaXRfYnVmcyAoKQogK3sKLSsgIHBpZF90IGNoaWxk OwotKyAgaW50IGksIGxvb3A7Ci0rICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdCwgb2xkYWN0OwotKyNp ZmRlZiBUSFJFQUQKLSsgIHZvaWQgKnRocmVhZF9yZXN1bHQ7Ci0rI2VuZGlmCi0rCi0rICBtZW1z ZXQgKCZhY3QsIDAsIHNpemVvZiBhY3QpOwotKyAgYWN0LnNhX2ZsYWdzID0gU0FfUkVTVEFSVDsK LSsgIGFjdC5zYV9oYW5kbGVyID0gaGFuZGxlcl91c3IxOwotKyAgc2lnZW1wdHlzZXQgKCZhY3Qu c2FfbWFzayk7Ci0rICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCAmb2xkYWN0KTsKLSsg IGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGNoaWxkID0gZm9yayAoKTsKLSsgIHN3aXRjaCAoY2hp bGQpCi0rICAgIHsKLSsgICAgY2FzZSAtMToKLSsgICAgICBhc3NlcnQgKDApOwotKyAgICBkZWZh dWx0OgotKyAgICAgIHByaW50ZiAoInBhcmVudCVkOiAlZFxuIiwgbnIsIChpbnQpIGNoaWxkKTsK LSsKLSsgICAgICAvKiBTbGVlcCBmb3IgYSB3aGlsZSB0byBwb3NzaWJseSBnZXQgaW5jb3JyZWN0 bHkgQVRUQUNIX1RIUkVBRGVkIGJ5IEdEQgotKwkgdHJhY2luZyB0aGUgY2hpbGQgZm9yayB3aXRo IG5vIGxvbmdlciB2YWxpZCB0aHJlYWQvbHdwIGVudHJpZXMgb2YgdGhlCi0rCSBwYXJlbnQuICAq LwotKwotKyAgICAgIGkgPSBzbGVlcCAoMik7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKwot KyAgICAgIC8qIFdlIG11c3Qgbm90IGdldCBjYXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZvcmdvdHRl biBicmVha3BvaW50KS4gICovCi0rCi0rICAgICAgdmFyKys7Ci0rICAgICAgYnJlYWtwb2ludCAo KTsKLSsKLSsjaWZkZWYgVEhSRUFECi0rICAgICAgLyogQW5kIG5laXRoZXIgZ290IGNhdWdodCBv dXIgdGhyZWFkLiAgKi8KKysgIHNlYXJjaF9idWZfc2l6ZSA9IEJVRl9TSVpFOworKyAgc2VhcmNo X2J1ZiA9IG1hbGxvYyAoc2VhcmNoX2J1Zl9zaXplKTsKKysgIGlmIChzZWFyY2hfYnVmID09IE5V TEwpCisrICAgIGV4aXQgKDEpOworKyAgbWVtc2V0IChzZWFyY2hfYnVmLCAneCcsIHNlYXJjaF9i dWZfc2l6ZSk7CisrfQogKwotKyAgICAgIHN0ZXAgPSA5OTsKLSsgICAgICBpID0gcHRocmVhZF9q b2luICh0aHJlYWQsICZ0aHJlYWRfcmVzdWx0KTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0r ICAgICAgYXNzZXJ0ICh0aHJlYWRfcmVzdWx0ID09ICh2b2lkICopIDk5VUwpOwotKyNlbmRpZgor K2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKysgIGluaXRfYnVmcyAoKTsK ICsKLSsgICAgICAvKiBCZSBzdXJlIG91ciBjaGlsZCBrbm93cyB3ZSBkaWQgbm90IGdldCBjYXVn aHQgYWJvdmUuICAqLworKyAgcmV0dXJuIGYxICgxLCAyKTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9yLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1pbmZlcmlvci5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi43MTliMTc4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktaW5mZXJpb3IuZXhwCitAQCAtMCwwICsxLDIwMSBAQAorKyMgQ29weXJpZ2h0IChDKSAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgICAgIGkgPSBraWxsIChj aGlsZCwgU0lHVVNSMSk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOworKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KICsKLSsgICAgICAvKiBTbGVlcCBmb3IgYSB3aGlsZSB0byBjaGVjayBH REIncyBgaW5mbyB0aHJlYWRzJyBubyBsb25nZXIgdHJhY2tzIHVzIGluCi0rCSB0aGUgY2hpbGQg Zm9yay4gICovCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0 IHRlc3RzIHRoZSBtZWNoYW5pc20KKysjIGV4cG9zaW5nIGluZmVyaW9ycyB0byBQeXRob24uCiAr Ci0rICAgICAgaSA9IHNsZWVwICgyKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7CisraWYgJHRy YWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KICsKLSsgICAgICBf ZXhpdCAoMCk7Ci0rICAgIGNhc2UgMDoKLSsgICAgICBwcmludGYgKCJjaGlsZCVkOiAlZFxuIiwg bnIsIChpbnQpIGdldHBpZCAoKSk7CisrIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgogKwotKyAg ICAgIC8qIExldCB0aGUgcGFyZW50IHNpZ25hbCB1cyBhYm91dCBpdHMgc3VjY2Vzcy4gIEJlIGNh cmVmdWwgb2YgcmFjZXMuICAqLworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCiArCi0rICAgICAgZm9yIChsb29wID0gMDsgbG9vcCA8 IDEwMDA7IGxvb3ArKykKLSsJewotKwkgIC8qIFBhcmVudCBlaXRoZXIgZGllZCAoYW5kIFVTUjFf R09UIGlzIHplcm8pIG9yIGl0IHN1Y2NlZWRlZC4gICovCi0rCSAgaWYgKGtpbGwgKGdldHBwaWQg KCksIDApICE9IDApCi0rCSAgICBicmVhazsKLSsJICAvKiBQYXJlbnQgc3VjY2VlZGVkPyAgKi8K LSsJICBpZiAodXNyMV9nb3QpCi0rCSAgICBicmVhazsKKytpZiAhW3B5dGhvbl9zdXBwb3J0ZWRd IHRoZW4geworKyAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgorKyAg cmV0dXJuIC0xCisrfQogKwotKwkgIGRlbGF5ICgpOwotKwl9Ci0rICAgICAgYXNzZXJ0ICh1c3Ix X2dvdCk7Cisrc2V0IHRlc3RmaWxlICJweS1pbmZlcmlvciIKKytzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQogKwot KyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hw b2ludCByZW1vdmFsKS4gICovCisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7 CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisrICAgIHJldHVy biAtMQorK30KICsKLSsgICAgICBicmVha3BvaW50ICgpOwotKyAgICB9CisrZ2RiX2xvYWQgJHti aW5maWxlfQogKwotKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwgJm9sZGFjdCwgTlVMTCk7Ci0r ICBhc3NlcnQgKGkgPT0gMCk7CisrIyBUaGUgZm9sbG93aW5nIHRlc3RzIHJlcXVpcmUgZXhlY3V0 aW9uLgorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIGZhaWwgIkNhbid0IHJ1biB0 byBtYWluIgorKyAgICByZXR1cm4gMAogK30KICsKLSsjZWxzZQotKyMgZXJyb3IgIiFGT0xMT1df UEFSRU5UICYmICFGT0xMT1dfQ0hJTEQiCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi5lZGFjZmMwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCi1AQCAtMCwwICsxLDE1NyBAQAotKy8qIFRl c3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2Yg YSBwcm9jZXNzLgorK3J1bnRvIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCcmVhayBoZXJlLiJdCiAr Ci0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrIyBUZXN0IGJhc2ljIGdkYi5JbmZlcmlvciBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzLgogKwot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKytnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJw eXRob24gaW5mZXJpb3JzID0gZ2RiLmluZmVyaW9ycyAoKSIgImdldCBpbmZlcmlvcnMgbGlzdCIg MQorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgaW5mZXJpb3JzIiAiXFwoPGdkYi5JbmZlcmlvciBv YmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sXFwpIiAidmVyaWZ5IGluZmVyaW9ycyBsaXN0 IgorK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBpMCA9IGluZmVyaW9yc1xbMFxdIiAi Z2V0IGZpcnN0IGluZmVyaW9yIiAwCiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KytnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwID09IGluZmVyaW9yc1xbMFxd IiAiID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSkiCisrZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBpMC5udW0iICIgPSBcWzAtOVxdKyIgInRlc3QgSW5m ZXJpb3IubnVtIgorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgaTAucGlkIiAi ID0gXFswLTlcXSsiICJ0ZXN0IEluZmVyaW9yLnBpZCIKKytnZGJfdGVzdCAicHl0aG9uIHByaW50 ICdyZXN1bHQgPScsIGkwLndhc19hdHRhY2hlZCIgIiA9IEZhbHNlIiAidGVzdCBJbmZlcmlvci53 YXNfYXR0YWNoZWQiCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBpMC50aHJlYWRzICgpIiAiXFwo PGdkYi5JbmZlcmlvclRocmVhZCBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sXFwpIiAi dGVzdCBJbmZlcmlvci50aHJlYWRzIgogKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyBU ZXN0IG1lbW9yeSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLgogKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs Ci0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworK2dkYl9weV90ZXN0X3NpbGVu dF9jbWQgInB5dGhvbiBhZGRyID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnc3Ry JykiIFwKKysgICJyZWFkIHN0ciBhZGRyZXNzIiAwCisrZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAi cHl0aG9uIHN0ciA9IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnJlYWRfbWVtb3J5IChhZGRyLCA1KSIg XAorKyAgInJlYWQgc3RyIGNvbnRlbnRzIiAxCisrZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0 aG9uIHN0clxbMVxdID0gJ2EnIiAiY2hhbmdlIHN0ciIgMAorK2dkYl9weV90ZXN0X3NpbGVudF9j bWQgInB5dGhvbiBnZGIuaW5mZXJpb3JzKClcWzBcXS53cml0ZV9tZW1vcnkgKGFkZHIsIHN0ciki IFwKKysgICJ3cml0ZSBzdHIiIDEKKytnZGJfdGVzdCAicHJpbnQgc3RyIiAiID0gMHhcW1xbOnhk aWdpdDpcXVxdKyBcImhhbGxvLCB0ZXN0c3VpdGVcIiIgXAorKyAgImVuc3VyZSBzdHIgd2FzIGNo YW5nZWQgaW4gdGhlIGluZmVyaW9yIgogKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVk ZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+ Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisrIyBUZXN0IG1l bW9yeSBzZWFyY2guCiArCi0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsjaW5jbHVkZSA8dW5p c3RkLmg+Ci0rI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dldHRpZCkKKytzZXQgaGV4 X251bWJlciB7MHhbMC05YS1mQS1GXVswLTlhLWZBLUZdKn0KKytzZXQgZGVjX251bWJlciB7WzAt OV0rfQorK3NldCBoaXN0b3J5X3ByZWZpeCB7WyRdWzAtOV0qID0gfQorK3NldCBuZXdsaW5lIHtb XHJcbl0rfQorK3NldCBwYXR0ZXJuX25vdF9mb3VuZCAiJHtuZXdsaW5lfS5dIgorK3NldCBvbmVf cGF0dGVybl9mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TF0iCisrc2V0IHR3b19wYXR0 ZXJuc19mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TCwgJHtkZWNfbnVtYmVyfUxdIgog KwotKy8qIE5vbi1hdG9taWMgYHZhcisrJyBzaG91bGQgbm90IGh1cnQgYXMgd2Ugc3luY2hyb25p emUgdGhlIHRocmVhZHMgYnkgdGhlIFNURVAKLSsgICB2YXJpYWJsZS4gIEhpdC1jb21tZW50cyBu ZWVkIHRvIGJlIGR1cGxpY2l0ZSB0aGVyZSB0byBjYXRjaCBib3RoIGF0LXN0b3BzCi0rICAgYW5k IGJlaGluZC1zdG9wcywgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQuICAqLworKyMgVGVzdCBzdHJp bmcgcGF0dGVybi4KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKKytnZGJfdGVzdCAic2V0 ICooaW50MzJfdCopICZpbnQ4X3NlYXJjaF9idWZcWzEwXF0gPSAweDYxNjE2MTYxIiAiIiAiIgor K2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFy ICgnaW50OF9zZWFyY2hfYnVmJykiICIiICIiCisrZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBz ZWFyY2hfYnVmLmFkZHJlc3MiICIiICIiCisrZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IHNlYXJjaF9i dWYudHlwZS5zaXplb2YiICIiICIiCiArCi0rc3RhdGljIHZvaWQKLStkdW1teSAodm9pZCkKLSt7 Ci0rfQorK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVt b3J5IChzdGFydF9hZGRyLCBsZW5ndGgsICdhYWEnKSIgXAorKyAgIiR7dHdvX3BhdHRlcm5zX2Zv dW5kfSIgImZpbmQgc3RyaW5nIHBhdHRlcm4iCiArCi0rc3RhdGljIHZvaWQKLSticmVha3BvaW50 ICh2b2lkKQotK3sKLSt9CisrIyBUZXN0IG5vdCBmaW5kaW5nIHBhdHRlcm4gYmVjYXVzZSBzZWFy Y2ggcmFuZ2UgdG9vIHNtYWxsLCB3aXRoCisrIyBwb3RlbnRpYWwgZmluZCBhdCB0aGUgZWRnZSBv ZiB0aGUgcmFuZ2UuCiArCi0rLyogSW5jbHVkZSBoZXJlIHRoZSBmdW5jdGlvbnM6Ci0rICAgc3Rh dGljIHZvaWQgZm9ya29mZiAoaW50IG5yKTsKLSsgICBzdGF0aWMgdm9pZCBkZWxheSAodm9pZCk7 ICAqLworK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVt b3J5IChzdGFydF9hZGRyLCAxMCszLCAnYWFhYScpIiBcCisrICAiJHtwYXR0ZXJuX25vdF9mb3Vu ZH0iICJwYXR0ZXJuIG5vdCBmb3VuZCBhdCBlbmQgb2YgcmFuZ2UiCiArCi0rc3RhdGljIHB0aHJl YWRfdCB0aHJlYWQ7Ci0rc3RhdGljIHZvbGF0aWxlIGludCBzdGVwOwotKyNkZWZpbmUgVEhSRUFE CisrIyBJbmNyZWFzZSB0aGUgc2VhcmNoIHJhbmdlIGJ5IDEgYW5kIHdlIHNob3VsZCBmaW5kIHRo ZSBwYXR0ZXJuLgogKwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmstZm9ya29mZi5jIgorK2dk Yl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFy dF9hZGRyLCAxMCszKzEsIFxbJ2EnLCAnYScsICdhJywgJ2EnXF0pIiBcCisrICAiJHtvbmVfcGF0 dGVybl9mb3VuZH0iICJwYXR0ZXJuIGZvdW5kIGF0IGVuZCBvZiByYW5nZSIKICsKLStzdGF0aWMg dm9pZCAqCi0rc3RhcnQgKHZvaWQgKmFyZykKLSt7Ci0rICBpZiAoc3RlcCA+PSAzKQotKyAgICBn b3RvIHN0ZXBfMzsKKysjIFRlc3QgbWF4LWNvdW50IHdpdGggc2l6ZSwgd2l0aCBkaWZmZXJlbnQg cGFyYW1ldGVyIHBvc2l0aW9uCiArCi0rICB3aGlsZSAoc3RlcCAhPSAxKQotKyAgICBkZWxheSAo KTsKKytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9y eSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgMSwgMSkiIFwKKysgICIke29u ZV9wYXR0ZXJuX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAxIgogKwotKyAgdmFyKys7 CS8qIHZhbGlkaXR5LXRocmVhZC1CICovCi0rICBkdW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFk LUIgKi8KLSsgIHN0ZXAgPSAyOwotKyAgd2hpbGUgKHN0ZXAgIT0gMykKLSsgICAgewotKyAgICAg IGlmIChzdGVwID09IDk5KQotKwlnb3RvIHN0ZXBfOTk7Ci0rICAgICAgZGVsYXkgKCk7Ci0rICAg IH0KKytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9y eSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgMSwgMikiIFwKKysgICIke3R3 b19wYXR0ZXJuc19mb3VuZH0iICJzaXplID0gMSwgbWF4X2NvdW50ID0gMiwgbm9ybWFsIG9yZGVy aW5nIgogKwotK3N0ZXBfMzoKLSsgIGlmIChzdGVwID49IDUpCi0rICAgIGdvdG8gc3RlcF81Owor K2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChz dGFydF9hZGRyLCBsZW5ndGgsIFxbMHg2MSwgMHg2MVxdLCBzaXplID0gMSwgbWF4X2NvdW50ID0g MikiIFwKKysgICIke3R3b19wYXR0ZXJuc19mb3VuZH0iICJzaXplID0gMSwgbWF4X2NvdW50ID0g Miwgbm9ybWFsIG9yZGVyaW5nLCB3aXRoIGtleXdvcmRzIgogKwotKyAgdmFyKys7CS8qIGFmdGVy LWZvcmsxLUIgKi8KLSsgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMS1CICovCi0rICBzdGVwID0g NDsKLSsgIHdoaWxlIChzdGVwICE9IDUpCi0rICAgIHsKLSsgICAgICBpZiAoc3RlcCA9PSA5OSkK LSsJZ290byBzdGVwXzk5OwotKyAgICAgIGRlbGF5ICgpOwotKyAgICB9CisrZ2RiX3Rlc3QgInB5 IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxl bmd0aCwgXFsweDYxLCAweDYxXF0sIG1heF9jb3VudCA9IDIsIHNpemUgPSAxKSIgXAorKyAgIiR7 dHdvX3BhdHRlcm5zX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAyLCBpbnZlcnRlZCBv cmRlcmluZyIKICsKLStzdGVwXzU6Ci0rICB2YXIrKzsJLyogYWZ0ZXItZm9yazItQiAqLwotKyAg ZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUIgKi8KLSsgIHJldHVybiAodm9pZCAqKSA1VUw7Cisr Z2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0 YXJ0X2FkZHIsIGxlbmd0aCwgXFsnYScsICdhJ1xdLCBtYXhfY291bnQgPSAyKSIgXAorKyAgIiR7 dHdvX3BhdHRlcm5zX2ZvdW5kfSIgIm1heF9jb3VudCA9IDIsIHdpdGgga2V5d29yZCIKICsKLStz dGVwXzk5OgotKyAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZm9y Z290dGVuIGJyZWFrcG9pbnQpLiAgKi8KLSsgIHZhcisrOwotKyAgYnJlYWtwb2ludCAoKTsKLSsg IHJldHVybiAodm9pZCAqKSA5OVVMOwotK30KKysjIFRlc3QgMTYtYml0IHBhdHRlcm4uCiArCi0r aW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsgIHZvaWQgKnRocmVhZF9yZXN1bHQ7 CisrZ2RiX3Rlc3QgInNldCBpbnQxNl9zZWFyY2hfYnVmXFsxMFxdID0gMHgxMjM0IiAiIiAiIgor K2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFy ICgnaW50MTZfc2VhcmNoX2J1ZicpIiAiIiAiIgorK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0g c2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgorK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hf YnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgorK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNl X2FuZF9ldmFsICgnKGludDE2X3QpIDB4MTIzNCcpIiAiIiAiIgogKwotKyAgc2V0YnVmIChzdGRv dXQsIE5VTEwpOwotKyAgcHJpbnRmICgibWFpbjogJWRcbiIsIChpbnQpIGdldHRpZCAoKSk7Cisr Z2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0 YXJ0X2FkZHIsIGxlbmd0aCwgMHgxMjM0LCAyKSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9 IiAiZmluZCAxNi1iaXQgcGF0dGVybiwgd2l0aCBweXRob24gcGF0dGVybiIKICsKLSsgIC8qIEdl bmVyYWwgd2F0Y2hwb2ludHMgdmFsaWRpdHkuICAqLwotKyAgdmFyKys7CS8qIHZhbGlkaXR5LWZp cnN0ICovCi0rICBkdW1teSAoKTsJLyogdmFsaWRpdHktZmlyc3QgKi8KKytnZGJfdGVzdCAicHkg cHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVu Z3RoLCBwYXR0ZXJuKSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCAxNi1iaXQg cGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgogKwotKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgm dGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrIyBUZXN0 IDMyLWJpdCBwYXR0ZXJuLgogKwotKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRocmVhZC1BICovCi0r ICBkdW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8KLSsgIHN0ZXAgPSAxOwotKyAgd2hp bGUgKHN0ZXAgIT0gMikKLSsgICAgZGVsYXkgKCk7CisrZ2RiX3Rlc3QgInNldCBpbnQzMl9zZWFy Y2hfYnVmXFsxMFxdID0gMHgxMjM0NTY3OCIgIiIgIiIKKytnZGJfdGVzdCAicHkgc2VhcmNoX2J1 ZiA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ2ludDMyX3NlYXJjaF9idWYnKSIg IiIgIiIKKytnZGJfdGVzdCAicHkgc3RhcnRfYWRkciA9IHNlYXJjaF9idWYuYWRkcmVzcyIgIiIg IiIKKytnZGJfdGVzdCAicHkgbGVuZ3RoID0gc2VhcmNoX2J1Zi50eXBlLnNpemVvZiIgIiIgIiIK KytnZGJfdGVzdCAicHkgcGF0dGVybiA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhpbnQzMl90KSAw eDEyMzQ1Njc4JykiICIiICIiCiArCi0rICAvKiBIYXJkd2FyZSB3YXRjaHBvaW50cyBnb3QgZGlz YXJtZWQgaGVyZS4gICovCi0rICBmb3Jrb2ZmICgxKTsKKytnZGJfdGVzdCAicHkgcHJpbnQgZ2Ri LmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCAweDEy MzQ1Njc4LCA0KSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCAzMi1iaXQgcGF0 dGVybiwgd2l0aCBweXRob24gcGF0dGVybiIKKytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVy aW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBwYXR0ZXJuKSIg XAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCAzMi1iaXQgcGF0dGVybiwgd2l0aCB2 YWx1ZSBwYXR0ZXJuIgogKwotKyAgdmFyKys7CS8qIGFmdGVyLWZvcmsxLUEgKi8KLSsgIGR1bW15 ICgpOwkvKiBhZnRlci1mb3JrMS1BICovCi0rICBzdGVwID0gMzsKLSsjaWZkZWYgRk9MTE9XX0NI SUxECi0rICAvKiBTcGF3biBuZXcgdGhyZWFkIGFzIGl0IHdhcyBkZWxldGVkIGluIHRoZSBjaGls ZCBvZiBGT1JLLiAgKi8KLSsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3Rh cnQsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDApOwotKyNlbmRpZgotKyAgd2hpbGUgKHN0ZXAg IT0gNCkKLSsgICAgZGVsYXkgKCk7CisrIyBUZXN0IDY0LWJpdCBwYXR0ZXJuLgogKwotKyAgLyog QSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBoYXJkd2FyZSB3YXRjaHBvaW50cyByZW1vdmFsLiAg Ki8KLSsgIGZvcmtvZmYgKDIpOworK2dkYl90ZXN0ICJzZXQgaW50NjRfc2VhcmNoX2J1ZlxbMTBc XSA9IDB4ZmVkY2JhOTg3NjU0MzIxMExMIiAiIiAiIgorK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVm ID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50NjRfc2VhcmNoX2J1ZicpIiAi IiAiIgorK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAi IgorK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgor K2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDY0X3QpIDB4 ZmVkY2JhOTg3NjU0MzIxMExMJykiICIiICIiCiArCi0rICB2YXIrKzsJLyogYWZ0ZXItZm9yazIt QSAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUEgKi8KLSsgIHN0ZXAgPSA1OwotKyNp ZmRlZiBGT0xMT1dfQ0hJTEQKLSsgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMgaXQgd2FzIGRlbGV0 ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLwotKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhy ZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rI2VuZGlmCisr Z2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0 YXJ0X2FkZHIsIGxlbmd0aCwgMHhmZWRjYmE5ODc2NTQzMjEwLCA4KSIgXAorKyAgIiR7b25lX3Bh dHRlcm5fZm91bmR9IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCBweXRob24gcGF0dGVybiIK KytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAo c3RhcnRfYWRkciwgbGVuZ3RoLCBwYXR0ZXJuKSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9 IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgogKwotKyAgaSA9IHB0 aHJlYWRfam9pbiAodGhyZWFkLCAmdGhyZWFkX3Jlc3VsdCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7 Ci0rICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgNVVMKTsKKysjIFRlc3QgbWl4 ZWQtc2l6ZWQgcGF0dGVybnMuCiArCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi41ZjYyZTdmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jCi1AQCAtMCwwICsxLDU3IEBACi0rLyogVGVzdCBj YXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHBy b2Nlc3MuCisrZ2RiX3Rlc3QgInNldCAqKGludDhfdCopICZzZWFyY2hfYnVmXFsxMFxdID0gMHg2 MiIgIiIgIiIKKytnZGJfdGVzdCAic2V0ICooaW50MTZfdCopICZzZWFyY2hfYnVmXFsxMVxdID0g MHg2MzYzIiAiIiAiIgorK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWzEz XF0gPSAweDY0NjQ2NDY0IiAiIiAiIgorK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNl bGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnc2VhcmNoX2J1ZicpIiAiIiAiIgorK2dkYl90ZXN0 ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1ZlxbMFxdLmFkZHJlc3MiICIiICIiCisrZ2RiX3Rl c3QgInB5IHBhdHRlcm4xID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDhfdCkgMHg2MicpIiAi IiAiIgorK2dkYl90ZXN0ICJweSBwYXR0ZXJuMiA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhpbnQx Nl90KSAweDYzNjMnKSIgIiIgIiIKKytnZGJfdGVzdCAicHkgcGF0dGVybjMgPSBnZGIucGFyc2Vf YW5kX2V2YWwgKCcoaW50MzJfdCkgMHg2NDY0NjQ2NCcpIiAiIiAiIgogKwotKyAgIENvcHlyaWdo dCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK2dkYl90ZXN0ICJw eSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCAx MDAsIFxbcGF0dGVybjEsIHBhdHRlcm4yLCBwYXR0ZXJuM1xdKSIgXAorKyAgICAiJHtvbmVfcGF0 dGVybl9mb3VuZH0iICJmaW5kIG1peGVkLXNpemVkIHBhdHRlcm4iCiArCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgorKyMgVGVzdCBzZWFyY2ggc3Bhbm5pbmcgYSBsYXJnZSByYW5nZSwg aW4gdGhlIHBhcnRpY3VsYXIgY2FzZSBvZiBuYXRpdmUKKysjIHRhcmdldHMsIHRlc3QgdGhlIHNl YXJjaCBzcGFubmluZyBtdWx0aXBsZSBjaHVua3MuCisrIyBSZW1vdGUgdGFyZ2V0cyBtYXkgaW1w bGVtZW50IHRoZSBzZWFyY2ggZGlmZmVyZW50bHkuCiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKytzZXQgQ0hVTktfU0laRSAxNjAwMCA7CiArCi0rICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKytnZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZzZWFyY2hfYnVmXFswKiR7Q0hVTktf U0laRX0rMTAwXF0gPSAweDEyMzQ1Njc4IiAiIiAiIgorK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90 KikgJnNlYXJjaF9idWZcWzEqJHtDSFVOS19TSVpFfSsxMDBcXSA9IDB4MTIzNDU2NzgiICIiICIi CisrZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92 YXIgKCdzZWFyY2hfYnVmJykiICIiICIiCisrZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IGdkYi5zZWxl Y3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ3NlYXJjaF9idWZfc2l6ZScpIiAiIiAiIgogKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworK2dkYl90 ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9h ZGRyLCBsZW5ndGgsIDB4MTIzNDU2NzgsIDQpIiBcCisrICAiJHt0d29fcGF0dGVybnNfZm91bmR9 IiAic2VhcmNoIHNwYW5uaW5nIGxhcmdlIHJhbmdlIgogKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4K LSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0rI2luY2x1ZGUg PHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyMgRm9yIG5hdGl2ZSB0YXJnZXRzLCB0 ZXN0IGEgcGF0dGVybiBzdHJhZGRsaW5nIGEgY2h1bmsgYm91bmRhcnkuCiArCi0rc3RhdGljIHZv bGF0aWxlIGludCB2YXI7CisraWYgW2lzbmF0aXZlXSB7CisrICAgIGdkYl90ZXN0ICJzZXQgKihp bnQzMl90KikgJnNlYXJjaF9idWZcWyR7Q0hVTktfU0laRX0tMVxdID0gMHhmZGI5NzUzMSIgIiIg IiIKICsKLStzdGF0aWMgdm9pZAotK2JyZWFrcG9pbnQgKHZvaWQpCisrICAgIGdkYl90ZXN0ICJw eSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBs ZW5ndGgsIDB4ZmRiOTc1MzEsIDQpIiBcCisrICAgICAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAi ZmluZCBwYXR0ZXJuIHN0cmFkZGxpbmcgY2h1bmsgYm91bmRhcnkiCisrfQorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0aHJlYWQuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1pbmZ0aHJlYWQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjIyZWI5ZjIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1pbmZ0aHJlYWQuYworQEAgLTAsMCArMSwxNCBAQAorK2ludCBmMiAoaW50IGEpCiAr eworKyAgcmV0dXJuICsrYTsKICt9CiArCi0rLyogSW5jbHVkZSBoZXJlIHRoZSBmdW5jdGlvbjoK LSsgICBzdGF0aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOyAgKi8KLSsKLSsjaW5jbHVkZSAid2F0 Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyIKLSsKLStpbnQKLSttYWluICh2b2lkKQorK2ludCBmMSAo aW50IGEsIGludCBiKQogK3sKLSsgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKLSsgIHByaW50ZiAo Im1haW46ICVkXG4iLCAoaW50KSBnZXRwaWQgKCkpOwotKwotKyAgLyogR2VuZXJhbCB3YXRjaHBv aW50cyB2YWxpZGl0eS4gICovCi0rICB2YXIrKzsKLSsgIC8qIEhhcmR3YXJlIHdhdGNocG9pbnRz IGdvdCBkaXNhcm1lZCBoZXJlLiAgKi8KLSsgIGZvcmtvZmYgKDEpOwotKyAgLyogVGhpcyB3YXRj aHBvaW50IGdvdCBsb3N0IGJlZm9yZS4gICovCi0rICB2YXIrKzsKLSsgIC8qIEEgc2FuaXR5IGNo ZWNrIGZvciBkb3VibGUgaGFyZHdhcmUgd2F0Y2hwb2ludHMgcmVtb3ZhbC4gICovCi0rICBmb3Jr b2ZmICgyKTsKLSsgIHZhcisrOworKyAgcmV0dXJuIGYyKGEpICsgYjsKKyt9CiArCi0rICByZXR1 cm4gMDsKKytpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyt7CisrICByZXR1cm4g ZjEgKDEsIDIpOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dh dGNocG9pbnQtZm9yay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQt Zm9yay5leHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mdGhy ZWFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0aHJlYWQuZXhwCiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWRjOTNhYgoraW5kZXggMDAwMDAwMC4u ZTlkMThiNwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmsuZXhwCi1AQCAtMCwwICsxLDEzMCBAQAotKyMgQ29weXJpZ2h0IDIwMDgs IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktaW5mdGhyZWFkLmV4cAorQEAgLTAsMCArMSw1OCBAQAorKyMgQ29weXJp Z2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yNzc5MywxMzQgKzE4MjY3LDI0NCBAQCBpbmRleCAw MDAwMDAwLi4xZGM5M2FiCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rIyBUZXN0 IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEg cHJvY2Vzcy4KLSsKLStwcm9jIHRlc3Qge3R5cGUgc3ltYm9sfSB7Ci0rICAgIGdsb2JhbCBvYmpk aXIgc3ViZGlyIHNyY2RpcgotKwotKyAgICBzZXQgdGVzdCB3YXRjaHBvaW50LWZvcmsKLSsKLSsg ICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQgcHJlZml4X3Rlc3QgJHBmX3ByZWZpeAotKyAg ICBsYXBwZW5kIHBmX3ByZWZpeCAiJHR5cGU6IgotKyAgICBzZXQgcHJlZml4X210ICRwZl9wcmVm aXgKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHREIgdGVzdHN1aXRlLiAgSXQgdGVzdHMg dGhlIG1lY2hhbmlzbQorKyMgZXhwb3NpbmcgaW5mZXJpb3IgdGhyZWFkcyB0byBQeXRob24uCiAr Ci0rICAgICMgbm8gdGhyZWFkcworK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKKyt9CiArCi0rICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9tdAotKyAgICBs YXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgorKyMgU3RhcnQgd2l0aCBhIGZyZXNo IGdkYi4KICsKLSsgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0fS0ke3R5cGV9Ci0rICAgIGlmIHsg W2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHtleGVjdXRhYmxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxh Z3M9LUQkc3ltYm9sXV0gIT0gIiIgfSB7Ci0rCXVudGVzdGVkICR7dGVzdH0uZXhwCi0rCXJldHVy biAtMQotKyAgICB9Ci0rICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKKytnZGJfZXhpdAor K2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogKwotKyAg ICBnZGJfdGVzdCAic2hvdyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNo IHRoZSBjaGlsZCBvZiBhIGZvcmsgaXMgb24uIgotKyAgICBnZGJfdGVzdCAic2V0IGZvbGxvdy1m b3JrLW1vZGUgJHR5cGUiCi0rICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUiICJE ZWJ1Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlzIFwi JHR5cGVcIi4iCi0rICAgICMgVGVzdGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBmb2xsb3ctZm9yay1t b2RlIGNoaWxkJyB0eXBlLgotKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5v cHJpbnQgcGFzcyIKKytpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4geworKyAgdW5zdXBwb3J0 ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgorKyAgcmV0dXJuIC0xCisrfQogKwotKyAg ICBpZiB7ICFbcnVudG9fbWFpbl0gfSB0aGVuIHsKLSsJZ2RiX3N1cHByZXNzX3Rlc3RzCi0rCXJl dHVybgotKyAgICB9Cisrc2V0IHRlc3RmaWxlICJweS1pbmZ0aHJlYWQiCisrc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0KICsKLSsgICAgIyBJbnN0YWxsIHRoZSB3YXRjaHBvaW50IG9ubHkgYWZ0ZXIgZ2V0dGluZyBp bnRvIE1BSU4gLSB3b3JrYXJvdW5kIHNvbWUgUFBDCi0rICAgICMgcHJvYmxlbS4KLSsgICAgZ2Ri X3Rlc3QgIndhdGNoIHZhciIgImF0Y2hwb2ludCAyOiB2YXIiICJTZXQgdGhlIHdhdGNocG9pbnQi CisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJD b3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisrICAgIHJldHVybiAtMQorK30KICsKLSsgICAg IyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUgbGVmdCBvdmVyIGluIHRoZSBm b3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIGdkYl9icmVha3BvaW50ICJicmVha3BvaW50IgorK2dk Yl9sb2FkICR7YmluZmlsZX0KICsKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAg ImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDAuKk5ldyB2YWx1ZSA9IDEuKmZvcmtvZmYg KlxcKDFcXCkuKiIgIndhdGNocG9pbnRzIHdvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIg XAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtwb2ludCBhZnRlciB0 aGUgZmlyc3QgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hw b2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDEuKk5ldyB2YWx1ZSA9IDIuKmZvcmtvZmYgKlxcKDJc XCkuKiIgIndhdGNocG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCi0rICAgIGdkYl90ZXN0ICJj b250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtwb2lu dCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkg ICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAyLipOZXcgdmFsdWUgPSAzLipyZXR1 cm4gKjA7IiAid2F0Y2hwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgIkNvbnRpbnVpbmcuLipQcm9ncmFtIGV4aXRlZCBub3JtYWxseS4iICJmaW5p c2giCisrIyBUaGUgZm9sbG93aW5nIHRlc3RzIHJlcXVpcmUgZXhlY3V0aW9uLgogKworK2lmICFb cnVudG9fbWFpbl0gdGhlbiB7CisrICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWluIgorKyAgICBy ZXR1cm4gMAorK30KICsKLSsgICAgIyB0aHJlYWRzCisrcnVudG8gW2dkYl9nZXRfbGluZV9udW1i ZXIgIkJyZWFrIGhlcmUuIl0KICsKLSsgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4X210Ci0rICAg IGxhcHBlbmQgcGZfcHJlZml4ICJtdWx0aXRocmVhZGVkOiIKKysjIFRlc3QgYmFzaWMgZ2RiLklu ZmVyaW9yIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMuCiArCi0rICAgIHNldCBleGVjdXRhYmxlICR7 dGVzdH0tbXQtJHt0eXBlfQotKyAgICBpZiB7IFtnZGJfY29tcGlsZV9wdGhyZWFkcyAke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7dGVzdH0tbXQuYyAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJs ZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9 ICIiIH0gewotKwl1bnRlc3RlZCAke3Rlc3R9LmV4cAotKwlyZXR1cm4gLTEKLSsgICAgfQotKyAg ICBjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0 aG9uIHQwID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAoKSIgInRlc3QgZ2RiLnNlbGVjdGVkX3RocmVh ZCIgMQorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgdDAiICJcXDxnZGIuSW5mZXJpb3JUaHJlYWQg b2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidmVyaWZ5IEluZmVyaW9yVGhyZWFkIG9i amVjdCIKKytnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIHQwLm51bSIgIiA9IFxb MC05XF0rIiAidGVzdCBJbmZlcmlvci5udW0iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1wcmV0dHlwcmludC5leHAKK2luZGV4IDI2MjY4OTUuLmNkMGQ3ZTcgMTAwNjQ0CistLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCitAQCAtMjcsMTIgKzI3LDIwIEBA IHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKyAjIFN0YXJ0IHdp dGggYSBmcmVzaCBnZGIuCisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKy1nZGJfdGVzdF9tdWx0aXBs ZSAicHl0aG9uIHByaW50ICdoZWxsbywgd29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIg eworLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKKy0gICAgICB1bnN1 cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCistICAgICAgcmV0dXJuIC0xCist ICAgIH0KKy0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQorK2lmICFbcHl0aG9uX3N1cHBvcnRl ZF0gdGhlbiB7CisrICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCisr ICByZXR1cm4gLTEKKyt9CiArCi0rICAgIGdkYl90ZXN0ICJzZXQgZm9sbG93LWZvcmstbW9kZSAk dHlwZSIKLSsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZvbGxvdy1mb3JrLW1vZGUg Y2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0b3Agbm9wcmlu dCBwYXNzIgorKyMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCByZXBvcnQgYSBmYWlsdXJlIGlm IGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisrIyBJZiByZXBvcnRfcGFzcyBpcyB0cnVl LCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisrcHJvYyBnZGJfcHlf dGVzdF9zaWxlbnRfY21kIHtjbWQgbmFtZSByZXBvcnRfcGFzc30geworKyAgZ2xvYmFsIGdkYl9w cm9tcHQKICsKLSsgICAgaWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7Ci0rCWdkYl9zdXBwcmVz c190ZXN0cwotKwlyZXR1cm4KLSsgICAgfQorKyAgZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkbmFt ZSB7CisrICAgICAgLXJlICJUcmFjZWJhY2suKiRnZGJfcHJvbXB0ICQiICB7IGZhaWwgJG5hbWUg fQorKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJICAgICAgeyBpZiAkcmVwb3J0X3Bhc3MgeyBw YXNzICRuYW1lIH0gfQorKyAgfQorIH0KKyAKKyAjIFJ1biBhIGNvbW1hbmQgaW4gR0RCLCBhbmQg cmVwb3J0IGEgZmFpbHVyZSBpZiBhIFB5dGhvbiBleGNlcHRpb24gaXMgdGhyb3duLgorQEAgLTEw NSw2ICsxMTMsOCBAQCBwcm9jIHJ1bl9sYW5nX3Rlc3RzIHtsYW5nfSB7CisgICAgIGdkYl90ZXN0 ICJwcmludCBlc3RyaW5nIiAiXCJlbWJlZGRlZCB4XFxcXDIwMVxcXFwyMDJcXFxcMjAzXFxcXDIw NFwiIgorICAgICBnZGJfdGVzdCAicHJpbnQgYyIgIiA9IGNvbnRhaW5lciBcImNvbnRhaW5lclwi IHdpdGggMiBlbGVtZW50cyA9IHskbmwgKi4wLiA9IDIzLCRubCAqLjEuID0gNzIkbmx9IgorIAor KyAgICBnZGJfdGVzdCAicHJpbnQgbnVsbHN0ciIgIlJ1bnRpbWVFcnJvcjogRXJyb3IgcmVhZGlu ZyBzdHJpbmcgZnJvbSBpbmZlcmlvci4qIgogKwotKyAgICAjIEluc3RhbGwgdGhlIHdhdGNocG9p bnQgb25seSBhZnRlciBnZXR0aW5nIGludG8gTUFJTiAtIHdvcmthcm91bmQgc29tZSBQUEMKLSsg ICAgIyBwcm9ibGVtLgotKyAgICBnZGJfdGVzdCAid2F0Y2ggdmFyIiAiYXRjaHBvaW50IDI6IHZh ciIgIlNldCB0aGUgd2F0Y2hwb2ludCIKKyAgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiUHJvZ3Jh bSBleGl0ZWQgbm9ybWFsbHlcLiIKKyAKKyAgICAgcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgJHty ZW1vdGVfcHl0aG9uX2ZpbGV9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LXRlbXBsYXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5l eHAKK2luZGV4IDcxM2FkNWYuLjVkMTdiMjYgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktdGVtcGxhdGUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktdGVtcGxhdGUuZXhwCitAQCAtMjAsNiArMjAsMTcgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7 CisgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorIH0KKyAKKysjIFN0YXJ0IHdpdGggYSBmcmVzaCBn ZGIuCiArCi0rICAgICMgSXQgaXMgbmV2ZXIgaGl0IGJ1dCBpdCBzaG91bGQgbm90IGJlIGxlZnQg b3ZlciBpbiB0aGUgZm9yaygpZWQtb2ZmIGNoaWxkLgotKyAgICBnZGJfYnJlYWtwb2ludCAiYnJl YWtwb2ludCIKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgogKwotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRj aHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4qdmFsaWRpdHktZmly c3QuKiIgInNpbmdsZXRocmVhZCB3YXRjaHBvaW50cyB3b3JrIgotKyAgICBnZGJfdGVzdCAiY29u dGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZh bHVlID0gMi4qdmFsaWRpdHktdGhyZWFkLUEuKiIgIm11bHRpdGhyZWFkZWQgd2F0Y2hwb2ludHMg d29yayBhdCBBIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50 IDI6IHZhci4qT2xkIHZhbHVlID0gMi4qTmV3IHZhbHVlID0gMy4qdmFsaWRpdHktdGhyZWFkLUIu KiIgIm11bHRpdGhyZWFkZWQgd2F0Y2hwb2ludHMgd29yayBhdCBCIgotKyAgICBnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9pbnQuKiIgImJyZWFrcG9p bnQgKEEpIGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwK LSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMy4qTmV3IHZhbHVlID0gNC4q YWZ0ZXItZm9yazEtQS4qIiAid2F0Y2hwb2ludCBBIGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZh bHVlID0gNC4qTmV3IHZhbHVlID0gNS4qYWZ0ZXItZm9yazEtQi4qIiAid2F0Y2hwb2ludCBCIGFm dGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAi cmVha3BvaW50IDMsIGJyZWFrcG9pbnQuKiIgImJyZWFrcG9pbnQgKEEpIGFmdGVyIHRoZSBzZWNv bmQgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCAy OiB2YXIuKk9sZCB2YWx1ZSA9IDUuKk5ldyB2YWx1ZSA9IDYuKmFmdGVyLWZvcmsyLUEuKiIgIndh dGNocG9pbnQgQSBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51 ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA2LipOZXcgdmFsdWUg PSA3LiphZnRlci1mb3JrMi1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhlIHNlY29uZCBmb3Jr IgotKyAgICBnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLi4qUHJvZ3JhbSBleGl0ZWQg bm9ybWFsbHkuIiAiZmluaXNoIgorK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CisrICB1 bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCisrICByZXR1cm4gLTEKKyt9 CiArCisgc2V0IHRlc3RmaWxlICJweS10ZW1wbGF0ZSIKKyBzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jYworIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KK0BAIC0y OSwyMCArNDAsNiBAQCBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBcCisgICAgIHJldHVybiAtMQorIH0KKyAK Ky0jIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCistCistZ2RiX2V4aXQKKy1nZGJfc3RhcnQKKy1n ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy0KKy1nZGJfdGVzdF9tdWx0aXBs ZSAicHl0aG9uIHByaW50IDIzIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7CistICAgIC1yZSAi bm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJeworLSAgICAgIHVuc3VwcG9ydGVkICJweXRo b24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKKy0gICAgICByZXR1cm4gLTEKKy0gICAgfQorLSAgICAt cmUgIiRnZGJfcHJvbXB0ICQiCXt9CistfQorLQorIHByb2MgdGVzdF90ZW1wbGF0ZV9hcmcge3R5 cGV9IHsKKyAgICAgZ2xvYmFsIHRlc3RmaWxlIHNyY2RpciBzdWJkaXIgc3JjZmlsZSBiaW5maWxl CisgICAgIGlmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBcCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKK2luZGV4 IGFhNGU1MTkuLmY4NzI3N2QgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktdmFsdWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhw CitAQCAtMzA1LDYgKzMwNSwxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30gewor ICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgorIH0KKyAKKysjIFJlZ3Jlc3Npb24gdGVzdCBmb3Ig YSBjYXN0IGZhaWx1cmUuICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdlIGNhc3QgYQorKyMgdmFsdWUg dG8gaXRzIG93biB0eXBlLCBnZGIgY291bGQgY3Jhc2guICBUaGlzIGhhcHBlbmVkIGJlY2F1c2Ug d2UKKysjIGNvdWxkIGVuZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0cnVjdCB2YWx1ZS4KKytwcm9j IHRlc3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsKKysgIGdkYl90ZXN0ICJweXRob24gdiA9IGdkYi5W YWx1ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgorKyAgZ2RiX3Rlc3QgInB5 dGhvbiB2ID0gdi5jYXN0KHYudHlwZSkiICIiICJjYXN0IHZhbHVlIGZvciBjYXN0IHRlc3QiCisr ICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHYiICI1IiAicHJpbnQgdmFsdWUgZm9yIGNhc3QgdGVz dCIKKyt9CiArCi0rICAgICMgY2xlYW51cAorICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpbnZhbGlk IHN1YnNjcmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAorICMgdGhlIHR5cGUgb2Yg dGhlIHZhbHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcgYQorICMgc3Vi c2NyaXB0IG9wZXJhdGlvbiB0byBwcm9jZWVkLgorQEAgLTM5MCwxNiArMzk5LDIzIEBAIHByb2Mg dGVzdF9wYXJzZV9hbmRfZXZhbCB7fSB7CisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKyBnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy1nZGJfbG9hZCAke2JpbmZpbGV9CisgCist Z2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBwcmludCAnaGVsbG8sIHdvcmxkISciICJ2ZXJpZnkg cHl0aG9uIHN1cHBvcnQiIHsKKy0gICAgLXJlICJub3Qgc3VwcG9ydGVkLiokZ2RiX3Byb21wdCAk Igl7CistICAgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgorLSAg ICAgIHJldHVybiAtMQorLSAgICB9CistICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJe30KKytpZiAh W3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4geworKyAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0 IGlzIGRpc2FibGVkIgorKyAgcmV0dXJuIC0xCisgfQorIAorK3NldCB0ZXN0ZmlsZSAicHktdmFs dWUiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsKLSsgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4X3Rlc3QK KytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKysgICAgcmV0dXJuIC0xCiArfQogKwotK3Rlc3Qg cGFyZW50IEZPTExPV19QQVJFTlQKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rIyBPbmx5IEdO VS9MaW51eCBpcyBrbm93biB0byBzdXBwb3J0IGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcu Ci0raWYge1tpc3RhcmdldCAiKi0qLWxpbnV4KiJdfSB7Ci0rICAgIHRlc3QgY2hpbGQgRk9MTE9X X0NISUxECi0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0 aHJlYWRzLXJlb3JkZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRz LXJlb3JkZXIuYworIHRlc3RfdmFsdWVfY3JlYXRpb24KKyB0ZXN0X3ZhbHVlX251bWVyaWNfb3Bz CisgdGVzdF92YWx1ZV9ib29sZWFuCitAQCAtNDE3LDYgKzQzMyw3IEBAIGlmICFbcnVudG9fbWFp bl0gdGhlbiB7CisgdGVzdF92YWx1ZV9pbl9pbmZlcmlvcgorIHRlc3RfbGF6eV9zdHJpbmdzCisg dGVzdF92YWx1ZV9hZnRlcl9kZWF0aAorK3Rlc3RfY2FzdF9yZWdyZXNzaW9uCisgCisgIyBUaGUg Zm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRvIHRlc3QgZWl0aGVyIEMgb3Ig QysrCisgIyB2YWx1ZXMuIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eXRob24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5leHAKK2luZGV4IDk1 MWMyOTUuLjlkZDBjMTIgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHl0 aG9uLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5leHAKK0BAIC0y NiwzMCArMjYsOSBAQCBnZGJfZXhpdAorIGdkYl9zdGFydAorIGdkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgorIAorLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgMjMi ICJ2ZXJpZnkgcHl0aG9uIHN1cHBvcnQiIHsKKy0gICAgLXJlICJub3Qgc3VwcG9ydGVkLiokZ2Ri X3Byb21wdCAkIgl7CistICAgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2Fi bGVkIgorLSAgICAgIHJldHVybiAtMQorLSAgICB9CistICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJ e30KKy19CistCistIyBVc2FnZTogZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgTkFNRSBJTlBVVCBSRVNV TFQge0lOUFVUIFJFU1VMVH0uLi4KKy0jIFJ1biBhIHRlc3QgbmFtZWQgTkFNRSwgY29uc2lzdGlu ZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4KKy0jIEFmdGVyIGVhY2ggaW5wdXQgbGluZSBJ TlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBSRVNVTFQuCistIyBTdWNjZWVkIGlmIGFsbCBy ZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lzZS4KKy1wcm9jIGdkYl9weV90ZXN0X211bHRp cGxlIHtuYW1lIGFyZ3N9IHsKKy0gICAgZ2xvYmFsIGdkYl9wcm9tcHQKKy0gICAgZm9yZWFjaCB7 aW5wdXQgcmVzdWx0fSAkYXJncyB7CistCWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIk bmFtZSAtICRpbnB1dCIgeworLQkgICAgLXJlICJcW1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSso JGdkYl9wcm9tcHQgfCAqPikkIiB7CistCQlwYXNzICIkbmFtZSAtICRpbnB1dCIKKy0JICAgIH0K Ky0JfV19IHsKKy0JICAgIHJldHVybiAxCistCX0KKy0gICAgfQorLSAgICByZXR1cm4gMAorK2lm ICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CisrICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBv cnQgaXMgZGlzYWJsZWQiCisrICByZXR1cm4gLTEKKyB9CisgCisgZ2RiX3B5X3Rlc3RfbXVsdGlw bGUgIm11bHRpLWxpbmUgcHl0aG9uIGNvbW1hbmQiIFwKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKIG5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi4xNGY0MmQ2CitpbmRleCAwMDAwMDAwLi40ZGMzMDhiCiAtLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1y ZW9yZGVyLmMKLUBAIC0wLDAgKzEsMzY2IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYworQEAgLTAsMCArMSwxNzUgQEAKKysvKiBUZXN0IGNh c2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJv Y2Vzcy4KICsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCiArCiArICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApAQCAtMjc5MjksMzY2 ICsxODUxMywzOTcgQEAgaW5kZXggMDAwMDAwMC4uMTRmNDJkNgogKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCiArICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsCisrICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwogKwot KyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsjaW5jbHVkZSA8cHRocmVhZC5oPgotKyNpbmNsdWRlIDxz dGRpby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5j bHVkZSA8c3RkbGliLmg+CiArI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxhc3NlcnQu aD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNs dWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorKyNpbmNsdWRlIDxlcnJu by5oPgogKwotKyNkZWZpbmUgZ2V0dGlkKCkgc3lzY2FsbCAoX19OUl9nZXR0aWQpCisrc3RhdGlj IHZvaWQKKytkZWxheSAodm9pZCkKKyt7CisrICBpbnQgaSA9IHVzbGVlcCAoMTAwMDAwMCAvIDEw MCk7CisrICBhc3NlcnQgKGkgPT0gMCB8fCBlcnJubyA9PSBFSU5UUik7CisrfQorKworKyNpZiBk ZWZpbmVkIEZPTExPV19QQVJFTlQKKysKKytzdGF0aWMgdm9pZAorK2ZvcmtvZmYgKGludCBucikK Kyt7CisrICBwaWRfdCBjaGlsZCwgcGlkX2dvdDsKKysgIGludCBleGl0X2NvZGUgPSA0MiArIG5y OworKyAgaW50IHN0YXR1cywgaTsKICsKLSsvKiBUZXJtaW5hdGUgYWx3YXlzIGluIHRoZSBtYWlu IHRhc2ssIGl0IGNhbiBsb2NrIHVwIHdpdGggU0lHU1RPUHBlZCBHREIKLSsgICBvdGhlcndpc2Uu ICAqLwotKyNkZWZpbmUgVElNRU9VVCAoZ2V0dGlkICgpID09IGdldHBpZCgpID8gMTAgOiAxNSkK KysgIGNoaWxkID0gZm9yayAoKTsKKysgIHN3aXRjaCAoY2hpbGQpCisrICAgIHsKKysgICAgY2Fz ZSAtMToKKysgICAgICBhc3NlcnQgKDApOworKyAgICBjYXNlIDA6CisrICAgICAgcHJpbnRmICgi Y2hpbGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRwaWQgKCkpOworKyAgICAgIC8qIERlbGF5IHRv IGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2FnZSBwcmludGVkIHdp dGhvdXQKKysJIGEgcmFjZSBicmVha2luZyBleHBlY3QgYnkgaXRzIGVuZGxlc3Mgd2FpdCBvbiBg JGdkYl9wcm9tcHQkJzoKKysJIEJyZWFrcG9pbnQgMywgYnJlYWtwb2ludCAoKSBhdCAuLi8uLi8u Li9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jOjMzCisrCSAzMyAg ICAgIH0KKysJIChnZGIpIHBhcmVudDI6IDE0MjIzICAqLworKyAgICAgIGkgPSBzbGVlcCAoMSk7 CisrICAgICAgYXNzZXJ0IChpID09IDApOwogKwotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgZ2Ri c3RvcF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysg ICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4g YnJlYWtwb2ludCkuICAqLworKyAgICAgIHZhcisrOworKyAgICAgIGJyZWFrcG9pbnQgKCk7CiAr Ci0rc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOwotK3N0YXRpYyBwdGhyZWFkX2NvbmRfdCB0aHJl YWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOwotK3N0YXRpYyBwdGhyZWFk X211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhfSU5J VElBTElaRVJfTlA7CisrICAgICAgX2V4aXQgKGV4aXRfY29kZSk7CisrICAgIGRlZmF1bHQ6Cisr ICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQpOworKyAgICAg IC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2Fn ZSBwcmludGVkLCBzZWUKKysJIGFib3ZlLiAgKi8KKysgICAgICBpID0gc2xlZXAgKDEpOworKyAg ICAgIGFzc2VydCAoaSA9PSAwKTsKICsKLStzdGF0aWMgcGlkX3QgdGhyZWFkMl90aWQ7Ci0rc3Rh dGljIHB0aHJlYWRfY29uZF90IHRocmVhZDJfdGlkX2NvbmQgPSBQVEhSRUFEX0NPTkRfSU5JVElB TElaRVI7Ci0rc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0aHJlYWQyX3RpZF9tdXRleCA9IFBUSFJF QURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysgICAgICBwaWRfZ290ID0gd2Fp dCAoJnN0YXR1cyk7CisrICAgICAgYXNzZXJ0IChwaWRfZ290ID09IGNoaWxkKTsKKysgICAgICBh c3NlcnQgKFdJRkVYSVRFRCAoc3RhdHVzKSk7CisrICAgICAgYXNzZXJ0IChXRVhJVFNUQVRVUyAo c3RhdHVzKSA9PSBleGl0X2NvZGUpOwogKwotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGVybWlu YXRlX211dGV4ID0gUFRIUkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJWkVSX05QOworKyAg ICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2lu dCByZW1vdmFsKS4gICovCisrICAgICAgYnJlYWtwb2ludCAoKTsKKysgICAgfQorK30KICsKLStz dGF0aWMgdm9sYXRpbGUgaW50IHRocmVhZDFfcndhdGNoOwotK3N0YXRpYyB2b2xhdGlsZSBpbnQg dGhyZWFkMl9yd2F0Y2g7CisrI2VsaWYgZGVmaW5lZCBGT0xMT1dfQ0hJTEQKICsKLStzdGF0aWMg aW50IHVudXNlZDFfcndhdGNoOwotK3N0YXRpYyBpbnQgdW51c2VkMl9yd2F0Y2g7Cisrc3RhdGlj IHZvbGF0aWxlIGludCB1c3IxX2dvdDsKICsKLSsvKiBEbyBub3QgdXNlIGFsYXJtIGFzIGl0IHdv dWxkIGNyZWF0ZSBhIHB0cmFjZSBldmVudCB3aGljaCB3b3VsZCBoYW5nIHVwIHVzIGlmCi0rICog d2UgYXJlIGJlaW5nIHRyYWNlZCBieSBHREIgd2hpY2ggd2Ugc3RvcHBlZCBvdXJzZWx2ZXMuICAq LworK3N0YXRpYyB2b2lkCisraGFuZGxlcl91c3IxIChpbnQgc2lnbm8pCisreworKyAgdXNyMV9n b3QrKzsKKyt9CiArCi0rc3RhdGljIHZvaWQgdGltZWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRl eF90ICptdXRleCkKKytzdGF0aWMgdm9pZAorK2ZvcmtvZmYgKGludCBucikKICt7Ci0rICBpbnQg aTsKLSsgIHN0cnVjdCB0aW1lc3BlYyBzdGFydCwgbm93OworKyAgcGlkX3QgY2hpbGQ7CisrICBp bnQgaSwgbG9vcDsKKysgIHN0cnVjdCBzaWdhY3Rpb24gYWN0LCBvbGRhY3Q7CisrI2lmZGVmIFRI UkVBRAorKyAgdm9pZCAqdGhyZWFkX3Jlc3VsdDsKKysjZW5kaWYKICsKLSsgIGkgPSBjbG9ja19n ZXR0aW1lIChDTE9DS19NT05PVE9OSUMsICZzdGFydCk7CisrICBtZW1zZXQgKCZhY3QsIDAsIHNp emVvZiBhY3QpOworKyAgYWN0LnNhX2ZsYWdzID0gU0FfUkVTVEFSVDsKKysgIGFjdC5zYV9oYW5k bGVyID0gaGFuZGxlcl91c3IxOworKyAgc2lnZW1wdHlzZXQgKCZhY3Quc2FfbWFzayk7CisrICBp ID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCAmb2xkYWN0KTsKICsgIGFzc2VydCAoaSA9PSAw KTsKICsKLSsgIGRvCisrICBjaGlsZCA9IGZvcmsgKCk7CisrICBzd2l0Y2ggKGNoaWxkKQogKyAg ICB7Ci0rICAgICAgaSA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAobXV0ZXgpOwotKyAgICAgIGlm IChpID09IDApCi0rCXJldHVybjsKLSsgICAgICBhc3NlcnQgKGkgPT0gRUJVU1kpOworKyAgICBj YXNlIC0xOgorKyAgICAgIGFzc2VydCAoMCk7CisrICAgIGRlZmF1bHQ6CisrICAgICAgcHJpbnRm ICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQpOworKworKyAgICAgIC8qIFNsZWVw IGZvciBhIHdoaWxlIHRvIHBvc3NpYmx5IGdldCBpbmNvcnJlY3RseSBBVFRBQ0hfVEhSRUFEZWQg YnkgR0RCCisrCSB0cmFjaW5nIHRoZSBjaGlsZCBmb3JrIHdpdGggbm8gbG9uZ2VyIHZhbGlkIHRo cmVhZC9sd3AgZW50cmllcyBvZiB0aGUKKysJIHBhcmVudC4gICovCiArCi0rICAgICAgaSA9IGNs b2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7CisrICAgICAgaSA9IHNsZWVwICgy KTsKICsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0rICAgICAgYXNzZXJ0IChub3cudHZfc2VjID49 IHN0YXJ0LnR2X3NlYyk7Ci0rICAgIH0KLSsgIHdoaWxlIChub3cudHZfc2VjIC0gc3RhcnQudHZf c2VjIDwgVElNRU9VVCk7CiArCi0rICBmcHJpbnRmIChzdGRlcnIsICJUaW1lZCBvdXQgd2FpdGlu ZyBmb3IgaW50ZXJuYWwgbG9jayFcbiIpOwotKyAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSt9Cisr ICAgICAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZm9yZ290dGVu IGJyZWFrcG9pbnQpLiAgKi8KICsKLStzdGF0aWMgdm9pZCAqCi0rdGhyZWFkMV9mdW5jICh2b2lk ICp1bnVzZWQpCi0rewotKyAgaW50IGk7Ci0rICB2b2xhdGlsZSBpbnQgcndhdGNoX3N0b3JlOwor KyAgICAgIHZhcisrOworKyAgICAgIGJyZWFrcG9pbnQgKCk7CiArCi0rICB0aHJlYWQxX3RpZCA9 IGdldHRpZCAoKTsKLSsgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90aWRfY29u ZCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrI2lmZGVmIFRIUkVBRAorKyAgICAgIC8qIEFuZCBu ZWl0aGVyIGdvdCBjYXVnaHQgb3VyIHRocmVhZC4gICovCiArCi0rICAvKiBCZSBzdXJlIEdEQiBp cyBhbHJlYWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLwotKyAgdGltZWRfbXV0ZXhf bG9jayAoJmdkYnN0b3BfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ri c3RvcF9tdXRleCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrICAgICAgc3RlcCA9IDk5OworKyAg ICAgIGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZCwgJnRocmVhZF9yZXN1bHQpOworKyAgICAgIGFz c2VydCAoaSA9PSAwKTsKKysgICAgICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikg OTlVTCk7CisrI2VuZGlmCisrCisrICAgICAgLyogQmUgc3VyZSBvdXIgY2hpbGQga25vd3Mgd2Ug ZGlkIG5vdCBnZXQgY2F1Z2h0IGFib3ZlLiAgKi8KKysKKysgICAgICBpID0ga2lsbCAoY2hpbGQs IFNJR1VTUjEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBTbGVlcCBm b3IgYSB3aGlsZSB0byBjaGVjayBHREIncyBgaW5mbyB0aHJlYWRzJyBubyBsb25nZXIgdHJhY2tz IHVzIGluCisrCSB0aGUgY2hpbGQgZm9yay4gICovCiArCi0rICByd2F0Y2hfc3RvcmUgPSB0aHJl YWQxX3J3YXRjaDsKKysgICAgICBpID0gc2xlZXAgKDIpOworKyAgICAgIGFzc2VydCAoaSA9PSAw KTsKKysKKysgICAgICBfZXhpdCAoMCk7CisrICAgIGNhc2UgMDoKKysgICAgICBwcmludGYgKCJj aGlsZCVkOiAlZFxuIiwgbnIsIChpbnQpIGdldHBpZCAoKSk7CisrCisrICAgICAgLyogTGV0IHRo ZSBwYXJlbnQgc2lnbmFsIHVzIGFib3V0IGl0cyBzdWNjZXNzLiAgQmUgY2FyZWZ1bCBvZiByYWNl cy4gICovCisrCisrICAgICAgZm9yIChsb29wID0gMDsgbG9vcCA8IDEwMDA7IGxvb3ArKykKKysJ eworKwkgIC8qIFBhcmVudCBlaXRoZXIgZGllZCAoYW5kIFVTUjFfR09UIGlzIHplcm8pIG9yIGl0 IHN1Y2NlZWRlZC4gICovCisrCSAgaWYgKGtpbGwgKGdldHBwaWQgKCksIDApICE9IDApCisrCSAg ICBicmVhazsKKysJICAvKiBQYXJlbnQgc3VjY2VlZGVkPyAgKi8KKysJICBpZiAodXNyMV9nb3Qp CisrCSAgICBicmVhazsKICsKLSsgIC8qIEJlIHN1cmUgdGhlICJUICh0cmFjaW5nIHN0b3ApIiB0 ZXN0IGNhbiBwcm9jZWVkIGZvciBib3RoIHRocmVhZHMuICAqLwotKyAgdGltZWRfbXV0ZXhfbG9j ayAoJnRlcm1pbmF0ZV9tdXRleCk7Ci0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJt aW5hdGVfbXV0ZXgpOwotKyAgYXNzZXJ0IChpID09IDApOworKwkgIGRlbGF5ICgpOworKwl9Cisr ICAgICAgYXNzZXJ0ICh1c3IxX2dvdCk7CiArCi0rICByZXR1cm4gTlVMTDsKLSt9CisrICAgICAg LyogV2UgbXVzdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmYWxzZSB3YXRjaHBvaW50IHJl bW92YWwpLiAgKi8KICsKLStzdGF0aWMgdm9pZCAqCi0rdGhyZWFkMl9mdW5jICh2b2lkICp1bnVz ZWQpCi0rewotKyAgaW50IGk7Ci0rICB2b2xhdGlsZSBpbnQgcndhdGNoX3N0b3JlOworKyAgICAg IGJyZWFrcG9pbnQgKCk7CisrICAgIH0KICsKLSsgIHRocmVhZDJfdGlkID0gZ2V0dGlkICgpOwot KyAgaSA9IHB0aHJlYWRfY29uZF9zaWduYWwgKCZ0aHJlYWQyX3RpZF9jb25kKTsKKysgIGkgPSBz aWdhY3Rpb24gKFNJR1VTUjEsICZvbGRhY3QsIE5VTEwpOwogKyAgYXNzZXJ0IChpID09IDApOwor K30KICsKLSsgIC8qIEJlIHN1cmUgR0RCIGlzIGFscmVhZHkgc3RvcHBlZCBiZWZvcmUgY29udGlu dWluZy4gICovCi0rICB0aW1lZF9tdXRleF9sb2NrICgmZ2Ric3RvcF9tdXRleCk7Ci0rICBpID0g cHRocmVhZF9tdXRleF91bmxvY2sgKCZnZGJzdG9wX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAw KTsKKysjZWxzZQorKyMgZXJyb3IgIiFGT0xMT1dfUEFSRU5UICYmICFGT0xMT1dfQ0hJTEQiCisr I2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmstbXQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10 LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZGFjZmMwCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1t dC5jCitAQCAtMCwwICsxLDE1NyBAQAorKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdh dGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgogKwotKyAgcndhdGNoX3N0 b3JlID0gdGhyZWFkMl9yd2F0Y2g7CisrICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICAvKiBCZSBzdXJlIHRoZSAiVCAodHJhY2luZyBz dG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSsgIHRpbWVkX211 dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2Nr ICgmdGVybWluYXRlX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKKysgICBUaGlzIGZpbGUg aXMgcGFydCBvZiBHREIuCiArCi0rICByZXR1cm4gTlVMTDsKLSt9CisrICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KICsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rcHJvY19zdHJpbmcgKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpsaW5lKQotK3sKLSsgIEZJTEUgKmY7Ci0r ICBzdGF0aWMgY2hhciBidWZbTElORV9NQVhdOwotKyAgc2l6ZV90IGxpbmVfbGVuID0gc3RybGVu IChsaW5lKTsKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwotKyAgZiA9IGZvcGVuIChmaWxl bmFtZSwgInIiKTsKLSsgIGlmIChmID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChz dGRlcnIsICJmb3BlbiAoXCIlc1wiKSBmb3IgXCIlc1wiOiAlc1xuIiwgZmlsZW5hbWUsIGxpbmUs Ci0rCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0IChFWElUX0ZBSUxVUkUp OwotKyAgICB9Ci0rICB3aGlsZSAoZXJybm8gPSAwLCBmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1Ziks IGYpKQotKyAgICB7Ci0rICAgICAgY2hhciAqczsKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICAg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorKyAgIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KICsKLSsgICAgICBzID0gc3RyY2hyIChidWYsICdc bicpOwotKyAgICAgIGFzc2VydCAocyAhPSBOVUxMKTsKLSsgICAgICAqcyA9IDA7CisrI2luY2x1 ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzL3dhaXQu aD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUg PHB0aHJlYWQuaD4KICsKLSsgICAgICBpZiAoc3RybmNtcCAoYnVmLCBsaW5lLCBsaW5lX2xlbikg IT0gMCkKLSsJY29udGludWU7CisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KKysjaW5jbHVkZSA8 dW5pc3RkLmg+CisrI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dldHRpZCkKICsKLSsg ICAgICBpZiAoZmNsb3NlIChmKSkKLSsJewotKwkgIGZwcmludGYgKHN0ZGVyciwgImZjbG9zZSAo XCIlc1wiKSBmb3IgXCIlc1wiOiAlc1xuIiwgZmlsZW5hbWUsIGxpbmUsCi0rCQkgICBzdHJlcnJv ciAoZXJybm8pKTsKLSsJICBleGl0IChFWElUX0ZBSUxVUkUpOwotKwl9CisrLyogTm9uLWF0b21p YyBgdmFyKysnIHNob3VsZCBub3QgaHVydCBhcyB3ZSBzeW5jaHJvbml6ZSB0aGUgdGhyZWFkcyBi eSB0aGUgU1RFUAorKyAgIHZhcmlhYmxlLiAgSGl0LWNvbW1lbnRzIG5lZWQgdG8gYmUgZHVwbGlj aXRlIHRoZXJlIHRvIGNhdGNoIGJvdGggYXQtc3RvcHMKKysgICBhbmQgYmVoaW5kLXN0b3BzLCBk ZXBlbmRpbmcgb24gdGhlIHRhcmdldC4gICovCiArCi0rICAgICAgcmV0dXJuICZidWZbbGluZV9s ZW5dOwotKyAgICB9Ci0rICBpZiAoZXJybm8gIT0gMCkKLSsgICAgewotKyAgICAgIGZwcmludGYg KHN0ZGVyciwgImZnZXRzIChcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwgc3RyZXJyb3IgKGVycm5v KSk7Ci0rICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSsgICAgfQotKyAgZnByaW50ZiAoc3Rk ZXJyLCAiXCIlc1wiOiBObyBsaW5lIFwiJXNcIiBmb3VuZC5cbiIsIGZpbGVuYW1lLCBsaW5lKTsK LSsgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rfQorK3N0YXRpYyB2b2xhdGlsZSBpbnQgdmFyOwog KwotK3N0YXRpYyB1bnNpZ25lZCBsb25nCi0rcHJvY191bG9uZyAoY29uc3QgY2hhciAqZmlsZW5h bWUsIGNvbnN0IGNoYXIgKmxpbmUpCisrc3RhdGljIHZvaWQKKytkdW1teSAodm9pZCkKICt7Ci0r ICBjb25zdCBjaGFyICpzID0gcHJvY19zdHJpbmcgKGZpbGVuYW1lLCBsaW5lKTsKLSsgIGxvbmcg cmV0dmFsOwotKyAgY2hhciAqZW5kOwotKwotKyAgZXJybm8gPSAwOwotKyAgcmV0dmFsID0gc3Ry dG9sIChzLCAmZW5kLCAxMCk7Ci0rICBpZiAocmV0dmFsIDwgMCB8fCByZXR2YWwgPj0gTE9OR19N QVggfHwgKGVuZCAmJiAqZW5kKSkKLSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlwi JXNcIjpcIiVzXCI6ICVsZCwgJXNcbiIsIGZpbGVuYW1lLCBsaW5lLCByZXR2YWwsCi0rCSAgICAg ICBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwotKyAgICB9 Ci0rICByZXR1cm4gcmV0dmFsOwogK30KICsKICtzdGF0aWMgdm9pZAotK3N0YXRlX3dhaXQgKHBp ZF90IHByb2Nlc3MsIGNvbnN0IGNoYXIgKndhbnRlZCkKKyticmVha3BvaW50ICh2b2lkKQogK3sK LSsgIGNoYXIgKmZpbGVuYW1lOwotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgdGltZXNwZWMgc3RhcnQs IG5vdzsKLSsgIGNvbnN0IGNoYXIgKnN0YXRlOwotKwotKyAgaSA9IGFzcHJpbnRmICgmZmlsZW5h bWUsICIvcHJvYy8lbHUvc3RhdHVzIiwgKHVuc2lnbmVkIGxvbmcpIHByb2Nlc3MpOwotKyAgYXNz ZXJ0IChpID4gMCk7CisrfQogKwotKyAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05J QywgJnN0YXJ0KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKKysvKiBJbmNsdWRlIGhlcmUgdGhlIGZ1 bmN0aW9uczoKKysgICBzdGF0aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOworKyAgIHN0YXRpYyB2 b2lkIGRlbGF5ICh2b2lkKTsgICovCiArCi0rICBkbwotKyAgICB7Ci0rICAgICAgc3RhdGUgPSBw cm9jX3N0cmluZyAoZmlsZW5hbWUsICJTdGF0ZTpcdCIpOwotKyAgICAgIGlmIChzdHJjbXAgKHN0 YXRlLCB3YW50ZWQpID09IDApCi0rCXsKLSsJICBmcmVlIChmaWxlbmFtZSk7Ci0rCSAgcmV0dXJu OwotKwl9Cisrc3RhdGljIHB0aHJlYWRfdCB0aHJlYWQ7Cisrc3RhdGljIHZvbGF0aWxlIGludCBz dGVwOworKyNkZWZpbmUgVEhSRUFECiArCi0rICAgICAgaWYgKHNjaGVkX3lpZWxkICgpKQotKwl7 Ci0rCSAgcGVycm9yICgic2NoZWRfeWllbGQoKSIpOwotKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7 Ci0rCX0KKysjaW5jbHVkZSAid2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyIKICsKLSsgICAgICBp ID0gY2xvY2tfZ2V0dGltZSAoQ0xPQ0tfTU9OT1RPTklDLCAmbm93KTsKLSsgICAgICBhc3NlcnQg KGkgPT0gMCk7Ci0rICAgICAgYXNzZXJ0IChub3cudHZfc2VjID49IHN0YXJ0LnR2X3NlYyk7Ci0r ICAgIH0KLSsgIHdoaWxlIChub3cudHZfc2VjIC0gc3RhcnQudHZfc2VjIDwgVElNRU9VVCk7Cisr c3RhdGljIHZvaWQgKgorK3N0YXJ0ICh2b2lkICphcmcpCisreworKyAgaWYgKHN0ZXAgPj0gMykK KysgICAgZ290byBzdGVwXzM7CiArCi0rICBmcHJpbnRmIChzdGRlcnIsICJUaW1lZCBvdXQgd2Fp dGluZyBmb3IgUElEICVsdSBcIiVzXCIgKG5vdyBpdCBpcyBcIiVzXCIpIVxuIiwKLSsJICAgKHVu c2lnbmVkIGxvbmcpIHByb2Nlc3MsIHdhbnRlZCwgc3RhdGUpOwotKyAgZXhpdCAoRVhJVF9GQUlM VVJFKTsKLSt9CisrICB3aGlsZSAoc3RlcCAhPSAxKQorKyAgICBkZWxheSAoKTsKICsKLStzdGF0 aWMgdm9sYXRpbGUgcGlkX3QgdHJhY2VyID0gMDsKLStzdGF0aWMgcHRocmVhZF90IHRocmVhZDEs IHRocmVhZDI7CisrICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUIgKi8KKysgIGR1bW15ICgp OwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLworKyAgc3RlcCA9IDI7CisrICB3aGlsZSAoc3RlcCAh PSAzKQorKyAgICB7CisrICAgICAgaWYgKHN0ZXAgPT0gOTkpCisrCWdvdG8gc3RlcF85OTsKKysg ICAgICBkZWxheSAoKTsKKysgICAgfQogKwotK3N0YXRpYyB2b2lkCi0rY2xlYW51cCAodm9pZCkK LSt7Ci0rICBwcmludGYgKCJSZXN1bWluZyBHREIgUElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25n KSB0cmFjZXIpOworK3N0ZXBfMzoKKysgIGlmIChzdGVwID49IDUpCisrICAgIGdvdG8gc3RlcF81 OwogKwotKyAgaWYgKHRyYWNlcikKKysgIHZhcisrOwkvKiBhZnRlci1mb3JrMS1CICovCisrICBk dW1teSAoKTsJLyogYWZ0ZXItZm9yazEtQiAqLworKyAgc3RlcCA9IDQ7CisrICB3aGlsZSAoc3Rl cCAhPSA1KQogKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rICAgICAgaW50IHRyYWNlcl9zYXZlID0g dHJhY2VyOworKyAgICAgIGlmIChzdGVwID09IDk5KQorKwlnb3RvIHN0ZXBfOTk7CisrICAgICAg ZGVsYXkgKCk7CisrICAgIH0KICsKLSsgICAgICB0cmFjZXIgPSAwOworK3N0ZXBfNToKKysgIHZh cisrOwkvKiBhZnRlci1mb3JrMi1CICovCisrICBkdW1teSAoKTsJLyogYWZ0ZXItZm9yazItQiAq LworKyAgcmV0dXJuICh2b2lkICopIDVVTDsKICsKLSsgICAgICBpID0ga2lsbCAodHJhY2VyX3Nh dmUsIFNJR0NPTlQpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgfQorK3N0ZXBfOTk6 CisrICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4g YnJlYWtwb2ludCkuICAqLworKyAgdmFyKys7CisrICBicmVha3BvaW50ICgpOworKyAgcmV0dXJu ICh2b2lkICopIDk5VUw7CiArfQogKwogK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJn dikKKyttYWluICh2b2lkKQogK3sKICsgIGludCBpOwotKyAgaW50IHN0YW5kYWxvbmUgPSAwOwot KwotKyAgaWYgKGFyZ2MgPT0gMiAmJiBzdHJjbXAgKGFyZ3ZbMV0sICItcyIpID09IDApCi0rICAg IHN0YW5kYWxvbmUgPSAxOwotKyAgZWxzZQotKyAgICBhc3NlcnQgKGFyZ2MgPT0gMSk7CisrICB2 b2lkICp0aHJlYWRfcmVzdWx0OwogKwogKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOworKyAgcHJp bnRmICgibWFpbjogJWRcbiIsIChpbnQpIGdldHRpZCAoKSk7CiArCi0rICB0aW1lZF9tdXRleF9s b2NrICgmZ2Ric3RvcF9tdXRleCk7Ci0rCi0rICB0aW1lZF9tdXRleF9sb2NrICgmdGVybWluYXRl X211dGV4KTsKLSsKLSsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZDEsIE5VTEwsIHRocmVh ZDFfZnVuYywgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrICAvKiBHZW5lcmFsIHdhdGNo cG9pbnRzIHZhbGlkaXR5LiAgKi8KKysgIHZhcisrOwkvKiB2YWxpZGl0eS1maXJzdCAqLworKyAg ZHVtbXkgKCk7CS8qIHZhbGlkaXR5LWZpcnN0ICovCiArCi0rICBpID0gcHRocmVhZF9jcmVhdGUg KCZ0aHJlYWQyLCBOVUxMLCB0aHJlYWQyX2Z1bmMsIE5VTEwpOworKyAgaSA9IHB0aHJlYWRfY3Jl YXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7CiAr Ci0rICBpZiAoIXN0YW5kYWxvbmUpCi0rICAgIHsKLSsgICAgICB0cmFjZXIgPSBwcm9jX3Vsb25n ICgiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiVHJhY2VyUGlkOlx0Iik7Ci0rICAgICAgaWYgKHRyYWNl ciA9PSAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3RjYXNlIG11c3QgYmUg cnVuIGJ5IEdEQiFcbiIpOwotKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rCX0KLSsgICAgICBp ZiAodHJhY2VyICE9IGdldHBwaWQgKCkpCi0rCXsKLSsJICBmcHJpbnRmIChzdGRlcnIsICJUaGUg dGVzdGNhc2UgcGFyZW50IG11c3QgYmUgb3VyIEdEQiB0cmFjZXIhXG4iKTsKLSsJICBleGl0IChF WElUX0ZBSUxVUkUpOwotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIFNJR0NPTlQgb3VyIGRlYnVnZ2Vy IGluIHRoZSBjYXNlIG9mIG91ciBjcmFzaCBhcyB3ZSB3b3VsZCBkZWFkbG9jawotKyAgICAgb3Ro ZXJ3aXNlLiAgKi8KLSsKLSsgIGF0ZXhpdCAoY2xlYW51cCk7Ci0rCi0rICBwcmludGYgKCJTdG9w cGluZyBHREIgUElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25nKSB0cmFjZXIpOwotKwotKyAgaWYg KHRyYWNlcikKLSsgICAgewotKyAgICAgIGkgPSBraWxsICh0cmFjZXIsIFNJR1NUT1ApOwotKyAg ICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgICBzdGF0ZV93YWl0ICh0cmFjZXIsICJUIChzdG9w cGVkKSIpOwotKyAgICB9CisrICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8KKysgIGR1 bW15ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQtQSAqLworKyAgc3RlcCA9IDE7CisrICB3aGlsZSAo c3RlcCAhPSAyKQorKyAgICBkZWxheSAoKTsKICsKLSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJl YWQxX3RpZF9tdXRleCk7Ci0rICB0aW1lZF9tdXRleF9sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgp OworKyAgLyogSGFyZHdhcmUgd2F0Y2hwb2ludHMgZ290IGRpc2FybWVkIGhlcmUuICAqLworKyAg Zm9ya29mZiAoMSk7CiArCi0rICAvKiBMZXQgdGhlIHRocmVhZHMgc3RhcnQuICAqLwotKyAgaSA9 IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7CisrICB2YXIrKzsJLyogYWZ0 ZXItZm9yazEtQSAqLworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsxLUEgKi8KKysgIHN0ZXAg PSAzOworKyNpZmRlZiBGT0xMT1dfQ0hJTEQKKysgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMgaXQg d2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLworKyAgaSA9IHB0aHJlYWRfY3Jl YXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7Cisr I2VuZGlmCisrICB3aGlsZSAoc3RlcCAhPSA0KQorKyAgICBkZWxheSAoKTsKICsKLSsgIHByaW50 ZiAoIldhaXRpbmcgdGlsbCB0aGUgdGhyZWFkcyBpbml0aWFsaXplIHRoZWlyIFRJRHMuXG4iKTsK LSsKLSsgIGlmICh0aHJlYWQxX3RpZCA9PSAwKQotKyAgICB7Ci0rICAgICAgaSA9IHB0aHJlYWRf Y29uZF93YWl0ICgmdGhyZWFkMV90aWRfY29uZCwgJnRocmVhZDFfdGlkX211dGV4KTsKLSsgICAg ICBhc3NlcnQgKGkgPT0gMCk7CisrICAvKiBBIHNhbml0eSBjaGVjayBmb3IgZG91YmxlIGhhcmR3 YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAqLworKyAgZm9ya29mZiAoMik7CiArCi0rICAgICAg YXNzZXJ0ICh0aHJlYWQxX3RpZCA+IDApOwotKyAgICB9CisrICB2YXIrKzsJLyogYWZ0ZXItZm9y azItQSAqLworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUEgKi8KKysgIHN0ZXAgPSA1Owor KyNpZmRlZiBGT0xMT1dfQ0hJTEQKKysgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMgaXQgd2FzIGRl bGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLworKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgm dGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrI2VuZGlm CiArCi0rICBpZiAodGhyZWFkMl90aWQgPT0gMCkKLSsgICAgewotKyAgICAgIGkgPSBwdGhyZWFk X2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rICAg ICAgYXNzZXJ0IChpID09IDApOworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkLCAmdGhyZWFk X3Jlc3VsdCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBhc3NlcnQgKHRocmVhZF9yZXN1bHQg PT0gKHZvaWQgKikgNVVMKTsKICsKLSsgICAgICBhc3NlcnQgKHRocmVhZDJfdGlkID4gMCk7Ci0r ICAgIH0KKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHBvaW50LWZvcmsuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjVmNjJl N2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLmMKK0BAIC0wLDAgKzEsNTcgQEAKKysvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRl biBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KICsKLSsgIHBy aW50ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0gJWx1LCBQSUQgPSAlbHUu XG4iLAotKwkgICh1bnNpZ25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVuc2lnbmVkIGxvbmcpIHRo cmVhZDJfdGlkLAotKwkgICh1bnNpZ25lZCBsb25nKSBnZXRwaWQgKCkpOworKyAgIENvcHlyaWdo dCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgcHJpbnRm ICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVkIGJ5IHRoZSB3YXRjaHBvaW50 cy5cbiIpOworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KICsKLSsgIGlmICh0cmFjZXIp Ci0rICAgIHsKLSsgICAgICAvKiBzMzkweC11bmtub3duLWxpbnV4LWdudSB3aWxsIGZhaWwgd2l0 aCAiUiAocnVubmluZykiLiAgKi8KKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwot KyAgICAgIHN0YXRlX3dhaXQgKHRocmVhZDFfdGlkLCAiVCAodHJhY2luZyBzdG9wKSIpOworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMl90aWQs ICJUICh0cmFjaW5nIHN0b3ApIik7Ci0rICAgIH0KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICAg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorKyAgIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KICsKLSsgIGNsZWFudXAgKCk7CisrI2luY2x1ZGUg PGFzc2VydC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzL3dhaXQuaD4K KysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CiArCi0rICBwcmludGYg KCJKb2luaW5nIHRoZSB0aHJlYWRzLlxuIik7Cisrc3RhdGljIHZvbGF0aWxlIGludCB2YXI7CiAr Ci0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgYXNz ZXJ0IChpID09IDApOworK3N0YXRpYyB2b2lkCisrYnJlYWtwb2ludCAodm9pZCkKKyt7CisrfQog KwotKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkMSwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0g MCk7CisrLyogSW5jbHVkZSBoZXJlIHRoZSBmdW5jdGlvbjoKKysgICBzdGF0aWMgdm9pZCBmb3Jr b2ZmIChpbnQgbnIpOyAgKi8KICsKLSsgIGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZDIsIE5VTEwp OwotKyAgYXNzZXJ0IChpID09IDApOworKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmstZm9ya29m Zi5jIgogKwotKyAgcHJpbnRmICgiRXhpdGluZy5cbiIpOwkvKiBicmVhay1hdC1leGl0ICovCisr aW50CisrbWFpbiAodm9pZCkKKyt7CisrICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7CisrICBwcmlu dGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0cGlkICgpKTsKICsKLSsgIC8qIEp1c3QgcHJldmVu dCBjb21waWxlciBgd2FybmluZzogGyRCIUYbKEJ1bnVzZWRYX3J3YXRjaBskQiFHGyhCIGRlZmlu ZWQgYnV0IG5vdCB1c2VkJy4gICovCi0rICB1bnVzZWQxX3J3YXRjaCA9IDE7Ci0rICB1bnVzZWQy X3J3YXRjaCA9IDI7CisrICAvKiBHZW5lcmFsIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KKysg IHZhcisrOworKyAgLyogSGFyZHdhcmUgd2F0Y2hwb2ludHMgZ290IGRpc2FybWVkIGhlcmUuICAq LworKyAgZm9ya29mZiAoMSk7CisrICAvKiBUaGlzIHdhdGNocG9pbnQgZ290IGxvc3QgYmVmb3Jl LiAgKi8KKysgIHZhcisrOworKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBoYXJkd2Fy ZSB3YXRjaHBvaW50cyByZW1vdmFsLiAgKi8KKysgIGZvcmtvZmYgKDIpOworKyAgdmFyKys7CiAr Ci0rICByZXR1cm4gRVhJVF9TVUNDRVNTOworKyAgcmV0dXJuIDA7CiArfQotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHAKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKIG5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41YWQxYTRlCitpbmRleCAwMDAwMDAwLi4xZGM5M2FiCiAt LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFk cy1yZW9yZGVyLmV4cAotQEAgLTAsMCArMSwxMDUgQEAKLSsjIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLmV4cAorQEAgLTAsMCArMSwxMzAgQEAKKysjIENvcHlyaWdodCAyMDA4 LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CkBAIC0yODMwMywxMTcgKzE4OTE4LDEyMyBAQCBpbmRleCAwMDAwMDAw Li41YWQxYTRlCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rIyBUZXN0IEdEQiBj YW4gY29wZSB3aXRoIHR3byB3YXRjaHBvaW50cyBiZWluZyBoaXQgYnkgZGlmZmVyZW50IHRocmVh ZHMgYXQgdGhlCi0rIyBzYW1lIHRpbWUsIEdEQiByZXBvcnRzIG9uZSBvZiB0aGVtIGFuZCBhZnRl ciAiY29udGludWUiIHRvIHJlcG9ydCB0aGUgb3RoZXIKLSsjIG9uZSBHREIgc2hvdWxkIG5vdCBi ZSBjb25mdXNlZCBieSBkaWZmZXJlbnRseSBzZXQgd2F0Y2hwb2ludHMgdGhhdCB0aW1lLgotKyMg VGhpcyBpcyB0aGUgZ29hbCBvZiAicmVvcmRlcjEiLiAgInJlb3JkZXIwIiB0ZXN0cyB0aGUgYmFz aWMgZnVuY3Rpb25hbGl0eSBvZgotKyMgdHdvIHdhdGNocG9pbnQgYmVpbmcgaGl0IGF0IHRoZSBz YW1lIHRpbWUsIHdpdGhvdXQgcmVvcmRlcmluZyB0aGVtIGR1cmluZyB0aGUKLSsjIHN0b3AuICBU aGUgZm9ybWVybHkgYnJva2VuIGZ1bmN0aW9uYWxpdHkgaXMgZHVlIHRvIHRoZSBhbGwtc3RvcCBt b2RlIGRlZmF1bHQKLSsjICJzaG93IGJyZWFrcG9pbnQgYWx3YXlzLWluc2VydGVkIiBiZWluZyAi b2ZmIi4gIEZvcm1lcmx5IHRoZSByZW1lbWJlcmVkIGhpdAotKyMgY291bGQgYmUgYXNzaWduZWQg ZHVyaW5nIGNvbnRpbnVhdGlvbiBvZiBhIHRocmVhZCB3aXRoIHBlbmRpbmcgU0lHVFJBUCB0byB0 aGUKLSsjIGRpZmZlcmVudC9uZXcgd2F0Y2hwb2ludCwganVzdCBiYXNlZCBvbiB0aGUgd2F0Y2hw b2ludC9kZWJ1ZyByZWdpc3RlciBudW1iZXIuCi0rCi0raWYge1t0YXJnZXRfaW5mbyBleGlzdHMg Z2RiLG5vX2hhcmR3YXJlX3dhdGNocG9pbnRzXQotKyAgICB8fCAhW2lzdGFyZ2V0ICotKi1saW51 eCpdfSB7Ci0rICAgIHJldHVybiAwOwotK30KKysjIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3 LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgogKwotK3NldCB0ZXN0 ZmlsZSAid2F0Y2h0aHJlYWRzLXJlb3JkZXIiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwot K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiB7W2dkYl9j b21waWxlX3B0aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICR7YmluZmls ZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1scnRdXSAhPSAiIiB9 IHsKLSsgICAgcmV0dXJuIC0xCi0rfQorK3Byb2MgdGVzdCB7dHlwZSBzeW1ib2x9IHsKKysgICAg Z2xvYmFsIG9iamRpciBzdWJkaXIgc3JjZGlyCiArCi0rZm9yZWFjaCByZW9yZGVyIHswIDF9IHsK KysgICAgc2V0IHRlc3Qgd2F0Y2hwb2ludC1mb3JrCiArCiArICAgIGdsb2JhbCBwZl9wcmVmaXgK ICsgICAgc2V0IHByZWZpeF90ZXN0ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9wcmVmaXgg InJlb3JkZXIkcmVvcmRlcjoiCisrICAgIGxhcHBlbmQgcGZfcHJlZml4ICIkdHlwZToiCisrICAg IHNldCBwcmVmaXhfbXQgJHBmX3ByZWZpeAogKwotKyAgICBjbGVhbl9yZXN0YXJ0ICR0ZXN0Zmls ZQorKyAgICAjIG5vIHRocmVhZHMKICsKLSsgICAgZ2RiX3Rlc3QgInNldCBjYW4tdXNlLWh3LXdh dGNocG9pbnRzIDEiCisrICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9tdAorKyAgICBsYXBwZW5k IHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgogKwotKyAgICBpZiAhW3J1bnRvX21haW5dIHsK LSsJZ2RiX3N1cHByZXNzX3Rlc3RzCisrICAgIHNldCBleGVjdXRhYmxlICR7dGVzdH0tJHt0eXBl fQorKyAgICBpZiB7IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0uYyAk e29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBh ZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9ICIiIH0geworKwl1bnRlc3RlZCAke3Rlc3R9 LmV4cAorKwlyZXR1cm4gLTEKICsgICAgfQorKyAgICBjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxl CiArCi0rICAgICMgVXNlICJyd2F0Y2giIGFzICJ3YXRjaCIgd291bGQgcmVwb3J0IHRoZSB3YXRj aHBvaW50IGNoYW5nZWQganVzdCBiYXNlZCBvbiBpdHMKLSsgICAgIyByZWFkIG1lbW9yeSB2YWx1 ZSBkdXJpbmcgYSBzdG9wIGJ5IHVucmVsYXRlZCBldmVudC4gIFdlIGFyZSBpbnRlcmVzdGVkIHRv IG5vdAotKyAgICAjIHRvIGxvc2UgdGhlIGhhcmR3YXJlIHdhdGNocG9pbnQgdHJpZ2dlci4KLSsK LSsgICAgZ2RiX3Rlc3QgInJ3YXRjaCB0aHJlYWQxX3J3YXRjaCIgIkhhcmR3YXJlIHJlYWQgd2F0 Y2hwb2ludCBcWzAtOVxdKzogdGhyZWFkMV9yd2F0Y2giCi0rICAgIGdkYl90ZXN0IHtzZXQgJHJ3 YXRjaDE9JGJwbnVtfQotKyAgICBzZXQgdGVzdCAicndhdGNoIHRocmVhZDJfcndhdGNoIgotKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rCS1yZSAiVGFyZ2V0IGRvZXMgbm90 IHN1cHBvcnQgdGhpcyB0eXBlIG9mIGhhcmR3YXJlIHdhdGNocG9pbnRcXC5cclxuJGdkYl9wcm9t cHQgJCIgewotKwkgICAgIyBwcGM2NCBzdXBwb3J0cyBhdCBtb3N0IDEgaHcgd2F0Y2hwb2ludHMu Ci0rCSAgICB1bnN1cHBvcnRlZCAkdGVzdAotKwkgICAgcmV0dXJuCi0rCX0KLSsJLXJlICJIYXJk d2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRocmVhZDJfcndhdGNoXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQorKyAgICBnZGJfdGVzdCAic2hvdyBkZXRh Y2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRoZSBjaGlsZCBvZiBhIGZvcmsg aXMgb24uIgorKyAgICBnZGJfdGVzdCAic2V0IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCisrICAg IGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUiICJEZWJ1Z2dlciByZXNwb25zZSB0byBh IHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlzIFwiJHR5cGVcIi4iCisrICAgICMgVGVz dGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB0eXBlLgorKyAg ICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJpbnQgcGFzcyIKKysKKysgICAg aWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7CisrCWdkYl9zdXBwcmVzc190ZXN0cworKwlyZXR1 cm4KICsgICAgfQotKyAgICBnZGJfdGVzdCB7c2V0ICRyd2F0Y2gyPSRicG51bX0KLSsgICAgZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWV4aXQiXQogKwotKyAg ICAjIFRoZSB3YXRjaHBvaW50cyBjYW4gaGFwcGVuIGluIGFyYml0cmFyeSBvcmRlciBkZXBlbmRp bmcgb24gcmFuZG9tOgotKyAgICAjIFNFTDogRm91bmQgMiBTSUdUUkFQIGV2ZW50cywgc2VsZWN0 aW5nICNbMDFdCi0rICAgICMgQXMgR0RCIGNvbnRhaW5zIG5vIHNyYW5kKCkgb24gdGhlIHNwZWNp ZmljIGhvc3QvT1MgaXQgd2lsbCBiZWhhdmUgYWx3YXlzIHRoZQotKyAgICAjIHNhbWUuICBTdWNo IG9yZGVyIGNhbm5vdCBiZSBndWFyYW50ZWVkIGZvciBHREIgaW4gZ2VuZXJhbC4KKysgICAgIyBJ bnN0YWxsIHRoZSB3YXRjaHBvaW50IG9ubHkgYWZ0ZXIgZ2V0dGluZyBpbnRvIE1BSU4gLSB3b3Jr YXJvdW5kIHNvbWUgUFBDCisrICAgICMgcHJvYmxlbS4KKysgICAgZ2RiX3Rlc3QgIndhdGNoIHZh ciIgImF0Y2hwb2ludCAyOiB2YXIiICJTZXQgdGhlIHdhdGNocG9pbnQiCisrCisrICAgICMgSXQg aXMgbmV2ZXIgaGl0IGJ1dCBpdCBzaG91bGQgbm90IGJlIGxlZnQgb3ZlciBpbiB0aGUgZm9yaygp ZWQtb2ZmIGNoaWxkLgorKyAgICBnZGJfYnJlYWtwb2ludCAiYnJlYWtwb2ludCIKICsKICsgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgIkhhcmR3YXJlIHJlYWQgd2F0Y2hwb2ludCBc WzAtOVxdKzogdGhyZWFkXFsxMlxdX3J3YXRjaFxyXG5cclxuVmFsdWUgPSAwXHJcbjB4XFswLTlh LWZcXSsgaW4gdGhyZWFkXFsxMlxdX2Z1bmMgLioiIFwKLSsJICAgICAiY29udGludWUgYSIKKysJ ICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4qZm9y a29mZiAqXFwoMVxcKS4qIiAid2F0Y2hwb2ludHMgd29yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRp bnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50IGFm dGVyIHRoZSBmaXJzdCBmb3JrIgorKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAi YXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qZm9ya29mZiAq XFwoMlxcKS4qIiAid2F0Y2hwb2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rl c3QgImNvbnRpbnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVh a3BvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBc CisrCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDIuKk5ldyB2YWx1ZSA9IDMu KnJldHVybiAqMDsiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2Ri X3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LiIg ImZpbmlzaCIKKysKKysKKysgICAgIyB0aHJlYWRzCiArCi0rICAgIGlmICRyZW9yZGVyIHsKLSsJ Z2RiX3Rlc3Qge2RlbGV0ZSAkcndhdGNoMX0KLSsJZ2RiX3Rlc3Qge2RlbGV0ZSAkcndhdGNoMn0K KysgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4X210CisrICAgIGxhcHBlbmQgcGZfcHJlZml4ICJt dWx0aXRocmVhZGVkOiIKKysKKysgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0fS1tdC0ke3R5cGV9 CisrICAgIGlmIHsgW2dkYl9jb21waWxlX3B0aHJlYWRzICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0fS1tdC5jICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSBleGVjdXRhYmxlIFts aXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LUQkc3ltYm9sXV0gIT0gIiIgfSB7CisrCXVudGVz dGVkICR7dGVzdH0uZXhwCisrCXJldHVybiAtMQorKyAgICB9CisrICAgIGNsZWFuX3Jlc3RhcnQg JGV4ZWN1dGFibGUKICsKLSsJZ2RiX3Rlc3QgInJ3YXRjaCB1bnVzZWQxX3J3YXRjaCIgIkhhcmR3 YXJlIHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdW51c2VkMV9yd2F0Y2giCi0rCWdkYl90ZXN0 ICJyd2F0Y2ggdW51c2VkMl9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlc XSs6IHVudXNlZDJfcndhdGNoIgorKyAgICBnZGJfdGVzdCAic2V0IGZvbGxvdy1mb3JrLW1vZGUg JHR5cGUiCisrICAgICMgVGVzdGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBmb2xsb3ctZm9yay1tb2Rl IGNoaWxkJyB0eXBlLgorKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJp bnQgcGFzcyIKICsKLSsJZ2RiX3Rlc3QgInJ3YXRjaCB0aHJlYWQxX3J3YXRjaCIgIkhhcmR3YXJl IHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdGhyZWFkMV9yd2F0Y2giCi0rCWdkYl90ZXN0ICJy d2F0Y2ggdGhyZWFkMl9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6 IHRocmVhZDJfcndhdGNoIgorKyAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB0aGVuIHsKKysJZ2Ri X3N1cHByZXNzX3Rlc3RzCisrCXJldHVybgogKyAgICB9CiArCisrICAgICMgSW5zdGFsbCB0aGUg d2F0Y2hwb2ludCBvbmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlOIC0gd29ya2Fyb3VuZCBzb21l IFBQQworKyAgICAjIHByb2JsZW0uCisrICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9p bnQgMjogdmFyIiAiU2V0IHRoZSB3YXRjaHBvaW50IgorKworKyAgICAjIEl0IGlzIG5ldmVyIGhp dCBidXQgaXQgc2hvdWxkIG5vdCBiZSBsZWZ0IG92ZXIgaW4gdGhlIGZvcmsoKWVkLW9mZiBjaGls ZC4KKysgICAgZ2RiX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQiCisrCisrICAgIGdkYl90ZXN0ICJj b250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAwLipOZXcg dmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdhdGNocG9pbnRzIHdv cmsiCiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJIYXJkd2FyZSByZWFkIHdh dGNocG9pbnQgXFswLTlcXSs6IHRocmVhZFxbMTJcXV9yd2F0Y2hcclxuXHJcblZhbHVlID0gMFxy XG4weFxbMC05YS1mXF0rIGluIHRocmVhZFxbMTJcXV9mdW5jIC4qIiBcCi0rCSAgICAgImNvbnRp bnVlIGIiCisrCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDEuKk5ldyB2YWx1 ZSA9IDIuKnZhbGlkaXR5LXRocmVhZC1BLioiICJtdWx0aXRocmVhZGVkIHdhdGNocG9pbnRzIHdv cmsgYXQgQSIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2ludCAy OiB2YXIuKk9sZCB2YWx1ZSA9IDIuKk5ldyB2YWx1ZSA9IDMuKnZhbGlkaXR5LXRocmVhZC1CLioi ICJtdWx0aXRocmVhZGVkIHdhdGNocG9pbnRzIHdvcmsgYXQgQiIKKysgICAgZ2RiX3Rlc3QgImNv bnRpbnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50 IChBKSBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisr CSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDMuKk5ldyB2YWx1ZSA9IDQuKmFm dGVyLWZvcmsxLUEuKiIgIndhdGNocG9pbnQgQSBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1 ZSA9IDQuKk5ldyB2YWx1ZSA9IDUuKmFmdGVyLWZvcmsxLUIuKiIgIndhdGNocG9pbnQgQiBhZnRl ciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgInJl YWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50IChBKSBhZnRlciB0aGUgc2Vjb25k IGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjog dmFyLipPbGQgdmFsdWUgPSA1LipOZXcgdmFsdWUgPSA2LiphZnRlci1mb3JrMi1BLioiICJ3YXRj aHBvaW50IEEgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgorKyAgICBnZGJfdGVzdCAiY29udGludWUi IFwKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gNi4qTmV3IHZhbHVlID0g Ny4qYWZ0ZXItZm9yazItQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBzZWNvbmQgZm9yayIK KysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dyYW0gZXhpdGVkIG5v cm1hbGx5LiIgImZpbmlzaCIKICsKLSsgICAgIyBXaGlsZSB0aGUgZGVidWcgb3V0cHV0IGl0c2Vs ZiBpcyBub3QgY2hlY2tlZCBpbiB0aGlzIHRlc3RjYXNlIG9uZSBidWcgd2FzCi0rICAgICMgZm91 bmQgaW4gdGhlIERFQlVHX0lORlJVTiBjb2RlIHBhdGguCi0rICAgIGdkYl90ZXN0ICJzZXQgZGVi dWcgaW5mcnVuIDEiCiArCi0rICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1h dC1leGl0IiAiLipicmVhay1hdC1leGl0LioiCisrICAgICMgY2xlYW51cAogKwogKyAgICBzZXQg cGZfcHJlZml4ICRwcmVmaXhfdGVzdAogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xp Yi9jcC1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCi1pbmRl eCBkYmQyZjU5Li40NGUxYjUxIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvY3Atc3Vw cG9ydC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCi1AQCAtMjIy LDcgKzIyMiw3IEBAIHByb2MgY3BfdGVzdF9wdHlwZV9jbGFzcyB7IGluX2NvbW1hbmQgaW5fdGVz dG5hbWUgaW5fa2V5IGluX3RhZyBpbl9jbGFzc190YWJsZSB7Ci0gCi0gICAgIHNldCBwYXJzZV9v a2F5IDAKLSAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiRpbl9jb21tYW5kIiAiJGluX3Rlc3RuYW1l IC8vIHBhcnNlIGZhaWxlZCIgewotLQktcmUgInR5cGUgPSAoc3RydWN0fGNsYXNzKSR7d3NvcHR9 KFxbQS1aYS16MC05X1xdKikke3dzb3B0fSgoOlxbXlx7XF0qKT8pJHt3c29wdH1ceyguKilcfSR7 d3NvcHR9KFxbXlxyXG5cXSopXFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgewotKwktcmUgInR5cGUg PSAoc3RydWN0fGNsYXNzKSR7d3NvcHR9KFxbQS1aYS16MC05XzpcXSopJHt3c29wdH0oKDpcW15c e1xdKik/KSR7d3NvcHR9XHsoLiopXH0ke3dzb3B0fShcW15cclxuXF0qKVxbXHJcblxdKyRnZGJf cHJvbXB0ICQiIHsKLSAJICAgIHNldCBwYXJzZV9va2F5ICAgICAgICAgIDEKLSAJICAgIHNldCBh Y3R1YWxfa2V5ICAgICAgICAgICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotIAkgICAgc2V0IGFjdHVh bF90YWcgICAgICAgICAgJGV4cGVjdF9vdXQoMixzdHJpbmcpCi1AQCAtMjMxLDYgKzIzMSw3IEBA IHByb2MgY3BfdGVzdF9wdHlwZV9jbGFzcyB7IGluX2NvbW1hbmQgaW5fdGVzdG5hbWUgaW5fa2V5 IGluX3RhZyBpbl9jbGFzc190YWJsZSB7Ci0gCSAgICBzZXQgYWN0dWFsX3RhaWwgICAgICAgICAk ZXhwZWN0X291dCg2LHN0cmluZykKLSAJfQotICAgICB9Ci0rICAgIAotICAgICBpZiB7ICEgJHBh cnNlX29rYXkgfSB0aGVuIHsgcmV0dXJuIH0KLSAKLSAgICAgIyBDaGVjayB0aGUgYWN0dWFsIGtl eS4gIEl0IHdvdWxkIGJlIG5pY2UgdG8gcmVxdWlyZSB0aGF0IGl0IG1hdGNoCisrCisrdGVzdCBw YXJlbnQgRk9MTE9XX1BBUkVOVAorKworKyMgT25seSBHTlUvTGludXggaXMga25vd24gdG8gc3Vw cG9ydCBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnLgorK2lmIHtbaXN0YXJnZXQgIiotKi1s aW51eCoiXX0geworKyAgICB0ZXN0IGNoaWxkIEZPTExPV19DSElMRAorK30KIGRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAot aW5kZXggMGM5M2E3My4uZDBjMzQ5MyAxMDA2NDQKK2luZGV4IDliMDZhMmYuLjQxOWQ1YTkgMTAw NjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCiBAQCAtMjcsNiArMjcsNyBAQCBpZiB7JHRvb2wgPT0gIiJ9IHsKQEAgLTI4 NDg0LDcgKzE5MTA1LDcgQEAgaW5kZXggMDAwMDAwMC4uYjhlOTgzNgogKyAgICByZXR1cm4gMAog K30KIGRpZmYgLS1naXQgYS9nZGIvdGhyZWFkLmMgYi9nZGIvdGhyZWFkLmMKLWluZGV4IDU1YjRi OTYuLmUwYWQyZDMgMTAwNjQ0CitpbmRleCAxNmEyMDdjLi5jM2NmZjA2IDEwMDY0NAogLS0tIGEv Z2RiL3RocmVhZC5jCiArKysgYi9nZGIvdGhyZWFkLmMKIEBAIC02MSw3ICs2MSw2IEBAIHN0YXRp YyBpbnQgdGhyZWFkX2FsaXZlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CkBAIC0yODQ5NSw3ICsx OTExNiw3IEBAIGluZGV4IDU1YjRiOTYuLmUwYWQyZDMgMTAwNjQ0CiAgCiAgLyogRnJvbnRlbmQg dmlldyBvZiB0aGUgdGhyZWFkIHN0YXRlLiAgUG9zc2libGUgZXh0ZW5zaW9uczogc3RlcHBpbmcs CiAgICAgZmluaXNoaW5nLCB1bnRpbChsaW5nKSwuLi4gICovCi1AQCAtNDk3LDE2ICs0OTYsMjMg QEAgdGhyZWFkX2FsaXZlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQorQEAgLTUxNyw3ICs1MTYs NyBAQCB0aHJlYWRfYWxpdmUgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCiAgICByZXR1cm4gMTsK ICB9CiAgCkBAIC0yODUwMywzMiArMTkxMjQsMTIgQEAgaW5kZXggNTViNGI5Ni4uZTBhZDJkMyAx MDA2NDQKICt2b2lkCiAgcHJ1bmVfdGhyZWFkcyAodm9pZCkKICB7Ci0tICBzdHJ1Y3QgdGhyZWFk X2luZm8gKnRwLCAqbmV4dDsKLSsgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7Ci0rICBzdHJ1Y3Qg dGhyZWFkX2luZm8gKipwcmV2cCA9ICZ0aHJlYWRfbGlzdDsKLSAKLS0gIGZvciAodHAgPSB0aHJl YWRfbGlzdDsgdHA7IHRwID0gbmV4dCkKLSsgIGZvciAodHAgPSAqcHJldnA7IHRwOyB0cCA9ICpw cmV2cCkKLSAgICAgewotLSAgICAgIG5leHQgPSB0cC0+bmV4dDsKLSsgICAgICAvKiBJZiB0aGUg dGhyZWFkIGhhcyBkaWVkLCBmcmVlIGl0IGFuZCB1bmxpbmsgaXQgZnJvbSB0aGUgbGlzdC4KLSsJ IE90aGVyd2lzZSwgYWR2YW5jZSB0byB0aGUgbmV4dCB0aHJlYWQuICAqLwotICAgICAgIGlmICgh dGhyZWFkX2FsaXZlICh0cCkpCi0tCWRlbGV0ZV90aHJlYWQgKHRwLT5wdGlkKTsKLSsJewotKwkg ICpwcmV2cCA9IHRwLT5uZXh0OwotKwkgIGZyZWVfdGhyZWFkICh0cCk7Ci0rCX0KLSsgICAgICBl bHNlCi0rCXByZXZwID0gJnRwLT5uZXh0OwotICAgICB9Ci0gfQotIAorICAgc3RydWN0IHRocmVh ZF9pbmZvICp0cCwgKm5leHQ7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCi1p bmRleCAxYjRhYTlkLi4zY2ZlNTdlIDEwMDY0NAoraW5kZXggODVlN2I2Mi4uYjRmMGJmNyAxMDA2 NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMzQ5LDYgKzM0OSw3IEBA IHZvaWQKK0BAIC0zNDYsNiArMzQ2LDcgQEAgdm9pZAogIHByZXBhcmVfZXhlY3V0ZV9jb21tYW5k ICh2b2lkKQogIHsKICAgIGZyZWVfYWxsX3ZhbHVlcyAoKTsKQEAgLTI4NTM3LDE5ICsxOTEzOCwx OCBAQCBpbmRleCAxYjRhYTlkLi4zY2ZlNTdlIDEwMDY0NAogICAgLyogV2l0aCBtdWx0aXBsZSB0 aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMgc3RvcHBlZCwK ICAgICAgIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFibGUgdG8g ZGV0ZWN0IGl0LgogZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuYyBiL2dkYi90eXBlcHJpbnQu YwotaW5kZXggZjA5MDIzMS4uZmMxNWVjMSAxMDA2NDQKK2luZGV4IGNlOWY1NTEuLjVmOWQ3Mzkg MTAwNjQ0CiAtLS0gYS9nZGIvdHlwZXByaW50LmMKICsrKyBiL2dkYi90eXBlcHJpbnQuYwotQEAg LTM1LDYgKzM1LDggQEAKK0BAIC0zNiw2ICszNiw3IEBACiAgI2luY2x1ZGUgImdkYl9zdHJpbmcu aCIKICAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogICNpbmNsdWRlICJ2YWxwcmludC5oIgogKyNp bmNsdWRlICJkd2FyZjJsb2MuaCIKLSsKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAKICBleHRlcm4g dm9pZCBfaW5pdGlhbGl6ZV90eXBlcHJpbnQgKHZvaWQpOwotQEAgLTc2LDYgKzc4LDkgQEAgdm9p ZAorQEAgLTc3LDYgKzc4LDkgQEAgdm9pZAogIHR5cGVfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBl LCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCSAgICBpbnQgc2hv dykKICB7CkBAIC0yODU1OSw3ICsxOTE1OSw3IEBAIGluZGV4IGYwOTAyMzEuLmZjMTVlYzEgMTAw NjQ0CiAgICBMQV9QUklOVF9UWVBFICh0eXBlLCB2YXJzdHJpbmcsIHN0cmVhbSwgc2hvdywgMCk7 CiAgfQogIAotQEAgLTExNCw3ICsxMTksOCBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBz aG93KQorQEAgLTExNSw3ICsxMTksOCBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93 KQogIHsKICAgIHN0cnVjdCBleHByZXNzaW9uICpleHByOwogICAgc3RydWN0IHZhbHVlICp2YWw7 CkBAIC0yODU2OSw3ICsxOTE2OSw3IEBAIGluZGV4IGYwOTAyMzEuLmZjMTVlYzEgMTAwNjQ0CiAg ICBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlID0gTlVMTDsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwog ICAgaW50IGZ1bGwgPSAwOwotQEAgLTEyNSwxMiArMTMxLDEzIEBAIHdoYXRpc19leHAgKGNoYXIg KmV4cCwgaW50IHNob3cpCitAQCAtMTI2LDEyICsxMzEsMTMgQEAgd2hhdGlzX2V4cCAoY2hhciAq ZXhwLCBpbnQgc2hvdykKICAgIGlmIChleHApCiAgICAgIHsKICAgICAgICBleHByID0gcGFyc2Vf ZXhwcmVzc2lvbiAoZXhwKTsKQEAgLTI4NTg0LDcgKzE5MTg0LDcgQEAgaW5kZXggZjA5MDIzMS4u ZmMxNWVjMSAxMDA2NDQKICAgIHR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwogIAogICAgZ2V0X3Vz ZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOwotQEAgLTE2Nyw4ICsxNzQsNyBAQCB3aGF0aXNfZXhw IChjaGFyICpleHAsIGludCBzaG93KQorQEAgLTE2OCw4ICsxNzQsNyBAQCB3aGF0aXNfZXhwIChj aGFyICpleHAsIGludCBzaG93KQogICAgdHlwZV9wcmludCAodHlwZSwgIiIsIGdkYl9zdGRvdXQs IHNob3cpOwogICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKICAKQEAgLTI4NTk0LDEyMCArMTkx OTQsOCBAQCBpbmRleCBmMDkwMjMxLi5mYzE1ZWMxIDEwMDY0NAogIH0KICAKICBzdGF0aWMgdm9p ZAotZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuaCBiL2dkYi90eXBlcHJpbnQuaAotaW5kZXgg ZjU2MTMxMC4uZDI2MWM3OSAxMDA2NDQKLS0tLSBhL2dkYi90eXBlcHJpbnQuaAotKysrIGIvZ2Ri L3R5cGVwcmludC5oCi1AQCAtMjAsMTAgKzIwLDEzIEBACi0gI2lmbmRlZiBUWVBFUFJJTlRfSAot ICNkZWZpbmUgVFlQRVBSSU5UX0gKLSAKLStlbnVtIGxhbmd1YWdlOwotIHN0cnVjdCB1aV9maWxl OwotIAotIHZvaWQgcHJpbnRfdHlwZV9zY2FsYXIgKHN0cnVjdCB0eXBlICogdHlwZSwgTE9OR0VT VCwgc3RydWN0IHVpX2ZpbGUgKik7Ci0gCi0gdm9pZCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZm aXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKLSAJCQkJICBpbnQsIGlu dCk7Ci0rCi0rdm9pZCBjX3R5cGVfcHJpbnRfYXJncyAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVp X2ZpbGUgKiwgaW50LCBlbnVtIGxhbmd1YWdlKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIv dWktZmlsZS5jIGIvZ2RiL3VpLWZpbGUuYwotaW5kZXggNTI3OTE3Yy4uMDdkOTU5YSAxMDA2NDQK LS0tLSBhL2dkYi91aS1maWxlLmMKLSsrKyBiL2dkYi91aS1maWxlLmMKLUBAIC0yMiw2ICsyMiw3 IEBACi0gCi0gI2luY2x1ZGUgImRlZnMuaCIKLSAjaW5jbHVkZSAidWktZmlsZS5oIgotKyNpbmNs dWRlICJnZGJfb2JzdGFjay5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gCi0gI2luY2x1 ZGUgPGVycm5vLmg+Ci1AQCAtMjYzLDcgKzI2NCw3IEBAIHNldF91aV9maWxlX2RhdGEgKHN0cnVj dCB1aV9maWxlICpmaWxlLCB2b2lkICpkYXRhLAotIH0KLSAKLSAvKiB1aV9maWxlIHV0aWxpdHkg ZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgYSBgYHN0cnVjdCB1aV9maWxlJycgaW50bwotLSAgIGEg bWVtb3J5IGJ1ZmZlcicnLiAqLwotKyAgIGEgbWVtb3J5IGJ1ZmZlci4gKi8KLSAKLSBzdHJ1Y3Qg YWNjdW11bGF0ZWRfdWlfZmlsZQotIHsKLUBAIC0yOTcsNiArMjk4LDIzIEBAIHVpX2ZpbGVfeHN0 cmR1cCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGxvbmcgKmxlbmd0aCkKLSAgICAgKmxlbmd0aCA9 IGFjYy5sZW5ndGg7Ci0gICByZXR1cm4gYWNjLmJ1ZmZlcjsKLSB9Ci0rCi0rc3RhdGljIHZvaWQK LStkb191aV9maWxlX29ic2F2ZXN0cmluZyAodm9pZCAqY29udGV4dCwgY29uc3QgY2hhciAqYnVm ZmVyLCBsb25nIGxlbmd0aCkKLSt7Ci0rICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayA9IChzdHJ1 Y3Qgb2JzdGFjayAqKSBjb250ZXh0OwotKyAgb2JzdGFja19ncm93IChvYnN0YWNrLCBidWZmZXIs IGxlbmd0aCk7Ci0rfQotKwotK2NoYXIgKgotK3VpX2ZpbGVfb2JzYXZlc3RyaW5nIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssCi0rCQkgICAgICBsb25nICps ZW5ndGgpCi0rewotKyAgdWlfZmlsZV9wdXQgKGZpbGUsIGRvX3VpX2ZpbGVfb2JzYXZlc3RyaW5n LCBvYnN0YWNrKTsKLSsgICpsZW5ndGggPSBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNrKTsK LSsgIG9ic3RhY2tfMWdyb3cgKG9ic3RhY2ssICdcMCcpOwotKyAgcmV0dXJuIG9ic3RhY2tfZmlu aXNoIChvYnN0YWNrKTsKLSt9Ci0gDAotIC8qIEEgcHVyZSBtZW1vcnkgYmFzZWQgYGBzdHJ1Y3Qg dWlfZmlsZScnIHRoYXQgY2FuIGJlIHVzZWQgYW4gb3V0cHV0Ci0gICAgYnVmZmVyLiBUaGUgYnVm ZmVycyBhY2N1bXVsYXRlZCBjb250ZW50cyBhcmUgYXZhaWxhYmxlIHZpYQotZGlmZiAtLWdpdCBh L2dkYi91aS1maWxlLmggYi9nZGIvdWktZmlsZS5oCi1pbmRleCBiZjk5MTVjLi4yMzMyMDZjIDEw MDY0NAotLS0tIGEvZ2RiL3VpLWZpbGUuaAotKysrIGIvZ2RiL3VpLWZpbGUuaAotQEAgLTE5LDYg KzE5LDcgQEAKLSAjaWZuZGVmIFVJX0ZJTEVfSAotICNkZWZpbmUgVUlfRklMRV9ICi0gCi0rc3Ry dWN0IG9ic3RhY2s7Ci0gc3RydWN0IHVpX2ZpbGU7Ci0gCi0gLyogQ3JlYXRlIGEgZ2VuZXJpYyB1 aV9maWxlIG9iamVjdCB3aXRoIG51bGwgbWV0aG9kcy4gKi8KLUBAIC03Nyw3ICs3OCwxMCBAQCBl eHRlcm4gdm9pZCB1aV9maWxlX3B1dCAoc3RydWN0IHVpX2ZpbGUgKnNyYywgdWlfZmlsZV9wdXRf bWV0aG9kX2Z0eXBlICp3cml0ZSwgdgotICAgIG1pbnVzIHRoYXQgYXBwZW5kZWQgTlVMLiAqLwot IGV4dGVybiBjaGFyICp1aV9maWxlX3hzdHJkdXAgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBsb25n ICpsZW5ndGgpOwotIAotLQotKy8qIFNpbWlsYXIgdG8gdWlfZmlsZV94c3RyZHVwLCBidXQgcmV0 dXJuIGEgbmV3IHN0cmluZyBhbGxvY2F0ZWQgb24KLSsgICBPQlNUQUNLLiAgKi8KLStleHRlcm4g Y2hhciAqdWlfZmlsZV9vYnNhdmVzdHJpbmcgKHN0cnVjdCB1aV9maWxlICpmaWxlLAotKwkJCQkg ICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgbG9uZyAqbGVuZ3RoKTsKLSAKLSBleHRlcm4gbG9u ZyB1aV9maWxlX3JlYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBjaGFyICpidWYsIGxvbmcgbGVu Z3RoX2J1Zik7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5k ZXggMTZhZDA4NC4uMzAyMWE0MyAxMDA2NDQKLS0tLSBhL2dkYi91dGlscy5jCi0rKysgYi9nZGIv dXRpbHMuYwotQEAgLTI2MTAsNyArMjYxMCwxMCBAQCBmcHJpbnRmX3N5bWJvbF9maWx0ZXJlZCAo c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY2hhciAqbmFtZSwKLSAgICBBcyBhbiBleHRyYSBoYWNr LCBzdHJpbmcxPT0iRk9PKEFSR1MpIiBtYXRjaGVzIHN0cmluZzI9PSJGT08iLgotICAgIFRoaXMg ImZlYXR1cmUiIGlzIHVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgbWF0Y2hpbmcgQysrIGZ1bmN0 aW9uIG5hbWVzCi0gICAgKHN1Y2ggYXMgaWYgdGhlIHVzZXIgdHlwZXMgJ2JyZWFrIEZPTycsIHdo ZXJlIEZPTyBpcyBhIG1hbmdsZWQgQysrCi0tICAgZnVuY3Rpb24pLiAqLwotKyAgIGZ1bmN0aW9u KS4KLSsKLSsgICBBcyBhbiBleHRyYS1zcGVjaWFsIGhhY2ssIHdlIGRvIHRoZSBzYW1lIHdpdGgg JyAnLCBzbyB0aGF0Ci0rICAgIkZPTyhBUkdTKSBjb25zdCIgY2FuIG1hdGNoICJGT08iLCB0b28u ICAqLwotIAotIGludAotIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hh ciAqc3RyaW5nMikKLUBAIC0yNjM1LDcgKzI2MzgsNyBAQCBzdHJjbXBfaXcgKGNvbnN0IGNoYXIg KnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCi0gCSAgc3RyaW5nMisrOwotIAl9Ci0gICAg IH0KLS0gIHJldHVybiAoKnN0cmluZzEgIT0gJ1wwJyAmJiAqc3RyaW5nMSAhPSAnKCcpIHx8ICgq c3RyaW5nMiAhPSAnXDAnKTsKLSsgIHJldHVybiAoKnN0cmluZzEgIT0gJyAnICYmICpzdHJpbmcx ICE9ICdcMCcgJiYgKnN0cmluZzEgIT0gJygnKSB8fCAoKnN0cmluZzIgIT0gJ1wwJyAmJiAqc3Ry aW5nMiAhPSAnKCcpOwotIH0KLSAKLSAvKiBUaGlzIGlzIGxpa2Ugc3RyY21wIGV4Y2VwdCB0aGF0 IGl0IGlnbm9yZXMgd2hpdGVzcGFjZSBhbmQgdHJlYXRzCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFy aXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggYTljODc1ZC4uMTJmNmYwNyAxMDA2NDQKK2lu ZGV4IDJiNjZmODUuLjljMzZlNTYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsYXJpdGguYwogKysrIGIv Z2RiL3ZhbGFyaXRoLmMKIEBAIC0xMzksNyArMTM5LDYgQEAgYW4gaW50ZWdlciBub3IgYSBwb2lu dGVyIG9mIHRoZSBzYW1lIHR5cGUuIikpOwpAQCAtMjg3OTcsNyArMTkyODUsNyBAQCBpbmRleCBh OWM4NzVkLi4xMmY2ZjA3IDEwMDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMg Yi9nZGIvdmFsb3BzLmMKLWluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CitpbmRleCAxNjY3 MzY4Li5lMWE2YmVmIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysgYi9nZGIvdmFsb3Bz LmMKIEBAIC0zOCw2ICszOCw3IEBACkBAIC0yODgwOCw3ICsxOTI5Niw3IEBAIGluZGV4IDAxMmVh NmEuLjliNGQyYTggMTAwNjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgImdk Yl9zdHJpbmcuaCIKLUBAIC0zNjksOCArMzcwLDYgQEAgdmFsdWVfY2FzdCAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnMikKK0BAIC0zNzQsOCArMzc1LDYgQEAgdmFsdWVfY2Fz dCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnMikKICAJICBuZXdfbGVuZ3Ro ID0gdmFsX2xlbmd0aCAvIGVsZW1lbnRfbGVuZ3RoOwogIAkgIGlmICh2YWxfbGVuZ3RoICUgZWxl bWVudF9sZW5ndGggIT0gMCkKICAJICAgIHdhcm5pbmcgKF8oImFycmF5IGVsZW1lbnQgdHlwZSBz aXplIGRvZXMgbm90IGRpdmlkZSBvYmplY3Qgc2l6ZSBpbiBjYXN0IikpOwpAQCAtMjg4MTcsNyAr MTkzMDUsNyBAQCBpbmRleCAwMTJlYTZhLi45YjRkMmE4IDEwMDY0NAogIAkgIHJhbmdlX3R5cGUg PSBjcmVhdGVfcmFuZ2VfdHlwZSAoKHN0cnVjdCB0eXBlICopIE5VTEwsCiAgCQkJCQkgIFRZUEVf VEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJICBsb3dfYm91bmQsCi1AQCAtNTY1LDYg KzU2NCw2NCBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlLCBlbnVtIGx2YWxfdHlwZSBs dikKK0BAIC01NzAsNiArNTY5LDY0IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUsIGVu dW0gbHZhbF90eXBlIGx2KQogICAgcmV0dXJuIHZhbDsKICB9CiAgCkBAIC0yODg4Miw3ICsxOTM3 MCw3IEBAIGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgLyogSGVscGVyIGZ1bmN0aW9u IGZvciB2YWx1ZV9hdCwgdmFsdWVfYXRfbGF6eSwgYW5kIHZhbHVlX2F0X2xhenlfc3RhY2suICAq LwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotQEAgLTY1NiwxNSArNzEzLDIxIEBAIHZhbHVl X2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTY2MSwxNSArNzE4LDIxIEBAIHZh bHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgICB9CiAgICBlbHNlIGlmIChW QUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQogICAgICB7CkBAIC0yODkxMSw3ICsxOTM5 OSw3IEBAIGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgCX0KICAgICAgfQogICAgZWxz ZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQotQEAgLTEwNzIsNyArMTEz NSwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBi bG9jayAqYikKK0BAIC0xMDc3LDcgKzExNDAsMTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3Ry dWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCiAgICBpZiAoKFZBTFVFX0xWQUwgKHZh bCkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6eSAodmFsKSkKICAgICAgICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQogICAgICB7CkBAIC0yODkzMSw3ICsxOTQxOSw3 IEBAIGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgICAgICAgcmV0dXJuIHZhbHVlX2Zy b21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9CiAg Ci1AQCAtMTE3OCw2ICsxMjUyLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xMTgzLDYgKzEyNTcs NyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICph cmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAoYXJnMSkpOwpAQCAtMjg5MzksNyArMTk0MjcsNyBAQCBpbmRleCAwMTJlYTZhLi45YjRkMmE4 IDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVp cmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVu IHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xMTg3LDggKzEyNjIs MTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitAQCAtMTE5Miw4 ICsxMjY3LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogICAg aWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJvciAoXygiQXR0 ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5LiIpKTsK ICAKQEAgLTI4OTUzLDIyOCArMTk0NDEsNyBAQCBpbmRleCAwMTJlYTZhLi45YjRkMmE4IDEwMDY0 NAogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBh IHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTIwNzEsMTIgKzIxNTAsMjUgQEAgZmluZF9v dmVybG9hZF9tYXRjaCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywKLSAgIGlm IChtZXRob2QpCi0gICAgIHsKLSAgICAgICBnZGJfYXNzZXJ0IChvYmopOwotKwotKyAgICAgIC8q IE9CSiBtYXkgYmUgYSBwb2ludGVyIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBvYmplY3QgaXRzZWxm LiAgKi8KLSsgICAgICBvYmogPSBjb2VyY2VfcmVmIChvYmopOwotKyAgICAgIHdoaWxlIChUWVBF X0NPREUgKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG9iaikpKSA9PSBUWVBFX0NPREVfUFRS KQotKwlvYmogPSBjb2VyY2VfcmVmICh2YWx1ZV9pbmQgKG9iaikpOwotICAgICAgIG9ial90eXBl X25hbWUgPSBUWVBFX05BTUUgKHZhbHVlX3R5cGUgKG9iaikpOwotLSAgICAgIC8qIEhhY2s6IGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCBvZnRlbiBwYXNzZXMgaW4gYSBwb2ludGVyCi0tICAgICAg ICAgdmFsdWUgcmF0aGVyIHRoYW4gdGhlIG9iamVjdCBpdHNlbGYsIHNvIHRyeSBhZ2Fpbi4gICov Ci0tICAgICAgaWYgKCghb2JqX3R5cGVfbmFtZSB8fCAhKm9ial90eXBlX25hbWUpIAotLQkgICYm IChUWVBFX0NPREUgKHZhbHVlX3R5cGUgKG9iaikpID09IFRZUEVfQ09ERV9QVFIpKQotLQlvYmpf dHlwZV9uYW1lID0gVFlQRV9OQU1FIChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChvYmop KSk7Ci0rCi0rICAgICAgLyogRmlyc3QgY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgZGF0YSBtZW1i ZXIsIGUuZy4gYSBwb2ludGVyIHRvCi0rCSBhIGZ1bmN0aW9uLiAgKi8KLSsgICAgICBpZiAoVFlQ RV9DT0RFIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChvYmopKSkgPT0gVFlQRV9DT0RFX1NU UlVDVCkKLSsJewotKwkgICp2YWxwID0gc2VhcmNoX3N0cnVjdF9maWVsZCAobmFtZSwgb2JqLCAw LAotKwkJCQkgICAgICAgY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAob2JqKSksIDApOwotKwkg IGlmICgqdmFscCkKLSsJICAgIHsKLSsJICAgICAgKnN0YXRpY3AgPSAxOwotKwkgICAgICByZXR1 cm4gMDsKLSsJICAgIH0KLSsJfQotIAotICAgICAgIGZuc19wdHIgPSB2YWx1ZV9maW5kX29sb2Fk X21ldGhvZF9saXN0ICgmdGVtcCwgbmFtZSwgCi0gCQkJCQkgICAgICAwLCAmbnVtX2ZucywgCi1A QCAtMjA5NiwxNiArMjE4OCwyOSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAq KmFyZ190eXBlcywgaW50IG5hcmdzLAotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBj b25zdCBjaGFyICpxdWFsaWZpZWRfbmFtZSA9IFNZTUJPTF9DUExVU19ERU1BTkdMRURfTkFNRSAo ZnN5bSk7Ci0rICAgICAgY29uc3QgY2hhciAqcXVhbGlmaWVkX25hbWUgPSBTWU1CT0xfTkFUVVJB TF9OQU1FIChmc3ltKTsKLSsKLSsgICAgICAvKiBJZiB3ZSBoYXZlIGEgZnVuY3Rpb24gd2l0aCBh IEMrKyBuYW1lLCB0cnkgdG8gZXh0cmFjdCBqdXN0Ci0rCSB0aGUgZnVuY3Rpb24gcGFydC4gIERv IG5vdCB0cnkgdGhpcyBmb3Igbm9uLWZ1bmN0aW9ucyAoZS5nLgotKwkgZnVuY3Rpb24gcG9pbnRl cnMpLiAgKi8KLSsgICAgICBpZiAocXVhbGlmaWVkX25hbWUKLSsJICAmJiBUWVBFX0NPREUgKGNo ZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFIChmc3ltKSkpID09IFRZUEVfQ09ERV9GVU5DKQotKwl7 Ci0rCSAgZnVuY19uYW1lID0gY3BfZnVuY19uYW1lIChxdWFsaWZpZWRfbmFtZSk7Ci0gCi0tICAg ICAgLyogSWYgd2UgaGF2ZSBhIEMrKyBuYW1lLCB0cnkgdG8gZXh0cmFjdCBqdXN0IHRoZSBmdW5j dGlvbgotLQkgcGFydC4gICovCi0tICAgICAgaWYgKHF1YWxpZmllZF9uYW1lKQotLQlmdW5jX25h bWUgPSBjcF9mdW5jX25hbWUgKHF1YWxpZmllZF9uYW1lKTsKLSsJICAvKiBJZiBjcF9mdW5jX25h bWUgZGlkIG5vdCByZW1vdmUgYW55dGhpbmcsIHRoZSBuYW1lIG9mIHRoZQotKwkgICAgIHN5bWJv bCBkaWQgbm90IGluY2x1ZGUgc2NvcGUgb3IgYXJndW1lbnQgdHlwZXMgLSBpdCB3YXMKLSsJICAg ICBwcm9iYWJseSBhIEMtc3R5bGUgZnVuY3Rpb24uICAqLwotKwkgIGlmIChmdW5jX25hbWUgJiYg c3RyY21wIChmdW5jX25hbWUsIHF1YWxpZmllZF9uYW1lKSA9PSAwKQotKwkgICAgewotKwkgICAg ICB4ZnJlZSAoZnVuY19uYW1lKTsKLSsJICAgICAgZnVuY19uYW1lID0gTlVMTDsKLSsJICAgIH0K LSsJfQotIAotLSAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwgdGhpcyBtdXN0IGJl IGEgQy1zdHlsZSBmdW5jdGlvbi4KLS0JIEp1c3QgcmV0dXJuIHRoZSBzYW1lIHN5bWJvbC4gIERv IHRoZSBzYW1lIGlmIGNwX2Z1bmNfbmFtZQotLQkgZmFpbHMgZm9yIHNvbWUgcmVhc29uLiAgKi8K LSsgICAgICAvKiBJZiB0aGVyZSB3YXMgbm8gQysrIG5hbWUsIHRoaXMgbXVzdCBiZSBhIEMtc3R5 bGUgZnVuY3Rpb24gb3IKLSsJIG5vdCBhIGZ1bmN0aW9uIGF0IGFsbC4gIEp1c3QgcmV0dXJuIHRo ZSBzYW1lIHN5bWJvbC4gIERvIHRoZQotKwkgc2FtZSBpZiBjcF9mdW5jX25hbWUgZmFpbHMgZm9y IHNvbWUgcmVhc29uLiAgKi8KLSAgICAgICBpZiAoZnVuY19uYW1lID09IE5VTEwpCi0gICAgICAg ICB7Ci0gCSAgKnN5bXAgPSBmc3ltOwotQEAgLTI1MzYsOCArMjY0MSw4IEBAIGNoZWNrX2ZpZWxk IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKLSAgICB0aGUgY29tbWVudCBi ZWZvcmUgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlLiAgKi8KLSAKLSBzdHJ1Y3QgdmFs dWUgKgotLXZhbHVlX2FnZ3JlZ2F0ZV9lbHQgKHN0cnVjdCB0eXBlICpjdXJ0eXBlLAotLQkJICAg ICBjaGFyICpuYW1lLCBpbnQgd2FudF9hZGRyZXNzLAotK3ZhbHVlX2FnZ3JlZ2F0ZV9lbHQgKHN0 cnVjdCB0eXBlICpjdXJ0eXBlLCBjaGFyICpuYW1lLAotKwkJICAgICBzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsIGludCB3YW50X2FkZHJlc3MsCi0gCQkgICAgIGVudW0gbm9zaWRlIG5vc2lkZSkK LSB7Ci0gICBzd2l0Y2ggKFRZUEVfQ09ERSAoY3VydHlwZSkpCi1AQCAtMjU0NSw3ICsyNjUwLDcg QEAgdmFsdWVfYWdncmVnYXRlX2VsdCAoc3RydWN0IHR5cGUgKmN1cnR5cGUsCi0gICAgIGNhc2Ug VFlQRV9DT0RFX1NUUlVDVDoKLSAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046Ci0gICAgICAgcmV0 dXJuIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3JlZmVyZW5jZSAoY3VydHlwZSwgMCwgY3VydHlwZSwg Ci0tCQkJCQkgICAgIG5hbWUsIE5VTEwsCi0rCQkJCQkgICAgIG5hbWUsIGV4cGVjdF90eXBlLAot IAkJCQkJICAgICB3YW50X2FkZHJlc3MsIG5vc2lkZSk7Ci0gICAgIGNhc2UgVFlQRV9DT0RFX05B TUVTUEFDRToKLSAgICAgICByZXR1cm4gdmFsdWVfbmFtZXNwYWNlX2VsdCAoY3VydHlwZSwgbmFt ZSwgCi1AQCAtMjU1Niw2ICsyNjYxLDU2IEBAIHZhbHVlX2FnZ3JlZ2F0ZV9lbHQgKHN0cnVjdCB0 eXBlICpjdXJ0eXBlLAotICAgICB9Ci0gfQotIAotKy8qIENvbXBhcmVzIHRoZSB0d28gbWV0aG9k L2Z1bmN0aW9uIHR5cGVzIFQxIGFuZCBUMiBmb3IgImVxdWFsaXR5IiAKLSsgICB3aXRoIHJlc3Bl Y3QgdG8gdGhlIHRoZSBtZXRob2RzJyBwYXJhbWV0ZXJzLiBJZiB0aGUgdHlwZXMgb2YgdGhlCi0r ICAgdHdvIHBhcmFtZXRlciBsaXN0cyBhcmUgdGhlIHNhbWUsIHJldHVybnMgMTsgMCBvdGhlcndp c2UuIFRoaXMKLSsgICBjb21wYXJpc29uIG1heSBpZ25vcmUgYW55IGFydGlmaWNpYWwgcGFyYW1l dGVycyBpbiBUMSBpZgotKyAgIFNLSVBfQVJUSUZJQ0lBTCBpcyBub24temVyby4gVGhpcyBmdW5j dGlvbiB3aWxsIEFMV0FZUyBza2lwCi0rICAgdGhlIGZpcnN0IGFydGlmaWNpYWwgcGFyYW1ldGVy IGluIFQxLCBhc3N1bWVkIHRvIGJlIGEgJ3RoaXMnIHBvaW50ZXIuCi0rCi0rICAgVGhlIHR5cGUg VDIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBjb21lIGZyb20gbWFrZV9wYXJhbXMgKGluIGV2YWwuYyku ICovCi0rc3RhdGljIGludAotK2NvbXBhcmVfcGFyYW1ldGVycyAoc3RydWN0IHR5cGUgKnQxLCBz dHJ1Y3QgdHlwZSAqdDIsIGludCBza2lwX2FydGlmaWNpYWwpCi0rewotKyAgaW50IHN0YXJ0ID0g MDsKLSsKLSsgIGlmIChUWVBFX0ZJRUxEX0FSVElGSUNJQUwgKHQxLCAwKSkKLSsgICAgKytzdGFy dDsKLSsKLSsgIC8qIElmIHNraXBwaW5nIGFydGlmaWNpYWwgZmllbGRzLCBmaW5kIHRoZSBmaXJz dCByZWFsIGZpZWxkCi0rICAgICBpbiBUMS4gKi8KLSsgIGlmIChza2lwX2FydGlmaWNpYWwpCi0r ICAgIHsKLSsgICAgICB3aGlsZSAoc3RhcnQgPCBUWVBFX05GSUVMRFMgKHQxKQotKwkgICAgICYm IFRZUEVfRklFTERfQVJUSUZJQ0lBTCAodDEsIHN0YXJ0KSkKLSsJKytzdGFydDsKLSsgICAgfQot KwotKyAgLyogTm93IGNvbXBhcmUgcGFyYW1ldGVycyAqLwotKwotKyAgLyogU3BlY2lhbCBjYXNl OiBhIG1ldGhvZCB0YWtpbmcgdm9pZC4gVDEgd2lsbCBjb250YWluIG5vCi0rICAgICBub24tYXJ0 aWZpY2lhbCBmaWVsZHMsIGFuZCBUMiB3aWxsIGNvbnRhaW4gVFlQRV9DT0RFX1ZPSUQuICovCi0r ICBpZiAoKFRZUEVfTkZJRUxEUyAodDEpIC0gc3RhcnQpID09IDAgJiYgVFlQRV9ORklFTERTICh0 MikgPT0gMQotKyAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBFICh0MiwgMCkpID09 IFRZUEVfQ09ERV9WT0lEKQotKyAgICByZXR1cm4gMTsKLSsKLSsgIGlmICgoVFlQRV9ORklFTERT ICh0MSkgLSBzdGFydCkgPT0gVFlQRV9ORklFTERTICh0MikpCi0rICAgIHsKLSsgICAgICBpbnQg aTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0Mik7ICsraSkKLSsJewot KwkgIGlmIChyYW5rX29uZV90eXBlIChUWVBFX0ZJRUxEX1RZUEUgKHQxLCBzdGFydCArIGkpLAot KwkJCSAgICAgIFRZUEVfRklFTERfVFlQRSAodDIsIGkpKQotKwkgICAgICAhPSAwKQotKwkgICAg cmV0dXJuIDA7Ci0rCX0KLSsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgcmV0dXJu IDA7Ci0rfQotKwotIC8qIEMrKzogR2l2ZW4gYW4gYWdncmVnYXRlIHR5cGUgQ1VSVFlQRSwgYW5k IGEgbWVtYmVyIG5hbWUgTkFNRSwKLSAgICByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1i ZXIgYXMgYSAicG9pbnRlciB0byBtZW1iZXIiIHR5cGUuCi0gICAgSWYgSU5UWVBFIGlzIG5vbi1u dWxsLCB0aGVuIGl0IHdpbGwgYmUgdGhlIHR5cGUgb2YgdGhlIG1lbWJlciB3ZQotQEAgLTI2MzMs MjMgKzI3ODgsNDYgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdHlw ZSAqZG9tYWluLCBpbnQgb2Zmc2V0LAotIAl9Ci0gICAgICAgaWYgKHRfZmllbGRfbmFtZSAmJiBz dHJjbXAgKHRfZmllbGRfbmFtZSwgbmFtZSkgPT0gMCkKLSAJewotLQkgIGludCBqID0gVFlQRV9G Tl9GSUVMRExJU1RfTEVOR1RIICh0LCBpKTsKLSsJICBpbnQgajsKLSsJICBpbnQgbGVuID0gVFlQ RV9GTl9GSUVMRExJU1RfTEVOR1RIICh0LCBpKTsKLSAJICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBU WVBFX0ZOX0ZJRUxETElTVDEgKHQsIGkpOwotIAotIAkgIGNoZWNrX3N0dWJfbWV0aG9kX2dyb3Vw ICh0LCBpKTsKLSAKLS0JICBpZiAoaW50eXBlID09IDAgJiYgaiA+IDEpCi0tCSAgICBlcnJvciAo Xygibm9uLXVuaXF1ZSBtZW1iZXIgYCVzJyByZXF1aXJlcyB0eXBlIGluc3RhbnRpYXRpb24iKSwg bmFtZSk7Ci0gCSAgaWYgKGludHlwZSkKLSAJICAgIHsKLS0JICAgICAgd2hpbGUgKGotLSkKLS0J CWlmIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGYsIGopID09IGludHlwZSkKLS0JCSAgYnJlYWs7Ci0t CSAgICAgIGlmIChqIDwgMCkKLS0JCWVycm9yIChfKCJubyBtZW1iZXIgZnVuY3Rpb24gbWF0Y2hl cyB0aGF0IHR5cGUgaW5zdGFudGlhdGlvbiIpKTsKLS0JICAgIH0KLSsJICAgICAgZm9yIChqID0g MDsgaiA8IGxlbjsgKytqKQotKwkJewotKwkJICBpZiAoY29tcGFyZV9wYXJhbWV0ZXJzIChUWVBF X0ZOX0ZJRUxEX1RZUEUgKGYsIGopLCBpbnR5cGUsIDApCi0rCQkgICAgICB8fCBjb21wYXJlX3Bh cmFtZXRlcnMgKFRZUEVfRk5fRklFTERfVFlQRSAoZiwgaiksIGludHlwZSwgMSkpCi0rCQkgICAg YnJlYWs7Ci0rCQl9Ci0rCi0rCSAgICAgIGlmIChqID09IGxlbikKLSsJCWVycm9yIChfKCJubyBt ZW1iZXIgZnVuY3Rpb24gbWF0Y2hlcyB0aGF0IHR5cGUgaW5zdGFudGlhdGlvbiIpKTsJICAgIH0K LSAJICBlbHNlCi0tCSAgICBqID0gMDsKLSsJICAgIHsKLSsJICAgICAgaW50IGlpOwotKwkgICAg ICAvKiBTa2lwIGFydGlmaWNpYWwgbWV0aG9kcy4gVGhpcyBpcyBuZWNlc3NhcnkgaWYsIGZvciBl eGFtcGxlLAotKwkJIHRoZSB1c2VyIHdhbnRzIHRvICJwcmludCBzdWJjbGFzczo6c3ViY2xhc3Mi IHdpdGggb25seQotKwkJIG9uZSBkZWZpbmVkIHVzZXIgY29uc3RydWN0b3IuIFRoZXJlIGlzIG5v IGFtYmlndWl0eSBpbiB0aGlzCi0rCQkgY2FzZS4gKi8KLSsJICAgICAgZm9yIChpaSA9IDA7IGlp IDwgVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0LCBpKTsKLSsJCSAgICsraWkpCi0rCQl7Ci0r CQkgIGlmIChUWVBFX0ZOX0ZJRUxEX0FSVElGSUNJQUwgKGYsIGlpKSkKLSsJCSAgICAtLWxlbjsK LSsJCX0KLSsKLSsJICAgICAgLyogRGVzaXJlZCBtZXRob2QgaXMgYW1iaWd1b3VzIGlmIG1vcmUg dGhhbiBvbmUgbWV0aG9kIGlzCi0rCQkgZGVmaW5lZC4gKi8KLSsJICAgICAgaWYgKGxlbiA+IDEp Ci0rCQllcnJvciAoXygibm9uLXVuaXF1ZSBtZW1iZXIgYCVzJyByZXF1aXJlcyB0eXBlIGluc3Rh bnRpYXRpb24iKSwgbmFtZSk7Ci0rCi0rCSAgICAgIC8qIFRoaXMgYXNzdW1lcywgb2YgY291cnNl LCB0aGF0IGFsbCBhcnRpZmljaWFsIG1ldGhvZHMgYXBwZWFyCi0rCQkgQkVGT1JFIGFueSBjb25j cmV0ZSBtZXRob2RzLiAqLwotKwkgICAgICBqID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0 LCBpKSAtIDE7Ci0rCSAgICB9Ci0gCi0gCSAgaWYgKFRZUEVfRk5fRklFTERfU1RBVElDX1AgKGYs IGopKQotIAkgICAgewotQEAgLTI3NjMsNyArMjk0MSw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFj ZV9lbHQgKGNvbnN0IHN0cnVjdCB0eXBlICpjdXJ0eXBlLAotICAgc3RydWN0IHN5bWJvbCAqc3lt OwotICAgc3RydWN0IHZhbHVlICpyZXN1bHQ7Ci0gCi0tICBzeW0gPSBjcF9sb29rdXBfc3ltYm9s X25hbWVzcGFjZSAobmFtZXNwYWNlX25hbWUsIG5hbWUsIE5VTEwsCi0rICBzeW0gPSBjcF9sb29r dXBfc3ltYm9sX25hbWVzcGFjZShuYW1lc3BhY2VfbmFtZSwgbmFtZSwKLSAJCQkJICAgIGdldF9z ZWxlY3RlZF9ibG9jayAoMCksIAotIAkJCQkgICAgVkFSX0RPTUFJTik7Ci0gCi1AQCAtMjkwNyw3 ICszMDg1LDcgQEAgdmFsdWVfb2ZfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBjb21wbGFp bikKLSAKLSAgIC8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJvbCBpcyBuZWNlc3NhcnkgdG8g Z2V0IHRoZSBMT0NfUkVHSVNURVIKLSAgICAgIHN5bWJvbCBpbnN0ZWFkIG9mIHRoZSBMT0NfQVJH IG9uZSAoaWYgYm90aCBleGlzdCkuICAqLwotLSAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YiwgbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7Ci0rICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9s IChiLCBuYW1lLCBWQVJfRE9NQUlOKTsKLSAgIGlmIChzeW0gPT0gTlVMTCkKLSAgICAgewotICAg ICAgIGlmIChjb21wbGFpbikKLUBAIC0yOTYxLDggKzMxMzksNiBAQCB2YWx1ZV9zbGljZSAoc3Ry dWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQorQEAgLTMwNDIsOCAr MzEyMSw2IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQs IGludCBsZW5ndGgpCiAgICAgICAgfHwgbG93Ym91bmQgKyBsZW5ndGggLSAxID4gdXBwZXJib3Vu ZCkKICAgICAgZXJyb3IgKF8oInNsaWNlIG91dCBvZiByYW5nZSIpKTsKICAKQEAgLTI5MTg0LDcg KzE5NDUxLDcgQEAgaW5kZXggMDEyZWE2YS4uOWI0ZDJhOCAxMDA2NDQKICAJCQkJCVRZUEVfVEFS R0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91bmQsIAogZGlmZiAtLWdpdCBhL2dk Yi92YWxwcmludC5jIGIvZ2RiL3ZhbHByaW50LmMKLWluZGV4IGNiYjVkOTQuLmY5NjM0ZWEgMTAw NjQ0CitpbmRleCAzZjIxYWU0Li45YjE1YjFhIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHByaW50LmMK ICsrKyBiL2dkYi92YWxwcmludC5jCiBAQCAtMjM2LDcgKzIzNiw2IEBAIHNjYWxhcl90eXBlX3Ag KHN0cnVjdCB0eXBlICp0eXBlKQpAQCAtMjkxOTUsNyArMTk0NjIsNyBAQCBpbmRleCBjYmI1ZDk0 Li5mOTYzNGVhIDEwMDY0NAogICAgICBjYXNlIFRZUEVfQ09ERV9CSVRTVFJJTkc6CiAgICAgICAg cmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTE1Myw2ICsxMTUyLDcgQEAgdmFsX3ByaW50 X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCitAQCAtMTE1NCw2ICsxMTUzLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCiAgICBmb3IgKDsgaSA8 IGxlbiAmJiB0aGluZ3NfcHJpbnRlZCA8IG9wdGlvbnMtPnByaW50X21heDsgaSsrKQogICAgICB7 CkBAIC0yOTIwMyw3ICsxOTQ3MCw3IEBAIGluZGV4IGNiYjVkOTQuLmY5NjM0ZWEgMTAwNjQ0CiAg ICAgICAgaWYgKGkgIT0gMCkKICAJewogIAkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9hcnJh eXMpCi1AQCAtMTE3Miw3ICsxMTcyLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitAQCAtMTE3Myw3ICsxMTcz LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgICAgcmVwMSA9IGkgKyAxOwogICAgICAgIHJlcHMgPSAx OwogICAgICAgIHdoaWxlICgocmVwMSA8IGxlbikgJiYKQEAgLTI5MjEzLDcgKzE5NDgwLDcgQEAg aW5kZXggY2JiNWQ5NC4uZjk2MzRlYSAxMDA2NDQKICAJICArK3JlcHM7CiAgCSAgKytyZXAxOwog ZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWluZGV4IDU4OWUwM2IuLjYy MDAzZmEgMTAwNjQ0CitpbmRleCBhNDYyZWU0Li45NjhjZGY0IDEwMDY0NAogLS0tIGEvZ2RiL3Zh bHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCiBAQCAtMzcsOCArMzcsMTAgQEAKQEAgLTI5MjQyLDQ2 ICsxOTUwOSwyOSBAQCBpbmRleCA1ODllMDNiLi42MjAwM2ZhIDEwMDY0NAogICAgLyogUmVnaXN0 ZXIgbnVtYmVyIGlmIHRoZSB2YWx1ZSBpcyBmcm9tIGEgcmVnaXN0ZXIuICAqLwogICAgc2hvcnQg cmVnbnVtOwogIAotQEAgLTI2MSw3ICsyNzEsOSBAQCBhbGxvY2F0ZV92YWx1ZV9sYXp5IChzdHJ1 Y3QgdHlwZSAqdHlwZSkKLSAgIHZhbC0+bmV4dCA9IGFsbF92YWx1ZXM7Ci0gICBhbGxfdmFsdWVz ID0gdmFsOwotICAgdmFsLT50eXBlID0gdHlwZTsKLSsgIHR5cGVfaW5jcmVmICh0eXBlKTsKLSAg IHZhbC0+ZW5jbG9zaW5nX3R5cGUgPSB0eXBlOwotKyAgdHlwZV9pbmNyZWYgKHR5cGUpOwotICAg VkFMVUVfTFZBTCAodmFsKSA9IG5vdF9sdmFsOwotICAgdmFsLT5sb2NhdGlvbi5hZGRyZXNzID0g MDsKLSAgIFZBTFVFX0ZSQU1FX0lEICh2YWwpID0gbnVsbF9mcmFtZV9pZDsKLUBAIC0zNDYsNiAr MzU4LDggQEAgdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlICp2YWx1ZSkKLSB2b2lkCi0gZGVwcmVj YXRlZF9zZXRfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IHR5cGUgKnR5 cGUpCi0gewotKyAgdHlwZV9pbmNyZWYgKHR5cGUpOwotKyAgdHlwZV9kZWNyZWYgKHZhbHVlLT50 eXBlKTsKLSAgIHZhbHVlLT50eXBlID0gdHlwZTsKLSB9Ci0gCi1AQCAtNjI0LDYgKzYzOCw5IEBA IHZhbHVlX2ZyZWUgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTYzMSw2ICs2NDEsMTMgQEAgdmFs dWVfZnJlZSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgICAgaWYgKHZhbC0+cGFyZW50ICE9IE5V TEwpCiAgCXZhbHVlX2ZyZWUgKHZhbC0+cGFyZW50KTsKICAKKysjaWYgMAorKyAgICAgIC8qIFdl IG5lZWQgdHlwZSBHQyBpbnN0ZWFkLiAgVGhpcyBjYW4gZmFpbCB3aGVuIGFuIG9iamZpbGUgaXMK KysJIHJlY2xhaW1lZCBhbmQgdGhlbiBhIHZhbHVlIGlzIGxhdGVyIGZyZWVkLiAgKi8KICsgICAg ICB0eXBlX2RlY3JlZiAodmFsLT50eXBlKTsKICsgICAgICB0eXBlX2RlY3JlZiAodmFsLT5lbmNs b3NpbmdfdHlwZSk7CisrI2VuZGlmCiArCiAgICAgICAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0g bHZhbF9jb21wdXRlZCkKICAJewogIAkgIHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHZhbC0+ bG9jYXRpb24uY29tcHV0ZWQuZnVuY3M7Ci1AQCAtNzI4LDYgKzc0NSw5IEBAIHZhbHVlX2NvcHkg KHN0cnVjdCB2YWx1ZSAqYXJnKQorQEAgLTczNSw2ICs3NTIsNyBAQCB2YWx1ZV9jb3B5IChzdHJ1 Y3QgdmFsdWUgKmFyZykKICAgICAgdmFsID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoZW5jbF90eXBl KTsKICAgIGVsc2UKICAgICAgdmFsID0gYWxsb2NhdGVfdmFsdWUgKGVuY2xfdHlwZSk7CiArCi0r ICB0eXBlX2luY3JlZiAoYXJnLT50eXBlKTsKLSsgIHR5cGVfZGVjcmVmICh2YWwtPnR5cGUpOwog ICAgdmFsLT50eXBlID0gYXJnLT50eXBlOwogICAgVkFMVUVfTFZBTCAodmFsKSA9IFZBTFVFX0xW QUwgKGFyZyk7CiAgICB2YWwtPmxvY2F0aW9uID0gYXJnLT5sb2NhdGlvbjsKLUBAIC03NjMsMTIg Kzc4MywxNSBAQCB2YWx1ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKK0BAIC03NzAsMTIgKzc4 OCwxNSBAQCB2YWx1ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKICB2b2lkCiAgc2V0X3ZhbHVl X2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsIHN0cnVjdCB2YWx1 ZSAqd2hvbGUpCiAgewpAQCAtMjkyOTcsNyArMTk1NDcsNyBAQCBpbmRleCA1ODllMDNiLi42MjAw M2ZhIDEwMDY0NAogICAgaWYgKFZBTFVFX0xWQUwgKHdob2xlKSA9PSBsdmFsX2NvbXB1dGVkKQog ICAgICB7CiAgICAgICAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0aW9u LmNvbXB1dGVkLmZ1bmNzOwotQEAgLTc3Niw2ICs3OTksMTIgQEAgc2V0X3ZhbHVlX2NvbXBvbmVu dF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsIHN0cnVjdCB2YWx1ZSAqd2hvbGUp CitAQCAtNzgzLDYgKzgwNCwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1 Y3QgdmFsdWUgKmNvbXBvbmVudCwgc3RydWN0IHZhbHVlICp3aG9sZSkKICAgICAgICBpZiAoZnVu Y3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+bG9jYXRpb24uY29tcHV0ZWQu Y2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsKICAgICAgfQpAQCAtMjkzMTAs NyArMTk1NjAsNyBAQCBpbmRleCA1ODllMDNiLi42MjAwM2ZhIDEwMDY0NAogIH0KICAKICAMCi1A QCAtOTA2LDYgKzkzNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21f dHR5KQorQEAgLTkxMyw2ICs5NDAsMjkgQEAgc2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGlu dCBmcm9tX3R0eSkKICAgICAgICBudW1fZXhwWzFdID0gJ1wwJzsKICAgICAgfQogIH0KQEAgLTI5 MzQwLDcgKzE5NTkwLDcgQEAgaW5kZXggNTg5ZTAzYi4uNjIwMDNmYSAxMDA2NDQKICAMCiAgLyog SW50ZXJuYWwgdmFyaWFibGVzLiAgVGhlc2UgYXJlIHZhcmlhYmxlcyB3aXRoaW4gdGhlIGRlYnVn Z2VyCiAgICAgdGhhdCBob2xkIHZhbHVlcyBhc3NpZ25lZCBieSBkZWJ1Z2dlciBjb21tYW5kcy4K LUBAIC0xMzgxLDYgKzE0MzMsNDAgQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCitAQCAtMTM4OCw2ICsxNDM4LDQwIEBAIGNhbGxfaW50ZXJuYWxfZnVu Y3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgcmV0dXJuICgqaWZuLT5oYW5kbGVy KSAoZ2RiYXJjaCwgbGFuZ3VhZ2UsIGlmbi0+Y29va2llLCBhcmdjLCBhcmd2KTsKICB9CiAgCkBA IC0yOTM4MSw3ICsxOTYzMSw3IEBAIGluZGV4IDU4OWUwM2IuLjYyMDAzZmEgMTAwNjQ0CiAgLyog VGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0tIGl0IGlzIGp1c3Qg YQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1FIiB3b3JrLiAgVGhp cyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1Yi1jb21t YW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMTQyOCwxMSArMTUxNCwxMCBAQCBwcmVzZXJ2 ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorQEAgLTE0MzUsMTEgKzE1MTksMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFs dWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBodGFiX3QgY29waWVk X3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBlKSA9PSBvYmpmaWxl KQpAQCAtMjkzOTUsNyArMTk2NDUsNyBAQCBpbmRleCA1ODllMDNiLi42MjAwM2ZhIDEwMDY0NAog IAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBAIC0xNDQ3LDEzICsxNTMyLDEzIEBAIHBy ZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorQEAgLTE0NTQsMTMgKzE1MzcsMTMgQEAgcHJlc2VydmVfb25lX2lu dGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBpZiAodmFyLT51Lmlu dGVnZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5cGUpID09IG9iamZp bGUpCiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTI5NDExLDI1ICsxOTY2MSw3IEBAIGluZGV4 IDU4OWUwM2IuLjYyMDAzZmEgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgSU5U RVJOQUxWQVJfVkFMVUU6Ci1AQCAtMTg1NSw2ICsxOTQwLDggQEAgdmFsdWVfY2hhbmdlX2VuY2xv c2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHR5cGUgKm5ld19lbmNsX3R5cGUp Ci0gICAgIHZhbC0+Y29udGVudHMgPQotICAgICAgIChnZGJfYnl0ZSAqKSB4cmVhbGxvYyAodmFs LT5jb250ZW50cywgVFlQRV9MRU5HVEggKG5ld19lbmNsX3R5cGUpKTsKLSAKLSsgIHR5cGVfaW5j cmVmIChuZXdfZW5jbF90eXBlKTsKLSsgIHR5cGVfZGVjcmVmICh2YWwtPmVuY2xvc2luZ190eXBl KTsKLSAgIHZhbC0+ZW5jbG9zaW5nX3R5cGUgPSBuZXdfZW5jbF90eXBlOwotICAgcmV0dXJuIHZh bDsKLSB9Ci1AQCAtMTkxOSw2ICsyMDA2LDggQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1 Y3QgdmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCi0gCSAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19h bGxfcmF3ICh2KSwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAoYXJnMSksCi0gCQkgIFRZUEVfTEVO R1RIICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAoYXJnMSkpKTsKLSAJfQotKyAgICAgIHR5cGVfaW5j cmVmICh0eXBlKTsKLSsgICAgICB0eXBlX2RlY3JlZiAodi0+dHlwZSk7Ci0gICAgICAgdi0+dHlw ZSA9IHR5cGU7Ci0gICAgICAgdi0+b2Zmc2V0ID0gdmFsdWVfb2Zmc2V0IChhcmcxKTsKLSAgICAg ICB2LT5lbWJlZGRlZF9vZmZzZXQgPSAob2Zmc2V0ICsgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChh cmcxKQotQEAgLTIxNzcsNiArMjI2Niw0MiBAQCBwYWNrX2xvbmcgKGdkYl9ieXRlICpidWYsIHN0 cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIG51bSkKK0BAIC0yMTkyLDYgKzIyNzUsNDIgQEAgcGFj a19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCiAg fQogIAogIApAQCAtMjk0NzIsNyArMTk3MDQsNyBAQCBpbmRleCA1ODllMDNiLi42MjAwM2ZhIDEw MDY0NAogIC8qIENvbnZlcnQgQyBudW1iZXJzIGludG8gbmV3bHkgYWxsb2NhdGVkIHZhbHVlcy4g ICovCiAgCiAgc3RydWN0IHZhbHVlICoKLUBAIC0yMTkwLDYgKzIzMTUsMTkgQEAgdmFsdWVfZnJv bV9sb25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCitAQCAtMjIwNSw2ICsy MzI0LDE5IEBAIHZhbHVlX2Zyb21fbG9uZ2VzdCAoc3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1Qg bnVtKQogIH0KICAKICAKQEAgLTI5NDkyLDcgKzE5NzI0LDcgQEAgaW5kZXggNTg5ZTAzYi4uNjIw MDNmYSAxMDA2NDQKICAvKiBDcmVhdGUgYSB2YWx1ZSByZXByZXNlbnRpbmcgYSBwb2ludGVyIG9m IHR5cGUgVFlQRSB0byB0aGUgYWRkcmVzcwogICAgIEFERFIuICAqLwogIHN0cnVjdCB2YWx1ZSAq Ci1AQCAtMjM0OCw0ICsyNDg2LDggQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4i KSk7CitAQCAtMjM2Myw0ICsyNDk1LDggQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXpl ZC4iKSk7CiAgICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9uIiwgbm9fY2xhc3MsIGZ1bmN0aW9u X2NvbW1hbmQsIF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5kIGZvciBzaG93aW5nIGhlbHAgb24g Y29udmVuaWVuY2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVuY3Rpb25saXN0LCAiZnVuY3Rpb24g IiwgMCwgJmNtZGxpc3QpOwpAQCAtMjk1MDIsNyArMTk3MzQsNyBAQCBpbmRleCA1ODllMDNiLi42 MjAwM2ZhIDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAodmFsdWVfdHlwZXNf bWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAot aW5kZXggNTFlNjk2MC4uNDhiMzBlNCAxMDA2NDQKK2luZGV4IDhhYzYyYjguLjA1MWM4YzUgMTAw NjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3ZhbHVlLmgKIEBAIC0zNDIsMTEgKzM0 MiwxNiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RydWN0IHR5cGUg KnR5cGUsCkBAIC0yOTUyMiwxNSArMTk3NTQsNyBAQCBpbmRleCA1MWU2OTYwLi40OGIzMGU0IDEw MDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Q09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0X2xhenkgKHN0 cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgCi1AQCAtNDM2LDYgKzQ0MSw3IEBA IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqKmFy Z3AsCi0gCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWdncmVnYXRlX2VsdCAoc3RydWN0 IHR5cGUgKmN1cnR5cGUsCi0gCQkJCQkgIGNoYXIgKm5hbWUsCi0rCQkJCQkgIHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKLSAJCQkJCSAgaW50IHdhbnRfYWRkcmVzcywKLSAJCQkJCSAgZW51bSBu b3NpZGUgbm9zaWRlKTsKLSAKLUBAIC02ODEsNyArNjg3LDcgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1 ZSAqdmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7CitAQCAtNjg0LDcgKzY4 OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRlX3NwYWNlX2luX2luZmVy aW9yIChpbnQpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX29mX2xvY2FsIChjb25zdCBj aGFyICpuYW1lLCBpbnQgY29tcGxhaW4pOwogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwKQEAgLTI5NTQwLDcgKzE5 NzY0LDcgQEAgaW5kZXggNTFlNjk2MC4uNDhiMzBlNCAxMDA2NDQKICAvKiBVc2VyIGZ1bmN0aW9u IGhhbmRsZXIuICAqLwogIAogZGlmZiAtLWdpdCBhL2dkYi92YXJvYmouYyBiL2dkYi92YXJvYmou YwotaW5kZXggOGYyMjE1Ni4uOGZlNzJjYSAxMDA2NDQKK2luZGV4IDQ2ZDZiMzQuLjA1MzY3NTMg MTAwNjQ0CiAtLS0gYS9nZGIvdmFyb2JqLmMKICsrKyBiL2dkYi92YXJvYmouYwogQEAgLTI2LDYg KzI2LDggQEAKQEAgLTI5NTUyLDY2ICsxOTc3Niw3IEBAIGluZGV4IDhmMjIxNTYuLjhmZTcyY2Eg MTAwNjQ0CiAgCiAgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAjaW5jbHVkZSAiZ2RiX3N0cmlu Zy5oIgotQEAgLTI1Myw2ICsyNTUsOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3ZhcmlhYmxlIChzdHJ1 Y3QgdmFyb2JqICp2YXIpOwotIAotIHN0YXRpYyBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVw X2ZyZWVfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhcik7Ci0gCi0rc3RhdGljIHN0cnVjdCBj bGVhbnVwICptYWtlX2NsZWFudXBfdW5pbnN0YWxsX3ZhcmlhYmxlIChzdHJ1Y3QgdmFyb2JqICp2 YXIpOwotKwotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X3R5cGUgKHN0cnVjdCB2YXJvYmogKnZh cik7Ci0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfdmFsdWVfdHlwZSAoc3RydWN0IHZhcm9i aiAqdmFyKTsKLUBAIC00ODAsNiArNDg0LDggQEAgaXNfcm9vdF9wIChzdHJ1Y3QgdmFyb2JqICp2 YXIpCi0gc3RydWN0IGNsZWFudXAgKgotIHZhcm9ial9lbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0 IHZhcm9iaiAqdmFyKQotIHsKLSsgIGdkYl9hc3NlcnQgKHZhci0+cm9vdC0+aXNfdmFsaWQpOwot KwotICAgcmV0dXJuIGVuc3VyZV9weXRob25fZW52ICh2YXItPnJvb3QtPmV4cC0+Z2RiYXJjaCwK LSAJCQkgICAgdmFyLT5yb290LT5leHAtPmxhbmd1YWdlX2RlZm4pOwotIH0KLUBAIC02NTEsNiAr NjU3LDcgQEAgdmFyb2JqX2NyZWF0ZSAoY2hhciAqb2JqbmFtZSwKLSAJICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKLSAJICByZXR1cm4gTlVMTDsKLSAJfQotKyAgICAgIG1ha2VfY2xlYW51cF91 bmluc3RhbGxfdmFyaWFibGUgKHZhcik7Ci0gICAgIH0KLSAKLSAgIGRpc2NhcmRfY2xlYW51cHMg KG9sZF9jaGFpbik7Ci1AQCAtODIxLDcgKzgyOCwxMiBAQCB2YXJvYmpfZ2V0X2Rpc3BsYXlfaGlu dCAoc3RydWN0IHZhcm9iaiAqdmFyKQotICAgY2hhciAqcmVzdWx0ID0gTlVMTDsKLSAKLSAjaWYg SEFWRV9QWVRIT04KLS0gIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvID0gdmFyb2JqX2Vuc3VyZV9w eXRob25fZW52ICh2YXIpOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rICAKLSsgIGlm ICghdmFyLT5yb290LT5pc192YWxpZCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBiYWNrX3Rv ID0gdmFyb2JqX2Vuc3VyZV9weXRob25fZW52ICh2YXIpOwotIAotICAgaWYgKHZhci0+cHJldHR5 X3ByaW50ZXIpCi0gICAgIHJlc3VsdCA9IGdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKHZhci0+cHJl dHR5X3ByaW50ZXIpOwotQEAgLTIxODYsNiArMjE5OCwxOCBAQCBtYWtlX2NsZWFudXBfZnJlZV92 YXJpYWJsZSAoc3RydWN0IHZhcm9iaiAqdmFyKQotICAgcmV0dXJuIG1ha2VfY2xlYW51cCAoZG9f ZnJlZV92YXJpYWJsZV9jbGVhbnVwLCB2YXIpOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK2RvX3Vu aW5zdGFsbF92YXJpYWJsZV9jbGVhbnVwICh2b2lkICp2YXIpCi0rewotKyAgdW5pbnN0YWxsX3Zh cmlhYmxlICh2YXIpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGNsZWFudXAgKgotK21ha2VfY2xl YW51cF91bmluc3RhbGxfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhcikKLSt7Ci0rICByZXR1 cm4gbWFrZV9jbGVhbnVwIChkb191bmluc3RhbGxfdmFyaWFibGVfY2xlYW51cCwgdmFyKTsKLSt9 Ci0rCi0gLyogVGhpcyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZS4gSXQgYWxzbyBz a2lwcyBwYXN0IHR5cGVkZWZzCi0gICAgdG8gcmV0dXJuIHRoZSByZWFsIHR5cGUgb2YgdGhlIHZh cmlhYmxlLgotIAotQEAgLTM0NDIsNiArMzQ2NiwxOSBAQCBqYXZhX3ZhbHVlX29mX3ZhcmlhYmxl IChzdHJ1Y3QgdmFyb2JqICp2YXIsIGVudW0gdmFyb2JqX2Rpc3BsYXlfZm9ybWF0cyBmb3JtYXQp CitAQCAtMzQ2OCw2ICszNDcwLDE5IEBAIGphdmFfdmFsdWVfb2ZfdmFyaWFibGUgKHN0cnVjdCB2 YXJvYmogKnZhciwgZW51bSB2YXJvYmpfZGlzcGxheV9mb3JtYXRzIGZvcm1hdCkKICAgIHJldHVy biBjcGx1c192YWx1ZV9vZl92YXJpYWJsZSAodmFyLCBmb3JtYXQpOwogIH0KICAKQEAgLTI5NjMx LDcgKzE5Nzk2LDcgQEAgaW5kZXggOGYyMjE1Ni4uOGZlNzJjYSAxMDA2NDQKICAvKiBJdGVyYXRl IGFsbCB0aGUgZXhpc3RpbmcgX3Jvb3RfIFZBUk9CSnMgYW5kIGNhbGwgdGhlIEZVTkMgY2FsbGJh Y2sgZm9yIHRoZW0KICAgICB3aXRoIGFuIGFyYml0cmFyeSBjYWxsZXIgc3VwcGxpZWQgREFUQSBw b2ludGVyLiAgKi8KICAKLUBAIC0zNDU5LDYgKzM0OTYsNDMgQEAgYWxsX3Jvb3RfdmFyb2JqcyAo dm9pZCAoKmZ1bmMpIChzdHJ1Y3QgdmFyb2JqICp2YXIsIHZvaWQgKmRhdGEpLCB2b2lkICpkYXRh KQorQEAgLTM0ODUsNiArMzUwMCw0MyBAQCBhbGxfcm9vdF92YXJvYmpzICh2b2lkICgqZnVuYykg KHN0cnVjdCB2YXJvYmogKnZhciwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpCiAgICAgICAgKCpm dW5jKSAodmFyX3Jvb3QtPnJvb3R2YXIsIGRhdGEpOwogICAgICB9CiAgfQpAQCAtMjk2NzYsMTAg KzE5ODQxLDEwIEBAIGluZGV4IDhmMjIxNTYuLjhmZTcyY2EgMTAwNjQ0CiAgZXh0ZXJuIHZvaWQg X2luaXRpYWxpemVfdmFyb2JqICh2b2lkKTsKICB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3hjb2Zm cmVhZC5jIGIvZ2RiL3hjb2ZmcmVhZC5jCi1pbmRleCBjNTZhYjg2Li5kYWNmOTEzIDEwMDY0NAor aW5kZXggNjMwMWI2MS4uNDdjMmFjYiAxMDA2NDQKIC0tLSBhL2dkYi94Y29mZnJlYWQuYwogKysr IGIvZ2RiL3hjb2ZmcmVhZC5jCi1AQCAtMzAzOCw2ICszMDM4LDcgQEAgc3RhdGljIHN0cnVjdCBz eW1fZm5zIHhjb2ZmX3N5bV9mbnMgPQorQEAgLTMwMzUsNiArMzAzNSw3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc3ltX2ZucyB4Y29mZl9zeW1fZm5zID0KICAgIHhjb2ZmX25ld19pbml0LAkJLyogc3ltX25l d19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCiAgICB4Y29mZl9z eW1maWxlX2luaXQsCQkvKiBzeW1faW5pdDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBz eW1fcmVhZCgpICovCiAgICB4Y29mZl9pbml0aWFsX3NjYW4sCQkvKiBzeW1fcmVhZDogcmVhZCBh IHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJpdGZpZWxkLWNo ZWNrX3R5cGVkZWYucGF0Y2ggYi9nZGItYml0ZmllbGQtY2hlY2tfdHlwZWRlZi5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE4N2JmYi4uMDAwMDAwMAotLS0gYS9nZGItYml0 ZmllbGQtY2hlY2tfdHlwZWRlZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDAzMC5o dG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFJlOiBSZWdyZXNzaW9uOiBmaWVsZCB0eXBlIHByZXNlcnZh dGlvbjogNy4wIC0+IDcuMC4xK0hFQUQKLQotT24gRnJpZGF5IDAxIEphbnVhcnkgMjAxMCAyMTo0 NTowNSBKYW4gS3JhdG9jaHZpbCB3cm90ZToKLT4gLVBBU1M6IGdkYi5taS9taS12YXItY2hpbGQu ZXhwOiBnZXQgY2hpbGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51MXMxCi0+ICtG QUlMOiBnZGIubWkvbWktdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9mIHN0cnVjdF9kZWNs YXJhdGlvbnMuczIudTIudTFzMQotPiAtUEFTUzogZ2RiLm1pL21pMi12YXItY2hpbGQuZXhwOiBn ZXQgY2hpbGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51MXMxCi0+ICtGQUlMOiBn ZGIubWkvbWkyLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRp b25zLnMyLnUyLnUxczEKLT4gLVBBU1M6IGdkYi5weXRob24vcHktbWkuZXhwOiBleGFtaW5lIGNv bnRhaW5lciBjaGlsZHJlbj0wLCBubyBwcmV0dHktcHJpbnRpbmcKLT4gK0ZBSUw6IGdkYi5weXRo b24vcHktbWkuZXhwOiBleGFtaW5lIGNvbnRhaW5lciBjaGlsZHJlbj0wLCBubyBwcmV0dHktcHJp bnRpbmcKLT4gCi0+IGR1ZSB0bzoKLT4gUmU6IFJGQTogdW5icmVhayB0eXBlZGVmZWQgYml0Zmll bGQKLT4gaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMTIvbXNnMDAy OTUuaHRtbAotPiBjb21taXQgZmM4NWRhNGVlMmE3YzMyYWZjNTNiMWIzMzRhNGY4NGUyZTliZDg0 ZQotPiBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTEyL21zZzAwMTAwLmh0 bWwKLQotYXR0YWNoZWQgYSBmaXggb24gdG9wIG9mIGV4aXN0aW5nIEhFQUQuCi0KLU9yaWdpbmFs IFBSIGdkYi8xMDg4NCB3YXMgYSByZWdyZXNzaW9uIDYuOCAtPiA3LjAgZHVlIHRvOgotUkZDOiBM YXp5IGJpdGZpZWxkcwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDkt MDcvbXNnMDA0MzcuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAwOS0w Ny9tc2cwMDE0My5odG1sCi0wNzQ5MWIzNDA5ZjZhY2UwYjdhOWE3MDc3NzVhNTZjZTEwZmVjZTFj Ci0KLU5vIHJlZ3Jlc3Npb25zIGZvciBIRUFEIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1m ZWRvcmExMi1saW51eC1nbnUuICBQbHVzOgotLUZBSUw6IGdkYi5taS9taS12YXItY2hpbGQuZXhw OiBnZXQgY2hpbGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51MXMxCi0rUEFTUzog Z2RiLm1pL21pLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRp b25zLnMyLnUyLnUxczEKLS1GQUlMOiBnZGIubWkvbWkyLXZhci1jaGlsZC5leHA6IGdldCBjaGls ZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUxczEKLStQQVNTOiBnZGIubWkvbWky LXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMyLnUy LnUxczEKLS1GQUlMOiBnZGIucHl0aG9uL3B5LW1pLmV4cDogZXhhbWluZSBjb250YWluZXIgY2hp bGRyZW49MCwgbm8gcHJldHR5LXByaW50aW5nCi0rUEFTUzogZ2RiLnB5dGhvbi9weS1taS5leHA6 IGV4YW1pbmUgY29udGFpbmVyIGNoaWxkcmVuPTAsIG5vIHByZXR0eS1wcmludGluZwotCi1Hb2lu ZyB0byBjaGVjayBpdCBpbiBhbHNvIGZvciBnZGJfN18wLWJyYW5jaCBhZnRlciBhbiBhcHByb3Zh bC4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTAxLTAyICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIHZhbHVlLmMgKHZhbHVlX3ByaW1p dGl2ZV9maWVsZCk6IFJlbW92ZSBvbmUgY2hlY2tfdHlwZWRlZiBjYWxsLgotCU1vdmUgYml0cG9z IGFuZCBjb250YWluZXJfYml0c2l6ZSBpbml0aWFsaXphdGlvbiBhZnRlcgotCWFsbG9jYXRlX3Zh bHVlX2xhenkuICBOZXcgY29tbWVudCBiZWZvcmUgYWNjZXNzaW5nIFRZUEVfTEVOR1RILgotCi1n ZGIvdGVzdHN1aXRlLwotMjAxMC0wMS0wMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBnZGIubWkvdmFyLWNtZC5jIChkb19iaXRmaWVsZF90ZXN0cyk6 IENoYW5nZSAiVi5zaGFyYWJsZSIgdHlwZSB0bwotCSJ1aW50X2Zvcl9taV90ZXN0aW5nIi4KLQot LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmFyLWNtZC5jCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5taS92YXItY21kLmMKLUBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBkb19iaXRmaWVsZF90 ZXN0cyAoKQotICAgICBtaV9jcmVhdGVfdmFyb2JqIFYgZCAiY3JlYXRlIHZhcm9iaiBmb3IgRGF0 YSIKLSAgICAgbWlfbGlzdF92YXJvYmpfY2hpbGRyZW4gIlYiIHsKLSAgICAgICAgIHsiVi5hbGxv YyIgImFsbG9jIiAiMCIgImludCJ9Ci0tICAgICAgICB7IlYuc2hhcmFibGUiICJzaGFyYWJsZSIg IjAiICJ1bnNpZ25lZCBpbnQifQotKyAgICAgICAgeyJWLnNoYXJhYmxlIiAic2hhcmFibGUiICIw IiAidWludF9mb3JfbWlfdGVzdGluZyJ9Ci0gICAgIH0gImxpc3QgY2hpbGRyZW4gb2YgRGF0YSIK LSAgICAgbWlfY2hlY2tfdmFyb2JqX3ZhbHVlIFYuc2hhcmFibGUgMyAiYWNjZXNzIGJpdGZpZWxk IgotICAgICA6Ki8KLS0tLSBhL2dkYi92YWx1ZS5jCi0rKysgYi9nZGIvdmFsdWUuYwotQEAgLTE4 NzMsNyArMTg3Myw2IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcx LCBpbnQgb2Zmc2V0LAotIAotICAgQ0hFQ0tfVFlQRURFRiAoYXJnX3R5cGUpOwotICAgdHlwZSA9 IFRZUEVfRklFTERfVFlQRSAoYXJnX3R5cGUsIGZpZWxkbm8pOwotLSAgdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHR5cGUpOwotIAotICAgLyogSGFuZGxlIHBhY2tlZCBmaWVsZHMgKi8KLSAKLUBAIC0x ODg1LDEwICsxODg0LDE0IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICph cmcxLCBpbnQgb2Zmc2V0LAotIAkgT3RoZXJ3aXNlLCBhZGp1c3Qgb2Zmc2V0IHRvIHRoZSBieXRl IGNvbnRhaW5pbmcgdGhlIGZpcnN0Ci0gCSBiaXQuICBBc3N1bWUgdGhhdCB0aGUgYWRkcmVzcywg b2Zmc2V0LCBhbmQgZW1iZWRkZWQgb2Zmc2V0Ci0gCSBhcmUgc3VmZmljaWVudGx5IGFsaWduZWQu ICAqLwotLSAgICAgIGludCBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAoYXJnX3R5cGUsIGZp ZWxkbm8pOwotLSAgICAgIGludCBjb250YWluZXJfYml0c2l6ZSA9IFRZUEVfTEVOR1RIICh0eXBl KSAqIDg7Ci0rICAgICAgaW50IGJpdHBvcywgY29udGFpbmVyX2JpdHNpemU7Ci0gCi0gICAgICAg diA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwotKwotKyAgICAgIC8qIFRZUEVfTEVOR1RI IG9mIFRZUEUgZ2V0cyBpbml0aWFsaXplZCBieSBhbGxvY2F0ZV92YWx1ZV9sYXp5LiAgKi8KLSsg ICAgICBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAoYXJnX3R5cGUsIGZpZWxkbm8pOwotKyAg ICAgIGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICogODsKLSsKLSAgICAg ICB2LT5iaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwgZmllbGRubyk7Ci0g ICAgICAgaWYgKChiaXRwb3MgJSBjb250YWluZXJfYml0c2l6ZSkgKyB2LT5iaXRzaXplIDw9IGNv bnRhaW5lcl9iaXRzaXplCi0gCSAgJiYgVFlQRV9MRU5HVEggKHR5cGUpIDw9IChpbnQpIHNpemVv ZiAoTE9OR0VTVCkpCi1AQCAtMTkzOSw2ICsxOTQyLDggQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxk IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCi0gICAgICAgZWxzZQotIAl7Ci0gCSAg diA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsKLSsJICAvKiBUWVBFX0xFTkdUSCBvZiBUWVBF IGdldHMgaW5pdGlhbGl6ZWQgYnkgYWxsb2NhdGVfdmFsdWUuICAqLwotIAkgIG1lbWNweSAodmFs dWVfY29udGVudHNfcmF3ICh2KSwKLSAJCSAgdmFsdWVfY29udGVudHNfcmF3IChhcmcxKSArIG9m ZnNldCwKLSAJCSAgVFlQRV9MRU5HVEggKHR5cGUpKTsKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejUy ODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2ggYi9nZGItYno1Mjg2Njgtc3ltZmlsZS1jbGVhbnVw LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTg0M2ZhLi4wMDAwMDAwCi0t LSBhL2dkYi1iejUyODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMzcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDkt MTAvbXNnMDA1MDkuaHRtbAotU3ViamVjdDogW3BhdGNoIDIvM10gZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlIGNsZWFudXAKLQotSGksCi0KLWN1cnJlbnQgY29kZSB3YXM6Ci0qIGRpZmZpY3VsdCB0 byBtYWludGFpbiBhcyBhIG5ldyB2YXJpYWJsZSByZXF1aXJlZCB4ZnJlZSBvbiBtYW55IHBsYWNl cwotKiB3YXMgY2F1c2luZyBtZW1vcnkgY29ycnVwdGlvbnMgZHVlIHRvIHNpbGVudGx5IG1pc2Fw cGxpZWQgM3JkIHBhcnR5IHBhdGNoZXMKLSAgYXMgdGhlIGNsb3NlIGNvZGUgZnJhZ21lbnRzIHVu Zm9ydHVuYXRlbHkgbWF0Y2ggcGF0Y2ggY29udGV4dAotCi0KLVRoYW5rcywKLUphbgotCi0KLWdk Yi8KLTIwMDktMTAtMjEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLQotCSogc3ltZmlsZS5jIChmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBJbml0aWFsaXpl IGRpciwgZGVidWdmaWxlIGFuZAotCWNhbm9uX25hbWUgdG8gTlVMTC4gIENoYW5nZSBhbGxvY2Eg dG8geG1hbGxvYywgbmV3bHkgY2FsbCB4ZnJlZSBmb3IgaXQuCi0JTmV3IGxhYmVsIGNsZWFudXBf cmV0dXJuX2RlYnVnZmlsZSwganVtcCB0byBpdCBmcm9tIHRoZSBmYWlsdXJlIHBhdGhzLgotCi0t LS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtMTMzMywxMSArMTMz MywxMCBAQCBzdGF0aWMgY2hhciAqCi0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBhc2VjdGlvbiAqc2VjdDsKLS0gIGNoYXIgKmJhc2Vu YW1lOwotLSAgY2hhciAqZGlyOwotLSAgY2hhciAqZGVidWdmaWxlOwotLSAgY2hhciAqbmFtZV9j b3B5OwotLSAgY2hhciAqY2Fub25fbmFtZTsKLSsgIGNoYXIgKmJhc2VuYW1lLCAqbmFtZV9jb3B5 OwotKyAgY2hhciAqZGlyID0gTlVMTDsKLSsgIGNoYXIgKmRlYnVnZmlsZSA9IE5VTEw7Ci0rICBj aGFyICpjYW5vbl9uYW1lID0gTlVMTDsKLSAgIGJmZF9zaXplX3R5cGUgZGVidWdsaW5rX3NpemU7 Ci0gICB1bnNpZ25lZCBsb25nIGNyYzMyOwotICAgaW50IGk7Ci1AQCAtMTM2Niw3ICsxMzY1LDcg QEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAg IGlmIChiYXNlbmFtZSA9PSBOVUxMKQotICAgICAvKiBUaGVyZSdzIG5vIHNlcGFyYXRlIGRlYnVn IGluZm8sIGhlbmNlIHRoZXJlJ3Mgbm8gd2F5IHdlIGNvdWxkCi0gICAgICAgIGxvYWQgaXQgPT4g bm8gd2FybmluZy4gICovCi0tICAgIHJldHVybiBOVUxMOwotKyAgICBnb3RvIGNsZWFudXBfcmV0 dXJuX2RlYnVnZmlsZTsKLSAKLSAgIGRpciA9IHhzdHJkdXAgKG9iamZpbGUtPm5hbWUpOwotIAot QEAgLTEzODgsMjQgKzEzODcsMTkgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKLSAgIGlmIChjYW5vbl9uYW1lICYmIHN0cmxlbiAoY2Fub25fbmFt ZSkgPiBpKQotICAgICBpID0gc3RybGVuIChjYW5vbl9uYW1lKTsKLSAKLS0gIGRlYnVnZmlsZSA9 IGFsbG9jYSAoc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxCi0tICAgICAgICAgICAg ICAgICAgICAgICsgaQotLSAgICAgICAgICAgICAgICAgICAgICArIHN0cmxlbiAoREVCVUdfU1VC RElSRUNUT1JZKQotLSAgICAgICAgICAgICAgICAgICAgICArIHN0cmxlbiAoIi8iKQotLSAgICAg ICAgICAgICAgICAgICAgICArIHN0cmxlbiAoYmFzZW5hbWUpCi0tICAgICAgICAgICAgICAgICAg ICAgICsgMSk7Ci0rICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGRlYnVnX2ZpbGVfZGly ZWN0b3J5KSArIDEKLSsJCSAgICAgICArIGkKLSsJCSAgICAgICArIHN0cmxlbiAoREVCVUdfU1VC RElSRUNUT1JZKQotKwkJICAgICAgICsgc3RybGVuICgiLyIpCi0rCQkgICAgICAgKyBzdHJsZW4g KGJhc2VuYW1lKQotKwkJICAgICAgICsgMSk7Ci0gCi0gICAvKiBGaXJzdCB0cnkgaW4gdGhlIHNh bWUgZGlyZWN0b3J5IGFzIHRoZSBvcmlnaW5hbCBmaWxlLiAgKi8KLSAgIHN0cmNweSAoZGVidWdm aWxlLCBkaXIpOwotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgIGlmIChz ZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFt ZSkpCi0tICAgIHsKLS0gICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAgIHhmcmVlIChkaXIp OwotLSAgICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0gICAgICByZXR1cm4geHN0cmR1cCAoZGVi dWdmaWxlKTsKLS0gICAgfQotKyAgICBnb3RvIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAK LSAgIC8qIFRoZW4gdHJ5IGluIHRoZSBzdWJkaXJlY3RvcnkgbmFtZWQgREVCVUdfU1VCRElSRUNU T1JZLiAgKi8KLSAgIHN0cmNweSAoZGVidWdmaWxlLCBkaXIpOwotQEAgLTE0MTQsMTIgKzE0MDgs NyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQot ICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1 Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0tICAgIHsK LS0gICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAgIHhmcmVlIChkaXIpOwotLSAgICAgIHhm cmVlIChjYW5vbl9uYW1lKTsKLS0gICAgICByZXR1cm4geHN0cmR1cCAoZGVidWdmaWxlKTsKLS0g ICAgfQotKyAgICBnb3RvIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAKLSAgIC8qIFRoZW4g dHJ5IGluIHRoZSBnbG9iYWwgZGVidWdmaWxlIGRpcmVjdG9yeS4gICovCi0gICBzdHJjcHkgKGRl YnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotQEAgLTE0MjgsMTIgKzE0MTcsNyBAQCBm aW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxl X2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0tICAgIHsKLS0gICAg ICB4ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAgIHhmcmVlIChkaXIpOwotLSAgICAgIHhmcmVlIChj YW5vbl9uYW1lKTsKLS0gICAgICByZXR1cm4geHN0cmR1cCAoZGVidWdmaWxlKTsKLS0gICAgfQot KyAgICBnb3RvIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAKLSAgIC8qIElmIHRoZSBmaWxl IGlzIGluIHRoZSBzeXNyb290LCB0cnkgdXNpbmcgaXRzIGJhc2UgcGF0aCBpbiB0aGUKLSAgICAg IGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAgKi8KLUBAIC0xNDQ3LDIwICsxNDMxLDE3IEBA IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICAg ICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgICAgICBpZiAoc2VwYXJhdGVf ZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQotLQl7 Ci0tCSAgeGZyZWUgKGNhbm9uX25hbWUpOwotLQkgIHhmcmVlIChiYXNlbmFtZSk7Ci0tCSAgeGZy ZWUgKGRpcik7Ci0tCSAgcmV0dXJuIHhzdHJkdXAgKGRlYnVnZmlsZSk7Ci0tCX0KLSsJZ290byBj bGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7Ci0gICAgIH0KLSAgIAotLSAgaWYgKGNhbm9uX25hbWUp Ci0tICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLSsgIHhmcmVlIChkZWJ1Z2ZpbGUpOwotKyAgZGVi dWdmaWxlID0gTlVMTDsKLSAKLStjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU6Ci0rICB4ZnJlZSAo Y2Fub25fbmFtZSk7Ci0gICB4ZnJlZSAoYmFzZW5hbWUpOwotICAgeGZyZWUgKGRpcik7Ci0tICBy ZXR1cm4gTlVMTDsKLSsgIHJldHVybiBkZWJ1Z2ZpbGU7Ci0gfQotIAotIAotCgpkaWZmIC0tZ2l0 IGEvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtbXVsdGkucGF0Y2ggYi9nZGItYno1Mjg2Njgtc3ltZmls ZS1tdWx0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc3M2YyZi4uMDAw MDAwMAotLS0gYS9nZGItYno1Mjg2Njgtc3ltZmlsZS1tdWx0aS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDI3MSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAwOS0xMC9tc2cwMDUwOC5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMy8zXSBkZWJ1Zy1maWxlLWRp cmVjdG9yeSB3aXRoIG11bHRpcGxlIGNvbXBvbmVudHMKLQotSGksCi0KLWZvciB2YXJpb3VzIHJl YXNvbnMgYGRlYnVnLWZpbGUtZGlyZWN0b3J5JyB3b3VsZCBiZSBzb21ldGltZXMgdXNlZnVsIHRv IGhhdmUKLW11bHRpcGxlIGNvbXBvbmVudHMgc3VjaCBhcyBgc29saWItc2VhcmNoLXBhdGgnIGhh cy4KLQotSSBmb3VuZCBpdCB1c2VmdWwgbXlzZWxmIGR1cmluZyB2YXJpb3VzIHNlcGFyYXRlIGRl YnVnaW5mbyB0ZXN0cy9zY3JpcHRzLgotCi1JdCB3YXMgcmVxdWVzdGVkIGZvciB0aGUgQUJSVCBi dWdyZXBvcnRpbmcgcHJvamVjdCBhdCB0aGUgcHJlY2VkaW5nIG1haWwgb2Y6Ci0JaHR0cHM6Ly9m ZWRvcmFob3N0ZWQub3JnL3BpcGVybWFpbC9jcmFzaC1jYXRjaGVyLzIwMDktT2N0b2Jlci8wMDAw NTQuaHRtbAotCi1JdCBzaG91bGQgYmUgYSBiYWNrd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbiBh cyBESVJOQU1FX1NFUEFSQVRPUiBzaG91bGQgbmV2ZXIKLWJlIGEgdmFsaWQgcGFydCBvZiBhIHNp bmdsZSBERUJVR19GSUxFX0RJUkVDVE9SWSBjb21wb25lbnQuCi0KLQotVGhhbmtzLAotSmFuCi0K LQotZ2RiL2RvYy8KLTIwMDktMTAtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCSogZ2RiLnRleGluZm8gKHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSwg c2hvdyBkZWJ1Zy1maWxlLWRpcmVjdG9yeSkKLQkoQXV0by1sb2FkaW5nKTogVXNlIHBsdXJhbCBh bmQgbm90ZSBvbmUgY2FuIHVzZSBtdWx0aXBsZSBjb21wb25lbnRzIG5vdy4KLQotZ2RiLwotMjAw OS0xMC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0J KiBzeW1maWxlLmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlIGRl YnVnZGlyLiAgTW92ZQotCXZhcmlhYmxlcyBzaXplLCBzIGFuZCBkYXRhIGludG8gYSBuZXcgaW5u ZXIgYmxvY2suICBDaGFuZ2UgeG1hbGxvYyBmb3IKLQlhbGxvY2EsIHVzZSBkaXJlY3QgQlVJTERJ RC0+U0laRSB0aGVyZSBub3cuICBMb29wIGZvciB0aGUKLQlERUJVR19GSUxFX0RJUkVDVE9SWSBj b21wb25lbnRzLgotCShmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBOZXcgdmFyaWFibGUgZGVi dWdkaXIgYW5kIGRlYnVnZGlyX2VuZC4KLQlMb29wIGZvciB0aGUgREVCVUdfRklMRV9ESVJFQ1RP UlkgY29tcG9uZW50cy4KLQkoX2luaXRpYWxpemVfc3ltZmlsZSk6IEZvciAiZGVidWctZmlsZS1k aXJlY3RvcnkiIHVzZSBwbHVyYWwgYW5kIG5vdGUKLQlvbmUgY2FuIHVzZSBtdWx0aXBsZSBjb21w b25lbnRzIG5vdy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMDktMTAtMjIgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2Uvc2VwZGVidWcuZXhw OiBOZXcgdGVzdF9kaWZmZXJlbnRfZGlyIGNhbGwgZm9yIG11bHRpcGxlLWRpcnMuCi0KLS0tLSBh L2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xNDA2 NiwxMyArMTQwNjYsMTQgQEAgbmFtZSBAdmFsdWV7R0RCTn0gaXMgY3VycmVudGx5IHVzaW5nLgot IEB0YWJsZSBAY29kZQotIAotIEBraW5kZXggc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0tQGl0 ZW0gc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQotLVNldCB0aGUgZGly ZWN0b3J5IHdoaWNoIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3Igc2VwYXJhdGUgZGVidWdnaW5n Ci0taW5mb3JtYXRpb24gZmlsZXMgdG8gQHZhcntkaXJlY3Rvcnl9LgotK0BpdGVtIHNldCBkZWJ1 Zy1maWxlLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yaWVzfQotK1NldCB0aGUgZGlyZWN0b3JpZXMg d2hpY2ggQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dpbmcKLStpbmZv cm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0uICBNdWx0aXBsZSBkaXJlY3RvcnkgY29t cG9uZW50cyBjYW4gYmUgc2V0Ci0rY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEgZGlyZWN0b3J5IHNl cGFyYXRvci4KLSAKLSBAa2luZGV4IHNob3cgZGVidWctZmlsZS1kaXJlY3RvcnkKLSBAaXRlbSBz aG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0tU2hvdyB0aGUgZGlyZWN0b3J5IEB2YWx1ZXtHREJO fSBzZWFyY2hlcyBmb3Igc2VwYXJhdGUgZGVidWdnaW5nCi0rU2hvdyB0aGUgZGlyZWN0b3JpZXMg QHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dpbmcKLSBpbmZvcm1hdGlv biBmaWxlcy4KLSAKLSBAZW5kIHRhYmxlCi1AQCAtMTkzMzYsOCArMTkzMzcsOCBAQCByZWFkYWJs ZSwgQHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQgYXMgYSBQeXRob24gc2NyaXB0LgotIAot IElmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIGlmIHRoZSBwYXJhbWV0ZXIKLSBAY29k ZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJhdGUgRGVidWcgRmls ZXN9KSwKLS10aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSB0aGUgZmlsZSBuYW1lZAotLUBmaWxl e0B2YXJ7ZGVidWctZmlsZS1kaXJlY3Rvcnl9L0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCi0rdGhl biBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgZm9yIGl0cyBlYWNoIHNlcGFyYXRlZCBkaXJlY3Rvcnkg Y29tcG9uZW50Ci0rQGNvZGV7Y29tcG9uZW50fSB0aGUgZmlsZSBuYW1lZCBAZmlsZXtAY29kZXtj b21wb25lbnR9L0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCi0gQHZhcntyZWFsLW5hbWV9IGlzIHRo ZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgYXMgZGVzY3JpYmVkIGFib3ZlLgotIAotIEZpbmFs bHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBs b29rIGZvcgotLS0tIGEvZ2RiL3N5bWZpbGUuYwotKysrIGIvZ2RiL3N5bWZpbGUuYwotQEAgLTEy MTgsMzUgKzEyMTgsNTkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwg c3RydWN0IGJ1aWxkX2lkICpjaGVjaykKLSBzdGF0aWMgY2hhciAqCi0gYnVpbGRfaWRfdG9fZGVi dWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQpCi0gewotLSAgY2hhciAqbGlu aywgKnMsICpyZXR2YWwgPSBOVUxMOwotLSAgZ2RiX2J5dGUgKmRhdGEgPSBidWlsZF9pZC0+ZGF0 YTsKLS0gIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7Ci0rICBjaGFyICpsaW5rLCAqZGVi dWdkaXIsICpyZXR2YWwgPSBOVUxMOwotIAotICAgLyogREVCVUdfRklMRV9ESVJFQ1RPUlkvLmJ1 aWxkLWlkL2FiL2NkZWYgKi8KLS0gIGxpbmsgPSB4bWFsbG9jIChzdHJsZW4gKGRlYnVnX2ZpbGVf ZGlyZWN0b3J5KSArIChzaXplb2YgIi8uYnVpbGQtaWQvIiAtIDEpICsgMQotLQkJICArIDIgKiBz aXplICsgKHNpemVvZiAiLmRlYnVnIiAtIDEpICsgMSk7Ci0tICBzID0gbGluayArIHNwcmludGYg KGxpbmssICIlcy8uYnVpbGQtaWQvIiwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotLSAgaWYgKHNp emUgPiAwKQotLSAgICB7Ci0tICAgICAgc2l6ZS0tOwotLSAgICAgIHMgKz0gc3ByaW50ZiAocywg IiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOwotLSAgICB9Ci0tICBpZiAoc2l6ZSA+IDApCi0t ICAgICpzKysgPSAnLyc7Ci0tICB3aGlsZSAoc2l6ZS0tID4gMCkKLS0gICAgcyArPSBzcHJpbnRm IChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7Ci0tICBzdHJjcHkgKHMsICIuZGVidWci KTsKLS0KLS0gIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxs eSBub24tZXhpc3RlbnQgZmlsZXMuICAqLwotLSAgaWYgKGFjY2VzcyAobGluaywgRl9PSykgPT0g MCkKLS0gICAgcmV0dmFsID0gbHJlYWxwYXRoIChsaW5rKTsKLS0gIHhmcmVlIChsaW5rKTsKLS0K LS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChyZXR2YWwsIGJ1aWxk X2lkKSkKLSsgIGxpbmsgPSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsg KHNpemVvZiAiLy5idWlsZC1pZC8iIC0gMSkgKyAxCi0rCQkgKyAyICogYnVpbGRfaWQtPnNpemUg KyAoc2l6ZW9mICIuZGVidWciIC0gMSkgKyAxKTsKLSsKLSsgIC8qIEtlZXAgYmFja3dhcmQgY29t cGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5nICIiIHdpbGwKLSsg ICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICovCi0rCi0rICBkZWJ1Z2RpciA9 IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OwotKyAgZG8KLSAgICAgewotLSAgICAgIHhmcmVlIChyZXR2 YWwpOwotLSAgICAgIHJldHZhbCA9IE5VTEw7Ci0rICAgICAgY2hhciAqcywgKmRlYnVnZGlyX2Vu ZDsKLSsgICAgICBnZGJfYnl0ZSAqZGF0YSA9IGJ1aWxkX2lkLT5kYXRhOwotKyAgICAgIHNpemVf dCBzaXplID0gYnVpbGRfaWQtPnNpemU7Ci0rCi0rICAgICAgd2hpbGUgKCpkZWJ1Z2RpciA9PSBE SVJOQU1FX1NFUEFSQVRPUikKLSsJZGVidWdkaXIrKzsKLSsKLSsgICAgICBkZWJ1Z2Rpcl9lbmQg PSBzdHJjaHIgKGRlYnVnZGlyLCBESVJOQU1FX1NFUEFSQVRPUik7Ci0rICAgICAgaWYgKGRlYnVn ZGlyX2VuZCA9PSBOVUxMKQotKwlkZWJ1Z2Rpcl9lbmQgPSAmZGVidWdkaXJbc3RybGVuIChkZWJ1 Z2RpcildOwotKwotKyAgICAgIG1lbWNweSAobGluaywgZGVidWdkaXIsIGRlYnVnZGlyX2VuZCAt IGRlYnVnZGlyKTsKLSsgICAgICBzID0gJmxpbmtbZGVidWdkaXJfZW5kIC0gZGVidWdkaXJdOwot KyAgICAgIHMgKz0gc3ByaW50ZiAocywgIi8uYnVpbGQtaWQvIik7Ci0rICAgICAgaWYgKHNpemUg PiAwKQotKwl7Ci0rCSAgc2l6ZS0tOwotKwkgIHMgKz0gc3ByaW50ZiAocywgIiUwMngiLCAodW5z aWduZWQpICpkYXRhKyspOwotKwl9Ci0rICAgICAgaWYgKHNpemUgPiAwKQotKwkqcysrID0gJy8n OwotKyAgICAgIHdoaWxlIChzaXplLS0gPiAwKQotKwlzICs9IHNwcmludGYgKHMsICIlMDJ4Iiwg KHVuc2lnbmVkKSAqZGF0YSsrKTsKLSsgICAgICBzdHJjcHkgKHMsICIuZGVidWciKTsKLSsKLSsg ICAgICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3IgdGhlIHVzdWFsbHkgbm9u LWV4aXN0ZW50IGZpbGVzLiAgKi8KLSsgICAgICBpZiAoYWNjZXNzIChsaW5rLCBGX09LKSA9PSAw KQotKwlyZXR2YWwgPSBscmVhbHBhdGggKGxpbmspOwotKwotKyAgICAgIGlmIChyZXR2YWwgIT0g TlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChyZXR2YWwsIGJ1aWxkX2lkKSkKLSsJewotKwkgIHhm cmVlIChyZXR2YWwpOwotKwkgIHJldHZhbCA9IE5VTEw7Ci0rCX0KLSsKLSsgICAgICBpZiAocmV0 dmFsICE9IE5VTEwpCi0rCWJyZWFrOwotKwotKyAgICAgIGRlYnVnZGlyID0gZGVidWdkaXJfZW5k OwotICAgICB9Ci0rICB3aGlsZSAoKmRlYnVnZGlyICE9IDApOwotIAotICAgcmV0dXJuIHJldHZh bDsKLSB9Ci1AQCAtMTMzMyw3ICsxMzU3LDcgQEAgc3RhdGljIGNoYXIgKgotIGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotICAgYXNlY3Rpb24g KnNlY3Q7Ci0tICBjaGFyICpiYXNlbmFtZSwgKm5hbWVfY29weTsKLSsgIGNoYXIgKmJhc2VuYW1l LCAqbmFtZV9jb3B5LCAqZGVidWdkaXI7Ci0gICBjaGFyICpkaXIgPSBOVUxMOwotICAgY2hhciAq ZGVidWdmaWxlID0gTlVMTDsKLSAgIGNoYXIgKmNhbm9uX25hbWUgPSBOVUxMOwotQEAgLTE0MTAs MjkgKzE0MzQsNTEgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBj cmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0gICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxl OwotIAotLSAgLyogVGhlbiB0cnkgaW4gdGhlIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAg Ki8KLS0gIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICBzdHJj YXQgKGRlYnVnZmlsZSwgIi8iKTsKLS0gIHN0cmNhdCAoZGVidWdmaWxlLCBkaXIpOwotLSAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLS0KLS0gIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxl X2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0tICAgIGdvdG8gY2xl YW51cF9yZXR1cm5fZGVidWdmaWxlOwotKyAgLyogVGhlbiB0cnkgaW4gdGhlIGdsb2JhbCBkZWJ1 Z2ZpbGUgZGlyZWN0b3JpZXMuCi0rIAotKyAgICAgS2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 IHNvIHRoYXQgREVCVUdfRklMRV9ESVJFQ1RPUlkgYmVpbmcgIiIgd2lsbAotKyAgICAgY2F1c2Ug Ii8uLi4iIGxvb2t1cHMuICAqLwotIAotLSAgLyogSWYgdGhlIGZpbGUgaXMgaW4gdGhlIHN5c3Jv b3QsIHRyeSB1c2luZyBpdHMgYmFzZSBwYXRoIGluIHRoZQotLSAgICAgZ2xvYmFsIGRlYnVnZmls ZSBkaXJlY3RvcnkuICAqLwotLSAgaWYgKGNhbm9uX25hbWUKLS0gICAgICAmJiBzdHJuY21wIChj YW5vbl9uYW1lLCBnZGJfc3lzcm9vdCwgc3RybGVuIChnZGJfc3lzcm9vdCkpID09IDAKLS0gICAg ICAmJiBJU19ESVJfU0VQQVJBVE9SIChjYW5vbl9uYW1lW3N0cmxlbiAoZ2RiX3N5c3Jvb3QpXSkp Ci0rICBkZWJ1Z2RpciA9IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OwotKyAgZG8KLSAgICAgewotLSAg ICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICAgICAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsIGNhbm9uX25hbWUgKyBzdHJsZW4gKGdkYl9zeXNyb290KSk7Ci0rICAg ICAgY2hhciAqZGVidWdkaXJfZW5kOwotKwotKyAgICAgIHdoaWxlICgqZGVidWdkaXIgPT0gRElS TkFNRV9TRVBBUkFUT1IpCi0rCWRlYnVnZGlyKys7Ci0rCi0rICAgICAgZGVidWdkaXJfZW5kID0g c3RyY2hyIChkZWJ1Z2RpciwgRElSTkFNRV9TRVBBUkFUT1IpOwotKyAgICAgIGlmIChkZWJ1Z2Rp cl9lbmQgPT0gTlVMTCkKLSsJZGVidWdkaXJfZW5kID0gJmRlYnVnZGlyW3N0cmxlbiAoZGVidWdk aXIpXTsKLSsKLSsgICAgICBtZW1jcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIsIGRlYnVnZGlyX2Vu ZCAtIGRlYnVnZGlyKTsKLSsgICAgICBkZWJ1Z2ZpbGVbZGVidWdkaXJfZW5kIC0gZGVidWdkaXJd ID0gMDsKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKLSsgICAgICBzdHJjYXQgKGRl YnVnZmlsZSwgZGlyKTsKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOwotIAot ICAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwg b2JqZmlsZS0+bmFtZSkpCi0gCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotKwotKyAg ICAgIC8qIElmIHRoZSBmaWxlIGlzIGluIHRoZSBzeXNyb290LCB0cnkgdXNpbmcgaXRzIGJhc2Ug cGF0aCBpbiB0aGUKLSsJIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAgKi8KLSsgICAgICBp ZiAoY2Fub25fbmFtZQotKwkgICYmIHN0cm5jbXAgKGNhbm9uX25hbWUsIGdkYl9zeXNyb290LCBz dHJsZW4gKGdkYl9zeXNyb290KSkgPT0gMAotKwkgICYmIElTX0RJUl9TRVBBUkFUT1IgKGNhbm9u X25hbWVbc3RybGVuIChnZGJfc3lzcm9vdCldKSkKLSsJewotKwkgIG1lbWNweSAoZGVidWdmaWxl LCBkZWJ1Z2RpciwgZGVidWdkaXJfZW5kIC0gZGVidWdkaXIpOwotKwkgIGRlYnVnZmlsZVtkZWJ1 Z2Rpcl9lbmQgLSBkZWJ1Z2Rpcl0gPSAwOwotKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBjYW5vbl9u YW1lICsgc3RybGVuIChnZGJfc3lzcm9vdCkpOwotKwkgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIp OwotKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0rCi0rCSAgaWYgKHNlcGFyYXRl X2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKLSsJ ICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotKwl9Ci0rCi0rICAgICAgZGVidWdk aXIgPSBkZWJ1Z2Rpcl9lbmQ7Ci0gICAgIH0KLSsgIHdoaWxlICgqZGVidWdkaXIgIT0gMCk7Ci0g ICAKLSAgIHhmcmVlIChkZWJ1Z2ZpbGUpOwotICAgZGVidWdmaWxlID0gTlVMTDsKLUBAIC00MTcz LDEyICs0MjE5LDEyIEBAIFVzYWdlOiBzZXQgZXh0ZW5zaW9uLWxhbmd1YWdlIC5mb28gYmFyIiks Ci0gCi0gICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJkZWJ1Zy1maWxlLWRp cmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCi0gCQkJCSAgICAgJmRlYnVnX2ZpbGVfZGlyZWN0b3J5 LCBfKCJcCi0tU2V0IHRoZSBkaXJlY3Rvcnkgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBh cmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCi0tU2hvdyB0aGUgZGlyZWN0b3J5IHdoZXJlIHNlcGFy YXRlIGRlYnVnIHN5bWJvbHMgYXJlIHNlYXJjaGVkIGZvci4iKSwgXygiXAotK1NldCB0aGUgZGly ZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUgc2VhcmNoZWQgZm9yLiIp LCBfKCJcCi0rU2hvdyB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9s cyBhcmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCi0gU2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUg Zmlyc3Qgc2VhcmNoZWQgZm9yIGluIHRoZSBzYW1lXG5cCi0gZGlyZWN0b3J5IGFzIHRoZSBiaW5h cnksIHRoZW4gaW4gdGhlIGAiIERFQlVHX1NVQkRJUkVDVE9SWSAiJyBzdWJkaXJlY3RvcnksXG5c Ci0gYW5kIGxhc3RseSBhdCB0aGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IG9mIHRoZSBiaW5hcnkg d2l0aFxuXAotLXRoZSBnbG9iYWwgZGVidWctZmlsZSBkaXJlY3RvcnkgcHJlcGVuZGVkLiIpLAot K2VhY2ggZ2xvYmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNvbXBvbmVudCBwcmVwZW5kZWQuIiks Ci0gCQkJCSAgICAgTlVMTCwKLSAJCQkJICAgICBzaG93X2RlYnVnX2ZpbGVfZGlyZWN0b3J5LAot IAkJCQkgICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9zZXBkZWJ1Zy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcu ZXhwCi1AQCAtOTk1LDYgKzk5NSwxMiBAQCBpZiAhW3N0cmluZyBjb21wYXJlICRidWlsZF9pZF9k ZWJ1Z19maWxlbmFtZSAiIl0gdGhlbiB7Ci0gCi0gICAgIHRlc3RfZGlmZmVyZW50X2RpciBidWls ZC1pZCAiJHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCi0gCi0rICAgICMgVGVzdCBhbHNvIG11 bHRpcGxlIGRpcmVjdG9yaWVzIGNhbiBiZSBzcGVjaWZpZWQuICBXaXRob3V0IHRoZSBidWlsZC1p ZAotKyAgICAjIHJlZmVyZW5jZSBHREIgd291bGQgZmluZCB0aGUgc2VwYXJhdGUgZGVidWcgaW5m byBqdXN0IGF0IHRoZSBzYW1lCi0rICAgICMgbG9jYXRpb24gYXMgdGhlIGV4ZWN1dGFibGUgZmls ZS4KLSsKLSsgICAgdGVzdF9kaWZmZXJlbnRfZGlyIG11bHRpcGxlLWRpcnMgIi9kb2Vzbm90ZXhp c3Q6JHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCi0rCi0gICAgICMgU3BhcmUgZGVidWcgZmls ZXMgbWF5IGNvbmZ1c2UgdGVzdHN1aXRlIHJ1bnMgaW4gdGhlIGZ1dHVyZS4KLSAgICAgcmVtb3Rl X2V4ZWMgYnVpbGQgInJtIC1mICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtidWlsZF9pZF9kZWJ1Z19m aWxlbmFtZX0iCi0gfQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtc2VwY3Jj LnBhdGNoIGIvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtc2VwY3JjLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzODdlNDVmLi4wMDAwMDAwCi0tLSBhL2dkYi1iejUyODY2OC1zeW1m aWxlLXNlcGNyYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDUwNy5odG1sCi1TdWJq ZWN0OiBbcGF0Y2ggMS8zXSBwcmludCB0aGUgLmRlYnVnIGZpbGUgbmFtZSBoYXZpbmcgQ1JDIG1p c21hdGNoCi0KLUhpLAotCi10aGlzIHBhdGNoIGlzIGxlZnQgYXMgaXMgZnJvbSBBbmRyZXcgQ2Fn bmV5LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMDUtMDQtMDIgIEFuZHJldyBDYWdu ZXkgIDxjYWduZXlAZ251Lm9yZz4KLQotCSogc3ltZmlsZS5jIChzZXBhcmF0ZV9kZWJ1Z19maWxl X2V4aXN0cyk6IFdoZW4gdGhlIENSQ3MgbWlzbWF0Y2gKLQlwcmludCBhIHdhcm5pbmcuCi0JKGZp bmRfc2VwYXJhdGVfZGVidWdfZmlsZSk6IFBhc3MgaW4gdGhlIG9iamZpbGUncyBuYW1lLgotCi1n ZGIvdGVzdHN1aXRlLwotMjAwOS0xMC0yMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9zZXBkZWJ1Zy5leHAgKENSQyBtaXNtYXRjaCBp cyByZXBvcnRlZCk6IE5ldyB0ZXN0LgotCSogZ2RiLmJhc2Uvc2VwZGVidWcyLmM6IE5ldyBmaWxl LgotCi0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtMTI4Myw3 ICsxMjgzLDggQEAgZ2V0X2RlYnVnX2xpbmtfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHVuc2lnbmVkIGxvbmcgKmNyYzMyX291dCkKLSB9Ci0gCi0gc3RhdGljIGludAotLXNlcGFyYXRl X2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nIGNyYykK LStzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQg bG9uZyBjcmMsCi0rCQkJICAgIGNvbnN0IGNoYXIgKnBhcmVudF9uYW1lKQotIHsKLSAgIHVuc2ln bmVkIGxvbmcgZmlsZV9jcmMgPSAwOwotICAgYmZkICphYmZkOwotQEAgLTEzMDMsNyArMTMwNCwx NSBAQCBzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWdu ZWQgbG9uZyBjcmMpCi0gCi0gICBiZmRfY2xvc2UgKGFiZmQpOwotIAotLSAgcmV0dXJuIGNyYyA9 PSBmaWxlX2NyYzsKLSsgIGlmIChjcmMgIT0gZmlsZV9jcmMpCi0rICAgIHsKLSsgICAgICB3YXJu aW5nIChfKCJ0aGUgZGVidWcgaW5mb3JtYXRpb24gZm91bmQgaW4gXCIlc1wiIgotKwkJICIgZG9l cyBub3QgbWF0Y2ggXCIlc1wiIChDUkMgbWlzbWF0Y2gpLlxuIiksCi0rCSAgICAgICBuYW1lLCBw YXJlbnRfbmFtZSk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAxOwot IH0KLSAKLSBjaGFyICpkZWJ1Z19maWxlX2RpcmVjdG9yeSA9IE5VTEw7Ci1AQCAtMTM1NSw2ICsx MzY0LDggQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKLSAgIGJhc2VuYW1lID0gZ2V0X2RlYnVnX2xpbmtfaW5mbyAob2JqZmlsZSwgJmNyYzMyKTsK LSAKLSAgIGlmIChiYXNlbmFtZSA9PSBOVUxMKQotKyAgICAvKiBUaGVyZSdzIG5vIHNlcGFyYXRl IGRlYnVnIGluZm8sIGhlbmNlIHRoZXJlJ3Mgbm8gd2F5IHdlIGNvdWxkCi0rICAgICAgIGxvYWQg aXQgPT4gbm8gd2FybmluZy4gICovCi0gICAgIHJldHVybiBOVUxMOwotIAotICAgZGlyID0geHN0 cmR1cCAob2JqZmlsZS0+bmFtZSk7Ci1AQCAtMTM4OCw3ICsxMzk5LDcgQEAgZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgIHN0cmNweSAoZGVidWdm aWxlLCBkaXIpOwotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLS0gIGlmIChz ZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMikpCi0rICBpZiAoc2Vw YXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUp KQotICAgICB7Ci0gICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKLSAgICAgICB4ZnJlZSAoZGlyKTsK LUBAIC0xNDAyLDcgKzE0MTMsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvIik7Ci0gICBzdHJjYXQg KGRlYnVnZmlsZSwgYmFzZW5hbWUpOwotIAotLSAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhp c3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKLSsgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0 cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0gICAgIHsKLSAgICAgICB4ZnJl ZSAoYmFzZW5hbWUpOwotICAgICAgIHhmcmVlIChkaXIpOwotQEAgLTE0MTYsNyArMTQyNyw3IEBA IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICBz dHJjYXQgKGRlYnVnZmlsZSwgZGlyKTsKLSAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7 Ci0gCi0tICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIp KQotKyAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBv YmpmaWxlLT5uYW1lKSkKLSAgICAgewotICAgICAgIHhmcmVlIChiYXNlbmFtZSk7Ci0gICAgICAg eGZyZWUgKGRpcik7Ci1AQCAtMTQzNSw3ICsxNDQ2LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19m aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwg Ii8iKTsKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOwotIAotLSAgICAgIGlm IChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMikpCi0rICAgICAg aWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxl LT5uYW1lKSkKLSAJewotIAkgIHhmcmVlIChjYW5vbl9uYW1lKTsKLSAJICB4ZnJlZSAoYmFzZW5h bWUpOwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1Zy5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcuZXhwCi1AQCAtOTUyLDYgKzk1MiwyMyBAQCBz ZXQgZGVidWdmaWxlICIke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LmRlYnVnIgotIHRl c3RfZGlmZmVyZW50X2RpciBkZWJ1Z2xpbmsgIiR7b2JqZGlyfS8ke3N1YmRpcn0iIDAKLSAKLSAK LSsjIFRlc3QgQ1JDIG1pc21hdGNoIGlzIHJlcG9ydGVkLgotKwotK2lmIHtbYnVpbGRfZXhlY3V0 YWJsZSBzZXBkZWJ1Zy5leHAgc2VwZGVidWcyIHNlcGRlYnVnMi5jIGRlYnVnXSAhPSAtMQotKyAg ICAmJiAhW2dkYl9nbnVfc3RyaXBfZGVidWcgJHtvYmpkaXJ9LyR7c3ViZGlyfS9zZXBkZWJ1ZzJd fSB7Ci0rCi0rICAgIHJlbW90ZV9leGVjIGJ1aWxkICJjcCAke2RlYnVnZmlsZX0gJHtvYmpkaXJ9 LyR7c3ViZGlyfS8uZGVidWcvc2VwZGVidWcyLmRlYnVnIgotKwotKyAgICBnZGJfZXhpdAotKyAg ICBnZGJfc3RhcnQKLSsgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Ci0rICAgIHNldCBlc2NhcGVkb2JqZGlyc3ViZGlyIFtzdHJpbmdfdG9fcmVnZXhwICR7b2JqZGly fS8ke3N1YmRpcn1dCi0rCi0rICAgIGdkYl90ZXN0ICJmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v c2VwZGVidWcyIiAid2FybmluZzogdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvdW5kIGluIFwiJHtl c2NhcGVkb2JqZGlyc3ViZGlyfS9cXC5kZWJ1Zy9zZXBkZWJ1ZzJcXC5kZWJ1Z1wiIGRvZXMgbm90 IG1hdGNoIFwiJHtlc2NhcGVkb2JqZGlyc3ViZGlyfS9zZXBkZWJ1ZzJcIiBcXChDUkMgbWlzbWF0 Y2hcXClcXC4uKlxcKG5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kXFwpLioiICJDUkMgbWlzbWF0 Y2ggaXMgcmVwb3J0ZWQiCi0rfQotKwotKwotICMgTlRfR05VX0JVSUxEX0lEIC8gLm5vdGUuZ251 LmJ1aWxkLWlkIHRlc3Q6Ci0gCi0gc2V0IGJ1aWxkX2lkX2RlYnVnX2ZpbGVuYW1lIFtidWlsZF9p ZF9kZWJ1Z19maWxlbmFtZV9nZXQgJGJpbmZpbGVdCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NlcGRlYnVnMi5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7 Ci0rICByZXR1cm4gMDsKLSt9Ci0KCmRpZmYgLS1naXQgYS9nZGItYno1Mzg2MjYtYnBfbG9jYXRp b24tYWNjZWwtYnAtY29uZC5wYXRjaCBiL2dkYi1iejUzODYyNi1icF9sb2NhdGlvbi1hY2NlbC1i cC1jb25kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTNiZjNjLi4wMDAw MDAwCi0tLSBhL2dkYi1iejUzODYyNi1icF9sb2NhdGlvbi1hY2NlbC1icC1jb25kLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDA5LTEyL21zZzAwMTgwLmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gRml4IGEg cmVncmVzc2lvbiBieSBtZSBvbiBicmVha3BvaW50LWNvbmQtaW5mY2FsbAotCi1IaSwKLQotR0RC IGhhcyBub3cgYSByZWdyZXNzaW9uIHNpbmNlOgotCVJlOiBbcGF0Y2hdIFBlcmZvcm1hbmNlIG9w dGltaXplIGxhcmdlIGJwX2xvY2F0aW9uIGNvdW50Ci0JaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMDktMTAvbXNnMDA2MzIuaHRtbAotCT0KLQkyMDA5LTEwLTI1ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JUGVyZm9ybWFuY2Ugb3B0 aW1pemUgbGFyZ2UgYnBfbG9jYXRpb24gY291bnQuCi0KLW9uIGJyZWFrcG9pbnRzIHdpdGggY29u ZGl0aW9ucyBjYWxsaW5nIGluZmVyaW9yLgotCi1CcmluZ2luZyB0aGUgY29kZSBiYWNrIHRvIHRo ZSBzdGF0ZSBiZWZvcmUgbXkgYWNjZWxlcmF0aW9uIHBhdGNoLgotCi1UaGUgY29kZSBiZWZvcmUg YWxyZWFkeSBhc3N1bWVkIG5vIGJyZWFrcG9pbnRzIG9yIHRoZWlyIGJwX2xvY2F0aW9ucyBjYW4K LWNoYW5nZSBhY3Jvc3MgdGhlIGluZmVyaW9yIGNhbGwgd2hpY2ggc2hvdWxkIGJlIHRydWUgLSB0 cnlpbmcgdG8gZG8gc29tZToKLQlicmVhayBhIGlmIGIoKQotCWJyZWFrIGIKLQljb21tYW5kIDEK LQlkZWxldGUgMgotCWVuZAotb3Igc2ltaWxhciBjYW5ub3Qgd29yayBhcyBpbnNpZGUgImlmIGIo KSIgZXZhbHVhdGlvbiBubyBicmVha3BvaW50cyBjYW4gYmUKLWFkZGVkIG9yIHJlbW92ZWQuCi0K LXVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCBhbHNvIGRvZXMgbm90IHJlbW92ZWQvYWRkIGBz dHJ1Y3QgYnBfbG9jYXRpb24ncwotdGhlbXNlbHZlcyBidXQgb25seSBwb2ludGVycyB0byB0aGVt IGluIHRoZSBicF9sb2NhdGlvbiBhcnJheS4gIEFzIHRoZSBuZXcKLWl0ZXJhdGlvbiBubyBsb25n ZXIgdXNlcyB0aGUgYnBfbG9jYXRpb24gYXJyYXkgaXQgaXMgbm8gbG9uZ2VyIGEgcHJvYmxlbS4K LQotT3JpZ2luYWwgcHJvYmxlbSB3YXMgZm91bmQgYnkgYW5kIGZpeGVkIGRpZmZlcmVudGx5IGJ5 IFBoaWwgTXVsZG9vbi4KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2 ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDA5 LTEyLTEzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkq IGJyZWFrcG9pbnQuYyAoYnBzdGF0X3N0b3Bfc3RhdHVzKTogSXRlcmF0ZSB1c2luZyBBTExfQlJF QUtQT0lOVFMgYW5kCi0JdGhlIEItPkxPQyBsaXN0LiAgUmVtb3ZlIGdkYl9hc3NlcnQgb24gQi4g IENoYW5nZSBicF9oYXJkd2FyZV93YXRjaHBvaW50Ci0JY29udGludWUgdG8gYnJlYWsuICBSZW1v dmUgdmFyaWFibGUgdXBkYXRlX2xvY2F0aW9ucy4gIFJlbW92ZSBISVRfQ09VTlQKLQlpbmNyZW1l bnQgcHJvdGVjdGlvbiBieSBhbiBFTkFCTEVfU1RBVEUgY2hlY2suICBJbmxpbmUgdGhlIGRlbGF5 ZWQKLQl1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgY2FsbC4KLQotZ2RiL3Rlc3RzdWl0ZS8K LTIwMDktMTItMTMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQkgICAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2Uv Y29uZGJyZWFrLmV4cDogUHV0IGJyZWFrcG9pbnQgb24gbWFya2VyMyBhbmQgbWFya2VyNC4KLQko YnBfbG9jYXRpb24xMywgYnBfbG9jYXRpb24xNCwgYnBfbG9jYXRpb24xNywgYnBfbG9jYXRpb24x OCkKLQkobWFya2VyM19wcm90bywgbWFya2VyNF9wcm90byk6IE5ldyB2YXJpYWJsZXMuCi0JKGJy ZWFrcG9pbnQgaW5mbyk6IFVwZGF0ZSBvdXRwdXQuCi0JKHJ1biB1bnRpbCBicmVha3BvaW50IGF0 IG1hcmtlcjMsIHJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjQpOiBOZXcKLQl0ZXN0cy4K LQotWyBCYWNrcG9ydGVkIGZvciBGLTEyLiAgXQotCi0tLS0gLi9nZGIvYnJlYWtwb2ludC5jCTIw MDktMTItMTQgMDA6MjU6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvYnJlYWtwb2ludC5j CTIwMDktMTItMTQgMDA6MzI6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMzI5OCw5MyArMzI5OCw5 MyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKENPUkVfQUREUiBicF9hZGRyLCBwCi0gICAvKiBQb2lu dGVyIHRvIHRoZSBsYXN0IHRoaW5nIGluIHRoZSBjaGFpbiBjdXJyZW50bHkuICAqLwotICAgYnBz dGF0IGJzID0gcm9vdF9iczsKLSAgIGludCBpeDsKLS0gIGludCBuZWVkX3JlbW92ZV9pbnNlcnQs IHVwZGF0ZV9sb2NhdGlvbnMgPSAwOwotKyAgaW50IG5lZWRfcmVtb3ZlX2luc2VydDsKLSAKLS0g IEFMTF9CUF9MT0NBVElPTlMgKGJsLCBibHBfdG1wKQotLSAgewotLSAgICBicHN0YXQgYnNfcHJl diA9IGJzOwotKyAgLyogQUxMX0JQX0xPQ0FUSU9OUyBpdGVyYXRpb24gd291bGQgYnJlYWsgYWNy b3NzCi0rICAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgcG9zc2libHkgZXhlY3V0ZWQg YnkKLSsgICAgIGJwc3RhdF9jaGVja19icmVha3BvaW50X2NvbmRpdGlvbnMncyBpbmZlcmlvciBj YWxsLiAgKi8KLSAKLS0gICAgYiA9IGJsLT5vd25lcjsKLS0gICAgZ2RiX2Fzc2VydCAoYik7Ci0t ICAgIGlmICghYnJlYWtwb2ludF9lbmFibGVkIChiKSAmJiBiLT5lbmFibGVfc3RhdGUgIT0gYnBf cGVybWFuZW50KQotLSAgICAgIGNvbnRpbnVlOwotLQotLSAgICAvKiBGb3IgaGFyZHdhcmUgd2F0 Y2hwb2ludHMsIHdlIGxvb2sgb25seSBhdCB0aGUgZmlyc3QgbG9jYXRpb24uCi0tICAgICAgIFRo ZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29yayBvbiBlbnRpcmUgZXhwcmVzc2lv biwKLS0gICAgICAgbm90IHRoZSBpbmRpdmlkdWFsIGxvY2F0aW9ucy4gIEZvciByZWFkIHdhdGNo b3BpbnRzLCB0aGUKLS0gICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkIGZ1bmN0aW9uIGhhdmUg Y2hlY2tlZCBhbGwgbG9jYXRpb25zCi0tICAgICAgIGFscmVhCi0tICAgICAqLwotLSAgICBpZiAo Yi0+dHlwZSA9PSBicF9oYXJkd2FyZV93YXRjaHBvaW50ICYmIGJsICE9IGItPmxvYykKLS0gICAg ICBjb250aW51ZTsKLS0KLS0gICAgaWYgKCFicHN0YXRfY2hlY2tfbG9jYXRpb24gKGJsLCBicF9h ZGRyKSkKLS0gICAgICBjb250aW51ZTsKLS0KLS0gICAgLyogQ29tZSBoZXJlIGlmIGl0J3MgYSB3 YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVzICovCi0tCi0tICAgIGJz ID0gYnBzdGF0X2FsbG9jIChibCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0byBleHBsYWluIHN0 b3AgKi8KLS0gICAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9PSBicyk7Ci0tCi0tICAgIC8q IEFzc3VtZSB3ZSBzdG9wLiAgU2hvdWxkIHdlIGZpbmQgd2F0Y2hwb2ludCB0aGF0IGlzIG5vdCBh Y3R1YWxseQotLSAgICAgICB0cmlnZ2VyZWQsIG9yIGlmIGNvbmRpdGlvbiBvZiBicmVha3BvaW50 IGlzIGZhbHNlLCB3ZSdsbCByZXNldAotLSAgICAgICAnc3RvcCcgdG8gMC4gICovCi0tICAgIGJz LT5zdG9wID0gMTsKLS0gICAgYnMtPnByaW50ID0gMTsKLSsgIEFMTF9CUkVBS1BPSU5UUyAoYikK LSsgICAgewotKyAgICAgIGlmICghYnJlYWtwb2ludF9lbmFibGVkIChiKSAmJiBiLT5lbmFibGVf c3RhdGUgIT0gYnBfcGVybWFuZW50KQotKwljb250aW51ZTsKLSAKLS0gICAgaWYgKCFicHN0YXRf Y2hlY2tfd2F0Y2hwb2ludCAoYnMpKQotLSAgICAgIHsKLS0JLyogRW5zdXJlIGJwc3RhdF9leHBs YWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKLS0JICAgdGhl IGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCi0rICAgICAgZm9yIChibCA9IGItPmxvYzsgYmwgIT0g TlVMTDsgYmwgPSBibC0+bmV4dCkKLSsJewotKwkgIGJwc3RhdCBic19wcmV2ID0gYnM7Ci0rCi0r CSAgLyogRm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzLCB3ZSBsb29rIG9ubHkgYXQgdGhlIGZpcnN0 IGxvY2F0aW9uLgotKwkgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29y ayBvbiBlbnRpcmUgZXhwcmVzc2lvbiwKLSsJICAgICBub3QgdGhlIGluZGl2aWR1YWwgbG9jYXRp b25zLiAgRm9yIHJlYWQgd2F0Y2hvcGludHMsIHRoZQotKwkgICAgIHdhdGNocG9pbnRzX3RyaWdn ZXJlZCBmdW5jdGlvbiBoYXZlIGNoZWNrZWQgYWxsIGxvY2F0aW9ucwotKwkgICAgIGFscmVhCi0r CSAgICovCi0rCSAgaWYgKGItPnR5cGUgPT0gYnBfaGFyZHdhcmVfd2F0Y2hwb2ludCAmJiBibCAh PSBiLT5sb2MpCi0rCSAgICBicmVhazsKLSAKLS0JZ2RiX2Fzc2VydCAoYnMtPnByaW50X2l0ID09 IHByaW50X2l0X25vb3ApOwotLQlnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOwotLQl4ZnJlZSAoYnMp OwotLQlicyA9IGJzX3ByZXY7Ci0tCWJzLT5uZXh0ID0gTlVMTDsKLS0JY29udGludWU7Ci0tICAg ICAgfQotKwkgIGlmICghYnBzdGF0X2NoZWNrX2xvY2F0aW9uIChibCwgYnBfYWRkcikpCi0rCSAg ICBjb250aW51ZTsKLSAKLS0gICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGIt PnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAotLQl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFz dGVyIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKLS0gICAgICAvKiBXZSBkbyBu b3Qgc3RvcCBmb3IgdGhlc2UuICAqLwotLSAgICAgIGJzLT5zdG9wID0gMDsKLS0gICAgZWxzZQot LSAgICAgIGJwc3RhdF9jaGVja19icmVha3BvaW50X2NvbmRpdGlvbnMgKGJzLCBwdGlkKTsKLS0g IAotLSAgICBpZiAoYnMtPnN0b3ApCi0tICAgICAgewotLQlpZiAoYi0+ZW5hYmxlX3N0YXRlICE9 IGJwX2Rpc2FibGVkKQotLQkgICsrKGItPmhpdF9jb3VudCk7Ci0rCSAgLyogQ29tZSBoZXJlIGlm IGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVzICovCi0g Ci0tCS8qIFdlIHdpbGwgc3RvcCBoZXJlICovCi0tCWlmIChiLT5kaXNwb3NpdGlvbiA9PSBkaXNw X2Rpc2FibGUpCi0tCSAgewotLQkgICAgaWYgKGItPmVuYWJsZV9zdGF0ZSAhPSBicF9wZXJtYW5l bnQpCi0tCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwotLQkgICAgdXBkYXRl X2xvY2F0aW9ucyA9IDE7Ci0tCSAgfQotLQlpZiAoYi0+c2lsZW50KQotLQkgIGJzLT5wcmludCA9 IDA7Ci0tCWJzLT5jb21tYW5kcyA9IGItPmNvbW1hbmRzOwotLQlpZiAoYnMtPmNvbW1hbmRzCi0t CSAgICAmJiAoc3RyY21wICgic2lsZW50IiwgYnMtPmNvbW1hbmRzLT5saW5lKSA9PSAwCi0tCQl8 fCAoeGRiX2NvbW1hbmRzICYmIHN0cmNtcCAoIlEiLCBicy0+Y29tbWFuZHMtPmxpbmUpID09IDAp KSkKLS0JICB7Ci0tCSAgICBicy0+Y29tbWFuZHMgPSBicy0+Y29tbWFuZHMtPm5leHQ7Ci0tCSAg ICBicy0+cHJpbnQgPSAwOwotLQkgIH0KLS0JYnMtPmNvbW1hbmRzID0gY29weV9jb21tYW5kX2xp bmVzIChicy0+Y29tbWFuZHMpOwotLSAgICAgIH0KLSsJICBicyA9IGJwc3RhdF9hbGxvYyAoYmws IGJzKTsJLyogQWxsb2MgYSBicHN0YXQgdG8gZXhwbGFpbiBzdG9wICovCi0rCSAgZ2RiX2Fzc2Vy dCAoYnNfcHJldi0+bmV4dCA9PSBicyk7Ci0gCi0tICAgIC8qIFByaW50IG5vdGhpbmcgZm9yIHRo aXMgZW50cnkgaWYgd2UgZG9udCBzdG9wIG9yIGlmIHdlIGRvbnQgcHJpbnQuICAqLwotLSAgICBp ZiAoYnMtPnN0b3AgPT0gMCB8fCBicy0+cHJpbnQgPT0gMCkKLS0gICAgICBicy0+cHJpbnRfaXQg PSBwcmludF9pdF9ub29wOwotLSAgfQotKwkgIC8qIEFzc3VtZSB3ZSBzdG9wLiAgU2hvdWxkIHdl IGZpbmQgd2F0Y2hwb2ludCB0aGF0IGlzIG5vdCBhY3R1YWxseQotKwkgICAgIHRyaWdnZXJlZCwg b3IgaWYgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQgaXMgZmFsc2UsIHdlJ2xsIHJlc2V0Ci0rCSAg ICAgJ3N0b3AnIHRvIDAuICAqLwotKwkgIGJzLT5zdG9wID0gMTsKLSsJICBicy0+cHJpbnQgPSAx OwotIAotLSAgLyogRGVsYXkgdGhpcyBjYWxsIHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBBTExfQlBf TE9DQVRJT05TIGl0ZXJhdGlvbiBhYm92ZS4gICovCi0tICBpZiAodXBkYXRlX2xvY2F0aW9ucykK LS0gICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0ICgwKTsKLSsJICBpZiAoIWJwc3RhdF9j aGVja193YXRjaHBvaW50IChicykpCi0rCSAgICB7Ci0rCSAgICAgIC8qIEVuc3VyZSBicHN0YXRf ZXhwbGFpbnNfc2lnbmFsIHN0YXlzIGZhbHNlIGlmIHRoaXMgQkwgY291bGQgbm90IGJlCi0rCQkg dGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCi0rCi0rCSAgICAgIGdkYl9hc3NlcnQgKGJzLT5w cmludF9pdCA9PSBwcmludF9pdF9ub29wKTsKLSsJICAgICAgZ2RiX2Fzc2VydCAoIWJzLT5zdG9w KTsKLSsJICAgICAgeGZyZWUgKGJzKTsKLSsJICAgICAgYnMgPSBic19wcmV2OwotKwkgICAgICBi cy0+bmV4dCA9IE5VTEw7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwotKwkgIGlmIChi LT50eXBlID09IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQK LSsJICAgICAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJw X2V4Y2VwdGlvbl9tYXN0ZXIpCi0rCSAgICAvKiBXZSBkbyBub3Qgc3RvcCBmb3IgdGhlc2UuICAq LwotKwkgICAgYnMtPnN0b3AgPSAwOwotKwkgIGVsc2UKLSsJICAgIGJwc3RhdF9jaGVja19icmVh a3BvaW50X2NvbmRpdGlvbnMgKGJzLCBwdGlkKTsKLSsJCi0rCSAgaWYgKGJzLT5zdG9wKQotKwkg ICAgewotKwkgICAgICArKyhiLT5oaXRfY291bnQpOwotKwotKwkgICAgICAvKiBXZSB3aWxsIHN0 b3AgaGVyZSAqLwotKwkgICAgICBpZiAoYi0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kaXNhYmxlKQot KwkJewotKwkJICBpZiAoYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1hbmVudCkKLSsJCSAgICBi LT5lbmFibGVfc3RhdGUgPSBicF9kaXNhYmxlZDsKLSsJCSAgdXBkYXRlX2dsb2JhbF9sb2NhdGlv bl9saXN0ICgwKTsKLSsJCX0KLSsJICAgICAgaWYgKGItPnNpbGVudCkKLSsJCWJzLT5wcmludCA9 IDA7Ci0rCSAgICAgIGJzLT5jb21tYW5kcyA9IGItPmNvbW1hbmRzOwotKwkgICAgICBpZiAoYnMt PmNvbW1hbmRzCi0rCQkgICYmIChzdHJjbXAgKCJzaWxlbnQiLCBicy0+Y29tbWFuZHMtPmxpbmUp ID09IDAKLSsJCSAgICAgIHx8ICh4ZGJfY29tbWFuZHMgJiYgc3RyY21wICgiUSIsIGJzLT5jb21t YW5kcy0+bGluZSkgPT0gMCkpKQotKwkJewotKwkJICBicy0+Y29tbWFuZHMgPSBicy0+Y29tbWFu ZHMtPm5leHQ7Ci0rCQkgIGJzLT5wcmludCA9IDA7Ci0rCQl9Ci0rCSAgICAgIGJzLT5jb21tYW5k cyA9IGNvcHlfY29tbWFuZF9saW5lcyAoYnMtPmNvbW1hbmRzKTsKLSsJICAgIH0KLSsKLSsJICAv KiBQcmludCBub3RoaW5nIGZvciB0aGlzIGVudHJ5IGlmIHdlIGRvbnQgc3RvcCBvciBpZiB3ZSBk b250IHByaW50LiAgKi8KLSsJICBpZiAoYnMtPnN0b3AgPT0gMCB8fCBicy0+cHJpbnQgPT0gMCkK LSsJICAgIGJzLT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7Ci0rCX0KLSsgICAgfQotIAotICAg Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChicF9sb2NhdGlvbl9wLCBtb3JpYnVuZF9sb2NhdGlv bnMsIGl4LCBsb2MpOyArK2l4KQotICAgICB7Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2NvbmRicmVhay5leHAJMjAwOS0wMS0wMyAwNjo1ODowMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAu L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29uZGJyZWFrLmV4cAkyMDA5LTEyLTE0IDAwOjI3OjIx LjAwMDAwMDAwMCArMDEwMAotQEAgLTY4LDggKzY4LDEyIEBAIHNldCBicF9sb2NhdGlvbjEgIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICIKLSBzZXQgYnBfbG9jYXRpb242ICBbZ2RiX2dldF9saW5lX251 bWJlciAic2V0IGJyZWFrcG9pbnQgNiBoZXJlIl0KLSBzZXQgYnBfbG9jYXRpb244ICBbZ2RiX2dl dF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgOCBoZXJlIiAkc3JjZmlsZTFdCi0gc2V0IGJw X2xvY2F0aW9uOSAgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDkgaGVyZSIg JHNyY2ZpbGUxXQotK3NldCBicF9sb2NhdGlvbjEzIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQg YnJlYWtwb2ludCAxMyBoZXJlIiAkc3JjZmlsZTFdCi0rc2V0IGJwX2xvY2F0aW9uMTQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDE0IGhlcmUiICRzcmNmaWxlMV0KLSBzZXQg YnBfbG9jYXRpb24xNSBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTUgaGVy ZSIgJHNyY2ZpbGUxXQotIHNldCBicF9sb2NhdGlvbjE2IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJz ZXQgYnJlYWtwb2ludCAxNiBoZXJlIiAkc3JjZmlsZTFdCi0rc2V0IGJwX2xvY2F0aW9uMTcgW2dk Yl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDE3IGhlcmUiICRzcmNmaWxlMV0KLStz ZXQgYnBfbG9jYXRpb24xOCBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTgg aGVyZSIgJHNyY2ZpbGUxXQotIAotICMKLSAjIHRlc3QgYnJlYWsgYXQgZnVuY3Rpb24KLUBAIC0x MTAsMTUgKzExNCwyOSBAQCBnZGJfdGVzdCAiYnJlYWsgbWFya2VyMiBpZiAoYT09NDMpIiBcCi0g ICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZTEsIGxpbmUuKiIKLSAKLSAjCi0r IyBDaGVjayBicmVhayBpbnZvbHZpbmcgaW5mZXJpb3IgZnVuY3Rpb24gY2FsbC4KLSsjIEVuc3Vy ZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYWRkaXRpb25hbCBicmVha3BvaW50IHdpdGggaGlnaGVy IFZNQS4KLSsjCi0rZ2RiX3Rlc3QgImJyZWFrIG1hcmtlcjMgaWYgKG11bHRpX2xpbmVfaWZfY29u ZGl0aW9uYWwoMSwxLDEpPT0wKSIgXAotKyAgICAiQnJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNy Y2ZpbGUxLCBsaW5lLioiCi0rZ2RiX3Rlc3QgImJyZWFrIG1hcmtlcjQiIFwKLSsgICAgIkJyZWFr cG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlMSwgbGluZS4qIgotKwotKyMKLSAjIGNoZWNrIHRv IHNlZSB3aGF0IGJyZWFrcG9pbnRzIGFyZSBzZXQKLSAjCi0gCi0gaWYgeyRocF9hQ0NfY29tcGls ZXJ9IHsKLSAgICAgc2V0IG1hcmtlcjFfcHJvdG8gIlxcKHZvaWRcXCkiCi0gICAgIHNldCBtYXJr ZXIyX3Byb3RvICJcXChpbnRcXCkiCi0rICAgICMgTm90IGNoZWNrZWQuCi0rICAgIHNldCBtYXJr ZXIzX3Byb3RvICJcXChjaGFyIFxcKiwgY2hhciBcXCpcXCkiCi0rICAgIHNldCBtYXJrZXI0X3By b3RvICJcXChsb25nXFwpIgotIH0gZWxzZSB7Ci0gICAgIHNldCBtYXJrZXIxX3Byb3RvICIiCi0g ICAgIHNldCBtYXJrZXIyX3Byb3RvICIiCi0rICAgIHNldCBtYXJrZXIzX3Byb3RvICIiCi0rICAg IHNldCBtYXJrZXI0X3Byb3RvICIiCi0gfQotIAotIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCi1A QCAtMTI5LDcgKzE0NywxMCBAQCBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAotIFxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHkuKiBpbiBtYWluIGF0IC4qJHNyY2ZpbGU6JGJwX2xv Y2F0aW9uMS4qCi0gXFtcdCBcXStzdG9wIG9ubHkgaWYgXFwoMT09MVxcKS4qCi0gXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1hcmtlcjIkbWFya2VyMl9wcm90byBh dCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KS4qCi0tXFtcdCBcXStz dG9wIG9ubHkgaWYgXFwoYT09NDNcXCkuKiIgXAotK1xbXHQgXF0rc3RvcCBvbmx5IGlmIFxcKGE9 PTQzXFwpLioKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5LiogaW4gbWFy a2VyMyRtYXJrZXIzX3Byb3RvIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb24xN3wkYnBfbG9j YXRpb24xOCkuKgotK1xbXHQgXF0rc3RvcCBvbmx5IGlmIFxcKG11bHRpX2xpbmVfaWZfY29uZGl0 aW9uYWxcXCgxLDEsMVxcKT09MFxcKS4qCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAg IGtlZXAgeS4qIGluIG1hcmtlcjQkbWFya2VyNF9wcm90byBhdCAuKiRzcmNmaWxlMTooJGJwX2xv Y2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpLioiIFwKLSAgICAgImJyZWFrcG9pbnQgaW5mbyIKLSAK LSAKLUBAIC0yMjAsMyArMjQxLDIzIEBAIGdkYl9leHBlY3QgewotIAlmYWlsICIodGltZW91dCkg cnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFya2VyMiIKLSAgICAgfQotIH0KLSsKLStzZXQgdGVz dCAicnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFya2VyMyIKLStnZGJfdGVzdF9tdWx0aXBsZSAi Y29udGludWUiICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxb MC05XF0rLCBtYXJrZXIzIFxcKGE9JGhleCBcInN0YWNrXCIsIGI9JGhleCBcInRyYWNlXCJcXCkg YXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlvbjE4KS4qKCRicF9sb2Nh dGlvbjE3fCRicF9sb2NhdGlvbjE4KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3Mg JHRlc3QKLSsgICAgfQotKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9pbnQgXFswLTlc XSssICRoZXggaW4gbWFya2VyMyBcXChhPSRoZXggXCJzdGFja1wiLCBiPSRoZXggXCJ0cmFjZVwi XFwpIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb24xN3wkYnBfbG9jYXRpb24xOCkuKigkYnBf bG9jYXRpb24xN3wkYnBfbG9jYXRpb24xOClcW1x0IFxdKy4qJGdkYl9wcm9tcHQgJCIgewotKwl4 ZmFpbCAkdGVzdAotKyAgICB9Ci0rfQotKwotK3NldCB0ZXN0ICJydW4gdW50aWwgYnJlYWtwb2lu dCBhdCBtYXJrZXI0IgotK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgJHRlc3QgewotKyAg ICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtlcjQgXFwoZD0x Nzc2MDE5NzZcXCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjEzfCRicF9sb2NhdGlvbjE0 KS4qKCRicF9sb2NhdGlvbjEzfCRicF9sb2NhdGlvbjE0KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAk IiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFr cG9pbnQgXFswLTlcXSssICRoZXggaW4gbWFya2VyNCBcXChkPTE3NzYwMTk3NlxcKSBhdCAuKiRz cmNmaWxlMTooJGJwX2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpLiooJGJwX2xvY2F0aW9uMTN8 JGJwX2xvY2F0aW9uMTQpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsKLSsJeGZhaWwgJHRlc3QK LSsgICAgfQotK30KCmRpZmYgLS1naXQgYS9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoIGIv Z2RiLWJ6NTM5NTkwLWdudS1pZnVuYy5wYXRjaAppbmRleCAyZjFiODBiLi5mYjRmNTZkIDEwMDY0 NAotLS0gYS9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCisrKyBiL2dkYi1iejUzOTU5MC1n bnUtaWZ1bmMucGF0Y2gKQEAgLTMyLDExICszMiwxMSBAQCBnZGIvdGVzdHN1aXRlLwogCSogZ2Ri LmJhc2UvZ251LWlmdW5jLWxpYi5jLCBnZGIuYmFzZS9nbnUtaWZ1bmMuYywKIAlnZGIuYmFzZS9n bnUtaWZ1bmMuZXhwOiBOZXcuCiAKLUluZGV4OiBnZGItNy4wL2dkYi9lbGZyZWFkLmMKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4wLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDA5LTExLTI1IDEwOjI0OjQ1LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAvZ2RiL2VsZnJlYWQuYwkyMDA5LTExLTI1IDEwOjI1OjUwLjAwMDAwMDAw MCArMDEwMAotQEAgLTE2OCw3ICsxNjgsOCBAQCByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNoYXIg Km5hbWUsIENPUkVfCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9lbGZyZWFkLmMJ MjAxMC0wMS0xNSAxMTo0NTozNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9lbGZyZWFkLmMJMjAxMC0wMS0xNSAxMjoxNzoxNi4wMDAwMDAwMDAgKzAxMDAKK0BA IC0xODQsNyArMTg0LDggQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1l LAogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSk7CiAgCkBAIC00NSw4ICs0NSw4IEBAIEluZGV4OiBnZGItNy4wL2dkYi9lbGZyZWFkLmMK ICsgICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKICAgICAgYWRkcmVzcyA9 IGdkYmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKICAKLSAgIHJl dHVybiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9hbmRfaW5mbwotQEAgLTM3Myw3ICszNzQs MTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorICAgcmV0dXJu IHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sX2Z1bGwgKG5hbWUsIG5hbWVfbGVuLCBjb3B5X25h bWUsIGFkZHJlc3MsCitAQCAtMzkzLDcgKzM5NCwxMCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlCiAgCSAgICB7CiAgCSAgICAgIGlmIChzeW0tPmZsYWdzICYgKEJT Rl9HTE9CQUwgfCBCU0ZfV0VBSykpCiAgCQl7CkBAIC01OCwxMSArNTgsMTEgQEAgSW5kZXg6IGdk Yi03LjAvZ2RiL2VsZnJlYWQuYwogIAkJfQogIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBd ID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQogIAkJICAgICAgIHx8ICgoc3ltLT5mbGFn cyAmIEJTRl9MT0NBTCkKLUluZGV4OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5jCitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu b3JpZy9nZGIvZ2RidHlwZXMuYwkyMDA5LTExLTI1IDEwOjI0OjQ3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAvZ2RiL2dkYnR5cGVzLmMJMjAwOS0xMS0yNSAxMDoyNDo1Ni4wMDAwMDAwMDAg KzAxMDAKLUBAIC0xOTA0LDYgKzE5MDQsOCBAQCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNv ZGUsIGludCBsZW5nCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9nZGJ0eXBlcy5j CTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvZ2RidHlwZXMuYwkyMDEwLTAxLTE1IDEyOjE2OjQ5LjAwMDAwMDAwMCArMDEwMAor QEAgLTE5NDYsNiArMTk0Niw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50 IGxlbmcKICAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7CiAgICBpZiAoZmxhZ3MgJiBUWVBF X0ZMQUdfRklYRURfSU5TVEFOQ0UpCiAgICAgIFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0g MTsKQEAgLTcxLDcgKzcxLDcgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2dkYnR5cGVzLmMKICAKICAg IGlmIChuYW1lKQogICAgICBUWVBFX05BTUUgKHR5cGUpID0gb2JzYXZlc3RyaW5nIChuYW1lLCBz dHJsZW4gKG5hbWUpLAotQEAgLTM3NjIsNiArMzc2NCw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAo c3RydWN0IGdkYmFyY2ggKmdkYmEKK0BAIC0zODQ2LDYgKzM4NDgsOCBAQCBnZGJ0eXBlc19wb3N0 X2luaXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhCiAgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAo YnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwogICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1 bmNfcHRyCiAgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUg KGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7CkBAIC04MCw3ICs4MCw3IEBAIEluZGV4OiBn ZGItNy4wL2dkYi9nZGJ0eXBlcy5jCiAgCiAgICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIEdE QiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCiAgICBidWlsdGluX3R5cGUtPmludGVybmFsX2ZuCi1A QCAtMzg3OCw2ICszODgyLDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCitAQCAtMzk2Miw2ICszOTY2LDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCiAgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUp OwogICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9s KQogICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7CkBAIC05MiwxMSArOTIsMTEgQEAg SW5kZXg6IGdkYi03LjAvZ2RiL2dkYnR5cGVzLmMKICAgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19k YXRhX3N5bWJvbAogICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKICAJCSBnZGJhcmNo X2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUluZGV4OiBnZGItNy4wL2dk Yi9nZGJ0eXBlcy5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDA5LTExLTI1IDEw OjI0OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAvZ2RiL2dkYnR5cGVzLmgJMjAwOS0x MS0yNSAxMDoyNToxNy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODcsNiArMTg3LDcgQEAgZW51bSB0 eXBlX2ZsYWdfdmFsdWUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2dkYnR5cGVz LmgJMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAw CitAQCAtMTg4LDYgKzE4OCw3IEBAIGVudW0gdHlwZV9mbGFnX3ZhbHVlCiAgICBUWVBFX0ZMQUdf RklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNSksCiAgICBUWVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQg PSAoMSA8PCAxNiksCiAgICBUWVBFX0ZMQUdfTk9UVEVYVCA9ICgxIDw8IDE3KSwKQEAgLTEwNCw3 ICsxMDQsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvZ2RidHlwZXMuaAogIAogICAgLyogVXNlZCBm b3IgZXJyb3ItY2hlY2tpbmcuICAqLwogICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJ R05FRAotQEAgLTI5Miw2ICsyOTMsMTIgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUK K0BAIC0yOTMsNiArMjk0LDEyIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAg I2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90dGV4 dCkKICAKQEAgLTExNyw3ICsxMTcsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvZ2RidHlwZXMuaAog IC8qIFR5cGUgb3duZXIuICBJZiBUWVBFX09CSkZJTEVfT1dORUQgaXMgdHJ1ZSwgdGhlIHR5cGUg aXMgb3duZWQgYnkKICAgICB0aGUgb2JqZmlsZSByZXRyaWV2ZWQgYXMgVFlQRV9PQkpGSUxFLiAg T3RoZXJ3ZWlzZSwgdGhlIHR5cGUgaXMKICAgICBvd25lZCBieSBhbiBhcmNoaXRlY3R1cmU7IFRZ UEVfT0JKRklMRSBpcyBOVUxMIGluIHRoaXMgY2FzZS4gICovCi1AQCAtNDI3LDYgKzQzNCw3IEBA IHN0cnVjdCBtYWluX3R5cGUKK0BAIC00NDcsNiArNDU0LDcgQEAgc3RydWN0IG1haW5fdHlwZQog ICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX3N0 dWJfc3VwcG9ydGVkIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX25vdHRleHQgOiAxOwpAQCAt MTI1LDcgKzEyNSw3IEBAIEluZGV4OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5oCiAgICB1bnNpZ25l ZCBpbnQgZmxhZ19maXhlZF9pbnN0YW5jZSA6IDE7CiAgICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpm aWxlX293bmVkIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX2Rpc2NhcmRhYmxlIDogMTsKLUBA IC0xMTQ0LDYgKzExNTIsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorQEAgLTEyNTAsNiArMTI1 OCwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCiAgICAgICAoKikgKCkgY2FuIHNlcnZlciBhcyBh IGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCiAgICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9m dW5jX3B0cjsKICAKQEAgLTEzNiw3ICsxMzYsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvZ2RidHlw ZXMuaAogIAogICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KICAKLUBAIC0xMTg2LDYg KzExOTgsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCitAQCAtMTI5Miw2ICsxMzA0LDcgQEAgc3Ry dWN0IG9iamZpbGVfdHlwZQogIAogICAgLyogVHlwZXMgdXNlZCBmb3Igc3ltYm9scyB3aXRoIG5v IGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfc3lt Ym9sOwpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2dkYnR5cGVzLmgK ICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOwogICAgc3RydWN0IHR5cGUgKm5v ZGVidWdfdW5rbm93bl9zeW1ib2w7CiAgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9s OwotSW5kZXg6IGdkYi03LjAvZ2RiL2luZmNhbGwuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2luZmNhbGwuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvaW5mY2Fs bC5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC9nZGIv aW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9pbmZjYWxsLmMJMjAxMC0wMS0wMSAwODozMTozNi4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZjYWxsLmMJMjAxMC0w MS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yODYsNiArMjg2LDI3IEBAIGZpbmRf ZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGkKICAgIGVsc2UKICAgICAgZXJyb3Ig KF8oIkludmFsaWQgZGF0YSB0eXBlIGZvciBmdW5jdGlvbiB0byBiZSBjYWxsZWQuIikpOwpAQCAt MTc2LDEwICsxNzYsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2luZmNhbGwuYwogICAgaWYgKHJl dHZhbF90eXBlICE9IE5VTEwpCiAgICAgICpyZXR2YWxfdHlwZSA9IHZhbHVlX3R5cGU7CiAgICBy ZXR1cm4gZnVuYWRkciArIGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9zdGFydF9vZmZzZXQg KGdkYmFyY2gpOwotSW5kZXg6IGdkYi03LjAvZ2RiL2xpbmVzcGVjLmMKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9saW5lc3BlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC5vcmln L2dkYi9saW5lc3BlYy5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMC9nZGIvbGluZXNwZWMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGluZXNwZWMuYwkyMDEwLTAxLTEy IDA2OjQ4OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xp bmVzcGVjLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKIEBAIC00MCw2ICs0 MCw3IEBACiAgI2luY2x1ZGUgImludGVycHMuaCIKICAjaW5jbHVkZSAibWkvbWktY21kcy5oIgpA QCAtMTg4LDcgKzE4OCw3IEBAIEluZGV4OiBnZGItNy4wL2dkYi9saW5lc3BlYy5jCiAgCiAgLyog V2Ugc2hhcmUgdGhpcyBvbmUgd2l0aCBzeW10YWIuYywgYnV0IGl0IGlzIG5vdCBleHBvcnRlZCB3 aWRlbHkuICovCiAgCi1AQCAtMTg3NSw2ICsxODc2LDIyIEBAIG1pbnN5bV9mb3VuZCAoaW50IGZ1 bmZpcnN0bGluZSwgc3RydWN0IG0KK0BAIC0xODY3LDYgKzE4NjgsMjIgQEAgbWluc3ltX2ZvdW5k IChpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3QgbQogICAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YWx1ZXMuc2Fsc1swXS5wYywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKQEAgLTIxMSwxMCArMjExLDEw IEBAIEluZGV4OiBnZGItNy4wL2dkYi9saW5lc3BlYy5jCiAgICBpZiAocGMgIT0gdmFsdWVzLnNh bHNbMF0ucGMpCiAgICAgIHZhbHVlcy5zYWxzWzBdID0gZmluZF9wY19zZWN0X2xpbmUgKHBjLCBO VUxMLCAwKTsKICAKLUluZGV4OiBnZGItNy4wL2dkYi9taW5zeW1zLmMKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9taW5zeW1zLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLm9yaWcv Z2RiL21pbnN5bXMuYwkyMDA5LTExLTI1IDEwOjI0OjQ3LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAvZ2RiL21pbnN5bXMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEwMAor LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbWluc3ltcy5jCTIwMTAtMDEtMTUgMDM6 MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbWluc3lt cy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMxLDggKzMzMSw5 IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICoKICAJICAgICAgIG1z eW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCiAgCSAgICB7CkBAIC0yMjcsNyArMjI3LDcgQEAg SW5kZXg6IGdkYi03LjAvZ2RiL21pbnN5bXMuYwogIAkJewogIAkJICBzd2l0Y2ggKE1TWU1CT0xf VFlQRSAobXN5bWJvbCkpCiAgCQkgICAgewotQEAgLTY5OSw2ICs3MDAsMTYgQEAgbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcAorQEAgLTY5OCw2ICs2OTksMTYgQEAgbG9v a3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcAogIHsKICAgIHJldHVybiBsb29r dXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwogIH0KQEAgLTI0NCw3 ICsyNDQsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvbWluc3ltcy5jCiAgDAogIAogIC8qIFJldHVy biBsZWFkaW5nIHN5bWJvbCBjaGFyYWN0ZXIgZm9yIGEgQkZELiBJZiBCRkQgaXMgTlVMTCwKLUBA IC03MzgsNiArNzQ5LDcgQEAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIg KgorQEAgLTczNyw2ICs3NDgsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3Qg Y2hhciAqCiAgICBzd2l0Y2ggKG1zX3R5cGUpCiAgICAgIHsKICAgICAgY2FzZSBtc3RfdGV4dDoK QEAgLTI1Miw3ICsyNTIsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvbWluc3ltcy5jCiAgICAgIGNh c2UgbXN0X2ZpbGVfdGV4dDoKICAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKICAgICAg ICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7Ci1AQCAtMTE4NCw3ICsxMTk2LDgg QEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0IGZyYQorQEAgLTEyMDIsNyAr MTIxNCw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQgKHN0cnVjdCBmcmEKICAgICAg ewogICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkKICAgICAgICB7CkBAIC0y NjIsMTEgKzI2MiwxMSBAQCBJbmRleDogZ2RiLTcuMC9nZGIvbWluc3ltcy5jCiAgCSAgICAmJiBz dHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAogIAkJICAgICAgIFNZTUJPTF9M SU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9PSAwKQogIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQURE UkVTUyAobXN5bWJvbCk7Ci1JbmRleDogZ2RiLTcuMC9nZGIvcGFyc2UuYworSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3BhcnNlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLm9yaWcv Z2RiL3BhcnNlLmMJMjAwOS0xMS0yNSAxMDoyNDo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4wL2dkYi9wYXJzZS5jCTIwMDktMTEtMjUgMTA6MjY6MTYuMDAwMDAwMDAwICswMTAwCi1AQCAt NTE3LDYgKzUxNywxMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9s CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMTUgMDM6 MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcGFyc2Uu YwkyMDEwLTAxLTE1IDEyOjE2OjQ5LjAwMDAwMDAwMCArMDEwMAorQEAgLTUxNiw2ICs1MTYsMTEg QEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbAogIAl3cml0ZV9leHBf ZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOwog ICAgICAgIGJyZWFrOwogIApAQCAtMjc4LDI1ICsyNzgsMjUgQEAgSW5kZXg6IGdkYi03LjAvZ2Ri L3BhcnNlLmMKICAgICAgY2FzZSBtc3RfZGF0YToKICAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgog ICAgICBjYXNlIG1zdF9ic3M6Ci1JbmRleDogZ2RiLTcuMC9nZGIvc29saWItc3ZyNC5jCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saWItc3ZyNC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMC5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0xMS0yNSAxMDoyNDo0OS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0xMS0yNSAxMDoyNjo0 MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQyLDcgKzEyNDIsOCBAQCBzdnI0X2luX2R5bnN5bV9y ZXNvbHZlX2NvZGUgKENPUkVfQUREUiBwCi0gewotICAgcmV0dXJuICgocGMgPj0gaW50ZXJwX3Rl eHRfc2VjdF9sb3cgJiYgcGMgPCBpbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCi0gCSAgfHwgKHBjID49 IGludGVycF9wbHRfc2VjdF9sb3cgJiYgcGMgPCBpbnRlcnBfcGx0X3NlY3RfaGlnaCkKKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLTAxLTE1IDEyOjE2 OjQxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2 cjQuYwkyMDEwLTAxLTE1IDEyOjE3OjQwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEyNTcsNyArMTI1 Nyw4IEBAIHN2cjRfaW5fZHluc3ltX3Jlc29sdmVfY29kZSAoQ09SRV9BRERSIHAKKyAJICAgJiYg cGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCisgCSAgfHwgKHBjID49IGluZm8tPmlu dGVycF9wbHRfc2VjdF9sb3cKKyAJICAgICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfcGx0X3NlY3Rf aGlnaCkKIC0JICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpKTsKICsJICB8fCBpbl9wbHRf c2VjdGlvbiAocGMsIE5VTEwpCiArCSAgfHwgaW5fZ251X2lmdW5jX3N0dWIgKHBjKSk7CiAgfQog IAogIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUgdGhl IGVudHJ5LXBvaW50Ci1JbmRleDogZ2RiLTcuMC9nZGIvc3ltbWlzYy5jCitJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvc3ltbWlzYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC5vcmln L2dkYi9zeW1taXNjLmMJMjAwOS0xMS0yNSAxMDoyNDo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4wL2dkYi9zeW1taXNjLmMJMjAwOS0xMS0yNSAxMDoyNDo1Ni4wMDAwMDAwMDAgKzAxMDAK LUBAIC0yODcsNiArMjg3LDkgQEAgZHVtcF9tc3ltYm9scyAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTAtMDEt MTUgMDM6MjI6MzIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv c3ltbWlzYy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCitAQCAtMjk0LDYg KzI5NCw5IEBAIGR1bXBfbXN5bWJvbHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKICAJY2Fz ZSBtc3RfdGV4dDoKICAJICBtc190eXBlID0gJ1QnOwogIAkgIGJyZWFrOwpAQCAtMzA2LDExICsz MDYsMTEgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL3N5bW1pc2MuYwogIAljYXNlIG1zdF9zb2xpYl90 cmFtcG9saW5lOgogIAkgIG1zX3R5cGUgPSAnUyc7CiAgCSAgYnJlYWs7Ci1JbmRleDogZ2RiLTcu MC9nZGIvc3ltdGFiLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW10YWIuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvc3ltdGFiLmMJMjAwOS0xMS0yNSAxMDoy NDo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9zeW10YWIuYwkyMDA5LTExLTI1 IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEwMAotQEAgLTMxNTUsNyArMzE1NSw3IEBAIHNlYXJjaF9z eW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4w MDAwMDAwMDAgKzAxMDAKK0BAIC0zMjU3LDcgKzMyNTcsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hh ciAqcmVnZXhwLCBkb21haW5fZW51CiAgICB7bXN0X2ZpbGVfZGF0YSwgbXN0X3NvbGliX3RyYW1w b2xpbmUsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKICAgIHN0YXRpYyBlbnVtIG1pbmltYWxfc3lt Ym9sX3R5cGUgdHlwZXM0W10KICAgID0KQEAgLTMxOSwxMSArMzE5LDExIEBAIEluZGV4OiBnZGIt Ny4wL2dkYi9zeW10YWIuYwogICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGU7CiAg ICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTI7CiAgICBlbnVtIG1pbmltYWxfc3lt Ym9sX3R5cGUgb3VydHlwZTM7Ci1JbmRleDogZ2RiLTcuMC9nZGIvc3ltdGFiLmgKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW10YWIuaAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu b3JpZy9nZGIvc3ltdGFiLmgJMjAwOS0xMS0yNSAxMDoyNDo0NS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wL2dkYi9zeW10YWIuaAkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEw MAotQEAgLTI3NSw2ICsyNzUsOCBAQCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUKKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgJMjAxMC0w MS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yODAsNiArMjgwLDggQEAgZW51bSBt aW5pbWFsX3N5bWJvbF90eXBlCiAgewogICAgbXN0X3Vua25vd24gPSAwLAkJLyogVW5rbm93biB0 eXBlLCB0aGUgZGVmYXVsdCAqLwogICAgbXN0X3RleHQsCQkJLyogR2VuZXJhbGx5IGV4ZWN1dGFi bGUgaW5zdHJ1Y3Rpb25zICovCkBAIC0zMzIsNyArMzMyLDcgQEAgSW5kZXg6IGdkYi03LjAvZ2Ri L3N5bXRhYi5oCiAgICBtc3RfZGF0YSwJCQkvKiBHZW5lcmFsbHkgaW5pdGlhbGl6ZWQgZGF0YSAq LwogICAgbXN0X2JzcywJCQkvKiBHZW5lcmFsbHkgdW5pbml0aWFsaXplZCBkYXRhICovCiAgICBt c3RfYWJzLAkJCS8qIEdlbmVyYWxseSBhYnNvbHV0ZSAobm9ucmVsb2NhdGFibGUpICovCi1AQCAt MTE0OSw2ICsxMTUxLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21p bgorQEAgLTExNjMsNiArMTE2NSw4IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxv b2t1cF9taW4KICAKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluaW1h bF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUik7CiAgCkBAIC0zNDEsMTAgKzM0MSwxMCBAQCBJbmRl eDogZ2RiLTcuMC9nZGIvc3ltdGFiLmgKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sCiAg ICAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKENPUkVfQUREUiwgc3RydWN0 IG9ial9zZWN0aW9uICopOwogIAotSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nbnUtaWZ1bmMtbGliLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMtbGliLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0w LDAgKzEsNDUgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgogKwpAQCAtMzkxLDEwICszOTEsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKICsKICsgIHJldHVybiBmaW5hbDsKICt9Ci1J bmRleDogZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCitJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCTIwMDkt MTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAw MDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDM2IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTQzMiwxMCArNDMyLDEwIEBAIEluZGV4 OiBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKICsKICsgIHJldHVy biAwOwkvKiBicmVhay1hdC1leGl0ICovCiArfQotSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nbnUtaWZ1bmMuZXhwCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCiBAQCAt MCwwICsxLDcyIEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoIGIv Z2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjg2MTQ3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItY2NhY2hlLXdvcmthcm91bmQu cGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9tYWNz Y3AuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21hY3NjcC5leHAKK0BAIC0zMyw2 ICszMywxNCBAQCBpZiBbdGVzdF9jb21waWxlcl9pbmZvIGdjYypdIHsKKyAgICAgbGFwcGVuZCBv cHRpb25zIGFkZGl0aW9uYWxfZmxhZ3M9LWczCisgfQorIAorKyMgV29ya2Fyb3VuZCBjY2FjaGUg bWFraW5nIGxpbmVubyBub24temVybyBmb3IgY29tbWFuZC1saW5lIGRlZmluaXRpb25zLgorK2lm IHtbZmluZF9nY2NdID09ICJnY2MiICYmIFtmaWxlIGV4ZWN1dGFibGUgIi91c3IvYmluL2djYyJd fSB7CisrICAgIHNldCByZXN1bHQgW2NhdGNoICJleGVjIHdoaWNoIGdjYyIgb3V0cHV0XQorKyAg ICBpZiB7JHJlc3VsdCA9PSAwICYmIFtzdHJpbmcgZmlyc3QgIi9jY2FjaGUvIiAkb3V0cHV0XSA+ PSAtMX0geworKyAgICAgICBsYXBwZW5kIG9wdGlvbnMgImNvbXBpbGVyPS91c3IvYmluL2djYyIK KysgICAgfQorK30KKysKKyAjIEdlbmVyYXRlIHRoZSBpbnRlcm1lZGlhdGUgb2JqZWN0IGZpbGUu ICBUaGlzIGlzIHJlcXVpcmVkIGJ5IERhcndpbiB0bworICMgaGF2ZSBhY2Nlc3MgdG8gdGhlIC5k ZWJ1Z19tYWNpbmZvIHNlY3Rpb24uCisgaWYgIHtbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vbWFjc2NwMS5jIiAiJHtvYmpmaWxlfSIgXAoKZGlmZiAtLWdpdCBhL2dkYi1lbXB0eS1u YW1lc3BhY2UucGF0Y2ggYi9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoCmluZGV4IGE4YmFmMDUu LjFhYTc2NTQgMTAwNjQ0Ci0tLSBhL2dkYi1lbXB0eS1uYW1lc3BhY2UucGF0Y2gKKysrIGIvZ2Ri LWVtcHR5LW5hbWVzcGFjZS5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAotZ2RiLwotMjAwOS0xMi0y MCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGNv bXBhdGliaWxpdHkgd2l0aCBHKystNC4xLgotCSogZHdhcmYycmVhZC5jIChwYXJ0aWFsX2RpZV9w YXJlbnRfc2NvcGUpOiBOZXcgdmFyaWFibGUgUEFSRU5UX05BTUUuCi0JSWdub3JlIHBhcmVudCBu YW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgotCShwaHlzbmFtZV9wcmVmaXhfMSk6IElnbm9yZSBu YW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgorIyMjZ2RiLworIyMjMjAwOS0xMi0yMCAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIyMjCisjIyMJRml4IGNvbXBh dGliaWxpdHkgd2l0aCBHKystNC4xLgorIyMjCSogZHdhcmYycmVhZC5jIChwYXJ0aWFsX2RpZV9w YXJlbnRfc2NvcGUpOiBOZXcgdmFyaWFibGUgUEFSRU5UX05BTUUuCisjIyMJSWdub3JlIHBhcmVu dCBuYW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgorIyMjCShwaHlzbmFtZV9wcmVmaXhfMSk6IEln bm9yZSBuYW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgogCiBnZGIvdGVzdHN1aXRlLwogMjAwOS0x Mi0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgpAQCAtMTIs MzkgKzEyLDM5IEBAIGdkYi90ZXN0c3VpdGUvCiAJKiBnZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1l c3BhY2UuZXhwLCBnZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuUzoKIAlOZXcuCiAKLS0t LSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0yMzU1LDEx ICsyMzU1LDE4IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0IHBhcnRpYWxfZGll X2luZm8gKnBkaSwKLSAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfaW50ZXJmYWNlX3R5 cGUKLSAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfdW5pb25fdHlwZSkKLSAgICAgewot KyAgICAgIGNoYXIgKnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOwotKwotKyAgICAgIC8qIEcr KyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4gICov Ci0rICAgICAgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19uYW1lc3BhY2UgJiYgcGFyZW50X25h bWUgIT0gTlVMTAotKyAgICAgICAgICAmJiBzdHJjbXAgKHBhcmVudF9uYW1lLCAiOjoiKSA9PSAw KQotKwlwYXJlbnRfbmFtZSA9IE5VTEw7Ci0rCi0gICAgICAgaWYgKGdyYW5kcGFyZW50X3Njb3Bl ID09IE5VTEwpCi0tCXBhcmVudC0+c2NvcGUgPSBwYXJlbnQtPm5hbWU7Ci0rCXBhcmVudC0+c2Nv cGUgPSBwYXJlbnRfbmFtZTsKLSAgICAgICBlbHNlCi0gCXBhcmVudC0+c2NvcGUgPSB0eXBlbmFt ZV9jb25jYXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssIGdyYW5kcGFyZW50X3Njb3BlLAotLQkJ CQkJIHBhcmVudC0+bmFtZSwgY3UpOwotKwkJCQkJIHBhcmVudF9uYW1lLCBjdSk7Ci0gICAgIH0K LSAgIGVsc2UgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19lbnVtZXJhdGlvbl90eXBlKQotICAg ICAvKiBFbnVtZXJhdG9ycyBzaG91bGQgbm90IGdldCB0aGUgbmFtZSBvZiB0aGUgZW51bWVyYXRp b24gYXMgYSBwcmVmaXguICAqLwotQEAgLTkwMDgsNiArOTAxNSw5IEBAIHBoeXNuYW1lX3ByZWZp eF8xIChzdHJ1Y3QgdWlfZmlsZSAqYnVmLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLSAJICBuYW1l ID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotIAkgIGlmIChuYW1lID09IE5VTEwpCi0gCSAgICBu YW1lID0gIihhbm9ueW1vdXMgbmFtZXNwYWNlKSI7Ci0rCSAgLyogRysrIDQuMSBwcm9kdWNlZCBE V19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoiLiAgKi8KLSsJICBlbHNlIGlmIChz dHJjbXAgKG5hbWUsICI6OiIpID09IDApCi0rCSAgICBuYW1lID0gTlVMTDsKLSAJICBicmVhazsK LSAKLSAJY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKyMjIy0tLSBhL2dkYi9kd2FyZjJyZWFkLmMK KyMjIysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKKyMjI0BAIC0yMzU1LDExICsyMzU1LDE4IEBAIHBh cnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKKyMj IyAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfaW50ZXJmYWNlX3R5cGUKKyMjIyAgICAg ICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfdW5pb25fdHlwZSkKKyMjIyAgICAgeworIyMjKyAg ICAgIGNoYXIgKnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOworIyMjKworIyMjKyAgICAgIC8q IEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25hbWUgIjo6Ii4g ICovCisjIyMrICAgICAgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19uYW1lc3BhY2UgJiYgcGFy ZW50X25hbWUgIT0gTlVMTAorIyMjKyAgICAgICAgICAmJiBzdHJjbXAgKHBhcmVudF9uYW1lLCAi OjoiKSA9PSAwKQorIyMjKwlwYXJlbnRfbmFtZSA9IE5VTEw7CisjIyMrCisjIyMgICAgICAgaWYg KGdyYW5kcGFyZW50X3Njb3BlID09IE5VTEwpCisjIyMtCXBhcmVudC0+c2NvcGUgPSBwYXJlbnQt Pm5hbWU7CisjIyMrCXBhcmVudC0+c2NvcGUgPSBwYXJlbnRfbmFtZTsKKyMjIyAgICAgICBlbHNl CisjIyMgCXBhcmVudC0+c2NvcGUgPSB0eXBlbmFtZV9jb25jYXQgKCZjdS0+Y29tcF91bml0X29i c3RhY2ssIGdyYW5kcGFyZW50X3Njb3BlLAorIyMjLQkJCQkJIHBhcmVudC0+bmFtZSwgY3UpOwor IyMjKwkJCQkJIHBhcmVudF9uYW1lLCBjdSk7CisjIyMgICAgIH0KKyMjIyAgIGVsc2UgaWYgKHBh cmVudC0+dGFnID09IERXX1RBR19lbnVtZXJhdGlvbl90eXBlKQorIyMjICAgICAvKiBFbnVtZXJh dG9ycyBzaG91bGQgbm90IGdldCB0aGUgbmFtZSBvZiB0aGUgZW51bWVyYXRpb24gYXMgYSBwcmVm aXguICAqLworIyMjQEAgLTkwMDgsNiArOTAxNSw5IEBAIHBoeXNuYW1lX3ByZWZpeF8xIChzdHJ1 Y3QgdWlfZmlsZSAqYnVmLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKyMjIyAJICBuYW1lID0gZHdh cmYyX25hbWUgKGRpZSwgY3UpOworIyMjIAkgIGlmIChuYW1lID09IE5VTEwpCisjIyMgCSAgICBu YW1lID0gIihhbm9ueW1vdXMgbmFtZXNwYWNlKSI7CisjIyMrCSAgLyogRysrIDQuMSBwcm9kdWNl ZCBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoiLiAgKi8KKyMjIysJICBlbHNl IGlmIChzdHJjbXAgKG5hbWUsICI6OiIpID09IDApCisjIyMrCSAgICBuYW1lID0gTlVMTDsKKyMj IyAJICBicmVhazsKKyMjIyAKKyMjIyAJY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKIC0tLSAvZGV2 L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNl LlMKIEBAIC0wLDAgKzEsMTA4IEBACgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJl ZHVjZS5wYXRjaCBiL2dkYi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUxMzE4MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1m b3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKQEAgLTAsMCArMSw1MDEgQEAKKy0tLSBhL2dkYi9m LWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAtNTUsMjAgKzU1LDYgQEAgdHlwZWRlZiBz dHJ1Y3Qgc2F2ZWRfYmZfc3ltbnVtIFNBVkVEX0JGLCAqU0FWRURfQkZfUFRSOworIC8qIExvY2Fs IGZ1bmN0aW9ucyAqLworIAorIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZv aWQpOworLSNpZiAwCistc3RhdGljIHZvaWQgY2xlYXJfZnVuY3Rpb25fbGlzdCAodm9pZCk7Cist c3RhdGljIGxvbmcgZ2V0X2JmX2Zvcl9mY24gKGxvbmcpOworLXN0YXRpYyB2b2lkIGNsZWFyX2Jm X2xpc3QgKHZvaWQpOworLXN0YXRpYyB2b2lkIHBhdGNoX2FsbF9jb21tb25zX2J5X25hbWUgKGNo YXIgKiwgQ09SRV9BRERSLCBpbnQpOworLXN0YXRpYyBTQVZFRF9GNzdfQ09NTU9OX1BUUiBmaW5k X2ZpcnN0X2NvbW1vbl9uYW1lZCAoY2hhciAqKTsKKy1zdGF0aWMgdm9pZCBhZGRfY29tbW9uX2Vu dHJ5IChzdHJ1Y3Qgc3ltYm9sICopOworLXN0YXRpYyB2b2lkIGFkZF9jb21tb25fYmxvY2sgKGNo YXIgKiwgQ09SRV9BRERSLCBpbnQsIGNoYXIgKik7Cistc3RhdGljIFNBVkVEX0ZVTkNUSU9OICph bGxvY2F0ZV9zYXZlZF9mdW5jdGlvbl9ub2RlICh2b2lkKTsKKy1zdGF0aWMgU0FWRURfQkZfUFRS IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUgKHZvaWQpOworLXN0YXRpYyBDT01NT05fRU5UUllfUFRS IGFsbG9jYXRlX2NvbW1vbl9lbnRyeV9ub2RlICh2b2lkKTsKKy1zdGF0aWMgU0FWRURfRjc3X0NP TU1PTl9QVFIgYWxsb2NhdGVfc2F2ZWRfZjc3X2NvbW1vbl9ub2RlICh2b2lkKTsKKy1zdGF0aWMg dm9pZCBwYXRjaF9jb21tb25fZW50cmllcyAoU0FWRURfRjc3X0NPTU1PTl9QVFIsIENPUkVfQURE UiwgaW50KTsKKy0jZW5kaWYKKyAKKyBzdGF0aWMgdm9pZCBmX3ByaW50Y2hhciAoaW50IGMsIHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSk7Cisgc3RhdGljIHZvaWQg Zl9lbWl0X2NoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC00MTksMTg1ICs0MDUs NyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQorICAgYWRkX2xhbmd1YWdlICgmZl9s YW5ndWFnZV9kZWZuKTsKKyB9CisgCistI2lmIDAKKy1zdGF0aWMgU0FWRURfQkZfUFRSCistYWxs b2NhdGVfc2F2ZWRfYmZfbm9kZSAodm9pZCkKKy17CistICBTQVZFRF9CRl9QVFIgbmV3OworLQor LSAgbmV3ID0gKFNBVkVEX0JGX1BUUikgeG1hbGxvYyAoc2l6ZW9mIChTQVZFRF9CRikpOworLSAg cmV0dXJuIChuZXcpOworLX0KKy0KKy1zdGF0aWMgU0FWRURfRlVOQ1RJT04gKgorLWFsbG9jYXRl X3NhdmVkX2Z1bmN0aW9uX25vZGUgKHZvaWQpCisteworLSAgU0FWRURfRlVOQ1RJT04gKm5ldzsK Ky0KKy0gIG5ldyA9IChTQVZFRF9GVU5DVElPTiAqKSB4bWFsbG9jIChzaXplb2YgKFNBVkVEX0ZV TkNUSU9OKSk7CistICByZXR1cm4gKG5ldyk7CistfQorLQorLXN0YXRpYyBTQVZFRF9GNzdfQ09N TU9OX1BUUgorLWFsbG9jYXRlX3NhdmVkX2Y3N19jb21tb25fbm9kZSAodm9pZCkKKy17CistICBT QVZFRF9GNzdfQ09NTU9OX1BUUiBuZXc7CistCistICBuZXcgPSAoU0FWRURfRjc3X0NPTU1PTl9Q VFIpIHhtYWxsb2MgKHNpemVvZiAoU0FWRURfRjc3X0NPTU1PTikpOworLSAgcmV0dXJuIChuZXcp OworLX0KKy0KKy1zdGF0aWMgQ09NTU9OX0VOVFJZX1BUUgorLWFsbG9jYXRlX2NvbW1vbl9lbnRy eV9ub2RlICh2b2lkKQorLXsKKy0gIENPTU1PTl9FTlRSWV9QVFIgbmV3OworLQorLSAgbmV3ID0g KENPTU1PTl9FTlRSWV9QVFIpIHhtYWxsb2MgKHNpemVvZiAoQ09NTU9OX0VOVFJZKSk7CistICBy ZXR1cm4gKG5ldyk7CistfQorLSNlbmRpZgorLQorIFNBVkVEX0Y3N19DT01NT05fUFRSIGhlYWRf Y29tbW9uX2xpc3QgPSBOVUxMOwkvKiBQdHIgdG8gMXN0IHNhdmVkIENPTU1PTiAgKi8KKy1TQVZF RF9GNzdfQ09NTU9OX1BUUiB0YWlsX2NvbW1vbl9saXN0ID0gTlVMTDsJLyogUHRyIHRvIGxhc3Qg c2F2ZWQgQ09NTU9OICAqLworLVNBVkVEX0Y3N19DT01NT05fUFRSIGN1cnJlbnRfY29tbW9uID0g TlVMTDsJLyogUHRyIHRvIGN1cnJlbnQgQ09NTU9OICovCistCistI2lmIDAKKy1zdGF0aWMgU0FW RURfQkZfUFRSIHNhdmVkX2JmX2xpc3QgPSBOVUxMOwkvKiBQdHIgdG8gKC5iZixmdW5jdGlvbikg CistCQkJCQkJICAgbGlzdCAqLworLXN0YXRpYyBTQVZFRF9CRl9QVFIgc2F2ZWRfYmZfbGlzdF9l bmQgPSBOVUxMOwkvKiBQdHIgdG8gYWJvdmUgbGlzdCdzIGVuZCAqLworLXN0YXRpYyBTQVZFRF9C Rl9QVFIgY3VycmVudF9oZWFkX2JmX2xpc3QgPSBOVUxMOwkvKiBDdXJyZW50IGhlYWQgb2YgYWJv dmUgbGlzdAorLQkJCQkJCQkgKi8KKy0KKy1zdGF0aWMgU0FWRURfQkZfUFRSIHRtcF9iZl9wdHI7 CS8qIEdlbmVyaWMgdGVtcG9yYXJ5IGZvciB1c2UgCistCQkJCSAgIGluIG1hY3JvcyAqLworLQor LS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2ltcGx5IGVudGVycyBhIGdpdmVuIGNvbW1vbiBi bG9jayBvbnRvIAorLSAgIHRoZSBnbG9iYWwgY29tbW9uIGJsb2NrIGNoYWluICovCistCistc3Rh dGljIHZvaWQKKy1hZGRfY29tbW9uX2Jsb2NrIChjaGFyICpuYW1lLCBDT1JFX0FERFIgb2Zmc2V0 LCBpbnQgc2VjbnVtLCBjaGFyICpmdW5jX3N0YWIpCisteworLSAgU0FWRURfRjc3X0NPTU1PTl9Q VFIgdG1wOworLSAgY2hhciAqYywgKmxvY2FsX2NvcHlfZnVuY19zdGFiOworLQorLSAgLyogSWYg dGhlIENPTU1PTiBibG9jayB3ZSBhcmUgdHJ5aW5nIHRvIGFkZCBoYXMgYSBibGFuayAKKy0gICAg IG5hbWUgKGkuZS4gIiNCTE5LX0NPTSIpIHRoZW4gd2Ugc2V0IGl0IHRvIF9fQkxBTksKKy0gICAg IGJlY2F1c2UgdGhlIGRhcm4gIiMiIGNoYXJhY3RlciBtYWtlcyBHREIncyBpbnB1dCAKKy0gICAg IHBhcnNlciBoYXZlIGZpdHMuICovCistCistCistICBpZiAoc3RyY21wIChuYW1lLCBCTEFOS19D T01NT05fTkFNRV9PUklHSU5BTCkgPT0gMAorLSAgICAgIHx8IHN0cmNtcCAobmFtZSwgQkxBTktf Q09NTU9OX05BTUVfTUY3NykgPT0gMCkKKy0gICAgeworLQorLSAgICAgIHhmcmVlIChuYW1lKTsK Ky0gICAgICBuYW1lID0gYWxsb2NhIChzdHJsZW4gKEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMKSAr IDEpOworLSAgICAgIHN0cmNweSAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTE9DQUwpOworLSAg ICB9CistCistICB0bXAgPSBhbGxvY2F0ZV9zYXZlZF9mNzdfY29tbW9uX25vZGUgKCk7CistCist ICBsb2NhbF9jb3B5X2Z1bmNfc3RhYiA9IHhtYWxsb2MgKHN0cmxlbiAoZnVuY19zdGFiKSArIDEp OworLSAgc3RyY3B5IChsb2NhbF9jb3B5X2Z1bmNfc3RhYiwgZnVuY19zdGFiKTsKKy0KKy0gIHRt cC0+bmFtZSA9IHhtYWxsb2MgKHN0cmxlbiAobmFtZSkgKyAxKTsKKy0KKy0gIC8qIGxvY2FsX2Nv cHlfZnVuY19zdGFiIGlzIGEgc3RhYnN0cmluZywgbGV0IHVzIGZpcnN0IGV4dHJhY3QgdGhlIAor LSAgICAgZnVuY3Rpb24gbmFtZSBmcm9tIHRoZSBzdGFiIGJ5IE5VTExpbmcgb3V0IHRoZSAnOicg Y2hhcmFjdGVyLiAqLworLQorLQorLSAgYyA9IE5VTEw7CistICBjID0gc3RyY2hyIChsb2NhbF9j b3B5X2Z1bmNfc3RhYiwgJzonKTsKKy0KKy0gIGlmIChjKQorLSAgICAqYyA9ICdcMCc7CistICBl bHNlCistICAgIGVycm9yIChfKCJNYWxmb3JtZWQgZnVuY3Rpb24gU1RBQiBmb3VuZCBpbiBhZGRf Y29tbW9uX2Jsb2NrKCkiKSk7CistCistCistICB0bXAtPm93bmluZ19mdW5jdGlvbiA9IHhtYWxs b2MgKHN0cmxlbiAobG9jYWxfY29weV9mdW5jX3N0YWIpICsgMSk7CistCistICBzdHJjcHkgKHRt cC0+b3duaW5nX2Z1bmN0aW9uLCBsb2NhbF9jb3B5X2Z1bmNfc3RhYik7CistCistICBzdHJjcHkg KHRtcC0+bmFtZSwgbmFtZSk7CistICB0bXAtPm9mZnNldCA9IG9mZnNldDsKKy0gIHRtcC0+bmV4 dCA9IE5VTEw7CistICB0bXAtPmVudHJpZXMgPSBOVUxMOworLSAgdG1wLT5zZWNudW0gPSBzZWNu dW07CistCistICBjdXJyZW50X2NvbW1vbiA9IHRtcDsKKy0KKy0gIGlmIChoZWFkX2NvbW1vbl9s aXN0ID09IE5VTEwpCistICAgIHsKKy0gICAgICBoZWFkX2NvbW1vbl9saXN0ID0gdGFpbF9jb21t b25fbGlzdCA9IHRtcDsKKy0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAgICAgdGFpbF9jb21t b25fbGlzdC0+bmV4dCA9IHRtcDsKKy0gICAgICB0YWlsX2NvbW1vbl9saXN0ID0gdG1wOworLSAg ICB9CistfQorLSNlbmRpZgorLQorLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2ltcGx5IGVu dGVycyBhIGdpdmVuIGNvbW1vbiBlbnRyeSBvbnRvIAorLSAgIHRoZSAiY3VycmVudF9jb21tb24i IGJsb2NrIHRoYXQgaGFzIGJlZW4gc2F2ZWQgYXdheS4gKi8KKy0KKy0jaWYgMAorLXN0YXRpYyB2 b2lkCistYWRkX2NvbW1vbl9lbnRyeSAoc3RydWN0IHN5bWJvbCAqZW50cnlfc3ltX3B0cikKKy17 CistICBDT01NT05fRU5UUllfUFRSIHRtcDsKKy0KKy0KKy0KKy0gIC8qIFRoZSBvcmRlciBvZiB0 aGlzIGxpc3QgaXMgaW1wb3J0YW50LCBzaW5jZSAKKy0gICAgIHdlIGV4cGVjdCB0aGUgZW50cmll cyB0byBhcHBlYXIgaW4gZGVjbC4KKy0gICAgIG9yZGVyIHdoZW4gd2UgbGF0ZXIgaXNzdWUgImlu Zm8gY29tbW9uIiBjYWxscyAqLworLQorLSAgdG1wID0gYWxsb2NhdGVfY29tbW9uX2VudHJ5X25v ZGUgKCk7CistCistICB0bXAtPm5leHQgPSBOVUxMOworLSAgdG1wLT5zeW1ib2wgPSBlbnRyeV9z eW1fcHRyOworLQorLSAgaWYgKGN1cnJlbnRfY29tbW9uID09IE5VTEwpCistICAgIGVycm9yIChf KCJBdHRlbXB0IHRvIGFkZCBDT01NT04gZW50cnkgd2l0aCBubyBibG9jayBvcGVuISIpKTsKKy0g IGVsc2UKKy0gICAgeworLSAgICAgIGlmIChjdXJyZW50X2NvbW1vbi0+ZW50cmllcyA9PSBOVUxM KQorLQl7CistCSAgY3VycmVudF9jb21tb24tPmVudHJpZXMgPSB0bXA7CistCSAgY3VycmVudF9j b21tb24tPmVuZF9vZl9lbnRyaWVzID0gdG1wOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAg Y3VycmVudF9jb21tb24tPmVuZF9vZl9lbnRyaWVzLT5uZXh0ID0gdG1wOworLQkgIGN1cnJlbnRf Y29tbW9uLT5lbmRfb2ZfZW50cmllcyA9IHRtcDsKKy0JfQorLSAgICB9CistfQorLSNlbmRpZgor LQorLS8qIFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJlZCBDT01NT04gYmxv Y2sgbmFtZWQgIm5hbWUiICovCistCistI2lmIDAKKy1zdGF0aWMgU0FWRURfRjc3X0NPTU1PTl9Q VFIKKy1maW5kX2ZpcnN0X2NvbW1vbl9uYW1lZCAoY2hhciAqbmFtZSkKKy17CistCistICBTQVZF RF9GNzdfQ09NTU9OX1BUUiB0bXA7CistCistICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0OworLQor LSAgd2hpbGUgKHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKHN0cmNtcCAodG1wLT5u YW1lLCBuYW1lKSA9PSAwKQorLQlyZXR1cm4gKHRtcCk7CistICAgICAgZWxzZQorLQl0bXAgPSB0 bXAtPm5leHQ7CistICAgIH0KKy0gIHJldHVybiAoTlVMTCk7CistfQorLSNlbmRpZgorIAorIC8q IFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJlZCBDT01NT04gYmxvY2sgbmFt ZWQgIm5hbWUiIAorICAgIHRoYXQgYmVsb25ncyB0byBmdW5jdGlvbiBmdW5jbmFtZSAqLworQEAg LTYyMCwxOTMgKzQyOCwzIEBAIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAqbmFtZSwg Y2hhciAqZnVuY25hbWUpCisgICAgIH0KKyAgIHJldHVybiAoTlVMTCk7CisgfQorLQorLQorLSNp ZiAwCistCistLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcGF0Y2ggdXAg dGhlIG9mZnNldHMgCistICAgZm9yIHRoZSBzdGF0aWNzIGNvbnRhaW5lZCBpbiB0aGUgQ09NTU9O IGJsb2NrIG5hbWVkCistICAgIm5hbWUuIiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLXBhdGNoX2Nv bW1vbl9lbnRyaWVzIChTQVZFRF9GNzdfQ09NTU9OX1BUUiBibGssIENPUkVfQUREUiBvZmZzZXQs IGludCBzZWNudW0pCisteworLSAgQ09NTU9OX0VOVFJZX1BUUiBlbnRyeTsKKy0KKy0gIGJsay0+ b2Zmc2V0ID0gb2Zmc2V0OwkJLyogS2VlcCB0aGlzIGFyb3VuZCBmb3IgZnV0dXJlIHVzZS4gKi8K Ky0KKy0gIGVudHJ5ID0gYmxrLT5lbnRyaWVzOworLQorLSAgd2hpbGUgKGVudHJ5ICE9IE5VTEwp CistICAgIHsKKy0gICAgICBTWU1CT0xfVkFMVUUgKGVudHJ5LT5zeW1ib2wpICs9IG9mZnNldDsK Ky0gICAgICBTWU1CT0xfU0VDVElPTiAoZW50cnktPnN5bWJvbCkgPSBzZWNudW07CistCistICAg ICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKKy0gICAgfQorLSAgYmxrLT5zZWNudW0gPSBzZWNudW07 CistfQorLQorLS8qIFBhdGNoIGFsbCBjb21tb25zIG5hbWVkICJuYW1lIiB0aGF0IG5lZWQgcGF0 Y2hpbmcuU2luY2UgQ09NTU9OCistICAgYmxvY2tzIG9jY3VyIHdpdGggcmVsYXRpdmUgaW5mcmVx dWVuY3ksIHdlIHNpbXBseSBkbyBhIGxpbmVhciBzY2FuIG9uCistICAgdGhlIG5hbWUuICBFdmVu dHVhbGx5LCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcyB3aWxsIGJlIGEKKy0gICBoYXNoZWQtbG9v a3VwLiAgU2VjbnVtIGlzIHRoZSBzZWN0aW9uIG51bWJlciBmb3IgdGhlIC5ic3Mgc2VjdGlvbgor LSAgICh3aGljaCBpcyB3aGVyZSBjb21tb24gZGF0YSBsaXZlcykuICovCistCistc3RhdGljIHZv aWQKKy1wYXRjaF9hbGxfY29tbW9uc19ieV9uYW1lIChjaGFyICpuYW1lLCBDT1JFX0FERFIgb2Zm c2V0LCBpbnQgc2VjbnVtKQorLXsKKy0KKy0gIFNBVkVEX0Y3N19DT01NT05fUFRSIHRtcDsKKy0K Ky0gIC8qIEZvciBibGFuayBjb21tb24gYmxvY2tzLCBjaGFuZ2UgdGhlIGNhbm9uaWNhbCByZXBy c2VudGF0aW9uIAorLSAgICAgb2YgYSBibGFuayBuYW1lICovCistCistICBpZiAoc3RyY21wIChu YW1lLCBCTEFOS19DT01NT05fTkFNRV9PUklHSU5BTCkgPT0gMAorLSAgICAgIHx8IHN0cmNtcCAo bmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTUY3NykgPT0gMCkKKy0gICAgeworLSAgICAgIHhmcmVl IChuYW1lKTsKKy0gICAgICBuYW1lID0gYWxsb2NhIChzdHJsZW4gKEJMQU5LX0NPTU1PTl9OQU1F X0xPQ0FMKSArIDEpOworLSAgICAgIHN0cmNweSAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTE9D QUwpOworLSAgICB9CistCistICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0OworLQorLSAgd2hpbGUg KHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKENPTU1PTl9ORUVEU19QQVRDSElORyAo dG1wKSkKKy0JaWYgKHN0cmNtcCAodG1wLT5uYW1lLCBuYW1lKSA9PSAwKQorLQkgIHBhdGNoX2Nv bW1vbl9lbnRyaWVzICh0bXAsIG9mZnNldCwgc2VjbnVtKTsKKy0KKy0gICAgICB0bXAgPSB0bXAt Pm5leHQ7CistICAgIH0KKy19CistI2VuZGlmCistCistLyogVGhpcyBtYWNybyBhZGRzIHRoZSBz eW1ib2wtbnVtYmVyIGZvciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIAorLSAgICh0aGUgc3lt Ym9sIG51bWJlciBvZiB0aGUgLmJmKSByZWZlcmVuY2VkIGJ5IHN5bW51bV9mY24gdG8gYSAKKy0g ICBsaXN0LiAgVGhpcyBsaXN0LCBpbiByZWFsaXR5IHNob3VsZCBiZSBhIEZJRk8gcXVldWUgYnV0 IHNpbmNlIAorLSAgICNsaW5lIHByYWdtYXMgc29tZXRpbWVzIGNhdXNlIGxpbmUgcmFuZ2VzIHRv IGdldCBtZXNzZWQgdXAgCistICAgd2Ugc2ltcGx5IGNyZWF0ZSBhIGxpbmVhciBsaXN0LiAgVGhp cyBsaXN0IGNhbiB0aGVuIGJlIHNlYXJjaGVkIAorLSAgIGZpcnN0IGJ5IGEgcXVldWVpbmcgYWxn b3JpdGhtIGFuZCB1cG9uIGZhaWx1cmUgZmFsbCBiYWNrIHRvIAorLSAgIGEgbGluZWFyIHNjYW4u ICovCistCistI2lmIDAKKy0jZGVmaW5lIEFERF9CRl9TWU1OVU0oYmZfc3ltLGZjbl9zeW0pIFwK Ky0gIFwKKy0gIGlmIChzYXZlZF9iZl9saXN0ID09IE5VTEwpIFwKKy17IFwKKy0gICAgdG1wX2Jm X3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAorLSAgICAgIFwKKy0JdG1wX2JmX3B0 ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7IFwKKy0JICB0bXBfYmZfcHRyLT5zeW1udW1fZmNuID0g KGZjbl9zeW0pOyAgXAorLQkgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7IFwKKy0JICAgICAg XAorLQkJY3VycmVudF9oZWFkX2JmX2xpc3QgPSBzYXZlZF9iZl9saXN0ID0gdG1wX2JmX3B0cjsg XAorLQkJICBzYXZlZF9iZl9saXN0X2VuZCA9IHRtcF9iZl9wdHI7IFwKKy0JCSAgfSBcCistZWxz ZSBcCisteyAgXAorLSAgICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsg XAorLSAgICAgICBcCistICAgICAgICAgdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7 ICBcCistCSAgIHRtcF9iZl9wdHItPnN5bW51bV9mY24gPSAoZmNuX3N5bSk7ICBcCistCSAgICAg dG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7ICBcCistCSAgICAgICBcCistCQkgc2F2ZWRfYmZfbGlz dF9lbmQtPm5leHQgPSB0bXBfYmZfcHRyOyAgXAorLQkJICAgc2F2ZWRfYmZfbGlzdF9lbmQgPSB0 bXBfYmZfcHRyOyBcCistCQkgICB9CistI2VuZGlmCistCistLyogVGhpcyBmdW5jdGlvbiBmcmVl cyB0aGUgZW50aXJlICguYmYsZnVuY3Rpb24pIGxpc3QgKi8KKy0KKy0jaWYgMAorLXN0YXRpYyB2 b2lkCistY2xlYXJfYmZfbGlzdCAodm9pZCkKKy17CistCistICBTQVZFRF9CRl9QVFIgdG1wID0g c2F2ZWRfYmZfbGlzdDsKKy0gIFNBVkVEX0JGX1BUUiBuZXh0ID0gTlVMTDsKKy0KKy0gIHdoaWxl ICh0bXAgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIG5leHQgPSB0bXAtPm5leHQ7CistICAgICAg eGZyZWUgKHRtcCk7CistICAgICAgdG1wID0gbmV4dDsKKy0gICAgfQorLSAgc2F2ZWRfYmZfbGlz dCA9IE5VTEw7CistfQorLSNlbmRpZgorLQorLWludCBnbG9iYWxfcmVtb3RlX2RlYnVnOworLQor LSNpZiAwCistCistc3RhdGljIGxvbmcKKy1nZXRfYmZfZm9yX2ZjbiAobG9uZyB0aGVfZnVuY3Rp b24pCisteworLSAgU0FWRURfQkZfUFRSIHRtcDsKKy0gIGludCBucHJvYmVzID0gMDsKKy0KKy0g IC8qIEZpcnN0IHVzZSBhIHNpbXBsZSBxdWV1aW5nIGFsZ29yaXRobSAoaS5lLiBsb29rIGFuZCBz ZWUgaWYgdGhlIAorLSAgICAgaXRlbSBhdCB0aGUgaGVhZCBvZiB0aGUgcXVldWUgaXMgdGhlIG9u ZSB5b3Ugd2FudCkgICovCistCistICBpZiAoc2F2ZWRfYmZfbGlzdCA9PSBOVUxMKQorLSAgICBp bnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAorLQkJICAgIF8oImNhbm5vdCBnZXQg LmJmIG5vZGUgb2ZmIGVtcHR5IGxpc3QiKSk7CistCistICBpZiAoY3VycmVudF9oZWFkX2JmX2xp c3QgIT0gTlVMTCkKKy0gICAgaWYgKGN1cnJlbnRfaGVhZF9iZl9saXN0LT5zeW1udW1fZmNuID09 IHRoZV9mdW5jdGlvbikKKy0gICAgICB7CistCWlmIChnbG9iYWxfcmVtb3RlX2RlYnVnKQorLQkg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIioiKTsKKy0KKy0JdG1wID0gY3VycmVu dF9oZWFkX2JmX2xpc3Q7CistCWN1cnJlbnRfaGVhZF9iZl9saXN0ID0gY3VycmVudF9oZWFkX2Jm X2xpc3QtPm5leHQ7CistCXJldHVybiAodG1wLT5zeW1udW1fYmYpOworLSAgICAgIH0KKy0KKy0g IC8qIElmIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsgKHByb2JhYmx5IGJlY2F1c2UgI2xpbmUgZGly ZWN0aXZlcyB3ZXJlIAorLSAgICAgdXNlZCBpbiB0aGUgc291cmNlZmlsZSBhbmQgdGhleSBtZXNz ZWQgdXAgb3VyIGludGVybmFsIHRhYmxlcykgd2Ugbm93IGRvCistICAgICB0aGUgdWdseSBsaW5l YXIgc2NhbiAqLworLQorLSAgaWYgKGdsb2JhbF9yZW1vdGVfZGVidWcpCistICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIlxuZGVmYXVsdGluZyB0byBsaW5lYXIgc2NhblxuIik7 CistCistICBucHJvYmVzID0gMDsKKy0gIHRtcCA9IHNhdmVkX2JmX2xpc3Q7CistICB3aGlsZSAo dG1wICE9IE5VTEwpCistICAgIHsKKy0gICAgICBucHJvYmVzKys7CistICAgICAgaWYgKHRtcC0+ c3ltbnVtX2ZjbiA9PSB0aGVfZnVuY3Rpb24pCistCXsKKy0JICBpZiAoZ2xvYmFsX3JlbW90ZV9k ZWJ1ZykKKy0JICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIkZvdW5kIGluICVk IHByb2Jlc1xuIiwgbnByb2Jlcyk7CistCSAgY3VycmVudF9oZWFkX2JmX2xpc3QgPSB0bXAtPm5l eHQ7CistCSAgcmV0dXJuICh0bXAtPnN5bW51bV9iZik7CistCX0KKy0gICAgICB0bXAgPSB0bXAt Pm5leHQ7CistICAgIH0KKy0KKy0gIHJldHVybiAoLTEpOworLX0KKy0KKy1zdGF0aWMgU0FWRURf RlVOQ1RJT05fUFRSIHNhdmVkX2Z1bmN0aW9uX2xpc3QgPSBOVUxMOworLXN0YXRpYyBTQVZFRF9G VU5DVElPTl9QVFIgc2F2ZWRfZnVuY3Rpb25fbGlzdF9lbmQgPSBOVUxMOworLQorLXN0YXRpYyB2 b2lkCistY2xlYXJfZnVuY3Rpb25fbGlzdCAodm9pZCkKKy17CistICBTQVZFRF9GVU5DVElPTl9Q VFIgdG1wID0gc2F2ZWRfZnVuY3Rpb25fbGlzdDsKKy0gIFNBVkVEX0ZVTkNUSU9OX1BUUiBuZXh0 ID0gTlVMTDsKKy0KKy0gIHdoaWxlICh0bXAgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIG5leHQg PSB0bXAtPm5leHQ7CistICAgICAgeGZyZWUgKHRtcCk7CistICAgICAgdG1wID0gbmV4dDsKKy0g ICAgfQorLQorLSAgc2F2ZWRfZnVuY3Rpb25fbGlzdCA9IE5VTEw7CistfQorLSNlbmRpZgorLS0t IGEvZ2RiL2YtbGFuZy5oCisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC03MSwxNCArNzEsOSBAQCB0 eXBlZGVmIHN0cnVjdCBzYXZlZF9mNzdfY29tbW9uIFNBVkVEX0Y3N19DT01NT04sICpTQVZFRF9G NzdfQ09NTU9OX1BUUjsKKyB0eXBlZGVmIHN0cnVjdCBjb21tb25fZW50cnkgQ09NTU9OX0VOVFJZ LCAqQ09NTU9OX0VOVFJZX1BUUjsKKyAKKyBleHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgaGVh ZF9jb21tb25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCistZXh0ZXJuIFNB VkVEX0Y3N19DT01NT05fUFRSIHRhaWxfY29tbW9uX2xpc3Q7CS8qIFB0ciB0byBsYXN0IHNhdmVk IENPTU1PTiAgKi8KKy1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgY3VycmVudF9jb21tb247 CS8qIFB0ciB0byBjdXJyZW50IENPTU1PTiAqLworIAorIGV4dGVybiBTQVZFRF9GNzdfQ09NTU9O X1BUUiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAqKTsKKyAKKy0jZGVm aW5lIFVOSU5JVElBTElaRURfU0VDTlVNIC0xCistI2RlZmluZSBDT01NT05fTkVFRFNfUEFUQ0hJ TkcoYmxrKSAoKGJsayktPnNlY251bSA9PSBVTklOSVRJQUxJWkVEX1NFQ05VTSkKKy0KKyAjZGVm aW5lIEJMQU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25l ZCAgKi8KKyAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyog TUY3NyBhc3NpZ25lZCAgKi8KKyAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJf X0JMQU5LIgkvKiBMb2NhbCBHREIgKi8KKy0tLSBhL2dkYi9mLXZhbHByaW50LmMKKysrKyBiL2dk Yi9mLXZhbHByaW50LmMKK0BAIC0zNSwxMCArMzUsNiBAQAorICNpbmNsdWRlICJjb21tYW5kLmgi CisgI2luY2x1ZGUgImJsb2NrLmgiCisgCistI2lmIDAKKy1zdGF0aWMgaW50IHRoZXJlX2lzX2Ff dmlzaWJsZV9jb21tb25fbmFtZWQgKGNoYXIgKik7CistI2VuZGlmCistCisgZXh0ZXJuIHZvaWQg X2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCk7Cisgc3RhdGljIHZvaWQgaW5mb19jb21tb25f Y29tbWFuZCAoY2hhciAqLCBpbnQpOworIHN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29t bW9ucyAoY2hhciAqKTsKK0BAIC01NzgsNjcgKzU3NCw2IEBAIGluZm9fY29tbW9uX2NvbW1hbmQg KGNoYXIgKmNvbW5hbWUsIGludCBmcm9tX3R0eSkKKyAJCSAgICAgY29tbmFtZSwgZnVubmFtZSk7 CisgfQorIAorLS8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0 aGVyZSBpcyBhCistICAgRjc3IGNvbW1vbiBibG9jayB2aXNpYmxlIGF0IHRoZSBjdXJyZW50IHNj b3BlIGNhbGxlZCAnY29tbmFtZScuICovCistCistI2lmIDAKKy1zdGF0aWMgaW50CistdGhlcmVf aXNfYV92aXNpYmxlX2NvbW1vbl9uYW1lZCAoY2hhciAqY29tbmFtZSkKKy17CistICBTQVZFRF9G NzdfQ09NTU9OX1BUUiB0aGVfY29tbW9uOworLSAgc3RydWN0IGZyYW1lX2luZm8gKmZpOworLSAg Y2hhciAqZnVubmFtZSA9IDA7CistICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOworLQorLSAgaWYgKGNv bW5hbWUgPT0gTlVMTCkKKy0gICAgZXJyb3IgKF8oIkNhbm5vdCBkZWFsIHdpdGggTlVMTCBjb21t b24gbmFtZSEiKSk7CistCistICBmaSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUg c2VsZWN0ZWQiKSk7CistCistICAvKiBUaGUgZm9sbG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQg b2ZmIGZyb20gc3RhY2suYydzIHJvdXRpbmUgCistICAgICBwcmludF9mcmFtZV9pbmZvKCkgKi8K Ky0KKy0gIGZ1bmMgPSBmaW5kX3BjX2Z1bmN0aW9uIChmaS0+cGMpOworLSAgaWYgKGZ1bmMpCist ICAgIHsKKy0gICAgICAvKiBJbiBjZXJ0YWluIHBhdGhvbG9naWNhbCBjYXNlcywgdGhlIHN5bXRh YnMgZ2l2ZSB0aGUgd3JvbmcKKy0gICAgICAgICBmdW5jdGlvbiAod2hlbiB3ZSBhcmUgaW4gdGhl IGZpcnN0IGZ1bmN0aW9uIGluIGEgZmlsZSB3aGljaAorLSAgICAgICAgIGlzIGNvbXBpbGVkIHdp dGhvdXQgZGVidWdnaW5nIHN5bWJvbHMsIHRoZSBwcmV2aW91cyBmdW5jdGlvbgorLSAgICAgICAg IGlzIGNvbXBpbGVkIHdpdGggZGVidWdnaW5nIHN5bWJvbHMsIGFuZCB0aGUgImZvby5vIiBzeW1i b2wKKy0gICAgICAgICB0aGF0IGlzIHN1cHBvc2VkIHRvIHRlbGwgdXMgd2hlcmUgdGhlIGZpbGUg d2l0aCBkZWJ1Z2dpbmcgc3ltYm9scworLSAgICAgICAgIGVuZHMgaGFzIGJlZW4gdHJ1bmNhdGVk IGJ5IGFyIGJlY2F1c2UgaXQgaXMgbG9uZ2VyIHRoYW4gMTUKKy0gICAgICAgICBjaGFyYWN0ZXJz KS4KKy0KKy0gICAgICAgICBTbyBsb29rIGluIHRoZSBtaW5pbWFsIHN5bWJvbCB0YWJsZXMgYXMg d2VsbCwgYW5kIGlmIGl0IGNvbWVzCistICAgICAgICAgdXAgd2l0aCBhIGxhcmdlciBhZGRyZXNz IGZvciB0aGUgZnVuY3Rpb24gdXNlIHRoYXQgaW5zdGVhZC4KKy0gICAgICAgICBJIGRvbid0IHRo aW5rIHRoaXMgY2FuIGV2ZXIgY2F1c2UgYW55IHByb2JsZW1zOyB0aGVyZSBzaG91bGRuJ3QKKy0g ICAgICAgICBiZSBhbnkgbWluaW1hbCBzeW1ib2xzIGluIHRoZSBtaWRkbGUgb2YgYSBmdW5jdGlv bi4KKy0gICAgICAgICBGSVhNRTogIChOb3QgbmVjZXNzYXJpbHkgdHJ1ZS4gIFdoYXQgYWJvdXQg dGV4dCBsYWJlbHMpICovCistCistICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9s ID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChmaS0+cGMpOworLQorLSAgICAgIGlmICht c3ltYm9sICE9IE5VTEwKKy0JICAmJiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpCist CSAgICAgID4gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYykpKSkKKy0JZnVu bmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpOworLSAgICAgIGVsc2UKKy0JZnVu bmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKGZ1bmMpOworLSAgICB9CistICBlbHNlCistICAg IHsKKy0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQorLSAgICAgIGxvb2t1 cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKKy0KKy0gICAgICBpZiAobXN5bWJvbCAh PSBOVUxMKQorLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCk7CistICAg IH0KKy0KKy0gIHRoZV9jb21tb24gPSBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNvbW5hbWUs IGZ1bm5hbWUpOworLQorLSAgcmV0dXJuICh0aGVfY29tbW9uID8gMSA6IDApOworLX0KKy0jZW5k aWYKKy0KKyB2b2lkCisgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCkKKyB7CgpkaWZmIC0t Z2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoIGIvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODZmMDYKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKQEAgLTAsMCArMSw1NzYgQEAKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDIxOjM1 OjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJl YWQuYwkyMDEwLTAxLTE1IDIxOjQxOjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTU4MTEsMTIgKzU4 MTEsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cgorICAgcmV0 dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOworIH0KKyAKKy0vKiBGaXJzdCBj dXQ6IGluc3RhbGwgZWFjaCBjb21tb24gYmxvY2sgbWVtYmVyIGFzIGEgZ2xvYmFsIHZhcmlhYmxl LiAgKi8KKysvKiBDcmVhdGUgYXBwcm9wcmlhdGUgbG9jYWxseS1zY29wZWQgdmFyaWFibGVzIGZv ciBhbGwgdGhlIERXX1RBR19jb21tb25fYmxvY2sKKysgICBlbnRyaWVzLiAgQ3JlYXRlIGFsc28g VFlQRV9DT0RFX1NUUlVDVCBsaXN0aW5nIGFsbCBzdWNoIHZhcmlhYmxlcyB0byBiZQorKyAgIGF2 YWlsYWJsZSBmb3IgYGluZm8gY29tbW9uJy4gIENPTU1PTl9CTE9DS19ET01BSU4gaXMgdXNlZCB0 byBzZXBhdGUgdGhlCisrICAgY29tbW9uIGJsb2NrcyBuYW1lIG5hbWVzcGFjZSBmcm9tIHJlZ3Vs YXIgdmFyaWFibGUgbmFtZXMuICAqLworIAorIHN0YXRpYyB2b2lkCisgcmVhZF9jb21tb25fYmxv Y2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyB7CistICBz dHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZTsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Cisg ICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisgICBDT1JFX0FERFIgYmFzZSA9IChDT1JFX0FERFIpIDA7 CitAQCAtNTg0MSwxMCArNTg0Myw0MCBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9p bmZvICpkaWUsCisgICAgIH0KKyAgIGlmIChkaWUtPmNoaWxkICE9IE5VTEwpCisgICAgIHsKKysg ICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOworKyAgICAgIHN0cnVj dCBkaWVfaW5mbyAqY2hpbGRfZGllOworKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOworKyAgICAg IHN0cnVjdCBmaWVsZCAqZmllbGQ7CisrICAgICAgY2hhciAqbmFtZTsKKysgICAgICBzdHJ1Y3Qg c3ltYm9sICpzeW07CisrCisrICAgICAgdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOworKyAg ICAgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVfU1RSVUNUOworKyAgICAgIC8qIEFydGlm aWNpYWwgdHlwZSB0byBiZSB1c2VkIG9ubHkgYnkgYGluZm8gY29tbW9uJy4gICovCisrICAgICAg VFlQRV9OQU1FICh0eXBlKSA9ICI8Y29tbW9uPiI7CisrCisrICAgICAgY2hpbGRfZGllID0gZGll LT5jaGlsZDsKKysgICAgICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQorKwl7 CisrCSAgVFlQRV9ORklFTERTICh0eXBlKSsrOworKwkgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGll IChjaGlsZF9kaWUpOworKwl9CisrCisrICAgICAgVFlQRV9GSUVMRFMgKHR5cGUpID0gb2JzdGFj a19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJCSAgc2l6ZW9mICgqVFlQ RV9GSUVMRFMgKHR5cGUpKQorKwkJCQkJICAqIFRZUEVfTkZJRUxEUyAodHlwZSkpOworKyAgICAg IG1lbXNldCAoVFlQRV9GSUVMRFMgKHR5cGUpLCAwLCBzaXplb2YgKCpUWVBFX0ZJRUxEUyAodHlw ZSkpCisrCQkJCSAgICAgKiBUWVBFX05GSUVMRFMgKHR5cGUpKTsKKysgICAgICAKKysgICAgICBm aWVsZCA9IFRZUEVfRklFTERTICh0eXBlKTsKKyAgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxk OworICAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCisgCXsKKysJICAv KiBDcmVhdGUgdGhlIHN5bWJvbCBpbiB0aGUgRFdfVEFHX2NvbW1vbl9ibG9jayBibG9jayBpbiB0 aGUgY3VycmVudAorKwkgICAgIHN5bWJvbCBzY29wZS4gICovCisgCSAgc3ltID0gbmV3X3N5bWJv bCAoY2hpbGRfZGllLCBOVUxMLCBjdSk7CisrCisrCSAgLyogVW5kb2N1bWVudGVkIGluIERXQVJG Mywgd2hlbiBpdCBjYW4gYmUgcHJlc2VudD8gICovCisgCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChj aGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBjdSk7CisgCSAgaWYgKGF0dHIp CisgCSAgICB7CitAQCAtNTg2Miw4ICs1ODk0LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwKKyAJICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPSBi YXNlICsgYnl0ZV9vZmZzZXQ7CisgCSAgICAgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xv YmFsX3N5bWJvbHMpOworIAkgICAgfQorKworKwkgIGlmIChTWU1CT0xfQ0xBU1MgKHN5bSkgPT0g TE9DX1NUQVRJQykKKysJICAgIFNFVF9GSUVMRF9QSFlTQUREUiAoKmZpZWxkLCBTWU1CT0xfVkFM VUVfQUREUkVTUyAoc3ltKSk7CisrCSAgZWxzZQorKwkgICAgU0VUX0ZJRUxEX1BIWVNOQU1FICgq ZmllbGQsIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkpOworKwkgIEZJRUxEX1RZUEUgKCpmaWVs ZCkgPSBTWU1CT0xfVFlQRSAoc3ltKTsKKysJICBGSUVMRF9OQU1FICgqZmllbGQpID0gU1lNQk9M X05BVFVSQUxfTkFNRSAoc3ltKTsKKysJICBmaWVsZCsrOworIAkgIGNoaWxkX2RpZSA9IHNpYmxp bmdfZGllIChjaGlsZF9kaWUpOworIAl9CisrCisrICAgICAgLyogVFlQRV9MRU5HVEggKHR5cGUp IGlzIGxlZnQgMCAtIGl0IGlzIG9ubHkgYSB2aXJ0dWFsIHN0cnVjdHVyZSBldmVuCisrCSB3aXRo IG5vIGNvbnNlY3V0aXZlIGFkZHJlc3Mgc3BhY2UuICAqLworKworKyAgICAgIHN5bSA9IG5ld19z eW1ib2wgKGRpZSwgdHlwZSwgY3UpOworKyAgICAgIC8qIFNZTUJPTF9WQUxVRV9BRERSRVNTIG5l dmVyIGdldHMgdXNlZCBhcyBhbGwgaXRzIGZpZWxkcyBhcmUgc3RhdGljLiAgKi8KKysgICAgICBT WU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2U7CisrCisrICAgICAgc2V0X2RpZV90eXBl IChkaWUsIHR5cGUsIGN1KTsKKyAgICAgfQorIH0KKyAKK0BAIC05MDUyLDYgKzkxMDEsMTMgQEAg bmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorIAkgICAgeworIAkgICAg ICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKKyAJICAgICAgYXR0cjIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOworKworKwkgICAgICAvKiBGb3J0 cmFuIGV4cGxpY2l0bHkgaW1wb3J0cyBhbnkgZ2xvYmFsIHN5bWJvbHMgdG8gdGhlIGxvY2FsCisr CQkgc2NvcGUgYnkgRFdfVEFHX2NvbW1vbl9ibG9jay4gICovCisrCSAgICAgIGlmIChjdS0+bGFu Z3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbiAmJiBkaWUtPnBhcmVudAorKwkJICAmJiBkaWUtPnBh cmVudC0+dGFnID09IERXX1RBR19jb21tb25fYmxvY2spCisrCQlhdHRyMiA9IE5VTEw7CisrCisg CSAgICAgIGlmIChhdHRyMiAmJiAoRFdfVU5TTkQgKGF0dHIyKSAhPSAwKSkKKyAJCXsKKyAJCSAg LyogV29ya2Fyb3VuZCBnZm9ydHJhbiBQUiBkZWJ1Zy80MDA0MCAtIGl0IHVzZXMKK0BAIC05MjMw LDYgKzkyODYsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAor IAkgIFNZTUJPTF9ET01BSU4gKHN5bSkgPSBNT0RVTEVfRE9NQUlOOworIAkgIGFkZF9zeW1ib2xf dG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOworIAkgIGJyZWFrOworKwljYXNlIERXX1RB R19jb21tb25fYmxvY2s6CisrCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX1NUQVRJQzsKKysJ ICBTWU1CT0xfRE9NQUlOIChzeW0pID0gQ09NTU9OX0JMT0NLX0RPTUFJTjsKKysJICBhZGRfc3lt Ym9sX3RvX2xpc3QgKHN5bSwgY3UtPmxpc3RfaW5fc2NvcGUpOworKwkgIGJyZWFrOworIAlkZWZh dWx0OgorIAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUuICBIb3BlZnVsbHkgd2UgYXJlbid0 IHByb2Nlc3NpbmcKKyAJICAgICB0cmFzaCBkYXRhLCBidXQgc2luY2Ugd2UgbXVzdCBzcGVjaWZp Y2FsbHkgaWdub3JlIHRoaW5ncworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtbGFu Zy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9mLWxhbmcu YwkyMDEwLTAxLTE1IDIxOjM1OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2YtbGFuZy5jCTIwMTAtMDEtMTUgMjE6MzU6MjcuMDAwMDAwMDAwICswMTAwCitA QCAtNDQ4LDI3ICs0NDgsMyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQorIAorICAg YWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKKyB9CistCistU0FWRURfRjc3X0NPTU1P Tl9QVFIgaGVhZF9jb21tb25fbGlzdCA9IE5VTEw7CS8qIFB0ciB0byAxc3Qgc2F2ZWQgQ09NTU9O ICAqLworLQorLS8qIFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJlZCBDT01N T04gYmxvY2sgbmFtZWQgIm5hbWUiIAorLSAgIHRoYXQgYmVsb25ncyB0byBmdW5jdGlvbiBmdW5j bmFtZSAqLworLQorLVNBVkVEX0Y3N19DT01NT05fUFRSCistZmluZF9jb21tb25fZm9yX2Z1bmN0 aW9uIChjaGFyICpuYW1lLCBjaGFyICpmdW5jbmFtZSkKKy17CistCistICBTQVZFRF9GNzdfQ09N TU9OX1BUUiB0bXA7CistCistICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0OworLQorLSAgd2hpbGUg KHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKHN0cmNtcCAodG1wLT5uYW1lLCBuYW1l KSA9PSAwCistCSAgJiYgc3RyY21wICh0bXAtPm93bmluZ19mdW5jdGlvbiwgZnVuY25hbWUpID09 IDApCistCXJldHVybiAodG1wKTsKKy0gICAgICBlbHNlCistCXRtcCA9IHRtcC0+bmV4dDsKKy0g ICAgfQorLSAgcmV0dXJuIChOVUxMKTsKKy19CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvZi1sYW5nLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2YtbGFuZy5oCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvZi1sYW5nLmgJMjAxMC0wMS0xNSAyMTozNToyNy4wMDAwMDAwMDAg KzAxMDAKK0BAIC01MSwzNiArNTEsOCBAQCBlbnVtIGY5MF9yYW5nZV90eXBlCisgICAgIE5PTkVf Qk9VTkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAqLworICAgfTsKKyAKKy1zdHJ1Y3QgY29t bW9uX2VudHJ5CistICB7CistICAgIHN0cnVjdCBzeW1ib2wgKnN5bWJvbDsJLyogVGhlIHN5bWJv bCBub2RlIGNvcnJlc3BvbmRpbmcKKy0JCQkJICAgdG8gdGhpcyBjb21wb25lbnQgKi8KKy0gICAg c3RydWN0IGNvbW1vbl9lbnRyeSAqbmV4dDsJLyogVGhlIG5leHQgY29tcG9uZW50ICovCistICB9 OworLQorLXN0cnVjdCBzYXZlZF9mNzdfY29tbW9uCistICB7CistICAgIGNoYXIgKm5hbWU7CQkJ LyogTmFtZSBvZiBDT01NT04gKi8KKy0gICAgY2hhciAqb3duaW5nX2Z1bmN0aW9uOwkvKiBOYW1l IG9mIHBhcmVudCBmdW5jdGlvbiAqLworLSAgICBpbnQgc2VjbnVtOwkJCS8qIFNlY3Rpb24gIyBv ZiAuYnNzICovCistICAgIENPUkVfQUREUiBvZmZzZXQ7CQkvKiBPZmZzZXQgZnJvbSAuYnNzIGZv ciAKKy0JCQkJICAgdGhpcyBibG9jayAqLworLSAgICBzdHJ1Y3QgY29tbW9uX2VudHJ5ICplbnRy aWVzOwkvKiBMaXN0IG9mIGJsb2NrJ3MgY29tcG9uZW50cyAqLworLSAgICBzdHJ1Y3QgY29tbW9u X2VudHJ5ICplbmRfb2ZfZW50cmllczsJLyogcHRyLiB0byBlbmQgb2YgY29tcG9uZW50cyAqLwor LSAgICBzdHJ1Y3Qgc2F2ZWRfZjc3X2NvbW1vbiAqbmV4dDsJLyogTmV4dCBzYXZlZCBDT01NT04g YmxvY2sgKi8KKy0gIH07CistCistdHlwZWRlZiBzdHJ1Y3Qgc2F2ZWRfZjc3X2NvbW1vbiBTQVZF RF9GNzdfQ09NTU9OLCAqU0FWRURfRjc3X0NPTU1PTl9QVFI7CistCistdHlwZWRlZiBzdHJ1Y3Qg Y29tbW9uX2VudHJ5IENPTU1PTl9FTlRSWSwgKkNPTU1PTl9FTlRSWV9QVFI7CistCistZXh0ZXJu IFNBVkVEX0Y3N19DT01NT05fUFRSIGhlYWRfY29tbW9uX2xpc3Q7CS8qIFB0ciB0byAxc3Qgc2F2 ZWQgQ09NTU9OICAqLworLQorLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BUUiBmaW5kX2NvbW1v bl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAqKTsKKy0KKyAjZGVmaW5lIEJMQU5LX0NPTU1P Tl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAgKi8KKyAjZGVmaW5l IEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3NyBhc3NpZ25lZCAg Ki8KKy0jZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JMQU5LIgkvKiBMb2Nh bCBHREIgKi8KKyAKKyAvKiBXaGVuIHJlYXNvbmFibGUgYXJyYXkgYm91bmRzIGNhbm5vdCBiZSBm ZXRjaGVkLCBzdWNoIGFzIHdoZW4gCisgICAgeW91IGFzayB0byAnbXQgcHJpbnQgc3ltYm9scycg YW5kIHRoZXJlIGlzIG5vIHN0YWNrIGZyYW1lIGFuZCAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9mLXZhbHByaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTAxLTE1IDIxOjM1OjE2LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTAxLTE1IDIx OjM1OjI3LjAwMDAwMDAwMCArMDEwMAorQEAgLTM0LDYgKzM0LDggQEAKKyAjaW5jbHVkZSAiZ2Ri Y29yZS5oIgorICNpbmNsdWRlICJjb21tYW5kLmgiCisgI2luY2x1ZGUgImJsb2NrLmgiCisrI2lu Y2x1ZGUgImRpY3Rpb25hcnkuaCIKKysjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorIAorIGV4dGVy biB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZvaWQpOworIHN0YXRpYyB2b2lkIGluZm9f Y29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKK0BAIC00NzYsMjIgKzQ3OCw1NCBAQCBmX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCisgICByZXR1cm4gMDsKKyB9Cisg Cistc3RhdGljIHZvaWQKKy1saXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUp Cisrc3RhdGljIGludAorK2luZm9fY29tbW9uX2NvbW1hbmRfZm9yX2Jsb2NrIChzdHJ1Y3QgYmxv Y2sgKmJsb2NrLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisrCQkJICAgICAgIGNvbnN0IGNo YXIgKmNvbW5hbWUpCisgeworLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOworLQorLSAgdG1w ID0gaGVhZF9jb21tb25fbGlzdDsKKysgIHN0cnVjdCBkaWN0X2l0ZXJhdG9yIGl0ZXI7CisrICBz dHJ1Y3Qgc3ltYm9sICpzeW07CisrICBpbnQgdmFsdWVzX3ByaW50ZWQgPSAwOworKyAgY29uc3Qg Y2hhciAqbmFtZTsKKysgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CisrCisrICBn ZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisrCisrICBBTExfQkxPQ0tfU1lNQk9MUyAo YmxvY2ssIGl0ZXIsIHN5bSkKKysgICAgaWYgKFNZTUJPTF9ET01BSU4gKHN5bSkgPT0gQ09NTU9O X0JMT0NLX0RPTUFJTikKKysgICAgICB7CisrICAgICAgCXN0cnVjdCB0eXBlICp0eXBlID0gU1lN Qk9MX1RZUEUgKHN5bSk7CisrCWludCBpbmRleDsKKysKKysJZ2RiX2Fzc2VydCAoU1lNQk9MX0NM QVNTIChzeW0pID09IExPQ19TVEFUSUMpOworKwlnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9TVFJVQ1QpOworKworKwlpZiAoY29tbmFtZSAmJiAoIVNZTUJPTF9MSU5L QUdFX05BTUUgKHN5bSkKKysJICAgICAgICAgICAgICAgIHx8IHN0cmNtcCAoY29tbmFtZSwgU1lN Qk9MX0xJTktBR0VfTkFNRSAoc3ltKSkgIT0gMCkpCisrCSAgY29udGludWU7CisrCisrCXZhbHVl c19wcmludGVkID0gMTsKKysJaWYgKFNZTUJPTF9QUklOVF9OQU1FIChzeW0pKQorKwkgIHByaW50 Zl9maWx0ZXJlZCAoXygiQ29udGVudHMgb2YgRjc3IENPTU1PTiBibG9jayAnJXMnOlxuIiksCisr CQkJICAgU1lNQk9MX1BSSU5UX05BTUUgKHN5bSkpOworKwllbHNlCisrCSAgcHJpbnRmX2ZpbHRl cmVkIChfKCJDb250ZW50cyBvZiBibGFuayBDT01NT04gYmxvY2s6XG4iKSk7CisrCQorKwlmb3Ig KGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpbmRleCsrKQorKwkgIHsK KysJICAgIHN0cnVjdCB2YWx1ZSAqdmFsOworKworKwkgICAgZ2RiX2Fzc2VydCAoZmllbGRfaXNf c3RhdGljICgmVFlQRV9GSUVMRCAodHlwZSwgaW5kZXgpKSk7CisrCSAgICB2YWwgPSB2YWx1ZV9z dGF0aWNfZmllbGQgKHR5cGUsIGluZGV4KTsKKysKKysJICAgIHByaW50Zl9maWx0ZXJlZCAoIiVz ID0gIiwgVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpbmRleCkpOworKwkgICAgdmFsdWVfcHJpbnQg KHZhbCwgZ2RiX3N0ZG91dCwgJm9wdHMpOworKwkgICAgcHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7 CisrCSAgfQorIAorLSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJBbGwgQ09NTU9OIGJsb2NrcyB2aXNp YmxlIGF0IHRoaXMgbGV2ZWw6XG5cbiIpKTsKKysJcHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Cisr ICAgICAgfQorIAorLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKHN0 cmNtcCAodG1wLT5vd25pbmdfZnVuY3Rpb24sIGZ1bm5hbWUpID09IDApCistCXByaW50Zl9maWx0 ZXJlZCAoIiVzXG4iLCB0bXAtPm5hbWUpOworLQorLSAgICAgIHRtcCA9IHRtcC0+bmV4dDsKKy0g ICAgfQorKyAgcmV0dXJuIHZhbHVlc19wcmludGVkOworIH0KKyAKKyAvKiBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgdG8gcHJpbnQgb3V0IHRoZSB2YWx1ZXMgaW4gYSBnaXZlbiBDT01NT04gCitAQCAt NTAxLDExICs1MzUsOSBAQCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUp Cisgc3RhdGljIHZvaWQKKyBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQg ZnJvbV90dHkpCisgeworLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdGhlX2NvbW1vbjsKKy0gIENP TU1PTl9FTlRSWV9QVFIgZW50cnk7CisgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmk7CistICBjaGFy ICpmdW5uYW1lID0gMDsKKy0gIHN0cnVjdCBzeW1ib2wgKmZ1bmM7CisrICBzdHJ1Y3QgYmxvY2sg KmJsb2NrOworKyAgaW50IHZhbHVlc19wcmludGVkID0gMDsKKyAKKyAgIC8qIFdlIGhhdmUgYmVl biB0b2xkIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIEY3NyBDT01NT04gCisgICAgICBibG9j ayBzdXBwb3NlZGx5IHZpc2libGUgaW4gdGhpcyBmdW5jdGlvbi4gIExldCB1cyAKK0BAIC01MTcs NzQgKzU0OSwzMSBAQCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgCisg ICAvKiBUaGUgZm9sbG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQgb2ZmIGZyb20gc3RhY2suYydz IHJvdXRpbmUgCisgICAgICBwcmludF9mcmFtZV9pbmZvKCkgKi8KKyAKKy0gIGZ1bmMgPSBmaW5k X3BjX2Z1bmN0aW9uIChnZXRfZnJhbWVfcGMgKGZpKSk7CistICBpZiAoZnVuYykKKysgIGJsb2Nr ID0gZ2V0X2ZyYW1lX2Jsb2NrIChmaSwgMCk7CisrICBpZiAoYmxvY2sgPT0gTlVMTCkKKyAgICAg eworLSAgICAgIC8qIEluIGNlcnRhaW4gcGF0aG9sb2dpY2FsIGNhc2VzLCB0aGUgc3ltdGFicyBn aXZlIHRoZSB3cm9uZworLSAgICAgICAgIGZ1bmN0aW9uICh3aGVuIHdlIGFyZSBpbiB0aGUgZmly c3QgZnVuY3Rpb24gaW4gYSBmaWxlIHdoaWNoCistICAgICAgICAgaXMgY29tcGlsZWQgd2l0aG91 dCBkZWJ1Z2dpbmcgc3ltYm9scywgdGhlIHByZXZpb3VzIGZ1bmN0aW9uCistICAgICAgICAgaXMg Y29tcGlsZWQgd2l0aCBkZWJ1Z2dpbmcgc3ltYm9scywgYW5kIHRoZSAiZm9vLm8iIHN5bWJvbAor LSAgICAgICAgIHRoYXQgaXMgc3VwcG9zZWQgdG8gdGVsbCB1cyB3aGVyZSB0aGUgZmlsZSB3aXRo IGRlYnVnZ2luZyBzeW1ib2xzCistICAgICAgICAgZW5kcyBoYXMgYmVlbiB0cnVuY2F0ZWQgYnkg YXIgYmVjYXVzZSBpdCBpcyBsb25nZXIgdGhhbiAxNQorLSAgICAgICAgIGNoYXJhY3RlcnMpLgor LQorLSAgICAgICAgIFNvIGxvb2sgaW4gdGhlIG1pbmltYWwgc3ltYm9sIHRhYmxlcyBhcyB3ZWxs LCBhbmQgaWYgaXQgY29tZXMKKy0gICAgICAgICB1cCB3aXRoIGEgbGFyZ2VyIGFkZHJlc3MgZm9y IHRoZSBmdW5jdGlvbiB1c2UgdGhhdCBpbnN0ZWFkLgorLSAgICAgICAgIEkgZG9uJ3QgdGhpbmsg dGhpcyBjYW4gZXZlciBjYXVzZSBhbnkgcHJvYmxlbXM7IHRoZXJlIHNob3VsZG4ndAorLSAgICAg ICAgIGJlIGFueSBtaW5pbWFsIHN5bWJvbHMgaW4gdGhlIG1pZGRsZSBvZiBhIGZ1bmN0aW9uLgor LSAgICAgICAgIEZJWE1FOiAgKE5vdCBuZWNlc3NhcmlseSB0cnVlLiAgV2hhdCBhYm91dCB0ZXh0 IGxhYmVscykgKi8KKy0KKy0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPSAK Ky0JbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZpKSk7CistCist ICAgICAgaWYgKG1zeW1ib2wgIT0gTlVMTAorLQkgICYmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAo bXN5bWJvbCkKKy0JICAgICAgPiBCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5j KSkpKQorLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCk7CistICAgICAg ZWxzZQorLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAoZnVuYyk7CistICAgIH0KKy0g IGVsc2UKKy0gICAgeworLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9Cist ICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZpKSk7Cist CistICAgICAgaWYgKG1zeW1ib2wgIT0gTlVMTCkKKy0JZnVubmFtZSA9IFNZTUJPTF9MSU5LQUdF X05BTUUgKG1zeW1ib2wpOworLSAgICAgIGVsc2UgLyogR290IG5vICdmdW5uYW1lJywgY29kZSBi ZWxvdyB3aWxsIGZhaWwuICAqLworLQllcnJvciAoXygiTm8gZnVuY3Rpb24gZm91bmQgZm9yIGZy YW1lLiIpKTsKKysgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIk5vIHN5bWJvbCB0YWJsZSBpbmZv IGF2YWlsYWJsZS5cbiIpKTsKKysgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gIC8qIElmIGNv bW5hbWUgaXMgTlVMTCwgd2UgYXNzdW1lIHRoZSB1c2VyIHdpc2hlcyB0byBzZWUgdGhlIAorLSAg ICAgd2hpY2ggQ09NTU9OIGJsb2NrcyBhcmUgdmlzaWJsZSBoZXJlIGFuZCB0aGVuIHJldHVybiAq LworLQorLSAgaWYgKGNvbW5hbWUgPT0gMCkKKysgIHdoaWxlIChibG9jaykKKyAgICAgeworLSAg ICAgIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoZnVubmFtZSk7CistICAgICAgcmV0dXJuOwor KyAgICAgIGlmIChpbmZvX2NvbW1vbl9jb21tYW5kX2Zvcl9ibG9jayAoYmxvY2ssIGZpLCBjb21u YW1lKSkKKysJdmFsdWVzX3ByaW50ZWQgPSAxOworKyAgICAgIC8qIEFmdGVyIGhhbmRsaW5nIHRo ZSBmdW5jdGlvbidzIHRvcC1sZXZlbCBibG9jaywgc3RvcC4gIERvbid0CisrICAgICAgICAgY29u dGludWUgdG8gaXRzIHN1cGVyYmxvY2ssIHRoZSBibG9jayBvZiBwZXItZmlsZSBzeW1ib2xzLiAg Ki8KKysgICAgICBpZiAoQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKSkKKysJYnJlYWs7CisrICAgICAg YmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jayk7CisgICAgIH0KKyAKKy0gIHRoZV9jb21t b24gPSBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNvbW5hbWUsIGZ1bm5hbWUpOworLQorLSAg aWYgKHRoZV9jb21tb24pCisrICBpZiAoIXZhbHVlc19wcmludGVkKQorICAgICB7CistICAgICAg aWYgKHN0cmNtcCAoY29tbmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTE9DQUwpID09IDApCistCXBy aW50Zl9maWx0ZXJlZCAoXygiQ29udGVudHMgb2YgYmxhbmsgQ09NTU9OIGJsb2NrOlxuIikpOwor KyAgICAgIGlmIChjb21uYW1lKQorKwlwcmludGZfZmlsdGVyZWQgKF8oIk5vIGNvbW1vbiBibG9j ayAnJXMnLlxuIiksIGNvbW5hbWUpOworICAgICAgIGVsc2UKKy0JcHJpbnRmX2ZpbHRlcmVkIChf KCJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICclcyc6XG4iKSwgY29tbmFtZSk7CistCist ICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKKy0gICAgICBlbnRyeSA9IHRoZV9jb21tb24t PmVudHJpZXM7CistCistICAgICAgd2hpbGUgKGVudHJ5ICE9IE5VTEwpCistCXsKKy0JICBwcmlu dF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIGVudHJ5LT5zeW1ib2wsIGZpLCBnZGJfc3Rkb3V0 LCAwKTsKKy0JICBlbnRyeSA9IGVudHJ5LT5uZXh0OworLQl9CisrCXByaW50Zl9maWx0ZXJlZCAo XygiTm8gY29tbW9uIGJsb2Nrcy5cbiIpKTsKKyAgICAgfQorLSAgZWxzZQorLSAgICBwcmludGZf ZmlsdGVyZWQgKF8oIkNhbm5vdCBsb2NhdGUgdGhlIGNvbW1vbiBibG9jayAlcyBpbiBmdW5jdGlv biAnJXMnXG4iKSwKKy0JCSAgICAgY29tbmFtZSwgZnVubmFtZSk7CisgfQorIAorIHZvaWQKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zdGFjay5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zdGFjay5jCTIwMTAtMDEtMTUgMjE6MzU6MTMuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3RhY2suYwkyMDEwLTAx LTE1IDIxOjM1OjI3LjAwMDAwMDAwMCArMDEwMAorQEAgLTE0NzQsNiArMTQ3NCw4IEBAIHByaW50 X2Jsb2NrX2ZyYW1lX2xvY2FscyAoc3RydWN0IGJsb2NrICoKKyAJY2FzZSBMT0NfQ09NUFVURUQ6 CisgCSAgaWYgKFNZTUJPTF9JU19BUkdVTUVOVCAoc3ltKSkKKyAJICAgIGJyZWFrOworKwkgIGlm IChTWU1CT0xfRE9NQUlOIChzeW0pID09IENPTU1PTl9CTE9DS19ET01BSU4pCisrCSAgICBicmVh azsKKyAJICB2YWx1ZXNfcHJpbnRlZCA9IDE7CisgCSAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVl IChOVUxMLCBzeW0sIGZyYW1lLCBzdHJlYW0sIDQgKiBudW1fdGFicyk7CisgCSAgYnJlYWs7CitJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUgMjE6MzU6MTYu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgJMjAx MC0wMS0xNSAyMTozNTo1Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC00MDEsNyArNDAxLDEwIEBAIHR5 cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKKyAgIFRZUEVTX0RPTUFJTiwKKyAKKyAgIC8qIEZv cnRyYW4gbW9kdWxlLiAgVGhlaXIgbmFtaW5nIG11c3QgYmUgc2VwYXJhdGUuICAqLworLSAgTU9E VUxFX0RPTUFJTgorKyAgTU9EVUxFX0RPTUFJTiwKKysKKysgIC8qIEZvcnRyYW4gY29tbW9uIGJs b2Nrcy4gIFRoZWlyIG5hbWluZyBtdXN0IGJlIHNlcGFyYXRlIGZyb20gVkFSX0RPTUFJTi4gICov CisrICBDT01NT05fQkxPQ0tfRE9NQUlOCisgfQorIGRvbWFpbl9lbnVtOworIAorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCitA QCAtMCwwICsxLDEwMSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMgCisrIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAKKysKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc2V0IHRlc3RmaWxlICJjb21tb24tYmxvY2siCisr c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQorKworK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0 fV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0i CisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWlu aXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKysKKytp ZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJy ZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAic3RvcC1oZXJlLW91dCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInN0b3AtaGVyZS1vdXQiCisrCisrIyBDb21tb24gYmxvY2sgbmFtaW5nIHdpdGgg c291cmNlIG5hbWUgL2Zvby86CisrIyAgICAgICAgICAgICAgICAuc3ltdGFiICBEV19UQUdfY29t bW9uX2Jsb2NrJ3MgRFdfQVRfbmFtZQorKyMgSW50ZWwgRm9ydHJhbiAgZm9vXyAgICAgZm9vXwor KyMgR05VIEZvcnRyYW4gICAgZm9vXyAgICAgZm9vCisrI3NldCBzdWZmaXggIl8iCisrc2V0IHN1 ZmZpeCAiIgorKworK3NldCBpbnQ0IHsoaW50ZWdlclwoa2luZD00XCl8SU5URUdFUlwoNFwpKX0K KytzZXQgcmVhbDQgeyhyZWFsXChraW5kPTRcKXxSRUFMXCg0XCkpfQorK3NldCByZWFsOCB7KHJl YWxcKGtpbmQ9OFwpfFJFQUxcKDhcKSl9CisrCisrZ2RiX3Rlc3QgIndoYXRpcyBmb28kc3VmZml4 IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCisrZ2RiX3Rl c3QgInB0eXBlIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVu dCBjb250ZXh0LiIKKytnZGJfdGVzdCAicCBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1 ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCisrZ2RiX3Rlc3QgIndoYXRpcyBmb19vJHN1ZmZp eCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJf dGVzdCAicHR5cGUgZm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1 cnJlbnQgY29udGV4dC4iCisrZ2RiX3Rlc3QgInAgZm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJm b19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCisrCisrZ2RiX3Rlc3QgImluZm8gbG9j YWxzIiAiaXhfeCA9IDExXHJcbml5X3kgPSAyMlxyXG5pel96ID0gMzNcclxuaXggPSAxXHJcbml5 ID0gMlxyXG5peiA9IDMiICJpbmZvIGxvY2FscyBvdXQiCisrZ2RiX3Rlc3QgImluZm8gY29tbW9u IiAiQ29udGVudHMgb2YgRjc3IENPTU1PTiBibG9jayAnZm9fbyc6XHJcbml4X3ggPSAxMVxyXG5p eV95ID0gMjJcclxuaXpfeiA9IDMzXHJcblxyXG5Db250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2Nr ICdmb28nOlxyXG5peCA9IDFcclxuaXkgPSAyXHJcbml6ID0gMyIgImluZm8gY29tbW9uIG91dCIK KysKKytnZGJfdGVzdCAicHR5cGUgaXgiICJ0eXBlID0gJGludDQiICJwdHlwZSBpeCBvdXQiCisr Z2RiX3Rlc3QgInB0eXBlIGl5IiAidHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5IG91dCIKKytnZGJf dGVzdCAicHR5cGUgaXoiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXogb3V0IgorK2dkYl90ZXN0 ICJwdHlwZSBpeF94IiAidHlwZSA9ICRpbnQ0IiAicHR5cGUgaXhfeCBvdXQiCisrZ2RiX3Rlc3Qg InB0eXBlIGl5X3kiICJ0eXBlID0gJHJlYWw0IiAicHR5cGUgaXlfeSBvdXQiCisrZ2RiX3Rlc3Qg InB0eXBlIGl6X3oiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXpfeiBvdXQiCisrCisrZ2RiX3Rl c3QgInAgaXgiICIgPSAxICoiICJwIGl4IG91dCIKKytnZGJfdGVzdCAicCBpeSIgIiA9IDIgKiIg InAgaXkgb3V0IgorK2dkYl90ZXN0ICJwIGl6IiAiID0gMyAqIiAicCBpeiBvdXQiCisrZ2RiX3Rl c3QgInAgaXhfeCIgIiA9IDExICoiICJwIGl4X3ggb3V0IgorK2dkYl90ZXN0ICJwIGl5X3kiICIg PSAyMiAqIiAicCBpeV95IG91dCIKKytnZGJfdGVzdCAicCBpel96IiAiID0gMzMgKiIgInAgaXpf eiBvdXQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInN0b3AtaGVy ZS1pbiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0b3AtaGVyZS1pbiIKKysKKytn ZGJfdGVzdCAid2hhdGlzIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4g Y3VycmVudCBjb250ZXh0LiIgIndoYXRpcyBmb28kc3VmZml4IGluIgorK2dkYl90ZXN0ICJwdHlw ZSBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4 dC4iICJwdHlwZSBmb28kc3VmZml4IGluIgorK2dkYl90ZXN0ICJwIGZvbyRzdWZmaXgiICJObyBz eW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgInAgZm9vJHN1ZmZpeCBp biIKKytnZGJfdGVzdCAid2hhdGlzIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZm aXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAid2hhdGlzIGZvX28kc3VmZml4IGluIgorK2dkYl90 ZXN0ICJwdHlwZSBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIgaW4gY3Vy cmVudCBjb250ZXh0LiIgInB0eXBlIGZvX28kc3VmZml4IGluIgorK2dkYl90ZXN0ICJwIGZvX28k c3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAi cCBmb19vJHN1ZmZpeCBpbiIKKysKKytnZGJfdGVzdCAiaW5mbyBsb2NhbHMiICJpeCA9IDExXHJc bml5MiA9IDIyXHJcbml6ID0gMzNcclxuaXhfeCA9IDFcclxuaXlfeSA9IDJcclxuaXpfejIgPSAz XHJcbml5ID0gNVxyXG5pel96ID0gNTUiICJpbmZvIGxvY2FscyBpbiIKKytnZGJfdGVzdCAiaW5m byBjb21tb24iICJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb19vJzpcclxuaXggPSAx MVxyXG5peTIgPSAyMlxyXG5peiA9IDMzXHJcblxyXG5Db250ZW50cyBvZiBGNzcgQ09NTU9OIGJs b2NrICdmb28nOlxyXG5peF94ID0gMVxyXG5peV95ID0gMlxyXG5pel96MiA9IDMiICJpbmZvIGNv bW1vbiBpbiIKKysKKytnZGJfdGVzdCAicHR5cGUgaXgiICJ0eXBlID0gJGludDQiICJwdHlwZSBp eCBpbiIKKytnZGJfdGVzdCAicHR5cGUgaXkyIiAidHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5MiBp biIKKytnZGJfdGVzdCAicHR5cGUgaXoiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXogaW4iCisr Z2RiX3Rlc3QgInB0eXBlIGl4X3giICJ0eXBlID0gJGludDQiICJwdHlwZSBpeF94IGluIgorK2dk Yl90ZXN0ICJwdHlwZSBpeV95IiAidHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5X3kgaW4iCisrZ2Ri X3Rlc3QgInB0eXBlIGl6X3oyIiAidHlwZSA9ICRyZWFsOCIgInB0eXBlIGl6X3oyIGluIgorKwor K2dkYl90ZXN0ICJwIGl4IiAiID0gMTEgKiIgInAgaXggaW4iCisrZ2RiX3Rlc3QgInAgaXkyIiAi ID0gMjIgKiIgInAgaXkyIGluIgorK2dkYl90ZXN0ICJwIGl6IiAiID0gMzMgKiIgInAgaXogaW4i CisrZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDEgKiIgInAgaXhfeCBpbiIKKytnZGJfdGVzdCAicCBp eV95IiAiID0gMiAqIiAicCBpeV95IGluIgorK2dkYl90ZXN0ICJwIGl6X3oyIiAiID0gMyAqIiAi cCBpel96MiBpbiIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vY29tbW9uLWJsb2NrLmY5MAorQEAgLTAsMCArMSw2NyBAQAorKyEgQ29weXJpZ2h0IDIwMDgg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor KyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291 cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIg dGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgor KworK3N1YnJvdXRpbmUgaW4KKysKKysgICBJTlRFR0VSKjQgICAgICAgICAgICBpeAorKyAgIFJF QUwqNCAgICAgICAgICAgICAgIGl5MgorKyAgIFJFQUwqOCAgICAgICAgICAgICAgIGl6CisrCisr ICAgSU5URUdFUio0ICAgICAgICAgICAgaXhfeAorKyAgIFJFQUwqNCAgICAgICAgICAgICAgIGl5 X3kKKysgICBSRUFMKjggICAgICAgICAgICAgICBpel96MgorKworKyAgIGNvbW1vbiAvZm9fby9p eCxpeTIsaXoKKysgICBjb21tb24gL2Zvby9peF94LGl5X3ksaXpfejIKKysKKysgICBpeSA9IDUK KysgICBpel96ID0gNTUKKysKKysgICBpZiAoaXggLm5lLiAxMSAub3IuIGl5MiAubmUuIDIyLjAg Lm9yLiBpeiAubmUuIDMzLjApIGNhbGwgYWJvcnQKKysgICBpZiAoaXhfeCAubmUuIDEgLm9yLiBp eV95IC5uZS4gMi4wIC5vci4gaXpfejIgLm5lLiAzLjApIGNhbGwgYWJvcnQKKysKKysgICBpeCA9 IDAJCQkJCSEgc3RvcC1oZXJlLWluCisrCisrZW5kIHN1YnJvdXRpbmUgaW4KKysKKytwcm9ncmFt IGNvbW1vbl90ZXN0CisrCisrICAgSU5URUdFUio0ICAgICAgICAgICAgaXgKKysgICBSRUFMKjQg ICAgICAgICAgICAgICBpeQorKyAgIFJFQUwqOCAgICAgICAgICAgICAgIGl6CisrCisrICAgSU5U RUdFUio0ICAgICAgICAgICAgaXhfeAorKyAgIFJFQUwqNCAgICAgICAgICAgICAgIGl5X3kKKysg ICBSRUFMKjggICAgICAgICAgICAgICBpel96CisrCisrICAgY29tbW9uIC9mb28vaXgsaXksaXoK KysgICBjb21tb24gL2ZvX28vaXhfeCxpeV95LGl6X3oKKysKKysgICBpeCA9IDEKKysgICBpeSA9 IDIuMAorKyAgIGl6ID0gMy4wCisrCisrICAgaXhfeCA9IDExCisrICAgaXlfeSA9IDIyLjAKKysg ICBpel96ID0gMzMuMAorKworKyAgIGNhbGwgaW4JCQkJCSEgc3RvcC1oZXJlLW91dAorKworK2Vu ZCBwcm9ncmFtIGNvbW1vbl90ZXN0CgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tbG9naWNhbDgu cGF0Y2ggYi9nZGItZm9ydHJhbi1sb2dpY2FsOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hYWRiNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWZvcnRyYW4tbG9n aWNhbDgucGF0Y2gKQEAgLTAsMCArMSwxNTMgQEAKKy0tLSBhL2dkYi9mLWV4cC55CisrKysgYi9n ZGIvZi1leHAueQorQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX251bWJlciAo Y2hhciAqLCBpbnQsIGludCwgWVlTVFlQRSAqKTsKKyAvKiBTcGVjaWFsIHR5cGUgY2FzZXMsIHB1 dCBpbiB0byBhbGxvdyB0aGUgcGFyc2VyIHRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudAorICAgIGxl Z2FsIGJhc2V0eXBlcy4gICovCisgJXRva2VuIElOVF9LRVlXT1JEIElOVF9TMl9LRVlXT1JEIExP R0lDQUxfUzFfS0VZV09SRCBMT0dJQ0FMX1MyX0tFWVdPUkQgCisrJXRva2VuIExPR0lDQUxfUzhf S0VZV09SRCAKKyAldG9rZW4gTE9HSUNBTF9LRVlXT1JEIFJFQUxfS0VZV09SRCBSRUFMX1M4X0tF WVdPUkQgUkVBTF9TMTZfS0VZV09SRCAKKyAldG9rZW4gQ09NUExFWF9TOF9LRVlXT1JEIENPTVBM RVhfUzE2X0tFWVdPUkQgQ09NUExFWF9TMzJfS0VZV09SRCAKKyAldG9rZW4gQk9PTF9BTkQgQk9P TF9PUiBCT09MX05PVCAgIAorQEAgLTYwNiw2ICs2MDcsOCBAQCB0eXBlYmFzZSAgLyogSW1wbGVt ZW50cyAoYXBwcm94aW1hdGVseSk6ICh0eXBlLXF1YWxpZmllcikqIHR5cGUtc3BlY2lmaWVyICov CisgCQkJeyAkJCA9IHBhcnNlX2ZfdHlwZS0+YnVpbHRpbl9pbnRlZ2VyX3MyOyB9CisgCXwJQ0hB UkFDVEVSIAorIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fY2hhcmFjdGVyOyB9Cisr CXwJTE9HSUNBTF9TOF9LRVlXT1JECisrCQkJeyAkJCA9IHBhcnNlX2ZfdHlwZS0+YnVpbHRpbl9s b2dpY2FsX3M4O30KKyAJfAlMT0dJQ0FMX0tFWVdPUkQgCisgCQkJeyAkJCA9IHBhcnNlX2ZfdHlw ZS0+YnVpbHRpbl9sb2dpY2FsOyB9CisgCXwJTE9HSUNBTF9TMl9LRVlXT1JECitAQCAtODU4LDYg Kzg2MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdG9rZW4gZjc3X2tleXdvcmRzW10gPQorICAg eyAiaW50ZWdlcl8yIiwgSU5UX1MyX0tFWVdPUkQsIEJJTk9QX0VORCB9LAorICAgeyAibG9naWNh bF8xIiwgTE9HSUNBTF9TMV9LRVlXT1JELCBCSU5PUF9FTkQgfSwKKyAgIHsgImxvZ2ljYWxfMiIs IExPR0lDQUxfUzJfS0VZV09SRCwgQklOT1BfRU5EIH0sCisrICB7ICJsb2dpY2FsXzgiLCBMT0dJ Q0FMX1M4X0tFWVdPUkQsIEJJTk9QX0VORCB9LAorICAgeyAiY29tcGxleF84IiwgQ09NUExFWF9T OF9LRVlXT1JELCBCSU5PUF9FTkQgfSwKKyAgIHsgImludGVnZXIiLCBJTlRfS0VZV09SRCwgQklO T1BfRU5EIH0sCisgICB7ICJsb2dpY2FsIiwgTE9HSUNBTF9LRVlXT1JELCBCSU5PUF9FTkQgfSwK Ky0tLSBhL2dkYi9mLWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAtMjU5LDYgKzI0NSw3 IEBAIGVudW0gZl9wcmltaXRpdmVfdHlwZXMgeworICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2Fs LAorICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3MxLAorICAgZl9wcmltaXRpdmVfdHlwZV9s b2dpY2FsX3MyLAorKyAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3M4LAorICAgZl9wcmltaXRp dmVfdHlwZV9pbnRlZ2VyLAorICAgZl9wcmltaXRpdmVfdHlwZV9pbnRlZ2VyX3MyLAorICAgZl9w cmltaXRpdmVfdHlwZV9yZWFsLAorQEAgLTI4OSw2ICsyNzYsOCBAQCBmX2xhbmd1YWdlX2FyY2hf aW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgID0gYnVpbHRpbi0+YnVpbHRpbl9s b2dpY2FsX3MxOworICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJpbWl0aXZlX3R5 cGVfbG9naWNhbF9zMl0KKyAgICAgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxfczI7CisrICBs YWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3M4XQor KyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zODsKKyAgIGxhaS0+cHJpbWl0aXZlX3R5 cGVfdmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX3JlYWxdCisgICAgID0gYnVpbHRpbi0+YnVpbHRp bl9yZWFsOworICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJpbWl0aXZlX3R5cGVf cmVhbF9zOF0KK0BAIC0zNzIsNiArMzYxLDEwIEBAIGJ1aWxkX2ZvcnRyYW5fdHlwZXMgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQorICAgICA9IGFyY2hfYm9vbGVhbl90eXBlIChnZGJhcmNoLCBn ZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCksIDEsCisgCQkJICJsb2dpY2FsKjIiKTsKKyAKKysg IGJ1aWx0aW5fZl90eXBlLT5idWlsdGluX2xvZ2ljYWxfczgKKysgICAgPSBhcmNoX2Jvb2xlYW5f dHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9sb25nX2xvbmdfYml0IChnZGJhcmNoKSwgMSwKKysJCQkg ImxvZ2ljYWwqOCIpOworKworICAgYnVpbHRpbl9mX3R5cGUtPmJ1aWx0aW5faW50ZWdlcgorICAg ICA9IGFyY2hfaW50ZWdlcl90eXBlIChnZGJhcmNoLCBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gp LCAwLAorIAkJCSAiaW50ZWdlciIpOworLS0tIGEvZ2RiL2YtbGFuZy5oCisrKysgYi9nZGIvZi1s YW5nLmgKK0BAIC0xMTMsNiArODAsNyBAQCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKKyAgIHN0cnVj dCB0eXBlICpidWlsdGluX2xvZ2ljYWw7CisgICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2Fs X3MxOworICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fbG9naWNhbF9zMjsKKysgIHN0cnVjdCB0eXBl ICpidWlsdGluX2xvZ2ljYWxfczg7CisgICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9yZWFsOworICAg c3RydWN0IHR5cGUgKmJ1aWx0aW5fcmVhbF9zODsKKyAgIHN0cnVjdCB0eXBlICpidWlsdGluX3Jl YWxfczE2OworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9s b2dpY2FsLmV4cAorQEAgLTAsMCArMSw0NCBAQAorKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMg CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAKKysKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc2V0IHRlc3RmaWxlICJsb2dp Y2FsIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3 NyBxdWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2ZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytn ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9 CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1 biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInN0b3AtaGVyZSJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInN0b3AtaGVyZSIKKytnZGJfdGVzdCAicCBsIiAiID0gXFwuVFJVRVxcLiIK KytnZGJfdGVzdCAicCBsMSIgIiA9IFxcLlRSVUVcXC4iCisrZ2RiX3Rlc3QgInAgbDIiICIgPSBc XC5UUlVFXFwuIgorK2dkYl90ZXN0ICJwIGw0IiAiID0gXFwuVFJVRVxcLiIKKytnZGJfdGVzdCAi cCBsOCIgIiA9IFxcLlRSVUVcXC4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9sb2dpY2FsLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbG9naWNhbC5mOTAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40MjI5MzA0CistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xvZ2ljYWwuZjkwCitAQCAtMCww ICsxLDMzIEBACisrISBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKyEKKysh IEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHluYW1pYy5leHAuCisr ISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4uCisrISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrcHJvZ3JhbSB0ZXN0CisrICBsb2dpY2Fs IDo6IGwKKysgIGxvZ2ljYWwgKGtpbmQ9MSkgOjogbDEKKysgIGxvZ2ljYWwgKGtpbmQ9MikgOjog bDIKKysgIGxvZ2ljYWwgKGtpbmQ9NCkgOjogbDQKKysgIGxvZ2ljYWwgKGtpbmQ9OCkgOjogbDgK KysgIGwgPSAuVFJVRS4KKysgIGwxID0gLlRSVUUuCisrICBsMiA9IC5UUlVFLgorKyAgbDQgPSAu VFJVRS4KKysgIGw4ID0gLlRSVUUuCisrICBsID0gLkZBTFNFLgkJCQkJISBzdG9wLWhlcmUKKytl bmQKCmRpZmYgLS1naXQgYS9nZGItbGluZW5vLW1ha2V1cC10ZXN0LnBhdGNoIGIvZ2RiLWxpbmVu by1tYWtldXAtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w NzM2NjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWxpbmVuby1tYWtldXAtdGVzdC5wYXRjaApA QCAtMCwwICsxLDE1MSBAQAorTmV3IHRlc3RjYXNlIGZvcjoKK2h0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NDY2MjIyCisJKGZvciB0aGUgZmlyc3QgLyBjdXN0b21l ciByZWNvbW1lbmRlZCBmaXgpCithbmQgdGhlIHVwc3RyZWFtIGZpeDoKK2h0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA2LTExL21zZzAwMjUzLmh0bWwKKwlbcmZjXSBEbyBu b3QgbWFrZSB1cCBsaW5lIGluZm9ybWF0aW9uCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDA2LTExL21zZzAwMTI3Lmh0bWwKKworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYworQEAgLTAsMCArMSwyMSBAQAor Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisr ICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK3ZvaWQKKytmdW5jICh2 b2lkKQorK3sKKyt9CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2xpbmVuby1tYWtldXAuYworQEAgLTAsMCArMSwzNSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworKworKy8qIERXX0FUX2xvd19wYy1EV19BVF9oaWdoX3BjIHNob3Vs ZCBjb3ZlciB0aGUgZnVuY3Rpb24gd2l0aG91dCBsaW5lIG51bWJlcgorKyAgIGluZm9ybWF0aW9u ICguZGVidWdfbGluZSkgc28gd2UgY2Fubm90IHVzZSBhbiBleHRlcm5hbCBvYmplY3QgZmlsZS4K KysgICAKKysgICBJdCBtdXN0IG5vdCBiZSBqdXN0IGEgbGFiZWwgYXMgaXQgd291bGQgYWxpYXMg b24gdGhlIG5leHQgZnVuY3Rpb24gZXZlbiBmb3IKKysgICBjb3JyZWN0IEdEQi4gIFRoZXJlZm9y ZSBzb21lIHN0dWIgZGF0YSBtdXN0IGJlIHBsYWNlZCB0aGVyZS4KKysgICAKKysgICBXZSBuZWVk IHRvIHByb3ZpZGUgYSByZWFsIHN0dWIgZnVuY3Rpb24gYm9keSBhcyBhdCBsZWFzdCBzMzkwCisr ICAgKHMzOTBfYW5hbHl6ZV9wcm9sb2d1ZSkgd291bGQgc2tpcCB0aGUgd2hvbGUgYm9keSB0aWxs IHJlYWNoaW5nIGBtYWluJy4gICovCisrCisrZXh0ZXJuIHZvaWQgZnVuYyAodm9pZCk7CisrYXNt ICgiZnVuYzogLmluY2JpbiBcImdkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVuYy5iaW5cIiIpOwor KworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVuYyAoKTsKKysgIHJldHVybiAwOworK30K Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1 cC5leHAKK0BAIC0wLDAgKzEsNzggQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytz ZXQgdGVzdGZpbGUgImxpbmVuby1tYWtldXAiCisrc2V0IHNyY2Z1bmNmaWxlICR7dGVzdGZpbGV9 LWZ1bmMuYworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgb2JqZnVuY2ZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLm8KKytzZXQgYmluZnVuY2ZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLmJpbgorK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2Z1bmNmaWxlfSIgIiR7b2JqZnVuY2ZpbGV9IiBvYmplY3Qge31d ICE9ICIiIH0geworKyAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBp bGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBm YWlsLiIKKyt9CisrCisrc2V0IG9iamNvcHkgW2NhdGNoICJleGVjIG9iamNvcHkgLU8gYmluYXJ5 IC0tb25seS1zZWN0aW9uIC50ZXh0ICR7b2JqZnVuY2ZpbGV9ICR7YmluZnVuY2ZpbGV9IiBvdXRw dXRdCisrdmVyYm9zZSAtbG9nICJvYmpjb3B5PSRvYmpjb3B5OiAkb3V0cHV0IgorK2lmIHsgJG9i amNvcHkgIT0gMCB9IHsKKysgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBj b21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2Fs bHkgZmFpbC4iCisrfQorK3NldCBiaW5mdW5jZmlsZXNpemUgW2ZpbGUgc2l6ZSAkYmluZnVuY2Zp bGVdCisrdmVyYm9zZSAtbG9nICJmaWxlIHNpemUgJGJpbmZ1bmNmaWxlID0gJGJpbmZ1bmNmaWxl c2l6ZSIKKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgZ2Ri X3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRl c3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCisrfQorKworK2dkYl9l eGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisr Z2RiX2xvYWQgJHtiaW5maWxlfQorKworK3NldCBiX2FkZHIgIiIKKytzZXQgdGVzdCAiYnJlYWsg ZnVuYyIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiQnJlYWtw b2ludCBcWzAtOVxdKyBhdCAoMHhcWzAtOWEtZlxdKylcclxuJGdkYl9wcm9tcHQgJCIgeworKwlz ZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwlwYXNzICR0ZXN0CisrICAgIH0KKysg ICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rIGF0ICgweFxbMC05YS1mXF0rKTogLipcclxuJGdk Yl9wcm9tcHQgJCIgeworKwlzZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwlmYWls ICR0ZXN0CisrICAgIH0KKyt9CisrdmVyYm9zZSAtbG9nICJiX2FkZHI9PCRiX2FkZHI+IgorKwor K3NldCBwX2FkZHIgIiIKKytzZXQgdGVzdCAicHJpbnQgZnVuYyIKKytnZGJfdGVzdF9tdWx0aXBs ZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXFwkXFswLTlcXSsgPSB7PHRleHQgdmFyaWFibGUs IG5vIGRlYnVnIGluZm8+fSAoMHhcWzAtOWEtZlxdKykgPGZ1bmM+XHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJc2V0IHBfYWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKKysJcGFzcyAkdGVzdAorKyAg ICB9CisrfQorK3ZlcmJvc2UgLWxvZyAicF9hZGRyPTwkcF9hZGRyPiIKKysKKytzZXQgdGVzdCAi YnJlYWsgYWRkcmVzcyBiZWxvbmdzIHRvIGZ1bmMiCisraWYgeyRiX2FkZHIgPT0gJHBfYWRkcn0g eworKyAgICBwYXNzICIkdGVzdCAoZXhhY3QgbWF0Y2gpIgorK30gZWxzZSB7CisrICAgIHNldCBz a2lwIFtleHByICRiX2FkZHIgLSAkcF9hZGRyXQorKyAgICBpZiB7JHNraXAgPiAwICYmICRza2lw IDwgJGJpbmZ1bmNmaWxlc2l6ZX0geworKwlwYXNzICIkdGVzdCAocHJvbG9ndWUgc2tpcCBieSAk c2tpcCBieXRlcykiCisrICAgIH0gZWxzZSB7CisrCWZhaWwgJHRlc3QKKysgICAgfQorK30KCmRp ZmYgLS1naXQgYS9nZGItb3JwaGFucmlwcGVyLmMgYi9nZGItb3JwaGFucmlwcGVyLmMKaW5kZXgg NDg5M2U4Zi4uYjI4OTQ3NyAxMDA2NDQKLS0tIGEvZ2RiLW9ycGhhbnJpcHBlci5jCisrKyBiL2dk Yi1vcnBoYW5yaXBwZXIuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgog I2luY2x1ZGUgPHB0eS5oPgogI2luY2x1ZGUgPHBvbGwuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o PgogCiAjZGVmaW5lIExFTkdUSCh4KSAoc2l6ZW9mICh4KSAvIHNpemVvZiAoKih4KSkpCiAKQEAg LTg3LDYgKzg4LDggQEAgc3RhdGljIGludCByZWFkX291dCAoaW50IGFtYXN0ZXIpCiAgIC8qIFdl aXJkIGJ1dCBhdCBsZWFzdCBhZnRlciBQT0xMSFVQIHdlIGdldCBFSU8gaW5zdGVhZCBvZiBqdXN0 IEVPRi4gICovCiAgIGlmIChidWZfZ290ID09IC0xICYmIGVycm5vID09IEVJTykKICAgICByZXR1 cm4gMDsKKyAgaWYgKGJ1Zl9nb3QgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlOKQorICAgIHJldHVy biAwOwogICBpZiAoYnVmX2dvdCA8IDApCiAgICAgewogICAgICAgcGVycm9yICgicmVhZCAoYW1h c3RlcikiKTsKCmRpZmYgLS1naXQgYS9nZGItcHBjLWh3LXdhdGNocG9pbnQtdHdpY2UucGF0Y2gg Yi9nZGItcHBjLWh3LXdhdGNocG9pbnQtdHdpY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGUzNjMxNTguLjAwMDAwMDAKLS0tIGEvZ2RiLXBwYy1ody13YXRjaHBvaW50LXR3 aWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcGNjIHJlZ3Jlc3Npb24g ZnJvbToKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA4LTEyL21zZzAw MTQzLmh0bWwKLQotZ2RiLwotMjAwOS0xMi0yMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JKiBicmVha3BvaW50LmMgKHVwZGF0ZV93YXRjaHBvaW50KTog U2V0IEItPlRZUEUgdG8gYnBfd2F0Y2hwb2ludCBiZWZvcmUKLQljYWxsaW5nIGh3X3dhdGNocG9p bnRfdXNlZF9jb3VudC4KLQotLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwotKysrIGIvZ2RiL2JyZWFr cG9pbnQuYwotQEAgLTExNTIsNiArMTE1Miw5IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3Qg YnJlYWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCi0gCSAgewotIAkgICAgaW50IGksIG1lbV9jbnQs IG90aGVyX3R5cGVfdXNlZDsKLSAKLSsJICAgIC8qIERvIG5vdCBjb3VudCB3aXRoIEIgdHdpY2Ug YmVsb3cuICAqLwotKwkgICAgYi0+dHlwZSA9IGJwX3dhdGNocG9pbnQ7Ci0rCi0gCSAgICBpID0g aHdfd2F0Y2hwb2ludF91c2VkX2NvdW50IChicF9oYXJkd2FyZV93YXRjaHBvaW50LAotIAkJCQkJ ICAmb3RoZXJfdHlwZV91c2VkKTsKLSAJICAgIG1lbV9jbnQgPSBjYW5fdXNlX2hhcmR3YXJlX3dh dGNocG9pbnQgKHZhbF9jaGFpbik7CgpkaWZmIC0tZ2l0IGEvZ2RiLXBwYy1wb3dlcjctdGVzdC5w YXRjaCBiL2dkYi1wcGMtcG93ZXI3LXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uODc2YzEzNAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1wcGMtcG93ZXI3LXRl c3QucGF0Y2gKQEAgLTAsMCArMSwyODggQEAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcuZXhwCitAQCAtMCwwICsxLDE3NSBAQAorKyMg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisrCisrIyBUZXN0IFBvd2VyUEMg UG93ZXI3IGluc3RydWN0aW9ucyBkaXNhc3NlbWJseS4KKysKKytpZiB7IVtpc3RhcmdldCAicG93 ZXJwYyotKi0qIl19IHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBQb3dlclBDIFBvd2Vy NyBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkuIgorKyAgICByZXR1cm4KKyt9CisrCisrc2V0IHRl c3RmaWxlICJwb3dlcnBjLXBvd2VyNyIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5zCisrc2V0 IG9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5vCisrCisraWYgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7b2JqZmlsZX0iIG9i amVjdCB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIlBvd2VyUEMgUG93ZXI3IGlu c3RydWN0aW9ucyBkaXNhc3NlbWJseSIKKysgICAgcmV0dXJuIC0xCisrfQorKworKworK2dkYl9l eGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisr Z2RiX2xvYWQgJHtvYmpmaWxlfQorKyAKKysKKysjIERpc2Fzc2VtYmxlIHRoZSBmdW5jdGlvbi4K KysKKytzZXQgdGVzdCAiZGlzYXNzIGZ1bmMiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRl c3QgeworKyAgICAtcmUgIlxyXG5EdW1wIG9mIGFzc2VtYmxlciBjb2RlIGZvciBmdW5jdGlvbiBm dW5jOihcclxuLipcclxuKUVuZCBvZiBhc3NlbWJsZXIgZHVtcC5cclxuJGdkYl9wcm9tcHQgJCIg eworKwlzZXQgZnVuYyAkZXhwZWN0X291dCgxLHN0cmluZykKKysJcGFzcyAkdGVzdAorKyAgICB9 CisrfQorKworK3Byb2MgaW5zdHJfdG9fcGF0dCB7b2Zmc2V0IGluc3RyfSB7CisrICAgICMgMHgw MDAwMDAwMDAwMDAwMDE4IDxmdW5jKzI0PjoJc3R4dmQyeCB2czQzLHI0LHI1CisrICAgIHJldHVy biAiLipcclxuW3N0cmluZyBtYXAgezB4IDB4MCp9ICRvZmZzZXRdIDxmdW5jXFwrP1xbMC05XF0q PjpcWyBcdFxdKltzdHJpbmcgbWFwIFtsaXN0IHsgfSAiXFsgXHRcXSsiIC4ge1wufV0gJGluc3Ry XVxbIFx0XF0qXHJcbi4qIgorK30KKysKKysjIEtGQUlMIHN0cmluZ3Mgd291bGQgbm90IGV4aXN0 IGlmIC1NYW55IHdvdWxkIHByaW50IHRoZSBzYW1lIGFzIC1NcG93ZXI3LgorKyMgVGhhdCBtZWFu cyB0aGUgcG93ZXI3IGZvcm0gc2hvdWxkIGJlIHRoZSBwcmVmZXJyZWQgb25lLgorKyMgaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMDMvdGhyZWFkcy5odG1sIzAwMDIw CisrCisrcHJvYyBmdW5jX2NoZWNrIHtvZmZzZXQgaW5zdHIge2tmYWlsICIifX0geworKyAgICBn bG9iYWwgZnVuYworKworKyAgICBzZXQgdGVzdCAiRm91bmQgJG9mZnNldDogJGluc3RyIgorKyAg ICBpZiBbcmVnZXhwIC1ub2Nhc2UgLWxpbmUgW2luc3RyX3RvX3BhdHQgJG9mZnNldCAkaW5zdHJd ICRmdW5jXSB7CisrCXBhc3MgJHRlc3QKKysgICAgfSBlbHNlaWYgeyRrZmFpbCAhPSAiIiAmJiBb cmVnZXhwIC1ub2Nhc2UgLWxpbmUgW2luc3RyX3RvX3BhdHQgJG9mZnNldCAka2ZhaWxdICRmdW5j XX0geworKwlrZmFpbCBnZGIvTk5OTiAkdGVzdAorKyAgICB9IGVsc2UgeworKwlmYWlsICR0ZXN0 CisrICAgIH0KKyt9CisrCisrZnVuY19jaGVjayAgIDB4MCAibHh2ZDJ4ICB2czMscjQscjUiCisr ZnVuY19jaGVjayAgIDB4NCAibHh2ZDJ1eCB2czMscjQscjUiCisrZnVuY19jaGVjayAgIDB4OCAi bHh2ZDJ4ICB2czQzLHI0LHI1IgorK2Z1bmNfY2hlY2sgICAweGMgImx4dmQydXggdnM0MyxyNCxy NSIKKytmdW5jX2NoZWNrICAweDEwICJzdHh2ZDJ4IHZzMyxyNCxyNSIKKytmdW5jX2NoZWNrICAw eDE0ICJzdHh2ZDJ1eCB2czMscjQscjUiCisrZnVuY19jaGVjayAgMHgxOCAic3R4dmQyeCB2czQz LHI0LHI1IgorK2Z1bmNfY2hlY2sgIDB4MWMgInN0eHZkMnV4IHZzNDMscjQscjUiCisrZnVuY19j aGVjayAgMHgyMCAieHhtcmdoZCB2czMsdnM0LHZzNSIKKytmdW5jX2NoZWNrICAweDI0ICJ4eG1y Z2hkIHZzNDMsdnM0NCx2czQ1IgorK2Z1bmNfY2hlY2sgIDB4MjggInh4bXJnbGQgdnMzLHZzNCx2 czUiCisrZnVuY19jaGVjayAgMHgyYyAieHhtcmdsZCB2czQzLHZzNDQsdnM0NSIKKytmdW5jX2No ZWNrICAweDMwICJ4eG1yZ2hkIHZzMyx2czQsdnM1IgorK2Z1bmNfY2hlY2sgIDB4MzQgInh4bXJn aGQgdnM0Myx2czQ0LHZzNDUiCisrZnVuY19jaGVjayAgMHgzOCAieHhtcmdsZCB2czMsdnM0LHZz NSIKKytmdW5jX2NoZWNrICAweDNjICJ4eG1yZ2xkIHZzNDMsdnM0NCx2czQ1IgorK2Z1bmNfY2hl Y2sgIDB4NDAgInh4cGVybWRpIHZzMyx2czQsdnM1LDEiCisrZnVuY19jaGVjayAgMHg0NCAieHhw ZXJtZGkgdnM0Myx2czQ0LHZzNDUsMSIKKytmdW5jX2NoZWNrICAweDQ4ICJ4eHBlcm1kaSB2czMs dnM0LHZzNSwyIgorK2Z1bmNfY2hlY2sgIDB4NGMgInh4cGVybWRpIHZzNDMsdnM0NCx2czQ1LDIi CisrZnVuY19jaGVjayAgMHg1MCAieHZtb3ZkcCB2czMsdnM0IgorK2Z1bmNfY2hlY2sgIDB4NTQg Inh2bW92ZHAgdnM0Myx2czQ0IgorK2Z1bmNfY2hlY2sgIDB4NTggInh2bW92ZHAgdnMzLHZzNCIK KytmdW5jX2NoZWNrICAweDVjICJ4dm1vdmRwIHZzNDMsdnM0NCIKKytmdW5jX2NoZWNrICAweDYw ICJ4dmNwc2duZHAgdnMzLHZzNCx2czUiCisrZnVuY19jaGVjayAgMHg2NCAieHZjcHNnbmRwIHZz NDMsdnM0NCx2czQ1IgorK2Z1bmNfY2hlY2sgIDB4NjggIndhaXQiCisrZnVuY19jaGVjayAgMHg2 YyAid2FpdCIKKytmdW5jX2NoZWNrICAweDcwICJ3YWl0cnN2IgorK2Z1bmNfY2hlY2sgIDB4NzQg IndhaXRyc3YiCisrZnVuY19jaGVjayAgMHg3OCAid2FpdGltcGwiCisrZnVuY19jaGVjayAgMHg3 YyAid2FpdGltcGwiCisrZnVuY19jaGVjayAgMHg4MCAiZG96ZSIKKytmdW5jX2NoZWNrICAweDg0 ICJuYXAiCisrZnVuY19jaGVjayAgMHg4OCAic2xlZXAiCisrZnVuY19jaGVjayAgMHg4YyAicnZ3 aW5rbGUiCisrZnVuY19jaGVjayAgMHg5MCAicHJ0eXcgICByMyxyNCIKKytmdW5jX2NoZWNrICAw eDk0ICJwcnR5ZCAgIHIxMyxyMTQiCisrZnVuY19jaGVjayAgMHg5OCAibWZjZmFyICByMTAiICAg ICAgICAgICAibWZzcHIgICByMTAsMjgiCisrZnVuY19jaGVjayAgMHg5YyAibXRjZmFyICByMTEi ICAgICAgICAgICAibXRzcHIgICAyOCxyMTEiCisrZnVuY19jaGVjayAgMHhhMCAiY21wYiAgICBy MyxyNCxyNSIKKytmdW5jX2NoZWNrICAweGE0ICJsd3pjaXggIHIxMCxyMTEscjEyIgorK2Z1bmNf Y2hlY2sgIDB4YTggImRhZGQgICAgZjE2LGYxNyxmMTgiCisrZnVuY19jaGVjayAgMHhhYyAiZGFk ZHEgICBmMjAsZjIyLGYyNCIKKytmdW5jX2NoZWNrICAweGIwICJkc3MgICAgIDMiCisrZnVuY19j aGVjayAgMHhiNCAiZHNzYWxsIgorK2Z1bmNfY2hlY2sgIDB4YjggImRzdCAgICAgcjUscjQsMSIK KytmdW5jX2NoZWNrICAweGJjICJkc3R0ICAgIHI4LHI3LDAiCisrZnVuY19jaGVjayAgMHhjMCAi ZHN0c3QgICByNSxyNiwzIgorK2Z1bmNfY2hlY2sgIDB4YzQgImRzdHN0dCAgcjQscjUsMiIKKytm dW5jX2NoZWNrICAweGM4ICJkaXZ3ZSAgIHIxMCxyMTEscjEyIgorK2Z1bmNfY2hlY2sgIDB4Y2Mg ImRpdndlLiAgcjExLHIxMixyMTMiCisrZnVuY19jaGVjayAgMHhkMCAiZGl2d2VvICByMTIscjEz LHIxNCIKKytmdW5jX2NoZWNrICAweGQ0ICJkaXZ3ZW8uIHIxMyxyMTQscjE1IgorK2Z1bmNfY2hl Y2sgIDB4ZDggImRpdndldSAgcjEwLHIxMSxyMTIiCisrZnVuY19jaGVjayAgMHhkYyAiZGl2d2V1 LiByMTEscjEyLHIxMyIKKytmdW5jX2NoZWNrICAweGUwICJkaXZ3ZXVvIHIxMixyMTMscjE0Igor K2Z1bmNfY2hlY2sgIDB4ZTQgImRpdndldW8uIHIxMyxyMTQscjE1IgorK2Z1bmNfY2hlY2sgIDB4 ZTggImJwZXJtZCAgcjcscjE3LHIyNyIKKytmdW5jX2NoZWNrICAweGVjICJwb3BjbnR3IHIxMCxy MjAiCisrZnVuY19jaGVjayAgMHhmMCAicG9wY250ZCByMTAscjIwIgorK2Z1bmNfY2hlY2sgIDB4 ZjQgImxkYnJ4ICAgcjIwLHIyMSxyMjIiCisrZnVuY19jaGVjayAgMHhmOCAic3RkYnJ4ICByMjAs cjIxLHIyMiIKKytmdW5jX2NoZWNrICAweGZjICJsZml3enggIGYxMCwwLHIxMCIKKytmdW5jX2No ZWNrIDB4MTAwICJsZml3enggIGYxMCxyOSxyMTAiCisrZnVuY19jaGVjayAweDEwNCAiZmNmaWRz ICBmNCxmNSIKKytmdW5jX2NoZWNrIDB4MTA4ICJmY2ZpZHMuIGY0LGY1IgorK2Z1bmNfY2hlY2sg MHgxMGMgImZjZmlkdXMgZjQsZjUiCisrZnVuY19jaGVjayAweDExMCAiZmNmaWR1cy4gZjQsZjUi CisrZnVuY19jaGVjayAweDExNCAiZmN0aXd1ICBmNCxmNSIKKytmdW5jX2NoZWNrIDB4MTE4ICJm Y3Rpd3UuIGY0LGY1IgorK2Z1bmNfY2hlY2sgMHgxMWMgImZjdGl3dXogZjQsZjUiCisrZnVuY19j aGVjayAweDEyMCAiZmN0aXd1ei4gZjQsZjUiCisrZnVuY19jaGVjayAweDEyNCAiZmN0aWR1ICBm NCxmNSIKKytmdW5jX2NoZWNrIDB4MTI4ICJmY3RpZHUuIGY0LGY1IgorK2Z1bmNfY2hlY2sgMHgx MmMgImZjdGlkdXogZjQsZjUiCisrZnVuY19jaGVjayAweDEzMCAiZmN0aWR1ei4gZjQsZjUiCisr ZnVuY19jaGVjayAweDEzNCAiZmNmaWR1ICBmNCxmNSIKKytmdW5jX2NoZWNrIDB4MTM4ICJmY2Zp ZHUuIGY0LGY1IgorK2Z1bmNfY2hlY2sgMHgxM2MgImZ0ZGl2ICAgY3IwLGYxMCxmMTEiCisrZnVu Y19jaGVjayAweDE0MCAiZnRkaXYgICBjcjcsZjEwLGYxMSIKKytmdW5jX2NoZWNrIDB4MTQ0ICJm dHNxcnQgIGNyMCxmMTAiCisrZnVuY19jaGVjayAweDE0OCAiZnRzcXJ0ICBjcjcsZjEwIgorK2Z1 bmNfY2hlY2sgMHgxNGMgImRjYnR0ICAgcjgscjkiICAgICAgICAgImRjYnQgICAgMTYscjgscjki CisrZnVuY19jaGVjayAweDE1MCAiZGNidHN0dCByOCxyOSIgICAgICAgICAiZGNidHN0ICAxNixy OCxyOSIKKytmdW5jX2NoZWNrIDB4MTU0ICJkY2ZmaXggIGYxMCxmMTIiCisrZnVuY19jaGVjayAw eDE1OCAiZGNmZml4LiBmMjAsZjIyIgorK2Z1bmNfY2hlY2sgMHgxNWMgImxiYXJ4ICAgcjEwLHIx MSxyMTIiCisrZnVuY19jaGVjayAweDE2MCAibGJhcnggICByMTAscjExLHIxMiIKKytmdW5jX2No ZWNrIDB4MTY0ICJsYmFyeCAgIHIxMCxyMTEscjEyLDEiCisrZnVuY19jaGVjayAweDE2OCAibGhh cnggICByMjAscjIxLHIyMiIKKytmdW5jX2NoZWNrIDB4MTZjICJsaGFyeCAgIHIyMCxyMjEscjIy IgorK2Z1bmNfY2hlY2sgMHgxNzAgImxoYXJ4ICAgcjIwLHIyMSxyMjIsMSIKKytmdW5jX2NoZWNr IDB4MTc0ICJzdGJjeC4gIHIxMCxyMTEscjEyIgorK2Z1bmNfY2hlY2sgMHgxNzggInN0aGN4LiAg cjEwLHIxMSxyMTIiCisrZnVuY19jaGVjayAweDE3YyAiZnJlICAgICBmMTQsZjE1IgorK2Z1bmNf Y2hlY2sgMHgxODAgImZyZS4gICAgZjE0LGYxNSIKKytmdW5jX2NoZWNrIDB4MTg0ICJmcmVzICAg IGYxNCxmMTUiCisrZnVuY19jaGVjayAweDE4OCAiZnJlcy4gICBmMTQsZjE1IgorK2Z1bmNfY2hl Y2sgMHgxOGMgImZyc3FydGUgZjE0LGYxNSIKKytmdW5jX2NoZWNrIDB4MTkwICJmcnNxcnRlLiBm MTQsZjE1IgorK2Z1bmNfY2hlY2sgMHgxOTQgImZyc3FydGVzIGYxNCxmMTUiCisrZnVuY19jaGVj ayAweDE5OCAiZnJzcXJ0ZXMuIGYxNCxmMTUiCisrZnVuY19jaGVjayAweDE5YyAiaXNlbCAgICBy MixyMyxyNCwyOCIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv cG93ZXJwYy1wb3dlcjcucworQEAgLTAsMCArMSwxMDcgQEAKKysJLnRleHQKKysJLmdsb2JsCWZ1 bmMKKytmdW5jOgorKwkubG9uZwkweDdjNjQyZTk4CS8qICAgMDogbHh2ZDJ4ICB2czMscjQscjUg ICAgICAgICAqLworKwkubG9uZwkweDdjNjQyZWQ4CS8qICAgNDogbHh2ZDJ1eCB2czMscjQscjUg ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZTk5CS8qICAgODogbHh2ZDJ4ICB2czQzLHI0LHI1 ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZWQ5CS8qICAgYzogbHh2ZDJ1eCB2czQzLHI0LHI1 ICAgICAgICAqLworKwkubG9uZwkweDdjNjQyZjk4CS8qICAxMDogc3R4dmQyeCB2czMscjQscjUg ICAgICAgICAqLworKwkubG9uZwkweDdjNjQyZmQ4CS8qICAxNDogc3R4dmQydXggdnMzLHI0LHI1 ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZjk5CS8qICAxODogc3R4dmQyeCB2czQzLHI0LHI1 ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZmQ5CS8qICAxYzogc3R4dmQydXggdnM0MyxyNCxy NSAgICAgICAqLworKwkubG9uZwkweGYwNjQyODUwCS8qICAyMDogeHhtcmdoZCB2czMsdnM0LHZz NSAgICAgICAqLworKwkubG9uZwkweGYxNmM2ODU3CS8qICAyNDogeHhtcmdoZCB2czQzLHZzNDQs dnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyYjUwCS8qICAyODogeHhtcmdsZCB2czMsdnM0LHZz NSAgICAgICAqLworKwkubG9uZwkweGYxNmM2YjU3CS8qICAyYzogeHhtcmdsZCB2czQzLHZzNDQs dnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyODUwCS8qICAzMDogeHhtcmdoZCB2czMsdnM0LHZz NSAgICAgICAqLworKwkubG9uZwkweGYxNmM2ODU3CS8qICAzNDogeHhtcmdoZCB2czQzLHZzNDQs dnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyYjUwCS8qICAzODogeHhtcmdsZCB2czMsdnM0LHZz NSAgICAgICAqLworKwkubG9uZwkweGYxNmM2YjU3CS8qICAzYzogeHhtcmdsZCB2czQzLHZzNDQs dnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyOTUwCS8qICA0MDogeHhwZXJtZGkgdnMzLHZzNCx2 czUsMSAgICAqLworKwkubG9uZwkweGYxNmM2OTU3CS8qICA0NDogeHhwZXJtZGkgdnM0Myx2czQ0 LHZzNDUsMSAqLworKwkubG9uZwkweGYwNjQyYTUwCS8qICA0ODogeHhwZXJtZGkgdnMzLHZzNCx2 czUsMiAgICAqLworKwkubG9uZwkweGYxNmM2YTU3CS8qICA0YzogeHhwZXJtZGkgdnM0Myx2czQ0 LHZzNDUsMiAqLworKwkubG9uZwkweGYwNjQyNzgwCS8qICA1MDogeHZtb3ZkcCB2czMsdnM0ICAg ICAgICAgICAqLworKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1NDogeHZtb3ZkcCB2czQzLHZzNDQg ICAgICAgICAqLworKwkubG9uZwkweGYwNjQyNzgwCS8qICA1ODogeHZtb3ZkcCB2czMsdnM0ICAg ICAgICAgICAqLworKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1YzogeHZtb3ZkcCB2czQzLHZzNDQg ICAgICAgICAqLworKwkubG9uZwkweGYwNjQyZjgwCS8qICA2MDogeHZjcHNnbmRwIHZzMyx2czQs dnM1ICAgICAqLworKwkubG9uZwkweGYxNmM2Zjg3CS8qICA2NDogeHZjcHNnbmRwIHZzNDMsdnM0 NCx2czQ1ICAqLworKwkubG9uZwkweDdjMDAwMDdjCS8qICA2ODogd2FpdCAgICAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjMDAwMDdjCS8qICA2Yzogd2FpdCAgICAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjMjAwMDdjCS8qICA3MDogd2FpdHJzdiAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjMjAwMDdjCS8qICA3NDogd2FpdHJzdiAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjNDAwMDdjCS8qICA3ODogd2FpdGltcGwgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjNDAwMDdjCS8qICA3Yzogd2FpdGltcGwgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDRjMDAwMzI0CS8qICA4MDogZG96ZSAgICAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDRjMDAwMzY0CS8qICA4NDogbmFwICAgICAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDRjMDAwM2E0CS8qICA4ODogc2xlZXAgICAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDRjMDAwM2U0CS8qICA4YzogcnZ3aW5rbGUgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjODMwMTM0CS8qICA5MDogcHJ0eXcgICByMyxyNCAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdkY2QwMTc0CS8qICA5NDogcHJ0eWQgICByMTMscjE0ICAg ICAgICAgICAqLworKwkubG9uZwkweDdkNWMwMmE2CS8qICA5ODogbWZjZmFyICByMTAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdkN2MwM2E2CS8qICA5YzogbXRjZmFyICByMTEgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjODMyYmY4CS8qICBhMDogY21wYiAgICByMyxyNCxyNSAg ICAgICAgICAqLworKwkubG9uZwkweDdkNGI2NjJhCS8qICBhNDogbHd6Y2l4ICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweGVlMTE5MDA0CS8qICBhODogZGFkZCAgICBmMTYsZjE3LGYx OCAgICAgICAqLworKwkubG9uZwkweGZlOTZjMDA0CS8qICBhYzogZGFkZHEgICBmMjAsZjIyLGYy NCAgICAgICAqLworKwkubG9uZwkweDdjNjAwNjZjCS8qICBiMDogZHNzICAgICAzICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdlMDAwNjZjCS8qICBiNDogZHNzYWxsICAgICAgICAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdjMjUyMmFjCS8qICBiODogZHN0ICAgICByNSxyNCwxICAg ICAgICAgICAqLworKwkubG9uZwkweDdlMDgzYWFjCS8qICBiYzogZHN0dCAgICByOCxyNywwICAg ICAgICAgICAqLworKwkubG9uZwkweDdjNjUzMmVjCS8qICBjMDogZHN0c3QgICByNSxyNiwzICAg ICAgICAgICAqLworKwkubG9uZwkweDdlNDQyYWVjCS8qICBjNDogZHN0c3R0ICByNCxyNSwyICAg ICAgICAgICAqLworKwkubG9uZwkweDdkNGI2MzU2CS8qICBjODogZGl2d2UgICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweDdkNmM2YjU3CS8qICBjYzogZGl2d2UuICByMTEscjEyLHIx MyAgICAgICAqLworKwkubG9uZwkweDdkOGQ3NzU2CS8qICBkMDogZGl2d2VvICByMTIscjEzLHIx NCAgICAgICAqLworKwkubG9uZwkweDdkYWU3ZjU3CS8qICBkNDogZGl2d2VvLiByMTMscjE0LHIx NSAgICAgICAqLworKwkubG9uZwkweDdkNGI2MzE2CS8qICBkODogZGl2d2V1ICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweDdkNmM2YjE3CS8qICBkYzogZGl2d2V1LiByMTEscjEyLHIx MyAgICAgICAqLworKwkubG9uZwkweDdkOGQ3NzE2CS8qICBlMDogZGl2d2V1byByMTIscjEzLHIx NCAgICAgICAqLworKwkubG9uZwkweDdkYWU3ZjE3CS8qICBlNDogZGl2d2V1by4gcjEzLHIxNCxy MTUgICAgICAqLworKwkubG9uZwkweDdlMjdkOWY4CS8qICBlODogYnBlcm1kICByNyxyMTcscjI3 ICAgICAgICAqLworKwkubG9uZwkweDdlOGEwMmY0CS8qICBlYzogcG9wY250dyByMTAscjIwICAg ICAgICAgICAqLworKwkubG9uZwkweDdlOGEwM2Y0CS8qICBmMDogcG9wY250ZCByMTAscjIwICAg ICAgICAgICAqLworKwkubG9uZwkweDdlOTViNDI4CS8qICBmNDogbGRicnggICByMjAscjIxLHIy MiAgICAgICAqLworKwkubG9uZwkweDdlOTViNTI4CS8qICBmODogc3RkYnJ4ICByMjAscjIxLHIy MiAgICAgICAqLworKwkubG9uZwkweDdkNDA1NmVlCS8qICBmYzogbGZpd3p4ICBmMTAsMCxyMTAg ICAgICAgICAqLworKwkubG9uZwkweDdkNDk1NmVlCS8qIDEwMDogbGZpd3p4ICBmMTAscjkscjEw ICAgICAgICAqLworKwkubG9uZwkweGVjODAyZTljCS8qIDEwNDogZmNmaWRzICBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGVjODAyZTlkCS8qIDEwODogZmNmaWRzLiBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGVjODAyZjljCS8qIDEwYzogZmNmaWR1cyBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGVjODAyZjlkCS8qIDExMDogZmNmaWR1cy4gZjQsZjUgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFjCS8qIDExNDogZmN0aXd1ICBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFkCS8qIDExODogZmN0aXd1LiBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFlCS8qIDExYzogZmN0aXd1eiBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFmCS8qIDEyMDogZmN0aXd1ei4gZjQsZjUgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVjCS8qIDEyNDogZmN0aWR1ICBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVkCS8qIDEyODogZmN0aWR1LiBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVlCS8qIDEyYzogZmN0aWR1eiBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVmCS8qIDEzMDogZmN0aWR1ei4gZjQsZjUgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjljCS8qIDEzNDogZmNmaWR1ICBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjlkCS8qIDEzODogZmNmaWR1LiBmNCxmNSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGZjMGE1OTAwCS8qIDEzYzogZnRkaXYgICBjcjAsZjEwLGYx MSAgICAgICAqLworKwkubG9uZwkweGZmOGE1OTAwCS8qIDE0MDogZnRkaXYgICBjcjcsZjEwLGYx MSAgICAgICAqLworKwkubG9uZwkweGZjMDA1MTQwCS8qIDE0NDogZnRzcXJ0ICBjcjAsZjEwICAg ICAgICAgICAqLworKwkubG9uZwkweGZmODA1MTQwCS8qIDE0ODogZnRzcXJ0ICBjcjcsZjEwICAg ICAgICAgICAqLworKwkubG9uZwkweDdlMDg0YTJjCS8qIDE0YzogZGNidHQgICByOCxyOSAgICAg ICAgICAgICAqLworKwkubG9uZwkweDdlMDg0OWVjCS8qIDE1MDogZGNidHN0dCByOCxyOSAgICAg ICAgICAgICAqLworKwkubG9uZwkweGVkNDA2NjQ0CS8qIDE1NDogZGNmZml4ICBmMTAsZjEyICAg ICAgICAgICAqLworKwkubG9uZwkweGVlODBiNjQ1CS8qIDE1ODogZGNmZml4LiBmMjAsZjIyICAg ICAgICAgICAqLworKwkubG9uZwkweDdkNGI2MDY4CS8qIDE1YzogbGJhcnggICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweDdkNGI2MDY4CS8qIDE2MDogbGJhcnggICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweDdkNGI2MDY5CS8qIDE2NDogbGJhcnggICByMTAscjExLHIx MiwxICAgICAqLworKwkubG9uZwkweDdlOTViMGU4CS8qIDE2ODogbGhhcnggICByMjAscjIxLHIy MiAgICAgICAqLworKwkubG9uZwkweDdlOTViMGU4CS8qIDE2YzogbGhhcnggICByMjAscjIxLHIy MiAgICAgICAqLworKwkubG9uZwkweDdlOTViMGU5CS8qIDE3MDogbGhhcnggICByMjAscjIxLHIy MiwxICAgICAqLworKwkubG9uZwkweDdkNGI2NTZkCS8qIDE3NDogc3RiY3guICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweDdkNGI2NWFkCS8qIDE3ODogc3RoY3guICByMTAscjExLHIx MiAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODMwCS8qIDE3YzogZnJlICAgICBmMTQsZjE1ICAg ICAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODMxCS8qIDE4MDogZnJlLiAgICBmMTQsZjE1ICAg ICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODMwCS8qIDE4NDogZnJlcyAgICBmMTQsZjE1ICAg ICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODMxCS8qIDE4ODogZnJlcy4gICBmMTQsZjE1ICAg ICAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODM0CS8qIDE4YzogZnJzcXJ0ZSBmMTQsZjE1ICAg ICAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODM1CS8qIDE5MDogZnJzcXJ0ZS4gZjE0LGYxNSAg ICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODM0CS8qIDE5NDogZnJzcXJ0ZXMgZjE0LGYxNSAg ICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODM1CS8qIDE5ODogZnJzcXJ0ZXMuIGYxNCxmMTUg ICAgICAgICAqLworKwkubG9uZwkweDdjNDMyNzFlCS8qIDE5YzogaXNlbCAgICByMixyMyxyNCwy OCAgICAgICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoIGIv Z2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0Y2gKaW5kZXggMDg3M2JlYS4uMWI4YzhjNiAxMDA2 NDQKLS0tIGEvZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0Y2gKKysrIGIvZ2RiLXJlYWRsaW5l LTYuMC1zaWduYWwucGF0Y2gKQEAgLTY1LDkgKzY1LDExIEBAIGdkYi90ZXN0c3VpdGUvCiAJKHNl bmQgU0lHSU5UIHNpZ25hbCB0byBjaGlsZCBwcm9jZXNzKTogVXNlIGdkYl90ZXN0LgogCShiYWNr dHJhY2UgdGhyb3VnaCByZWFkbGluZSBoYW5kbGVyKTogTmV3LgogCi0tLS0gYS9nZGIvY29uZmln LmluCi0rKysgYi9nZGIvY29uZmlnLmluCi1AQCAtMzUxLDYgKzM1MSw5IEBACitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi9jb25maWcuaW4JMjAxMC0wMS0xNSAxMjo0ODowNC4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWcuaW4JMjAxMC0wMS0x NSAxMjo0ODo0MC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNTksNiArMzU5LDkgQEAKICAvKiBEZWZp bmUgaWYgUHl0aG9uIGludGVycHJldGVyIGlzIGJlaW5nIGxpbmtlZCBpbi4gKi8KICAjdW5kZWYg SEFWRV9QWVRIT04KICAKQEAgLTc3LDkgKzc5LDExIEBAIGdkYi90ZXN0c3VpdGUvCiAgLyogRGVm aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCiAgI3VuZGVm IEhBVkVfUkVBTFBBVEgKICAKLS0tLSBhL2dkYi9jb25maWd1cmUuYWMKLSsrKyBiL2dkYi9jb25m aWd1cmUuYWMKLUBAIC01MzksMTcgKzUzOSwyNSBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVh ZGxpbmUiID0geWVzOyB0aGVuCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmln dXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb25m aWd1cmUuYWMJMjAxMC0wMS0xNSAxMjo0ODowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUuYWMJMjAxMC0wMS0xNSAxMjo0ODo0MC4wMDAwMDAw MDAgKzAxMDAKK0BAIC03NzcsMTcgKzc3NywyNSBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVh ZGxpbmUiID0geWVzOyB0CiAgICAjIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSB0aGUgbmFt ZSBgX3JsX2VjaG9pbmdfcCcuCiAgICAjIGAkKFJFQURMSU5FX0RJUikvJyBvZiBidW5kbGVkIHJl YWRsaW5lIHdvdWxkIG5vdCByZXNvbHZlIGluIGNvbmZpZ3VyZS4KICAKQEAgLTEwNyw4ICsxMTEs MTAgQEAgZ2RiL3Rlc3RzdWl0ZS8KICBlbHNlCiAgICBSRUFETElORT0nJChSRUFETElORV9ESVIp L2xpYnJlYWRsaW5lLmEnCiAgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKLS0tLSBhL2dk Yi9ldmVudC1sb29wLmMKLSsrKyBiL2dkYi9ldmVudC1sb29wLmMKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9ldmVudC1sb29wLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIw MTAwMTE1Lm9yaWcvZ2RiL2V2ZW50LWxvb3AuYwkyMDEwLTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V2ZW50LWxvb3AuYwkyMDEwLTAx LTE1IDEyOjQ4OjQwLjAwMDAwMDAwMCArMDEwMAogQEAgLTM3LDYgKzM3LDcgQEAKICAjaW5jbHVk ZSAiZXhjZXB0aW9ucy5oIgogICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCkBAIC0xNDQsOSArMTUw LDExIEBAIGdkYi90ZXN0c3VpdGUvCiAgICAvKiBIYW5kbGUgYW55IG5ldyBldmVudHMgb2NjdXJy ZWQgd2hpbGUgd2FpdGluZy4gICovCiAgICBpZiAocHJvY2Vzc19ldmVudCAoKSkKICAgICAgcmV0 dXJuIDE7Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1AQCAtNDY0LDMxICs0NjQsNDIgQEAg R0RCLipDb3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLiok Z2RiX3Byb21wdCAkIlwKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUv Z2RiLmdkYi9zZWxmdGVzdC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEwLTAxLTE1IDEyOjQ4 OjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEwLTAxLTE1IDEyOjQ4OjQwLjAwMDAwMDAwMCArMDEw MAorQEAgLTQ3MSwzMSArNDcxLDQyIEBAIEdEQi4qQ29weXJpZ2h0IFxbMC05XF0rIEZyZWUgU29m dHdhcmUgRm8KICAJICAgIGZhaWwgIiRkZXNjcmlwdGlvbiAodGltZW91dCkiCiAgCX0KICAgICAg fQpAQCAtMjAyLDcgKzIxMCw3IEBAIGdkYi90ZXN0c3VpdGUvCiAgCSAgICBwYXNzICIkZGVzY3Jp cHRpb24iCiAgCX0KICAJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLUBAIC01MDAsOSArNTEwLDYg QEAgR0RCLipDb3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LiokZ2RiX3Byb21wdCAkIlwKK0BAIC01MDcsOSArNTE4LDYgQEAgR0RCLipDb3B5cmlnaHQgXFsw LTlcXSsgRnJlZSBTb2Z0d2FyZSBGbwogIAkgICAgc2V0dXBfeGZhaWwgImFscGhhKi0qLW9zZioi CiAgCSAgICBmYWlsICIkZGVzY3JpcHRpb24iCiAgCX0KQEAgLTIxMiw3NSArMjIwLDQwNyBAQCBn ZGIvdGVzdHN1aXRlLwogICAgICB9CiAgCiAgCi0tLS0gZ2RiLTcuMC9nZGIvY29uZmlndXJlCTIw MDktMTItMDcgMTg6NTM6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC14L2dkYi9jb25m aWd1cmUJMjAwOS0xMi0wNyAxODo1MzoxNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC05MjAxLDE1ICs5 MjAxLDExIEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHQKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEwLTAxLTE1IDEyOjQ4OjA0LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZQkyMDEw LTAxLTE1IDEyOjQ4OjQ2LjAwMDAwMDAwMCArMDEwMAorQEAgLTY3NzIsNiArNjc3MiwxODUgQEAg ZWxzZQorIGZpCisgCisgCisrCisrCisrCisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zZXBh cmF0ZS1kZWJ1Zy1kaXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9zZXBhcmF0ZV9kZWJ1 Z19kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9zZXBhcmF0ZV9kZWJ1 Z19kaXI7CisrICAgIERFQlVHRElSPSR3aXRodmFsCisrZWxzZQorKyAgREVCVUdESVI9JHtsaWJk aXJ9L2RlYnVnCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZp eD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAm JiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRE RUJVR0RJUmAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5lX2RpcmAKKysK KytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBERUJVR0RJUiAiJGFjX2RlZmlu ZV9kaXIiCisrX0FDRU9GCisrCisrCisrCisrICBpZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhO T05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgiID0gJ3gke3ByZWZpeH0nOyB0aGVuCisrICAgICBp ZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgorKyAgICAgCXRlc3RfcHJlZml4PS91c3Iv bG9jYWwKKysgICAgIGVsc2UKKysJdGVzdF9wcmVmaXg9JHByZWZpeAorKyAgICAgZmkKKysgIGVs c2UKKysgICAgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAorKyAgZmkKKysgIHZhbHVlPTAKKysg IGNhc2UgJHthY19kZWZpbmVfZGlyfSBpbgorKyAgICAgIiR7dGVzdF9wcmVmaXh9InwiJHt0ZXN0 X3ByZWZpeH0vIip8XAorKwknJHtleGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKKysg ICAgIHZhbHVlPTEKKysgICAgIDs7CisrICBlc2FjCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgorKyNkZWZpbmUgREVCVUdESVJfUkVMT0NBVEFCTEUgJHZhbHVlCisrX0FDRU9GCisrCisr CisrCisrIyBHREIncyBkYXRhZGlyIHJlbG9jYXRpb24KKysKKysKKysKKysjIENoZWNrIHdoZXRo ZXIgLS13aXRoLWdkYi1kYXRhZGlyIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfZ2RiX2Rh dGFkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9nZGJfZGF0YWRpcjsK KysgICAgR0RCX0RBVEFESVI9JHdpdGh2YWwKKytlbHNlCisrICBHREJfREFUQURJUj0ke2RhdGFk aXJ9L2dkYgorK2ZpCisrCisrCisrICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9 IiRhY19kZWZhdWx0X3ByZWZpeCIKKysgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYg ZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkR0RC X0RBVEFESVJgCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisr CisrY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgR0RCX0RBVEFESVIgIiRhY19k ZWZpbmVfZGlyIgorK19BQ0VPRgorKworKworKworKyAgaWYgdGVzdCAieCRleGVjX3ByZWZpeCIg PSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhlbgorKyAg ICAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KKysgICAgIAl0ZXN0X3ByZWZpeD0v dXNyL2xvY2FsCisrICAgICBlbHNlCisrCXRlc3RfcHJlZml4PSRwcmVmaXgKKysgICAgIGZpCisr ICBlbHNlCisrICAgICB0ZXN0X3ByZWZpeD0kZXhlY19wcmVmaXgKKysgIGZpCisrICB2YWx1ZT0w CisrICBjYXNlICR7YWNfZGVmaW5lX2Rpcn0gaW4KKysgICAgICIke3Rlc3RfcHJlZml4fSJ8IiR7 dGVzdF9wcmVmaXh9LyIqfFwKKysJJyR7ZXhlY19wcmVmaXh9J3wnJHtleGVjX3ByZWZpeH0vJyop CisrICAgICB2YWx1ZT0xCisrICAgICA7OworKyAgZXNhYworKworK2NhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKKysjZGVmaW5lIEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFICR2YWx1ZQorK19BQ0VP RgorKworKworKworKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXMg d2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9yZWxvY2F0ZWRfc291cmNlcytzZXR9IiA9IHNl dDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX3JlbG9jYXRlZF9zb3VyY2VzOyByZWxvY19zcmNk aXI9IiR7d2l0aHZhbH0iCisrCisrICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9 IiRhY19kZWZhdWx0X3ByZWZpeCIKKysgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYg ZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkcmVs b2Nfc3JjZGlyYAorKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAor KworK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIFJFTE9DX1NSQ0RJUiAiJGFj X2RlZmluZV9kaXIiCisrX0FDRU9GCisrCisrCisrCisrZmkKKysKKysKKysjIEdEQidzIGRhdGFk aXIgcmVsb2NhdGlvbgorKworK2dkYmRhdGFkaXI9JHtkYXRhZGlyfS9nZGIKKysKKysKKysjIENo ZWNrIHdoZXRoZXIgLS13aXRoLWdkYi1kYXRhZGlyIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dp dGhfZ2RiX2RhdGFkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9nZGJf ZGF0YWRpcjsgZ2RiZGF0YWRpcj0iJHt3aXRodmFsfSIKKytmaQorKworKworKworKyAgdGVzdCAi eCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisrICB0ZXN0 ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCisrICBh Y19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGdkYmRhdGFkaXJgCisrICBhY19kZWZpbmVfZGlyPWBl dmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor KyNkZWZpbmUgR0RCX0RBVEFESVIgIiRhY19kZWZpbmVfZGlyIgorK19BQ0VPRgorKworKworKwor K2lmIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgfHwgdGVzdCAieCRleGVjX3ByZWZpeCIg PSAneCR7cHJlZml4fSc7IHRoZW4KKysgIGlmIHRlc3QgIngkcHJlZml4IiA9IHhOT05FOyB0aGVu CisrICAgIHRlc3RfcHJlZml4PS91c3IvbG9jYWwKKysgIGVsc2UKKysgICAgdGVzdF9wcmVmaXg9 JHByZWZpeAorKyAgZmkKKytlbHNlCisrICB0ZXN0X3ByZWZpeD0kZXhlY19wcmVmaXgKKytmaQor KworK2Nhc2UgJHtnZGJkYXRhZGlyfSBpbgorKyAgIiR7dGVzdF9wcmVmaXh9InwiJHt0ZXN0X3By ZWZpeH0vIip8XAorKyAgJyR7ZXhlY19wcmVmaXh9J3wnJHtleGVjX3ByZWZpeH0vJyopCisrCisr JGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RBVEFESVJfUkVMT0NBVEFCTEUgMSIgPj5jb25mZGVmcy5o CisrCisrICA7OworK2VzYWMKKytHREJfREFUQURJUl9QQVRIPSR7Z2RiZGF0YWRpcn0KKysKKysK KysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLXB5dGhvbmRpciB3YXMgZ2l2ZW4uCisraWYgdGVz dCAiJHt3aXRoX3B5dGhvbmRpcitzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRo X3B5dGhvbmRpcjsgcHl0aG9uZGlyPSIke3dpdGh2YWx9IgorK2Vsc2UKKysgIHB5dGhvbmRpcj1u bworK2ZpCisrCisrCisrIyBJZiB0aGUgdXNlciBwYXNzZWQgaW4gYSBwYXRoLCBkZWZpbmUgaXQu ICBPdGhlcndpc2UsIGNvbXB1dGUgaXQgYXQKKysjIHJ1bnRpbWUgYmFzZWQgb24gdGhlIHBvc3Np Ymx5LXJlbG9jYXRhYmxlIGRhdGFkaXIuCisraWYgdGVzdCAiJHB5dGhvbmRpciIgPSAibm8iOyB0 aGVuCisrICBweXRob25kaXI9JyQoR0RCX0RBVEFESVJfUEFUSCkvcHl0aG9uJworK2Vsc2UKKysK KytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBQWVRIT05ESVIgIiRweXRob25k aXIiCisrX0FDRU9GCisrCisrZmkKKysKKysKKyAjIEludGVncmF0aW9uIHdpdGggcnBtIGxpYnJh cnkgdG8gc3VwcG9ydCBtaXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0aW9ucy4KKyAjIC0td2l0aG91 dC1ycG06IERpc2FibGUgYW55IHJwbSBzdXBwb3J0LgorICMgLS13aXRoLXJwbT1saWJuYW1lLnNv OiBUcnkgdG8gZHluYW1pY2FsbHkgb3BlbiBgbGlibmFtZS5zbycgZHVyaW5nIHJ1bnRpbWUuCitA QCAtNzI1NSwxODUgKzc0MzQsNiBAQCBmaQorIAorIAorIAorLQorLSMgQ2hlY2sgd2hldGhlciAt LXdpdGgtc2VwYXJhdGUtZGVidWctZGlyIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICIke3dpdGhfc2Vw YXJhdGVfZGVidWdfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKy0gIHdpdGh2YWw9JHdpdGhfc2Vw YXJhdGVfZGVidWdfZGlyOworLSAgICBERUJVR0RJUj0kd2l0aHZhbAorLWVsc2UKKy0gIERFQlVH RElSPSR7bGliZGlyfS9kZWJ1ZworLWZpCistCistCistICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9O RSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKy0gIHRlc3QgIngkZXhlY19wcmVmaXgi ID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKy0gIGFjX2RlZmluZV9kaXI9YGV2 YWwgZWNobyAkREVCVUdESVJgCistICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmlu ZV9kaXJgCistCistY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorLSNkZWZpbmUgREVCVUdESVIg IiRhY19kZWZpbmVfZGlyIgorLV9BQ0VPRgorLQorLQorLQorLSAgaWYgdGVzdCAieCRleGVjX3By ZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhl bgorLSAgICAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KKy0gICAgIAl0ZXN0X3By ZWZpeD0vdXNyL2xvY2FsCistICAgICBlbHNlCistCXRlc3RfcHJlZml4PSRwcmVmaXgKKy0gICAg IGZpCistICBlbHNlCistICAgICB0ZXN0X3ByZWZpeD0kZXhlY19wcmVmaXgKKy0gIGZpCistICB2 YWx1ZT0wCistICBjYXNlICR7YWNfZGVmaW5lX2Rpcn0gaW4KKy0gICAgICIke3Rlc3RfcHJlZml4 fSJ8IiR7dGVzdF9wcmVmaXh9LyIqfFwKKy0JJyR7ZXhlY19wcmVmaXh9J3wnJHtleGVjX3ByZWZp eH0vJyopCistICAgICB2YWx1ZT0xCistICAgICA7OworLSAgZXNhYworLQorLWNhdCA+PmNvbmZk ZWZzLmggPDxfQUNFT0YKKy0jZGVmaW5lIERFQlVHRElSX1JFTE9DQVRBQkxFICR2YWx1ZQorLV9B Q0VPRgorLQorLQorLQorLSMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCistCistCistCistIyBD aGVjayB3aGV0aGVyIC0td2l0aC1nZGItZGF0YWRpciB3YXMgZ2l2ZW4uCistaWYgdGVzdCAiJHt3 aXRoX2dkYl9kYXRhZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKy0gIHdpdGh2YWw9JHdpdGhfZ2Ri X2RhdGFkaXI7CistICAgIEdEQl9EQVRBRElSPSR3aXRodmFsCistZWxzZQorLSAgR0RCX0RBVEFE SVI9JHtkYXRhZGlyfS9nZGIKKy1maQorLQorLQorLSAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUg JiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCistICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZpbmVfZGlyPWBldmFs IGVjaG8gJEdEQl9EQVRBRElSYAorLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZp bmVfZGlyYAorLQorLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKy0jZGVmaW5lIEdEQl9EQVRB RElSICIkYWNfZGVmaW5lX2RpciIKKy1fQUNFT0YKKy0KKy0KKy0KKy0gIGlmIHRlc3QgIngkZXhl Y19wcmVmaXgiID0geE5PTkUgfHwgdGVzdCAieCRleGVjX3ByZWZpeCIgPSAneCR7cHJlZml4fSc7 IHRoZW4KKy0gICAgIGlmIHRlc3QgIngkcHJlZml4IiA9IHhOT05FOyB0aGVuCistICAgICAJdGVz dF9wcmVmaXg9L3Vzci9sb2NhbAorLSAgICAgZWxzZQorLQl0ZXN0X3ByZWZpeD0kcHJlZml4Cist ICAgICBmaQorLSAgZWxzZQorLSAgICAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJlZml4CistICBmaQor LSAgdmFsdWU9MAorLSAgY2FzZSAke2FjX2RlZmluZV9kaXJ9IGluCistICAgICAiJHt0ZXN0X3By ZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCistCScke2V4ZWNfcHJlZml4fSd8JyR7ZXhlY19w cmVmaXh9LycqKQorLSAgICAgdmFsdWU9MQorLSAgICAgOzsKKy0gIGVzYWMKKy0KKy1jYXQgPj5j b25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBHREJfREFUQURJUl9SRUxPQ0FUQUJMRSAkdmFs dWUKKy1fQUNFT0YKKy0KKy0KKy0KKy0KKy0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXJlbG9jYXRl ZC1zb3VyY2VzIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICIke3dpdGhfcmVsb2NhdGVkX3NvdXJjZXMr c2V0fSIgPSBzZXQ7IHRoZW4gOgorLSAgd2l0aHZhbD0kd2l0aF9yZWxvY2F0ZWRfc291cmNlczsg cmVsb2Nfc3JjZGlyPSIke3dpdGh2YWx9IgorLQorLSAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUg JiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCistICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZpbmVfZGlyPWBldmFs IGVjaG8gJHJlbG9jX3NyY2RpcmAKKy0gIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVm aW5lX2RpcmAKKy0KKy1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBSRUxPQ19T UkNESVIgIiRhY19kZWZpbmVfZGlyIgorLV9BQ0VPRgorLQorLQorLQorLWZpCistCistCistIyBH REIncyBkYXRhZGlyIHJlbG9jYXRpb24KKy0KKy1nZGJkYXRhZGlyPSR7ZGF0YWRpcn0vZ2RiCist CistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nZGItZGF0YWRpciB3YXMgZ2l2ZW4uCistaWYg dGVzdCAiJHt3aXRoX2dkYl9kYXRhZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKy0gIHdpdGh2YWw9 JHdpdGhfZ2RiX2RhdGFkaXI7IGdkYmRhdGFkaXI9IiR7d2l0aHZhbH0iCistZmkKKy0KKy0KKy0K Ky0gIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4 IgorLSAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVm aXh9JworLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRnZGJkYXRhZGlyYAorLSAgYWNfZGVm aW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAorLQorLWNhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKKy0jZGVmaW5lIEdEQl9EQVRBRElSICIkYWNfZGVmaW5lX2RpciIKKy1fQUNFT0YK Ky0KKy0KKy0KKy1pZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngkZXhl Y19wcmVmaXgiID0gJ3gke3ByZWZpeH0nOyB0aGVuCistICBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4 Tk9ORTsgdGhlbgorLSAgICB0ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCistICBlbHNlCistICAgIHRl c3RfcHJlZml4PSRwcmVmaXgKKy0gIGZpCistZWxzZQorLSAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJl Zml4CistZmkKKy0KKy1jYXNlICR7Z2RiZGF0YWRpcn0gaW4KKy0gICIke3Rlc3RfcHJlZml4fSJ8 IiR7dGVzdF9wcmVmaXh9LyIqfFwKKy0gICcke2V4ZWNfcHJlZml4fSd8JyR7ZXhlY19wcmVmaXh9 LycqKQorLQorLSRhc19lY2hvICIjZGVmaW5lIEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFIDEiID4+ Y29uZmRlZnMuaAorLQorLSAgOzsKKy1lc2FjCistR0RCX0RBVEFESVJfUEFUSD0ke2dkYmRhdGFk aXJ9CistCistCistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1weXRob25kaXIgd2FzIGdpdmVu LgorLWlmIHRlc3QgIiR7d2l0aF9weXRob25kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorLSAgd2l0 aHZhbD0kd2l0aF9weXRob25kaXI7IHB5dGhvbmRpcj0iJHt3aXRodmFsfSIKKy1lbHNlCistICBw eXRob25kaXI9bm8KKy1maQorLQorLQorLSMgSWYgdGhlIHVzZXIgcGFzc2VkIGluIGEgcGF0aCwg ZGVmaW5lIGl0LiAgT3RoZXJ3aXNlLCBjb21wdXRlIGl0IGF0CistIyBydW50aW1lIGJhc2VkIG9u IHRoZSBwb3NzaWJseS1yZWxvY2F0YWJsZSBkYXRhZGlyLgorLWlmIHRlc3QgIiRweXRob25kaXIi ID0gIm5vIjsgdGhlbgorLSAgcHl0aG9uZGlyPSckKEdEQl9EQVRBRElSX1BBVEgpL3B5dGhvbicK Ky1lbHNlCistCistY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorLSNkZWZpbmUgUFlUSE9ORElS ICIkcHl0aG9uZGlyIgorLV9BQ0VPRgorLQorLWZpCistCistCistCistCistCisgc3ViZGlycz0i JHN1YmRpcnMgZG9jIHRlc3RzdWl0ZSIKKyAKKyAKK0BAIC05MjkwLDEwICs5MjkwLDEwIEBAIGlm IHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHQKICAgICMgcmVhZGxpbmUtNi4w IHN0YXJ0ZWQgdG8gdXNlIHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KICAgICMgYCQoUkVBRExJ TkVfRElSKS8nIG9mIGJ1bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmln dXJlLgogIAotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciByZWFkbGluZV9l Y2hvaW5nX3AiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9p bmdfcC4uLiAkRUNIT19DIiA+JjYKKy0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcCIgPiY1CistJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcC4uLiAiID4mNjsgfQogICAgc2F2ZV9M SUJTPSRMSUJTCiAgICBMSUJTPSIkTElCUyAkUkVBRExJTkUiCi0tICBjYXQgPmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRl ZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G CiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciByZWFk bGluZV9lY2hvaW5nX3AuLi4gIiA+JjY7IH0KLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCi0gaW50Ci1AQCAtOTIyMSw0NSAr OTIxNyw0NSBAQCBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKLSAgIHJldHVybiAwOwot IH0KLSBfQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4 dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQot LSAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdy ZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVz dC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzog XCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLQkgeyBh Y190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgotLQkJCSB8fCB0ZXN0ICEgLXMgY29u ZnRlc3QuZXJyJwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIi KSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1 cyk7IH07IH0gJiYKLS0JIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLS0g IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZh bCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVu Ci0raWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICAgUkVBRExJTkVfRUNI T0lOR19QPXllcwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIg PiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgUkVBRExJTkVfRUNI T0lOR19QPW5vCi0gCi0tUkVBRExJTkVfRUNIT0lOR19QPW5vCi0rJGFzX2VjaG8gIiNkZWZpbmUg cmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hvaW5nX3AiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0r cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0rICAgIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJFQURMSU5FX0VDSE9JTkdfUCIgPiY1Ci0rJGFz X2VjaG8gIiRSRUFETElORV9FQ0hPSU5HX1AiID4mNjsgfQorQEAgLTkzMTYsOSArOTMxNiwzNSBA QCAkYXNfZWNobyAiI2RlZmluZSByZWFkbGluZV9lY2hvaW5nX3AgX3JsCisgZmkKKyBybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gIExJQlM9IiRzYXZlX0xJQlMiCisgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJFQURMSU5FX0VDSE9J TkdfUCIgPiY1CisgJGFzX2VjaG8gIiRSRUFETElORV9FQ0hPSU5HX1AiID4mNjsgfQogKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX3JsX2Nh dWdodF9zaWduYWwiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfcmxfY2F1Z2h0X3Np Z25hbC4uLiAiID4mNjsgfQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAogKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLS1jYXQgPj5jb25mZGVmcy5oIDw8 XF9BQ0VPRgotLSNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hvaW5nX3AKKysKICtp bnQKICttYWluICgpCiArewpAQCAtMjg5LDI0ICs2MjksMjAgQEAgZ2RiL3Rlc3RzdWl0ZS8KICsg IDsKICsgIHJldHVybiAwOwogK30KLSBfQUNFT0YKKytfQUNFT0YKICtpZiBhY19mbl9jX3RyeV9s aW5rICIkTElORU5PIjsgdGhlbiA6CiArICBSRUFETElORV9DQVVHSFRfU0lHTkFMPXllcwogKwog KyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkVBRExJTkVfQ0FVR0hUX1NJR05BTCAvKiovIiA+PmNv bmZkZWZzLmgKLSAKKysKICtlbHNlCiArICBSRUFETElORV9DQVVHSFRfU0lHTkFMPW5vCi0gZmkK LS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0tICAgICAgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKytmaQogK3JtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRl c3QuJGFjX2V4dAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRSRUFETElORV9DQVVHSFRfU0lHTkFMIiA+JjUKICskYXNfZWNobyAiJFJFQURMSU5F X0NBVUdIVF9TSUdOQUwiID4mNjsgfQotICAgTElCUz0iJHNhdmVfTElCUyIKLS0gIGVjaG8gIiRh c19tZTokTElORU5POiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5HX1AiID4mNQotLWVjaG8gIiR7 RUNIT19UfSRSRUFETElORV9FQ0hPSU5HX1AiID4mNgorKyAgTElCUz0iJHNhdmVfTElCUyIKICBl bHNlCiAgICBSRUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCiAgICBSRUFE TElORV9ERVBTPSckKFJFQURMSU5FKScKCmRpZmYgLS1naXQgYS9nZGItcmVhZGxpbmUtNi4wLnBh dGNoIGIvZ2RiLXJlYWRsaW5lLTYuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMmQwMDYwYi4uMDAwMDAwMAotLS0gYS9nZGItcmVhZGxpbmUtNi4wLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTIzICswLDAgQEAKLWdkYi8KLTIwMDktMDctMzEgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBjb21wYXRpYmlsaXR5IG9mIC0t d2l0aC1zeXN0ZW0tcmVhZGxpbmUgYW5kIHJlYWRsaW5lLTYuMCsuCi0JKiBjb25maWd1cmUuYWMg PC0td2l0aC1zeXN0ZW0tcmVhZGxpbmU+IChmb3IgcmVhZGxpbmVfZWNob2luZ19wKTogTmV3Ci0J dGVzdC4KLQkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0 ZS4KLQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMDkt MDktMDkgMjA6MTE6MDQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9n ZGIvY29uZmlndXJlLmFjCTIwMDktMDktMDkgMjA6MTE6NTQuMDAwMDAwMDAwICswMjAwCi1AQCAt NzczLDYgKzc3MywyMSBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVhZGxpbmUiID0geWVzOyB0 Ci0gICBSRUFETElORT0tbHJlYWRsaW5lCi0gICBSRUFETElORV9ERVBTPQotICAgUkVBRExJTkVf Q0ZMQUdTPQotKwotKyAgIyByZWFkbGluZS02LjAgc3RhcnRlZCB0byB1c2UgdGhlIG5hbWUgYF9y bF9lY2hvaW5nX3AnLgotKyAgIyBgJChSRUFETElORV9ESVIpLycgb2YgYnVuZGxlZCByZWFkbGlu ZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1cmUuCi0rCi0rICBBQ19NU0dfQ0hFQ0tJTkco W2ZvciByZWFkbGluZV9lY2hvaW5nX3BdKQotKyAgc2F2ZV9MSUJTPSRMSUJTCi0rICBMSUJTPSIk TElCUyAkUkVBRExJTkUiCi0rICBBQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0oLFtbZXh0 ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7Ci0rCQkJCSAgICByZXR1cm4gcmVhZGxpbmVfZWNo b2luZ19wO11dKSwKLSsJCSBbUkVBRExJTkVfRUNIT0lOR19QPXllc10sCi0rCQkgW1JFQURMSU5F X0VDSE9JTkdfUD1ubwotKwkJICBBQ19ERUZJTkUoW3JlYWRsaW5lX2VjaG9pbmdfcF0sIFtfcmxf ZWNob2luZ19wXSwKLSsJCQkgICAgW3JlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSBkaWZmZXJl bnQgbmFtZS5dKV0pCi0rICBMSUJTPSIkc2F2ZV9MSUJTIgotKyAgQUNfTVNHX1JFU1VMVChbJFJF QURMSU5FX0VDSE9JTkdfUF0pCi0gZWxzZQotICAgUkVBRExJTkU9JyQoUkVBRExJTkVfRElSKS9s aWJyZWFkbGluZS5hJwotICAgUkVBRExJTkVfREVQUz0nJChSRUFETElORSknCi1JbmRleDogZ2Ri LTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlnLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41 MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWcuaW4JMjAwOS0wOS0wOSAyMDoxMTozMy4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcuaW4JMjAwOS0wOS0w OSAyMDoxMjowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC04MTUsNiArODE1LDkgQEAKLSAvKiBEZWZp bmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCi0gI3VuZGVm IHBpZF90Ci0gCi0rLyogcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIGRpZmZlcmVudCBuYW1l LiAqLwotKyN1bmRlZiByZWFkbGluZV9lY2hvaW5nX3AKLSsKLSAvKiBEZWZpbmUgdG8gdGhlIGVx dWl2YWxlbnQgb2YgdGhlIEM5OSAncmVzdHJpY3QnIGtleXdvcmQsIG9yIHRvCi0gICAgbm90aGlu ZyBpZiB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQuICBEbyBub3QgZGVmaW5lIGlmIHJlc3RyaWN0IGlz Ci0gICAgc3VwcG9ydGVkIGRpcmVjdGx5LiAgKi8KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5 L2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcv Z2RiL2NvbmZpZ3VyZQkyMDA5LTA5LTA5IDIwOjExOjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZQkyMDA5LTA5LTA5IDIwOjExOjU0LjAwMDAw MDAwMCArMDIwMAotQEAgLTkxOTcsNiArOTE5Nyw2OSBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1f cmVhZGxpbmUiID0geWVzOyB0Ci0gICBSRUFETElORT0tbHJlYWRsaW5lCi0gICBSRUFETElORV9E RVBTPQotICAgUkVBRExJTkVfQ0ZMQUdTPQotKwotKyAgIyByZWFkbGluZS02LjAgc3RhcnRlZCB0 byB1c2UgdGhlIG5hbWUgYF9ybF9lY2hvaW5nX3AnLgotKyAgIyBgJChSRUFETElORV9ESVIpLycg b2YgYnVuZGxlZCByZWFkbGluZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1cmUuCi0rCi0r ICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcCIg PiY1Ci0rZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcmVhZGxpbmVfZWNob2luZ19wLi4uICRF Q0hPX0MiID4mNgotKyAgc2F2ZV9MSUJTPSRMSUJTCi0rICBMSUJTPSIkTElCUyAkUkVBRExJTkUi Ci0rICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSsvKiBjb25mZGVmcy5oLiAgKi8K LStfQUNFT0YKLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLStjYXQgPj5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAot K21haW4gKCkKLSt7Ci0rZXh0ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7Ci0rCQkJCSAgICBy ZXR1cm4gcmVhZGxpbmVfZWNob2luZ19wOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VP RgotK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci0raWYgeyAo ZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0rICAoZXZhbCAk YWNfbGluaykgMj5jb25mdGVzdC5lcjEKLSsgIGFjX3N0YXR1cz0kPwotKyAgZ3JlcCAtdiAnXiAq KycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSsgIHJtIC1mIGNvbmZ0ZXN0LmVyMQotKyAg Y2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0rCSB7IGFjX3RyeT0ndGVz dCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0rCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnIn Ci0rICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotKyAg KGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAm JgotKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotKyAgeyAoZXZhbCBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSsgIChldmFsICRhY190cnkp IDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRh Y19zdGF0dXMiID4mNQotKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSsgIFJFQURM SU5FX0VDSE9JTkdfUD15ZXMKLStlbHNlCi0rICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFt IHdhczoiID4mNQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsKLStSRUFE TElORV9FQ0hPSU5HX1A9bm8KLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotKyNkZWZp bmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hvaW5nX3AKLStfQUNFT0YKLSsKLStmaQotK3Jt IC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSsgICAgICBjb25mdGVzdCRh Y19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgTElCUz0iJHNhdmVfTElCUyIKLSsgIGVjaG8g IiRhc19tZTokTElORU5POiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5HX1AiID4mNQotK2VjaG8g IiR7RUNIT19UfSRSRUFETElORV9FQ0hPSU5HX1AiID4mNgotIGVsc2UKLSAgIFJFQURMSU5FPSck KFJFQURMSU5FX0RJUikvbGlicmVhZGxpbmUuYScKLSAgIFJFQURMSU5FX0RFUFM9JyQoUkVBRExJ TkUpJwoKZGlmZiAtLWdpdCBhL2dkYi1yaGVsNS1jb21wYXQucGF0Y2ggYi9nZGItcmhlbDUtY29t cGF0LnBhdGNoCmluZGV4IDk3YjI3MTkuLjMzZTYzYTkgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1j b21wYXQucGF0Y2gKKysrIGIvZ2RiLXJoZWw1LWNvbXBhdC5wYXRjaApAQCAtMSw5ICsxLDIwIEBA CiBnZGIvbGludXgtbmF0LmM6CiAtIFdvcmthcm91bmQgUkhFTC01IGtlcm5lbHMgZm9yIGRldGFj aGluZyBTSUdTVE9QcGVkIHByb2Nlc3NlcyAoQlogNDk4NTk1KS4KIAotLS0tIGdkYi02LjgvZ2Ri LW9yaWcvc3ltZmlsZS5jCTIwMDgtMDgtMjEgMDA6MDY6NTAuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTYuOC9nZGIvc3ltZmlsZS5jCTIwMDgtMDgtMjEgMjI6MzE6MDAuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTQ1Niw4ICsxNDU2LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0 IG9iamZpbGUKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAx LTE1IDIyOjE5OjI4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2VsZnJlYWQuYwkyMDEwLTAxLTE1IDIyOjE5OjM0LjAwMDAwMDAwMCArMDEwMAorQEAgLTU4Miw3 ICs1ODIsNyBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCisgI2Rl ZmluZSBCVUlMRF9JRF9WRVJCT1NFX05PTkUgMAorICNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9G SUxFTkFNRVMgMQorICNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9CSU5BUllfUEFSU0UgMgorLXN0 YXRpYyBpbnQgYnVpbGRfaWRfdmVyYm9zZSA9IEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5BTUVTOwor K3N0YXRpYyBpbnQgYnVpbGRfaWRfdmVyYm9zZSA9IEJVSUxEX0lEX1ZFUkJPU0VfTk9ORTsKKyBz dGF0aWMgdm9pZAorIHNob3dfYnVpbGRfaWRfdmVyYm9zZSAoc3RydWN0IHVpX2ZpbGUgKmZpbGUs IGludCBmcm9tX3R0eSwKKyAJCSAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29u c3QgY2hhciAqdmFsdWUpCitAQCAtMTY1OSw4ICsxNjU5LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZV9ieV9idWlsZGlkIChzdHIKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBz dHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVM TCAmJiBzdHJjbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZpbGUtPm5hbWUpID09IDApCiAgICAgICAg ICB7CkBAIC0xNCw5ICsyNSwxMSBAQCBnZGIvbGludXgtbmF0LmM6CiAgCSAgeGZyZWUgKGJ1aWxk X2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMKQot LS0tIC4vZ2RiL2NvcmVsb3cuYwkyMDEwLTAxLTAxIDE2OjA0OjM0LjAwMDAwMDAwMCArMDEwMAot KysrIC4vZ2RiL2NvcmVsb3cuYwkyMDEwLTAxLTAxIDE2OjA2OjI2LjAwMDAwMDAwMCArMDEwMAot QEAgLTI3Nyw3ICsyNzcsNyBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rp b24gCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxvdy5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0xNSAy MjoxOToyNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb3Jl bG93LmMJMjAxMC0wMS0xNSAyMjoxOTozNC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yOTQsNyArMjk0 LDcgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uIAogICAgICBpbmZl cmlvcl9wdGlkID0gcHRpZDsJCQkgLyogWWVzLCBtYWtlIGl0IGN1cnJlbnQgKi8KICB9CiAgCkBA IC0yNSwyMSArMzgsMTIgQEAgZ2RiL2xpbnV4LW5hdC5jOgogIAogIHN0YXRpYyB2b2lkCiAgYnVp bGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKLS0tLSAuL2dkYi9zeW1maWxlLmMJMjAx MC0wMS0wMSAxNjowNDozNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9zeW1maWxlLmMJMjAx MC0wMS0wMSAxNjowNjoxMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQ5LDcgKzEyNDksNyBAQCBz eW1ib2xfZmlsZV9jbGVhciAoaW50IGZyb21fdHR5KQotICNkZWZpbmUgQlVJTERfSURfVkVSQk9T RV9OT05FIDAKLSAjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5BTUVTIDEKLSAjZGVmaW5l IEJVSUxEX0lEX1ZFUkJPU0VfQklOQVJZX1BBUlNFIDIKLS1zdGF0aWMgaW50IGJ1aWxkX2lkX3Zl cmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX0ZJTEVOQU1FUzsKLStzdGF0aWMgaW50IGJ1aWxkX2lk X3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX05PTkU7Ci0gc3RhdGljIHZvaWQKLSBzaG93X2J1 aWxkX2lkX3ZlcmJvc2UgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0gCQkg ICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotLS0t IGdkYi03LjAtb3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0xMi0xOSAyMDo1Mzo0Ni4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9saW51eC1uYXQuYwkyMDA5LTEyLTE5IDIwOjU1OjAy LjAwMDAwMDAwMCArMDEwMAotQEAgLTE2MDQsOCArMTYwNCwyMiBAQCBHUFQ6IGx3cCAlcyBoYWQg c2lnbmFsICVzLCBidXQgaXQgaXMgaW4gCi0gCSpzdGF0dXMgPSBscC0+c3RhdHVzOworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1IDIyOjE5OjI3 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5j CTIwMTAtMDEtMTUgMjI6MTk6NTUuMDAwMDAwMDAwICswMTAwCitAQCAtMTc2OCw4ICsxNzY4LDIy IEBAIEdQVDogbHdwICVzIGhhZCBzaWduYWwgJXMsIGJ1dCBpdCBpcyBpbiAKKyAJCQkgICAgdGFy Z2V0X3NpZ25hbF90b19zdHJpbmcgKHNpZ25vKSk7CiAgICAgIH0KICAKIC0gIGlmICgqc3RhdHVz ID09IDAgJiYgR0VUX1BJRCAobHAtPnB0aWQpID09IHBpZF93YXNfc3RvcHBlZCkKCmRpZmYgLS1n aXQgYS9nZGItcmhlbDUtZ2NjNDQucGF0Y2ggYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKaW5kZXgg YzFmYThjNC4uMTVkMzRkZiAxMDA2NDQKLS0tIGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCisrKyBi L2dkYi1yaGVsNS1nY2M0NC5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBTb21lIGZ1bmN0aW9uYWxp dHkgaXMgYXZhaWxhYmxlIG9uIFJIRUwtNS40KyBvbmx5IHdpdGggZ2NjNDQgYW5kIGdmb3J0cmFu NDQgYXMKIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmluYXJpZXMgYXJlIGZyb20gZ2Nj LTQuMS4KIAotLS0tIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwLW9yaWcJ MjAwOS0xMi0yMCAwMDozODoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDA5LTEyLTIwIDAwOjU0OjE5LjAwMDAwMDAwMCArMDEw MAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEu ZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEzLjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIw MTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTYsNyArMTYsMjUgQEAKICBz ZXQgdGVzdGZpbGUgdmxhCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwpAQCAtMzAsOCArMzIs MTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2Mt NC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCiAgICAg IHJldHVybiAtMQogIH0KLS0tLSBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLmV4cC1vcmlnCTIwMDktMTItMjAgMDA6Mzg6MTMuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAwOS0xMi0y MCAwMToxMTo0Ny4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVy cC5leHAJMjAxMC0wMS0xNCAyMjoxMjowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEwLTAx LTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTMxLDEwICszMSwzMCBAQCBpZiBbZ2V0 X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKICAgICAgcmV0dXJuIC0xCiAgfQpAQCAt NjQsNyArNjgsNyBAQCB0aGUgZGVmYXVsdCBnY2MgYW5kIGdmb3J0cmFuIGJpbmFyaWVzIGFyZSBm cm9tIGdjYy00LjEuCiAgICAgIHJldHVybiAtMQogIH0KICAKLUBAIC00ODMsOSArNTAzLDMzIEBA IGZvcmVhY2ggbGRwcmVsaW5rIHtOTyBZRVN9IHsKK0BAIC00ODAsOSArNTAwLDMzIEBAIGZvcmVh Y2ggbGRwcmVsaW5rIHtOTyBZRVN9IHsKICAJCSAgICBpZiB7JGJpbnBpZSA9PSAiWUVTIn0gewog IAkJCWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllfQogIAkJICAgIH0K QEAgLTEwMCw4ICsxMDQsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmll cyBhcmUgZnJvbSBnY2MtNC4xLgogIAkJICAgIGlmIHskYmluc2VwZGVidWcgPT0gIlNFUCJ9IHsK ICAJCQlnZGJfZ251X3N0cmlwX2RlYnVnICRleGVjCiAgCQkJIyBKdXN0IGEgc2FuaXR5IGNoZWNr LiAgQXMgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB1c2VzIHRoZQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMDktMTItMTUgMDU6MTM6NTYuMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJ MjAwOS0xMi0xNSAwNToyMTowMC4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNy4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9u LWJsb2NrLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTIwLDcg KzIwLDI1IEBAIHNldCB0ZXN0ZmlsZSAiY29tbW9uLWJsb2NrIgogIHNldCBzcmNmaWxlICR7dGVz dGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K QEAgLTEyOSw4ICsxMzUsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmll cyBhcmUgZnJvbSBnY2MtNC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAwOS0xMi0xNSAwNToxMzo1Ni4wMDAwMDAwMDAgKzAxMDAK LSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDA5LTEy LTE1IDA1OjIwOjA3LjAwMDAwMDAwMCArMDEwMAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdh cmYtc3RyaWRlLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUu ZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMjcsNyArMjcsMjUg QEAKICBzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u ZjkwCkBAIC0xNTgsOCArMTY2LDEwIEBAIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmlu YXJpZXMgYXJlIGZyb20gZ2NjLTQuMS4KICAgICAgcmV0dXJuIC0xCiAgfQogIAotLS0tIC4vZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAw MDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAkyMDA5LTEyLTE1IDA1OjE3OjIxLjAwMDAwMDAwMCArMDEwMAorSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIw MTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMjUsNyArMjUsMjUgQEAgc2V0 IHRlc3RmaWxlICJkeW5hbWljIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTE4Nyw4ICsxOTcsMTAg QEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4x LgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1 cm4gLTEKICB9Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxl LmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAwOS0xMi0xNSAwNToyMjozNy4w MDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUu ZXhwCTIwMTAtMDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEw LTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTI1LDE2ICsyNSwzNCBAQCBpZiBb Z2V0X2NvbXBpbGVyX2luZm8gbm90LXVzZWRdIHsKICAgICByZXR1cm4gLTEKICB9CkBAIC0yMjgs OCArMjQwLDEwIEBAIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmluYXJpZXMgYXJlIGZy b20gZ2NjLTQuMS4KICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIK ICAgICAgcmV0dXJuIC0xCiAgfQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1 bGUuZXhwCTIwMDktMTItMTUgMDU6MTM6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAwOS0xMi0xNSAwNToyODo0OS4wMDAwMDAw MDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vbW9kdWxlLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0wMS0xNSAyMjoxNDox My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEw MAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlICJtb2R1bGUiCiAgc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uZjkwCkBAIC0yNTcsOCArMjcxLDEwIEBAIHRoZSBkZWZhdWx0IGdjYyBh bmQgZ2ZvcnRyYW4gYmluYXJpZXMgYXJlIGZyb20gZ2NjLTQuMS4KICAgICAgcmV0dXJuIC0xCiAg fQogIAotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMDktMTIt MTUgMDU6MTM6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3N0cmluZy5leHAJMjAwOS0xMi0xNSAwNToxODoxMy4wMDAwMDAwMDAgKzAxMDAKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4 cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMC0wMS0xNSAyMjoxNDoxMy4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTIzLDcgKzIz LDI1IEBAIHNldCB0ZXN0ZmlsZSAic3RyaW5nIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5 MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTI4Niw4 ICszMDIsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJv bSBnY2MtNC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9Igog ICAgICByZXR1cm4gLTEKICB9Ci0tLS0gZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmV4cC1vcmlnCTIwMDktMTItMjAgMDk6NDc6MDQuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDA5LTEy LTIwIDA5OjUwOjA2LjAwMDAwMDAwMCArMDEwMAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMTAtMDEt MTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTUsNyArMTUsMjYgQEAKICAKICBzZXQg dGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMzE2LDEzICszMzQsMTYgQEAgdGhlIGRlZmF1bHQgZ2Nj IGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogICAgICByZXR1cm4gLTEK ICB9CiAgCi0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJ MjAwOS0wMS0wNyAxMzozOToxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDA5LTEyLTIwIDEyOjM3OjEyLjAwMDAwMDAw MCArMDEwMAotQEAgLTI2LDcgKzI2LDI1IEBAIHNldCB0ZXN0ZmlsZSAiZGVyaXZlZC10eXBlIgor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJp dmVkLXR5cGUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDEwLTAxLTAxIDA4OjMy OjAyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMTUgMjI6MTY6MjAuMDAwMDAw MDAwICswMTAwCitAQCAtMjgsOCArMjgsMjYgQEAgc2V0IHRlc3RmaWxlICJkZXJpdmVkLXR5cGUi CiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQogIAotLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1 aWV0fV0gIT0gIiIgfSB7CistaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAorLQkgZXhlY3V0YWJsZSB7ZGVidWcgZjc3fV0gIT0g IiJ9IHsKICsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZp bmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9hcmQgW3RhcmdldF9pbmZv IG5hbWVdCkBAIC0zMzQsNyArMzU1LDggQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBi aW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogK30KICtzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxl ciBnZm9ydHJhbjQ0CiArCi0rc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1d Cisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIg IiR7YmluZmlsZX0iIFwKKysJIGV4ZWN1dGFibGUge2RlYnVnIGY3N31dCiArCiArdW5zZXRfYm9h cmRfaW5mbyBmNzdjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsK QEAgLTM0MiwxNiArMzY0LDE5IEBAIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmluYXJp ZXMgYXJlIGZyb20gZ2NjLTQuMS4KICt9CiArCiAraWYgeyAkZXJyICE9ICIiIH0gewotICAgICB1 bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9 Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDA5LTAxLTA3 IDEzOjM5OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdWJhcnJheS5leHAJMjAwOS0xMi0yMCAxMjozODowMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0y Niw3ICsyNiwyNSBAQCBzZXQgdGVzdGZpbGUgInN1YmFycmF5IgorIAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJhcnJheS5leHAJMjAxMC0wMS0wMSAwODozMjowMi4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXku ZXhwCTIwMTAtMDEtMTUgMjI6MTc6MTguMDAwMDAwMDAwICswMTAwCitAQCAtMjgsOCArMjgsMjYg QEAgc2V0IHRlc3RmaWxlICJzdWJhcnJheSIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mCiAg c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQogIAotLWlmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CistaWYge1tnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAorLQlleGVj dXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIn0gewogKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdj b21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgogKwog K3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KQEAgLTM2Myw3ICszODgsOCBAQCB0aGUgZGVm YXVsdCBnY2MgYW5kIGdmb3J0cmFuIGJpbmFyaWVzIGFyZSBmcm9tIGdjYy00LjEuCiArfQogK3Nl dF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0cmFuNDQKICsKLStzZXQgZXJyIFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0KKytzZXQgZXJyIFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAorKwlleGVjdXRhYmxlIHtkZWJ1 ZyBmNzd9XQogKwogK3Vuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKICtpZiBbaW5mbyBleGlz dHMgb2xkX2Y3N2NvbXBpbGVyXSB7CkBAIC0zNzEsMTEgKzM5NywxMyBAQCB0aGUgZGVmYXVsdCBn Y2MgYW5kIGdmb3J0cmFuIGJpbmFyaWVzIGFyZSBmcm9tIGdjYy00LjEuCiArfQogKwogK2lmIHsg JGVyciAhPSAiIiB9IHsKLSAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxl fSIKICAgICAgcmV0dXJuIC0xCiAgfQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90 bHMtc2VwZGVidWcuZXhwCTIwMDktMTItMjAgMTI6MjI6MTguMDAwMDAwMDAwICswMTAwCi0rKysg Li9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAwOS0xMi0yMCAx MjozOTo1My4wMDAwMDAwMDAgKzAxMDAKKyAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1z ZXBkZWJ1Zy5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4 cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTMyLDcgKzMyLDI1IEBA IHNldCBiaW5zaGFyZWRkZWJ1Z2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGkKICAKICAjIEZJWE1FOiBn Y2MgZGVwZW5kZW5jeSAoLVdsLC1zb25hbWUpLgoKZGlmZiAtLWdpdCBhL2dkYi1zdGFicy1yZWFk X2FyZ3MucGF0Y2ggYi9nZGItc3RhYnMtcmVhZF9hcmdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA2ZTE2OTI0Li4wMDAwMDAwCi0tLSBhL2dkYi1zdGFicy1yZWFkX2FyZ3Mu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDE0Mi5odG1sCi1TdWJqZWN0OiBbcGF0Y2hd IEZpeCBjcmFzaCByZWFkaW5nIGJyb2tlbiBzdGFicwotCi1IaSwKLQotc2VlbiB0aGlzIHN0YWJz IGZyb20gdW5rbm93biB2YXJpYW50IG9mIGdjYy00LjEuMjoKLQotMTE3NjU4NiBMU1lNICAgMCAg ICAgIDE1NCAgICAwMDAwMDAwMCAxNjY4MjA3NiBiYXNpY19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJf dHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID46Ol9SZXA6VHQoMCwzNCk9czEyITEs MDIwLCgwLDM1KT14c19SZXBfYmFzZTo7X1NfbWF4X3NpemU6LzIoMCwzNik9aygwLDMwKTpfWk5T czRfUmVwMTFfU19tYXhfc2l6ZUU7X1NfdGVybWluYWw6LzIoMCwyMik6X1pOU3M0X1JlcDExX1Nf dGVybWluYWxFO19TX2VtcHR5X3JlcF9zdG9yYWdlOi8yKDAsMzcpPWFyKDAsMzgpPXIoMCwzOCk7 MDswMzc3Nzc3Nzc3Nzc7OzA7MzsoMCwzMCk6X1pOU3M0X1JlcDIwX1NfZW1wdHlfcmVwX3N0b3Jh Z2VFO19TX2VtcHR5X3JlcDo6KDAsMzkpPWYoMCw0MCk9JigwLDM0KTpfWk5TczRfUmVwMTJfU19l bXB0eV9yZXBFdjsyQT87X01faXNfbGVha2VkOjooMCw0MSk9IygwLDM0KSwoMCw0Mik9QHM4Oy0x NjssKDAsNDMpPSooMCw0NCk9aygwLDM0KSwoMCwxKTs6X1pOS1NzNF9SZXAxMl9NX2lzX2xlYWtl ZEV2OzJCLjtfTV9pc19zaGFyZWQ6OigwLDQxKTpfWk5LU3M0X1JlcDEyX01faXNfc2hhcmVkRXY7 MkIuO19NX3NldF9sZWFrZWQ6OigwLDQ1KT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwoMCwxKTs6X1pO U3M0X1JlcDEzX01fc2V0X2xlYWtlZEV2OzJBLjtfTV9zZXRfc2hhcmFibGU6OigwLDQ1KTpfWk5T czRfUmVwMTVfTV9zZXRfc2hhcmFibGVFdjsyQS47X01fc2V0X2xlbmd0aF9hbmRfc2hhcmFibGU6 OigwLDQ2KT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwoMCwyNSksKDAsMSk7Ol9aTlNzNF9SZXAyNl9N X3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlRWo7MkEuO19NX3JlZmRhdGE6OigwLDQ3KT0jKDAsMzQp LCgwLDMpLCgwLDMzKSwoMCwxKTs6X1pOU3M0X1JlcDEwX01fcmVmZGF0YUV2OzJBLjtfTV9ncmFi OjooMCw0OCk9IygwLDM0KSwoMCwzKSwoMCwzMyksKDAsNSksKDAsNSksKDAsMSk7Ol9aTlNzNF9S ZXA3X01fZ3JhYkVSS1NhSWNFUzJfOzJBLjtfU19jcmVhdGU6OigwLDQ5KT1mKDAsMzMpOl9aTlNz NF9SZXA5X1NfY3JlYXRlRWpqUktTYUljRTsyQT87X01fZGlzcG9zZTo6KDAsNTApPSMoMCwzNCks KDAsMSksKDAsMzMpLCgwLDUpLCgwLDEpOzpfWk5TczRfUmVwMTBfTV9kaXNwb3NlRVJLU2FJY0U7 MkEuO19NX2Rlc3Ryb3k6OigwLDUxKT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwoMCw1KSwoMCwxKTs6 X1pOU3M0X1JlcDEwX01fZGVzdHJveUVSS1NhSWNFOzJBLjtfTV9yZWZjb3B5OjooMCw0Nyk6X1pO U3M0X1JlcDEwX01fcmVmY29weUV2OzJBLjtfTV9jbG9uZTo6KDAsNTIpPSMoMCwzNCksKDAsMyks KDAsMzMpLCgwLDUpLCgwLDI1KSwoMCwxKTs6X1pOU3M0X1JlcDhfTV9jbG9uZUVSS1NhSWNFajsy QS47OwotCi1UaGVyZSBpcyBhIEdEQiBjcmFzaCBhdDoKLV9NX2lzX2xlYWtlZDo6KDAsNDEpPSMo MCwzNCksKDAsNDIpPUBzODstMTY7LCgwLDQzKT0qKDAsNDQpPWsoMCwzNCksKDAsMSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl4KLSsgWy4uLl0gU29tZSBi cm9rZW4gc3RhYnMKLSsJIG91dHB1dCBjb250YWluZWQgYCgwLDQxKSwoMCw0Mik9QHM4Oy0xNjss KDAsNDMpLCgwLDEpOycgd2hlcmUgc2hvdWxkCi0rCSBoYXZlIGJlZW4gcHJlc2VudCAiOy0xNiwo MCw0MykiIHJlZmVyZW5jZSBpbnN0ZWFkLiAgVGhpcyB3YXkgdGhlCi0rCSBleGNlc3NpdmUgIjsi IG1hcmtlciBwcmVtYXR1cmVseSBzdG9wcyB0aGUgcGFyYW1ldGVycyBwYXJzaW5nLiAgKi8KLQot U3RpbGwgSSB3YXMgdW5hYmxlIHRvIHJlcHJvZHVjZSBwcm9kdWNpbmcgc3VjaCBTVEFCUyBvdXRw dXQuCi0KLVNvIHRoaXMgcGF0Y2ggZG9lcyBub3QgdHJ5IHRvIGNvbXBlbnNhdGUgdGhlIC0gcHJl c3VtYWJseSAtIGJ1Z2d5IFNUQUJTIG91dHB1dAotYW5kIHBhcnNlcyBzdWNoIHJlY29yZCBpbmNv cnJlY3RseS4gIEJ1dCBpdCBubyBsb25nZXIgY3Jhc2hlcy4KLQotTm8gcmVncmVzc2lvbnMgb24g e3g4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251Ci11c2luZyAtLXRhcmdldF9ib2Fy ZCB1bml4Ly1nc3RhYnMrLy1tMzIuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0w MS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBz dGFic3JlYWQuYyAocmVhZF9hcmdzKTogSGFuZGxlIHplcm8gYXJndW1lbnRzLgotCi1nZGIvdGVz dHN1aXRlLwotMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JKiBnZGIuc3RhYnMvd2VpcmQuZGVmIChhcmdzOTMpOiBOZXcuCi0KLS0tLSBh L2dkYi9zdGFic3JlYWQuYwotKysrIGIvZ2RiL3N0YWJzcmVhZC5jCi1AQCAtNDExMSw3ICs0MTEx LDE3IEBAIHJlYWRfYXJncyAoY2hhciAqKnBwLCBpbnQgZW5kLCBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgaW50ICpuYXJnc3AsCi0gICAgIH0KLSAgICgqcHApKys7CQkJLyogZ2V0IHBhc3QgYGVu ZCcgKHRoZSAnOicgY2hhcmFjdGVyKSAqLwotIAotLSAgaWYgKFRZUEVfQ09ERSAodHlwZXNbbiAt IDFdKSAhPSBUWVBFX0NPREVfVk9JRCkKLSsgIGlmIChuID09IDApCi0rICAgIHsKLSsgICAgICAv KiBXZSBzaG91bGQgcmVhZCBhdCBsZWFzdCB0aGUgVEhJUyBwYXJhbWV0ZXIgaGVyZS4gIFNvbWUg YnJva2VuIHN0YWJzCi0rCSBvdXRwdXQgY29udGFpbmVkIGAoMCw0MSksKDAsNDIpPUBzODstMTY7 LCgwLDQzKSwoMCwxKTsnIHdoZXJlIHNob3VsZAotKwkgaGF2ZSBiZWVuIHByZXNlbnQgIjstMTYs KDAsNDMpIiByZWZlcmVuY2UgaW5zdGVhZC4gIFRoaXMgd2F5IHRoZQotKwkgZXhjZXNzaXZlICI7 IiBtYXJrZXIgcHJlbWF0dXJlbHkgc3RvcHMgdGhlIHBhcmFtZXRlcnMgcGFyc2luZy4gICovCi0r Ci0rICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJJbnZhbGlkIChlbXB0 eSkgbWV0aG9kIGFyZ3VtZW50cyIpKTsKLSsgICAgICAqdmFyYXJnc3AgPSAwOwotKyAgICB9Ci0r ICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGVzW24gLSAxXSkgIT0gVFlQRV9DT0RFX1ZPSUQpCi0g ICAgICp2YXJhcmdzcCA9IDE7Ci0gICBlbHNlCi0gICAgIHsKLS0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLnN0YWJzL3dlaXJkLmRlZgotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc3RhYnMvd2VpcmQu ZGVmCi1AQCAtODgwLDMgKzg4MCw2IEBAIHZhcjM6Ci0gLnN0YWJzICJzeW05MjpcICEjJCUmJygp KissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltdXl9gYWJj ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IixOX0xTWU0sMCwwLDAKLSAuc3RhYnMgInR5cGU5 Mjp0OTI9XCAhIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFS U1RVVldYWVpbXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiIsTl9MU1lNLDAsMCww Ci0gLnN0YWJzICJhdHRyOTI6RzM5Mj1AXCAhIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6PD0+P0BB QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7 fH1+OzEiLE5fR1NZTSwwLDAsIDAKLSsKLSsjIFNlZSByZWFkX2FyZ3MgIkludmFsaWQgKGVtcHR5 KSBtZXRob2QgYXJndW1lbnRzIiBlcnJvci4KLSsuc3RhYnMgImFyZ3M5MzpHOTM9IygwLDkzKSwo MCw5Myk9QHM4Oy0xNjssKDAsOTMpLCgwLDkzKTsiLE5fR1NZTSwwLDAsMAoKZGlmZiAtLWdpdCBh L2dkYi10ZXN0c3VpdGUtdW5rbm93bi1vdXRwdXQucGF0Y2ggYi9nZGItdGVzdHN1aXRlLXVua25v d24tb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWRlY2FjLi4w MDAwMDAwCi0tLSBhL2dkYi10ZXN0c3VpdGUtdW5rbm93bi1vdXRwdXQucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw2OSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAwOS0xMi9tc2cwMDQ3My5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogZmFs c2UgTUkgInVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Npb24KLQotSGksCi0K LXRoZSBhdHRhY2hlZCBwYXRjaCB3aWxsIHR1cm4gdGhlIHJlc3VsdHMgdGhpcyB3YXk6Ci0tS0ZB SUw6IGdkYi5taS9taS11bnRpbC5leHA6IHVudGlsIGFmdGVyIHdoaWxlIGxvb3AgKHVua25vd24g b3V0cHV0IGFmdGVyIHJ1bm5pbmcpIChQUk1TOiBnZGIvMjEwNCkKLStLRkFJTDogZ2RiLm1pL21p LXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3RvcHBlZCBhdCB3cm9uZyBwbGFj ZSkgKFBSTVM6IGdkYi8yMTA0KQotLVhGQUlMOiBnZGIubWkvbWktd2F0Y2guZXhwOiBzdzogd2F0 Y2hwb2ludCB0cmlnZ2VyICh1bmtub3duIG91dHB1dCBhZnRlciBydW5uaW5nKQotK1hGQUlMOiBn ZGIubWkvbWktd2F0Y2guZXhwOiBzdzogd2F0Y2hwb2ludCB0cmlnZ2VyIChzdG9wcGVkIGF0IHdy b25nIHBsYWNlKQotLUtGQUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hp bGUgbG9vcCAodW5rbm93biBvdXRwdXQgYWZ0ZXIgcnVubmluZykgKFBSTVM6IGdkYi8yMTA0KQot K0tGQUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3Rv cHBlZCBhdCB3cm9uZyBwbGFjZSkgKFBSTVM6IGdkYi8yMTA0KQotLVhGQUlMOiBnZGIubWkvbWky LXdhdGNoLmV4cDogc3c6IHdhdGNocG9pbnQgdHJpZ2dlciAodW5rbm93biBvdXRwdXQgYWZ0ZXIg cnVubmluZykKLStYRkFJTDogZ2RiLm1pL21pMi13YXRjaC5leHA6IHN3OiB3YXRjaHBvaW50IHRy aWdnZXIgKHN0b3BwZWQgYXQgd3JvbmcgcGxhY2UpCi0KLVRoaXMgaXMgYSBmaXggb2YgS0ZBSUwt a2luZCByZWdyZXNzaW9uIGR1ZSB0bzoKLWNvbW1pdCAyNmQwODZkNzQxZmIxYmIwZWVlOWQ1MGUw YmFmYTdjNWUzODgwMjNmCi1SZTogW1JGQV0gZml4ICpzdG9wcGVkIGZvciBDTEkgY29tbWFuZHMK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTAyL21zZzAwMjc4Lmh0 bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMDIvbXNnMDAwODQuaHRt bAotcGFydDoKLWdkYi90ZXN0c3VpdGUvCi0yMDA5LTAyLTE0ICBWbGFkaW1pciBQcnVzICA8dmxh ZGltaXJAY29kZXNvdXJjZXJ5LmNvbT4KLQkqIGxpYi9taS1zdXBwb3J0LmV4cCAobWlfZXhwZWN0 X3N0b3ApOiBBZGp1c3QgdGhlIG9yZGVyIG9mIGZpZWxkcy4KLQkobWlfZXhwZWN0X2ludGVycnVw dCk6IExpa2V3aXNlLgotCSogZ2RiLm1pL21pLWNsaS5leHA6IENoZWNrIHRoYXQgInN0ZXAiIHJl c3VsdHMgaW4gcHJvcGVyICpzdG9wcGVkCi0JcmVzcG9uc2UuCi0KLXJlLXdkaWZmLWVkIGZvciB5 b3VyIGNvbnZlbmllbmNlIGFzOgotICAgIHZlcmJvc2UgLWxvZyAibWlfZXhwZWN0X3N0b3A6IGV4 cGVjdGluZzogXFwqc3RvcHBlZCwke3J9JHthfSR7Ym59Wy10aHJlYWQtaWQ9XCIkZGVjaW1hbFwi LHN0b3BwZWQtdGhyZWFkcz0kYW55LC1dZnJhbWU9XHthZGRyPVwiJGhleFwiLGZ1bmM9XCIkZnVu Y1wiLGFyZ3M9JGFyZ3MsZmlsZT1cIiRhbnkkZmlsZVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9z eW50YXh9JGZpbGVcIixsaW5lPVwiJGxpbmVcIlx9JGFmdGVyX3N0b3BwZWR7Kyx0aHJlYWQtaWQ9 XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55K31cclxuKCR0aHJlYWRfc2VsZWN0ZWRf cmUpPyRwcm9tcHRfcmUiCi0JLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1bLXRocmVhZC1p ZD1cIiRkZWNpbWFsXCIsc3RvcHBlZC10aHJlYWRzPSRhbnksLV1mcmFtZT1ce2FkZHI9XCIkaGV4 XCIsZnVuYz1cIiRmdW5jXCIsYXJncz0kYXJncyxmaWxlPVwiJGFueSRmaWxlXCIsZnVsbG5hbWU9 XCIke2Z1bGxuYW1lX3N5bnRheH0kZmlsZVwiLGxpbmU9XCIoJGxpbmUpXCJcfSRhZnRlcl9zdG9w cGVkeyssdGhyZWFkLWlkPVwiJGRlY2ltYWxcIixzdG9wcGVkLXRocmVhZHM9JGFueSt9XHJcbigk dGhyZWFkX3NlbGVjdGVkX3JlKT8kcHJvbXB0X3JlIiB7Ci0JLXJlICJcXCpzdG9wcGVkLCR7cn0k e2F9JHtibn1bLXRocmVhZC1pZD1cIiRkZWNpbWFsXCIsc3RvcHBlZC10aHJlYWRzPSRhbnksLV1m cmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtc XFxdXH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwi LGxpbmU9XCJcWzAtOVxdKlwiXH1bLSRhbnktXXsrdGhyZWFkLWlkPVwiJGRlY2ltYWxcIixzdG9w cGVkLXRocmVhZHM9JGFueSt9XHJcbiRwcm9tcHRfcmUiIHsKLQotRllJIHRoZXJlIGlzOiBzZXQg YW55ICJcW15cblxdKiIKLQotInN0b3BwZWQgYXQgd3JvbmcgcGxhY2UiIGlzIHRoZSByaWdodCBr aW5kIG9mIEtGQUlML1hGQUlMICh0ZXN0ZWQKLWdjYy00LjEuMi00Ni5lbDVfNC4xLng4Nl82NCBh bmQgZ2NjLTQuNC4yLTIwLmZjMTIueDg2XzY0KSBhcyBkaXNjdXNzZWQKLWluIFBSIGdkYi8yMTA0 LgotCi1JbiB0aGUgbGFzdCBjYXNlIHRoZXJlIGlzIG1pc3NpbmcgY29tbWEgKCwpIGFmdGVyIHRo ZSBmb3JtZXIgcGF0Y2ggYWJvdmUuCi0KLSRhZnRlcl9zdG9wcGVkIHdhcyBJTU8gbWlzc2luZyB0 aGVyZSBldmVuIGJlZm9yZS4gIEl0IGlzIGluIHVzZSBvbmx5IGJ5Ci1nZGIubWkvbWktc2ltcGxl cnVuLmV4cCBhbmQgZ2RiLm1pL21pMi1zaW1wbGVydW4uZXhwLiAgQWxzbyBmaXhlZCBiZWxvdy4K LQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxp bnV4LWdudS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvdGVzdHN1aXRlLwotMjAwOS0xMi0z MSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBsaWIv bWktc3VwcG9ydC5leHAgKG1pX2V4cGVjdF9zdG9wIDxzdG9wcGVkIGF0IHdyb25nIHBsYWNlPik6 IEluc2VydAotCW1pc3NpbmcgJGFmdGVyX3N0b3BwZWQgYW5kIGNvbW1hICgsKSBleHBlY3RhdGlv bi4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCi1AQCAtMTAzOCw3ICsxMDM4LDcgQEAgcHJvYyBt aV9leHBlY3Rfc3RvcCB7IHJlYXNvbiBmdW5jIGFyZ3MgZmlsZSBsaW5lIGV4dHJhIHRlc3QgfSB7 Ci0gCSAgICBwYXNzICIkdGVzdCIKLSAgICAgICAgICAgICByZXR1cm4gJGV4cGVjdF9vdXQoMixz dHJpbmcpCi0gCX0KLS0JLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1mcmFtZT1ce2FkZHI9 XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxl PVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAt OVxdKlwiXH10aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55XHJcbiRw cm9tcHRfcmUiIHsKLSsJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1mcmFtZT1ce2FkZHI9 XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxl PVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAt OVxdKlwiXH0kYWZ0ZXJfc3RvcHBlZCx0aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhy ZWFkcz0kYW55XHJcbiRwcm9tcHRfcmUiIHsKLSAgICAgICAgICAgICB2ZXJib3NlIC1sb2cgImdv dCAkZXhwZWN0X291dChidWZmZXIpIgotIAkgICAgZmFpbCAiJHRlc3QgKHN0b3BwZWQgYXQgd3Jv bmcgcGxhY2UpIgotIAkgICAgcmV0dXJuIC0xCi0KCmRpZmYgLS1naXQgYS9nZGItdHJhY2Vwb2lu dC13YXJuaW5nLnBhdGNoIGIvZ2RiLXRyYWNlcG9pbnQtd2FybmluZy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzUxMDcxCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LXRyYWNlcG9pbnQtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDIyMSBAQAorUmU6IGN2cyB0cmFj ZXBvaW50LmMgYnVpbGQgZXJyb3IKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIvMjAxMC0w MS9tc2cwMDE1MC5odG1sCisKKy0tLSBhL2dkYi90cmFjZXBvaW50LmMKKysrKyBiL2dkYi90cmFj ZXBvaW50LmMKK0BAIC0xNjQ3LDggKzE2NDcsOCBAQCB0cmFjZV9zdGF0dXNfY29tbWFuZCAoY2hh ciAqYXJncywgaW50IGZyb21fdHR5KQorIAorICAgaWYgKHRzLT5idWZmZXJfZnJlZSkKKyAgICAg eworLSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiVHJhY2UgYnVmZmVyIGhhcyAlZCBieXRlcyBm cmVlLlxuIiksCistCQkgICAgICAgdHMtPmJ1ZmZlcl9mcmVlKTsKKysgICAgICBwcmludGZfZmls dGVyZWQgKF8oIlRyYWNlIGJ1ZmZlciBoYXMgJWxsZCBieXRlcyBmcmVlLlxuIiksCisrCQkgICAg ICAgKGxvbmcgbG9uZykgdHMtPmJ1ZmZlcl9mcmVlKTsKKyAgICAgfQorIAorICAgLyogTm93IHJl cG9ydCBvbiB3aGF0IHdlJ3JlIGRvaW5nIHdpdGggdGZpbmQuICAqLworQEAgLTIzODksNyArMjM4 OSw3IEBAIHRyYWNlX3NhdmVfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorICAg LyogV3JpdGUgYSBmaWxlIGhlYWRlciwgd2l0aCBhIGhpZ2gtYml0LXNldCBjaGFyIHRvIGluZGlj YXRlIGEKKyAgICAgIGJpbmFyeSBmaWxlLCBwbHVzIGEgaGludCBhcyB3aGF0IHRoaXMgZmlsZSBp cywgYW5kIGEgdmVyc2lvbgorICAgICAgbnVtYmVyIGluIGNhc2Ugb2YgZnV0dXJlIG5lZWRzLiAg Ki8KKy0gIGZ3cml0ZSAoIlx4N2ZUUkFDRTBcbiIsIDgsIDEsIGZwKTsKKysgIDEgfHwgZndyaXRl ICgiXHg3ZlRSQUNFMFxuIiwgOCwgMSwgZnApOworIAorICAgLyogV3JpdGUgZGVzY3JpcHRpdmUg aW5mby4gICovCisgCitAQCAtMjQ3MywxMiArMjQ3MywxMiBAQCB0cmFjZV9zYXZlX2NvbW1hbmQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyAgICAgICAvKiBObyBtb3JlIGRhdGEgaXMgZm9y dGhjb21pbmcsIHdlJ3JlIGRvbmUuICAqLworICAgICAgIGlmIChnb3R0ZW4gPT0gMCkKKyAJYnJl YWs7CistICAgICAgZndyaXRlIChidWYsIGdvdHRlbiwgMSwgZnApOworKyAgICAgIDEgfHwgZndy aXRlIChidWYsIGdvdHRlbiwgMSwgZnApOworICAgICAgIG9mZnNldCArPSBnb3R0ZW47CisgICAg IH0KKyAKKyAgIC8qIE1hcmsgdGhlIGVuZCBvZiB0cmFjZSBkYXRhLiAgKi8KKy0gIGZ3cml0ZSAo JmdvdHRlbiwgNCwgMSwgZnApOworKyAgMSB8fCBmd3JpdGUgKCZnb3R0ZW4sIDQsIDEsIGZwKTsK KyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgIGlmIChmcm9tX3R0eSkKK0BAIC0yNzg1 LDcgKzI3ODUsNyBAQCB0ZmlsZV9vcGVuIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQor ICAgaW50IHNjcmF0Y2hfY2hhbjsKKyAgIGNoYXIgaGVhZGVyW1RSQUNFX0hFQURFUl9TSVpFXTsK KyAgIGNoYXIgbGluZWJ1ZlsxMDAwXTsgLyogc2hvdWxkIGJlIG1heCByZW1vdGUgcGFja2V0IHNp emUgb3Igc28gKi8KKy0gIGNoYXIgYnl0ZTsKKysgIGNoYXIgYnl0ZSA9IDA7CisgICBpbnQgYnl0 ZXMsIGk7CisgICBzdHJ1Y3QgdHJhY2Vfc3RhdHVzICp0czsKKyAgIHN0cnVjdCB1cGxvYWRlZF90 cCAqdXBsb2FkZWRfdHBzID0gTlVMTDsKK0BAIC0yODIzLDcgKzI4MjMsNyBAQCB0ZmlsZV9vcGVu IChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQorIAorICAgYnl0ZXMgPSAwOworICAgLyog UmVhZCB0aGUgZmlsZSBoZWFkZXIgYW5kIHRlc3QgZm9yIHZhbGlkaXR5LiAgKi8KKy0gIHJlYWQg KHRyYWNlX2ZkLCAmaGVhZGVyLCBUUkFDRV9IRUFERVJfU0laRSk7CisrICAxIHx8IHJlYWQgKHRy YWNlX2ZkLCAmaGVhZGVyLCBUUkFDRV9IRUFERVJfU0laRSk7CisgICBieXRlcyArPSBUUkFDRV9I RUFERVJfU0laRTsKKyAgIGlmICghKGhlYWRlclswXSA9PSAweDdmCisgCSYmIChzdHJuY21wICho ZWFkZXIgKyAxLCAiVFJBQ0UwXG4iLCA3KSA9PSAwKSkpCitAQCAtMjg0NCw3ICsyODQ0LDcgQEAg dGZpbGVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKKyAgIGkgPSAwOworICAg d2hpbGUgKDEpCisgICAgIHsKKy0gICAgICByZWFkICh0cmFjZV9mZCwgJmJ5dGUsIDEpOworKyAg ICAgIDEgfHwgcmVhZCAodHJhY2VfZmQsICZieXRlLCAxKTsKKyAgICAgICArK2J5dGVzOworICAg ICAgIGlmIChieXRlID09ICdcbicpCisgCXsKK0BAIC0zMTQxLDcgKzMxNDEsNyBAQCBzdGF0aWMg VUxPTkdFU1QKKyB0ZmlsZV9nZXRfdHJhY2VmcmFtZV9hZGRyZXNzIChvZmZfdCB0ZnJhbWVfb2Zm c2V0KQorIHsKKyAgIFVMT05HRVNUIGFkZHIgPSAwOworLSAgc2hvcnQgdHBudW07CisrICBzaG9y dCB0cG51bSA9IDA7CisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqdHA7CisgICBvZmZfdCBzYXZlZF9v ZmZzZXQgPSBjdXJfb2Zmc2V0OworIAorQEAgLTMxNDksNyArMzE0OSw3IEBAIHRmaWxlX2dldF90 cmFjZWZyYW1lX2FkZHJlc3MgKG9mZl90IHRmcmFtZV9vZmZzZXQpCisgCisgICAvKiBGYWxsIGJh Y2sgdG8gdXNpbmcgdHJhY2Vwb2ludCBhZGRyZXNzLiAgKi8KKyAgIGxzZWVrICh0cmFjZV9mZCwg dGZyYW1lX29mZnNldCwgU0VFS19TRVQpOworLSAgcmVhZCAodHJhY2VfZmQsICZ0cG51bSwgMik7 CisrICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmdHBudW0sIDIpOworICAgdHAgPSBnZXRfdHJhY2Vw b2ludF9ieV9udW1iZXJfb25fdGFyZ2V0ICh0cG51bSk7CisgICBpZiAodHAgJiYgdHAtPmxvYykK KyAgICAgYWRkciA9IHRwLT5sb2MtPmFkZHJlc3M7CitAQCAtMzE2OSw3ICszMTY5LDcgQEAgc3Rh dGljIGludAorIHRmaWxlX3RyYWNlX2ZpbmQgKGVudW0gdHJhY2VfZmluZF90eXBlIHR5cGUsIGlu dCBudW0sCisgCQkgIFVMT05HRVNUIGFkZHIxLCBVTE9OR0VTVCBhZGRyMiwgaW50ICp0cHApCisg eworLSAgc2hvcnQgdHBudW07CisrICBzaG9ydCB0cG51bSA9IDA7CisgICBpbnQgdGZudW0gPSAw LCBmb3VuZCA9IDA7CisgICBpbnQgZGF0YV9zaXplOworICAgc3RydWN0IGJyZWFrcG9pbnQgKnRw OworQEAgLTMxODEsMTEgKzMxODEsMTEgQEAgdGZpbGVfdHJhY2VfZmluZCAoZW51bSB0cmFjZV9m aW5kX3R5cGUgdHlwZSwgaW50IG51bSwKKyAgIHdoaWxlICgxKQorICAgICB7CisgICAgICAgdGZy YW1lX29mZnNldCA9IG9mZnNldDsKKy0gICAgICByZWFkICh0cmFjZV9mZCwgJnRwbnVtLCAyKTsK KysgICAgICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmdHBudW0sIDIpOworICAgICAgIG9mZnNldCAr PSAyOworICAgICAgIGlmICh0cG51bSA9PSAwKQorIAlicmVhazsKKy0gICAgICByZWFkICh0cmFj ZV9mZCwgJmRhdGFfc2l6ZSwgNCk7CQorKyAgICAgIDEgfHwgcmVhZCAodHJhY2VfZmQsICZkYXRh X3NpemUsIDQpOwkKKyAgICAgICBvZmZzZXQgKz0gNDsKKyAgICAgICBzd2l0Y2ggKHR5cGUpCisg CXsKK0BAIC0zMjQ1LDkgKzMyNDUsOSBAQCB0ZmlsZV9mZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCB0 YXJnZXRfb3BzICpvcHMsCisgCQkgICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IHJlZ25vKQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2Fy Y2ggKHJlZ2NhY2hlKTsKKy0gIGNoYXIgYmxvY2tfdHlwZTsKKysgIGNoYXIgYmxvY2tfdHlwZSA9 IDA7CisgICBpbnQgaSwgcG9zLCBvZmZzZXQsIHJlZ24sIHJlZ3NpemU7CistICB1bnNpZ25lZCBz aG9ydCBtbGVuOworKyAgdW5zaWduZWQgc2hvcnQgbWxlbiA9IDA7CisgICBjaGFyICpyZWdzOwor IAorICAgLyogQW4gdW5pbml0aWFsaXplZCByZWcgc2l6ZSBzYXlzIHdlJ3JlIG5vdCBnb2luZyB0 byBiZQorQEAgLTMyNjEsMTIgKzMyNjEsMTIgQEAgdGZpbGVfZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqb3BzLAorICAgcG9zID0gMDsKKyAgIHdoaWxlIChwb3MgPCBjdXJfZGF0 YV9zaXplKQorICAgICB7CistICAgICAgcmVhZCAodHJhY2VfZmQsICZibG9ja190eXBlLCAxKTsK KysgICAgICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmYmxvY2tfdHlwZSwgMSk7CisgICAgICAgKytw b3M7CisgICAgICAgc3dpdGNoIChibG9ja190eXBlKQorIAl7CisgCWNhc2UgJ1InOgorLQkgIHJl YWQgKHRyYWNlX2ZkLCByZWdzLCB0cmFjZV9yZWdibG9ja19zaXplKTsKKysJICAxIHx8IHJlYWQg KHRyYWNlX2ZkLCByZWdzLCB0cmFjZV9yZWdibG9ja19zaXplKTsKKyAJICAvKiBBc3N1bWUgdGhl IGJsb2NrIGlzIGxhaWQgb3V0IGluIEdEQiByZWdpc3RlciBudW1iZXIgb3JkZXIsCisgCSAgICAg ZWFjaCByZWdpc3RlciB3aXRoIHRoZSBzaXplIHRoYXQgaXQgaGFzIGluIEdEQi4gICovCisgCSAg b2Zmc2V0ID0gMDsKK0BAIC0zMjkzLDcgKzMyOTMsNyBAQCB0ZmlsZV9mZXRjaF9yZWdpc3RlcnMg KHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgCSAgcmV0dXJuOworIAljYXNlICdNJzoKKyAJICBs c2VlayAodHJhY2VfZmQsIDgsIFNFRUtfQ1VSKTsKKy0JICByZWFkICh0cmFjZV9mZCwgJm1sZW4s IDIpOworKwkgIDEgfHwgcmVhZCAodHJhY2VfZmQsICZtbGVuLCAyKTsKKyAJICBsc2VlayAodHJh Y2VfZmQsIG1sZW4sIFNFRUtfQ1VSKTsKKyAJICBwb3MgKz0gKDggKyAyICsgbWxlbik7CisgCSAg YnJlYWs7CitAQCAtMzMxNCwxMCArMzMxNCwxMCBAQCB0ZmlsZV94ZmVyX3BhcnRpYWwgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCisgCQkgICAgY29u c3QgY2hhciAqYW5uZXgsIGdkYl9ieXRlICpyZWFkYnVmLAorIAkJICAgIGNvbnN0IGdkYl9ieXRl ICp3cml0ZWJ1ZiwgVUxPTkdFU1Qgb2Zmc2V0LCBMT05HRVNUIGxlbikKKyB7CistICBjaGFyIGJs b2NrX3R5cGU7CisrICBjaGFyIGJsb2NrX3R5cGUgPSAwOworICAgaW50IHBvczsKKy0gIFVMT05H RVNUIG1hZGRyOworLSAgdW5zaWduZWQgc2hvcnQgbWxlbjsKKysgIFVMT05HRVNUIG1hZGRyID0g MDsKKysgIHVuc2lnbmVkIHNob3J0IG1sZW4gPSAwOworIAorICAgLyogV2UncmUgb25seSBkb2lu ZyByZWd1bGFyIG1lbW9yeSBmb3Igbm93LiAgKi8KKyAgIGlmIChvYmplY3QgIT0gVEFSR0VUX09C SkVDVF9NRU1PUlkpCitAQCAtMzMzMCw3ICszMzMwLDcgQEAgdGZpbGVfeGZlcl9wYXJ0aWFsIChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAorICAgcG9z ID0gMDsKKyAgIHdoaWxlIChwb3MgPCBjdXJfZGF0YV9zaXplKQorICAgICB7CistICAgICAgcmVh ZCAodHJhY2VfZmQsICZibG9ja190eXBlLCAxKTsKKysgICAgICAxIHx8IHJlYWQgKHRyYWNlX2Zk LCAmYmxvY2tfdHlwZSwgMSk7CisgICAgICAgKytwb3M7CisgICAgICAgc3dpdGNoIChibG9ja190 eXBlKQorIAl7CitAQCAtMzMzOSwxMSArMzMzOSwxMSBAQCB0ZmlsZV94ZmVyX3BhcnRpYWwgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCisgCSAgcG9z ICs9IHRyYWNlX3JlZ2Jsb2NrX3NpemU7CisgCSAgYnJlYWs7CisgCWNhc2UgJ00nOgorLQkgIHJl YWQgKHRyYWNlX2ZkLCAmbWFkZHIsIDgpOworLQkgIHJlYWQgKHRyYWNlX2ZkLCAmbWxlbiwgMik7 CisrCSAgMSB8fCByZWFkICh0cmFjZV9mZCwgJm1hZGRyLCA4KTsKKysJICAxIHx8IHJlYWQgKHRy YWNlX2ZkLCAmbWxlbiwgMik7CisgCSAgaWYgKG1hZGRyIDw9IG9mZnNldCAmJiAob2Zmc2V0ICsg bGVuKSA8PSAobWFkZHIgKyBtbGVuKSkKKyAJICAgIHsKKy0JICAgICAgcmVhZCAodHJhY2VfZmQs IHJlYWRidWYsIG1sZW4pOworKwkgICAgICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCByZWFkYnVmLCBt bGVuKTsKKyAJICAgICAgcmV0dXJuIG1sZW47CisgCSAgICB9CisgCSAgbHNlZWsgKHRyYWNlX2Zk LCBtbGVuLCBTRUVLX0NVUik7CitAQCAtMzM2OSwxNSArMzM2OSwxNSBAQCB0ZmlsZV94ZmVyX3Bh cnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3Qs Cisgc3RhdGljIGludAorIHRmaWxlX2dldF90cmFjZV9zdGF0ZV92YXJpYWJsZV92YWx1ZSAoaW50 IHRzdm51bSwgTE9OR0VTVCAqdmFsKQorIHsKKy0gIGNoYXIgYmxvY2tfdHlwZTsKKy0gIGludCBw b3MsIHZudW07CistICB1bnNpZ25lZCBzaG9ydCBtbGVuOworKyAgY2hhciBibG9ja190eXBlID0g MDsKKysgIGludCBwb3MsIHZudW0gPSAwOworKyAgdW5zaWduZWQgc2hvcnQgbWxlbiA9IDA7Cisg CisgICBsc2VlayAodHJhY2VfZmQsIGN1cl9vZmZzZXQsIFNFRUtfU0VUKTsKKyAgIHBvcyA9IDA7 CisgICB3aGlsZSAocG9zIDwgY3VyX2RhdGFfc2l6ZSkKKyAgICAgeworLSAgICAgIHJlYWQgKHRy YWNlX2ZkLCAmYmxvY2tfdHlwZSwgMSk7CisrICAgICAgMSB8fCByZWFkICh0cmFjZV9mZCwgJmJs b2NrX3R5cGUsIDEpOworICAgICAgICsrcG9zOworICAgICAgIHN3aXRjaCAoYmxvY2tfdHlwZSkK KyAJeworQEAgLTMzODcsMTUgKzMzODcsMTUgQEAgdGZpbGVfZ2V0X3RyYWNlX3N0YXRlX3Zhcmlh YmxlX3ZhbHVlIChpbnQgdHN2bnVtLCBMT05HRVNUICp2YWwpCisgCSAgYnJlYWs7CisgCWNhc2Ug J00nOgorIAkgIGxzZWVrICh0cmFjZV9mZCwgOCwgU0VFS19DVVIpOworLQkgIHJlYWQgKHRyYWNl X2ZkLCAmbWxlbiwgMik7CisrCSAgMSB8fCByZWFkICh0cmFjZV9mZCwgJm1sZW4sIDIpOworIAkg IGxzZWVrICh0cmFjZV9mZCwgbWxlbiwgU0VFS19DVVIpOworIAkgIHBvcyArPSAoOCArIDIgKyBt bGVuKTsKKyAJICBicmVhazsKKyAJY2FzZSAnVic6CistCSAgcmVhZCAodHJhY2VfZmQsICZ2bnVt LCA0KTsKKysJICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmdm51bSwgNCk7CisgCSAgaWYgKHRzdm51 bSA9PSB2bnVtKQorIAkgICAgeworLQkgICAgICByZWFkICh0cmFjZV9mZCwgdmFsLCA4KTsKKysJ ICAgICAgMSB8fCByZWFkICh0cmFjZV9mZCwgdmFsLCA4KTsKKyAJICAgICAgcmV0dXJuIDE7Cisg CSAgICB9CisgCSAgbHNlZWsgKHRyYWNlX2ZkLCA4LCBTRUVLX0NVUik7CgpkaWZmIC0tZ2l0IGEv Z2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA0ZTUxM2U5Li4yZDcxZGI4IDEwMDY0NAotLS0gYS9n ZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMzIsMTcgKzMyLDE3IEBAIE5hbWU6IGdkYiV7P193 aXRoX2RlYnVnOi1kZWJ1Z30KICMgU2V0IHZlcnNpb24gdG8gY29udGVudHMgb2YgZ2RiL3ZlcnNp b24uaW4uCiAjIE5PVEU6IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBudW1iZXJlZCBOLk0gZm9y IG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwogIyBhbmQsIHNpbmNlIEphbnVhcnkgMjAwNSwg WC5ZLlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3RzLCBsaWtlIDYuMy41MC4yMDA1MDExMiAjIChk YWlseSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBvciA2LjMuMC4yMDA0MDExMiAoaGVhZCBvZiB0 aGUgcmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjogNy4wLjEKK1ZlcnNpb246IDcuMC41MC4yMDEw MDExNgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQg bnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5h bWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVz dGluZy4KLVJlbGVhc2U6IDI1JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7ZGlzdH0KK1Jl bGVhc2U6IDElez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQogCiBMaWNlbnNlOiBH UEx2MysKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKICMgZnRwOi8vc291cmNld2FyZS5v cmcvcHViL2dkYi9zbmFwc2hvdHMvYnJhbmNoL2dkYi0le3ZlcnNpb259LnRhci5iejIKICMgZnRw Oi8vc291cmNld2FyZS5vcmcvcHViL2dkYi9yZWxlYXNlcy9nZGItJXt2ZXJzaW9ufS50YXIuYnoy Ci1Tb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvcmVsZWFzZXMvZ2RiLSV7dmVy c2lvbn0udGFyLmJ6MgorU291cmNlOiBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3NuYXBz aG90cy9icmFuY2gvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgogQnVpbGRyb290OiAlKG1rdGVtcCAt dWQgJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0tWFhYWFhYKQogVVJM OiBodHRwOi8vZ251Lm9yZy9zb2Z0d2FyZS9nZGIvCiAKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXRj aDExODogZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKIAogIyBWU1lTQ0FMTCBhbmQgUElF CiBQYXRjaDEyMjogZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaAotUGF0Y2gxMjQ6IGdk Yi1hcmNoZXItcGllLnBhdGNoCitQYXRjaDEyNDogZ2RiLWFyY2hlci1waWUtMDMxNS1icmVha3Bv aW50X2FkZHJlc3NfbWF0Y2gucGF0Y2gKIFBhdGNoMzg5OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMu cGF0Y2gKIFBhdGNoMzk0OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRj aAogCkBAIC0yNDAsOCArMjQwLDggQEAgUGF0Y2gyMjk6IGdkYi02LjMtYnoxNDA1MzItcHBjLXVu d2luZGluZy10ZXN0LnBhdGNoCiAjIFRlc3RjYXNlIGZvciBleGVjKCkgZnJvbSB0aHJlYWRlZCBw cm9ncmFtIChCWiAyMDI2ODkpLgogUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2ODktZXhlYy1mcm9t LXB0aHJlYWQtdGVzdC5wYXRjaAogCi0jIEJhY2twb3J0ZWQgcG9zdCBnZGItNy4wIGZpeHVwcy4K LVBhdGNoMjMyOiBnZGItNy4wLXVwc3RyZWFtLnBhdGNoCisjIEJhY2twb3J0ZWQgZml4dXBzIHBv c3QgdGhlIHNvdXJjZSB0YXJiYWxsLgorI1BhdGNoMjMyOiBnZGItdXBzdHJlYW0ucGF0Y2gKIAog IyBUZXN0Y2FzZSBmb3IgUFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChC WiAyMzAwMDApLgogUGF0Y2gyMzQ6IGdkYi02LjYtYnoyMzAwMDAtcG93ZXI2LWRpc2Fzc2VtYmx5 LXRlc3QucGF0Y2gKQEAgLTM3NiwxMiArMzc2LDggQEAgUGF0Y2gzNDk6IGdkYi1hcmNoZXIucGF0 Y2gKIAogIyBGaXggcGFyc2luZyBlbGY2NC1pMzg2IGZpbGVzIGZvciBrZHVtcCBQQUUgdm1jb3Jl IGR1bXBzIChCWiA0NTcxODcpLgogIyAtIFR1cm4gb24gNjQtYml0IEJGRCBzdXBwb3J0LCBnbG9i YWxseSBlbmFibGUgQUNfU1lTX0xBUkdFRklMRS4KLVBhdGNoMzUyOiBnZGItNi44LWJ6NDU3MTg3 LWxhcmdlZmlsZS5wYXRjaAogUGF0Y2gzNjA6IGdkYi02LjgtYno0NTcxODctbGFyZ2VmaWxlLXRl c3QucGF0Y2gKIAotIyBGaXggY29tcGF0aWJpbGl0eSBvZiAtLXdpdGgtc3lzdGVtLXJlYWRsaW5l IGFuZCByZWFkbGluZS02LjArLgotUGF0Y2gzNzU6IGdkYi1yZWFkbGluZS02LjAucGF0Y2gKLQog IyBGaXggcHl0aG9uIHByZXR0eSBwcmludGVycyBsb29rdXAgb24geDg2XzY0LgogUGF0Y2gzNzY6 IGxpYnN0ZGMrKy12My1weXRob24tY29tbW9uLXByZWZpeC5wYXRjaAogCkBAIC0zOTEsMTcgKzM4 Nyw5IEBAIFBhdGNoMzgxOiBnZGItc2ltdWx0YW5lb3VzLXN0ZXAtcmVzdW1lLWJyZWFrcG9pbnQt dGVzdC5wYXRjaAogIyBGaXggR05VL0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3QgcmVhZCBwYXRobmFt ZSBmb3IgbG9hZCBtYXA6IElucHV0L291dHB1dCBlcnJvci4KIFBhdGNoMzgyOiBnZGItY29yZS1v cGVuLXZkc28td2FybmluZy5wYXRjaAogCi0jIFN1cHBvcnQgbXVsdGlwbGUgZGlyZWN0b3JpZXMg Zm9yIGBzZXQgZGVidWctZmlsZS1kaXJlY3RvcnknIChCWiA1Mjg2NjgpLgotUGF0Y2gzODM6IGdk Yi1iejUyODY2OC1zeW1maWxlLXNlcGNyYy5wYXRjaAotUGF0Y2gzODQ6IGdkYi1iejUyODY2OC1z eW1maWxlLWNsZWFudXAucGF0Y2gKLVBhdGNoMzg1OiBnZGItYno1Mjg2Njgtc3ltZmlsZS1tdWx0 aS5wYXRjaAotCiAjIFN1cHBvcnQgR05VIElGVU5DcyAtIGluZGlyZWN0IGZ1bmN0aW9ucyAoQlog NTM5NTkwKS4KIFBhdGNoMzg3OiBnZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCiAKLSMgRml4 IGJwIGNvbmRpdGlvbmFscyBbYnBfbG9jYXRpb24tYWNjZWxdIHJlZ3Jlc3Npb24gKEJaIDUzODYy NikuCi1QYXRjaDM4ODogZ2RiLWJ6NTM4NjI2LWJwX2xvY2F0aW9uLWFjY2VsLWJwLWNvbmQucGF0 Y2gKLQogIyBGaXggY2FsbGJhY2stbW9kZSByZWFkbGluZS02LjAgcmVncmVzc2lvbiBmb3IgQ1RS TC1DLgogUGF0Y2gzOTA6IGdkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoCiAKQEAgLTQyMSwy MyArNDA5LDMwIEBAIFBhdGNoMzM1OiBnZGItcmhlbDUtY29tcGF0LnBhdGNoCiAjIEZpeCBiYWNr d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggRysrIDQuMSBuYW1lc3BhY2VzICI6OiIuCiBQYXRjaDM5 NTogZ2RiLWVtcHR5LW5hbWVzcGFjZS5wYXRjaAogCi0jIEZpeCByZWdyZXNzaW9uIG9uIHJlLXNl dHRpbmcgdGhlIHNpbmdsZSBwcGMgd2F0Y2hwb2ludCBzbG90LgotUGF0Y2gzOTY6IGdkYi1wcGMt aHctd2F0Y2hwb2ludC10d2ljZS5wYXRjaAotCiAjIEZpeCByZWdyZXNzaW9uIGJ5IHB5dGhvbiBv biBpYTY0IGR1ZSB0byBzdGFsZSBjdXJyZW50IGZyYW1lLgogUGF0Y2gzOTc6IGdkYi1mb2xsb3ct Y2hpbGQtc3RhbGUtcGFyZW50LnBhdGNoCiAKLSMgdGVzdHN1aXRlOiBGaXggZmFsc2UgTUkgInVu a25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Npb24uCi1QYXRjaDM5ODogZ2RiLXRl c3RzdWl0ZS11bmtub3duLW91dHB1dC5wYXRjaAotCi0jIEZpeCByZWdyZXNzaW9uIG9mIGdkYi03 LjAuMSBub3QgcHJlc2VydmluZyB0eXBlZGVmIG9mIGEgZmllbGQuCi1QYXRjaDM5OTogZ2RiLWJp dGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2gKLQogIyBGaXggcmVsYXRlZF9icmVha3BvaW50IHN0 YWxlIHJlZiBjcmFzaC4KIFBhdGNoNDAwOiBnZGItc3RhbGUtcmVsYXRlZF9icmVha3BvaW50LnBh dGNoCiAKLSMgRml4IGNyYXNoIHJlYWRpbmcgYnJva2VuIHN0YWJzIChpdDM3NzY3MSkuCi1QYXRj aDQwMTogZ2RiLXN0YWJzLXJlYWRfYXJncy5wYXRjaAorIyBXb3JrYXJvdW5kIGNjYWNoZSBtYWtp bmcgbGluZW5vIG5vbi16ZXJvIGZvciBjb21tYW5kLWxpbmUgZGVmaW5pdGlvbnMuCitQYXRjaDQw MzogZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCisKKyMgSW1wbGVtZW50IGBpbmZvIGNvbW1v bicgZm9yIEZvcnRyYW4uCitQYXRjaDQwNDogZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRj aAorUGF0Y2g0MDU6IGdkYi1mb3J0cmFuLWNvbW1vbi5wYXRjaAorCisjIEZpeCBGb3J0cmFuIGxv Z2ljYWwta2luZD04IChCWiA0NjUzMTApLgorUGF0Y2g0MDY6IGdkYi1mb3J0cmFuLWxvZ2ljYWw4 LnBhdGNoCisKKyMgVGVzdGNhc2UgZm9yICJEbyBub3QgbWFrZSB1cCBsaW5lIGluZm9ybWF0aW9u IiBmaXggYnkgRGFuaWVsIEphY29ib3dpdHouCitQYXRjaDQwNzogZ2RiLWxpbmVuby1tYWtldXAt dGVzdC5wYXRjaAorCisjIFRlc3QgcG93ZXI3IHBwYyBkaXNhc3NlbWJseS4KK1BhdGNoNDA4OiBn ZGItcHBjLXBvd2VyNy10ZXN0LnBhdGNoCisKKyMgRml4IHRyYWNlcG9pbnQuYyBjb21waWxhdGlv biB3YXJuaW5ncy4KK1BhdGNoNDA5OiBnZGItdHJhY2Vwb2ludC13YXJuaW5nLnBhdGNoCiAKIEJ1 aWxkUmVxdWlyZXM6IG5jdXJzZXMtZGV2ZWwlez9faXNhfSB0ZXhpbmZvIGdldHRleHQgZmxleCBi aXNvbiBleHBhdC1kZXZlbCV7P19pc2F9CiBSZXF1aXJlczogcmVhZGxpbmUlez9faXNhfQpAQCAt NTY4LDEyICs1NjMsOCBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpj LWV4cC5jIGdkYi9wLWV4cC5jCiAKICVpZiAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSVwYXRj aDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKLSVwYXRjaDM4MyAtcDEKLSVw YXRjaDM4NCAtcDEKLSVwYXRjaDM4NSAtcDEKLSVwYXRjaDM4OCAtcDEKICVwYXRjaDEyNCAtcDEK ICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQpAQCAtNjcwLDE3ICs2NjEsMjYgQEAgcm0gLWYgZ2Ri L2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNo MzM3IC1wMQogJXBhdGNoMzQzIC1wMQogJXBhdGNoMzQ4IC1wMQotJXBhdGNoMzUyIC1wMQogJXBh dGNoMzYwIC1wMQotJXBhdGNoMzc1IC1wMQogJXBhdGNoMzc2IC1wMQogJXBhdGNoMzgxIC1wMQog JXBhdGNoMzgyIC1wMQogJXBhdGNoMzg3IC1wMQotJXBhdGNoMzg5IC1wMQogJXBhdGNoMzkwIC1w MQogJXBhdGNoMzkxIC1wMQogJXBhdGNoMzkyIC1wMQorJXBhdGNoMzk1IC1wMQorJXBhdGNoMzk3 IC1wMQorJXBhdGNoNDAwIC1wMQorJXBhdGNoNDAzIC1wMQorJXBhdGNoNDA0IC1wMQorJXBhdGNo NDA1IC1wMQorJXBhdGNoMzg5IC1wMQorJXBhdGNoMzk0IC1wMQorJXBhdGNoNDA2IC1wMQorJXBh dGNoNDA3IC1wMQorJXBhdGNoNDA4IC1wMQorJXBhdGNoNDA5IC1wMQogIyBBbHdheXMgdmVyaWZ5 IGl0cyBhcHBsaWNhYmlsaXR5LgogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1IC1wMQpAQCAtNjg4 LDE0ICs2ODgsNiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4 cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzOTMgLXAxIC1SCiAlcGF0Y2gzMzUgLXAxIC1SCiAlZW5k aWYKLSVwYXRjaDM5NCAtcDEKLSVwYXRjaDM5NSAtcDEKLSVwYXRjaDM5NiAtcDEKLSVwYXRjaDM5 NyAtcDEKLSVwYXRjaDM5OCAtcDEKLSVwYXRjaDM5OSAtcDEKLSVwYXRjaDQwMCAtcDEKLSVwYXRj aDQwMSAtcDEKIAogZmluZCAtbmFtZSAiKi5vcmlnIiB8IHhhcmdzIHJtIC1mCiAhIGZpbmQgLW5h bWUgIioucmVqIiAjIFNob3VsZCBub3QgaGFwcGVuLgpAQCAtNzc3LDcgKzc2OSw3IEBAICQoOiBS SEVMLTUgbGlicnBtIGhhcyBpbmNvbXBhdGlibGUgQVBJLiApCQkJXAogJWlmIDAlez9lbDU6MX0K IAktLXdpdGhvdXQtcnBtCQkJCQkJXAogJWVsc2UKLQktLXdpdGgtcnBtPWxpYnJwbS5zby4wCQkJ CQlcCisJLS13aXRoLXJwbT1saWJycG0uc28uMQkJCQkJXAogJWVuZGlmCiAlaWZhcmNoIGlhNjQK IAktLXdpdGgtbGlidW53aW5kCQkJCQlcCkBAIC0xMDE0LDYgKzEwMDYsMTQgQEAgZmkKICVlbmRp ZgogCiAlY2hhbmdlbG9nCisqIFNhdCBKYW4gMTYgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuNTAuMjAxMDAxMTYtMS5mYzEzCistIFVwZ3JhZGUg dG8gdGhlIEZTRiBHREIgc25hcHNob3Q6IDcuMC41MC4yMDEwMDExNgorLSBhcmNoZXItamFua3Jh dG9jaHZpbC1mZWRvcmExMyBjb21taXQ6IDgxODEwYTIwYjJkMmMzYmYxOGUxNTFkZTNjZGRmYzk2 NDQ1YjNjNDYKKy0gW2V4cHItY3VtdWxhdGl2ZV0gQXJjaGVyIGJyYW5jaCBpcyBtaXNzaW5nIGlu IHRoaXMgcmVsZWFzZS4KKy0gVXBkYXRlIHJwbS5vcmcjNzYgd29ya2Fyb3VuZCBmb3IgcnBtLTQu OCB1c2luZyBsaWJycG0uc28uMS4KKy0gRGlzc2VjdCBhcmNoZXItamFua3JhdG9jaHZpbC1taXNj IGludG8gUGF0Y2g0MDMuLi5QYXRjaDQwOC4KKy0gU29tZSByZWdyZXNzaW9ucyBleGlzdCBpbiB0 aGlzIHJlbGVhc2UuCisKICogVHVlIEphbiAxMiAyMDEwIEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC4xLTI1LmZjMTIKIC0gbm9uLWxpYnJwbSBtaXNzaW5n IGRlYnVnaW5mbyB5dW1jb21tYW5kIG5vdyBwcmludHMgYWxzbyAtLWRpc2FibGVyZXBvPScqJwog ICB0byBzYXZlIHNvbWUgYmFuZHdpZHRoIGJ5IHl1bSAoUm9iaW4gR3JlZW4sIEJaIDU1NDE1Miku CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMzY3OGQzYy4uYmFmMmJlNCAx MDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAotNTNlYmFk ZTM5YmZkYzFkMDY3NDRlNTE4OGI2NDM4YjEgIGdkYi03LjAuMS50YXIuYnoyCis0NDZkYjllZDI0 ODlhYjk5ODRmNjc5MjNhNTFiNzRhOSAgZ2RiLTcuMC41MC4yMDEwMDExNi50YXIuYnoyCiA3NTA3 NTQwYzUwYTFlZGViMmZjMjJhMzdiYzRhMDhiOCAgbGlic3RkYysrLXYzLXB5dGhvbi1yMTUxNzk4 LnRhci5iejIK