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: Rebase to FSF GDB 7.4.50.20120703. Date: Thu, 23 Jul 2026 18:30:32 GMT Message-ID: <178483143269.1.9473399094410495818.rpms-gdb-11eae308064f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 11eae308064f98cde92bd70f482d6ad452dd3355 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMTFlYWUzMDgwNjRmOThjZGU5MmJkNzBmNDgyZDZhZDQ1MmRkMzM1NQog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wNy0wM1QyMDo1NDowNSswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArNTA4MS8tMzc2NiBpbiAyNCBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMTFlYWUzMDgw NjRmOThjZGU5MmJkNzBmNDgyZDZhZDQ1MmRkMzM1NT9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiA3LjQuNTAuMjAxMjA3 MDMuCgotIFthcmNoZXItdHJvbWV5LWR3ei1tdWx0aWZpbGUtcmViYXNlXSBNZXJnZSBuZXcgYnJh bmNoIChUb20gVHJvbWV5KS4KLSBbYXJtXSA8LS13aXRoIHRlc3RzdWl0ZT46IERpc2FibGUgZnBj IEJ1aWxkUmVxdWlyZXMgYXMgaXQgaXMgbm90IHlldCBidWlsdC4KLSBSZXZlcnQgZnVuY3Rpb24g cmV0dXJuaW5nIHBvaW50ZXIgZml4IChQUiA5NTE0KSByZWdyZXNzaW5nIEZlZG9yYSBlcnJubyBw YXRjaC4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggMDIx Mjk2NC4uMjkzNmYxYyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBA IC0xLDIgKzEsMiBAQAogL2xpYnN0ZGMrKy12My1weXRob24tcjE1NTk3OC50YXIuYnoyCi0vZ2Ri LTcuNC41MC4yMDEyMDYwMy50YXIuYnoyCisvZ2RiLTcuNC41MC4yMDEyMDcwMy50YXIuYnoyCgpk aWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJl YWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCBjZmZiMDdiLi43NzI4MDcwIDEwMDY0NAotLS0g YS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZl ci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAgICAgKiBnZGIudGV4 aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwNjAyLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA2LTAyIDE4OjE2OjM2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEyLTA2LTAyIDE4OjI1OjIwLjMwMDI1NDAxOSArMDIwMAotQEAgLTEwMjAsNiArMTAyMCwxMiBA QCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCistLS0gZ2RiLTcuNC41 MC4yMDEyMDcwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAxNzozMDowNy4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi0wNy0wMyAxNzozMTo0MC42OTU2NDI0NDkgKzAyMDAKK0BAIC0xMDIzLDYgKzEwMjMs MTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQogIHRoZSBkZWZh dWx0LCB3aGljaCBpcyB0byByZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQgaXMgbmVlZGVkLgog IFRoaXMgbWFrZXMgc3RhcnR1cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0aW9ucyBm YXN0ZXIuCiAgCkBAIC0yOCwxMCArMjgsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2RvYy9nZGIudGV4aW5mbwogIEBlbmQgdGFibGUKICAKICBAbm9kZSBNb2RlIE9wdGlvbnMK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAy Lm9yaWcvZ2RiL21haW4uYwkyMDEyLTA2LTAyIDE4OjE2OjM2LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL21haW4uYwkyMDEyLTA2LTAyIDE4OjI1OjIwLjMwMjI1 NDAxOSArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvbWFpbi5jCTIwMTIt MDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvbWFpbi5jCTIwMTItMDctMDMgMTc6MzE6NDAuNjk2NjQyNDQ4ICswMjAwCiBAQCAtNDE0LDYg KzQxNCw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBub19h cmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAgICAgICAgeyJkYngiLCBub19hcmd1bWVudCwg JmRieF9jb21tYW5kcywgMX0sCkBAIC00OCwxMSArNDgsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL21haW4uYwogICIpLCBzdHJlYW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAo XygiXAogICAgLS1zZT1GSUxFICAgICAgICAgIFVzZSBGSUxFIGFzIHN5bWJvbCBmaWxlIGFuZCBl eGVjdXRhYmxlIGZpbGUuXG5cCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmls ZS5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc3ltZmlsZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMi0wNS0zMSAy MDo0NDo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zeW1m aWxlLmMJMjAxMi0wNi0wMiAxODoyNToyMC4zMzQyNTQwMTMgKzAyMDAKLUBAIC04MCw2ICs4MCw3 IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKKy0tLSBnZGItNy40 LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3N5bWZpbGUuYwkyMDEyLTA3 LTAzIDE3OjMxOjQwLjY5NzY0MjQ0NyArMDIwMAorQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHZv aWQgY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAogIAogIC8qIEdsb2JhbCB2YXJpYWJsZXMg b3duZWQgYnkgdGhpcyBmaWxlLiAgKi8KICBpbnQgcmVhZG5vd19zeW1ib2xfZmlsZXM7CS8qIFJl YWQgZnVsbCBzeW1ib2xzIGltbWVkaWF0ZWx5LiAgKi8KQEAgLTYwLDE5ICs2MCwxOSBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFy aWFibGVzIGFuZCBmdW5jdGlvbnMgcmVmZXJlbmNlZC4gICovCiAgCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0wNi0wMiAxODoxNjozNi4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0wNi0wMiAxODoyNToz Mi44MzcyNTA1MzUgKzAyMDAKLUBAIC02Myw2ICs2Myw3IEBACi0gI2luY2x1ZGUgInZhbHByaW50 LmgiCi0gI2luY2x1ZGUgImdkYmNvcmUuaCIgLyogZm9yIGdudXRhcmdldCAqLworLS0tIGdkYi03 LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDctMDMgMTc6MzA6MDcu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZHdhcmYycmVhZC5j CTIwMTItMDctMDMgMTc6MzE6NTMuNDIxNjI3MTUzICswMjAwCitAQCAtNjUsNiArNjUsNyBAQAor ICNpbmNsdWRlICJnZGIvZ2RiLWluZGV4LmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1 ZGUgImdkYl9iZmQuaCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+ CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xNTE0LDggKzE1MTUsOSBAQCBkd2FyZjJf aGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTU4Nyw4ICsxNTg4LDkgQEAg ZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHZvaWQgKikgbmFtZXMpOwogICAgICAgIGR3YXJmMl9wZXJfb2JqZmls ZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KQEAgLTg0LDEwICs4NCwxMCBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIC8qIFdoZW4gbG9h ZGluZyBzZWN0aW9ucywgd2UgbG9vayBlaXRoZXIgZm9yIHVuY29tcHJlc3NlZCBzZWN0aW9uIG9y IGZvcgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDcwMy9nZGIvdG9wLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw NjAyLm9yaWcvZ2RiL3RvcC5oCTIwMTItMDEtMjMgMTg6MTI6MzAuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdG9wLmgJMjAxMi0wNi0wMiAxODoyNToyMC4zNjcy NTQwMDEgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3RvcC5oCTIwMTIt MDEtMjMgMTg6MTI6MzAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvdG9wLmgJMjAxMi0wNy0wMyAxNzozMTo0MC43MDA2NDI0NDQgKzAyMDAKIEBAIC02MCw2ICs2 MCw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKnMpOwogIAogIC8qIEZy b20gcmFuZG9tIHBsYWNlcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1iejIxNjcxMS1jbG9u ZS1pcy1vdXRlcm1vc3QucGF0Y2ggYi9nZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9z dC5wYXRjaAppbmRleCA3MDRlMjlhLi40MWE4ODdhIDEwMDY0NAotLS0gYS9nZGItNi41LWJ6MjE2 NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAorKysgYi9nZGItNi41LWJ6MjE2NzExLWNsb25l LWlzLW91dGVybW9zdC5wYXRjaApAQCAtMjMsMTAgKzIzLDEwIEBAIGluc3RlYWQuCiAKIAlQb3J0 IHRvIEdEQi02LjcuCiAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC1saW51 eC10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9hbWQ2NC1saW51eC10ZGVw LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2FtZDY0LWxp bnV4LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjA1OjQ1LjM1MjI4MDEyOCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjA2OjI1 LjUzNjI2NTMyNSArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvYW1kNjQt bGludXgtdGRlcC5jCTIwMTItMDYtMTMgMjI6MzY6NDguMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTItMDctMDMgMTc6MzI6 NDYuNTQ3NTYzMzYzICswMjAwCiBAQCAtMjcxLDYgKzI3MSw4MCBAQCBhbWQ2NF9saW51eF9yZWdp c3Rlcl9yZWdncm91cF9wIChzdHJ1Y3QKICAKICAvKiBTZXQgdGhlIHByb2dyYW0gY291bnRlciBm b3IgcHJvY2VzcyBQVElEIHRvIFBDLiAgKi8KQEAgLTEwOCwyMCArMTA4LDIwIEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKICBzdGF0aWMgdm9pZAog IGFtZDY0X2xpbnV4X3dyaXRlX3BjIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBDT1JFX0FE RFIgcGMpCiAgewotQEAgLTEzMzAsNiArMTQwNCw4IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJpIChz dHJ1Y3QgZ2RiYXJjaF9pbmYKK0BAIC0xNTQ3LDYgKzE2MjEsOCBAQCBhbWQ2NF9saW51eF9pbml0 X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCiAgCi0gICB0ZGVwLT54c2F2ZV94Y3IwX29mZnNldCA9 IEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQ7CisgICBhbWQ2NF9saW51eF9pbml0X2FiaV9j b21tb24gKGluZm8sIGdkYmFyY2gpOwogIAogKyAgdGRlcC0+b3V0ZXJtb3N0X2ZyYW1lX3AgPSBh bWQ2NF9saW51eF9vdXRlcm1vc3RfZnJhbWU7CiArCiAgICAvKiBHTlUvTGludXggdXNlcyBTVlI0 LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMuICAqLwogICAgc2V0X3NvbGliX3N2cjRfZmV0Y2hfbGlu a19tYXBfb2Zmc2V0cwogICAgICAoZ2RiYXJjaCwgc3ZyNF9scDY0X2ZldGNoX2xpbmtfbWFwX29m ZnNldHMpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2FtZDY0LXRkZXAuYworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2FtZDY0LXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMTItMDYtMDIgMjE6 MDU6NDUuMzUyMjgwMTI4ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYW1kNjQt dGRlcC5jCTIwMTItMDYtMDIgMjE6MDY6MDAuNDM3Mjc0NTc0ICswMjAwCi1AQCAtMjEzOCw2ICsy MTM4LDcgQEAgYW1kNjRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChzdHJ1Y3QgZgorLS0tIGdk Yi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMTItMDYtMTYgMTc6MjA6 MjIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvYW1kNjQtdGRl cC5jCTIwMTItMDctMDMgMTc6MzI6MTIuMzM1NjA0NDE1ICswMjAwCitAQCAtMjMyNCw2ICsyMzI0 LDcgQEAgYW1kNjRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChzdHJ1Y3QgZgogIHsKICAgIHN0 cnVjdCBhbWQ2NF9mcmFtZV9jYWNoZSAqY2FjaGUgPQogICAgICBhbWQ2NF9mcmFtZV9jYWNoZSAo dGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CkBAIC0xMjksNyArMTI5LDcgQEAgSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL2FtZDY0LXRkZXAuYwogIAogICAgaWYgKCFjYWNoZS0+YmFzZV9w KQogICAgICByZXR1cm4gVU5XSU5EX1VOQVZBSUxBQkxFOwotQEAgLTIxNDYsNiArMjE0NywxMCBA QCBhbWQ2NF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHN0cnVjdCBmCitAQCAtMjMzMiw2ICsy MzMzLDEwIEBAIGFtZDY0X2ZyYW1lX3Vud2luZF9zdG9wX3JlYXNvbiAoc3RydWN0IGYKICAgIGlm IChjYWNoZS0+YmFzZSA9PSAwKQogICAgICByZXR1cm4gVU5XSU5EX09VVEVSTU9TVDsKICAKQEAg LTE0MCw3ICsxNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYW1kNjQtdGRl cC5jCiAgICByZXR1cm4gVU5XSU5EX05PX1JFQVNPTjsKICB9CiAgCi1AQCAtMjE1NSw2ICsyMTYw LDcgQEAgYW1kNjRfZnJhbWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKgorQEAgLTIzNDEs NiArMjM0Niw3IEBAIGFtZDY0X2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICoKICB7 CiAgICBzdHJ1Y3QgYW1kNjRfZnJhbWVfY2FjaGUgKmNhY2hlID0KICAgICAgYW1kNjRfZnJhbWVf Y2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC10ZGVwLmMKICAKICAgIGlmICghY2FjaGUt PmJhc2VfcCkKICAgICAgcmV0dXJuOwotQEAgLTIxNjMsNiArMjE2OSwxMCBAQCBhbWQ2NF9mcmFt ZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqCitAQCAtMjM0OSw2ICsyMzU1LDEwIEBAIGFt ZDY0X2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICoKICAgIGlmIChjYWNoZS0+YmFz ZSA9PSAwKQogICAgICByZXR1cm47CiAgCkBAIC0xNTksMTEgKzE1OSwxMSBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvYW1kNjQtdGRlcC5jCiAgICAoKnRoaXNfaWQpID0gZnJhbWVf aWRfYnVpbGQgKGNhY2hlLT5iYXNlICsgMTYsIGNhY2hlLT5wYyk7CiAgfQogIAotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2kzODYtdGRlcC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDcwMy9nZGIvaTM4Ni10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAy Lm9yaWcvZ2RiL2kzODYtdGRlcC5jCTIwMTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaTM4Ni10ZGVwLmMJMjAxMi0wNi0wMiAyMTow NjowMC40NjYyNzQ1NjIgKzAyMDAKLUBAIC03NjM5LDYgKzc2MzksOSBAQCBpMzg2X2dkYmFyY2hf aW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmln L2dkYi9pMzg2LXRkZXAuYwkyMDEyLTA2LTE4IDE5OjMxOjM0LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2kzODYtdGRlcC5jCTIwMTItMDctMDMgMTc6MzI6MTIu MzM5NjA0NDA5ICswMjAwCitAQCAtNzY1NSw2ICs3NjU1LDkgQEAgaTM4Nl9nZGJhcmNoX2luaXQg KHN0cnVjdCBnZGJhcmNoX2luZm8gaQogIAogICAgdGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQgPSAt MTsKICAKQEAgLTE3MywxMCArMTczLDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9pMzg2LXRkZXAuYwogICAgdGRlcC0+cmVjb3JkX3JlZ21hcCA9IGkzODZfcmVjb3JkX3JlZ21h cDsKICAKICAgIHNldF9nZGJhcmNoX2xvbmdfbG9uZ19hbGlnbl9iaXQgKGdkYmFyY2gsIDMyKTsK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pMzg2LXRkZXAuaAorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL2kzODYtdGRlcC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi9pMzg2LXRkZXAuaAkyMDEyLTA2LTAyIDIxOjA1OjQ1LjM1MjI4 MDEyOCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2kzODYtdGRlcC5oCTIwMTIt MDYtMDIgMjE6MDY6MDAuNDg2Mjc0NTY4ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5v cmlnL2dkYi9pMzg2LXRkZXAuaAkyMDEyLTA2LTEzIDIyOjI5OjE1LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2kzODYtdGRlcC5oCTIwMTItMDctMDMgMTc6MzI6 MTIuMzQwNjA0NDA4ICswMjAwCiBAQCAtMjE5LDYgKzIxOSw5IEBAIHN0cnVjdCBnZGJhcmNoX3Rk ZXAKICAgIGludCAoKmkzODZfc3lzZW50ZXJfcmVjb3JkKSAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSk7CiAgICAvKiBQYXJzZSBzeXNjYWxsIGFyZ3MuICAqLwpAQCAtMTg3LDEwICsxODcsMTAg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2kzODYtdGRlcC5oCiAgfTsKICAKICAv KiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL2lhNjQtdGRlcC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvaWE2NC10 ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2lhNjQt dGRlcC5jCTIwMTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvaWE2NC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjowMC40OTAyNzQ1NTIg KzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2lhNjQtdGRlcC5jCTIwMTIt MDctMDMgMTc6MzA6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvaWE2NC10ZGVwLmMJMjAxMi0wNy0wMyAxNzozMjoxMi4zNDM2MDQ0MDUgKzAyMDAKIEBAIC0y MTc2LDYgKzIxNzYsMTM4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kIGlhNjRf ZnIKICAgIGRlZmF1bHRfZnJhbWVfc25pZmZlcgogIH07CkBAIC0zMzgsMTAgKzMzOCwxMCBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaWE2NC10ZGVwLmMKICAjaWZkZWYgSEFWRV9M SUJVTldJTkRfSUE2NF9ICiAgICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNo LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlhNjRfbGlidW53aW5kX3NpZ3Ry YW1wX2ZyYW1lX3Vud2luZCk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYnQtY2xvbmUtc3Rv cC5jCTIwMTItMDYtMDIgMjE6MDY6MDAuNTE0Mjc0NTQ0ICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuYwkyMDEyLTA3 LTAzIDE3OjMyOjEyLjM0NDYwNDQwNCArMDIwMAogQEAgLTAsMCArMSwzOSBAQAogKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0zODIsMTAg KzM4MiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL2J0LWNsb25lLXN0b3AuYwogKwlmb3IgKDs7KQogKwkJcGF1c2UoKTsKICt9Ci1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25l LXN0b3AuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL2J0LWNsb25lLXN0b3AuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuZXhwCTIwMTItMDYtMDIgMjE6 MDY6MDAuNTE1Mjc0NTQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuZXhwCTIwMTItMDctMDMgMTc6MzI6MTIuMzQ0 NjA0NDA0ICswMjAwCiBAQCAtMCwwICsxLDYxIEBACiArIyBDb3B5cmlnaHQgMjAwNiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQt bG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFz LWFyZy5wYXRjaAppbmRleCA5Njg3NzEyLi5jMjhiMDAwIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1 aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2Nh dGUtY29yZS1hcy1hcmcucGF0Y2gKQEAgLTU4LDEwICs1OCwxMCBAQCBIdHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAJKiBleGVjLmMgKGV4 ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1vcmUgdXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhl CiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L2V4Y2VwdGlvbnMuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2V4Y2VwdGlvbnMu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZXhjZXB0aW9u cy5oCTIwMTItMDEtMDQgMDk6MTc6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvZXhjZXB0aW9ucy5oCTIwMTItMDYtMDIgMTk6NTk6MjIuMTk1MTE0MDUyICsw MjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9leGNlcHRpb25zLmgJMjAxMi0w MS0wNCAwOToxNzowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi9leGNlcHRpb25zLmgJMjAxMi0wNy0wMyAxNzozNjoyNy44NDAyOTcyNjQgKzAyMDAKIEBAIC04 Niw2ICs4Niw5IEBAIGVudW0gZXJyb3JzIHsKICAgIC8qIERXX09QX0dOVV9lbnRyeV92YWx1ZSBy ZXNvbHZpbmcgZmFpbGVkLiAgKi8KICAgIE5PX0VOVFJZX1ZBTFVFX0VSUk9SLApAQCAtNzIsMTkg KzcyLDE5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9leGNlcHRpb25zLmgKICAg IC8qIEFkZCBtb3JlIGVycm9ycyBoZXJlLiAgKi8KICAgIE5SX0VSUk9SUwogIH07Ci1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhlYy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dk Yi9leGVjLmMJMjAxMi0wNS0yOSAxNjoyMzozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9leGVjLmMJMjAxMi0wNi0wMiAxOTo1OToyMi4xOTYxMTQwNTIgKzAy MDAKLUBAIC0zMyw2ICszMyw3IEBACi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKy0tLSBnZGIt Ny40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2V4ZWMuYwkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2V4ZWMuYwkyMDEyLTA3LTAz IDE3OjM3OjI3Ljc3NzIyNTE3NSArMDIwMAorQEAgLTM0LDYgKzM0LDcgQEAKICAjaW5jbHVkZSAi Z2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgorICNpbmNsdWRlICJnZGJfYmZk LmgiCiArI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAj aW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLUBAIC0yNTEsMTIgKzI1MiwyNyBAQCBleGVj X2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyCitAQCAtMjQ1LDEyICsyNDYsMjcg QEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcgogIAogICAgICAgIGlm ICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzIChleGVjX2JmZCwgYmZkX29iamVjdCwgJm1hdGNo aW5nKSkKICAJewpAQCAtMTE0LDExICsxMTQsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL2V4ZWMuYwogKwkJICAgZ2RiX2JmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCksIG1h dGNoaW5nKSk7CiAgCX0KICAKLSAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9ubHkgYmUg cnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29yCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvbWFpbi5jCisgICAgICAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoZXhl Y19iZmQpOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL21haW4uYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvbWFpbi5jCTIwMTItMDYtMDIgMTk6 MTE6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbWFpbi5j CTIwMTItMDYtMDIgMTk6NTk6NDIuMDgyMTA3NDk5ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEy MDcwMy5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNy0wMyAxNzozMTo0MC4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9tYWluLmMJMjAxMi0wNy0wMyAxNzozNjoyNy44 NDMyOTcyNjEgKzAyMDAKIEBAIC0yNjYsNiArMjY2LDM2IEBAIHR5cGVkZWYgc3RydWN0IGNtZGFy ZyB7CiAgLyogRGVmaW5lIHR5cGUgVkVDIChjbWRhcmdfcykuICAqLwogIERFRl9WRUNfTyAoY21k YXJnX3MpOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IDBhOTYwMzUuLmYwZGI1ZDEgMTAwNjQ0Ci0t LSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS5wYXRjaApAQCAtMSwxOCArMSwxOCBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2NvcmVsb3cuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvY29yZWxvdy5jCTIw MTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvY29yZWxvdy5jCTIwMTItMDYtMDIgMjE6MDc6MTYuNDY0MjQ2NTY5ICswMjAwCi1AQCAt NDYsNiArNDYsOSBAQAotICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKKy0tLSBnZGItNy40LjUwLjIw MTIwNzAzLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2NvcmVsb3cuYwkyMDEyLTA3LTAzIDE3 OjMzOjI3Ljg4MjUxMzcxNCArMDIwMAorQEAgLTQ3LDYgKzQ3LDkgQEAKICAjaW5jbHVkZSAicHJv Z3NwYWNlLmgiCiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisgI2luY2x1ZGUgImdkYl9iZmQuaCIK ICsjaW5jbHVkZSAiYXV4di5oIgogKyNpbmNsdWRlICJlbGYvY29tbW9uLmgiCiArI2luY2x1ZGUg ImdkYmNtZC5oIgogIAogICNpZm5kZWYgT19MQVJHRUZJTEUKICAjZGVmaW5lIE9fTEFSR0VGSUxF IDAKLUBAIC0yNzUsNiArMjc4LDUyIEBAIGFkZF90b190aHJlYWRfbGlzdCAoYmZkICphYmZkLCBh c2VjdGlvbgorQEAgLTI3NCw2ICsyNzcsNTIgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFi ZmQsIGFzZWN0aW9uCiAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkOwkJCS8qIFllcywgbWFrZSBp dCBjdXJyZW50LiAgKi8KICB9CiAgCkBAIC02NSw3ICs2NSw3IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9jb3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUgb3BlbnMgYW5kIHNldHMg dXAgdGhlIGNvcmUgZmlsZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMzc3LDYgKzQy NiwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMzc4 LDYgKzQyNywxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCiAg ICBwdXNoX3RhcmdldCAoJmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFp bik7CiAgCkBAIC03OCw3ICs3OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9j b3JlbG93LmMKICAgIC8qIERvIHRoaXMgYmVmb3JlIGFja25vd2xlZGdpbmcgdGhlIGluZmVyaW9y LCBzbyBpZgogICAgICAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgdGhyb3dzIChjYW4gaGFwcGVuIGVh c2lsbHkgaWYgeW91J3JlIGxvYWRpbmcKICAgICAgIGEgY29yZSBmaWxlIHdpdGggdGhlIHdyb25n IGV4ZWMpLCB3ZSBhcmVuJ3QgbGVmdCB3aXRoIHRocmVhZHMKLUBAIC05MzUsNCArOTkwLDExIEBA IF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitAQCAtOTQxLDQgKzk5NiwxMSBAQCBfaW5pdGlh bGl6ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAKICAgIGFkZF90YXJn ZXQgKCZjb3JlX29wcyk7CkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNl dGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2Rv Yy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2RvYy9nZGIudGV4 aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDYtMDIgMjE6MDc6MTYuNDgw MjQ2NTYzICswMjAwCi1AQCAtMTY1MDIsNiArMTY1MDIsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMu CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0w Ny0wMyAxNzozMTo0MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAxNzozMzoxNC42MzA1Mjk1MjggKzAyMDAKK0BA IC0xNjUzMCw2ICsxNjUzMCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxl CiAgCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv ZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMK ICBAY2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFs IHNlY3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9n ZGIvc29saWItc3ZyNC5jCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc29saWItc3ZyNC5jCTIwMTItMDYtMDIgMjE6MDc6MTYu NTEwMjQ2NTUyICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9zb2xpYi1z dnI0LmMJMjAxMi0wNi0wNSAxNzo0NDowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNy0wMyAxNzozMzoxNC42MzE1Mjk1Mjcg KzAyMDAKIEBAIC0xMjI3LDkgKzEyMjcsNTIgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQURE UiBsbSwgc3RydWN0CiAgCSAgY29udGludWU7CiAgCX0KQEAgLTE4MiwxNCArMTgyLDE0IEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zb2xpYi1zdnI0LmMKICAgICAgICB4ZnJlZSAo YnVmZmVyKTsKICAKICAgICAgICAvKiBJZiB0aGlzIGVudHJ5IGhhcyBubyBuYW1lLCBvciBpdHMg bmFtZSBtYXRjaGVzIHRoZSBuYW1lCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxm cmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZWxmcmVhZC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMi0wNi0w MiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9l bGZyZWFkLmMJMjAxMi0wNi0wMiAyMTowNzo1Ni4yNjQyMzIwNDkgKzAyMDAKLUBAIC00NCw2ICs0 NCwxMSBAQAotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAz Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2VsZnJlYWQuYwkyMDEyLTA3LTAzIDE3OjM0OjA0 Ljc3ODQ2ODk2NSArMDIwMAorQEAgLTQ1LDYgKzQ1LDExIEBACiAgI2luY2x1ZGUgInJlZ2NhY2hl LmgiCiAgI2luY2x1ZGUgImJjYWNoZS5oIgorICNpbmNsdWRlICJnZGJfYmZkLmgiCiArI2luY2x1 ZGUgImxpYmJmZC5oIgogKyNpbmNsdWRlICJnZGJjb3JlLmgiCiArI2luY2x1ZGUgImdkYmNtZC5o IgpAQCAtMTk4LDcgKzE5OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZy ZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBA IC0xMDcyLDE2ICsxMDc3LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3Ag KHN0cnUKK0BAIC0xMDc0LDE2ICsxMDc5LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0 dXJuX3N0b3AgKHN0cnUKICAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscywg c2Fsc19lbmQpOwogIH0KICAKQEAgLTI2Niw3ICsyNjYsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgewogICAgc3RydWN0IGJ1aWxkX2lkICpyZXR2YWw7CiAg Ci1AQCAtMTA5Nyw2ICsxMTUxLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCitA QCAtMTA5OSw2ICsxMTUzLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICBy ZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYxNSw3ICs2MTUsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJTEVOQU1FIGhhcyBOVF9H TlVfQlVJTERfSUQgbWF0Y2hpbmcgdGhlIENIRUNLIHZhbHVlLiAgKi8KICAKICBzdGF0aWMgaW50 Ci1AQCAtMTExMSw3ICsxNTA3LDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxl bmFtZSwgcworQEAgLTExMTMsNyArMTUwOSw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hh ciAqZmlsZW5hbWUsIHMKICAgIGlmIChhYmZkID09IE5VTEwpCiAgICAgIHJldHVybiAwOwogIApA QCAtNjI0LDcgKzYyNCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFk LmMKICAKICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChfKCJGaWxlIFwiJXNc IiBoYXMgbm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7Ci1AQCAtMTEyOSwx NyArMTUyNSwxOCBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitA QCAtMTEzMSwxNyArMTUyNywxOCBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBzCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTY0Nyw3ICs2NDcsNyBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3 YXJkIGNvbXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3 aWxsCiAgICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTExNTIs NiArMTU0OSw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BA IC0xMTU0LDYgKzE1NTEsOCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1 aWxkCiAgICAgICAgc2l6ZV90IGRlYnVnZGlyX2xlbiA9IHN0cmxlbiAoZGVidWdkaXIpOwogICAg ICAgIGdkYl9ieXRlICpkYXRhID0gYnVpbGRfaWQtPmRhdGE7CiAgICAgICAgc2l6ZV90IHNpemUg PSBidWlsZF9pZC0+c2l6ZTsKQEAgLTY1Niw3ICs2NTYsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgICAgICAgY2hhciAqczsKICAKICAgICAgICBtZW1jcHkg KGxpbmssIGRlYnVnZGlyLCBkZWJ1Z2Rpcl9sZW4pOwotQEAgLTExNjYsMzcgKzE1NjUsMjQwIEBA IGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BAIC0xMTY4LDM3ICsx NTY3LDI0MCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAgCSpz KysgPSAnLyc7CiAgICAgICAgd2hpbGUgKHNpemUtLSA+IDApCiAgCXMgKz0gc3ByaW50ZiAocywg IiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOwpAQCAtOTA4LDcgKzkwOCw3IEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKICAgICAgICB4ZnJlZSAoYnVpbGRfaWQp OwogICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBhIHN0cmlwcGVkIC5kZWJ1ZyBmaWxlLiAg Ki8KICAgICAgICBpZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMCi1AQCAtMTIwNyw3ICsxODA5LDcg QEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgorQEAgLTEyMDksNyAr MTgxMSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKICAJICB4 ZnJlZSAoYnVpbGRfaWRfbmFtZSk7CiAgCX0KICAgICAgICBlbHNlIGlmIChidWlsZF9pZF9uYW1l ICE9IE5VTEwpCkBAIC05MTcsNyArOTE3LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2VsZnJlYWQuYwogICAgICB9CiAgICByZXR1cm4gTlVMTDsKICB9Ci1AQCAtMTQyNyw5ICsy MDI5LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0x NDM2LDkgKzIwMzgsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZp bAogICAgICAgYC5ub3RlLmdudS5idWlsZC1pZCcuICAqLwogICAgZWxzZSBpZiAoIW9iamZpbGVf aGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkpCiAgICAgIHsKQEAgLTkzMCw3ICs5MzAsNyBA QCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgaWYg KGRlYnVnZmlsZSA9PSBOVUxMKQogIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfZGVidWdsaW5rIChvYmpmaWxlKTsKLUBAIC0xNDQxLDYgKzIwNDQsMTIgQEAgZWxmX3N5 bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0NTAsNiArMjA1MywxMiBA QCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgCSAgc3ltYm9sX2Zp bGVfYWRkX3NlcGFyYXRlIChhYmZkLCBzeW1maWxlX2ZsYWdzLCBvYmpmaWxlKTsKICAJICB4ZnJl ZSAoZGVidWdmaWxlKTsKICAJfQpAQCAtOTQxLDkgKzk0MSw5IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKICsKICsgICAgICB4ZnJlZSAoYnVpbGRfaWRfZmlsZW5h bWUpOwogICAgICB9Ci0gfQogIAotQEAgLTE3NzAsNCArMjM3OSwxNiBAQCBfaW5pdGlhbGl6ZV9l bGZyZWFkICh2b2lkKQorICAgaWYgKHN5bXRhYl9jcmVhdGVfZGVidWcpCitAQCAtMTc4Miw0ICsy MzkxLDE2IEBAIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAgCiAgICBlbGZfb2JqZmlsZV9n bnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAgIGdudV9p ZnVuY19mbnNfcCA9ICZlbGZfZ251X2lmdW5jX2ZuczsKQEAgLTk2MCwxMCArOTYwLDEwIEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKICsKICsgIG9ic2VydmVyX2F0 dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCk7 CiAgfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjA2MDIub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUx MjcyICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5oCTIwMTItMDYt MDIgMjE6MDc6MTYuNTI0MjQ2NTQ3ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmln L2dkYi9zeW1maWxlLmgJMjAxMi0wNS0yNSAwMDoxNDozNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zeW1maWxlLmgJMjAxMi0wNy0wMyAxNzozMzoxNC42MzI1 Mjk1MjYgKzAyMDAKIEBAIC02MTUsNiArNjE1LDEzIEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21l bnRfZGF0YSAoc3RydWN0IHMKICAKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKmluY3JlbWVudF9y ZWFkaW5nX3N5bXRhYiAodm9pZCk7CkBAIC05NzgsMTAgKzk3OCwxMCBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAK ICAvKiBOYW1lcyBmb3IgYSBkd2FyZjIgZGVidWdnaW5nIHNlY3Rpb24uICBUaGUgZmllbGQgTk9S TUFMIGlzIHRoZSBub3JtYWwKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDIxOjA3OjAzLjY5NTI1MTI3MiArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEy LTA2LTAyIDIxOjA3OjE2LjUyNjI0NjU0NiArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDctMDMgMTc6MzA6MDkuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCTIwMTItMDctMDMgMTc6MzM6MTQuNjMzNTI5NTI0ICswMjAwCiBAQCAtMTM4OCw2ICsxMzg4 LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxk bid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KQEAgLTk5OSwxMCArOTk5LDEwIEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0 dXJuIDA7CiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYw Mi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTItMDYtMDIgMjE6MDc6 MDMuNjk1MjUxMjcyICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDEyLTA2LTAyIDIxOjA3OjE2LjUzNTI0NjU0NCArMDIwMAor LS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0 LmV4cAkyMDEyLTA0LTE0IDE0OjE4OjQ0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMi0wNy0wMyAxNzoz MzoxNC42MzM1Mjk1MjQgKzAyMDAKIEBAIC0yMTMsNiArMjEzLDE2IEBAIHByb2MgZGVmYXVsdF9t aV9nZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3 aWR0aCB0byAwLiIKICAJfQpAQCAtMTAyMCwxMCArMTAyMCwxMCBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogICAgICAjIElmIGFs bG93aW5nIHRoZSBpbmZlcmlvciB0byBoYXZlIGl0cyBvd24gUFRZIHRoZW4gYXNzaWduIHRoZSBp bmZlcmlvcgogICAgICAjIGl0cyBvd24gdGVybWluYWwgZGV2aWNlIGhlcmUuCiAgICAgIGlmIHsg JHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvb2JqZmlsZXMuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvb2JqZmlsZXMuaAky MDEyLTA2LTAyIDIxOjA3OjAzLjY5NTI1MTI3MiArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL29iamZpbGVzLmgJMjAxMi0wNi0wMiAyMTowNzoxNi41MzkyNDY1NDEgKzAyMDAKKy0t LSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL29iamZpbGVzLmgJMjAxMi0wNy0wMyAxNzoz MDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9vYmpmaWxl cy5oCTIwMTItMDctMDMgMTc6MzM6MTQuNjMzNTI5NTI0ICswMjAwCiBAQCAtNDMyLDYgKzQzMiwx MCBAQCBzdHJ1Y3Qgb2JqZmlsZQogIAogICNkZWZpbmUgT0JKRl9NQUlOTElORSAoMSA8PCA1KQoK ZGlmZiAtLWdpdCBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1pcy1kZWZhdWx0LnBh dGNoIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gKaW5k ZXggNTBhZjc5Ni4uYmZjOGU5NiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2lu Zy1zdGVwLWlzLWRlZmF1bHQucGF0Y2gKKysrIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1z dGVwLWlzLWRlZmF1bHQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9pbmZy dW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvaW5mcnVu LmMJMjAxMS0wNy0yMiAxOToxMjo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9pbmZydW4uYwkyMDExLTA3LTIyIDE5OjE3OjA2LjAwMDAwMDAwMCArMDIwMAot QEAgLTE1NDksNyArMTU0OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzY2hlZHVsZXJfZW51bXNb XSA9IHsKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTItMDct MDMgMjA6MjY6MjUuMDYwOTQwNzY1ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv aW5mcnVuLmMJMjAxMi0wNy0wMyAyMDoyNjozMi44MDg5Mjk4NjAgKzAyMDAKK0BAIC0xNTkxLDcg KzE1OTEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2NoZWR1bGVyX2VudW1zCiAgICBz Y2hlZGxvY2tfc3RlcCwKICAgIE5VTEwKICB9OwpAQCAtMTEsMTEgKzExLDExIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogIHN0YXRpYyB2b2lkCiAgc2hvd19zY2hl ZHVsZXJfbW9kZSAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKICAJCSAgICAg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTEtMDEtMDEgMTY6MzM6NDcuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25z b2xlLmV4cAkyMDExLTA3LTIyIDE5OjE3OjA2LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ3LDYgKzQ3 LDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LworLS0tIGdkYi03 LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAky MDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAJMjAxMi0wNy0wMyAyMDoyNjoz Mi44MDk5Mjk4NTggKzAyMDAKK0BAIC00Niw2ICs0Niw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8KICAKICBtaV9ydW5fdG9fbWFpbgogIApAQCAtMjUsMTEgKzI1 LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p LWNvbnNvbGUuZXhwCiAgIyBOZXh0IG92ZXIgdGhlIGhlbGxvKCkgY2FsbCB3aGljaCB3aWxsIHBy b2R1Y2UgbG90cyBvZiBvdXRwdXQKICBtaV9nZGJfdGVzdCAiMjIwLWV4ZWMtbmV4dCIgXAogIAkg ICAgIjIyMFxcXnJ1bm5pbmcoXHJcblxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCIpPyIgXAot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNv bGUuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aTItY29uc29sZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIwMTEtMDYtMjMgMTE6NDA6NTAu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taTItY29uc29sZS5leHAJMjAxMS0wNy0yMiAxOToxNzoyNy4wMDAwMDAwMDAgKzAyMDAK LUBAIC00Nyw2ICs0Nyw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8KKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWky LWNvbnNvbGUuZXhwCTIwMTItMDctMDMgMjA6MjY6MjUuMDYwOTQwNzY1ICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJMjAx Mi0wNy0wMyAyMDoyNjozMi44MDk5Mjk4NTggKzAyMDAKK0BAIC00Niw2ICs0Niw5IEBAIGlmICB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8KICAKICBtaV9ydW5fdG9fbWFpbgog IApAQCAtMzksMTEgKzM5LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAogICMgTmV4dCBvdmVyIHRoZSBoZWxsbygpIGNh bGwgd2hpY2ggd2lsbCBwcm9kdWNlIGxvdHMgb2Ygb3V0cHV0CiAgbWlfZ2RiX3Rlc3QgIjIyMC1l eGVjLW5leHQiICIyMjBcXF5ydW5uaW5nKFxyXG4pPyhcXCpydW5uaW5nLHRocmVhZC1pZD1cImFs bFwiKT8iIFwKICAJIlN0YXJ0ZWQgc3RlcCBvdmVyIGhlbGxvIgotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGku ZXhwCTIwMTEtMDQtMjcgMTI6MTc6MzguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTEtMDctMjIgMTk6MTc6 MDYuMDAwMDAwMDAwICswMjAwCi1AQCAtMTc2LDcgKzE3Niw3IEBAIG1pX2V4ZWN1dGVfdG8gImV4 ZWMtY29udGludWUiICJicmVha3BvaW4KKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2 NSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkt Y2xpLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjMyLjgxMDkyOTg1NiArMDIwMAorQEAgLTE3NSw3ICsx NzUsNyBAQCBtaV9leGVjdXRlX3RvICJleGVjLWNvbnRpbnVlIiAiYnJlYWtwb2luCiAgIyBUZXN0 IHRoYXQgdGhlIHRva2VuIGlzIG91dHB1dCBldmVuIGZvciBDTEkgY29tbWFuZHMKICAjIEFsc28g dGVzdCB0aGF0ICpzdG9wcGVkIGluY2x1ZGVzIGZyYW1lIGluZm9ybWF0aW9uLgogIG1pX2dkYl90 ZXN0ICIzNCBuZXh0IiBcCkBAIC01MiwzICs1MiwyNSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiAgICAgICIzNCBuZXh0OiBydW4i CiAgCiAgaWYgeyEkYXN5bmN9IHsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCTIwMTItMDYt MjkgMDA6MTE6MjMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4cAkyMDEyLTA3LTAzIDIwOjI5OjAzLjU3Mzcx NzY1MSArMDIwMAorQEAgLTU2LDcgKzU2LDcgQEAgY2xvc2UgJGNoYW4KKyAKKyBzZXQgbWlfbG9n X3Byb21wdCAiXFsoXF1nZGJcWylcXSBcW1xyXG5cXSsiCisgCistaWYgW3JlZ2V4cCAiXFxeZG9u ZVxbXHJcblxdKyRtaV9sb2dfcHJvbXB0XFxecnVubmluZ1xbXHJcblxdK1xcKnJ1bm5pbmcsdGhy ZWFkLWlkPVwiYWxsXCJcW1xyXG5cXSskbWlfbG9nX3Byb21wdFxcKnN0b3BwZWQscmVhc29uPVwi ZW5kLXN0ZXBwaW5nLXJhbmdlXCIsLipcW1xyXG5cXSskbWlfbG9nX3Byb21wdFxcXnJ1bm5pbmdc W1xyXG5cXStcXCpydW5uaW5nLHRocmVhZC1pZD1cImFsbFwiXFtcclxuXF0rJG1pX2xvZ19wcm9t cHRcXCpzdG9wcGVkLHJlYXNvbj1cImVuZC1zdGVwcGluZy1yYW5nZVwiLC4qXFtcclxuXF0rJG1p X2xvZ19wcm9tcHQiICRsb2djb250ZW50XSB7CisraWYgW3JlZ2V4cCAiXFxeZG9uZVxbXHJcblxd KyRtaV9sb2dfcHJvbXB0XFxecnVubmluZ1xbXHJcblxdK1xcKnJ1bm5pbmcsdGhyZWFkLWlkPVwi MVwiXFtcclxuXF0rJG1pX2xvZ19wcm9tcHRcXCpzdG9wcGVkLHJlYXNvbj1cImVuZC1zdGVwcGlu Zy1yYW5nZVwiLC4qXFtcclxuXF0rJG1pX2xvZ19wcm9tcHRcXF5ydW5uaW5nXFtcclxuXF0rXFwq cnVubmluZyx0aHJlYWQtaWQ9XCIxXCJcW1xyXG5cXSskbWlfbG9nX3Byb21wdFxcKnN0b3BwZWQs cmVhc29uPVwiZW5kLXN0ZXBwaW5nLXJhbmdlXCIsLipcW1xyXG5cXSskbWlfbG9nX3Byb21wdCIg JGxvZ2NvbnRlbnRdIHsKKyAgICAgcGFzcyAiTG9nIGZpbGUgY29udGVudHMiCisgfSBlbHNlIHsK KyAgICAgZmFpbCAiTG9nIGZpbGUgY29udGVudHMiCitAQCAtNzksNyArNzksNyBAQCBzZXQgY2hh biBbb3BlbiAkbWlsb2dmaWxlXQorIHNldCBsb2djb250ZW50IFtyZWFkICRjaGFuXQorIGNsb3Nl ICRjaGFuCisgCistaWYgW3JlZ2V4cCAiMTAwMVxcXmRvbmVcW1xyXG5cXSskbWlfbG9nX3Byb21w dC4qMTAwMlxcXnJ1bm5pbmdcW1xyXG5cXStcXCpydW5uaW5nLHRocmVhZC1pZD1cImFsbFwiXFtc clxuXF0rJG1pX2xvZ19wcm9tcHRcXCpzdG9wcGVkLHJlYXNvbj1cImVuZC1zdGVwcGluZy1yYW5n ZVwiLC4qXFtcclxuXF0rJG1pX2xvZ19wcm9tcHQuKjEwMDNcXF5ydW5uaW5nXFtcclxuXF0rXFwq cnVubmluZyx0aHJlYWQtaWQ9XCJhbGxcIlxbXHJcblxdKyRtaV9sb2dfcHJvbXB0XFwqc3RvcHBl ZCxyZWFzb249XCJlbmQtc3RlcHBpbmctcmFuZ2VcIiwuKlxbXHJcblxdKyRtaV9sb2dfcHJvbXB0 IiAkbG9nY29udGVudF0geworK2lmIFtyZWdleHAgIjEwMDFcXF5kb25lXFtcclxuXF0rJG1pX2xv Z19wcm9tcHQuKjEwMDJcXF5ydW5uaW5nXFtcclxuXF0rXFwqcnVubmluZyx0aHJlYWQtaWQ9XCIx XCJcW1xyXG5cXSskbWlfbG9nX3Byb21wdFxcKnN0b3BwZWQscmVhc29uPVwiZW5kLXN0ZXBwaW5n LXJhbmdlXCIsLipcW1xyXG5cXSskbWlfbG9nX3Byb21wdC4qMTAwM1xcXnJ1bm5pbmdcW1xyXG5c XStcXCpydW5uaW5nLHRocmVhZC1pZD1cIjFcIlxbXHJcblxdKyRtaV9sb2dfcHJvbXB0XFwqc3Rv cHBlZCxyZWFzb249XCJlbmQtc3RlcHBpbmctcmFuZ2VcIiwuKlxbXHJcblxdKyRtaV9sb2dfcHJv bXB0IiAkbG9nY29udGVudF0geworICAgICBwYXNzICJSZWRpcmVjdCBsb2cgZmlsZSBjb250ZW50 cyIKKyB9IGVsc2UgeworICAgICBmYWlsICJSZWRpcmVjdCBsb2cgZmlsZSBjb250ZW50cyIKCmRp ZmYgLS1naXQgYS9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gg Yi9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gKaW5kZXggNDRj YzdiYS4uMTM5NjZmMiAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFj aC1zdG9wcGVkLnBhdGNoCisrKyBiL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3Rv cHBlZC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2xpbnV4LW5hdC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQu YwkyMDEyLTA2LTAyIDIwOjUxOjU4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDYtMDIgMjA6NTQ6MzAuMTI3NTI5MTU5ICswMjAw CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA3LTAz IDE3OjQ2OjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2xp bnV4LW5hdC5jCTIwMTItMDctMDMgMTc6NTc6MjkuNjA4NzM0OTMzICswMjAwCiBAQCAtMTgwLDYg KzE4MCw5IEBAIGJsb2NrZWQuICAqLwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyAqbGludXhf b3BzOwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyBsaW51eF9vcHNfc2F2ZWQ7CkBAIC01NSw4 ICs1NSw4IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogIH0K ICAKICAvKiBSZXN1bWUgTFAuICAqLwotQEAgLTIwODMsNiArMjA5OSwxNCBAQCBsaW51eF9uYXRf cmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICAgICByZXN1bWVfY2FsbGJhY2suICAq LworQEAgLTIxMDQsNiArMjEyMCwxNCBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzCisgICAgICBsaW51eF9uYXRfcmVzdW1lX2NhbGxiYWNrLiAgKi8KICAgIGxwLT5z dG9wcGVkID0gMDsKICAKICsgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGFyZSBnb2luZyB0byByZXN1 bWUgdGhlIGluZmVyaW9yIGFuZCBpZiB3ZQpAQCAtNjgsOSArNjgsOSBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMKICsgICAgcGlkX3dhc19zdG9wcGVkID0gMDsK ICsKICAgIGlmIChyZXN1bWVfbWFueSkKLSAgICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWQsIHJl c3VtZV9jYWxsYmFjaywgTlVMTCk7CisgICAgIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkLCBsaW51 eF9uYXRfcmVzdW1lX2NhbGxiYWNrLCBOVUxMKTsKICAKLUBAIC00MTMyLDYgKzQxNTYsOCBAQCBs aW51eF9uYXRfbW91cm5faW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfCitAQCAtNDEyOSw2ICs0MTUz LDggQEAgbGludXhfbmF0X21vdXJuX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0XwogICAgICAgICB0 aGVyZSBhcmUgb3RoZXIgdmlhYmxlIGZvcmtzIHRvIGRlYnVnLiAgRGVsZXRlIHRoZSBleGl0aW5n CiAgICAgICAgIG9uZSBhbmQgY29udGV4dC1zd2l0Y2ggdG8gdGhlIGZpcnN0IGF2YWlsYWJsZS4g ICovCiAgICAgIGxpbnV4X2ZvcmtfbW91cm5faW5mZXJpb3IgKCk7CkBAIC03OSwxMSArNzksMTEg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8q IENvbnZlcnQgYSBuYXRpdmUvaG9zdCBzaWdpbmZvIG9iamVjdCwgaW50by9mcm9tIHRoZSBzaWdp bmZvIGluIHRoZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0 YWNoLXN0b3BwZWQuZXhwCTIwMTItMDEtMDQgMDk6Mjc6NTUuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9w cGVkLmV4cAkyMDEyLTA2LTAyIDIwOjUyOjA4Ljg5MzUwNTQwMyArMDIwMAotQEAgLTYzLDcgKzYz LDY1IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0geworLS0tIGdkYi03LjQuNTAuMjAx MjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAky MDEyLTA2LTI2IDIxOjIzOjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAxMi0wNy0w MyAxNzo1Njo0My43OTc3OTAxMjAgKzAyMDAKK0BAIC02MSw3ICs2MSw2NSBAQCBwcm9jIGNvcmVm dW5jIHsgdGhyZWFkdHlwZSB9IHsKICAgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCiAgICAgIGdkYl9sb2FkICR7YmluZmlsZX0KICAKCmRpZmYgLS1naXQgYS9nZGItNy4y LjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1Zy1maWxlcy5wYXRjaCBiL2dk Yi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNo CmluZGV4IGIwMTE2NTguLmJlY2Y4MGUgMTAwNjQ0Ci0tLSBhL2dkYi03LjIuNTAtc3BhcmMtYWRk LXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCisrKyBiL2dkYi03LjIuNTAt c3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCkBAIC0xLDgg KzEsOCBAQAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2dkYl9iZmQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6Mzc6 MTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVh ZC5jCTIwMTEtMDctMjIgMTk6NDQ6NDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNjcsMTIgKzY3LDE0 IEBACistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9nZGJfYmZkLmMJMjAxMi0wNy0w MyAxNzozMDowNy4zNTY3NTQ2NTUgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9n ZGJfYmZkLmMJMjAxMi0wNy0wMyAxNzo0Mzo1Mi41NjU3NjI0NTQgKzAyMDAKK0BAIC0yNiwxMiAr MjYsMTQgQEAKICAjaWZkZWYgSEFWRV9aTElCX0gKICAjaW5jbHVkZSA8emxpYi5oPgogICNlbmRp ZgpAQCAtMTUsMzcgKzE1LDM3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2Fy ZjJyZWFkLmMKICAjZW5kaWYKICsjZW5kaWYKICAKLSB0eXBlZGVmIHN0cnVjdCBzeW1ib2wgKnN5 bWJvbHA7Ci0gREVGX1ZFQ19QIChzeW1ib2xwKTsKLUBAIC0xNjE4LDYgKzE2MjAsNyBAQCBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCi0gICAgICAgICB9Ci0gICAgIH0K KyAvKiBBbiBvYmplY3Qgb2YgdGhpcyB0eXBlIGlzIHN0b3JlZCBpbiB0aGUgc2VjdGlvbidzIHVz ZXIgZGF0YSB3aGVuCisgICAgbWFwcGluZyBhIHNlY3Rpb24uICAqLworQEAgLTE4MSw2ICsxODMs NyBAQCBmcmVlX29uZV9iZmRfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvCiAgCisgICBpZiAo c2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0gTlVMTCkKKyAgICAgewogKyNpZm5kZWYgX19z cGFyY19fCiAgI2lmZGVmIEhBVkVfTU1BUAotICAgaWYgKHBhZ2VzaXplID09IDApCi0gICAgIHBh Z2VzaXplID0gZ2V0cGFnZXNpemUgKCk7Ci1AQCAtMTY0MSw2ICsxNjQ0LDcgQEAgZHdhcmYyX3Jl YWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iagorICAgICAgIGlmIChzZWN0LT5tYXBfYWRk ciAhPSBOVUxMKQorIAl7CitAQCAtMTkxLDYgKzE5NCw3IEBAIGZyZWVfb25lX2JmZF9zZWN0aW9u IChiZmQgKmFiZmQsIGFzZWN0aW8KICAJfQotICAgICB9CisgICAgICAgZWxzZQogICNlbmRpZgog KyNlbmRpZgorIAl4ZnJlZSAoc2VjdC0+ZGF0YSk7CisgICAgIH0KKyB9CitAQCAtNDI1LDYgKzQy OSw3IEBAIGdkYl9iZmRfbWFwX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0cCwgYmYKKyAgICAgICAg IH0KKyAgICAgfQogIAotICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90 LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCi0gICBpbmZvLT5idWZmZXIgPSBidWYKLUBAIC0xNTk4 Myw2ICsxNTk4Nyw3IEBAIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoc3RydWN0IGR3YXJmMl9zZWMK LSB7Ci0gICBpZiAoaW5mby0+bWFwX2FkZHIgIT0gTlVMTCkKLSAgICAgewogKyNpZm5kZWYgX19z cGFyY19fCiAgI2lmZGVmIEhBVkVfTU1BUAotICAgICAgIGludCByZXM7Ci0gCi1AQCAtMTU5OTIs NiArMTU5OTcsNyBAQCBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjCi0g ICAgICAgLyogV2l0aG91dCBIQVZFX01NQVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJl Z2luIHdpdGguICAqLwotICAgICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJubyBtbWFwIHN1 cHBvcnQiKTsKLSAjZW5kaWYKKyAgIHsKKyAgICAgLyogVGhlIHBhZ2Ugc2l6ZSwgdXNlZCB3aGVu IG1tYXBwaW5nLiAgKi8KK0BAIC00NTgsNiArNDYzLDcgQEAgZ2RiX2JmZF9tYXBfc2VjdGlvbiAo YXNlY3Rpb24gKnNlY3RwLCBiZgorICAgICAgIH0KKyAgIH0KKyAjZW5kaWYgLyogSEFWRV9NTUFQ ICovCiArI2VuZGlmCi0gICAgIH0KLSB9CisgCisgICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UgYXJl IGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KICAKCmRpZmYgLS1naXQgYS9n ZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFyY2hlci5wYXRjaAppbmRleCA2YjRlNzk5Li4wZDE1NjI2 IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLnBhdGNoCisrKyBiL2dkYi1hcmNoZXIucGF0Y2gKQEAg LTIsMTggKzIsNDYgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNo ZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50 CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1pdCBkMTAyMTMyMjAxOTE1ODk4MTQ3MTRkNzFlZjBmNWJh NjRmYmMzYjc1Citjb21taXQgZjA3YTJhMjRjNDkzZWViYzlkZjZiN2M5Y2E4YzdmZTA4MTNhYWZm ZAogCiBicmFuY2ggYGFyY2hlcicgLSB0aGUgbWVyZ2Ugb2YgYnJhbmNoZXM6CiBhcmNoZXItamFu a3JhdG9jaHZpbC12bGEKIGFyY2hlci10cm9tZXktcHl0aG9uCithcmNoZXItdHJvbWV5LWR3ei1t dWx0aWZpbGUtcmViYXNlCiAKIAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9N YWtlZmlsZS5pbgotaW5kZXggYmY2YjBkYS4uZjBkNDZkZCAxMDA2NDQKK2luZGV4IGE0MWNmZjku LmQ3Nzg2YTYgMTAwNjQ0CiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9NYWtlZmls ZS5pbgotQEAgLTEzMDQsNiArMTMwNCwxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmlu IGNvbmZpZy5zdGF0dXMKK0BAIC03MDQsNyArNzA0LDcgQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFk YS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwKKyAJ ZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgXAorIAlmLWV4cC55IGYtbGFuZy5jIGYtdHlwZXByaW50 LmMgZi12YWxwcmludC5jIGZpbGVzeXN0ZW0uYyBcCisgCWZpbmRjbWQuYyBmaW5kdmFyLmMgZnJh bWUuYyBmcmFtZS1iYXNlLmMgZnJhbWUtdW53aW5kLmMgXAorLQlnZGJhcmNoLmMgYXJjaC11dGls cy5jIGdkYnR5cGVzLmMgZ251LXYyLWFiaS5jIGdudS12My1hYmkuYyBcCisrCWdkYmFyY2guYyBh cmNoLXV0aWxzLmMgZ2RiX2JmZC5jIGdkYnR5cGVzLmMgZ251LXYyLWFiaS5jIGdudS12My1hYmku YyBcCisgCWdvLWV4cC55IGdvLWxhbmcuYyBnby10eXBlcHJpbnQuYyBnby12YWxwcmludC5jIFwK KyAJaW5mLWxvb3AuYyBcCisgCWluZmNhbGwuYyBcCitAQCAtODI5LDcgKzgyOSw3IEBAIGdudWxp Yi9pbXBvcnQvZXh0cmEvc25pcHBldC93YXJuLW9uLXVzZS5oIFwKKyBnbnVsaWIvaW1wb3J0L3N0 ZGRlZi5pbi5oIGdudWxpYi9pbXBvcnQvaW50dHlwZXMuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lw LmggXAorIGNvbW1vbi9jb21tb24tdXRpbHMuaCBjb21tb24veG1sLXV0aWxzLmggY29tbW9uL2J1 ZmZlci5oIGNvbW1vbi9wdGlkLmggXAorIGNvbW1vbi9mb3JtYXQuaCBcCistY29tbW9uL2xpbnV4 LW9zZGF0YS5oIGdkYi1kbGZjbi5oIGF1dG8tbG9hZC5oIHByb2JlLmggc3RhcC1wcm9iZS5oCisr Y29tbW9uL2xpbnV4LW9zZGF0YS5oIGdkYi1kbGZjbi5oIGF1dG8tbG9hZC5oIHByb2JlLmggc3Rh cC1wcm9iZS5oIGdkYl9iZmQuaAorIAorICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZl IHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgorIAorQEAgLTg3OSw3ICs4 NzksNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZT0JKKSBc CisgCW1hY3JvdGFiLm8gbWFjcm9jbWQubyBtYWNyb2V4cC5vIG1hY3Jvc2NvcGUubyBcCisgCW1p LWNvbW1vbi5vIFwKKyAJZXZlbnQtbG9vcC5vIGV2ZW50LXRvcC5vIGluZi1sb29wLm8gY29tcGxl dGVyLm8gXAorLQlnZGJhcmNoLm8gYXJjaC11dGlscy5vIGdkYnR5cGVzLm8gb3NhYmkubyBjb3B5 aW5nLm8gXAorKwlnZGJhcmNoLm8gYXJjaC11dGlscy5vIGdkYnR5cGVzLm8gZ2RiX2JmZC5vIG9z YWJpLm8gY29weWluZy5vIFwKKyAJbWVtYXR0ci5vIG1lbS1icmVhay5vIHRhcmdldC5vIHBhcnNl Lm8gbGFuZ3VhZ2UubyBidWlsZHN5bS5vIFwKKyAJZmluZGNtZC5vIFwKKyAJc3RkLXJlZ3MubyBc CitAQCAtMTMwNyw2ICsxMzA3LDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29u ZmlnLnN0YXR1cwogIAkgIENPTkZJR19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0 dXMKICAKQEAgLTI3LDEwICs1NSwxMCBAQCBpbmRleCBiZjZiMGRhLi5mMGQ0NmRkIDEwMDY0NAog IAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawogIAogZGlmZiAtLWdpdCBhL2dkYi9h ZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKLWluZGV4IGFmMGZkYjUuLjAyYzZlNmYgMTAwNjQ0 CitpbmRleCBhYTA5MGFmLi5lNjcyNzMxIDEwMDY0NAogLS0tIGEvZ2RiL2FkYS1sYW5nLmMKICsr KyBiL2dkYi9hZGEtbGFuZy5jCi1AQCAtMTIwNTUsNiArMTIwNTUsNyBAQCBhZGFfb3BlcmF0b3Jf bGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5w LAorQEAgLTEyMDM3LDYgKzEyMDM3LDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKICAKICBzdGF0aWMgaW50 CiAgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApA QCAtMzgsNyArNjYsNyBAQCBpbmRleCBhZjBmZGI1Li4wMmM2ZTZmIDEwMDY0NAogIAkJICAgIGlu dCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwK ICAJCSAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xMjA2OSwxMiArMTIwNzAsMTUgQEAgYWRhX29w ZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorQEAgLTEyMDUx LDEyICsxMjA1MiwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCBwb3MsCiAgCWJyZWFrOwogIAogICAgICAgIGRlZmF1bHQ6CkBAIC01NiwxMSArODQs NDEgQEAgaW5kZXggYWYwZmRiNS4uMDJjNmU2ZiAxMDA2NDQKICAgICAgICAmJiAoKm9iamZpbGVf ZnVuYykgKFRZUEVfT0JKRklMRSAodHlwZSksIGRhdGEpKQogICAgICByZXR1cm4gMTsKICAKK2Rp ZmYgLS1naXQgYS9nZGIvYmZkLXRhcmdldC5jIGIvZ2RiL2JmZC10YXJnZXQuYworaW5kZXggNjcy ODgwMC4uMjFmNTNiYiAxMDA2NDQKKy0tLSBhL2dkYi9iZmQtdGFyZ2V0LmMKKysrKyBiL2dkYi9i ZmQtdGFyZ2V0LmMKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgInRhcmdldC5oIgorICNp bmNsdWRlICJiZmQtdGFyZ2V0LmgiCisgI2luY2x1ZGUgImV4ZWMuaCIKKysjaW5jbHVkZSAiZ2Ri X2JmZC5oIgorIAorIC8qIFRoZSBvYmplY3QgdGhhdCBpcyBzdG9yZWQgaW4gdGhlIHRhcmdldF9v cHMtPnRvX2RhdGEgZmllbGQgaGFzIHRoaXMKKyAgICB0eXBlLiAgKi8KK0BAIC03MCw3ICs3MSw3 IEBAIHRhcmdldF9iZmRfeGNsb3NlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCwgaW50IHF1aXR0aW5n KQorIHsKKyAgIHN0cnVjdCB0YXJnZXRfYmZkX2RhdGEgKmRhdGEgPSB0LT50b19kYXRhOworIAor LSAgYmZkX2Nsb3NlIChkYXRhLT5iZmQpOworKyAgZ2RiX2JmZF91bnJlZiAoZGF0YS0+YmZkKTsK KyAgIHhmcmVlIChkYXRhLT50YWJsZS5zZWN0aW9ucyk7CisgICB4ZnJlZSAoZGF0YSk7CisgICB4 ZnJlZSAodCk7CitAQCAtODMsNyArODQsNyBAQCB0YXJnZXRfYmZkX3Jlb3BlbiAoc3RydWN0IGJm ZCAqYWJmZCkKKyAgIHN0cnVjdCB0YXJnZXRfYmZkX2RhdGEgKmRhdGE7CisgCisgICBkYXRhID0g WFpBTExPQyAoc3RydWN0IHRhcmdldF9iZmRfZGF0YSk7CistICBkYXRhLT5iZmQgPSBhYmZkOwor KyAgZGF0YS0+YmZkID0gZ2RiX2JmZF9yZWYgKGFiZmQpOworICAgYnVpbGRfc2VjdGlvbl90YWJs ZSAoYWJmZCwgJmRhdGEtPnRhYmxlLnNlY3Rpb25zLCAmZGF0YS0+dGFibGUuc2VjdGlvbnNfZW5k KTsKKyAKKyAgIHQgPSBYWkFMTE9DIChzdHJ1Y3QgdGFyZ2V0X29wcyk7CiBkaWZmIC0tZ2l0IGEv Z2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggMTUwMzczMC4uYTUyMmJjYSAxMDA2NDQK K2luZGV4IGEwZjgyZWMuLjA5N2RiZjYgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suYwogKysrIGIv Z2RiL2Jsb2NrLmMKLUBAIC02ODcsMyArNjg3LDIxIEBAIGJsb2NrX2l0ZXJfbWF0Y2hfbmV4dCAo Y29uc3QgY2hhciAqbmFtZSwKK0BAIC02OTIsMyArNjkyLDIxIEBAIGJsb2NrX2l0ZXJfbWF0Y2hf bmV4dCAoY29uc3QgY2hhciAqbmFtZSwKICAKICAgIHJldHVybiBibG9ja19pdGVyX21hdGNoX3N0 ZXAgKGl0ZXJhdG9yLCBuYW1lLCBjb21wYXJlLCAwKTsKICB9CkBAIC05NCwxMCArMTUyLDEwIEBA IGluZGV4IDk5YzQ3ODguLjZjZWI3MDQgMTAwNjQ0CiArCiAgI2VuZGlmIC8qIEJMT0NLX0ggKi8K IGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXgg YTg2N2IxMC4uZTQxYzY5MiAxMDA2NDQKK2luZGV4IDU1NTY5NGUuLjkyMTY0MDUgMTAwNjQ0CiAt LS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJlYWtwb2ludC5jCi1AQCAtMTUxNTQs NiArMTUxNTQsMjQgQEAgYWxsX3RyYWNlcG9pbnRzICh2b2lkKQorQEAgLTE1NTI1LDYgKzE1NTI1 LDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9pZCkKICAgIHJldHVybiB0cF92ZWM7CiAgfQogIApA QCAtMTIyLDcgKzE4MCw3IEBAIGluZGV4IGE4NjdiMTAuLmU0MWM2OTIgMTAwNjQ0CiAgDAogIC8q IFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBh bmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAgSXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHBy ZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTYwOTcsNCArMTYxMTUsNyBAQCBTaG93IHRoZSBjaGFu bmVsIHRvIHVzZSBmb3IgZHluYW1pYyBwcmludGYiKSwgTlVMTCwKK0BAIC0xNjQ5MCw0ICsxNjUw OCw3IEBAIGFnZW50LXByaW50ZiBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIs IGFyZzMsIC4uLiwgYXJnblxuXAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0g MTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fi b3V0X3RvX3Byb2NlZWQpOwpAQCAtMTMwLDYgKzE4OCw1OCBAQCBpbmRleCBhODY3YjEwLi5lNDFj NjkyIDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBl c19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KK2RpZmYgLS1naXQgYS9nZGIvYnVpbGRzeW0uYyBi L2dkYi9idWlsZHN5bS5jCitpbmRleCBmMWZiNGJlLi41NGEwZWEzIDEwMDY0NAorLS0tIGEvZ2Ri L2J1aWxkc3ltLmMKKysrKyBiL2dkYi9idWlsZHN5bS5jCitAQCAtOTQxLDcgKzk0MSw4IEBAIGJs b2NrX2NvbXBhciAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorICAgIG5ldmVyIGtu b3cgYWJvdXQgdGhpcyBlbXB0eSBmaWxlIChGSVhNRSkuICAqLworIAorIHN0cnVjdCBzeW10YWIg KgorLWVuZF9zeW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGludCBzZWN0aW9uKQorK2VuZF9zeW10YWJfZnVsbCAoQ09SRV9BRERSIGVuZF9hZGRyLCBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHNlY3Rpb24sCisrCQkgaW50IHJlcXVpcmVkKQor IHsKKyAgIHN0cnVjdCBzeW10YWIgKnN5bXRhYiA9IE5VTEw7CisgICBzdHJ1Y3QgYmxvY2t2ZWN0 b3IgKmJsb2NrdmVjdG9yOworQEAgLTEwMTMsNyArMTAxNCw4IEBAIGVuZF9zeW10YWIgKENPUkVf QUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzZWN0aW9uKQorICAg Y2xlYW51cF91bmRlZmluZWRfc3RhYnNfdHlwZXMgKG9iamZpbGUpOworICAgZmluaXNoX2dsb2Jh bF9zdGFicyAob2JqZmlsZSk7CisgCistICBpZiAocGVuZGluZ19ibG9ja3MgPT0gTlVMTAorKyAg aWYgKCFyZXF1aXJlZAorKyAgICAgICYmIHBlbmRpbmdfYmxvY2tzID09IE5VTEwKKyAgICAgICAm JiBmaWxlX3N5bWJvbHMgPT0gTlVMTAorICAgICAgICYmIGdsb2JhbF9zeW1ib2xzID09IE5VTEwK KyAgICAgICAmJiBoYXZlX2xpbmVfbnVtYmVycyA9PSAwCitAQCAtMTIxOSw2ICsxMjIxLDEyIEBA IGVuZF9zeW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGludCBzZWN0aW9uKQorICAgcmV0dXJuIHN5bXRhYjsKKyB9CisgCisrc3RydWN0IHN5bXRhYiAq CisrZW5kX3N5bXRhYiAoQ09SRV9BRERSIGVuZF9hZGRyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgaW50IHNlY3Rpb24pCisreworKyAgcmV0dXJuIGVuZF9zeW10YWJfZnVsbCAoZW5kX2FkZHIs IG9iamZpbGUsIHNlY3Rpb24sIDApOworK30KKysKKyAvKiBQdXNoIGEgY29udGV4dCBibG9jay4g IEFyZ3MgYXJlIGFuIGlkZW50aWZ5aW5nIG5lc3RpbmcgbGV2ZWwKKyAgICAoY2hlY2thYmxlIHdo ZW4geW91IHBvcCBpdCksIGFuZCB0aGUgc3RhcnRpbmcgUEMgYWRkcmVzcyBvZiB0aGlzCisgICAg Y29udGV4dC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkc3ltLmggYi9nZGIvYnVpbGRzeW0u aAoraW5kZXggNDQ0ODI2Ny4uN2Q5Yjk3YyAxMDA2NDQKKy0tLSBhL2dkYi9idWlsZHN5bS5oCisr KysgYi9nZGIvYnVpbGRzeW0uaAorQEAgLTI2MSw2ICsyNjEsMTAgQEAgZXh0ZXJuIGNoYXIgKnBv cF9zdWJmaWxlICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IHN5bXRhYiAqZW5kX3N5bXRhYiAoQ09S RV9BRERSIGVuZF9hZGRyLAorIAkJCQkgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc2Vj dGlvbik7CisgCisrZXh0ZXJuIHN0cnVjdCBzeW10YWIgKmVuZF9zeW10YWJfZnVsbCAoQ09SRV9B RERSIGVuZF9hZGRyLAorKwkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBz ZWN0aW9uLAorKwkJCQkgICAgICAgaW50IHJlcXVpcmVkKTsKKysKKyAvKiBEZWZpbmVkIGluIHN0 YWJzcmVhZC5jLiAgKi8KKyAKKyBleHRlcm4gdm9pZCBzY2FuX2ZpbGVfZ2xvYmFscyAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpOwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2Ri L2MtdHlwZXByaW50LmMKIGluZGV4IGE1ODkyYjUuLjI5NDRjMmQgMTAwNjQ0CiAtLS0gYS9nZGIv Yy10eXBlcHJpbnQuYwpAQCAtMTUyLDYgKzI2Miw0OTIgQEAgaW5kZXggYTU4OTJiNS4uMjk0NGMy ZCAxMDA2NDQKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwogIAogIAljX3R5cGVf cHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCitk aWZmIC0tZ2l0IGEvZ2RiL2NjLXdpdGgtZHd6LnNoIGIvZ2RiL2NjLXdpdGgtZHd6LnNoCitkZWxl dGVkIGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IGY2NmRlYjEuLjAwMDAwMDAKKy0tLSBhL2dkYi9j Yy13aXRoLWR3ei5zaAorKysrIC9kZXYvbnVsbAorQEAgLTEsODAgKzAsMCBAQAorLSMhIC9iaW4v c2gKKy0jIFdyYXBwZXIgYXJvdW5kIGdjYyB0byBydW4gJ2R3eicgd2hlbiBydW5uaW5nIHRoZSB0 ZXN0c3VpdGUuCistCistIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKy0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistCistIyBUaGlz IHByb2dyYW0gcmVxdWlyZXMgZHd6IGluIGFkZGl0aW9uIHRvIGdjYy4KKy0jCistIyBFeGFtcGxl IHVzYWdlOgorLSMKKy0jIGJhc2gkIGNkICRvYmpkaXIvZ2RiL3Rlc3RzdWl0ZQorLSMgYmFzaCQg cnVudGVzdCBcCistIyAgIENDX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNyY2Rpci9jYy13aXRoLWR3 ei5zaCBnY2MiIFwKKy0jICAgQ1hYX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNyY2Rpci9jYy13aXRo LWR3ei5zaCBnKysiCistIworLQorLW15bmFtZT1jYy13aXRoLWR3ei5zaAorLQorLURXWj0ke0RX WjotZHd6fQorLQorLWhhdmVfbGluaz11bmtub3duCistbmV4dF9pc19vdXRwdXRfZmlsZT1ubwor LW91dHB1dF9maWxlPWEub3V0CistCistZm9yIGFyZyBpbiAiJEAiCistZG8KKy0gICAgaWYgWyAi JG5leHRfaXNfb3V0cHV0X2ZpbGUiID0gInllcyIgXQorLSAgICB0aGVuCistCW91dHB1dF9maWxl PSIkYXJnIgorLQluZXh0X2lzX291dHB1dF9maWxlPW5vCistCWNvbnRpbnVlCistICAgIGZpCist CistICAgICMgUG9vciBtYW4ncyBnY2MgYXJndW1lbnQgcGFyc2VyLgorLSAgICAjIFdlIGRvbid0 IG5lZWQgdG8gaGFuZGxlIGFsbCBhcmd1bWVudHMsIHdlIGp1c3QgbmVlZCB0byBrbm93IGlmIHdl J3JlCistICAgICMgZG9pbmcgYSBsaW5rIGFuZCB3aGF0IHRoZSBvdXRwdXQgZmlsZSBpcy4KKy0g ICAgIyBJdCdzIG5vdCBwZXJmZWN0LCBidXQgaXQgc2VlbXMgdG8gd29yayB3ZWxsIGVub3VnaCBm b3IgdGhlIHRhc2sgYXQgaGFuZC4KKy0gICAgY2FzZSAiJGFyZyIgaW4KKy0gICAgIi1jIikgaGF2 ZV9saW5rPW5vIDs7CistICAgICItRSIpIGhhdmVfbGluaz1ubyA7OworLSAgICAiLVMiKSBoYXZl X2xpbms9bm8gOzsKKy0gICAgIi1vIikgbmV4dF9pc19vdXRwdXRfZmlsZT15ZXMgOzsKKy0gICAg ZXNhYworLWRvbmUKKy0KKy1pZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIgPSAieWVzIiBdCist dGhlbgorLSAgICBlY2hvICIkbXluYW1lOiBVbmFibGUgdG8gZmluZCBvdXRwdXQgZmlsZSIgPiYy CistICAgIGV4aXQgMQorLWZpCistCistaWYgWyAiJGhhdmVfbGluayIgPSAibm8iIF0KKy10aGVu CistICAgICIkQCIKKy0gICAgZXhpdCAkPworLWZpCistCistIiRAIgorLXJjPSQ/CistWyAkcmMg IT0gMCBdICYmIGV4aXQgJHJjCistaWYgWyAhIC1mICIkb3V0cHV0X2ZpbGUiIF0KKy10aGVuCist ICAgIGVjaG8gIiRteW5hbWU6IEludGVybmFsIGVycm9yOiAkb3V0cHV0X2ZpbGUgbWlzc2luZy4i ID4mMgorLSAgICBleGl0IDEKKy1maQorLQorLSREV1ogIiRvdXRwdXRfZmlsZSIgPiAvZGV2L251 bGwgMj4mMQorLQorLWV4aXQgMAorZGlmZiAtLWdpdCBhL2dkYi9jYy13aXRoLWluZGV4LnNoIGIv Z2RiL2NjLXdpdGgtaW5kZXguc2gKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggNjQ0 YmEzNC4uMDAwMDAwMAorLS0tIGEvZ2RiL2NjLXdpdGgtaW5kZXguc2gKKysrKyAvZGV2L251bGwK K0BAIC0xLDEyNiArMCwwIEBACistIyEgL2Jpbi9zaAorLSMgV3JhcHBlciBhcm91bmQgZ2NjIHRv IGFkZCB0aGUgLmdkYl9pbmRleCBzZWN0aW9uIHdoZW4gcnVubmluZyB0aGUgdGVzdHN1aXRlLgor LQorLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCistIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK Ky0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLQorLSMgVGhpcyBwcm9ncmFtIHJl cXVpcmVzIGdkYiBhbmQgb2JqY29weSBpbiBhZGRpdGlvbiB0byBnY2MuCistIyBUaGUgZGVmYXVs dCB2YWx1ZXMgYXJlIGdkYiBmcm9tIHRoZSBidWlsZCB0cmVlIGFuZCBvYmpjb3B5IGZyb20gJFBB VEguCistIyBUaGV5IG1heSBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgZW52aXJvbm1lbnQgdmFy aWFibGVzIEdEQiBhbmQgT0JKQ09QWQorLSMgcmVzcGVjdGl2ZWx5LgorLSMgV2UgYXNzdW1lIHRo ZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBlaXRoZXIgJG9iai9nZGIgb3IgJG9iai9nZGIvdGVzdHN1 aXRlLgorLSMKKy0jIEV4YW1wbGUgdXNhZ2U6CistIworLSMgYmFzaCQgY2QgJG9iamRpci9nZGIv dGVzdHN1aXRlCistIyBiYXNoJCBydW50ZXN0IFwKKy0jICAgQ0NfRk9SX1RBUkdFVD0iL2Jpbi9z aCAkc3JjZGlyL2NjLXdpdGgtaW5kZXguc2ggZ2NjIiBcCistIyAgIENYWF9GT1JfVEFSR0VUPSIv YmluL3NoICRzcmNkaXIvY2Mtd2l0aC1pbmRleC5zaCBnKysiCistIworLSMgRm9yIGRvY3VtZW50 YXRpb24gb24gaW5kZXggZmlsZXM6IGluZm8gLWYgZ2RiLmluZm8gLW4gIkluZGV4IEZpbGVzIgor LQorLW15bmFtZT1jYy13aXRoLWluZGV4LnNoCistCistaWYgWyAteiAiJEdEQiIgXQorLXRoZW4K Ky0gICAgaWYgWyAtZiAuL2dkYiBdCistICAgIHRoZW4KKy0JR0RCPSIuL2dkYiIKKy0gICAgZWxp ZiBbIC1mIC4uL2dkYiBdCistICAgIHRoZW4KKy0JR0RCPSIuLi9nZGIiCistICAgIGVsaWYgWyAt ZiAuLi8uLi9nZGIgXQorLSAgICB0aGVuCistCUdEQj0iLi4vLi4vZ2RiIgorLSAgICBlbHNlCist CWVjaG8gIiRteW5hbWU6IHVuYWJsZSB0byBmaW5kIHVzYWJsZSBnZGIiID4mMgorLQlleGl0IDEK Ky0gICAgZmkKKy1maQorLQorLU9CSkNPUFk9JHtPQkpDT1BZOi1vYmpjb3B5fQorLQorLWhhdmVf bGluaz11bmtub3duCistbmV4dF9pc19vdXRwdXRfZmlsZT1ubworLW91dHB1dF9maWxlPWEub3V0 CistCistZm9yIGFyZyBpbiAiJEAiCistZG8KKy0gICAgaWYgWyAiJG5leHRfaXNfb3V0cHV0X2Zp bGUiID0gInllcyIgXQorLSAgICB0aGVuCistCW91dHB1dF9maWxlPSIkYXJnIgorLQluZXh0X2lz X291dHB1dF9maWxlPW5vCistCWNvbnRpbnVlCistICAgIGZpCistCistICAgICMgUG9vciBtYW4n cyBnY2MgYXJndW1lbnQgcGFyc2VyLgorLSAgICAjIFdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIGFs bCBhcmd1bWVudHMsIHdlIGp1c3QgbmVlZCB0byBrbm93IGlmIHdlJ3JlCistICAgICMgZG9pbmcg YSBsaW5rIGFuZCB3aGF0IHRoZSBvdXRwdXQgZmlsZSBpcy4KKy0gICAgIyBJdCdzIG5vdCBwZXJm ZWN0LCBidXQgaXQgc2VlbXMgdG8gd29yayB3ZWxsIGVub3VnaCBmb3IgdGhlIHRhc2sgYXQgaGFu ZC4KKy0gICAgY2FzZSAiJGFyZyIgaW4KKy0gICAgIi1jIikgaGF2ZV9saW5rPW5vIDs7CistICAg ICItRSIpIGhhdmVfbGluaz1ubyA7OworLSAgICAiLVMiKSBoYXZlX2xpbms9bm8gOzsKKy0gICAg Ii1vIikgbmV4dF9pc19vdXRwdXRfZmlsZT15ZXMgOzsKKy0gICAgZXNhYworLWRvbmUKKy0KKy1p ZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIgPSAieWVzIiBdCistdGhlbgorLSAgICBlY2hvICIk bXluYW1lOiBVbmFibGUgdG8gZmluZCBvdXRwdXQgZmlsZSIgPiYyCistICAgIGV4aXQgMQorLWZp CistCistaWYgWyAiJGhhdmVfbGluayIgPSAibm8iIF0KKy10aGVuCistICAgICIkQCIKKy0gICAg ZXhpdCAkPworLWZpCistCistaW5kZXhfZmlsZT0iJHtvdXRwdXRfZmlsZX0uZ2RiLWluZGV4Igor LWlmIFsgLWYgIiRpbmRleF9maWxlIiBdCistdGhlbgorLSAgICBlY2hvICIkbXluYW1lOiBJbmRl eCBmaWxlICRpbmRleF9maWxlIGV4aXN0cywgd29uJ3QgY2xvYmJlci4iID4mMgorLSAgICBleGl0 IDEKKy1maQorLQorLW91dHB1dF9kaXI9IiR7b3V0cHV0X2ZpbGUlLyp9IgorLVsgIiRvdXRwdXRf ZGlyIiA9ICIkb3V0cHV0X2ZpbGUiIF0gJiYgb3V0cHV0X2Rpcj0iLiIKKy0KKy0iJEAiCistcmM9 JD8KKy1bICRyYyAhPSAwIF0gJiYgZXhpdCAkcmMKKy1pZiBbICEgLWYgIiRvdXRwdXRfZmlsZSIg XQorLXRoZW4KKy0gICAgZWNobyAiJG15bmFtZTogSW50ZXJuYWwgZXJyb3I6ICRvdXRwdXRfZmls ZSBtaXNzaW5nLiIgPiYyCistICAgIGV4aXQgMQorLWZpCistCistJEdEQiAtLWJhdGNoLXNpbGVu dCAtbnggLWV4ICJzZXQgYXV0by1sb2FkIG5vIiAtZXggImZpbGUgJG91dHB1dF9maWxlIiAtZXgg InNhdmUgZ2RiLWluZGV4ICRvdXRwdXRfZGlyIgorLXJjPSQ/CistWyAkcmMgIT0gMCBdICYmIGV4 aXQgJHJjCistCistIyBHREIgbWlnaHQgbm90IGFsd2F5cyBjcmVhdGUgYW4gaW5kZXguICBDb3Bl LgorLWlmIFsgLWYgIiRpbmRleF9maWxlIiBdCistdGhlbgorLSAgICAkT0JKQ09QWSAtLWFkZC1z ZWN0aW9uIC5nZGJfaW5kZXg9IiRpbmRleF9maWxlIiBcCistCS0tc2V0LXNlY3Rpb24tZmxhZ3Mg LmdkYl9pbmRleD1yZWFkb25seSBcCistCSIkb3V0cHV0X2ZpbGUiICIkb3V0cHV0X2ZpbGUiCist ICAgIHJjPSQ/CistZWxzZQorLSAgICByYz0wCistZmkKKy0KKy1ybSAtZiAiJGluZGV4X2ZpbGUi CistZXhpdCAkcmMKK2RpZmYgLS1naXQgYS9nZGIvY2xpL2NsaS1kdW1wLmMgYi9nZGIvY2xpL2Ns aS1kdW1wLmMKK2luZGV4IDRhOGI1ZDEuLjEyNDQ3NjcgMTAwNjQ0CistLS0gYS9nZGIvY2xpL2Ns aS1kdW1wLmMKKysrKyBiL2dkYi9jbGkvY2xpLWR1bXAuYworQEAgLTMyLDYgKzMyLDcgQEAKKyAj aW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKKyAjaW5jbHVkZSAiZ2RiY29yZS5oIgorICNp bmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAjZGVm aW5lIFhNQUxMT0MoVFlQRSkgKChUWVBFKikgeG1hbGxvYyAoc2l6ZW9mIChUWVBFKSkpCisgCitA QCAtMTExLDEyICsxMTIsMTIgQEAgYmZkX29wZW5yX3dpdGhfY2xlYW51cCAoY29uc3QgY2hhciAq ZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCkKKyB7CisgICBiZmQgKmliZmQ7CisgCistICBp YmZkID0gYmZkX29wZW5yIChmaWxlbmFtZSwgdGFyZ2V0KTsKKysgIGliZmQgPSBnZGJfYmZkX3Jl ZiAoYmZkX29wZW5yIChmaWxlbmFtZSwgdGFyZ2V0KSk7CisgICBpZiAoaWJmZCA9PSBOVUxMKQor ICAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJXM6ICVzLiIpLCBmaWxlbmFtZSwgCisgCSAg IGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKyAKKy0gIG1ha2VfY2xlYW51cF9iZmRf Y2xvc2UgKGliZmQpOworKyAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoaWJmZCk7CisgICBpZiAo IWJmZF9jaGVja19mb3JtYXQgKGliZmQsIGJmZF9vYmplY3QpKQorICAgICBlcnJvciAoXygiJyVz JyBpcyBub3QgYSByZWNvZ25pemVkIGZpbGUgZm9ybWF0LiIpLCBmaWxlbmFtZSk7CisgCitAQCAt MTMxLDExICsxMzIsMTEgQEAgYmZkX29wZW53X3dpdGhfY2xlYW51cCAoY29uc3QgY2hhciAqZmls ZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwKKyAKKyAgIGlmICgqbW9kZSA9PSAndycpCS8qIFdy aXRlOiBjcmVhdGUgbmV3IGZpbGUgKi8KKyAgICAgeworLSAgICAgIG9iZmQgPSBiZmRfb3Blbncg KGZpbGVuYW1lLCB0YXJnZXQpOworKyAgICAgIG9iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW53 IChmaWxlbmFtZSwgdGFyZ2V0KSk7CisgICAgICAgaWYgKG9iZmQgPT0gTlVMTCkKKyAJZXJyb3Ig KF8oIkZhaWxlZCB0byBvcGVuICVzOiAlcy4iKSwgZmlsZW5hbWUsIAorIAkgICAgICAgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworLSAgICAgIG1ha2VfY2xlYW51cF9iZmRfY2xvc2Ug KG9iZmQpOworKyAgICAgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKG9iZmQpOworICAgICAgIGlm ICghYmZkX3NldF9mb3JtYXQgKG9iZmQsIGJmZF9vYmplY3QpKQorIAllcnJvciAoXygiYmZkX29w ZW53X3dpdGhfY2xlYW51cDogJXMuIiksIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsK KyAgICAgfQorZGlmZiAtLWdpdCBhL2dkYi9jb250cmliL2NjLXdpdGgtdHdlYWtzLnNoIGIvZ2Ri L2NvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2gKK25ldyBmaWxlIG1vZGUgMTAwNzU1CitpbmRleCAw MDAwMDAwLi45MjcwZGI0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvY29udHJpYi9jYy13aXRo LXR3ZWFrcy5zaAorQEAgLTAsMCArMSwxNjIgQEAKKysjISAvYmluL3NoCisrIyBXcmFwcGVyIGFy b3VuZCBnY2MgdG8gdHdlYWsgdGhlIG91dHB1dCBpbiB2YXJpb3VzIHdheXMgd2hlbiBydW5uaW5n CisrIyB0aGUgdGVzdHN1aXRlLgorKworKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KworKyMgVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGdkYiBhbmQgb2JqY29weSBpbiBhZGRpdGlvbiB0 byBnY2MuCisrIyBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIGdkYiBmcm9tIHRoZSBidWlsZCB0cmVl IGFuZCBvYmpjb3B5IGZyb20gJFBBVEguCisrIyBUaGV5IG1heSBiZSBvdmVycmlkZGVuIGJ5IHNl dHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIEdEQiBhbmQgT0JKQ09QWQorKyMgcmVzcGVjdGl2 ZWx5LgorKyMgV2UgYXNzdW1lIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBlaXRoZXIgJG9iai9n ZGIgb3IgJG9iai9nZGIvdGVzdHN1aXRlLgorKyMKKysjIEV4YW1wbGUgdXNhZ2U6CisrIworKyMg YmFzaCQgY2QgJG9iamRpci9nZGIvdGVzdHN1aXRlCisrIyBiYXNoJCBydW50ZXN0IFwKKysjICAg Q0NfRk9SX1RBUkdFVD0iL2Jpbi9zaCAkc3JjZGlyL2NjLXdpdGgtdHdlYWtzLnNoIEFSR1MgZ2Nj IiBcCisrIyAgIENYWF9GT1JfVEFSR0VUPSIvYmluL3NoICRzcmNkaXIvY2Mtd2l0aC10d2Vha3Mu c2ggQVJHUyBnKysiCisrIworKyMgRm9yIGRvY3VtZW50YXRpb24gb24gaW5kZXggZmlsZXM6IGlu Zm8gLWYgZ2RiLmluZm8gLW4gIkluZGV4IEZpbGVzIgorKyMgRm9yIGluZm9ybWF0aW9uIGFib3V0 ICdkd3onLCBzZWUgdGhlIGFubm91bmNlbWVudDoKKysjICAgICBodHRwOi8vZ2NjLmdudS5vcmcv bWwvZ2NjLzIwMTItMDQvbXNnMDA2ODYuaHRtbAorKyMgKE1vcmUgZG9jdW1lbnRhdGlvbiBpcyB0 byBjb21lLikKKysKKysjIEFSR1MgZGV0ZXJtaW5lIHdoYXQgaXMgZG9uZS4gIFRoZXkgY2FuIGJl OgorKyMgLXogY29tcHJlc3MgdXNpbmcgZHd6CisrIyAtbSBjb21wcmVzcyB1c2luZyBkd3ogLW0K KysjIC1pIG1ha2UgYW4gaW5kZXgKKysjIElmIG5vdGhpbmcgaXMgZ2l2ZW4sIG5vIGNoYW5nZXMg YXJlIG1hZGUKKysKKytteW5hbWU9Y2Mtd2l0aC10d2Vha3Muc2gKKysKKytpZiBbIC16ICIkR0RC IiBdCisrdGhlbgorKyAgICBpZiBbIC1mIC4vZ2RiIF0KKysgICAgdGhlbgorKwlHREI9Ii4vZ2Ri IgorKyAgICBlbGlmIFsgLWYgLi4vZ2RiIF0KKysgICAgdGhlbgorKwlHREI9Ii4uL2dkYiIKKysg ICAgZWxpZiBbIC1mIC4uLy4uL2dkYiBdCisrICAgIHRoZW4KKysJR0RCPSIuLi8uLi9nZGIiCisr ICAgIGVsc2UKKysJZWNobyAiJG15bmFtZTogdW5hYmxlIHRvIGZpbmQgdXNhYmxlIGdkYiIgPiYy CisrCWV4aXQgMQorKyAgICBmaQorK2ZpCisrCisrT0JKQ09QWT0ke09CSkNPUFk6LW9iamNvcHl9 CisrCisrRFdaPSR7RFdaOi1kd3p9CisrCisraGF2ZV9saW5rPXVua25vd24KKytuZXh0X2lzX291 dHB1dF9maWxlPW5vCisrb3V0cHV0X2ZpbGU9YS5vdXQKKysKKyt3YW50X2luZGV4PWZhbHNlCisr d2FudF9kd3o9ZmFsc2UKKyt3YW50X211bHRpPWZhbHNlCisrCisrd2hpbGUgWyAkIyAtZ3QgMCBd OyBkbworKyAgICBjYXNlICIkMSIgaW4KKysJLXopIHdhbnRfZHd6PXRydWUgOzsKKysJLWkpIHdh bnRfaW5kZXg9dHJ1ZSA7OworKwktbSkgd2FudF9tdWx0aT10cnVlIDs7CisrCSopIGJyZWFrIDs7 CisrICAgIGVzYWMKKysgICAgc2hpZnQKKytkb25lCisrCisrZm9yIGFyZyBpbiAiJEAiCisrZG8K KysgICAgaWYgWyAiJG5leHRfaXNfb3V0cHV0X2ZpbGUiID0gInllcyIgXQorKyAgICB0aGVuCisr CW91dHB1dF9maWxlPSIkYXJnIgorKwluZXh0X2lzX291dHB1dF9maWxlPW5vCisrCWNvbnRpbnVl CisrICAgIGZpCisrCisrICAgICMgUG9vciBtYW4ncyBnY2MgYXJndW1lbnQgcGFyc2VyLgorKyAg ICAjIFdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIGFsbCBhcmd1bWVudHMsIHdlIGp1c3QgbmVlZCB0 byBrbm93IGlmIHdlJ3JlCisrICAgICMgZG9pbmcgYSBsaW5rIGFuZCB3aGF0IHRoZSBvdXRwdXQg ZmlsZSBpcy4KKysgICAgIyBJdCdzIG5vdCBwZXJmZWN0LCBidXQgaXQgc2VlbXMgdG8gd29yayB3 ZWxsIGVub3VnaCBmb3IgdGhlIHRhc2sgYXQgaGFuZC4KKysgICAgY2FzZSAiJGFyZyIgaW4KKysg ICAgIi1jIikgaGF2ZV9saW5rPW5vIDs7CisrICAgICItRSIpIGhhdmVfbGluaz1ubyA7OworKyAg ICAiLVMiKSBoYXZlX2xpbms9bm8gOzsKKysgICAgIi1vIikgbmV4dF9pc19vdXRwdXRfZmlsZT15 ZXMgOzsKKysgICAgZXNhYworK2RvbmUKKysKKytpZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIg PSAieWVzIiBdCisrdGhlbgorKyAgICBlY2hvICIkbXluYW1lOiBVbmFibGUgdG8gZmluZCBvdXRw dXQgZmlsZSIgPiYyCisrICAgIGV4aXQgMQorK2ZpCisrCisraWYgWyAiJGhhdmVfbGluayIgPSAi bm8iIF0KKyt0aGVuCisrICAgICIkQCIKKysgICAgZXhpdCAkPworK2ZpCisrCisraW5kZXhfZmls ZT0iJHtvdXRwdXRfZmlsZX0uZ2RiLWluZGV4IgorK2lmIFsgIiR3YW50X2luZGV4IiA9IHRydWUg XSAmJiBbIC1mICIkaW5kZXhfZmlsZSIgXQorK3RoZW4KKysgICAgZWNobyAiJG15bmFtZTogSW5k ZXggZmlsZSAkaW5kZXhfZmlsZSBleGlzdHMsIHdvbid0IGNsb2JiZXIuIiA+JjIKKysgICAgZXhp dCAxCisrZmkKKysKKytvdXRwdXRfZGlyPSIke291dHB1dF9maWxlJS8qfSIKKytbICIkb3V0cHV0 X2RpciIgPSAiJG91dHB1dF9maWxlIiBdICYmIG91dHB1dF9kaXI9Ii4iCisrCisrIiRAIgorK3Jj PSQ/CisrWyAkcmMgIT0gMCBdICYmIGV4aXQgJHJjCisraWYgWyAhIC1mICIkb3V0cHV0X2ZpbGUi IF0KKyt0aGVuCisrICAgIGVjaG8gIiRteW5hbWU6IEludGVybmFsIGVycm9yOiAkb3V0cHV0X2Zp bGUgbWlzc2luZy4iID4mMgorKyAgICBleGl0IDEKKytmaQorKworK2lmIFsgIiR3YW50X2luZGV4 IiA9IHRydWUgXTsgdGhlbgorKyAgICAkR0RCIC0tYmF0Y2gtc2lsZW50IC1ueCAtZXggInNldCBh dXRvLWxvYWQgbm8iIC1leCAiZmlsZSAkb3V0cHV0X2ZpbGUiIC1leCAic2F2ZSBnZGItaW5kZXgg JG91dHB1dF9kaXIiCisrICAgIHJjPSQ/CisrICAgIFsgJHJjICE9IDAgXSAmJiBleGl0ICRyYwor KworKyAgICAjIEdEQiBtaWdodCBub3QgYWx3YXlzIGNyZWF0ZSBhbiBpbmRleC4gIENvcGUuCisr ICAgIGlmIFsgLWYgIiRpbmRleF9maWxlIiBdCisrICAgIHRoZW4KKysJJE9CSkNPUFkgLS1hZGQt c2VjdGlvbiAuZ2RiX2luZGV4PSIkaW5kZXhfZmlsZSIgXAorKwkgICAgLS1zZXQtc2VjdGlvbi1m bGFncyAuZ2RiX2luZGV4PXJlYWRvbmx5IFwKKysJICAgICIkb3V0cHV0X2ZpbGUiICIkb3V0cHV0 X2ZpbGUiCisrCXJjPSQ/CisrICAgIGVsc2UKKysJcmM9MAorKyAgICBmaQorKyAgICBbICRyYyAh PSAwIF0gJiYgZXhpdCAkcmMKKytmaQorKworK2lmIFsgIiR3YW50X2R3eiIgPSB0cnVlIF07IHRo ZW4KKysgICAgJERXWiAiJG91dHB1dF9maWxlIiA+IC9kZXYvbnVsbCAyPiYxCisrZWxpZiBbICIk d2FudF9tdWx0aSIgPSB0cnVlIF07IHRoZW4KKysgICAgY3AgJG91dHB1dF9maWxlICR7b3V0cHV0 X2ZpbGV9LmFsdAorKyAgICAkRFdaIC1tICR7b3V0cHV0X2ZpbGV9LmR3eiAiJG91dHB1dF9maWxl IiAke291dHB1dF9maWxlfS5hbHQgPiAvZGV2L251bGwgMj4mMQorK2ZpCisrCisrcm0gLWYgIiRp bmRleF9maWxlIgorK2V4aXQgJHJjCitkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBiL2dkYi9j b3JlbG93LmMKK2luZGV4IGRkNjI1NjAuLjM4MGMwZGMgMTAwNjQ0CistLS0gYS9nZGIvY29yZWxv dy5jCisrKysgYi9nZGIvY29yZWxvdy5jCitAQCAtNDYsNiArNDYsNyBAQAorICNpbmNsdWRlICJm aWxlbmFtZXMuaCIKKyAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisgI2luY2x1ZGUgIm9iamZpbGVz LmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAjaWZuZGVmIE9fTEFSR0VGSUxFCisgI2Rl ZmluZSBPX0xBUkdFRklMRSAwCitAQCAtMjE1LDkgKzIxNiw3IEBAIGNvcmVfY2xvc2UgKGludCBx dWl0dGluZykKKyAJICBjb3JlX2RhdGEgPSBOVUxMOworIAl9CisgCistICAgICAgbmFtZSA9IGJm ZF9nZXRfZmlsZW5hbWUgKGNvcmVfYmZkKTsKKy0gICAgICBnZGJfYmZkX2Nsb3NlX29yX3dhcm4g KGNvcmVfYmZkKTsKKy0gICAgICB4ZnJlZSAobmFtZSk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAo Y29yZV9iZmQpOworICAgICAgIGNvcmVfYmZkID0gTlVMTDsKKyAgICAgfQorICAgY29yZV92ZWMg PSBOVUxMOworQEAgLTMxOSwxMiArMzE4LDE0IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUs IGludCBmcm9tX3R0eSkKKyAgIGlmIChzY3JhdGNoX2NoYW4gPCAwKQorICAgICBwZXJyb3Jfd2l0 aF9uYW1lIChmaWxlbmFtZSk7CisgCistICB0ZW1wX2JmZCA9IGJmZF9mb3BlbiAoZmlsZW5hbWUs IGdudXRhcmdldCwgCistCQkJd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBGT1BFTl9SQiwKKy0J CQlzY3JhdGNoX2NoYW4pOworKyAgdGVtcF9iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX2ZvcGVuIChm aWxlbmFtZSwgZ251dGFyZ2V0LCAKKysJCQkJICAgICB3cml0ZV9maWxlcyA/IEZPUEVOX1JVQiA6 IEZPUEVOX1JCLAorKwkJCQkgICAgIHNjcmF0Y2hfY2hhbikpOworICAgaWYgKHRlbXBfYmZkID09 IE5VTEwpCisgICAgIHBlcnJvcl93aXRoX25hbWUgKGZpbGVuYW1lKTsKKyAKKysgIGdkYl9iZmRf c3Rhc2hfZmlsZW5hbWUgKHRlbXBfYmZkKTsKKysKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAo dGVtcF9iZmQsIGJmZF9jb3JlKQorICAgICAgICYmICFnZGJfY2hlY2tfZm9ybWF0ICh0ZW1wX2Jm ZCkpCisgICAgIHsKK0BAIC0zMzIsNyArMzMzLDcgQEAgY29yZV9vcGVuIChjaGFyICpmaWxlbmFt ZSwgaW50IGZyb21fdHR5KQorICAgICAgIC8qIEZJWE1FOiBzaG91bGQgYmUgY2hlY2tpbmcgZm9y IGVycm9ycyBmcm9tIGJmZF9jbG9zZSAoZm9yIG9uZQorICAgICAgICAgIHRoaW5nLCBvbiBlcnJv ciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkCisgICAgICAgICAg d2l0aCB0aGUgYmZkKS4gICovCistICAgICAgbWFrZV9jbGVhbnVwX2JmZF9jbG9zZSAodGVtcF9i ZmQpOworKyAgICAgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKHRlbXBfYmZkKTsKKyAgICAgICBl cnJvciAoXygiXCIlc1wiIGlzIG5vdCBhIGNvcmUgZHVtcDogJXMiKSwKKyAJICAgICBmaWxlbmFt ZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworICAgICB9CitAQCAtMzQwLDcgKzM0 MSw3IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKKyAgIC8qIExv b2tzIHNlbWktcmVhc29uYWJsZS4gIFRvc3MgdGhlIG9sZCBjb3JlIGZpbGUgYW5kIHdvcmsgb24g dGhlCisgICAgICBuZXcuICAqLworIAorLSAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsJ LyogRG9uJ3QgZnJlZSBmaWxlbmFtZSBhbnkgbW9yZSAqLworKyAgZG9fY2xlYW51cHMgKG9sZF9j aGFpbik7CisgICB1bnB1c2hfdGFyZ2V0ICgmY29yZV9vcHMpOworICAgY29yZV9iZmQgPSB0ZW1w X2JmZDsKKyAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoY29yZV9jbG9zZV9jbGVhbnVwLCAw IC8qaWdub3JlKi8pOwogZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p biBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgogaW5kZXggODdjNmRkNC4uMWMyNjY1 MiAxMDA2NDQKIC0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgpAQCAtMTg3LDkg Kzc4MywxOCBAQCBpbmRleCA4N2M2ZGQ0Li4xYzI2NjUyIDEwMDY0NAogIEZMQUdTX1RPX1BBU1Mg PSBcCiAgCSJwcmVmaXg9JChwcmVmaXgpIiBcCiBkaWZmIC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dk Yi9kZWZzLmgKLWluZGV4IDAzMDkyYWEuLjZkNzMzODYgMTAwNjQ0CitpbmRleCAxYzZmYTc5Li5l YzA4MzQ4IDEwMDY0NAogLS0tIGEvZ2RiL2RlZnMuaAogKysrIGIvZ2RiL2RlZnMuaAorQEAgLTMx NSw3ICszMTUsNyBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9jbG9zZSAo aW50IGZkKTsKKyAKKyBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9mY2xvc2Ug KEZJTEUgKmZpbGUpOworIAorLWV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX2Jm ZF9jbG9zZSAoYmZkICphYmZkKTsKKytleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51 cF9iZmRfdW5yZWYgKGJmZCAqYWJmZCk7CisgCisgc3RydWN0IG9ic3RhY2s7CisgZXh0ZXJuIHN0 cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfb2JzdGFja19mcmVlIChzdHJ1Y3Qgb2JzdGFjayAq b2JzdGFjayk7CiBAQCAtMzUzLDYgKzM1Myw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFr ZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKICBleHRlcm4gc3RydWN0IGNsZWFu dXAgKgogICAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5m byAodm9pZCk7CkBAIC0yMDAsMTAgKzgwNSwxMCBAQCBpbmRleCAwMzA5MmFhLi42ZDczMzg2IDEw MDY0NAogIGV4dGVybiBjaGFyICp4ZnVsbHBhdGggKGNvbnN0IGNoYXIgKik7CiAgCiBkaWZmIC0t Z2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IDAx NGNmZDguLmQwYThjNTEgMTAwNjQ0CitpbmRleCBkMzI0YTkzLi45Y2NmN2YxIDEwMDY0NAogLS0t IGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTEx OTEsNiArMTE5MSwxNiBAQCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KK0BAIC0xMTk0LDYgKzExOTQs MTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3Ig eW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2lu Z2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC0y MjAsNyArODI1LDcgQEAgaW5kZXggMDE0Y2ZkOC4uZDBhOGM1MSAxMDA2NDQKICBAYyByZXNvbHZl IHRoZSBzaXR1YXRpb24gb2YgdGhlc2UgZXZlbnR1YWxseQogIEBpdGVtIC10dWkKICBAY2luZGV4 IEBjb2Rley0tdHVpfQotQEAgLTIyNDk0LDggKzIyNTA0LDYgQEAgY29udGFpbmluZyBAY29kZXtl bmR9LiAgRm9yIGV4YW1wbGU6CitAQCAtMjI1NDEsOCArMjI1NTEsNiBAQCBjb250YWluaW5nIEBj b2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtHREJQ fSkgcHl0aG9uCkBAIC0yMjksNyArODM0LDcgQEAgaW5kZXggMDE0Y2ZkOC4uZDBhOGM1MSAxMDA2 NDQKICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0yMjUwOSw2ICsyMjUxNywxNCBAQCBjb250 cm9sbGVkIHVzaW5nIEBjb2Rle3NldCBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtmdWxs fSwgdGhlbgorQEAgLTIyNTU2LDYgKzIyNTY0LDE0IEBAIGNvbnRyb2xsZWQgdXNpbmcgQGNvZGV7 c2V0IHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle2Z1bGx9LCB0aGVuCiAgZnVsbCBQeXRo b24gc3RhY2sgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7bm9uZX0sIHRoZW4gUHl0aG9u IHN0YWNrCiAgYW5kIG1lc3NhZ2UgcHJpbnRpbmcgaXMgZGlzYWJsZWQ7IGlmIEBjb2Rle21lc3Nh Z2V9LCB0aGUgZGVmYXVsdCwgb25seQogIHRoZSBtZXNzYWdlIGNvbXBvbmVudCBvZiB0aGUgZXJy b3IgaXMgcHJpbnRlZC4KQEAgLTI0NCw3ICs4NDksNyBAQCBpbmRleCAwMTRjZmQ4Li5kMGE4YzUx IDEwMDY0NAogIEBlbmQgdGFibGUKICAKICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUg YSBQeXRob24gc2NyaXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQotQEAgLTIyNTMwLDYgKzIyNTQ2 LDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCitAQCAtMjI1NzcsNiArMjI1OTMs MTQgQEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KICBAY2luZGV4IHB5dGhvbiBhcGkK ICBAY2luZGV4IHByb2dyYW1taW5nIGluIHB5dGhvbgogIApAQCAtMjYwLDcgKzg2NSw3IEBAIGlu ZGV4IDAxNGNmZDguLmQwYThjNTEgMTAwNjQ0CiAgQGNpbmRleCBweXRob24gcGFnaW5hdGlvbgog IEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3MgQGNvZGV7c3lzLnN0 ZG91dH0gYW5kCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbyBiL2dkYi9kb2Mv Z2RiaW50LnRleGluZm8KLWluZGV4IDI2N2E2ZWIuLjRmMTU5YjQgMTAwNjQ0CitpbmRleCA5YTQ0 MGVmLi5kZDA0NjMzIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogKysrIGIv Z2RiL2RvYy9nZGJpbnQudGV4aW5mbwogQEAgLTIxMDMsNiArMjEwMywxOCBAQCB0aW1lLCBhbmQg c28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3Rh bmNlLApAQCAtNDA0LDExICsxMDA5LDU1IEBAIGluZGV4IDY4MjdlZDguLmM2M2I5MDEgMTAwNjQ0 CiAgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAoaW50IEB2YXJ7c29tZWFyZ30p CiAgVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0ZXN0aW5nLiAgRG8gbm90IHVz ZS4gIAogIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAuCitkaWZmIC0tZ2l0IGEv Z2RiL2RzcmVjLmMgYi9nZGIvZHNyZWMuYworaW5kZXggZDJjOTliMi4uNjZkNGMxMyAxMDA2NDQK Ky0tLSBhL2dkYi9kc3JlYy5jCisrKysgYi9nZGIvZHNyZWMuYworQEAgLTIzLDYgKzIzLDcgQEAK KyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisgI2luY2x1ZGUg ImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIGV4dGVybiB2b2lkIHJl cG9ydF90cmFuc2Zlcl9wZXJmb3JtYW5jZSAodW5zaWduZWQgbG9uZywgdGltZV90LCB0aW1lX3Qp OworIAorQEAgLTU2LDE5ICs1NywyMiBAQCBsb2FkX3NyZWMgKHN0cnVjdCBzZXJpYWwgKmRlc2Ms IGNvbnN0IGNoYXIgKmZpbGUsIGJmZF92bWEgbG9hZF9vZmZzZXQsCisgICBpbnQgcmVjbGVuOwor ICAgdGltZV90IHN0YXJ0X3RpbWUsIGVuZF90aW1lOworICAgdW5zaWduZWQgbG9uZyBkYXRhX2Nv dW50ID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworIAorICAgc3JlYyA9IChjaGFy ICopIGFsbG9jYSAobWF4cmVjc2l6ZSArIDEpOworIAorLSAgYWJmZCA9IGJmZF9vcGVuciAoZmls ZSwgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZmlsZSwgMCkpOworICAg aWYgKCFhYmZkKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJVbmFibGUgdG8g b3BlbiBmaWxlICVzXG4iKSwgZmlsZSk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICBj bGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7CisgICBpZiAoYmZkX2NoZWNr X2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkKKyAgICAgeworICAgICAgIHByaW50Zl9m aWx0ZXJlZCAoXygiRmlsZSBpcyBub3QgYW4gb2JqZWN0IGZpbGVcbiIpKTsKKysgICAgICBkb19j bGVhbnVwcyAoY2xlYW51cCk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtMTcwLDYg KzE3NCw3IEBAIGxvYWRfc3JlYyAoc3RydWN0IHNlcmlhbCAqZGVzYywgY29uc3QgY2hhciAqZmls ZSwgYmZkX3ZtYSBsb2FkX29mZnNldCwKKyAgIHNlcmlhbF9mbHVzaF9pbnB1dCAoZGVzYyk7Cisg CisgICByZXBvcnRfdHJhbnNmZXJfcGVyZm9ybWFuY2UgKGRhdGFfY291bnQsIHN0YXJ0X3RpbWUs IGVuZF90aW1lKTsKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyB9CisgCisgLyoKIGRpZmYg LS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwotaW5kZXggZTBhYWZj Ny4uNzM4NzcxMSAxMDA2NDQKK2luZGV4IDIxNGIzNzEuLmQ5YjM3NTEgMTAwNjQ0CiAtLS0gYS9n ZGIvZHdhcmYyZXhwci5jCiArKysgYi9nZGIvZHdhcmYyZXhwci5jCi1AQCAtMTQ1OCw2ICsxNDU4 LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwK K0BAIC0xNDgwLDYgKzE0ODAsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4LAogIAkgIH0KICAJICBicmVhazsKICAKQEAgLTQyNCw3ICsxMDczLDcg QEAgaW5kZXggZTBhYWZjNy4uNzM4NzcxMSAxMDA2NDQKICAJICBlcnJvciAoXygiVW5oYW5kbGVk IGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9CiBkaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IGYzOWVmM2MuLjA2NmNi MTAgMTAwNjQ0CitpbmRleCBkYjQ5YjljLi4zYWUwYmUxIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJm MmV4cHIuaAogKysrIGIvZ2RiL2R3YXJmMmV4cHIuaAogQEAgLTkxLDEyICs5MSw4IEBAIHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKQEAgLTQ0MSwxMCArMTA5MCwxMCBAQCBpbmRleCBm MzllZjNjLi4wNjZjYjEwIDEwMDY0NAogIAogIC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVlLiAg Ki8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmMgYi9nZGIvZHdhcmYybG9jLmMKLWluZGV4 IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CitpbmRleCA2ZmVlYWI2Li44MGRkOWJjIDEwMDY0NAog LS0tIGEvZ2RiL2R3YXJmMmxvYy5jCiArKysgYi9nZGIvZHdhcmYybG9jLmMKLUBAIC0yNzQsNiAr Mjc0LDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KK0BAIC0yOTMsNiArMjkzLDkgQEAgc3Ry dWN0IGR3YXJmX2V4cHJfYmF0b24KICB7CiAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7CiAg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7CkBAIC00NTQsNyArMTEwMyw3IEBA IGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgfTsKICAKICAvKiBIZWxwZXIgZnVuY3Rp b25zIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICAqLwotQEAgLTMzMywxNiArMzM2LDE0 IEBAIHN0YXRpYyB2b2lkCitAQCAtMzUyLDE2ICszNTUsMTQgQEAgc3RhdGljIHZvaWQKICBkd2Fy Zl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIg cGMsCiAgCQkJIGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqbGVuZ3RoKQogIHsKQEAg LTQ3Myw3ICsxMTIyLDcgQEAgaW5kZXggOGM5N2YxOS4uYTZmM2U5YyAxMDA2NDQKICAgICAgewog ICAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqc3ltYmF0b247CiAgCi1AQCAtMzU1 LDEwICszNTYsMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZy YW1lZnVuYywgQ09SRV9BRERSIHBjLAorQEAgLTM3NCwxMCArMzc1LDIzIEBAIGR3YXJmX2V4cHJf ZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKICAg ICAgICBlbHNlCiAgCSpsZW5ndGggPSAwOwogICAgICB9CkBAIC00OTgsNyArMTE0Nyw3IEBAIGlu ZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgfQogIAogIC8qIEhlbHBlciBmdW5jdGlvbiBm b3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhlIENGQSBmb3IKLUBAIC00 MjYsNiArNDQwLDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4LCBjdV9vZmZzZXQgZGllX29mZnNldCkKK0BAIC00NDUsNiArNDU5LDg1IEBA IGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBj dV9vZmZzZXQgZGllX29mZnNldCkKICAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0X2ZyYW1lX3BjLCBj dHgtPmJhdG9uKTsKICB9CiAgCkBAIC01ODQsNyArMTIzMyw3IEBAIGluZGV4IDhjOTdmMTkuLmE2 ZjNlOWMgMTAwNjQ0CiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzYy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoKLUBAIC0xMTA1LDEwICsxMTk4 LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2Fy Zl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC0xMTM5LDEwICsxMjMyLDEyIEBAIGR3YXJmX2V4cHJf cHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0 eCwKICAKICAgIHNhdmVkX2N0eC5nZGJhcmNoID0gY3R4LT5nZGJhcmNoOwogICAgc2F2ZWRfY3R4 LmFkZHJfc2l6ZSA9IGN0eC0+YWRkcl9zaXplOwpAQCAtNTk3LDcgKzEyNDYsNyBAQCBpbmRleCA4 Yzk3ZjE5Li5hNmYzZTljIDEwMDY0NAogICAgY3R4LT5vZmZzZXQgPSBkd2FyZjJfcGVyX2N1X3Rl eHRfb2Zmc2V0IChiYXRvbl9sb2NhbC5wZXJfY3UpOwogICAgY3R4LT5iYXRvbiA9ICZiYXRvbl9s b2NhbDsKICAKLUBAIC0xMTE2LDEwICsxMjExLDk1IEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9y ZWdfZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC0xMTUw LDEwICsxMjQ1LDk1IEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAKICAgIGN0eC0+Z2RiYXJjaCA9IHNhdmVk X2N0eC5nZGJhcmNoOwogICAgY3R4LT5hZGRyX3NpemUgPSBzYXZlZF9jdHguYWRkcl9zaXplOwpA QCAtNjkzLDcgKzEzNDIsNyBAQCBpbmRleCA4Yzk3ZjE5Li5hNmYzZTljIDEwMDY0NAogIC8qIENh bGxiYWNrIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuCiAgICAgRmV0Y2gg dGhlIGFkZHJlc3MgaW5kZXhlZCBieSBEV19PUF9HTlVfYWRkcl9pbmRleC4gICovCiAgCi1AQCAt MjA1MywyMiArMjIzMyw2IEBAIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKHZvaWQpCitAQCAt MjA4OCwyMiArMjI2OCw2IEBAIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKHZvaWQpCiAgCSAg ICJyZWZlcmVuY2VkIHZpYSBzeW50aGV0aWMgcG9pbnRlciIpKTsKICB9CiAgCkBAIC03MTYsNyAr MTM2NSw3IEBAIGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgLyogRXZhbHVhdGUgYSBs b2NhdGlvbiBkZXNjcmlwdGlvbiwgc3RhcnRpbmcgYXQgREFUQSBhbmQgd2l0aCBsZW5ndGgKICAg ICBTSVpFLCB0byBmaW5kIHRoZSBjdXJyZW50IGxvY2F0aW9uIG9mIHZhcmlhYmxlIG9mIFRZUEUg aW4gdGhlCiAgICAgY29udGV4dCBvZiBGUkFNRS4gIEJZVEVfT0ZGU0VUIGlzIGFwcGxpZWQgYWZ0 ZXIgdGhlIGNvbnRlbnRzIGFyZQotQEAgLTIwODEsNyArMjI0NSw2IEBAIGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lLAorQEAgLTIxMTYsNyArMjI4MCw2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxs IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogIAkJCSAgICAg ICBMT05HRVNUIGJ5dGVfb2Zmc2V0KQogIHsKICAgIHN0cnVjdCB2YWx1ZSAqcmV0dmFsOwpAQCAt NzI0LDcgKzEzNzMsNyBAQCBpbmRleCA4Yzk3ZjE5Li5hNmYzZTljIDEwMDY0NAogICAgc3RydWN0 IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwg KnZhbHVlX2NoYWluOwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1 X29iamZpbGUgKHBlcl9jdSk7Ci1AQCAtMjA5MywyOSArMjI1NiwxOCBAQCBkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKK0BAIC0yMTI4LDI5ICsyMjkxLDE4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19m dWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgaWYg KHNpemUgPT0gMCkKICAgICAgcmV0dXJuIGFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHR5 cGUpOwogIApAQCAtNzU1LDcgKzE0MDQsNyBAQCBpbmRleCA4Yzk3ZjE5Li5hNmYzZTljIDEwMDY0 NAogIAkgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAJICBtYXJrX3ZhbHVlX2J5 dGVzX3VuYXZhaWxhYmxlIChyZXR2YWwsIDAsIFRZUEVfTEVOR1RIICh0eXBlKSk7CiAgCSAgcmV0 dXJuIHJldHZhbDsKLUBAIC0yMTc5LDYgKzIzMzEsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCitA QCAtMjIxNCw2ICsyMzY2LDE2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogIAkgICAgaW50IGluX3N0 YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5IChjdHgsIDApOwog IAogIAkgICAgZG9fY2xlYW51cHMgKHZhbHVlX2NoYWluKTsKQEAgLTc3Miw3ICsxNDIxLDcgQEAg aW5kZXggOGM5N2YxOS4uYTZmM2U5YyAxMDA2NDQKICAJICAgIHJldHZhbCA9IGFsbG9jYXRlX3Zh bHVlX2xhenkgKHR5cGUpOwogIAkgICAgVkFMVUVfTFZBTCAocmV0dmFsKSA9IGx2YWxfbWVtb3J5 OwogIAkgICAgaWYgKGluX3N0YWNrX21lbW9yeSkKLUBAIC00MDQ4LDggKzQyMTAsNyBAQCBsb2Ns aXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKK0BAIC00MTI0LDggKzQyODYsNyBAQCBsb2NsaXN0X3RyYWNlcG9pbnRf dmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK ICAJCQkgICAgICAgZGxiYXRvbi0+cGVyX2N1KTsKICB9CiAgCkBAIC03ODIsNyArMTQzMSw3IEBA IGluZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAgY29uc3Qgc3RydWN0IHN5bWJvbF9jb21w dXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CiAgICBsb2NsaXN0X3JlYWRfdmFyaWFi bGUsCiAgICBsb2NsaXN0X3JlYWRfdmFyaWFibGVfYXRfZW50cnksCi1AQCAtNDA1OCw2ICs0MjE5 LDQ4IEBAIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NsaXN0X2Z1 bmNzID0geworQEAgLTQxMzQsNiArNDI5NSw0OCBAQCBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1 dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xpc3RfdHJhY2Vwb2ludF92 YXJfcmVmCiAgfTsKICAKQEAgLTg1MiwxMCArMTUwMSwxNDUgQEAgaW5kZXggZTlkMDZhMy4uYmZh Njc3NiAxMDA2NDQKICAvKiBDb21waWxlIGEgRFdBUkYgbG9jYXRpb24gZXhwcmVzc2lvbiB0byBh biBhZ2VudCBleHByZXNzaW9uLgogICAgIAogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMg Yi9nZGIvZHdhcmYycmVhZC5jCi1pbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAoraW5kZXgg NTIyODhlOC4uNDQ3ZGMyNSAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKICsrKyBiL2dk Yi9kd2FyZjJyZWFkLmMKLUBAIC0xMzQ4LDYgKzEzNDgsOSBAQCBzdGF0aWMgdm9pZCBmaWxsX2lu X2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTY0LDIwICs2NCwxMiBA QAorICNpbmNsdWRlICJnZGJjb3JlLmgiIC8qIGZvciBnbnV0YXJnZXQgKi8KKyAjaW5jbHVkZSAi Z2RiL2dkYi1pbmRleC5oIgorICNpbmNsdWRlIDxjdHlwZS5oPgorKyNpbmNsdWRlICJnZGJfYmZk LmgiCisgCisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyAj aW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaWZkZWYg SEFWRV9aTElCX0gKKy0jaW5jbHVkZSA8emxpYi5oPgorLSNlbmRpZgorLSNpZmRlZiBIQVZFX01N QVAKKy0jaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0jaWZuZGVmIE1BUF9GQUlMRUQKKy0jZGVmaW5l IE1BUF9GQUlMRUQgKCh2b2lkICopIC0xKQorLSNlbmRpZgorLSNlbmRpZgorIAorIHR5cGVkZWYg c3RydWN0IHN5bWJvbCAqc3ltYm9scDsKKyBERUZfVkVDX1AgKHN5bWJvbHApOworQEAgLTk1LDgg Kzg3LDYgQEAgc3RhdGljIGludCBjaGVja19waHlzbmFtZSA9IDA7CisgLyogV2hlbiBub24temVy bywgZG8gbm90IHJlamVjdCBkZXByZWNhdGVkIC5nZGJfaW5kZXggc2VjdGlvbnMuICAqLworIGlu dCB1c2VfZGVwcmVjYXRlZF9pbmRleF9zZWN0aW9ucyA9IDA7CisgCistc3RhdGljIGludCBwYWdl c2l6ZTsKKy0KKyAvKiBXaGVuIHNldCwgdGhlIGZpbGUgdGhhdCB3ZSdyZSBwcm9jZXNzaW5nIGlz IGtub3duIHRvIGhhdmUgZGVidWdnaW5nCisgICAgaW5mbyBmb3IgQysrIG5hbWVzcGFjZXMuICBH Q0MgMy4zLnggZGlkIG5vdCBwcm9kdWNlIHRoaXMgaW5mb3JtYXRpb24sCisgICAgYnV0IGxhdGVy IHZlcnNpb25zIGRvLiAgKi8KK0BAIC0xMTAsMTAgKzEwMCw2IEBAIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvCisgICBhc2VjdGlvbiAqYXNlY3Rpb247CisgICBnZGJfYnl0ZSAqYnVmZmVyOwor ICAgYmZkX3NpemVfdHlwZSBzaXplOworLSAgLyogTm90IE5VTEwgaWYgdGhlIHNlY3Rpb24gd2Fz IGFjdHVhbGx5IG1tYXBwZWQuICAqLworLSAgdm9pZCAqbWFwX2FkZHI7CistICAvKiBQYWdlIGFs aWduZWQgc2l6ZSBvZiBtbWFwcGVkIGFyZWEuICAqLworLSAgYmZkX3NpemVfdHlwZSBtYXBfbGVu OworICAgLyogVHJ1ZSBpZiB3ZSBoYXZlIHRyaWVkIHRvIHJlYWQgdGhpcyBzZWN0aW9uLiAgKi8K KyAgIGludCByZWFkaW47CisgfTsKK0BAIC0yMjYsNiArMjEyLDEwIEBAIHN0cnVjdCBkd2FyZjJf cGVyX29iamZpbGUKKyAgICAgIFRoaXMgaXMgTlVMTCBpZiB0aGUgdGFibGUgaGFzbid0IGJlZW4g YWxsb2NhdGVkIHlldC4gICovCisgICBodGFiX3QgZHdvX2ZpbGVzOworIAorKyAgLyogVGhlIHNo YXJlZCAnLmR3eicgZmlsZSwgaWYgb25lIGV4aXN0cy4gIFRoaXMgaXMgdXNlZCB3aGVuIHRoZQor KyAgICAgb3JpZ2luYWwgZGF0YSB3YXMgY29tcHJlc3NlZCB1c2luZyAnZHd6IC1tJy4gICovCisr ICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3el9maWxlOworKworICAgLyogQSBmbGFnIGluZGljYXRpbmcg d2V0aGVyIHRoaXMgb2JqZmlsZSBoYXMgYSBzZWN0aW9uIGxvYWRlZCBhdCBhCisgICAgICBWTUEg b2YgMC4gICovCisgICBpbnQgaGFzX3NlY3Rpb25fYXRfemVybzsKK0BAIC00ODQsMTUgKzQ3NCwx MyBAQCBzdHJ1Y3QgZHdhcmYyX2N1CisgCisgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQorIHsK Ky0gIC8qIFRoZSBzdGFydCBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGlzIGNvbXBpbGF0aW9uIHVu aXQuICAyKioyOS0xCistICAgICBieXRlcyBzaG91bGQgc3VmZmljZSB0byBzdG9yZSB0aGUgbGVu Z3RoIG9mIGFueSBjb21waWxhdGlvbiB1bml0CistICAgICAtIGlmIGl0IGRvZXNuJ3QsIEdEQiB3 aWxsIGZhbGwgb3ZlciBhbnl3YXkuCisrICAvKiBUaGUgc3RhcnQgb2Zmc2V0IGFuZCBsZW5ndGgg b2YgdGhpcyBjb21waWxhdGlvbiB1bml0LgorICAgICAgTk9URTogVW5saWtlIGNvbXBfdW5pdF9o ZWFkLmxlbmd0aCwgdGhpcyBsZW5ndGggaW5jbHVkZXMKKyAgICAgIGluaXRpYWxfbGVuZ3RoX3Np emUuCisgICAgICBJZiB0aGUgRElFIHJlZmVycyB0byBhIERXTyBmaWxlLCB0aGlzIGlzIGFsd2F5 cyBvZiB0aGUgb3JpZ2luYWwgZGllLAorICAgICAgbm90IHRoZSBEV08gZmlsZS4gICovCisgICBz ZWN0X29mZnNldCBvZmZzZXQ7CistICB1bnNpZ25lZCBpbnQgbGVuZ3RoIDogMjk7CisrICB1bnNp Z25lZCBpbnQgbGVuZ3RoOworIAorICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoaXMgY29tcGlsYXRp b24gdW5pdCB3aWxsIGJlIHJlYWQgaW4gYmVmb3JlCisgICAgICBhbnkgb2YgdGhlIGN1cnJlbnQg Y29tcGlsYXRpb24gdW5pdHMgYXJlIHByb2Nlc3NlZC4gICovCitAQCAtNTA3LDYgKzQ5NSw5IEBA IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEKKyAgIC8qIE5vbi16ZXJvIGlmIHRoaXMgQ1UgaXMg ZnJvbSAuZGVidWdfdHlwZXMuICAqLworICAgdW5zaWduZWQgaW50IGlzX2RlYnVnX3R5cGVzIDog MTsKKyAKKysgIC8qIE5vbi16ZXJvIGlmIHRoaXMgQ1UgaXMgZnJvbSB0aGUgLmR3eiBmaWxlLiAg Ki8KKysgIHVuc2lnbmVkIGludCBpc19kd3ogOiAxOworKworICAgLyogVGhlIHNlY3Rpb24gdGhp cyBDVS9UVSBsaXZlcyBpbi4KKyAgICAgIElmIHRoZSBESUUgcmVmZXJzIHRvIGEgRFdPIGZpbGUs IHRoaXMgaXMgYWx3YXlzIHRoZSBvcmlnaW5hbCBkaWUsCisgICAgICBub3QgdGhlIERXTyBmaWxl LiAgKi8KK0BAIC02MjUsNiArNjE2LDIyIEBAIHN0cnVjdCBkd29fZmlsZQorICAgaHRhYl90IHR1 czsKKyB9OworIAorKy8qIFRoaXMgcmVwcmVzZW50cyBhICcuZHd6JyBmaWxlLiAgKi8KKysKKytz dHJ1Y3QgZHd6X2ZpbGUKKyt7CisrICAvKiBBIGR3eiBmaWxlIGNhbiBvbmx5IGNvbnRhaW4gYSBm ZXcgc2VjdGlvbnMuICAqLworKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gYWJicmV2Owor KyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gaW5mbzsKKysgIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvIHN0cjsKKysgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxpbmU7CisrICBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBtYWNybzsKKysgIHN0cnVjdCBkd2FyZjJfc2VjdGlv bl9pbmZvIGdkYl9pbmRleDsKKysKKysgIC8qIFRoZSBkd3oncyBCRkQuICAqLworKyAgYmZkICpk d3pfYmZkOworK307CisrCisgLyogU3RydWN0IHVzZWQgdG8gcGFzcyBtaXNjLiBwYXJhbWV0ZXJz IHRvIHJlYWRfZGllX2FuZF9jaGlsZHJlbiwgZXQKKyAgICBhbC4gIHdoaWNoIGFyZSB1c2VkIGZv ciBib3RoIC5kZWJ1Z19pbmZvIGFuZCAuZGVidWdfdHlwZXMgZGllcy4KKyAgICBBbGwgcGFyYW1l dGVycyBoZXJlIGFyZSB1bmNoYW5naW5nIGZvciB0aGUgbGlmZSBvZiB0aGUgY2FsbC4gIFRoaXMK K0BAIC03MzgsNiArNzQ1LDEyIEBAIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvCisgICAgIC8qIEZs YWcgc2V0IGlmIGZpeHVwX3BhcnRpYWxfZGllIGhhcyBiZWVuIGNhbGxlZCBvbiB0aGlzIGRpZS4g ICovCisgICAgIHVuc2lnbmVkIGludCBmaXh1cF9jYWxsZWQgOiAxOworIAorKyAgICAvKiBGbGFn IHNldCBpZiBEV19UQUdfaW1wb3J0ZWRfdW5pdCB1c2VzIERXX0ZPUk1fR05VX3JlZl9hbHQuICAq LworKyAgICB1bnNpZ25lZCBpbnQgaXNfZHd6IDogMTsKKysKKysgICAgLyogRmxhZyBzZXQgaWYg c3BlY19vZmZzZXQgdXNlcyBEV19GT1JNX0dOVV9yZWZfYWx0LiAgKi8KKysgICAgdW5zaWduZWQg aW50IHNwZWNfaXNfZHd6IDogMTsKKysKKyAgICAgLyogVGhlIG5hbWUgb2YgdGhpcyBESUUuICBO b3JtYWxseSB0aGUgdmFsdWUgb2YgRFdfQVRfbmFtZSwgYnV0CisgICAgICAgIHNvbWV0aW1lcyBh IGRlZmF1bHQgbmFtZSBmb3IgdW5uYW1lZCBESUVzLiAgKi8KKyAgICAgY2hhciAqbmFtZTsKK0BA IC0xMTIxLDcgKzExMzQsNyBAQCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfcGFydGlhbF9kaWUgKGNv bnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICosCisgCQkJCSAgIHVuc2lnbmVkIGludCwKKyAJ CQkJICAgZ2RiX2J5dGUgKik7CisgCistc3RhdGljIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpm aW5kX3BhcnRpYWxfZGllIChzZWN0X29mZnNldCwKKytzdGF0aWMgc3RydWN0IHBhcnRpYWxfZGll X2luZm8gKmZpbmRfcGFydGlhbF9kaWUgKHNlY3Rfb2Zmc2V0LCBpbnQsCisgCQkJCQkJICBzdHJ1 Y3QgZHdhcmYyX2N1ICopOworIAorIHN0YXRpYyB2b2lkIGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1 Y3QgcGFydGlhbF9kaWVfaW5mbyAqLAorQEAgLTExNjMsNiArMTE3Niw4IEBAIHN0YXRpYyBjaGFy ICpyZWFkX2luZGlyZWN0X3N0cmluZyAoYmZkICosIGdkYl9ieXRlICosCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY29tcF91bml0X2hlYWQgKiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqKTsKKyAKKytz dGF0aWMgY2hhciAqcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKHN0cnVjdCBkd3pfZmls ZSAqLCBMT05HRVNUKTsKKysKKyBzdGF0aWMgVUxPTkdFU1QgcmVhZF91bnNpZ25lZF9sZWIxMjgg KGJmZCAqLCBnZGJfYnl0ZSAqLCB1bnNpZ25lZCBpbnQgKik7CisgCisgc3RhdGljIExPTkdFU1Qg cmVhZF9zaWduZWRfbGViMTI4IChiZmQgKiwgZ2RiX2J5dGUgKiwgdW5zaWduZWQgaW50ICopOwor QEAgLTE0MDcsNiArMTQyMiw5IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAo c3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgCQkJCSAgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRv biAqYmF0b24sCiAgCQkJCSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpOwogIApAQCAtODY1LDcg KzE2NDksMTYgQEAgaW5kZXggOGRiYzUzZS4uYjViNzgxMyAxMDA2NDQKICBzdGF0aWMgdm9pZCBk d2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJ CQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBA IC0xMzgwLDYgKzEzODMsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZv aWQpOworQEAgLTE0MjIsNyArMTQ0MCw3IEBAIHN0YXRpYyBoYXNodmFsX3QgcGFydGlhbF9kaWVf aGFzaCAoY29uc3Qgdm9pZCAqaXRlbSk7Cisgc3RhdGljIGludCBwYXJ0aWFsX2RpZV9lcSAoY29u c3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKTsKKyAKKyBzdGF0aWMgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQK Ky0gIChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysgIChz ZWN0X29mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGludCBvZmZzZXRfaW5fZHd6LCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSk7CisgCisgc3RhdGljIHZvaWQgaW5pdF9vbmVfY29tcF91bml0IChzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSwKKyAJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1 KTsKK0BAIC0xNDM5LDYgKzE0NTcsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5p dHMgKHZvaWQpOwogIAogIHN0YXRpYyB2b2lkIGZyZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCkBAIC04NzUsNyArMTY2OCw3IEBAIGluZGV4 IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgc3RhdGljIHN0cnVjdCB0eXBlICpzZXRfZGllX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkgIHN0cnVjdCBkd2Fy ZjJfY3UgKik7CiAgCi1AQCAtMTQwNSw2ICsxNDExLDkgQEAgc3RhdGljIHN0cnVjdCB0eXBlICpn ZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChzZWN0X29mZnNldCwKK0BAIC0xNDY0LDYgKzE0ODUsOSBA QCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHNlY3Rfb2Zmc2V0 LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIApAQCAtODg1LDgwICsxNjc4LDkzNCBAQCBp bmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogIHN0YXRpYyB2b2lkIGR3YXJmMl9yZWxlYXNl X3F1ZXVlICh2b2lkICpkdW1teSk7CiAgCiAgc3RhdGljIHZvaWQgcXVldWVfY29tcF91bml0IChz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi1AQCAtOTUyNiw2ICs5NTM1LDI5IEBA IHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKLSAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CitAQCAt MTQ4Miw2ICsxNTA2LDEyIEBAIHN0YXRpYyB2b2lkIGZpbmRfZmlsZV9hbmRfZGlyZWN0b3J5IChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKKyBzdGF0aWMgY2hhciAqZmlsZV9mdWxsX25hbWUgKGludCBm aWxlLCBzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLAorIAkJCSAgICAgY29uc3QgY2hhciAqY29tcF9k aXIpOworIAorK3N0YXRpYyBnZGJfYnl0ZSAqcmVhZF9hbmRfY2hlY2tfY29tcF91bml0X2hlYWQK KysgIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmhlYWRlciwKKysgICBzdHJ1Y3QgZHdhcmYyX3Nl Y3Rpb25faW5mbyAqc2VjdGlvbiwKKysgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqYWJi cmV2X3NlY3Rpb24sIGdkYl9ieXRlICppbmZvX3B0ciwKKysgICBpbnQgaXNfZGVidWdfdHlwZXNf c2VjdGlvbik7CisrCisgc3RhdGljIHZvaWQgaW5pdF9jdXR1X2FuZF9yZWFkX2RpZXMKKyAgIChz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LCBpbnQgdXNlX2V4aXN0aW5nX2N1LCBp bnQga2VlcCwKKyAgICBkaWVfcmVhZGVyX2Z1bmNfZnR5cGUgKmRpZV9yZWFkZXJfZnVuYywgdm9p ZCAqZGF0YSk7CitAQCAtMTUwNCw4ICsxNTM0LDYgQEAgc3RhdGljIHN0cnVjdCBkd29fdW5pdCAq bG9va3VwX2R3b190eXBlX3VuaXQKKyAKKyBzdGF0aWMgdm9pZCBmcmVlX2R3b19maWxlX2NsZWFu dXAgKHZvaWQgKik7CisgCistc3RhdGljIHZvaWQgbXVubWFwX3NlY3Rpb25fYnVmZmVyIChzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqKTsKKy0KKyBzdGF0aWMgdm9pZCBwcm9jZXNzX2N1X2lu Y2x1ZGVzICh2b2lkKTsKKyAKKyAjaWYgV09SRFNfQklHRU5ESUFOCitAQCAtMTY3NSw4NSArMTcw Myw2IEBAIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3Rw LCB2b2lkICp2bmFtZXMpCisgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+aGFzX3NlY3Rpb25fYXRf emVybyA9IDE7CiAgfQogIAotKy8qIENyZWF0ZSBhIG5ldyBhcnJheSBkaW1lbnNpb24gcmVmZXJl bmNpbmcgaXRzIHRhcmdldCB0eXBlIFRZUEUuCistLyogRGVjb21wcmVzcyBhIHNlY3Rpb24gdGhh dCB3YXMgY29tcHJlc3NlZCB1c2luZyB6bGliLiAgU3RvcmUgdGhlCistICAgZGVjb21wcmVzc2Vk IGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBpbiBPVVRCVUYgYW5kIE9VVFNJWkUuICAqLworLQorLXN0 YXRpYyB2b2lkCistemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBhc2VjdGlvbiAqc2VjdHAsCistICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9ieXRl ICoqb3V0YnVmLCBiZmRfc2l6ZV90eXBlICpvdXRzaXplKQorLXsKKy0gIGJmZCAqYWJmZCA9IHNl Y3RwLT5vd25lcjsKKy0jaWZuZGVmIEhBVkVfWkxJQl9ICistICBlcnJvciAoXygiU3VwcG9ydCBm b3IgemxpYi1jb21wcmVzc2VkIERXQVJGIGRhdGEgKGZyb20gJyVzJykgIgorLSAgICAgICAgICAg ImlzIGRpc2FibGVkIGluIHRoaXMgY29weSBvZiBHREIiKSwKKy0gICAgICAgICBiZmRfZ2V0X2Zp bGVuYW1lIChhYmZkKSk7CistI2Vsc2UKKy0gIGJmZF9zaXplX3R5cGUgY29tcHJlc3NlZF9zaXpl ID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKy0gIGdkYl9ieXRlICpjb21wcmVzc2Vk X2J1ZmZlciA9IHhtYWxsb2MgKGNvbXByZXNzZWRfc2l6ZSk7CistICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGNvbXByZXNzZWRfYnVmZmVyKTsKKy0gIGJm ZF9zaXplX3R5cGUgdW5jb21wcmVzc2VkX3NpemU7CistICBnZGJfYnl0ZSAqdW5jb21wcmVzc2Vk X2J1ZmZlcjsKKy0gIHpfc3RyZWFtIHN0cm07CistICBpbnQgcmM7CistICBpbnQgaGVhZGVyX3Np emUgPSAxMjsKKy0KKy0gIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtf U0VUKSAhPSAwCistICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2VkX2J1ZmZlciwKKy0JCSAg ICBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNvbXByZXNzZWRfc2l6ZSkKKy0gICAgZXJyb3Ig KF8oIkR3YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAnJXMnIiksCistICAg ICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CistCistICAvKiBSZWFkIHRoZSB6bGli IGhlYWRlci4gIEluIHRoaXMgY2FzZSwgaXQgc2hvdWxkIGJlICJaTElCIiBmb2xsb3dlZAorLSAg ICAgYnkgdGhlIHVuY29tcHJlc3NlZCBzZWN0aW9uIHNpemUsIDggYnl0ZXMgaW4gYmlnLWVuZGlh biBvcmRlci4gICovCistICBpZiAoY29tcHJlc3NlZF9zaXplIDwgaGVhZGVyX3NpemUKKy0gICAg ICB8fCBzdHJuY21wIChjb21wcmVzc2VkX2J1ZmZlciwgIlpMSUIiLCA0KSAhPSAwKQorLSAgICBl cnJvciAoXygiRHdhcmYgRXJyb3I6IENvcnJ1cHQgRFdBUkYgWkxJQiBoZWFkZXIgZnJvbSAnJXMn IiksCistICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CistICB1bmNvbXByZXNz ZWRfc2l6ZSA9IGNvbXByZXNzZWRfYnVmZmVyWzRdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsK Ky0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzVdOyB1bmNvbXByZXNz ZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVy WzZdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNv bXByZXNzZWRfYnVmZmVyWzddOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJl c3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzhdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0g ODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzldOyB1bmNvbXBy ZXNzZWRfc2l6ZSA8PD0gODsKKy0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVm ZmVyWzEwXTsgdW5jb21wcmVzc2VkX3NpemUgPDw9IDg7CistICB1bmNvbXByZXNzZWRfc2l6ZSAr PSBjb21wcmVzc2VkX2J1ZmZlclsxMV07CistCistICAvKiBJdCBpcyBwb3NzaWJsZSB0aGUgc2Vj dGlvbiBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXByZXNzZWQKKy0gICAgIGJ1ZmZlcnMgY29uY2F0 ZW5hdGVkIHRvZ2V0aGVyLCBzbyB3ZSB1bmNvbXByZXNzIGluIGEgbG9vcC4gICovCistICBzdHJt LnphbGxvYyA9IE5VTEw7CistICBzdHJtLnpmcmVlID0gTlVMTDsKKy0gIHN0cm0ub3BhcXVlID0g TlVMTDsKKy0gIHN0cm0uYXZhaWxfaW4gPSBjb21wcmVzc2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsK Ky0gIHN0cm0ubmV4dF9pbiA9IChCeXRlZiopIGNvbXByZXNzZWRfYnVmZmVyICsgaGVhZGVyX3Np emU7CistICBzdHJtLmF2YWlsX291dCA9IHVuY29tcHJlc3NlZF9zaXplOworLSAgdW5jb21wcmVz c2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5jb21wcmVzc2VkX3NpemUp OworLSAgcmMgPSBpbmZsYXRlSW5pdCAoJnN0cm0pOworLSAgd2hpbGUgKHN0cm0uYXZhaWxfaW4g PiAwKQorLSAgICB7CistICAgICAgaWYgKHJjICE9IFpfT0spCistICAgICAgICBlcnJvciAoXygi RHdhcmYgRXJyb3I6IHNldHRpbmcgdXAgRFdBUkYgdW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIp LAorLSAgICAgICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCByYyk7CistICAgICAg c3RybS5uZXh0X291dCA9ICgoQnl0ZWYqKSB1bmNvbXByZXNzZWRfYnVmZmVyCistICAgICAgICAg ICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0uYXZhaWxfb3V0KSk7Cist ICAgICAgcmMgPSBpbmZsYXRlICgmc3RybSwgWl9GSU5JU0gpOworLSAgICAgIGlmIChyYyAhPSBa X1NUUkVBTV9FTkQpCistICAgICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IHpsaWIgZXJyb3Ig dW5jb21wcmVzc2luZyBmcm9tICclcyc6ICVkIiksCistICAgICAgICAgICAgICAgYmZkX2dldF9m aWxlbmFtZSAoYWJmZCksIHJjKTsKKy0gICAgICByYyA9IGluZmxhdGVSZXNldCAoJnN0cm0pOwor LSAgICB9CistICByYyA9IGluZmxhdGVFbmQgKCZzdHJtKTsKKy0gIGlmIChyYyAhPSBaX09LCist ICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkKKy0gICAgZXJyb3IgKF8oIkR3YXJmIEVycm9y OiBjb25jbHVkaW5nIERXQVJGIHVuY29tcHJlc3Npb24gaW4gJyVzJzogJWQiKSwKKy0gICAgICAg ICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCByYyk7CistCistICBkb19jbGVhbnVwcyAoY2xl YW51cCk7CistICAqb3V0YnVmID0gdW5jb21wcmVzc2VkX2J1ZmZlcjsKKy0gICpvdXRzaXplID0g dW5jb21wcmVzc2VkX3NpemU7CistI2VuZGlmCistfQorLQorIC8qIEEgaGVscGVyIGZ1bmN0aW9u IHRoYXQgZGVjaWRlcyB3aGV0aGVyIGEgc2VjdGlvbiBpcyBlbXB0eSwKKyAgICBvciBub3QgcHJl c2VudC4gICovCisgCitAQCAtMTc4MCw1NiArMTcyOSwyNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9u IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmlu Zm8pCisgICBpZiAoaW5mby0+cmVhZGluKQorICAgICByZXR1cm47CisgICBpbmZvLT5idWZmZXIg PSBOVUxMOworLSAgaW5mby0+bWFwX2FkZHIgPSBOVUxMOworICAgaW5mby0+cmVhZGluID0gMTsK KyAKKyAgIGlmIChkd2FyZjJfc2VjdGlvbl9lbXB0eV9wIChpbmZvKSkKKyAgICAgcmV0dXJuOwor IAorLSAgLyogTm90ZSB0aGF0IEFCRkQgbWF5IG5vdCBiZSBmcm9tIE9CSkZJTEUsIGUuZy4gYSBE V08gc2VjdGlvbi4gICovCisgICBhYmZkID0gc2VjdHAtPm93bmVyOworIAorLSAgLyogQ2hlY2sg aWYgdGhlIGZpbGUgaGFzIGEgNC1ieXRlIGhlYWRlciBpbmRpY2F0aW5nIGNvbXByZXNzaW9uLiAg Ki8KKy0gIGlmIChpbmZvLT5zaXplID4gc2l6ZW9mIChoZWFkZXIpCistICAgICAgJiYgYmZkX3Nl ZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgPT0gMAorLSAgICAgICYmIGJmZF9i cmVhZCAoaGVhZGVyLCBzaXplb2YgKGhlYWRlciksIGFiZmQpID09IHNpemVvZiAoaGVhZGVyKSkK Ky0gICAgeworLSAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBkYXRlIHRoZSBidWZmZXIg YW5kIGl0cyBzaXplLiAgKi8KKy0gICAgICBpZiAoc3RybmNtcCAoaGVhZGVyLCAiWkxJQiIsIHNp emVvZiAoaGVhZGVyKSkgPT0gMCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgemxpYl9kZWNvbXBy ZXNzX3NlY3Rpb24gKG9iamZpbGUsIHNlY3RwLCAmaW5mby0+YnVmZmVyLAorLQkJCQkgICAmaW5m by0+c2l6ZSk7CistICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSNp ZmRlZiBIQVZFX01NQVAKKy0gIGlmIChwYWdlc2l6ZSA9PSAwKQorLSAgICBwYWdlc2l6ZSA9IGdl dHBhZ2VzaXplICgpOworLQorLSAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0aW9ucyB3aGljaCBh cmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCistICAgICB3YXN0ZSBzcGFjZSBkdWUg dG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNlY3Rpb25zCistICAg ICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KKy0KKy0gIGlmIChpbmZvLT5zaXplID4gNCAqIHBh Z2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCisrICAvKiBJZiB0aGUg c2VjdGlvbiBoYXMgcmVsb2NhdGlvbnMsIHdlIG11c3QgcmVhZCBpdCBvdXJzZWx2ZXMuCisrICAg ICBPdGhlcndpc2Ugd2UgYXR0YWNoIGl0IHRvIHRoZSBCRkQuICAqLworKyAgaWYgKChzZWN0cC0+ ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCisgICAgIHsKKy0gICAgICBpbmZvLT5idWZmZXIgPSBi ZmRfbW1hcCAoYWJmZCwgMCwgaW5mby0+c2l6ZSwgUFJPVF9SRUFELAorLSAgICAgICAgICAgICAg ICAgICAgICAgICBNQVBfUFJJVkFURSwgc2VjdHAtPmZpbGVwb3MsCistICAgICAgICAgICAgICAg ICAgICAgICAgICZpbmZvLT5tYXBfYWRkciwgJmluZm8tPm1hcF9sZW4pOworKyAgICAgIGNvbnN0 IGdkYl9ieXRlICpieXRlcyA9IGdkYl9iZmRfbWFwX3NlY3Rpb24gKHNlY3RwLCAmaW5mby0+c2l6 ZSk7CisgCistICAgICAgaWYgKChjYWRkcl90KWluZm8tPmJ1ZmZlciAhPSBNQVBfRkFJTEVEKQor LQl7CistI2lmIEhBVkVfUE9TSVhfTUFEVklTRQorLQkgIHBvc2l4X21hZHZpc2UgKGluZm8tPm1h cF9hZGRyLCBpbmZvLT5tYXBfbGVuLCBQT1NJWF9NQURWX1dJTExORUVEKTsKKy0jZW5kaWYKKy0J ICByZXR1cm47CistCX0KKysgICAgICAvKiBXZSBoYXZlIHRvIGNhc3QgYXdheSBjb25zdCBoZXJl IGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCisrCSBGaXhpbmcgZHdhcmYycmVhZCB0byBiZSBjb25z dC1jb3JyZWN0IHdvdWxkIGJlIHF1aXRlIG5pY2UuICAqLworKyAgICAgIGluZm8tPmJ1ZmZlciA9 IChnZGJfYnl0ZSAqKSBieXRlczsKKysgICAgICByZXR1cm47CisgICAgIH0KKy0jZW5kaWYKKyAK Ky0gIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3JtYWwsIG5vdC1jb21wcmVzc2VkIHNl Y3Rpb24uICAqLworLSAgaW5mby0+YnVmZmVyID0gYnVmCistICAgID0gb2JzdGFja19hbGxvYyAo Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgaW5mby0+c2l6ZSk7CisrICBidWYgPSBvYnN0YWNr X2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKKysgIGluZm8t PmJ1ZmZlciA9IGJ1ZjsKKyAKKyAgIC8qIFdoZW4gZGVidWdnaW5nIC5vIGZpbGVzLCB3ZSBtYXkg bmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2VlCisgICAgICBodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KK0BAIC0xOTA1LDYgKzE4 MjUsMTExIEBAIGR3YXJmMl9nZXRfc2VjdGlvbl9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKKyAgICpzaXplcCA9IGluZm8tPnNpemU7CisgfQorIAorKy8qIEEgaGVscGVyIGZ1bmN0aW9u IHRvIGZpbmQgdGhlIHNlY3Rpb25zIGZvciBhIC5kd3ogZmlsZS4gICovCiArCi0rICAgTXVsdGlk aW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSBzdGFjayBv ZgotKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyByZWZlcmVuY2VkIGJ5IHRoZWly IFRZUEVfVEFSR0VUX1RZUEUuICAqLworK3N0YXRpYyB2b2lkCisrbG9jYXRlX2R3el9zZWN0aW9u cyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmFyZykKKyt7CisrICBzdHJ1Y3Qg ZHd6X2ZpbGUgKmR3el9maWxlID0gYXJnOwogKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rY3Jl YXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlw ZSAqcmFuZ2VfdHlwZSwKLSsJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorKyAgLyogTm90ZSB0aGF0IHdlIG9ubHkgc3VwcG9ydCB0aGUgc3RhbmRh cmQgRUxGIG5hbWVzLCBiZWNhdXNlIC5kd3oKKysgICAgIGlzIEVMRi1vbmx5IChhdCB0aGUgdGlt ZSBvZiB3cml0aW5nKS4gICovCisrICBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJmR3 YXJmMl9lbGZfbmFtZXMuYWJicmV2KSkKKysgICAgeworKyAgICAgIGR3el9maWxlLT5hYmJyZXYu YXNlY3Rpb24gPSBzZWN0cDsKKysgICAgICBkd3pfZmlsZS0+YWJicmV2LnNpemUgPSBiZmRfZ2V0 X3NlY3Rpb25fc2l6ZSAoc2VjdHApOworKyAgICB9CisrICBlbHNlIGlmIChzZWN0aW9uX2lzX3Ag KHNlY3RwLT5uYW1lLCAmZHdhcmYyX2VsZl9uYW1lcy5pbmZvKSkKKysgICAgeworKyAgICAgIGR3 el9maWxlLT5pbmZvLmFzZWN0aW9uID0gc2VjdHA7CisrICAgICAgZHd6X2ZpbGUtPmluZm8uc2l6 ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisrICAgIH0KKysgIGVsc2UgaWYgKHNl Y3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsICZkd2FyZjJfZWxmX25hbWVzLnN0cikpCisrICAgIHsK KysgICAgICBkd3pfZmlsZS0+c3RyLmFzZWN0aW9uID0gc2VjdHA7CisrICAgICAgZHd6X2ZpbGUt PnN0ci5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysgICAgfQorKyAgZWxz ZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJmR3YXJmMl9lbGZfbmFtZXMubGluZSkp CisrICAgIHsKKysgICAgICBkd3pfZmlsZS0+bGluZS5hc2VjdGlvbiA9IHNlY3RwOworKyAgICAg IGR3el9maWxlLT5saW5lLnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOworKyAg ICB9CisrICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmZHdhcmYyX2VsZl9u YW1lcy5tYWNybykpCisrICAgIHsKKysgICAgICBkd3pfZmlsZS0+bWFjcm8uYXNlY3Rpb24gPSBz ZWN0cDsKKysgICAgICBkd3pfZmlsZS0+bWFjcm8uc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXpl IChzZWN0cCk7CisrICAgIH0KKysgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUs ICZkd2FyZjJfZWxmX25hbWVzLmdkYl9pbmRleCkpCisrICAgIHsKKysgICAgICBkd3pfZmlsZS0+ Z2RiX2luZGV4LmFzZWN0aW9uID0gc2VjdHA7CisrICAgICAgZHd6X2ZpbGUtPmdkYl9pbmRleC5z aXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysgICAgfQorK30KKysKKysvKiBP cGVuIHRoZSBzZXBhcmF0ZSAnLmR3eicgZGVidWcgZmlsZSwgaWYgbmVlZGVkLiAgRXJyb3IgaWYg dGhlIGZpbGUKKysgICBjYW5ub3QgYmUgZm91bmQuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgZHd6 X2ZpbGUgKgorK2R3YXJmMl9nZXRfZHd6X2ZpbGUgKHZvaWQpCiArewotKyAgdHlwZSA9IGNyZWF0 ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlKTsKKysgIGJmZCAqYWJmZCwgKmR3 el9iZmQ7CisrICBhc2VjdGlvbiAqc2VjdGlvbjsKKysgIGdkYl9ieXRlICpkYXRhOworKyAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXA7CisrICBjb25zdCBjaGFyICpmaWxlbmFtZTsKKysgIHN0cnVj dCBkd3pfZmlsZSAqcmVzdWx0OworKworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2Zp bGUgIT0gTlVMTCkKKysgICAgcmV0dXJuIGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2ZpbGU7Cisr CisrICBhYmZkID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLT5vYmZkOworKyAgc2VjdGlv biA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmdudV9kZWJ1Z2FsdGxpbmsiKTsK KysgIGlmIChzZWN0aW9uID09IE5VTEwpCisrICAgIGVycm9yIChfKCJjb3VsZCBub3QgZmluZCAn LmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb24iKSk7CisrICBpZiAoIWJmZF9tYWxsb2NfYW5kX2dl dF9zZWN0aW9uIChhYmZkLCBzZWN0aW9uLCAmZGF0YSkpCisrICAgIGVycm9yIChfKCJjb3VsZCBu b3QgcmVhZCAnLmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb246ICVzIiksCisrCSAgIGJmZF9lcnJt c2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKysgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBkYXRhKTsKKysKKysgIGZpbGVuYW1lID0gZGF0YTsKKysgIGlmICghSVNfQUJTT0xVVEVfUEFU SCAoZmlsZW5hbWUpKQorKyAgICB7CisrICAgICAgY2hhciAqYWJzID0gZ2RiX3JlYWxwYXRoIChk d2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUtPm5hbWUpOworKyAgICAgIGNoYXIgKnJlbDsKICsK LSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgZmV0Y2hlZCBi eQotKyAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIDxtdWx0aV9mNzdfc3Vic2NyaXB0Pidz IGNhbGwgb2YKLSsgICAgIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSBvbmx5IGZvciB0aGUgaW5u ZXJtb3N0IGFycmF5IHR5cGUuICAqLwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlw ZSwgY3UpOworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGFicyk7CisrICAgICAgYWJzID0g bGRpcm5hbWUgKGFicyk7CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgYWJzKTsKICsKLSsg IC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1dGVzIGFyZSBjaGVja2VkIGZvciBhbGxvY2F0 ZWQvYXNzb2NpYXRlZAotKyAgICAgdmFsaWRpdHkgd2hpbGUgYWNjZXNzaW5nIEZJRUxEX0xPQ19L SU5EX0RXQVJGX0JMT0NLLiAgKi8KLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHJhbmdl X3R5cGUsIGN1KTsKKysgICAgICByZWwgPSBjb25jYXQgKGFicywgU0xBU0hfU1RSSU5HLCBmaWxl bmFtZSwgKGNoYXIgKikgTlVMTCk7CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVsKTsK KysgICAgICBmaWxlbmFtZSA9IHJlbDsKKysgICAgfQogKwotKyAgcmV0dXJuIHR5cGU7Ci0rfQor KyAgLyogVGhlIGZvcm1hdCBpcyBqdXN0IGEgTlVMLXRlcm1pbmF0ZWQgZmlsZSBuYW1lLCBmb2xs b3dlZCBieSB0aGUKKysgICAgIGJ1aWxkLWlkLiAgRm9yIG5vdywgdGhvdWdoLCB3ZSBpZ25vcmUg dGhlIGJ1aWxkLWlkLiAgKi8KKysgIGR3el9iZmQgPSBnZGJfYmZkX29wZW4gKGZpbGVuYW1lLCBn bnV0YXJnZXQsIC0xKTsKKysgIGlmIChkd3pfYmZkID09IE5VTEwpCisrICAgIGVycm9yIChfKCJj b3VsZCBub3QgcmVhZCAnJXMnOiAlcyIpLCBmaWxlbmFtZSwKKysJICAgYmZkX2Vycm1zZyAoYmZk X2dldF9lcnJvciAoKSkpOwogKwotIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBE V19UQUdfYXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgotICAgIHRoZSBESUUncyB0eXBlIGZp ZWxkLiAgRm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCi0gICAgYXJy YXlzLiAgKi8KLUBAIC05NTM5LDcgKzk1NzEsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCB0eXBlICplbGVt ZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKLSAgIHN0cnVjdCB0eXBlICoqcmFu Z2VfdHlwZXMgPSBOVUxMOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIGludCBuZGlt ID0gMDsKLSsgIGludCBuZGltID0gMCwgaTsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwot ICAgY2hhciAqbmFtZTsKKysgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAoZHd6X2JmZCwgYmZkX29i amVjdCkpCisrICAgIHsKKysgICAgICBnZGJfYmZkX3VucmVmIChkd3pfYmZkKTsKKysgICAgICBl cnJvciAoXygiZmlsZSAnJXMnIHdhcyBub3QgdXNhYmxlOiAlcyIpLCBmaWxlbmFtZSwKKysJICAg ICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisrICAgIH0KKysKKysgIHJlc3VsdCA9 IE9CU1RBQ0tfWkFMTE9DICgmZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssCisrCQkJICAgc3RydWN0IGR3el9maWxlKTsKKysgIHJlc3VsdC0+ZHd6X2JmZCA9IGR3 el9iZmQ7CisrCisrICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKGR3el9iZmQsIGxvY2F0ZV9kd3pf c2VjdGlvbnMsIHJlc3VsdCk7CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCisrICBy ZXR1cm4gcmVzdWx0OworK30KKyAMCisgLyogRFdBUkYgcXVpY2tfc3ltYm9sc19mdW5jdGlvbnMg c3VwcG9ydC4gICovCiAgCi1AQCAtOTU5MiwxNyArOTYyNCwxOSBAQCByZWFkX2FycmF5X3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHR5cGUgPSBl bGVtZW50X3R5cGU7CitAQCAtMjEwMSwyMyArMjEyNiwxOSBAQCBleHRyYWN0X2N1X3ZhbHVlIChj b25zdCBjaGFyICpieXRlcywgVUxPTkdFU1QgKnJlc3VsdCkKKyAgIHJldHVybiAxOworIH0KICAK LSAgIGlmIChyZWFkX2FycmF5X29yZGVyIChkaWUsIGN1KSA9PSBEV19PUkRfY29sX21ham9yKQot LSAgICB7Ci0tICAgICAgaW50IGkgPSAwOworLS8qIFJlYWQgdGhlIENVIGxpc3QgZnJvbSB0aGUg bWFwcGVkIGluZGV4LCBhbmQgdXNlIGl0IHRvIGNyZWF0ZSBhbGwKKy0gICB0aGUgQ1Ugb2JqZWN0 cyBmb3IgdGhpcyBvYmpmaWxlLiAgUmV0dXJuIDAgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcsCist ICAgMSBpZiBldmVyeXRoaW5nIHdlbnQgb2suICAqLworKy8qIEEgaGVscGVyIGZvciBjcmVhdGVf Y3VzX2Zyb21faW5kZXggdGhhdCBoYW5kbGVzIGEgZ2l2ZW4gbGlzdCBvZgorKyAgIENVcy4gICov CisgCisgc3RhdGljIGludAorLWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LAorLQkJICAgICAgIG9mZnNldF90eXBl IGN1X2xpc3RfZWxlbWVudHMpCisrY3JlYXRlX2N1c19mcm9tX2luZGV4X2xpc3QgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorKwkJCSAgICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdCwgb2Zmc2V0 X3R5cGUgbl9lbGVtZW50cywKKysJCQkgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNl Y3Rpb24sCisrCQkJICAgIGludCBpc19kd3osCisrCQkJICAgIGludCBiYXNlX29mZnNldCkKKyB7 CisgICBvZmZzZXRfdHlwZSBpOworIAorLSAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5p dHMgPSBjdV9saXN0X2VsZW1lbnRzIC8gMjsKKy0gIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2Nv bXBfdW5pdHMKKy0gICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr LAorLQkJICAgICBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cworLQkJICAgICAqIHNp emVvZiAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKSk7CiAtCi0tICAgICAgd2hpbGUgKGkg PCBuZGltKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5 cGVzW2krK10pOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB3aGlsZSAobmRpbS0t ID4gMCkKLS0JdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBl c1tuZGltXSk7Ci0tICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykKLSsgICAg ICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVz W2ldLCBkaWUsIGN1KTsKLSsgIGVsc2UgLyogKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09 IERXX09SRF9yb3dfbWFqb3IpICovCi0rICAgIGZvciAoaSA9IG5kaW0gLSAxOyBpID49IDA7IGkt LSkKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJh bmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsKLSsgIC8qIERhdGEgbG9jYXRpb25zIHNob3VsZCBi ZSBzZXQgb25seSBmb3IgdGhlIG91dGVybW9zdCBkaW1lbnNpb24gYXMgdGhleQotKyAgICAgd291 bGQgYmUgY29uZnVzaW5nIGZvciB0aGUgZGVyZWZlcmVuY2VkIG9mZnNldCBvbiB0aGUgaW5uZXIg b25lcy4gICovCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlv biwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfREFU QV9MT0NBVElPTl9EV0FSRl9CTE9DSyAodHlwZSkKLSsgICAgICA9IGR3YXJmMl9hdHRyX3RvX2xv Y2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJ T05fSVNfQUREUiAodHlwZSkpOworLSAgZm9yIChpID0gMDsgaSA8IGN1X2xpc3RfZWxlbWVudHM7 IGkgKz0gMikKKysgIGZvciAoaSA9IDA7IGkgPCBuX2VsZW1lbnRzOyBpICs9IDIpCisgICAgIHsK KyAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGVfY3U7CisgICAgICAgVUxPTkdF U1Qgb2Zmc2V0LCBsZW5ndGg7CitAQCAtMjEzMiwxNSArMjE1Myw0NSBAQCBjcmVhdGVfY3VzX2Zy b21faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBnZGJfYnl0ZSAqY3VfbGlz dCwKKyAgICAgICB0aGVfY3UtPm9mZnNldC5zZWN0X29mZiA9IG9mZnNldDsKKyAgICAgICB0aGVf Y3UtPmxlbmd0aCA9IGxlbmd0aDsKKyAgICAgICB0aGVfY3UtPm9iamZpbGUgPSBvYmpmaWxlOwor LSAgICAgIHRoZV9jdS0+aW5mb19vcl90eXBlc19zZWN0aW9uID0gJmR3YXJmMl9wZXJfb2JqZmls ZS0+aW5mbzsKKysgICAgICB0aGVfY3UtPmluZm9fb3JfdHlwZXNfc2VjdGlvbiA9IHNlY3Rpb247 CisgICAgICAgdGhlX2N1LT52LnF1aWNrID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCisgCQkJCQlzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhKTsKKy0g ICAgICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2kgLyAyXSA9IHRoZV9jdTsK KysgICAgICB0aGVfY3UtPmlzX2R3eiA9IGlzX2R3ejsKKysgICAgICBkd2FyZjJfcGVyX29iamZp bGUtPmFsbF9jb21wX3VuaXRzW2Jhc2Vfb2Zmc2V0ICsgaSAvIDJdID0gdGhlX2N1OworICAgICB9 CiAgCi0gICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxp a2UgdGhleSBvY2N1ciBvbgotICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVz dCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTEwMDg2LDI5ICsxMDEyMCwxMTQg QEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJj aCAob2JqZmlsZSk7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90 eXBlLCAqY2hhcl90eXBlOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAgIHJldHVybiAx OworIH0KKyAKKysvKiBSZWFkIHRoZSBDVSBsaXN0IGZyb20gdGhlIG1hcHBlZCBpbmRleCwgYW5k IHVzZSBpdCB0byBjcmVhdGUgYWxsCisrICAgdGhlIENVIG9iamVjdHMgZm9yIHRoaXMgb2JqZmls ZS4gIFJldHVybiAwIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLAorKyAgIDEgaWYgZXZlcnl0aGlu ZyB3ZW50IG9rLiAgKi8KKysKKytzdGF0aWMgaW50CisrY3JlYXRlX2N1c19mcm9tX2luZGV4IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCSAgICAgICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlz dCwgb2Zmc2V0X3R5cGUgY3VfbGlzdF9lbGVtZW50cywKKysJCSAgICAgICBjb25zdCBnZGJfYnl0 ZSAqZHd6X2xpc3QsIG9mZnNldF90eXBlIGR3el9lbGVtZW50cykKKyt7CisrICBzdHJ1Y3QgZHd6 X2ZpbGUgKmR3ejsKKysKKysgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzID0gKGN1 X2xpc3RfZWxlbWVudHMgKyBkd3pfZWxlbWVudHMpIC8gMjsKKysgIGR3YXJmMl9wZXJfb2JqZmls ZS0+YWxsX2NvbXBfdW5pdHMKKysgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLAorKwkJICAgICBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cworKwkJ ICAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKSk7CisrCisrICBpZiAo IWNyZWF0ZV9jdXNfZnJvbV9pbmRleF9saXN0IChvYmpmaWxlLCBjdV9saXN0LCBjdV9saXN0X2Vs ZW1lbnRzLAorKwkJCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLCAwLCAwKSkKKysgICAg cmV0dXJuIDA7CisrCisrICBpZiAoZHd6X2VsZW1lbnRzID09IDApCisrICAgIHJldHVybiAxOwor KworKyAgZHd6ID0gZHdhcmYyX2dldF9kd3pfZmlsZSAoKTsKKysgIHJldHVybiBjcmVhdGVfY3Vz X2Zyb21faW5kZXhfbGlzdCAob2JqZmlsZSwgZHd6X2xpc3QsIGR3el9lbGVtZW50cywKKysJCQkJ ICAgICAmZHd6LT5pbmZvLCAxLCBjdV9saXN0X2VsZW1lbnRzIC8gMik7CisrfQorKworIC8qIENy ZWF0ZSB0aGUgc2lnbmF0dXJlZCB0eXBlIGhhc2ggdGFibGUgZnJvbSB0aGUgaW5kZXguICAqLwor IAorIHN0YXRpYyBpbnQKK0BAIC0yMzMwLDMzICsyMzgxLDQ0IEBAIGZpbmRfc2xvdF9pbl9tYXBw ZWRfaGFzaCAoc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCisg ICAgIH0KKyB9CisgCistLyogUmVhZCB0aGUgaW5kZXggZmlsZS4gIElmIGV2ZXJ5dGhpbmcgd2Vu dCBvaywgaW5pdGlhbGl6ZSB0aGUgInF1aWNrIgorLSAgIGVsZW1lbnRzIG9mIGFsbCB0aGUgQ1Vz IGFuZCByZXR1cm4gMS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLworKy8qIEEgaGVscGVyIGZ1 bmN0aW9uIHRoYXQgcmVhZHMgdGhlIC5nZGJfaW5kZXggZnJvbSBTRUNUSU9OIGFuZCBmaWxscwor KyAgIGluIE1BUC4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcg dGhlIHNlY3Rpb247CisrICAgaXQgaXMgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nLiAgREVQUkVD QVRFRF9PSyBpcyBub256ZXJvIGlmIGl0IGlzCisrICAgb2sgdG8gdXNlIGRlcHJlY2F0ZWQgc2Vj dGlvbnMuCisrCisrICAgQ1VfTElTVCwgQ1VfTElTVF9FTEVNRU5UUywgVFlQRVNfTElTVCwgYW5k IFRZUEVTX0xJU1RfRUxFTUVOVFMgYXJlCisrICAgb3V0IHBhcmFtZXRlcnMgdGhhdCBhcmUgZmls bGVkIGluIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIENVIGFuZAorKyAgIFRVIGxpc3RzIGlu IHRoZSBzZWN0aW9uLgorKworKyAgIFJldHVybnMgMSBpZiBhbGwgd2VudCB3ZWxsLCAwIG90aGVy d2lzZS4gICovCisgCisgc3RhdGljIGludAorLWR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKKytyZWFkX2luZGV4X2Zyb21fc2VjdGlvbiAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisrCQkJIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCSBpbnQgZGVwcmVjYXRl ZF9vaywKKysJCQkgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24sCisrCQkJIHN0 cnVjdCBtYXBwZWRfaW5kZXggKm1hcCwKKysJCQkgY29uc3QgZ2RiX2J5dGUgKipjdV9saXN0LAor KwkJCSBvZmZzZXRfdHlwZSAqY3VfbGlzdF9lbGVtZW50cywKKysJCQkgY29uc3QgZ2RiX2J5dGUg Kip0eXBlc19saXN0LAorKwkJCSBvZmZzZXRfdHlwZSAqdHlwZXNfbGlzdF9lbGVtZW50cykKKyB7 CisgICBjaGFyICphZGRyOworLSAgc3RydWN0IG1hcHBlZF9pbmRleCAqbWFwOworKyAgb2Zmc2V0 X3R5cGUgdmVyc2lvbjsKKyAgIG9mZnNldF90eXBlICptZXRhZGF0YTsKKy0gIGNvbnN0IGdkYl9i eXRlICpjdV9saXN0OworLSAgY29uc3QgZ2RiX2J5dGUgKnR5cGVzX2xpc3QgPSBOVUxMOworLSAg b2Zmc2V0X3R5cGUgdmVyc2lvbiwgY3VfbGlzdF9lbGVtZW50czsKKy0gIG9mZnNldF90eXBlIHR5 cGVzX2xpc3RfZWxlbWVudHMgPSAwOworICAgaW50IGk7CisgCistICBpZiAoZHdhcmYyX3NlY3Rp b25fZW1wdHlfcCAoJmR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4KSkKKysgIGlmIChkd2Fy ZjJfc2VjdGlvbl9lbXB0eV9wIChzZWN0aW9uKSkKKyAgICAgcmV0dXJuIDA7CisgCisgICAvKiBP bGRlciBlbGZ1dGlscyBzdHJpcCB2ZXJzaW9ucyBjb3VsZCBrZWVwIHRoZSBzZWN0aW9uIGluIHRo ZSBtYWluCisgICAgICBleGVjdXRhYmxlIHdoaWxlIHNwbGl0dGluZyBpdCBmb3IgdGhlIHNlcGFy YXRlIGRlYnVnIGluZm8gZmlsZS4gICovCistICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoZHdh cmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24pCistICAgICAgICYgU0VDX0hBU19D T05URU5UUykgPT0gMCkKKysgIGlmICgoYmZkX2dldF9maWxlX2ZsYWdzIChzZWN0aW9uLT5hc2Vj dGlvbikgJiBTRUNfSEFTX0NPTlRFTlRTKSA9PSAwKQorICAgICByZXR1cm4gMDsKKyAKKy0gIGR3 YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRl eCk7CisrICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9uKTsKKyAKKy0gIGFk ZHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5idWZmZXI7CisrICBhZGRyID0gc2Vj dGlvbi0+YnVmZmVyOworICAgLyogVmVyc2lvbiBjaGVjay4gICovCisgICB2ZXJzaW9uID0gTUFZ QkVfU1dBUCAoKihvZmZzZXRfdHlwZSAqKSBhZGRyKTsKKyAgIC8qIFZlcnNpb25zIGVhcmxpZXIg dGhhbiAzIGVtaXR0ZWQgZXZlcnkgY29weSBvZiBhIHBzeW1ib2wuICBUaGlzCitAQCAtMjM2OSw3 ICsyNDMxLDcgQEAgZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQor ICAgICAgIGlmICghd2FybmluZ19wcmludGVkKQorIAl7CisgCSAgd2FybmluZyAoXygiU2tpcHBp bmcgb2Jzb2xldGUgLmdkYl9pbmRleCBzZWN0aW9uIGluICVzLiIpLAorLQkJICAgb2JqZmlsZS0+ bmFtZSk7CisrCQkgICBmaWxlbmFtZSk7CisgCSAgd2FybmluZ19wcmludGVkID0gMTsKKyAJfQor ICAgICAgIHJldHVybiAwOworQEAgLTIzODIsMTQgKzI0NDQsMTQgQEAgZHdhcmYyX3JlYWRfaW5k ZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgICAgc2V0IGJyZWFrcG9pbnRzIG9uIGlu bGluZWQgZnVuY3Rpb25zIGJ5IG5hbWUsIHNvIHdlIGlnbm9yZSB0aGVzZQorICAgICAgaW5kaWNl cyB1bmxlc3MgdGhlIC0tdXNlLWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgY29tbWFuZCBsaW5l CisgICAgICBvcHRpb24gd2FzIHN1cHBsaWVkLiAgKi8KKy0gIGlmICh2ZXJzaW9uIDwgNiAmJiAh dXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMpCisrICBpZiAodmVyc2lvbiA8IDYgJiYgIWRl cHJlY2F0ZWRfb2spCisgICAgIHsKKyAgICAgICBzdGF0aWMgaW50IHdhcm5pbmdfcHJpbnRlZCA9 IDA7CisgICAgICAgaWYgKCF3YXJuaW5nX3ByaW50ZWQpCisgCXsKKyAJICB3YXJuaW5nIChfKCJT a2lwcGluZyBkZXByZWNhdGVkIC5nZGJfaW5kZXggc2VjdGlvbiBpbiAlcywgcGFzcyAiCisgCQkg ICAgICItLXVzZS1kZXByZWNhdGVkLWluZGV4LXNlY3Rpb25zIHRvIHVzZSB0aGVtIGFueXdheSIp LAorLQkJICAgb2JqZmlsZS0+bmFtZSk7CisrCQkgICBmaWxlbmFtZSk7CisgCSAgd2FybmluZ19w cmludGVkID0gMTsKKyAJfQorICAgICAgIHJldHVybiAwOworQEAgLTIzOTksMjIgKzI0NjEsMjEg QEAgZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgaWYgKHZl cnNpb24gPiA3KQorICAgICByZXR1cm4gMDsKKyAKKy0gIG1hcCA9IE9CU1RBQ0tfWkFMTE9DICgm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgbWFwcGVkX2luZGV4KTsKKyAgIG1hcC0+ dmVyc2lvbiA9IHZlcnNpb247CistICBtYXAtPnRvdGFsX3NpemUgPSBkd2FyZjJfcGVyX29iamZp bGUtPmdkYl9pbmRleC5zaXplOworKyAgbWFwLT50b3RhbF9zaXplID0gc2VjdGlvbi0+c2l6ZTsK KyAKKyAgIG1ldGFkYXRhID0gKG9mZnNldF90eXBlICopIChhZGRyICsgc2l6ZW9mIChvZmZzZXRf dHlwZSkpOworIAorICAgaSA9IDA7CistICBjdV9saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1l dGFkYXRhW2ldKTsKKy0gIGN1X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRh W2kgKyAxXSkgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCistCQkgICAgICAvIDgpOworKyAg KmN1X2xpc3QgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOworKyAgKmN1X2xpc3Rf ZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAxXSkgLSBNQVlCRV9TV0FQICht ZXRhZGF0YVtpXSkpCisrCQkgICAgICAgLyA4KTsKKyAgICsraTsKKyAKKy0gIHR5cGVzX2xpc3Qg PSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOworLSAgdHlwZXNfbGlzdF9lbGVtZW50 cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQorLQkJCSAgLSBNQVlCRV9TV0FQICht ZXRhZGF0YVtpXSkpCistCQkJIC8gOCk7CisrICAqdHlwZXNfbGlzdCA9IGFkZHIgKyBNQVlCRV9T V0FQIChtZXRhZGF0YVtpXSk7CisrICAqdHlwZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZQkVfU1dB UCAobWV0YWRhdGFbaSArIDFdKQorKwkJCSAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQor KwkJCSAgLyA4KTsKKyAgICsraTsKKyAKKyAgIG1hcC0+YWRkcmVzc190YWJsZSA9IGFkZHIgKyBN QVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7CitAQCAtMjQzMCwxMSArMjQ5MSw1NSBAQCBkd2FyZjJf cmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgCisgICBtYXAtPmNvbnN0YW50 X3Bvb2wgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOworIAorKyAgcmV0dXJuIDE7 CisrfQorKworKworKy8qIFJlYWQgdGhlIGluZGV4IGZpbGUuICBJZiBldmVyeXRoaW5nIHdlbnQg b2ssIGluaXRpYWxpemUgdGhlICJxdWljayIKKysgICBlbGVtZW50cyBvZiBhbGwgdGhlIENVcyBh bmQgcmV0dXJuIDEuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KKysKKytzdGF0aWMgaW50Cisr ZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIHN0cnVj dCBtYXBwZWRfaW5kZXggbG9jYWxfbWFwLCAqbWFwOworKyAgY29uc3QgZ2RiX2J5dGUgKmN1X2xp c3QsICp0eXBlc19saXN0LCAqZHd6X2xpc3QgPSBOVUxMOworKyAgb2Zmc2V0X3R5cGUgY3VfbGlz dF9lbGVtZW50cywgdHlwZXNfbGlzdF9lbGVtZW50cywgZHd6X2xpc3RfZWxlbWVudHMgPSAwOwor KworKyAgaWYgKCFyZWFkX2luZGV4X2Zyb21fc2VjdGlvbiAob2JqZmlsZSwgb2JqZmlsZS0+bmFt ZSwKKysJCQkJdXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMsCisrCQkJCSZkd2FyZjJfcGVy X29iamZpbGUtPmdkYl9pbmRleCwgJmxvY2FsX21hcCwKKysJCQkJJmN1X2xpc3QsICZjdV9saXN0 X2VsZW1lbnRzLAorKwkJCQkmdHlwZXNfbGlzdCwgJnR5cGVzX2xpc3RfZWxlbWVudHMpKQorKyAg ICByZXR1cm4gMDsKKysKKyAgIC8qIERvbid0IHVzZSB0aGUgaW5kZXggaWYgaXQncyBlbXB0eS4g ICovCistICBpZiAobWFwLT5zeW1ib2xfdGFibGVfc2xvdHMgPT0gMCkKKysgIGlmIChsb2NhbF9t YXAuc3ltYm9sX3RhYmxlX3Nsb3RzID09IDApCisgICAgIHJldHVybiAwOworIAorLSAgaWYgKCFj cmVhdGVfY3VzX2Zyb21faW5kZXggKG9iamZpbGUsIGN1X2xpc3QsIGN1X2xpc3RfZWxlbWVudHMp KQorKyAgLyogSWYgdGhlcmUgaXMgYSAuZHd6IGZpbGUsIHJlYWQgaXQgc28gd2UgY2FuIGdldCBp dHMgQ1UgbGlzdCBhcworKyAgICAgd2VsbC4gICovCisrICBpZiAoYmZkX2dldF9zZWN0aW9uX2J5 X25hbWUgKG9iamZpbGUtPm9iZmQsICIuZ251X2RlYnVnYWx0bGluayIpICE9IE5VTEwpCisrICAg IHsKKysgICAgICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKCk7 CisrICAgICAgc3RydWN0IG1hcHBlZF9pbmRleCBkd3pfbWFwOworKyAgICAgIGNvbnN0IGdkYl9i eXRlICpkd3pfdHlwZXNfaWdub3JlOworKyAgICAgIG9mZnNldF90eXBlIGR3el90eXBlc19lbGVt ZW50c19pZ25vcmU7CisrCisrICAgICAgaWYgKCFyZWFkX2luZGV4X2Zyb21fc2VjdGlvbiAob2Jq ZmlsZSwgYmZkX2dldF9maWxlbmFtZSAoZHd6LT5kd3pfYmZkKSwKKysJCQkJICAgIDEsCisrCQkJ CSAgICAmZHd6LT5nZGJfaW5kZXgsICZkd3pfbWFwLAorKwkJCQkgICAgJmR3el9saXN0LCAmZHd6 X2xpc3RfZWxlbWVudHMsCisrCQkJCSAgICAmZHd6X3R5cGVzX2lnbm9yZSwKKysJCQkJICAgICZk d3pfdHlwZXNfZWxlbWVudHNfaWdub3JlKSkKKysJeworKwkgIHdhcm5pbmcgKF8oImNvdWxkIG5v dCByZWFkICcuZ2RiX2luZGV4JyBzZWN0aW9uIGZyb20gJXM7IHNraXBwaW5nIiksCisrCQkgICBi ZmRfZ2V0X2ZpbGVuYW1lIChkd3otPmR3el9iZmQpKTsKKysJICByZXR1cm4gMDsKKysJfQorKyAg ICB9CisrCisrICBpZiAoIWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAob2JqZmlsZSwgY3VfbGlzdCwg Y3VfbGlzdF9lbGVtZW50cywKKysJCQkgICAgICBkd3pfbGlzdCwgZHd6X2xpc3RfZWxlbWVudHMp KQorICAgICByZXR1cm4gMDsKKyAKKyAgIGlmICh0eXBlc19saXN0X2VsZW1lbnRzKQorQEAgLTI0 NTUsNyArMjU2MCwxMCBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCisgCXJldHVybiAwOworICAgICB9CisgCistICBjcmVhdGVfYWRkcm1hcF9mcm9tX2luZGV4 IChvYmpmaWxlLCBtYXApOworKyAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCAob2JqZmlsZSwg JmxvY2FsX21hcCk7CisrCisrICBtYXAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLCBzaXplb2YgKHN0cnVjdCBtYXBwZWRfaW5kZXgpKTsKKysgICptYXAgPSBsb2Nh bF9tYXA7CisgCisgICBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlID0gbWFwOworICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19pbmRleCA9IDE7CitAQCAtMzQ0Miw2ICszNTUwLDIy IEBAIHJlYWRfY29tcF91bml0X2hlYWQgKHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVy LAorICAgcmV0dXJuIGluZm9fcHRyOworIH0KKyAKKysvKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBy ZXR1cm5zIHRoZSBwcm9wZXIgYWJicmV2IHNlY3Rpb24gZm9yCisrICAgVEhJU19DVS4gICovCisr Cisrc3RhdGljIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICoKKytnZXRfYWJicmV2X3NlY3Rp b25fZm9yX2N1IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1KQorK3sKKysgIHN0 cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICphYmJyZXY7CisrCisrICBpZiAodGhpc19jdS0+aXNf ZHd6KQorKyAgICBhYmJyZXYgPSAmZHdhcmYyX2dldF9kd3pfZmlsZSAoKS0+YWJicmV2OworKyAg ZWxzZQorKyAgICBhYmJyZXYgPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXY7CisrCisrICBy ZXR1cm4gYWJicmV2OworK30KKysKKyAvKiBTdWJyb3V0aW5lIG9mIHJlYWRfYW5kX2NoZWNrX2Nv bXBfdW5pdF9oZWFkIGFuZAorICAgIHJlYWRfYW5kX2NoZWNrX3R5cGVfdW5pdF9oZWFkIHRvIHNp bXBsaWZ5IHRoZW0uCisgICAgUGVyZm9ybSB2YXJpb3VzIGVycm9yIGNoZWNraW5nIG9uIHRoZSBo ZWFkZXIuICAqLworQEAgLTM0NjAsOCArMzU4NCw3IEBAIGVycm9yX2NoZWNrX2NvbXBfdW5pdF9o ZWFkIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmhlYWRlciwKKyAJICAgZmlsZW5hbWUpOworIAor ICAgaWYgKGhlYWRlci0+YWJicmV2X29mZnNldC5zZWN0X29mZgorLSAgICAgID49IGR3YXJmMl9z ZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKy0JCQkgICAgICAmZHdh cmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYpKQorKyAgICAgID49IGR3YXJmMl9zZWN0aW9uX3NpemUg KGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwgYWJicmV2X3NlY3Rpb24pKQorICAgICBlcnJv ciAoXygiRHdhcmYgRXJyb3I6IGJhZCBvZmZzZXQgKDB4JWx4KSBpbiBjb21waWxhdGlvbiB1bml0 IGhlYWRlciAiCisgCSAgICIob2Zmc2V0IDB4JWx4ICsgNikgW2luIG1vZHVsZSAlc10iKSwKKyAJ ICAgKGxvbmcpIGhlYWRlci0+YWJicmV2X29mZnNldC5zZWN0X29mZiwgKGxvbmcpIGhlYWRlci0+ b2Zmc2V0LnNlY3Rfb2ZmLAorQEAgLTM2NzgsNiArMzgwMSw3IEBAIGNyZWF0ZV9kZWJ1Z190eXBl c19oYXNoX3RhYmxlIChzdHJ1Y3QgZHdvX2ZpbGUgKmR3b19maWxlLAorICAgICB7CisgICAgICAg YmZkICphYmZkOworICAgICAgIGdkYl9ieXRlICppbmZvX3B0ciwgKmVuZF9wdHI7CisrICAgICAg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmFiYnJldl9zZWN0aW9uOworIAorICAgICAgIGR3 YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIHNlY3Rpb24pOworICAgICAgIGluZm9fcHRyID0g c2VjdGlvbi0+YnVmZmVyOworQEAgLTM2ODksNiArMzgxMywxMSBAQCBjcmVhdGVfZGVidWdfdHlw ZXNfaGFzaF90YWJsZSAoc3RydWN0IGR3b19maWxlICpkd29fZmlsZSwKKyAJIG5vdCBwcmVzZW50 LCBpbiB3aGljaCBjYXNlIHNlY3Rpb24tPmFzZWN0aW9uIHdpbGwgYmUgTlVMTC4gICovCisgICAg ICAgYWJmZCA9IHNlY3Rpb24tPmFzZWN0aW9uLT5vd25lcjsKKyAKKysgICAgICBpZiAoZHdvX2Zp bGUpCisrCWFiYnJldl9zZWN0aW9uID0gJmR3b19maWxlLT5zZWN0aW9ucy5hYmJyZXY7CisrICAg ICAgZWxzZQorKwlhYmJyZXZfc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldjsK KysKKyAgICAgICBpZiAodHlwZXNfaHRhYiA9PSBOVUxMKQorIAl7CisgCSAgaWYgKGR3b19maWxl KQorQEAgLTM5MjMsNyArNDA1Miw4IEBAIGluaXRfY3V0dV9hbmRfcmVhZF9kaWVzIChzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAorICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2Jq ZmlsZSwgc2VjdGlvbik7CisgCisgICBiZWdpbl9pbmZvX3B0ciA9IGluZm9fcHRyID0gc2VjdGlv bi0+YnVmZmVyICsgdGhpc19jdS0+b2Zmc2V0LnNlY3Rfb2ZmOworLSAgYWJicmV2X3NlY3Rpb24g PSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXY7CisrCisrICBhYmJyZXZfc2VjdGlvbiA9IGdl dF9hYmJyZXZfc2VjdGlvbl9mb3JfY3UgKHRoaXNfY3UpOworIAorICAgaWYgKHVzZV9leGlzdGlu Z19jdSAmJiB0aGlzX2N1LT5jdSAhPSBOVUxMKQorICAgICB7CitAQCAtNDI5MCw3ICs0NDIwLDcg QEAgaW5pdF9jdXR1X2FuZF9yZWFkX2RpZXNfc2ltcGxlIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICp0aGlzX2N1LAorIAkJCQl2b2lkICpkYXRhKQorIHsKKyAgIGluaXRfY3V0dV9hbmRfcmVh ZF9kaWVzX25vX2ZvbGxvdyAodGhpc19jdSwKKy0JCQkJICAgICAmZHdhcmYyX3Blcl9vYmpmaWxl LT5hYmJyZXYsCisrCQkJCSAgICAgZ2V0X2FiYnJldl9zZWN0aW9uX2Zvcl9jdSAodGhpc19jdSks CisgCQkJCSAgICAgTlVMTCwKKyAJCQkJICAgICBkaWVfcmVhZGVyX2Z1bmMsIGRhdGEpOworIH0K K0BAIC00NTM3LDYgKzQ2NjcsOSBAQCBzZXRfcGFydGlhbF91c2VyIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKKyAgICAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCA9IHBlcl9jdS0+di5w c3ltdGFiOworICAgICAgIGludCBqOworIAorKyAgICAgIGlmIChwc3QgPT0gTlVMTCkKKysJY29u dGludWU7CisrCisgICAgICAgZm9yIChqID0gMDsgaiA8IHBzdC0+bnVtYmVyX29mX2RlcGVuZGVu Y2llczsgKytqKQorIAl7CisgCSAgLyogU2V0IHRoZSAndXNlcicgZmllbGQgb25seSBpZiBpdCBp cyBub3QgYWxyZWFkeSBzZXQuICAqLworQEAgLTQ2MzAsMzggKzQ3NjMsMzIgQEAgbG9hZF9wYXJ0 aWFsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhpc19jdSkKKyAgIGlu aXRfY3V0dV9hbmRfcmVhZF9kaWVzICh0aGlzX2N1LCAxLCAxLCBsb2FkX3BhcnRpYWxfY29tcF91 bml0X3JlYWRlciwgTlVMTCk7CisgfQorIAorLS8qIENyZWF0ZSBhIGxpc3Qgb2YgYWxsIGNvbXBp bGF0aW9uIHVuaXRzIGluIE9CSkZJTEUuCistICAgVGhpcyBpcyBvbmx5IGRvbmUgZm9yIC1yZWFk bm93IGFuZCBidWlsZGluZyBwYXJ0aWFsIHN5bXRhYnMuICAqLworLQorIHN0YXRpYyB2b2lkCist Y3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytyZWFkX2Nv bXBfdW5pdHNfZnJvbV9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAg ICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKKysJCQkgICAgICB1bnNpZ25l ZCBpbnQgaXNfZHd6LAorKwkJCSAgICAgIGludCAqbl9hbGxvY2F0ZWQsCisrCQkJICAgICAgaW50 ICpuX2NvbXBfdW5pdHMsCisrCQkJICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKiph bGxfY29tcF91bml0cykKKyB7CistICBpbnQgbl9hbGxvY2F0ZWQ7CistICBpbnQgbl9jb21wX3Vu aXRzOworLSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKmFsbF9jb21wX3VuaXRzOworICAg Z2RiX2J5dGUgKmluZm9fcHRyOworKyAgYmZkICphYmZkID0gc2VjdGlvbi0+YXNlY3Rpb24tPm93 bmVyOworIAorLSAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2Jq ZmlsZS0+aW5mbyk7CistICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZm ZXI7CisrICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9uKTsKKyAKKy0gIG5f Y29tcF91bml0cyA9IDA7CistICBuX2FsbG9jYXRlZCA9IDEwOworLSAgYWxsX2NvbXBfdW5pdHMg PSB4bWFsbG9jIChuX2FsbG9jYXRlZAorLQkJCSAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqKSk7CisrICBpbmZvX3B0ciA9IHNlY3Rpb24tPmJ1ZmZlcjsKKyAKKy0gIHdo aWxlIChpbmZvX3B0ciA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIKKy0JICsgZHdh cmYyX3Blcl9vYmpmaWxlLT5pbmZvLnNpemUpCisrICB3aGlsZSAoaW5mb19wdHIgPCBzZWN0aW9u LT5idWZmZXIgKyBzZWN0aW9uLT5zaXplKQorICAgICB7CisgICAgICAgdW5zaWduZWQgaW50IGxl bmd0aCwgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKKyAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICp0aGlzX2N1OworICAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldDsKKyAKKy0gICAgICBvZmZz ZXQuc2VjdF9vZmYgPSBpbmZvX3B0ciAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7 CisrICAgICAgb2Zmc2V0LnNlY3Rfb2ZmID0gaW5mb19wdHIgLSBzZWN0aW9uLT5idWZmZXI7Cisg CisgICAgICAgLyogUmVhZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBmaW5kIG91dCB3aGVy ZSB0aGUgbmV4dAorIAkgY29tcGlsYXRpb24gdW5pdCBpcy4gICovCistICAgICAgbGVuZ3RoID0g cmVhZF9pbml0aWFsX2xlbmd0aCAob2JqZmlsZS0+b2JmZCwgaW5mb19wdHIsCistCQkJCSAgICAm aW5pdGlhbF9sZW5ndGhfc2l6ZSk7CisrICAgICAgbGVuZ3RoID0gcmVhZF9pbml0aWFsX2xlbmd0 aCAoYWJmZCwgaW5mb19wdHIsICZpbml0aWFsX2xlbmd0aF9zaXplKTsKKyAKKyAgICAgICAvKiBT YXZlIHRoZSBjb21waWxhdGlvbiB1bml0IGZvciBsYXRlciBsb29rdXAuICAqLworICAgICAgIHRo aXNfY3UgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorQEAgLTQ2 NjksMjAgKzQ3OTYsNTAgQEAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKKyAgICAgICBtZW1zZXQgKHRoaXNfY3UsIDAsIHNpemVvZiAoKnRoaXNfY3UpKTsK KyAgICAgICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgdGhpc19jdS0+bGVuZ3Ro ID0gbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKKysgICAgICB0aGlzX2N1LT5pc19kd3og PSBpc19kd3o7CisgICAgICAgdGhpc19jdS0+b2JqZmlsZSA9IG9iamZpbGU7CistICAgICAgdGhp c19jdS0+aW5mb19vcl90eXBlc19zZWN0aW9uID0gJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mbzsK KysgICAgICB0aGlzX2N1LT5pbmZvX29yX3R5cGVzX3NlY3Rpb24gPSBzZWN0aW9uOworIAorLSAg ICAgIGlmIChuX2NvbXBfdW5pdHMgPT0gbl9hbGxvY2F0ZWQpCisrICAgICAgaWYgKCpuX2NvbXBf dW5pdHMgPT0gKm5fYWxsb2NhdGVkKQorIAl7CistCSAgbl9hbGxvY2F0ZWQgKj0gMjsKKy0JICBh bGxfY29tcF91bml0cyA9IHhyZWFsbG9jIChhbGxfY29tcF91bml0cywKKy0JCQkJICAgICBuX2Fs bG9jYXRlZAorLQkJCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICop KTsKKysJICAqbl9hbGxvY2F0ZWQgKj0gMjsKKysJICAqYWxsX2NvbXBfdW5pdHMgPSB4cmVhbGxv YyAoKmFsbF9jb21wX3VuaXRzLAorKwkJCQkgICAgICAqbl9hbGxvY2F0ZWQKKysJCQkJICAgICAg KiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOworIAl9CistICAgICAgYWxs X2NvbXBfdW5pdHNbbl9jb21wX3VuaXRzKytdID0gdGhpc19jdTsKKysgICAgICAoKmFsbF9jb21w X3VuaXRzKVsqbl9jb21wX3VuaXRzXSA9IHRoaXNfY3U7CisrICAgICAgKysqbl9jb21wX3VuaXRz OworIAorICAgICAgIGluZm9fcHRyID0gaW5mb19wdHIgKyB0aGlzX2N1LT5sZW5ndGg7CisgICAg IH0KKyt9CisrCisrLyogQ3JlYXRlIGEgbGlzdCBvZiBhbGwgY29tcGlsYXRpb24gdW5pdHMgaW4g T0JKRklMRS4KKysgICBUaGlzIGlzIG9ubHkgZG9uZSBmb3IgLXJlYWRub3cgYW5kIGJ1aWxkaW5n IHBhcnRpYWwgc3ltdGFicy4gICovCisrCisrc3RhdGljIHZvaWQKKytjcmVhdGVfYWxsX2NvbXBf dW5pdHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGludCBuX2FsbG9jYXRlZDsK KysgIGludCBuX2NvbXBfdW5pdHM7CisrICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoqYWxs X2NvbXBfdW5pdHM7CisrCisrICBuX2NvbXBfdW5pdHMgPSAwOworKyAgbl9hbGxvY2F0ZWQgPSAx MDsKKysgIGFsbF9jb21wX3VuaXRzID0geG1hbGxvYyAobl9hbGxvY2F0ZWQKKysJCQkgICAgKiBz aXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOworKworKyAgcmVhZF9jb21wX3Vu aXRzX2Zyb21fc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mbywgMCwK KysJCQkJJm5fYWxsb2NhdGVkLCAmbl9jb21wX3VuaXRzLCAmYWxsX2NvbXBfdW5pdHMpOworKwor KyAgaWYgKGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLmdudV9kZWJ1 Z2FsdGxpbmsiKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgc3RydWN0IGR3el9maWxlICpkd3og PSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOworKworKyAgICAgIHJlYWRfY29tcF91bml0c19mcm9t X3NlY3Rpb24gKG9iamZpbGUsICZkd3otPmluZm8sIDEsCisrCQkJCSAgICAmbl9hbGxvY2F0ZWQs ICZuX2NvbXBfdW5pdHMsCisrCQkJCSAgICAmYWxsX2NvbXBfdW5pdHMpOworKyAgICB9CisgCisg ICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzCisgICAgID0gb2JzdGFja19hbGxv YyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKK0BAIC00NzY3LDYgKzQ5MjQsNyBAQCBzY2Fu X3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKmZpcnN0X2RpZSwgQ09S RV9BRERSICpsb3dwYywKKyAJCXN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKKyAK KyAJCXBlcl9jdSA9IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChwZGktPmQub2Zm c2V0LAorKwkJCQkJCQkgICBwZGktPmlzX2R3eiwKKyAJCQkJCQkJICAgY3UtPm9iamZpbGUpOwor IAorIAkJLyogR28gcmVhZCB0aGUgcGFydGlhbCB1bml0LCBpZiBuZWVkZWQuICAqLworQEAgLTQ4 MjQsNyArNDk4Miw4IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0IHBhcnRpYWxf ZGllX2luZm8gKnBkaSwKKyAKKyAgIHJlYWxfcGRpID0gcGRpOworICAgd2hpbGUgKHJlYWxfcGRp LT5oYXNfc3BlY2lmaWNhdGlvbikKKy0gICAgcmVhbF9wZGkgPSBmaW5kX3BhcnRpYWxfZGllIChy ZWFsX3BkaS0+c3BlY19vZmZzZXQsIGN1KTsKKysgICAgcmVhbF9wZGkgPSBmaW5kX3BhcnRpYWxf ZGllIChyZWFsX3BkaS0+c3BlY19vZmZzZXQsCisrCQkJCSByZWFsX3BkaS0+c3BlY19pc19kd3os IGN1KTsKKyAKKyAgIHBhcmVudCA9IHJlYWxfcGRpLT5kaWVfcGFyZW50OworICAgaWYgKHBhcmVu dCA9PSBOVUxMKQorQEAgLTUzMjQsNiArNTQ4Myw5IEBAIHNraXBfb25lX2RpZSAoY29uc3Qgc3Ry dWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAorIAkgIGVs c2UKKyAJICAgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7CisgCSAgYnJlYWs7 CisrCWNhc2UgRFdfRk9STV9HTlVfcmVmX2FsdDoKKysJICBpbmZvX3B0ciArPSBjdS0+aGVhZGVy Lm9mZnNldF9zaXplOworKwkgIGJyZWFrOworIAljYXNlIERXX0ZPUk1fYWRkcjoKKyAJICBpbmZv X3B0ciArPSBjdS0+aGVhZGVyLmFkZHJfc2l6ZTsKKyAJICBicmVhazsKK0BAIC01MzUzLDYgKzU1 MTUsNyBAQCBza2lwX29uZV9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFk ZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKKyAJICBicmVhazsKKyAJY2FzZSBEV19GT1JNX3NlY19v ZmZzZXQ6CisgCWNhc2UgRFdfRk9STV9zdHJwOgorKwljYXNlIERXX0ZPUk1fR05VX3N0cnBfYWx0 OgorIAkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7CisgCSAgYnJlYWs7Cisg CWNhc2UgRFdfRk9STV9leHBybG9jOgorQEAgLTU5OTksNyArNjE2Miw5IEBAIHByb2Nlc3NfZnVs bF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKKyAgICAgIGl0 LCBieSBzY2FubmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNvbXBpbGF0aW9uIHVuaXQuICAqLwor ICAgZ2V0X3Njb3BlX3BjX2JvdW5kcyAoY3UtPmRpZXMsICZsb3dwYywgJmhpZ2hwYywgY3UpOwor IAorLSAgc3ltdGFiID0gZW5kX3N5bXRhYiAoaGlnaHBjICsgYmFzZWFkZHIsIG9iamZpbGUsIFNF Q1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKKysgIHN5bXRhYiA9IGVuZF9zeW10YWJfZnVsbCAoaGln aHBjICsgYmFzZWFkZHIsIG9iamZpbGUsCisrCQkJICAgIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUp LAorKwkJCSAgICBwZXJfY3UtPmltcG9ydGVkX3N5bXRhYnMgIT0gTlVMTCk7CisgCisgICBpZiAo c3ltdGFiICE9IE5VTEwpCisgICAgIHsKK0BAIC02MDY4LDkgKzYyMzMsMTEgQEAgcHJvY2Vzc19p bXBvcnRlZF91bml0X2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKKyAgICAgICBz dHJ1Y3Qgc3ltdGFiICppbXBvcnRlZF9zeW10YWI7CisgICAgICAgc2VjdF9vZmZzZXQgb2Zmc2V0 OworKyAgICAgIGludCBpc19kd3o7CisgCisgICAgICAgb2Zmc2V0ID0gZHdhcmYyX2dldF9yZWZf ZGllX29mZnNldCAoYXR0cik7CistICAgICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmlu Z19jb21wX3VuaXQgKG9mZnNldCwgY3UtPm9iamZpbGUpOworKyAgICAgIGlzX2R3eiA9IChhdHRy LT5mb3JtID09IERXX0ZPUk1fR05VX3JlZl9hbHQgfHwgY3UtPnBlcl9jdS0+aXNfZHd6KTsKKysg ICAgICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBp c19kd3osIGN1LT5vYmpmaWxlKTsKKyAKKyAgICAgICAvKiBRdWV1ZSB0aGUgdW5pdCwgaWYgbmVl ZGVkLiAgKi8KKyAgICAgICBpZiAobWF5YmVfcXVldWVfY29tcF91bml0IChjdSwgcGVyX2N1LCBj dS0+bGFuZ3VhZ2UpKQorQEAgLTcyODQsMjQgKzc0NTEsMjIgQEAgdHJ5X29wZW5fZHdvX2ZpbGUg KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSkKKyAgIGlmIChkZXNjIDwgMCkKKyAgICAgcmV0dXJuIE5V TEw7CisgCistICBzeW1fYmZkID0gYmZkX2ZvcGVuIChhYnNvbHV0ZV9uYW1lLCBnbnV0YXJnZXQs IEZPUEVOX1JCLCBkZXNjKTsKKysgIHN5bV9iZmQgPSBnZGJfYmZkX29wZW4gKGFic29sdXRlX25h bWUsIGdudXRhcmdldCwgZGVzYyk7CisgICBpZiAoIXN5bV9iZmQpCisgICAgIHsKKyAgICAgICB4 ZnJlZSAoYWJzb2x1dGVfbmFtZSk7CisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKysgIGdk Yl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN5bV9iZmQpOworKyAgeGZyZWUgKGFic29sdXRlX25hbWUp OworICAgYmZkX3NldF9jYWNoZWFibGUgKHN5bV9iZmQsIDEpOworIAorICAgaWYgKCFiZmRfY2hl Y2tfZm9ybWF0IChzeW1fYmZkLCBiZmRfb2JqZWN0KSkKKyAgICAgeworLSAgICAgIGJmZF9jbG9z ZSAoc3ltX2JmZCk7IC8qIFRoaXMgYWxzbyBjbG9zZXMgZGVzYy4gICovCistICAgICAgeGZyZWUg KGFic29sdXRlX25hbWUpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKHN5bV9iZmQpOyAvKiBUaGlz IGFsc28gY2xvc2VzIGRlc2MuICAqLworICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCist ICAvKiBiZmRfdXNyZGF0YSBleGlzdHMgZm9yIGFwcGxpY2F0aW9ucyBhbmQgbGliYmZkIG11c3Qg bm90IHRvdWNoIGl0LiAgKi8KKy0gIGdkYl9hc3NlcnQgKGJmZF91c3JkYXRhIChzeW1fYmZkKSA9 PSBOVUxMKTsKKy0KKyAgIHJldHVybiBzeW1fYmZkOworIH0KKyAKK0BAIC03NDkzLDIwICs3NjU4 LDcgQEAgZnJlZV9kd29fZmlsZSAoc3RydWN0IGR3b19maWxlICpkd29fZmlsZSwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCisgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbjsK KyAKKyAgIGdkYl9hc3NlcnQgKGR3b19maWxlLT5kd29fYmZkICE9IG9iamZpbGUtPm9iZmQpOwor LSAgYmZkX2Nsb3NlIChkd29fZmlsZS0+ZHdvX2JmZCk7CistCistICBtdW5tYXBfc2VjdGlvbl9i dWZmZXIgKCZkd29fZmlsZS0+c2VjdGlvbnMuYWJicmV2KTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1 ZmZlciAoJmR3b19maWxlLT5zZWN0aW9ucy5pbmZvKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZl ciAoJmR3b19maWxlLT5zZWN0aW9ucy5saW5lKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAo JmR3b19maWxlLT5zZWN0aW9ucy5sb2MpOworLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZHdv X2ZpbGUtPnNlY3Rpb25zLnN0cik7CistICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkd29fZmls ZS0+c2VjdGlvbnMuc3RyX29mZnNldHMpOworLQorLSAgZm9yIChpeCA9IDA7CistICAgICAgIFZF Q19pdGVyYXRlIChkd2FyZjJfc2VjdGlvbl9pbmZvX2RlZiwgZHdvX2ZpbGUtPnNlY3Rpb25zLnR5 cGVzLAorLQkJICAgIGl4LCBzZWN0aW9uKTsKKy0gICAgICAgKytpeCkKKy0gICAgbXVubWFwX3Nl Y3Rpb25fYnVmZmVyIChzZWN0aW9uKTsKKysgIGdkYl9iZmRfdW5yZWYgKGR3b19maWxlLT5kd29f YmZkKTsKKyAKKyAgIFZFQ19mcmVlIChkd2FyZjJfc2VjdGlvbl9pbmZvX2RlZiwgZHdvX2ZpbGUt PnNlY3Rpb25zLnR5cGVzKTsKKyB9CitAQCAtOTg3OCw2ICsxMDAzMCwyOSBAQCBwcm9jZXNzX2Vu dW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCisgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOworIH0KKyAKKysvKiBDcmVh dGUgYSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJnZXQgdHlwZSBUWVBF LgorKworKyAgIE11bHRpZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBpbnRlcm5hbGx5IHJlcHJlc2Vu dGVkIGFzIGEgc3RhY2sgb2YKKysgICBzaW5nbGVkaW1lbnNpb25hbCBhcnJheXMgYmVpbmcgcmVm ZXJlbmNlZCBieSB0aGVpciBUWVBFX1RBUkdFVF9UWVBFLiAgKi8KKysKKytzdGF0aWMgc3RydWN0 IHR5cGUgKgorK2NyZWF0ZV9zaW5nbGVfYXJyYXlfZGltZW5zaW9uIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUsCisrCQkJICAgICAgIHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyt7CisrICB0eXBlID0gY3JlYXRlX2FycmF5X3R5 cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGUpOworKworKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBl IGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAgICAgdmFsdWVfc3Vi c2NyaXB0ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCisr ICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CisrCisrICAvKiBUaGVzZSBn ZW5lcmljIHR5cGUgYXR0cmlidXRlcyBhcmUgY2hlY2tlZCBmb3IgYWxsb2NhdGVkL2Fzc29jaWF0 ZWQKKysgICAgIHZhbGlkaXR5IHdoaWxlIGFjY2Vzc2luZyBGSUVMRF9MT0NfS0lORF9EV0FSRl9C TE9DSy4gICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCByYW5nZV90eXBlLCBjdSk7 CisrCisrICByZXR1cm4gdHlwZTsKKyt9CisrCisgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24g ZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCisgICAgdGhlIERJRSdz IHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwK KyAgICBhcnJheXMuICAqLworQEAgLTk4OTEsNyArMTAwNjYsNyBAQCByZWFkX2FycmF5X3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVjdCB0 eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKKyAgIHN0cnVjdCB0 eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0g IGludCBuZGltID0gMDsKKysgIGludCBuZGltID0gMCwgaTsKKyAgIHN0cnVjdCBjbGVhbnVwICpi YWNrX3RvOworICAgY2hhciAqbmFtZTsKKyAKK0BAIC05OTQ0LDE3ICsxMDExOSwxOSBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CisgCisgICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGll LCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKKy0gICAgeworLSAgICAgIGludCBpID0gMDsKKy0K Ky0gICAgICB3aGlsZSAoaSA8IG5kaW0pCistCXR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVM TCwgdHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAg ICAgIHdoaWxlIChuZGltLS0gPiAwKQorLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEws IHR5cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsKKy0gICAgfQorKyAgICBmb3IgKGkgPSAwOyBpIDwg bmRpbTsgaSsrKQorKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAo dHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworKyAgZWxzZSAvKiAocmVhZF9hcnJheV9v cmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KKysgICAgZm9yIChpID0gbmRp bSAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2Rp bWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworKworKyAgLyogRGF0YSBs b2NhdGlvbnMgc2hvdWxkIGJlIHNldCBvbmx5IGZvciB0aGUgb3V0ZXJtb3N0IGRpbWVuc2lvbiBh cyB0aGV5CisrICAgICB3b3VsZCBiZSBjb25mdXNpbmcgZm9yIHRoZSBkZXJlZmVyZW5jZWQgb2Zm c2V0IG9uIHRoZSBpbm5lciBvbmVzLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9kYXRhX2xvY2F0aW9uLCBjdSk7CisrICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSkKKysgICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLICh0eXBlKQorKyAgICAgID0g ZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAgZ2RiX2Fzc2VydCAo IVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSICh0eXBlKSk7CisgCisgICAvKiBVbmRlcnN0YW5k IER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgorICAg ICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmli dXRlIHRvIHRoZQorQEAgLTEwNDM4LDI5ICsxMDYxNSwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CisgICBzdHJ1 Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOworICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKIC0gIHVuc2lnbmVkIGludCBsZW5ndGg7CiArICBpbnQg bGVuZ3RoOwogKwpAQCAtMTA4Myw3ICsyNzMwLDcgQEAgaW5kZXggOGRiYzUzZS4uYjViNzgxMyAx MDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5n dWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEws IGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtMTA0MTIsNyArMTA1MzEsNyBAQCByZWFk X3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC0xMDc2NCw3ICsxMTAyNiw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2Vf dHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAq YXR0cjsKQEAgLTEwOTIsNyArMjczOSw3IEBAIGluZGV4IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0 CiAgICBpbnQgbG93X2RlZmF1bHRfaXNfdmFsaWQ7CiAgICBjaGFyICpuYW1lOwogICAgTE9OR0VT VCBuZWdhdGl2ZV9tYXNrOwotQEAgLTEwNDY4LDQyICsxMDU4Nyw2IEBAIHJlYWRfc3VicmFuZ2Vf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTEw ODIwLDQyICsxMTA4Miw2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJCQkgICAgICAiLSBESUUgYXQgMHgleCBbaW4g bW9kdWxlICVzXSIpLAogIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYsIGN1LT5vYmpmaWxl LT5uYW1lKTsKICAKQEAgLTExMzUsNyArMjc4Miw3IEBAIGluZGV4IDhkYmM1M2UuLmI1Yjc4MTMg MTAwNjQ0CiAgICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRv IGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwogICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgYmFzZSB0 eXBlLgogICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBlIG11c3QgYmUgc2V0IHRvIHRo ZSB0eXBlIG9mCi1AQCAtMTA1NDIsMjQgKzEwNjI1LDE2MyBAQCByZWFkX3N1YnJhbmdlX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMDg5NCwy NCArMTExMjAsMTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAKQEAgLTExNzcsNyArMjgyNCwx MCBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogKyAgICAgIHN0cnVjdCBkaWVfaW5m byAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsK ICsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0rCisgCistICAvKiBB ZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBvbiBubyBib3VuZGFyeSBhdHRyaWJ1dGVzLiAgKi8K Ky0gIGlmIChhdHRyID09IE5VTEwgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKKy0g ICAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOwogKyAgICAgIHRh cmdldF9kaWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7 CiArICAgICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsK ICsgICAgICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRf bG9jYXRpb24sIHRhcmdldF9jdSk7CkBAIC0xMjE1LDEwICsyODY1LDcgQEAgaW5kZXggOGRiYzUz ZS4uYjViNzgxMyAxMDA2NDQKICsgICAgICBpZiAobG93ID49IDApCiArCVRZUEVfVU5TSUdORUQg KHJhbmdlX3R5cGUpID0gMTsKICsgICAgfQotIAotLSAgLyogQWRhIGV4cGVjdHMgYW4gZW1wdHkg YXJyYXkgb24gbm8gYm91bmRhcnkgYXR0cmlidXRlcy4gICovCi0tICBpZiAoYXR0ciA9PSBOVUxM ICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0tICAgIFRZUEVfSElHSF9CT1VORF9V TkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKKysKICsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRyIHx8ICghYXR0cl9mb3JtX2lz X2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKQogKwkJJiYgIWlz X3JlZl9hdHRyIChhdHRyKSkpCkBAIC0xMzEzLDcgKzI5NjAsMjE0IEBAIGluZGV4IDhkYmM1M2Uu LmI1Yjc4MTMgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAg aWYgKG5hbWUpCi1AQCAtMTMyNTcsMTAgKzEzNDc5LDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24g KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKK0BAIC0xMTY4NSw2 ICsxMjA1MCw4IEBAIHJlYWRfcGFydGlhbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3Nw ZWNzICpyZWFkZXIsCisgCWNhc2UgRFdfQVRfZXh0ZW5zaW9uOgorIAkgIHBhcnRfZGllLT5oYXNf c3BlY2lmaWNhdGlvbiA9IDE7CisgCSAgcGFydF9kaWUtPnNwZWNfb2Zmc2V0ID0gZHdhcmYyX2dl dF9yZWZfZGllX29mZnNldCAoJmF0dHIpOworKwkgIHBhcnRfZGllLT5zcGVjX2lzX2R3eiA9IChh dHRyLmZvcm0gPT0gRFdfRk9STV9HTlVfcmVmX2FsdAorKwkJCQkgICB8fCBjdS0+cGVyX2N1LT5p c19kd3opOworIAkgIGJyZWFrOworIAljYXNlIERXX0FUX3NpYmxpbmc6CisgCSAgLyogSWdub3Jl IGFic29sdXRlIHNpYmxpbmdzLCB0aGV5IG1pZ2h0IHBvaW50IG91dHNpZGUgb2YKK0BAIC0xMTcz MSw3ICsxMjA5OCwxMSBAQCByZWFkX3BhcnRpYWxfZGllIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRl cl9zcGVjcyAqcmVhZGVyLAorIAorIAljYXNlIERXX0FUX2ltcG9ydDoKKyAJICBpZiAocGFydF9k aWUtPnRhZyA9PSBEV19UQUdfaW1wb3J0ZWRfdW5pdCkKKy0JICAgIHBhcnRfZGllLT5kLm9mZnNl dCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKCZhdHRyKTsKKysJICAgIHsKKysJICAgICAg cGFydF9kaWUtPmQub2Zmc2V0ID0gZHdhcmYyX2dldF9yZWZfZGllX29mZnNldCAoJmF0dHIpOwor KwkgICAgICBwYXJ0X2RpZS0+aXNfZHd6ID0gKGF0dHIuZm9ybSA9PSBEV19GT1JNX0dOVV9yZWZf YWx0CisrCQkJCSAgfHwgY3UtPnBlcl9jdS0+aXNfZHd6KTsKKysJICAgIH0KKyAJICBicmVhazsK KyAKKyAJZGVmYXVsdDoKK0BAIC0xMTgwMiwxMyArMTIxNzMsMTQgQEAgZmluZF9wYXJ0aWFsX2Rp ZV9pbl9jb21wX3VuaXQgKHNlY3Rfb2Zmc2V0IG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisgICAgRFdfRk9STV9yZWZfc2lnOCkuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9k aWVfaW5mbyAqCistZmluZF9wYXJ0aWFsX2RpZSAoc2VjdF9vZmZzZXQgb2Zmc2V0LCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKKytmaW5kX3BhcnRpYWxfZGllIChzZWN0X29mZnNldCBvZmZzZXQsIGlu dCBvZmZzZXRfaW5fZHd6LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyB7CisgICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOworICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1ID0gTlVMTDsKKyAgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZCA9IE5VTEw7 CisgCistICBpZiAob2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQorKyAgaWYg KG9mZnNldF9pbl9kd3ogPT0gY3UtPnBlcl9jdS0+aXNfZHd6CisrICAgICAgJiYgb2Zmc2V0X2lu X2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQorICAgICB7CisgICAgICAgcGQgPSBmaW5kX3Bh cnRpYWxfZGllX2luX2NvbXBfdW5pdCAob2Zmc2V0LCBjdSk7CisgICAgICAgaWYgKHBkICE9IE5V TEwpCitAQCAtMTE4MjcsNyArMTIxOTksOCBAQCBmaW5kX3BhcnRpYWxfZGllIChzZWN0X29mZnNl dCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAkJIChsb25nKSBjdS0+aGVhZGVyLm9m ZnNldC5zZWN0X29mZiwgKGxvbmcpIG9mZnNldC5zZWN0X29mZiwKKyAJCSBiZmRfZ2V0X2ZpbGVu YW1lIChvYmpmaWxlLT5vYmZkKSk7CisgCX0KKy0gICAgICBwZXJfY3UgPSBkd2FyZjJfZmluZF9j b250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBvYmpmaWxlKTsKKysgICAgICBwZXJfY3UgPSBk d2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBvZmZzZXRfaW5fZHd6LAor KwkJCQkJCSBvYmpmaWxlKTsKKyAKKyAgICAgICBpZiAocGVyX2N1LT5jdSA9PSBOVUxMIHx8IHBl cl9jdS0+Y3UtPnBhcnRpYWxfZGllcyA9PSBOVUxMKQorIAlsb2FkX3BhcnRpYWxfY29tcF91bml0 IChwZXJfY3UpOworQEAgLTExODg1LDcgKzEyMjU4LDggQEAgZ3Vlc3NfcGFydGlhbF9kaWVfc3Ry dWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpzdHJ1Y3RfcGRpLAorIAorICAg cmVhbF9wZGkgPSBzdHJ1Y3RfcGRpOworICAgd2hpbGUgKHJlYWxfcGRpLT5oYXNfc3BlY2lmaWNh dGlvbikKKy0gICAgcmVhbF9wZGkgPSBmaW5kX3BhcnRpYWxfZGllIChyZWFsX3BkaS0+c3BlY19v ZmZzZXQsIGN1KTsKKysgICAgcmVhbF9wZGkgPSBmaW5kX3BhcnRpYWxfZGllIChyZWFsX3BkaS0+ c3BlY19vZmZzZXQsCisrCQkJCSByZWFsX3BkaS0+c3BlY19pc19kd3osIGN1KTsKKyAKKyAgIGlm IChyZWFsX3BkaS0+ZGllX3BhcmVudCAhPSBOVUxMKQorICAgICByZXR1cm47CitAQCAtMTE5MzMs NyArMTIzMDcsOCBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8g KnBhcnRfZGllLAorICAgICB7CisgICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNwZWNf ZGllOworIAorLSAgICAgIHNwZWNfZGllID0gZmluZF9wYXJ0aWFsX2RpZSAocGFydF9kaWUtPnNw ZWNfb2Zmc2V0LCBjdSk7CisrICAgICAgc3BlY19kaWUgPSBmaW5kX3BhcnRpYWxfZGllIChwYXJ0 X2RpZS0+c3BlY19vZmZzZXQsCisrCQkJCSAgIHBhcnRfZGllLT5zcGVjX2lzX2R3eiwgY3UpOwor IAorICAgICAgIGZpeHVwX3BhcnRpYWxfZGllIChzcGVjX2RpZSwgY3UpOworIAorQEAgLTEyMDIx LDYgKzEyMzk2LDEwIEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChjb25zdCBzdHJ1Y3QgZGllX3Jl YWRlcl9zcGVjcyAqcmVhZGVyLAorIAkJCQkgICAgICAgJmN1LT5oZWFkZXIsICZieXRlc19yZWFk KTsKKyAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOworICAgICAgIGJyZWFrOworKyAgICBj YXNlIERXX0ZPUk1fR05VX3JlZl9hbHQ6CisrICAgICAgRFdfVU5TTkQgKGF0dHIpID0gcmVhZF9v ZmZzZXQgKGFiZmQsIGluZm9fcHRyLCAmY3UtPmhlYWRlciwgJmJ5dGVzX3JlYWQpOworKyAgICAg IGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7CisrICAgICAgYnJlYWs7CisgICAgIGNhc2UgRFdfRk9S TV9hZGRyOgorICAgICAgIERXX0FERFIgKGF0dHIpID0gcmVhZF9hZGRyZXNzIChhYmZkLCBpbmZv X3B0ciwgY3UsICZieXRlc19yZWFkKTsKKyAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwor QEAgLTEyMDYzLDEwICsxMjQ0MiwyNSBAQCByZWFkX2F0dHJpYnV0ZV92YWx1ZSAoY29uc3Qgc3Ry dWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKKyAgICAgICBpbmZvX3B0ciArPSBieXRlc19y ZWFkOworICAgICAgIGJyZWFrOworICAgICBjYXNlIERXX0ZPUk1fc3RycDoKKy0gICAgICBEV19T VFJJTkcgKGF0dHIpID0gcmVhZF9pbmRpcmVjdF9zdHJpbmcgKGFiZmQsIGluZm9fcHRyLCBjdV9o ZWFkZXIsCistCQkJCQkgICAgICAgJmJ5dGVzX3JlYWQpOworLSAgICAgIERXX1NUUklOR19JU19D QU5PTklDQUwgKGF0dHIpID0gMDsKKy0gICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOworKyAg ICAgIGlmICghY3UtPnBlcl9jdS0+aXNfZHd6KQorKwl7CisrCSAgRFdfU1RSSU5HIChhdHRyKSA9 IHJlYWRfaW5kaXJlY3Rfc3RyaW5nIChhYmZkLCBpbmZvX3B0ciwgY3VfaGVhZGVyLAorKwkJCQkJ CSAgICZieXRlc19yZWFkKTsKKysJICBEV19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDA7 CisrCSAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKKysJICBicmVhazsKKysJfQorKyAgICAgIC8q IEZBTExUSFJPVUdIICovCisrICAgIGNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6CisrICAgICAg eworKwlzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKCk7CisrCUxP TkdFU1Qgc3RyX29mZnNldCA9IHJlYWRfb2Zmc2V0IChhYmZkLCBpbmZvX3B0ciwgY3VfaGVhZGVy LAorKwkJCQkJICAmYnl0ZXNfcmVhZCk7CisrCisrCURXX1NUUklORyAoYXR0cikgPSByZWFkX2lu ZGlyZWN0X3N0cmluZ19mcm9tX2R3eiAoZHd6LCBzdHJfb2Zmc2V0KTsKKysJRFdfU1RSSU5HX0lT X0NBTk9OSUNBTCAoYXR0cikgPSAwOworKwlpbmZvX3B0ciArPSBieXRlc19yZWFkOworKyAgICAg IH0KKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBEV19GT1JNX2V4cHJsb2M6CisgICAgIGNhc2Ug RFdfRk9STV9ibG9jazoKK0BAIC0xMjE3OCw2ICsxMjU3MiwxMCBAQCByZWFkX2F0dHJpYnV0ZV92 YWx1ZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKKyAJICAgICBiZmRf Z2V0X2ZpbGVuYW1lIChhYmZkKSk7CisgICAgIH0KKyAKKysgIC8qIFN1cGVyIGhhY2suICAqLwor KyAgaWYgKGN1LT5wZXJfY3UtPmlzX2R3eiAmJiBpc19yZWZfYXR0ciAoYXR0cikpCisrICAgIGF0 dHItPmZvcm0gPSBEV19GT1JNX0dOVV9yZWZfYWx0OworKworICAgLyogV2UgaGF2ZSBzZWVuIGlu c3RhbmNlcyB3aGVyZSB0aGUgY29tcGlsZXIgdHJpZWQgdG8gZW1pdCBhIGJ5dGUKKyAgICAgIHNp emUgYXR0cmlidXRlIG9mIC0xIHdoaWNoIGVuZGVkIHVwIGJlaW5nIGVuY29kZWQgYXMgYW4gdW5z aWduZWQKKyAgICAgIDB4ZmZmZmZmZmYuICBBbHRob3VnaCAweGZmZmZmZmZmIGlzIHRlY2huaWNh bGx5IGEgdmFsaWQgc2l6ZSB2YWx1ZSwKK0BAIC0xMjQ3NCw2ICsxMjg3MiwzMCBAQCByZWFkX2lu ZGlyZWN0X3N0cmluZ19hdF9vZmZzZXQgKGJmZCAqYWJmZCwgTE9OR0VTVCBzdHJfb2Zmc2V0KQor ICAgcmV0dXJuIChjaGFyICopIChkd2FyZjJfcGVyX29iamZpbGUtPnN0ci5idWZmZXIgKyBzdHJf b2Zmc2V0KTsKKyB9CisgCisrLyogUmVhZCBhIHN0cmluZyBhdCBvZmZzZXQgU1RSX09GRlNFVCBp biB0aGUgLmRlYnVnX3N0ciBzZWN0aW9uIGZyb20KKysgICB0aGUgLmR3eiBmaWxlIERXWi4gIFRo cm93IGFuIGVycm9yIGlmIHRoZSBvZmZzZXQgaXMgdG9vIGxhcmdlLiAgSWYKKysgICB0aGUgc3Ry aW5nIGNvbnNpc3RzIG9mIGEgc2luZ2xlIE5VTCBieXRlLCByZXR1cm4gTlVMTDsgb3RoZXJ3aXNl CisrICAgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc3RyaW5nLiAgKi8KKysKKytzdGF0aWMgY2hh ciAqCisrcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKHN0cnVjdCBkd3pfZmlsZSAqZHd6 LCBMT05HRVNUIHN0cl9vZmZzZXQpCisreworKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYy X3Blcl9vYmpmaWxlLT5vYmpmaWxlLCAmZHd6LT5zdHIpOworKworKyAgaWYgKGR3ei0+c3RyLmJ1 ZmZlciA9PSBOVUxMKQorKyAgICBlcnJvciAoXygiRFdfRk9STV9HTlVfc3RycF9hbHQgdXNlZCB3 aXRob3V0IC5kZWJ1Z19zdHIgIgorKwkgICAgICJzZWN0aW9uIFtpbiBtb2R1bGUgJXNdIiksCisr CSAgIGJmZF9nZXRfZmlsZW5hbWUgKGR3ei0+ZHd6X2JmZCkpOworKyAgaWYgKHN0cl9vZmZzZXQg Pj0gZHd6LT5zdHIuc2l6ZSkKKysgICAgZXJyb3IgKF8oIkRXX0ZPUk1fR05VX3N0cnBfYWx0IHBv aW50aW5nIG91dHNpZGUgb2YgIgorKwkgICAgICIuZGVidWdfc3RyIHNlY3Rpb24gW2luIG1vZHVs ZSAlc10iKSwKKysJICAgYmZkX2dldF9maWxlbmFtZSAoZHd6LT5kd3pfYmZkKSk7CisrICBnZGJf YXNzZXJ0IChIT1NUX0NIQVJfQklUID09IDgpOworKyAgaWYgKGR3ei0+c3RyLmJ1ZmZlcltzdHJf b2Zmc2V0XSA9PSAnXDAnKQorKyAgICByZXR1cm4gTlVMTDsKKysgIHJldHVybiAoY2hhciAqKSAo ZHd6LT5zdHIuYnVmZmVyICsgc3RyX29mZnNldCk7CisrfQorKworIHN0YXRpYyBjaGFyICoKKyBy ZWFkX2luZGlyZWN0X3N0cmluZyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqYnVmLAorIAkJICAgICAg Y29uc3Qgc3RydWN0IGNvbXBfdW5pdF9oZWFkICpjdV9oZWFkZXIsCitAQCAtMTI5NDYsNiArMTMz NjgsMzAgQEAgYWRkX2ZpbGVfbmFtZSAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwKKyAgIGZlLT5z eW10YWIgPSBOVUxMOworIH0KKyAKKysvKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGZpbmQg dGhlIHByb3BlciAuZGVidWdfbGluZSBzZWN0aW9uIGZvciBhCisrICAgQ1UuICAqLworKworK3N0 YXRpYyBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqCisrZ2V0X2RlYnVnX2xpbmVfc2VjdGlv biAoc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2lu Zm8gKnNlY3Rpb247CisrCisrICAvKiBGb3IgVFVzIGluIERXTyBmaWxlcywgdGhlIERXX0FUX3N0 bXRfbGlzdCBhdHRyaWJ1dGUgbGl2ZXMgaW4gdGhlCisrICAgICBEV08gZmlsZS4gICovCisrICBp ZiAoY3UtPmR3b191bml0ICYmIGN1LT5wZXJfY3UtPmlzX2RlYnVnX3R5cGVzKQorKyAgICBzZWN0 aW9uID0gJmN1LT5kd29fdW5pdC0+ZHdvX2ZpbGUtPnNlY3Rpb25zLmxpbmU7CisrICBlbHNlIGlm IChjdS0+cGVyX2N1LT5pc19kd3opCisrICAgIHsKKysgICAgICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3 eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKCk7CisrCisrICAgICAgc2VjdGlvbiA9ICZkd3otPmxp bmU7CisrICAgIH0KKysgIGVsc2UKKysgICAgc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUt PmxpbmU7CisrCisrICByZXR1cm4gc2VjdGlvbjsKKyt9CisrCisgLyogUmVhZCB0aGUgc3RhdGVt ZW50IHByb2dyYW0gaGVhZGVyIHN0YXJ0aW5nIGF0IE9GRlNFVCBpbgorICAgIC5kZWJ1Z19saW5l LCBvciAuZGVidWdfbGluZS5kd28uICBSZXR1cm4gYSBwb2ludGVyCisgICAgdG8gYSBzdHJ1Y3Qg bGluZV9oZWFkZXIsIGFsbG9jYXRlZCB1c2luZyB4bWFsbG9jLgorQEAgLTEyOTY2LDEzICsxMzQx Miw3IEBAIGR3YXJmX2RlY29kZV9saW5lX2hlYWRlciAodW5zaWduZWQgaW50IG9mZnNldCwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlv bjsKKyAgIGJmZCAqYWJmZDsKKyAKKy0gIC8qIEZvciBUVXMgaW4gRFdPIGZpbGVzLCB0aGUgRFdf QVRfc3RtdF9saXN0IGF0dHJpYnV0ZSBsaXZlcyBpbiB0aGUKKy0gICAgIERXTyBmaWxlLiAgKi8K Ky0gIGlmIChjdS0+ZHdvX3VuaXQgJiYgY3UtPnBlcl9jdS0+aXNfZGVidWdfdHlwZXMpCistICAg IHNlY3Rpb24gPSAmY3UtPmR3b191bml0LT5kd29fZmlsZS0+c2VjdGlvbnMubGluZTsKKy0gIGVs c2UKKy0gICAgc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUtPmxpbmU7CistCisrICBzZWN0 aW9uID0gZ2V0X2RlYnVnX2xpbmVfc2VjdGlvbiAoY3UpOworICAgZHdhcmYyX3JlYWRfc2VjdGlv biAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKKyAgIGlmIChzZWN0aW9u LT5idWZmZXIgPT0gTlVMTCkKKyAgICAgeworQEAgLTEzMjk3LDcgKzEzNzM3LDcgQEAgZHdhcmZf ZGVjb2RlX2xpbmVzXzEgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNvbnN0IGNoYXIgKmNvbXBf ZGlyLAorIAkJCSBHQ2QgYnkgdGhlIGxpbmtlci4gIElnbm9yZSBpdC4gIFBSIGdkYi8xMjUyOCAq LworIAorIAkJICAgICAgbG9uZyBsaW5lX29mZnNldAorLQkJCT0gbGluZV9wdHIgLSBkd2FyZjJf cGVyX29iamZpbGUtPmxpbmUuYnVmZmVyOworKwkJCT0gbGluZV9wdHIgLSBnZXRfZGVidWdfbGlu ZV9zZWN0aW9uIChjdSktPmJ1ZmZlcjsKKyAKKyAJCSAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVf Y29tcGxhaW50cywKKyAJCQkJIF8oIi5kZWJ1Z19saW5lIGFkZHJlc3MgYXQgb2Zmc2V0IDB4JWx4 IGlzIDAgIgorQEAgLTEzNjU5LDEwICsxNDA5OSwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChz dHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3 aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAg cmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2Fpbiwg aXQgbWlnaHQKICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQg aXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCkBAIC0xMzI4LDcgKzMxODIsNyBAQCBpbmRleCA4ZGJj NTNlLi5iNWI3ODEzIDEwMDY0NAogIAogICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkg PT0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzKQogICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwotQEAg LTEzMzAxLDYgKzEzNTI1LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTEzNzAzLDYg KzE0MTQ1LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJc3ltID0g T0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBzeW1ib2wp OwogICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTEzMzcsOCArMzE5MSwz MyBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogIAogICAgICAgIC8qIENhY2hlIHRo aXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4g ICovCiAgICAgICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAoc3ltLCBjdS0+bGFuZ3VhZ2UpOwotQEAg LTE0MDc1LDYgKzE0MzAxLDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgYnJlYWs7CitAQCAtMTQxMjYsNiArMTQ1 NzAsNyBAQCBkd2FyZjJfY29uc3RfdmFsdWVfYXR0ciAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IHR5cGUgKnR5cGUsCisgICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6CisgICAgIGNhc2Ug RFdfRk9STV9zdHJwOgorICAgICBjYXNlIERXX0ZPUk1fR05VX3N0cl9pbmRleDoKKysgICAgY2Fz ZSBEV19GT1JNX0dOVV9zdHJwX2FsdDoKKyAgICAgICAvKiBEV19TVFJJTkcgaXMgYWxyZWFkeSBh bGxvY2F0ZWQgb24gdGhlIG9iamZpbGUgb2JzdGFjaywgcG9pbnQKKyAJIGRpcmVjdGx5IHRvIGl0 LiAgKi8KKyAgICAgICAqYnl0ZXMgPSAoZ2RiX2J5dGUgKikgRFdfU1RSSU5HIChhdHRyKTsKK0BA IC0xNDMxMiw3ICsxNDc1NywxNSBAQCBsb29rdXBfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAorIAorICAgLyogRmlyc3Qgc2VlIGlmIHdlIGhh dmUgaXQgY2FjaGVkLiAgKi8KKyAKKy0gIGlmIChpc19yZWZfYXR0ciAoYXR0cikpCisrICBpZiAo YXR0ci0+Zm9ybSA9PSBEV19GT1JNX0dOVV9yZWZfYWx0KQorKyAgICB7CisrICAgICAgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OworKyAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldCA9 IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKGF0dHIpOworKworKyAgICAgIHBlcl9jdSA9IGR3 YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChvZmZzZXQsIDEsIGN1LT5vYmpmaWxlKTsK KysgICAgICB0aGlzX3R5cGUgPSBnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChvZmZzZXQsIHBlcl9j dSk7CisrICAgIH0KKysgIGVsc2UgaWYgKGlzX3JlZl9hdHRyIChhdHRyKSkKKyAgICAgeworICAg ICAgIHNlY3Rfb2Zmc2V0IG9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKGF0dHIp OworIAorQEAgLTE0NDc3LDYgKzE0OTMwLDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJlYWs7CiAgICAgIH0K ICAKICsgIGlmICh0aGlzX3R5cGUpCkBAIC0xMzQ3LDcgKzMyMjYsMTk1IEBAIGluZGV4IDhkYmM1 M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC0xNjQ3 Miw2MiArMTY3MDEsMTAwIEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9j dSAqY3UsCitAQCAtMTUwODUsNiArMTU1NDEsMTAgQEAgZHVtcF9kaWVfc2hhbGxvdyAoc3RydWN0 IHVpX2ZpbGUgKmYsIGludCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAqZGllKQorIAkgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZiwgInJlZiBhZGRyZXNzOiAiKTsKKyAJICBmcHV0c19maWx0ZXJlZCAo aGV4X3N0cmluZyAoRFdfVU5TTkQgKCZkaWUtPmF0dHJzW2ldKSksIGYpOworIAkgIGJyZWFrOwor KwljYXNlIERXX0ZPUk1fR05VX3JlZl9hbHQ6CisrCSAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAi YWx0IHJlZiBhZGRyZXNzOiAiKTsKKysJICBmcHV0c19maWx0ZXJlZCAoaGV4X3N0cmluZyAoRFdf VU5TTkQgKCZkaWUtPmF0dHJzW2ldKSksIGYpOworKwkgIGJyZWFrOworIAljYXNlIERXX0ZPUk1f cmVmMToKKyAJY2FzZSBEV19GT1JNX3JlZjI6CisgCWNhc2UgRFdfRk9STV9yZWY0OgorQEAgLTE1 MTE2LDYgKzE1NTc2LDcgQEAgZHVtcF9kaWVfc2hhbGxvdyAoc3RydWN0IHVpX2ZpbGUgKmYsIGlu dCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAqZGllKQorIAljYXNlIERXX0ZPUk1fc3RyaW5nOgor IAljYXNlIERXX0ZPUk1fc3RycDoKKyAJY2FzZSBEV19GT1JNX0dOVV9zdHJfaW5kZXg6CisrCWNh c2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6CisgCSAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAic3Ry aW5nOiBcIiVzXCIgKCVzIGNhbm9uaWNhbGl6ZWQpIiwKKyAJCSAgIERXX1NUUklORyAoJmRpZS0+ YXR0cnNbaV0pCisgCQkgICA/IERXX1NUUklORyAoJmRpZS0+YXR0cnNbaV0pIDogIiIsCitAQCAt MTUyMTksNiArMTU2ODAsNyBAQCBpc19yZWZfYXR0ciAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikK KyAgICAgY2FzZSBEV19GT1JNX3JlZjQ6CisgICAgIGNhc2UgRFdfRk9STV9yZWY4OgorICAgICBj YXNlIERXX0ZPUk1fcmVmX3VkYXRhOgorKyAgICBjYXNlIERXX0ZPUk1fR05VX3JlZl9hbHQ6Cisg ICAgICAgcmV0dXJuIDE7CisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIDA7CitAQCAtMTUy OTYsNyArMTU3NTgsOCBAQCBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKHN0cnVjdCBkaWVfaW5mbyAq c3JjX2RpZSwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKKyAgICBSZXR1cm5zIE5VTEwgaWYgT0ZG U0VUIGlzIGludmFsaWQuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgZGllX2luZm8gKgorLWZvbGxv d19kaWVfb2Zmc2V0IChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKipyZWZf Y3UpCisrZm9sbG93X2RpZV9vZmZzZXQgKHNlY3Rfb2Zmc2V0IG9mZnNldCwgaW50IG9mZnNldF9p bl9kd3osCisrCQkgICBzdHJ1Y3QgZHdhcmYyX2N1ICoqcmVmX2N1KQorIHsKKyAgIHN0cnVjdCBk aWVfaW5mbyB0ZW1wX2RpZTsKKyAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSwgKmN1ID0g KnJlZl9jdTsKK0BAIC0xNTMxMywxMSArMTU3NzYsMTMgQEAgZm9sbG93X2RpZV9vZmZzZXQgKHNl Y3Rfb2Zmc2V0IG9mZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqKnJlZl9jdSkKKyAgICAgICBpZiAo ISBvZmZzZXRfaW5fY3VfcCAoJmN1LT5oZWFkZXIsIG9mZnNldCkpCisgCXJldHVybiBOVUxMOwor ICAgICB9CistICBlbHNlIGlmICghIG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zmc2V0 KSkKKysgIGVsc2UgaWYgKG9mZnNldF9pbl9kd3ogIT0gY3UtPnBlcl9jdS0+aXNfZHd6CisrCSAg IHx8ICEgb2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQorICAgICB7CisgICAg ICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OworIAorLSAgICAgIHBlcl9jdSA9 IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChvZmZzZXQsIGN1LT5vYmpmaWxlKTsK KysgICAgICBwZXJfY3UgPSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0 LCBvZmZzZXRfaW5fZHd6LAorKwkJCQkJCSBjdS0+b2JqZmlsZSk7CisgCisgICAgICAgLyogSWYg bmVjZXNzYXJ5LCBhZGQgaXQgdG8gdGhlIHF1ZXVlIGFuZCBsb2FkIGl0cyBESUVzLiAgKi8KKyAg ICAgICBpZiAobWF5YmVfcXVldWVfY29tcF91bml0IChjdSwgcGVyX2N1LCBjdS0+bGFuZ3VhZ2Up KQorQEAgLTE1MzQ5LDcgKzE1ODE0LDEwIEBAIGZvbGxvd19kaWVfcmVmIChzdHJ1Y3QgZGllX2lu Zm8gKnNyY19kaWUsIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCisgICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSA9ICpyZWZfY3U7CisgICBzdHJ1Y3QgZGllX2luZm8gKmRpZTsKKyAKKy0gIGRpZSA9IGZv bGxvd19kaWVfb2Zmc2V0IChvZmZzZXQsIHJlZl9jdSk7CisrICBkaWUgPSBmb2xsb3dfZGllX29m ZnNldCAob2Zmc2V0LAorKwkJCSAgIChhdHRyLT5mb3JtID09IERXX0ZPUk1fR05VX3JlZl9hbHQK KysJCQkgICAgfHwgY3UtPnBlcl9jdS0+aXNfZHd6KSwKKysJCQkgICByZWZfY3UpOworICAgaWYg KCFkaWUpCisgICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2Fubm90IGZpbmQgRElFIGF0IDB4 JXggcmVmZXJlbmNlZCBmcm9tIERJRSAiCisgCSAgICJhdCAweCV4IFtpbiBtb2R1bGUgJXNdIiks CitAQCAtMTUzODAsNyArMTU4NDgsNyBAQCBkd2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2Nr IChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1LAorICAgICBsb2FkX2N1IChwZXJfY3UpOworICAgY3Ug PSBwZXJfY3UtPmN1OworIAorLSAgZGllID0gZm9sbG93X2RpZV9vZmZzZXQgKG9mZnNldCwgJmN1 KTsKKysgIGRpZSA9IGZvbGxvd19kaWVfb2Zmc2V0IChvZmZzZXQsIHBlcl9jdS0+aXNfZHd6LCAm Y3UpOworICAgaWYgKCFkaWUpCisgICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2Fubm90IGZp bmQgRElFIGF0IDB4JXggcmVmZXJlbmNlZCBpbiBtb2R1bGUgJXMiKSwKKyAJICAgb2Zmc2V0LnNl Y3Rfb2ZmLCBwZXJfY3UtPm9iamZpbGUtPm5hbWUpOworQEAgLTE2MTc5LDYgKzE2NjQ3LDcgQEAg c2tpcF9mb3JtX2J5dGVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpieXRlcywgZ2RiX2J5dGUgKmJ1 ZmZlcl9lbmQsCisgCisgICAgIGNhc2UgRFdfRk9STV9zZWNfb2Zmc2V0OgorICAgICBjYXNlIERX X0ZPUk1fc3RycDoKKysgICAgY2FzZSBEV19GT1JNX0dOVV9zdHJwX2FsdDoKKyAgICAgICBieXRl cyArPSBvZmZzZXRfc2l6ZTsKKyAgICAgICBicmVhazsKKyAKK0BAIC0xNjMzNCw3ICsxNjgwMyw3 IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0 ciwgZ2RiX2J5dGUgKm1hY19lbmQsCisgCQkJICBzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmN1 cnJlbnRfZmlsZSwKKyAJCQkgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGly LAorIAkJCSAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24sCistCQkJICBpbnQg c2VjdGlvbl9pc19nbnUsCisrCQkJICBpbnQgc2VjdGlvbl9pc19nbnUsIGludCBzZWN0aW9uX2lz X2R3eiwKKyAJCQkgIHVuc2lnbmVkIGludCBvZmZzZXRfc2l6ZSwKKyAJCQkgIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorIAkJCSAgaHRhYl90IGluY2x1ZGVfaGFzaCkKK0BAIC0xNjM4NSw2ICsx Njg1NCw4IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAq bWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCisgICAgICAgICBjYXNlIERXX01BQ1JPX0dOVV91 bmRlZjoKKyAJY2FzZSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0OgorIAljYXNlIERXX01B Q1JPX0dOVV91bmRlZl9pbmRpcmVjdDoKKysJY2FzZSBEV19NQUNST19HTlVfZGVmaW5lX2luZGly ZWN0X2FsdDoKKysJY2FzZSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3RfYWx0OgorICAgICAg ICAgICB7CisgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7CisgICAgICAgICAg ICAgaW50IGxpbmU7CitAQCAtMTY0MDcsMTEgKzE2ODc4LDIwIEBAIGR3YXJmX2RlY29kZV9tYWNy b19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQs CisgCQlzdHJfb2Zmc2V0ID0gcmVhZF9vZmZzZXRfMSAoYWJmZCwgbWFjX3B0ciwgb2Zmc2V0X3Np emUpOworIAkJbWFjX3B0ciArPSBvZmZzZXRfc2l6ZTsKKyAKKy0JCWJvZHkgPSByZWFkX2luZGly ZWN0X3N0cmluZ19hdF9vZmZzZXQgKGFiZmQsIHN0cl9vZmZzZXQpOworKwkJaWYgKG1hY2luZm9f dHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0X2FsdAorKwkJICAgIHx8IG1hY2lu Zm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3RfYWx0KQorKwkJICB7CisrCQkg ICAgc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOworKworKwkJ ICAgIGJvZHkgPSByZWFkX2luZGlyZWN0X3N0cmluZ19mcm9tX2R3eiAoZHd6LCBzdHJfb2Zmc2V0 KTsKKysJCSAgfQorKwkJZWxzZQorKwkJICBib2R5ID0gcmVhZF9pbmRpcmVjdF9zdHJpbmdfYXRf b2Zmc2V0IChhYmZkLCBzdHJfb2Zmc2V0KTsKKyAJICAgICAgfQorIAorIAkgICAgaXNfZGVmaW5l ID0gKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lCistCQkJIHx8IG1hY2luZm9f dHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0KTsKKysJCQkgfHwgbWFjaW5mb190 eXBlID09IERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3QKKysJCQkgfHwgbWFjaW5mb190eXBl ID09IERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3RfYWx0KTsKKyAgICAgICAgICAgICBpZiAo ISBjdXJyZW50X2ZpbGUpCisgCSAgICAgIHsKKyAJCS8qIERXQVJGIHZpb2xhdGlvbiBhcyBubyBt YWluIHNvdXJjZSBpcyBwcmVzZW50LiAgKi8KK0BAIC0xNjQzNSw3ICsxNjkxNSw4IEBAIGR3YXJm X2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5 dGUgKm1hY19lbmQsCisgCSAgICBlbHNlCisgCSAgICAgIHsKKyAJCWdkYl9hc3NlcnQgKG1hY2lu Zm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWYKKy0JCQkgICAgfHwgbWFjaW5mb190eXBlID09 IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdCk7CisrCQkJICAgIHx8IG1hY2luZm9fdHlwZSA9 PSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3QKKysJCQkgICAgfHwgbWFjaW5mb190eXBlID09 IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdF9hbHQpOworIAkJbWFjcm9fdW5kZWYgKGN1cnJl bnRfZmlsZSwgbGluZSwgYm9keSk7CisgCSAgICAgIH0KKyAgICAgICAgICAgfQorQEAgLTE2NTEw LDYgKzE2OTkxLDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvX2J5dGVzIChiZmQgKmFiZmQsIGdkYl9i eXRlICptYWNfcHRyLCBnZGJfYnl0ZSAqbWFjX2VuZCwKKyAgICAgICAgICAgYnJlYWs7CisgCisg CWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2luY2x1ZGU6CisrCWNhc2UgRFdfTUFDUk9f R05VX3RyYW5zcGFyZW50X2luY2x1ZGVfYWx0OgorIAkgIHsKKyAJICAgIExPTkdFU1Qgb2Zmc2V0 OworIAkgICAgdm9pZCAqKnNsb3Q7CitAQCAtMTY1MjgsMTMgKzE3MDEwLDMyIEBAIGR3YXJmX2Rl Y29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUg Km1hY19lbmQsCisgCSAgICAgIH0KKyAJICAgIGVsc2UKKyAJICAgICAgeworKwkJYmZkICppbmNs dWRlX2JmZCA9IGFiZmQ7CisrCQlzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5jbHVkZV9z ZWN0aW9uID0gc2VjdGlvbjsKKysJCXN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGFsdF9zZWN0 aW9uOworKwkJZ2RiX2J5dGUgKmluY2x1ZGVfbWFjX2VuZCA9IG1hY19lbmQ7CisrCQlpbnQgaXNf ZHd6ID0gc2VjdGlvbl9pc19kd3o7CisrCisgCQkqc2xvdCA9IG1hY19wdHI7CisgCistCQlkd2Fy Zl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGFiZmQsCistCQkJCQkgIHNlY3Rpb24tPmJ1ZmZlciArIG9m ZnNldCwKKy0JCQkJCSAgbWFjX2VuZCwgY3VycmVudF9maWxlLAorKwkJaWYgKG1hY2luZm9fdHlw ZSA9PSBEV19NQUNST19HTlVfdHJhbnNwYXJlbnRfaW5jbHVkZV9hbHQpCisrCQkgIHsKKysJCSAg ICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKCk7CisrCisrCQkg ICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAorKwkJ CQkJICZkd3otPm1hY3JvKTsKKysKKysJCSAgICBpbmNsdWRlX2JmZCA9IGR3ei0+bWFjcm8uYXNl Y3Rpb24tPm93bmVyOworKwkJICAgIGluY2x1ZGVfc2VjdGlvbiA9ICZkd3otPm1hY3JvOworKwkJ ICAgIGluY2x1ZGVfbWFjX2VuZCA9IGR3ei0+bWFjcm8uYnVmZmVyICsgZHd6LT5tYWNyby5zaXpl OworKwkJICAgIGlzX2R3eiA9IDE7CisrCQkgIH0KKysKKysJCWR3YXJmX2RlY29kZV9tYWNyb19i eXRlcyAoaW5jbHVkZV9iZmQsCisrCQkJCQkgIGluY2x1ZGVfc2VjdGlvbi0+YnVmZmVyICsgb2Zm c2V0LAorKwkJCQkJICBpbmNsdWRlX21hY19lbmQsIGN1cnJlbnRfZmlsZSwKKyAJCQkJCSAgbGgs IGNvbXBfZGlyLAorLQkJCQkJICBzZWN0aW9uLCBzZWN0aW9uX2lzX2dudSwKKysJCQkJCSAgc2Vj dGlvbiwgc2VjdGlvbl9pc19nbnUsIGlzX2R3eiwKKyAJCQkJCSAgb2Zmc2V0X3NpemUsIG9iamZp bGUsIGluY2x1ZGVfaGFzaCk7CisgCisgCQlodGFiX3JlbW92ZV9lbHQgKGluY2x1ZGVfaGFzaCwg bWFjX3B0cik7CitAQCAtMTY3NTMsNyArMTcyNTQsOCBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChz dHJ1Y3QgZHdhcmYyX2N1ICpjdSwgdW5zaWduZWQgaW50IG9mZnNldCwKKyAgIHNsb3QgPSBodGFi X2ZpbmRfc2xvdCAoaW5jbHVkZV9oYXNoLCBtYWNfcHRyLCBJTlNFUlQpOworICAgKnNsb3QgPSBt YWNfcHRyOworICAgZHdhcmZfZGVjb2RlX21hY3JvX2J5dGVzIChhYmZkLCBtYWNfcHRyLCBtYWNf ZW5kLAorLQkJCSAgICBjdXJyZW50X2ZpbGUsIGxoLCBjb21wX2Rpciwgc2VjdGlvbiwgc2VjdGlv bl9pc19nbnUsCisrCQkJICAgIGN1cnJlbnRfZmlsZSwgbGgsIGNvbXBfZGlyLCBzZWN0aW9uLAor KwkJCSAgICBzZWN0aW9uX2lzX2dudSwgMCwKKyAJCQkgICAgb2Zmc2V0X3NpemUsIG9iamZpbGUs IGluY2x1ZGVfaGFzaCk7CisgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgfQorQEAgLTE2ODUx LDYyICsxNzM1MywxMDAgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSwKICAgIGJhdG9uLT5mcm9tX2R3byA9IGN1LT5kd29fdW5pdCAhPSBOVUxMOwogIH0KICAK QEAgLTE0ODYsNyArMzU1Myw0NyBAQCBpbmRleCA4ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogICAg ICB9CiAgfQogIAotQEAgLTE2ODk1LDYgKzE3MTYyLDI1IEBAIHBlcl9jdV9vZmZzZXRfYW5kX3R5 cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKK0BAIC0x NzAwOCwyOCArMTc1NDgsMzQgQEAgZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAoc3RydWN0IGR3 YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorIAorIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICoKKyBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAoc2VjdF9vZmZzZXQg b2Zmc2V0LAorKwkJCQkgIHVuc2lnbmVkIGludCBvZmZzZXRfaW5fZHd6LAorIAkJCQkgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRo aXNfY3U7CisgICBpbnQgbG93LCBoaWdoOworKyAgY29uc3Qgc2VjdF9vZmZzZXQgKmN1X29mZjsK KyAKKyAgIGxvdyA9IDA7CisgICBoaWdoID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5p dHMgLSAxOworICAgd2hpbGUgKGhpZ2ggPiBsb3cpCisgICAgIHsKKysgICAgICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICptaWRfY3U7CisgICAgICAgaW50IG1pZCA9IGxvdyArIChoaWdoIC0g bG93KSAvIDI7CisgCistICAgICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5p dHNbbWlkXS0+b2Zmc2V0LnNlY3Rfb2ZmCistCSAgPj0gb2Zmc2V0LnNlY3Rfb2ZmKQorKyAgICAg IG1pZF9jdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbbWlkXTsKKysgICAg ICBjdV9vZmYgPSAmbWlkX2N1LT5vZmZzZXQ7CisrICAgICAgaWYgKG1pZF9jdS0+aXNfZHd6ID49 IG9mZnNldF9pbl9kd3oKKysJICAmJiBjdV9vZmYtPnNlY3Rfb2ZmID49IG9mZnNldC5zZWN0X29m ZikKKyAJaGlnaCA9IG1pZDsKKyAgICAgICBlbHNlCisgCWxvdyA9IG1pZCArIDE7CisgICAgIH0K KyAgIGdkYl9hc3NlcnQgKGxvdyA9PSBoaWdoKTsKKy0gIGlmIChkd2FyZjJfcGVyX29iamZpbGUt PmFsbF9jb21wX3VuaXRzW2xvd10tPm9mZnNldC5zZWN0X29mZgorLSAgICAgID4gb2Zmc2V0LnNl Y3Rfb2ZmKQorKyAgdGhpc19jdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNb bG93XTsKKysgIGN1X29mZiA9ICZ0aGlzX2N1LT5vZmZzZXQ7CisrICBpZiAodGhpc19jdS0+aXNf ZHd6ICE9IG9mZnNldF9pbl9kd3ogfHwgY3Vfb2ZmLT5zZWN0X29mZiA+IG9mZnNldC5zZWN0X29m ZikKKyAgICAgeworLSAgICAgIGlmIChsb3cgPT0gMCkKKysgICAgICBpZiAobG93ID09IDAgfHwg dGhpc19jdS0+aXNfZHd6ICE9IG9mZnNldF9pbl9kd3opCisgCWVycm9yIChfKCJEd2FyZiBFcnJv cjogY291bGQgbm90IGZpbmQgcGFydGlhbCBESUUgY29udGFpbmluZyAiCisgCSAgICAgICAib2Zm c2V0IDB4JWx4IFtpbiBtb2R1bGUgJXNdIiksCisgCSAgICAgICAobG9uZykgb2Zmc2V0LnNlY3Rf b2ZmLCBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKSk7CitAQCAtMTcyNzAsNiArMTc4 MTYsMjUgQEAgcGVyX2N1X29mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMs IGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogIAkgICYmIG9mc19saHMtPm9mZnNldC5zZWN0X29mZiA9 PSBvZnNfcmhzLT5vZmZzZXQuc2VjdF9vZmYpOwogIH0KICAKQEAgLTE1MTIsNyArMzYxOSw3IEBA IGluZGV4IDhkYmM1M2UuLmI1Yjc4MTMgMTAwNjQ0CiAgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0 ZWQgd2l0aCBESUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCiAgICAgdGFibGUgaWYg bmVjZXNzYXJ5LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1cm4gVFlQRS4KICAKLUBAIC0xNjkxOSw2 ICsxNzIwNSw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xNzI5NCw2ICsxNzg1OSw4IEBA IHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X29mZnNldF9hbmRf dHlwZSAqKnNsb3QsIG9mczsKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZp bGU7CiAgCkBAIC0xNTIxLDggKzM2MjgsOTQgQEAgaW5kZXggOGRiYzUzZS4uYjViNzgxMyAxMDA2 NDQKICAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmlj IGRhdGEgaXMgYWx3YXlzCiAgICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4g IFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQogICAgICAgd2Ugc2hvdWxkIG5vdCBiZSBkb2lu ZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCitAQCAtMTc0NzEsNTMgKzE4 MDM4LDEzIEBAIHNob3dfZHdhcmYyX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorICAg Y21kX3Nob3dfbGlzdCAoc2hvd19kd2FyZjJfY21kbGlzdCwgZnJvbV90dHksICIiKTsKKyB9Cisg CistLyogSWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBlZCwgbXVubWFwIGl0 IG5vdy4gICovCistCistc3RhdGljIHZvaWQKKy1tdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorLXsKKy0gIGlmIChpbmZvLT5tYXBfYWRkciAh PSBOVUxMKQorLSAgICB7CistI2lmZGVmIEhBVkVfTU1BUAorLSAgICAgIGludCByZXM7CistCist ICAgICAgcmVzID0gbXVubWFwIChpbmZvLT5tYXBfYWRkciwgaW5mby0+bWFwX2xlbik7CistICAg ICAgZ2RiX2Fzc2VydCAocmVzID09IDApOworLSNlbHNlCistICAgICAgLyogV2l0aG91dCBIQVZF X01NQVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJlZ2luIHdpdGguICAqLworLSAgICAg IGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJubyBtbWFwIHN1cHBvcnQiKTsKKy0jZW5kaWYKKy0g ICAgfQorLX0KKy0KKy0vKiBtdW5tYXAgZGVidWcgc2VjdGlvbnMgZm9yIE9CSkZJTEUsIGlmIG5l Y2Vzc2FyeS4gICovCisrLyogRnJlZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFLCBpZiBu ZWNlc3NhcnkuICAqLworIAorIHN0YXRpYyB2b2lkCisgZHdhcmYyX3Blcl9vYmpmaWxlX2ZyZWUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQorIHsKKyAgIHN0cnVjdCBkd2FyZjJf cGVyX29iamZpbGUgKmRhdGEgPSBkOworICAgaW50IGl4OworLSAgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKnNlY3Rpb247CistCistICAvKiBUaGlzIGlzIHNvcnRlZCBhY2NvcmRpbmcgdG8g dGhlIG9yZGVyIHRoZXkncmUgZGVmaW5lZCBpbiB0byBtYWtlIGl0IGVhc2llcgorLSAgICAgdG8g a2VlcCBpbiBzeW5jLiAgKi8KKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmluZm8p OworLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+YWJicmV2KTsKKy0gIG11bm1hcF9z ZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmxpbmUpOworLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgm ZGF0YS0+bG9jKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPm1hY2luZm8pOwor LSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjcm8pOworLSAgbXVubWFwX3NlY3Rp b25fYnVmZmVyICgmZGF0YS0+c3RyKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEt PnJhbmdlcyk7CistICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5hZGRyKTsKKy0gIG11 bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1 ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKKy0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEt PmdkYl9pbmRleCk7CistCistICBmb3IgKGl4ID0gMDsKKy0gICAgICAgVkVDX2l0ZXJhdGUgKGR3 YXJmMl9zZWN0aW9uX2luZm9fZGVmLCBkYXRhLT50eXBlcywgaXgsIHNlY3Rpb24pOworLSAgICAg ICArK2l4KQorLSAgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHNlY3Rpb24pOworIAorICAgZm9y IChpeCA9IDA7IGl4IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraXgpCisg ICAgIFZFQ19mcmVlIChkd2FyZjJfcGVyX2N1X3B0ciwKK0BAIC0xNzUyNyw2ICsxODA1NCw5IEBA IGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAq ZCkKKyAKKyAgIGlmIChkYXRhLT5kd29fZmlsZXMpCisgICAgIGZyZWVfZHdvX2ZpbGVzIChkYXRh LT5kd29fZmlsZXMsIG9iamZpbGUpOworKworKyAgaWYgKGRhdGEtPmR3el9maWxlICYmIGRhdGEt PmR3el9maWxlLT5kd3pfYmZkKQorKyAgICBnZGJfYmZkX3VucmVmIChkYXRhLT5kd3pfZmlsZS0+ ZHd6X2JmZCk7CisgfQorIAorIAwKK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2Vs ZnJlYWQuYworaW5kZXggMWVkZmIyNy4uZDkxMDljZiAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFk LmMKKysrKyBiL2dkYi9lbGZyZWFkLmMKK0BAIC00NCw2ICs0NCw3IEBACisgI2luY2x1ZGUgImdk YnRocmVhZC5oIgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorICNpbmNsdWRlICJiY2FjaGUuaCIK KysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJl YWQgKHZvaWQpOworIAorQEAgLTExMjMsNyArMTEyNCw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29u c3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBidWlsZF9pZCAqY2hlY2spCisgICBlbHNlCisgICAg IHJldHZhbCA9IDE7CisgCistICBnZGJfYmZkX2Nsb3NlX29yX3dhcm4gKGFiZmQpOworKyAgZ2Ri X2JmZF91bnJlZiAoYWJmZCk7CisgCisgICB4ZnJlZSAoZm91bmQpOworIAogZGlmZiAtLWdpdCBh L2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCA3ZjFkZmFjLi41MjQ2MmJjIDEwMDY0NAor aW5kZXggM2Q0MzQwNi4uNTU2OGIxYyAxMDA2NDQKIC0tLSBhL2dkYi9ldmFsLmMKICsrKyBiL2dk Yi9ldmFsLmMKIEBAIC00MSw2ICs0MSw3IEBACkBAIC0yMDEwLDYgKzQyMDMsODEgQEAgaW5kZXgg N2YxZGZhYy4uNTI0NjJiYyAxMDA2NDQKIC0gIHJldHVybiBuZGltZW47CiArCiAgfQorZGlmZiAt LWdpdCBhL2dkYi9leGVjLmMgYi9nZGIvZXhlYy5jCitpbmRleCA2YmExOTg2Li41NDBjMjcxIDEw MDY0NAorLS0tIGEvZ2RiL2V4ZWMuYworKysrIGIvZ2RiL2V4ZWMuYworQEAgLTMzLDYgKzMzLDcg QEAKKyAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAj aW5jbHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAjaW5jbHVk ZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKK0BAIC05OCwxMCAr OTksOCBAQCBleGVjX2Nsb3NlICh2b2lkKQorICAgaWYgKGV4ZWNfYmZkKQorICAgICB7CisgICAg ICAgYmZkICphYmZkID0gZXhlY19iZmQ7CistICAgICAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpOworIAorLSAgICAgIGdkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoYWJmZCk7Cist ICAgICAgeGZyZWUgKG5hbWUpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworIAorICAg ICAgIC8qIFJlbW92aW5nIHRhcmdldCBzZWN0aW9ucyBtYXkgY2xvc2UgdGhlIGV4ZWNfb3BzIHRh cmdldC4KKyAJIENsZWFyIGV4ZWNfYmZkIGJlZm9yZSBkb2luZyBzbyB0byBwcmV2ZW50IHJlY3Vy c2lvbi4gICovCitAQCAtMTM3LDggKzEzNiw3IEBAIGV4ZWNfY2xvc2VfMSAoaW50IHF1aXR0aW5n KQorIAkgIG5lZWRfc3ltdGFiX2NsZWFudXAgPSAxOworIAl9CisgICAgICAgZWxzZSBpZiAodnAt PmJmZCAhPSBleGVjX2JmZCkKKy0JLyogRklYTUUtbGVhazogV2Ugc2hvdWxkIGJlIGZyZWVpbmcg dnAtPm5hbWUgdG9vLCBJIHRoaW5rLiAgKi8KKy0JZ2RiX2JmZF9jbG9zZV9vcl93YXJuICh2cC0+ YmZkKTsKKysJZ2RiX2JmZF91bnJlZiAodnAtPmJmZCk7CisgCisgICAgICAgeGZyZWUgKHZwKTsK KyAgICAgfQorQEAgLTIzMCwxMSArMjI4LDE0IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZp bGVuYW1lLCBpbnQgZnJvbV90dHkpCisgCSAgICAgJnNjcmF0Y2hfcGF0aG5hbWUpOworIAl9Cisg I2VuZGlmCisrCisrICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBzY3JhdGNo X3BhdGhuYW1lKTsKKysKKyAgICAgICBpZiAoc2NyYXRjaF9jaGFuIDwgMCkKKyAJcGVycm9yX3dp dGhfbmFtZSAoZmlsZW5hbWUpOworLSAgICAgIGV4ZWNfYmZkID0gYmZkX2ZvcGVuIChzY3JhdGNo X3BhdGhuYW1lLCBnbnV0YXJnZXQsCistCQkJICAgIHdyaXRlX2ZpbGVzID8gRk9QRU5fUlVCIDog Rk9QRU5fUkIsCistCQkJICAgIHNjcmF0Y2hfY2hhbik7CisrICAgICAgZXhlY19iZmQgPSBnZGJf YmZkX3JlZiAoYmZkX2ZvcGVuIChzY3JhdGNoX3BhdGhuYW1lLCBnbnV0YXJnZXQsCisrCQkJCQkg d3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBGT1BFTl9SQiwKKysJCQkJCSBzY3JhdGNoX2NoYW4p KTsKKyAKKyAgICAgICBpZiAoIWV4ZWNfYmZkKQorIAl7CitAQCAtMjQyLDEzICsyNDMsNiBAQCBl eGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQorIAkJIHNjcmF0 Y2hfcGF0aG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKyAJfQorIAorLSAg ICAgIC8qIEF0IHRoaXMgcG9pbnQsIHNjcmF0Y2hfcGF0aG5hbWUgYW5kIGV4ZWNfYmZkLT5uYW1l IGJvdGggcG9pbnQgdG8gdGhlCistICAgICAgICAgc2FtZSBtYWxsb2MnZCBzdHJpbmcuICBIb3dl dmVyIGV4ZWNfY2xvc2UoKSB3aWxsIGF0dGVtcHQgdG8gZnJlZSBpdAorLSAgICAgICAgIHZpYSB0 aGUgZXhlY19iZmQtPm5hbWUgcG9pbnRlciwgc28gd2UgbmVlZCB0byBtYWtlIGFub3RoZXIgY29w eSBhbmQKKy0gICAgICAgICBsZWF2ZSBleGVjX2JmZCBhcyB0aGUgbmV3IG93bmVyIG9mIHRoZSBv cmlnaW5hbCBjb3B5LiAgKi8KKy0gICAgICBzY3JhdGNoX3BhdGhuYW1lID0geHN0cmR1cCAoc2Ny YXRjaF9wYXRobmFtZSk7CistICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBz Y3JhdGNoX3BhdGhuYW1lKTsKKy0KKyAgICAgICBpZiAoIWJmZF9jaGVja19mb3JtYXRfbWF0Y2hl cyAoZXhlY19iZmQsIGJmZF9vYmplY3QsICZtYXRjaGluZykpCisgCXsKKyAJICAvKiBNYWtlIHN1 cmUgdG8gY2xvc2UgZXhlY19iZmQsIG9yIGVsc2UgInJ1biIgbWlnaHQgdHJ5IHRvIHVzZQorQEAg LTI1OSw2ICsyNTMsOCBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZy b21fdHR5KQorIAkJIGdkYl9iZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpLCBtYXRjaGluZykp OworIAl9CisgCisrICAgICAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoZXhlY19iZmQpOworKwor ICAgICAgIC8qIEZJWE1FIC0gVGhpcyBzaG91bGQgb25seSBiZSBydW4gZm9yIFJTNjAwMCwgYnV0 IHRoZSBpZmRlZiBpcyBhIHBvb3IKKyAgICAgICAgICB3YXkgdG8gYWNjb21wbGlzaC4gICovCisg I2lmZGVmIERFUFJFQ0FURURfSUJNNjAwMF9UQVJHRVQKIGRpZmYgLS1naXQgYS9nZGIvZi1leHAu eSBiL2dkYi9mLWV4cC55CiBpbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAogLS0tIGEvZ2Ri L2YtZXhwLnkKQEAgLTIyNDQsMTc3ICs0NTEyLDc3NCBAQCBpbmRleCA4Yjg0YjVhLi40YjI0MGEz IDEwMDY0NAogKyAgaWYgKGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJl YW0gKHR5cGUsIHN0cmVhbSkgIT0gTlVMTCkKICsgICAgcmV0dXJuOwogKwotICAgQ0hFQ0tfVFlQ RURFRiAodHlwZSk7Ci0gICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCi0gICAgIHsKLWRpZmYg LS1naXQgYS9nZGIvZmluZHZhci5jIGIvZ2RiL2ZpbmR2YXIuYwotaW5kZXggZWQ3OTAzYy4uZTQx MmEzZCAxMDA2NDQKLS0tLSBhL2dkYi9maW5kdmFyLmMKLSsrKyBiL2dkYi9maW5kdmFyLmMKLUBA IC0zNSw2ICszNSw3IEBACi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1ZGUgIm9iamZpbGVz LmgiCi0gI2luY2x1ZGUgImxhbmd1YWdlLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotIAot IC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9u cyByZXR1cm4gYQotICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQg aW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCi1AQCAtNDA3LDcgKzQwOCwxMCBAQCBzeW1ib2xfcmVh ZF9uZWVkc19mcmFtZSAoc3RydWN0IHN5bWJvbCAqc3ltKQotIH0KLSAKLSAvKiBBIGRlZmF1bHQg aW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhvb2sgaW4KLS0gICB0 aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3b3JrIGluIG1vc3Qgc2l0dWF0aW9ucy4g ICovCi0rICAgdGhlIGxhbmd1YWdlIHZlY3RvciB3aGljaCBzaG91bGQgd29yayBpbiBtb3N0IHNp dHVhdGlvbnMuCi0rICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRyZXNzIG9mIHRoZSB2 YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKLSsgICB2YWx1ZSB0byByZXR1cm4gYXMg aXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIHBvc3NpYmx5 IAotKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwotIAotIHN0cnVjdCB2YWx1ZSAqCi0gZGVmYXVs dF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCi1AQCAtNDE1LDE2ICs0MTksNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgIHN0cnVjdCB2YWx1 ZSAqdjsKLSAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBDT1JF X0FERFIgYWRkcjsKLS0gIGludCBsZW47Ci0tCi0tICAvKiBDYWxsIGNoZWNrX3R5cGVkZWYgb24g b3VyIHR5cGUgdG8gbWFrZSBzdXJlIHRoYXQsIGlmIFRZUEUgaXMKLS0gICAgIGEgVFlQRV9DT0RF X1RZUEVERUYsIGl0cyBsZW5ndGggaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCB0 eXBlCi0tICAgICBpbnN0ZWFkIG9mIHplcm8uICBIb3dldmVyLCB3ZSBkbyBub3QgcmVwbGFjZSB0 aGUgdHlwZWRlZiB0eXBlIGJ5IHRoZQotLSAgICAgdGFyZ2V0IHR5cGUsIGJlY2F1c2Ugd2Ugd2Fu dCB0byBrZWVwIHRoZSB0eXBlZGVmIGluIG9yZGVyIHRvIGJlIGFibGUgdG8KLS0gICAgIHNldCB0 aGUgcmV0dXJuZWQgdmFsdWUgdHlwZSBkZXNjcmlwdGlvbiBjb3JyZWN0bHkuICAqLwotLSAgY2hl Y2tfdHlwZWRlZiAodHlwZSk7Ci0tCi0tICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0g ICBpZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCi0gICAgIGdkYl9hc3NlcnQgKGZy YW1lKTsKLUBAIC00MzQsNyArNDI4LDcgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0 IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgIGNhc2UgTE9DX0NP TlNUOgotICAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAg Ki8KLSAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotLSAgICAgIHN0b3JlX3NpZ25l ZF9pbnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBsZW4sCi0rICAgICAgc3RvcmVfc2ln bmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVOR1RIICh0eXBlKSwK LSAJCQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBlKSksCi0gCQkJ ICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOwotICAgICAgIFZBTFVFX0xWQUwgKHYp ID0gbm90X2x2YWw7Ci1AQCAtNDU5LDEyICs0NTMsMTIgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gCi0gICAg IGNhc2UgTE9DX0NPTlNUX0JZVEVTOgotICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7 Ci0tICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1CT0xfVkFMVUVfQllU RVMgKHZhciksIGxlbik7Ci0rICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBT WU1CT0xfVkFMVUVfQllURVMgKHZhciksCi0rCSAgICAgIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0g ICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSAgICAgICByZXR1cm4gdjsKLSAKLSAg ICAgY2FzZSBMT0NfU1RBVElDOgotLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBl KTsKLSAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0gCWFkZHIgPSBzeW1ib2xfb3Zlcmxh eWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAotIAkJCQkJIFNZTUJPTF9P QkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNDc4LDcgKzQ3Miw2IEBAIGRlZmF1bHRfcmVhZF92YXJf dmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIAll cnJvciAoXygiVW5rbm93biBhcmd1bWVudCBsaXN0IGFkZHJlc3MgZm9yIGAlcycuIiksCi0gCSAg ICAgICBTWU1CT0xfUFJJTlRfTkFNRSAodmFyKSk7Ci0gICAgICAgYWRkciArPSBTWU1CT0xfVkFM VUUgKHZhcik7Ci0tICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwotICAgICAg IGJyZWFrOwotIAotICAgICBjYXNlIExPQ19SRUZfQVJHOgotQEAgLTQ5MywxNCArNDg2LDEyIEBA IGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQotIAlhcmdyZWYgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOwotIAlyZWYgPSB2 YWx1ZV9hdCAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFyZ3JlZik7Ci0gCWFkZHIgPSB2 YWx1ZV9hc19hZGRyZXNzIChyZWYpOwotLQl2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7 Ci0gCWJyZWFrOwotICAgICAgIH0KLSAKLSAgICAgY2FzZSBMT0NfTE9DQUw6Ci0gICAgICAgYWRk ciA9IGdldF9mcmFtZV9sb2NhbHNfYWRkcmVzcyAoZnJhbWUpOwotICAgICAgIGFkZHIgKz0gU1lN Qk9MX1ZBTFVFICh2YXIpOwotLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsK LSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBMT0NfVFlQRURFRjoKLUBAIC01MDksNyArNTAw LDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgTE9DX0JMT0NL OgotLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKLSAgICAgICBpZiAob3Zl cmxheV9kZWJ1Z2dpbmcpCi0gCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MKLSAJICAo QkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElP TiAodmFyKSk7Ci1AQCAtNTM1LDcgKzUyNSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIAkgICAgICAgICAg ICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwotIAotIAkgICAgYWRkciA9IHZhbHVlX2FzX2Fk ZHJlc3MgKHJlZ3ZhbCk7Ci0tCSAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7Ci0g CSAgfQotIAllbHNlCi0gCSAgewotQEAgLTU4Myw3ICs1NzIsNiBAQCBkZWZhdWx0X3JlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAJ aWYgKG9ial9zZWN0aW9uCi0gCSAgICAmJiAob2JqX3NlY3Rpb24tPnRoZV9iZmRfc2VjdGlvbi0+ ZmxhZ3MgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQotIAkgIGFkZHIgPSB0YXJnZXRfdHJhbnNs YXRlX3Rsc19hZGRyZXNzIChvYmpfc2VjdGlvbi0+b2JqZmlsZSwgYWRkcik7Ci0tCXYgPSBhbGxv Y2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKLSAgICAgICB9Ci0gICAgICAgYnJlYWs7Ci0gCi1AQCAt NTk2LDYgKzU4NCwxMCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgICAgICBicmVhazsKLSAgICAgfQotIAot KyAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVG IGZvcgotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUy4gICovCi0rICBvYmplY3RfYWRk cmVzc19zZXQgKGFkZHIpOwotKyAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwotICAg VkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSAgIHNldF92YWx1ZV9hZGRyZXNzICh2LCBh ZGRyKTsKLSAgIHJldHVybiB2OwotQEAgLTY5MSwxMCArNjgzLDExIEBAIHN0cnVjdCB2YWx1ZSAq Ci0gdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190 eXBlZGVmICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAKLS0gIGlmIChnZGJhcmNoX2Nv bnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0rICB0eXBlID0gY2hl Y2tfdHlwZWRlZiAodHlwZSk7CisgICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAgIHN3aXRjaCAo VFlQRV9DT0RFICh0eXBlKSkKKyAgICAgeworZGlmZiAtLWdpdCBhL2dkYi9maW5kdmFyLmMgYi9n ZGIvZmluZHZhci5jCitpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAorLS0tIGEvZ2RiL2Zp bmR2YXIuYworKysrIGIvZ2RiL2ZpbmR2YXIuYworQEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVk ZSAiYmxvY2suaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAibGFuZ3VhZ2Uu aCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgCisgLyogQmFzaWMgYnl0ZS1zd2FwcGluZyBy b3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBhCisgICAgaG9zdC1mb3Jt YXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMK K0BAIC00MzgsNyArNDM5LDEwIEBAIG1pbnN5bV9sb29rdXBfaXRlcmF0b3JfY2IgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCB2b2lkICpjYl9kYXRhKQorIH0KKyAKKyAvKiBBIGRlZmF1bHQgaW1w bGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhvb2sgaW4KKy0gICB0aGUg bGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3b3JrIGluIG1vc3Qgc2l0dWF0aW9ucy4gICov CisrICAgdGhlIGxhbmd1YWdlIHZlY3RvciB3aGljaCBzaG91bGQgd29yayBpbiBtb3N0IHNpdHVh dGlvbnMuCisrICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRyZXNzIG9mIHRoZSB2YXJp YWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKKysgICB2YWx1ZSB0byByZXR1cm4gYXMgaXRz IHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIHBvc3NpYmx5IAor KyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLworIAorIHN0cnVjdCB2YWx1ZSAqCisgZGVmYXVsdF9y ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCitAQCAtNDQ2LDE2ICs0NTAsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgIHN0cnVjdCB2YWx1ZSAq djsKKyAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CisgICBDT1JFX0FE RFIgYWRkcjsKKy0gIGludCBsZW47CistCistICAvKiBDYWxsIGNoZWNrX3R5cGVkZWYgb24gb3Vy IHR5cGUgdG8gbWFrZSBzdXJlIHRoYXQsIGlmIFRZUEUgaXMKKy0gICAgIGEgVFlQRV9DT0RFX1RZ UEVERUYsIGl0cyBsZW5ndGggaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCB0eXBl CistICAgICBpbnN0ZWFkIG9mIHplcm8uICBIb3dldmVyLCB3ZSBkbyBub3QgcmVwbGFjZSB0aGUg dHlwZWRlZiB0eXBlIGJ5IHRoZQorLSAgICAgdGFyZ2V0IHR5cGUsIGJlY2F1c2Ugd2Ugd2FudCB0 byBrZWVwIHRoZSB0eXBlZGVmIGluIG9yZGVyIHRvIGJlIGFibGUgdG8KKy0gICAgIHNldCB0aGUg cmV0dXJuZWQgdmFsdWUgdHlwZSBkZXNjcmlwdGlvbiBjb3JyZWN0bHkuICAqLworLSAgY2hlY2tf dHlwZWRlZiAodHlwZSk7CistCistICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CisgCisgICBp ZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCisgICAgIGdkYl9hc3NlcnQgKGZyYW1l KTsKK0BAIC00NjUsNyArNDU5LDcgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5 bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgICAgIGNhc2UgTE9DX0NPTlNU OgorICAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8K KyAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworLSAgICAgIHN0b3JlX3NpZ25lZF9p bnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBsZW4sCisrICAgICAgc3RvcmVfc2lnbmVk X2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVOR1RIICh0eXBlKSwKKyAJ CQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBlKSksCisgCQkJICAg IChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOworICAgICAgIFZBTFVFX0xWQUwgKHYpID0g bm90X2x2YWw7CitAQCAtNDkwLDEyICs0ODQsMTIgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAo c3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgCisgICAgIGNh c2UgTE9DX0NPTlNUX0JZVEVTOgorICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Cist ICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1CT0xfVkFMVUVfQllURVMg KHZhciksIGxlbik7CisrICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1C T0xfVkFMVUVfQllURVMgKHZhciksCisrCSAgICAgIFRZUEVfTEVOR1RIICh0eXBlKSk7CisgICAg ICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKyAgICAgICByZXR1cm4gdjsKKyAKKyAgICAg Y2FzZSBMT0NfU1RBVElDOgorLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsK KyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVk X2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAorIAkJCQkJIFNZTUJPTF9PQkpf U0VDVElPTiAodmFyKSk7CitAQCAtNTA5LDcgKzUwMyw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFs dWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAllcnJv ciAoXygiVW5rbm93biBhcmd1bWVudCBsaXN0IGFkZHJlc3MgZm9yIGAlcycuIiksCisgCSAgICAg ICBTWU1CT0xfUFJJTlRfTkFNRSAodmFyKSk7CisgICAgICAgYWRkciArPSBTWU1CT0xfVkFMVUUg KHZhcik7CistICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOworICAgICAgIGJy ZWFrOworIAorICAgICBjYXNlIExPQ19SRUZfQVJHOgorQEAgLTUyNCwxNCArNTE3LDEyIEBAIGRl ZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorIAlhcmdyZWYgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOworIAlyZWYgPSB2YWx1 ZV9hdCAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFyZ3JlZik7CisgCWFkZHIgPSB2YWx1 ZV9hc19hZGRyZXNzIChyZWYpOworLQl2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7Cisg CWJyZWFrOworICAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfTE9DQUw6CisgICAgICAgYWRkciA9 IGdldF9mcmFtZV9sb2NhbHNfYWRkcmVzcyAoZnJhbWUpOworICAgICAgIGFkZHIgKz0gU1lNQk9M X1ZBTFVFICh2YXIpOworLSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKKyAg ICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBMT0NfVFlQRURFRjoKK0BAIC01NDAsNyArNTMxLDYg QEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCisgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgTE9DX0JMT0NLOgor LSAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKKyAgICAgICBpZiAob3Zlcmxh eV9kZWJ1Z2dpbmcpCisgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MKKyAJICAoQkxP Q0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAo dmFyKSk7CitAQCAtNTY2LDcgKzU1Niw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAkgICAgICAgICAgICAg U1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOworIAorIAkgICAgYWRkciA9IHZhbHVlX2FzX2FkZHJl c3MgKHJlZ3ZhbCk7CistCSAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CisgCSAg fQorIAllbHNlCisgCSAgeworQEAgLTYxNSw3ICs2MDQsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3Zh bHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAJaWYg KG9ial9zZWN0aW9uCisgCSAgICAmJiAob2JqX3NlY3Rpb24tPnRoZV9iZmRfc2VjdGlvbi0+Zmxh Z3MgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQorIAkgIGFkZHIgPSB0YXJnZXRfdHJhbnNsYXRl X3Rsc19hZGRyZXNzIChvYmpfc2VjdGlvbi0+b2JqZmlsZSwgYWRkcik7CistCXYgPSBhbGxvY2F0 ZV92YWx1ZV9sYXp5ICh0eXBlKTsKKyAgICAgICB9CisgICAgICAgYnJlYWs7CisgCitAQCAtNjI4 LDYgKzYxNiwxMCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIs IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBicmVhazsKKyAgICAgfQorIAorKyAg LyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZv cgorKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUy4gICovCisrICBvYmplY3RfYWRkcmVz c19zZXQgKGFkZHIpOworKyAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOworICAgVkFM VUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKyAgIHNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRy KTsKKyAgIHJldHVybiB2OworQEAgLTcyMywxMCArNzE1LDExIEBAIHN0cnVjdCB2YWx1ZSAqCisg dmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF9mcmFtZV9hcmNoIChmcmFtZSk7CistICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBl ZGVmICh0eXBlKTsKKyAgIHN0cnVjdCB2YWx1ZSAqdjsKKyAKKy0gIGlmIChnZGJhcmNoX2NvbnZl cnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCisrICB0eXBlID0gY2hlY2tf dHlwZWRlZiAodHlwZSk7CisrCisrICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdk YmFyY2gsIHJlZ251bSwgdHlwZSkpCisgICAgIHsKKyAgICAgICBpbnQgb3B0aW0sIHVuYXZhaWws IG9rOworIAorQEAgLTc0MSw3ICs3MzQsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAg IFZBTFVFX0xWQUwgKHYpID0gbHZhbF9yZWdpc3RlcjsKKyAgICAgICBWQUxVRV9GUkFNRV9JRCAo dikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxVRV9SRUdOVU0gKHYpID0gcmVn bnVtOworLSAgICAgIG9rID0gZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2RiYXJjaCwgZnJh bWUsIHJlZ251bSwgdHlwZTEsCisrICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVl IChnZGJhcmNoLCBmcmFtZSwgcmVnbnVtLCB0eXBlLAorIAkJCQkgICAgICB2YWx1ZV9jb250ZW50 c19yYXcgKHYpLCAmb3B0aW0sCisgCQkJCSAgICAgICZ1bmF2YWlsKTsKKyAKK2RpZmYgLS1naXQg YS9nZGIvZ2NvcmUuYyBiL2dkYi9nY29yZS5jCitpbmRleCBhZWRkYTQxLi5mOWExMzg5IDEwMDY0 NAorLS0tIGEvZ2RiL2djb3JlLmMKKysrKyBiL2dkYi9nY29yZS5jCitAQCAtMzMsNiArMzMsNyBA QAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorICNpbmNsdWRl ICJyZWdzZXQuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIFRoZSBsYXJnZXN0IGFt b3VudCBvZiBtZW1vcnkgdG8gcmVhZCBmcm9tIHRoZSB0YXJnZXQgYXQgb25jZS4gIFdlCisgICAg bXVzdCB0aHJvdHRsZSBpdCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IEdE QiBkdXJpbmcKK0BAIC01MCwxMCArNTEsMTEgQEAgc3RhdGljIGludCBnY29yZV9tZW1vcnlfc2Vj dGlvbnMgKGJmZCAqKTsKKyBiZmQgKgorIGNyZWF0ZV9nY29yZV9iZmQgKGNoYXIgKmZpbGVuYW1l KQorIHsKKy0gIGJmZCAqb2JmZCA9IGJmZF9vcGVudyAoZmlsZW5hbWUsIGRlZmF1bHRfZ2NvcmVf dGFyZ2V0ICgpKTsKKysgIGJmZCAqb2JmZCA9IGdkYl9iZmRfcmVmIChiZmRfb3BlbncgKGZpbGVu YW1lLCBkZWZhdWx0X2djb3JlX3RhcmdldCAoKSkpOworIAorICAgaWYgKCFvYmZkKQorICAgICBl cnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJyVzJyBmb3Igb3V0cHV0LiIpLCBmaWxlbmFtZSk7Cisr ICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChvYmZkKTsKKyAgIGJmZF9zZXRfZm9ybWF0IChvYmZk LCBiZmRfY29yZSk7CisgICBiZmRfc2V0X2FyY2hfbWFjaCAob2JmZCwgZGVmYXVsdF9nY29yZV9h cmNoICgpLCBkZWZhdWx0X2djb3JlX21hY2ggKCkpOworICAgcmV0dXJuIG9iZmQ7CitAQCAtMTEw LDcgKzExMiw3IEBAIGRvX2JmZF9kZWxldGVfY2xlYW51cCAodm9pZCAqYXJnKQorICAgYmZkICpv YmZkID0gYXJnOworICAgY29uc3QgY2hhciAqZmlsZW5hbWUgPSBvYmZkLT5maWxlbmFtZTsKKyAK Ky0gIGJmZF9jbG9zZSAoYXJnKTsKKysgIGdkYl9iZmRfdW5yZWYgKGFyZyk7CisgICB1bmxpbmsg KGZpbGVuYW1lKTsKKyB9CisgCitAQCAtMTU0LDcgKzE1Niw3IEBAIGdjb3JlX2NvbW1hbmQgKGNo YXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRvdXQs ICJTYXZlZCBjb3JlZmlsZSAlc1xuIiwgY29yZWZpbGVuYW1lKTsKKyAKKyAgIGRpc2NhcmRfY2xl YW51cHMgKG9sZF9jaGFpbik7CistICBiZmRfY2xvc2UgKG9iZmQpOworKyAgZ2RiX2JmZF91bnJl ZiAob2JmZCk7CisgfQorIAorIHN0YXRpYyB1bnNpZ25lZCBsb25nCitkaWZmIC0tZ2l0IGEvZ2Ri L2dkYi1nZGIuZ2RiLmluIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCitpbmRleCBmZmI3ZjUzLi5hMmU3 ZTk0IDEwMDY0NAorLS0tIGEvZ2RiL2dkYi1nZGIuZ2RiLmluCisrKysgYi9nZGIvZ2RiLWdkYi5n ZGIuaW4KK0BAIC0xLDUgKzEsMTUgQEAKKyBlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50 IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCisgCisrIyBTZXQgdXAgdGhlIFB5dGhvbiBsaWJyYXJ5IGFu ZCAicmVxdWlyZSIgY29tbWFuZC4KKytweXRob24KKytmcm9tIG9zLnBhdGggaW1wb3J0IGFic3Bh dGgKKytnZGIuZGF0YWRpciA9IGFic3BhdGggKCdAc3JjZGlyQC9weXRob24vbGliJykKKytnZGIu cHl0aG9ubGliZGlyID0gZ2RiLmRhdGFkaXIKKytnZGIuX19wYXRoX18gPSBbZ2RiLmRhdGFkaXIg KyAnL2dkYiddCisrc3lzLnBhdGguaW5zZXJ0KDAsIGdkYi5kYXRhZGlyKQorK2VuZAorK3NvdXJj ZSBAc3JjZGlyQC9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQorKworIHNldCBjb21wbGFpbnRz IDEKKyAKKyBiIGludGVybmFsX2Vycm9yCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYl9iZmQuYyBiL2dk Yi9nZGJfYmZkLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iNDM1NTNm CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvZ2RiX2JmZC5jCitAQCAtMCwwICsxLDQ4MSBAQAor Ky8qIERlZmluaXRpb25zIGZvciBCRkQgd3JhcHBlcnMgdXNlZCBieSBHREIuCisrCisrICAgQ29w eXJpZ2h0IChDKSAyMDExLCAyMDEyCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRl ICJnZGJfYmZkLmgiCisrI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKysjaW5jbHVkZSAiZ2RiX3N0 cmluZy5oIgorKyNpbmNsdWRlICJoYXNodGFiLmgiCisrI2lmZGVmIEhBVkVfWkxJQl9ICisrI2lu Y2x1ZGUgPHpsaWIuaD4KKysjZW5kaWYKKysjaWZkZWYgSEFWRV9NTUFQCisrI2luY2x1ZGUgPHN5 cy9tbWFuLmg+CisrI2lmbmRlZiBNQVBfRkFJTEVECisrI2RlZmluZSBNQVBfRkFJTEVEICgodm9p ZCAqKSAtMSkKKysjZW5kaWYKKysjZW5kaWYKKysKKysvKiBBbiBvYmplY3Qgb2YgdGhpcyB0eXBl IGlzIHN0b3JlZCBpbiB0aGUgc2VjdGlvbidzIHVzZXIgZGF0YSB3aGVuCisrICAgbWFwcGluZyBh IHNlY3Rpb24uICAqLworKworK3N0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0YQorK3sKKysgIC8q IFNpemUgb2YgdGhlIGRhdGEuICAqLworKyAgYmZkX3NpemVfdHlwZSBzaXplOworKyAgLyogSWYg dGhlIGRhdGEgd2FzIG1tYXBwZWQsIHRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0aGUgbWFwLiAgKi8K KysgIGJmZF9zaXplX3R5cGUgbWFwX2xlbjsKKysgIC8qIFRoZSBkYXRhLiAgSWYgTlVMTCwgdGhl IHNlY3Rpb24gZGF0YSBoYXMgbm90IGJlZW4gcmVhZC4gICovCisrICB2b2lkICpkYXRhOworKyAg LyogSWYgdGhlIGRhdGEgd2FzIG1tYXBwZWQsIHRoaXMgaXMgdGhlIG1hcCBhZGRyZXNzLiAgKi8K KysgIHZvaWQgKm1hcF9hZGRyOworK307CisrCisrLyogU2VlIGdkYl9iZmQuaC4gICovCisrCisr dm9pZAorK2dkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN0cnVjdCBiZmQgKmFiZmQpCisreworKyAg Y2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworKyAgY2hhciAqZGF0YTsKKysK KysgIGRhdGEgPSBiZmRfYWxsb2MgKGFiZmQsIHN0cmxlbiAobmFtZSkgKyAxKTsKKysgIHN0cmNw eSAoZGF0YSwgbmFtZSk7CisrCisrICAvKiBVbndhcnJhbnRlZCBjaHVtbWluZXNzIHdpdGggQkZE LiAgKi8KKysgIGFiZmQtPmZpbGVuYW1lID0gZGF0YTsKKyt9CisrCisrLyogQW4gb2JqZWN0IG9m IHRoaXMgdHlwZSBpcyBzdG9yZWQgaW4gZWFjaCBCRkQncyB1c2VyIGRhdGEuICAqLworKworK3N0 cnVjdCBnZGJfYmZkX2RhdGEKKyt7CisrICAvKiBUaGUgcmVmZXJlbmNlIGNvdW50LiAgKi8KKysg IGludCByZWZjOworKworKyAgLyogVGhlIG10aW1lIG9mIHRoZSBCRkQgYXQgdGhlIHBvaW50IHRo ZSBjYWNoZSBlbnRyeSB3YXMgbWFkZS4gICovCisrICB0aW1lX3QgbXRpbWU7CisrfTsKKysKKysv KiBBIGhhc2ggdGFibGUgc3RvcmluZyBhbGwgdGhlIEJGRHMgbWFpbnRhaW5lZCBpbiB0aGUgY2Fj aGUuICAqLworKworK3N0YXRpYyBodGFiX3QgZ2RiX2JmZF9jYWNoZTsKKysKKysvKiBUaGUgdHlw ZSBvZiBhbiBvYmplY3QgYmVpbmcgbG9va2VkIHVwIGluIGdkYl9iZmRfY2FjaGUuICBXZSB1c2UK KysgICBodGFiJ3MgY2FwYWJpbGl0eSBvZiBzdG9yaW5nIG9uZSBraW5kIG9mIG9iamVjdCAoQkZE IGluIHRoaXMgY2FzZSkKKysgICBhbmQgdXNpbmcgYSBkaWZmZXJlbnQgc29ydCBvZiBvYmplY3Qg Zm9yIHNlYXJjaGluZy4gICovCisrCisrc3RydWN0IGdkYl9iZmRfY2FjaGVfc2VhcmNoCisrewor KyAgLyogVGhlIGZpbGVuYW1lLiAgKi8KKysgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworKyAgLyog VGhlIG10aW1lLiAgKi8KKysgIHRpbWVfdCBtdGltZTsKKyt9OworKworKy8qIEEgaGFzaCBmdW5j dGlvbiBmb3IgQkZEcy4gICovCisrCisrc3RhdGljIGhhc2h2YWxfdAorK2hhc2hfYmZkIChjb25z dCB2b2lkICpiKQorK3sKKysgIGNvbnN0IGJmZCAqYWJmZCA9IGI7CisrCisrICAvKiBJdCBpcyBz aW1wbGVzdCB0byBqdXN0IGhhc2ggdGhlIGZpbGVuYW1lLiAgKi8KKysgIHJldHVybiBodGFiX2hh c2hfc3RyaW5nIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7CisrfQorKworKy8qIEFuIGVxdWFs aXR5IGZ1bmN0aW9uIGZvciBCRkRzLiAgTm90ZSB0aGF0IHRoaXMgZXhwZWN0cyB0aGUgY2FsbGVy CisrICAgdG8gc2VhcmNoIHVzaW5nIHN0cnVjdCBnZGJfYmZkX2NhY2hlX3NlYXJjaCBvbmx5LCBu b3QgQkZEcy4gICovCisrCisrc3RhdGljIGludAorK2VxX2JmZCAoY29uc3Qgdm9pZCAqYSwgY29u c3Qgdm9pZCAqYikKKyt7CisrICBjb25zdCBiZmQgKmFiZmQgPSBhOworKyAgY29uc3Qgc3RydWN0 IGdkYl9iZmRfY2FjaGVfc2VhcmNoICpzID0gYjsKKysgIHN0cnVjdCBnZGJfYmZkX2RhdGEgKmdk YXRhID0gYmZkX3VzcmRhdGEgKGFiZmQpOworKworKyAgcmV0dXJuIChnZGF0YS0+bXRpbWUgPT0g cy0+bXRpbWUKKysJICAmJiBzdHJjbXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCBzLT5maWxl bmFtZSkgPT0gMCk7CisrfQorKworK3N0cnVjdCBiZmQgKgorK2dkYl9iZmRfb3BlbiAoY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqdGFyZ2V0LCBpbnQgZmQpCisreworKyAgaGFzaHZhbF90 IGhhc2g7CisrICB2b2lkICoqc2xvdDsKKysgIGJmZCAqYWJmZDsKKysgIHN0cnVjdCBnZGJfYmZk X2NhY2hlX3NlYXJjaCBzZWFyY2g7CisrICBzdHJ1Y3Qgc3RhdCBzdDsKKysKKysgIGlmIChnZGJf YmZkX2NhY2hlID09IE5VTEwpCisrICAgIGdkYl9iZmRfY2FjaGUgPSBodGFiX2NyZWF0ZV9hbGxv YyAoMSwgaGFzaF9iZmQsIGVxX2JmZCwgTlVMTCwKKysJCQkJICAgICAgIHhjYWxsb2MsIHhmcmVl KTsKKysKKysgIGlmIChmZCA9PSAtMSkKKysgICAgeworKyAgICAgIGZkID0gb3BlbiAobmFtZSwg T19SRE9OTFkgfCBPX0JJTkFSWSk7CisrICAgICAgaWYgKGZkID09IC0xKQorKwl7CisrCSAgYmZk X3NldF9lcnJvciAoYmZkX2Vycm9yX3N5c3RlbV9jYWxsKTsKKysJICByZXR1cm4gTlVMTDsKKysJ fQorKyAgICB9CisrCisrICBzZWFyY2guZmlsZW5hbWUgPSBuYW1lOworKyAgaWYgKGZzdGF0IChm ZCwgJnN0KSA8IDApCisrICAgIHsKKysgICAgICAvKiBXZWlyZCBzaXR1YXRpb24gaGVyZS4gICov CisrICAgICAgc2VhcmNoLm10aW1lID0gMDsKKysgICAgfQorKyAgZWxzZQorKyAgICBzZWFyY2gu bXRpbWUgPSBzdC5zdF9tdGltZTsKKysKKysgIC8qIE5vdGUgdGhhdCB0aGlzIG11c3QgY29tcHV0 ZSB0aGUgc2FtZSByZXN1bHQgYXMgaGFzaF9iZmQuICAqLworKyAgaGFzaCA9IGh0YWJfaGFzaF9z dHJpbmcgKG5hbWUpOworKyAgLyogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgaHRhYl9maW5kX3Ns b3Rfd2l0aF9oYXNoIGhlcmUsIGJlY2F1c2UKKysgICAgIG9wZW5pbmcgdGhlIEJGRCBtYXkgZmFp bDsgYW5kIHRoaXMgd291bGQgdmlvbGF0ZSBoYXNodGFiCisrICAgICBpbnZhcmlhbnRzLiAgKi8K KysgIGFiZmQgPSBodGFiX2ZpbmRfd2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBo YXNoKTsKKysgIGlmIChhYmZkICE9IE5VTEwpCisrICAgIHsKKysgICAgICBjbG9zZSAoZmQpOwor KyAgICAgIHJldHVybiBnZGJfYmZkX3JlZiAoYWJmZCk7CisrICAgIH0KKysKKysgIGFiZmQgPSBi ZmRfZm9wZW4gKG5hbWUsIHRhcmdldCwgRk9QRU5fUkIsIGZkKTsKKysgIGlmIChhYmZkID09IE5V TEwpCisrICAgIHJldHVybiBOVUxMOworKworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90X3dpdGhf aGFzaCAoZ2RiX2JmZF9jYWNoZSwgJnNlYXJjaCwgaGFzaCwgSU5TRVJUKTsKKysgIGdkYl9hc3Nl cnQgKCEqc2xvdCk7CisrICAqc2xvdCA9IGFiZmQ7CisrCisrICBnZGJfYmZkX3N0YXNoX2ZpbGVu YW1lIChhYmZkKTsKKysgIHJldHVybiBnZGJfYmZkX3JlZiAoYWJmZCk7CisrfQorKworKy8qIEEg aGVscGVyIGZ1bmN0aW9uIHRoYXQgcmVsZWFzZXMgYW55IHNlY3Rpb24gZGF0YSBhdHRhY2hlZCB0 byB0aGUKKysgICBCRkQuICAqLworKworK3N0YXRpYyB2b2lkCisrZnJlZV9vbmVfYmZkX3NlY3Rp b24gKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmUpCisreworKyAgc3Ry dWN0IGdkYl9iZmRfc2VjdGlvbl9kYXRhICpzZWN0ID0gYmZkX2dldF9zZWN0aW9uX3VzZXJkYXRh IChhYmZkLCBzZWN0cCk7CisrCisrICBpZiAoc2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0g TlVMTCkKKysgICAgeworKyNpZmRlZiBIQVZFX01NQVAKKysgICAgICBpZiAoc2VjdC0+bWFwX2Fk ZHIgIT0gTlVMTCkKKysJeworKwkgIGludCByZXM7CisrCisrCSAgcmVzID0gbXVubWFwIChzZWN0 LT5tYXBfYWRkciwgc2VjdC0+bWFwX2xlbik7CisrCSAgZ2RiX2Fzc2VydCAocmVzID09IDApOwor Kwl9CisrICAgICAgZWxzZQorKyNlbmRpZgorKwl4ZnJlZSAoc2VjdC0+ZGF0YSk7CisrICAgIH0K Kyt9CisrCisrLyogQ2xvc2UgQUJGRCwgYW5kIHdhcm4gaWYgdGhhdCBmYWlscy4gICovCisrCisr c3RhdGljIGludAorK2dkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoc3RydWN0IGJmZCAqYWJmZCkKKyt7 CisrICBpbnQgcmV0OworKyAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOwor KworKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChhYmZkLCBmcmVlX29uZV9iZmRfc2VjdGlvbiwg TlVMTCk7CisrCisrICByZXQgPSBiZmRfY2xvc2UgKGFiZmQpOworKworKyAgaWYgKCFyZXQpCisr ICAgIHdhcm5pbmcgKF8oImNhbm5vdCBjbG9zZSBcIiVzXCI6ICVzIiksCisrCSAgICAgbmFtZSwg YmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKworKyAgcmV0dXJuIHJldDsKKyt9Cisr CisrLyogQWRkIHJlZmVyZW5jZSB0byBBQkZELiAgUmV0dXJucyBBQkZELiAgKi8KKysKKytzdHJ1 Y3QgYmZkICoKKytnZGJfYmZkX3JlZiAoc3RydWN0IGJmZCAqYWJmZCkKKyt7CisrICBzdHJ1Y3Qg Z2RiX2JmZF9kYXRhICpnZGF0YTsKKysKKysgIGlmIChhYmZkID09IE5VTEwpCisrICAgIHJldHVy biBOVUxMOworKworKyAgZ2RhdGEgPSBiZmRfdXNyZGF0YSAoYWJmZCk7CisrCisrICBpZiAoZ2Rh dGEgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdkYXRhLT5yZWZjICs9IDE7CisrICAgICAgcmV0 dXJuIGFiZmQ7CisrICAgIH0KKysKKysgIGdkYXRhID0gYmZkX3phbGxvYyAoYWJmZCwgc2l6ZW9m IChzdHJ1Y3QgZ2RiX2JmZF9kYXRhKSk7CisrICBnZGF0YS0+cmVmYyA9IDE7CisrICBnZGF0YS0+ bXRpbWUgPSBiZmRfZ2V0X210aW1lIChhYmZkKTsKKysgIGJmZF91c3JkYXRhIChhYmZkKSA9IGdk YXRhOworKworKyAgcmV0dXJuIGFiZmQ7CisrfQorKworKy8qIFVucmVmZXJlbmNlIGFuZCBwb3Nz aWJseSBjbG9zZSBBQkZELiAgKi8KKysKKyt2b2lkCisrZ2RiX2JmZF91bnJlZiAoc3RydWN0IGJm ZCAqYWJmZCkKKyt7CisrICBzdHJ1Y3QgZ2RiX2JmZF9kYXRhICpnZGF0YTsKKysgIHN0cnVjdCBn ZGJfYmZkX2NhY2hlX3NlYXJjaCBzZWFyY2g7CisrCisrICBpZiAoYWJmZCA9PSBOVUxMKQorKyAg ICByZXR1cm47CisrCisrICBnZGF0YSA9IGJmZF91c3JkYXRhIChhYmZkKTsKKysgIGdkYl9hc3Nl cnQgKGdkYXRhLT5yZWZjID49IDEpOworKworKyAgZ2RhdGEtPnJlZmMgLT0gMTsKKysgIGlmIChn ZGF0YS0+cmVmYyA+IDApCisrICAgIHJldHVybjsKKysKKysgIHNlYXJjaC5maWxlbmFtZSA9IGJm ZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworKworKyAgaWYgKGdkYl9iZmRfY2FjaGUgJiYgc2VhcmNo LmZpbGVuYW1lKQorKyAgICB7CisrICAgICAgaGFzaHZhbF90IGhhc2ggPSBodGFiX2hhc2hfc3Ry aW5nIChzZWFyY2guZmlsZW5hbWUpOworKyAgICAgIHZvaWQgKipzbG90OworKworKyAgICAgIHNl YXJjaC5tdGltZSA9IGdkYXRhLT5tdGltZTsKKysgICAgICBzbG90ID0gaHRhYl9maW5kX3Nsb3Rf d2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBoYXNoLAorKwkJCQkgICAgICAgTk9f SU5TRVJUKTsKKysKKysgICAgICBpZiAoc2xvdCAmJiAqc2xvdCkKKysJaHRhYl9jbGVhcl9zbG90 IChnZGJfYmZkX2NhY2hlLCBzbG90KTsKKysgICAgfQorKworKyAgYmZkX3VzcmRhdGEgKGFiZmQp ID0gTlVMTDsgIC8qIFBhcmFub2lhLiAgKi8KKysKKysgIGdkYl9iZmRfY2xvc2Vfb3Jfd2FybiAo YWJmZCk7CisrfQorKworKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgc2Vj dGlvbiBkYXRhIGRlc2NyaXB0b3IKKysgICBhc3NvY2lhdGVkIHdpdGggU0VDVElPTi4gIElmIG5v IHN1Y2ggZGVzY3JpcHRvciBleGlzdHMsIGEgbmV3IG9uZQorKyAgIGlzIGFsbG9jYXRlZCBhbmQg Y2xlYXJlZC4gICovCisrCisrc3RhdGljIHN0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0YSAqCisr Z2V0X3NlY3Rpb25fZGVzY3JpcHRvciAoYXNlY3Rpb24gKnNlY3Rpb24pCisreworKyAgc3RydWN0 IGdkYl9iZmRfc2VjdGlvbl9kYXRhICpyZXN1bHQ7CisrCisrICByZXN1bHQgPSBiZmRfZ2V0X3Nl Y3Rpb25fdXNlcmRhdGEgKHNlY3Rpb24tPm93bmVyLCBzZWN0aW9uKTsKKysKKysgIGlmIChyZXN1 bHQgPT0gTlVMTCkKKysgICAgeworKyAgICAgIHJlc3VsdCA9IGJmZF96YWxsb2MgKHNlY3Rpb24t Pm93bmVyLCBzaXplb2YgKCpyZXN1bHQpKTsKKysgICAgICBiZmRfc2V0X3NlY3Rpb25fdXNlcmRh dGEgKHNlY3Rpb24tPm93bmVyLCBzZWN0aW9uLCByZXN1bHQpOworKyAgICB9CisrCisrICByZXR1 cm4gcmVzdWx0OworK30KKysKKysvKiBEZWNvbXByZXNzIGEgc2VjdGlvbiB0aGF0IHdhcyBjb21w cmVzc2VkIHVzaW5nIHpsaWIuICBTdG9yZSB0aGUKKysgICBkZWNvbXByZXNzZWQgYnVmZmVyLCBh bmQgaXRzIHNpemUsIGluIERFU0NSSVBUT1IuICAqLworKworK3N0YXRpYyB2b2lkCisremxpYl9k ZWNvbXByZXNzX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0cCwKKysJCQkgc3RydWN0IGdkYl9iZmRf c2VjdGlvbl9kYXRhICpkZXNjcmlwdG9yKQorK3sKKysgIGJmZCAqYWJmZCA9IHNlY3RwLT5vd25l cjsKKysjaWZuZGVmIEhBVkVfWkxJQl9ICisrICBlcnJvciAoXygiU3VwcG9ydCBmb3IgemxpYi1j b21wcmVzc2VkIGRhdGEgKGZyb20gJyVzJywgc2VjdGlvbiAnJXMnKSAiCisrICAgICAgICAgICAi aXMgZGlzYWJsZWQgaW4gdGhpcyBjb3B5IG9mIEdEQiIpLAorKyAgICAgICAgIGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpLAorKwkgYmZkX2dldF9zZWN0aW9uX25hbWUgKHNlY3RwKSk7CisrI2Vsc2UK KysgIGJmZF9zaXplX3R5cGUgY29tcHJlc3NlZF9zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUg KHNlY3RwKTsKKysgIGdkYl9ieXRlICpjb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxsb2MgKGNvbXBy ZXNzZWRfc2l6ZSk7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIGNvbXByZXNzZWRfYnVmZmVyKTsKKysgIHN0cnVjdCBjbGVhbnVwICppbm5lcl9jbGVh bnVwOworKyAgYmZkX3NpemVfdHlwZSB1bmNvbXByZXNzZWRfc2l6ZTsKKysgIGdkYl9ieXRlICp1 bmNvbXByZXNzZWRfYnVmZmVyOworKyAgel9zdHJlYW0gc3RybTsKKysgIGludCByYzsKKysgIGlu dCBoZWFkZXJfc2l6ZSA9IDEyOworKyAgc3RydWN0IGR3YXJmMl9wZXJfYmZkX3NlY3Rpb24gKnNl Y3Rpb25fZGF0YTsKKysKKysgIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNF RUtfU0VUKSAhPSAwCisrICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2VkX2J1ZmZlciwKKysJ CSAgICBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNvbXByZXNzZWRfc2l6ZSkKKysgICAgZXJy b3IgKF8oImNhbid0IHJlYWQgZGF0YSBmcm9tICclcycsIHNlY3Rpb24gJyVzJyIpLAorKyAgICAg ICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksCisrCSAgIGJmZF9nZXRfc2VjdGlvbl9uYW1l IChhYmZkLCBzZWN0cCkpOworKworKyAgLyogUmVhZCB0aGUgemxpYiBoZWFkZXIuICBJbiB0aGlz IGNhc2UsIGl0IHNob3VsZCBiZSAiWkxJQiIgZm9sbG93ZWQKKysgICAgIGJ5IHRoZSB1bmNvbXBy ZXNzZWQgc2VjdGlvbiBzaXplLCA4IGJ5dGVzIGluIGJpZy1lbmRpYW4gb3JkZXIuICAqLworKyAg aWYgKGNvbXByZXNzZWRfc2l6ZSA8IGhlYWRlcl9zaXplCisrICAgICAgfHwgc3RybmNtcCAoY29t cHJlc3NlZF9idWZmZXIsICJaTElCIiwgNCkgIT0gMCkKKysgICAgZXJyb3IgKF8oImNvcnJ1cHQg WkxJQiBoZWFkZXIgZnJvbSAnJXMnLCBzZWN0aW9uICclcyciKSwKKysgICAgICAgICAgIGJmZF9n ZXRfZmlsZW5hbWUgKGFiZmQpLAorKwkgICBiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJmZCwgc2Vj dHApKTsKKysgIHVuY29tcHJlc3NlZF9zaXplID0gY29tcHJlc3NlZF9idWZmZXJbNF07IHVuY29t cHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9i dWZmZXJbNV07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUg Kz0gY29tcHJlc3NlZF9idWZmZXJbNl07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5j b21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbN107IHVuY29tcHJlc3NlZF9zaXpl IDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3NlZF9idWZmZXJbOF07IHVu Y29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3NpemUgKz0gY29tcHJlc3Nl ZF9idWZmZXJbOV07IHVuY29tcHJlc3NlZF9zaXplIDw8PSA4OworKyAgdW5jb21wcmVzc2VkX3Np emUgKz0gY29tcHJlc3NlZF9idWZmZXJbMTBdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKKysg IHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzExXTsKKysKKysgIC8qIEl0 IGlzIHBvc3NpYmxlIHRoZSBzZWN0aW9uIGNvbnNpc3RzIG9mIHNldmVyYWwgY29tcHJlc3NlZAor KyAgICAgYnVmZmVycyBjb25jYXRlbmF0ZWQgdG9nZXRoZXIsIHNvIHdlIHVuY29tcHJlc3MgaW4g YSBsb29wLiAgKi8KKysgIHN0cm0uemFsbG9jID0gTlVMTDsKKysgIHN0cm0uemZyZWUgPSBOVUxM OworKyAgc3RybS5vcGFxdWUgPSBOVUxMOworKyAgc3RybS5hdmFpbF9pbiA9IGNvbXByZXNzZWRf c2l6ZSAtIGhlYWRlcl9zaXplOworKyAgc3RybS5uZXh0X2luID0gKEJ5dGVmKikgY29tcHJlc3Nl ZF9idWZmZXIgKyBoZWFkZXJfc2l6ZTsKKysgIHN0cm0uYXZhaWxfb3V0ID0gdW5jb21wcmVzc2Vk X3NpemU7CisrICB1bmNvbXByZXNzZWRfYnVmZmVyID0geG1hbGxvYyAodW5jb21wcmVzc2VkX3Np emUpOworKyAgaW5uZXJfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHVuY29tcHJlc3Nl ZF9idWZmZXIpOworKyAgcmMgPSBpbmZsYXRlSW5pdCAoJnN0cm0pOworKyAgd2hpbGUgKHN0cm0u YXZhaWxfaW4gPiAwKQorKyAgICB7CisrICAgICAgaWYgKHJjICE9IFpfT0spCisrICAgICAgICBl cnJvciAoXygic2V0dGluZyB1cCB1bmNvbXByZXNzaW9uIGluICclcycsIHNlY3Rpb24gJyVzJzog JWQiKSwKKysgICAgICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKKysJICAgICAg IGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBzZWN0cCksCisrCSAgICAgICByYyk7CisrICAg ICAgc3RybS5uZXh0X291dCA9ICgoQnl0ZWYqKSB1bmNvbXByZXNzZWRfYnVmZmVyCisrICAgICAg ICAgICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0uYXZhaWxfb3V0KSk7 CisrICAgICAgcmMgPSBpbmZsYXRlICgmc3RybSwgWl9GSU5JU0gpOworKyAgICAgIGlmIChyYyAh PSBaX1NUUkVBTV9FTkQpCisrICAgICAgICBlcnJvciAoXygiemxpYiBlcnJvciB1bmNvbXByZXNz aW5nIGZyb20gJyVzJywgc2VjdGlvbiAnJXMnOiAlZCIpLAorKyAgICAgICAgICAgICAgIGJmZF9n ZXRfZmlsZW5hbWUgKGFiZmQpLAorKwkgICAgICAgYmZkX2dldF9zZWN0aW9uX25hbWUgKGFiZmQs IHNlY3RwKSwKKysJICAgICAgIHJjKTsKKysgICAgICByYyA9IGluZmxhdGVSZXNldCAoJnN0cm0p OworKyAgICB9CisrICByYyA9IGluZmxhdGVFbmQgKCZzdHJtKTsKKysgIGlmIChyYyAhPSBaX09L CisrICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkKKysgICAgZXJyb3IgKF8oImNvbmNsdWRp bmcgdW5jb21wcmVzc2lvbiBpbiAnJXMnLCBzZWN0aW9uICclcyc6ICVkIiksCisrICAgICAgICAg ICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKKysJICAgYmZkX2dldF9zZWN0aW9uX25hbWUgKGFi ZmQsIHNlY3RwKSwKKysJICAgcmMpOworKworKyAgZGlzY2FyZF9jbGVhbnVwcyAoaW5uZXJfY2xl YW51cCk7CisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrCisrICAvKiBBdHRhY2ggdGhlIGRh dGEgdG8gdGhlIEJGRCBzZWN0aW9uLiAgKi8KKysgIGRlc2NyaXB0b3ItPmRhdGEgPSB1bmNvbXBy ZXNzZWRfYnVmZmVyOworKyAgZGVzY3JpcHRvci0+c2l6ZSA9IHVuY29tcHJlc3NlZF9zaXplOwor KyNlbmRpZgorK30KKysKKysvKiBTZWUgZ2RiX2JmZC5oLiAgKi8KKysKKytjb25zdCBnZGJfYnl0 ZSAqCisrZ2RiX2JmZF9tYXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3RwLCBiZmRfc2l6ZV90eXBl ICpzaXplKQorK3sKKysgIGJmZCAqYWJmZDsKKysgIGdkYl9ieXRlICpidWYsICpyZXRidWY7Cisr ICB1bnNpZ25lZCBjaGFyIGhlYWRlcls0XTsKKysgIHN0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0 YSAqZGVzY3JpcHRvcjsKKysKKysgIGdkYl9hc3NlcnQgKChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVM T0MpID09IDApOworKyAgZ2RiX2Fzc2VydCAoc2l6ZSAhPSBOVUxMKTsKKysKKysgIGFiZmQgPSBz ZWN0cC0+b3duZXI7CisrCisrICBkZXNjcmlwdG9yID0gZ2V0X3NlY3Rpb25fZGVzY3JpcHRvciAo c2VjdHApOworKworKyAgLyogSWYgdGhlIGRhdGEgd2FzIGFscmVhZHkgcmVhZCBmb3IgdGhpcyBC RkQsIGp1c3QgcmV1c2UgaXQuICAqLworKyAgaWYgKGRlc2NyaXB0b3ItPmRhdGEgIT0gTlVMTCkK KysgICAgZ290byBkb25lOworKworKyAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGEgNC1ieXRl IGhlYWRlciBpbmRpY2F0aW5nIGNvbXByZXNzaW9uLiAgKi8KKysgIGlmIChiZmRfZ2V0X3NlY3Rp b25fc2l6ZSAoc2VjdHApID4gc2l6ZW9mIChoZWFkZXIpCisrICAgICAgJiYgYmZkX3NlZWsgKGFi ZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgPT0gMAorKyAgICAgICYmIGJmZF9icmVhZCAo aGVhZGVyLCBzaXplb2YgKGhlYWRlciksIGFiZmQpID09IHNpemVvZiAoaGVhZGVyKSkKKysgICAg eworKyAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBkYXRlIHRoZSBidWZmZXIgYW5kIGl0 cyBzaXplLiAgKi8KKysgICAgICBpZiAoc3RybmNtcCAoaGVhZGVyLCAiWkxJQiIsIHNpemVvZiAo aGVhZGVyKSkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgemxpYl9kZWNvbXByZXNzX3Nl Y3Rpb24gKHNlY3RwLCBkZXNjcmlwdG9yKTsKKysJICBnb3RvIGRvbmU7CisrICAgICAgICB9Cisr ICAgIH0KICsKLSsgIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVn bnVtLCB0eXBlKSkKLSAgICAgewotICAgICAgIGludCBvcHRpbSwgdW5hdmFpbCwgb2s7Ci0gCi1A QCAtNzA5LDcgKzcwMiw3IEBAIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBl LCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgICAgVkFMVUVfTFZB TCAodikgPSBsdmFsX3JlZ2lzdGVyOwotICAgICAgIFZBTFVFX0ZSQU1FX0lEICh2KSA9IGdldF9m cmFtZV9pZCAoZnJhbWUpOwotICAgICAgIFZBTFVFX1JFR05VTSAodikgPSByZWdudW07Ci0tICAg ICAgb2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBmcmFtZSwgcmVnbnVt LCB0eXBlMSwKLSsgICAgICBvayA9IGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdkYmFyY2gs IGZyYW1lLCByZWdudW0sIHR5cGUsCi0gCQkJCSAgICAgIHZhbHVlX2NvbnRlbnRzX3JhdyAodiks ICZvcHRpbSwKLSAJCQkJICAgICAgJnVuYXZhaWwpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9nZGIt Z2RiLmdkYi5pbiBiL2dkYi9nZGItZ2RiLmdkYi5pbgotaW5kZXggZmZiN2Y1My4uYTJlN2U5NCAx MDA2NDQKLS0tLSBhL2dkYi9nZGItZ2RiLmdkYi5pbgotKysrIGIvZ2RiL2dkYi1nZGIuZ2RiLmlu Ci1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3Ig ZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBhbmQgInJl cXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCi0r Z2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCi0rZ2RiLnB5dGhv bmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGlyICsgJy9n ZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKLStlbmQKLStzb3VyY2UgQHNy Y2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKKysjaWZkZWYgSEFWRV9NTUFQCisrICB7 CisrICAgIC8qIFRoZSBwYWdlIHNpemUsIHVzZWQgd2hlbiBtbWFwcGluZy4gICovCisrICAgIHN0 YXRpYyBpbnQgcGFnZXNpemU7CiArCi0gc2V0IGNvbXBsYWludHMgMQotIAotIGIgaW50ZXJuYWxf ZXJyb3IKKysgICAgaWYgKHBhZ2VzaXplID09IDApCisrICAgICAgcGFnZXNpemUgPSBnZXRwYWdl c2l6ZSAoKTsKKysKKysgICAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0aW9ucyB3aGljaCBhcmUg bGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50CisrICAgICAgIHRvIHdhc3RlIHNwYWNlIGR1ZSB0 byBmcmFnbWVudGF0aW9uLiAgKi8KKysKKysgICAgaWYgKGJmZF9nZXRfc2VjdGlvbl9zaXplIChz ZWN0cCkgPiA0ICogcGFnZXNpemUpCisrICAgICAgeworKwlkZXNjcmlwdG9yLT5zaXplID0gYmZk X2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysJZGVzY3JpcHRvci0+ZGF0YSA9IGJmZF9tbWFw IChhYmZkLCAwLCBkZXNjcmlwdG9yLT5zaXplLCBQUk9UX1JFQUQsCisrCQkJCSAgICAgTUFQX1BS SVZBVEUsIHNlY3RwLT5maWxlcG9zLAorKwkJCQkgICAgICZkZXNjcmlwdG9yLT5tYXBfYWRkciwK KysJCQkJICAgICAmZGVzY3JpcHRvci0+bWFwX2xlbik7CisrCisrCWlmICgoY2FkZHJfdClkZXNj cmlwdG9yLT5kYXRhICE9IE1BUF9GQUlMRUQpCisrCSAgeworKyNpZiBIQVZFX1BPU0lYX01BRFZJ U0UKKysJICAgIHBvc2l4X21hZHZpc2UgKGRlc2NyaXB0b3ItPm1hcF9hZGRyLCBkZXNjcmlwdG9y LT5tYXBfbGVuLAorKwkJCSAgIFBPU0lYX01BRFZfV0lMTE5FRUQpOworKyNlbmRpZgorKwkgICAg Z290byBkb25lOworKwkgIH0KKysKKysJLyogT24gZmFpbHVyZSwgY2xlYXIgb3V0IHRoZSBzZWN0 aW9uIGRhdGEgYW5kIHRyeSBhZ2Fpbi4gICovCisrCW1lbXNldCAoZGVzY3JpcHRvciwgMCwgc2l6 ZW9mICgqZGVzY3JpcHRvcikpOworKyAgICAgIH0KKysgIH0KKysjZW5kaWYgLyogSEFWRV9NTUFQ ICovCisrCisrICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3QtY29tcHJl c3NlZCBzZWN0aW9uLiAgKi8KKysKKysgIGRlc2NyaXB0b3ItPnNpemUgPSBiZmRfZ2V0X3NlY3Rp b25fc2l6ZSAoc2VjdHApOworKyAgZGVzY3JpcHRvci0+ZGF0YSA9IHhtYWxsb2MgKGRlc2NyaXB0 b3ItPnNpemUpOworKworKyAgaWYgKGJmZF9zZWVrIChhYmZkLCBzZWN0cC0+ZmlsZXBvcywgU0VF S19TRVQpICE9IDAKKysgICAgICB8fCBiZmRfYnJlYWQgKGRlc2NyaXB0b3ItPmRhdGEsIGJmZF9n ZXRfc2VjdGlvbl9zaXplIChzZWN0cCksCisrCQkgICAgYWJmZCkgIT0gYmZkX2dldF9zZWN0aW9u X3NpemUgKHNlY3RwKSkKKysgICAgeworKyAgICAgIHhmcmVlIChkZXNjcmlwdG9yLT5kYXRhKTsK KysgICAgICBkZXNjcmlwdG9yLT5kYXRhID0gTlVMTDsKKysgICAgICBlcnJvciAoXygiQ2FuJ3Qg cmVhZCBkYXRhIGZvciBzZWN0aW9uICclcyciKSwKKysJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChh YmZkKSk7CisrICAgIH0KKysKKysgZG9uZToKKysgIGdkYl9hc3NlcnQgKGRlc2NyaXB0b3ItPmRh dGEgIT0gTlVMTCk7CisrICAqc2l6ZSA9IGRlc2NyaXB0b3ItPnNpemU7CisrICByZXR1cm4gZGVz Y3JpcHRvci0+ZGF0YTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYl9iZmQuaCBiL2dkYi9nZGJf YmZkLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZGQ4MmMzCistLS0g L2Rldi9udWxsCisrKysgYi9nZGIvZ2RiX2JmZC5oCitAQCAtMCwwICsxLDYxIEBACisrLyogRGVm aW5pdGlvbnMgZm9yIEJGRCB3cmFwcGVycyB1c2VkIGJ5IEdEQi4KKysKKysgICBDb3B5cmlnaHQg KEMpIDIwMTEsIDIwMTIKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworKworKyNpZm5kZWYgR0RCX0JGRF9ICisrI2RlZmluZSBHREJfQkZE X0gKKysKKysvKiBNYWtlIGEgY29weSBBQkZEJ3MgZmlsZW5hbWUgdXNpbmcgYmZkX2FsbG9jLCBh bmQgcmVhc3NpZ24gaXQgdG8gdGhlCisrICAgQkZELiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIEJG RCdzIGZpbGVuYW1lIGhhcyB0aGUgc2FtZSBsaWZldGltZSBhcworKyAgIHRoZSBCRkQgaXRzZWxm LiAgKi8KKysKKyt2b2lkIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN0cnVjdCBiZmQgKmFiZmQp OworKworKy8qIE9wZW4gYSByZWFkLW9ubHkgKEZPUEVOX1JCKSBCRkQgZ2l2ZW4gYXJndW1lbnRz IGxpa2UgYmZkX2ZvcGVuLgorKyAgIFJldHVybnMgTlVMTCBvbiBlcnJvci4gIE9uIHN1Y2Nlc3Ms IHJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZQorKyAgIEJGRCwgd2hpY2ggbXVzdCBiZSBm cmVlZCB3aXRoIGdkYl9iZmRfdW5yZWYuICBCRkRzIHJldHVybmVkIGJ5IHRoaXMKKysgICBjYWxs IGFyZSBzaGFyZWQgYW1vbmcgYWxsIGNhbGxlcnMgb3BlbmluZyB0aGUgc2FtZSBmaWxlLiAgSWYg RkQgaXMKKysgICBub3QgLTEsIHRoZW4gYWZ0ZXIgdGhpcyBjYWxsIGl0IGlzIG93bmVkIGJ5IEJG RC4gICovCisrCisrc3RydWN0IGJmZCAqZ2RiX2JmZF9vcGVuIChjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICp0YXJnZXQsIGludCBmZCk7CisrCisrLyogQWNxdWlyZSBhIG5ldyByZWZlcmVu Y2UgdG8gQUJGRC4gIFJldHVybnMgQUJGRCBmb3IgY29udmVuaWVuY2UuCisrICAgSXQgaXMgZmlu ZSBmb3IgQUJGRCB0byBiZSBOVUxMOyBpbiB0aGlzIGNhc2UgdGhlIGZ1bmN0aW9uIGRvZXMKKysg ICBub3RoaW5nIGFuZCByZXR1cm5zIE5VTEwuICAqLworKworK3N0cnVjdCBiZmQgKmdkYl9iZmRf cmVmIChzdHJ1Y3QgYmZkICphYmZkKTsKKysKKysvKiBSZWxlYXNlIGEgcmVmZXJlbmNlIHRvIEFC RkQuICBJZiB0aGlzIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSwgQUJGRAorKyAgIHdpbGwgYmUgZnJl ZWQuICBJZiBBQkZEIGlzIE5VTEwsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiAgKi8KKysK Kyt2b2lkIGdkYl9iZmRfdW5yZWYgKHN0cnVjdCBiZmQgKmFiZmQpOworKworKy8qIFRyeSB0byBy ZWFkIG9yIG1hcCB0aGUgY29udGVudHMgb2YgdGhlIHNlY3Rpb24gU0VDVC4gIElmCisrICAgc3Vj Y2Vzc2Z1bCwgdGhlIHNlY3Rpb24gZGF0YSBpcyByZXR1cm5lZCBhbmQgKlNJWkUgaXMgc2V0IHRv IHRoZQorKyAgIHNpemUgb2YgdGhlIHNlY3Rpb24gZGF0YTsgdGhpcyBtYXkgbm90IGJlIHRoZSBz YW1lIGFzIHRoZSBzaXplCisrICAgYWNjb3JkaW5nIHRvIGJmZF9nZXRfc2VjdGlvbl9zaXplIGlm IHRoZSBzZWN0aW9uIHdhcyBjb21wcmVzc2VkLgorKyAgIFRoZSByZXR1cm5lZCBzZWN0aW9uIGRh dGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBCRkQgYW5kIHdpbGwgYmUKKysgICBkZXN0cm95ZWQg d2hlbiB0aGUgQkZEIGlzIGRlc3Ryb3llZC4gIFRoZXJlIGlzIG5vIG90aGVyIHdheSB0byBmcmVl CisrICAgaXQ7IGZvciB0ZW1wb3JhcnkgdXNlcyBvZiBzZWN0aW9uIGRhdGEsIHNlZQorKyAgIGJm ZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uLiAgU0VDVCBtYXkgbm90IGhhdmUgcmVsb2NhdGlvbnMu ICBUaGlzCisrICAgZnVuY3Rpb24gd2lsbCB0aHJvdyBvbiBlcnJvci4gICovCisrCisrY29uc3Qg Z2RiX2J5dGUgKmdkYl9iZmRfbWFwX3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0aW9uLCBiZmRfc2l6 ZV90eXBlICpzaXplKTsKKysKKysjZW5kaWYgLyogR0RCX0JGRF9IICovCiBkaWZmIC0tZ2l0IGEv Z2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggZTNkYjFlZC4uOWEzNDZlNiAx MDA2NDQKK2luZGV4IDBlZWM4NzQuLjcyMTc2MzkgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMu YwogKysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zNyw2ICszNyw5IEBACkBAIC0zMzI4LDEwICs2 MTkzLDEwIEBAIGluZGV4IGUzZGIxZWQuLjlhMzQ2ZTYgMTAwNjQ0CiAgCiAgICBhZGRfc2V0c2hv d196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsCiBk aWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggODg3ZGZk Yi4uNmU5NzJkMSAxMDA2NDQKK2luZGV4IGNmN2QzOTguLmEwZjViMTcgMTAwNjQ0CiAtLS0gYS9n ZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0yMTMsNiArMjEzLDExIEBA IGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCitAQCAtMjE0LDYgKzIxNCwxMSBAQCBlbnVt IHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAogICNkZWZpbmUgVFlQRV9UQVJHRVRfU1RVQih0 KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9zdHViKQogIApAQCAtMzM0Myw3ICs2 MjA4LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAvKiBTdGF0aWMgdHlwZS4g IElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhZCAKICAgICBhIHN0YXRp YyBtb2RpZmllci4KICAgICBOb3RlOiBUaGlzIG1heSBiZSB1bm5lY2Vzc2FyeSwgc2luY2Ugc3Rh dGljIGRhdGEgbWVtYmVycwotQEAgLTI5Niw2ICszMDEsNTAgQEAgZW51bSB0eXBlX2luc3RhbmNl X2ZsYWdfdmFsdWUKK0BAIC0yOTcsNiArMzAyLDUwIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX0ZMQUdfRU5VTSh0KSAoVFlQRV9NQUlOX1RZUEUgKHQp LT5mbGFnX2ZsYWdfZW51bSkKICAKQEAgLTMzOTQsNyArNjI1OSw3IEBAIGluZGV4IDg4N2RmZGIu LjZlOTcyZDEgMTAwNjQ0CiAgLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUg Y29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCiAgICAgY29uc3QgbW9kaWZpZXIuICAqLwogIAotQEAg LTQwNiw2ICs0NTUsMTUgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTQwNyw2ICs0NTYsMTUgQEAg c3RydWN0IG1haW5fdHlwZQogICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUgd2FzIGRlY2xhcmVkIHdp dGggImNsYXNzIiByYXRoZXIgdGhhbgogICAgICAgInN0cnVjdCIuICAqLwogICAgdW5zaWduZWQg aW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwpAQCAtMzQxMCw3ICs2Mjc1LDcgQEAgaW5kZXgg ODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAKICAgIC8qIFRydWUgaWYgdGhpcyBpcyBhbiBlbnVt IHR5cGUgd2l0aCBkaXNqb2ludCB2YWx1ZXMuICBUaGlzIGFmZmVjdHMKICAgICAgIGhvdyB0aGUg ZW51bSBpcyBwcmludGVkLiAgKi8KLUBAIC00ODYsNiArNTQ0LDIwIEBAIHN0cnVjdCBtYWluX3R5 cGUKK0BAIC00ODcsNiArNTQ1LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKICAKICAgIHN0cnVjdCB0 eXBlICp0YXJnZXRfdHlwZTsKICAKQEAgLTM0MzEsNyArNjI5Niw3IEBAIGluZGV4IDg4N2RmZGIu LjZlOTcyZDEgMTAwNjQ0CiAgICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBk ZXNjcmlwdGlvbiBvZiBlYWNoIGZpZWxkLgogICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5 IHR5cGVzLCB0aGVyZSBpcyBvbmUgImZpZWxkIiwKICAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRv bWFpbiB0eXBlIG9mIHRoZSBzZXQgb3IgYXJyYXkuCi1AQCAtNTY4LDEzICs2NDAsMzQgQEAgc3Ry dWN0IG1haW5fdHlwZQorQEAgLTU2OSwxMyArNjQxLDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKICAK ICAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwogICAgICB7CkBAIC0zNDcxLDcgKzYzMzYsNyBAQCBp bmRleCA4ODdkZmRiLi42ZTk3MmQxIDEwMDY0NAogIAogICAgICAgIC8qIEZsYWdzIGluZGljYXRp bmcgd2hldGhlciB0aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGlnaCBhcmUKICAgICAgICAgICB2YWxp ZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2UgdmFsdWUgaXMKLUBAIC0xMDE2LDkg KzExMDksOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlw ZSAqKTsKK0BAIC0xMDQwLDkgKzExMzMsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1 eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0 eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKICAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZ UEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCiAgI2RlZmluZSBUWVBFX0NI QUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgpAQCAtMzQ4NCw3ICs2MzQ5LDcgQEAgaW5k ZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBF X0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkpIGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9MRU5H VEgodGhpc3R5cGUpICh0aGlzdHlwZSktPmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUg Y2FuIGJlIFRZUEVfQ09ERV9UWVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTEw MjYsMTEgKzExMTksMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3Ry dWN0IHR5cGUgKik7CitAQCAtMTA1MCwxMSArMTE0MywxNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0 ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQ09ERSh0aGlz dHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2RlCiAgI2RlZmluZSBUWVBFX05GSUVM RFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxkcwogICNkZWZpbmUg VFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRz LmZpZWxkcwpAQCAtMzUwMyw3ICs2MzY4LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2 NDQKICAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCiAgICAg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5kZWZpbmVkCiAgI2RlZmluZSBUWVBF X0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKLUBAIC0xMDQ3LDcgKzExNDUsMTQg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitA QCAtMTA3MSw3ICsxMTY5LDE0IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUg KHN0cnVjdCB0eXBlICopOwogICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChh cnJheXR5cGUpKSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFy cmF5dHlwZSkgXApAQCAtMzUxOSw3ICs2Mzg0LDcgQEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAx MDA2NDQKICAKICAvKiBDKysgKi8KICAKLUBAIC0xNDg5LDYgKzE1OTQsMTggQEAgZXh0ZXJuIHN0 cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUg KiwKK0BAIC0xNTEzLDYgKzE2MTgsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJy YXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVj dCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUg KHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTM1MzgsNyArNjQwMyw3IEBAIGluZGV4 IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfc3Ry aW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJCQlzdHJ1Y3QgdHlw ZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlwZSAoc3Ry dWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTE1MzQsNiArMTY1MSwxMCBAQCBleHRlcm4gaW50 IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKik7CitAQCAt MTU1OCw2ICsxNjc1LDEwIEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlzX3VuaXF1ZV9hbmNlc3Rv ciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIApAQCAtMzU0OSw3ICs2NDE0LDcg QEAgaW5kZXggODg3ZGZkYi4uNmU5NzJkMSAxMDA2NDQKICAvKiBPdmVybG9hZCByZXNvbHV0aW9u ICovCiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQotQEAgLTE2 MDksMTAgKzE3MzAsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hh ciAqLCBpbnQpOworQEAgLTE2MzMsMTAgKzE3NTQsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFu Y2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2Nv cGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC0zNTY1LDgg KzY0MzAsMjg3IEBAIGluZGV4IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiArI2VuZGlmCiArCiAg I2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvaml0LmMgYi9nZGIvaml0 LmMKK2luZGV4IDU2OGQxN2IuLjY0NzgzOTcgMTAwNjQ0CistLS0gYS9nZGIvaml0LmMKKysrKyBi L2dkYi9qaXQuYworQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAiZ2RiLWRsZmNuLmgiCisg I2luY2x1ZGUgImdkYl9zdGF0LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysjaW5jbHVk ZSAiZ2RiX2JmZC5oIgorIAorIHN0YXRpYyBjb25zdCBjaGFyICpqaXRfcmVhZGVyX2RpciA9IE5V TEw7CisgCitAQCAtMTMyLDEyICsxMzMsMTEgQEAgbWVtX2JmZF9pb3ZlY19zdGF0IChzdHJ1Y3Qg YmZkICphYmZkLCB2b2lkICpzdHJlYW0sIHN0cnVjdCBzdGF0ICpzYikKKyBzdGF0aWMgc3RydWN0 IGJmZCAqCisgYmZkX29wZW5fZnJvbV90YXJnZXRfbWVtb3J5IChDT1JFX0FERFIgYWRkciwgVUxP TkdFU1Qgc2l6ZSwgY2hhciAqdGFyZ2V0KQorIHsKKy0gIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0g eHN0cmR1cCAoIjxpbi1tZW1vcnk+Iik7CisgICBzdHJ1Y3QgdGFyZ2V0X2J1ZmZlciAqYnVmZmVy ID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgdGFyZ2V0X2J1ZmZlcikpOworIAorICAgYnVmZmVy LT5iYXNlID0gYWRkcjsKKyAgIGJ1ZmZlci0+c2l6ZSA9IHNpemU7CistICByZXR1cm4gYmZkX29w ZW5yX2lvdmVjIChmaWxlbmFtZSwgdGFyZ2V0LAorKyAgcmV0dXJuIGJmZF9vcGVucl9pb3ZlYyAo Ijxpbi1tZW1vcnk+IiwgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtX2Jm ZF9pb3ZlY19vcGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWVtX2JmZF9pb3ZlY19wcmVhZCwKK0BAIC04NjEsNiArODYx LDcgQEAgaml0X2JmZF90cnlfcmVhZF9zeW10YWIgKHN0cnVjdCBqaXRfY29kZV9lbnRyeSAqY29k ZV9lbnRyeSwKKyAgICAgICBwdXRzX3VuZmlsdGVyZWQgKF8oIkVycm9yIG9wZW5pbmcgSklUZWQg c3ltYm9sIGZpbGUsIGlnbm9yaW5nIGl0LlxuIikpOworICAgICAgIHJldHVybjsKKyAgICAgfQor KyAgbmJmZCA9IGdkYl9iZmRfcmVmIChuYmZkKTsKKyAKKyAgIC8qIENoZWNrIHRoZSBmb3JtYXQu ICBOT1RFOiBUaGlzIGluaXRpYWxpemVzIGltcG9ydGFudCBkYXRhIHRoYXQgR0RCIHVzZXMhCisg ICAgICBXZSB3b3VsZCBzZWdmYXVsdCBsYXRlciB3aXRob3V0IHRoaXMgbGluZS4gICovCitAQCAt ODY4LDcgKzg2OSw3IEBAIGppdF9iZmRfdHJ5X3JlYWRfc3ltdGFiIChzdHJ1Y3Qgaml0X2NvZGVf ZW50cnkgKmNvZGVfZW50cnksCisgICAgIHsKKyAgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygi XAorIEpJVGVkIHN5bWJvbCBmaWxlIGlzIG5vdCBhbiBvYmplY3QgZmlsZSwgaWdub3JpbmcgaXQu XG4iKSk7CistICAgICAgYmZkX2Nsb3NlIChuYmZkKTsKKysgICAgICBnZGJfYmZkX3VucmVmIChu YmZkKTsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIvbTMyci1y b20uYyBiL2dkYi9tMzJyLXJvbS5jCitpbmRleCA3NmU0YmYxLi5mZmRhNmY5IDEwMDY0NAorLS0t IGEvZ2RiL20zMnItcm9tLmMKKysrKyBiL2dkYi9tMzJyLXJvbS5jCitAQCAtNDAsNiArNDAsNyBA QAorICNpbmNsdWRlICJpbmZlcmlvci5oIgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRl ICJyZWdjYWNoZS5oIgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisgCisgLyoKKyAgKiBBbGwgdGhp cyBzdHVmZiBqdXN0IHRvIGdldCBteSBob3N0IGNvbXB1dGVyJ3MgSVAgYWRkcmVzcyEKK0BAIC0x MjQsMTMgKzEyNSwxNSBAQCBtMzJyX2xvYWQgKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkp CisgICBiZmQgKmFiZmQ7CisgICB1bnNpZ25lZCBpbnQgZGF0YV9jb3VudCA9IDA7CisgICBzdHJ1 Y3QgdGltZXZhbCBzdGFydF90aW1lLCBlbmRfdGltZTsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwOworIAorICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgZmlsZW5hbWVbMF0gPT0gMCkKKyAg ICAgZmlsZW5hbWUgPSBnZXRfZXhlY19maWxlICgxKTsKKyAKKy0gIGFiZmQgPSBiZmRfb3BlbnIg KGZpbGVuYW1lLCAwKTsKKysgIGFiZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChmaWxlbmFt ZSwgMCkpOworICAgaWYgKCFhYmZkKQorICAgICBlcnJvciAoXygiVW5hYmxlIHRvIG9wZW4gZmls ZSAlcy4iKSwgZmlsZW5hbWUpOworKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYg KGFiZmQpOworICAgaWYgKGJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpID09IDAp CisgICAgIGVycm9yIChfKCJGaWxlIGlzIG5vdCBhbiBvYmplY3QgZmlsZS4iKSk7CisgICBnZXR0 aW1lb2ZkYXkgKCZzdGFydF90aW1lLCBOVUxMKTsKK0BAIC0xODgsNiArMTkxLDcgQEAgbTMycl9s b2FkIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQorICAgICAgY29uZnVzZWQuLi4gICov CisgCisgICBjbGVhcl9zeW10YWJfdXNlcnMgKDApOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXAp OworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTQzNCw2ICs0MzgsNyBAQCBtMzJyX3VwbG9hZF9j b21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICBjaGFyIGJ1ZlsxMDI0XTsKKyAg IHN0cnVjdCBob3N0ZW50ICpob3N0ZW50OworICAgc3RydWN0IGluX2FkZHIgaW5ldF9hZGRyOwor KyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgCisgICAvKiBGaXJzdCBjaGVjayB0byBzZWUg aWYgdGhlcmUncyBhbiBldGhlcm5ldCBwb3J0ISAgKi8KKyAgIG1vbml0b3JfcHJpbnRmICgidXN0 XHIiKTsKK0BAIC01MjQsNyArNTI5LDggQEAgbTMycl91cGxvYWRfY29tbWFuZCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQorICAgICBwcmludGZfZmlsdGVyZWQgKCIgLS0gRXRoZXJuZXQgbG9h ZCBjb21wbGV0ZS5cbiIpOworIAorICAgZ2V0dGltZW9mZGF5ICgmZW5kX3RpbWUsIE5VTEwpOwor LSAgYWJmZCA9IGJmZF9vcGVuciAoYXJncywgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJm ZF9vcGVuciAoYXJncywgMCkpOworKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYg KGFiZmQpOworICAgaWYgKGFiZmQgIT0gTlVMTCkKKyAgICAgewkJLyogRG93bmxvYWQgaXMgZG9u ZSAtLSBwcmludCBzZWN0aW9uIHN0YXRpc3RpY3MuICAqLworICAgICAgIGlmIChiZmRfY2hlY2tf Zm9ybWF0IChhYmZkLCBiZmRfb2JqZWN0KSA9PSAwKQorQEAgLTU2NSw2ICs1NzEsNyBAQCBtMzJy X3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAgICBjb25mdXNl ZC4uLiAgKi8KKyAKKyAgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7CisrICBkb19jbGVhbnVwcyAo Y2xlYW51cCk7CisgfQorIAorIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21p c3NpbmctcHJvdG90eXBlcy4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL21hY2hvcmVhZC5jIGIvZ2Ri L21hY2hvcmVhZC5jCitpbmRleCAyMjUzMGFiLi42ZDMwOWJiIDEwMDY0NAorLS0tIGEvZ2RiL21h Y2hvcmVhZC5jCisrKysgYi9nZGIvbWFjaG9yZWFkLmMKK0BAIC00NjYsMTQgKzQ2NiwxNCBAQCBt YWNob19hZGRfb3NvX3N5bWZpbGUgKG9zb19lbCAqb3NvLCBiZmQgKmFiZmQsCisgICAgIHsKKyAg ICAgICB3YXJuaW5nIChfKCJgJXMnOiBjYW4ndCByZWFkIHN5bWJvbHM6ICVzLiIpLCBvc28tPm5h bWUsCisgICAgICAgICAgICAgICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworLSAg ICAgIGJmZF9jbG9zZSAoYWJmZCk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgICAg ICAgcmV0dXJuOworICAgICB9CisgCisgICBpZiAoYWJmZC0+bXlfYXJjaGl2ZSA9PSBOVUxMICYm IG9zby0+bXRpbWUgIT0gYmZkX2dldF9tdGltZSAoYWJmZCkpCisgICAgIHsKKyAgICAgICB3YXJu aW5nIChfKCJgJXMnOiBmaWxlIHRpbWUgc3RhbXAgbWlzbWF0Y2guIiksIG9zby0+bmFtZSk7Cist ICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKKysgICAgICBnZGJfYmZkX3VucmVmIChhYmZkKTsKKyAg ICAgICByZXR1cm47CisgICAgIH0KKyAKK0BAIC00ODIsNyArNDgyLDcgQEAgbWFjaG9fYWRkX29z b19zeW1maWxlIChvc29fZWwgKm9zbywgYmZkICphYmZkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9zby0+bmJyX3N5bXMpKQorICAgICB7CisgICAgICAgd2FybmluZyAoXygiYCVz JzogY2FuJ3QgY3JlYXRlIGhhc2ggdGFibGUiKSwgb3NvLT5uYW1lKTsKKy0gICAgICBiZmRfY2xv c2UgKGFiZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAgICAgIHJldHVybjsK KyAgICAgfQorIAorQEAgLTYyOSwxMCArNjI5LDEwIEBAIG1hY2hvX2FkZF9vc29fc3ltZmlsZSAo b3NvX2VsICpvc28sIGJmZCAqYWJmZCwKKyAKKyAgIGJmZF9oYXNoX3RhYmxlX2ZyZWUgKCZ0YWJs ZSk7CisgCistICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlsZW5hbWUgd2FzIG1hbGxvYydlZC4g IFRoZSBjdXJyZW50IGZpbGVuYW1lIGNvbWVzCistICAgICBlaXRoZXIgZnJvbSBhbiBPU08gc3lt Ym9sIG5hbWUgb3IgZnJvbSBhbiBhcmNoaXZlIG5hbWUuICBNZW1vcnkgZm9yIGJvdGgKKy0gICAg IGlzIG5vdCBtYW5hZ2VkIGJ5IGdkYi4gICovCistICBhYmZkLT5maWxlbmFtZSA9IHhzdHJkdXAg KGFiZmQtPmZpbGVuYW1lKTsKKysgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlbmFtZSBoYXMg dGhlIGNvcnJlY3QgbGlmZXRpbWUuICBUaGUKKysgICAgIGN1cnJlbnQgZmlsZW5hbWUgY29tZXMg ZWl0aGVyIGZyb20gYW4gT1NPIHN5bWJvbCBuYW1lIG9yIGZyb20gYW4KKysgICAgIGFyY2hpdmUg bmFtZS4gIE1lbW9yeSBmb3IgYm90aCBpcyBub3QgbWFuYWdlZCBieSBnZGIuICAqLworKyAgZ2Ri X2JmZF9zdGFzaF9maWxlbmFtZSAoYWJmZCk7CisgCisgICAvKiBXZSBuZWVkIHRvIGNsZWFyIFNZ TUZJTEVfTUFJTkxJTkUgdG8gYXZvaWQgaW50ZXJyYWN0aXZlIHF1ZXN0aW9uCisgICAgICBmcm9t IHN5bWZpbGUuYzpzeW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzLiAgKi8KK0BA IC02NTEsNiArNjUxLDcgQEAgbWFjaG9fc3ltZmlsZV9yZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpm aWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQorICAgaW50IGl4OworICAgVkVD IChvc29fZWwpICp2ZWM7CisgICBvc29fZWwgKm9zbzsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworIAorICAgdmVjID0gb3Nv X3ZlY3RvcjsKKyAgIG9zb192ZWN0b3IgPSBOVUxMOworQEAgLTY3Nyw2ICs2NzgsOCBAQCBtYWNo b19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwgaW50 IHN5bWZpbGVfZmxhZ3MpCisgCSAgbWVtY3B5IChhcmNoaXZlX25hbWUsIG9zby0+bmFtZSwgcGZ4 X2xlbik7CisgCSAgYXJjaGl2ZV9uYW1lW3BmeF9sZW5dID0gJ1wwJzsKKyAKKysJICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBhcmNoaXZlX25hbWUpOworKworICAgICAgICAgICAvKiBDb21wdXRlIG51 bWJlciBvZiBvc28gZm9yIHRoaXMgYXJjaGl2ZS4gICovCisgICAgICAgICAgIGZvciAobGFzdF9p eCA9IGl4OworICAgICAgICAgICAgICAgIFZFQ19pdGVyYXRlIChvc29fZWwsIHZlYywgbGFzdF9p eCwgb3NvMik7IGxhc3RfaXgrKykKK0BAIC02ODYsNyArNjg5LDcgQEAgbWFjaG9fc3ltZmlsZV9y ZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2Zs YWdzKQorICAgICAgICAgICAgIH0KKyAKKyAJICAvKiBPcGVuIHRoZSBhcmNoaXZlIGFuZCBjaGVj ayB0aGUgZm9ybWF0LiAgKi8KKy0JICBhcmNoaXZlX2JmZCA9IGJmZF9vcGVuciAoYXJjaGl2ZV9u YW1lLCBnbnV0YXJnZXQpOworKwkgIGFyY2hpdmVfYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVu ciAoYXJjaGl2ZV9uYW1lLCBnbnV0YXJnZXQpKTsKKyAJICBpZiAoYXJjaGl2ZV9iZmQgPT0gTlVM TCkKKyAJICAgIHsKKyAJICAgICAgd2FybmluZyAoXygiQ291bGQgbm90IG9wZW4gT1NPIGFyY2hp dmUgZmlsZSBcIiVzXCIiKSwKK0BAIC02OTgsMTcgKzcwMSwyMSBAQCBtYWNob19zeW1maWxlX3Jl YWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxh Z3MpCisgCSAgICB7CisgCSAgICAgIHdhcm5pbmcgKF8oIk9TTyBhcmNoaXZlIGZpbGUgXCIlc1wi IG5vdCBhbiBhcmNoaXZlLiIpLAorIAkJICAgICAgIGFyY2hpdmVfbmFtZSk7CistCSAgICAgIGJm ZF9jbG9zZSAoYXJjaGl2ZV9iZmQpOworKwkgICAgICBnZGJfYmZkX3VucmVmIChhcmNoaXZlX2Jm ZCk7CisgICAgICAgICAgICAgICBpeCA9IGxhc3RfaXg7CisgCSAgICAgIGNvbnRpbnVlOworIAkg ICAgfQorLQkgIG1lbWJlcl9iZmQgPSBiZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNo aXZlX2JmZCwgTlVMTCk7CisrCisrCSAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoYXJjaGl2ZV9i ZmQpOworKworKwkgIG1lbWJlcl9iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yX25leHRfYXJj aGl2ZWRfZmlsZSAoYXJjaGl2ZV9iZmQsCisrCQkJCQkJCQkgIE5VTEwpKTsKKyAKKyAJICBpZiAo bWVtYmVyX2JmZCA9PSBOVUxMKQorIAkgICAgeworIAkgICAgICB3YXJuaW5nIChfKCJDb3VsZCBu b3QgcmVhZCBhcmNoaXZlIG1lbWJlcnMgb3V0IG9mICIKKyAJCQkgIk9TTyBhcmNoaXZlIFwiJXNc IiIpLCBhcmNoaXZlX25hbWUpOworLQkgICAgICBiZmRfY2xvc2UgKGFyY2hpdmVfYmZkKTsKKysJ ICAgICAgZ2RiX2JmZF91bnJlZiAoYXJjaGl2ZV9iZmQpOworICAgICAgICAgICAgICAgaXggPSBs YXN0X2l4OworIAkgICAgICBjb250aW51ZTsKKyAJICAgIH0KK0BAIC03MzgsMTIgKzc0NSwxMyBA QCBtYWNob19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmls ZSwgaW50IHN5bWZpbGVfZmxhZ3MpCisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAg ICAgIHByZXYgPSBtZW1iZXJfYmZkOworLQkgICAgICBtZW1iZXJfYmZkID0gYmZkX29wZW5yX25l eHRfYXJjaGl2ZWRfZmlsZQorLQkJKGFyY2hpdmVfYmZkLCBtZW1iZXJfYmZkKTsKKysJICAgICAg bWVtYmVyX2JmZAorKwkJPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmls ZSAoYXJjaGl2ZV9iZmQsCisrCQkJCQkJCSAgICAgbWVtYmVyX2JmZCkpOworIAorICAgICAgICAg ICAgICAgLyogRnJlZSBwcmV2aW91cyBtZW1iZXIgaWYgbm90IHJlZmVyZW5jZWQgYnkgYW4gb3Nv LiAgKi8KKyAgICAgICAgICAgICAgIGlmIChpeDIgPj0gbGFzdF9peCkKKy0gICAgICAgICAgICAg ICAgYmZkX2Nsb3NlIChwcmV2KTsKKysgICAgICAgICAgICAgICAgZ2RiX2JmZF91bnJlZiAocHJl dik7CisgCSAgICB9CisgICAgICAgICAgIGZvciAoaXgyID0gaXg7IGl4MiA8IGxhc3RfaXg7IGl4 MisrKQorICAgICAgICAgICAgIHsKK0BAIC03NTksNyArNzY3LDcgQEAgbWFjaG9fc3ltZmlsZV9y ZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2Zs YWdzKQorIAl7CisgICAgICAgICAgIGJmZCAqYWJmZDsKKyAKKy0JICBhYmZkID0gYmZkX29wZW5y IChvc28tPm5hbWUsIGdudXRhcmdldCk7CisrCSAgYWJmZCA9IGdkYl9iZmRfcmVmIChiZmRfb3Bl bnIgKG9zby0+bmFtZSwgZ251dGFyZ2V0KSk7CisgCSAgaWYgKCFhYmZkKQorICAgICAgICAgICAg IHdhcm5pbmcgKF8oImAlcyc6IGNhbid0IG9wZW4gdG8gcmVhZCBzeW1ib2xzOiAlcy4iKSwgb3Nv LT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3Ig KCkpKTsKK0BAIC03NzEsNiArNzc5LDcgQEAgbWFjaG9fc3ltZmlsZV9yZWFkX2FsbF9vc28gKHN0 cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQorICAgICB9Cisg CisgICBWRUNfZnJlZSAob3NvX2VsLCB2ZWMpOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwor IH0KKyAKKyAvKiBEU1lNIChkZWJ1ZyBzeW1ib2xzKSBmaWxlcyBjb250YWluIHRoZSBkZWJ1ZyBp bmZvIG9mIGFuIGV4ZWN1dGFibGUuCitAQCAtODA4LDIwICs4MTcsMTggQEAgbWFjaG9fY2hlY2tf ZHN5bSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICAgICAgd2FybmluZyAoXygiY2FuJ3Qg ZmluZCBVVUlEIGluICVzIiksIG9iamZpbGUtPm5hbWUpOworICAgICAgIHJldHVybiBOVUxMOwor ICAgICB9CistICBkc3ltX2ZpbGVuYW1lID0geHN0cmR1cCAoZHN5bV9maWxlbmFtZSk7CistICBk c3ltX2JmZCA9IGJmZF9vcGVuciAoZHN5bV9maWxlbmFtZSwgZ251dGFyZ2V0KTsKKysgIGRzeW1f YmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZHN5bV9maWxlbmFtZSwgZ251dGFyZ2V0KSk7 CisgICBpZiAoZHN5bV9iZmQgPT0gTlVMTCkKKyAgICAgeworICAgICAgIHdhcm5pbmcgKF8oImNh bid0IG9wZW4gZHN5bSBmaWxlICVzIiksIGRzeW1fZmlsZW5hbWUpOworLSAgICAgIHhmcmVlIChk c3ltX2ZpbGVuYW1lKTsKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorKyAgZ2RiX2JmZF9z dGFzaF9maWxlbmFtZSAoZHN5bV9maWxlbmFtZSk7CisgCisgICBpZiAoIWJmZF9jaGVja19mb3Jt YXQgKGRzeW1fYmZkLCBiZmRfb2JqZWN0KSkKKyAgICAgeworLSAgICAgIGJmZF9jbG9zZSAoZHN5 bV9iZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGRzeW1fYmZkKTsKKyAgICAgICB3YXJuaW5n IChfKCJiYWQgZHN5bSBmaWxlIGZvcm1hdDogJXMiKSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJv ciAoKSkpOworLSAgICAgIHhmcmVlIChkc3ltX2ZpbGVuYW1lKTsKKyAgICAgICByZXR1cm4gTlVM TDsKKyAgICAgfQorIAorQEAgLTgyOSwxNiArODM2LDE0IEBAIG1hY2hvX2NoZWNrX2RzeW0gKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEJGRF9NQUNIX09fTENfVVVJRCwgJmRzeW1fdXVpZCkgPT0gMCkKKyAgICAgeworICAgICAgIHdh cm5pbmcgKF8oImNhbid0IGZpbmQgVVVJRCBpbiAlcyIpLCBkc3ltX2ZpbGVuYW1lKTsKKy0gICAg ICBiZmRfY2xvc2UgKGRzeW1fYmZkKTsKKy0gICAgICB4ZnJlZSAoZHN5bV9maWxlbmFtZSk7Cisr ICAgICAgZ2RiX2JmZF91bnJlZiAoZHN5bV9iZmQpOworICAgICAgIHJldHVybiBOVUxMOworICAg ICB9CisgICBpZiAobWVtY21wIChkc3ltX3V1aWQtPmNvbW1hbmQudXVpZC51dWlkLCBtYWluX3V1 aWQtPmNvbW1hbmQudXVpZC51dWlkLAorICAgICAgICAgICAgICAgc2l6ZW9mIChtYWluX3V1aWQt PmNvbW1hbmQudXVpZC51dWlkKSkpCisgICAgIHsKKyAgICAgICB3YXJuaW5nIChfKCJkc3ltIGZp bGUgVVVJRCBkb2Vzbid0IG1hdGNoIHRoZSBvbmUgaW4gJXMiKSwgb2JqZmlsZS0+bmFtZSk7Cist ICAgICAgYmZkX2Nsb3NlIChkc3ltX2JmZCk7CistICAgICAgeGZyZWUgKGRzeW1fZmlsZW5hbWUp OworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGRzeW1fYmZkKTsKKyAgICAgICByZXR1cm4gTlVMTDsK KyAgICAgfQorICAgcmV0dXJuIGRzeW1fYmZkOwogZGlmZiAtLWdpdCBhL2dkYi9tYWluLmMgYi9n ZGIvbWFpbi5jCi1pbmRleCAzMTQ4ZDcyLi5jNWI0ODI2IDEwMDY0NAoraW5kZXggMDI1YmJlMC4u YThjMWE5NyAxMDA2NDQKIC0tLSBhL2dkYi9tYWluLmMKICsrKyBiL2dkYi9tYWluLmMKIEBAIC0z Nyw2ICszNyw3IEBACkBAIC0zNzE2LDYgKzY4NjAsMTIxIEBAIGluZGV4IDMxNDhkNzIuLmM1YjQ4 MjYgMTAwNjQ0CiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVt YmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1i b2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogICIpLCBzdHJlYW0pOworZGlmZiAtLWdpdCBh L2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKK2luZGV4IGY1ZTVjNzUuLjVmZjBlYjIg MTAwNjQ0CistLS0gYS9nZGIvb2JqZmlsZXMuYworKysrIGIvZ2RiL29iamZpbGVzLmMKK0BAIC01 Myw2ICs1Myw3IEBACisgI2luY2x1ZGUgImNvbXBsYWludHMuaCIKKyAjaW5jbHVkZSAicHN5bXRh Yi5oIgorICNpbmNsdWRlICJzb2xpc3QuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8q IFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucyAqLworIAorQEAgLTE5Myw5ICsxOTQsOSBA QCBhbGxvY2F0ZV9vYmpmaWxlIChiZmQgKmFiZmQsIGludCBmbGFncykKKyAKKyAgIC8qIFVwZGF0 ZSB0aGUgcGVyLW9iamZpbGUgaW5mb3JtYXRpb24gdGhhdCBjb21lcyBmcm9tIHRoZSBiZmQsIGVu c3VyaW5nCisgICAgICB0aGF0IGFueSBkYXRhIHRoYXQgaXMgcmVmZXJlbmNlIGlzIHNhdmVkIGlu IHRoZSBwZXItb2JqZmlsZSBkYXRhCistICAgICByZWdpb24uICAqLworKyAgICAgcmVnaW9uLiAg Tm90ZSB0aGF0IHdlIHN0ZWFsIGEgcmVmZXJlbmNlIHRvIEFCRkQuICAqLworIAorLSAgb2JqZmls ZS0+b2JmZCA9IGdkYl9iZmRfcmVmIChhYmZkKTsKKysgIG9iamZpbGUtPm9iZmQgPSBhYmZkOwor ICAgaWYgKGFiZmQgIT0gTlVMTCkKKyAgICAgeworICAgICAgIC8qIExvb2sgdXAgdGhlIGdkYmFy Y2ggYXNzb2NpYXRlZCB3aXRoIHRoZSBCRkQuICAqLworQEAgLTE0NTYsNzUgKzE0NTcsNiBAQCBv YmpmaWxlc19jaGFuZ2VkICh2b2lkKQorICAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7CisgfQorIAorLS8qIENs b3NlIEFCRkQsIGFuZCB3YXJuIGlmIHRoYXQgZmFpbHMuICAqLworLQorLWludAorLWdkYl9iZmRf Y2xvc2Vfb3Jfd2FybiAoc3RydWN0IGJmZCAqYWJmZCkKKy17CistICBpbnQgcmV0OworLSAgY2hh ciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworLQorLSAgcmV0ID0gYmZkX2Nsb3Nl IChhYmZkKTsKKy0KKy0gIGlmICghcmV0KQorLSAgICB3YXJuaW5nIChfKCJjYW5ub3QgY2xvc2Ug XCIlc1wiOiAlcyIpLAorLQkgICAgIG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkp KTsKKy0KKy0gIHJldHVybiByZXQ7CistfQorLQorLS8qIEFkZCByZWZlcmVuY2UgdG8gQUJGRC4g IFJldHVybnMgQUJGRC4gICovCistc3RydWN0IGJmZCAqCistZ2RiX2JmZF9yZWYgKHN0cnVjdCBi ZmQgKmFiZmQpCisteworLSAgaW50ICpwX3JlZmNvdW50OworLQorLSAgaWYgKGFiZmQgPT0gTlVM TCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICBwX3JlZmNvdW50ID0gYmZkX3VzcmRhdGEgKGFi ZmQpOworLQorLSAgaWYgKHBfcmVmY291bnQgIT0gTlVMTCkKKy0gICAgeworLSAgICAgICpwX3Jl ZmNvdW50ICs9IDE7CistICAgICAgcmV0dXJuIGFiZmQ7CistICAgIH0KKy0KKy0gIHBfcmVmY291 bnQgPSB4bWFsbG9jIChzaXplb2YgKCpwX3JlZmNvdW50KSk7CistICAqcF9yZWZjb3VudCA9IDE7 CistICBiZmRfdXNyZGF0YSAoYWJmZCkgPSBwX3JlZmNvdW50OworLQorLSAgcmV0dXJuIGFiZmQ7 CistfQorLQorLS8qIFVucmVmZXJlbmNlIGFuZCBwb3NzaWJseSBjbG9zZSBBQkZELiAgKi8KKy12 b2lkCistZ2RiX2JmZF91bnJlZiAoc3RydWN0IGJmZCAqYWJmZCkKKy17CistICBpbnQgKnBfcmVm Y291bnQ7CistICBjaGFyICpuYW1lOworLQorLSAgaWYgKGFiZmQgPT0gTlVMTCkKKy0gICAgcmV0 dXJuOworLQorLSAgcF9yZWZjb3VudCA9IGJmZF91c3JkYXRhIChhYmZkKTsKKy0KKy0gIC8qIFZh bGlkIHJhbmdlIGZvciBwX3JlZmNvdW50OiBhIHBvaW50ZXIgdG8gaW50IGNvdW50ZXIsIHdoaWNo IGhhcyBhCistICAgICB2YWx1ZSBvZiAxIChzaW5nbGUgb3duZXIpIG9yIDIgKHNoYXJlZCkuICAq LworLSAgZ2RiX2Fzc2VydCAoKnBfcmVmY291bnQgPT0gMSB8fCAqcF9yZWZjb3VudCA9PSAyKTsK Ky0KKy0gICpwX3JlZmNvdW50IC09IDE7CistICBpZiAoKnBfcmVmY291bnQgPiAwKQorLSAgICBy ZXR1cm47CistCistICB4ZnJlZSAocF9yZWZjb3VudCk7CistICBiZmRfdXNyZGF0YSAoYWJmZCkg PSBOVUxMOyAgLyogUGFyYW5vaWEuICAqLworLQorLSAgbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUg KGFiZmQpOworLSAgZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKKy0gIHhmcmVlIChuYW1l KTsKKy19CistCisgLyogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAiaXRlcmF0 ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlciIKKyAgICBnZGJhcmNoIG1ldGhvZC4gIEl0 IGlzIGVxdWl2YWxlbnQgdG8gdXNlIHRoZSBBTExfT0JKRklMRVMgbWFjcm8sCisgICAgc2VhcmNo aW5nIHRoZSBvYmpmaWxlcyBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc3RvcmVkIGludGVybmFsbHks CitkaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmggYi9nZGIvb2JqZmlsZXMuaAoraW5kZXggMDFj M2FlYS4uMGRmNTc5OCAxMDA2NDQKKy0tLSBhL2dkYi9vYmpmaWxlcy5oCisrKysgYi9nZGIvb2Jq ZmlsZXMuaAorQEAgLTUyMiwxMCArNTIyLDYgQEAgZXh0ZXJuIHZvaWQgc2V0X29iamZpbGVfZGF0 YSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgZXh0ZXJuIHZvaWQgKm9iamZpbGVfZGF0YSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJICAgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0 YSAqZGF0YSk7CisgCistZXh0ZXJuIHN0cnVjdCBiZmQgKmdkYl9iZmRfcmVmIChzdHJ1Y3QgYmZk ICphYmZkKTsKKy1leHRlcm4gdm9pZCBnZGJfYmZkX3VucmVmIChzdHJ1Y3QgYmZkICphYmZkKTsK Ky1leHRlcm4gaW50IGdkYl9iZmRfY2xvc2Vfb3Jfd2FybiAoc3RydWN0IGJmZCAqYWJmZCk7Cist CisgZXh0ZXJuIHZvaWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29y ZGVyCisgICAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgaXRlcmF0ZV9vdmVyX29iamZp bGVzX2luX3NlYXJjaF9vcmRlcl9jYl9mdHlwZSAqY2IsCiBkaWZmIC0tZ2l0IGEvZ2RiL3AtdmFs cHJpbnQuYyBiL2dkYi9wLXZhbHByaW50LmMKIGluZGV4IGI4NDM0ZWQuLjk4YTA3NmQgMTAwNjQ0 CiAtLS0gYS9nZGIvcC12YWxwcmludC5jCkBAIC0zNzk3LDEwICs3MDU2LDEwIEBAIGluZGV4IGI4 NDM0ZWQuLjk4YTA3NmQgMTAwNjQ0CiAgDAogIHZvaWQKIGRpZmYgLS1naXQgYS9nZGIvcGFyc2Uu YyBiL2dkYi9wYXJzZS5jCi1pbmRleCBmNTRjNmYyLi43MGU5YTA1IDEwMDY0NAoraW5kZXggYzM3 MmY0MC4uNjcwN2M5YSAxMDA2NDQKIC0tLSBhL2dkYi9wYXJzZS5jCiArKysgYi9nZGIvcGFyc2Uu YwotQEAgLTE1MTYsNiArMTUxNiw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25zdCBj aGFyICp5LCAuLi4pCitAQCAtMTU4NCw2ICsxNTg0LDcgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUg KngsIGNvbnN0IGNoYXIgKnksIC4uLikKICAKICBpbnQKICBvcGVyYXRvcl9jaGVja19zdGFuZGFy ZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTM4MDgsNyArNzA2Nyw3IEBA IGluZGV4IGY1NGM2ZjIuLjcwZTlhMDUgMTAwNjQ0CiAgCQkJIGludCAoKm9iamZpbGVfZnVuYykg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCiAgCQkJ IHZvaWQgKmRhdGEpCi1AQCAtMTU1Nyw3ICsxNTU4LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRh cmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTYyNSw3ICsxNjI2LDcg QEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBw b3MsCiAgCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsK ICAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKICAK QEAgLTM4MTcsNyArNzA3Niw3IEBAIGluZGV4IGY1NGM2ZjIuLjcwZTlhMDUgMTAwNjQ0CiAgCSAg ICAgIHJldHVybiAxOwogIAkgIH0KICAgICAgICB9Ci1AQCAtMTU3NSw3ICsxNTc2LDggQEAgb3Bl cmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitA QCAtMTY0Myw3ICsxNjQ0LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwb3MsCiAgCiAgCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgdGhlIHZh cmlhYmxlIGl0c2VsZiBpcyBwbGFjZWQuCiAgCSAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9s KSBtYXkgYmUgTlVMTC4gICovCkBAIC0zODI3LDcgKzcwODYsNyBAQCBpbmRleCBmNTRjNmYyLi43 MGU5YTA1IDEwMDY0NAogIAkgIHJldHVybiAxOwogIAogIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJl IGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLwotQEAgLTE1ODgs MjQgKzE1OTAsMjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCitAQCAtMTY1NiwyNCArMTY1OCwyNyBAQCBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAKICAgIC8qIEludm9r ZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24t TlVMTC4gICovCiAgCkBAIC0zODYzLDcgKzcxMjIsNyBAQCBpbmRleCBmNTRjNmYyLi43MGU5YTA1 IDEwMDY0NAogIAkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkYXRhKSwKICAJICAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xNjIwLDcgKzE2 MjUsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKK0BAIC0xNjg4LDcg KzE2OTMsOSBAQCBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKICAKICAgICAg ICBwb3MgPSBlbmRwb3MgLSBvcGxlbjsKICAgICAgICBpZiAoZXhwLT5sYW5ndWFnZV9kZWZuLT5s YV9leHBfZGVzYy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLApAQCAtMzg3NCw3ICs3MTMzLDcg QEAgaW5kZXggZjU0YzZmMi4uNzBlOWEwNSAxMDA2NDQKICAJcmV0dXJuIDE7CiAgCiAgICAgICAg ZW5kcG9zID0gcG9zOwotQEAgLTE2NTEsOCArMTY1OCwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0xNzE5 LDggKzE3MjYsMjkgQEAgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgewogICAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2Vw YXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKTsKICAKQEAgLTM5MDYsMTAgKzcx NjUsMTAgQEAgaW5kZXggZjU0YzZmMi4uNzBlOWEwNSAxMDA2NDQKICB2b2lkCiAgX2luaXRpYWxp emVfcGFyc2UgKHZvaWQpCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZzLmggYi9nZGIvcGFy c2VyLWRlZnMuaAotaW5kZXggNzJiOWUyZi4uNzE5YTY1MiAxMDA2NDQKK2luZGV4IGFhNjAwYTEu LjU1NGMyNzIgMTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAogKysrIGIvZ2RiL3BhcnNl ci1kZWZzLmgKLUBAIC0yMTUsNiArMjE1LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3Ro X3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAorQEAgLTIx Nyw2ICsyMTcsOCBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0 IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosCiAgCQkJCSAgICAgIGludCAqKTsKICAK ICBleHRlcm4gaW50IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBpbnQgcG9zLApAQCAtMzkxOCw3ICs3MTc3LDcgQEAgaW5kZXggNzJiOWUyZi4uNzE5YTY1 MiAxMDA2NDQKICAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKICAJCQkJICAgICAgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKICAJCQkJICAgIHZvaWQgKmRhdGEpOwot QEAgLTMwMSw2ICszMDMsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKK0BAIC0zMDMsNiArMzA1 LDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCiAgICAgICAgIHZhbHVlIHNob3VsZCBiZSBpbW1l ZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8KICAgICAgICAg c2hvdWxkIGJlIHJldHVybmVkLiAgKi8KICAgICAgaW50ICgqb3BlcmF0b3JfY2hlY2spIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtMzkyNiw3ICs3MTg1LDcgQEAgaW5kZXgg NzJiOWUyZi4uNzE5YTY1MiAxMDA2NDQKICAJCQkgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCQkJCQl2b2lkICpkYXRhKSwKICAJCQkgICB2b2lkICpk YXRhKTsKLUBAIC0zMzksNCArMzQyLDEwIEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChG SUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKK0BAIC0z NDEsNCArMzQ0LDEwIEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChGSUxFICosIGNvbnN0 IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKICAKICBleHRlcm4gaW50IGV4 cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKTsKICAKQEAgLTM5MzgsMTggKzcxOTcsMTggQEAgaW5kZXggNzJiOWUyZi4uNzE5YTY1 MiAxMDA2NDQKICsKICAjZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAqLwogZGlmZiAtLWdpdCBhL2dk Yi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKLWluZGV4IDAzMGE0ZjIuLjMwNmJlMTggMTAw NjQ0CitpbmRleCAyYTBhODg2Li5jMTNhMDQ0IDEwMDY0NAogLS0tIGEvZ2RiL3ByaW50Y21kLmMK ICsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtNDksNiArNDksNyBAQAotICNpbmNsdWRlICJjaGFy c2V0LmgiCitAQCAtNTAsNiArNTAsNyBAQAogICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCiAgI2lu Y2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKyAjaW5jbHVkZSAiZm9ybWF0LmgiCiArI2luY2x1ZGUg ImR3YXJmMmxvYy5oIgogIAogICNpZmRlZiBUVUkKICAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyog Rm9yIHR1aV9hY3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NzQsNiArOTc1LDExIEBAIHByaW50X2Nv bW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKK0BAIC05Njgs NiArOTY5LDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50 IHZvaWRwcmludCkKICAgIGVsc2UKICAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDAp OwogIApAQCAtMzk2MSw3ICs3MjIwLDcgQEAgaW5kZXggMDMwYTRmMi4uMzA2YmUxOCAxMDA2NDQK ICAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBlICh2YWwpICYmCiAgCQkgICAg VFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NPREVfVk9JRCkpCiAgICAgIHsK LUBAIC0xMDYyLDYgKzEwNjgsOSBAQCBvdXRwdXRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJv bV90dHkpCitAQCAtMTA1Niw2ICsxMDYyLDkgQEAgb3V0cHV0X2NvbW1hbmQgKGNoYXIgKmV4cCwg aW50IGZyb21fdHR5KQogIAogICAgdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7CiAg CkBAIC0zOTcxLDcgKzcyMzAsNyBAQCBpbmRleCAwMzBhNGYyLi4zMDZiZTE4IDEwMDY0NAogICAg YW5ub3RhdGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOwogIAogICAgZ2V0X2Zvcm1h dHRlZF9wcmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKLUBAIC0xNDkxLDYgKzE1MDAsMjQg QEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKK0BAIC0xNDg1LDYgKzE0OTQs MjQgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKICAJc2V0X2ludGVybmFs dmFyIChsb29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwogICAg ICB9CiAgfQpAQCAtMzk5Niw3ICs3MjU1LDcgQEAgaW5kZXggMDMwYTRmMi4uMzA2YmUxOCAxMDA2 NDQKICAMCiAgCiAgLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFp bi4KLUBAIC0xOTg2LDYgKzIwMTMsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25z dCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCitAQCAtMTk4MCw2ICsyMDA3LDEwIEBA IHByaW50X3ZhcmlhYmxlX2FuZF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bWJv bCAqdmFyLAogICAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgCiAgICAg ICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHZhciwgZnJhbWUpOwpAQCAtNDAwNyw3ICs3MjY2LDcg QEAgaW5kZXggMDMwYTRmMi4uMzA2YmUxOCAxMDA2NDQKICAgICAgICBnZXRfdXNlcl9wcmludF9v cHRpb25zICgmb3B0cyk7CiAgICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwogICAgICAgIGNvbW1v bl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdl KTsKLUBAIC0yODk5LDQgKzI5MzAsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFt ZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKK0BAIC0yNjIwLDQgKzI2 NTEsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIg d2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKICAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xhc3MsIGV2 YWxfY29tbWFuZCwgXygiXAogIENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBhcmcx LCBhcmcyLCBhcmczLCAuLi4sIGFyZ24gdG9cblwKICBhIGNvbW1hbmQgbGluZSwgYW5kIGNhbGwg aXQuIikpOwpAQCAtNDAxNiw2ICs3Mjc1LDQ2IEBAIGluZGV4IDAzMGE0ZjIuLjMwNmJlMTggMTAw NjQ0CiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJrX3VzZWQp OwogKyNlbmRpZgogIH0KK2RpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMK K2luZGV4IDc3NGRmMmUuLjMyY2I0NjggMTAwNjQ0CistLS0gYS9nZGIvcHJvY2ZzLmMKKysrKyBi L2dkYi9wcm9jZnMuYworQEAgLTM0ODYsNyArMzQ4Niw3IEBAIGluc2VydF9kYnhfbGlua19icHRf aW5fZmlsZSAoaW50IGZkLCBDT1JFX0FERFIgaWdub3JlZCkKKyAgIGxvbmcgc3RvcmFnZV9uZWVk ZWQ7CisgICBDT1JFX0FERFIgc3ltX2FkZHI7CisgCistICBhYmZkID0gYmZkX2Zkb3BlbnIgKCJ1 bmFtZWQiLCAwLCBmZCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9mZG9wZW5yICgidW5h bWVkIiwgMCwgZmQpKTsKKyAgIGlmIChhYmZkID09IE5VTEwpCisgICAgIHsKKyAgICAgICB3YXJu aW5nIChfKCJGYWlsZWQgdG8gY3JlYXRlIGEgYmZkOiAlcy4iKSwgYmZkX2Vycm1zZyAoYmZkX2dl dF9lcnJvciAoKSkpOworQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGluc2VydF9kYnhfbGlua19icHRf aW5fZmlsZSAoaW50IGZkLCBDT1JFX0FERFIgaWdub3JlZCkKKyAgICAgeworICAgICAgIC8qIE5v dCB0aGUgY29ycmVjdCBmb3JtYXQsIHNvIHdlIGNhbiBub3QgcG9zc2libHkgZmluZCB0aGUgZGJ4 X2xpbmsKKyAJIHN5bWJvbCBpbiBpdC4JKi8KKy0gICAgICBiZmRfY2xvc2UgKGFiZmQpOworKyAg ICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAgICAgIHJldHVybiAwOworICAgICB9CisgCitA QCAtMzUxMSwxNCArMzUxMSwxNCBAQCBpbnNlcnRfZGJ4X2xpbmtfYnB0X2luX2ZpbGUgKGludCBm ZCwgQ09SRV9BRERSIGlnbm9yZWQpCisgICAgICAgaWYgKGRieF9saW5rX2JwdCA9PSBOVUxMKQor IAl7CisgCSAgd2FybmluZyAoXygiRmFpbGVkIHRvIGluc2VydCBkYnhfbGluayBicmVha3BvaW50 LiIpKTsKKy0JICBiZmRfY2xvc2UgKGFiZmQpOworKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwor IAkgIHJldHVybiAwOworIAl9CistICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKKysgICAgICBnZGJf YmZkX3VucmVmIChhYmZkKTsKKyAgICAgICByZXR1cm4gMTsKKyAgICAgfQorIAorLSAgYmZkX2Ns b3NlIChhYmZkKTsKKysgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAgcmV0dXJuIDA7CisgfQor IAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5IGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBp bmRleCAwMDAwMDAwLi41NjU0NTQ2CkBAIC01MDIwLDcgKzgzMTksNyBAQCBpbmRleCA2ZjY3YmRi Li41ZGRkNmJjIDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5j IGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5kZXggMTllYjdiNS4uMGU3MjU2ZSAxMDA2NDQKK2lu ZGV4IGM2NmVmZTQuLjAyMTFmY2IgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCiAr KysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCiBAQCAtNjYsMTAgKzY2LDEzIEBAIHN0YXRpYyBjb25z dCBjaGFyICpnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSBweXRob25fZXhjcF9tZXNzYWdlOwpA QCAtNTAzNyw3ICs4MzM2LDcgQEAgaW5kZXggMTllYjdiNS4uMGU3MjU2ZSAxMDA2NDQKICAKICBz dGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1tdOwogIAotQEAgLTk3NCw2ICs5NzcsNTMgQEAg Z2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCitAQCAtOTc5LDYgKzk4Miw1MyBAQCBnZGJweV9wcmlu dF9zdGFjayAodm9pZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgogICAg IFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLwpAQCAtNTA5MSw3ICs4MzkwLDcgQEAgaW5kZXggMTll YjdiNS4uMGU3MjU2ZSAxMDA2NDQKICAKICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X2dldF9j dXJyZW50X3Byb2dzcGFjZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQot QEAgLTE0MTUsNiArMTQ2NSw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQor QEAgLTE0MjAsNiArMTQ3MCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQog ICAgICAiR2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIsIChQeUNG dW5jdGlvbikgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JE UywKICAgICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTUxMTMsOCArODQxMiw2Mjcg QEAgaW5kZXggZGQ3MDY2Zi4uZjBmNmU5MCAxMDA2NDQKICBpbnQgYXBwbHlfdmFsX3ByZXR0eV9w cmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJ ICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCitkaWZmIC0tZ2l0IGEvZ2RiL3Jl Y29yZC5jIGIvZ2RiL3JlY29yZC5jCitpbmRleCBiYjBmZTUyLi5lYzQyYWFjIDEwMDY0NAorLS0t IGEvZ2RiL3JlY29yZC5jCisrKysgYi9nZGIvcmVjb3JkLmMKK0BAIC0zMiw2ICszMiw3IEBACisg I2luY2x1ZGUgImdjb3JlLmgiCisgI2luY2x1ZGUgImV2ZW50LWxvb3AuaCIKKyAjaW5jbHVkZSAi aW5mLWxvb3AuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorICNpbmNsdWRlIDxzaWduYWwu aD4KKyAKK0BAIC0yNjM4LDcgKzI2MzksNyBAQCByZWNvcmRfc2F2ZV9jbGVhbnVwcyAodm9pZCAq ZGF0YSkKKyAgIGJmZCAqb2JmZCA9IGRhdGE7CisgICBjaGFyICpwYXRobmFtZSA9IHhzdHJkdXAg KGJmZF9nZXRfZmlsZW5hbWUgKG9iZmQpKTsKKyAKKy0gIGJmZF9jbG9zZSAob2JmZCk7CisrICBn ZGJfYmZkX3VucmVmIChvYmZkKTsKKyAgIHVubGluayAocGF0aG5hbWUpOworICAgeGZyZWUgKHBh dGhuYW1lKTsKKyB9CitAQCAtMjg1NCw3ICsyODU1LDcgQEAgY21kX3JlY29yZF9zYXZlIChjaGFy ICphcmdzLCBpbnQgZnJvbV90dHkpCisgICAgIH0KKyAKKyAgIGRvX2NsZWFudXBzIChzZXRfY2xl YW51cHMpOworLSAgYmZkX2Nsb3NlIChvYmZkKTsKKysgIGdkYl9iZmRfdW5yZWYgKG9iZmQpOwor ICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKKyAKKyAgIC8qIFN1Y2NlZWRlZC4g ICovCitkaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jIGIvZ2RiL3JlbW90ZS1tMzJy LXNkaS5jCitpbmRleCA0N2Y0NDA1Li5iNGI3MzI0IDEwMDY0NAorLS0tIGEvZ2RiL3JlbW90ZS1t MzJyLXNkaS5jCisrKysgYi9nZGIvcmVtb3RlLW0zMnItc2RpLmMKK0BAIC0zOSw2ICszOSw3IEBA CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRl IDx0aW1lLmg+CisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAKKyAjaW5jbHVkZSAic2VyaWFs LmgiCitAQCAtMTI1NywxMyArMTI1OCwxMyBAQCBtMzJyX2xvYWQgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSkKKyAgIGlmICghZmlsZW5hbWUpCisgICAgIGZpbGVuYW1lID0gZ2V0X2V4ZWNfZmls ZSAoMSk7CisgCistICBwYmZkID0gYmZkX29wZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0KTsKKysg IHBiZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0KSk7Cisg ICBpZiAocGJmZCA9PSBOVUxMKQorICAgICB7CisgICAgICAgcGVycm9yX3dpdGhfbmFtZSAoZmls ZW5hbWUpOworICAgICAgIHJldHVybjsKKyAgICAgfQorLSAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwX2JmZF9jbG9zZSAocGJmZCk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfYmZkX3Vu cmVmIChwYmZkKTsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAocGJmZCwgYmZkX29iamVj dCkpCisgICAgIGVycm9yIChfKCJcIiVzXCIgaXMgbm90IGFuIG9iamVjdCBmaWxlOiAlcyIpLCBm aWxlbmFtZSwKK2RpZmYgLS1naXQgYS9nZGIvcmVtb3RlLW1pcHMuYyBiL2dkYi9yZW1vdGUtbWlw cy5jCitpbmRleCBiYWJiZjE5Li5iNDYzMjVmIDEwMDY0NAorLS0tIGEvZ2RiL3JlbW90ZS1taXBz LmMKKysrKyBiL2dkYi9yZW1vdGUtbWlwcy5jCitAQCAtMzYsNiArMzYsNyBAQAorICNpbmNsdWRl IDxjdHlwZS5oPgorICNpbmNsdWRlICJtaXBzLXRkZXAuaCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFk LmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAMCisgCisgLyogQnJlYWtwb2ludCB0eXBlcy4g IFZhbHVlcyAwLCAxLCBhbmQgMiBtdXN0IGFncmVlIHdpdGggdGhlIHdhdGNoCitAQCAtMjc4Mywy MCArMjc4NCwyMyBAQCBtaXBzX2xvYWRfc3JlYyAoY2hhciAqYXJncykKKyAgIHVuc2lnbmVkIGlu dCBpOworICAgdW5zaWduZWQgaW50IHNyZWNfZnJhbWUgPSAyMDA7CisgICBpbnQgcmVjbGVuOwor KyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgICBzdGF0aWMgaW50IGhhc2htYXJrID0gMTsK KyAKKyAgIGJ1ZmZlciA9IGFsbG9jYSAoc3JlY19mcmFtZSAqIDIgKyAyNTYpOworIAorLSAgYWJm ZCA9IGJmZF9vcGVuciAoYXJncywgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVu ciAoYXJncywgMCkpOworICAgaWYgKCFhYmZkKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRl cmVkICgiVW5hYmxlIHRvIG9wZW4gZmlsZSAlc1xuIiwgYXJncyk7CisgICAgICAgcmV0dXJuOwor ICAgICB9CisgCisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7Cisg ICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkKKyAgICAgewor ICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlXG4iKTsK KysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgICAgICAgcmV0dXJuOworICAgICB9Cisg CitAQCAtMjg1MCw2ICsyODU0LDcgQEAgbWlwc19sb2FkX3NyZWMgKGNoYXIgKmFyZ3MpCisgICBz ZW5kX3NyZWMgKHNyZWMsIHJlY2xlbiwgYWJmZC0+c3RhcnRfYWRkcmVzcyk7CisgCisgICBzZXJp YWxfZmx1c2hfaW5wdXQgKG1pcHNfZGVzYyk7CisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Cisg fQorIAorIC8qCitAQCAtMzM2NiwyMCArMzM3MSwyMyBAQCBwbW9uX2xvYWRfZmFzdCAoY2hhciAq ZmlsZSkKKyAgIGludCBiaW50b3RhbCA9IDA7CisgICBpbnQgZmluYWwgPSAwOworICAgaW50IGZp bmlzaGVkID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworIAorICAgYnVmZmVyID0g KGNoYXIgKikgeG1hbGxvYyAoTUFYUkVDU0laRSArIDEpOworICAgYmluYnVmID0gKHVuc2lnbmVk IGNoYXIgKikgeG1hbGxvYyAoQklOQ0hVTkspOworIAorLSAgYWJmZCA9IGJmZF9vcGVuciAoZmls ZSwgMCk7CisrICBhYmZkID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZmlsZSwgMCkpOworICAg aWYgKCFhYmZkKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiVW5hYmxlIHRvIG9w ZW4gZmlsZSAlc1xuIiwgZmlsZSk7CisgICAgICAgcmV0dXJuOworICAgICB9CisrICBjbGVhbnVw ID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7CisgCisgICBpZiAoYmZkX2NoZWNrX2Zv cm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkKKyAgICAgeworICAgICAgIHByaW50Zl9maWx0 ZXJlZCAoIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlXG4iKTsKKysgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtMzUwMyw2ICszNTEx LDcgQEAgcG1vbl9sb2FkX2Zhc3QgKGNoYXIgKmZpbGUpCisgICAgICAgcG1vbl9lbmRfZG93bmxv YWQgKGZpbmFsLCBiaW50b3RhbCk7CisgICAgIH0KKyAKKysgIGRvX2NsZWFudXBzIChjbGVhbnVw KTsKKyAgIHJldHVybjsKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS5jIGIvZ2RiL3Jl bW90ZS5jCitpbmRleCAxYzkzNjdkLi42Y2NhYjU0IDEwMDY0NAorLS0tIGEvZ2RiL3JlbW90ZS5j CisrKysgYi9nZGIvcmVtb3RlLmMKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgImNsaS9j bGktZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgorICNpbmNsdWRlICJ0 YXJnZXQtZGVzY3JpcHRpb25zLmgiCisrI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAKKyAjaW5jbHVk ZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KK0BAIC05ODIzLDExICs5ODI0LDE1 IEBAIHJlbW90ZV9maWxlbmFtZV9wIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyBiZmQgKgorIHJl bW90ZV9iZmRfb3BlbiAoY29uc3QgY2hhciAqcmVtb3RlX2ZpbGUsIGNvbnN0IGNoYXIgKnRhcmdl dCkKKyB7CistICByZXR1cm4gYmZkX29wZW5yX2lvdmVjIChyZW1vdGVfZmlsZSwgdGFyZ2V0LAor LQkJCSAgcmVtb3RlX2JmZF9pb3ZlY19vcGVuLCBOVUxMLAorLQkJCSAgcmVtb3RlX2JmZF9pb3Zl Y19wcmVhZCwKKy0JCQkgIHJlbW90ZV9iZmRfaW92ZWNfY2xvc2UsCistCQkJICByZW1vdGVfYmZk X2lvdmVjX3N0YXQpOworKyAgYmZkICphYmZkID0gYmZkX29wZW5yX2lvdmVjIChyZW1vdGVfZmls ZSwgdGFyZ2V0LAorKwkJCSAgICAgICByZW1vdGVfYmZkX2lvdmVjX29wZW4sIE5VTEwsCisrCQkJ ICAgICAgIHJlbW90ZV9iZmRfaW92ZWNfcHJlYWQsCisrCQkJICAgICAgIHJlbW90ZV9iZmRfaW92 ZWNfY2xvc2UsCisrCQkJICAgICAgIHJlbW90ZV9iZmRfaW92ZWNfc3RhdCk7CisrCisrICBpZiAo YWJmZCAhPSBOVUxMKQorKyAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChhYmZkKTsKKysgIHJl dHVybiBhYmZkOworIH0KKyAKKyB2b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL3JzNjAwMC1uYXQuYyBi L2dkYi9yczYwMDAtbmF0LmMKK2luZGV4IDBhMjAwMGEuLjAxN2U5OTcgMTAwNjQ0CistLS0gYS9n ZGIvcnM2MDAwLW5hdC5jCisrKysgYi9nZGIvcnM2MDAwLW5hdC5jCitAQCAtNzMwLDcgKzczMCw3 IEBAIHN0YXRpYyBzdHJ1Y3Qgdm1hcCAqCisgYWRkX3ZtYXAgKExkSW5mbyAqbGRpKQorIHsKKyAg IGJmZCAqYWJmZCwgKmxhc3Q7CistICBjaGFyICptZW0sICpvYmpuYW1lLCAqZmlsZW5hbWU7Cisr ICBjaGFyICptZW0sICpmaWxlbmFtZTsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmo7CisgICBzdHJ1 Y3Qgdm1hcCAqdnA7CisgICBpbnQgZmQ7CitAQCAtNzQzLDIxICs3NDMsMjIgQEAgYWRkX3ZtYXAg KExkSW5mbyAqbGRpKQorICAgZmlsZW5hbWUgPSBMRElfRklMRU5BTUUgKGxkaSwgYXJjaDY0KTsK KyAgIG1lbSA9IGZpbGVuYW1lICsgc3RybGVuIChmaWxlbmFtZSkgKyAxOworICAgbWVtID0geHN0 cmR1cCAobWVtKTsKKy0gIG9iam5hbWUgPSB4c3RyZHVwIChmaWxlbmFtZSk7CisgCisgICBmZCA9 IExESV9GRCAobGRpLCBhcmNoNjQpOworICAgaWYgKGZkIDwgMCkKKyAgICAgLyogTm90ZSB0aGF0 IHRoaXMgb3BlbnMgaXQgb25jZSBmb3IgZXZlcnkgbWVtYmVyOyBhIHBvc3NpYmxlCisgICAgICAg IGVuaGFuY2VtZW50IHdvdWxkIGJlIHRvIG9ubHkgb3BlbiBpdCBvbmNlIGZvciBldmVyeSBvYmpl Y3QuICAqLworLSAgICBhYmZkID0gYmZkX29wZW5yIChvYmpuYW1lLCBnbnV0YXJnZXQpOworKyAg ICBhYmZkID0gYmZkX29wZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0KTsKKyAgIGVsc2UKKy0gICAg YWJmZCA9IGJmZF9mZG9wZW5yIChvYmpuYW1lLCBnbnV0YXJnZXQsIGZkKTsKKysgICAgYWJmZCA9 IGJmZF9mZG9wZW5yIChmaWxlbmFtZSwgZ251dGFyZ2V0LCBmZCk7CisrICBhYmZkID0gZ2RiX2Jm ZF9yZWYgKGFiZmQpOworICAgaWYgKCFhYmZkKQorICAgICB7CisgICAgICAgd2FybmluZyAoXygi Q291bGQgbm90IG9wZW4gYCVzJyBhcyBhbiBleGVjdXRhYmxlIGZpbGU6ICVzIiksCistCSAgICAg ICBvYmpuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisrCSAgICAgICBmaWxl bmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworICAgICAgIHJldHVybiBOVUxM OworICAgICB9CisrICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChhYmZkKTsKKyAKKyAgIC8qIE1h a2Ugc3VyZSB3ZSBoYXZlIGFuIG9iamVjdCBmaWxlLiAgKi8KKyAKK0BAIC03NjgsMjMgKzc2OSwy MyBAQCBhZGRfdm1hcCAoTGRJbmZvICpsZGkpCisgICAgIHsKKyAgICAgICBsYXN0ID0gMDsKKyAg ICAgICAvKiBGSVhNRT8/PyBhbSBJIHRvc3NpbmcgQkZEcz8gIGJmZD8gICovCistICAgICAgd2hp bGUgKChsYXN0ID0gYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAoYWJmZCwgbGFzdCkpKQor KyAgICAgIHdoaWxlICgobGFzdCA9IGdkYl9iZmRfcmVmIChiZmRfb3BlbnJfbmV4dF9hcmNoaXZl ZF9maWxlIChhYmZkLCBsYXN0KSkpKQorIAlpZiAoc3RyY21wIChtZW0sIGxhc3QtPmZpbGVuYW1l KSA9PSAwKQorIAkgIGJyZWFrOworIAorICAgICAgIGlmICghbGFzdCkKKyAJeworLQkgIHdhcm5p bmcgKF8oIlwiJXNcIjogbWVtYmVyIFwiJXNcIiBtaXNzaW5nLiIpLCBvYmpuYW1lLCBtZW0pOwor LQkgIGJmZF9jbG9zZSAoYWJmZCk7CisrCSAgd2FybmluZyAoXygiXCIlc1wiOiBtZW1iZXIgXCIl c1wiIG1pc3NpbmcuIiksIGZpbGVuYW1lLCBtZW0pOworKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQp OworIAkgIHJldHVybiBOVUxMOworIAl9CisgCisgICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0 IChsYXN0LCBiZmRfb2JqZWN0KSkKKyAJeworIAkgIHdhcm5pbmcgKF8oIlwiJXNcIjogbWVtYmVy IFwiJXNcIiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVzLiIpLAorLQkJICAgb2JqbmFtZSwg bWVtLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CistCSAgYmZkX2Nsb3NlIChsYXN0 KTsKKy0JICBiZmRfY2xvc2UgKGFiZmQpOworKwkJICAgZmlsZW5hbWUsIG1lbSwgYmZkX2Vycm1z ZyAoYmZkX2dldF9lcnJvciAoKSkpOworKwkgIGdkYl9iZmRfdW5yZWYgKGxhc3QpOworKwkgIGdk Yl9iZmRfdW5yZWYgKGFiZmQpOworIAkgIHJldHVybiBOVUxMOworIAl9CisgCitAQCAtNzkzLDEx ICs3OTQsMTEgQEAgYWRkX3ZtYXAgKExkSW5mbyAqbGRpKQorICAgZWxzZQorICAgICB7CisgICAg ICAgd2FybmluZyAoXygiXCIlc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVzLiIpLAor LQkgICAgICAgb2JqbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworLSAgICAg IGJmZF9jbG9zZSAoYWJmZCk7CisrCSAgICAgICBmaWxlbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dl dF9lcnJvciAoKSkpOworKyAgICAgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworICAgICAgIHJldHVy biBOVUxMOworICAgICB9CistICBvYmogPSBhbGxvY2F0ZV9vYmpmaWxlICh2cC0+YmZkLCAwKTsK KysgIG9iaiA9IGFsbG9jYXRlX29iamZpbGUgKGdkYl9iZmRfcmVmICh2cC0+YmZkKSwgMCk7Cisg ICB2cC0+b2JqZmlsZSA9IG9iajsKKyAKKyAgIC8qIEFsd2F5cyBhZGQgc3ltYm9scyBmb3IgdGhl IG1haW4gb2JqZmlsZS4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWRhcndpbi5jIGIvZ2Ri L3NvbGliLWRhcndpbi5jCitpbmRleCBkNTJmYjQ2Li43MTA5ZWFkIDEwMDY0NAorLS0tIGEvZ2Ri L3NvbGliLWRhcndpbi5jCisrKysgYi9nZGIvc29saWItZGFyd2luLmMKK0BAIC0yOCw2ICsyOCw3 IEBACisgI2luY2x1ZGUgImluZmVyaW9yLmgiCisgI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisgI2lu Y2x1ZGUgImdkYnRocmVhZC5oIgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisgCisgI2luY2x1ZGUg ImdkYl9hc3NlcnQuaCIKKyAKK0BAIC0zNTYsNiArMzU3LDcgQEAgZGFyd2luX3NvbGliX2dldF9h bGxfaW1hZ2VfaW5mb19hZGRyX2F0X2luaXQgKHN0cnVjdCBkYXJ3aW5faW5mbyAqaW5mbykKKyAg IGdkYl9ieXRlICppbnRlcnBfbmFtZTsKKyAgIENPUkVfQUREUiBsb2FkX2FkZHIgPSAwOworICAg YmZkICpkeWxkX2JmZCA9IE5VTEw7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKKyAKKyAg IC8qIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgd29yayB3aXRoIGFuIGF0dGFjaGVkIHByb2Nlc3MuICAq LworICAgaWYgKGN1cnJlbnRfaW5mZXJpb3IgKCktPmF0dGFjaF9mbGFnKQorQEAgLTM2NiwyNCAr MzY4LDMwIEBAIGRhcndpbl9zb2xpYl9nZXRfYWxsX2ltYWdlX2luZm9fYWRkcl9hdF9pbml0IChz dHJ1Y3QgZGFyd2luX2luZm8gKmluZm8pCisgICBpZiAoIWludGVycF9uYW1lKQorICAgICByZXR1 cm47CisgCisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwor KworICAgLyogQ3JlYXRlIGEgYmZkIGZvciB0aGUgaW50ZXJwcmV0ZXIuICAqLworLSAgZHlsZF9i ZmQgPSBiZmRfb3BlbnIgKGludGVycF9uYW1lLCBnbnV0YXJnZXQpOworKyAgZHlsZF9iZmQgPSBn ZGJfYmZkX3JlZiAoYmZkX29wZW5yIChpbnRlcnBfbmFtZSwgZ251dGFyZ2V0KSk7CisgICBpZiAo ZHlsZF9iZmQpCisgICAgIHsKKyAgICAgICBiZmQgKnN1YjsKKyAKKysgICAgICBtYWtlX2NsZWFu dXBfYmZkX3VucmVmIChkeWxkX2JmZCk7CisgICAgICAgc3ViID0gYmZkX21hY2hfb19mYXRfZXh0 cmFjdCAoZHlsZF9iZmQsIGJmZF9vYmplY3QsCisgCQkJCSAgICBnZGJhcmNoX2JmZF9hcmNoX2lu Zm8gKHRhcmdldF9nZGJhcmNoKSk7CisgICAgICAgaWYgKHN1YikKKy0JZHlsZF9iZmQgPSBzdWI7 CistICAgICAgZWxzZQorIAl7CistCSAgYmZkX2Nsb3NlIChkeWxkX2JmZCk7CistCSAgZHlsZF9i ZmQgPSBOVUxMOworKwkgIGR5bGRfYmZkID0gZ2RiX2JmZF9yZWYgKHN1Yik7CisrCSAgbWFrZV9j bGVhbnVwX2JmZF91bnJlZiAoc3ViKTsKKyAJfQorKyAgICAgIGVsc2UKKysJZHlsZF9iZmQgPSBO VUxMOworICAgICB9CisgICBpZiAoIWR5bGRfYmZkKQorLSAgICByZXR1cm47CisrICAgIHsKKysg ICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisgCisg ICAvKiBXZSBmaW5kIHRoZSBkeW5hbWljIGxpbmtlcidzIGJhc2UgYWRkcmVzcyBieSBleGFtaW5p bmcKKyAgICAgIHRoZSBjdXJyZW50IHBjICh3aGljaCBzaG91bGQgcG9pbnQgYXQgdGhlIGVudHJ5 IHBvaW50IGZvciB0aGUKK0BAIC0zOTUsNyArNDAzLDcgQEAgZGFyd2luX3NvbGliX2dldF9hbGxf aW1hZ2VfaW5mb19hZGRyX2F0X2luaXQgKHN0cnVjdCBkYXJ3aW5faW5mbyAqaW5mbykKKyAgIGlu Zm8tPmFsbF9pbWFnZV9hZGRyID0KKyAgICAgbG9va3VwX3N5bWJvbF9mcm9tX2JmZCAoZHlsZF9i ZmQsICJfZHlsZF9hbGxfaW1hZ2VfaW5mb3MiKTsKKyAKKy0gIGJmZF9jbG9zZSAoZHlsZF9iZmQp OworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOworIAorICAgaWYgKGluZm8tPmFsbF9pbWFnZV9h ZGRyID09IDApCisgICAgIHJldHVybjsKK0BAIC01MDksMTcgKzUxNywxMCBAQCBkYXJ3aW5fYmZk X29wZW4gKGNoYXIgKnBhdGhuYW1lKQorIAkJCQlnZGJhcmNoX2JmZF9hcmNoX2luZm8gKHRhcmdl dF9nZGJhcmNoKSk7CisgICBpZiAoIXJlcykKKyAgICAgeworLSAgICAgIGJmZF9jbG9zZSAoYWJm ZCk7CistICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZm91bmRfcGF0aG5hbWUpOworKyAgICAg IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOworICAgICAgIGVycm9yIChfKCJgJXMnOiBu b3QgYSBzaGFyZWQtbGlicmFyeTogJXMiKSwKKy0JICAgICBmb3VuZF9wYXRobmFtZSwgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKwkgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQp LCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisgICAgIH0KKy0KKy0gIC8qIE1ha2Ug c3VyZSB0aGF0IHRoZSBmaWxlbmFtZSBpcyBtYWxsb2MnZWQuICBUaGUgY3VycmVudCBmaWxlbmFt ZQorLSAgICAgZm9yIGZhdC1iaW5hcmllcyBCRkRzIGlzIGEgbmFtZSB0aGF0IHdhcyBnZW5lcmF0 ZWQgYnkgQkZELCB1c3VhbGx5CistICAgICBhIHN0YXRpYyBzdHJpbmcgY29udGFpbmluZyB0aGUg bmFtZSBvZiB0aGUgYXJjaGl0ZWN0dXJlLiAgKi8KKy0gIHJlcy0+ZmlsZW5hbWUgPSB4c3RyZHVw IChwYXRobmFtZSk7CistCisgICByZXR1cm4gcmVzOworIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIv c29saWItZHNidC5jIGIvZ2RiL3NvbGliLWRzYnQuYworaW5kZXggMjUwMGMxZi4uZmNjMDFhOCAx MDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1kc2J0LmMKKysrKyBiL2dkYi9zb2xpYi1kc2J0LmMKK0BA IC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgImdkYmNtZC5oIgorICNpbmNsdWRlICJlbGYtYmZk LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAor ICNkZWZpbmUgR09UX01PRFVMRV9PRkZTRVQgNAorIAorQEAgLTg5OSw3ICs5MDAsNyBAQCBlbmFi bGVfYnJlYWsyICh2b2lkKQorIAl7CisgCSAgd2FybmluZyAoXygiQ291bGQgbm90IGZpbmQgc3lt Ym9sIF9kbF9kZWJ1Z19hZGRyIGluIGR5bmFtaWMgbGlua2VyIikpOworIAkgIGVuYWJsZV9icmVh a19mYWlsdXJlX3dhcm5pbmcgKCk7CistCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJf YmZkX3VucmVmICh0bXBfYmZkKTsKKyAJICByZXR1cm4gMDsKKyAJfQorIAorQEAgLTk0OCwxMyAr OTQ5LDEzIEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCisgCQkgICAgICIoYXQgYWRkcmVzcyAlcykg ZnJvbSBkeW5hbWljIGxpbmtlciIpLAorIAkgICAgICAgICAgIGhleF9zdHJpbmdfY3VzdG9tIChh ZGRyICsgOCwgOCkpOworIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5pbmcgKCk7CistCSAg YmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKKyAJICBy ZXR1cm4gMDsKKyAJfQorICAgICAgIGFkZHIgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGFk ZHJfYnVmLCBzaXplb2YgYWRkcl9idWYsIGJ5dGVfb3JkZXIpOworIAorICAgICAgIC8qIFdlJ3Jl IGRvbmUgd2l0aCB0aGUgdGVtcG9yYXJ5IGJmZC4gICovCistICAgICAgYmZkX2Nsb3NlICh0bXBf YmZkKTsKKysgICAgICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKKyAKKyAgICAgICAvKiBXZSdy ZSBhbHNvIGRvbmUgd2l0aCB0aGUgbG9hZG1hcC4gICovCisgICAgICAgeGZyZWUgKGxkbSk7Citk aWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWZydi5jIGIvZ2RiL3NvbGliLWZydi5jCitpbmRleCAyZjJj OGIwLi4wZjU5NTM1IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLWZydi5jCisrKysgYi9nZGIvc29s aWItZnJ2LmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgImdkYmNtZC5oIgorICNpbmNs dWRlICJlbGYvZnJ2LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysjaW5jbHVkZSAiZ2Ri X2JmZC5oIgorIAorIC8qIEZsYWcgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgaW50ZXJuYWwgZGVi dWcgbWVzc2FnZXMgc2hvdWxkIGJlIHByaW50ZWQuICAqLworIHN0YXRpYyBpbnQgc29saWJfZnJ2 X2RlYnVnOworQEAgLTU3NCw3ICs1NzUsNyBAQCBlbmFibGVfYnJlYWsyICh2b2lkKQorIAl7Cisg CSAgd2FybmluZyAoXygiVW5hYmxlIHRvIGRldGVybWluZSBkeW5hbWljIGxpbmtlciBsb2FkbWFw IGFkZHJlc3MuIikpOworIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5pbmcgKCk7CistCSAg YmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKKyAJICBy ZXR1cm4gMDsKKyAJfQorIAorQEAgLTU4OSw3ICs1OTAsNyBAQCBlbmFibGVfYnJlYWsyICh2b2lk KQorIAkgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBsb2FkIGR5bmFtaWMgbGlua2VyIGxvYWRtYXAg YXQgYWRkcmVzcyAlcy4iKSwKKyAJICAgICAgICAgICBoZXhfc3RyaW5nX2N1c3RvbSAoaW50ZXJw X2xvYWRtYXBfYWRkciwgOCkpOworIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5pbmcgKCk7 CistCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKKysJICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsK KyAJICByZXR1cm4gMDsKKyAJfQorIAorQEAgLTYyMyw3ICs2MjQsNyBAQCBlbmFibGVfYnJlYWsy ICh2b2lkKQorIAkgIHdhcm5pbmcgKF8oIkNvdWxkIG5vdCBmaW5kIHN5bWJvbCBfZGxfZGVidWdf YWRkciAiCisgCQkgICAgICJpbiBkeW5hbWljIGxpbmtlciIpKTsKKyAJICBlbmFibGVfYnJlYWtf ZmFpbHVyZV93YXJuaW5nICgpOworLQkgIGJmZF9jbG9zZSAodG1wX2JmZCk7CisrCSAgZ2RiX2Jm ZF91bnJlZiAodG1wX2JmZCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKyAKK0BAIC02NzQsNyArNjc1 LDcgQEAgZW5hYmxlX2JyZWFrMiAodm9pZCkKKyAJCSAgICAgIihhdCBhZGRyZXNzICVzKSBmcm9t IGR5bmFtaWMgbGlua2VyIiksCisgCSAgICAgICAgICAgaGV4X3N0cmluZ19jdXN0b20gKGFkZHIg KyA4LCA4KSk7CisgCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKKy0JICBiZmRf Y2xvc2UgKHRtcF9iZmQpOworKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOworIAkgIHJldHVy biAwOworIAl9CisgICAgICAgYWRkciA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYWRkcl9i dWYsIHNpemVvZiBhZGRyX2J1ZiwgYnl0ZV9vcmRlcik7CitAQCAtNjg2LDEzICs2ODcsMTMgQEAg ZW5hYmxlX2JyZWFrMiAodm9pZCkKKyAJCSAgICAgIihhdCBhZGRyZXNzICVzKSBmcm9tIGR5bmFt aWMgbGlua2VyIiksCisgCSAgICAgICAgICAgaGV4X3N0cmluZ19jdXN0b20gKGFkZHIsIDgpKTsK KyAJICBlbmFibGVfYnJlYWtfZmFpbHVyZV93YXJuaW5nICgpOworLQkgIGJmZF9jbG9zZSAodG1w X2JmZCk7CisrCSAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCSAgcmV0dXJuIDA7CisgCX0K KyAgICAgICBhZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChhZGRyX2J1Ziwgc2l6ZW9m IGFkZHJfYnVmLCBieXRlX29yZGVyKTsKKyAKKyAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhl IHRlbXBvcmFyeSBiZmQuICAqLworLSAgICAgIGJmZF9jbG9zZSAodG1wX2JmZCk7CisrICAgICAg Z2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCisgICAgICAgLyogV2UncmUgYWxzbyBkb25lIHdp dGggdGhlIGxvYWRtYXAuICAqLworICAgICAgIHhmcmVlIChsZG0pOworZGlmZiAtLWdpdCBhL2dk Yi9zb2xpYi1wYTY0LmMgYi9nZGIvc29saWItcGE2NC5jCitpbmRleCAyYjhkMDYxLi5iNTViNjdj IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLXBhNjQuYworKysrIGIvZ2RiL3NvbGliLXBhNjQuYwor QEAgLTM2Miw3ICszNjIsNyBAQCBtYW5wYWdlIGZvciBtZXRob2RzIHRvIHByaXZhdGVseSBtYXAg c2hhcmVkIGxpYnJhcnkgdGV4dC4iKSk7CisgCSB0byBmaW5kIGFueSBtYWdpYyBmb3JtdWxhIHRv IGZpbmQgaXQgZm9yIFNvbGFyaXMgKGFwcGVhcnMgdG8KKyAJIGJlIHRyaXZpYWwgb24gR05VL0xp bnV4KS4gIFRoZXJlZm9yZSwgd2UgaGF2ZSB0byB0cnkgYW4gYWx0ZXJuYXRlCisgCSBtZWNoYW5p c20gdG8gZmluZCB0aGUgZHluYW1pYyBsaW5rZXIncyBiYXNlIGFkZHJlc3MuICAqLworLSAgICAg IHRtcF9iZmQgPSBiZmRfb3BlbnIgKGJ1ZiwgZ251dGFyZ2V0KTsKKysgICAgICB0bXBfYmZkID0g Z2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoYnVmLCBnbnV0YXJnZXQpKTsKKyAgICAgICBpZiAodG1w X2JmZCA9PSBOVUxMKQorIAlyZXR1cm47CisgCitAQCAtMzcxLDcgKzM3MSw3IEBAIG1hbnBhZ2Ug Zm9yIG1ldGhvZHMgdG8gcHJpdmF0ZWx5IG1hcCBzaGFyZWQgbGlicmFyeSB0ZXh0LiIpKTsKKyAJ eworIAkgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBncm9rIGR5bmFtaWMgbGlua2VyICVzIGFzIGFu IG9iamVjdCBmaWxlIiksCisgCQkgICBidWYpOworLQkgIGJmZF9jbG9zZSAodG1wX2JmZCk7Cisr CSAgZ2RiX2JmZF91bnJlZiAodG1wX2JmZCk7CisgCSAgcmV0dXJuOworIAl9CisgCitAQCAtNDAx LDcgKzQwMSw3IEBAIG1hbnBhZ2UgZm9yIG1ldGhvZHMgdG8gcHJpdmF0ZWx5IG1hcCBzaGFyZWQg bGlicmFyeSB0ZXh0LiIpKTsKKyAgICAgICB9CisgCisgICAgICAgLyogV2UncmUgZG9uZSB3aXRo IHRoZSB0ZW1wb3JhcnkgYmZkLiAgKi8KKy0gICAgICBiZmRfY2xvc2UgKHRtcF9iZmQpOworKyAg ICAgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOworICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBh L2dkYi9zb2xpYi1zcHUuYyBiL2dkYi9zb2xpYi1zcHUuYworaW5kZXggYjU0NTRlNy4uNWVlYWU2 MiAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1zcHUuYworKysrIGIvZ2RiL3NvbGliLXNwdS5jCitA QCAtMzYsNiArMzYsNyBAQAorICNpbmNsdWRlICJicmVha3BvaW50LmgiCisgI2luY2x1ZGUgImdk YnRocmVhZC5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1ZGUgImdkYl9iZmQu aCIKKyAKKyAjaW5jbHVkZSAic3B1LXRkZXAuaCIKKyAKK0BAIC0zMjUsMTkgKzMyNiwyMCBAQCBz cHVfYmZkX2ZvcGVuIChjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRkcikKKyAgIENPUkVfQUREUiAq b3Blbl9jbG9zdXJlID0geG1hbGxvYyAoc2l6ZW9mIChDT1JFX0FERFIpKTsKKyAgICpvcGVuX2Ns b3N1cmUgPSBhZGRyOworIAorLSAgbmJmZCA9IGJmZF9vcGVucl9pb3ZlYyAoeHN0cmR1cCAobmFt ZSksICJlbGYzMi1zcHUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3B1X2JmZF9pb3Zl Y19vcGVuLCBvcGVuX2Nsb3N1cmUsCistICAgICAgICAgICAgICAgICAgICAgICAgICBzcHVfYmZk X2lvdmVjX3ByZWFkLCBzcHVfYmZkX2lvdmVjX2Nsb3NlLAorLQkJCSAgc3B1X2JmZF9pb3ZlY19z dGF0KTsKKysgIG5iZmQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yX2lvdmVjIChuYW1lLCAiZWxm MzItc3B1IiwKKysJCQkJICAgICAgIHNwdV9iZmRfaW92ZWNfb3Blbiwgb3Blbl9jbG9zdXJlLAor KwkJCQkgICAgICAgc3B1X2JmZF9pb3ZlY19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKKysJ CQkJICAgICAgIHNwdV9iZmRfaW92ZWNfc3RhdCkpOworICAgaWYgKCFuYmZkKQorICAgICByZXR1 cm4gTlVMTDsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwgYmZkX29iamVjdCkp CisgICAgIHsKKy0gICAgICBiZmRfY2xvc2UgKG5iZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYg KG5iZmQpOworICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCisrICBnZGJfYmZkX3N0YXNo X2ZpbGVuYW1lIChuYmZkKTsKKyAgIHJldHVybiBuYmZkOworIH0KKyAKK2RpZmYgLS1naXQgYS9n ZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCitpbmRleCA5MDQzOWJhLi4wZmQ5NTVkIDEwMDY0NAor LS0tIGEvZ2RiL3NvbGliLmMKKysrKyBiL2dkYi9zb2xpYi5jCitAQCAtNDYsNiArNDYsNyBAQAor ICNpbmNsdWRlICJzb2xpYi5oIgorICNpbmNsdWRlICJpbnRlcnBzLmgiCisgI2luY2x1ZGUgImZp bGVzeXN0ZW0uaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorIAorIC8qIEFyY2hpdGVjdHVyZS1z cGVjaWZpYyBvcGVyYXRpb25zLiAgKi8KKyAKK0BAIC0zNjAsOSArMzYxLDkgQEAgc29saWJfZmlu ZCAoY2hhciAqaW5fcGF0aG5hbWUsIGludCAqZmQpCisgICAgaXQgaXMgdXNlZCBhcyBmaWxlIGhh bmRsZSB0byBvcGVuIHRoZSBmaWxlLiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBmaWxlCisgICAg Y291bGQgbm90IGJlIG9wZW5lZC4gIEhhbmRsZXMgYm90aCBsb2NhbCBhbmQgcmVtb3RlIGZpbGUg YWNjZXNzLgorIAorLSAgIFBBVEhOQU1FIG11c3QgYmUgbWFsbG9jJ2VkIGJ5IHRoZSBjYWxsZXIu ICBJZiBzdWNjZXNzZnVsLCB0aGUgbmV3IEJGRCdzCistICAgbmFtZSB3aWxsIHBvaW50IHRvIGl0 LiAgSWYgdW5zdWNjZXNzZnVsLCBQQVRITkFNRSB3aWxsIGJlIGZyZWVkIGFuZCB0aGUKKy0gICBG RCB3aWxsIGJlIGNsb3NlZCAodW5sZXNzIEZEIHdhcyAtMSkuICAqLworKyAgIFBBVEhOQU1FIG11 c3QgYmUgbWFsbG9jJ2VkIGJ5IHRoZSBjYWxsZXIuICBJdCB3aWxsIGJlIGZyZWVkIGJ5IHRoaXMK KysgICBmdW5jdGlvbi4gIElmIHVuc3VjY2Vzc2Z1bCwgdGhlIEZEIHdpbGwgYmUgY2xvc2VkICh1 bmxlc3MgRkQgd2FzCisrICAgLTEpLiAgKi8KKyAKKyBiZmQgKgorIHNvbGliX2JmZF9mb3BlbiAo Y2hhciAqcGF0aG5hbWUsIGludCBmZCkKK0BAIC0zODksNyArMzkwLDEwIEBAIHNvbGliX2JmZF9m b3BlbiAoY2hhciAqcGF0aG5hbWUsIGludCBmZCkKKyAJICAgICBwYXRobmFtZSwgYmZkX2Vycm1z ZyAoYmZkX2dldF9lcnJvciAoKSkpOworICAgICB9CisgCistICByZXR1cm4gYWJmZDsKKysgIGdk Yl9iZmRfc3Rhc2hfZmlsZW5hbWUgKGFiZmQpOworKyAgeGZyZWUgKHBhdGhuYW1lKTsKKysKKysg IHJldHVybiBnZGJfYmZkX3JlZiAoYWJmZCk7CisgfQorIAorIC8qIEZpbmQgc2hhcmVkIGxpYnJh cnkgUEFUSE5BTUUgYW5kIG9wZW4gYSBCRkQgZm9yIGl0LiAgKi8KK0BAIC00MjAsMTcgKzQyNCwx NiBAQCBzb2xpYl9iZmRfb3BlbiAoY2hhciAqcGF0aG5hbWUpCisgICAvKiBDaGVjayBiZmQgZm9y bWF0LiAgKi8KKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkpCisg ICAgIHsKKy0gICAgICBiZmRfY2xvc2UgKGFiZmQpOworLSAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGZvdW5kX3BhdGhuYW1lKTsKKysgICAgICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZk KTsKKyAgICAgICBlcnJvciAoXygiYCVzJzogbm90IGluIGV4ZWN1dGFibGUgZm9ybWF0OiAlcyIp LAorLQkgICAgIGZvdW5kX3BhdGhuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7 CisrCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJy b3IgKCkpKTsKKyAgICAgfQorIAorICAgLyogQ2hlY2sgYmZkIGFyY2guICAqLworICAgYiA9IGdk YmFyY2hfYmZkX2FyY2hfaW5mbyAodGFyZ2V0X2dkYmFyY2gpOworICAgaWYgKCFiLT5jb21wYXRp YmxlIChiLCBiZmRfZ2V0X2FyY2hfaW5mbyAoYWJmZCkpKQorICAgICB3YXJuaW5nIChfKCJgJXMn OiBTaGFyZWQgbGlicmFyeSBhcmNoaXRlY3R1cmUgJXMgaXMgbm90IGNvbXBhdGlibGUgIgorLSAg ICAgICAgICAgICAgICJ3aXRoIHRhcmdldCBhcmNoaXRlY3R1cmUgJXMuIiksIGZvdW5kX3BhdGhu YW1lLAorKyAgICAgICAgICAgICAgICJ3aXRoIHRhcmdldCBhcmNoaXRlY3R1cmUgJXMuIiksIGJm ZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAorICAgICAgICAgICAgICBiZmRfZ2V0X2FyY2hfaW5mbyAo YWJmZCktPnByaW50YWJsZV9uYW1lLCBiLT5wcmludGFibGVfbmFtZSk7CisgCisgICByZXR1cm4g YWJmZDsKK0BAIC00NjYsNyArNDY5LDcgQEAgc29saWJfbWFwX3NlY3Rpb25zIChzdHJ1Y3Qgc29f bGlzdCAqc28pCisgICAgIHJldHVybiAwOworIAorICAgLyogTGVhdmUgYmZkIG9wZW4sIGNvcmVf eGZlcl9tZW1vcnkgYW5kICJpbmZvIGZpbGVzIiBuZWVkIGl0LiAgKi8KKy0gIHNvLT5hYmZkID0g Z2RiX2JmZF9yZWYgKGFiZmQpOworKyAgc28tPmFiZmQgPSBhYmZkOworIAorICAgLyogY29weSBm dWxsIHBhdGggbmFtZSBpbnRvIHNvX25hbWUsIHNvIHRoYXQgbGF0ZXIgc3ltYm9sX2ZpbGVfYWRk CisgICAgICBjYW4gZmluZCBpdC4gICovCitAQCAtNjA4LDcgKzYxMSw3IEBAIHNvbGliX3JlYWRf c3ltYm9scyAoc3RydWN0IHNvX2xpc3QgKnNvLCBpbnQgZmxhZ3MpCisgCisgCSAgc2FwID0gYnVp bGRfc2VjdGlvbl9hZGRyX2luZm9fZnJvbV9zZWN0aW9uX3RhYmxlIChzby0+c2VjdGlvbnMsCisg CQkJCQkJCSAgICBzby0+c2VjdGlvbnNfZW5kKTsKKy0JICBzby0+b2JqZmlsZSA9IHN5bWJvbF9m aWxlX2FkZF9mcm9tX2JmZCAoc28tPmFiZmQsCisrCSAgc28tPm9iamZpbGUgPSBzeW1ib2xfZmls ZV9hZGRfZnJvbV9iZmQgKGdkYl9iZmRfcmVmIChzby0+YWJmZCksCisgCQkJCQkJICBmbGFncywg c2FwLCBPQkpGX1NIQVJFRCwKKyAJCQkJCQkgIE5VTEwpOworIAkgIHNvLT5vYmpmaWxlLT5hZGRy X2xvdyA9IHNvLT5hZGRyX2xvdzsKK0BAIC0xMjMzLDcgKzEyMzYsNyBAQCByZWxvYWRfc2hhcmVk X2xpYnJhcmllc18xIChpbnQgZnJvbV90dHkpCisgCXsKKyAJICBmb3VuZF9wYXRobmFtZSA9IHhz dHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVl LCBmb3VuZF9wYXRobmFtZSk7CistCSAgZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKKysJ ICBnZGJfYmZkX3VucmVmIChhYmZkKTsKKyAJfQorIAorICAgICAgIC8qIElmIHRoaXMgc2hhcmVk IGxpYnJhcnkgaXMgbm8gbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCBpdHMgcHJldmlvdXMKK2RpZmYg LS1naXQgYS9nZGIvc3B1LWxpbnV4LW5hdC5jIGIvZ2RiL3NwdS1saW51eC1uYXQuYworaW5kZXgg MmRmZWM4Yy4uMTJmODIxMSAxMDA2NDQKKy0tLSBhL2dkYi9zcHUtbGludXgtbmF0LmMKKysrKyBi L2dkYi9zcHUtbGludXgtbmF0LmMKK0BAIC0zMTUsMTYgKzMxNSwxNyBAQCBzcHVfYmZkX29wZW4g KFVMT05HRVNUIGFkZHIpCisgICBVTE9OR0VTVCAqb3Blbl9jbG9zdXJlID0geG1hbGxvYyAoc2l6 ZW9mIChVTE9OR0VTVCkpOworICAgKm9wZW5fY2xvc3VyZSA9IGFkZHI7CisgCistICBuYmZkID0g YmZkX29wZW5yX2lvdmVjICh4c3RyZHVwICgiPGluLW1lbW9yeT4iKSwgImVsZjMyLXNwdSIsCisr ICBuYmZkID0gYmZkX29wZW5yX2lvdmVjICgiPGluLW1lbW9yeT4iLCAiZWxmMzItc3B1IiwKKyAJ CQkgIHNwdV9iZmRfaW92ZWNfb3Blbiwgb3Blbl9jbG9zdXJlLAorIAkJCSAgc3B1X2JmZF9pb3Zl Y19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKKyAJCQkgIHNwdV9iZmRfaW92ZWNfc3RhdCk7 CisgICBpZiAoIW5iZmQpCisgICAgIHJldHVybiBOVUxMOworKyAgbmJmZCA9IGdkYl9iZmRfcmVm IChuYmZkKTsKKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwgYmZkX29iamVjdCkp CisgICAgIHsKKy0gICAgICBiZmRfY2xvc2UgKG5iZmQpOworKyAgICAgIGdkYl9iZmRfdW5yZWYg KG5iZmQpOworICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCiBkaWZmIC0tZ2l0IGEvZ2Ri L3N0YWNrLmMgYi9nZGIvc3RhY2suYwotaW5kZXggMDJlMzZjYS4uMDY2NDA3ZiAxMDA2NDQKK2lu ZGV4IDI1MjBlMmMuLjA0NzI0NzUgMTAwNjQ0CiAtLS0gYS9nZGIvc3RhY2suYwogKysrIGIvZ2Ri L3N0YWNrLmMKIEBAIC01MDksNiArNTA5LDEwIEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBz eW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKQEAgLTUxMjgsNiArOTA0Niwy MTQgQEAgaW5kZXggMDJlMzZjYS4uMDY2NDA3ZiAxMDA2NDQKICAgIGlmIChmdW5jKQogICAgICB7 CiAgICAgICAgc3RydWN0IGJsb2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKK2Rp ZmYgLS1naXQgYS9nZGIvc3ltZmlsZS1tZW0uYyBiL2dkYi9zeW1maWxlLW1lbS5jCitpbmRleCBl ODBmZDI1Li5hZDg3YWJkIDEwMDY0NAorLS0tIGEvZ2RiL3N5bWZpbGUtbWVtLmMKKysrKyBiL2dk Yi9zeW1maWxlLW1lbS5jCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRlICJvYnNlcnZlci5o IgorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1ZGUgImVsZi9jb21tb24uaCIKKysjaW5jbHVk ZSAiZ2RiX2JmZC5oIgorIAorIC8qIFZlcmlmeSBwYXJhbWV0ZXJzIG9mIHRhcmdldF9yZWFkX21l bW9yeV9iZmQgYW5kIHRhcmdldF9yZWFkX21lbW9yeSBhcmUKKyAgICBjb21wYXRpYmxlLiAgKi8K K0BAIC0xMDAsMTcgKzEwMSwxOSBAQCBzeW1ib2xfZmlsZV9hZGRfZnJvbV9tZW1vcnkgKHN0cnVj dCBiZmQgKnRlbXBsLCBDT1JFX0FERFIgYWRkciwgY2hhciAqbmFtZSwKKyAgIGlmIChuYmZkID09 IE5VTEwpCisgICAgIGVycm9yIChfKCJGYWlsZWQgdG8gcmVhZCBhIHZhbGlkIG9iamVjdCBmaWxl IGltYWdlIGZyb20gbWVtb3J5LiIpKTsKKyAKKysgIGdkYl9iZmRfcmVmIChuYmZkKTsKKyAgIGlm IChuYW1lID09IE5VTEwpCistICAgIG5iZmQtPmZpbGVuYW1lID0geHN0cmR1cCAoInNoYXJlZCBv YmplY3QgcmVhZCBmcm9tIHRhcmdldCBtZW1vcnkiKTsKKysgICAgbmJmZC0+ZmlsZW5hbWUgPSAi c2hhcmVkIG9iamVjdCByZWFkIGZyb20gdGFyZ2V0IG1lbW9yeSI7CisgICBlbHNlCistICAgIG5i ZmQtPmZpbGVuYW1lID0gbmFtZTsKKysgICAgeworKyAgICAgIG5iZmQtPmZpbGVuYW1lID0gbmFt ZTsKKysgICAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChuYmZkKTsKKysgICAgICB4ZnJlZSAo bmFtZSk7CisrICAgIH0KKyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwgYmZkX29i amVjdCkpCisgICAgIHsKKy0gICAgICAvKiBGSVhNRTogc2hvdWxkIGJlIGNoZWNraW5nIGZvciBl cnJvcnMgZnJvbSBiZmRfY2xvc2UgKGZvciBvbmUgdGhpbmcsCistICAgICAgICAgb24gZXJyb3Ig aXQgZG9lcyBub3QgZnJlZSBhbGwgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZQorLSAg ICAgICAgIGJmZCkuICAqLworLSAgICAgIGJmZF9jbG9zZSAobmJmZCk7CisrICAgICAgbWFrZV9j bGVhbnVwX2JmZF91bnJlZiAobmJmZCk7CisgICAgICAgZXJyb3IgKF8oIkdvdCBvYmplY3QgZmls ZSBmcm9tIG1lbW9yeSBidXQgY2FuJ3QgcmVhZCBzeW1ib2xzOiAlcy4iKSwKKyAJICAgICBiZmRf ZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7CisgICAgIH0KK2RpZmYgLS1naXQgYS9nZGIvc3lt ZmlsZS5jIGIvZ2RiL3N5bWZpbGUuYworaW5kZXggMDEyNTJlMi4uYzkwNDAxMSAxMDA2NDQKKy0t LSBhL2dkYi9zeW1maWxlLmMKKysrKyBiL2dkYi9zeW1maWxlLmMKK0BAIC01NSw2ICs1NSw3IEBA CisgI2luY2x1ZGUgInNvbGliLmgiCisgI2luY2x1ZGUgInJlbW90ZS5oIgorICNpbmNsdWRlICJz dGFjay5oIgorKyNpbmNsdWRlICJnZGJfYmZkLmgiCisgCisgI2luY2x1ZGUgPHN5cy90eXBlcy5o PgorICNpbmNsdWRlIDxmY250bC5oPgorQEAgLTEwNzQsNyArMTA3NSw3IEBAIHN5bWJvbF9maWxl X2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKKyAgICAgICBhZGRfZmxhZ3Mg Jj0gflNZTUZJTEVfTk9fUkVBRDsKKyAgICAgfQorIAorLSAgbXlfY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXBfYmZkX2Nsb3NlIChhYmZkKTsKKysgIG15X2NsZWFudXBzID0gbWFrZV9jbGVhbnVwX2Jm ZF91bnJlZiAoYWJmZCk7CisgCisgICAvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gYnVycCBpZiB3 ZSdkIGJlCisgICAgICBpbnRlcmFjdGl2ZWx5IHdpcGluZyBvdXQgYW55IGV4aXN0aW5nIHN5bWJv bHMuICAqLworQEAgLTEzNzIsNyArMTM3Myw3IEBAIHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3Rz IChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nIGNyYywKKyAgICAgICBpZiAoYWJmZF9z dGF0LnN0X2RldiA9PSBwYXJlbnRfc3RhdC5zdF9kZXYKKyAJICAmJiBhYmZkX3N0YXQuc3RfaW5v ID09IHBhcmVudF9zdGF0LnN0X2lubykKKyAJeworLQkgIGJmZF9jbG9zZSAoYWJmZCk7CisrCSAg Z2RiX2JmZF91bnJlZiAoYWJmZCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKyAgICAgICB2ZXJpZmll ZF9hc19kaWZmZXJlbnQgPSAxOworQEAgLTEzODIsNyArMTM4Myw3IEBAIHNlcGFyYXRlX2RlYnVn X2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nIGNyYywKKyAKKyAg IGZpbGVfY3JjX3AgPSBnZXRfZmlsZV9jcmMgKGFiZmQsICZmaWxlX2NyYyk7CisgCistICBiZmRf Y2xvc2UgKGFiZmQpOworKyAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgCisgICBpZiAoIWZpbGVf Y3JjX3ApCisgICAgIHJldHVybiAwOworQEAgLTE2OTAsMTUgKzE2OTEsMjIgQEAgc2V0X2luaXRp YWxfbGFuZ3VhZ2UgKHZvaWQpCisgfQorIAorIC8qIElmIE5BTUUgaXMgYSByZW1vdGUgbmFtZSBv cGVuIHRoZSBmaWxlIHVzaW5nIHJlbW90ZSBwcm90b2NvbCwgb3RoZXJ3aXNlCistICAgb3BlbiBp dCBub3JtYWxseS4gICovCisrICAgb3BlbiBpdCBub3JtYWxseS4gIFJldHVybnMgYSBuZXcgcmVm ZXJlbmNlIHRvIHRoZSBCRkQuICBPbiBlcnJvciwKKysgICByZXR1cm5zIE5VTEwgd2l0aCB0aGUg QkZEIGVycm9yIHNldC4gICovCisgCisgYmZkICoKKyBiZmRfb3Blbl9tYXliZV9yZW1vdGUgKGNv bnN0IGNoYXIgKm5hbWUpCisgeworICAgaWYgKHJlbW90ZV9maWxlbmFtZV9wIChuYW1lKSkKKy0g ICAgcmV0dXJuIHJlbW90ZV9iZmRfb3BlbiAobmFtZSwgZ251dGFyZ2V0KTsKKysgICAgcmV0dXJu IGdkYl9iZmRfcmVmIChyZW1vdGVfYmZkX29wZW4gKG5hbWUsIGdudXRhcmdldCkpOworICAgZWxz ZQorLSAgICByZXR1cm4gYmZkX29wZW5yIChuYW1lLCBnbnV0YXJnZXQpOworKyAgICB7CisrICAg ICAgYmZkICpyZXN1bHQgPSBnZGJfYmZkX3JlZiAoYmZkX29wZW5yIChuYW1lLCBnbnV0YXJnZXQp KTsKKysKKysgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCisrCWdkYl9iZmRfc3Rhc2hfZmlsZW5h bWUgKHJlc3VsdCk7CisrICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgfQorIH0KKyAKKyAKK0BA IC0xNzE2LDE5ICsxNzI0LDE0IEBAIHN5bWZpbGVfYmZkX29wZW4gKGNoYXIgKm5hbWUpCisgCisg ICBpZiAocmVtb3RlX2ZpbGVuYW1lX3AgKG5hbWUpKQorICAgICB7CistICAgICAgbmFtZSA9IHhz dHJkdXAgKG5hbWUpOworLSAgICAgIHN5bV9iZmQgPSByZW1vdGVfYmZkX29wZW4gKG5hbWUsIGdu dXRhcmdldCk7CisrICAgICAgc3ltX2JmZCA9IGdkYl9iZmRfcmVmIChyZW1vdGVfYmZkX29wZW4g KG5hbWUsIGdudXRhcmdldCkpOworICAgICAgIGlmICghc3ltX2JmZCkKKy0JeworLQkgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIG5hbWUpOworLQkgIGVycm9yIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRv IHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCistCQkgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJv ciAoKSkpOworLQl9CisrCWVycm9yIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRvIHJlYWQgc3ltYm9s czogJXMuIiksIG5hbWUsCisrCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7 CisgCisgICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBiZmRfb2JqZWN0KSkK KyAJeworLQkgIGJmZF9jbG9zZSAoc3ltX2JmZCk7CistCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg bmFtZSk7CisrCSAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoc3ltX2JmZCk7CisgCSAgZXJyb3Ig KF8oImAlcyc6IGNhbid0IHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCisgCQkgYmZkX2Vycm1z ZyAoYmZkX2dldF9lcnJvciAoKSkpOworIAl9CitAQCAtMTc1NywxMiArMTc2MCwxMSBAQCBzeW1m aWxlX2JmZF9vcGVuIChjaGFyICpuYW1lKQorICAgICAgIHBlcnJvcl93aXRoX25hbWUgKG5hbWUp OworICAgICB9CisgCistICAvKiBGcmVlIDFzdCBuZXcgbWFsbG9jJ2QgY29weSwgYnV0IGtlZXAg dGhlIDJuZCBtYWxsb2MnZCBjb3B5IGluCistICAgICBiZmQuICBJdCdsbCBiZSBmcmVlZCBpbiBm cmVlX29iamZpbGUoKS4gICovCisgICB4ZnJlZSAobmFtZSk7CisgICBuYW1lID0gYWJzb2x1dGVf bmFtZTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOworIAorLSAgc3ltX2JmZCA9IGJm ZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7CisrICBzeW1fYmZkID0g Z2RiX2JmZF9yZWYgKGJmZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYykp OworICAgaWYgKCFzeW1fYmZkKQorICAgICB7CisgICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg bmFtZSk7CitAQCAtMTc3MywxNyArMTc3NSwxMiBAQCBzeW1maWxlX2JmZF9vcGVuIChjaGFyICpu YW1lKQorIAorICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBiZmRfb2JqZWN0KSkK KyAgICAgeworLSAgICAgIC8qIEZJWE1FOiBzaG91bGQgYmUgY2hlY2tpbmcgZm9yIGVycm9ycyBm cm9tIGJmZF9jbG9zZSAoZm9yIG9uZQorLSAgICAgICAgIHRoaW5nLCBvbiBlcnJvciBpdCBkb2Vz IG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkCistICAgICAgICAgd2l0aCB0aGUg YmZkKS4gICovCistICAgICAgYmZkX2Nsb3NlIChzeW1fYmZkKTsJLyogVGhpcyBhbHNvIGNsb3Nl cyBkZXNjLiAgKi8KKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBuYW1lKTsKKysgICAgICBt YWtlX2NsZWFudXBfYmZkX3VucmVmIChzeW1fYmZkKTsKKyAgICAgICBlcnJvciAoXygiYCVzJzog Y2FuJ3QgcmVhZCBzeW1ib2xzOiAlcy4iKSwgbmFtZSwKKyAJICAgICBiZmRfZXJybXNnIChiZmRf Z2V0X2Vycm9yICgpKSk7CisgICAgIH0KKyAKKy0gIC8qIGJmZF91c3JkYXRhIGV4aXN0cyBmb3Ig YXBwbGljYXRpb25zIGFuZCBsaWJiZmQgbXVzdCBub3QgdG91Y2ggaXQuICAqLworLSAgZ2RiX2Fz c2VydCAoYmZkX3VzcmRhdGEgKHN5bV9iZmQpID09IE5VTEwpOworKyAgZ2RiX2JmZF9zdGFzaF9m aWxlbmFtZSAoc3ltX2JmZCk7CisgCisgICByZXR1cm4gc3ltX2JmZDsKKyB9CitAQCAtMjEwOSwx NyArMjEwNiwxNCBAQCBnZW5lcmljX2xvYWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyAg ICAgfQorIAorICAgLyogT3BlbiB0aGUgZmlsZSBmb3IgbG9hZGluZy4gICovCistICBsb2FkZmls ZV9iZmQgPSBiZmRfb3BlbnIgKGZpbGVuYW1lLCBnbnV0YXJnZXQpOworKyAgbG9hZGZpbGVfYmZk ID0gZ2RiX2JmZF9yZWYgKGJmZF9vcGVuciAoZmlsZW5hbWUsIGdudXRhcmdldCkpOworICAgaWYg KGxvYWRmaWxlX2JmZCA9PSBOVUxMKQorICAgICB7CisgICAgICAgcGVycm9yX3dpdGhfbmFtZSAo ZmlsZW5hbWUpOworICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgLyogRklYTUU6IHNob3Vs ZCBiZSBjaGVja2luZyBmb3IgZXJyb3JzIGZyb20gYmZkX2Nsb3NlIChmb3Igb25lIHRoaW5nLAor LSAgICAgb24gZXJyb3IgaXQgZG9lcyBub3QgZnJlZSBhbGwgdGhlIHN0b3JhZ2UgYXNzb2NpYXRl ZCB3aXRoIHRoZQorLSAgICAgYmZkKS4gICovCistICBtYWtlX2NsZWFudXBfYmZkX2Nsb3NlIChs b2FkZmlsZV9iZmQpOworKyAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAobG9hZGZpbGVfYmZkKTsK KyAKKyAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAobG9hZGZpbGVfYmZkLCBiZmRfb2JqZWN0KSkK KyAgICAgeworQEAgLTI1MTgsMTUgKzI1MTIsMTggQEAgcmVyZWFkX3N5bWJvbHMgKHZvaWQpCisg CSAgLyogQ2xlYW4gdXAgYW55IHN0YXRlIEJGRCBoYXMgc2l0dGluZyBhcm91bmQuICBXZSBkb24n dCBuZWVkCisgCSAgICAgdG8gY2xvc2UgdGhlIGRlc2NyaXB0b3IgYnV0IEJGRCBsYWNrcyBhIHdh eSBvZiBjbG9zaW5nIHRoZQorIAkgICAgIEJGRCB3aXRob3V0IGNsb3NpbmcgdGhlIGRlc2NyaXB0 b3IuICAqLworLQkgIG9iZmRfZmlsZW5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5v YmZkKTsKKy0JICBpZiAoIWJmZF9jbG9zZSAob2JqZmlsZS0+b2JmZCkpCistCSAgICBlcnJvciAo XygiQ2FuJ3QgY2xvc2UgQkZEIGZvciAlczogJXMiKSwgb2JqZmlsZS0+bmFtZSwKKy0JCSAgIGJm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKy0JICBvYmpmaWxlLT5vYmZkID0gYmZkX29w ZW5fbWF5YmVfcmVtb3RlIChvYmZkX2ZpbGVuYW1lKTsKKysJICB7CisrCSAgICBzdHJ1Y3QgYmZk ICpvYmZkID0gb2JqZmlsZS0+b2JmZDsKKysKKysJICAgIG9iZmRfZmlsZW5hbWUgPSBiZmRfZ2V0 X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKTsKKysJICAgIC8qIE9wZW4gdGhlIG5ldyBCRkQgYmVm b3JlIGZyZWVpbmcgdGhlIG9sZCBvbmUsIHNvIHRoYXQKKysJICAgICAgIHRoZSBmaWxlbmFtZSBy ZW1haW5zIGxpdmUuICAqLworKwkgICAgb2JqZmlsZS0+b2JmZCA9IGJmZF9vcGVuX21heWJlX3Jl bW90ZSAob2JmZF9maWxlbmFtZSk7CisrCSAgICBnZGJfYmZkX3VucmVmIChvYmZkKTsKKysJICB9 CisrCisgCSAgaWYgKG9iamZpbGUtPm9iZmQgPT0gTlVMTCkKKyAJICAgIGVycm9yIChfKCJDYW4n dCBvcGVuICVzIHRvIHJlYWQgc3ltYm9scy4iKSwgb2JqZmlsZS0+bmFtZSk7CistCSAgZWxzZQor LQkgICAgb2JqZmlsZS0+b2JmZCA9IGdkYl9iZmRfcmVmIChvYmpmaWxlLT5vYmZkKTsKKyAJICAv KiBiZmRfb3BlbnIgc2V0cyBjYWNoZWFibGUgdG8gdHJ1ZSwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50 LiAgKi8KKyAJICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKG9iamZpbGUtPm9iZmQsIGJmZF9vYmpl Y3QpKQorIAkgICAgZXJyb3IgKF8oIkNhbid0IHJlYWQgc3ltYm9scyBmcm9tICVzOiAlcy4iKSwg b2JqZmlsZS0+bmFtZSwKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2Vk X2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCiBpbmRl eCA2Nzg2MzljLi40N2EyMjAyIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3Bh Y2tlZF9hcnJheS5leHAKQEAgLTg2MDEsNyArMTI3MjcsNyBAQCBpbmRleCAwMDAwMDAwLi4yOTU2 MDJkCiArICB3cml0ZWxuKHMpOyB7IHNldCBicmVha3BvaW50IDIgaGVyZSB9CiArZW5kLgogZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi1pbmRleCA4M2ZmOGZlLi5iZGRiZjlmIDEw MDY0NAoraW5kZXggOTkzZTc3NC4uNTJkYmQxNyAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1mcmFtZS5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1mcmFtZS5leHAKIEBAIC03NCw4ICs3NCw2IEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgYmZy YW1lID09IGdkYi5uZXdlc3RfZnJhbWUoKSIgVHJ1ZSBcCkBAIC04NjIwLDEwICsxMjc0NiwxMCBA QCBpbmRleCA4M2ZmOGZlLi5iZGRiZjlmIDEwMDY0NAogKwogK2dkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6 eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS12YWx1ZS5leHAKLWluZGV4IGM5ZDhjOTcuLjQzMjRkYjAgMTAwNjQ0CitpbmRleCBhY2ZkODli Li5jNzdkOWMyIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotQEAgLTM2 MCw2ICszNjAsMTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKK0BAIC0zNTgs NiArMzU4LDE1IEBAIHByb2MgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aCB7fSB7CiAgICAgICJwcmlu dCB2YWx1ZSdzIHR5cGUiCiAgfQogIApAQCAtODYzOSw3ICsxMjc2NSw3IEBAIGluZGV4IGM5ZDhj OTcuLjQzMjRkYjAgMTAwNjQ0CiAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGludmFsaWQgc3Vic2Ny aXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0CiAgIyB0aGUgdHlwZSBvZiB0aGUgdmFs dWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCiAgIyBzdWJzY3JpcHQg b3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNDk2LDYgKzUwNSw3IEBAIHRlc3RfdmFsdWVfaW5f aW5mZXJpb3IKK0BAIC00OTQsNiArNTAzLDcgQEAgdGVzdF92YWx1ZV9pbl9pbmZlcmlvcgogIHRl c3RfaW5mZXJpb3JfZnVuY3Rpb25fY2FsbAogIHRlc3RfbGF6eV9zdHJpbmdzCiAgdGVzdF92YWx1 ZV9hZnRlcl9kZWF0aApAQCAtODY0OCw3ICsxMjc3NCw3IEBAIGluZGV4IGM5ZDhjOTcuLjQzMjRk YjAgMTAwNjQ0CiAgIyBUZXN0IGVpdGhlciBDIG9yIEMrKyB2YWx1ZXMuIAogIHRlc3Rfc3Vic2Ny aXB0X3JlZ3Jlc3Npb24gIiR7YmluZmlsZX0iICJjIgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRleCAxZGZlNTY0 Li4xODZmOWQ3IDEwMDY0NAoraW5kZXggMjg5ZDRkOC4uZGEwZDA4OSAxMDA2NDQKIC0tLSBhL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK IEBAIC0xNDIsNiArMTQyLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CkBAIC04NzcwLDEwICsx Mjg5NiwzMiBAQCBpbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAogIAogIHN0YXRpYyB2b2lk CiBkaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5kZXggMmQ2MDdlZi4u ZDY3ZTdkZCAxMDA2NDQKK2luZGV4IDU1NjYxNDkuLjZlMWFhMzQgMTAwNjQ0CiAtLS0gYS9nZGIv dXRpbHMuYwogKysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0xNzM3LDYgKzE3MzcsMzYgQEAgc2V0X2Jh dGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKK0BAIC0y Nyw2ICsyNyw3IEBACisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5jbHVkZSAiZ2RidGhy ZWFkLmgiCisgI2luY2x1ZGUgImZubWF0Y2guaCIKKysjaW5jbHVkZSAiZ2RiX2JmZC5oIgorICNp ZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNl bmRpZiAvKiBIQVZFX1NZU19SRVNPVVJDRV9IICovCitAQCAtMTk4LDExICsxOTksMTEgQEAgbWFr ZV9jbGVhbnVwX2R5bl9zdHJpbmdfZGVsZXRlIChkeW5fc3RyaW5nX3QgYXJnKQorIHN0YXRpYyB2 b2lkCisgZG9fYmZkX2Nsb3NlX2NsZWFudXAgKHZvaWQgKmFyZykKKyB7CistICBiZmRfY2xvc2Ug KGFyZyk7CisrICBnZGJfYmZkX3VucmVmIChhcmcpOworIH0KKyAKKyBzdHJ1Y3QgY2xlYW51cCAq CistbWFrZV9jbGVhbnVwX2JmZF9jbG9zZSAoYmZkICphYmZkKQorK21ha2VfY2xlYW51cF9iZmRf dW5yZWYgKGJmZCAqYWJmZCkKKyB7CisgICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb19iZmRfY2xv c2VfY2xlYW51cCwgYWJmZCk7CisgfQorQEAgLTE3MzgsNiArMTczOSwzNiBAQCBzZXRfYmF0Y2hf ZmxhZ19hbmRfbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lkKQogICAgcmV0dXJu IGJhY2tfdG87CiAgfQogIApAQCAtODgxMSw3ICsxMjk1OSw3IEBAIGluZGV4IDJkNjA3ZWYuLmQ2 N2U3ZGQgMTAwNjQ0CiAgCiAgc3RhdGljIHZvaWQKIGRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGgu YyBiL2dkYi92YWxhcml0aC5jCi1pbmRleCAwMjI1MzM5Li5mNzc1YmZjIDEwMDY0NAoraW5kZXgg OTZkNTQxMS4uMzdiZDQ2NCAxMDA2NDQKIC0tLSBhL2dkYi92YWxhcml0aC5jCiArKysgYi9nZGIv dmFsYXJpdGguYwogQEAgLTE5Nyw3ICsxOTcsMTAgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVl IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBpbnQgbG93ZXJib3VuZCkKQEAg LTg4MzgsNyArMTI5ODYsNyBAQCBpbmRleCAwMjI1MzM5Li5mNzc1YmZjIDEwMDY0NAogIH0KICAK IGRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IGZlYjQ3ZjUu LjZkMTRlZWUgMTAwNjQ0CitpbmRleCA5N2Q4ODliLi42YWU3N2I4IDEwMDY0NAogLS0tIGEvZ2Ri L3ZhbG9wcy5jCiArKysgYi9nZGIvdmFsb3BzLmMKIEBAIC00NSw2ICs0NSw3IEBACkBAIC04OTU1 LDcgKzEzMTAzLDcgQEAgaW5kZXggZmViNDdmNS4uNmQxNGVlZSAxMDA2NDQKICAgICAgfQogICAg ZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQogICAgICB7Ci1AQCAt MTUzMiw3ICsxNjA1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGJsb2NrICpiKQorQEAgLTE1MzAsNyArMTYwMywxOCBAQCBhZGRyZXNzX29mX3Zh cmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFM VUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAg IHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTg5NzUs NyArMTMxMjMsNyBAQCBpbmRleCBmZWI0N2Y1Li42ZDE0ZWVlIDEwMDY0NAogIAogICAgICAgIHJl dHVybiB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhZGRy KTsKICAgICAgfQotQEAgLTE2MzksNiArMTcyMyw3IEBAIHN0cnVjdCB2YWx1ZSAqCitAQCAtMTYz Nyw2ICsxNzIxLDcgQEAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVj dCB2YWx1ZSAqYXJnMSkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGFyZzEpKTsKQEAgLTg5ODMsNyArMTMxMzEsNyBAQCBpbmRleCBmZWI0N2Y1 Li42ZDE0ZWVlIDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRo aW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90 IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xNjQ4 LDggKzE3MzMsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitA QCAtMTY0Niw4ICsxNzMxLDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICph cmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJv ciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVt b3J5LiIpKTsKICAKQEAgLTg5OTcsNyArMTMxNDUsNyBAQCBpbmRleCBmZWI0N2Y1Li42ZDE0ZWVl IDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJl dHVybiBhIHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTM3NzIsNiArMzg2MSw4IEBAIHZh bHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgp CitAQCAtMzc2OSw2ICszODU4LDggQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXks IGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKICAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdl X3R5cGUpLAogIAkJCQkJbG93Ym91bmQsIAogIAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsK QEAgLTkwODAsNyArMTMyMjgsNyBAQCBpbmRleCBmYzU5NDJkLi44MzMzZWI0IDEwMDY0NAogIAog IC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBtZW1vcnkgYXQgYWRkcmVzcyBNRU1BRERSLCBw bGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWluZGV4 IGM2NGU1NWIuLmNkMDhhMGIgMTAwNjQ0CitpbmRleCBhNmJiNzE4Li43YjA4ZDFmIDEwMDY0NAog LS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCiBAQCAtNDIsNiArNDIsNyBAQApA QCAtOTE1Miw3ICsxMzMwMCw3IEBAIGluZGV4IGM2NGU1NWIuLmNkMDhhMGIgMTAwNjQ0CiAgDAog IC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBk ZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFu ZHMuCi1AQCAtMjA5NSw2ICsyMTMwLDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIxMTgsNiArMjE1MywzOCBAQCBjYWxsX2ludGVybmFs X2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+aGFu ZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQog IApAQCAtOTE5MSw3ICsxMzMzOSw3IEBAIGluZGV4IGM2NGU1NWIuLmNkMDhhMGIgMTAwNjQ0CiAg LyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0tIGl0IGlzIGp1 c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1FIiB3b3JrLiAg VGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1Yi1j b21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMjE0MiwxMSArMjIwOSwxMCBAQCBwcmVz ZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAorQEAgLTIxNjUsMTEgKzIyMzIsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3Qg dmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBodGFiX3QgY29w aWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBlKSA9PSBvYmpm aWxlKQpAQCAtOTIwNSw3ICsxMzM1Myw3IEBAIGluZGV4IGM2NGU1NWIuLmNkMDhhMGIgMTAwNjQ0 CiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTIxNjEsNyArMjIyNyw3IEBAIHBy ZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorQEAgLTIxODQsNyArMjI1MCw3IEBAIHByZXNlcnZlX29uZV9pbnRl cm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAogICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6CiAgICAgICAgaWYgKHZhci0+dS5pbnRl Z2VyLnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBlKSA9PSBvYmpmaWxl KQogIAl2YXItPnUuaW50ZWdlci50eXBlCkBAIC05MjE0LDcgKzEzMzYyLDcgQEAgaW5kZXggYzY0 ZTU1Yi4uY2QwOGEwYiAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5B TFZBUl9WQUxVRToKLUBAIC0zMjUzLDEwICszMzE5LDI3IEBAIHJlYWRqdXN0X2luZGlyZWN0X3Zh bHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICplbmNfdHlwZSwKK0BA IC0zMjc2LDEwICszMzQyLDI3IEBAIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKHN0cnVj dCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICplbmNfdHlwZSwKICBzdHJ1Y3QgdmFsdWUgKgog IGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTkyNDMsNyArMTMzOTEsNyBA QCBpbmRleCBjNjRlNTViLi5jZDA4YTBiIDEwMDY0NAogICAgcmV0dmFsID0gY29lcmNlX3JlZl9p Zl9jb21wdXRlZCAoYXJnKTsKICAgIGlmIChyZXR2YWwpCiAgICAgIHJldHVybiByZXR2YWw7Ci1A QCAtMzM2Myw0ICszNDQ2LDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikp OworQEAgLTMzODYsNCArMzQ2OSwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVk LiIpKTsKICAgIGFkZF9wcmVmaXhfY21kICgiZnVuY3Rpb24iLCBub19jbGFzcywgZnVuY3Rpb25f Y29tbWFuZCwgXygiXAogIFBsYWNlaG9sZGVyIGNvbW1hbmQgZm9yIHNob3dpbmcgaGVscCBvbiBj b252ZW5pZW5jZSBmdW5jdGlvbnMuIiksCiAgCQkgICZmdW5jdGlvbmxpc3QsICJmdW5jdGlvbiAi LCAwLCAmY21kbGlzdCk7CkBAIC05MjU1LDcgKzEzNDAzLDcgQEAgaW5kZXggYzY0ZTU1Yi4uY2Qw OGEwYiAxMDA2NDQKICsjZW5kaWYKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIv dmFsdWUuaAotaW5kZXggYjYzMGZjNy4uMmY5NWRiMiAxMDA2NDQKK2luZGV4IGQ4YjE1N2YuLmY0 OWU4MjcgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3ZhbHVlLmgKIEBAIC01 MzMsNiArNTMzLDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQg KHN0cnVjdCB0eXBlICp0eXBlLApAQCAtOTI2OSwzICsxMzQxNywzNCBAQCBpbmRleCBiNjMwZmM3 Li4yZjk1ZGIyIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgCitkaWZmIC0t Z2l0IGEvZ2RiL3dpbmRvd3MtbmF0LmMgYi9nZGIvd2luZG93cy1uYXQuYworaW5kZXggZjE2NTg4 YS4uNmJhOTJkOSAxMDA2NDQKKy0tLSBhL2dkYi93aW5kb3dzLW5hdC5jCisrKysgYi9nZGIvd2lu ZG93cy1uYXQuYworQEAgLTc1Miw3ICs3NTIsNyBAQCB3aW5kb3dzX21ha2Vfc28gKGNvbnN0IGNo YXIgKm5hbWUsIExQVk9JRCBsb2FkX2FkZHIpCisgICAgICAgYXNlY3Rpb24gKnRleHQgPSBOVUxM OworICAgICAgIENPUkVfQUREUiB0ZXh0X3ZtYTsKKyAKKy0gICAgICBhYmZkID0gYmZkX29wZW5y IChzby0+c29fbmFtZSwgInBlaS1pMzg2Iik7CisrICAgICAgYWJmZCA9IGdkYl9iZmRfcmVmIChi ZmRfb3BlbnIgKHNvLT5zb19uYW1lLCAicGVpLWkzODYiKSk7CisgCisgICAgICAgaWYgKCFhYmZk KQorIAlyZXR1cm4gc287CitAQCAtNzYyLDcgKzc2Miw3IEBAIHdpbmRvd3NfbWFrZV9zbyAoY29u c3QgY2hhciAqbmFtZSwgTFBWT0lEIGxvYWRfYWRkcikKKyAKKyAgICAgICBpZiAoIXRleHQpCisg CXsKKy0JICBiZmRfY2xvc2UgKGFiZmQpOworKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOworIAkg IHJldHVybiBzbzsKKyAJfQorIAorQEAgLTc3Myw3ICs3NzMsNyBAQCB3aW5kb3dzX21ha2Vfc28g KGNvbnN0IGNoYXIgKm5hbWUsIExQVk9JRCBsb2FkX2FkZHIpCisgCQkJCQkJICAgbG9hZF9hZGRy ICsgMHgxMDAwKTsKKyAgICAgICBjeWd3aW5fbG9hZF9lbmQgPSBjeWd3aW5fbG9hZF9zdGFydCAr IGJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHRleHQpOworIAorLSAgICAgIGJmZF9jbG9zZSAoYWJm ZCk7CisrICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CisgICAgIH0KKyAjZW5kaWYKKyAKCmRp ZmYgLS1naXQgYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0Y2ggYi9nZGItYno1 OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGRmYTEyMmEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTk0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMzYwLmh0bWwKLVN1YmplY3Q6IFtwYXRj aCAzLzRdIzMgbGludXgtbmF0OiBEbyBub3QgcmVzcGF3biBzaWduYWxzCi0KLUhpLAotCi1saW51 eC1uYXQuYyBpcyBmaXhlZCB0byBuZXZlciByZXNwYXduIHNpZ25hbHM7IHBvc3NpYmx5IGtlZXBp bmcgU0lHU1RPUAotcGVuZGluZywgYXMgaXMgZG9uZSBpbiBjdXJyZW50IGluIEZTRiBnZGJzZXJ2 ZXIgYW5kIGFzIHN1Z2dlc3RlZCBieSBQZWRybzoKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMC0wOC9tc2cwMDU0NC5odG1sCi0KLVRoZSBsYXN0IGxpbnV4LW5hdC5j IHJlbW92ZWQgcGF0Y2ggY2h1bmsgY29tZXMgZnJvbSB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlv bgotYnkgTWFyayBLZXR0ZW5pczoKLQlbUEFUQ0hdIE5ldyBMaW51eCB0aHJlYWRzIHN1cHBvcnQK LQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMC0wOS9tc2cwMDAyMC5o dG1sCi0JOTIyODBhNzVlMDE3NjgzYmY4ZTRmMzM5ZjRmODU2NDBiMDcwMDUwOQotSXQgZ2V0cyBp biBwYXJ0IHJlaW1wbGVtZW50ZWQgaW50byB0aGUgbmV3IHN0b3Bfd2FpdF9jYWxsYmFjayA8aWYg KGxwLT5zdGVwKT4KLXBhcnQgYW5kIHBhcnRpYWxseSBqdXN0IG5vdCBuZWVkZWQgYXMgY3VycmVu dGx5IEdEQiBuZXZlciBkcm9wcyB0aGUgc2lnbmFscyBhcwotaXQgZG9lcyBub3QgUFRSQUNFX0NP TlQgdGhlIHRocmVhZDsgc2lnbmFsIGlzIGtlcHQgZm9yIHByb2Nlc3Npbmc6Ci0JIlJDOiBOb3Qg cmVzdW1pbmcgc2libGluZyAlcyAoaGFzIHBlbmRpbmcpXG4iCi0KLUluIHN0b3Bfd2FpdF9jYWxs YmFjayBJIGJlbGlldmUgYnJlYWtwb2ludHMgY2FuY2VsbGF0aW9uIGlzIG5vdCBuZWVkZWQgaGVy ZSwKLWl0IHdvdWxkIGJlIGRvbmUgbGF0ZXIuCi0KLQotVGhlIHRlc3RjYXNlIHNpZ3N0ZXAtdGhy ZWFkcy5leHAgd2FzIHdyaXR0ZW4gdG8gY2F0Y2ggYSByZWdyZXNzaW9uLWxpa2UKLWFwcGVhcmFu Y2UgdGhlbiB0aGUgbmV3IDxpZiAobHAtPnN0ZXApPiBwYXJ0IG9mIHN0b3Bfd2FpdF9jYWxsYmFj ayBnZXRzCi1yZW1vdmVkLiAgU3RpbGwgdGhlIHRlY2FzZSBmYWlscyBldmVuIHdpdGggRlNGIEhF QUQ6Ci0KLTMyICAgICAgICB2YXIrKzsgICAgICAgICAgICAgICAgLyogc3RlcC0xICovCi0oZ2Ri KSBzdGVwCi1Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2VyIGRlZmluZWQgc2ln bmFsIDEuCi1Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2VyIGRlZmluZWQgc2ln bmFsIDEuCi0zMSAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0ZXAtMCAqLwotCi1U aGVyZSBpcyBubyByZWFzb24gd2h5IGl0IHNob3VsZG4ndCBzdG9wIG9uIGxpbmUgMzMsIGJldHdl ZW4gbGluZSAzMiBhbmQgbGluZQotMzMgbm8gc2lnbmFsIHdvdWxkIG9jY3VyLiAgU3RlcHBpbmcg b2YgdGhlIGN1cnJlbnQgdGhyZWFkIHNob3VsZCBub3QgYmUKLWFmZmVjdGVkIGJ5IHdoYXRldmVy IGhhcHBlbnMgaW4gdGhlIG90aGVyIHRocmVhZHMgYXMgc2VsZWN0X2V2ZW50X2x3cCBoYXM6Ci0g IC8qIEdpdmUgcHJlZmVyZW5jZSB0byBhbnkgTFdQIHRoYXQgaXMgYmVpbmcgc2luZ2xlLXN0ZXBw ZWQuICAqLwotCi1UaGVyZSBpcyBhIHByb2JsZW0gdGhhdCB3aXRoIEZTRiBIRUFEIEdEQiBkb2Vz IFBUUkFDRV9TSU5HTEVTVEVQIGZvciB0aHJlYWQgQSwKLVBUUkFDRV9DT05UIGZvciB0aHJlYWQg QiAoYmVjYXVzZSBvZiBzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmKSwgdGhyZWFkIEIgaGl0cwot U0lHVVNSMSwgc28gR0RCIHRraWxscyB0aHJlYWQgQSB3aXRoIFNJR1NUT1AgYW5kIGl0IGNhbiBy ZWNlaXZlIFNJR1NUT1AgZm9yCi10aHJlYWQgQSBiZWZvcmUgdGhlIFNJR1RSQVAgZm9yIGNvbXBs ZXRlZCBQVFJBQ0VfU0lOR0xFU1RFUC4gIEF0IHRoYXQgbW9tZW50Ci1zZWxlY3RfZXZlbnRfbHdw LiBmb3JnZXRzIGl0IHdhcyBzdGVwcGluZyB0aHJlYWQgQSBiZWNhdXNlIHRoZXJlIGlzIG5vIHBl bmRpbmcKLVNJR1RSQVAgZXZlbnQuICBjdXJyZW50bHlfc3RlcHBpbmcgc3RpbGwgcmVtZW1iZXJz IHRocmVhZCBBIHdhcyBzdGVwcGluZyBzbyBpdAotd2lsbCBsYXRlciBzdG9wIGJ1dCBhcyB0aHJl YWQgQSB3YXMgUFRSQUNFX0NPTlQtZWQgaW4gdGhlIG1lYW50aW1lIGl0IGlzIHRvbwotbGF0ZS4K LQotVGhlcmUgaXMgdGhlIG5ldyA8aWYgKGxwLT5zdGVwKT4gcGFydCBvZiBzdG9wX3dhaXRfY2Fs bGJhY2sgdG8gYWx3YXlzIHRyYWNrCi10aHJlYWQgQSBpcyBzdGVwcGluZy4gIER1ZSB0byBkaWZm ZXJlbnQgc2NoZWR1bGluZyB3aXRob3V0IHRoaXMgcGFydCB0aGUKLWNoYW5nZWQgR0RCIHdvdWxk IHZlcnkgcmFyZWx5IHN0b3AgaW4gdGhpcyB0ZXN0Y2FzZSBvdGhlcndpc2UsIG1ha2luZyBpdCBs b29rCi1hcyBhIHJlZ3Jlc3Npb24uCi0KLUkgaGF2ZSBzb21lIGFub3RoZXIgcGF0Y2ggSSBtYXkg cG9zdCBzZXBhcmF0ZWx5IGFzIGlmIG11bHRpcGxlIHNpZ25hbHMgaGFwcGVuCi1iZXNpZGVzIFNJ R1RSQVAgR0RCIHN0aWxsIG1heSBzd2l0Y2ggZnJvbSB0aHJlYWQgQSBhd2F5IChhcyBub3QgY29u c2lkZXJpbmcgaXQKLXN0ZXBwaW5nKSB0byB0aHJlYWQgQiBmb3IgU0lHVVNSIGFuZCBhY2NpZGVu dGFsbHkgUFRSQUNFX0NPTlQgdGhyZWFkIEEuCi1CdXQgSSBkbyBub3QgZmluZCB0aGlzIGFzIGEg cHJlcmVxdWlzaXRlIGZvciB0aGlzIHBhdGNoc2V0LgotCi0KLQotVGhhbmtzLAotSmFuCi0KLQot Z2RiLwotMjAxMC0wOS0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCi0JKiBsaW51eC1uYXQuYyAoc3RvcF93YWl0X2NhbGxiYWNrKTogTmV3IGdkYl9hc3Nl cnQuICBSZW1vdmUgc2lnbmFscwotCXJlc3Bhd25pbmc7IGtlZXAgVFAgd2l0aCBTSUdOQUxMRUQu ICBOZXcgZGVidWdnaW5nIG1lc3NhZ2UgIlNXQzoKLQlEZWxheWVkIFNJR1NUT1AgY2F1Z2h0IGZv ciAlcy4iLiAgQ2F0Y2ggbmV4dCBzaWduYWwgaWYgU0lHU1RPUCBoYXMKLQliZWVuIGNhdWdodCBh bmQgTFAtPlNURVAgaXMgc2V0LgotCShsaW51eF9uYXRfd2FpdF8xKSA8bHAgJiYgbHAtPnNpZ25h bGxlZD46IFJlbW92ZS4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDktMjAgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnRocmVhZHMvc2lnaW5m by10aHJlYWRzLmV4cDogTmV3IGZpbGUuCi0JKiBnZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMu YzogTmV3IGZpbGUuCi0JKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuZXhwOiBOZXcgZmls ZS4KLQkqIGdkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jOiBOZXcgZmlsZS4KLQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2LTAyIDIxOjM0OjUx Ljk5OTUxNzUxMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5j CTIwMTItMDYtMDIgMjE6MzU6NTkuOTMwNDkxNTc3ICswMjAwCi1AQCAtMjg1Niw2ICsyODU2LDgg QEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAotICAgICB7Ci0gICAg ICAgaW50IHN0YXR1czsKLSAKLSsgICAgICBnZGJfYXNzZXJ0IChscC0+cmVzdW1lZCk7Ci0rCi0g ICAgICAgc3RhdHVzID0gd2FpdF9sd3AgKGxwKTsKLSAgICAgICBpZiAoc3RhdHVzID09IDApCi0g CXJldHVybiAwOwotQEAgLTI4ODEsMTEwICsyODgzLDYxIEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAo c3RydWN0IGx3cF9pbmZvICpscCwKLSAKLSAgICAgICBpZiAoV1NUT1BTSUcgKHN0YXR1cykgIT0g U0lHU1RPUCkKLSAJewotLQkgIGlmIChsaW51eF9uYXRfc3RhdHVzX2lzX2V2ZW50IChzdGF0dXMp KQotLQkgICAgewotLQkgICAgICAvKiBJZiBhIExXUCBvdGhlciB0aGFuIHRoZSBMV1AgdGhhdCB3 ZSdyZSByZXBvcnRpbmcgYW4KLS0JICAgICAgICAgZXZlbnQgZm9yIGhhcyBoaXQgYSBHREIgYnJl YWtwb2ludCAoYXMgb3Bwb3NlZCB0bwotLQkgICAgICAgICBzb21lIHJhbmRvbSB0cmFwIHNpZ25h bCksIHRoZW4ganVzdCBhcnJhbmdlIGZvciBpdCB0bwotLQkgICAgICAgICBoaXQgaXQgYWdhaW4g bGF0ZXIuICBXZSBkb24ndCBrZWVwIHRoZSBTSUdUUkFQIHN0YXR1cwotLQkgICAgICAgICBhbmQg ZG9uJ3QgZm9yd2FyZCB0aGUgU0lHVFJBUCBzaWduYWwgdG8gdGhlIExXUC4gIFdlCi0tCSAgICAg ICAgIHdpbGwgaGFuZGxlIHRoZSBjdXJyZW50IGV2ZW50LCBldmVudHVhbGx5IHdlIHdpbGwKLS0J ICAgICAgICAgcmVzdW1lIGFsbCBMV1BzLCBhbmQgdGhpcyBvbmUgd2lsbCBnZXQgaXRzIGJyZWFr cG9pbnQKLS0JICAgICAgICAgdHJhcCBhZ2Fpbi4KLS0KLS0JICAgICAgICAgSWYgd2UgZG8gbm90 IGRvIHRoaXMsIHRoZW4gd2UgcnVuIHRoZSByaXNrIHRoYXQgdGhlCi0tCSAgICAgICAgIHVzZXIg d2lsbCBkZWxldGUgb3IgZGlzYWJsZSB0aGUgYnJlYWtwb2ludCwgYnV0IHRoZQotLQkgICAgICAg ICB0aHJlYWQgd2lsbCBoYXZlIGFscmVhZHkgdHJpcHBlZCBvbiBpdC4gICovCi0tCi0tCSAgICAg IC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICov Ci0tCSAgICAgIHNhdmVfc2lnaW5mbyAobHApOwotLQotLQkgICAgICBzYXZlX3NpZ3RyYXAgKGxw KTsKLS0KLS0JICAgICAgLyogTm93IHJlc3VtZSB0aGlzIExXUCBhbmQgZ2V0IHRoZSBTSUdTVE9Q IGV2ZW50LiAgKi8KLS0JICAgICAgZXJybm8gPSAwOwotLQkgICAgICBwdHJhY2UgKFBUUkFDRV9D T05ULCBHRVRfTFdQIChscC0+cHRpZCksIDAsIDApOwotLQkgICAgICBpZiAoZGVidWdfbGludXhf bmF0KQotLQkJewotLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0tCQkJCSAg ICAgICJQVFJBQ0VfQ09OVCAlcywgMCwgMCAoJXMpXG4iLAotLQkJCQkgICAgICB0YXJnZXRfcGlk X3RvX3N0ciAobHAtPnB0aWQpLAotLQkJCQkgICAgICBlcnJubyA/IHNhZmVfc3RyZXJyb3IgKGVy cm5vKSA6ICJPSyIpOwotLQotLQkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0t CQkJCSAgICAgICJTV0M6IENhbmRpZGF0ZSBTSUdUUkFQIGV2ZW50IGluICVzXG4iLAotLQkJCQkg ICAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLS0JCX0KLS0JICAgICAgLyogSG9s ZCB0aGlzIGV2ZW50L3dhaXRzdGF0dXMgd2hpbGUgd2UgY2hlY2sgdG8gc2VlIGlmCi0tCQkgdGhl cmUgYXJlIGFueSBtb3JlICh3ZSBzdGlsbCB3YW50IHRvIGdldCB0aGF0IFNJR1NUT1ApLiAgKi8K LS0JICAgICAgc3RvcF93YWl0X2NhbGxiYWNrIChscCwgTlVMTCk7Ci0rCSAgLyogVGhlIHRocmVh ZCB3YXMgc3RvcHBlZCB3aXRoIGEgc2lnbmFsIG90aGVyIHRoYW4gU0lHU1RPUC4gICovCi0gCi0t CSAgICAgIC8qIEhvbGQgdGhlIFNJR1RSQVAgZm9yIGhhbmRsaW5nIGJ5IGxpbnV4X25hdF93YWl0 LiAgSWYKLS0JCSB0aGVyZSdzIGFub3RoZXIgZXZlbnQsIHRocm93IGl0IGJhY2sgaW50byB0aGUK LS0JCSBxdWV1ZS4gICovCi0tCSAgICAgIGlmIChscC0+c3RhdHVzKQotLQkJewotLQkJICBpZiAo ZGVidWdfbGludXhfbmF0KQotLQkJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LS0JCQkJCSJTV0M6IGtpbGwgJXMsICVzXG4iLAotLQkJCQkJdGFyZ2V0X3BpZF90b19zdHIgKGxw LT5wdGlkKSwKLS0JCQkJCXN0YXR1c190b19zdHIgKChpbnQpIHN0YXR1cykpOwotLQkJICBraWxs X2x3cCAoR0VUX0xXUCAobHAtPnB0aWQpLCBXU1RPUFNJRyAobHAtPnN0YXR1cykpOwotLQkJfQot LQotLQkgICAgICAvKiBTYXZlIHRoZSBzaWd0cmFwIGV2ZW50LiAgKi8KLS0JICAgICAgbHAtPnN0 YXR1cyA9IHN0YXR1czsKLS0JICAgICAgcmV0dXJuIDA7Ci0tCSAgICB9Ci0tCSAgZWxzZQotLQkg ICAgewotLQkgICAgICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdpdGggYSBzaWduYWwgb3Ro ZXIgdGhhbgotLQkgICAgICAgICBTSUdTVE9QLCBhbmQgZGlkbid0IGFjY2lkZW50YWxseSB0cmlw IGEgYnJlYWtwb2ludC4gICovCi0rCSAgLyogU2F2ZSB0aGUgdHJhcCdzIHNpZ2luZm8gaW4gY2Fz ZSB3ZSBuZWVkIGl0IGxhdGVyLiAgKi8KLSsJICBzYXZlX3NpZ2luZm8gKGxwKTsKLSAKLS0JICAg ICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLS0JCXsKLS0JCSAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotLQkJCQkgICAgICAiU1dDOiBQZW5kaW5nIGV2ZW50ICVzIGluICVzXG4iLAot LQkJCQkgICAgICBzdGF0dXNfdG9fc3RyICgoaW50KSBzdGF0dXMpLAotLQkJCQkgICAgICB0YXJn ZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLS0JCX0KLS0JICAgICAgLyogTm93IHJlc3VtZSB0 aGlzIExXUCBhbmQgZ2V0IHRoZSBTSUdTVE9QIGV2ZW50LiAgKi8KLS0JICAgICAgZXJybm8gPSAw OwotLQkgICAgICBwdHJhY2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQIChscC0+cHRpZCksIDAsIDAp OwotLQkgICAgICBpZiAoZGVidWdfbGludXhfbmF0KQotLQkJZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotLQkJCQkgICAgIlNXQzogUFRSQUNFX0NPTlQgJXMsIDAsIDAgKCVzKVxuIiwK LS0JCQkJICAgIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCksCi0tCQkJCSAgICBlcnJubyA/ IHNhZmVfc3RyZXJyb3IgKGVycm5vKSA6ICJPSyIpOwotKwkgIHNhdmVfc2lndHJhcCAobHApOwot IAotLQkgICAgICAvKiBIb2xkIHRoaXMgZXZlbnQvd2FpdHN0YXR1cyB3aGlsZSB3ZSBjaGVjayB0 byBzZWUgaWYKLS0JICAgICAgICAgdGhlcmUgYXJlIGFueSBtb3JlICh3ZSBzdGlsbCB3YW50IHRv IGdldCB0aGF0IFNJR1NUT1ApLiAgKi8KLS0JICAgICAgc3RvcF93YWl0X2NhbGxiYWNrIChscCwg TlVMTCk7Ci0rCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKLSsJCQkJIlNXQzogUGVuZGluZyBldmVudCAlcyBpbiAlc1xuIiwKLSsJ CQkJc3RhdHVzX3RvX3N0ciAoKGludCkgc3RhdHVzKSwKLSsJCQkJdGFyZ2V0X3BpZF90b19zdHIg KGxwLT5wdGlkKSk7Ci0gCi0tCSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVzIGZpZWxkIGlzIHN0 aWxsIGVtcHR5LCB1c2UgaXQgdG8KLS0JCSBob2xkIHRoaXMgZXZlbnQuICBJZiBub3QsIHRoZW4g dGhpcyBldmVudCBtdXN0IGJlCi0tCQkgcmV0dXJuZWQgdG8gdGhlIGV2ZW50IHF1ZXVlIG9mIHRo ZSBMV1AuICAqLwotLQkgICAgICBpZiAobHAtPnN0YXR1cykKLS0JCXsKLS0JCSAgaWYgKGRlYnVn X2xpbnV4X25hdCkKLS0JCSAgICB7Ci0tCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csCi0tCQkJCQkgICJTV0M6IGtpbGwgJXMsICVzXG4iLAotLQkJCQkJICB0YXJnZXRfcGlk X3RvX3N0ciAobHAtPnB0aWQpLAotLQkJCQkJICBzdGF0dXNfdG9fc3RyICgoaW50KSBzdGF0dXMp KTsKLS0JCSAgICB9Ci0tCQkgIGtpbGxfbHdwIChHRVRfTFdQIChscC0+cHRpZCksIFdTVE9QU0lH IChzdGF0dXMpKTsKLS0JCX0KLS0JICAgICAgZWxzZQotLQkJbHAtPnN0YXR1cyA9IHN0YXR1czsK LS0JICAgICAgcmV0dXJuIDA7Ci0tCSAgICB9Ci0rCSAgLyogU2F2ZSB0aGUgc2lndHJhcCBldmVu dC4gICovCi0rCSAgbHAtPnN0YXR1cyA9IHN0YXR1czsKLSsJICBnZGJfYXNzZXJ0ICghIGxwLT5z dG9wcGVkKTsKLSsJICBnZGJfYXNzZXJ0IChscC0+c2lnbmFsbGVkKTsKLSsJICBscC0+c3RvcHBl ZCA9IDE7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSAJICAvKiBXZSBjYXVnaHQgdGhlIFNJR1NU T1AgdGhhdCB3ZSBpbnRlbmRlZCB0byBjYXRjaCwgc28KLSAJICAgICB0aGVyZSdzIG5vIFNJR1NU T1AgcGVuZGluZy4gICovCi0tCSAgbHAtPnN0b3BwZWQgPSAxOwotKwotKwkgIGlmIChkZWJ1Z19s aW51eF9uYXQpCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSJT V0M6IERlbGF5ZWQgU0lHU1RPUCBjYXVnaHQgZm9yICVzLlxuIiwKLSsJCQkJdGFyZ2V0X3BpZF90 b19zdHIgKGxwLT5wdGlkKSk7Ci0rCi0rCSAgaWYgKGxwLT5zdGVwKQotKwkgICAgewotKwkgICAg ICAvKiBMUC0+U1RBVFVTIGlzIDAgaGVyZS4gIFRoYXQgbWVhbnMgU0lHVFJBUCBmcm9tCi0rCQkg UFRSQUNFX1NJTkdMRVNURVAgc3RpbGwgaGFzIHRvIGJlIGRlbGl2ZXJlZCBmb3IgdGhpcyBpbmZl cmlvcgotKwkJIHN0b3AuICBDYXRjaGluZyB0aGUgU0lHVFJBUCBldmVudCBpcyBpbXBvcnRhbnQg dG8gcHJldmVudAotKwkJIHN0YXJ2YXRpb24gaW4gc2VsZWN0X2V2ZW50X2x3cC4gICovCi0rCi0r CSAgICAgIHJlZ2lzdGVyc19jaGFuZ2VkICgpOwotKwkgICAgICBsaW51eF9vcHMtPnRvX3Jlc3Vt ZSAobGludXhfb3BzLCBwaWRfdG9fcHRpZCAoR0VUX0xXUCAobHAtPnB0aWQpKSwKLSsJCQkJICAg IDEsIEdEQl9TSUdOQUxfMCk7Ci0rCSAgICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCi0rCQlmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgICAiU1dDOiAlcyAlcywgMCwgMCAo ZGlzY2FyZCBTSUdTVE9QKVxuIiwKLSsJCQkJICAgICJQVFJBQ0VfU0lOR0xFU1RFUCIsCi0rCQkJ CSAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0aWQpKTsKLSsKLSsJICAgICAgbHAtPnN0b3Bw ZWQgPSAwOwotKwkgICAgICBnZGJfYXNzZXJ0IChscC0+cmVzdW1lZCk7Ci0rCSAgICAgIHN0b3Bf d2FpdF9jYWxsYmFjayAobHAsIE5VTEwpOwotKwkgICAgICBnZGJfYXNzZXJ0IChscC0+c3RvcHBl ZCk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgbHAtPnN0b3BwZWQgPSAxOwotKwotKwkgIC8q IFJlc2V0IFNJR05BTExFRCBvbmx5IGFmdGVyIHRoZSBzdG9wX3dhaXRfY2FsbGJhY2sgY2FsbCBh Ym92ZSBhcwotKwkgICAgIGl0IGRvZXMgZ2RiX2Fzc2VydCBvbiBTSUdOQUxMRUQuICAqLwotIAkg IGxwLT5zaWduYWxsZWQgPSAwOwotIAl9Ci0gICAgIH0KLUBAIC0zNjE2LDU0ICszNTY5LDYgQEAg cmV0cnk6Ci0gCWxwID0gTlVMTDsKLSAgICAgfQotIAotLSAgaWYgKGxwICYmIGxwLT5zaWduYWxs ZWQgJiYgbHAtPmxhc3RfcmVzdW1lX2tpbmQgIT0gcmVzdW1lX3N0b3ApCi0tICAgIHsKLS0gICAg ICAvKiBBIHBlbmRpbmcgU0lHU1RPUCBtYXkgaW50ZXJmZXJlIHdpdGggdGhlIG5vcm1hbCBzdHJl YW0gb2YKLS0gICAgICAgICBldmVudHMuICBJbiBhIHR5cGljYWwgY2FzZSB3aGVyZSBpbnRlcmZl cmVuY2UgaXMgYSBwcm9ibGVtLAotLSAgICAgICAgIHdlIGhhdmUgYSBTSUdTVE9QIHNpZ25hbCBw ZW5kaW5nIGZvciBMV1AgQSB3aGlsZQotLSAgICAgICAgIHNpbmdsZS1zdGVwcGluZyBpdCwgZW5j b3VudGVyIGFuIGV2ZW50IGluIExXUCBCLCBhbmQgdGFrZSB0aGUKLS0gICAgICAgICBwZW5kaW5n IFNJR1NUT1Agd2hpbGUgdHJ5aW5nIHRvIHN0b3AgTFdQIEEuICBBZnRlciBwcm9jZXNzaW5nCi0t ICAgICAgICAgdGhlIGV2ZW50IGluIExXUCBCLCBMV1AgQSBpcyBjb250aW51ZWQsIGFuZCB3ZSds bCBuZXZlciBzZWUKLS0gICAgICAgICB0aGUgU0lHVFJBUCBhc3NvY2lhdGVkIHdpdGggdGhlIGxh c3QgdGltZSB3ZSB3ZXJlCi0tICAgICAgICAgc2luZ2xlLXN0ZXBwaW5nIExXUCBBLiAgKi8KLS0K LS0gICAgICAvKiBSZXN1bWUgdGhlIHRocmVhZC4gIEl0IHNob3VsZCBoYWx0IGltbWVkaWF0ZWx5 IHJldHVybmluZyB0aGUKLS0gICAgICAgICBwZW5kaW5nIFNJR1NUT1AuICAqLwotLSAgICAgIHJl Z2lzdGVyc19jaGFuZ2VkICgpOwotLSAgICAgIGlmIChsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1 bWUgIT0gTlVMTCkKLS0JbGludXhfbmF0X3ByZXBhcmVfdG9fcmVzdW1lIChscCk7Ci0tICAgICAg bGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxw LT5wdGlkKSksCi0tCQkJICAgIGxwLT5zdGVwLCBHREJfU0lHTkFMXzApOwotLSAgICAgIGlmIChk ZWJ1Z19saW51eF9uYXQpCi0tCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLS0JCQkg ICAgIkxMVzogJXMgJXMsIDAsIDAgKGV4cGVjdCBTSUdTVE9QKVxuIiwKLS0JCQkgICAgbHAtPnN0 ZXAgPyAiUFRSQUNFX1NJTkdMRVNURVAiIDogIlBUUkFDRV9DT05UIiwKLS0JCQkgICAgdGFyZ2V0 X3BpZF90b19zdHIgKGxwLT5wdGlkKSk7Ci0tICAgICAgbHAtPnN0b3BwZWQgPSAwOwotLSAgICAg IGdkYl9hc3NlcnQgKGxwLT5yZXN1bWVkKTsKLS0KLS0gICAgICAvKiBDYXRjaCB0aGUgcGVuZGlu ZyBTSUdTVE9QLiAgKi8KLS0gICAgICBzdGF0dXMgPSBscC0+c3RhdHVzOwotLSAgICAgIGxwLT5z dGF0dXMgPSAwOwotLQotLSAgICAgIHN0b3Bfd2FpdF9jYWxsYmFjayAobHAsIE5VTEwpOwotLQot LSAgICAgIC8qIElmIHRoZSBscC0+c3RhdHVzIGZpZWxkIGlzbid0IGVtcHR5LCB3ZSBjYXVnaHQg YW5vdGhlciBzaWduYWwKLS0JIHdoaWxlIGZsdXNoaW5nIHRoZSBTSUdTVE9QLiAgUmV0dXJuIGl0 IGJhY2sgdG8gdGhlIGV2ZW50Ci0tCSBxdWV1ZSBvZiB0aGUgTFdQLCBhcyB3ZSBhbHJlYWR5IGhh dmUgYW4gZXZlbnQgdG8gaGFuZGxlLiAgKi8KLS0gICAgICBpZiAobHAtPnN0YXR1cykKLS0Jewot LQkgIGlmIChkZWJ1Z19saW51eF9uYXQpCi0tCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csCi0tCQkJCSJMTFc6IGtpbGwgJXMsICVzXG4iLAotLQkJCQl0YXJnZXRfcGlkX3RvX3N0 ciAobHAtPnB0aWQpLAotLQkJCQlzdGF0dXNfdG9fc3RyIChscC0+c3RhdHVzKSk7Ci0tCSAga2ls bF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlkKSwgV1NUT1BTSUcgKGxwLT5zdGF0dXMpKTsKLS0JfQot LQotLSAgICAgIGxwLT5zdGF0dXMgPSBzdGF0dXM7Ci0tICAgIH0KLS0KLSAgIGlmICghdGFyZ2V0 X2Nhbl9hc3luY19wICgpKQotICAgICB7Ci0gICAgICAgLyogQ2F1c2VzIFNJR0lOVCB0byBiZSBw YXNzZWQgb24gdG8gdGhlIGF0dGFjaGVkIHByb2Nlc3MuICAqLwotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdp bmZvLXRocmVhZHMuYwkyMDEyLTA2LTAyIDIxOjM1OjQwLjI2ODQ5OTA2MCArMDIwMAotQEAgLTAs MCArMSw0NDcgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj ZGVmaW5lIF9HTlVfU09VUkNFCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8c3Rk aW8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1 ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+ Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSsjaW5jbHVk ZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsKLSsjZGVmaW5lIGdldHRp ZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQotKyNkZWZpbmUgdGdraWxsKHRnaWQsIHRpZCwgc2ln KSBzeXNjYWxsIChfX05SX3Rna2lsbCwgdGdpZCwgdGlkLCBzaWcpCi0rCi0rLyogVGVybWluYXRl IGFsd2F5cyBpbiB0aGUgbWFpbiB0YXNrLCBpdCBjYW4gbG9jayB1cCB3aXRoIFNJR1NUT1BwZWQg R0RCCi0rICAgb3RoZXJ3aXNlLiAgKi8KLSsjZGVmaW5lIFRJTUVPVVQgKGdldHRpZCAoKSA9PSBn ZXRwaWQoKSA/IDEwIDogMTUpCi0rCi0rc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOwotK3N0YXRp YyBwdGhyZWFkX2NvbmRfdCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJ WkVSOwotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFE X0VSUk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7Ci0rc3RhdGljIGludCB0aHJlYWQxX3Np Z3VzcjFfaGl0OwotK3N0YXRpYyBpbnQgdGhyZWFkMV9zaWd1c3IyX2hpdDsKLSsKLStzdGF0aWMg cGlkX3QgdGhyZWFkMl90aWQ7Ci0rc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVhZDJfdGlkX2Nv bmQgPSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Ci0rc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0 aHJlYWQyX3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9O UDsKLStzdGF0aWMgaW50IHRocmVhZDJfc2lndXNyMV9oaXQ7Ci0rc3RhdGljIGludCB0aHJlYWQy X3NpZ3VzcjJfaGl0OwotKwotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdGVybWluYXRlX211dGV4 ID0gUFRIUkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJWkVSX05QOwotKwotKy8qIERvIG5v dCB1c2UgYWxhcm0gYXMgaXQgd291bGQgY3JlYXRlIGEgcHRyYWNlIGV2ZW50IHdoaWNoIHdvdWxk IGhhbmcgdXAgdXMgaWYKLSsgICB3ZSBhcmUgYmVpbmcgdHJhY2VkIGJ5IEdEQiB3aGljaCB3ZSBz dG9wcGVkIG91cnNlbHZlcy4gICovCi0rCi0rc3RhdGljIHZvaWQgdGltZWRfbXV0ZXhfbG9jayAo cHRocmVhZF9tdXRleF90ICptdXRleCkKLSt7Ci0rICBpbnQgaTsKLSsgIHN0cnVjdCB0aW1lc3Bl YyBzdGFydCwgbm93OwotKwotKyAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywg JnN0YXJ0KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGRvCi0rICAgIHsKLSsgICAgICBp ID0gcHRocmVhZF9tdXRleF90cnlsb2NrIChtdXRleCk7Ci0rICAgICAgaWYgKGkgPT0gMCkKLSsJ cmV0dXJuOwotKyAgICAgIGFzc2VydCAoaSA9PSBFQlVTWSk7Ci0rCi0rICAgICAgaSA9IGNsb2Nr X2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7Ci0rICAgICAgYXNzZXJ0IChpID09IDAp OwotKyAgICAgIGFzc2VydCAobm93LnR2X3NlYyA+PSBzdGFydC50dl9zZWMpOwotKyAgICB9Ci0r ICB3aGlsZSAobm93LnR2X3NlYyAtIHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOwotKwotKyAgZnBy aW50ZiAoc3RkZXJyLCAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGludGVybmFsIGxvY2shXG4iKTsK LSsgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raGFuZGxlciAo aW50IHNpZ25vLCBzaWdpbmZvX3QgKnNpZ2luZm8sIHZvaWQgKmV4Y2VwdGlvbikKLSt7Ci0rICBp bnQgKnZhcnA7Ci0rCi0rICBhc3NlcnQgKHNpZ2luZm8tPnNpX3NpZ25vID09IHNpZ25vKTsKLSsg IGFzc2VydCAoc2lnaW5mby0+c2lfY29kZSA9PSBTSV9US0lMTCk7Ci0rICBhc3NlcnQgKHNpZ2lu Zm8tPnNpX3BpZCA9PSBnZXRwaWQgKCkpOwotKwotKyAgaWYgKGdldHRpZCAoKSA9PSB0aHJlYWQx X3RpZCkKLSsgICAgewotKyAgICAgIGlmIChzaWdubyA9PSBTSUdVU1IxKQotKwl2YXJwID0gJnRo cmVhZDFfc2lndXNyMV9oaXQ7Ci0rICAgICAgZWxzZSBpZiAoc2lnbm8gPT0gU0lHVVNSMikKLSsJ dmFycCA9ICZ0aHJlYWQxX3NpZ3VzcjJfaGl0OwotKyAgICAgIGVsc2UKLSsJYXNzZXJ0ICgwKTsK LSsgICAgfQotKyAgZWxzZSBpZiAoZ2V0dGlkICgpID09IHRocmVhZDJfdGlkKQotKyAgICB7Ci0r ICAgICAgaWYgKHNpZ25vID09IFNJR1VTUjEpCi0rCXZhcnAgPSAmdGhyZWFkMl9zaWd1c3IxX2hp dDsKLSsgICAgICBlbHNlIGlmIChzaWdubyA9PSBTSUdVU1IyKQotKwl2YXJwID0gJnRocmVhZDJf c2lndXNyMl9oaXQ7Ci0rICAgICAgZWxzZQotKwlhc3NlcnQgKDApOwotKyAgICB9Ci0rICBlbHNl Ci0rICAgIGFzc2VydCAoMCk7Ci0rCi0rICBpZiAoKnZhcnApCi0rICAgIHsKLSsgICAgICBmcHJp bnRmIChzdGRlcnIsICJTaWduYWwgJWQgZm9yIFRJRCAlbHUgaGFzIGJlZW4gYWxyZWFkeSBoaXQh XG4iLCBzaWdubywKLSsJICAgICAgICh1bnNpZ25lZCBsb25nKSBnZXR0aWQgKCkpOwotKyAgICAg IGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rICAgIH0KLSsgICp2YXJwID0gMTsKLSt9Ci0rCi0rc3Rh dGljIHZvaWQgKgotK3RocmVhZDFfZnVuYyAodm9pZCAqdW51c2VkKQotK3sKLSsgIGludCBpOwot KwotKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKLSsKLSsgIC8qIFRI UkVBRDFfVElEX01VVEVYIG11c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQgcmFjZS4gICov Ci0rICB0aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKLSsKLSsgIGkgPSBwdGhyZWFkX2NvbmRfc2ln bmFsICgmdGhyZWFkMV90aWRfY29uZCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rICBpID0gcHRo cmVhZF9tdXRleF91bmxvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0rICBhc3NlcnQgKGkgPT0g MCk7Ci0rCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJv Y2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5h dGVfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4 KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGlmICghIHRocmVhZDFfc2lndXNyMV9oaXQp Ci0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMSBzaWduYWwgU0lHVVNS MSBub3QgaGl0IVxuIik7Ci0rICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSsgICAgfQotKyAg aWYgKCEgdGhyZWFkMV9zaWd1c3IyX2hpdCkKLSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVy ciwgIlRocmVhZCAxIHNpZ25hbCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKLSsgICAgICBleGl0IChF WElUX0ZBSUxVUkUpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGlj IHZvaWQgKgotK3RocmVhZDJfZnVuYyAodm9pZCAqdW51c2VkKQotK3sKLSsgIGludCBpOwotKwot KyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDJfdGlkX211dGV4KTsKLSsKLSsgIC8qIFRIUkVB RDJfVElEX01VVEVYIG11c3QgYmUgYWxyZWFkeSBsb2NrZWQgdG8gYXZvaWQgcmFjZS4gICovCi0r ICB0aHJlYWQyX3RpZCA9IGdldHRpZCAoKTsKLSsKLSsgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFs ICgmdGhyZWFkMl90aWRfY29uZCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rICBpID0gcHRocmVh ZF9tdXRleF91bmxvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7 Ci0rCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2Vl ZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVf bXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsK LSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGlmICghIHRocmVhZDJfc2lndXNyMV9oaXQpCi0r ICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJUaHJlYWQgMiBzaWduYWwgU0lHVVNSMSBu b3QgaGl0IVxuIik7Ci0rICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSsgICAgfQotKyAgaWYg KCEgdGhyZWFkMl9zaWd1c3IyX2hpdCkKLSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVyciwg IlRocmVhZCAyIHNpZ25hbCBTSUdVU1IyIG5vdCBoaXQhXG4iKTsKLSsgICAgICBleGl0IChFWElU X0ZBSUxVUkUpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIGNv bnN0IGNoYXIgKgotK3Byb2Nfc3RyaW5nIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hh ciAqbGluZSkKLSt7Ci0rICBGSUxFICpmOwotKyAgc3RhdGljIGNoYXIgYnVmW0xJTkVfTUFYXTsK LSsgIHNpemVfdCBsaW5lX2xlbiA9IHN0cmxlbiAobGluZSk7Ci0rCi0rICBmID0gZm9wZW4gKGZp bGVuYW1lLCAiciIpOwotKyAgaWYgKGYgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIGZwcmludGYg KHN0ZGVyciwgImZvcGVuIChcIiVzXCIpIGZvciBcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwgbGlu ZSwKLSsJICAgICAgIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVS RSk7Ci0rICAgIH0KLSsgIHdoaWxlIChlcnJubyA9IDAsIGZnZXRzIChidWYsIHNpemVvZiAoYnVm KSwgZikpCi0rICAgIHsKLSsgICAgICBjaGFyICpzOwotKwotKyAgICAgIHMgPSBzdHJjaHIgKGJ1 ZiwgJ1xuJyk7Ci0rICAgICAgYXNzZXJ0IChzICE9IE5VTEwpOwotKyAgICAgICpzID0gMDsKLSsK LSsgICAgICBpZiAoc3RybmNtcCAoYnVmLCBsaW5lLCBsaW5lX2xlbikgIT0gMCkKLSsJY29udGlu dWU7Ci0rCi0rICAgICAgaWYgKGZjbG9zZSAoZikpCi0rCXsKLSsJICBmcHJpbnRmIChzdGRlcnIs ICJmY2xvc2UgKFwiJXNcIikgZm9yIFwiJXNcIjogJXNcbiIsIGZpbGVuYW1lLCBsaW5lLAotKwkJ ICAgc3RyZXJyb3IgKGVycm5vKSk7Ci0rCSAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwot KyAgICAgIHJldHVybiAmYnVmW2xpbmVfbGVuXTsKLSsgICAgfQotKyAgaWYgKGVycm5vICE9IDAp Ci0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJmZ2V0cyAoXCIlc1wiOiAlc1xuIiwg ZmlsZW5hbWUsIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgIGV4aXQgKEVYSVRfRkFJTFVSRSk7 Ci0rICAgIH0KLSsgIGZwcmludGYgKHN0ZGVyciwgIlwiJXNcIjogTm8gbGluZSBcIiVzXCIgZm91 bmQuXG4iLCBmaWxlbmFtZSwgbGluZSk7Ci0rICBleGl0IChFWElUX0ZBSUxVUkUpOwotK30KLSsK LStzdGF0aWMgdW5zaWduZWQgbG9uZwotK3Byb2NfdWxvbmcgKGNvbnN0IGNoYXIgKmZpbGVuYW1l LCBjb25zdCBjaGFyICpsaW5lKQotK3sKLSsgIGNvbnN0IGNoYXIgKnMgPSBwcm9jX3N0cmluZyAo ZmlsZW5hbWUsIGxpbmUpOwotKyAgbG9uZyByZXR2YWw7Ci0rICBjaGFyICplbmQ7Ci0rCi0rICBl cnJubyA9IDA7Ci0rICByZXR2YWwgPSBzdHJ0b2wgKHMsICZlbmQsIDEwKTsKLSsgIGlmIChyZXR2 YWwgPCAwIHx8IHJldHZhbCA+PSBMT05HX01BWCB8fCAoZW5kICYmICplbmQpKQotKyAgICB7Ci0r ICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXCIlc1wiOlwiJXNcIjogJWxkLCAlc1xuIiwgZmlsZW5h bWUsIGxpbmUsIHJldHZhbCwKLSsJICAgICAgIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgIGV4 aXQgKEVYSVRfRkFJTFVSRSk7Ci0rICAgIH0KLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK3N0 YXRpYyB2b2lkCi0rc3RhdGVfd2FpdCAocGlkX3QgcHJvY2VzcywgY29uc3QgY2hhciAqd2FudGVk KQotK3sKLSsgIGNoYXIgKmZpbGVuYW1lOwotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgdGltZXNwZWMg c3RhcnQsIG5vdzsKLSsgIGNvbnN0IGNoYXIgKnN0YXRlOwotKwotKyAgaSA9IGFzcHJpbnRmICgm ZmlsZW5hbWUsICIvcHJvYy8lbHUvc3RhdHVzIiwgKHVuc2lnbmVkIGxvbmcpIHByb2Nlc3MpOwot KyAgYXNzZXJ0IChpID4gMCk7Ci0rCi0rICBpID0gY2xvY2tfZ2V0dGltZSAoQ0xPQ0tfTU9OT1RP TklDLCAmc3RhcnQpOwotKyAgYXNzZXJ0IChpID09IDApOwotKwotKyAgZG8KLSsgICAgewotKyAg ICAgIHN0YXRlID0gcHJvY19zdHJpbmcgKGZpbGVuYW1lLCAiU3RhdGU6XHQiKTsKLSsKLSsgICAg ICAvKiB0b3J2YWxkcy9saW51eC0yLjYuZ2l0IDQ2NDc2M2NmMWM2ZGY2MzJkY2NjOGYyZjRjN2U1 MDE2MzE1NGEyYzAKLSsJIGhhcyBjaGFuZ2VkICJUICh0cmFjaW5nIHN0b3ApIiB0byAidCAodHJh Y2luZyBzdG9wKSIuICBNYWtlIHRoZSBHREIKLSsJIHRlc3RjYXNlIGJhY2t3YXJkIGNvbXBhdGli bGUgd2l0aCBvbGRlciBMaW51eCBrZXJuZWxzLiAgKi8KLSsgICAgICBpZiAoc3RyY21wIChzdGF0 ZSwgIlQgKHRyYWNpbmcgc3RvcCkiKSA9PSAwKQotKwlzdGF0ZSA9ICJ0ICh0cmFjaW5nIHN0b3Ap IjsKLSsKLSsgICAgICBpZiAoc3RyY21wIChzdGF0ZSwgd2FudGVkKSA9PSAwKQotKwl7Ci0rCSAg ZnJlZSAoZmlsZW5hbWUpOwotKwkgIHJldHVybjsKLSsJfQotKwotKyAgICAgIGlmIChzY2hlZF95 aWVsZCAoKSkKLSsJewotKwkgIHBlcnJvciAoInNjaGVkX3lpZWxkKCkiKTsKLSsJICBleGl0IChF WElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01P Tk9UT05JQywgJm5vdyk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICAgIGFzc2VydCAo bm93LnR2X3NlYyA+PSBzdGFydC50dl9zZWMpOwotKyAgICB9Ci0rICB3aGlsZSAobm93LnR2X3Nl YyAtIHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOwotKwotKyAgZnByaW50ZiAoc3RkZXJyLCAiVGlt ZWQgb3V0IHdhaXRpbmcgZm9yIFBJRCAlbHUgXCIlc1wiIChub3cgaXQgaXMgXCIlc1wiKSFcbiIs Ci0rCSAgICh1bnNpZ25lZCBsb25nKSBwcm9jZXNzLCB3YW50ZWQsIHN0YXRlKTsKLSsgIGV4aXQg KEVYSVRfRkFJTFVSRSk7Ci0rfQotKwotK3N0YXRpYyB2b2xhdGlsZSBwaWRfdCB0cmFjZXIgPSAw OwotK3N0YXRpYyBwdGhyZWFkX3QgdGhyZWFkMSwgdGhyZWFkMjsKLSsKLStzdGF0aWMgdm9pZAot K2NsZWFudXAgKHZvaWQpCi0rewotKyAgcHJpbnRmICgiUmVzdW1pbmcgR0RCIFBJRCAlbHUuXG4i LCAodW5zaWduZWQgbG9uZykgdHJhY2VyKTsKLSsKLSsgIGlmICh0cmFjZXIpCi0rICAgIHsKLSsg ICAgICBpbnQgaTsKLSsgICAgICBpbnQgdHJhY2VyX3NhdmUgPSB0cmFjZXI7Ci0rCi0rICAgICAg dHJhY2VyID0gMDsKLSsKLSsgICAgICBpID0ga2lsbCAodHJhY2VyX3NhdmUsIFNJR0NPTlQpOwot KyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgfQotK30KLSsKLStpbnQKLSttYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgaW50IGk7Ci0rICBpbnQgc3RhbmRhbG9uZSA9IDA7 Ci0rICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKLSsKLSsgIGlmIChhcmdjID09IDIgJiYgc3RyY21w IChhcmd2WzFdLCAiLXMiKSA9PSAwKQotKyAgICBzdGFuZGFsb25lID0gMTsKLSsgIGVsc2UKLSsg ICAgYXNzZXJ0IChhcmdjID09IDEpOwotKwotKyAgc2V0YnVmIChzdGRvdXQsIE5VTEwpOwotKwot KyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsKLSsgIHRpbWVkX211dGV4 X2xvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rCi0rICB0aW1lZF9tdXRleF9sb2NrICgmdGVy bWluYXRlX211dGV4KTsKLSsKLSsgIGVycm5vID0gMDsKLSsgIG1lbXNldCAoJmFjdCwgMCwgc2l6 ZW9mIChhY3QpKTsKLSsgIGFjdC5zYV9zaWdhY3Rpb24gPSBoYW5kbGVyOwotKyAgYWN0LnNhX2Zs YWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87Ci0rICBpID0gc2lnZW1wdHlzZXQgKCZhY3Qu c2FfbWFzayk7Ci0rICBhc3NlcnRfcGVycm9yIChlcnJubyk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7 Ci0rICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCBOVUxMKTsKLSsgIGFzc2VydF9wZXJy b3IgKGVycm5vKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsgIGkgPSBzaWdhY3Rpb24gKFNJR1VT UjIsICZhY3QsIE5VTEwpOwotKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOwotKyAgYXNzZXJ0IChp ID09IDApOwotKwotKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkMSwgTlVMTCwgdGhyZWFk MV9mdW5jLCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGkgPSBwdGhyZWFkX2Ny ZWF0ZSAoJnRocmVhZDIsIE5VTEwsIHRocmVhZDJfZnVuYywgTlVMTCk7Ci0rICBhc3NlcnQgKGkg PT0gMCk7Ci0rCi0rICBpZiAoIXN0YW5kYWxvbmUpCi0rICAgIHsKLSsgICAgICB0cmFjZXIgPSBw cm9jX3Vsb25nICgiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiVHJhY2VyUGlkOlx0Iik7Ci0rICAgICAg aWYgKHRyYWNlciA9PSAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3RjYXNl IG11c3QgYmUgcnVuIGJ5IEdEQiFcbiIpOwotKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rCX0K LSsgICAgICBpZiAodHJhY2VyICE9IGdldHBwaWQgKCkpCi0rCXsKLSsJICBmcHJpbnRmIChzdGRl cnIsICJUaGUgdGVzdGNhc2UgcGFyZW50IG11c3QgYmUgb3VyIEdEQiB0cmFjZXIhXG4iKTsKLSsJ ICBleGl0IChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIFNJR0NPTlQgb3Vy IGRlYnVnZ2VyIGluIHRoZSBjYXNlIG9mIG91ciBjcmFzaCBhcyB3ZSB3b3VsZCBkZWFkbG9jawot KyAgICAgb3RoZXJ3aXNlLiAgKi8KLSsKLSsgIGF0ZXhpdCAoY2xlYW51cCk7Ci0rCi0rICBwcmlu dGYgKCJTdG9wcGluZyBHREIgUElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25nKSB0cmFjZXIpOwot KwotKyAgaWYgKHRyYWNlcikKLSsgICAgewotKyAgICAgIGkgPSBraWxsICh0cmFjZXIsIFNJR1NU T1ApOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgICBzdGF0ZV93YWl0ICh0cmFjZXIs ICJUIChzdG9wcGVkKSIpOwotKyAgICB9Ci0rCi0rICAvKiBUaHJlYWRzIGFyZSBub3cgd2FpdGlu ZyBhdCB0aW1lZF9tdXRleF9sb2NrICh0aHJlYWQxX3RpZF9tdXRleCkgYW5kIHNvCi0rICAgICB0 aGV5IGNvdWxkIG5vdCB0cmlnZ2VyIHRoZSBzaWduYWxzIGJlZm9yZSBHREIgZ2V0cyB1bnN0b3Bw ZWQgbGF0ZXIuCi0rICAgICBUaHJlYWRzIGdldCByZXN1bWVkIGF0IHB0aHJlYWRfY29uZF93YWl0 IGJlbG93LiAgVXNlIGB3aGlsZScgbG9vcHMgZm9yCi0rICAgICBwcm90ZWN0aW9uIGFnYWluc3Qg c3B1cmlvdXMgcHRocmVhZF9jb25kX3dhaXQgd2FrZXVwcy4gICovCi0rCi0rICBwcmludGYgKCJX YWl0aW5nIHRpbGwgdGhlIHRocmVhZHMgaW5pdGlhbGl6ZSB0aGVpciBUSURzLlxuIik7Ci0rCi0r ICB3aGlsZSAodGhyZWFkMV90aWQgPT0gMCkKLSsgICAgewotKyAgICAgIGkgPSBwdGhyZWFkX2Nv bmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0rICAgICAg YXNzZXJ0IChpID09IDApOwotKyAgICB9Ci0rCi0rICB3aGlsZSAodGhyZWFkMl90aWQgPT0gMCkK LSsgICAgewotKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQs ICZ0aHJlYWQyX3RpZF9tdXRleCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICB9Ci0r Ci0rICBwcmludGYgKCJUaHJlYWQgMSBUSUQgPSAlbHUsIHRocmVhZCAyIFRJRCA9ICVsdSwgUElE ID0gJWx1LlxuIiwKLSsJICAodW5zaWduZWQgbG9uZykgdGhyZWFkMV90aWQsICh1bnNpZ25lZCBs b25nKSB0aHJlYWQyX3RpZCwKLSsJICAodW5zaWduZWQgbG9uZykgZ2V0cGlkICgpKTsKLSsKLSsg IGVycm5vID0gMDsKLSsgIGkgPSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFkMV90aWQsIFNJR1VT UjEpOwotKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOwotKyAgYXNzZXJ0IChpID09IDApOwotKyAg aSA9IHRna2lsbCAoZ2V0cGlkICgpLCB0aHJlYWQxX3RpZCwgU0lHVVNSMik7Ci0rICBhc3NlcnRf cGVycm9yIChlcnJubyk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rICBpID0gdGdraWxsIChnZXRw aWQgKCksIHRocmVhZDJfdGlkLCBTSUdVU1IxKTsKLSsgIGFzc2VydF9wZXJyb3IgKGVycm5vKTsK LSsgIGFzc2VydCAoaSA9PSAwKTsKLSsgIGkgPSB0Z2tpbGwgKGdldHBpZCAoKSwgdGhyZWFkMl90 aWQsIFNJR1VTUjIpOwotKyAgYXNzZXJ0X3BlcnJvciAoZXJybm8pOwotKyAgYXNzZXJ0IChpID09 IDApOwotKwotKyAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVk IGJ5IHRoZSBzaWduYWxzLlxuIik7Ci0rCi0rICBpZiAodHJhY2VyKQotKyAgICB7Ci0rICAgICAg LyogczM5MHgtdW5rbm93bi1saW51eC1nbnUgd2lsbCBmYWlsIHdpdGggIlIgKHJ1bm5pbmcpIi4g ICovCi0rCi0rICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMV90aWQsICJ0ICh0cmFjaW5nIHN0b3Ap Iik7Ci0rCi0rICAgICAgc3RhdGVfd2FpdCAodGhyZWFkMl90aWQsICJ0ICh0cmFjaW5nIHN0b3Ap Iik7Ci0rICAgIH0KLSsKLSsgIGNsZWFudXAgKCk7Ci0rCi0rICBwcmludGYgKCJKb2luaW5nIHRo ZSB0aHJlYWRzLlxuIik7Ci0rCi0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5h dGVfbXV0ZXgpOwotKyAgYXNzZXJ0IChpID09IDApOwotKwotKyAgaSA9IHB0aHJlYWRfam9pbiAo dGhyZWFkMSwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBpID0gcHRocmVhZF9q b2luICh0aHJlYWQyLCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIHByaW50ZiAo IkV4aXRpbmcuXG4iKTsJLyogYnJlYWstYXQtZXhpdCAqLwotKwotKyAgcmV0dXJuIEVYSVRfU1VD Q0VTUzsKLSt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cAkyMDEyLTA2LTAy IDIxOjM1OjQwLjI5NjQ5OTA1MCArMDIwMAotQEAgLTAsMCArMSw5NCBAQAotKyMgQ29weXJpZ2h0 IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0ZmlsZSAic2lnaW5mby10aHJlYWRzIgotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9Ci0raWYge1tnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAke2JpbmZpbGV9IGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25h bF9mbGFncz0tbHJ0XV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStjbGVhbl9y ZXN0YXJ0ICR0ZXN0ZmlsZQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0rIyBgbm9zdG9wIG5vcHJpbnQgcGFzcycgY291bGQgaW4gc29tZSBjYXNlcyByZXBv cnQgZmFsc2UgUEFTUyBkdWUgdG8gdGhlCi0rIyAocHJlZW1wdCAnaGFuZGxlJykgY29kZSBwYXRo LgotKwotK2dkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBzdG9wIHByaW50IHBhc3MiICJTaWduYWxc WyBcdFxdK1N0b3BcWyBcdFxdK1ByaW50XFsgXHRcXStQYXNzIHRvIHByb2dyYW1cWyBcdFxdK0Rl c2NyaXB0aW9uXHJcblNJR1VTUjFcWyBcdFxdK1llc1xbIFx0XF0rWWVzXFsgXHRcXStZZXNcWyBc dFxdLioiCi0rZ2RiX3Rlc3QgImhhbmRsZSBTSUdVU1IyIHN0b3AgcHJpbnQgcGFzcyIgIlNpZ25h bFxbIFx0XF0rU3RvcFxbIFx0XF0rUHJpbnRcWyBcdFxdK1Bhc3MgdG8gcHJvZ3JhbVxbIFx0XF0r RGVzY3JpcHRpb25cclxuU0lHVVNSMlxbIFx0XF0rWWVzXFsgXHRcXStZZXNcWyBcdFxdK1llc1xb IFx0XF0uKiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWst YXQtZXhpdCJdCi0rCi0rc2V0IHRlc3QgImdldCBwaWQiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInAg Z2V0cGlkICgpIiAkdGVzdCB7Ci0rICAgIC1yZSAiID0gKFxbMC05XF0rKVxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCXNldCBwaWQgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCXBhc3MgJHRlc3QKLSsg ICAgfQotK30KLSsKLStmb3Ige3NldCBzaWdjb3VudCAwfSB7JHNpZ2NvdW50IDwgNH0ge2luY3Ig c2lnY291bnR9IHsKLSsgICAgc2V0IHRlc3QgImNhdGNoIHNpZ25hbCAkc2lnY291bnQiCi0rICAg IHNldCBzaWd1c3IgIiIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkdGVzdCB7 Ci0rCS1yZSAiUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHVVNSKFxbMTJcXSksIFVzZXIgZGVm aW5lZCBzaWduYWwgXFsxMlxdXFwuXHJcbi4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHNl dCBzaWd1c3IgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCSAgICBwYXNzICR0ZXN0Ci0rCX0KLSsg ICAgfQotKyAgICBpZiB7JHNpZ3VzciA9PSAiIn0gewotKwlyZXR1cm4gLTEKLSsgICAgfQotKwot KyAgICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9zaWdubyIKLSsgICAgaWYgeyRzaWd1 c3IgPT0gMX0gewotKwlzZXQgc2lnbm8gMTAKLSsgICAgfSBlbHNlIHsKLSsJc2V0IHNpZ25vIDEy Ci0rICAgIH0KLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUge3AgJF9zaWdpbmZvLnNpX3NpZ25vfSAk dGVzdCB7Ci0rCS1yZSAiID0gJHNpZ25vXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3Mg JHRlc3QKLSsJfQotKwktcmUgIkF0dGVtcHQgdG8gZXh0cmFjdCBhIGNvbXBvbmVudCBvZiBhIHZh bHVlIHRoYXQgaXMgbm90IGEgc3RydWN0dXJlXFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAg IHVuc3VwcG9ydGVkICR0ZXN0Ci0rCX0KLSsgICAgfQotKwotKyAgICBzZXQgdGVzdCAic2lnbmFs ICRzaWdjb3VudCBzaV9jb2RlIGlzIFNJX1RLSUxMIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSB7 cCAkX3NpZ2luZm8uc2lfY29kZX0gJHRlc3QgewotKwktcmUgIiA9IC02XHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwktcmUgIkF0dGVtcHQgdG8gZXh0cmFjdCBh IGNvbXBvbmVudCBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGEgc3RydWN0dXJlXFwuXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJICAgIHVuc3VwcG9ydGVkICR0ZXN0Ci0rCX0KLSsgICAgfQotKwotKyAg ICBzZXQgdGVzdCAic2lnbmFsICRzaWdjb3VudCBzaV9waWQiCi0rICAgIGdkYl90ZXN0X211bHRp cGxlIHtwICRfc2lnaW5mby5fc2lmaWVsZHMuX2tpbGwuc2lfcGlkfSAkdGVzdCB7Ci0rCS1yZSAi ID0gJHBpZFxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBwYXNzICR0ZXN0Ci0rCX0KLSsJLXJl ICJBdHRlbXB0IHRvIGV4dHJhY3QgYSBjb21wb25lbnQgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBh IHN0cnVjdHVyZVxcLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICB1bnN1cHBvcnRlZCAkdGVz dAotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgYnJlYWst YXQtZXhpdCAiLipicmVhay1hdC1leGl0LioiCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFk cy5jCTIwMTItMDYtMDIgMjE6MzU6NDAuMjk3NDk5MDUwICswMjAwCi1AQCAtMCwwICsxLDU0IEBA Ci0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsK LSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHB0 aHJlYWQuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKwot KyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNkZWZpbmUg dGdraWxsKHRnaWQsIHRpZCwgc2lnKSBzeXNjYWxsIChfX05SX3Rna2lsbCwgKHRnaWQpLCAodGlk KSwgKHNpZykpCi0rI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dldHRpZCkKLSsKLStz dGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKLSsKLStzdGF0aWMgdm9pZAotK2hhbmRsZXIgKGludCBz aWdubykJLyogc3RlcC0wICovCi0rewkJCS8qIHN0ZXAtMCAqLwotKyAgdmFyKys7CQkvKiBzdGVw LTEgKi8KLSsgIHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0aWQgKCksIFNJR1VTUjEpOwkvKiBzdGVw LTIgKi8KLSt9Ci0rCi0rc3RhdGljIHZvaWQgKgotK3N0YXJ0ICh2b2lkICphcmcpCi0rewotKyAg c2lnbmFsIChTSUdVU1IxLCBoYW5kbGVyKTsKLSsgIHRna2lsbCAoZ2V0cGlkICgpLCBnZXR0aWQg KCksIFNJR1VTUjEpOwotKyAgYXNzZXJ0ICgwKTsKLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsK LStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHB0aHJlYWRfdCB0aHJlYWQ7Ci0rCi0rICBwdGhy ZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwotKyAgc3RhcnQgKE5VTEwp OwkvKiBtYWluLXN0YXJ0ICovCi0rICByZXR1cm4gMDsKLSt9Ci1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2ln c3RlcC10aHJlYWRzLmV4cAkyMDEyLTA2LTAyIDIxOjM1OjQwLjI5NzQ5OTA1MCArMDIwMAotQEAg LTAsMCArMSw3NCBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0Zmls ZSBzaWdzdGVwLXRocmVhZHMKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGV4ZWN1 dGFibGUgJHt0ZXN0ZmlsZX0KLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhl Y3V0YWJsZX0KLSsKLStpZiB7IFtnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9 IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rICAgIHJldHVybiAtMQotK30KLSsK LStjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAg IHJldHVybiAtMTsKLSt9Ci0rCi0rIyBgbm9wcmludCcgd291bGQgbm90IHRlc3QgdGhlIGZ1bGwg bG9naWMgb2YgR0RCLgotK2dkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0b3AgcHJpbnQgcGFz cyIgIlxyXG5TSUdVU1IxXFsgXHRcXStOb1xbIFx0XF0rWWVzXFsgXHRcXStZZXNcWyBcdFxdLioi Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmIgotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdGVwLTEiXQotK2dkYl90ZXN0 X25vX291dHB1dCB7c2V0ICRzdGVwMT0kYnBudW19Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInN0ZXAtMSIgIi4qIHN0ZXAtMSAuKiIKLStnZGJfdGVzdF9ub19vdXRwdXQge2Rpc2FibGUg JHN0ZXAxfQotKwotKyMgMSBhcyB3ZSBhcmUgbm93IHN0b3BwZWQgYXQgdGhlIGBzdGVwLTEnIGxh YmVsLgotK3NldCBzdGVwX2F0IDEKLStmb3Ige3NldCBpIDB9IHskaSA8IDEwMH0ge2luY3IgaX0g ewotKyAgICBzZXQgdGVzdCAic3RlcCAkaSIKLSsgICAgIyBQcmVzdW1lIHRoaXMgc3RlcCBmYWls ZWQgLSBhcyBpbiB0aGUgY2FzZSBvZiBhIHRpbWVvdXQuCi0rICAgIHNldCBmYWlsZWQgMQotKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAic3RlcCIgJHRlc3QgewotKwktcmUgIlxyXG5Qcm9ncmFtIHJl Y2VpdmVkIHNpZ25hbCBTSUdVU1IxLCBVc2VyIGRlZmluZWQgc2lnbmFsIDEuXHJcbiIgewotKwkg ICAgZXhwX2NvbnRpbnVlIC1jb250aW51ZV90aW1lcgotKwl9Ci0rCS1yZSAic3RlcC0oXFswMTJc XSkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBzZXQgbm93ICRleHBlY3Rfb3V0KDEsc3Ry aW5nKQotKwkgICAgaWYgeyRzdGVwX2F0ID09IDIgJiYgJG5vdyA9PSAxfSB7Ci0rCQlzZXQgZmFp bGVkIDAKLSsJICAgIH0gZWxzZWlmIHskc3RlcF9hdCA9PSAxICYmICRub3cgPT0gMn0gewotKwkJ c2V0IGZhaWxlZCAwCi0rCQkjIENvbnRpbnVlIG92ZXIgdGhlIHJlLXNpZ25hbGxpbmcgYmFjayB0 byB0aGUgaGFuZGxlIGVudHJ5LgotKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtlbmFibGUgJHN0ZXAx fSAiIgotKwkJZ2RiX3Rlc3QgImNvbnRpbnVlIiAiIHN0ZXAtMSAuKiIgIiIKLSsJCXNldCBub3cg MQotKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkaXNhYmxlICRzdGVwMX0gIiIKLSsJICAgIH0gZWxz ZSAgewotKwkJZmFpbCAkdGVzdAotKwkgICAgfQotKwkgICAgc2V0IHN0ZXBfYXQgJG5vdwotKwl9 Ci0rICAgIH0KLSsgICAgaWYgJGZhaWxlZCB7Ci0rCXJldHVybgotKyAgICB9Ci0rfQotKyMgV2Ug Y2FuIG5ldmVyIHJlbGlhYmx5IHNheSB0aGUgcmFjeSBwcm9ibGVtYXRpYyBjYXNlIGhhcyBiZWVu IHRlc3RlZC4KLStwYXNzICJzdGVwIgoKZGlmZiAtLWdpdCBhL2dkYi1iejU5MjAzMS1zaWdpbmZv LWxvc3QtNW9mNS5wYXRjaCBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaApp bmRleCBiOWZlMThmLi40NmNiZGJjIDEwMDY0NAotLS0gYS9nZGItYno1OTIwMzEtc2lnaW5mby1s b3N0LTVvZjUucGF0Y2gKKysrIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNo CkBAIC0yNiwxOSArMjYsMTkgQEAgZ2RiLwogCShsaW51eF9uYXRfc2V0X3NpZ2luZm9fZml4dXAp OiBVc2UgUFRSQUNFX0dFVFNJR0lORk8uCiAJKiBsaW51eC1uYXQuaCAoc3RydWN0IGx3cF9pbmZv KSA8c2lnaW5mbz46IFJlbW92ZS4KIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xp bnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvbGludXgtbmF0LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIw MTItMDYtMDIgMjE6MzY6MjEuMDY3NDgzNDY2ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvbGludXgtbmF0LmMJMjAxMi0wNi0wMiAyMTozNzo1NS4zNDU0NDc0MDIgKzAyMDAKLUBA IC0xOTI5LDcgKzE5MjksNiBAQCByZXN1bWVfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCBpbnQg c3RlCi0gCQkJCXN0ZXAsIEdEQl9TSUdOQUxfMCk7CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5v cmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA3LTAzIDE3OjMzOjAyLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDctMDMgMTc6Mzg6 MzYuNzM4MTQyNTA5ICswMjAwCitAQCAtMTkzMyw3ICsxOTMzLDYgQEAgcmVzdW1lX2x3cCAoc3Ry dWN0IGx3cF9pbmZvICpscCwgaW50IHN0ZQorIAkJCQlzdGVwLCBzaWdubyk7CiAgCSAgbHAtPnN0 b3BwZWQgPSAwOwogIAkgIGxwLT5zdGVwID0gc3RlcDsKIC0JICBtZW1zZXQgKCZscC0+c2lnaW5m bywgMCwgc2l6ZW9mIChscC0+c2lnaW5mbykpOwogIAkgIGxwLT5zdG9wcGVkX2J5X3dhdGNocG9p bnQgPSAwOwogIAl9CiAgICAgICAgZWxzZQotQEAgLTIwNzEsNyArMjA3MCw2IEBAIGxpbnV4X25h dF9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKK0BAIC0yMDkyLDcgKzIwOTEsNiBAQCBs aW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCiAgICBpZiAobGludXhfbmF0 X3ByZXBhcmVfdG9fcmVzdW1lICE9IE5VTEwpCiAgICAgIGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jl c3VtZSAobHApOwogICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcHRpZCwgc3Rl cCwgc2lnbm8pOwpAQCAtNDYsNyArNDYsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvbGludXgtbmF0LmMKICAgIGxwLT5zdG9wcGVkX2J5X3dhdGNocG9pbnQgPSAwOwogIAogICAg aWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0yNjI1LDIyICsyNjIzLDYgQEAgd2FpdF9sd3AgKHN0 cnVjdCBsd3BfaW5mbyAqbHApCitAQCAtMjY0NiwyMiArMjY0NCw2IEBAIHdhaXRfbHdwIChzdHJ1 Y3QgbHdwX2luZm8gKmxwKQogICAgcmV0dXJuIHN0YXR1czsKICB9CiAgCkBAIC02OSw3ICs2OSw3 IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogIC8qIFNlbmQg YSBTSUdTVE9QIHRvIExQLiAgKi8KICAKICBzdGF0aWMgaW50Ci1AQCAtMjg4NSw5ICsyODY3LDYg QEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAorQEAgLTI5MDQsOSAr Mjg4Niw2IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKICAJewog IAkgIC8qIFRoZSB0aHJlYWQgd2FzIHN0b3BwZWQgd2l0aCBhIHNpZ25hbCBvdGhlciB0aGFuIFNJ R1NUT1AuICAqLwogIApAQCAtNzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvbGludXgtbmF0LmMKICAJICBzYXZlX3NpZ3RyYXAgKGxwKTsKICAKICAJICBpZiAoZGVi dWdfbGludXhfbmF0KQotQEAgLTMyOTEsMTIgKzMyNzAsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2 ZW50IChpbnQgbHdwaWQsIGludCBzCitAQCAtMzI4OCwxMiArMzI2Nyw3IEBAIGxpbnV4X25hdF9m aWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50IHMKICAgICAgfQogIAogICAgaWYgKGxpbnV4X25h dF9zdGF0dXNfaXNfZXZlbnQgKHN0YXR1cykpCkBAIC05Myw3ICs5Myw3IEBAIEluZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogIAogICAgLyogQ2hlY2sgaWYgdGhlIHRo cmVhZCBoYXMgZXhpdGVkLiAgKi8KICAgIGlmICgoV0lGRVhJVEVEIChzdGF0dXMpIHx8IFdJRlNJ R05BTEVEIChzdGF0dXMpKQotQEAgLTM5NTAsNyArMzkyNCw2IEBAIHJlc3VtZV9zdG9wcGVkX3Jl c3VtZWRfbHdwcyAoc3RydWN0IGx3cF8KK0BAIC0zOTQ3LDcgKzM5MjEsNiBAQCByZXN1bWVfc3Rv cHBlZF9yZXN1bWVkX2x3cHMgKHN0cnVjdCBsd3BfCiAgICAgICAgbGludXhfb3BzLT50b19yZXN1 bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCiAgCQkJICAg IGxwLT5zdGVwLCBHREJfU0lHTkFMXzApOwogICAgICAgIGxwLT5zdG9wcGVkID0gMDsKQEAgLTEw MSw3ICsxMDEsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMK ICAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAgfQogIAotQEAgLTUy MjcsMTEgKzUyMDAsMTkgQEAgbGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jlc3VtZSAoc3RydWN0 CitAQCAtNTIyNCwxMSArNTE5NywxOSBAQCBsaW51eF9uYXRfc2V0X3ByZXBhcmVfdG9fcmVzdW1l IChzdHJ1Y3QKICBzaWdpbmZvX3QgKgogIGxpbnV4X25hdF9nZXRfc2lnaW5mbyAocHRpZF90IHB0 aWQpCiAgewpAQCAtMTI0LDEwICsxMjQsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5j ZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvbGludXgtbmF0LmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9saW51eC1uYXQu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvbGludXgtbmF0 LmgJMjAxMi0wNi0wMiAyMTozNjoyMS4wNjc0ODM0NjYgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9saW51eC1uYXQuaAkyMDEyLTA2LTAyIDIxOjM2OjI3LjE0MDQ4MTE0NCArMDIw MAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMi0wNy0w MyAxNzozMDowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9s aW51eC1uYXQuaAkyMDEyLTA3LTAzIDE3OjM4OjEzLjUwMTE3MDI0NyArMDIwMAogQEAgLTc2LDEw ICs3Niw2IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyogVGhlIGtpbmQgb2Ygc3RlcHBpbmcgb2Yg dGhpcyBMV1AuICAqLwogICAgZW51bSByZXN1bWVfc3RlcCBzdGVwOwoKZGlmZiAtLWdpdCBhL2dk Yi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5p bmcucGF0Y2gKaW5kZXggZDQ3MjRiYS4uYmRlNGU0MCAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Bl bi12ZHNvLXdhcm5pbmcucGF0Y2gKKysrIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0 Y2gKQEAgLTMsMTEgKzMsMTEgQEAgU3ViamVjdDogW3BhdGNoXSBGaXggR05VL0xpbnV4IGNvcmUg b3BlbjogQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6ICBJbnAKIAogWyBOZXcgcGF0 Y2ggdmFyaWFudC4gIF0KIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29s aWItc3ZyNC5jCi1pbmRleCAzMDdlNDgzLi5iYTcwNzY0IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGli LXN2cjQuYwotKysrIGIvZ2RiL3NvbGliLXN2cjQuYwotQEAgLTEyMjEsOCArMTIyMSwxNyBAQCBz dnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlzdCAqKipsaW5rX3B0 cl9wdHIsCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc29saWItc3ZyNC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAx Mi0wNy0wMyAxNzozNDoxOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAz L2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNy0wMyAxNzozNDozNS42MTQ0MzIxNzQgKzAyMDAKK0BA IC0xMjIxLDggKzEyMjEsMTcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3Ry dWN0CiAgCQkJICBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxLCAmZXJyY29kZSk7CiAgICAgICAg aWYgKGVycmNvZGUgIT0gMCkKICAJewpAQCAtMjcsMTEgKzI3LDExIEBAIGluZGV4IDMwN2U0ODMu LmJhNzA3NjQgMTAwNjQ0CiAgCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCSAgY29udGlu dWU7CiAgCX0KLWRpZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCi1pbmRleCA5 MDQzOWJhLi4zNmU0ZDJhIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xp Yi5jCi1AQCAtNjY5LDcgKzY2OSw3IEBAIHNvbGliX3VzZWQgKGNvbnN0IHN0cnVjdCBzb19saXN0 ICpjb25zdCBrbm93bikKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zb2xpYi5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9zb2xpYi5jCTIwMTIt MDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvc29saWIuYwkyMDEyLTA3LTAzIDE3OjM0OjM1LjYxNjQzMjE3MiArMDIwMAorQEAgLTY3Miw3 ICs2NzIsNyBAQCBzb2xpYl91c2VkIChjb25zdCBzdHJ1Y3Qgc29fbGlzdCAqY29uc3QKICAgICBw cm9jZXNzZXMgd2UndmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhhdCdzIG9rYXkuICAqLwogIAog IHN0YXRpYyB2b2lkCkBAIC00MCw3ICs0MCw3IEBAIGluZGV4IDkwNDM5YmEuLjM2ZTRkMmEgMTAw NjQ0CiAgewogICAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0 X2dkYmFyY2gpOwogICAgc3RydWN0IHNvX2xpc3QgKmluZmVyaW9yID0gb3BzLT5jdXJyZW50X3Nv cygpOwotQEAgLTg0MCw2ICs4NDAsMjEgQEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNo LXBhdGhcIiBvciBcInNldCBzeXNyb290XCI/IiksCitAQCAtODQzLDYgKzg0MywyMSBAQCBEbyB5 b3UgbmVlZCBcInNldCBzb2xpYi1zZWFyY2gtcGF0aFwiIG9yCiAgICAgIH0KICB9CiAgCkBAIC02 MiwxMCArNjIsMTAgQEAgaW5kZXggOTA0MzliYS4uMzZlNGQyYSAxMDA2NDQKICAKICAvKiBSZXR1 cm4gbm9uLXplcm8gaWYgTkFNRSBpcyB0aGUgbGlicHRocmVhZCBzaGFyZWQgbGlicmFyeS4KICAK LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCi1pbmRleCAwMjdlYjJjLi5hYjY4NmYwIDEw MDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxl LmV4cAkyMDEyLTA2LTIxIDIyOjQ2OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxMi0wNy0wMyAx NzozNDozNS42MTc0MzIxNzEgKzAyMDAKIEBAIC0yNTYsMyArMjU2LDE4IEBAIGlmICFbaXNfcmVt b3RlIHRhcmdldF0gewogIAogICAgICBnZGJfZXhpdApAQCAtODUsMTEgKzg1LDExIEBAIGluZGV4 IDAyN2ViMmMuLmFiNjg2ZjAgMTAwNjQ0CiArCXBhc3MgJHRlc3QKICsgICAgfQogK30KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKLWluZGV4IDNjMDMzMTcuLjBmYzM4ZDkg MTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAotQEAgLTI3LDcgKzI3 LDggQEAgc2V0IGxpYl9mbGFncyBbbGlzdCBkZWJ1ZyBsZGZsYWdzPS1XbCwtQnN5bWJvbGljXQor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1z eW1ib2wuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAkyMDEyLTA2LTIxIDIyOjQ2OjIyLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9zb2xpYi1zeW1ib2wuZXhwCTIwMTItMDctMDMgMTc6MzY6MDYuNTIwMzIyODIwICswMjAw CitAQCAtMjcsNyArMjcsOCBAQCBzZXQgbGliX2ZsYWdzIFtsaXN0IGRlYnVnIGxkZmxhZ3M9LVds LC1CCiAgIyBCaW5hcnkgZmlsZS4KICBzZXQgdGVzdGZpbGUgInNvbGliLXN5bWJvbC1tYWluIgog IHNldCBzcmNmaWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0uYwpAQCAtOTgsNyAr OTgsNyBAQCBpbmRleCAzYzAzMzE3Li4wZmMzOGQ5IDEwMDY0NAogK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQogIHNldCBiaW5fZmxhZ3MgW2xpc3QgZGVidWcg c2hsaWI9JHtiaW5maWxlX2xpYn1dCiAgCi0gaWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmls ZX1dIHsKKyBpZiBbZ2V0X2NvbXBpbGVyX2luZm9dIHsKIEBAIC03Miw4ICs3MywyNiBAQCBnZGJf dGVzdCAiYnIgZm9vMiIgXAogIAkgIkJyZWFrcG9pbnQuKjogZm9vMi4gLjIgbG9jYXRpb25zLi4q IiBcCiAgCSAiZm9vMiBpbiBtZGxpYiIKCmRpZmYgLS1naXQgYS9nZGItZGVqYWdudS1nby5wYXRj aCBiL2dkYi1kZWphZ251LWdvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk ZGFjMDdiLi4wMDAwMDAwCi0tLSBhL2dkYi1kZWphZ251LWdvLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNDIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTItMDYvbXNnMDAwNTAuaHRtbAotU3ViamVjdDogW3BhdGNoXSBkZWphZ251IGNvbXBhdC4gLSBt aXNzaW5nIGZpbmRfZ29fbGlua2VyICBbUmU6IFtwYXRjaCwgZG9jIFJGQV0gR28gbGFuZ3VhZ2Ug c3VwcG9ydF0KLQotT24gV2VkLCAyNSBBcHIgMjAxMiAwNDoxNzozNSArMDIwMCwgRG91ZyBFdmFu cyB3cm90ZToKLT4gK2lmIHtbaW5mbyBwcm9jcyBmaW5kX2dvX2xpbmtlcl0gPT0gIiJ9IHsKLT4g KyAgICByZW5hbWUgZ2RiX2ZpbmRfZ28gZmluZF9nbwotPiArICAgIHJlbmFtZSBnZGJfZmluZF9n b19saW5rZXIgZmluZF9nb19saW5rZXIKLT4gKyAgICAjIE5vIG5lZWQgdG8gc2V0IHVzZV9nZGJf Y29tcGlsZS4KLT4gK30KLQotSXMgdGhlcmUgYSByZWFzb24gZm9yIGl0PyAgV2l0aCByZWNlbnQg RmVkb3JhIDE3IHVwZGF0ZQotCWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5j Z2k/aWQ9NjM1NjUxCi0KLWRlamFnbnUgaGFzIHN0YXJ0ZWQgdG8gc3VwcG9ydCAnZmluZF9nZm9y dHJhbicuICBCdXQgaXQgc3RpbGwgZG9lcyBub3Qgc3VwcG9ydAotJ2ZpbmRfZ29fbGlua2VyJy4g IFRoaXMgaGFzIHJlc3VsdGVkIGluIHJlZ3Jlc3Npb24gZmFpbGluZyB0byBjb21waWxlIGFueQot Z2RiLmdvLyouZXhwIGZpbGVzLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi90ZXN0c3VpdGUv Ci0yMDEyLTA2LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQkqIGxpYi9mdXR1cmUuZXhwOiBTZXQgJHVzZV9nZGJfY29tcGlsZSBldmVuIGlmIG9ubHkg ZmluZF9nb19saW5rZXIgaXMKLQltaXNzaW5nLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9saWIvZnV0dXJlLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2Z1dHVyZS5leHAKLWluZGV4IDQw NDU2YzAuLmJmNDc5ODggMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9mdXR1cmUuZXhw Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9mdXR1cmUuZXhwCi1AQCAtNTE0LDcgKzUxNCw3IEBA IGlmIHtbaW5mbyBwcm9jcyBmaW5kX2dmb3J0cmFuXSA9PSAiIn0gewotIGlmIHtbaW5mbyBwcm9j cyBmaW5kX2dvX2xpbmtlcl0gPT0gIiJ9IHsKLSAgICAgcmVuYW1lIGdkYl9maW5kX2dvIGZpbmRf Z28KLSAgICAgcmVuYW1lIGdkYl9maW5kX2dvX2xpbmtlciBmaW5kX2dvX2xpbmtlcgotLSAgICAj IE5vIG5lZWQgdG8gc2V0IHVzZV9nZGJfY29tcGlsZS4KLSsgICAgc2V0IHVzZV9nZGJfY29tcGls ZSAxCi0gfQotIAotIGlmIHskdXNlX2dkYl9jb21waWxlfSB7Ci0KCmRpZmYgLS1naXQgYS9nZGIt ZGxvcGVuLXN0YXAtcHJvYmUtdGVzdC5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS10ZXN0 LnBhdGNoCmluZGV4IGJlNWU3NmYuLjE1ZjFjMzEgMTAwNjQ0Ci0tLSBhL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS10ZXN0LnBhdGNoCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS10ZXN0LnBhdGNo CkBAIC00LDEwICs0LDEwIEBAIERhdGU6ICAgTW9uIEF1ZyA4IDEyOjA4OjUzIDIwMTEgKzAyMDAK IAogICAgICt0ZXN0Y2FzZQogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxp Yi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCTIwMTItMDYtMDIgMjA6MDM6NDIuNzExMzkzNzc2 ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCTIwMTItMDctMDMgMTc6NDQ6NDUuNzk3Njk4NjU2ICsw MjAwCiBAQCAtMCwwICsxLDQwIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTQ5LDEwICs0OSwxMCBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxp Yi5jCiArICBpID0gcHRocmVhZF9qb2luICh0LCBOVUxMKTsKICsgIGFzc2VydCAoaSA9PSAwKTsK ICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2Rsb3Blbi1saWJwdGhyZWFkLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5j CTIwMTItMDYtMDIgMjA6MDM6NDIuNzEyMzkzNzc1ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmMJMjAxMi0w Ny0wMyAxNzo0NDo0NS43OTg2OTg2NTUgKzAyMDAKIEBAIC0wLDAgKzEsNDYgQEAKICsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTAwLDEw ICsxMDAsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJw dGhyZWFkLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwCTIwMTIt MDYtMDIgMjA6MDM6NDIuNzI0MzkzNzcxICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cAkyMDEyLTA3LTAz IDE3OjQ0OjQ1Ljc5ODY5ODY1NSArMDIwMAogQEAgLTAsMCArMSw3NCBAQAogKyMgQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAtMTc5LDE1ICsxNzks MTUgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy9kbG9wZW4tbGlicHRocmVhZC5leHAKICtnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90 aWZ5IiAiLiogbm90aWZ5LWhlcmUgLioiCiArCiArZ2RiX3Rlc3QgImluZm8gc2hhcmVkbGlicmFy eSIgey9saWJwdGhyZWFkXC5zby4qfSAibGlicHRocmVhZC5zbyBmb3VuZCIKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2 LTAyIDE5OjExOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDIwOjAzOjQyLjcyNzM5Mzc3MCArMDIw MAotQEAgLTM2OTMsMzAgKzM2OTMsNDkgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlIHsgdGVzdG5h bWUgZXhlY3V0YQorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCTIwMTItMDctMDMgMTc6MzQ6MTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDctMDMgMTc6NDY6 NDQuMzE2NTE0MDc2ICswMjAwCitAQCAtMzc1OCwyMyArMzc1OCw3IEBAIHByb2MgYnVpbGRfZXhl Y3V0YWJsZSB7IHRlc3RuYW1lIGV4ZWN1dGEKICAgICAgICAgIHNldCBzb3VyY2VzICR7ZXhlY3V0 YWJsZX0uYwogICAgICB9CiAgCi0tICAgIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtleGVjdXRhYmxlfQorLSAgICBzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJGV4 ZWN1dGFibGVdCiAtCiAtICAgIHNldCBvYmplY3RzIHt9CiAtICAgIGZvciB7c2V0IGkgMH0gIlwk aTxbbGxlbmd0aCAkc291cmNlc10iIHtpbmNyIGl9IHsKQEAgLTE5NywyOSArMTk3LDI5IEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKIC0gICAg ICAgICAgICByZXR1cm4gLTEKIC0gICAgICAgIH0KIC0gICAgICAgIGxhcHBlbmQgb2JqZWN0cyAi JHtiaW5maWxlfSR7aX0ubyIKLSsgICAgIyBnZXRfY29tcGlsZXJfaW5mbyBieSBnZGJfY29tcGls ZV9zaGxpYiBhbmQgZ2RiX2NvbXBpbGVfc2hsaWJfcHRocmVhZHMuCi0rICAgIHNldCBpbmZvX29w dGlvbnMgIiIKLSsgICAgaWYgeyBbbHNlYXJjaCAtZXhhY3QgJG9wdGlvbnMgImMrKyJdID49IDAg fSB7Ci0rCXNldCBpbmZvX29wdGlvbnMgImMrKyIKLSAgICAgfQorLSAgICB9CiAtICAgIAogLSAg ICBpZiAgeyBbZ2RiX2NvbXBpbGUgJG9iamVjdHMgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgJG9w dGlvbnNdICE9ICIiIH0gewogLSAgICAgICAgdW50ZXN0ZWQgJHRlc3RuYW1lCi0rICAgIGlmIFtn ZXRfY29tcGlsZXJfaW5mbyBiaW5maWxlX3VudXNlZCAke2luZm9fb3B0aW9uc31dIHsKKy0gICAg ICAgIHJldHVybiAtMQorLSAgICB9CistCisrICAgICMgZ2V0X2NvbXBpbGVyX2luZm8gYnkgZ2Ri X2NvbXBpbGVfc2hsaWIgYW5kIGdkYl9jb21waWxlX3NobGliX3B0aHJlYWRzLgorICAgICBzZXQg aW5mb19vcHRpb25zICIiCisgICAgIGlmIHsgW2xzZWFyY2ggLWV4YWN0ICRvcHRpb25zICJjKysi XSA+PSAwIH0geworIAlzZXQgaW5mb19vcHRpb25zICJjKysiCitAQCAtMzc4Miw2ICszNzY2LDQx IEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZSB7IHRlc3RuYW1lIGV4ZWN1dGEKKyAgICAgaWYgW2dl dF9jb21waWxlcl9pbmZvICR7aW5mb19vcHRpb25zfV0gewogICAgICAgICAgcmV0dXJuIC0xCiAg ICAgIH0KLSAKLS0gICAgc2V0IGluZm9fb3B0aW9ucyAiIgotLSAgICBpZiB7IFtsc2VhcmNoIC1l eGFjdCAkb3B0aW9ucyAiYysrIl0gPj0gMCB9IHsKLS0Jc2V0IGluZm9fb3B0aW9ucyAiYysrIgot KyAgICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKysKKysg ICAgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRleGVjdXRhYmxlXQogKwogKyAg ICBzZXQgZnVuYyBnZGJfY29tcGlsZQogKyAgICBzZXQgZnVuY19pbmRleCBbbHNlYXJjaCAtcmVn ZXhwICRvcHRpb25zIHteKHB0aHJlYWRzfHNobGlifHNobGliX3B0aHJlYWRzKSR9XQogKyAgICBp ZiB7JGZ1bmNfaW5kZXggIT0gLTF9IHsKICsJc2V0IGZ1bmMgIiR7ZnVuY31fW2xpbmRleCAkb3B0 aW9ucyAkZnVuY19pbmRleF0iCi0gICAgIH0KLS0gICAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7 YmluZmlsZX0gJHtpbmZvX29wdGlvbnN9XSB7CisrICAgIH0KICsKICsgICAgIyBnZGJfY29tcGls ZV9zaGxpYiBhbmQgZ2RiX2NvbXBpbGVfc2hsaWJfcHRocmVhZHMgZG8gbm90IHVzZSB0aGUgM3Jk CiArICAgICMgcGFyYW1ldGVyLiAgVGhleSBhbHNvIHJlcXVpcmVzICRzb3VyY2VzIHdoaWxlIGdk Yl9jb21waWxlIGFuZApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKyAgICB9CiArICAgIGlmICB7ICRyZXQg IT0gIiIgfSB7CiArICAgICAgICB1bnRlc3RlZCAkdGVzdG5hbWUKLSAgICAgICAgIHJldHVybiAt MQotICAgICB9CisrICAgICAgICByZXR1cm4gLTEKKysgICAgfQogKwogICAgICByZXR1cm4gMAog IH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxp bmstc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUv bGliL3ByZWxpbmstc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw NjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTAxLTA0 IDA5OjI3OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTA2LTAyIDIwOjAzOjQyLjczMzM5 Mzc2OCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTItMDEtMDQgMDk6Mjc6NTYuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBv cnQuZXhwCTIwMTItMDctMDMgMTc6NDQ6NDUuODAzNjk4NjQ4ICswMjAwCiBAQCAtOTUsOCArOTUs OSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsKICAjIFdyYXAgZnVuY3Rpb24gYnVpbGRf ZXhlY3V0YWJsZSBzbyB0aGF0IHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSBpcyBmdWxseQogICMg c2VsZi1zdWZmaWNpZW50ICh3aXRob3V0IGRlcGVuZGVuY2llcyBvbiBzeXN0ZW0gbGlicmFyaWVz KS4gIFBhcmFtZXRlcgpAQCAtMzA2LDEwICszMDYsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAogICAgICByZXR1cm4g JHByZWxpbmtfYXJncwogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLmV4cAkyMDEyLTAyLTI0IDE1OjA5OjA4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIw MTItMDYtMDIgMjA6MDQ6NTYuMTM1MzY5Njg3ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcw My5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEyLTA2LTIx IDIyOjQ2OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDctMDMgMTc6NDQ6NDUuODA0 Njk4NjQ3ICswMjAwCiBAQCAtMTA5LDE0ICsxMDksMjEgQEAgcHJvYyBzdHJpcF9kZWJ1ZyB7ZGVz dH0gewogICAgICB9CiAgfQoKZGlmZiAtLWdpdCBhL2dkYi1lcnJuby1mdW5jLWRhdGF0eXBlLXJl dmVydC5wYXRjaCBiL2dkYi1lcnJuby1mdW5jLWRhdGF0eXBlLXJldmVydC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDdkNzZmCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWVycm5vLWZ1bmMtZGF0YXR5cGUtcmV2ZXJ0LnBhdGNoCkBAIC0wLDAgKzEsMjM2IEBACitS ZWdyZXNzaW9uOiBJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLiBb UmU6IEZZSTogZml4IFBSIDk1MTRdCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAxMi0wNy9tc2cwMDA0My5odG1sCisKK3JldmVydGVkOgoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wNi9tc2cwMDE0OC5odG1sCisKK2RpZmYgLWR1cCAtcnVwIGdk Yi03LjQuNTAuMjAxMjA3MDMtb3JpZy9nZGIvYy1leHAueSBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi9jLWV4cC55CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi9jLWV4cC55CTIwMTIt MDctMDMgMjA6MDg6MTUuOTc2NDE4NDIwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvYy1leHAueQkyMDEyLTA3LTAzIDIwOjA4OjM1LjkzNTM5MDI4MiArMDIwMAorQEAgLTE3Miwx MCArMTcyLDkgQEAgc3RhdGljIHN0cnVjdCBzdG9rZW4gb3BlcmF0b3Jfc3Rva2VuIChjbworIC8q ICV0eXBlIDxidmFsPiBibG9jayAqLworIAorIC8qIEZhbmN5IHR5cGUgcGFyc2luZy4gICovCist JXR5cGUgPHZvaWR2YWw+IGZ1bmNfbW9kIGRpcmVjdF9hYnNfZGVjbCBhYnNfZGVjbCBwdHJfb3Bl cmF0b3IKKysldHlwZSA8dm9pZHZhbD4gZnVuY19tb2QgZGlyZWN0X2Fic19kZWNsIGFic19kZWNs CisgJXR5cGUgPHR2YWw+IHB0eXBlCisgJXR5cGUgPGx2YWw+IGFycmF5X21vZAorLSV0eXBlIDx0 dmFsPiBjb252ZXJzaW9uX3R5cGVfaWQKKyAKKyAldG9rZW4gPHR5cGVkX3ZhbF9pbnQ+IElOVAor ICV0b2tlbiA8dHlwZWRfdmFsX2Zsb2F0PiBGTE9BVAorQEAgLTkzMiw3ICs5MzEsOSBAQCB2YXJp YWJsZToJbmFtZV9ub3RfdHlwZW5hbWUKKyAJOworIAorIHNwYWNlX2lkZW50aWZpZXIgOiAnQCcg TkFNRQorLQkJeyBpbnNlcnRfdHlwZV9hZGRyZXNzX3NwYWNlIChjb3B5X25hbWUgKCQyLnN0b2tl bikpOyB9CisrCQl7IHB1c2hfdHlwZV9hZGRyZXNzX3NwYWNlIChjb3B5X25hbWUgKCQyLnN0b2tl bikpOworKwkJICBwdXNoX3R5cGUgKHRwX3NwYWNlX2lkZW50aWZpZXIpOworKwkJfQorIAk7Cisg CisgY29uc3Rfb3Jfdm9sYXRpbGU6IGNvbnN0X29yX3ZvbGF0aWxlX25vb3B0CitAQCAtOTUxLDIz ICs5NTIsMTQgQEAgY29uc3Rfb3Jfdm9sYXRpbGVfb3Jfc3BhY2VfaWRlbnRpZmllcjoKKyAJfAor IAk7CisgCistcHRyX29wZXJhdG9yOgorLQkJcHRyX29wZXJhdG9yICcqJworLQkJCXsgaW5zZXJ0 X3R5cGUgKHRwX3BvaW50ZXIpOyB9CistCQljb25zdF9vcl92b2xhdGlsZV9vcl9zcGFjZV9pZGVu dGlmaWVyCistCQkJeyAkJCA9IDA7IH0KKy0JfAknKicgCistCQkJeyBpbnNlcnRfdHlwZSAodHBf cG9pbnRlcik7IH0KKy0JCWNvbnN0X29yX3ZvbGF0aWxlX29yX3NwYWNlX2lkZW50aWZpZXIKKy0J CQl7ICQkID0gMDsgfQorK2Fic19kZWNsOgknKicKKysJCQl7IHB1c2hfdHlwZSAodHBfcG9pbnRl cik7ICQkID0gMDsgfQorKwl8CScqJyBhYnNfZGVjbAorKwkJCXsgcHVzaF90eXBlICh0cF9wb2lu dGVyKTsgJCQgPSAkMjsgfQorIAl8CScmJworLQkJCXsgaW5zZXJ0X3R5cGUgKHRwX3JlZmVyZW5j ZSk7ICQkID0gMDsgfQorLQl8CScmJyBwdHJfb3BlcmF0b3IKKy0JCQl7IGluc2VydF90eXBlICh0 cF9yZWZlcmVuY2UpOyAkJCA9IDA7IH0KKy0JOworLQorLWFic19kZWNsOglwdHJfb3BlcmF0b3Ig ZGlyZWN0X2Fic19kZWNsCistCXwJcHRyX29wZXJhdG9yCisrCQkJeyBwdXNoX3R5cGUgKHRwX3Jl ZmVyZW5jZSk7ICQkID0gMDsgfQorKwl8CScmJyBhYnNfZGVjbAorKwkJCXsgcHVzaF90eXBlICh0 cF9yZWZlcmVuY2UpOyAkJCA9ICQyOyB9CisgCXwJZGlyZWN0X2Fic19kZWNsCisgCTsKKyAKK0BA IC0xMjExLDMwICsxMjAzLDIyIEBAIG5vbmVtcHR5X3R5cGVsaXN0CisgCTsKKyAKKyBwdHlwZQk6 CXR5cGViYXNlCistCXwJcHR5cGUgYWJzX2RlY2wKKy0JCXsgJCQgPSBmb2xsb3dfdHlwZXMgKCQx KTsgfQorLQk7CistCistY29udmVyc2lvbl90eXBlX2lkOiB0eXBlYmFzZSBjb252ZXJzaW9uX2Rl Y2xhcmF0b3IKKysJfAlwdHlwZSBjb25zdF9vcl92b2xhdGlsZV9vcl9zcGFjZV9pZGVudGlmaWVy IGFic19kZWNsIGNvbnN0X29yX3ZvbGF0aWxlX29yX3NwYWNlX2lkZW50aWZpZXIKKyAJCXsgJCQg PSBmb2xsb3dfdHlwZXMgKCQxKTsgfQorIAk7CisgCistY29udmVyc2lvbl9kZWNsYXJhdG9yOiAg LyogTm90aGluZy4gICovCistCXwgcHRyX29wZXJhdG9yIGNvbnZlcnNpb25fZGVjbGFyYXRvcgor LQk7CistCisgY29uc3RfYW5kX3ZvbGF0aWxlOiAJQ09OU1RfS0VZV09SRCBWT0xBVElMRV9LRVlX T1JECisgCXwgCQlWT0xBVElMRV9LRVlXT1JEIENPTlNUX0tFWVdPUkQKKyAJOworIAorIGNvbnN0 X29yX3ZvbGF0aWxlX25vb3B0OiAgCWNvbnN0X2FuZF92b2xhdGlsZSAKKy0JCQl7IGluc2VydF90 eXBlICh0cF9jb25zdCk7CistCQkJICBpbnNlcnRfdHlwZSAodHBfdm9sYXRpbGUpOyAKKysJCQl7 IHB1c2hfdHlwZSAodHBfY29uc3QpOworKwkJCSAgcHVzaF90eXBlICh0cF92b2xhdGlsZSk7IAor IAkJCX0KKyAJfCAJCUNPTlNUX0tFWVdPUkQKKy0JCQl7IGluc2VydF90eXBlICh0cF9jb25zdCk7 IH0KKysJCQl7IHB1c2hfdHlwZSAodHBfY29uc3QpOyB9CisgCXwgCQlWT0xBVElMRV9LRVlXT1JE CistCQkJeyBpbnNlcnRfdHlwZSAodHBfdm9sYXRpbGUpOyB9CisrCQkJeyBwdXNoX3R5cGUgKHRw X3ZvbGF0aWxlKTsgfQorIAk7CisgCisgb3BlcmF0b3I6CU9QRVJBVE9SIE5FVworQEAgLTEzNDEs NyArMTMyNSw3IEBAIG9wZXJhdG9yOglPUEVSQVRPUiBORVcKKyAJCQl7ICQkID0gb3BlcmF0b3Jf c3Rva2VuICgiKCkiKTsgfQorIAl8CU9QRVJBVE9SICdbJyAnXScKKyAJCQl7ICQkID0gb3BlcmF0 b3Jfc3Rva2VuICgiW10iKTsgfQorLQl8CU9QRVJBVE9SIGNvbnZlcnNpb25fdHlwZV9pZAorKwl8 CU9QRVJBVE9SIHB0eXBlCisgCQkJeyBjaGFyICpuYW1lOworIAkJCSAgbG9uZyBsZW5ndGg7Cisg CQkJICBzdHJ1Y3QgdWlfZmlsZSAqYnVmID0gbWVtX2ZpbGVvcGVuICgpOworZGlmZiAtZHVwIC1y dXAgZ2RiLTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi9wYXJzZS5jIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3BhcnNlLmMKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLW9yaWcvZ2RiL3BhcnNlLmMJ MjAxMi0wNy0wMyAyMDowODoxNS45Nzk0MTg0MTUgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi9wYXJzZS5jCTIwMTItMDctMDMgMjA6MDg6MzUuOTM4MzkwMjc3ICswMjAwCitAQCAt MTM3MCw0OSArMTM3MCw2IEBAIGNoZWNrX3R5cGVfc3RhY2tfZGVwdGggKHZvaWQpCisgICAgIH0K KyB9CisgCistLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGluc2VydF90eXBlIGFuZCBpbnNlcnRf dHlwZV9hZGRyZXNzX3NwYWNlLgorLSAgIFRoaXMgZG9lcyB3b3JrIG9mIGV4cGFuZGluZyB0aGUg dHlwZSBzdGFjayBhbmQgaW5zZXJ0aW5nIHRoZSBuZXcKKy0gICBlbGVtZW50LCBFTEVNRU5ULCBp bnRvIHRoZSBzdGFjayBhdCBsb2NhdGlvbiBTTE9ULiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWlu c2VydF9pbnRvX3R5cGVfc3RhY2sgKGludCBzbG90LCB1bmlvbiB0eXBlX3N0YWNrX2VsdCBlbGVt ZW50KQorLXsKKy0gIGNoZWNrX3R5cGVfc3RhY2tfZGVwdGggKCk7CistCistICBpZiAoc2xvdCA8 IHR5cGVfc3RhY2tfZGVwdGgpCistICAgIG1lbW1vdmUgKCZ0eXBlX3N0YWNrW3Nsb3QgKyAxXSwg JnR5cGVfc3RhY2tbc2xvdF0sCistCSAgICAgKHR5cGVfc3RhY2tfZGVwdGggLSBzbG90KSAqIHNp emVvZiAodW5pb24gdHlwZV9zdGFja19lbHQpKTsKKy0gIHR5cGVfc3RhY2tbc2xvdF0gPSBlbGVt ZW50OworLSAgKyt0eXBlX3N0YWNrX2RlcHRoOworLX0KKy0KKy0vKiBJbnNlcnQgYSBuZXcgdHlw ZSwgVFAsIGF0IHRoZSBib3R0b20gb2YgdGhlIHR5cGUgc3RhY2suICBJZiBUUCBpcworLSAgIHRw X3BvaW50ZXIgb3IgdHBfcmVmZXJlbmNlLCBpdCBpcyBpbnNlcnRlZCBhdCB0aGUgYm90dG9tLiAg SWYgVFAgaXMKKy0gICBhIHF1YWxpZmllciwgaXQgaXMgaW5zZXJ0ZWQgYXQgc2xvdCAxIChqdXN0 IGFib3ZlIGEgcHJldmlvdXMKKy0gICB0cF9wb2ludGVyKSBpZiB0aGVyZSBpcyBhbnl0aGluZyBv biB0aGUgc3RhY2ssIG9yIHNpbXBseSBwdXNoZWQgaWYKKy0gICB0aGUgc3RhY2sgaXMgZW1wdHku ICBPdGhlciB2YWx1ZXMgZm9yIFRQIGFyZSBpbnZhbGlkLiAgKi8KKy0KKy12b2lkCistaW5zZXJ0 X3R5cGUgKGVudW0gdHlwZV9waWVjZXMgdHApCisteworLSAgdW5pb24gdHlwZV9zdGFja19lbHQg ZWxlbWVudDsKKy0gIGludCBzbG90OworLQorLSAgZ2RiX2Fzc2VydCAodHAgPT0gdHBfcG9pbnRl ciB8fCB0cCA9PSB0cF9yZWZlcmVuY2UKKy0JICAgICAgfHwgdHAgPT0gdHBfY29uc3QgfHwgdHAg PT0gdHBfdm9sYXRpbGUpOworLQorLSAgLyogSWYgdGhlcmUgaXMgYW55dGhpbmcgb24gdGhlIHN0 YWNrICh3ZSBrbm93IGl0IHdpbGwgYmUgYQorLSAgICAgdHBfcG9pbnRlciksIGluc2VydCB0aGUg cXVhbGlmaWVyIGFib3ZlIGl0LiAgT3RoZXJ3aXNlLCBzaW1wbHkKKy0gICAgIHB1c2ggdGhpcyBv biB0aGUgdG9wIG9mIHRoZSBzdGFjay4gICovCistICBpZiAodHlwZV9zdGFja19kZXB0aCAmJiAo dHAgPT0gdHBfY29uc3QgfHwgdHAgPT0gdHBfdm9sYXRpbGUpKQorLSAgICBzbG90ID0gMTsKKy0g IGVsc2UKKy0gICAgc2xvdCA9IDA7CistCistICBlbGVtZW50LnBpZWNlID0gdHA7CistICBpbnNl cnRfaW50b190eXBlX3N0YWNrIChzbG90LCBlbGVtZW50KTsKKy19CistCisgdm9pZAorIHB1c2hf dHlwZSAoZW51bSB0eXBlX3BpZWNlcyB0cCkKKyB7CitAQCAtMTQyNywzMiArMTM4NCwxMCBAQCBw dXNoX3R5cGVfaW50IChpbnQgbikKKyAgIHR5cGVfc3RhY2tbdHlwZV9zdGFja19kZXB0aCsrXS5p bnRfdmFsID0gbjsKKyB9CisgCistLyogSW5zZXJ0IGEgdHBfc3BhY2VfaWRlbnRpZmllciBhbmQg dGhlIGNvcnJlc3BvbmRpbmcgYWRkcmVzcyBzcGFjZQorLSAgIHZhbHVlIGludG8gdGhlIHN0YWNr LiAgU1RSSU5HIGlzIHRoZSBuYW1lIG9mIGFuIGFkZHJlc3Mgc3BhY2UsIGFzCistICAgcmVjb2du aXplZCBieSBhZGRyZXNzX3NwYWNlX25hbWVfdG9faW50LiAgSWYgdGhlIHN0YWNrIGlzIGVtcHR5 LAorLSAgIHRoZSBuZXcgZWxlbWVudHMgYXJlIHNpbXBseSBwdXNoZWQuICBJZiB0aGUgc3RhY2sg aXMgbm90IGVtcHR5LAorLSAgIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBp dGVtIG9uIHRoZSBzdGFjayBpcyBhCistICAgdHBfcG9pbnRlciwgYW5kIHRoZSBuZXcgdmFsdWVz IGFyZSBpbnNlcnRlZCBhYm92ZSB0aGUgZmlyc3QKKy0gICBpdGVtLiAgKi8KKy0KKyB2b2lkCist aW5zZXJ0X3R5cGVfYWRkcmVzc19zcGFjZSAoY2hhciAqc3RyaW5nKQorK3B1c2hfdHlwZV9hZGRy ZXNzX3NwYWNlIChjaGFyICpzdHJpbmcpCisgeworLSAgdW5pb24gdHlwZV9zdGFja19lbHQgZWxl bWVudDsKKy0gIGludCBzbG90OworLQorLSAgLyogSWYgdGhlcmUgaXMgYW55dGhpbmcgb24gdGhl IHN0YWNrICh3ZSBrbm93IGl0IHdpbGwgYmUgYQorLSAgICAgdHBfcG9pbnRlciksIGluc2VydCB0 aGUgYWRkcmVzcyBzcGFjZSBxdWFsaWZpZXIgYWJvdmUgaXQuCistICAgICBPdGhlcndpc2UsIHNp bXBseSBwdXNoIHRoaXMgb24gdGhlIHRvcCBvZiB0aGUgc3RhY2suICAqLworLSAgaWYgKHR5cGVf c3RhY2tfZGVwdGgpCistICAgIHNsb3QgPSAxOworLSAgZWxzZQorLSAgICBzbG90ID0gMDsKKy0K Ky0gIGVsZW1lbnQucGllY2UgPSB0cF9zcGFjZV9pZGVudGlmaWVyOworLSAgaW5zZXJ0X2ludG9f dHlwZV9zdGFjayAoc2xvdCwgZWxlbWVudCk7CistICBlbGVtZW50LmludF92YWwgPSBhZGRyZXNz X3NwYWNlX25hbWVfdG9faW50IChwYXJzZV9nZGJhcmNoLCBzdHJpbmcpOworLSAgaW5zZXJ0X2lu dG9fdHlwZV9zdGFjayAoc2xvdCwgZWxlbWVudCk7CisrICBwdXNoX3R5cGVfaW50IChhZGRyZXNz X3NwYWNlX25hbWVfdG9faW50IChwYXJzZV9nZGJhcmNoLCBzdHJpbmcpKTsKKyB9CisgCisgZW51 bSB0eXBlX3BpZWNlcworT25seSBpbiBnZGItNy40LjUwLjIwMTIwNzAzLW9yaWcvZ2RiOiBwYXJz ZS5jLm9yaWcKK2RpZmYgLWR1cCAtcnVwIGdkYi03LjQuNTAuMjAxMjA3MDMtb3JpZy9nZGIvcGFy c2VyLWRlZnMuaCBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9wYXJzZXItZGVmcy5oCistLS0gZ2Ri LTcuNC41MC4yMDEyMDcwMy1vcmlnL2dkYi9wYXJzZXItZGVmcy5oCTIwMTItMDctMDMgMjA6MDg6 MTUuOTgwNDE4NDE0ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvcGFyc2VyLWRl ZnMuaAkyMDEyLTA3LTAzIDIwOjA4OjM1LjkzOTM5MDI3NSArMDIwMAorQEAgLTE5MiwxMyArMTky LDExIEBAIGV4dGVybiBpbnQgZW5kX2FyZ2xpc3QgKHZvaWQpOworIAorIGV4dGVybiBjaGFyICpj b3B5X25hbWUgKHN0cnVjdCBzdG9rZW4pOworIAorLWV4dGVybiB2b2lkIGluc2VydF90eXBlIChl bnVtIHR5cGVfcGllY2VzKTsKKy0KKyBleHRlcm4gdm9pZCBwdXNoX3R5cGUgKGVudW0gdHlwZV9w aWVjZXMpOworIAorIGV4dGVybiB2b2lkIHB1c2hfdHlwZV9pbnQgKGludCk7CisgCistZXh0ZXJu IHZvaWQgaW5zZXJ0X3R5cGVfYWRkcmVzc19zcGFjZSAoY2hhciAqKTsKKytleHRlcm4gdm9pZCBw dXNoX3R5cGVfYWRkcmVzc19zcGFjZSAoY2hhciAqKTsKKyAKKyBleHRlcm4gZW51bSB0eXBlX3Bp ZWNlcyBwb3BfdHlwZSAodm9pZCk7CisgCitkaWZmIC1kdXAgLXJ1cCBnZGItNy40LjUwLjIwMTIw NzAzLW9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93aGF0aXMuZXhwIGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93aGF0aXMuZXhwCistLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy1vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2hhdGlzLmV4cAkyMDEyLTA3LTAz IDIwOjA4OjE1Ljk4MTQxODQxMyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS93aGF0aXMuZXhwCTIwMTItMDctMDMgMjA6MDg6MzUuOTQwMzkwMjcz ICswMjAwCitAQCAtNDY1LDE3ICs0NjUsMyBAQCBnZGJfdGVzdCAid2hhdGlzIGNoYXJfYWRkciIg XAorIGdkYl90ZXN0ICJ3aGF0aXMgYV9jaGFyX2FkZHIiIFwKKyAgICAgInR5cGUgPSBjaGFyX2Fk ZHIiIFwKKyAgICAgIndoYXRpcyBhcHBsaWVkIHRvIHZhcmlhYmxlIGRlZmluZWQgYnkgdHlwZWRl ZiIKKy0KKy0jIFJlZ3Jlc3Npb24gdGVzdHMgZm9yIFBSIDk1MTQuCistCistZ2RiX3Rlc3QgIndo YXRpcyB2b2lkICgqKikoKSIgXAorLSAgInR5cGUgPSB2b2lkIFxcKFxcKlxcKlxcKVxcKFxcKSIg XAorLSAgIndoYXRpcyBhcHBsaWVkIHRvIHBvaW50ZXIgdG8gcG9pbnRlciB0byBmdW5jdGlvbiIK Ky0KKy1nZGJfdGVzdCAid2hhdGlzIHZvaWQgKCoqIGNvbnN0KSgpIiBcCistICAidHlwZSA9IHZv aWQgXFwoXFwqXFwqIGNvbnN0XFwpXFwoXFwpIiBcCistICAid2hhdGlzIGFwcGxpZWQgdG8gY29u c3QgcG9pbnRlciB0byBwb2ludGVyIHRvIGZ1bmN0aW9uIgorLQorLWdkYl90ZXN0ICJ3aGF0aXMg dm9pZCAoKiBjb25zdCAqKSgpIiBcCistICAidHlwZSA9IHZvaWQgXFwoXFwqIGNvbnN0IFxcKlxc KVxcKFxcKSIgXAorLSAgIndoYXRpcyBhcHBsaWVkIHRvIHBvaW50ZXIgdG8gY29uc3QgcG9pbnRl ciB0byBmdW5jdGlvbiIKCmRpZmYgLS1naXQgYS9nZGItb2JqZmlsZS1vcmRlci5wYXRjaCBiL2dk Yi1vYmpmaWxlLW9yZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmQ0 NmU3Li4wMDAwMDAwCi0tLSBhL2dkYi1vYmpmaWxlLW9yZGVyLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjE1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA1L21zZzAxMTA1Lmh0bWwKLVN1YmplY3Q6IFtSRkEvY29tbWl0IDEvM10gUmV2ZXJ0ICJT ZWFyY2ggZ2xvYmFsIHN5bWJvbHMgZnJvbSB0aGUgZXhwcmVzc2lvbidzIGJsb2NrIG9iamZpbGUg Zmlyc3QuIgotCi1UaGUgc2VhcmNoIG9yZGVyIHVzZWQgaW4gdGhpcyBwYXRjaCBicmVha3MgZ2xv YmFsIHN5bWJvbCBsb29rdXBzCi1mb3IgY2VydGFpbiBzeW1ib2xzIHdoZW4gY29weS1yZWxvY2F0 aW9uIGlzIHVzZWQuICBBIHNsaWdodGx5IGRpZmZlcmVudAotc2VhcmNoIG9yZGVyIHdpbGwgYmUg aW1wbGVtZW50ZWQgbGF0ZXIuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLSAgICAgICAgUmV2ZXJ0IHRo ZSBmb2xsb3dpbmcgcGF0Y2g6Ci0gICAgICAgICogZmluZHZhci5jIChkZWZhdWx0X3JlYWRfdmFy X3ZhbHVlKTogRm9yIExPQ19VTlJFU09MVkVEIHN5bWJvbHMsCi0gICAgICAgIHRyeSBsb2NhdGlu ZyB0aGUgc3ltYm9sIGluIHRoZSBzeW1ib2wncyBvd24gb2JqZmlsZSBmaXJzdCwgYmVmb3JlCi0g ICAgICAgIGV4dGVuZGluZyB0aGUgc2VhcmNoIHRvIGFsbCBvYmpmaWxlcy4KLSAgICAgICAgKiBz eW10YWIuYyAobG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSk6IE5ldyBmdW5jdGlvbiwgZXh0cmFj dGVkCi0gICAgICAgIG91dCBvZiBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzLgotICAgICAgICAo bG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyk6IEFkZCBuZXcgcGFyYW1ldGVyICJleGNsdWRlX29i amZpbGUiLgotICAgICAgICBSZXBsYWNlIGV4dHJhY3RlZC1vdXQgY29kZSBieSBjYWxsIHRvIGxv b2t1cF9zeW1ib2xfYXV4X29iamZpbGUuCi0gICAgICAgIERvIG5vdCBzZWFyY2ggRVhDTFVERV9P QkpGSUxFLgotICAgICAgICAobG9va3VwX3N0YXRpY19zeW1ib2xfYXV4KTogVXBkYXRlIGNhbGwg dG8gbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicy4KLSAgICAgICAgKGxvb2t1cF9zeW1ib2xfZ2xv YmFsKTogU2VhcmNoIGZvciBtYXRjaGVzIGluIHRoZSBibG9jaydzIG9iamZpbGUKLSAgICAgICAg Zmlyc3QsIGJlZm9yZSBzZWFyY2hpbmcgYWxsIG90aGVyIG9iamZpbGVzLgotCi1XaWxsIGNvbW1p dCBpZiBwYXRjaGVzICMyICYgIzMgYXJlIE9LLgotCi0tLS0KLSBnZGIvZmluZHZhci5jIHwgICAx MCArLS0tLS0KLSBnZGIvc3ltdGFiLmMgIHwgIDEwOCArKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMzIGlu c2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIu YyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IGVkNzkwM2MuLjkwMDllNmYgMTAwNjQ0Ci0tLS0gYS9n ZGIvZmluZHZhci5jCi0rKysgYi9nZGIvZmluZHZhci5jCi1AQCAtNTYyLDE1ICs1NjIsNyBAQCBk ZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKLSAJc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwotIAlzdHJ1Y3Qgb2Jq X3NlY3Rpb24gKm9ial9zZWN0aW9uOwotIAotLQkvKiBGaXJzdCwgdHJ5IGxvY2F0aW5nIHRoZSBh c3NvY2lhdGVkIG1pbmltYWwgc3ltYm9sIHdpdGhpbgotLQkgICB0aGUgc2FtZSBvYmpmaWxlLiAg VGhpcyBwcmV2ZW50cyB1cyBmcm9tIHNlbGVjdGluZyBhbm90aGVyCi0tCSAgIHN5bWJvbCB3aXRo IHRoZSBzYW1lIG5hbWUgYnV0IGxvY2F0ZWQgaW4gYSBkaWZmZXJlbnQgb2JqZmlsZS4gICovCi0t CW1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHZhciks IE5VTEwsCi0tCQkJCSAgICAgIFNZTUJPTF9TWU1UQUIgKHZhciktPm9iamZpbGUpOwotLQkvKiBJ ZiB0aGUgbG9va3VwIGZhaWxlZCwgdHJ5IGV4cGFuZGluZyB0aGUgc2VhcmNoIHRvIGFsbAotLQkg ICBvYmpmaWxlcy4gICovCi0tCWlmIChtc3ltID09IE5VTEwpCi0tCSAgbXN5bSA9IGxvb2t1cF9t aW5pbWFsX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAodmFyKSwgTlVMTCwgTlVMTCk7Ci0r CW1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHZhciks IE5VTEwsIE5VTEwpOwotIAlpZiAobXN5bSA9PSBOVUxMKQotIAkgIGVycm9yIChfKCJObyBnbG9i YWwgc3ltYm9sIFwiJXNcIi4iKSwgU1lNQk9MX0xJTktBR0VfTkFNRSAodmFyKSk7Ci0gCWlmIChv dmVybGF5X2RlYnVnZ2luZykKLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFi LmMKLWluZGV4IDg1ZGRkMWQuLjM5ZDhjNmYgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltdGFiLmMKLSsr KyBiL2dkYi9zeW10YWIuYwotQEAgLTk1LDggKzk1LDcgQEAgc3RydWN0IHN5bWJvbCAqbG9va3Vw X3N5bWJvbF9hdXhfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gc3RhdGljCi0gc3RydWN0IHN5 bWJvbCAqbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAotIAkJCQkJ ICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0t CQkJCQkgIHN0cnVjdCBvYmpmaWxlICpleGNsdWRlX29iamZpbGUpOwotKwkJCQkJICBjb25zdCBk b21haW5fZW51bSBkb21haW4pOwotIAotIHN0YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9z eW1ib2xfYXV4X3F1aWNrIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLUBAIC0xMzYwLDcgKzEz NTksNyBAQCBsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbikKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotICAgc3Ry dWN0IHN5bWJvbCAqc3ltOwotIAotLSAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAo U1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4sIE5VTEwpOwotKyAgc3ltID0gbG9va3VwX3N5bWJv bF9hdXhfc3ltdGFicyAoU1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4pOwotICAgaWYgKHN5bSAh PSBOVUxMKQotICAgICByZXR1cm4gc3ltOwotIAotQEAgLTE0OTksNjEgKzE0OTgsNDAgQEAgbG9v a3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFp bl9vYmpmaWxlLAotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotLS8qIENoZWNrIHRvIHNlZSBpZiB0 aGUgc3ltYm9sIGlzIGRlZmluZWQgaW4gb25lIG9mIHRoZSBPQkpGSUxFJ3MKLS0gICBzeW10YWJz LiAgQkxPQ0tfSU5ERVggc2hvdWxkIGJlIGVpdGhlciBHTE9CQUxfQkxPQ0sgb3IgU1RBVElDX0JM T0NLLAotKy8qIENoZWNrIHRvIHNlZSBpZiB0aGUgc3ltYm9sIGlzIGRlZmluZWQgaW4gb25lIG9m IHRoZSBzeW10YWJzLgotKyAgIEJMT0NLX0lOREVYIHNob3VsZCBiZSBlaXRoZXIgR0xPQkFMX0JM T0NLIG9yIFNUQVRJQ19CTE9DSywKLSAgICBkZXBlbmRpbmcgb24gd2hldGhlciBvciBub3Qgd2Ug d2FudCB0byBzZWFyY2ggZ2xvYmFsIHN5bWJvbHMgb3IKLSAgICBzdGF0aWMgc3ltYm9scy4gICov Ci0gCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotLWxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgYmxvY2tfaW5kZXgsCi0tCQkJICAgY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotLXsKLS0gIHN0cnVjdCBzeW1i b2wgKnN5bSA9IE5VTEw7Ci0tICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2OwotLSAgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jazsKLS0gIHN0cnVjdCBzeW10YWIgKnM7Ci0tCi0tICBpZiAob2JqZmls ZS0+c2YpCi0tICAgIG9iamZpbGUtPnNmLT5xZi0+cHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5n IChvYmpmaWxlLCBibG9ja19pbmRleCwKLS0JCQkJCQkgIG5hbWUsIGRvbWFpbik7Ci0tCi0tICBB TExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQotLSAgICBpZiAocy0+cHJpbWFyeSkKLS0g ICAgICB7Ci0tCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotLQlibG9jayA9IEJMT0NLVkVDVE9SX0JM T0NLIChidiwgYmxvY2tfaW5kZXgpOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9j aywgbmFtZSwgZG9tYWluKTsKLS0JaWYgKHN5bSkKLS0JICB7Ci0tCSAgICBibG9ja19mb3VuZCA9 IGJsb2NrOwotLQkgICAgcmV0dXJuIGZpeHVwX3N5bWJvbF9zZWN0aW9uIChzeW0sIG9iamZpbGUp OwotLQkgIH0KLS0gICAgICB9Ci0tCi0tICByZXR1cm4gTlVMTDsKLS19Ci0tCi0tLyogU2FtZSBh cyBsb29rdXBfc3ltYm9sX2F1eF9vYmpmaWxlLCBleGNlcHQgdGhhdCBpdCBzZWFyY2hlcyBhbGwK LS0gICBvYmpmaWxlcyBleGNlcHQgZm9yIEVYQ0xVREVfT0JKRklMRS4gIFJldHVybiB0aGUgZmly c3QgbWF0Y2ggZm91bmQuCi0tCi0tICAgSWYgRVhDTFVERV9PQkpGSUxFIGlzIE5VTEwsIHRoZW4g YWxsIG9iamZpbGVzIGFyZSBzZWFyY2hlZC4gICovCi0tCi0tc3RhdGljIHN0cnVjdCBzeW1ib2wg KgotIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwgY29uc3QgY2hh ciAqbmFtZSwKLS0JCQkgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0tCQkJICAgc3RydWN0 IG9iamZpbGUgKmV4Y2x1ZGVfb2JqZmlsZSkKLSsJCQkgICBjb25zdCBkb21haW5fZW51bSBkb21h aW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltOwotICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci0rICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2OwotKyAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jazsKLSsgIHN0cnVjdCBzeW10YWIgKnM7Ci0gCi0gICBBTExfT0JKRklMRVMgKG9iamZpbGUp Ci0gICB7Ci0tICAgIGlmIChvYmpmaWxlICE9IGV4Y2x1ZGVfb2JqZmlsZSkKLS0gICAgICB7Ci0t CXN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUgKG9iamZpbGUsIGJsb2NrX2luZGV4LCBu YW1lLCBkb21haW4pOwotLQlpZiAoc3ltKQotLQkgIHJldHVybiBzeW07Ci0tICAgICAgfQotKyAg ICBpZiAob2JqZmlsZS0+c2YpCi0rICAgICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5kX3N5 bXRhYnNfbWF0Y2hpbmcgKG9iamZpbGUsCi0rCQkJCQkJICAgIGJsb2NrX2luZGV4LAotKwkJCQkJ CSAgICBuYW1lLCBkb21haW4pOwotKwotKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxl LCBzKQotKyAgICAgIGlmIChzLT5wcmltYXJ5KQotKwl7Ci0rCSAgYnYgPSBCTE9DS1ZFQ1RPUiAo cyk7Ci0rCSAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLSsJ ICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSsJICBp ZiAoc3ltKQotKwkgICAgewotKwkgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOwotKwkgICAgICBy ZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7Ci0rCSAgICB9Ci0rCX0K LSAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwotQEAgLTE2NzksNDYgKzE2NTcsMjQgQEAgbG9va3Vw X3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCQkgICAgICBjb25zdCBkb21haW5f ZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltID0gTlVMTDsKLS0gIHN0cnVj dCBvYmpmaWxlICpibG9ja19vYmpmaWxlID0gTlVMTDsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gTlVMTDsKLSAKLSAgIC8qIENhbGwgbGlicmFyeS1zcGVjaWZpYyBsb29rdXAgcHJvY2Vk dXJlLiAgKi8KLS0gIGJsb2NrX29iamZpbGUgPSBsb29rdXBfb2JqZmlsZV9mcm9tX2Jsb2NrIChi bG9jayk7Ci0tICBpZiAoYmxvY2tfb2JqZmlsZSAhPSBOVUxMKQotLSAgICBzeW0gPSBzb2xpYl9n bG9iYWxfbG9va3VwIChibG9ja19vYmpmaWxlLCBuYW1lLCBkb21haW4pOwotKyAgb2JqZmlsZSA9 IGxvb2t1cF9vYmpmaWxlX2Zyb21fYmxvY2sgKGJsb2NrKTsKLSsgIGlmIChvYmpmaWxlICE9IE5V TEwpCi0rICAgIHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKG9iamZpbGUsIG5hbWUsIGRvbWFp bik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0tICAvKiBJZiBC TE9DS19PQkpGSUxFIGlzIG5vdCBOVUxMLCB0aGVuIHNlYXJjaCB0aGlzIG9iamZpbGUgZmlyc3Qu Ci0tICAgICBJbiBjYXNlIHRoZSBnbG9iYWwgc3ltYm9sIGlzIGRlZmluZWQgaW4gbXVsdGlwbGUg b2JqZmlsZXMsCi0tICAgICB3ZSBoYXZlIGEgYmV0dGVyIGNoYW5jZSBvZiBmaW5kaW5nIHRoZSBt b3N0IHJlbGV2YW50IHN5bWJvbC4gICovCi0tCi0tICBpZiAoYmxvY2tfb2JqZmlsZSAhPSBOVUxM KQotLSAgICB7Ci0tICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSAoYmxvY2tf b2JqZmlsZSwgR0xPQkFMX0JMT0NLLAotLQkJCQkgICAgICAgbmFtZSwgZG9tYWluKTsKLS0gICAg ICBpZiAoc3ltID09IE5VTEwpCi0tCXN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChibG9j a19vYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCi0tCQkJCSAgICAgICBuYW1lLCBkb21haW4pOwotLSAg ICAgIGlmIChzeW0gIT0gTlVMTCkKLS0JcmV0dXJuIHN5bTsKLS0gICAgfQotLQotLSAgLyogU3lt Ym9sIG5vdCBmb3VuZCBpbiB0aGUgQkxPQ0tfT0JKRklMRSwgc28gdHJ5IGFsbCB0aGUgb3RoZXIK LS0gICAgIG9iamZpbGVzLCBzdGFydGluZyB3aXRoIHN5bXRhYnMgZmlyc3QsIGFuZCB0aGVuIHBh cnRpYWwgc3ltdGFicy4gICovCi0tCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJz IChHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbiwgYmxvY2tfb2JqZmlsZSk7Ci0rICBzeW0gPSBs b29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbik7Ci0g ICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0gICBBTExfT0JKRklMRVMg KG9iamZpbGUpCi0gICB7Ci0tICAgIGlmIChvYmpmaWxlICE9IGJsb2NrX29iamZpbGUpCi0tICAg ICAgewotLQlzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9xdWljayAob2JqZmlsZSwgR0xPQkFMX0JM T0NLLCBuYW1lLCBkb21haW4pOwotLQlpZiAoc3ltKQotLQkgIHJldHVybiBzeW07Ci0tICAgICAg fQotKyAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9xdWljayAob2JqZmlsZSwgR0xPQkFMX0JM T0NLLCBuYW1lLCBkb21haW4pOwotKyAgICBpZiAoc3ltKQotKyAgICAgIHJldHVybiBzeW07Ci0g ICB9Ci0gCi0gICByZXR1cm4gTlVMTDsKLS0tIAotMS43LjEKLQoKZGlmZiAtLWdpdCBhL2dkYi1w YXJhbWV0ZXJyZWYtMW9mMi5wYXRjaCBiL2dkYi1wYXJhbWV0ZXJyZWYtMW9mMi5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI5ZTZmOS4uMDAwMDAwMAotLS0gYS9nZGItcGFy YW1ldGVycmVmLTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MTYgKzAsMCBAQAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDYvbXNnMDA0NTguaHRtbAot U3ViamVjdDogW3BhdGNoIDEvMl0gR2VuZXJhbGl6ZSBjYWxsX3NpdGUucGFyYW1ldGVyIGtleSAo ImNvZGUgY2xlYW51cCIpCi0KLUhpLAotCi1wcmV2aW91c2x5IHBhcmFtZXRlciBjb3VsZCBiZSBp ZGVudGlmaWVkIGVpdGhlciB2aWEgRFdfT1BfcmVnIG9yIHZpYQotRFdfT1BfZmJyZWcgKGJvdGgg aW4gRFdfQVRfbG9jYXRpb24pLiAgQXMgW3BhdGNoIDIvMl0gYWRkcyBuZXcgaWRlbnRpZmljYXRp b24KLXZpYSBEV19BVF9hYnN0cmFjdF9vcmlnaW4gZ2VuZXJhbGl6ZSB0aGlzIHR3byBzdGF0ZSBk ZWNpZGluZyBpbnRvIG1vcmUgZ2VuZXJhbAotZW51bS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1n ZGIvCi0yMDEyLTA2LTE0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQlDb2RlIGNsZWFudXA6IEdlbmVyYWxpemUgY2FsbF9zaXRlLnBhcmFtZXRlciBrZXku Ci0JKiBkd2FyZjJleHByLmMgKGV4ZWN1dGVfc3RhY2tfb3ApIDxEV19PUF9HTlVfZW50cnlfdmFs dWU+OiBSZW1vdmUKLQl2YXJpYWJsZSBkd2FyZl9yZWcuICBOZXcgdmFyaWFibGUga2luZF91LiAg VXBkYXRlIHBhcmFtZXRlcnMgdG8KLQlwdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZS4KLQkoY3R4 X25vX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKTogVXBkYXRlIHBhcmFtZXRlcnMuCi0JKiBk d2FyZjJleHByLmggKGVudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kKQotCSh1bmlvbiBjYWxs X3NpdGVfcGFyYW1ldGVyX3UpOiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KLQkoc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dF9mdW5jcyk6IFVwZGF0ZSBwYXJhbWV0ZXJzIGFuZCB0aGVpcgotCWRlc2Ny aXB0aW9uIGZvciBwdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZS4KLQkoY3R4X25vX3B1c2hfZHdh cmZfcmVnX2VudHJ5X3ZhbHVlKTogVXBkYXRlIHBhcmFtZXRlcnMuCi0JKiBkd2FyZjJsb2MuYyAo Y2FsbF9zaXRlX3BhcmFtZXRlcl9tYXRjaGVzKTogTmV3IGZ1bmN0aW9uLgotCShkd2FyZl9leHBy X3JlZ190b19lbnRyeV9wYXJhbWV0ZXIpOiBVcGRhdGUgcGFyYW1ldGVycyBhbmQgdGhlaXIKLQlk ZXNjcmlwdGlvbi4gIFVzZSBjYWxsX3NpdGVfcGFyYW1ldGVyX21hdGNoZXMuCi0JKGR3YXJmX2V4 cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUsIHZhbHVlX29mX2R3YXJmX3JlZ19lbnRyeSk6 Ci0JVXBkYXRlIHBhcmFtZXRlcnMgYW5kIHRoZWlyIGRlc2NyaXB0aW9uLgotCSh2YWx1ZV9vZl9k d2FyZl9ibG9ja19lbnRyeSk6IFJlbW92ZSB2YXJpYWJsZXMgZHdhcmZfcmVnIGFuZCBmYl9vZmZz ZXQuCi0JTmV3IHZhcmlhYmxlIGtpbmRfdS4gIEFkanVzdCB0aGUgY2FsbGVyIGZvciB1cGRhdGVk IHBhcmFtZXRlcnMuCi0JKG5lZWRzX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSk6IFVwZGF0ZSBwYXJh bWV0ZXJzLgotCSogZHdhcmYycmVhZC5jIChyZWFkX2NhbGxfc2l0ZV9zY29wZSk6IE5ldyB2YXJp YWJsZSBsb2MuICBVc2UgaXQKLQlpbnN0ZWFkIG9mIGF0dHIuICBVcGRhdGUgZm9yIHRoZSBjaGFu Z2VkIGZpZWxkcyBvZiBzdHJ1Y3QKLQljYWxsX3NpdGVfcGFyYW1ldGVyLgotCSogZ2RidHlwZXMu aDogSW5jbHVkZSBkd2FyZjJleHByLmguCi0JKGVudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5k KTogTmV3LgotCShzdHJ1Y3QgY2FsbF9zaXRlLnBhcmFtZXRlcik6IE5ldyBmaWVsZCBraW5kLiAg V3JhcCBkd2FyZl9yZWcgYW5kCi0JZmJfb2Zmc2V0IGludG8gbmV3IHVuaW9uIHUuCi0KLS0tLSBh L2dkYi9kd2FyZjJleHByLmMKLSsrKyBiL2dkYi9kd2FyZjJleHByLmMKLUBAIC0xMzU1LDMzICsx MzU1LDM1IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0 eCwKLSAJY2FzZSBEV19PUF9HTlVfZW50cnlfdmFsdWU6Ci0gCSAgewotIAkgICAgdWludDY0X3Qg bGVuOwotLQkgICAgaW50IGR3YXJmX3JlZzsKLSAJICAgIENPUkVfQUREUiBkZXJlZl9zaXplOwot KwkgICAgdW5pb24gY2FsbF9zaXRlX3BhcmFtZXRlcl91IGtpbmRfdTsKLSAKLSAJICAgIG9wX3B0 ciA9IHNhZmVfcmVhZF91bGViMTI4IChvcF9wdHIsIG9wX2VuZCwgJmxlbik7Ci0gCSAgICBpZiAo b3BfcHRyICsgbGVuID4gb3BfZW5kKQotIAkgICAgICBlcnJvciAoXygiRFdfT1BfR05VX2VudHJ5 X3ZhbHVlOiB0b28gZmV3IGJ5dGVzIGF2YWlsYWJsZS4iKSk7Ci0gCi0tCSAgICBkd2FyZl9yZWcg PSBkd2FyZl9ibG9ja190b19kd2FyZl9yZWcgKG9wX3B0ciwgb3BfcHRyICsgbGVuKTsKLS0JICAg IGlmIChkd2FyZl9yZWcgIT0gLTEpCi0rCSAgICBraW5kX3UuZHdhcmZfcmVnID0gZHdhcmZfYmxv Y2tfdG9fZHdhcmZfcmVnIChvcF9wdHIsIG9wX3B0ciArIGxlbik7Ci0rCSAgICBpZiAoa2luZF91 LmR3YXJmX3JlZyAhPSAtMSkKLSAJICAgICAgewotIAkJb3BfcHRyICs9IGxlbjsKLS0JCWN0eC0+ ZnVuY3MtPnB1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChjdHgsIGR3YXJmX3JlZywKLS0JCQkJ CQkJMCAvKiB1bnVzZWQgKi8sCi0rCQljdHgtPmZ1bmNzLT5wdXNoX2R3YXJmX3JlZ19lbnRyeV92 YWx1ZSAoY3R4LAotKwkJCQkJCSAgQ0FMTF9TSVRFX1BBUkFNRVRFUl9EV0FSRl9SRUcsCi0rCQkJ CQkJCWtpbmRfdSwKLSAJCQkJCQkJLTEgLyogZGVyZWZfc2l6ZSAqLyk7Ci0gCQlnb3RvIG5vX3B1 c2g7Ci0gCSAgICAgIH0KLSAKLS0JICAgIGR3YXJmX3JlZyA9IGR3YXJmX2Jsb2NrX3RvX2R3YXJm X3JlZ19kZXJlZiAob3BfcHRyLCBvcF9wdHIgKyBsZW4sCi0tCQkJCQkJCSZkZXJlZl9zaXplKTsK LS0JICAgIGlmIChkd2FyZl9yZWcgIT0gLTEpCi0rCSAgICBraW5kX3UuZHdhcmZfcmVnID0gZHdh cmZfYmxvY2tfdG9fZHdhcmZfcmVnX2RlcmVmIChvcF9wdHIsCi0rCQkJCQkJCSAgICAgICBvcF9w dHIgKyBsZW4sCi0rCQkJCQkJCSAgICAgICAmZGVyZWZfc2l6ZSk7Ci0rCSAgICBpZiAoa2luZF91 LmR3YXJmX3JlZyAhPSAtMSkKLSAJICAgICAgewotIAkJaWYgKGRlcmVmX3NpemUgPT0gLTEpCi0g CQkgIGRlcmVmX3NpemUgPSBjdHgtPmFkZHJfc2l6ZTsKLSAJCW9wX3B0ciArPSBsZW47Ci0tCQlj dHgtPmZ1bmNzLT5wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoY3R4LCBkd2FyZl9yZWcsCi0t CQkJCQkJCTAgLyogdW51c2VkICovLAotLQkJCQkJCQlkZXJlZl9zaXplKTsKLSsJCWN0eC0+ZnVu Y3MtPnB1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChjdHgsCi0rCQkJCQkJICBDQUxMX1NJVEVf UEFSQU1FVEVSX0RXQVJGX1JFRywKLSsJCQkJCQkJa2luZF91LCBkZXJlZl9zaXplKTsKLSAJCWdv dG8gbm9fcHVzaDsKLSAJICAgICAgfQotIAotQEAgLTE1MzMsNyArMTUzNSw4IEBAIGN0eF9ub19n ZXRfYmFzZV90eXBlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBk aWUpCi0gCi0gdm9pZAotIGN0eF9ub19wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0 IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotLQkJCQkgICBpbnQgZHdhcmZfcmVnLCBDT1JFX0FE RFIgZmJfb2Zmc2V0LAotKwkJCQkgICBlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZCBraW5k LAotKwkJCQkgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91LAotIAkJCQkgICBp bnQgZGVyZWZfc2l6ZSkKLSB7Ci0gICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9f LAotLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAotKysrIGIvZ2RiL2R3YXJmMmV4cHIuaAotQEAgLTI2 LDYgKzI2LDggQEAKLSAjaW5jbHVkZSAibGViMTI4LmgiCi0gCi0gc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dDsKLStlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZDsKLSt1bmlvbiBjYWxsX3Np dGVfcGFyYW1ldGVyX3U7Ci0gCi0gLyogT2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiBp dHMgY29udGFpbmluZyBDVSAoY29tcGlsYXRpb24gdW5pdCkuICAqLwotIHR5cGVkZWYgc3RydWN0 Ci1AQCAtNzcsMTQgKzc5LDEyIEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKLSAg IHN0cnVjdCB0eXBlICooKmdldF9iYXNlX3R5cGUpIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0 ICpjdHgsIGN1X29mZnNldCBkaWUpOwotIAotICAgLyogUHVzaCBvbiBEV0FSRiBzdGFjayBhbiBl bnRyeSBldmFsdWF0ZWQgZm9yIERXX1RBR19HTlVfY2FsbF9zaXRlJ3MKLS0gICAgIERXQVJGX1JF Ry9GQl9PRkZTRVQgYXQgdGhlIGNhbGxlciBvZiBzcGVjaWZpZWQgQkFUT04uICBJZiBEV0FSRiBy ZWdpc3RlcgotLSAgICAgbnVtYmVyIERXQVJGX1JFRyBzcGVjaWZ5aW5nIHRoZSBwdXNoX2R3YXJm X3JlZ19lbnRyeV92YWx1ZSBwYXJhbWV0ZXIgaXMKLS0gICAgIG5vdCAtMSBGQl9PRkZTRVQgaXMg aWdub3JlZC4gIE90aGVyd2lzZSBGQl9PRkZTRVQgc3BlY2lmaWVzIHN0YWNrCi0tICAgICBwYXJh bWV0ZXIgb2Zmc2V0IGFnYWluc3QgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciAod2hpY2ggZXF1YWxz IHRoZSBjYWxsZWUncwotLSAgICAgZnJhbWUgYmFzZSkuICBJZiBERVJFRl9TSVpFIGlzIG5vdCAt MSB0aGVuIHVzZQotLSAgICAgRFdfQVRfR05VX2NhbGxfc2l0ZV9kYXRhX3ZhbHVlIGluc3RlYWQg b2YgRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZS4gICovCi0rICAgICBwYXJhbWV0ZXIgbWF0Y2hp bmcgS0lORCBhbmQgS0lORF9VIGF0IHRoZSBjYWxsZXIgb2Ygc3BlY2lmaWVkIEJBVE9OLgotKyAg ICAgSWYgREVSRUZfU0laRSBpcyBub3QgLTEgdGhlbiB1c2UgRFdfQVRfR05VX2NhbGxfc2l0ZV9k YXRhX3ZhbHVlIGluc3RlYWQgb2YKLSsgICAgIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUuICAq LwotICAgdm9pZCAoKnB1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKSAoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4LAotLQkJCQkgICAgICBpbnQgZHdhcmZfcmVnLCBDT1JFX0FERFIgZmJf b2Zmc2V0LAotKwkJCQkgICAgICBlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZCBraW5kLAot KwkJCQkgICAgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91LAotIAkJCQkgICAg ICBpbnQgZGVyZWZfc2l6ZSk7Ci0gCi0gICAvKiBSZXR1cm4gdGhlIGFkZHJlc3MgaW5kZXhlZCBi eSBEV19PUF9HTlVfYWRkcl9pbmRleC4KLUBAIC0yODksNyArMjg5LDggQEAgdm9pZCBjdHhfbm9f ZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBjdV9vZmZzZXQgZGll X29mZnNldCk7Ci0gc3RydWN0IHR5cGUgKmN0eF9ub19nZXRfYmFzZV90eXBlIChzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0ICpjdHgsCi0gCQkJCSAgIGN1X29mZnNldCBkaWUpOwotIHZvaWQgY3R4 X25vX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0 ICpjdHgsCi0tCQkJCQlpbnQgZHdhcmZfcmVnLCBDT1JFX0FERFIgZmJfb2Zmc2V0LAotKwkJCQkJ ZW51bSBjYWxsX3NpdGVfcGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkJCXVuaW9uIGNhbGxfc2l0 ZV9wYXJhbWV0ZXJfdSBraW5kX3UsCi0gCQkJCQlpbnQgZGVyZWZfc2l6ZSk7Ci0gQ09SRV9BRERS IGN0eF9ub19nZXRfYWRkcl9pbmRleCAodm9pZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRleCk7 Ci0gCi0tLS0gYS9nZGIvZHdhcmYybG9jLmMKLSsrKyBiL2dkYi9kd2FyZjJsb2MuYwotQEAgLTky OSwxNiArOTI5LDM0IEBAIGNhbGxfc2l0ZV9maW5kX2NoYWluIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgQ09SRV9BRERSIGNhbGxlcl9wYywKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotLS8q IEZldGNoIGNhbGxfc2l0ZV9wYXJhbWV0ZXIgZnJvbSBjYWxsZXIgbWF0Y2hpbmcgdGhlIHBhcmFt ZXRlcnMuICBGUkFNRSBpcyBmb3IKLS0gICBjYWxsZWUuICBTZWUgRFdBUkZfUkVHIGFuZCBGQl9P RkZTRVQgZGVzY3JpcHRpb24gYXQgc3RydWN0Ci0tICAgZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNz LT5wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZS4KLSsvKiBSZXR1cm4gMSBpZiBLSU5EIGFuZCBL SU5EX1UgbWF0Y2ggUEFSQU1FVEVSLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLiAgKi8KLSsKLStzdGF0 aWMgaW50Ci0rY2FsbF9zaXRlX3BhcmFtZXRlcl9tYXRjaGVzIChzdHJ1Y3QgY2FsbF9zaXRlX3Bh cmFtZXRlciAqcGFyYW1ldGVyLAotKwkJCSAgICAgZW51bSBjYWxsX3NpdGVfcGFyYW1ldGVyX2tp bmQga2luZCwKLSsJCQkgICAgIHVuaW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfdSBraW5kX3UpCi0r ewotKyAgaWYgKGtpbmQgPT0gcGFyYW1ldGVyLT5raW5kKQotKyAgICBzd2l0Y2ggKGtpbmQpCi0r ICAgICAgewotKyAgICAgIGNhc2UgQ0FMTF9TSVRFX1BBUkFNRVRFUl9EV0FSRl9SRUc6Ci0rCXJl dHVybiBraW5kX3UuZHdhcmZfcmVnID09IHBhcmFtZXRlci0+dS5kd2FyZl9yZWc7Ci0rICAgICAg Y2FzZSBDQUxMX1NJVEVfUEFSQU1FVEVSX0ZCX09GRlNFVDoKLSsJcmV0dXJuIGtpbmRfdS5mYl9v ZmZzZXQgPT0gcGFyYW1ldGVyLT51LmZiX29mZnNldDsKLSsgICAgICB9Ci0rICByZXR1cm4gMDsK LSt9Ci0rCi0rLyogRmV0Y2ggY2FsbF9zaXRlX3BhcmFtZXRlciBmcm9tIGNhbGxlciBtYXRjaGlu ZyBLSU5EIGFuZCBLSU5EX1UuCi0rICAgRlJBTUUgaXMgZm9yIGNhbGxlZS4KLSAKLSAgICBGdW5j dGlvbiBhbHdheXMgcmV0dXJucyBub24tTlVMTCwgaXQgdGhyb3dzIE5PX0VOVFJZX1ZBTFVFX0VS Uk9SCi0gICAgb3RoZXJ3aXNlLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IGNhbGxfc2l0ZV9wYXJh bWV0ZXIgKgotLWR3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFtZXRlciAoc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLCBpbnQgZHdhcmZfcmVnLAotLQkJCQkgICBDT1JFX0FERFIgZmJfb2Zmc2V0 LAotK2R3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFtZXRlciAoc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLAotKwkJCQkgICBlbnVtIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZCBraW5kLAotKwkJ CQkgICB1bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91LAotIAkJCQkgICBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICoqcGVyX2N1X3JldHVybikKLSB7Ci0gICBDT1JFX0FERFIgZnVu Y19hZGRyID0gZ2V0X2ZyYW1lX2Z1bmMgKGZyYW1lKTsKLUBAIC0xMDAxLDEyICsxMDE5LDcgQEAg ZHdhcmZfZXhwcl9yZWdfdG9fZW50cnlfcGFyYW1ldGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUsIGludCBkd2FyZl9yZWcsCi0gICBmb3IgKGlwYXJhbXMgPSAwOyBpcGFyYW1zIDwgY2FsbF9z aXRlLT5wYXJhbWV0ZXJfY291bnQ7IGlwYXJhbXMrKykKLSAgICAgewotICAgICAgIHBhcmFtZXRl ciA9ICZjYWxsX3NpdGUtPnBhcmFtZXRlcltpcGFyYW1zXTsKLS0gICAgICBpZiAocGFyYW1ldGVy LT5kd2FyZl9yZWcgPT0gLTEgJiYgZHdhcmZfcmVnID09IC0xKQotLQl7Ci0tCSAgaWYgKHBhcmFt ZXRlci0+ZmJfb2Zmc2V0ID09IGZiX29mZnNldCkKLS0JICAgIGJyZWFrOwotLQl9Ci0tICAgICAg ZWxzZSBpZiAocGFyYW1ldGVyLT5kd2FyZl9yZWcgPT0gZHdhcmZfcmVnKQotKyAgICAgIGlmIChj YWxsX3NpdGVfcGFyYW1ldGVyX21hdGNoZXMgKHBhcmFtZXRlciwga2luZCwga2luZF91KSkKLSAJ YnJlYWs7Ci0gICAgIH0KLSAgIGlmIChpcGFyYW1zID09IGNhbGxfc2l0ZS0+cGFyYW1ldGVyX2Nv dW50KQotQEAgLTEwNjMsMTcgKzEwNzYsMTcgQEAgZHdhcmZfZW50cnlfcGFyYW1ldGVyX3RvX3Zh bHVlIChzdHJ1Y3QgY2FsbF9zaXRlX3BhcmFtZXRlciAqcGFyYW1ldGVyLAotICAgcmV0dXJuIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAodHlwZSwgY2FsbGVyX2ZyYW1lLCBkYXRhLCBzaXplICsg MSwgcGVyX2N1KTsKLSB9Ci0gCi0tLyogRXhlY3V0ZSBjYWxsX3NpdGVfcGFyYW1ldGVyJ3MgRFdB UkYgYmxvY2sgbWF0Y2hpbmcgREVSRUZfU0laRSBmb3IgY2FsbGVyIG9mCi0tICAgdGhlIENUWCdz IGZyYW1lLiAgQ1RYIG11c3QgYmUgb2YgZHdhcmZfZXhwcl9jdHhfZnVuY3Mga2luZC4gIFNlZSBE V0FSRl9SRUcKLS0gICBhbmQgRkJfT0ZGU0VUIGRlc2NyaXB0aW9uIGF0IHN0cnVjdAotLSAgIGR3 YXJmX2V4cHJfY29udGV4dF9mdW5jcy0+cHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUuCi0rLyog RXhlY3V0ZSBEV0FSRiBibG9jayBvZiBjYWxsX3NpdGVfcGFyYW1ldGVyIHdoaWNoIG1hdGNoZXMg S0lORCBhbmQgS0lORF9VLgotKyAgIENob29zZSBERVJFRl9TSVpFIHZhbHVlIG9mIHRoYXQgcGFy YW1ldGVyLiAgU2VhcmNoIGNhbGxlciBvZiB0aGUgQ1RYJ3MKLSsgICBmcmFtZS4gIENUWCBtdXN0 IGJlIG9mIGR3YXJmX2V4cHJfY3R4X2Z1bmNzIGtpbmQuCi0gCi0gICAgVGhlIENUWCBjYWxsZXIg Y2FuIGJlIGZyb20gYSBkaWZmZXJlbnQgQ1UgLSBwZXJfY3VfZHdhcmZfY2FsbCBpbXBsZW1lbnRh dGlvbgotICAgIGNhbiBiZSBtb3JlIHNpbXBsZSBhcyBpdCBkb2VzIG5vdCBzdXBwb3J0IGNyb3Nz LUNVIERXQVJGIGV4ZWN1dGlvbnMuICAqLwotIAotIHN0YXRpYyB2b2lkCi0gZHdhcmZfZXhwcl9w dXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4 LAotLQkJCQkgICAgICAgaW50IGR3YXJmX3JlZywgQ09SRV9BRERSIGZiX29mZnNldCwKLSsJCQkJ ICAgICAgIGVudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kIGtpbmQsCi0rCQkJCSAgICAgICB1 bmlvbiBjYWxsX3NpdGVfcGFyYW1ldGVyX3Uga2luZF91LAotIAkJCQkgICAgICAgaW50IGRlcmVm X3NpemUpCi0gewotICAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0b247Ci1AQCAtMTA5 MCw3ICsxMTAzLDcgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3Ry dWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotICAgZnJhbWUgPSBkZWJhdG9uLT5mcmFtZTsK LSAgIGNhbGxlcl9mcmFtZSA9IGdldF9wcmV2X2ZyYW1lIChmcmFtZSk7Ci0gCi0tICBwYXJhbWV0 ZXIgPSBkd2FyZl9leHByX3JlZ190b19lbnRyeV9wYXJhbWV0ZXIgKGZyYW1lLCBkd2FyZl9yZWcs IGZiX29mZnNldCwKLSsgIHBhcmFtZXRlciA9IGR3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFt ZXRlciAoZnJhbWUsIGtpbmQsIGtpbmRfdSwKLSAJCQkJCQkgJmNhbGxlcl9wZXJfY3UpOwotICAg ZGF0YV9zcmMgPSBkZXJlZl9zaXplID09IC0xID8gcGFyYW1ldGVyLT52YWx1ZSA6IHBhcmFtZXRl ci0+ZGF0YV92YWx1ZTsKLSAgIHNpemUgPSBkZXJlZl9zaXplID09IC0xID8gcGFyYW1ldGVyLT52 YWx1ZV9zaXplIDogcGFyYW1ldGVyLT5kYXRhX3ZhbHVlX3NpemU7Ci1AQCAtMTE4NywxNyArMTIw MCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGx2YWxfZnVuY3MgZW50cnlfZGF0YV92YWx1ZV9m dW5jcyA9Ci0gICBlbnRyeV9kYXRhX3ZhbHVlX2ZyZWVfY2xvc3VyZQotIH07Ci0gCi0tLyogUmVh ZCBwYXJhbWV0ZXIgb2YgVFlQRSBhdCAoY2FsbGVlKSBGUkFNRSdzIGZ1bmN0aW9uIGVudHJ5LiAg RFdBUkZfUkVHIGFuZAotLSAgIEZCX09GRlNFVCBhcmUgdXNlZCB0byBtYXRjaCBEV19BVF9sb2Nh dGlvbiBhdCB0aGUgY2FsbGVyJ3MKLS0gICBEV19UQUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0ZXIu ICBTZWUgRFdBUkZfUkVHIGFuZCBGQl9PRkZTRVQgZGVzY3JpcHRpb24gYXQKLS0gICBzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0X2Z1bmNzLT5wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZS4KLSsv KiBSZWFkIHBhcmFtZXRlciBvZiBUWVBFIGF0IChjYWxsZWUpIEZSQU1FJ3MgZnVuY3Rpb24gZW50 cnkuICBLSU5EIGFuZCBLSU5EX1UKLSsgICBhcmUgdXNlZCB0byBtYXRjaCBEV19BVF9sb2NhdGlv biBhdCB0aGUgY2FsbGVyJ3MKLSsgICBEV19UQUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0ZXIuCi0g Ci0gICAgRnVuY3Rpb24gYWx3YXlzIHJldHVybnMgbm9uLU5VTEwgdmFsdWUuICBJdCB0aHJvd3Mg Tk9fRU5UUllfVkFMVUVfRVJST1IgaWYgaXQKLSAgICBjYW5ub3QgcmVzb2x2ZSB0aGUgcGFyYW1l dGVyIGZvciBhbnkgcmVhc29uLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLSB2YWx1 ZV9vZl9kd2FyZl9yZWdfZW50cnkgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsCi0tCQkJICBpbnQgZHdhcmZfcmVnLCBDT1JFX0FERFIgZmJfb2Zmc2V0KQotKwkJ CSAgZW51bSBjYWxsX3NpdGVfcGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkgIHVuaW9uIGNhbGxf c2l0ZV9wYXJhbWV0ZXJfdSBraW5kX3UpCi0gewotICAgc3RydWN0IHR5cGUgKmNoZWNrZWRfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlID0g VFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tlZF90eXBlKTsKLUBAIC0xMjA3LDcgKzEyMjAsNyBAQCB2 YWx1ZV9vZl9kd2FyZl9yZWdfZW50cnkgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUsCi0gICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjYWxsZXJfcGVyX2N1 OwotICAgQ09SRV9BRERSIGFkZHI7Ci0gCi0tICBwYXJhbWV0ZXIgPSBkd2FyZl9leHByX3JlZ190 b19lbnRyeV9wYXJhbWV0ZXIgKGZyYW1lLCBkd2FyZl9yZWcsIGZiX29mZnNldCwKLSsgIHBhcmFt ZXRlciA9IGR3YXJmX2V4cHJfcmVnX3RvX2VudHJ5X3BhcmFtZXRlciAoZnJhbWUsIGtpbmQsIGtp bmRfdSwKLSAJCQkJCQkgJmNhbGxlcl9wZXJfY3UpOwotIAotICAgb3V0ZXJfdmFsID0gZHdhcmZf ZW50cnlfcGFyYW1ldGVyX3RvX3ZhbHVlIChwYXJhbWV0ZXIsIC0xIC8qIGRlcmVmX3NpemUgKi8s Ci1AQCAtMTI1OSwxNSArMTI3MiwxNiBAQCBzdGF0aWMgc3RydWN0IHZhbHVlICoKLSB2YWx1ZV9v Zl9kd2FyZl9ibG9ja19lbnRyeSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSwKLSAJCQkgICAgY29uc3QgZ2RiX2J5dGUgKmJsb2NrLCBzaXplX3QgYmxvY2tfbGVu KQotIHsKLS0gIGludCBkd2FyZl9yZWc7Ci0tICBDT1JFX0FERFIgZmJfb2Zmc2V0OwotKyAgdW5p b24gY2FsbF9zaXRlX3BhcmFtZXRlcl91IGtpbmRfdTsKLSAKLS0gIGR3YXJmX3JlZyA9IGR3YXJm X2Jsb2NrX3RvX2R3YXJmX3JlZyAoYmxvY2ssIGJsb2NrICsgYmxvY2tfbGVuKTsKLS0gIGlmIChk d2FyZl9yZWcgIT0gLTEpCi0tICAgIHJldHVybiB2YWx1ZV9vZl9kd2FyZl9yZWdfZW50cnkgKHR5 cGUsIGZyYW1lLCBkd2FyZl9yZWcsIDAgLyogdW51c2VkICovKTsKLSsgIGtpbmRfdS5kd2FyZl9y ZWcgPSBkd2FyZl9ibG9ja190b19kd2FyZl9yZWcgKGJsb2NrLCBibG9jayArIGJsb2NrX2xlbik7 Ci0rICBpZiAoa2luZF91LmR3YXJmX3JlZyAhPSAtMSkKLSsgICAgcmV0dXJuIHZhbHVlX29mX2R3 YXJmX3JlZ19lbnRyeSAodHlwZSwgZnJhbWUsIENBTExfU0lURV9QQVJBTUVURVJfRFdBUkZfUkVH LAotKwkJCQkgICAgIGtpbmRfdSk7Ci0gCi0tICBpZiAoZHdhcmZfYmxvY2tfdG9fZmJfb2Zmc2V0 IChibG9jaywgYmxvY2sgKyBibG9ja19sZW4sICZmYl9vZmZzZXQpKQotLSAgICByZXR1cm4gdmFs dWVfb2ZfZHdhcmZfcmVnX2VudHJ5ICh0eXBlLCBmcmFtZSwgLTEsIGZiX29mZnNldCk7Ci0rICBp ZiAoZHdhcmZfYmxvY2tfdG9fZmJfb2Zmc2V0IChibG9jaywgYmxvY2sgKyBibG9ja19sZW4sICZr aW5kX3UuZmJfb2Zmc2V0KSkKLSsgICAgcmV0dXJuIHZhbHVlX29mX2R3YXJmX3JlZ19lbnRyeSAo dHlwZSwgZnJhbWUsIENBTExfU0lURV9QQVJBTUVURVJfRkJfT0ZGU0VULAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kX3UpOwotIAotICAgLyogVGhpcyBjYW4gbm9y bWFsbHkgaGFwcGVuIC0gdGhyb3cgTk9fRU5UUllfVkFMVUVfRVJST1IgdG8gZ2V0IHRoZSBtZXNz YWdlCi0gICAgICBzdXBwcmVzc2VkIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLiAgVGhlIGV4cHJl c3Npb24gY2FuIGJlIGFyYml0cmFyeSBpZgotQEAgLTIzNTgsNyArMjM3Miw4IEBAIG5lZWRzX2Zy YW1lX2R3YXJmX2NhbGwgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0 IGRpZV9vZmZzZXQpCi0gCi0gc3RhdGljIHZvaWQKLSBuZWVkc19kd2FyZl9yZWdfZW50cnlfdmFs dWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKLS0JCQkgICAgIGludCBkd2FyZl9y ZWcsIENPUkVfQUREUiBmYl9vZmZzZXQsIGludCBkZXJlZl9zaXplKQotKwkJCSAgICAgZW51bSBj YWxsX3NpdGVfcGFyYW1ldGVyX2tpbmQga2luZCwKLSsJCQkgICAgIHVuaW9uIGNhbGxfc2l0ZV9w YXJhbWV0ZXJfdSBraW5kX3UsIGludCBkZXJlZl9zaXplKQotIHsKLSAgIHN0cnVjdCBuZWVkc19m cmFtZV9iYXRvbiAqbmZfYmF0b24gPSBjdHgtPmJhdG9uOwotIAotLS0tIGEvZ2RiL2R3YXJmMnJl YWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTc4MTYsNiArNzgxNiw3IEBAIHJlYWRf Y2FsbF9zaXRlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gICAgICAgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpKQotICAgICB7 Ci0gICAgICAgc3RydWN0IGNhbGxfc2l0ZV9wYXJhbWV0ZXIgKnBhcmFtZXRlcjsKLSsgICAgICBz dHJ1Y3QgYXR0cmlidXRlICpsb2M7Ci0gCi0gICAgICAgaWYgKGNoaWxkX2RpZS0+dGFnICE9IERX X1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikKLSAJewotQEAgLTc4MjksOCArNzgzMCw4IEBA IHJlYWRfY2FsbF9zaXRlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gICAgICAgLyogRFdfQVRfbG9jYXRpb24gc3BlY2lmaWVzIHRoZSByZWdpc3Rl ciBudW1iZXIuICBWYWx1ZSBvZiB0aGUgZGF0YQotIAkgYXNzdW1lZCBmb3IgdGhlIHJlZ2lzdGVy IGlzIGNvbnRhaW5lZCBpbiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlLiAgKi8KLSAKLS0gICAg ICBhdHRyID0gZHdhcmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKLS0g ICAgICBpZiAoIWF0dHIgfHwgIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgICAgbG9j ID0gZHdhcmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKLSsgICAgICBp ZiAobG9jID09IE5VTEwgfHwgIWF0dHJfZm9ybV9pc19ibG9jayAobG9jKSkKLSAJewotIAkgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSAJCSAgICAgXygiTm8gRFdfRk9STV9ibG9j ayogRFdfQVRfbG9jYXRpb24gZm9yICIKLUBAIC03ODM4LDE5ICs3ODM5LDI2IEBAIHJlYWRfY2Fs bF9zaXRlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up Ci0gCQkgICAgIGNoaWxkX2RpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxlLT5uYW1lKTsKLSAJ ICBjb250aW51ZTsKLSAJfQotLSAgICAgIHBhcmFtZXRlci0+ZHdhcmZfcmVnID0gZHdhcmZfYmxv Y2tfdG9fZHdhcmZfcmVnIChEV19CTE9DSyAoYXR0ciktPmRhdGEsCi0tCQkJCSAmRFdfQkxPQ0sg KGF0dHIpLT5kYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0pOwotLSAgICAgIGlmIChwYXJhbWV0 ZXItPmR3YXJmX3JlZyA9PSAtMQotLQkgICYmICFkd2FyZl9ibG9ja190b19zcF9vZmZzZXQgKGdk YmFyY2gsIERXX0JMT0NLIChhdHRyKS0+ZGF0YSwKLS0JCQkJICAmRFdfQkxPQ0sgKGF0dHIpLT5k YXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0sCi0tCQkJCQkmcGFyYW1ldGVyLT5mYl9vZmZzZXQp KQotKyAgICAgIGVsc2UKLSAJewotLQkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywK LS0JCSAgICAgXygiT25seSBzaW5nbGUgRFdfT1BfcmVnIG9yIERXX09QX2ZicmVnIGlzIHN1cHBv cnRlZCAiCi0tCQkgICAgICAgImZvciBEV19GT1JNX2Jsb2NrKiBEV19BVF9sb2NhdGlvbiBmb3Ig IgotLQkJICAgICAgICJEV19UQUdfR05VX2NhbGxfc2l0ZSBjaGlsZCBESUUgMHgleCBbaW4gbW9k dWxlICVzXSIpLAotLQkJICAgICBjaGlsZF9kaWUtPm9mZnNldC5zZWN0X29mZiwgb2JqZmlsZS0+ bmFtZSk7Ci0tCSAgY29udGludWU7Ci0rCSAgcGFyYW1ldGVyLT51LmR3YXJmX3JlZyA9IGR3YXJm X2Jsb2NrX3RvX2R3YXJmX3JlZwotKwkgICAgKERXX0JMT0NLIChsb2MpLT5kYXRhLCAmRFdfQkxP Q0sgKGxvYyktPmRhdGFbRFdfQkxPQ0sgKGxvYyktPnNpemVdKTsKLSsJICBpZiAocGFyYW1ldGVy LT51LmR3YXJmX3JlZyAhPSAtMSkKLSsJICAgIHBhcmFtZXRlci0+a2luZCA9IENBTExfU0lURV9Q QVJBTUVURVJfRFdBUkZfUkVHOwotKwkgIGVsc2UgaWYgKGR3YXJmX2Jsb2NrX3RvX3NwX29mZnNl dCAoZ2RiYXJjaCwgRFdfQkxPQ0sgKGxvYyktPmRhdGEsCi0rCQkJCSAgICAmRFdfQkxPQ0sgKGxv YyktPmRhdGFbRFdfQkxPQ0sgKGxvYyktPnNpemVdLAotKwkJCQkJICAgICAmcGFyYW1ldGVyLT51 LmZiX29mZnNldCkpCi0rCSAgICBwYXJhbWV0ZXItPmtpbmQgPSBDQUxMX1NJVEVfUEFSQU1FVEVS X0ZCX09GRlNFVDsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGNvbXBsYWludCAoJnN5bWZp bGVfY29tcGxhaW50cywKLSsJCQkgXygiT25seSBzaW5nbGUgRFdfT1BfcmVnIG9yIERXX09QX2Zi cmVnIGlzIHN1cHBvcnRlZCAiCi0rCQkJICAgImZvciBEV19GT1JNX2Jsb2NrKiBEV19BVF9sb2Nh dGlvbiBpcyBzdXBwb3J0ZWQgZm9yICIKLSsJCQkgICAiRFdfVEFHX0dOVV9jYWxsX3NpdGUgY2hp bGQgRElFIDB4JXggIgotKwkJCSAgICJbaW4gbW9kdWxlICVzXSIpLAotKwkJCSBjaGlsZF9kaWUt Pm9mZnNldC5zZWN0X29mZiwgb2JqZmlsZS0+bmFtZSk7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkg ICAgfQotIAl9Ci0gCi0gICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FU X0dOVV9jYWxsX3NpdGVfdmFsdWUsIGN1KTsKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9n ZGIvZ2RidHlwZXMuaAotQEAgLTIzLDYgKzIzLDcgQEAKLSAjZGVmaW5lIEdEQlRZUEVTX0ggMQot IAotICNpbmNsdWRlICJoYXNodGFiLmgiCi0rI2luY2x1ZGUgImR3YXJmMmV4cHIuaCIKLSAKLSAv KiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgcHJvdG90eXBlcy4gICovCi0gc3RydWN0IGZpZWxk OwotQEAgLTkxNSw2ICs5MTYsMTcgQEAgc3RydWN0IGZ1bmNfdHlwZQotICAgICBzdHJ1Y3QgY2Fs bF9zaXRlICp0YWlsX2NhbGxfbGlzdDsKLSAgIH07Ci0gCi0rLyogc3RydWN0IGNhbGxfc2l0ZV9w YXJhbWV0ZXIgY2FuIGJlIHJlZmVyZW5jZWQgaW4gY2FsbGVlcyBieSBzZXZlcmFsIHdheXMuICAq LwotKwotK2VudW0gY2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kCi0rewotKyAgLyogVXNlIGZpZWxk IGNhbGxfc2l0ZV9wYXJhbWV0ZXIudS5kd2FyZl9yZWcuICAqLwotKyAgQ0FMTF9TSVRFX1BBUkFN RVRFUl9EV0FSRl9SRUcsCi0rCi0rICAvKiBVc2UgZmllbGQgY2FsbF9zaXRlX3BhcmFtZXRlci51 LmZiX29mZnNldC4gICovCi0rICBDQUxMX1NJVEVfUEFSQU1FVEVSX0ZCX09GRlNFVAotK307Ci0r Ci0gLyogQSBwbGFjZSB3aGVyZSBhIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20sIHJlcHJlc2Vu dGVkIGJ5Ci0gICAgRFdfVEFHX0dOVV9jYWxsX3NpdGUuICBJdCBjYW4gYmUgbG9va2VkIHVwIGZy b20gc3ltdGFiLT5jYWxsX3NpdGVfaHRhYi4gICovCi0gCi1AQCAtOTQ4LDE1ICs5NjAsMTkgQEAg c3RydWN0IGNhbGxfc2l0ZQotICAgICAvKiBEZXNjcmliZSBEV19UQUdfR05VX2NhbGxfc2l0ZSdz IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyLiAgKi8KLSAgICAgc3RydWN0IGNhbGxfc2l0ZV9wYXJh bWV0ZXIKLSAgICAgICB7Ci0tCS8qIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyJ3MgRFdfQVRfbG9j YXRpb24ncyBEV19PUF9yZWdYIGFzIERXQVJGCi0tCSAgIHJlZ2lzdGVyIG51bWJlciwgZm9yIHJl Z2lzdGVyIHBhc3NlZCBwYXJhbWV0ZXJzLiAgSWYgLTEgdGhlbiB1c2UKLS0JICAgZmJfb2Zmc2V0 LiAgKi8KLS0JaW50IGR3YXJmX3JlZzsKLS0KLS0JLyogT2Zmc2V0IGZyb20gdGhlIGNhbGxlZSdz IGZyYW1lIGJhc2UsIGZvciBzdGFjayBwYXNzZWQgcGFyYW1ldGVycy4KLS0JICAgVGhpcyBlcXVh bHMgb2Zmc2V0IGZyb20gdGhlIGNhbGxlcidzIHN0YWNrIHBvaW50ZXIuICBWYWxpZCBvbmx5IGlm Ci0tCSAgIERXQVJGX1JFR05VTSBpcyAtMS4gICovCi0tCUNPUkVfQUREUiBmYl9vZmZzZXQ7Ci0r CUVOVU1fQklURklFTEQgKGNhbGxfc2l0ZV9wYXJhbWV0ZXJfa2luZCkga2luZCA6IDI7Ci0rCi0r CXVuaW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJfdQotKwkgIHsKLSsJICAgIC8qIERXX1RBR19mb3Jt YWxfcGFyYW1ldGVyJ3MgRFdfQVRfbG9jYXRpb24ncyBEV19PUF9yZWdYIGFzIERXQVJGCi0rCSAg ICAgICByZWdpc3RlciBudW1iZXIsIGZvciByZWdpc3RlciBwYXNzZWQgcGFyYW1ldGVycy4gICov Ci0rCSAgICBpbnQgZHdhcmZfcmVnOwotKwotKwkgICAgLyogT2Zmc2V0IGZyb20gdGhlIGNhbGxl ZSdzIGZyYW1lIGJhc2UsIGZvciBzdGFjayBwYXNzZWQgcGFyYW1ldGVycy4KLSsJICAgICAgIFRo aXMgZXF1YWxzIG9mZnNldCBmcm9tIHRoZSBjYWxsZXIncyBzdGFjayBwb2ludGVyLiAgKi8KLSsJ ICAgIENPUkVfQUREUiBmYl9vZmZzZXQ7Ci0rCSAgfQotKwl1OwotIAotIAkvKiBEV19UQUdfZm9y bWFsX3BhcmFtZXRlcidzIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUuICBJdCBpcyBuZXZlcgot IAkgICBOVUxMLiAgKi8KLQoKZGlmZiAtLWdpdCBhL2dkYi1wYXJhbWV0ZXJyZWYtMm9mMi5wYXRj aCBiL2dkYi1wYXJhbWV0ZXJyZWYtMm9mMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggODVlMzdhZi4uMDAwMDAwMAotLS0gYS9nZGItcGFyYW1ldGVycmVmLTJvZjIucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw4NjQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTItMDYvbXNnMDA0NTkuaHRtbAotU3ViamVjdDogW3BhdGNoIDIvMl0g U3VwcG9ydCBnY2MtNC43IERXX09QX0dOVV9wYXJhbWV0ZXJfcmVmCi0KLUhpLAotCi10aGlzIGFk ZC1vbiB0byBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS5leHAgaGFzIGJlZW4gc29tZWhvdyBm b3Jnb3R0ZW46Ci0JW1BBVENIXSBJbXByb3ZlIGRlYnVnIGluZm8gZm9yIElQQS1TUkEgb3B0aW1p emVkIGNvZGUgLSBhZGQgRFdfT1BfR05VX3BhcmFtZXRlcl9yZWYgc3VwcG9ydCAoUFIgZGVidWcv NDc4NTgpCi0JaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTEtMDYvbXNnMDA2 NDkuaHRtbAotCi1BbmQgZm9yIGdjYy00LjcrIC1PMiAtZyBjb2RlIEdEQiBtYXkgcHJpbnQgKGlu c3RlYWQgb2YgdGhlIGNhbGN1bGF0ZWQgdmFsdWUpOgotCShnZGIpIHAgeQotCVVuaGFuZGxlZCBk d2FyZiBleHByZXNzaW9uIG9wY29kZSAweGZhCi0KLVRoZSBzdXBwb3J0IGlzIHByZXR0eSBzaW1w bGUsIHRoZXJlIGlzIGp1c3Qgbm93IHRoaXJkIGtpbmQgb2YgYmluZGluZyBiZXR3ZWVuCi1jYWxs ZXJzIGFuZCBjYWxsZWVzIHBhcmFtZXRlciB2YWx1ZXMuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4 ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExNy1saW51eC1nbnUuCi0KLQotVGhhbmtzLAot SmFuCi0KLQotZ2RiLwotMjAxMi0wNi0xNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJleHByLmMgKGV4ZWN1dGVfc3RhY2tfb3ApOiBTdXBw b3J0IERXX09QX0dOVV9wYXJhbWV0ZXJfcmVmLgotCSogZHdhcmYybG9jLmMgKGNhbGxfc2l0ZV9w YXJhbWV0ZXJfbWF0Y2hlcyk6IFN1cHBvcnQKLQlDQUxMX1NJVEVfUEFSQU1FVEVSX1BBUkFNX09G RlNFVC4KLQkobmVlZHNfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlKTogUHVzaCBzdHViIHZhbHVlLgot CSogZHdhcmYycmVhZC5jIChyZWFkX2NhbGxfc2l0ZV9zY29wZSk6IE5ldyB2YXJpYWJsZSBvcmln aW4uICBTdXBwb3J0Ci0JQ0FMTF9TSVRFX1BBUkFNRVRFUl9QQVJBTV9PRkZTRVQgYW5kIGl0cyBE V19BVF9hYnN0cmFjdF9vcmlnaW4uCi0JKiBnZGJ0eXBlcy5oIChlbnVtIGNhbGxfc2l0ZV9wYXJh bWV0ZXJfa2luZCk6IE5ldyBpdGVtCi0JQ0FMTF9TSVRFX1BBUkFNRVRFUl9QQVJBTV9PRkZTRVQu Ci0JKHN0cnVjdCBjYWxsX3NpdGUucGFyYW1ldGVyLnUpOiBOZXcgZmllbGQgcGFyYW1fb2Zmc2V0 LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMi0wNi0xNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJh bS5TOiBOZXcgZmlsZS4KLQkqIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmM6IE5l dyBmaWxlLgotCSogZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uZXhwOiBOZXcgZmls ZS4KLQotLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwotKysrIGIvZ2RiL2R3YXJmMmV4cHIuYwotQEAg LTEzOTIsNiArMTM5MiwyMSBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHgsCi0gCQkgICAgICJvciBmb3IgRFdfT1BfYnJlZyooMCkrRFdfT1BfZGVyZWYq IikpOwotIAkgIH0KLSAKLSsJY2FzZSBEV19PUF9HTlVfcGFyYW1ldGVyX3JlZjoKLSsJICB7Ci0r CSAgICBjdV9vZmZzZXQgb2Zmc2V0OwotKwkgICAgdW5pb24gY2FsbF9zaXRlX3BhcmFtZXRlcl91 IGtpbmRfdTsKLSsKLSsJICAgIGtpbmRfdS5wYXJhbV9vZmZzZXQuY3Vfb2ZmID0gZXh0cmFjdF91 bnNpZ25lZF9pbnRlZ2VyIChvcF9wdHIsIDQsCi0rCQkJCQkJCQkgICBieXRlX29yZGVyKTsKLSsJ ICAgIG9wX3B0ciArPSA0OwotKwkgICAgY3R4LT5mdW5jcy0+cHVzaF9kd2FyZl9yZWdfZW50cnlf dmFsdWUgKGN0eCwKLSsJCQkJCSAgICAgICBDQUxMX1NJVEVfUEFSQU1FVEVSX1BBUkFNX09GRlNF VCwKLSsJCQkJCQkgICAga2luZF91LAotKwkJCQkJCSAgICAtMSAvKiBkZXJlZl9zaXplICovKTsK LSsJICB9Ci0rCSAgZ290byBub19wdXNoOwotKwotIAljYXNlIERXX09QX0dOVV9jb25zdF90eXBl OgotIAkgIHsKLSAJICAgIGN1X29mZnNldCB0eXBlX2RpZTsKLS0tLSBhL2dkYi9kd2FyZjJsb2Mu YwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAtOTQzLDYgKzk0Myw4IEBAIGNhbGxfc2l0ZV9w YXJhbWV0ZXJfbWF0Y2hlcyAoc3RydWN0IGNhbGxfc2l0ZV9wYXJhbWV0ZXIgKnBhcmFtZXRlciwK LSAJcmV0dXJuIGtpbmRfdS5kd2FyZl9yZWcgPT0gcGFyYW1ldGVyLT51LmR3YXJmX3JlZzsKLSAg ICAgICBjYXNlIENBTExfU0lURV9QQVJBTUVURVJfRkJfT0ZGU0VUOgotIAlyZXR1cm4ga2luZF91 LmZiX29mZnNldCA9PSBwYXJhbWV0ZXItPnUuZmJfb2Zmc2V0OwotKyAgICAgIGNhc2UgQ0FMTF9T SVRFX1BBUkFNRVRFUl9QQVJBTV9PRkZTRVQ6Ci0rCXJldHVybiBraW5kX3UucGFyYW1fb2Zmc2V0 LmN1X29mZiA9PSBwYXJhbWV0ZXItPnUucGFyYW1fb2Zmc2V0LmN1X29mZjsKLSAgICAgICB9Ci0g ICByZXR1cm4gMDsKLSB9Ci1AQCAtMjM3OCw2ICsyMzgwLDkgQEAgbmVlZHNfZHdhcmZfcmVnX2Vu dHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCi0gICBzdHJ1Y3QgbmVl ZHNfZnJhbWVfYmF0b24gKm5mX2JhdG9uID0gY3R4LT5iYXRvbjsKLSAKLSAgIG5mX2JhdG9uLT5u ZWVkc19mcmFtZSA9IDE7Ci0rCi0rICAvKiBUaGUgZXhwcmVzc2lvbiBtYXkgcmVxdWlyZSBzb21l IHN0dWIgdmFsdWVzIG9uIERXQVJGIHN0YWNrLiAgKi8KLSsgIGR3YXJmX2V4cHJfcHVzaF9hZGRy ZXNzIChjdHgsIDAsIDApOwotIH0KLSAKLSAvKiBEV19PUF9HTlVfYWRkcl9pbmRleCBkb2Vzbid0 IHJlcXVpcmUgYSBmcmFtZS4gICovCi0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIv ZHdhcmYycmVhZC5jCi1AQCAtNzgxNiw3ICs3ODE2LDcgQEAgcmVhZF9jYWxsX3NpdGVfc2NvcGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICAgY2hp bGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSkpCi0gICAgIHsKLSAgICAgICBzdHJ1Y3Qg Y2FsbF9zaXRlX3BhcmFtZXRlciAqcGFyYW1ldGVyOwotLSAgICAgIHN0cnVjdCBhdHRyaWJ1dGUg KmxvYzsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpsb2MsICpvcmlnaW47Ci0gCi0gICAgICAg aWYgKGNoaWxkX2RpZS0+dGFnICE9IERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikKLSAJ ewotQEAgLTc4MjcsMTEgKzc4MjcsMjMgQEAgcmVhZF9jYWxsX3NpdGVfc2NvcGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBnZGJfYXNzZXJ0IChj YWxsX3NpdGUtPnBhcmFtZXRlcl9jb3VudCA8IG5wYXJhbXMpOwotICAgICAgIHBhcmFtZXRlciA9 ICZjYWxsX3NpdGUtPnBhcmFtZXRlcltjYWxsX3NpdGUtPnBhcmFtZXRlcl9jb3VudF07Ci0gCi0t ICAgICAgLyogRFdfQVRfbG9jYXRpb24gc3BlY2lmaWVzIHRoZSByZWdpc3RlciBudW1iZXIuICBW YWx1ZSBvZiB0aGUgZGF0YQotLQkgYXNzdW1lZCBmb3IgdGhlIHJlZ2lzdGVyIGlzIGNvbnRhaW5l ZCBpbiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlLiAgKi8KLSsgICAgICAvKiBEV19BVF9sb2Nh dGlvbiBzcGVjaWZpZXMgdGhlIHJlZ2lzdGVyIG51bWJlciBvciBEV19BVF9hYnN0cmFjdF9vcmln aW4KLSsJIHNwZWNpZmllcyBEV19UQUdfZm9ybWFsX3BhcmFtZXRlci4gIFZhbHVlIG9mIHRoZSBk YXRhIGFzc3VtZWQgZm9yIHRoZQotKwkgcmVnaXN0ZXIgaXMgY29udGFpbmVkIGluIERXX0FUX0dO VV9jYWxsX3NpdGVfdmFsdWUuICAqLwotIAotICAgICAgIGxvYyA9IGR3YXJmMl9hdHRyIChjaGls ZF9kaWUsIERXX0FUX2xvY2F0aW9uLCBjdSk7Ci0tICAgICAgaWYgKGxvYyA9PSBOVUxMIHx8ICFh dHRyX2Zvcm1faXNfYmxvY2sgKGxvYykpCi0rICAgICAgb3JpZ2luID0gZHdhcmYyX2F0dHIgKGNo aWxkX2RpZSwgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luLCBjdSk7Ci0rICAgICAgaWYgKGxvYyA9PSBO VUxMICYmIG9yaWdpbiAhPSBOVUxMICYmIGlzX3JlZl9hdHRyIChvcmlnaW4pKQotKwl7Ci0rCSAg c2VjdF9vZmZzZXQgb2Zmc2V0OwotKwotKwkgIHBhcmFtZXRlci0+a2luZCA9IENBTExfU0lURV9Q QVJBTUVURVJfUEFSQU1fT0ZGU0VUOwotKwkgIG9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9v ZmZzZXQgKG9yaWdpbik7Ci0rCSAgZ2RiX2Fzc2VydCAob2Zmc2V0LnNlY3Rfb2ZmID49IGN1LT5o ZWFkZXIub2Zmc2V0LnNlY3Rfb2ZmKTsKLSsJICBwYXJhbWV0ZXItPnUucGFyYW1fb2Zmc2V0LmN1 X29mZiA9IChvZmZzZXQuc2VjdF9vZmYKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtIGN1LT5oZWFkZXIub2Zmc2V0LnNlY3Rfb2ZmKTsKLSsJfQotKyAgICAgIGVsc2Ug aWYgKGxvYyA9PSBOVUxMIHx8IG9yaWdpbiAhPSBOVUxMIHx8ICFhdHRyX2Zvcm1faXNfYmxvY2sg KGxvYykpCi0gCXsKLSAJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkgICAg IF8oIk5vIERXX0ZPUk1fYmxvY2sqIERXX0FUX2xvY2F0aW9uIGZvciAiCi0tLS0gYS9nZGIvZ2Ri dHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC05MjQsNyArOTI0LDEwIEBAIGVudW0g Y2FsbF9zaXRlX3BhcmFtZXRlcl9raW5kCi0gICBDQUxMX1NJVEVfUEFSQU1FVEVSX0RXQVJGX1JF RywKLSAKLSAgIC8qIFVzZSBmaWVsZCBjYWxsX3NpdGVfcGFyYW1ldGVyLnUuZmJfb2Zmc2V0LiAg Ki8KLS0gIENBTExfU0lURV9QQVJBTUVURVJfRkJfT0ZGU0VUCi0rICBDQUxMX1NJVEVfUEFSQU1F VEVSX0ZCX09GRlNFVCwKLSsKLSsgIC8qIFVzZSBmaWVsZCBjYWxsX3NpdGVfcGFyYW1ldGVyLnUu cGFyYW1fb2Zmc2V0LiAgKi8KLSsgIENBTExfU0lURV9QQVJBTUVURVJfUEFSQU1fT0ZGU0VUCi0g fTsKLSAKLSAvKiBBIHBsYWNlIHdoZXJlIGEgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbSwgcmVw cmVzZW50ZWQgYnkKLUBAIC05NzEsNiArOTc0LDExIEBAIHN0cnVjdCBjYWxsX3NpdGUKLSAJICAg IC8qIE9mZnNldCBmcm9tIHRoZSBjYWxsZWUncyBmcmFtZSBiYXNlLCBmb3Igc3RhY2sgcGFzc2Vk IHBhcmFtZXRlcnMuCi0gCSAgICAgICBUaGlzIGVxdWFscyBvZmZzZXQgZnJvbSB0aGUgY2FsbGVy J3Mgc3RhY2sgcG9pbnRlci4gICovCi0gCSAgICBDT1JFX0FERFIgZmJfb2Zmc2V0OwotKwotKwkg ICAgLyogT2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGlzIFBFUl9DVSB0bwotKwkg ICAgICAgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIgd2hpY2ggaXMgcmVmZXJlbmNlZCBieSBib3Ro IGNhbGxlciBhbmQKLSsJICAgICAgIHRoZSBjYWxsZWUuICAqLwotKwkgICAgY3Vfb2Zmc2V0IHBh cmFtX29mZnNldDsKLSAJICB9Ci0gCXU7Ci0gCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLlMKLUBAIC0wLDAgKzEsNjEx IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogVGhpcyBm aWxlIGlzIGNvbXBpbGVkIGZyb20gZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYwot KyAgIHVzaW5nIC1nIC1kQSAtUyAtTzIuICAqLwotKwotKwkuZmlsZQkiYW1kNjQtZW50cnktdmFs dWUtcGFyYW0uYyIKLSsJLnRleHQKLSsuTHRleHQwOgotKwkucDJhbGlnbiA0LCwxNQotKwkudHlw ZQlmb28uaXNyYS4wLmNvbnN0cHJvcC4yLCBAZnVuY3Rpb24KLStmb28uaXNyYS4wLmNvbnN0cHJv cC4yOgotKy5MRkI0OgotKwkuZmlsZSAxICJnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJh bS5jIgotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jOjIxICovCi0rCS5s b2MgMSAyMSAwCi0rCS5jZmlfc3RhcnRwcm9jCi0rLkxWTDA6Ci0rLyogQkxPQ0sgMiBmcmVxOjEw MDAwIHNlcTowICovCi0rLyogUFJFRDogRU5UUlkgWzEwMC4wJV0gIChmYWxsdGhydSkgKi8KLSsJ LyogZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYzoyNiAqLwotKwkubG9jIDEgMjYg MAotKwltb3ZsCXZ2KCVyaXApLCAlZWF4Ci0rCWFkZGwJJDEsICVlYXgKLSsJbW92bAklZWF4LCB2 diglcmlwKQotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jOjI3ICovCi0r CS5sb2MgMSAyNyAwCi0rCWxlYWwJMyglcmRpKSwgJWVheAotKy8qIFNVQ0M6IEVYSVQgWzEwMC4w JV0gICovCi0rCS8qIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmM6MjggKi8KLSsJ LmxvYyAxIDI4IDAKLSsJcmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkU0OgotKwkuc2l6ZQlmb28u aXNyYS4wLmNvbnN0cHJvcC4yLCAuLWZvby5pc3JhLjAuY29uc3Rwcm9wLjIKLSsJLnAyYWxpZ24g NCwsMTUKLSsJLnR5cGUJYmFyLmNvbnN0cHJvcC4xLCBAZnVuY3Rpb24KLStiYXIuY29uc3Rwcm9w LjE6Ci0rLkxGQjU6Ci0rCS8qIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmM6MzEg Ki8KLSsJLmxvYyAxIDMxIDAKLSsJLmNmaV9zdGFydHByb2MKLSsvKiBCTE9DSyAyIGZyZXE6MTAw MDAgc2VxOjAgKi8KLSsvKiBQUkVEOiBFTlRSWSBbMTAwLjAlXSAgKGZhbGx0aHJ1KSAqLwotKy5M VkwxOgotKwlwdXNocQklcmJ4Ci0rLkxDRkkwOgotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2Ci0r CS5jZmlfb2Zmc2V0IDMsIC0xNgotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJh bS5jOjMzICovCi0rCS5sb2MgMSAzMyAwCi0rCW1vdmwJJDEwLCAlZWRpCi0rCWNhbGwJZm9vLmlz cmEuMC5jb25zdHByb3AuMgotKy5MVkwyOgotKwltb3ZsCSQxMCwgJWVkaQotKwltb3ZsCSVlYXgs ICVlYngKLSsJY2FsbAlmb28uaXNyYS4wLmNvbnN0cHJvcC4yCi0rLkxWTDM6Ci0rCW1vdmwJJDE2 LCAlZWRpCi0rCWFkZGwJJWVheCwgJWVieAotKwljYWxsCWZvby5pc3JhLjAuY29uc3Rwcm9wLjIK LSsuTFZMNDoKLSsJbGVhbAkxMCglcmJ4LCVyYXgpLCAlZWF4Ci0rCS8qIGdkYi5hcmNoL2FtZDY0 LWVudHJ5LXZhbHVlLXBhcmFtLmM6MzQgKi8KLSsJLmxvYyAxIDM0IDAKLSsJcG9wcQklcmJ4Ci0r LkxDRkkxOgotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLSsvKiBTVUNDOiBFWElUIFsxMDAuMCVd ICAqLwotKwlyZXQKLSsJLmNmaV9lbmRwcm9jCi0rLkxGRTU6Ci0rCS5zaXplCWJhci5jb25zdHBy b3AuMSwgLi1iYXIuY29uc3Rwcm9wLjEKLSsJLnNlY3Rpb24JLnRleHQuc3RhcnR1cCwiYXgiLEBw cm9nYml0cwotKwkucDJhbGlnbiA0LCwxNQotKwkuZ2xvYmwJbWFpbgotKwkudHlwZQltYWluLCBA ZnVuY3Rpb24KLSttYWluOgotKy5MRkIyOgotKwkvKiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1 ZS1wYXJhbS5jOjM4ICovCi0rCS5sb2MgMSAzOCAwCi0rCS5jZmlfc3RhcnRwcm9jCi0rLyogQkxP Q0sgMiBmcmVxOjEwMDAwIHNlcTowICovCi0rLyogUFJFRDogRU5UUlkgWzEwMC4wJV0gIChmYWxs dGhydSkgKi8KLSsJLyogZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYzozOSAqLwot KwkubG9jIDEgMzkgMAotKwlqbXAJYmFyLmNvbnN0cHJvcC4xCi0rLyogU1VDQzogRVhJVCBbMTAw LjAlXSAgKGFiLHNpYmNhbGwpICovCi0rLkxWTDU6Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkUyOgot Kwkuc2l6ZQltYWluLCAuLW1haW4KLSsJLmNvbW0JdnYsNCw0Ci0rCS50ZXh0Ci0rLkxldGV4dDA6 Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0r CS40Ynl0ZQkweDFiNwkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvICovCi0rCS4y Ynl0ZQkweDIJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8KLSsJLjRieXRlCS5MZGVidWdfYWJi cmV2MAkvKiBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24gKi8KLSsJLmJ5dGUJMHg4CS8qIFBv aW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRElFICgweGIpIERX X1RBR19jb21waWxlX3VuaXQpICovCi0rCS40Ynl0ZQkuTEFTRjAJLyogRFdfQVRfcHJvZHVjZXI6 ICJHTlUgQyA0LjcuMSAyMDEyMDYxMiAocHJlcmVsZWFzZSkiICovCi0rCS5ieXRlCTB4MQkvKiBE V19BVF9sYW5ndWFnZSAqLwotKwkuNGJ5dGUJLkxBU0YxCS8qIERXX0FUX25hbWU6ICJnZGIuYXJj aC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jIiAqLwotKwkuNGJ5dGUJLkxBU0YyCS8qIERXX0FU X2NvbXBfZGlyOiAiIiAqLwotKwkuNGJ5dGUJLkxkZWJ1Z19yYW5nZXMwKzAJLyogRFdfQVRfcmFu Z2VzICovCi0rCS5xdWFkCTAJLyogRFdfQVRfbG93X3BjICovCi0rCS5xdWFkCTAJLyogRFdfQVRf ZW50cnlfcGMgKi8KLSsJLjRieXRlCS5MZGVidWdfbGluZTAJLyogRFdfQVRfc3RtdF9saXN0ICov Ci0rCS51bGViMTI4IDB4MgkvKiAoRElFICgweDMxKSBEV19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJ LmFzY2lpICJmb29cMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZGVj bF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0ZQkw eDE1CS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfcHJvdG90eXBl ZCAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCTAJLyogRFdfQVRf aW5saW5lICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FUX3NpYmxpbmcgKi8KLSsJLnVsZWIxMjgg MHgzCS8qIChESUUgKDB4NDIpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKSAqLwotKwkuYXNjaWkg InhcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChn ZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0ZQkweDE1CS8qIERX X0FUX2RlY2xfbGluZSAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS51bGVi MTI4IDB4MwkvKiAoRElFICgweDRiKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikgKi8KLSsJLmFz Y2lpICJ5XDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2RlY2xfZmls ZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYykgKi8KLSsJLmJ5dGUJMHgxNQkv KiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLjRieXRlCTB4NzkJLyogRFdfQVRfdHlwZSAqLwotKwku dWxlYjEyOCAweDMJLyogKERJRSAoMHg1NCkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpICovCi0r CS5hc2NpaSAielwwIgkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNs X2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmMpICovCi0rCS5ieXRlCTB4 MTUJLyogRFdfQVRfZGVjbF9saW5lICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FUX3R5cGUgKi8K LSsJLnVsZWIxMjggMHg0CS8qIChESUUgKDB4NWQpIERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmFz Y2lpICJhXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2RlY2xfZmls ZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYykgKi8KLSsJLmJ5dGUJMHgxNwkv KiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLjRieXRlCTB4NzkJLyogRFdfQVRfdHlwZSAqLwotKwku dWxlYjEyOCAweDQJLyogKERJRSAoMHg2NikgRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYXNjaWkg ImJcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChn ZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0ZQkweDE4CS8qIERX X0FUX2RlY2xfbGluZSAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS51bGVi MTI4IDB4NAkvKiAoRElFICgweDZmKSBEV19UQUdfdmFyaWFibGUpICovCi0rCS5hc2NpaSAiY1ww IgkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKGdkYi5h cmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmMpICovCi0rCS5ieXRlCTB4MTkJLyogRFdfQVRf ZGVjbF9saW5lICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJMAkv KiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MzEgKi8KLSsJLnVsZWIxMjggMHg1CS8qIChESUUg KDB4NzkpIERXX1RBR19iYXNlX3R5cGUpICovCi0rCS5ieXRlCTB4NAkvKiBEV19BVF9ieXRlX3Np emUgKi8KLSsJLmJ5dGUJMHg1CS8qIERXX0FUX2VuY29kaW5nICovCi0rCS5hc2NpaSAiaW50XDAi CS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHgyCS8qIChESUUgKDB4ODApIERXX1RBR19z dWJwcm9ncmFtKSAqLwotKwkuYXNjaWkgImJhclwwIgkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRl CTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFt LmMpICovCi0rCS5ieXRlCTB4MWYJLyogRFdfQVRfZGVjbF9saW5lICovCi0rCS5ieXRlCTB4MQkv KiBEV19BVF9wcm90b3R5cGVkICovCi0rCS40Ynl0ZQkweDc5CS8qIERXX0FUX3R5cGUgKi8KLSsJ LmJ5dGUJMHgxCS8qIERXX0FUX2lubGluZSAqLwotKwkuNGJ5dGUJMHg5YgkvKiBEV19BVF9zaWJs aW5nICovCi0rCS51bGViMTI4IDB4MwkvKiAoRElFICgweDkxKSBEV19UQUdfZm9ybWFsX3BhcmFt ZXRlcikgKi8KLSsJLmFzY2lpICJ4XDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgxCS8q IERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFyYW0uYykgKi8K LSsJLmJ5dGUJMHgxZgkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLjRieXRlCTB4NzkJLyogRFdf QVRfdHlwZSAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg4MCAqLwot KwkudWxlYjEyOCAweDYJLyogKERJRSAoMHg5YikgRFdfVEFHX3N1YnByb2dyYW0pICovCi0rCS40 Ynl0ZQkweDMxCS8qIERXX0FUX2Fic3RyYWN0X29yaWdpbiAqLwotKwkucXVhZAkuTEZCNAkvKiBE V19BVF9sb3dfcGMgKi8KLSsJLnF1YWQJLkxGRTQJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkuYnl0 ZQkweDIJLyogRFdfQVRfZnJhbWVfYmFzZSAqLwotKwkuYnl0ZQkweDc3CS8qIERXX09QX2JyZWc3 ICovCi0rCS5zbGViMTI4IDgKLSsJLmJ5dGUJMHgxCS8qIERXX0FUX0dOVV9hbGxfY2FsbF9zaXRl cyAqLwotKwkuNGJ5dGUJMHhmMQkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4Nwkv KiAoRElFICgweGI4KSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikgKi8KLSsJLjRieXRlCTB4NDIJ LyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9sb2NhdGlv biAqLwotKwkuYnl0ZQkweDU1CS8qIERXX09QX3JlZzUgKi8KLSsJLnVsZWIxMjggMHg3CS8qIChE SUUgKDB4YmYpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKSAqLwotKwkuNGJ5dGUJMHg0YgkvKiBE V19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5dGUJMHg2CS8qIERXX0FUX2xvY2F0aW9uICov Ci0rCS5ieXRlCTB4ZmEJLyogRFdfT1BfR05VX3BhcmFtZXRlcl9yZWYgKi8KLSsJLjRieXRlCTB4 NGIKLSsJLmJ5dGUJMHg5ZgkvKiBEV19PUF9zdGFja192YWx1ZSAqLwotKwkudWxlYjEyOCAweDgJ LyogKERJRSAoMHhjYikgRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuNGJ5dGUJMHg1ZAkvKiBEV19B VF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5dGUJMHg1CS8qIERXX0FUX2xvY2F0aW9uICovCi0r CS5ieXRlCTB4NzUJLyogRFdfT1BfYnJlZzUgKi8KLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkweDMx CS8qIERXX09QX2xpdDEgKi8KLSsJLmJ5dGUJMHgyNAkvKiBEV19PUF9zaGwgKi8KLSsJLmJ5dGUJ MHg5ZgkvKiBEV19PUF9zdGFja192YWx1ZSAqLwotKwkudWxlYjEyOCAweDgJLyogKERJRSAoMHhk NikgRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuNGJ5dGUJMHg2NgkvKiBEV19BVF9hYnN0cmFjdF9v cmlnaW4gKi8KLSsJLmJ5dGUJMHg4CS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS5ieXRlCTB4ZmEJ LyogRFdfT1BfR05VX3BhcmFtZXRlcl9yZWYgKi8KLSsJLjRieXRlCTB4NGIKLSsJLmJ5dGUJMHgz MQkvKiBEV19PUF9saXQxICovCi0rCS5ieXRlCTB4MjQJLyogRFdfT1Bfc2hsICovCi0rCS5ieXRl CTB4OWYJLyogRFdfT1Bfc3RhY2tfdmFsdWUgKi8KLSsJLnVsZWIxMjggMHg5CS8qIChESUUgKDB4 ZTQpIERXX1RBR192YXJpYWJsZSkgKi8KLSsJLjRieXRlCTB4NmYJLyogRFdfQVRfYWJzdHJhY3Rf b3JpZ2luICovCi0rCS5ieXRlCTB4NgkvKiBEV19BVF9jb25zdF92YWx1ZSAqLwotKwkudWxlYjEy OCAweGEJLyogKERJRSAoMHhlYSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpICovCi0rCS40Ynl0 ZQkweDU0CS8qIERXX0FUX2Fic3RyYWN0X29yaWdpbiAqLwotKwkuYnl0ZQkweDMJLyogRFdfQVRf Y29uc3RfdmFsdWUgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4OWIg Ki8KLSsJLnVsZWIxMjggMHhiCS8qIChESUUgKDB4ZjEpIERXX1RBR19zdWJwcm9ncmFtKSAqLwot KwkuNGJ5dGUJMHg4MAkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLnF1YWQJLkxGQjUJ LyogRFdfQVRfbG93X3BjICovCi0rCS5xdWFkCS5MRkU1CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJ LjRieXRlCS5MTFNUMAkvKiBEV19BVF9mcmFtZV9iYXNlICovCi0rCS5ieXRlCTB4MQkvKiBEV19B VF9HTlVfYWxsX2NhbGxfc2l0ZXMgKi8KLSsJLjRieXRlCTB4MTZjCS8qIERXX0FUX3NpYmxpbmcg Ki8KLSsJLnVsZWIxMjggMHhhCS8qIChESUUgKDB4MTBmKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRl cikgKi8KLSsJLjRieXRlCTB4OTEJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRl CTB4YQkvKiBEV19BVF9jb25zdF92YWx1ZSAqLwotKwkudWxlYjEyOCAweGMJLyogKERJRSAoMHgx MTUpIERXX1RBR19HTlVfY2FsbF9zaXRlKSAqLwotKwkucXVhZAkuTFZMMgkvKiBEV19BVF9sb3df cGMgKi8KLSsJLjRieXRlCTB4OWIJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS40Ynl0 ZQkweDEzMwkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4ZAkvKiAoRElFICgweDEy NikgRFdfVEFHX0dOVV9jYWxsX3NpdGVfcGFyYW1ldGVyKSAqLwotKwkuYnl0ZQkweDEJLyogRFdf QVRfbG9jYXRpb24gKi8KLSsJLmJ5dGUJMHg1NQkvKiBEV19PUF9yZWc1ICovCi0rCS5ieXRlCTB4 MQkvKiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlICovCi0rCS5ieXRlCTB4M2EJLyogRFdfT1Bf bGl0MTAgKi8KLSsJLnVsZWIxMjggMHhlCS8qIChESUUgKDB4MTJiKSBEV19UQUdfR05VX2NhbGxf c2l0ZV9wYXJhbWV0ZXIpICovCi0rCS40Ynl0ZQkweDRiCS8qIERXX0FUX2Fic3RyYWN0X29yaWdp biAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZSAqLwotKwkuYnl0 ZQkweDMyCS8qIERXX09QX2xpdDIgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2Yg RElFIDB4MTE1ICovCi0rCS51bGViMTI4IDB4YwkvKiAoRElFICgweDEzMykgRFdfVEFHX0dOVV9j YWxsX3NpdGUpICovCi0rCS5xdWFkCS5MVkwzCS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJ MHg5YgkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLjRieXRlCTB4MTUxCS8qIERXX0FU X3NpYmxpbmcgKi8KLSsJLnVsZWIxMjggMHhkCS8qIChESUUgKDB4MTQ0KSBEV19UQUdfR05VX2Nh bGxfc2l0ZV9wYXJhbWV0ZXIpICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9sb2NhdGlvbiAqLwot KwkuYnl0ZQkweDU1CS8qIERXX09QX3JlZzUgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX0dOVV9j YWxsX3NpdGVfdmFsdWUgKi8KLSsJLmJ5dGUJMHgzYQkvKiBEV19PUF9saXQxMCAqLwotKwkudWxl YjEyOCAweGUJLyogKERJRSAoMHgxNDkpIERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikg Ki8KLSsJLjRieXRlCTB4NGIJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRlCTB4 MQkvKiBEV19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlICovCi0rCS5ieXRlCTB4MzQJLyogRFdfT1Bf bGl0NCAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMzMgKi8KLSsJ LnVsZWIxMjggMHhmCS8qIChESUUgKDB4MTUxKSBEV19UQUdfR05VX2NhbGxfc2l0ZSkgKi8KLSsJ LnF1YWQJLkxWTDQJLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkweDliCS8qIERXX0FUX2Fi c3RyYWN0X29yaWdpbiAqLwotKwkudWxlYjEyOCAweGQJLyogKERJRSAoMHgxNWUpIERXX1RBR19H TlVfY2FsbF9zaXRlX3BhcmFtZXRlcikgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2xvY2F0aW9u ICovCi0rCS5ieXRlCTB4NTUJLyogRFdfT1BfcmVnNSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRf R05VX2NhbGxfc2l0ZV92YWx1ZSAqLwotKwkuYnl0ZQkweDQwCS8qIERXX09QX2xpdDE2ICovCi0r CS51bGViMTI4IDB4ZQkvKiAoRElFICgweDE2MykgRFdfVEFHX0dOVV9jYWxsX3NpdGVfcGFyYW1l dGVyKSAqLwotKwkuNGJ5dGUJMHg0YgkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLmJ5 dGUJMHgxCS8qIERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUgKi8KLSsJLmJ5dGUJMHgzYQkvKiBE V19PUF9saXQxMCAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxNTEg Ki8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4ZjEgKi8KLSsJLnVsZWIx MjggMHgxMAkvKiAoRElFICgweDE2YykgRFdfVEFHX3N1YnByb2dyYW0pICovCi0rCS5ieXRlCTB4 MQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuNGJ5dGUJLkxBU0YzCS8qIERXX0FUX25hbWU6ICJt YWluIiAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1l bnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwkuYnl0ZQkweDI1CS8qIERXX0FUX2RlY2xfbGluZSAq LwotKwkuYnl0ZQkweDEJLyogRFdfQVRfcHJvdG90eXBlZCAqLwotKwkuNGJ5dGUJMHg3OQkvKiBE V19BVF90eXBlICovCi0rCS5xdWFkCS5MRkIyCS8qIERXX0FUX2xvd19wYyAqLwotKwkucXVhZAku TEZFMgkvKiBEV19BVF9oaWdoX3BjICovCi0rCS5ieXRlCTB4MgkvKiBEV19BVF9mcmFtZV9iYXNl ICovCi0rCS5ieXRlCTB4NzcJLyogRFdfT1BfYnJlZzcgKi8KLSsJLnNsZWIxMjggOAotKwkuYnl0 ZQkweDEJLyogRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzICovCi0rCS40Ynl0ZQkweDFhMAkvKiBE V19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4MTEJLyogKERJRSAoMHgxOTEpIERXX1RBR19H TlVfY2FsbF9zaXRlKSAqLwotKwkucXVhZAkuTFZMNQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLmJ5 dGUJMHgxCS8qIERXX0FUX0dOVV90YWlsX2NhbGwgKi8KLSsJLjRieXRlCTB4ZjEJLyogRFdfQVRf YWJzdHJhY3Rfb3JpZ2luICovCi0rCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAw eDE2YyAqLwotKwkudWxlYjEyOCAweDEyCS8qIChESUUgKDB4MWEwKSBEV19UQUdfdmFyaWFibGUp ICovCi0rCS5hc2NpaSAidnZcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJLyogRFdf QVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1wYXJhbS5jKSAqLwotKwku Ynl0ZQkweDEyCS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuNGJ5dGUJMHgxYjUJLyogRFdfQVRf dHlwZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsJLmJ5dGUJMHg5CS8q IERXX0FUX2xvY2F0aW9uICovCi0rCS5ieXRlCTB4MwkvKiBEV19PUF9hZGRyICovCi0rCS5xdWFk CXZ2Ci0rCS51bGViMTI4IDB4MTMJLyogKERJRSAoMHgxYjUpIERXX1RBR192b2xhdGlsZV90eXBl KSAqLwotKwkuNGJ5dGUJMHg3OQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCTAJLyogZW5kIG9m IGNoaWxkcmVuIG9mIERJRSAweGIgKi8KLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJv Z2JpdHMKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51bGViMTI4IDB4MQkvKiAoYWJicmV2IGNvZGUp ICovCi0rCS51bGViMTI4IDB4MTEJLyogKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJ LmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDI1CS8qIChEV19B VF9wcm9kdWNlcikgKi8KLSsJLnVsZWIxMjggMHhlCS8qIChEV19GT1JNX3N0cnApICovCi0rCS51 bGViMTI4IDB4MTMJLyogKERXX0FUX2xhbmd1YWdlKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERX X0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVs ZWIxMjggMHhlCS8qIChEV19GT1JNX3N0cnApICovCi0rCS51bGViMTI4IDB4MWIJLyogKERXX0FU X2NvbXBfZGlyKSAqLwotKwkudWxlYjEyOCAweGUJLyogKERXX0ZPUk1fc3RycCkgKi8KLSsJLnVs ZWIxMjggMHg1NQkvKiAoRFdfQVRfcmFuZ2VzKSAqLwotKwkudWxlYjEyOCAweDYJLyogKERXX0ZP Uk1fZGF0YTQpICovCi0rCS51bGViMTI4IDB4MTEJLyogKERXX0FUX2xvd19wYykgKi8KLSsJLnVs ZWIxMjggMHgxCS8qIChEV19GT1JNX2FkZHIpICovCi0rCS51bGViMTI4IDB4NTIJLyogKERXX0FU X2VudHJ5X3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVs ZWIxMjggMHgxMAkvKiAoRFdfQVRfc3RtdF9saXN0KSAqLwotKwkudWxlYjEyOCAweDYJLyogKERX X0ZPUk1fZGF0YTQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDIJLyog KGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDJlCS8qIChUQUc6IERXX1RBR19zdWJwcm9n cmFtKSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4 MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykg Ki8KLSsJLnVsZWIxMjggMHgzYQkvKiAoRFdfQVRfZGVjbF9maWxlKSAqLwotKwkudWxlYjEyOCAw eGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2IJLyogKERXX0FUX2RlY2xf bGluZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEy OCAweDI3CS8qIChEV19BVF9wcm90b3R5cGVkKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZP Uk1fZmxhZykgKi8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlwZSkgKi8KLSsJLnVsZWIx MjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDIwCS8qIChEV19BVF9p bmxpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIx MjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JN X3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDMJLyogKGFiYnJl diBjb2RlKSAqLwotKwkudWxlYjEyOCAweDUJLyogKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0 ZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgzCS8q IChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwot KwkudWxlYjEyOCAweDNhCS8qIChEV19BVF9kZWNsX2ZpbGUpICovCi0rCS51bGViMTI4IDB4Ygkv KiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzYgkvKiAoRFdfQVRfZGVjbF9saW5l KSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4 NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkg Ki8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NAkvKiAoYWJicmV2IGNvZGUp ICovCi0rCS51bGViMTI4IDB4MzQJLyogKFRBRzogRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYnl0 ZQkwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkg Ki8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJLnVsZWIxMjggMHgz YQkvKiAoRFdfQVRfZGVjbF9maWxlKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0 YTEpICovCi0rCS51bGViMTI4IDB4M2IJLyogKERXX0FUX2RlY2xfbGluZSkgKi8KLSsJLnVsZWIx MjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90 eXBlKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAK LSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDUJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEy OCAweDI0CS8qIChUQUc6IERXX1RBR19iYXNlX3R5cGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hp bGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19BVF9ieXRlX3NpemUpICovCi0rCS51 bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzZQkvKiAoRFdf QVRfZW5jb2RpbmcpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJ LnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZP Uk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg2CS8qIChh YmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgyZQkvKiAoVEFHOiBEV19UQUdfc3VicHJvZ3Jh bSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMx CS8qIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZP Uk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgxMQkvKiAoRFdfQVRfbG93X3BjKSAqLwotKwkudWxl YjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjggMHgxMgkvKiAoRFdfQVRf aGlnaF9wYykgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19GT1JNX2FkZHIpICovCi0rCS51bGVi MTI4IDB4NDAJLyogKERXX0FUX2ZyYW1lX2Jhc2UpICovCi0rCS51bGViMTI4IDB4YQkvKiAoRFdf Rk9STV9ibG9jazEpICovCi0rCS51bGViMTI4IDB4MjExNwkvKiAoRFdfQVRfR05VX2FsbF9jYWxs X3NpdGVzKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZPUk1fZmxhZykgKi8KLSsJLnVsZWIx MjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JN X3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDcJLyogKGFiYnJl diBjb2RlKSAqLwotKwkudWxlYjEyOCAweDUJLyogKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0 ZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgzMQkv KiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JN X3JlZjQpICovCi0rCS51bGViMTI4IDB4MgkvKiAoRFdfQVRfbG9jYXRpb24pICovCi0rCS51bGVi MTI4IDB4YQkvKiAoRFdfRk9STV9ibG9jazEpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwku dWxlYjEyOCAweDgJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDM0CS8qIChUQUc6 IERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmJ5dGUJMAkvKiBEV19jaGlsZHJlbl9ubyAqLwotKwku dWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4IDB4 MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgyCS8qIChEV19BVF9sb2NhdGlv bikgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8KLSsJLmJ5dGUJMAot KwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OQkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4MzQJLyogKFRBRzogRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxk cmVuX25vICovCi0rCS51bGViMTI4IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0X29yaWdpbikgKi8K LSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDFjCS8q IChEV19BVF9jb25zdF92YWx1ZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGEx KSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhhCS8qIChhYmJyZXYgY29k ZSkgKi8KLSsJLnVsZWIxMjggMHg1CS8qIChUQUc6IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKSAq LwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4IDB4MzEJLyogKERX X0FUX2Fic3RyYWN0X29yaWdpbikgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0 KSAqLwotKwkudWxlYjEyOCAweDFjCS8qIChEV19BVF9jb25zdF92YWx1ZSkgKi8KLSsJLnVsZWIx MjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVs ZWIxMjggMHhiCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgyZQkvKiAoVEFHOiBE V19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwot KwkudWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4 IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjggMHgxMQkvKiAoRFdfQVRfbG93 X3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjgg MHgxMgkvKiAoRFdfQVRfaGlnaF9wYykgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19GT1JNX2Fk ZHIpICovCi0rCS51bGViMTI4IDB4NDAJLyogKERXX0FUX2ZyYW1lX2Jhc2UpICovCi0rCS51bGVi MTI4IDB4NgkvKiAoRFdfRk9STV9kYXRhNCkgKi8KLSsJLnVsZWIxMjggMHgyMTE3CS8qIChEV19B VF9HTlVfYWxsX2NhbGxfc2l0ZXMpICovCi0rCS51bGViMTI4IDB4YwkvKiAoRFdfRk9STV9mbGFn KSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0FUX3NpYmxpbmcpICovCi0rCS51bGViMTI4IDB4 MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4 IDB4YwkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4NDEwOQkvKiAoVEFHOiBEV19U QUdfR05VX2NhbGxfc2l0ZSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwot KwkudWxlYjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAo RFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0cmFjdF9vcmln aW4pICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLnVsZWIxMjgg MHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3Jl ZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweGQJLyogKGFiYnJldiBj b2RlKSAqLwotKwkudWxlYjEyOCAweDQxMGEJLyogKFRBRzogRFdfVEFHX0dOVV9jYWxsX3NpdGVf cGFyYW1ldGVyKSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4 IDB4MgkvKiAoRFdfQVRfbG9jYXRpb24pICovCi0rCS51bGViMTI4IDB4YQkvKiAoRFdfRk9STV9i bG9jazEpICovCi0rCS51bGViMTI4IDB4MjExMQkvKiAoRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1 ZSkgKi8KLSsJLnVsZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8KLSsJLmJ5dGUJMAot KwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4ZQkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4NDEwYQkvKiAoVEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZV9wYXJhbWV0ZXIpICovCi0rCS5i eXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgzMQkvKiAoRFdfQVRfYWJz dHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0r CS51bGViMTI4IDB4MjExMQkvKiAoRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZSkgKi8KLSsJLnVs ZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0r CS51bGViMTI4IDB4ZgkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4NDEwOQkvKiAo VEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVu X3llcyAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4 IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDMxCS8qIChEV19BVF9hYnN0 cmFjdF9vcmlnaW4pICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJ LmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MTAJLyogKGFiYnJldiBjb2RlKSAqLwot KwkudWxlYjEyOCAweDJlCS8qIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKSAqLwotKwkuYnl0ZQkw eDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4M2YJLyogKERXX0FUX2V4dGVy bmFsKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZPUk1fZmxhZykgKi8KLSsJLnVsZWIxMjgg MHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweGUJLyogKERXX0ZPUk1fc3RycCkg Ki8KLSsJLnVsZWIxMjggMHgzYQkvKiAoRFdfQVRfZGVjbF9maWxlKSAqLwotKwkudWxlYjEyOCAw eGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2IJLyogKERXX0FUX2RlY2xf bGluZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEy OCAweDI3CS8qIChEV19BVF9wcm90b3R5cGVkKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZP Uk1fZmxhZykgKi8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlwZSkgKi8KLSsJLnVsZWIx MjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19BVF9s b3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEy OCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1f YWRkcikgKi8KLSsJLnVsZWIxMjggMHg0MAkvKiAoRFdfQVRfZnJhbWVfYmFzZSkgKi8KLSsJLnVs ZWIxMjggMHhhCS8qIChEV19GT1JNX2Jsb2NrMSkgKi8KLSsJLnVsZWIxMjggMHgyMTE3CS8qIChE V19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpICovCi0rCS51bGViMTI4IDB4YwkvKiAoRFdfRk9STV9m bGFnKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0FUX3NpYmxpbmcpICovCi0rCS51bGViMTI4 IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGVi MTI4IDB4MTEJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDQxMDkJLyogKFRBRzog RFdfVEFHX0dOVV9jYWxsX3NpdGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8K LSsJLnVsZWIxMjggMHgxMQkvKiAoRFdfQVRfbG93X3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyog KERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjggMHgyMTE1CS8qIChEV19BVF9HTlVfdGFpbF9j YWxsKSAqLwotKwkudWxlYjEyOCAweGMJLyogKERXX0ZPUk1fZmxhZykgKi8KLSsJLnVsZWIxMjgg MHgzMQkvKiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChE V19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDEyCS8q IChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgzNAkvKiAoVEFHOiBEV19UQUdfdmFyaWFi bGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHgzCS8q IChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwot KwkudWxlYjEyOCAweDNhCS8qIChEV19BVF9kZWNsX2ZpbGUpICovCi0rCS51bGViMTI4IDB4Ygkv KiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzYgkvKiAoRFdfQVRfZGVjbF9saW5l KSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4 NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkg Ki8KLSsJLnVsZWIxMjggMHgzZgkvKiAoRFdfQVRfZXh0ZXJuYWwpICovCi0rCS51bGViMTI4IDB4 YwkvKiAoRFdfRk9STV9mbGFnKSAqLwotKwkudWxlYjEyOCAweDIJLyogKERXX0FUX2xvY2F0aW9u KSAqLwotKwkudWxlYjEyOCAweGEJLyogKERXX0ZPUk1fYmxvY2sxKSAqLwotKwkuYnl0ZQkwCi0r CS5ieXRlCTAKLSsJLnVsZWIxMjggMHgxMwkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4MzUJLyogKFRBRzogRFdfVEFHX3ZvbGF0aWxlX3R5cGUpICovCi0rCS5ieXRlCTAJLyogRFdf Y2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlwZSkgKi8KLSsJLnVs ZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJ LmJ5dGUJMAotKwkuc2VjdGlvbgkuZGVidWdfbG9jLCIiLEBwcm9nYml0cwotKy5MZGVidWdfbG9j MDoKLSsuTExTVDA6Ci0rCS5xdWFkCS5MRkI1CS8qIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVz cyAoKi5MTFNUMCkgKi8KLSsJLnF1YWQJLkxDRkkwCS8qIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDApICovCi0rCS4yYnl0ZQkweDIJLyogTG9jYXRpb24gZXhwcmVzc2lvbiBzaXpl ICovCi0rCS5ieXRlCTB4NzcJLyogRFdfT1BfYnJlZzcgKi8KLSsJLnNsZWIxMjggOAotKwkucXVh ZAkuTENGSTAJLyogTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QwKSAqLwotKwku cXVhZAkuTENGSTEJLyogTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMCkgKi8KLSsJ LjJieXRlCTB4MgkvKiBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUgKi8KLSsJLmJ5dGUJMHg3Nwkv KiBEV19PUF9icmVnNyAqLwotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkuTENGSTEJLyogTG9jYXRp b24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QwKSAqLwotKwkucXVhZAkuTEZFNQkvKiBMb2Nh dGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QwKSAqLwotKwkuMmJ5dGUJMHgyCS8qIExvY2F0 aW9uIGV4cHJlc3Npb24gc2l6ZSAqLwotKwkuYnl0ZQkweDc3CS8qIERXX09QX2JyZWc3ICovCi0r CS5zbGViMTI4IDgKLSsJLnF1YWQJMAkvKiBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4g KCouTExTVDApICovCi0rCS5xdWFkCTAJLyogTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAo Ki5MTFNUMCkgKi8KLSsJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCi0rCS40 Ynl0ZQkweDNjCS8qIExlbmd0aCBvZiBBZGRyZXNzIFJhbmdlcyBJbmZvICovCi0rCS4yYnl0ZQkw eDIJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5dGUJLkxkZWJ1Z19pbmZvMAkvKiBPZmZzZXQg b2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvICovCi0rCS5ieXRlCTB4OAkvKiBTaXplIG9mIEFkZHJl c3MgKi8KLSsJLmJ5dGUJMAkvKiBTaXplIG9mIFNlZ21lbnQgRGVzY3JpcHRvciAqLwotKwkuMmJ5 dGUJMAkvKiBQYWQgdG8gMTYgYnl0ZSBib3VuZGFyeSAqLwotKwkuMmJ5dGUJMAotKwkucXVhZAku THRleHQwCS8qIEFkZHJlc3MgKi8KLSsJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAkvKiBMZW5ndGgg Ki8KLSsJLnF1YWQJLkxGQjIJLyogQWRkcmVzcyAqLwotKwkucXVhZAkuTEZFMi0uTEZCMgkvKiBM ZW5ndGggKi8KLSsJLnF1YWQJMAotKwkucXVhZAkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19yYW5nZXMs IiIsQHByb2diaXRzCi0rLkxkZWJ1Z19yYW5nZXMwOgotKwkucXVhZAkuTHRleHQwCS8qIE9mZnNl dCAwICovCi0rCS5xdWFkCS5MZXRleHQwCi0rCS5xdWFkCS5MRkIyCS8qIE9mZnNldCAweDEwICov Ci0rCS5xdWFkCS5MRkUyCi0rCS5xdWFkCTAKLSsJLnF1YWQJMAotKwkuc2VjdGlvbgkuZGVidWdf bGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xpbmUwOgotKwkuc2VjdGlvbgkuZGVidWdfc3Ry LCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJImdkYi5hcmNoL2FtZDY0LWVu dHJ5LXZhbHVlLXBhcmFtLmMiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJtYWluIgotKy5MQVNGMjoK LSsJLnN0cmluZwkiIgotKy5MQVNGMDoKLSsJLnN0cmluZwkiR05VIEMgNC43LjEgMjAxMjA2MTIg KHByZXJlbGVhc2UpIgotKwkuaWRlbnQJIkdDQzogKEdOVSkgNC43LjEgMjAxMjA2MTIgKHByZXJl bGVhc2UpIgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBh cmFtLmMKLUBAIC0wLDAgKzEsNDAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSt2b2xhdGlsZSBpbnQgdnY7Ci0rCi0rc3RhdGljIF9fYXR0cmlidXRlX18oKG5v aW5saW5lKSkgaW50Ci0rZm9vIChpbnQgeCwgaW50IHksIGludCB6KQotK3sKLSsgIGludCBhID0g eCAqIDI7Ci0rICBpbnQgYiA9IHkgKiAyOwotKyAgaW50IGMgPSB6ICogMjsKLSsgIHZ2Kys7IC8q IGJyZWFrLWhlcmUgKi8KLSsgIHJldHVybiB4ICsgejsKLSt9Ci0rCi0rc3RhdGljIF9fYXR0cmli dXRlX18oKG5vaW5saW5lKSkgaW50Ci0rYmFyIChpbnQgeCkKLSt7Ci0rICByZXR1cm4gZm9vICh4 LCAyLCAzKSArIGZvbyAoeCwgNCwgMykgKyBmb28gKHggKyA2LCB4LCAzKSArIHg7Ci0rfQotKwot K2ludAotK21haW4gKHZvaWQpCi0rewotKyAgcmV0dXJuIGJhciAoMTApOwotK30KLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtcGFy YW0uZXhwCi1AQCAtMCwwICsxLDUxIEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSsKLStzZXQgdGVzdGZpbGUgYW1kNjQtZW50cnktdmFsdWUtcGFyYW0KLStzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5TCi0rc2V0IGNzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgb3B0cyB7fQot KwotK2lmIFtpbmZvIGV4aXN0cyBDT01QSUxFXSB7Ci0rICAgICMgbWFrZSBjaGVjayBSVU5URVNU RkxBR1M9ImdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLXBhcmFtLmV4cCBDT01QSUxFPTEiCi0r ICAgIHNldCBzcmNmaWxlICR7Y3NyY2ZpbGV9Ci0rICAgIGxhcHBlbmQgb3B0cyBkZWJ1ZyBvcHRp bWl6ZT0tTzIKLSt9IGVsc2VpZiB7ICFbaXN0YXJnZXQgeDg2XzY0LSotKiBdIHx8ICFbaXNfbHA2 NF90YXJnZXRdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBhbWQ2NC1lbnRyeS12YWx1ZS1w YXJhbS4iCi0rICAgIHJldHVybgotK30KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9ICRvcHRzXSB9IHsKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rc2V0IHNyY2ZpbGUgJGNzcmNmaWxlCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgImJyZWFrLWhlcmUiXQotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVh ay1oZXJlIiAiLiogYnJlYWstaGVyZSAuKiIKLStnZGJfdGVzdCAicCB5IiAiID0gMiIKLStnZGJf dGVzdCAicCBiIiAiID0gNCIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWst aGVyZSIgIi4qIGJyZWFrLWhlcmUgLioiCi0rZ2RiX3Rlc3QgInAgeSIgIiA9IDQiCi0rZ2RiX3Rl c3QgInAgYiIgIiA9IDgiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhl cmUiICIuKiBicmVhay1oZXJlIC4qIgotK2dkYl90ZXN0ICJwIHkiICIgPSAxMCIKLStnZGJfdGVz dCAicCBiIiAiID0gMjAiCi0KCmRpZmYgLS1naXQgYS9nZGItcmhlbDUtZ2NjNDQucGF0Y2ggYi9n ZGItcmhlbDUtZ2NjNDQucGF0Y2gKaW5kZXggY2NiYjMwYS4uMjQxNzk1YSAxMDA2NDQKLS0tIGEv Z2RiLXJoZWw1LWdjYzQ0LnBhdGNoCisrKyBiL2dkYi1yaGVsNS1nY2M0NC5wYXRjaApAQCAtMSwx MCArMSwxMCBAQAogU29tZSBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBvbiBSSEVMLTUuNCsg b25seSB3aXRoIGdjYzQ0IGFuZCBnZm9ydHJhbjQ0IGFzCiB0aGUgZGVmYXVsdCBnY2MgYW5kIGdm b3J0cmFuIGJpbmFyaWVzIGFyZSBmcm9tIGdjYy00LjEuCiAKLUluZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAky MDExLTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ1 MzI3ODQ0ICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIwMTIt MDctMDMgMTc6NTA6NTcuOTk5MjA3NTQwICswMjAwCiBAQCAtMTYsNyArMTYsMjUgQEAKICBzZXQg dGVzdGZpbGUgdmxhCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwpAQCAtMzIsMTEgKzMyLDEx IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCiAgICAg IHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJw LmV4cAkyMDExLTEyLTE5IDAyOjIxOjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTEtMTIt MTkgMDI6Mjc6MTYuNzQ1MzI3ODQ0ICswMTAwCi1AQCAtMzQsOSArMzQsMjkgQEAgaWYgW2dldF9j b21waWxlcl9pbmZvICR7YmluZmlsZV9saWJ9XSB7CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEyLTA3LTAzIDE3 OjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDctMDMgMTc6NTA6NTguMDAwMjA3 NTM5ICswMjAwCitAQCAtMzQsOSArMzQsMjkgQEAgaWYgW2dldF9jb21waWxlcl9pbmZvXSB7CiAg ICAgIHJldHVybiAtMQogIH0KICAKQEAgLTY3LDEwICs2NywxMCBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKICAgICAg cmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9j b21tb24tYmxvY2suZXhwCTIwMTEtMTItMTkgMDE6MzE6MjQuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9j ay5leHAJMjAxMS0xMi0xOSAwMjoyNzoxNi43NDYzMjc4NDAgKzAxMDAKKy0tLSBnZGItNy40LjUw LjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhw CTIwMTItMDctMDMgMTc6MzY6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMi0wNy0w MyAxNzo1MDo1OC4wMDEyMDc1MzcgKzAyMDAKIEBAIC0yMCw3ICsyMCwyNSBAQCBzZXQgdGVzdGZp bGUgImNvbW1vbi1ibG9jayIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC05OCwxMCArOTgsMTAgQEAg SW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21t b24tYmxvY2suZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0i CiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHdhcmYtc3RyaWRlLmV4cAkyMDExLTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ2MzI3ODQwICswMTAwCistLS0gZ2RiLTcu NC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRl LmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTIt MDctMDMgMTc6NTA6NTguMDAyMjA3NTM1ICswMjAwCiBAQCAtMjcsNyArMjcsMjUgQEAKICBzZXQg dGVzdGZpbGUgZHdhcmYtc3RyaWRlCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCkBAIC0x MjksMTAgKzEyOSwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMTItMTggMjM6MzU6MjMu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ2MzI3ODQwICswMTAw CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy5leHAJMjAxMi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAJMjAx Mi0wNy0wMyAxNzo1MDo1OC4wMDIyMDc1MzUgKzAyMDAKIEBAIC0yNSw3ICsyNSwyNSBAQCBzZXQg dGVzdGZpbGUgImR5bmFtaWMiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJp bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMTYwLDE1ICsxNjAsMTUg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k eW5hbWljLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9Igog ICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAxMS0xMS0zMCAwOToyNDozMi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGli cmFyeS1tb2R1bGUuZXhwCTIwMTEtMTItMTkgMDI6MzE6MTAuOTkxMzE4MDI2ICswMTAwCi1AQCAt MjUsMTYgKzI1LDM0IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyBub3QtdXNlZF0geworLS0tIGdk Yi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnkt bW9kdWxlLmV4cAkyMDEyLTA2LTI1IDIyOjUxOjM1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5l eHAJMjAxMi0wNy0wMyAxNzo1Mjo1Ny42NjYwNjI5ODEgKzAyMDAKK0BAIC0yMywxNiArMjMsMzQg QEAgaWYgW2dldF9jb21waWxlcl9pbmZvXSB7CiAgICAgcmV0dXJuIC0xCiAgfQogIAotLWlmICB7 IFtnZGJfY29tcGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAk b2JqZGlyLyRzdWJkaXIvJGxpYmZpbGUge2RlYnVnIGY5MH1dICE9ICIiIH0geworLWlmICB7IFtn ZGJfY29tcGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkbGli ZmlsZSB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7CiAtICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21w aWxlICR7c3JjbGliZmlsZX0iCiAtICAgIHJldHVybiAtMQogKyMgVGVtcG9yYXJpbHkgcHJvdmlk ZSBmOTBjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5k LgpAQCAtMTg2LDkgKzE4Niw5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiAgIyBqdXN0IGZvciB0aGUgbGlu a2luZyBwaGFzZSAoYW5kIG5vdCB0aGUgc291cmNlIGNvbXBpbGF0aW9uIHBoYXNlKS4gIEFuZCBh bnkKICAjIHdhcm5pbmdzIG9uIGlnbm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhlIHByb2Nlc3MuCiAg Ci0taWYgIHsgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRz dWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBmOTAgc2hsaWI9JG9iamRpci8k c3ViZGlyLyRsaWJmaWxlXV0gIT0gIiIgfSB7Ci0rc2V0IGVycjEgW2dkYl9jb21waWxlX3NobGli ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbGliZmlsZX0iICRvYmpkaXIvJHN1YmRpci8kbGli ZmlsZSB7ZGVidWcgZjkwfV0KLStzZXQgZXJyMiBbZ2RiX2NvbXBpbGUgJHNyY2Rpci8kc3ViZGly LyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIFtsaXN0IGRlYnVn IGY5MCBzaGxpYj0kb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdXQorLWlmICB7IFtnZGJfY29tcGls ZSAkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJGJpbmZpbGUgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1 ZyBmOTAgc2hsaWI9JGxpYmZpbGVdXSAhPSAiIiB9IHsKKytzZXQgZXJyMSBbZ2RiX2NvbXBpbGVf c2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJGxpYmZpbGUge2RlYnVn IGY5MH1dCisrc2V0IGVycjIgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAk YmluZmlsZSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGY5MCBzaGxpYj0kbGliZmlsZV1dCiArCiAr dW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29t cGlsZXJdIHsKQEAgLTIwMywxMyArMjAzLDEzIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiAgICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVybiAtMQogIH0KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxl LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9tb2R1bGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDExLTA2LTMwIDAwOjA1OjE2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9tb2R1bGUuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ3MzI3ODM2ICswMTAwCi1A QCAtMTYsNyArMTYsMjUgQEAKLSBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKLSBzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5mOTAKKy0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTItMDYtMjUgMjI6NTE6MzUuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21v ZHVsZS5leHAJMjAxMi0wNy0wMyAxNzo1Mzo1Ni40NjQ5OTIwODYgKzAyMDAKK0BAIC0xNSw3ICsx NSwyNSBAQAorIAorIHN0YW5kYXJkX3Rlc3RmaWxlIC5mOTAKICAKIC1pZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmOTB9XSB9 IHsKICsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcg dGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KQEAgLTIzNCwxMCArMjM0LDEwIEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAog ICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNzAz L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5l eHAJMjAxMS0xMi0xOCAyMzozNToyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIw MTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDExLTEyLTE5IDAy OjI3OjE2Ljc0NzMyNzgzNiArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMi0wNy0wMyAxNzozMDowNy4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3RyaW5nLmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU4LjAwNTIwNzUzMiArMDIwMAogQEAg LTIzLDcgKzIzLDI1IEBAIHNldCB0ZXN0ZmlsZSAic3RyaW5nIgogIHNldCBzcmNmaWxlICR7dGVz dGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K QEAgLTI2NSwxMCArMjY1LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMS0xMi0xOSAwMTozMToyNC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21w LXN0ZXAuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ4MzI3ODMyICswMTAwCistLS0gZ2RiLTcu NC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhw CTIwMTItMDctMDMgMTc6MzY6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEyLTA3LTAzIDE3 OjUwOjU4LjAwNjIwNzUzMSArMDIwMAogQEAgLTE1LDcgKzE1LDI2IEBACiAgCiAgc2V0IHRlc3Rm aWxlICJvbXAtc3RlcCIKQEAgLTI5NywxNiArMjk3LDE1IEBAIEluZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiAgICAgIHJldHVy biAtMQogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZl ZC10eXBlLmV4cAkyMDExLTA2LTI5IDE5OjUwOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhw CTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ4MzI3ODMyICswMTAwCi1AQCAtMjgsOCArMjgsMjYgQEAg c2V0IHRlc3RmaWxlICJkZXJpdmVkLXR5cGUiCi0gc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkw Ci0gc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorLS0tIGdkYi03 LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlw ZS5leHAJMjAxMi0wNi0yNSAyMjo1MTozNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDEy LTA3LTAzIDE3OjU1OjQ2LjU4Mzg1ODg0OSArMDIwMAorQEAgLTIyLDcgKzIyLDI1IEBAIGlmIHsg W3NraXBfZm9ydHJhbl90ZXN0c10gfSB7IHJldHVybiAtMQorIAorIHN0YW5kYXJkX3Rlc3RmaWxl IC5mOTAKICAKLS1pZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICIke2JpbmZpbGV9IiBcCi0tCSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XSAhPSAiIn0gewor LWlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmls ZSB7ZGVidWcgZjkwfV19IHsKICsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjkwY29tcGlsZXI9Z2Zv cnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9hcmQg W3RhcmdldF9pbmZvIG5hbWVdCkBAIC0zMTgsMjggKzMxNywyNiBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKICt9 CiArc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgZ2ZvcnRyYW40NAogKwotK3NldCBlcnIgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBc Ci0rCSBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XQorK3NldCBlcnIgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY5MH1dCiArCiArdW5z ZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29tcGls ZXJdIHsKICsgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9sZF9mOTBjb21waWxlcgog K30KICsKLStpZiB7ICRlcnIgIT0gIiIgfSB7CisraWYgJGVyciB7CiAgICAgIHJldHVybiAtMQog IH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3ViYXJyYXkuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDExLTA2 LTI5IDE5OjUwOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAxMS0xMi0xOSAwMjoyNzoxNi43 NDgzMjc4MzIgKzAxMDAKLUBAIC0yOCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgInN1YmFycmF5 IgotIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmYKLSBzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9CistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTItMDYtMjUgMjI6NTE6MzUuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3N1YmFycmF5LmV4cAkyMDEyLTA3LTAzIDE3OjU2OjIwLjQ1NDgxODE5OCArMDIwMAorQEAg LTIyLDcgKzIyLDI1IEBAIGlmIHsgW3NraXBfZm9ydHJhbl90ZXN0c10gfSB7IHJldHVybiAtMQor IAorIHN0YW5kYXJkX3Rlc3RmaWxlIC5mCiAgCi0taWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAotLQlleGVjdXRhYmxlIHtkZWJ1 ZyBmOTB9XSAhPSAiIn0geworLWlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhw ICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjkwfV19IHsKICsjIFRlbXBvcmFyaWx5IHByb3Zp ZGUgZjkwY29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3Vu ZC4KICsKICtzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCkBAIC0zNTEsMjIgKzM0OCwyMSBA QCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1 YmFycmF5LmV4cAogK30KICtzZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlciBnZm9ydHJhbjQ0CiAr Ci0rc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIg IiR7YmluZmlsZX0iIFwKLSsJZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0KKytzZXQgZXJyIFtwcmVw YXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBm OTB9XQogKwogK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKICtpZiBbaW5mbyBleGlzdHMg b2xkX2Y5MGNvbXBpbGVyXSB7CiArICAgIHNldF9ib2FyZF9pbmZvIGY5MGNvbXBpbGVyICRvbGRf ZjkwY29tcGlsZXIKICt9CiArCi0raWYgeyAkZXJyICE9ICIiIH0geworK2lmICRlcnIgewogICAg ICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3Rscy1zZXBkZWJ1Zy5leHAJMjAxMS0xMi0xOSAwMDoyODoxMS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRl YnVnLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0ODMyNzgzMiArMDEwMAorLS0tIGdkYi03LjQu NTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5l eHAJMjAxMi0wNy0wMyAxNzozMjowNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEyLTA3 LTAzIDE3OjUwOjU4LjAwNzIwNzUzMCArMDIwMAogQEAgLTMyLDcgKzMyLDI1IEBAIHNldCBiaW5z aGFyZWRkZWJ1Z2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGkKICAKICAjIEZJWE1FOiBnY2MgZGVwZW5k ZW5jeSAoLVdsLC1zb25hbWUpLgpAQCAtMzk0LDEwICszOTAsMTAgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCiAg ICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgbGlicmFyeSIKICAgICAgcmV0dXJu IC0xCiAgfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJl bGluay1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0 ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTEtMTIt MTkgMDI6MjE6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv dGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ5 MzI3ODI4ICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUv bGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMi0wNy0wMyAxNzo0NDo0NS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3Vw cG9ydC5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDgyMDc1MjkgKzAyMDAKIEBAIC0xMTksOSAr MTE5LDMxIEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0gewogIHByb2MgYnVpbGRfZXhlY3V0 YWJsZV9vd25fbGlicyB7dGVzdG5hbWUgZXhlY3V0YWJsZSBzb3VyY2VzIG9wdGlvbnMge2ludGVy cCAiIn0ge2RpciAiIn19IHsKICAgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIKCmRpZmYgLS1naXQg YS9nZGItdXBzdHJlYW0ucGF0Y2ggYi9nZGItdXBzdHJlYW0ucGF0Y2gKaW5kZXggNjRlZTcyZS4u ZTY5ZGUyOSAxMDA2NDQKLS0tIGEvZ2RiLXVwc3RyZWFtLnBhdGNoCisrKyBiL2dkYi11cHN0cmVh bS5wYXRjaApAQCAtMSwyOTMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTItMDYvbXNnMDAwNjUuaHRtbAotU3ViamVjdDogW2NvbW1pdCAxLzJdIHRlc3Rz dWl0ZTogY29kZV9lbGltLmV4cDogdW5pcXVlIG5hbWVzCi0KLUhpLAotCi10aGlzIGlzIGp1c3Qg cmVtb3ZhbCBvZiBub24tdW5pcXVlIHRlc3QgbmFtZXMgYW5kIG9uZSBzbWFsbCBzaW1wbGlmaWNh dGlvbi4KLQotQ2hlY2tlZCBpbi4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA2L21zZzAwMDExLmh0bWwKLQotIyMjIHNyYy9nZGIv dGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA1LzI4IDIwOjM3OjI5CTEuMzIwOQotIyMjIHNyYy9n ZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA2LzAzIDE3OjA2OjA0CTEuMzIxMAotIyMgLTEs MyArMSwxNiBAQAotKzIwMTItMDYtMDMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuYmFzZS9jb2RlX2VsaW0uZXhwIChhZGQtc3ltYm9sLWZp bGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwKToKLSsJU2ltcGxpZnkgaXQgdG8gLi4uCi0rCShzeW1i b2wtZmlsZSAke3Rlc3RmaWxlMX0pOiAuLi4gaGVyZS4KLSsJKHRlc3QgZWxpbWluYXRlZCB2YXIg bXlfZ2xvYmFsX3N5bWJvbCkKLSsJKHRlc3QgZWxpbWluYXRlZCB2YXIgbXlfc3RhdGljX3N5bWJv bCkKLSsJKHRlc3QgZWxpbWluYXRlZCB2YXIgbXlfZ2xvYmFsX2Z1bmMsIGdldCBhZGRyZXNzIG9m IG1haW4pOiBXcmFwIHRoZW0gdG8KLSsJJ3NpbmdsZSBwc3ltdGFicycgYW5kICdzaW5nbGUgc3lt dGFicycKLSsJKGdldCBhZGRyZXNzIG9mIG15X2dsb2JhbF9zeW1ib2wsIGdldCBhZGRyZXNzIG9m IG15X3N0YXRpY19zeW1ib2wpCi0rCShnZXQgYWRkcmVzcyBvZiBteV9nbG9iYWxfZnVuYywgZ2V0 IGFkZHJlc3Mgb2YgbWFpbik6IFdyYXAgdGhlbSB0bwotKwknb3JkZXIxJyBhbmQgJ29yZGVyMicu Ci0rCi0gMjAxMi0wNS0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotIAotIAkqIGdkYi5zZXJ2ZXIvc29saWItbGlzdC1saWIuYzogTmV3IGZpbGUuCi0tLS0g c3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29kZV9lbGltLmV4cAkyMDEyLzAxLzE2IDE2OjIx OjQ0CTEuNAotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvZGVfZWxpbS5leHAJMjAx Mi8wNi8wMyAxNzowNjowNAkxLjUKLUBAIC05NSwxNiArOTUsMTYgQEAKLSBnZGJfZXhpdAotIGdk Yl9zdGFydAotIAotLWdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlMX0gMHgxMDAw MDAiIFwKLStnZGJfdGVzdCAic3ltYm9sLWZpbGUgJHtiaW5maWxlMX0iIFwKLSAJIlJlYWRpbmcg c3ltYm9scyBmcm9tIC4qJHt0ZXN0ZmlsZTF9XFwuXFwuXFwuZG9uZVxcLih8XHJcblVzaW5nIGhv c3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgLipsaWJ0aHJlYWRfZGIuc28uKlxcLikiIFwKLS0JImFk ZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDAiIFwKLS0JImFkZCBzeW1ib2wgdGFi bGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdFxbIFx0XHJcblxdK1wudGV4dF9hZGRy ID0gMHgxMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCi0tCSJ5IgotKwkic3ltYm9sLWZp bGUgJHt0ZXN0ZmlsZTF9IgotIAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlfZ2xvYmFsX3N5bWJv bAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlfc3RhdGljX3N5bWJvbAotLXRlc3RfZWxpbWluYXRl ZF92YXIgbXlfZ2xvYmFsX2Z1bmMKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCi0rd2l0aF90 ZXN0X3ByZWZpeCAic2luZ2xlIHBzeW10YWJzIiB7Ci0rICAgIHRlc3RfZWxpbWluYXRlZF92YXIg bXlfZ2xvYmFsX3N5bWJvbAotKyAgICB0ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X3N0YXRpY19zeW1i b2wKLSsgICAgdGVzdF9lbGltaW5hdGVkX3ZhciBteV9nbG9iYWxfZnVuYwotKyAgICBub3RfbnVs bF92YXJfYWRkcmVzcyBtYWluCi0rfQotIAotICMgU2FtZSB0aGluZyBmb3Igc3ltdGFicwotIAot QEAgLTExNSwxMCArMTE1LDEyIEBACi0gZ2RiX3N0YXJ0Ci0gc2V0IEdEQkZMQUdTICRzYXZlZF9n ZGJmbGFncwotIAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlfZ2xvYmFsX3N5bWJvbAotLXRlc3Rf ZWxpbWluYXRlZF92YXIgbXlfc3RhdGljX3N5bWJvbAotLXRlc3RfZWxpbWluYXRlZF92YXIgbXlf Z2xvYmFsX2Z1bmMKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCi0rd2l0aF90ZXN0X3ByZWZp eCAic2luZ2xlIHN5bXRhYnMiIHsKLSsgICAgdGVzdF9lbGltaW5hdGVkX3ZhciBteV9nbG9iYWxf c3ltYm9sCi0rICAgIHRlc3RfZWxpbWluYXRlZF92YXIgbXlfc3RhdGljX3N5bWJvbAotKyAgICB0 ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9mdW5jCi0rICAgIG5vdF9udWxsX3Zhcl9hZGRy ZXNzIG1haW4KLSt9Ci0gCi0gIyBiaW5maWxlMiBjb250YWlucyB0aGUgc3ltYm9scyB0aGF0IGhh dmUgYmVlbiBlbGltaW5hdGVkIGluIGJpbmZpbGUxLiBDaGVjawotICMgdGhlIGVsaW1pbmF0ZWQg c3ltYm9scyBkb2VzIG5vdCBoaWRlIHRoZXNlIHZhbGlkIG9uZXMuCi1AQCAtMTM4LDEwICsxNDAs MTIgQEAKLSAJImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMn1cIiBh dFxbIFx0XHJcblxdK1wudGV4dF9hZGRyID0gMHgyMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkg IiBcCi0gCSJ5IgotIAotLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9zeW1ib2wKLS1u b3RfbnVsbF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCi0tbm90X251bGxfdmFyX2FkZHJl c3MgbXlfZ2xvYmFsX2Z1bmMKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCi0rd2l0aF90ZXN0 X3ByZWZpeCAib3JkZXIxIiB7Ci0rICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9z eW1ib2wKLSsgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5bWJvbAotKyAgICBu b3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYwotKyAgICBub3RfbnVsbF92YXJfYWRk cmVzcyBtYWluCi0rfQotIAotICMgU2FtZSB0aGluZywgYnV0IGxvYWRpbmcgYmluZmlsZTIgYmVm b3JlIGJpbmZpbGUxLgotIAotQEAgLTE2MCw5ICsxNjQsOSBAQAotIAkiYWRkIHN5bWJvbCB0YWJs ZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0XFsgXHRcclxuXF0rXC50ZXh0X2FkZHIg PSAweDEwMDAwMFxbXHJcblxdK1xcKHkgb3IgblxcKSAiIFwKLSAJInkiCi0gCi0tbm90X251bGxf dmFyX2FkZHJlc3MgbXlfZ2xvYmFsX3N5bWJvbAotLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X3N0 YXRpY19zeW1ib2wKLS1ub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYwotLW5vdF9u dWxsX3Zhcl9hZGRyZXNzIG1haW4KLS0KLS0KLSt3aXRoX3Rlc3RfcHJlZml4ICJvcmRlcjIiIHsK LSsgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX3N5bWJvbAotKyAgICBub3RfbnVs bF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCi0rICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNz IG15X2dsb2JhbF9mdW5jCi0rICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG1haW4KLSt9Ci0KLQot Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNi9tc2cwMDA2Ni5o dG1sCi1TdWJqZWN0OiBbY29tbWl0IDIvMl0gdGVzdHN1aXRlOiBjb2RlX2VsaW0uZXhwOiBGaXgg ZmFsc2UgRkFJTAotCi1IaSwKLQotd2l0aCBGZWRvcmEgMTggeDg2XzY0IChSYXdoaWRlKSB0aGVy ZSBpcyBhIGZhbHNlIEZBSWwgc2luY2U6Ci0yMTY3OTMxY2Y3MGY5MTIwNmVmYjhiMDFlODQ4YTU1 ZDgyYTM0N2NlIGlzIHRoZSBmaXJzdCBiYWQgY29tbWl0Ci1BdXRob3I6IFRvbSBUcm9tZXkgPHRy b21leUByZWRoYXQuY29tPgotRGF0ZTogICBGcmkgTWF5IDE4IDE1OjMxOjM5IDIwMTIgKzAwMDAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTM5MDcKLQot IHByaW50ICZteV9nbG9iYWxfc3ltYm9sCi0tJDEgPSAoaW50ICopIDB4ODA0YTAwNAotLShnZGIp IFBBU1M6IGdkYi5iYXNlL2NvZGVfZWxpbS5leHA6IGdldCBhZGRyZXNzIG9mIG15X2dsb2JhbF9z eW1ib2wKLSskMSA9IChpbnQgKikgMHg4MDRhMDA0IDxjb21wbGV0ZWQuNTczMj4KLSsoZ2RiKSBG QUlMOiBnZGIuYmFzZS9jb2RlX2VsaW0uZXhwOiBnZXQgYWRkcmVzcyBvZiBteV9nbG9iYWxfc3lt Ym9sCi0KLU5vdGhpbmcgcmVhbGx5IGNoYW5nZWQsIGp1c3QgR0RCIG5vdyBwcmludHMgPGNvbXBs ZXRlZC41NzMyPiBhbmQgdGhlIHRlc3RjYXNlCi1leHBlY3RzIGVpdGhlciBub25lIG9yIDxteV9n bG9iYWxfc3ltYm9sPiBzdWZmaXguCi0KLVRoaXMgaXMgYmVjYXVzZSB0aGUgdHdvIHN5bWJvbCBm aWxlcyAodGhlaXIgc2VjdGlvbnMgLmRhdGEvLmJzcykgaGF2ZQotb3ZlcmxhcHBlZCBzbyBHREIg Y2hvb3NlcyByYW5kb21seSB3aGljaCBzeW1ib2wgdG8gZGlzcGxheS4gIEFuZCBzaW5jZQotRmVk b3JhIDE4IEdDQyBwdXRzIHRoZXJlIHRoYXQgImNvbXBsZXRlZC41NzMyIiBzeW1ib2wuCi0KLVRo aXMgbWF5IGJlIGJlY2F1c2UgYWRkLXN5bWJvbC1maWxlIEZJTEUgQUREUiByZWxvY2F0ZXMgdG8g QUREUiBvbiB0aGUgLnRleHQKLXNlY3Rpb24gYW5kIGxlYXZlcyBvdGhlciBzZWN0aW9ucyBhdCB0 aGVpciBvcmlnaW5hbCBwbGFjZSwgd2hpY2ggaXMgSU1PIGEgYml0Ci11bmV4cGVjdGVkOyBpdCBp cyBhIEZBUSBwZW9wbGUgZXhwZWN0IG1vcmUgQUREUiB0byBiZSByZWxvY2F0aW9uIGRpc3BsYWNl bWVudAotKGFuZCBub3QgcmVsYXRpdmUgdG8gLnRleHQgYW5kIG5vdCBsaW1pdGVkIHRvIC50ZXh0 KS4gIEJ1dCB0aGlzIGlzIHJlYWxseQotb3V0c2lkZSBvZiB0aGUgc2NvcGUgb2YgdGhpcyB0ZXN0 Y2FzZSBmYWxzZSBGQUlMLgotCi1DaGVja2VkIGluLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDYvbXNnMDAwMTIuaHRtbAotCi0j IyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTIvMDYvMDMgMTc6MDY6MDQJMS4zMjEw Ci0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTIvMDYvMDMgMTc6MTA6MjgJMS4z MjExCi0jIyAtMTEsNiArMTEsMTYgQEAKLSAJKGdldCBhZGRyZXNzIG9mIG15X2dsb2JhbF9mdW5j LCBnZXQgYWRkcmVzcyBvZiBtYWluKTogV3JhcCB0aGVtIHRvCi0gCSdvcmRlcjEnIGFuZCAnb3Jk ZXIyJy4KLSAKLSsJKiBnZGIuYmFzZS9jb2RlX2VsaW0uZXhwCi0rCShhZGQtc3ltYm9sLWZpbGUg JHt0ZXN0ZmlsZTF9IDB4MTAwMDAwKQotKwkoYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUyfSAw eDIwMDAwMCk6IFdyYXAgdGhlbSB0byAnb3JkZXIxJyBhbmQKLSsJJ29yZGVyMicuCi0rCShvcmRl cjE6IGFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDApCi0rCShvcmRlcjE6IGFk ZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDApCi0rCShvcmRlcjI6IGFkZC1zeW1i b2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDApCi0rCShvcmRlcjI6IGFkZC1zeW1ib2wtZmls ZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDApOiBBZGQgLXMgLmRhdGEgYW5kIC1zCi0rCS5ic3MgYXMg YXBwcm9wcmlhdGUuCi0rCi0gMjAxMi0wNS0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotIAotIAkqIGdkYi5zZXJ2ZXIvc29saWItbGlzdC1saWIuYzogTmV3 IGZpbGUuCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29kZV9lbGltLmV4cAkyMDEy LzA2LzAzIDE3OjA2OjA0CTEuNQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvZGVf ZWxpbS5leHAJMjAxMi8wNi8wMyAxNzoxMDoyOAkxLjYKLUBAIC0xMjgsMTkgKzEyOCwxOSBAQAot IGdkYl9leGl0Ci0gZ2RiX3N0YXJ0Ci0gCi0tZ2RiX3Rlc3QgImFkZC1zeW1ib2wtZmlsZSAke2Jp bmZpbGUxfSAweDEwMDAwMCIgXAotLQkiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxl MX1cXC5cXC5cXC5kb25lXFwuIiBcCi0tCSJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4 MTAwMDAwIiBcCi0tCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTF9 XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4MTAwMDAwXFtcclxuXF0rXFwoeSBvciBu XFwpICIgXAotLQkieSIKLS0KLS1nZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTJ9 IDB4MjAwMDAwIiBcCi0tCSJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUyfVxcLlxc LlxcLmRvbmVcXC4iIFwKLS0JImFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDAi IFwKLS0JImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMn1cIiBhdFxb IFx0XHJcblxdK1wudGV4dF9hZGRyID0gMHgyMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBc Ci0tCSJ5IgotLQotIHdpdGhfdGVzdF9wcmVmaXggIm9yZGVyMSIgewotKyAgICBnZGJfdGVzdCAi YWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTF9IDB4MTAwMDAwIC1zIC5ic3MgMHgxMjAwMDAiIFwK LSsJICAgICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxcLlxcLlxcLmRvbmVc XC4iIFwKLSsJICAgICJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwIiBcCi0r CSAgICAiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0Lipc XCh5IG9yIG5cXCkgIiBcCi0rCSAgICAieSIKLSsKLSsgICAgZ2RiX3Rlc3QgImFkZC1zeW1ib2wt ZmlsZSAke2JpbmZpbGUyfSAweDIwMDAwMCAtcyAuZGF0YSAweDIxMDAwMCAtcyAuYnNzIDB4MjIw MDAwIiBcCi0rCSAgICAiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxlMn1cXC5cXC5c XC5kb25lXFwuIiBcCi0rCSAgICAiYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUyfSAweDIwMDAw MCIgXAotKwkgICAgImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMn1c IiBhdC4qXFwoeSBvciBuXFwpICIgXAotKwkgICAgInkiCi0rCi0gICAgIG5vdF9udWxsX3Zhcl9h ZGRyZXNzIG15X2dsb2JhbF9zeW1ib2wKLSAgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3Rh dGljX3N5bWJvbAotICAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYwotQEAg LTE1MiwxOSArMTUyLDE5IEBACi0gZ2RiX2V4aXQKLSBnZGJfc3RhcnQKLSAKLS1nZGJfdGVzdCAi YWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTJ9IDB4MjAwMDAwIiBcCi0tCSJSZWFkaW5nIHN5bWJv bHMgZnJvbSAuKiR7dGVzdGZpbGUyfVxcLlxcLlxcLmRvbmVcXC4iIFwKLS0JImFkZC1zeW1ib2wt ZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDAiIFwKLS0JImFkZCBzeW1ib2wgdGFibGUgZnJvbSBm aWxlIFwiLioke3Rlc3RmaWxlMn1cIiBhdFxbIFx0XHJcblxdK1wudGV4dF9hZGRyID0gMHgyMDAw MDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCi0tCSJ5IgotLQotLWdkYl90ZXN0ICJhZGQtc3lt Ym9sLWZpbGUgJHtiaW5maWxlMX0gMHgxMDAwMDAiIFwKLS0JIlJlYWRpbmcgc3ltYm9scyBmcm9t IC4qJHt0ZXN0ZmlsZTF9XFwuXFwuXFwuZG9uZVxcLiIgXAotLQkiYWRkLXN5bWJvbC1maWxlICR7 dGVzdGZpbGUxfSAweDEwMDAwMCIgXAotLQkiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUgXCIu KiR7dGVzdGZpbGUxfVwiIGF0XFsgXHRcclxuXF0rXC50ZXh0X2FkZHIgPSAweDEwMDAwMFxbXHJc blxdK1xcKHkgb3IgblxcKSAiIFwKLS0JInkiCi0tCi0gd2l0aF90ZXN0X3ByZWZpeCAib3JkZXIy IiB7Ci0rICAgIGdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlMn0gMHgyMDAwMDAg LXMgLmRhdGEgMHgyMTAwMDAgLXMgLmJzcyAweDIyMDAwMCIgXAotKwkgICAgIlJlYWRpbmcgc3lt Ym9scyBmcm9tIC4qJHt0ZXN0ZmlsZTJ9XFwuXFwuXFwuZG9uZVxcLiIgXAotKwkgICAgImFkZC1z eW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDAiIFwKLSsJICAgICJhZGQgc3ltYm9sIHRh YmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXQuKlxcKHkgb3IgblxcKSAiIFwKLSsJ ICAgICJ5IgotKwotKyAgICBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTF9IDB4 MTAwMDAwIC1zIC5ic3MgMHgxMjAwMDAiIFwKLSsJICAgICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAu KiR7dGVzdGZpbGUxfVxcLlxcLlxcLmRvbmVcXC4iIFwKLSsJICAgICJhZGQtc3ltYm9sLWZpbGUg JHt0ZXN0ZmlsZTF9IDB4MTAwMDAwIiBcCi0rCSAgICAiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZp bGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0LipcXCh5IG9yIG5cXCkgIiBcCi0rCSAgICAieSIKLSsK LSAgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX3N5bWJvbAotICAgICBub3RfbnVs bF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCi0gICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNz IG15X2dsb2JhbF9mdW5jCi0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTA2L21zZzAwMDQ3Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDYvMDYg MDY6MDQ6NDIJMS4xNDMzMAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDYvMDYgMTY6NTc6 MzQJMS4xNDMzMQotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wNi0wNiAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGNvbmZpZ3VyZS5hYzogTW92ZSBk ZXZlbG9wbWVudD10cnVlIGJlbG93IEFDX0lOSVQuCi0rCSogY29uZmlndXJlOiBSZWdlbmVyYXRl LgotKwotIDIwMTItMDYtMDUgIFN0YW4gU2hlYnMgIDxzdGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0g Ci0gCSogbWkvbWktaW50ZXJwLmMgKG1pX2ludGVycHJldGVyX2luaXQpOiBTZXQgcmF3X3N0ZG91 dCBmcm9tCi0tLS0gc3JjL2dkYi9jb25maWd1cmUJMjAxMi8wNi8wMSAxODoyMDoxOAkxLjM2Ngot KysrIHNyYy9nZGIvY29uZmlndXJlCTIwMTIvMDYvMDYgMTY6NTc6MzYJMS4zNjcKLUBAIC0yNjgz LDYgKzI2ODMsMTEgQEAKLSAKLSAKLSAKLSsjIFByb3ZpZGUgbW9yZSB0aG9yb3VnaCB0ZXN0aW5n IGJ5IC1sbWNoZWNrLgotKyMgU2V0IGl0IHRvICd0cnVlJyBmb3IgZGV2ZWxvcG1lbnQgc25hcHNo b3RzLCAnZmFsc2UnIGZvciByZWxlYXNlcyBvcgotKyMgcHJlLXJlbGVhc2VzLgotK2RldmVsb3Bt ZW50PXRydWUKLSsKLSBhY19leHQ9YwotIGFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0gYWNfY29t cGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotLS0t IHNyYy9nZGIvY29uZmlndXJlLmFjCTIwMTIvMDYvMDEgMTg6MjA6MTgJMS4xNzcKLSsrKyBzcmMv Z2RiL2NvbmZpZ3VyZS5hYwkyMDEyLzA2LzA2IDE2OjU3OjM4CTEuMTc4Ci1AQCAtMTgsMTYgKzE4 LDE2IEBACi0gCi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVj ZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gCi0tZG5sIFByb3ZpZGUgbW9yZSB0aG9yb3VnaCB0ZXN0 aW5nIGJ5IC1sbWNoZWNrLgotLWRubCBTZXQgaXQgdG8gJ3RydWUnIGZvciBkZXZlbG9wbWVudCBz bmFwc2hvdHMsICdmYWxzZScgZm9yIHJlbGVhc2VzIG9yCi0tZG5sIHByZS1yZWxlYXNlcy4KLS1k ZXZlbG9wbWVudD10cnVlCi0tCi0gQUNfUFJFUkVRKDIuNTkpZG5sCi0gQUNfSU5JVChtYWluLmMp Ci0gQUNfQ09ORklHX0hFQURFUihjb25maWcuaDpjb25maWcuaW4pCi0gQU1fTUFJTlRBSU5FUl9N T0RFCi0gCi0rIyBQcm92aWRlIG1vcmUgdGhvcm91Z2ggdGVzdGluZyBieSAtbG1jaGVjay4KLSsj IFNldCBpdCB0byAndHJ1ZScgZm9yIGRldmVsb3BtZW50IHNuYXBzaG90cywgJ2ZhbHNlJyBmb3Ig cmVsZWFzZXMgb3IKLSsjIHByZS1yZWxlYXNlcy4KLStkZXZlbG9wbWVudD10cnVlCi0rCi0gQUNf UFJPR19DQwotIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwotIEFDWF9MQVJHRUZJTEUKCmRpZmYg LS1naXQgYS9nZGIteDg2LW9uc3RhY2stMW9mMi5wYXRjaCBiL2dkYi14ODYtb25zdGFjay0xb2Yy LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDc1NTZjLi4wMDAwMDAwCi0t LSBhL2dkYi14ODYtb25zdGFjay0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAzL21zZzAw MzU3Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAxLzJdIEZpeCBnZGIuY3AvZ2RiMjQ5NS5leHAgcmVn cmVzc2lvbiB3aXRoIGdjYy00LjcgIzUKLQotSGksCi0KLXBvc3RlZCBhcyBhIG5ldyB0aHJlYWQu Ci0KLUFzIGRlc2NyaWJlZCBpbgotCWNhbmNlbDogW3BhdGNoXSBGaXggZ2RiLmNwL2dkYjI0OTUu ZXhwIHJlZ3Jlc3Npb24gd2l0aCBnY2MtNC43ICM0IFtSZTogW3JldmVydF0gUmVncmVzc2lvbiBv biBQb3dlclBDXQotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAz L21zZzAwMzIyLmh0bWwKLWp1c3QgT05fU1RBQ0sgaGFkIHNvbWUgcmVncmVzc2lvbnMuCi0KLVRo ZSBleHBlY3RhdGlvbnMgaW4gdGhhdCBtYWlsIHdlcmUgd3JvbmcgKGF0IGxlYXN0IHRoYXQgY2xl YW51cC9maXggaXMgbm90Ci1yZXF1aXJlZCBmb3IgZ2RiLmNwL2dkYjI0OTUuZXhwKS4KLQotVGhl IHByb2JsZW0gaXMgdGhhdCB0aGUgaW5mZXJpb3IgY2FsbCByZXR1cm4gcGFkIGJyZWFrcG9pbnQg aW5zdHJ1Y3Rpb24gaXMKLW5ldmVyIHJlbW92ZWQgZXZlbiBhZnRlciBpbmZlcmlvciBjYWxsIGZp bmlzaGVzLiAgSXQgaXMgZXZlbiBzdGlsbCB2aXNpYmxlIGluCi0ibWFpbnRlbmFuY2UgaW5mbyBi cmVha3BvaW50cyIuICBUaGlzIGRvZXMgbm90IG1hdHRlciBtdWNoIGZvciBBVF9FTlRSWV9QT0lO VAotYnV0IGZvciBPTl9TVEFDSyBpdCBqdXN0IGNvcnJ1cHRzIHN0YWNrLgotCi1ObyByZWdyZXNz aW9ucyBvbgote3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYSgxNS1yYXdoaWRlKS9yaGVs KDUtNiktbGludXgtZ251IGFuZCBmb3IKLWdkYnNldmVyIG5vbi1leHRlbmRlZCBtb2RlLgotCi0K LVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTItMDMtMDkgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVJlbW92ZSBtb21lbnRhcnkgYnJlYWtwb2ludHMg Zm9yIGNvbXBsZXRlZCBpbmZlcmlvciBjYWxscy4KLQkqIGR1bW15LWZyYW1lLmM6IEluY2x1ZGUg Z2RidGhyZWFkLmguCi0JKHBvcF9kdW1teV9mcmFtZV9icHQpOiBOZXcgZnVuY3Rpb24uCi0JKHBv cF9kdW1teV9mcmFtZSk6IEluaXRpYWxpZSBEVU1NWSBlYXJsaWVyLiAgQ2FsbCBwb3BfZHVtbXlf ZnJhbWVfYnB0LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMi0wMy0wOSAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUmVtb3ZlIG1vbWVudGFyeSBicmVha3Bv aW50cyBmb3IgY29tcGxldGVkIGluZmVyaW9yIGNhbGxzLgotCSogZ2RiLmJhc2UvY2FsbC1zaWdu YWwtcmVzdW1lLmV4cCAobWFpbnRlbmFuY2UgcHJpbnQgZHVtbXktZnJhbWVzKQotCShtYWludGVu YW5jZSBpbmZvIGJyZWFrcG9pbnRzKTogTmV3IHRlc3RzLgotCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvZHVtbXktZnJhbWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjA2MDIub3JpZy9nZGIvZHVtbXktZnJhbWUuYwkyMDEyLTAxLTA0IDA5OjE3OjAwLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R1bW15LWZyYW1lLmMJMjAxMi0w Ni0wMiAyMDo0Mjo0MC45MDc3MjAzMjcgKzAyMDAKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1 ZGUgImdkYmNtZC5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCi0rI2luY2x1ZGUgImdkYnRocmVhZC5oIgotIAotIC8qIER1bW15IGZyYW1lLiAgVGhp cyBzYXZlcyB0aGUgcHJvY2Vzc29yIHN0YXRlIGp1c3QgcHJpb3IgdG8gc2V0dGluZwotICAgIHVw IHRoZSBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLiAgT2xkZXIgdGFyZ2V0cyBzYXZlIHRoZSByZWdp c3RlcnMKLUBAIC0xMDgsMTkgKzEwOSwzNiBAQCByZW1vdmVfZHVtbXlfZnJhbWUgKHN0cnVjdCBk dW1teV9mcmFtZSAqCi0gICB4ZnJlZSAoZHVtbXkpOwotIH0KLSAKLSsvKiBEZWxldGUgYW55IGJy ZWFrcG9pbnQgQiB3aGljaCBpcyBhIG1vbWVudGFyeSBicmVha3BvaW50IGZvciByZXR1cm4gZnJv bQotKyAgIGluZmVyaW9yIGNhbGwgbWF0Y2hpbmcgRFVNTVlfVk9JRFAuICAqLwotKwotK3N0YXRp YyBpbnQKLStwb3BfZHVtbXlfZnJhbWVfYnB0IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgdm9pZCAq ZHVtbXlfdm9pZHApCi0rewotKyAgc3RydWN0IGR1bW15X2ZyYW1lICpkdW1teSA9IGR1bW15X3Zv aWRwOwotKwotKyAgaWYgKGItPmRpc3Bvc2l0aW9uID09IGRpc3BfZGVsICYmIGZyYW1lX2lkX2Vx IChiLT5mcmFtZV9pZCwgZHVtbXktPmlkKQotKyAgICAgICYmIGItPnRocmVhZCA9PSBwaWRfdG9f dGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKSkKLSsgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwot KwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICByZXR1cm4gMDsKLSt9Ci0r Ci0gLyogUG9wICpEVU1NWV9QVFIsIHJlc3RvcmluZyBwcm9ncmFtIHN0YXRlIHRvIHRoYXQgYmVm b3JlIHRoZQotICAgIGZyYW1lIHdhcyBjcmVhdGVkLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIHBv cF9kdW1teV9mcmFtZSAoc3RydWN0IGR1bW15X2ZyYW1lICoqZHVtbXlfcHRyKQotIHsKLS0gIHN0 cnVjdCBkdW1teV9mcmFtZSAqZHVtbXk7Ci0rICBzdHJ1Y3QgZHVtbXlfZnJhbWUgKmR1bW15ID0g KmR1bW15X3B0cjsKLSsKLSsgIHJlc3RvcmVfaW5mY2FsbF9zdXNwZW5kX3N0YXRlIChkdW1teS0+ Y2FsbGVyX3N0YXRlKTsKLSAKLS0gIHJlc3RvcmVfaW5mY2FsbF9zdXNwZW5kX3N0YXRlICgoKmR1 bW15X3B0ciktPmNhbGxlcl9zdGF0ZSk7Ci0rICBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKHBv cF9kdW1teV9mcmFtZV9icHQsIGR1bW15KTsKLSAKLSAgIC8qIHJlc3RvcmVfaW5mY2FsbF9jb250 cm9sX3N0YXRlIGZyZWVzIGluZl9zdGF0ZSwKLSAgICAgIGFsbCB0aGF0IHJlbWFpbnMgaXMgdG8g cG9wICpkdW1teV9wdHIuICAqLwotLSAgZHVtbXkgPSAqZHVtbXlfcHRyOwotICAgKmR1bW15X3B0 ciA9IGR1bW15LT5uZXh0OwotICAgeGZyZWUgKGR1bW15KTsKLSAKLUluZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY2FsbC1zaWduYWwtcmVzdW1lLmV4cAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2NhbGwtc2lnbmFsLXJlc3VtZS5leHAJMjAxMi0wMS0yMyAxODoxMTo1MC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Y2FsbC1zaWduYWwtcmVzdW1lLmV4cAkyMDEyLTA2LTAyIDIwOjQzOjEwLjUyMzcwOTA1MiArMDIw MAotQEAgLTEwMSw2ICsxMDEsMTggQEAgZ2RiX3Rlc3QgImZyYW1lICRmcmFtZV9udW1iZXIiICIu KiIKLSBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBjb25maXJtIG9mZiIKLSBnZGJfdGVzdCAicmV0 dXJuIiAiIgotIAotKyMgVmVyaWZ5IHRoZXJlIGFyZSBubyByZW1haW5zIG9mIHRoZSBkdW1teSBm cmFtZS4KLStnZGJfdGVzdF9ub19vdXRwdXQgIm1haW50ZW5hbmNlIHByaW50IGR1bW15LWZyYW1l cyIKLStzZXQgdGVzdCAibWFpbnRlbmFuY2UgaW5mbyBicmVha3BvaW50cyIKLStnZGJfdGVzdF9t dWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiY2FsbCBkdW1teS4qXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwotICMgUmVzdW1lIGV4ZWN1dGlvbiwg dGhlIHByb2dyYW0gc2hvdWxkIGNvbnRpbnVlIHdpdGhvdXQgYW55IHNpZ25hbC4KLSAKLSBnZGJf dGVzdCAiYnJlYWsgc3RvcF90d28iICJCcmVha3BvaW50IFxbMC05XF0qIGF0IC4qIgoKZGlmZiAt LWdpdCBhL2dkYi14ODYtb25zdGFjay0yb2YyLnBhdGNoIGIvZ2RiLXg4Ni1vbnN0YWNrLTJvZjIu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0OTkwNGEuLjAwMDAwMDAKLS0t IGEvZ2RiLXg4Ni1vbnN0YWNrLTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDMvbXNnMDAz NTguaHRtbAotU3ViamVjdDogW3BhdGNoIDIvMl0gRml4IGdkYi5jcC9nZGIyNDk1LmV4cCByZWdy ZXNzaW9uIHdpdGggZ2NjLTQuNyAjNQotCi1IaSwKLQotaGVyZSBpcyB0aGUgT05fU1RBQ0sgY29k ZSBhZ2Fpbiwgd2l0aCBmaXhlZCBhbGlnbm1lbnQgZm9yIGkzODYgU1NFLgotCi1JdCBpcyBnZW5l cmFsaXplZCBmb3IgYWxsIE9TZXMgb24gaTM4Ni9hbWQ2NC4gIEkgY2FuIG1vdmUgaXQgdG8KLXtp Mzg2LGFtZDY0KS1saW51eC10ZGVwLmMgYnV0IEkgZmluZCB0aGlzIGNvZGUgbXVjaCBtb3JlIGxp Z2h0d2VpZ2h0IHRoYW4KLWkzODZfcHVzaF9kdW1teV9jYWxsIHdoaWNoIGlzIGFscmVhZHkgcHJl c2VudCBpbiBpMzg2LXRkZXAuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uCi17eDg2XzY0LHg4Nl82NC1t MzIsaTY4Nn0tZmVkb3JhKDE1LXJhd2hpZGUpL3JoZWwoNS02KS1saW51eC1nbnUgYW5kIGZvcgot Z2Ric2V2ZXIgbm9uLWV4dGVuZGVkIG1vZGUuCi0KLUZvciB4ODZfNjQtZmVkb3JhMTctbGludXgt Z251IGl0IGZpeGVzOgotLUZBSUw6IGdkYi5jcC9nZGIyNDk1LmV4cDogQ2FsbCBhIGZ1bmN0aW9u IHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aXRob3V0IGEgaGFuZGxlci4KLS1GQUlMOiBnZGIu Y3AvZ2RiMjQ5NS5leHA6IGJ0IGFmdGVyIHJldHVybmluZyBmcm9tIGEgcG9wcGVkIGZyYW1lCi0r UEFTUzogZ2RiLmNwL2dkYjI0OTUuZXhwOiBDYWxsIGEgZnVuY3Rpb24gdGhhdCByYWlzZXMgYW4g ZXhjZXB0aW9uIHdpdGhvdXQgYSBoYW5kbGVyLgotK1BBU1M6IGdkYi5jcC9nZGIyNDk1LmV4cDog YnQgYWZ0ZXIgcmV0dXJuaW5nIGZyb20gYSBwb3BwZWQgZnJhbWUKLQotCi1UaGFua3MsCi1KYW4K LQotCi1nZGIvCi0yMDEyLTAzLTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQkqIGFtZDY0LWRpY29zLXRkZXAuYyAoYW1kNjRfZGljb3NfcHVzaF9kdW1t eV9jb2RlKTogUmVtb3ZlLgotCShhbWQ2NF9kaWNvc19pbml0X2FiaSk6IFJlbW92ZSBpdHMgaW5z dGFsbG1lbnQuCi0JKiBkaWNvcy10ZGVwLmMgKGRpY29zX2luaXRfYWJpKTogUmVtb3ZlIHRoZQot CXNldF9nZGJhcmNoX2NhbGxfZHVtbXlfbG9jYXRpb24gY2FsbC4gIFVwZGF0ZSB0aGUgY29tbWVu dCBoZXJlLgotCSogaTM4Ni1kaWNvcy10ZGVwLmMgKGkzODZfZGljb3NfcHVzaF9kdW1teV9jb2Rl KTogUmVtb3ZlLgotCShpMzg2X2RpY29zX2luaXRfYWJpKTogUmVtb3ZlIGl0cyBpbnN0YWxsbWVu dC4KLQkqIGkzODYtdGRlcC5jIChpMzg2X3B1c2hfZHVtbXlfY29kZSk6IE5ldyBmdW5jdGlvbi4K LQkoaTM4Nl9nZGJhcmNoX2luaXQpOiBDYWxsIHNldF9nZGJhcmNoX2NhbGxfZHVtbXlfbG9jYXRp b24sIGluc3RhbGwKLQlpMzg2X3B1c2hfZHVtbXlfY29kZS4KLQotLS0tIGEvZ2RiL2FtZDY0LWRp Y29zLXRkZXAuYwotKysrIGIvZ2RiL2FtZDY0LWRpY29zLXRkZXAuYwotQEAgLTIzLDI0ICsyMyw2 IEBACi0gI2luY2x1ZGUgImFtZDY0LXRkZXAuaCIKLSAjaW5jbHVkZSAiZGljb3MtdGRlcC5oIgot IAotLXN0YXRpYyBDT1JFX0FERFIKLS1hbWQ2NF9kaWNvc19wdXNoX2R1bW15X2NvZGUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAotLQkJCSAgICAgQ09SRV9BRERSIHNwLCBDT1JFX0FERFIgZnVu YWRkciwKLS0JCQkgICAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKLS0JCQkgICAg IHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlLAotLQkJCSAgICAgQ09SRV9BRERSICpyZWFsX3BjLCBD T1JFX0FERFIgKmJwX2FkZHIsCi0tCQkJICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQot LXsKLS0gIGludCBicGxlbjsKLS0gIENPUkVfQUREUiBicHBjID0gc3A7Ci0tCi0tICBnZGJhcmNo X2JyZWFrcG9pbnRfZnJvbV9wYyAoZ2RiYXJjaCwgJmJwcGMsICZicGxlbik7Ci0tICAqYnBfYWRk ciA9IHNwIC0gYnBsZW47Ci0tICAqcmVhbF9wYyA9IGZ1bmFkZHI7Ci0tCi0tICByZXR1cm4gKmJw X2FkZHI7Ci0tfQotLQotIHN0YXRpYyB2b2lkCi0gYW1kNjRfZGljb3NfaW5pdF9hYmkgKHN0cnVj dCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewotQEAgLTQ5 LDggKzMxLDYgQEAgYW1kNjRfZGljb3NfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICBhbWQ2NF9pbml0X2FiaSAoaW5mbywgZ2Ri YXJjaCk7Ci0gCi0gICBkaWNvc19pbml0X2FiaSAoZ2RiYXJjaCk7Ci0tCi0tICBzZXRfZ2RiYXJj aF9wdXNoX2R1bW15X2NvZGUgKGdkYmFyY2gsIGFtZDY0X2RpY29zX3B1c2hfZHVtbXlfY29kZSk7 Ci0gfQotIAotIHN0YXRpYyBlbnVtIGdkYl9vc2FiaQotLS0tIGEvZ2RiL2RpY29zLXRkZXAuYwot KysrIGIvZ2RiL2RpY29zLXRkZXAuYwotQEAgLTQzLDggKzQzLDggQEAgZGljb3NfaW5pdF9hYmkg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIAotICAgLyogVGhlcmUncyBubyAoc3RhbmRhcmQg ZGVmaW5pdGlvbiBvZikgZW50cnkgcG9pbnQgb3IgYSBndWFyYW50ZWVkCi0gICAgICB0ZXh0IGxv Y2F0aW9uIHdpdGggYSBzeW1ib2wgd2hlcmUgdG8gcGxhY2UgdGhlIGNhbGwgZHVtbXksIHNvIHdl Ci0tICAgICBwdXQgaXQgb24gdGhlIHN0YWNrLiAgKi8KLS0gIHNldF9nZGJhcmNoX2NhbGxfZHVt bXlfbG9jYXRpb24gKGdkYmFyY2gsIE9OX1NUQUNLKTsKLSsgICAgIG5lZWQgaXQgb24gdGhlIHN0 YWNrLiAgUmVseSBvbiBpMzg2X2dkYmFyY2hfaW5pdCB1c2VkIGFsc28gZm9yCi0rICAgICBhbWQ2 NCB0byBzZXQgdXAgT05fU1RBQ0sgaW5mZXJpb3IgY2FsbHMuICAqLwotIAotICAgLyogRElDT1Mg cmV3aW5kcyB0aGUgUEMgaXRzZWxmLiAgKi8KLSAgIHNldF9nZGJhcmNoX2RlY3JfcGNfYWZ0ZXJf YnJlYWsgKGdkYmFyY2gsIDApOwotLS0tIGEvZ2RiL2kzODYtZGljb3MtdGRlcC5jCi0rKysgYi9n ZGIvaTM4Ni1kaWNvcy10ZGVwLmMKLUBAIC0yMiwzMiArMjIsMTIgQEAKLSAjaW5jbHVkZSAiZ2Ri X3N0cmluZy5oIgotICNpbmNsdWRlICJkaWNvcy10ZGVwLmgiCi0gCi0tc3RhdGljIENPUkVfQURE UgotLWkzODZfZGljb3NfcHVzaF9kdW1teV9jb2RlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK LS0JCQkgICAgQ09SRV9BRERSIHNwLCBDT1JFX0FERFIgZnVuYWRkciwKLS0JCQkgICAgc3RydWN0 IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAotLQkJCSAgICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlw ZSwKLS0JCQkgICAgQ09SRV9BRERSICpyZWFsX3BjLCBDT1JFX0FERFIgKmJwX2FkZHIsCi0tCQkJ ICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCi0tewotLSAgaW50IGJwbGVuOwotLSAgQ09S RV9BRERSIGJwcGMgPSBzcDsKLS0KLS0gIGdkYmFyY2hfYnJlYWtwb2ludF9mcm9tX3BjIChnZGJh cmNoLCAmYnBwYywgJmJwbGVuKTsKLS0gICpicF9hZGRyID0gc3AgLSBicGxlbjsKLS0gICpyZWFs X3BjID0gZnVuYWRkcjsKLS0KLS0gIHJldHVybiAqYnBfYWRkcjsKLS19Ci0tCi0gc3RhdGljIHZv aWQKLSBpMzg2X2RpY29zX2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotIAotICAgZGljb3NfaW5pdF9hYmkgKGdkYmFyY2gpOwot LQotLSAgc2V0X2dkYmFyY2hfcHVzaF9kdW1teV9jb2RlIChnZGJhcmNoLCBpMzg2X2RpY29zX3B1 c2hfZHVtbXlfY29kZSk7Ci0gfQotIAotIHN0YXRpYyBlbnVtIGdkYl9vc2FiaQotLS0tIGEvZ2Ri L2kzODYtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni10ZGVwLmMKLUBAIC0yMzI2LDYgKzIzMjYsMzAg QEAgaTM4Nl8xNl9ieXRlX2FsaWduX3AgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgcmV0dXJuIDA7 Ci0gfQotIAotKy8qIEltcGxlbWVudGF0aW9uIGZvciBzZXRfZ2RiYXJjaF9wdXNoX2R1bW15X2Nv ZGUuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStpMzg2X3B1c2hfZHVtbXlfY29kZSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBzcCwgQ09SRV9BRERSIGZ1bmFkZHIsCi0r CQkgICAgICBzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIHN0cnVjdCB0eXBlICp2YWx1 ZV90eXBlLAotKwkJICAgICAgQ09SRV9BRERSICpyZWFsX3BjLCBDT1JFX0FERFIgKmJwX2FkZHIs Ci0rCQkgICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQotK3sKLSsgIGludCBicGxlbjsK LSsgIENPUkVfQUREUiBicHBjID0gc3A7Ci0rCi0rICBnZGJhcmNoX2JyZWFrcG9pbnRfZnJvbV9w YyAoZ2RiYXJjaCwgJmJwcGMsICZicGxlbik7Ci0rICBzcCAtPSBicGxlbjsKLSsKLSsgIC8qIGFt ZDY0X3B1c2hfZHVtbXlfY2FsbCBkb2VzIGFsaWdubWVudCBvbiBpdHMgb3duIGJ1dCBpMzg2X3B1 c2hfZHVtbXlfY2FsbAotKyAgICAgZG9lcyBub3QuICBBQkkgcmVxdWlyZXMgc3RhY2sgYWxpZ25t ZW50IGZvciBleGVjdXRhYmxlcyB1c2luZyBTU0UuICAqLwotKyAgaWYgKGdkYmFyY2hfZnJhbWVf YWxpZ25fcCAoZ2RiYXJjaCkpCi0rICAgIHNwID0gZ2RiYXJjaF9mcmFtZV9hbGlnbiAoZ2RiYXJj aCwgc3ApOwotKwotKyAgKmJwX2FkZHIgPSBzcDsKLSsgICpyZWFsX3BjID0gZnVuYWRkcjsKLSsg IHJldHVybiBzcDsKLSt9Ci0rCi0gc3RhdGljIENPUkVfQUREUgotIGkzODZfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwKLSAJ CSAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBicF9hZGRyLCBpbnQg bmFyZ3MsCi1AQCAtNzM3Miw2ICs3Mzk2LDggQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBn ZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQotICAgc2V0X2dk YmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBpMzg2X2dldF9sb25nam1wX3Rhcmdl dCk7Ci0gCi0gICAvKiBDYWxsIGR1bW15IGNvZGUuICAqLwotKyAgc2V0X2dkYmFyY2hfY2FsbF9k dW1teV9sb2NhdGlvbiAoZ2RiYXJjaCwgT05fU1RBQ0spOwotKyAgc2V0X2dkYmFyY2hfcHVzaF9k dW1teV9jb2RlIChnZGJhcmNoLCBpMzg2X3B1c2hfZHVtbXlfY29kZSk7Ci0gICBzZXRfZ2RiYXJj aF9wdXNoX2R1bW15X2NhbGwgKGdkYmFyY2gsIGkzODZfcHVzaF9kdW1teV9jYWxsKTsKLSAgIHNl dF9nZGJhcmNoX2ZyYW1lX2FsaWduIChnZGJhcmNoLCBpMzg2X2ZyYW1lX2FsaWduKTsKLSAKLQoK ZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggMjRiNzZjOC4uMTMzYmEyMiAx MDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTMwLDEyICszMCwxMiBAQCBO YW1lOiAlez9zY2xfcHJlZml4fWdkYgogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBvZiBnZGIv dmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJlcmVkIE4u TSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFudWFyeSAy MDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEy ICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEyIChoZWFk IG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi0lZ2xvYmFsIHNuYXAgMjAxMjA2MDMKKyVnbG9iYWwg c25hcCAyMDEyMDcwMwogVmVyc2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBUaGUgcmVsZWFzZSBh bHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4K ICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBk ZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiA3JXs/ZGlz dH0KK1JlbGVhc2U6IDglez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRo IGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BM KyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1l bnQvRGVidWdnZXJzCkBAIC00ODEsOCArNDgxLDYgQEAgUGF0Y2g1MDQ6IGdkYi1iejYyMzc0OS1n Y29yZS1yZWxyby5wYXRjaAogCiAjIEZpeCBsb3N0IHNpZ2luZm9fdCBpbiBsaW51eC1uYXQgKEJa IDU5MjAzMSkuCiAjPXB1c2gKLVBhdGNoNTEwOiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRv ZjUucGF0Y2gKLSM9cHVzaAogUGF0Y2g1MTE6IGdkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9m NS5wYXRjaAogCiAjIFZlcmlmeSBHREIgUHl0aG9uIGJ1aWx0LWluIGZ1bmN0aW9uIGdkYi5zb2xp Yl9hZGRyZXNzIGV4aXN0cyAoQlogIyA2MzQxMDgpLgpAQCAtNTQyLDM2ICs1NDAsMjIgQEAgUGF0 Y2g2NTM6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKICM9ZmVkb3JhCiBQYXRj aDY1NzogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNWNvbmZpZ3VyZS5wYXRjaAogCi0jIEZp eCBpbmZlcmlvciBjYWxscywgcGFydGljdWxhcmx5IHVuY2F1Z2h0IHRocm93biBleGNlcHRpb25z IChCWiA3OTk1MzEpLgotIz1wdXNoK3dvcmsKLVBhdGNoNjU0OiBnZGIteDg2LW9uc3RhY2stMW9m Mi5wYXRjaAotUGF0Y2g2NTg6IGdkYi14ODYtb25zdGFjay0yb2YyLnBhdGNoCi0KICMgV29ya2Fy b3VuZCBjcmFzaGVzIGZyb20gc3RhbGUgZnJhbWVfaW5mbyBwb2ludGVyIChCWiA4MDQyNTYpLgot Iz1wdXNoK3dvcmsKKyM9ZmVkb3JhCiBQYXRjaDY2MTogZ2RiLXN0YWxlLWZyYW1lX2luZm8ucGF0 Y2gKIAogIyBXb3JrYXJvdW5kIFBSIGxpYmMvMTQxNjYgZm9yIGluZmVyaW9yIGNhbGxzIG9mIHN0 cnN0ci4KICM9cHVzaCt3b3JrOiBCdXQgcHVzaCBpdCB0byBnbGliYy4KIFBhdGNoNjkwOiBnZGIt Z2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKIAotIyBGaXggZGVqYWdudS0xLjUtNC5mYzE3 IGNvbXBhdGliaWxpdHkgZm9yIEdvIChmb3IgQlogNjM1NjUxKS4KLSM9ZmVkb3JhdGVzdAotUGF0 Y2g2OTI6IGdkYi1kZWphZ251LWdvLnBhdGNoCi0KLSMgUmV2ZXJ0IHJlY2VudCBicmVha2FnZSBv ZiBVTklYIG9iamZpbGVzIG9yZGVyIGZvciBzeW1ib2xzIGxvb2t1cC4KLVBhdGNoNjkzOiBnZGIt b2JqZmlsZS1vcmRlci5wYXRjaAotCiAjIERpc2FibGUgLWxtY2hlY2sgaW4gdGhlIGRldmVsb3Bt ZW50IGJ1aWxkcy4KKyM9ZmVkb3JhCiBQYXRjaDY5NDogZ2RiLWRpc2FibGUtbWNoZWNrLnBhdGNo CiAKICMgRml4IGFzc2VydGlvbiBvbiBzb21lIGZpbGVzIGFzIGdsaWJjLTIuMTUuOTAtOC5mYzE4 IChEb3VnIEV2YW5zKS4KKyM9cHVzaAogUGF0Y2g2OTU6IGdkYi1pbmRleC1hc3NlcnQucGF0Y2gK IAotIyBTdXBwb3J0IERXX09QX0dOVV9wYXJhbWV0ZXJfcmVmIGZvciAtTzIgLWcgaW5mZXJpb3Jz IChCWiA4MjczNzUpLgotUGF0Y2g2OTY6IGdkYi1wYXJhbWV0ZXJyZWYtMW9mMi5wYXRjaAotUGF0 Y2g2OTc6IGdkYi1wYXJhbWV0ZXJyZWYtMm9mMi5wYXRjaAotCiAjIEluY2x1ZGUgdGVzdGNhc2Ug Zm9yIGBVbmFibGUgdG8gc2VlIGEgdmFyaWFibGUgaW5zaWRlIGEgbW9kdWxlIChYTEYpJyAoQlog ODIzNzg5KS4KICM9ZmVkb3JhdGVzdAogIytwcGMKQEAgLTU4MSw2ICs1NjUsMTAgQEAgUGF0Y2g2 OTg6IGdkYi1yaGVsNS45LXRlc3RjYXNlLXhsZi12YXItaW5zaWRlLW1vZC5wYXRjaAogIz1mZWRv cmF0ZXN0CiBQYXRjaDcwMzogZ2RiLXJoYnotODE4MzQzLXNldC1zb2xpYi1hYnNvbHV0ZS1wcmVm aXgtdGVzdGNhc2UucGF0Y2gKIAorIyBSZXZlcnQgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIg Zml4IChQUiA5NTE0KSByZWdyZXNzaW5nIEZlZG9yYSBlcnJubyBwYXRjaC4KKyM9cHVzaAorUGF0 Y2g3MTU6IGdkYi1lcnJuby1mdW5jLWRhdGF0eXBlLXJldmVydC5wYXRjaAorCiAlaWYgMCV7IT9y aGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKICMgUkxfU1RBVEVfRkVET1JBX0dEQiB3b3VsZCBub3Qg YmUgZm91bmQgZm9yOgogIyBQYXRjaDY0MjogZ2RiLXJlYWRsaW5lNjItYXNrLW1vcmUtcmgucGF0 Y2gKQEAgLTY1MSw4ICs2MzksMTEgQEAgQnVpbGRSZXF1aXJlczogcHJlbGluawogJWVuZGlmCiAl ZW5kaWYKICVpZiAwJXshP3JoZWw6MX0KKyMgRmVkb3JhIGFybSBkb2VzIG5vdCB5ZXQgaGF2ZSBm cGMgYnVpbHQuCislaWZuYXJjaCAle2FybX0KIEJ1aWxkUmVxdWlyZXM6IGZwYwogJWVuZGlmCisl ZW5kaWYKICVpZiAwJXs/ZWw1OjF9CiBCdWlsZFJlcXVpcmVzOiBnY2M0NCBnY2M0NC1nZm9ydHJh bgogJWVuZGlmCkBAIC03NTgsNiArNzQ5LDcgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1l eHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMiAtcDEKIAogJXBhdGNoMjMy IC1wMQorJXBhdGNoNzE1IC1wMQogJXBhdGNoMzQ5IC1wMQogJXBhdGNoMSAtcDEKICVwYXRjaDMg LXAxCkBAIC04NDcsNyArODM5LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBn ZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNDkxIC1wMQogJXBhdGNoNDk2IC1wMQog JXBhdGNoNTA0IC1wMQotJXBhdGNoNTEwIC1wMQogJXBhdGNoNTExIC1wMQogJXBhdGNoNTI2IC1w MQogJXBhdGNoNTQyIC1wMQpAQCAtODYxLDE2ICs4NTIsMTAgQEAgcm0gLWYgZ2RiL2p2LWV4cC5j IGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNjQzIC1wMQog JXBhdGNoNjUzIC1wMQogJXBhdGNoNjU3IC1wMQotJXBhdGNoNjU0IC1wMQotJXBhdGNoNjU4IC1w MQogJXBhdGNoNjYxIC1wMQogJXBhdGNoNjkwIC1wMQotJXBhdGNoNjkyIC1wMQotJXBhdGNoNjkz IC1wMQogJXBhdGNoNjk0IC1wMQogJXBhdGNoNjk1IC1wMQotJXBhdGNoNjk2IC1wMQotJXBhdGNo Njk3IC1wMQogJXBhdGNoNjk4IC1wMQogJXBhdGNoNzAzIC1wMQogCkBAIC0xMzYyLDYgKzEzNDcs MTIgQEAgZmkKICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1fSIgPT0gIm5v YXJjaCIKIAogJWNoYW5nZWxvZworKiBUdWUgSnVsICAzIDIwMTIgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwNzAzLTguZmMxOAorLSBSZWJh c2UgdG8gRlNGIEdEQiA3LjQuNTAuMjAxMjA3MDMuCistIFthcmNoZXItdHJvbWV5LWR3ei1tdWx0 aWZpbGUtcmViYXNlXSBNZXJnZSBuZXcgYnJhbmNoIChUb20gVHJvbWV5KS4KKy0gW2FybV0gPC0t d2l0aCB0ZXN0c3VpdGU+OiBEaXNhYmxlIGZwYyBCdWlsZFJlcXVpcmVzIGFzIGl0IGlzIG5vdCB5 ZXQgYnVpbHQuCistIFJldmVydCBmdW5jdGlvbiByZXR1cm5pbmcgcG9pbnRlciBmaXggKFBSIDk1 MTQpIHJlZ3Jlc3NpbmcgRmVkb3JhIGVycm5vIHBhdGNoLgorCiAqIFRodSBKdW4gMjEgMjAxMiBT ZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIw NjAzLTcuZmMxOAogLSBJbmNsdWRlIHRlc3RjYXNlIGZvciBCWiA4MTgzNDMuCiAKCmRpZmYgLS1n aXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBmZDgzZTZmLi4wOWZjNjU0IDEwMDY0NAotLS0g YS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMiArMSwyIEBACiAwNGU1YzRiMWI5ZTYzMzQy MmNjNDg5OTBmZTYxOTU4ZCAgbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLWQ2 NzY2YzNlYzQ0NDRmMzM3Y2IwZDdhMDI2NTEzMGY5ICBnZGItNy40LjUwLjIwMTIwNjAzLnRhci5i ejIKKzkxMjkwZDEwMzQwMTNkYjFmZTAzNWMwODFhZGRlNTE0ICBnZGItNy40LjUwLjIwMTIwNzAz LnRhci5iejIK