From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.4.50.20120602. Date: Sat, 27 Jun 2026 23:55:41 GMT Message-ID: <178260454133.1.17432391959460726834.rpms-gdb-f8eee055504d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: f8eee055504d803578fc226027045ef37277c9f6 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogZjhlZWUwNTU1MDRkODAzNTc4ZmMyMjYwMjcwNDVlZjM3Mjc3 YzlmNgogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wNi0wM1QxOTo0MDo0NCswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArNTc5OS8tMjIwMzQgaW4gNzUgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jL2Y4 ZWVlMDU1NTA0ZDgwMzU3OGZjMjI2MDI3MDQ1ZWYzNzI3N2M5ZjY/YnJhbmNoPWdkYi0xNy4yLXJl YmFzZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmViYXNlIHRvIEZTRiBHREIg Ny40LjUwLjIwMTIwNjAyLgoKLSBbdGVzdHN1aXRlXSBCdWlsZFJlcXVpcmUgZ2NjLWdvLgotIERy b3AgcHJpbnRpbmcgMkQgQysrIHZlY3RvcnMgYXMgbWF0cmljZXMgd2hpY2ggbm8gbG9uZ2VyIHdv cmtlZCAoQlogNTYyNzYzKS4KLSBGaXggZGVqYWdudS0xLjUtNC5mYzE3IGNvbXBhdGliaWxpdHkg Zm9yIEdvIChmb3IgQlogNjM1NjUxKS4KLSBVc2UgbGlicnBtLnNvLjMgZm9yIHJwbS00LjEwLjAg aW4gRmVkb3JhIDE4LgotIFJldmVydCByZWNlbnQgYnJlYWthZ2Ugb2YgVU5JWCBvYmpmaWxlcyBv cmRlciBmb3Igc3ltYm9scyBsb29rdXAuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8u Z2l0aWdub3JlCmluZGV4IGYxNzFhMGYuLjQ0NzdhNmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUK KysrIGIvLmdpdGlnbm9yZQpAQCAtMSwyICsxLDIgQEAKIC9saWJzdGRjKystdjMtcHl0aG9uLXIx NTU5NzgudGFyLmJ6MgotL2dkYi03LjQuNTAuMjAxMjAxMjAudGFyLmJ6MgorL2dkYi03LjQuNTAu MjAxMjA2MDIudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3 LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5kZXggOWY3MTJhNy4u Y2ZmYjA3YiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysr IGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAog CiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5l dmVyLgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZG9jL2dkYi50ZXhpbmZvCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0x Mi0xOSAwMjo1MjoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMS0xMi0xOSAwMjo1MjoyNS43NjU0MDc0MzQgKzAxMDAKLUBA IC0xMDA1LDYgKzEwMDUsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJv bCB0YQorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDYtMDIgMTg6MTY6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDYtMDIgMTg6MjU6MjAuMzAwMjU0MDE5ICswMjAw CitAQCAtMTAyMCw2ICsxMDIwLDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBz eW1ib2wgdGEKICB0aGUgZGVmYXVsdCwgd2hpY2ggaXMgdG8gcmVhZCBpdCBpbmNyZW1lbnRhbGx5 IGFzIGl0IGlzIG5lZWRlZC4KICBUaGlzIG1ha2VzIHN0YXJ0dXAgc2xvd2VyLCBidXQgbWFrZXMg ZnV0dXJlIG9wZXJhdGlvbnMgZmFzdGVyLgogIApAQCAtMjgsMTEgKzI4LDExIEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAg QG5vZGUgTW9kZSBPcHRpb25zCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFpbi5j CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMjo1MjoyMy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWluLmMJMjAxMS0x Mi0xOSAwMjo1MjozNi45MjUzNjQ0MzggKzAxMDAKLUBAIC00MDYsNiArNDA2LDcgQEAgY2FwdHVy ZWRfbWFpbiAodm9pZCAqZGF0YSkKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL21h aW4uYwkyMDEyLTA2LTAyIDE4OjE2OjM2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL21haW4uYwkyMDEyLTA2LTAyIDE4OjI1OjIwLjMwMjI1NDAxOSArMDIwMAor QEAgLTQxNCw2ICs0MTQsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsi eGRiIiwgbm9fYXJndW1lbnQsICZ4ZGJfY29tbWFuZHMsIDF9LAogICAgICAgIHsiZGJ4Iiwgbm9f YXJndW1lbnQsICZkYnhfY29tbWFuZHMsIDF9LAogICAgICAgIHsicmVhZG5vdyIsIG5vX2FyZ3Vt ZW50LCAmcmVhZG5vd19zeW1ib2xfZmlsZXMsIDF9LApAQCAtNDAsNyArNDAsNyBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQs ICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50 LCAmcXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAg LTEwNzIsNiArMTA3Myw3IEBAIE9wdGlvbnM6XG5cblwKK0BAIC0xMTMxLDYgKzExMzIsNyBAQCBP cHRpb25zOlxuXG5cCiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXF1aWV0ICAgICAg ICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJl YWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxu XApAQCAtNDgsMTEgKzQ4LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWlu LmMKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklM RSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxu XAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMTEyMTgub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTUgMTY6MzY6NTUuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTkg MDI6NTI6MjUuNzY3NDA3NDI2ICswMTAwCi1AQCAtODIsNiArODIsNyBAQCBzdGF0aWMgdm9pZCBj bGVhcl9zeW10YWJfdXNlcnNfY2xlYW51cCAoCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi9zeW1maWxlLmMJMjAxMi0wNS0zMSAyMDo0NDo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zeW1maWxlLmMJMjAxMi0wNi0wMiAxODoyNToyMC4zMzQy NTQwMTMgKzAyMDAKK0BAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91 c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmls ZS4gICovCiAgaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwkvKiBSZWFkIGZ1bGwgc3ltYm9scyBp bW1lZGlhdGVseS4gICovCkBAIC02MCwxOSArNjAsMTkgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL3N5bWZpbGUuYwogIAogIC8qIEV4dGVybmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rp b25zIHJlZmVyZW5jZWQuICAqLwogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3 YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZHdhcmYycmVhZC5j CTIwMTEtMTItMTkgMDI6NTI6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMTItMTkgMDI6NTI6MjUuNzY5NDA3NDE4ICswMTAw Ci1AQCAtNTksNiArNTksNyBAQAotICNpbmNsdWRlICJjLWxhbmcuaCIKKy0tLSBnZGItNy40LjUw LjIwMTIwNjAyLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA2LTAyIDE4OjE2OjM2LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQuYwkyMDEy LTA2LTAyIDE4OjI1OjMyLjgzNzI1MDUzNSArMDIwMAorQEAgLTYzLDYgKzYzLDcgQEAKICAjaW5j bHVkZSAidmFscHJpbnQuaCIKKyAjaW5jbHVkZSAiZ2RiY29yZS5oIiAvKiBmb3IgZ251dGFyZ2V0 ICovCiAgI2luY2x1ZGUgPGN0eXBlLmg+CiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRl IDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTQwNSw4ICsxNDA2LDkg QEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTE1MTQsOCAr MTUxNSw5IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIG5hbWVzKTsKICAgICAgICBkd2FyZjJf cGVyX29iamZpbGUtPm9iamZpbGUgPSBvYmpmaWxlOwogICAgICB9CkBAIC04NCwxMSArODQsMTEg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwogIH0KICAKICAv KiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMsIHdlIGxvb2sgZWl0aGVyIGZvciB1bmNvbXByZXNzZWQg c2VjdGlvbiBvciBmb3IKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90b3AuaAorSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDExMTIxOC5vcmlnL2dkYi90b3AuaAkyMDExLTEyLTE2IDIxOjI5OjI4LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3RvcC5oCTIwMTEtMTItMTkgMDI6 NTI6MjUuNzY5NDA3NDE4ICswMTAwCi1AQCAtNjEsNiArNjEsNyBAQCBleHRlcm4gdm9pZCBzZXRf cHJvbXB0IChjb25zdCBjaGFyICpzKTsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2Ri L3RvcC5oCTIwMTItMDEtMjMgMTg6MTI6MzAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdG9wLmgJMjAxMi0wNi0wMiAxODoyNToyMC4zNjcyNTQwMDEgKzAyMDAK K0BAIC02MCw2ICs2MCw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKnMp OwogIAogIC8qIEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93X3N5 bWJvbF9maWxlczsKCmRpZmYgLS1naXQgYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNo IGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaAppbmRleCA2MTExNTQxLi5mODc3MjI1 IDEwMDY0NAotLS0gYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCisrKyBiL2dkYi02 LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMS0x Mi0xOSAyMTowNzowMi4xNzg0NzIxNTcgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dk Yi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCTIwMTEtMTItMTkgMjI6MDU6MDIuNzA0NDMyMjEzICsw MTAwCi1AQCAtOTcsNiArOTcsNiBAQCBBQ19PVVRQVVQoW01ha2VmaWxlIFwKKy0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMi0wNC0yNSAx NjowNzoyMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0 c3VpdGUvY29uZmlndXJlLmFjCTIwMTItMDYtMDIgMTg6MjQ6MzguNDU2MjY2NTQ1ICswMjAwCitA QCAtOTYsNiArOTYsNiBAQCBBQ19PVVRQVVQoW01ha2VmaWxlIFwKICAgIGdkYi5ocC9nZGIuYUND L01ha2VmaWxlIGdkYi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIFwKICAgIGdkYi5ocC9nZGIuZGVm ZWN0cy9NYWtlZmlsZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgXAogICAgZ2RiLm1pL01ha2VmaWxl IGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBcCkBAIC0xMCwyMCArMTAs MjAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUu YWMKICsgIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtl ZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgXAogICAgZ2RiLnB5dGhv bi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgXAogICAg Z2RiLnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGVd KQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJl CTIwMTEtMTItMTkgMjE6MDc6MDIuMTc5NDcyMTUzICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEx MTIxOS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQkyMDExLTEyLTE5IDIyOjA1OjAyLjczNTQzMjA5 MCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2NvbmZp Z3VyZQkyMDEyLTA0LTI1IDE2OjA3OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMi0wNi0wMiAxODoyNTowNi4yMDAy NTgyNDAgKzAyMDAKIEBAIC0zNDQ4LDcgKzM0NDgsNyBAQCBkb25lCiAgCiAgCiAgCi0tYWNfY29u ZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2Ri LmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2Vs bC9NYWtlZmlsZSBnZGIuY3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYy L01ha2VmaWxlIGdkYi5mb3J0cmFuL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmph dmEvTWFrZWZpbGUgZ2RiLmhwL01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdk Yi5ocC9nZGIuYmFzZS1ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAv Z2RiLmNvbXBhdC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVz cGVjL01ha2VmaWxlIGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVs dGkvTWFrZWZpbGUgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0 L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2 ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUgZ2Ri LnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCi0rYWNfY29uZmlnX2ZpbGVzPSIkYWNf Y29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZpbGUg Z2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBnZGIu Y3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5m b3J0cmFuL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUgZ2Ri LmhwL01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIuYmFzZS1o cC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtl ZmlsZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIGdk Yi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgZ2Ri Lm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5w YXNjYWwvTWFrZWZpbGUgZ2RiLnBpZS9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5y ZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBnZGIudGhyZWFkcy9NYWtlZmlsZSBn ZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIKKy1hY19jb25maWdfZmlsZXM9IiRh Y19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9NYWtlZmls ZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5jZWxsL01ha2VmaWxlIGdk Yi5jcC9NYWtlZmlsZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5kd2FyZjIvTWFrZWZpbGUgZ2Ri LmZvcnRyYW4vTWFrZWZpbGUgZ2RiLmdvL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2Ri LmphdmEvTWFrZWZpbGUgZ2RiLmhwL01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxl IGdkYi5ocC9nZGIuYmFzZS1ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIu aHAvZ2RiLmNvbXBhdC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxp bmVzcGVjL01ha2VmaWxlIGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIu bXVsdGkvTWFrZWZpbGUgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIu b3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIu cmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUg Z2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCisrYWNfY29uZmlnX2ZpbGVzPSIk YWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZp bGUgZ2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBn ZGIuY3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdk Yi5mb3J0cmFuL01ha2VmaWxlIGdkYi5nby9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdk Yi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmls ZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2Ri LmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdkYi5s aW5lc3BlYy9NYWtlZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2Ri Lm11bHRpL01ha2VmaWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2Ri Lm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgZ2RiLnB5 dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2Ri LnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCiAg CiAgY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCiAgIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3Jp cHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCi1AQCAtNDE3NCw2ICs0MTc0 LDcgQEAgZG8KK0BAIC00MTc1LDYgKzQxNzUsNyBAQCBkbwogICAgICAiZ2RiLm9wZW5jbC9NYWtl ZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIub3BlbmNsL01ha2VmaWxlIiA7 OwogICAgICAiZ2RiLm9wdC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBn ZGIub3B0L01ha2VmaWxlIiA7OwogICAgICAiZ2RiLnBhc2NhbC9NYWtlZmlsZSIpIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyBnZGIucGFzY2FsL01ha2VmaWxlIiA7OwpAQCAtMzEsMTAgKzMx LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJl CiAgICAgICJnZGIucHl0aG9uL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGdkYi5weXRob24vTWFrZWZpbGUiIDs7CiAgICAgICJnZGIucmV2ZXJzZS9NYWtlZmlsZSIpIENP TkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIucmV2ZXJzZS9NYWtlZmlsZSIgOzsKICAgICAg ImdkYi5zdGFicy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIuc3Rh YnMvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYXR0YWNoLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9hdHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIwMTEtMTItMTkgMjI6MDU6MDIuNzgyNDMxOTA1ICsw MTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmMJMjAxMi0wNi0wMiAxODoyNDozOC40OTcyNjY1MzIgKzAyMDAKIEBAIC0wLDAgKzEsMjAgQEAK ICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdk YiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3Bp bnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAg cmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2F0dGFjaDIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2F0dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NjQzMTg4OSAr MDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFj aDIuYwkyMDEyLTA2LTAyIDE4OjI0OjM4LjUwNDI2NjUyOSArMDIwMAogQEAgLTAsMCArMSwyNCBA QAogKy8qIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2Yg Z2RiLCBhbmQgdGhlbgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBz cGlucyBpbiBhIGxvb3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQog KyAgcmV0dXJuICgwKTsKICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvYnJlYWsuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5jCTIwMTEtMTItMTkgMjI6MDU6MDIuNzg3NDMxODg1ICsw MTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsu YwkyMDEyLTA2LTAyIDE4OjI0OjM4LjUwNTI2NjUyOSArMDIwMAogQEAgLTAsMCArMSwxNDYgQEAK ICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpA QCAtMjM2LDEwICsyMzYsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwky MDExLTEyLTE5IDIyOjA1OjAyLjc4NzQzMTg4NSArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTItMDYtMDIgMTg6MjQ6MzguNTA2 MjY2NTMwICswMjAwCiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3Zv aWQgbWFya2VyMyAoYSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhl cmUgKi8KICt2b2lkIG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEz IGhlcmUgKi8KICsjZW5kaWYKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9jb3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIx OS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxMS0xMi0xOSAyMjowNTowMi43 ODc0MzE4ODUgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9jb3JlbWFrZXIuYwkyMDEyLTA2LTAyIDE4OjI0OjM4LjUwNjI2NjUzMCArMDIwMAogQEAg LTAsMCArMSwxNDIgQEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5 NiwgMTk5OQogKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0 MzIsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2NvcmVtYWtlci5jCiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTcuNC41MC4yMDEx MTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTEtMTIt MTkgMjI6MDU6MDIuNzg3NDMxODg1ICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv dGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDEyLTA2LTAyIDE4OjI0OjM4LjUwODI2NjUz MSArMDIwMAogQEAgLTAsMCArMSw0MTcgQEAKICsjICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIw MDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTQsMTAgKzg1NCwxMCBA QCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmV4cAogK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy40 LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAx MS0xMi0xOSAyMzoxMTo1MS4wOTIzMzMwODAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMi0wNi0wMiAxODoyNDozOC41MTAy NjY1MjkgKzAyMDAKIEBAIC0wLDAgKzEsOTYyIEBACiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkw LCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAy MDAwLCAyMDAyLCAyMDAzLCAyMDA0CkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCiArIwogK3NlbmRf Z2RiICJicmVhayAkYnBfbG9jYXRpb24xMiBmb29cbiIKICtnZGJfZXhwZWN0IHsKLSsgIC1yZSAi SnVuayBhdCBlbmQgb2YgYXJndW1lbnRzLi4qJGdkYl9wcm9tcHQgJCJcCisrICAtcmUgIm1hbGZv cm1lZCBsaW5lc3BlYyBlcnJvcjogdW5leHBlY3RlZCBzdHJpbmcsIFwiZm9vXCJcclxuJGdkYl9w cm9tcHQgJCJcCiArICAgICAgICAgIHtwYXNzICJicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2Fy YmFnZSBkaXNhbGxvd2VkIn0KICsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCiArICAgICAgICAgIHtm YWlsICJicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2FyYmFnZSBkaXNhbGxvd2VkIn0KQEAgLTE4 MjEsMTAgKzE4MjEsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2JyZWFrLmV4cAogKyAgICBzZW5kX2dkYiAic2V0IGFyZ3MgbWFpblxuIgogKyAg ICBnZGJfZXhwZWN0IC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7fQogK30KLUluZGV4OiBnZGItNy40 LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmls ZS5leHAJMjAxMS0xMi0xOSAyMjowNTowMi43ODg0MzE4ODEgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAJMjAxMi0wNi0wMiAx ODoyNDozOC41MTEyNjY1MjggKzAyMDAKIEBAIC0wLDAgKzEsMjMzIEBACiArIyBDb3B5cmlnaHQg MTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMAogKyMg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0yMDU5LDEwICsyMDU5LDEwIEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5l eHAKICtnZGJfdGVzdCAidXAiICIjXFswLTlcXSogKlxbMC05eGEtZkgnXF0qIGluIC4qIFxcKC4q XFwpLioiICJ1cCBpbiBjb3JlZmlsZS5leHAgKHJlaW5pdCkiCiArCiArZ2RiX3Rlc3QgImNvcmUi ICJObyBjb3JlIGZpbGUgbm93LiIKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEx MTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4JMjAxMS0xMi0xOSAyMjowNTow Mi43ODg0MzE4ODEgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9NYWtlZmlsZS5pbgkyMDEyLTA2LTAyIDE4OjI0OjM4LjUxMjI2NjUyNyArMDIwMAog QEAgLTAsMCArMSwxOSBAQAogK1ZQQVRIID0gQHNyY2RpckAKICtzcmNkaXIgPSBAc3JjZGlyQAoK ZGlmZiAtLWdpdCBhL2dkYi02LjUtYnoyMDM2NjEtZW1pdC1yZWxvY3MucGF0Y2ggYi9nZGItNi41 LWJ6MjAzNjYxLWVtaXQtcmVsb2NzLnBhdGNoCmluZGV4IDYxZTBkNTYuLmNjOGU1MTUgMTAwNjQ0 Ci0tLSBhL2dkYi02LjUtYnoyMDM2NjEtZW1pdC1yZWxvY3MucGF0Y2gKKysrIGIvZ2RiLTYuNS1i ejIwMzY2MS1lbWl0LXJlbG9jcy5wYXRjaApAQCAtMSwxNCArMSwxNCBAQAotSW5kZXg6IGdkYi03 LjAuOTAuMjAxMDAzMDYvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3JpZy9n ZGIvc3ltZmlsZS5jCTIwMTAtMDMtMDYgMjM6MjA6MzUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMC45MC4yMDEwMDMwNi9nZGIvc3ltZmlsZS5jCTIwMTAtMDMtMDYgMjM6MjY6MjUuMDAwMDAw MDAwICswMTAwCi1AQCAtMzY0Miw2ICszNjQyLDEyIEBAIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0 ZSAoc3RydWN0IG9iamZpbGUKLSB7Ci0gICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOworLS0t IGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTItMDYtMDIgMTg6MjU6 MjAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5j CTIwMTItMDYtMDIgMTg6MjY6MzYuMTQ1MjMyMDU3ICswMjAwCitAQCAtMzYzMCw2ICszNjMwLDEy IEBAIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUKKyAgICAgIERXTyBm aWxlLiAgKi8KKyAgIGJmZCAqYWJmZCA9IHNlY3RwLT5vd25lcjsKICAKICsgIC8qIEV4ZWN1dGFi bGUgZmlsZXMgaGF2ZSBhbGwgdGhlIHJlbG9jYXRpb25zIGFscmVhZHkgcmVzb2x2ZWQuCi0rICAg KiBIYW5kbGUgZmlsZXMgbGlua2VkIHdpdGggLS1lbWl0LXJlbG9jcy4KLSsgICAqIGh0dHA6Ly9z b3VyY2VzLnJlZGhhdC5jb20vbWwvZ2RiLzIwMDYtMDgvbXNnMDAxMzcuaHRtbCAgKi8KKysgICAg IEhhbmRsZSBmaWxlcyBsaW5rZWQgd2l0aCAtLWVtaXQtcmVsb2NzLgorKyAgICAgaHR0cDovL3Nv dXJjZXMucmVkaGF0LmNvbS9tbC9nZGIvMjAwNi0wOC9tc2cwMDEzNy5odG1sICAqLwogKyAgaWYg KChhYmZkLT5mbGFncyAmIEVYRUNfUCkgIT0gMCkKICsgICAgcmV0dXJuIE5VTEw7CiArCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2ggYi9nZGIt Ni41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAppbmRleCBkZWJhYzRlLi43MDRl MjlhIDEwMDY0NAotLS0gYS9nZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRj aAorKysgYi9nZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaApAQCAtMjMs MTEgKzIzLDExIEBAIGluc3RlYWQuCiAKIAlQb3J0IHRvIEdEQi02LjcuCiAKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEyLTAzLTAyIDIyOjE1 OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2FtZDY0LWxp bnV4LXRkZXAuYwkyMDEyLTAzLTAyIDIyOjE2OjEzLjUyNjU2OTE2MyArMDEwMAotQEAgLTI2OCw2 ICsyNjgsODAgQEAgYW1kNjRfbGludXhfcmVnaXN0ZXJfcmVnZ3JvdXBfcCAoc3RydWN0CistLS0g Z2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMJMjAxMi0wNi0w MiAyMTowNTo0NS4zNTIyODAxMjggKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9h bWQ2NC1saW51eC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjoyNS41MzYyNjUzMjUgKzAyMDAKK0BA IC0yNzEsNiArMjcxLDgwIEBAIGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3AgKHN0cnVj dAogIAogIC8qIFNldCB0aGUgcHJvZ3JhbSBjb3VudGVyIGZvciBwcm9jZXNzIFBUSUQgdG8gUEMu ICAqLwogIApAQCAtODcsNyArODcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YW1kNjQtbGludXgtdGRlcC5jCiArYW1kNjRfbGludXhfb3V0ZXJtb3N0X2ZyYW1lIChzdHJ1Y3Qg ZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKICt7CiArICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVf cGMgKHRoaXNfZnJhbWUpOwotKyAgY2hhciAqbmFtZTsKKysgIGNvbnN0IGNoYXIgKm5hbWU7CiAr CiArICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7CiAr CkBAIC0xMDgsNyArMTA4LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2FtZDY0 LWxpbnV4LXRkZXAuYwogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfd3JpdGVfcGMgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBwYykKICB7Ci1AQCAtMTMyMSw2ICsxMzk1 LDggQEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgorQEAgLTEzMzAs NiArMTQwNCw4IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmYKICAK ICAgIHRkZXAtPnhzYXZlX3hjcjBfb2Zmc2V0ID0gSTM4Nl9MSU5VWF9YU0FWRV9YQ1IwX09GRlNF VDsKICAKQEAgLTExNywxMSArMTE3LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hbWQ2NC1saW51eC10ZGVwLmMKICAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hh cmVkIGxpYnJhcmllcy4gICovCiAgICBzZXRfc29saWJfc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZz ZXRzCiAgICAgIChnZGJhcmNoLCBzdnI0X2xwNjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyk7Ci1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYW1kNjQtdGRlcC5jCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvYW1kNjQtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0wMS0wNCAwOToxNjo1Ni4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hbWQ2NC10ZGVwLmMJMjAx Mi0wMy0wMiAyMjoxNzozOS4xMzMyODc1NzEgKzAxMDAKLUBAIC0yMTA4LDYgKzIxMDgsNyBAQCBh bWQ2NF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHN0cnVjdCBmCistLS0gZ2RiLTcuNC41MC4y MDEyMDYwMi5vcmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNTo0NS4zNTIyODAx MjggKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0w Ni0wMiAyMTowNjowMC40MzcyNzQ1NzQgKzAyMDAKK0BAIC0yMTM4LDYgKzIxMzgsNyBAQCBhbWQ2 NF9mcmFtZV91bndpbmRfc3RvcF9yZWFzb24gKHN0cnVjdCBmCiAgewogICAgc3RydWN0IGFtZDY0 X2ZyYW1lX2NhY2hlICpjYWNoZSA9CiAgICAgIGFtZDY0X2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1l LCB0aGlzX2NhY2hlKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvYW1kNjQtdGRlcC5jCiAgCiAgICBpZiAoIWNhY2hlLT5iYXNlX3ApCiAgICAgIHJl dHVybiBVTldJTkRfVU5BVkFJTEFCTEU7Ci1AQCAtMjExNiw2ICsyMTE3LDEwIEBAIGFtZDY0X2Zy YW1lX3Vud2luZF9zdG9wX3JlYXNvbiAoc3RydWN0IGYKK0BAIC0yMTQ2LDYgKzIxNDcsMTAgQEAg YW1kNjRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChzdHJ1Y3QgZgogICAgaWYgKGNhY2hlLT5i YXNlID09IDApCiAgICAgIHJldHVybiBVTldJTkRfT1VURVJNT1NUOwogIApAQCAtMTQwLDcgKzE0 MCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hbWQ2NC10ZGVwLmMKICAgIHJl dHVybiBVTldJTkRfTk9fUkVBU09OOwogIH0KICAKLUBAIC0yMTI1LDYgKzIxMzAsNyBAQCBhbWQ2 NF9mcmFtZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqCitAQCAtMjE1NSw2ICsyMTYwLDcg QEAgYW1kNjRfZnJhbWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKgogIHsKICAgIHN0cnVj dCBhbWQ2NF9mcmFtZV9jYWNoZSAqY2FjaGUgPQogICAgICBhbWQ2NF9mcmFtZV9jYWNoZSAodGhp c19mcmFtZSwgdGhpc19jYWNoZSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2FtZDY0LXRkZXAuYwogIAogICAgaWYgKCFjYWNoZS0+YmFzZV9wKQog ICAgICByZXR1cm47Ci1AQCAtMjEzMyw2ICsyMTM5LDEwIEBAIGFtZDY0X2ZyYW1lX3RoaXNfaWQg KHN0cnVjdCBmcmFtZV9pbmZvICoKK0BAIC0yMTYzLDYgKzIxNjksMTAgQEAgYW1kNjRfZnJhbWVf dGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKgogICAgaWYgKGNhY2hlLT5iYXNlID09IDApCiAg ICAgIHJldHVybjsKICAKQEAgLTE1OSwxMSArMTU5LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hbWQ2NC10ZGVwLmMKICAgICgqdGhpc19pZCkgPSBmcmFtZV9pZF9idWlsZCAo Y2FjaGUtPmJhc2UgKyAxNiwgY2FjaGUtPnBjKTsKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvaTM4Ni10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9p Mzg2LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv aTM4Ni10ZGVwLmMJMjAxMi0wMy0wMiAyMjoxNTo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9pMzg2LXRkZXAuYwkyMDEyLTAzLTAyIDIyOjE2OjEzLjUyODU2 OTE1NyArMDEwMAotQEAgLTc2MTMsNiArNzYxMyw5IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1 Y3QgZ2RiYXJjaF9pbmZvIGkKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2kzODYt dGRlcC5jCTIwMTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvaTM4Ni10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjowMC40NjYyNzQ1NjIg KzAyMDAKK0BAIC03NjM5LDYgKzc2MzksOSBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdk YmFyY2hfaW5mbyBpCiAgCiAgICB0ZGVwLT54c2F2ZV94Y3IwX29mZnNldCA9IC0xOwogIApAQCAt MTczLDEwICsxNzMsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2kzODYtdGRl cC5jCiAgICB0ZGVwLT5yZWNvcmRfcmVnbWFwID0gaTM4Nl9yZWNvcmRfcmVnbWFwOwogIAogICAg c2V0X2dkYmFyY2hfbG9uZ19sb25nX2FsaWduX2JpdCAoZ2RiYXJjaCwgMzIpOwotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2kzODYtdGRlcC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvaTM4Ni10ZGVwLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL2kzODYtdGRlcC5oCTIwMTItMDMtMDIgMjI6MTU6NDguMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvaTM4Ni10ZGVwLmgJMjAxMi0wMy0wMiAyMjox NjoxMy41Mjk1NjkxNTQgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2kz ODYtdGRlcC5oCTIwMTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvaTM4Ni10ZGVwLmgJMjAxMi0wNi0wMiAyMTowNjowMC40ODYyNzQ1 NjggKzAyMDAKIEBAIC0yMTksNiArMjE5LDkgQEAgc3RydWN0IGdkYmFyY2hfdGRlcAogICAgaW50 ICgqaTM4Nl9zeXNlbnRlcl9yZWNvcmQpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKICAg IC8qIFBhcnNlIHN5c2NhbGwgYXJncy4gICovCkBAIC0xODcsMTEgKzE4NywxMSBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvaTM4Ni10ZGVwLmgKICB9OwogIAogIC8qIEZsb2F0aW5n LXBvaW50IHJlZ2lzdGVycy4gICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvaWE2 NC10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pYTY0LXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvaWE2NC10ZGVwLmMJMjAx Mi0wMy0wMiAyMjoxNTo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9pYTY0LXRkZXAuYwkyMDEyLTAzLTAyIDIyOjE2OjEzLjUyOTU2OTE1NCArMDEwMAotQEAg LTIxODEsNiArMjE4MSwxMzggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2 NF9mcgorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvaWE2NC10ZGVwLmMJMjAxMi0w Ni0wMiAyMTowNTo0NS4zNTIyODAxMjggKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9pYTY0LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjA2OjAwLjQ5MDI3NDU1MiArMDIwMAorQEAgLTIx NzYsNiArMjE3NiwxMzggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2NF9m cgogICAgZGVmYXVsdF9mcmFtZV9zbmlmZmVyCiAgfTsKICAKQEAgLTMzMCw3ICszMzAsNyBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvaWE2NC10ZGVwLmMKICAvKiBTaWduYWwgdHJh bXBvbGluZXMuICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtNDE1Myw2ICs0Mjg1LDcgQEAgaWE2 NF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQorQEAgLTQxNDYsNiArNDI3OCw3 IEBAIGlhNjRfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKICAgIHNldF9nZGJh cmNoX2R1bW15X2lkIChnZGJhcmNoLCBpYTY0X2R1bW15X2lkKTsKICAKICAgIHNldF9nZGJhcmNo X3Vud2luZF9wYyAoZ2RiYXJjaCwgaWE2NF91bndpbmRfcGMpOwpAQCAtMzM4LDEwICszMzgsMTAg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2lhNjQtdGRlcC5jCiAgI2lmZGVmIEhB VkVfTElCVU5XSU5EX0lBNjRfSAogICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2Ri YXJjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpYTY0X2xpYnVud2luZF9z aWd0cmFtcF9mcmFtZV91bndpbmQpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYnQtY2xvbmUtc3RvcC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25l LXN0b3AuYwkyMDEyLTAzLTAyIDIyOjE2OjEzLjUzMDU2OTE1MSArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMJMjAx Mi0wNi0wMiAyMTowNjowMC41MTQyNzQ1NDQgKzAyMDAKIEBAIC0wLDAgKzEsMzkgQEAKICsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMzgy LDEwICszODIsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMKICsJZm9yICg7OykKICsJCXBhdXNlKCk7CiArfQot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1j bG9uZS1zdG9wLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmV4cAkyMDEyLTAzLTAy IDIyOjE2OjEzLjUzMDU2OTE1MSArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmV4cAkyMDEyLTA2LTAyIDIxOjA2OjAw LjUxNTI3NDU0NyArMDIwMAogQEAgLTAsMCArMSw2MSBAQAogKyMgQ29weXJpZ2h0IDIwMDYgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWls ZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29y ZS1hcy1hcmcucGF0Y2gKaW5kZXggZGUxY2NhZC4uOTY4NzcxMiAxMDA2NDQKLS0tIGEvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQt bG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01OCwxMSArNTgsMTEgQEAgSHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDA1MTcuaHRtbAogCSogZXhlYy5j IChleGVjX2ZpbGVfYXR0YWNoKTogUHJpbnQgYSBtb3JlIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlm IHRoZQogCXVzZXIgZGlkICJnZGIgY29yZSIuCiAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi9leGNlcHRpb25zLmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9leGNlcHRp b25zLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2V4Y2Vw dGlvbnMuaAkyMDExLTEwLTA5IDIxOjIxOjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2V4Y2VwdGlvbnMuaAkyMDExLTEyLTE5IDAxOjQxOjIwLjkwMDUwOTM0 NyArMDEwMAotQEAgLTg4LDYgKzg4LDkgQEAgZW51bSBlcnJvcnMgeworLS0tIGdkYi03LjQuNTAu MjAxMjA2MDIub3JpZy9nZGIvZXhjZXB0aW9ucy5oCTIwMTItMDEtMDQgMDk6MTc6MDEuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhjZXB0aW9ucy5oCTIwMTIt MDYtMDIgMTk6NTk6MjIuMTk1MTE0MDUyICswMjAwCitAQCAtODYsNiArODYsOSBAQCBlbnVtIGVy cm9ycyB7CiAgICAvKiBEV19PUF9HTlVfZW50cnlfdmFsdWUgcmVzb2x2aW5nIGZhaWxlZC4gICov CiAgICBOT19FTlRSWV9WQUxVRV9FUlJPUiwKICAKQEAgLTcyLDExICs3MiwxMSBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXhjZXB0aW9ucy5oCiAgICAvKiBBZGQgbW9yZSBlcnJv cnMgaGVyZS4gICovCiAgICBOUl9FUlJPUlMKICB9OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2V4ZWMuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2V4ZWMuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZXhlYy5jCTIwMTEtMDMt MjMgMTk6MjM6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv ZXhlYy5jCTIwMTEtMTItMTkgMDE6NDE6MDQuODYzNTY4ODQ2ICswMTAwCi1AQCAtMzUsNiArMzUs NyBAQAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZXhlYy5jCTIwMTItMDUtMjkg MTY6MjM6MzkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhl Yy5jCTIwMTItMDYtMDIgMTk6NTk6MjIuMTk2MTE0MDUyICswMjAwCitAQCAtMzMsNiArMzMsNyBA QAogICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogICNp bmNsdWRlICJwcm9nc3BhY2UuaCIKQEAgLTg0LDcgKzg0LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2V4ZWMuYwogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJy ZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTI1NCwxMiArMjU1LDI3IEBAIGV4ZWNfZmlsZV9hdHRh Y2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIKK0BAIC0yNTEsMTIgKzI1MiwyNyBAQCBleGVjX2Zp bGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50IGZyCiAgCiAgICAgICAgaWYgKCFiZmRfY2hl Y2tfZm9ybWF0X21hdGNoZXMgKGV4ZWNfYmZkLCBiZmRfb2JqZWN0LCAmbWF0Y2hpbmcpKQogIAl7 CkBAIC0xMTUsMTMgKzExNSwxMyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXhl Yy5jCiAgCX0KICAKICAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9ubHkgYmUgcnVuIGZv ciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29yCi1JbmRleDogZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbWFpbi5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9tYWluLmMJMjAxMS0x Mi0xOSAwMDoyODowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9tYWluLmMJMjAxMS0xMi0xOSAwMTo0MTowNC44NjM1Njg4NDYgKzAxMDAKLUBAIC0yNDgsNiAr MjQ4LDM2IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKLSAgIHJldHVybiAx OwotIH0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA2LTAy IDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL21h aW4uYwkyMDEyLTA2LTAyIDE5OjU5OjQyLjA4MjEwNzQ5OSArMDIwMAorQEAgLTI2Niw2ICsyNjYs MzYgQEAgdHlwZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKyAvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFy Z19zKS4gICovCisgREVGX1ZFQ19PIChjbWRhcmdfcyk7CiAgCiArLyogQ2FsbCBleGVjX2ZpbGVf YXR0YWNoLiAgSWYgaXQgZGV0ZWN0ZWQgRklMRU5BTUUgaXMgYSBjb3JlIGZpbGUgY2FsbAogKyAg IGNvcmVfZmlsZV9jb21tYW5kLiAgUHJpbnQgdGhlIG9yaWdpbmFsIGV4ZWNfZmlsZV9hdHRhY2gg ZXJyb3Igb25seSBpZgpAQCAtMTU2LDcgKzE1Niw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi9tYWluLmMKICBzdGF0aWMgaW50CiAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK ICB7Ci1AQCAtNzA0LDYgKzczNCw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAt NzY0LDYgKzc5NCw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCXsKICAJICBzeW1h cmcgPSBhcmd2W29wdGluZF07CiAgCSAgZXhlY2FyZyA9IGFyZ3Zbb3B0aW5kXTsKQEAgLTE2NSw3 ICsxNjUsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFpbi5jCiAgCSAgb3B0 aW5kKys7CiAgCX0KICAKLUBAIC04NDUsMTEgKzg3NywyNSBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQorQEAgLTkxOSwxMSArOTUxLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CiAgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKICAgICAgICAmJiBzdHJjbXAgKGV4ZWNhcmcsIHN5 bWFyZykgPT0gMCkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUt cnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0t bGlicnBtLXdvcmthcm91bmQucGF0Y2gKaW5kZXggNTgwN2FjZS4uNjE3YmVmOSAxMDA2NDQKLS0t IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKKysr IGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKQEAg LTEsNiArMSw4IEBACi0tLS0gLi9nZGIvZWxmcmVhZC5jCTIwMTAtMTAtMTQgMTc6MDc6NDUuMDAw MDAwMDAwICswMjAwCi0rKysgLi9nZGIvZWxmcmVhZC5jCTIwMTAtMTAtMTQgMTc6MDY6MzAuMDAw MDAwMDAwICswMjAwCi1AQCAtMTM4Miw2ICsxMzgyLDE4IEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1l IChzdHJ1Y3QgYnVpbGRfaWQgKmIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZy ZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2VsZnJl YWQuYwkyMDEyLTA2LTAyIDIxOjM1OjA5LjY2OTUxMDc1NyArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL2VsZnJlYWQuYwkyMDEyLTA2LTAyIDIxOjM1OjMxLjEwNjUwMjY2MCArMDIw MAorQEAgLTE2NTgsNiArMTY1OCwxOSBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1 aWxkX2lkICpiCiAgI2luY2x1ZGUgPGRsZmNuLmg+CiAgI2VuZGlmCiAgCkBAIC0xMCw2ICsxMiw3 IEBACiArICAgRW5hYmxlIG9yIGRpc2FibGUgYSBzaWduYWwgaGFuZGxlci4gIFNJR05VTTogc2ln bmFsIHRvIGVuYWJsZSAob3IgZGlzYWJsZQogKyAgIGlmIG5lZ2F0aXZlKS4gIEhBTkRMRVI6IHNh X3NpZ2FjdGlvbiBoYW5kbGVyIChvciBOVUxMIHRvIHVzZQogKyAgIHJwbXNxSGFuZGxlcigpKS4g IFJldHVybnM6IG5vLiBvZiByZWZzLCAtMSBvbiBlcnJvci4gICovCisrZXh0ZXJuIGludCBycG1z cUVuYWJsZSAoaW50IHNpZ251bSwgLyogcnBtc3FBY3Rpb25fdCBoYW5kbGVyICovIHZvaWQgKmhh bmRsZXIpOwogK2ludAogK3JwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlvbl90 IGhhbmRsZXIgKi8gdm9pZCAqaGFuZGxlcikKICt7CkBAIC0xOSw4ICsyMiwxMCBAQAogIC8qIFRo aXMgTUlTU0lOR19SUE1fSEFTSCB0cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIG1p c3NpbmcgcnBtIGZpbGVzCiAgICAgYW5kIGF2b2lkIHRoZWlyIGR1cGxpY2l0aWVzIGR1cmluZyBh IHNpbmdsZSBpbmZlcmlvciBydW4uICAqLwogIAotLS0tIC4vZ2RiL3Byb2Mtc2VydmljZS5saXN0 CTIwMTAtMDUtMjggMjA6NTA6MzAuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvcHJvYy1zZXJ2 aWNlLmxpc3QJMjAxMC0xMC0xNCAxNzowNjozMC4wMDAwMDAwMDAgKzAyMDAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9wcm9jLXNlcnZpY2UubGlzdAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QJMjAxMi0wNi0wMiAy MTozNTowOS42Njk1MTA3NTcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9wcm9j LXNlcnZpY2UubGlzdAkyMDEyLTA2LTAyIDIxOjM1OjE0LjI5NjUwODk4OSArMDIwMAogQEAgLTM3 LDQgKzM3LDcgQEAKICAgIHBzX3BzdG9wOwogICAgcHNfcHRyZWFkOwoKZGlmZiAtLWdpdCBhL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1y cG0ucGF0Y2gKaW5kZXggNTYwMmU3Yy4uYmE2NDU1MSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWls ZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0 Y2gKQEAgLTEsNyArMSw3IEBACi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXZlbnQt dG9wLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9ldmVudC10b3AuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMS0w OS0yMSAxNzoyMToyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9ldmVudC10b3AuYwkyMDExLTEyLTE5IDAxOjE4OjU2LjA4NzUzOTI1MSArMDEwMAorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMi0wNi0wMiAyMTowODow OC42NTEyMjczNDcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9ldmVudC10b3Au YwkyMDEyLTA2LTAyIDIxOjA4OjIzLjQ3OTIyMTg4NSArMDIwMAogQEAgLTM2LDYgKzM2LDcgQEAK ICAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICAjaW5jbHVkZSAiY29udGludWF0aW9ucy5oIgpAQCAt MjgsMTEgKzI4LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9ldmVudC10b3Au YwogICAgLyogRWFjaCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBydWxlcyBvbiBkaXNwbGF5aW5n IHRoZSBjb21tYW5kCiAgICAgICBwcm9tcHQuICAqLwogICAgaWYgKCFjdXJyZW50X2ludGVycF9k aXNwbGF5X3Byb21wdF9wICgpKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2VsZnJl YWQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2VsZnJlYWQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMTItMTkg MDA6NTQ6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZWxm cmVhZC5jCTIwMTEtMTItMTkgMDE6MTY6MTUuMjQ4NDU1ODk3ICswMTAwCi1AQCAtNDcsNiArNDcs NyBAQAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTItMDYt MDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv ZWxmcmVhZC5jCTIwMTItMDYtMDIgMjE6MDg6MjMuNDgyMjIxODgyICswMjAwCitAQCAtNDgsNiAr NDgsNyBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgImdkYmNtZC5oIgogICNp bmNsdWRlICJvYnNlcnZlci5oIgpAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvZWxmcmVhZC5jCiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAgCiAgZXh0ZXJu IHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7Ci1AQCAtMTYyMiw4ICsxNjIzLDM2MSBA QCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCitAQCAtMTY0Nyw4ICsx NjQ4LDM2MSBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCiAgICBy ZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTQwMyw3ICs0MDMsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvZWxmcmVhZC5jCiAgICAgYXZvaWRhbmNlLiAgKi8KICAKICBzdHJ1Y3Qg bWlzc2luZ19maWxlcGFpcgotQEAgLTE2NzcsMTEgKzIwMzEsMTcgQEAgbWlzc2luZ19maWxlcGFp cl9jaGFuZ2UgKHZvaWQpCitAQCAtMTcwMiwxMSArMjA1NiwxNyBAQCBtaXNzaW5nX2ZpbGVwYWly X2NoYW5nZSAodm9pZCkKICAgICAgICAvKiBBbGwgdGhlaXIgbWVtb3J5IGNhbWUganVzdCBmcm9t IG1pc3NpbmdfZmlsZXBhaXJfT0JTVEFDSy4gICovCiAgICAgICAgbWlzc2luZ19maWxlcGFpcl9o YXNoID0gTlVMTDsKICAgICAgfQpAQCAtNDIxLDcgKzQyMSw3IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9lbGZyZWFkLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwog IH0KICAKLUBAIC0xNzQ4LDE0ICsyMTA4LDM1IEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0 IGNoYXIgKmJpbmFyeSwKK0BAIC0xNzczLDE0ICsyMTMzLDM1IEBAIGRlYnVnX3ByaW50X21pc3Np bmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsK ICAKQEAgLTQ2NCwxMSArNDY0LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9l bGZyZWFkLmMKICB9CiAgCiAgc3RhdGljIGNoYXIgKgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3ltZmlsZS5o CTIwMTEtMTItMTkgMDA6NTQ6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvc3ltZmlsZS5oCTIwMTEtMTItMTkgMDE6MTY6MTUuMjQ5NDU1ODkzICswMTAwCi1A QCAtNTY4LDYgKzU2OCw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJf Z2UKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEyLTA2LTAy IDIxOjA4OjA4LjY1MTIyNzM0NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5 bWZpbGUuaAkyMDEyLTA2LTAyIDIxOjA4OjIzLjQ5OTIyMTg3NyArMDIwMAorQEAgLTYyMSw2ICs2 MjEsOCBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCiAgZXh0ZXJu IGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkLAog IAkJCQkgICBjaGFyICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRl cm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNo YXIgKmRlYnVnKTsKQEAgLTQ3NywxMSArNDc3LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi9zeW1maWxlLmgKICAKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTEtMTItMTkgMDA6NTQ6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMTItMTkgMDE6MTY6MTUuMjUwNDU1ODg5 ICswMTAwCi1AQCAtMTM4Nyw3ICsxMzg3LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0g eworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CTIwMTItMDYtMDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDYtMDIgMjE6MDg6MjMuNTEwMjIx ODczICswMjAwCitAQCAtMTM4OCw3ICsxMzg4LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7 IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQog ICAgICB9CkBAIC00OTAsMTEgKzQ5MCwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVy Ym9zZSAwXG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsK LUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTEyLTE5IDAwOjU0OjQ5LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAJMjAxMS0xMi0xOSAwMToyMDozNC45MjExNjM5NzcgKzAxMDAKLUBAIC0yMTIsNyArMjEy LDcgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CistLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTItMDYt MDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv dGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEyLTA2LTAyIDIxOjA4OjIzLjUyMzIyMTg2 OSArMDIwMAorQEAgLTIxMyw3ICsyMTMsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsg YXJncyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAg CX0KICAgICAgfQpAQCAtNTAzLDExICs1MDMsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgc2VuZF9nZGIgIjE5MC1n ZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJl ICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlf Z2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90dWkvdHVpLWlu dGVycC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdHVpL3R1aS1pbnRlcnAuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdHVpL3R1aS1pbnRl cnAuYwkyMDExLTA5LTEyIDIzOjI0OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTI0NTU4 ODMgKzAxMDAKLUBAIC0zMSw2ICszMSw3IEBACistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi90dWkvdHVpLWludGVycC5jCTIwMTItMDYtMDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEyLTA2LTAy IDIxOjA4OjIzLjUyNDIyMTg2OSArMDIwMAorQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSAi dHVpL3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCiAgI2luY2x1ZGUgImV4Y2VwdGlv bnMuaCIKQEAgLTUxNSwxNSArNTE1LDE2IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi90dWkvdHVpLWludGVycC5jCiAgCiAgLyogU2V0IHRvIDEgd2hlbiB0aGUgVFVJIG1vZGUgbXVz dCBiZSBhY3RpdmF0ZWQgd2hlbiB3ZSBmaXJzdCBzdGFydAogICAgIGdkYi4gICovCi1JbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2FjbG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4 Lm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMS0wMi0xNSAyMjowNTo1My4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CTIwMTEtMTItMTkgMDE6MTY6 MTUuMjUyNDU1ODgzICswMTAwCi1AQCAtMTksNiArMTksMTYyIEBAIFlvdSBoYXZlIGFub3RoZXIg dmVyc2lvbiBvZiBhdXRvY29uZi4gIEkKLSBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBu ZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KLSBUbyBkbyBzbywg dXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBh dXRvcmVjb25mJy5dKV0pCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9hY2xvY2Fs Lm00CTIwMTItMDYtMDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvYWNsb2NhbC5tNAkyMDEyLTA2LTAyIDIxOjA4OjIzLjU0NTIyMTg1OCArMDIw MAorQEAgLTExLDYgKzExLDE2NCBAQAorICMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorICMgUEFSVElDVUxBUiBQVVJQT1NFLgog IAogKyMgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAg ICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKysjIHNlcmlhbCAxIChwa2ctY29uZmlnLTAuMjQp CiArIyAKICsjIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5l dHNwbGl0LmNvbT4uCiArIwpAQCAtNTUxLDcgKzU1MiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvYWNsb2NhbC5tNAogK0FDX0RFRlVOKFtQS0dfUFJPR19QS0dfQ09ORklHXSwK ICtbbTRfcGF0dGVybl9mb3JiaWQoW15fP1BLR19bQS1aX10rJF0pCiArbTRfcGF0dGVybl9hbGxv dyhbXlBLR19DT05GSUcoX1BBVEgpPyRdKQotK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBbcGF0 aCB0byBwa2ctY29uZmlnIHV0aWxpdHldKWRubAorK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBb cGF0aCB0byBwa2ctY29uZmlnIHV0aWxpdHldKQorK0FDX0FSR19WQVIoW1BLR19DT05GSUdfUEFU SF0sIFtkaXJlY3RvcmllcyB0byBhZGQgdG8gcGtnLWNvbmZpZydzIHNlYXJjaCBwYXRoXSkKKytB Q19BUkdfVkFSKFtQS0dfQ09ORklHX0xJQkRJUl0sIFtwYXRoIG92ZXJyaWRpbmcgcGtnLWNvbmZp ZydzIGJ1aWx0LWluIHNlYXJjaCBwYXRoXSkKKysKICtpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0df Q09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCiArCUFDX1BBVEhfVE9PTChbUEtHX0NPTkZJR10s IFtwa2ctY29uZmlnXSkKICtmaQpAQCAtNTY0LDcgKzU2OCw2IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CiArCQlBQ19NU0dfUkVTVUxUKFtub10pCiArCQlQS0df Q09ORklHPSIiCiArCWZpCi0rCQkKICtmaVtdZG5sCiArXSkjIFBLR19QUk9HX1BLR19DT05GSUcK ICsKQEAgLTU3MywyMSArNTc2LDIwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9h Y2xvY2FsLm00CiArIyBDaGVjayB0byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9mIG1v ZHVsZXMgZXhpc3RzLiAgU2ltaWxhcgogKyMgdG8gUEtHX0NIRUNLX01PRFVMRVMoKSwgYnV0IGRv ZXMgbm90IHNldCB2YXJpYWJsZXMgb3IgcHJpbnQgZXJyb3JzLgogKyMKLSsjCi0rIyBTaW1pbGFy IHRvIFBLR19DSEVDS19NT0RVTEVTLCBtYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgaW5zdGFuY2Ug b2YKLSsjIHRoaXMgb3IgUEtHX0NIRUNLX01PRFVMRVMgaXMgY2FsbGVkLCBvciBtYWtlIHN1cmUg dG8gY2FsbAotKyMgUEtHX0NIRUNLX0VYSVNUUyBtYW51YWxseQorKyMgUGxlYXNlIHJlbWVtYmVy IHRoYXQgbTQgZXhwYW5kcyBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysjIG9u bHkgYXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBpbiBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBmaXJz dCBwbGFjZQorKyMgaXQncyBjYWxsZWQgbWlnaHQgYmUgc2tpcHBlZCAoc3VjaCBhcyBpZiBpdCBp cyB3aXRoaW4gYW4gImlmIiwgeW91CisrIyBoYXZlIHRvIGNhbGwgUEtHX0NIRUNLX0VYSVNUUyBt YW51YWxseQogKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICtBQ19ERUZVTihbUEtHX0NIRUNLX0VYSVNUU10sCiArW0FDX1JF UVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAogK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklH IiAmJiBcCiArICAgIEFDX1JVTl9MT0coWyRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJy b3JzICIkMSJdKTsgdGhlbgotKyAgbTRfaWZ2YWwoWyQyXSwgWyQyXSwgWzpdKQorKyAgbTRfZGVm YXVsdChbJDJdLCBbOl0pCiArbTRfaWZ2YWxuKFskM10sIFtlbHNlCiArICAkM10pZG5sCiArZmld KQogKwotKwogKyMgX1BLR19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10p CiArIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICttNF9k ZWZpbmUoW19QS0dfQ09ORklHXSwKQEAgLTY0MCw2ICs2NDIsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvYWNsb2NhbC5tNAogK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBm b3IgbW9yZSBkZXRhaWxzLl0pCiArCiAraWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgor KyAgIAlBQ19NU0dfUkVTVUxUKFtub10pCiArICAgICAgICBfUEtHX1NIT1JUX0VSUk9SU19TVVBQ T1JURUQKICsgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHll czsgdGhlbgogKwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1l cnJvcnMgLS1wcmludC1lcnJvcnMgIiQyIiAyPiYxYApAQCAtNjQ5LDcgKzY1Miw3IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CiArCSMgUHV0IHRoZSBuYXN0eSBl cnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogKwllY2hvICIkJDFb XV9QS0dfRVJST1JTIiA+JkFTX01FU1NBR0VfTE9HX0ZECiArCi0rCWlmZWxzZShbJDRdLCAsIFtB Q19NU0dfRVJST1IoZG5sCisrCW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19FUlJPUigKICtbUGFj a2FnZSByZXF1aXJlbWVudHMgKCQyKSB3ZXJlIG5vdCBtZXQ6CiArCiArJCQxX1BLR19FUlJPUlMK QEAgLTY1NywzNiArNjYwLDM1IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2xv Y2FsLm00CiArQ29uc2lkZXIgYWRqdXN0aW5nIHRoZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1l bnQgdmFyaWFibGUgaWYgeW91CiAraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJk IHByZWZpeC4KICsKLStfUEtHX1RFWFQKLStdKV0sCi0rCQlbQUNfTVNHX1JFU1VMVChbbm9dKQot KyAgICAgICAgICAgICAgICAkNF0pCisrX1BLR19URVhUXSkKKysgICAgICAgIF0pCiArZWxpZiB0 ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotKwlpZmVsc2UoWyQ0XSwgLCBbQUNfTVNH X0ZBSUxVUkUoZG5sCisrICAgICAJQUNfTVNHX1JFU1VMVChbbm9dKQorKwltNF9kZWZhdWx0KFsk NF0sIFtBQ19NU0dfRkFJTFVSRSgKICtbVGhlIHBrZy1jb25maWcgc2NyaXB0IGNvdWxkIG5vdCBi ZSBmb3VuZCBvciBpcyB0b28gb2xkLiAgTWFrZSBzdXJlIGl0CiAraXMgaW4geW91ciBQQVRIIG9y IHNldCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAogK3Bh dGggdG8gcGtnLWNvbmZpZy4KICsKICtfUEtHX1RFWFQKICsKLStUbyBnZXQgcGtnLWNvbmZpZywg c2VlIDxodHRwOi8vcGtnLWNvbmZpZy5mcmVlZGVza3RvcC5vcmcvPi5dKV0sCi0rCQlbJDRdKQor K1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9y Zy8+Ll0pCisrICAgICAgICBdKQogK2Vsc2UKICsJJDFbXV9DRkxBR1M9JHBrZ19jdl9bXSQxW11f Q0ZMQUdTCiArCSQxW11fTElCUz0kcGtnX2N2X1tdJDFbXV9MSUJTCiArICAgICAgICBBQ19NU0df UkVTVUxUKFt5ZXNdKQotKwlpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorKwkkMwogK2ZpW11kbmwK ICtdKSMgUEtHX0NIRUNLX01PRFVMRVMKICsKLSAjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywg MjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0g IwotICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcuaW4KKyAjIEFNX0NP TkRJVElPTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0g QXV0b2NvbmYgLSotCisgCisgIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMs IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9j b25maWcuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2Nv bmZpZy5pbgkyMDExLTExLTIwIDA5OjU5OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy5pbgkyMDExLTEyLTE5IDAxOjE2OjE1LjI1MzQ1NTg3OSAr MDEwMAotQEAgLTQ2LDYgKzQ2LDkgQEAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2Ri L2NvbmZpZy5pbgkyMDEyLTA2LTAyIDIxOjA4OjA4LjY1MTIyNzM0NyArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL2NvbmZpZy5pbgkyMDEyLTA2LTAyIDIxOjA4OjIzLjU0NjIyMTg1 OSArMDIwMAorQEAgLTM2LDYgKzM2LDkgQEAKICAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCB0 YXJnZXQgdmVjdG9yLiAqLwogICN1bmRlZiBERUZBVUxUX0JGRF9WRUMKICAKQEAgLTY5Niw3MCAr Njk4LDc4IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcuaW4KICAvKiBE ZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2Vy J3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFCTEVf TkxTCi1AQCAtMjMzLDYgKzIzNiw5IEBACitAQCAtMjE2LDYgKzIxOSw5IEBACiAgLyogRGVmaW5l IGlmIFB5dGhvbiAyLjcgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJQWVRIT04y XzcKICAKICsvKiBEZWZpbmUgaWYgbGlicnBtIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICsj dW5kZWYgSEFWRV9MSUJSUE0KICsKLSAvKiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMg YmVpbmcgdXNlZC4gKi8KLSAjdW5kZWYgSEFWRV9MSUJVTldJTkQKKyAvKiBEZWZpbmUgdG8gMSBp ZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1pYTY0Lmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRl ZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9jb25maWd1cmUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWd1cmUKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEx LTExLTIwIDA5OjU5OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2NvbmZpZ3VyZQkyMDExLTEyLTE5IDAxOjE2OjE1LjI1NjQ1NTg2NyArMDEwMAotQEAgLTY4 NCw2ICs2ODQsOSBAQCBSRVBPUlRfQlVHU19UTworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3Jp Zy9nZGIvY29uZmlndXJlCTIwMTItMDYtMDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29uZmlndXJlCTIwMTItMDYtMDIgMjE6MjA6NTMuMjQ1 ODM4MTIxICswMjAwCitAQCAtNjgwLDYgKzY4MCwxMSBAQCBSRVBPUlRfQlVHU19UTwogIFBLR1ZF UlNJT04KICBUQVJHRVRfT0JTCiAgc3ViZGlycwogK1JQTV9MSUJTCiArUlBNX0NGTEFHUworK1BL R19DT05GSUdfTElCRElSCisrUEtHX0NPTkZJR19QQVRICiArUEtHX0NPTkZJRwogIEdEQl9EQVRB RElSCiAgREVCVUdESVIKLSBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAtOTUyLDYgKzk1NSw3IEBA IGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCi0gd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3 aXRoX2dkYl9kYXRhZGlyCisgTUFLRUlORk9fRVhUUkFfRkxBR1MKK0BAIC03ODAsNiArNzg1LDcg QEAgd2l0aF9nZGJfZGF0YWRpcgogIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKKyB3aXRoX2F1dG9f bG9hZF9kaXIKKyB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKICt3aXRoX3JwbQogIGVuYWJsZV90 YXJnZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RiY2xpCi1AQCAtOTk1LDYgKzk5 OSw5IEBAIExERkxBR1MKLSBMSUJTCi0gQ1BQRkxBR1MKK0BAIC04MjUsNiArODMxLDExIEBAIENQ UEZMQUdTCiAgQ1BQCisgTUFLRUlORk8KKyBNQUtFSU5GT0ZMQUdTCiArUEtHX0NPTkZJRworK1BL R19DT05GSUdfUEFUSAorK1BLR19DT05GSUdfTElCRElSCiArUlBNX0NGTEFHUwogK1JQTV9MSUJT CiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NTgsNiArMTY2NSw4IEBAIE9wdGlvbmFs IFBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQotICAg LS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKK0BAIC0x NDk0LDYgKzE1MDUsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFstLXdpdGgtYXV0by1sb2FkLWRpcl0KKyAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZS1wYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1s b2FkZWQgZmlsZXMgbG9jYXRpb25zCiArICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBy cG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAogKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1saWJ1bndpbmQg ICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKKyAgIC0td2l0aC1s aWJ1bndpbmQtaWE2NCAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRh cmdldHMKICAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkg aW5zdGVhZCBvZiB0aGUgdGVybWNhcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFy eQotQEAgLTE2OTYsNiArMTcwNSw5IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFy aWFibGVzOgotICAgQ1BQRkxBR1MgICAgQy9DKysvT2JqZWN0aXZlIEMgcHJlcHJvY2Vzc29yIGZs YWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZgotICAgICAgICAgICAgICAgeW91IGhhdmUgaGVh ZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+Ci0gICBDUFAgICAg ICAgICBDIHByZXByb2Nlc3NvcgorQEAgLTE1MzUsNiArMTU0OCwxMyBAQCBTb21lIGluZmx1ZW50 aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIE1BS0VJTkZPICAgIFBhcmVudCBjb25maWd1 cmUgZGV0ZWN0cyBpZiBpdCBpcyBvZiBzdWZmaWNpZW50IHZlcnNpb24uCisgICBNQUtFSU5GT0ZM QUdTCisgICAgICAgICAgICAgICBQYXJhbWV0ZXJzIGZvciBNQUtFSU5GTy4KICsgIFBLR19DT05G SUcgIHBhdGggdG8gcGtnLWNvbmZpZyB1dGlsaXR5CisrICBQS0dfQ09ORklHX1BBVEgKKysgICAg ICAgICAgICAgIGRpcmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGgK KysgIFBLR19DT05GSUdfTElCRElSCisrICAgICAgICAgICAgICBwYXRoIG92ZXJyaWRpbmcgcGtn LWNvbmZpZydzIGJ1aWx0LWluIHNlYXJjaCBwYXRoCiArICBSUE1fQ0ZMQUdTICBDIGNvbXBpbGVy IGZsYWdzIGZvciBSUE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogKyAgUlBNX0xJQlMgICAgbGlu a2VyIGZsYWdzIGZvciBSUE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICAgWUFDQyAgICAgICAg VGhlIGBZZXQgQW5vdGhlciBDIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIERlZmF1 bHRzIHRvCiAgICAgICAgICAgICAgICB0aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6IGBi aXNvbiAteScsIGBieWFjYycsIGB5YWNjJy4KICAgIFlGTEFHUyAgICAgIFRoZSBsaXN0IG9mIGFy Z3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAtNzk2 OCw2ICs3OTgwLDQ4NiBAQCBfQUNFT0YKLSBmaQotIAorQEAgLTUwMTUsNiArNTAzNSw0OTEgQEAg X0FDRU9GCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNQorICRhc19lY2hvICIkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIiA+JjY7IH0KICAKICsjIEludGVncmF0aW9uIHdpdGggcnBtIGxpYnJhcnkg dG8gc3VwcG9ydCBtaXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0aW9ucy4KICsjIC0td2l0aG91dC1y cG06IERpc2FibGUgYW55IHJwbSBzdXBwb3J0LgpAQCAtOTg4LDYgKzk5OCwxMCBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlndXJlCiArICAgIGZpCiArCiArCisrCisrCisr CisrCiAraWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhl bgogKwlpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiArICAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBi ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCkBAIC0xMTAwLDcgKzExMTQsNiBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlndXJlCiArJGFzX2VjaG8gIm5vIiA+JjY7IH0K ICsJCVBLR19DT05GSUc9IiIKICsJZmkKLSsKICtmaQogKwogK3BrZ19mYWlsZWQ9bm8KQEAgLTEx NDMsNiArMTE1Niw4IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWd1cmUK ICsKICsKICtpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisrICAgCXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8g Im5vIiA+JjY7IH0KICsKICtpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNp b24gMC4yMDsgdGhlbgogKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcwpA QCAtMTE1NywxMCArMTE3MiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29u ZmlndXJlCiArCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hl cmUgaXQgYmVsb25ncwogKwllY2hvICIkUlBNX1BLR19FUlJPUlMiID4mNQogKwotKwl7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19l Y2hvICJubyIgPiY2OyB9Ci0rICAgICAgICAgICAgICAgIEhBVkVfTElCUlBNPWZhbHNlCisrCUhB VkVfTElCUlBNPWZhbHNlCiArZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgor KyAgICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu byIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KICsJSEFWRV9MSUJSUE09ZmFsc2UKICtlbHNl CiArCVJQTV9DRkxBR1M9JHBrZ19jdl9SUE1fQ0ZMQUdTCkBAIC0xMjQ0LDEzICsxMjU5LDEzIEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWd1cmUKICAKICAKICBzdWJkaXJz PSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29u ZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29uZmlndXJlLmFjCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9jb25maWd1cmUuYWMJ MjAxMS0xMS0yMCAwOTo1OTo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi9jb25maWd1cmUuYWMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTc0NTU4NjMgKzAxMDAK LUBAIC0xNDAsNiArMTQwLDE5OSBAQCBBU19IRUxQX1NUUklORyhbLS13aXRoLXJlbG9jYXRlZC1z b3VyY2VzCi0gICAgICAgICAgICAgICBbUmVsb2NhdGVkIGRpcmVjdG9yeSBmb3Igc291cmNlIGZp bGVzLiBdKQotIF0pCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9jb25maWd1cmUu YWMJMjAxMi0wNi0wMiAyMTowODowOC42NTEyMjczNDcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNi0wMiAyMTowODoyMy41NjAyMjE4NTUgKzAy MDAKK0BAIC0xNjYsNiArMTY2LDE5OSBAQCBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9TQUZFX1BB VEgsIGVzY2FwCisgCSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQg ZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKICAK ICsjIEludGVncmF0aW9uIHdpdGggcnBtIGxpYnJhcnkgdG8gc3VwcG9ydCBtaXNzaW5nIGRlYnVn aW5mbyBzdWdnZXN0aW9ucy4KICsjIC0td2l0aG91dC1ycG06IERpc2FibGUgYW55IHJwbSBzdXBw b3J0LgpAQCAtMTQ0OCwzMCArMTQ2MywxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvY29uZmlndXJlLmFjCiAgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQogIAogICMgQ2hl Y2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwot SW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2FjaW5jbHVkZS5tNAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcg MDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvYWNp bmNsdWRlLm00CTIwMTEtMTItMTkgMDE6MTY6MTUuMjU3NDU1ODYzICswMTAwCi1AQCAtMSwzICsx LDUgQEAKLSsjIHNlcmlhbCAxCi0rCi0gZG5sIHdyaXR0ZW4gYnkgUm9iIFNhdm95ZSA8cm9iQGN5 Z251cy5jb20+IGZvciBDeWdudXMgU3VwcG9ydAotIGRubCBtYWpvciByZXdyaXRpbmcgZm9yIFRj bCA3LjUgYnkgRG9uIExpYmVzIDxsaWJlc0BuaXN0Lmdvdj4KLSAKLUBAIC04MSw4ICs4Myw2IEBA IEFDX01TR19SRVNVTFQoeWVzKQotICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwKLSAjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIAotLSMg c2VyaWFsIDEKLS0KLSAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERDCi0gIyBAbWFpbmRleCBQUk9H X0NDX1NUREMKLSAjIEBvdmluZGV4IENDCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv Y29yZWxvdy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29yZWxvdy5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0x Mi0xOSAwMDo1NDowOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9jb3JlbG93LmMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTg0NTU4NTkgKzAxMDAKLUBAIC0zMjEs NyArMzIxLDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKKy0tLSBnZGIt Ny40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEyLTA2LTAyIDIxOjA4OjA4LjY1 MTIyNzM0NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvcmVsb3cuYwkyMDEy LTA2LTAyIDIxOjA4OjIzLjU2MTIyMTg1NSArMDIwMAorQEAgLTMxNyw3ICszMTcsNyBAQCBidWls ZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZyb21fdHR5KQogICAgICAgICAgc3ltZmlsZV9vYmpmaWxl LT5mbGFncyB8PSBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEOwogICAgICB9CiAgICBlbHNlCgpk aWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUucGF0Y2gKaW5kZXggNzM2OGQ4YS4uMGE5NjAzNSAxMDA2NDQKLS0tIGEvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNo CkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvcmVsb3cu YworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29yZWxvdy5jCTIwMTItMDEtMTAgMTc6 MzA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29yZWxv dy5jCTIwMTItMDEtMjEgMDA6MDI6NTguNzIwNDAxNzkyICswMTAwCistLS0gZ2RiLTcuNC41MC4y MDEyMDYwMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb3JlbG93LmMJMjAxMi0wNi0wMiAy MTowNzoxNi40NjQyNDY1NjkgKzAyMDAKIEBAIC00Niw2ICs0Niw5IEBACiAgI2luY2x1ZGUgImZp bGVuYW1lcy5oIgogICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKQEAgLTEyLDcgKzEyLDcgQEAgSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvcmVsb3cuYwogIAogICNpZm5kZWYgT19MQVJH RUZJTEUKICAjZGVmaW5lIE9fTEFSR0VGSUxFIDAKLUBAIC0yNzMsNiArMjc2LDUyIEBAIGFkZF90 b190aHJlYWRfbGlzdCAoYmZkICphYmZkLCBhc2VjdGlvbgorQEAgLTI3NSw2ICsyNzgsNTIgQEAg YWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCiAgICAgIGluZmVyaW9yX3B0 aWQgPSBwdGlkOwkJCS8qIFllcywgbWFrZSBpdCBjdXJyZW50LiAgKi8KICB9CiAgCkBAIC02NSw3 ICs2NSw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb3JlbG93LmMKICAvKiBU aGlzIHJvdXRpbmUgb3BlbnMgYW5kIHNldHMgdXAgdGhlIGNvcmUgZmlsZSBiZmQuICAqLwogIAog IHN0YXRpYyB2b2lkCi1AQCAtMzc1LDYgKzQyNCwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVu YW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMzc3LDYgKzQyNiwxMiBAQCBjb3JlX29wZW4gKGNoYXIg KmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCiAgICBwdXNoX3RhcmdldCAoJmNvcmVfb3BzKTsKICAg IGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCkBAIC03OCw3ICs3OCw3IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb3JlbG93LmMKICAgIC8qIERvIHRoaXMgYmVmb3Jl IGFja25vd2xlZGdpbmcgdGhlIGluZmVyaW9yLCBzbyBpZgogICAgICAgcG9zdF9jcmVhdGVfaW5m ZXJpb3IgdGhyb3dzIChjYW4gaGFwcGVuIGVhc2lsbHkgaWYgeW91J3JlIGxvYWRpbmcKICAgICAg IGEgY29yZSBmaWxlIHdpdGggdGhlIHdyb25nIGV4ZWMpLCB3ZSBhcmVuJ3QgbGVmdCB3aXRoIHRo cmVhZHMKLUBAIC05MzQsNCArOTg5LDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitA QCAtOTM1LDQgKzk5MCwxMSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9j b3JlX29wcyAoKTsKICAKICAgIGFkZF90YXJnZXQgKCZjb3JlX29wcyk7CkBAIC05MCwxMSArOTAs MTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5V TEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDEtMjEgMDA6MDI6MzYu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDEtMjEgMDA6MDI6NDEuNjE5NDYzNjA3ICswMTAwCi1AQCAtMTYwMTUsNiArMTYw MTUsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNi0wMiAy MTowNzoxNi40ODAyNDY1NjMgKzAyMDAKK0BAIC0xNjUwMiw2ICsxNjUwMiwyNyBAQCBpbmZvcm1h dGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAgCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29k ZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMK ICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmls ZSBuYW1lZAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3NvbGliLXN2cjQuYworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDEtMDQgMDk6 MTc6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvc29saWIt c3ZyNC5jCTIwMTItMDEtMjEgMDA6MDI6NDEuNjIwNDYzNjAzICswMTAwCistLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNi0wMiAyMTowNzowMy42OTUy NTEyNzIgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zb2xpYi1zdnI0LmMJMjAx Mi0wNi0wMiAyMTowNzoxNi41MTAyNDY1NTIgKzAyMDAKIEBAIC0xMjI3LDkgKzEyMjcsNTIgQEAg c3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0CiAgCSAgY29udGludWU7CiAg CX0KQEAgLTE4MiwxMCArMTgyLDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9z b2xpYi1zdnI0LmMKICAgICAgICB4ZnJlZSAoYnVmZmVyKTsKICAKICAgICAgICAvKiBJZiB0aGlz IGVudHJ5IGhhcyBubyBuYW1lLCBvciBpdHMgbmFtZSBtYXRjaGVzIHRoZSBuYW1lCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvZWxmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9lbGZyZWFkLmMJMjAxMi0wMS0yMSAwMDowMjozMy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMJMjAxMi0wMS0yMSAwMDowMjo0MS42 MjE0NjM1OTkgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2VsZnJlYWQu YwkyMDEyLTA2LTAyIDIxOjA3OjAzLjY5NTI1MTI3MiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2VsZnJlYWQuYwkyMDEyLTA2LTAyIDIxOjA3OjU2LjI2NDIzMjA0OSArMDIwMAog QEAgLTQ0LDYgKzQ0LDExIEBACiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJy ZWdjYWNoZS5oIgpAQCAtMTk4LDcgKzE5OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9lbGZyZWFkLmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lk KTsKICAKLUBAIC0xMDc2LDE2ICsxMDgxLDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0 dXJuX3N0b3AgKHN0cnUKK0BAIC0xMDcyLDE2ICsxMDc3LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuX3N0b3AgKHN0cnUKICAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAo Yiwgc2Fscywgc2Fsc19lbmQpOwogIH0KICAKQEAgLTIyMyw4ICsyMjMsOSBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCiAtLyogTG9jYXRlIE5UX0dOVV9CVUlMRF9J RCBmcm9tIEFCRkQgYW5kIHJldHVybiBpdHMgY29udGVudC4gICovCiArLyogTG9jYXRlIE5UX0dO VV9CVUlMRF9JRCBhbmQgcmV0dXJuIGl0cyBtYXRjaGluZyBkZWJ1ZyBmaWxlbmFtZS4KICsgICBG SVhNRTogTk9URSBkZWNvZGluZyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIHRoZSBCRkQgY29yZSBu b3RlcyBkZWNvZGluZy4gICovCi0rCi0rc3RydWN0IGJ1aWxkX2lkICoKKyAKKyBzdGF0aWMgc3Ry dWN0IGJ1aWxkX2lkICoKKy1idWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiArYnVpbGRfaWRf YnVmX2dldCAoYmZkICp0ZW1wbCwgZ2RiX2J5dGUgKmJ1ZiwgYmZkX3NpemVfdHlwZSBzaXplKQog K3sKICsgIGJmZF9ieXRlICpwOwpAQCAtMjU5LDE0ICsyNjAsMTMgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2VsZnJlYWQuYwogKwogKy8qIFNlcGFyYXRlIGRlYnVnaW5mbyBmaWxl cyBoYXZlIGNvcnJ1cHRlZCBQSERSIGJ1dCBTSERSIGlzIGNvcnJlY3QgdGhlcmUuCiArICAgTG9j YXRlIE5UX0dOVV9CVUlMRF9JRCBmcm9tIEFCRkQgYW5kIHJldHVybiBpdHMgY29udGVudC4gICov Ci0gCi0gc3RhdGljIHN0cnVjdCBidWlsZF9pZCAqCi0tYnVpbGRfaWRfYmZkX2dldCAoYmZkICph YmZkKQorKworK3N0YXRpYyBzdHJ1Y3QgYnVpbGRfaWQgKgogK2J1aWxkX2lkX2JmZF9zaGRyX2dl dCAoYmZkICphYmZkKQogIHsKICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTEx MDEsNiArMTE1NSwzNDggQEAgYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQorQEAgLTEwOTcs NiArMTE1MSwzNDggQEAgYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQogICAgcmV0dXJuIHJl dHZhbDsKICB9CiAgCkBAIC0zNjIsNyArMzYyLDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2VsZnJlYWQuYwogKy8qIFRyYW5zbGF0ZSBhbiBFTEYgcHJvZ3JhbSBoZWFkZXIgdGFi bGUgZW50cnkgaW4gZXh0ZXJuYWwgZm9ybWF0IGludG8gYW4KICsgICBFTEYgcHJvZ3JhbSBoZWFk ZXIgdGFibGUgZW50cnkgaW4gaW50ZXJuYWwgZm9ybWF0LiAgKi8KICsKLSt2b2lkCisrc3RhdGlj IHZvaWQKICtlbGZfc3dhcF9waGRyX2luIChiZmQgKmFiZmQsCiArCQkgIGNvbnN0IEVsZjY0X0V4 dGVybmFsX1BoZHIgKnNyYzY0LAogKwkJICBFbGZfSW50ZXJuYWxfUGhkciAqZHN0KQpAQCAtNjE1 LDcgKzYxNSw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICAv KiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hF Q0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBpbnQKLUBAIC0xMTE1LDcgKzE1MTEsNyBAQCBidWls ZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTExMSw3ICsxNTA3LDcg QEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgcwogICAgaWYgKGFiZmQg PT0gTlVMTCkKICAgICAgcmV0dXJuIDA7CiAgCkBAIC02MjQsNyArNjI0LDcgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2VsZnJlYWQuYwogIAogICAgaWYgKGZvdW5kID09IE5VTEwp CiAgICAgIHdhcm5pbmcgKF8oIkZpbGUgXCIlc1wiIGhhcyBubyBidWlsZC1pZCwgZmlsZSBza2lw cGVkIiksIGZpbGVuYW1lKTsKLUBAIC0xMTMzLDE0ICsxNTI5LDE1IEBAIGJ1aWxkX2lkX3Zlcmlm eSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKK0BAIC0xMTI5LDE3ICsxNTI1LDE4IEBAIGJ1aWxk X2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKICAgIHJldHVybiByZXR2YWw7CiAg fQogIApAQCAtNjM2LDYgKzYzNiw5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9l bGZyZWFkLmMKICB7CiAgICBjaGFyICpsaW5rLCAqZGVidWdkaXIsICpyZXR2YWwgPSBOVUxMOwog KyAgY2hhciAqbGlua19hbGwgPSBOVUxMOworICAgVkVDIChjaGFyX3B0cikgKmRlYnVnZGlyX3Zl YzsKKyAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworICAgaW50IGl4OwogIAogICAgLyogREVC VUdfRklMRV9ESVJFQ1RPUlkvLmJ1aWxkLWlkL2FiL2NkZWYgKi8KIC0gIGxpbmsgPSBhbGxvY2Eg KHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsgKHNpemVvZiAiLy5idWlsZC1pZC8iIC0g MSkgKyAxCkBAIC02NDQsMzAgKzY0NywyNiBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc28gdGhh dCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAgICAgICBjYXVzZSAiLy5idWls ZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTExNTEsNiArMTU0OCw4IEBAIGJ1aWxkX2lkX3Rv X2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKLSAgICAgICBjaGFyICpzLCAqZGVidWdkaXJf ZW5kOworQEAgLTExNTIsNiArMTU0OSw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChz dHJ1Y3QgYnVpbGQKKyAgICAgICBzaXplX3QgZGVidWdkaXJfbGVuID0gc3RybGVuIChkZWJ1Z2Rp cik7CiAgICAgICAgZ2RiX2J5dGUgKmRhdGEgPSBidWlsZF9pZC0+ZGF0YTsKICAgICAgICBzaXpl X3Qgc2l6ZSA9IGJ1aWxkX2lkLT5zaXplOwogKyAgICAgIHVuc2lnbmVkIHNlcW5vOwogKyAgICAg IHN0cnVjdCBzdGF0IHN0YXRidWZfdHJhc2g7CisgICAgICAgY2hhciAqczsKICAKLSAgICAgICB3 aGlsZSAoKmRlYnVnZGlyID09IERJUk5BTUVfU0VQQVJBVE9SKQotIAlkZWJ1Z2RpcisrOwotQEAg LTExNzEsMzkgKzE1NzAsMjQyIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3Qg YnVpbGQKKyAgICAgICBtZW1jcHkgKGxpbmssIGRlYnVnZGlyLCBkZWJ1Z2Rpcl9sZW4pOworQEAg LTExNjYsMzcgKzE1NjUsMjQwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3Qg YnVpbGQKICAJKnMrKyA9ICcvJzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBz cHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CiAtICAgICAgc3RyY3B5IChz LCAiLmRlYnVnIik7Ci0tCisgCiAtICAgICAgLyogbHJlYWxwYXRoKCkgaXMgZXhwZW5zaXZlIGV2 ZW4gZm9yIHRoZSB1c3VhbGx5IG5vbi1leGlzdGVudCBmaWxlcy4gICovCiAtICAgICAgaWYgKGFj Y2VzcyAobGluaywgRl9PSykgPT0gMCkKIC0JcmV0dmFsID0gbHJlYWxwYXRoIChsaW5rKTsKLSAK LS0gICAgICBpZiAocmV0dmFsICE9IE5VTEwgJiYgIWJ1aWxkX2lkX3ZlcmlmeSAocmV0dmFsLCBi dWlsZF9pZCkpCiArICAgICAgZm9yIChzZXFubyA9IDA7OyBzZXFubysrKQotIAl7Ci0tCSAgeGZy ZWUgKHJldHZhbCk7Ci0tCSAgcmV0dmFsID0gTlVMTDsKKysJewogKwkgIGNoYXIgKnMyOwogKwog KwkgIGlmIChzZXFubykKQEAgLTY4NSw3ICs2ODQsOCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZWxmcmVhZC5jCiArCSAgICBzdHJjcHkgKHMyLCAiLmRlYnVnIik7CiArCSAgZWxz ZQogKwkgICAgKnMyID0gMDsKLSsKKyAKKy0gICAgICBpZiAocmV0dmFsICE9IE5VTEwgJiYgIWJ1 aWxkX2lkX3ZlcmlmeSAocmV0dmFsLCBidWlsZF9pZCkpCiArCSAgLyogYGFjY2VzcycgYXV0b21h dGljYWxseSBkZXJlZmVyZW5jZXMgTElOSy4gICovCiArCSAgaWYgKGxzdGF0IChsaW5rLCAmc3Rh dGJ1Zl90cmFzaCkgIT0gMCkKICsJICAgIHsKQEAgLTcwMywxNSArNzAzLDE2IEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICsKICsJICBpZiAocmV0dmFsKQogKwkg ICAgYnJlYWs7Ci0gCX0KLSAKLSAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCi0tCWJyZWFrOwot Kwl7Ci0rCSAgLyogTElOS19BTEwgaXMgbm90IHVzZWQgYmVsb3cgaW4gdGhpcyBub24tTlVMTCBS RVRWQUwgY2FzZS4gICovCi0rCSAgYnJlYWs7CiArCX0KICsKKysgICAgICBpZiAocmV0dmFsICE9 IE5VTEwpCisgCXsKKy0JICB4ZnJlZSAocmV0dmFsKTsKKy0JICByZXR2YWwgPSBOVUxMOworKwkg IC8qIExJTktfQUxMIGlzIG5vdCB1c2VkIGJlbG93IGluIHRoaXMgbm9uLU5VTEwgUkVUVkFMIGNh c2UuICAqLworKwkgIGJyZWFrOworIAl9CisgCiArCWlmIChsaW5rX2FsbCA9PSBOVUxMKQogKwkg IGxpbmtfYWxsID0geHN0cmR1cCAobGluayk7CiArCWVsc2UKQEAgLTcyNiwxNCArNzI3LDEyIEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICsKICsJICAgIHN0cmNw eSAoJmxpbmtfYWxsW2xlbl9vcmlnICsgMV0sIGxpbmspOwogKwkgIH0KLSAKLSAgICAgICBkZWJ1 Z2RpciA9IGRlYnVnZGlyX2VuZDsKLSAgICAgfQotICAgd2hpbGUgKCpkZWJ1Z2RpciAhPSAwKTsK LSAKKysgICAgfQorKwogKyAgaWYgKGxpbmtfcmV0dXJuICE9IE5VTEwpCiArICAgIHsKLSsgICAg ICBpZiAocmV0dmFsICE9IE5VTEwpCisgICAgICAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQlicmVh azsKICsgICAgICAgewogKyAgICAgICAgICpsaW5rX3JldHVybiA9IGxpbms7CiArICAgICAgICAg bGluayA9IE5VTEw7CkBAIC03NDMsMTMgKzc0MiwxNCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZWxmcmVhZC5jCiArICAgICAgICAgKmxpbmtfcmV0dXJuID0gbGlua19hbGw7CiAr ICAgICAgICAgbGlua19hbGwgPSBOVUxMOwogKyAgICAgICB9Ci0rICAgIH0KKyAgICAgfQogKyAg eGZyZWUgKGxpbmspOwogKyAgeGZyZWUgKGxpbmtfYWxsKTsKLSsKLSsgIHJldHVybiByZXR2YWw7 Ci0rfQotKworIAorICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgcmV0dXJuIHJldHZhbDsK KyB9CisgCiArLyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9u bHkgZm9yIHRoZSBkdXBsaWNpdGUgbWVzc2FnZXMKICsgICAgIFRyeSB0byBpbnN0YWxsIHRoZSBo YXNoIGZpbGUgLi4uCiArICAgYXZvaWRhbmNlLiAgKi8KQEAgLTc3Miw5ICs3NzIsOSBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCiArCiArICByZXR2YWwgPSBvYnN0 YWNrX2FsbG9jICgmbWlzc2luZ19maWxlcGFpcl9vYnN0YWNrLCBzaXplKTsKICsgIG1lbXNldCAo cmV0dmFsLCAwLCBzaXplKTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAorKyAgcmV0dXJuIHJl dHZhbDsKKyt9CisrCiArc3RhdGljIGhhc2h2YWxfdAogK21pc3NpbmdfZmlsZXBhaXJfaGFzaF9m dW5jIChjb25zdCBzdHJ1Y3QgbWlzc2luZ19maWxlcGFpciAqZWxlbSkKICt7CkBAIC05MDgsNyAr OTA4LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2VsZnJlYWQuYwogICAgICAg IHhmcmVlIChidWlsZF9pZCk7CiAgICAgICAgLyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBw ZWQgLmRlYnVnIGZpbGUuICAqLwogICAgICAgIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwKLUBA IC0xMjE0LDcgKzE4MTYsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAo c3RyCitAQCAtMTIwNyw3ICsxODA5LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1 aWxkaWQgKHN0cgogIAkgIHhmcmVlIChidWlsZF9pZF9uYW1lKTsKICAJfQogICAgICAgIGVsc2Ug aWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkKQEAgLTkxNyw3ICs5MTcsNyBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwog IH0KLUBAIC0xNDM0LDkgKzIwMzYsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZp bGUgKm9iamZpbAorQEAgLTE0MjcsOSArMjAyOSwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgICAgICBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCiAgICBl bHNlIGlmICghb2JqZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKSkKICAgICAgewpA QCAtOTMwLDcgKzkzMCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFk LmMKICAKICAgICAgICBpZiAoZGVidWdmaWxlID09IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRf c2VwYXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUpOwotQEAgLTE0NDgsNiAr MjA1MSwxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAt MTQ0MSw2ICsyMDQ0LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWwKICAJICBzeW1ib2xfZmlsZV9hZGRfc2VwYXJhdGUgKGFiZmQsIHN5bWZpbGVfZmxhZ3MsIG9i amZpbGUpOwogIAkgIHhmcmVlIChkZWJ1Z2ZpbGUpOwogIAl9CkBAIC05NDMsNyArOTQzLDcgQEAg SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2VsZnJlYWQuYwogICAgICB9CiAgfQogIAot QEAgLTE5MzEsNCArMjU0MCwxNiBAQCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQorQEAgLTE3 NzAsNCArMjM3OSwxNiBAQCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQogIAogICAgZWxmX29i amZpbGVfZ251X2lmdW5jX2NhY2hlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CiAg ICBnbnVfaWZ1bmNfZm5zX3AgPSAmZWxmX2dudV9pZnVuY19mbnM7CkBAIC05NjAsMTEgKzk2MCwx MSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCiArCiArICBvYnNl cnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9jaGFuZ2VkIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2No YW5nZWQpOwogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9zeW1maWxlLmgKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEyLTAxLTIxIDAwOjAyOjMz LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3N5bWZpbGUuaAky MDEyLTAxLTIxIDAwOjAyOjQxLjYyMTQ2MzU5OSArMDEwMAotQEAgLTYxNCw2ICs2MTQsMTMgQEAg dm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3QgcworLS0tIGdkYi03LjQuNTAu MjAxMjA2MDIub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcy ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5oCTIwMTItMDYtMDIg MjE6MDc6MTYuNTI0MjQ2NTQ3ICswMjAwCitAQCAtNjE1LDYgKzYxNSwxMyBAQCB2b2lkIGZyZWVf c3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzCiAgCiAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVw ICppbmNyZW1lbnRfcmVhZGluZ19zeW10YWIgKHZvaWQpOwogIApAQCAtOTc4LDExICs5NzgsMTEg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3N5bWZpbGUuaAogIC8qIEZyb20gZHdh cmYycmVhZC5jICovCiAgCiAgLyogTmFtZXMgZm9yIGEgZHdhcmYyIGRlYnVnZ2luZyBzZWN0aW9u LiAgVGhlIGZpZWxkIE5PUk1BTCBpcyB0aGUgbm9ybWFsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMi0wMS0yMSAwMDowMjoz Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAJMjAxMi0wMS0yMSAwMDowMjo0MS42MjI0NjM1OTYgKzAxMDAKLUBAIC0xMzg1 LDYgKzEzODUsMTYgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworLS0tIGdkYi03LjQu NTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDYtMDIgMjE6 MDc6MDMuNjk1MjUxMjcyICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCTIwMTItMDYtMDIgMjE6MDc6MTYuNTI2MjQ2NTQ2ICswMjAwCitAQCAt MTM4OCw2ICsxMzg4LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdh cm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtOTk5 LDExICs5OTksMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAogICAgICByZXR1cm4gMDsKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5l eHAJMjAxMi0wMS0xMiAyMzoyODozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTItMDEtMjEgMDA6MDI6 NDEuNjIyNDYzNTk2ICswMTAwCi1AQCAtMjEyLDYgKzIxMiwxNiBAQCBwcm9jIGRlZmF1bHRfbWlf Z2RiX3N0YXJ0IHsgYXJncyB9IHsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBv cnQuZXhwCTIwMTItMDYtMDIgMjE6MDc6MTYuNTM1MjQ2NTQ0ICswMjAwCitAQCAtMjEzLDYgKzIx MywxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIHdhcm5p bmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtMTAyMCwx MSArMTAyMCwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2xp Yi9taS1zdXBwb3J0LmV4cAogICAgICAjIElmIGFsbG93aW5nIHRoZSBpbmZlcmlvciB0byBoYXZl IGl0cyBvd24gUFRZIHRoZW4gYXNzaWduIHRoZSBpbmZlcmlvcgogICAgICAjIGl0cyBvd24gdGVy bWluYWwgZGV2aWNlIGhlcmUuCiAgICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDEyLTAxLTA0IDA5OjE3OjA5LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL29iamZpbGVzLmgJMjAxMi0wMS0y MSAwMDowMjo0MS42MjM0NjM1OTMgKzAxMDAKLUBAIC00MzMsNiArNDMzLDEwIEBAIHN0cnVjdCBv YmpmaWxlCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTIt MDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvb2JqZmlsZXMuaAkyMDEyLTA2LTAyIDIxOjA3OjE2LjUzOTI0NjU0MSArMDIwMAorQEAgLTQz Miw2ICs0MzIsMTAgQEAgc3RydWN0IG9iamZpbGUKICAKICAjZGVmaW5lIE9CSkZfTUFJTkxJTkUg KDEgPDwgNSkKICAKCmRpZmYgLS1naXQgYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAt c3ctd2F0Y2hwb2ludHMyLnBhdGNoIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3 LXdhdGNocG9pbnRzMi5wYXRjaAppbmRleCBjN2YwZDMzLi5jNTMxOGU2IDEwMDY0NAotLS0gYS9n ZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCisrKyBi L2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKQEAg LTIxLDE1ICsyMSwxNSBAQAogCiAJUG9ydCB0byBHREItNi44cHJlLgogCi1JbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvaW5mZXJpb3IuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2luZmVyaW9yLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcv Z2RiL2luZmVyaW9yLmgJMjAxMS0xMC0wNyAxNDowNjo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZlcmlvci5oCTIwMTEtMTItMTggMjM6NDA6NTkuMjU3 MzAwNDUxICswMTAwCi1AQCAtMTYyLDcgKzE2MiwxNSBAQCBleHRlcm4gdm9pZCByZW9wZW5fZXhl Y19maWxlICh2b2lkKTsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2luZmVyaW9y LmgJMjAxMi0wNS0yNCAxODozOTowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9pbmZlcmlvci5oCTIwMTItMDYtMDIgMTg6MjQ6MTIuODc1Mjc0MTc5ICswMjAw CitAQCAtMTU5LDcgKzE1OSwxNSBAQCBleHRlcm4gdm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lk KTsKICAvKiBUaGUgYHJlc3VtZScgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gc3Bl Y2lhbCBjaXJjdW1zdGFuY2VzLgogICAgIE5vcm1hbGx5LCB1c2UgYHByb2NlZWQnLCB3aGljaCBo YW5kbGVzIGEgbG90IG9mIGJvb2trZWVwaW5nLiAgKi8KICAKLS1leHRlcm4gdm9pZCByZXN1bWUg KGludCwgZW51bSB0YXJnZXRfc2lnbmFsKTsKKy1leHRlcm4gdm9pZCByZXN1bWUgKGludCwgZW51 bSBnZGJfc2lnbmFsKTsKICtlbnVtIHJlc3VtZV9zdGVwCiArICB7CiArICAgIC8qIGN1cnJlbnRs eV9zdGVwcGluZyAoKSBzaG91bGQgcmV0dXJuIG5vbi16ZXJvIGZvciBub24tY29udGludWUuICAq LwpAQCAtMzgsMTQgKzM4LDE0IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZl cmlvci5oCiArICAgIFJFU1VNRV9TVEVQX05FRURFRAkJLyogU3RlcHBpbmcgb25seSBmb3Igc29m dHdhcmUgd2F0Y2hwb2ludHMuICAqLwogKyAgfTsKICsKLStleHRlcm4gdm9pZCByZXN1bWUgKGVu dW0gcmVzdW1lX3N0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCk7CisrZXh0ZXJuIHZvaWQgcmVzdW1l IChlbnVtIHJlc3VtZV9zdGVwLCBlbnVtIGdkYl9zaWduYWwpOwogIAogIGV4dGVybiBwdGlkX3Qg dXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQgc3RlcCk7CiAgCi1JbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9p bmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvaW5m cnVuLmMJMjAxMS0xMS0yMiAyMjoyNToxNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9pbmZydW4uYwkyMDExLTEyLTE5IDAwOjEyOjM0LjQ3MDg1NDIxOCArMDEw MAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wNS0yOCAy Mjo0MzoyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZy dW4uYwkyMDEyLTA2LTAyIDE4OjIzOjU5LjMzOTI3ODI2OCArMDIwMAogQEAgLTc5LDcgKzc5LDcg QEAgc3RhdGljIGludCBmb2xsb3dfZm9yayAodm9pZCk7CiAgc3RhdGljIHZvaWQgc2V0X3NjaGVk bG9ja19mdW5jIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCiAgCQkJCXN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKTsKQEAgLTU1LDcgKzU1LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2luZnJ1bi5jCiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4 dGluZ19jYWxsYmFjayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpk YXRhKTsKLUBAIC0xNjY4LDcgKzE2NjgsOCBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGlu dCBzdGVwKQorQEAgLTE2ODcsNyArMTY4Nyw4IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAo aW50IHN0ZXApCiAgICAgIH0KICAgIGVsc2UgaWYgKChzY2hlZHVsZXJfbW9kZSA9PSBzY2hlZGxv Y2tfb24pCiAgCSAgIHx8IChzY2hlZHVsZXJfbW9kZSA9PSBzY2hlZGxvY2tfc3RlcApAQCAtNjUs MTYgKzY1LDE2IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZydW4uYwogICAg ICB7CiAgICAgICAgLyogVXNlci1zZXR0YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNv bG8gdGhyZWFkIHJlc3VtZS4gICovCiAgICAgICAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9wdGlk OwotQEAgLTE2ODYsNyArMTY4Nyw3IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0 ZXApCitAQCAtMTcwNSw3ICsxNzA2LDcgQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQg c3RlcCkKICAgICBTVEVQIG5vbnplcm8gaWYgd2Ugc2hvdWxkIHN0ZXAgKHplcm8gdG8gY29udGlu dWUgaW5zdGVhZCkuCiAgICAgU0lHIGlzIHRoZSBzaWduYWwgdG8gZ2l2ZSB0aGUgaW5mZXJpb3Ig KHplcm8gZm9yIG5vbmUpLiAgKi8KICB2b2lkCi0tcmVzdW1lIChpbnQgc3RlcCwgZW51bSB0YXJn ZXRfc2lnbmFsIHNpZykKLStyZXN1bWUgKGVudW0gcmVzdW1lX3N0ZXAgc3RlcCwgZW51bSB0YXJn ZXRfc2lnbmFsIHNpZykKKy1yZXN1bWUgKGludCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQor K3Jlc3VtZSAoZW51bSByZXN1bWVfc3RlcCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQogIHsK ICAgIGludCBzaG91bGRfcmVzdW1lID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51 cHMgPSBtYWtlX2NsZWFudXAgKHJlc3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTcxOSw5ICsxNzIw LDEzIEBAIHJlc3VtZSAoaW50IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKK0BAIC0xNzM4 LDkgKzE3MzksMTMgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykKICAK ICAgIGlmIChkZWJ1Z19pbmZydW4pCiAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKQEAgLTkwLDcgKzkwLDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1 bi5jCiAgCQkJdGFyZ2V0X3BpZF90b19zdHIgKGluZmVyaW9yX3B0aWQpLAogIAkJCXBhZGRyZXNz IChnZGJhcmNoLCBwYykpOwogIAotQEAgLTIwOTQsNyArMjA5OSw3IEBAIHByb2NlZWQgKENPUkVf QUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0yMTE3LDcgKzIxMjIsNyBAQCBwcm9jZWVk IChDT1JFX0FERFIgYWRkciwgZW51bSBnZGJfc2lnbmFsCiAgICBzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwOwogICAgQ09SRV9BRERSIHBjOwogICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZTsK QEAgLTk5LDcgKzk5LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5j CiAgCiAgICAvKiBJZiB3ZSdyZSBzdG9wcGVkIGF0IGEgZm9yay92Zm9yaywgZm9sbG93IHRoZSBi cmFuY2ggc2V0IGJ5IHRoZQogICAgICAgInNldCBmb2xsb3ctZm9yay1tb2RlIiBjb21tYW5kOyBv dGhlcndpc2UsIHdlJ2xsIGp1c3QgcHJvY2VlZAotQEAgLTIxMzQsMTMgKzIxMzksMTMgQEAgcHJv Y2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIxNTcsMTMgKzIxNjIs MTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gZ2RiX3NpZ25hbAogIAkgICBhY3R1 YWxseSBiZSBleGVjdXRpbmcgdGhlIGJyZWFrcG9pbnQgaW5zbiBhbnl3YXkuCiAgCSAgIFdlJ2xs IGJlICh1bi0pZXhlY3V0aW5nIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCiAgCkBAIC0x MTUsNyArMTE1LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5jCiAg ICAgIH0KICAgIGVsc2UKICAgICAgewotQEAgLTIxNzEsMTMgKzIxNzYsMTMgQEAgcHJvY2VlZCAo Q09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIxOTQsMTMgKzIxOTksMTMgQEAg cHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gZ2RiX3NpZ25hbAogIAkgaXMgcmVxdWlyZWQg aXQgcmV0dXJucyBUUlVFIGFuZCBzZXRzIHRoZSBjdXJyZW50IHRocmVhZCB0bwogIAkgdGhlIG9s ZCB0aHJlYWQuICAqLwogICAgICAgIGlmIChwcmVwYXJlX3RvX3Byb2NlZWQgKHN0ZXApKQpAQCAt MTMxLDcgKzEzMSw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZydW4uYwog ICAgICB7CiAgICAgICAgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCA9IDE7CiAgICAgICAgLyog SWYgZGlzcGxhY2VkIHN0ZXBwaW5nIGlzIGVuYWJsZWQsIHdlIGNhbiBzdGVwIG92ZXIgdGhlCi1A QCAtMjI2NCw4ICsyMjY5LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdl dF9zaWcKK0BAIC0yMjg3LDggKzIyOTIsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVu dW0gZ2RiX3NpZ25hbAogICAgLyogUmVzZXQgdG8gbm9ybWFsIHN0YXRlLiAgKi8KICAgIGluaXRf aW5md2FpdF9zdGF0ZSAoKTsKICAKQEAgLTE0Niw3ICsxNDYsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvaW5mcnVuLmMKICAKICAgIC8qIFdhaXQgZm9yIGl0IHRvIHN0b3AgKGlm IG5vdCBzdGFuZGFsb25lKQogICAgICAgYW5kIGluIGFueSBjYXNlIGRlY29kZSB3aHkgaXQgc3Rv cHBlZCwgYW5kIGFjdCBhY2NvcmRpbmdseS4gICovCi1AQCAtNTIyMywxMyArNTIzMywxOCBAQCBw cm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKK0BAIC01MjQ5LDEzICs1MjU5LDE4IEBAIHByb2Nlc3Nf ZXZlbnRfc3RvcF90ZXN0OgogIAogIC8qIElzIHRocmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNp bmdsZS1zdGVwcGluZz8gICovCiAgCkBAIC0xNzAsMTEgKzE3MCwxMSBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvaW5mcnVuLmMKICB9CiAgCiAgLyogUmV0dXJucyB0cnVlIGlmIGFu eSB0aHJlYWQgKmJ1dCogdGhlIG9uZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTEx MjE4Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMJMjAxMS0xMi0xOSAw MDowODo0MS44MjQ4NTUzNTMgKzAxMDAKLUBAIC0zMDM2LDcgKzMwMzYsMTEgQEAgc3RhdGljIGlu dAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMi0wNS0y NCAxODo1MTozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9s aW51eC1uYXQuYwkyMDEyLTA2LTAyIDE4OjIzOjA3LjQwOTI5MzgwMCArMDIwMAorQEAgLTMwNTEs NyArMzA1MSwxMSBAQCBzdGF0aWMgaW50CiAgc2VsZWN0X3NpbmdsZXN0ZXBfbHdwX2NhbGxiYWNr IChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQogIHsKICAgIGlmIChscC0+bGFzdF9y ZXN1bWVfa2luZCA9PSByZXN1bWVfc3RlcApAQCAtMTg3LDExICsxODcsMTEgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgICAgIHJldHVybiAxOwogICAgZWxz ZQogICAgICByZXR1cm4gMDsKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1u YXQuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDExLTEy LTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2xpbnV4LW5hdC5oCTIwMTEtMTItMTggMjM6NDA6NTkuMjYyMzAwNDMxICswMTAwCi1AQCAtNzQs OCArNzQsOCBAQCBzdHJ1Y3QgbHdwX2luZm8KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcv Z2RiL2xpbnV4LW5hdC5oCTIwMTItMDMtMjEgMTQ6NDM6NTQuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmgJMjAxMi0wNi0wMiAxODoyMzowNy40 MTEyOTM3OTggKzAyMDAKK0BAIC03Myw4ICs3Myw4IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyog SWYgbm9uLXplcm8sIGEgcGVuZGluZyB3YWl0IHN0YXR1cy4gICovCiAgICBpbnQgc3RhdHVzOwog IAoKZGlmZiAtLWdpdCBhL2dkYi02LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBhdGNoIGIvZ2RiLTYu Ni10ZXN0c3VpdGUtdGltZW91dHMucGF0Y2gKaW5kZXggN2U2OTc0MC4uMDBmNWQ4NSAxMDA2NDQK LS0tIGEvZ2RiLTYuNi10ZXN0c3VpdGUtdGltZW91dHMucGF0Y2gKKysrIGIvZ2RiLTYuNi10ZXN0 c3VpdGUtdGltZW91dHMucGF0Y2gKQEAgLTEsMjYgKzEsMjYgQEAKLUluZGV4OiBnZGItNy40LjUw LjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hbm5vdGExLmV4cAkyMDExLTEyLTEzIDE4OjIyOjA4LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDEx LTEyLTIwIDAwOjAxOjM2LjUxODg0NzAzMyArMDEwMAotQEAgLTUwLDYgKzUwLDggQEAgZ2RiX3N0 YXJ0CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YW5ub3RhMS5leHAJMjAxMi0wMy0xNiAxNzo0NzozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAJMjAxMi0w Ni0wMiAxODoyNzo0Ni42MjMyMTA3MTEgKzAyMDAKK0BAIC00NSw2ICs0NSw4IEBAIGdkYl9zdGFy dAogIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogIGdkYl9sb2FkICR7Ymlu ZmlsZX0KICAKICtnZGJfdGVzdCAic2V0IGJyZWFrcG9pbnQgcGVuZGluZyBvZmYiICIiICJBdm9p ZCBsb2NrdXAgb24gbm9uZXhpc3RpbmcgZnVuY3Rpb25zIgogKwotICMKLSAjIHRoZSBsaW5lIGF0 IHdoaWNoIGJyZWFrIG1haW4gd2lsbCBwdXQgdGhlIGJyZWFrcG9pbnQKLSAjCi1JbmRleDogZ2Ri LTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhwCisgIyBU aGUgY29tbWFuZHMgd2UgdGVzdCBoZXJlIHByb2R1Y2UgbWFueSBsaW5lcyBvZiBvdXRwdXQ7IGRp c2FibGUgInByZXNzIAorICMgPHJldHVybj4gdG8gY29udGludWUiIHByb21wdHMuCisgZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDAiCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDExMTIxOS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJMjAx MS0xMi0xMyAxODoyMjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJMjAxMS0xMi0yMCAwMDowMTozNi41 MTg4NDcwMzMgKzAxMDAKLUBAIC01MCw2ICs1MCw4IEBAIGdkYl9zdGFydAorLS0tIGdkYi03LjQu NTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhwCTIwMTIt MDItMjggMjM6NDA6NDguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhwCTIwMTItMDYtMDIgMTg6Mjg6MDAuMzc1 MjA2NDU3ICswMjAwCitAQCAtNDUsNiArNDUsOCBAQCBnZGJfc3RhcnQKICBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKICBnZGJfbG9hZCAke2JpbmZpbGV9CiAgCiArZ2RiX3Rl c3QgInNldCBicmVha3BvaW50IHBlbmRpbmcgb2ZmIiAiIiAiQXZvaWQgbG9ja3VwIG9uIG5vbmV4 aXN0aW5nIGZ1bmN0aW9ucyIKICsKLSAjCi0gIyB0aGUgbGluZSBhdCB3aGljaCBicmVhayBtYWlu IHdpbGwgcHV0IHRoZSBicmVha3BvaW50Ci0gIworICMgVGhlIGNvbW1hbmRzIHdlIHRlc3QgaGVy ZSBwcm9kdWNlIG1hbnkgbGluZXMgb2Ygb3V0cHV0OyBkaXNhYmxlICJwcmVzcyAKKyAjIDxyZXR1 cm4+IHRvIGNvbnRpbnVlIiBwcm9tcHRzLgorIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdo dCAwIgoKZGlmZiAtLWdpdCBhL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBl ZC5wYXRjaCBiL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaApp bmRleCAxNzUxMzRkLi40NGNjN2JhIDEwMDY0NAotLS0gYS9nZGItNi44LWF0dGFjaC1zaWduYWxs ZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gKKysrIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRl dGFjaC1zdG9wcGVkLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xp bnV4LW5hdC5jCTIwMTAtMDEtMTUgMTE6NTM6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAxMjoxMzo1My4wMDAwMDAw MDAgKzAxMDAKLUBAIC0xNzUsNiArMTc1LDkgQEAgYmxvY2tlZC4gICovCistLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2LTAyIDIwOjUxOjU4LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCTIwMTIt MDYtMDIgMjA6NTQ6MzAuMTI3NTI5MTU5ICswMjAwCitAQCAtMTgwLDYgKzE4MCw5IEBAIGJsb2Nr ZWQuICAqLwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyAqbGludXhfb3BzOwogIHN0YXRpYyBz dHJ1Y3QgdGFyZ2V0X29wcyBsaW51eF9vcHNfc2F2ZWQ7CiAgCkBAIC0xMiw3ICsxMiw3IEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogIC8qIFRoZSBtZXRob2Qg dG8gY2FsbCwgaWYgYW55LCB3aGVuIGEgbmV3IHRocmVhZCBpcyBhdHRhY2hlZC4gICovCiAgc3Rh dGljIHZvaWQgKCpsaW51eF9uYXRfbmV3X3RocmVhZCkgKHN0cnVjdCBsd3BfaW5mbyAqKTsKICAK LUBAIC05MzMsNyArOTM2LDE0IEBAIEF0dGFjaGluZyBhZnRlciBwcm9jZXNzICVkIGZvcmsgdG8g Y2hpbGQKK0BAIC05MDksNyArOTEyLDE0IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBU cnkgXCJzZXQgZGUKICAJICBwYXJlbnRfaW5mLT53YWl0aW5nX2Zvcl92Zm9ya19kb25lID0gMDsK ICAJfQogICAgICAgIGVsc2UgaWYgKGRldGFjaF9mb3JrKQpAQCAtMjgsNyArMjgsNyBAQCBJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKICAKICAgICAgICAvKiBOb3Rl IHRoYXQgdGhlIGRldGFjaCBhYm92ZSBtYWtlcyBQQVJFTlRfSU5GIGRhbmdsaW5nLiAgKi8KICAK LUBAIC0xNDI3LDYgKzE0MzcsNyBAQCBsaW51eF9uYXRfcG9zdF9hdHRhY2hfd2FpdCAocHRpZF90 IHB0aWQsCitAQCAtMTM3Nyw2ICsxMzg3LDcgQEAgbGludXhfbmF0X3Bvc3RfYXR0YWNoX3dhaXQg KHB0aWRfdCBwdGlkLAogICAgICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCiAgCWZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKICAJCQkgICAgIkxOUEFXOiBBdHRhY2hpbmcgdG8gYSBzdG9w cGVkIHByb2Nlc3NcbiIpOwpAQCAtMzYsOCArMzYsOCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvbGludXgtbmF0LmMKICAKICAgICAgICAvKiBUaGUgcHJvY2VzcyBpcyBkZWZpbml0 ZWx5IHN0b3BwZWQuICBJdCBpcyBpbiBhIGpvYiBjb250cm9sCiAgCSBzdG9wLCB1bmxlc3MgdGhl IGtlcm5lbCBwcmVkYXRlcyB0aGUgVEFTS19TVE9QUEVEIC8KLUBAIC0xNzU3LDYgKzE3NjgsOSBA QCBHUFQ6IGx3cCAlcyBoYWQgc2lnbmFsICVzLCBidXQgaXQgaXMgaW4gCi0gCQkJICAgIHRhcmdl dF9zaWduYWxfdG9fc3RyaW5nIChzaWdubykpOworQEAgLTE4MDUsNiArMTgxNiw5IEBAIGdldF9w ZW5kaW5nX3N0YXR1cyAoc3RydWN0IGx3cF9pbmZvICpscCwKKyAJCQkgICAgZ2RiX3NpZ25hbF90 b19zdHJpbmcgKHNpZ25vKSk7CiAgICAgIH0KICAKICsgIGlmICgqc3RhdHVzID09IDAgJiYgR0VU X1BJRCAobHAtPnB0aWQpID09IHBpZF93YXNfc3RvcHBlZCkKQEAgLTQ2LDcgKzQ2LDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiAgICByZXR1cm4gMDsKICB9 CiAgCi1AQCAtMTg2Niw2ICsxODgwLDggQEAgbGludXhfbmF0X2RldGFjaCAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcworQEAgLTE5MTgsNiArMTkzMiw4IEBAIGxpbnV4X25hdF9kZXRhY2ggKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMKICAgICAgfQogICAgZWxzZQogICAgICBsaW51eF9vcHMtPnRvX2Rl dGFjaCAob3BzLCBhcmdzLCBmcm9tX3R0eSk7CkBAIC01NSw3ICs1NSw3IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogIH0KICAKICAvKiBSZXN1bWUgTFAuICAq LwotQEAgLTIwMzEsNiArMjA0NywxNCBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzCitAQCAtMjA4Myw2ICsyMDk5LDE0IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMKICAgICAgIHJlc3VtZV9jYWxsYmFjay4gICovCiAgICBscC0+c3Rv cHBlZCA9IDA7CiAgCkBAIC03MCw3ICs3MCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9saW51eC1uYXQuYwogICAgaWYgKHJlc3VtZV9tYW55KQogICAgICBpdGVyYXRlX292ZXJf bHdwcyAocHRpZCwgcmVzdW1lX2NhbGxiYWNrLCBOVUxMKTsKICAKLUBAIC0zOTIzLDYgKzM5NDcs OCBAQCBsaW51eF9uYXRfbW91cm5faW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfCitAQCAtNDEzMiw2 ICs0MTU2LDggQEAgbGludXhfbmF0X21vdXJuX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0XwogICAg ICAgICB0aGVyZSBhcmUgb3RoZXIgdmlhYmxlIGZvcmtzIHRvIGRlYnVnLiAgRGVsZXRlIHRoZSBl eGl0aW5nCiAgICAgICAgIG9uZSBhbmQgY29udGV4dC1zd2l0Y2ggdG8gdGhlIGZpcnN0IGF2YWls YWJsZS4gICovCiAgICAgIGxpbnV4X2ZvcmtfbW91cm5faW5mZXJpb3IgKCk7CkBAIC03OSwxMSAr NzksMTEgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiAgfQog IAogIC8qIENvbnZlcnQgYSBuYXRpdmUvaG9zdCBzaWdpbmZvIG9iamVjdCwgaW50by9mcm9tIHRo ZSBzaWdpbmZvIGluIHRoZQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFj aC1zdG9wcGVkLmV4cAkyMDEwLTAxLTE1IDExOjU0OjU3LjAwMDAwMDAwMCArMDEwMAotQEAgLTYy LDcgKzYyLDY1IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0geworLS0tIGdkYi03LjQu NTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVk LmV4cAkyMDEyLTAxLTA0IDA5OjI3OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAx Mi0wNi0wMiAyMDo1MjowOC44OTM1MDU0MDMgKzAyMDAKK0BAIC02Myw3ICs2Myw2NSBAQCBwcm9j IGNvcmVmdW5jIHsgdGhyZWFkdHlwZSB9IHsKICAgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCiAgICAgIGdkYl9sb2FkICR7YmluZmlsZX0KICAKCmRpZmYgLS1naXQgYS9n ZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoIGIvZ2RiLTYuOC1iejI1NDIyOS1n Y29yZS1wcnBzaW5mby5wYXRjaAppbmRleCBiNWViNTE0Li41MTA3MWY0IDEwMDY0NAotLS0gYS9n ZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCisrKyBiL2dkYi02LjgtYnoyNTQy MjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDMyMC9iZmQvZWxmLWJmZC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9iZmQv ZWxmLWJmZC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2JmZC9l bGYtYmZkLmgJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMzIwL2JmZC9lbGYtYmZkLmgJMjAxMS0wMy0yMCAxNToyNDowMi4wMDAwMDAwMDAg KzAxMDAKLUBAIC0yMTkzLDggKzIxOTMsMTAgQEAgZXh0ZXJuIEVsZl9JbnRlcm5hbF9QaGRyICog X2JmZF9lbGZfZmluZAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9iZmQvZWxmLWJmZC5o CTIwMTItMDYtMDIgMjE6MjY6MDkuOTI4NzE3MDY5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDYwMi9iZmQvZWxmLWJmZC5oCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzI3Njg5NjI1ICswMjAwCitA QCAtMjIyMSw4ICsyMjIxLDEwIEBAIGV4dGVybiBFbGZfSW50ZXJuYWxfUGhkciAqIF9iZmRfZWxm X2ZpbmQKICAvKiBFeHBvcnRlZCBpbnRlcmZhY2UgZm9yIHdyaXRpbmcgZWxmIGNvcmVmaWxlIG5v dGVzLiAqLwogIGV4dGVybiBjaGFyICplbGZjb3JlX3dyaXRlX25vdGUKICAgIChiZmQgKiwgY2hh ciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IHZvaWQgKiwgaW50KTsKQEAgLTE0 LDE3ICsxNCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLWJmZC5oCiAg ZXh0ZXJuIGNoYXIgKmVsZmNvcmVfd3JpdGVfcHJzdGF0dXMKICAgIChiZmQgKiwgY2hhciAqLCBp bnQgKiwgbG9uZywgaW50LCBjb25zdCB2b2lkICopOwogIGV4dGVybiBjaGFyICogZWxmY29yZV93 cml0ZV9wc3RhdHVzCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLmMKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2JmZC9lbGYuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMTAzMjAub3JpZy9iZmQvZWxmLmMJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwkyMDExLTAzLTIwIDE1OjI0 OjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTg4MTQsMTMgKzg4MTQsMTIgQEAgZWxmY29yZV93cml0 ZV9ub3RlIChiZmQgKmFiZmQsCi0gICByZXR1cm4gYnVmOwotIH0KLSAKLS0jaWYgZGVmaW5lZCAo SEFWRV9QUlBTSU5GT19UKSB8fCBkZWZpbmVkIChIQVZFX1BTSU5GT19UKQotKyNpZiBkZWZpbmVk IChIQVZFX1BSUFNJTkZPX1QpCi0gY2hhciAqCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2JmZC9lbGYuYwkyMDEyLTA2LTAyIDIxOjI2OjA5LjkyODcxNzA2OSArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi5jCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzMyNjg5NjIzICsw MjAwCitAQCAtODkxNyw1NiArODkxNyw2MSBAQCBjaGFyICoKICBlbGZjb3JlX3dyaXRlX3BycHNp bmZvIChiZmQgICphYmZkLAogIAkJCWNoYXIgKmJ1ZiwKICAJCQlpbnQgICpidWZzaXosCkBAIC0z Miw5ICsyNiw4IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogLQkJCWNv bnN0IGNoYXIgKnBzYXJncykKICsJCQljb25zdCBwcnBzaW5mb190ICppbnB1dCkKICB7Ci0gICBj b25zdCBjaGFyICpub3RlX25hbWUgPSAiQ09SRSI7CiAgICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tl bmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotQEAgLTg4MjgsNDgg Kzg4MjcsNTUgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKKyAKICAgIGlm IChiZWQtPmVsZl9iYWNrZW5kX3dyaXRlX2NvcmVfbm90ZSAhPSBOVUxMKQogICAgICB7CiAgICAg ICAgY2hhciAqcmV0OwpAQCAtNTIsNyArNDUsOSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy MC9iZmQvZWxmLmMKICAJcmV0dXJuIHJldDsKICAgICAgfQogIAorLSNpZiBkZWZpbmVkIChIQVZF X1BSUFNJTkZPX1QpIHx8IGRlZmluZWQgKEhBVkVfUFNJTkZPX1QpCiAtI2lmIGRlZmluZWQgKEhB VkVfUFJQU0lORk8zMl9UKSB8fCBkZWZpbmVkIChIQVZFX1BTSU5GTzMyX1QpCisrI2lmIGRlZmlu ZWQgKEhBVkVfUFJQU0lORk9fVCkKICsjaWYgZGVmaW5lZCAoSEFWRV9QUlBTSU5GTzMyX1QpCiAg ICBpZiAoYmVkLT5zLT5lbGZjbGFzcyA9PSBFTEZDTEFTUzMyKQogICAgICB7CkBAIC02NCw3ICs1 OSw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogICAgICAgIGludCBu b3RlX3R5cGUgPSBOVF9QUlBTSU5GTzsKIC0jZW5kaWYKICAKLSAgICAgICBtZW1zZXQgKCZkYXRh LCAwLCBzaXplb2YgKGRhdGEpKTsKKy0gICAgICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRh dGEpKTsKIC0gICAgICBzdHJuY3B5IChkYXRhLnByX2ZuYW1lLCBmbmFtZSwgc2l6ZW9mIChkYXRh LnByX2ZuYW1lKSk7CiAtICAgICAgc3RybmNweSAoZGF0YS5wcl9wc2FyZ3MsIHBzYXJncywgc2l6 ZW9mIChkYXRhLnByX3BzYXJncykpOwogKyAgICAgIGRhdGEucHJfc3RhdGUgPSBpbnB1dC0+cHJf c3RhdGU7CkBAIC04Myw3ICs3OCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9l bGYuYwogKyAgICAgIEJGRF9BU1NFUlQgKHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpID09IHNpemVv ZiAoaW5wdXQtPnByX3BzYXJncykpOwogKyAgICAgIG1lbWNweSAoZGF0YS5wcl9wc2FyZ3MsIGlu cHV0LT5wcl9wc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKICAgICAgICByZXR1cm4g ZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwKLSAJCQkJIG5vdGVfbmFtZSwg bm90ZV90eXBlLCAmZGF0YSwgc2l6ZW9mIChkYXRhKSk7CisgCQkJCSAiQ09SRSIsIG5vdGVfdHlw ZSwgJmRhdGEsIHNpemVvZiAoZGF0YSkpOwogICAgICB9CiAgICBlbHNlCiAgI2VuZGlmCkBAIC0x MDAsMjEgKzk1LDQwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogLSAg ICAgIHN0cm5jcHkgKGRhdGEucHJfZm5hbWUsIGZuYW1lLCBzaXplb2YgKGRhdGEucHJfZm5hbWUp KTsKIC0gICAgICBzdHJuY3B5IChkYXRhLnByX3BzYXJncywgcHNhcmdzLCBzaXplb2YgKGRhdGEu cHJfcHNhcmdzKSk7CiAgICAgICAgcmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90ZSAoYWJmZCwgYnVm LCBidWZzaXosCi0tCQkJCSBub3RlX25hbWUsIG5vdGVfdHlwZSwgJmRhdGEsIHNpemVvZiAoZGF0 YSkpOwotKwkJCQkgbm90ZV9uYW1lLCBub3RlX3R5cGUsIGlucHV0LCBzaXplb2YgKCppbnB1dCkp OworLQkJCQkgIkNPUkUiLCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEpKTsKKysJCQkJ ICJDT1JFIiwgbm90ZV90eXBlLCBpbnB1dCwgc2l6ZW9mICgqaW5wdXQpKTsKICAgICAgfQotIH0K IC0jZW5kaWYJLyogUFNJTkZPX1Qgb3IgUFJQU0lORk9fVCAqLwogKyNlbmRpZgkvKiBQUlBTSU5G T19UICovCiAgCi0gI2lmIGRlZmluZWQgKEhBVkVfUFJTVEFUVVNfVCkKLSBjaGFyICoKLUluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9saW51eC1uYXQuYworICAgZnJlZSAoYnVmKTsKKyAg IHJldHVybiBOVUxMOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Byb2Nmcy5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9wcm9jZnMuYwkyMDEy LTA2LTAyIDIxOjI2OjA5LjkyODcxNzA2OSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3Byb2Nmcy5jCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzQ1Njg5NjE4ICswMjAwCitAQCAtNTU0 MSw2ICs1NTQxLDcgQEAgcHJvY2ZzX21ha2Vfbm90ZV9zZWN0aW9uIChiZmQgKm9iZmQsIGludAor ICAgbm90ZV9kYXRhID0gKGNoYXIgKikgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwKKyAJ CQkJCSAgICAgICBub3RlX2RhdGEsCisgCQkJCQkgICAgICAgbm90ZV9zaXplLAorKwkJCQkJICAg ICAgIE5VTEwsCisgCQkJCQkgICAgICAgZm5hbWUsCisgCQkJCQkgICAgICAgcHNhcmdzKTsKKyAK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC10ZGVwLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDMtMjAg MTU6MTc6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvbGlu dXgtbmF0LmMJMjAxMS0wMy0yMCAxNToyNTozNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NjAzLDYg KzQ2MDMsMTMxIEBAIGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKLSAg IHJldHVybiBhcmdzLm5vdGVfZGF0YTsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2Ri L2xpbnV4LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjI2OjA5LjkyODcxNzA2OSArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjMxOjEyLjA1 MTYwMTUxMCArMDIwMAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAiZWxmLWJmZC5oIiAg ICAgICAgICAgIC8qIGZvciBlbGZjb3JlX3dyaXRlXyogKi8KKyAjaW5jbHVkZSAiaW5mZXJpb3Iu aCIKKyAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgorKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+ CisgCisgI2luY2x1ZGUgPGN0eXBlLmg+CisgCitAQCAtNzY5LDYgKzc3MCwxMzEgQEAgbGludXhf Y29yZWZpbGVfdGhyZWFkX2NhbGxiYWNrIChzdHJ1Y3QgdAorICAgcmV0dXJuICFhcmdzLT5ub3Rl X2RhdGE7CiAgfQogIAogKy8qIFNob3VsZCBiZSBhbHdheXMgdHJ1ZSBmb3IgTGludXggKi8KQEAg LTI0NSw0NSArMjU5LDIyIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9saW51eC1u YXQuYwogIC8qIEZpbGxzIHRoZSAidG9fbWFrZV9jb3JlZmlsZV9ub3RlIiB0YXJnZXQgdmVjdG9y LiAgQnVpbGRzIHRoZSBub3RlCiAgICAgc2VjdGlvbiBmb3IgYSBjb3JlZmlsZSwgYW5kIHJldHVy bnMgaXQgaW4gYSBtYWxsb2MgYnVmZmVyLiAgKi8KICAKLUBAIC00NjIxLDI2ICs0NzQ2LDExIEBA IGxpbnV4X25hdF9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKLSAKK0BAIC03ODQsMTYg KzkxMCw5IEBAIGxpbnV4X21ha2VfY29yZWZpbGVfbm90ZXMgKHN0cnVjdCBnZGJhcmMKKyAgIC8q IFByb2Nlc3MgaW5mb3JtYXRpb24uICAqLwogICAgaWYgKGdldF9leGVjX2ZpbGUgKDApKQogICAg ICB7Ci0tICAgICAgc3RybmNweSAoZm5hbWUsIGxiYXNlbmFtZSAoZ2V0X2V4ZWNfZmlsZSAoMCkp LCBzaXplb2YgKGZuYW1lKSk7Ci0tICAgICAgc3RybmNweSAocHNhcmdzLCBnZXRfZXhlY19maWxl ICgwKSwgc2l6ZW9mIChwc2FyZ3MpKTsKLS0gICAgICBpZiAoZ2V0X2luZmVyaW9yX2FyZ3MgKCkp Ci0tCXsKLS0JICBjaGFyICpzdHJpbmdfZW5kOwotLQkgIGNoYXIgKnBzYXJnc19lbmQgPSBwc2Fy Z3MgKyBzaXplb2YgKHBzYXJncyk7Ci0tCi0tCSAgLyogbGludXhfZWxmY29yZV93cml0ZV9wcnBz aW5mbyAoKSBoYW5kbGVzIHplcm8gdW50ZXJtaW5hdGVkCi0tCSAgICAgc3RyaW5ncyBmaW5lLiAg Ki8KLS0JICBzdHJpbmdfZW5kID0gbWVtY2hyIChwc2FyZ3MsIDAsIHNpemVvZiAocHNhcmdzKSk7 Ci0tCSAgaWYgKHN0cmluZ19lbmQgIT0gTlVMTCkKLS0JICAgIHsKLS0JICAgICAgKnN0cmluZ19l bmQrKyA9ICcgJzsKLS0JICAgICAgc3RybmNweSAoc3RyaW5nX2VuZCwgZ2V0X2luZmVyaW9yX2Fy Z3MgKCksCi0tCQkgICAgICAgcHNhcmdzX2VuZCAtIHN0cmluZ19lbmQpOwotLQkgICAgfQotLQl9 CistICAgICAgY29uc3QgY2hhciAqZm5hbWUgPSBsYmFzZW5hbWUgKGdldF9leGVjX2ZpbGUgKDAp KTsKKy0gICAgICBjaGFyICpwc2FyZ3MgPSB4c3RyZHVwIChmbmFtZSk7CiArICAgICAgY29uc3Qg cHJwc2luZm9fdCAqZGF0YSA9IGZpbGxfcHJwc2luZm8gKCk7Ci0rCi0gICAgICAgbm90ZV9kYXRh ID0gKGNoYXIgKikgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwKLSAJCQkJCQkgICBub3Rl X2RhdGEsCi0tCQkJCQkJICAgbm90ZV9zaXplLCBmbmFtZSwgcHNhcmdzKTsKLSsJCQkJCQkgICBu b3RlX3NpemUsIGRhdGEpOwotICAgICB9CiAgCi0gICAvKiBEdW1wIGluZm9ybWF0aW9uIGZvciB0 aHJlYWRzLiAgKi8KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9wcm9jZnMuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMS0w My0wOSAxMzo0ODo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dk Yi9wcm9jZnMuYwkyMDExLTAzLTIwIDE1OjI0OjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTU3NTIs NiArNTc1Miw3IEBAIHByb2Nmc19tYWtlX25vdGVfc2VjdGlvbiAoYmZkICpvYmZkLCBpbnQKLSAg IG5vdGVfZGF0YSA9IChjaGFyICopIGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsCi0gCQkJ CQkgICAgICAgbm90ZV9kYXRhLAotIAkJCQkJICAgICAgIG5vdGVfc2l6ZSwKLSsJCQkJCSAgICAg ICBOVUxMLAotIAkJCQkJICAgICAgIGZuYW1lLAotIAkJCQkJICAgICAgIHBzYXJncyk7CistICAg ICAgaWYgKGdldF9pbmZlcmlvcl9hcmdzICgpKQorLSAgICAgICAgcHNhcmdzID0gcmVjb25jYXQg KHBzYXJncywgcHNhcmdzLCAiICIsIGdldF9pbmZlcmlvcl9hcmdzICgpLAorLQkJCSAgIChjaGFy ICopIE5VTEwpOworLQorLSAgICAgIG5vdGVfZGF0YSA9IGVsZmNvcmVfd3JpdGVfcHJwc2luZm8g KG9iZmQsIG5vdGVfZGF0YSwgbm90ZV9zaXplLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZuYW1lLCBwc2FyZ3MpOworLSAgICAgIHhmcmVlIChwc2FyZ3MpOwor KyAgICAgIG5vdGVfZGF0YSA9IGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsIG5vdGVfZGF0 YSwgbm90ZV9zaXplLCBkYXRhKTsKICAKKyAgICAgICBpZiAoIW5vdGVfZGF0YSkKKyAJcmV0dXJu IE5VTEw7CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQu cGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAppbmRleCA4 M2FhOGRhLi40MWI5YjQ2IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1k aXNhYmxlZC5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5w YXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9icmVh a3BvaW50LmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9icmVha3BvaW50LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwky MDEyLTAxLTAzIDA1OjUyOjE1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MDMvZ2RiL2JyZWFrcG9pbnQuYwkyMDEyLTAxLTAzIDE1OjIyOjU2LjEwNTQwNTU1OSArMDEwMAot QEAgLTEzNzI0LDYgKzEzNzI0LDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQp CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wNi0w MiAxOToxMTo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9i cmVha3BvaW50LmMJMjAxMi0wNi0wMiAxOTo1Mjo1OC4xNjEyMjY1MDYgKzAyMDAKK0BAIC0xNTQ5 NSw2ICsxNTQ5NSw1MCBAQCBpbml0aWFsaXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQogIH0KICAK ICB2b2lkCkBAIC01MywyMyArNTMsMjMgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2Ri L2JyZWFrcG9pbnQuYwogIF9pbml0aWFsaXplX2JyZWFrcG9pbnQgKHZvaWQpCiAgewogICAgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmM7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIv YnJlYWtwb2ludC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYnJlYWtwb2ludC5o CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9icmVha3BvaW50 LmgJMjAxMi0wMS0wMyAwNTo1MjoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTAzL2dkYi9icmVha3BvaW50LmgJMjAxMi0wMS0wMyAxNToyMzowOS40NDQzNTY0ODQgKzAx MDAKLUBAIC0xMzkzLDQgKzEzOTMsNyBAQCBleHRlcm4gc3RydWN0IGdkYmFyY2ggKmdldF9zYWxf YXJjaCAoc3RyCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9icmVha3BvaW50LmgJ MjAxMi0wNS0xNiAxNjozNTowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9icmVha3BvaW50LmgJMjAxMi0wNi0wMiAxOTo1MzowOS4yNjgyMjMyNjMgKzAyMDAK K0BAIC0xNTAzLDQgKzE1MDMsNyBAQCBleHRlcm4gc3RydWN0IGdkYmFyY2ggKmdldF9zYWxfYXJj aCAoc3RyCiAgCi0gZXh0ZXJuIHZvaWQgbW9kaWZ5X3NlbWFwaG9yZSAoc3RydWN0IGJwX2xvY2F0 aW9uICpsb2NhdGlvbiwgaW50IHNldCk7CisgZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50 ICh2b2lkKTsKICAKICtleHRlcm4gdm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwog KwogICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMDMvZ2RiL29iamZpbGVzLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9vYmpmaWxlcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dk Yi9vYmpmaWxlcy5jCTIwMTItMDEtMDMgMDU6NTI6MTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEwMy9nZGIvb2JqZmlsZXMuYwkyMDEyLTAxLTAzIDE1OjIzOjI4LjE0MTI4 NzY5NyArMDEwMAotQEAgLTgxOCw2ICs4MTgsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVj dCBvYmpmaWxlICpvYmpmaQorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvb2JqZmls ZXMuYwkyMDEyLTA1LTEwIDIxOjUwOjA4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL29iamZpbGVzLmMJMjAxMi0wNi0wMiAxOTo1Mjo1OC4yMDIyMjY1MDIgKzAy MDAKK0BAIC04MDIsNiArODAyLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKICAgICAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9w cm9iZSAob2JqZmlsZSwKICAJCQkJCQkgICAgbmV3X29mZnNldHMsIGRlbHRhKTsKICAKCmRpZmYg LS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRv bnMucGF0Y2gKaW5kZXggYjE4YTA2MC4uZjgxMTk2NCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1w aWUtYWRkb25zLnBhdGNoCisrKyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApAQCAtMSw4 ICsxLDggQEAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAx OjMxOjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJm MnJlYWQuYwkyMDExLTEyLTE5IDAxOjMzOjI1LjI2MzIzODk3MiArMDEwMAotQEAgLTgzNDcsNyAr ODM0NywxMiBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCistLS0g Z2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0wNi0wMiAxOTox NDozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJy ZWFkLmMJMjAxMi0wNi0wMiAxOTo1MToyOS45NzcyNTIzMzggKzAyMDAKK0BAIC05NzQ2LDcgKzk3 NDYsMTIgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIHsKICAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CkBAIC0xNiw3 ICsxNiw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKICAK ICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb2NhdGlvbiwgY3UpOwogICAgaWYg KGF0dHIpCi1AQCAtODM1Niw2ICs4MzYxLDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBk aWVfaW5mbyAqZGllLAorQEAgLTk3NTUsNiArOTc2MCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSkKICAgICAgICAgIHsKICAgICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9D SyAoYXR0ciksIGN1KTsKQEAgLTI0LDcgKzI0LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2R3YXJmMnJlYWQuYwogICAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGF0dHJfZm9y bV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikpCiAgICAgICAgICB7Ci1AQCAtODQwOCwxMiArODQx NCwxNSBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtOTgw NywxMiArOTgxMywxNSBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUs CiAgCSAgaWYgKHN5bSAhPSBOVUxMCiAgCSAgICAgICYmIGhhbmRsZV9kYXRhX21lbWJlcl9sb2Nh dGlvbiAoY2hpbGRfZGllLCBjdSwgJm9mZnNldCkpCiAgCSAgICB7CkBAIC00Miw3ICs0Miw3IEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKICAJICBlbHNlCiAg CSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3lt KSk7CiAgCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBFIChzeW0pOwotQEAgLTg0 MjcsNyArODQzNiw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwK K0BAIC05ODI2LDcgKzk4MzUsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZv ICpkaWUsCiAgCiAgICAgICAgc3ltID0gbmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiAgICAg ICAgLyogU1lNQk9MX1ZBTFVFX0FERFJFU1MgbmV2ZXIgZ2V0cyB1c2VkIGFzIGFsbCBpdHMgZmll bGRzIGFyZSBzdGF0aWMuICAqLwpAQCAtNTEsMTkgKzUxLDE5IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKICAKICAgICAgICBzZXRfZGllX3R5cGUgKGRpZSwg dHlwZSwgY3UpOwogICAgICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZ2RidHlw ZXMuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMS0xMi0x OCAyMzozNToyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9n ZGJ0eXBlcy5oCTIwMTEtMTItMTkgMDE6MzQ6MjEuNDQ4MDI1NjIwICswMTAwCi1AQCAtMzk2LDYg KzM5Niw3IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCi0gZW51bSBmaWVsZF9sb2Nf a2luZAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEyLTA2 LTAyIDE5OjExOjU0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L2dkYnR5cGVzLmgJMjAxMi0wNi0wMiAxOTo1Mjo0NC45OTAyMzAyMDAgKzAyMDAKK0BAIC00MDEs NiArNDAxLDcgQEAgZW51bSBmaWVsZF9sb2Nfa2luZAogICAgewogICAgICBGSUVMRF9MT0NfS0lO RF9CSVRQT1MsCS8qIGJpdHBvcyAqLworICAgICBGSUVMRF9MT0NfS0lORF9FTlVNVkFMLAkvKiBl bnVtdmFsICovCiArICAgIC8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2Jq ZmlsZSdzIEFOT0ZGU0VULiAgKi8KICAgICAgRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCS8qIHBo eXNhZGRyICovCiAgICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkvKiBwaHlzbmFtZSAqLwog ICAgICBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSwkvKiBkd2FyZl9ibG9jayAqLwotQEAgLTU4 MSw2ICs1ODIsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNTk1LDYgKzU5Niw3IEBAIHN0cnVj dCBtYWluX3R5cGUKICAJICAgaXMgdGhlIGxvY2F0aW9uIChpbiB0aGUgdGFyZ2V0KSBvZiB0aGUg c3RhdGljIGZpZWxkLgogIAkgICBPdGhlcndpc2UsIHBoeXNuYW1lIGlzIHRoZSBtYW5nbGVkIGxh YmVsIG9mIHRoZSBzdGF0aWMgZmllbGQuICAqLwogIApAQCAtNzEsMTUgKzcxLDE1IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9nZGJ0eXBlcy5oCiAgCUNPUkVfQUREUiBwaHlzYWRk cjsKICAJY29uc3QgY2hhciAqcGh5c25hbWU7CiAgCi1AQCAtMTE5NCw2ICsxMTk2LDcgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQotICNkZWZpbmUgRklFTERfTE9D X0tJTkQodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2Nfa2luZCkKLSAjZGVmaW5lIEZJRUxEX0JJVFBP Uyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5iaXRwb3MpCitAQCAtMTIwMCw2ICsxMjAyLDcgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorICNkZWZpbmUgRklFTERf RU5VTVZBTF9MVkFMKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmVudW12YWwpCisgI2RlZmluZSBG SUVMRF9FTlVNVkFMKHRoaXNmbGQpIChGSUVMRF9FTlVNVkFMX0xWQUwgKHRoaXNmbGQpICsgMCkK ICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5w aHlzbmFtZSkKICsvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUn cyBBTk9GRlNFVC4gICovCiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc2ZsZCkg KCh0aGlzZmxkKS5sb2MucGh5c2FkZHIpCiAgI2RlZmluZSBGSUVMRF9EV0FSRl9CTE9DSyh0aGlz ZmxkKSAoKHRoaXNmbGQpLmxvYy5kd2FyZl9ibG9jaykKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQ T1ModGhpc2ZsZCwgYml0cG9zKQkJCVwKLUBAIC0xMjAyLDYgKzEyMDUsNyBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTIxMSw2ICsxMjE0LDcgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgU0VUX0ZJRUxE X1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxk KSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTTkFN RSAodGhpc2ZsZCkgPSAobmFtZSkpCkBAIC04NywxOSArODcsMTkgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTQUREUih0 aGlzZmxkLCBhZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9M T0NfS0lORF9QSFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRoaXNmbGQp ID0gKGFkZHIpKQotQEAgLTEyMTcsNiArMTIyMSw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2du YXRfYXV4X3R5cGUgKHN0cnUKLSAjZGVmaW5lIFRZUEVfRklFTERfTE9DX0tJTkQodGhpc3R5cGUs IG4pIEZJRUxEX0xPQ19LSU5EIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCitAQCAtMTIyNyw2 ICsxMjMxLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNk ZWZpbmUgVFlQRV9GSUVMRF9CSVRQT1ModGhpc3R5cGUsIG4pIEZJRUxEX0JJVFBPUyAoVFlQRV9G SUVMRCAodGhpc3R5cGUsIG4pKQorICNkZWZpbmUgVFlQRV9GSUVMRF9FTlVNVkFMKHRoaXN0eXBl LCBuKSBGSUVMRF9FTlVNVkFMIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBU WVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNO QU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiArLyogVGhpcyBhZGRyZXNzIGlzIHVucmVs b2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwogICNkZWZpbmUgVFlQRV9GSUVM RF9TVEFUSUNfUEhZU0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQ RV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9EV0FSRl9CTE9DSyh0 aGlzdHlwZSwgbikgRklFTERfRFdBUkZfQkxPQ0sgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkK ICAjZGVmaW5lIFRZUEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlwZSwgbikgRklFTERfQVJUSUZJ Q0lBTChUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2p2LWxhbmcuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2p2LWxhbmcuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvanYtbGFuZy5jCTIw MTEtMTItMDYgMTk6NTQ6MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvanYtbGFuZy5jCTIwMTEtMTItMTkgMDE6MzM6MjUuMjgwMjM4OTA4ICswMTAwCi1AQCAt NDMwLDcgKzQzMCw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QK Ky0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEyLTA1LTEwIDIx OjU5OjEyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2p2LWxh bmcuYwkyMDEyLTA2LTAyIDE5OjUxOjUzLjI4NjI0NTI4MCArMDIwMAorQEAgLTQzMSw3ICs0MzEs OCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCiAgICBmaWVs ZHMgPSBOVUxMOwogICAgbmZpZWxkcy0tOwkJCS8qIEZpcnN0IHNldCB1cCBkdW1teSAiY2xhc3Mi IGZpZWxkLiAgKi8KQEAgLTEwOSw3ICsxMDksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvanYtbGFuZy5jCiAgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIG5maWVsZHMpID0gImNs YXNzIjsKICAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbmZpZWxkcykgPSB2YWx1ZV90eXBlIChj bGFzKTsKICAgIFNFVF9UWVBFX0ZJRUxEX1BSSVZBVEUgKHR5cGUsIG5maWVsZHMpOwotQEAgLTQ3 OCw3ICs0NzksOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCitA QCAtNDc5LDcgKzQ4MCw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2QKICAJICBTRVRfVFlQRV9GSUVMRF9QUk9URUNURUQgKHR5cGUsIGkpOwogIAl9CiAgICAgICAg aWYgKGFjY2ZsYWdzICYgMHgwMDA4KQkvKiBBQ0NfU1RBVElDICovCkBAIC0xMTcsMTMgKzExNywx MyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvanYtbGFuZy5jCiArCVNFVF9GSUVM RF9QSFlTQUREUiAoVFlQRV9GSUVMRCAodHlwZSwgaSksIGJvZmZzZXQKICsJICAtIChUWVBFX09C SkZJTEUgKHR5cGUpID09IE5VTEwgPyAwIDogQU5PRkZTRVQgKFRZUEVfT0JKRklMRSAodHlwZSkt PnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAoVFlQRV9PQkpGSUxFICh0eXBlKSkpKSk7 CiAgICAgICAgZWxzZQotIAlUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgPSA4ICogYm9mZnNl dDsKKyAJU0VUX0ZJRUxEX0JJVFBPUyAoVFlQRV9GSUVMRCAodHlwZSwgaSksIDggKiBib2Zmc2V0 KTsKICAgICAgICBpZiAoYWNjZmxhZ3MgJiAweDgwMDApCS8qIEZJRUxEX1VOUkVTT0xWRURfRkxB RyAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3ZhbHVlLmMKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDExMTIxOC5vcmlnL2dkYi92YWx1ZS5jCTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdmFsdWUuYwkyMDExLTEyLTE5IDAxOjMz OjI1LjI4MzIzODg5NiArMDEwMAotQEAgLTI0ODEsNyArMjQ4MSw4IEBAIHZhbHVlX3N0YXRpY19m aWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcv Z2RiL3ZhbHVlLmMJMjAxMi0wNi0wMiAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi92YWx1ZS5jCTIwMTItMDYtMDIgMTk6NTE6MzAuMDMxMjUyMzE3 ICswMjAwCitAQCAtMjU5Miw3ICsyNTkyLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgaQogICAgICB7CiAgICAgIGNhc2UgRklFTERfTE9DX0tJTkRfUEhZU0FERFI6 CiAgICAgICAgcmV0dmFsID0gdmFsdWVfYXRfbGF6eSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBm aWVsZG5vKSwKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXZsYS1yaGVsNWdjYy5wYXRjaCBiL2dk Yi1hcmNoZXItdmxhLXJoZWw1Z2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBmNjQ5NTdiLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItdmxhLXJoZWw1Z2NjLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotY29tbWl0IGE5OTlhZTJjNzIyYjM2NmI5NDk4 Nzk0MWYwY2U4OTlmOTVlOGQ2NzkKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci1EYXRlOiAgIEZyaSBNYXIgMiAyMjowODo0OSAyMDEyICswMTAwCi0K LSAgICBGaXggY3Jhc2ggZm9yIGdkYi5mb3J0cmFuL2R5bmFtaWMuZXhwIHdpdGggZ2NjLWdmb3J0 cmFuLTQuMS4yLTUxLmVsNS54ODZfNjQuCi0KLS0tLSBhL2dkYi92YWxvcHMuYwotKysrIGIvZ2Ri L3ZhbG9wcy5jCi1AQCAtMTAzNyw3ICsxMDM3LDggQEAgaW50Ci0gdmFsdWVfZmV0Y2hfbGF6eSAo c3RydWN0IHZhbHVlICp2YWwpCi0gewotICAgZ2RiX2Fzc2VydCAodmFsdWVfbGF6eSAodmFsKSk7 Ci0tICBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cyAodmFsKTsKLSsgIGlmIChWQUxVRV9MVkFMICh2 YWwpICE9IGx2YWxfbWVtb3J5KQotKyAgICBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cyAodmFsKTsK LSAgIGlmICh2YWx1ZV9iaXRzaXplICh2YWwpKQotICAgICB7Ci0gICAgICAgLyogVG8gcmVhZCBh IGxhenkgYml0ZmllbGQsIHJlYWQgdGhlIGVudGlyZSBlbmNsb3NpbmcgdmFsdWUuICBUaGlzCi1A QCAtMTA4MCwxMSArMTA4MSwxNSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZh bCkKLSAKLSAJICBpZiAobGVuZ3RoKQotIAkgICAgewotKwkgICAgICAvKiBEZWxheSBpdCBhZnRl ciBvYmplY3RfYWRkcmVzc19nZXRfZGF0YSBhYm92ZS4gICovCi0rCSAgICAgIGFsbG9jYXRlX3Zh bHVlX2NvbnRlbnRzICh2YWwpOwotIAkgICAgICBhZGRyICs9IHZhbHVlX29mZnNldCAodmFsKTsK LSAJICAgICAgcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sgKHZhbCksCi0g CQkJCSBhZGRyLCB2YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwpLCBsZW5ndGgpOwotIAkgICAg fQotIAl9Ci0rICAgICAgLyogSnVzdCB0byBiZSBzdXJlIGl0IGhhcyBiZWVuIGNhbGxlZC4gICov Ci0rICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0gICAgIH0KLSAgIGVsc2Ug aWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKLSAgICAgewoKZGlmZiAtLWdp dCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDVlOWIxNjguLjZi NGU3OTkgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRj aApAQCAtMiw0OSArMiwxOCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVj dEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFn ZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDlmOGQ0N2YwNTkwOTEzMzNkMTc4YmQyNDk1 MDdmZDI1Njc2ODYwZTcKK2NvbW1pdCBkMTAyMTMyMjAxOTE1ODk4MTQ3MTRkNzFlZjBmNWJhNjRm YmMzYjc1CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hl ci1qYW5rcmF0b2NodmlsLXZsYQotYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKIGFy Y2hlci10cm9tZXktcHl0aG9uCi1hcmNoZXItc2VyZ2lvZGotc3RhcAogCiAKIGRpZmYgLS1naXQg YS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDM4YzkzYzkuLjNhY2Fj ZGIgMTAwNjQ0CitpbmRleCBiZjZiMGRhLi5mMGQ0NmRkIDEwMDY0NAogLS0tIGEvZ2RiL01ha2Vm aWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC03MjAsOCArNzIwLDggQEAgU0ZJTEVT ID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFk YS10YXNrcy5jIFwKLSAJc2VudGluZWwtZnJhbWUuYyBcCi0gCXNlcmlhbC5jIHNlci1iYXNlLmMg c2VyLXVuaXguYyBza2lwLmMgXAotIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwK LS0Jc3RhYnNyZWFkLmMgc3RhY2suYyBzdGQtcmVncy5jIHN5bWZpbGUuYyBzeW1maWxlLW1lbS5j IHN5bW1pc2MuYyBcCi0tCXN5bXRhYi5jIFwKLSsJc3RhYnNyZWFkLmMgc3RhY2suYyBzdGFwLXBy b2JlLmMgc3RkLXJlZ3MuYyBcCi0rCXN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5bW1pc2MuYyBz eW10YWIuYyBcCi0gCXRhcmdldC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5 LmMgXAotIAl0aHJlYWQuYyB0b3AuYyB0cmFjZXBvaW50LmMgXAotIAl0cmFkLWZyYW1lLmMgXAot QEAgLTgxNyw3ICs4MTcsNyBAQCBvc2RhdGEuaCBwcm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBw eXRob24vcHktZXZlbnRzLmggcHl0aG9uL3B5LXN0b3BldmVudC5oIFwKLSBweXRob24vcHl0aG9u LWludGVybmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNvcmQuaCBc Ci0gc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWItc3B1Lmggd2luZG93cy1u YXQuaCB4Y29mZnJlYWQuaCBcCi0gZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4 dHJhL2MrK2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0tZ251bGliL3N0ZGRl Zi5pbi5oIGlubGluZS1mcmFtZS5oIHNraXAuaCBcCi0rZ251bGliL3N0ZGRlZi5pbi5oIGlubGlu ZS1mcmFtZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAotIGNvbW1vbi9jb21tb24tdXRpbHMuaCBj b21tb24veG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAotIGNvbW1v bi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24uaAotIAotQEAgLTkwNSw3ICs5MDUsNyBAQCBDT01N T05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCi0gCXhtbC1zdXBw b3J0Lm8geG1sLXN5c2NhbGwubyB4bWwtdXRpbHMubyBcCi0gCXRhcmdldC1kZXNjcmlwdGlvbnMu byB0YXJnZXQtbWVtb3J5Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCi0gCWluZmVyaW9y Lm8gb3NkYXRhLm8gZ2RiX3VzbGVlcC5vIHJlY29yZC5vIGdjb3JlLm8gXAotLQlqaXQubyBwcm9n c3BhY2UubyBza2lwLm8gXAotKwlqaXQubyBwcm9nc3BhY2UubyBza2lwLm8gc3RhcC1wcm9iZS5v IFwKLSAJY29tbW9uLXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vIGdkYi1kbGZjbi5vCi0gCi0gVFNP QlMgPSBpbmZsb3cubwotQEAgLTEyOTMsNiArMTI5MywxMiBAQCBzdGFtcC1oOiAkKHNyY2Rpcikv Y29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC0xMzA0LDYgKzEzMDQsMTIgQEAgc3RhbXAtaDog JChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCiAgCSAgQ09ORklHX0xJTktTPSBcCiAg CSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIApAQCAtNTcsMjYgKzI2LDExIEBAIGluZGV4IDM4 YzkzYzkuLjNhY2FjZGIgMTAwNjQ0CiAgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3Vy ZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0CiAgCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMg LS1yZWNoZWNrCiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwotaW5kZXggMTI4 ODI1ZS4uMTNkZDg4YyAxMDA2NDQKLS0tLSBhL2dkYi9ORVdTCi0rKysgYi9nZGIvTkVXUwotQEAg LTMyOCw2ICszMjgsMTAgQEAgUmVuZXNhcyBSTDc4CQkJCXJsNzgtKi1lbGYKLSAgIEluaXRpYWwg c3VwcG9ydCBmb3IgdGhlIE9wZW5DTCBDIGxhbmd1YWdlIChodHRwOi8vd3d3Lmtocm9ub3Mub3Jn L29wZW5jbCkKLSAgIGhhcyBiZWVuIGludGVncmF0ZWQgaW50byBHREIuCi0gCi0rKiBHREIgbm93 IGhhcyBzdXBwb3J0IGZvciBTeXN0ZW1UYXAgPHN5cy9zZHQuaD4gcHJvYmVzLiAgWW91IGNhbiBz ZXQgYQotKyAgYnJlYWtwb2ludCB1c2luZyB0aGUgbmV3ICJwcm9iZToiIGxpbmVzcGVjIGFuZCBp bnNwZWN0IHRoZSBwcm9iZQotKyAgYXJndW1lbnRzIHVzaW5nIHRoZSBuZXcgJF9wcm9iZV9hcmcg ZmFtaWx5IG9mIGNvbnZlbmllbmNlIHZhcmlhYmxlcy4KLSsKLSAqIFB5dGhvbiBzY3JpcHRpbmcK LSAKLSAgICoqIFRoZSBmdW5jdGlvbiBnZGIuV3JpdGUgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwg a2V5d29yZCAnc3RyZWFtJy4KIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEt bGFuZy5jCi1pbmRleCAyOTk1NmQ3Li5kYzFmYWRkIDEwMDY0NAoraW5kZXggYWYwZmRiNS4uMDJj NmU2ZiAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxhbmcuYwot QEAgLTExODk2LDYgKzExODk2LDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKK0BAIC0xMjA1NSw2ICsxMjA1 NSw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCBwYywgaW50ICpvcGxlbnAsCiAgCiAgc3RhdGljIGludAogIGFkYV9vcGVyYXRvcl9jaGVj ayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTg0LDcgKzM4LDcgQEAgaW5k ZXggMjk5NTZkNy4uZGMxZmFkZCAxMDA2NDQKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkK ICB7Ci1AQCAtMTE5MTAsMTIgKzExOTExLDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xMjA2OSwxMiArMTIwNzAsMTUgQEAgYWRh X29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAlicmVh azsKICAKICAgICAgICBkZWZhdWx0OgpAQCAtMTAyLDMxMyArNTYsMTMgQEAgaW5kZXggMjk5NTZk Ny4uZGMxZmFkZCAxMDA2NDQKICAgICAgICAmJiAoKm9iamZpbGVfZnVuYykgKFRZUEVfT0JKRklM RSAodHlwZSksIGRhdGEpKQogICAgICByZXR1cm4gMTsKICAKLWRpZmYgLS1naXQgYS9nZGIvYW1k NjQtbGludXgtbmF0LmMgYi9nZGIvYW1kNjQtbGludXgtbmF0LmMKLWluZGV4IGEwYmRiZDcuLjk4 NzYwYmYgMTAwNjQ0Ci0tLS0gYS9nZGIvYW1kNjQtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9hbWQ2 NC1saW51eC1uYXQuYwotQEAgLTMzNiw4ICszMzYsOCBAQCBhbWQ2NF9saW51eF9kcl9nZXRfc3Rh dHVzICh2b2lkKQotICAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwg RFJfU1RBVFVTKTsKLSB9Ci0gCi0tLyogQ2FsbGJhY2sgZm9yIGl0ZXJhdGVfb3Zlcl9sd3BzLiAg VXBkYXRlIHRoZSBkZWJ1ZyByZWdpc3RlcnMgb2YKLS0gICBMV1AuICAqLwotKy8qIENhbGxiYWNr IGZvciBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMuICBVcGRhdGUgdGhlIGRlYnVn IHJlZ2lzdGVycwotKyAgIG9mIExXUC4gICovCi0gCi0gc3RhdGljIGludAotIHVwZGF0ZV9kZWJ1 Z19yZWdpc3RlcnNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLCB2b2lkICphcmcpCi1A QCAtMzYzLDkgKzM2Myw3IEBAIHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2sgKHN0cnVj dCBsd3BfaW5mbyAqbHdwLCB2b2lkICphcmcpCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9k cl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotIHsKLS0gIHB0aWRfdCBwaWRf cHRpZCA9IHBpZF90b19wdGlkIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKLS0KLS0g IGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxs YmFjaywgTlVMTCk7Ci0rICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0 ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOwotIH0KLSAKLSAvKiBTZXQgYWRkcmVz cyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgdGhlIGN1cnJlbnQK LUBAIC0zNzgsNyArMzc2LDcgQEAgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0s IENPUkVfQUREUiBhZGRyKQotIAotICAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVt IDw9IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERSKTsKLSAKLS0gIGl0ZXJhdGVfb3Zlcl9sd3Bz IChwaWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7Ci0rICBs aW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNf Y2FsbGJhY2ssIE5VTEwpOwotIH0KLSAKLSAvKiBDYWxsZWQgd2hlbiByZXN1bWluZyBhIHRocmVh ZC4KLUBAIC00MDAsNiArMzk4LDEzIEBAIGFtZDY0X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChz dHJ1Y3QgbHdwX2luZm8gKmx3cCkKLSAgICAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg KnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci0gICAgICAgaW50IGk7Ci0gCi0rICAg ICAgLyogT24gTGludXgga2VybmVsIGJlZm9yZSAyLjYuMzMgY29tbWl0Ci0rCSA3MmY2NzRkMjAz Y2QyMzA0MjY0MzdjZGNmN2RkNmY2ODFkYWQ4YjBkCi0rCSBpZiB5b3UgZW5hYmxlIGEgYnJlYWtw b2ludCBieSB0aGUgRFJfQ09OVFJPTCBiaXRzIHlvdSBuZWVkIHRvIGhhdmUKLSsJIGFscmVhZHkg d3JpdHRlbiB0aGUgY29ycmVzcG9uZGluZyBEUl9GSVJTVEFERFIuLi5EUl9MQVNUQUREUiByZWdp c3RlcnMuCi0rCi0rCSBFbnN1cmUgRFJfQ09OVFJPTCBnZXRzIHdyaXR0ZW4gYXMgdGhlIHZlcnkg bGFzdCByZWdpc3RlciBoZXJlLiAgKi8KLSsKLSAgICAgICBmb3IgKGkgPSBEUl9GSVJTVEFERFI7 IGkgPD0gRFJfTEFTVEFERFI7IGkrKykKLSAJaWYgKHN0YXRlLT5kcl9yZWZfY291bnRbaV0gPiAw KQotIAkgIHsKLWRpZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgtdGRlcC5jIGIvZ2RiL2FtZDY0 LWxpbnV4LXRkZXAuYwotaW5kZXggY2E5YWRlNi4uYzMwMTg1ZCAxMDA2NDQKLS0tLSBhL2dkYi9h bWQ2NC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKLUBAIC0xMzYy LDYgKzEzNjIsMTUgQEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8g aW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICBzZXRfZ2RiYXJjaF9wcm9jZXNzX3Jl Y29yZCAoZ2RiYXJjaCwgaTM4Nl9wcm9jZXNzX3JlY29yZCk7Ci0gICBzZXRfZ2RiYXJjaF9wcm9j ZXNzX3JlY29yZF9zaWduYWwgKGdkYmFyY2gsIGFtZDY0X2xpbnV4X3JlY29yZF9zaWduYWwpOwot IAotKyAgLyogU3lzdGVtVGFwIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLiAgKi8KLSsgIHNldF9n ZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICIkIik7Ci0rICBzZXRfZ2RiYXJj aF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgIiUiKTsKLSsgIHNldF9nZGJhcmNoX3N0 YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAiKCIpOwotKyAgc2V0X2dk YmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwgIikiKTsKLSsg IHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIGkzODZfc3RhcF9p c19zaW5nbGVfb3BlcmFuZCk7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9r ZW4gKGdkYmFyY2gsCi0rCQkJCQlpMzg2X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbik7Ci0rCi0g ICAvKiBJbml0aWFsaXplIHRoZSBhbWQ2NF9saW51eF9yZWNvcmRfdGRlcC4gICovCi0gICAvKiBU aGVzZSB2YWx1ZXMgYXJlIHRoZSBzaXplIG9mIHRoZSB0eXBlIHRoYXQgd2lsbCBiZSB1c2VkIGlu IGEgc3lzdGVtCi0gICAgICBjYWxsLiAgVGhleSBhcmUgb2J0YWluZWQgZnJvbSBMaW51eCBLZXJu ZWwgc291cmNlLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvYXJtLWxpbnV4LXRkZXAuYyBiL2dkYi9h cm0tbGludXgtdGRlcC5jCi1pbmRleCBhYzQ4NjBjLi5kNzEwNjgyIDEwMDY0NAotLS0tIGEvZ2Ri L2FybS1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9hcm0tbGludXgtdGRlcC5jCi1AQCAtNDMsNiAr NDMsMTIgQEAKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInN5bWZpbGUuaCIK LSAKLSsjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgi Ci0rI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCi0rI2luY2x1ZGUgInVzZXItcmVncy5oIgotKyNp bmNsdWRlIDxjdHlwZS5oPgotKwotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gCi0gLyogVGhp cyBpcyBkZWZpbmVkIGluIDxlbGYuaD4gb24gQVJNIEdOVS9MaW51eCBzeXN0ZW1zLiAgKi8KLUBA IC0xMDUzLDYgKzEwNTksMTIyIEBAIGFybV9saW51eF9kaXNwbGFjZWRfc3RlcF9jb3B5X2luc24g KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcmV0dXJuIGRzYzsKLSB9Ci0gCi0rc3RhdGlj IGludAotK2FybV9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgY29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gKCpzID09ICcjJyAvKiBMaXRlcmFsIG51 bWJlci4gICovCi0rCSAgfHwgKnMgPT0gJ1snIC8qIFJlZ2lzdGVyIGluZGlyZWN0aW9uIG9yCi0r CQkJICBkaXNwbGFjZW1lbnQuICAqLwotKwkgIHx8IGlzYWxwaGEgKCpzKSk7IC8qIFJlZ2lzdGVy IHZhbHVlLiAgKi8KLSt9Ci0rCi0rLyogVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcGFyc2UgYSBz cGVjaWFsIHRva2VuIGluIEFSTSdzIGFzc2VtYmx5LgotKwotKyAgIFRoZSBzcGVjaWFsIHRva2Vu cyBwYXJzZWQgYnkgaXQgYXJlOgotKwotKyAgICAgIC0gUmVnaXN0ZXIgZGlzcGxhY2VtZW50IChl LmcsIFtmcCwgIy04XSkKLSsKLSsgICBJdCByZXR1cm5zIG9uZSBpZiB0aGUgc3BlY2lhbCB0b2tl biBoYXMgYmVlbiBwYXJzZWQgc3VjY2Vzc2Z1bGx5LAotKyAgIG9yIHplcm8gaWYgdGhlIGN1cnJl bnQgdG9rZW4gaXMgbm90IGNvbnNpZGVyZWQgc3BlY2lhbC4gICovCi0rCi0rc3RhdGljIGludAot K2FybV9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot KwkJCSAgICAgIHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewotKyAgaWYgKCpwLT5hcmcg PT0gJ1snKQotKyAgICB7Ci0rICAgICAgLyogVGVtcG9yYXJ5IGhvbGRlciBmb3IgbG9va2FoZWFk LiAgKi8KLSsgICAgICBjb25zdCBjaGFyICp0bXAgPSBwLT5hcmc7Ci0rICAgICAgLyogVXNlZCB0 byBzYXZlIHRoZSByZWdpc3RlciBuYW1lLiAgKi8KLSsgICAgICBjb25zdCBjaGFyICpzdGFydDsK LSsgICAgICBjaGFyICpyZWduYW1lOwotKyAgICAgIGludCBsZW4sIG9mZnNldDsKLSsgICAgICBp bnQgZ290X21pbnVzID0gMDsKLSsgICAgICBsb25nIGRpc3BsYWNlbWVudDsKLSsgICAgICBzdHJ1 Y3Qgc3Rva2VuIHN0cjsKLSsKLSsgICAgICArK3RtcDsKLSsgICAgICBzdGFydCA9IHRtcDsKLSsK LSsgICAgICAvKiBSZWdpc3RlciBuYW1lLiAgKi8KLSsgICAgICB3aGlsZSAoaXNhbG51bSAoKnRt cCkpCi0rCSsrdG1wOwotKwotKyAgICAgIGlmICgqdG1wICE9ICcsJykKLSsJcmV0dXJuIDA7Ci0r Ci0rICAgICAgbGVuID0gdG1wIC0gc3RhcnQ7Ci0rICAgICAgcmVnbmFtZSA9IGFsbG9jYSAobGVu ICsgMik7Ci0rCi0rICAgICAgb2Zmc2V0ID0gMDsKLSsgICAgICBpZiAoaXNkaWdpdCAoKnN0YXJ0 KSkKLSsJewotKwkgIC8qIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSByZWdpc3RlciB3aG9zZSBu YW1lIGJlZ2lucyB3aXRoIGEKLSsJICAgICBkaWdpdCwgaXQgbWVhbnMgd2Ugc2hvdWxkIHByZWZp eCB0aGUgbmFtZSB3aXRoIHRoZSBsZXR0ZXIKLSsJICAgICBgcicsIGJlY2F1c2UgR0RCIGV4cGVj dHMgdGhpcyBuYW1lIHBhdHRlcm4uICBPdGhlcndpc2UgKGUuZy4sCi0rCSAgICAgd2UgYXJlIGRl YWxpbmcgd2l0aCB0aGUgcmVnaXN0ZXIgYGZwJyksIHdlIGRvbid0IG5lZWQgdG8KLSsJICAgICBh ZGQgc3VjaCBhIHByZWZpeC4gICovCi0rCSAgcmVnbmFtZVswXSA9ICdyJzsKLSsJICBvZmZzZXQg PSAxOwotKwl9Ci0rCi0rICAgICAgc3RybmNweSAocmVnbmFtZSArIG9mZnNldCwgc3RhcnQsIGxl bik7Ci0rICAgICAgbGVuICs9IG9mZnNldDsKLSsgICAgICByZWduYW1lW2xlbl0gPSAnXDAnOwot KwotKyAgICAgIGlmICh1c2VyX3JlZ19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsIHJlZ25h bWUsIGxlbikgPT0gLTEpCi0rCWVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgYCVzJyBv biBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgICAgICByZWduYW1lLCBwLT5zYXZlZF9hcmcpOwot KwotKyAgICAgICsrdG1wOwotKyAgICAgIHRtcCA9IHNraXBfc3BhY2VzX2NvbnN0ICh0bXApOwot KyAgICAgIGlmICgqdG1wKysgIT0gJyMnKQotKwlyZXR1cm4gMDsKLSsKLSsgICAgICBpZiAoKnRt cCA9PSAnLScpCi0rCXsKLSsJICArK3RtcDsKLSsJICBnb3RfbWludXMgPSAxOwotKwl9Ci0rCi0r ICAgICAgZGlzcGxhY2VtZW50ID0gc3RydG9sICh0bXAsIChjaGFyICoqKSAmdG1wLCAxMCk7Ci0r Ci0rICAgICAgLyogU2tpcHBpbmcgbGFzdCBgXScuICAqLwotKyAgICAgIGlmICgqdG1wKysgIT0g J10nKQotKwlyZXR1cm4gMDsKLSsKLSsgICAgICAvKiBUaGUgZGlzcGxhY2VtZW50LiAgKi8KLSsg ICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Ci0rICAgICAgd3JpdGVfZXhwX2Vs dF90eXBlIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xvbmcpOwotKyAgICAgIHdy aXRlX2V4cF9lbHRfbG9uZ2NzdCAoZGlzcGxhY2VtZW50KTsKLSsgICAgICB3cml0ZV9leHBfZWx0 X29wY29kZSAoT1BfTE9ORyk7Ci0rICAgICAgaWYgKGdvdF9taW51cykKLSsJd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKFVOT1BfTkVHKTsKLSsKLSsgICAgICAvKiBUaGUgcmVnaXN0ZXIgbmFtZS4gICov Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKLSsgICAgICBzdHIu cHRyID0gcmVnbmFtZTsKLSsgICAgICBzdHIubGVuZ3RoID0gbGVuOwotKyAgICAgIHdyaXRlX2V4 cF9zdHJpbmcgKHN0cik7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVS KTsKLSsKLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKLSsKLSsgICAg ICAvKiBDYXN0aW5nIHRvIHRoZSBleHBlY3RlZCB0eXBlLiAgKi8KLSsgICAgICB3cml0ZV9leHBf ZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKGxvb2t1 cF9wb2ludGVyX3R5cGUgKHAtPmFyZ190eXBlKSk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNv ZGUgKFVOT1BfQ0FTVCk7Ci0rCi0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfSU5E KTsKLSsKLSsgICAgICBwLT5hcmcgPSB0bXA7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgcmV0dXJu IDA7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBhcm1fbGludXhfaW5p dF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKLSAJCSAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCkKLUBAIC0xMTUyLDYgKzEyNzQsMTUgQEAgYXJtX2xpbnV4X2luaXRfYWJpIChzdHJ1 Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCi0gCQkJCQkgICBzaW1wbGVfZGlzcGxhY2VkX3N0ZXBfZnJl ZV9jbG9zdXJlKTsKLSAgIHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2xvY2F0aW9uIChnZGJh cmNoLCBkaXNwbGFjZWRfc3RlcF9hdF9lbnRyeV9wb2ludCk7Ci0gCi0rICAvKiBTeXN0ZW1UYXAg ZnVuY3Rpb25zLiAgKi8KLSsgIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFy Y2gsICIjIik7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwg InIiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChn ZGJhcmNoLCAiWyIpOwotKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9z dWZpeCAoZ2RiYXJjaCwgIl0iKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3By ZWZpeCAoZ2RiYXJjaCwgInIiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJh bmQgKGdkYmFyY2gsIGFybV9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKLSsgIHNldF9nZGJhcmNo X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwKLSsJCQkJCWFybV9zdGFwX3BhcnNl X3NwZWNpYWxfdG9rZW4pOwotIAotICAgdGRlcC0+c3lzY2FsbF9uZXh0X3BjID0gYXJtX2xpbnV4 X3N5c2NhbGxfbmV4dF9wYzsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2F4LWdkYi5jIGIvZ2RiL2F4 LWdkYi5jCi1pbmRleCAzMWU5MWI5Li40NTE4ZjZiIDEwMDY0NAotLS0tIGEvZ2RiL2F4LWdkYi5j Ci0rKysgYi9nZGIvYXgtZ2RiLmMKLUBAIC05NSw4ICs5NSw2IEBAIHN0YXRpYyB2b2lkIGdlbl9p bnRfbGl0ZXJhbCAoc3RydWN0IGFnZW50X2V4cHIgKmF4LAotIAkJCSAgICAgc3RydWN0IGF4c192 YWx1ZSAqdmFsdWUsCi0gCQkJICAgICBMT05HRVNUIGssIHN0cnVjdCB0eXBlICp0eXBlKTsKLSAK LS0KLS1zdGF0aWMgdm9pZCByZXF1aXJlX3J2YWx1ZSAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBz dHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSk7Ci0gc3RhdGljIHZvaWQgZ2VuX3VzdWFsX3VuYXJ5IChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCi0gCQkJICAgICBz dHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSk7Ci0gc3RhdGljIGludCB0eXBlX3dpZGVyX3RoYW4gKHN0 cnVjdCB0eXBlICp0eXBlMSwgc3RydWN0IHR5cGUgKnR5cGUyKTsKLUBAIC0xNTcsOCArMTU1LDYg QEAgc3RhdGljIHZvaWQgZ2VuX3JlcGVhdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24g ZXhwX2VsZW1lbnQgKipwYywKLSBzdGF0aWMgdm9pZCBnZW5fc2l6ZW9mIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCB1bmlvbiBleHBfZWxlbWVudCAqKnBjLAotIAkJCXN0cnVjdCBhZ2VudF9leHBy ICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCi0gCQkJc3RydWN0IHR5cGUgKnNpemVfdHlw ZSk7Ci0tc3RhdGljIHZvaWQgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9u IGV4cF9lbGVtZW50ICoqcGMsCi0tCQkgICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVj dCBheHNfdmFsdWUgKnZhbHVlKTsKLSBzdGF0aWMgdm9pZCBnZW5fZXhwcl9iaW5vcF9yZXN0IChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkJCQkgZW51bSBleHBfb3Bjb2RlIG9wLCB1bmlvbiBl eHBfZWxlbWVudCAqKnBjLAotIAkJCQkgc3RydWN0IGFnZW50X2V4cHIgKmF4LAotQEAgLTc4OSw3 ICs3ODUsNyBAQCBnZW5faW50X2xpdGVyYWwgKHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0 IGF4c192YWx1ZSAqdmFsdWUsIExPTkdFU1QgaywKLSAvKiBUYWtlIHdoYXQncyBvbiB0aGUgdG9w IG9mIHRoZSBzdGFjayAoYXMgZGVzY3JpYmVkIGJ5IFZBTFVFKSwgYW5kCi0gICAgdHJ5IHRvIG1h a2UgYW4gcnZhbHVlIG91dCBvZiBpdC4gIFNpZ25hbCBhbiBlcnJvciBpZiB3ZSBjYW4ndCBkbwot ICAgIHRoYXQuICAqLwotLXN0YXRpYyB2b2lkCi0rdm9pZAotIHJlcXVpcmVfcnZhbHVlIChzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKQotIHsKLSAgIC8qIE9u bHkgZGVhbCB3aXRoIHNjYWxhcnMsIHN0cnVjdHMgYW5kIHN1Y2ggbWF5IGJlIHRvbyBsYXJnZQot QEAgLTE4MDcsNyArMTgwMyw3IEBAIGdlbl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gLyogWFhYOiBpMThuICovCi0gLyogQSBnZW5fZXhw ciBmdW5jdGlvbiB3cml0dGVuIGJ5IGEgR2VuLVgnZXIgZ3V5LgotICAgIEFwcGVuZCBjb2RlIGZv ciB0aGUgc3ViZXhwcmVzc2lvbiBvZiBFWFBSIHN0YXJ0aW5nIGF0ICpQT1NfUCB0byBBWC4gICov Ci0tc3RhdGljIHZvaWQKLSt2b2lkCi0gZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gCSAgc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1 Y3QgYXhzX3ZhbHVlICp2YWx1ZSkKLSB7Ci1AQCAtMjA0Miw3ICsyMDM4LDggQEAgZ2VuX2V4cHIg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gCi0gICAg IGNhc2UgT1BfSU5URVJOQUxWQVI6Ci0gICAgICAgewotLQljb25zdCBjaGFyICpuYW1lID0gaW50 ZXJuYWx2YXJfbmFtZSAoKCpwYylbMV0uaW50ZXJuYWx2YXIpOwotKwlzdHJ1Y3QgaW50ZXJuYWx2 YXIgKnZhciA9ICgqcGMpWzFdLmludGVybmFsdmFyOwotKwljb25zdCBjaGFyICpuYW1lID0gaW50 ZXJuYWx2YXJfbmFtZSAodmFyKTsKLSAJc3RydWN0IHRyYWNlX3N0YXRlX3ZhcmlhYmxlICp0c3Y7 Ci0gCi0gCSgqcGMpICs9IDM7Ci1AQCAtMjA1Niw3ICsyMDUzLDcgQEAgZ2VuX2V4cHIgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gCSAgICB2YWx1ZS0+ a2luZCA9IGF4c19ydmFsdWU7Ci0gCSAgICB2YWx1ZS0+dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZXhw LT5nZGJhcmNoKS0+YnVpbHRpbl9sb25nX2xvbmc7Ci0gCSAgfQotLQllbHNlCi0rCWVsc2UgaWYg KCEgY29tcGlsZV9pbnRlcm5hbHZhcl90b19heCAodmFyLCBheCwgdmFsdWUpKQotIAkgIGVycm9y IChfKCIkJXMgaXMgbm90IGEgdHJhY2Ugc3RhdGUgdmFyaWFibGU7IEdEQiBhZ2VudCAiCi0gCQkg ICAiZXhwcmVzc2lvbnMgY2Fubm90IHVzZSBjb252ZW5pZW5jZSB2YXJpYWJsZXMuIiksIG5hbWUp OwotICAgICAgIH0KLWRpZmYgLS1naXQgYS9nZGIvYXgtZ2RiLmggYi9nZGIvYXgtZ2RiLmgKLWlu ZGV4IDQ4YzM1YTQuLjA5ZjY4ODkgMTAwNjQ0Ci0tLS0gYS9nZGIvYXgtZ2RiLmgKLSsrKyBiL2dk Yi9heC1nZGIuaAotQEAgLTExMCw2ICsxMTAsMTEgQEAgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHBy ICpnZW5fdHJhY2VfZm9yX3JldHVybl9hZGRyZXNzIChDT1JFX0FERFIsCi0gCi0gZXh0ZXJuIHN0 cnVjdCBhZ2VudF9leHByICpnZW5fZXZhbF9mb3JfZXhwciAoQ09SRV9BRERSLCBzdHJ1Y3QgZXhw cmVzc2lvbiAqKTsKLSAKLStleHRlcm4gdm9pZCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgdW5pb24gZXhwX2VsZW1lbnQgKipwYywKLSsJCSAgICAgIHN0cnVjdCBhZ2VudF9leHBy ICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUpOwotKwotK2V4dGVybiB2b2lkIHJlcXVpcmVf cnZhbHVlIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKTsK LSsKLSBleHRlcm4gaW50IHRyYWNlX2tsdWRnZTsKLSBleHRlcm4gaW50IHRyYWNlX3N0cmluZ19r bHVkZ2U7Ci0gCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXgg NTdhYjRjMi4uNTczNjMwZSAxMDA2NDQKK2luZGV4IDE1MDM3MzAuLmE1MjJiY2EgMTAwNjQ0CiAt LS0gYS9nZGIvYmxvY2suYwogKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC0zNjksMyArMzY5LDIxIEBA IGFsbG9jYXRlX2Jsb2NrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKK0BAIC02ODcsMyArNjg3 LDIxIEBAIGJsb2NrX2l0ZXJfbWF0Y2hfbmV4dCAoY29uc3QgY2hhciAqbmFtZSwKICAKLSAgIHJl dHVybiBibDsKKyAgIHJldHVybiBibG9ja19pdGVyX21hdGNoX3N0ZXAgKGl0ZXJhdG9yLCBuYW1l LCBjb21wYXJlLCAwKTsKICB9CiArCiArLyogUmV0dXJuIE9CSkZJTEUgaW4gd2hpY2ggQkxPQ0sg aXMgbG9jYXRlZCBvciBOVUxMIGlmIHdlIGNhbm5vdCBmaW5kIGl0IGZvcgpAQCAtNDI5LDIzOCAr ODMsMjEgQEAgaW5kZXggNTdhYjRjMi4uNTczNjMwZSAxMDA2NDQKICsgIHJldHVybiBTWU1CT0xf U1lNVEFCIChmdW5jKS0+b2JqZmlsZTsKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmggYi9n ZGIvYmxvY2suaAotaW5kZXggMmNiY2MxYi4uMTA0YzE0NiAxMDA2NDQKK2luZGV4IDk5YzQ3ODgu LjZjZWI3MDQgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suaAogKysrIGIvZ2RiL2Jsb2NrLmgKLUBA IC0xNjcsNCArMTY3LDYgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2tfZ2xvYmFs X2Jsb2NrIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSAKLSBleHRlcm4gc3RydWN0IGJs b2NrICphbGxvY2F0ZV9ibG9jayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOworQEAgLTI3OSw0 ICsyNzksNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChj b25zdCBjaGFyICpuYW1lLAorICAgICAgICAoc3ltKTsJCQkJCQlcCisgICAgICAgIChzeW0pID0g YmxvY2tfaXRlcmF0b3JfbmV4dCAoJihpdGVyKSkpCiAgCiArZXh0ZXJuIHN0cnVjdCBvYmpmaWxl ICpibG9ja19vYmpmaWxlIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKICsKICAjZW5kaWYg LyogQkxPQ0tfSCAqLwogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtw b2ludC5jCi1pbmRleCBmNmEwMjc2Li5lNDA2MTU2IDEwMDY0NAoraW5kZXggYTg2N2IxMC4uZTQx YzY5MiAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50 LmMKLUBAIC02MCw2ICs2MCw4IEBACi0gI2luY2x1ZGUgImppdC5oIgotICNpbmNsdWRlICJ4bWwt c3lzY2FsbC5oIgotICNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgotKyNpbmNsdWRlICJnZGJfcmVn ZXguaCIKLSsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLXV0aWxz LmgiCi0gI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKLSAjaW5jbHVkZSAic3RhY2suaCIKLUBA IC0xMjM5LDkgKzEyNDEsMTAgQEAgaXNfd2F0Y2hwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9p bnQgKmJwdCkKLSBzdGF0aWMgaW50Ci0gd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVj dCB3YXRjaHBvaW50ICpiKQotIHsKLS0gIHJldHVybiAocHRpZF9lcXVhbCAoYi0+d2F0Y2hwb2lu dF90aHJlYWQsIG51bGxfcHRpZCkKLS0JICB8fCAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwg Yi0+d2F0Y2hwb2ludF90aHJlYWQpCi0tCSAgICAgICYmICFpc19leGVjdXRpbmcgKGluZmVyaW9y X3B0aWQpKSk7Ci0rICByZXR1cm4gKGItPmJhc2UucHNwYWNlID09IGN1cnJlbnRfcHJvZ3JhbV9z cGFjZQotKwkgICYmIChwdGlkX2VxdWFsIChiLT53YXRjaHBvaW50X3RocmVhZCwgbnVsbF9wdGlk KQotKwkgICAgICB8fCAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgYi0+d2F0Y2hwb2ludF90 aHJlYWQpCi0rCQkgICYmICFpc19leGVjdXRpbmcgKGluZmVyaW9yX3B0aWQpKSkpOwotIH0KLSAK LSAvKiBTZXQgd2F0Y2hwb2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3RvcCwgZXZlbiBpbmNs dWRpbmcgaXRzIHBvc3NpYmxlCi1AQCAtMTY0OCw2ICsxNjUxLDQwIEBAIHVuZHVwbGljYXRlZF9z aG91bGRfYmVfaW5zZXJ0ZWQgKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwpCi0gICByZXR1cm4gcmVz dWx0OwotIH0KLSAKLSsvKiBTZWUgdGhlIGNvbW1lbnQgaW4gYnJlYWtwb2ludC5oLiAgKi8KLSsK LSt2b2lkCi0rbW9kaWZ5X3NlbWFwaG9yZSAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MsIGludCBz ZXQpCi0rewotKyAgc3RydWN0IGdkYmFyY2ggKmFyY2ggPSBsb2MtPmdkYmFyY2g7Ci0rICBnZGJf Ynl0ZSBieXRlc1tzaXplb2YgKExPTkdFU1QpXTsKLSsgIC8qIFRoZSBBQkkgc3BlY2lmaWVzICJ1 bnNpZ25lZCBzaG9ydCIuICAqLwotKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBidWlsdGluX3R5cGUg KGFyY2gpLT5idWlsdGluX3Vuc2lnbmVkX3Nob3J0OwotKyAgQ09SRV9BRERSIGFkZHJlc3MgPSBs b2MtPnNlbWFwaG9yZTsKLSsgIFVMT05HRVNUIHZhbHVlOwotKwotKyAgaWYgKGFkZHJlc3MgPT0g MCkKLSsgICAgcmV0dXJuOwotKwotKyAgLyogU3dhbGxvdyBlcnJvcnMuICAqLwotKyAgaWYgKHRh cmdldF9yZWFkX21lbW9yeSAoYWRkcmVzcywgYnl0ZXMsIFRZUEVfTEVOR1RIICh0eXBlKSkgIT0g MCkKLSsgICAgcmV0dXJuOwotKwotKyAgdmFsdWUgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIg KGJ5dGVzLCBUWVBFX0xFTkdUSCAodHlwZSksCi0rCQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIg KGFyY2gpKTsKLSsgIC8qIE5vdGUgdGhhdCB3ZSBleHBsaWNpdGx5IGRvbid0IHdvcnJ5IGFib3V0 IG92ZXJmbG93IG9yCi0rICAgICB1bmRlcmZsb3cuICAqLwotKyAgaWYgKHNldCkKLSsgICAgKyt2 YWx1ZTsKLSsgIGVsc2UKLSsgICAgLS12YWx1ZTsKLSsKLSsgIHN0b3JlX3Vuc2lnbmVkX2ludGVn ZXIgKGJ5dGVzLCBUWVBFX0xFTkdUSCAodHlwZSksCi0rCQkJICBnZGJhcmNoX2J5dGVfb3JkZXIg KGFyY2gpLCB2YWx1ZSk7Ci0rCi0rICB0YXJnZXRfd3JpdGVfbWVtb3J5IChhZGRyZXNzLCBieXRl cywgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSt9Ci0rCi0gLyogSW5zZXJ0IGEgbG93LWxldmVsICJi cmVha3BvaW50IiBvZiBzb21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAotICAgIGxvY2F0 aW9uLiAgQW55IGVycm9yIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIFRNUF9FUlJPUl9TVFJFQU07 IGFuZAotICAgIERJU0FCTEVEX0JSRUFLUywgYW5kIEhXX0JSRUFLUE9JTlRfRVJST1IgYXJlIHVz ZWQgdG8gcmVwb3J0IHByb2JsZW1zLgotQEAgLTE3NDEsNiArMTc3OCw4IEBAIGluc2VydF9icF9s b2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpibCwKLSAJICAvKiBObyBvdmVybGF5IGhhbmRs aW5nOiBqdXN0IHNldCB0aGUgYnJlYWtwb2ludC4gICovCi0gCi0gCSAgdmFsID0gYmwtPm93bmVy LT5vcHMtPmluc2VydF9sb2NhdGlvbiAoYmwpOwotKwotKwkgIG1vZGlmeV9zZW1hcGhvcmUgKGJs LCAxKTsKLSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTIyMjQsMTEgKzIyNjMsMjMgQEAgc3Ry dWN0IGJyZWFrcG9pbnRfb2JqZmlsZV9kYXRhCi0gICAvKiBNaW5pbWFsIHN5bWJvbChzKSBmb3Ig ImxvbmdqbXAiLCAic2lnbG9uZ2ptcCIsIGV0Yy4gKGlmIGFueSkuICAqLwotICAgc3RydWN0IG1p bmltYWxfc3ltYm9sICpsb25nam1wX21zeW1bTlVNX0xPTkdKTVBfTkFNRVNdOwotIAotKyAgLyog VHJ1ZSBpZiB3ZSBoYXZlIGxvb2tlZCBmb3IgbG9uZ2ptcCBwcm9iZXMuICAqLwotKyAgaW50IGxv bmdqbXBfc2VhcmNoZWQ7Ci0rCi0rICAvKiBTeXN0ZW1UYXAgcHJvYmUgcG9pbnRzIGZvciBsb25n am1wIChpZiBhbnkpLiAgKi8KLSsgIFZFQyAoc3RhcF9wcm9iZV9wKSAqbG9uZ2ptcF9wcm9iZXM7 Ci0rCi0gICAvKiBNaW5pbWFsIHN5bWJvbCBmb3IgInN0ZDo6dGVybWluYXRlKCkiIChpZiBhbnkp LiAgKi8KLSAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqdGVybWluYXRlX21zeW07Ci0gCi0gICAv KiBNaW5pbWFsIHN5bWJvbCBmb3IgIl9VbndpbmRfRGVidWdIb29rIiAoaWYgYW55KS4gICovCi0g ICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmV4Y2VwdGlvbl9tc3ltOwotKwotKyAgLyogVHJ1ZSBp ZiB3ZSBoYXZlIGxvb2tlZCBmb3IgZXhjZXB0aW9uIHByb2Jlcy4gICovCi0rICBpbnQgZXhjZXB0 aW9uX3NlYXJjaGVkOwotKwotKyAgLyogU3lzdGVtVGFwIHByb2JlIHBvaW50cyBmb3IgdW53aW5k aW5nIChpZiBhbnkpLiAgKi8KLSsgIFZFQyAoc3RhcF9wcm9iZV9wKSAqZXhjZXB0aW9uX3Byb2Jl czsKLSB9OwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZmlsZV9kYXRhICpicmVha3BvaW50 X29iamZpbGVfa2V5OwotQEAgLTIyNjUsNiArMjMxNiwxNSBAQCBnZXRfYnJlYWtwb2ludF9vYmpm aWxlX2RhdGEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIH0KLSAKLSBzdGF0aWMgdm9pZAot K2ZyZWVfYnJlYWtwb2ludF9wcm9iZXMgKHN0cnVjdCBvYmpmaWxlICpvYmosIHZvaWQgKmRhdGEp Ci0rewotKyAgc3RydWN0IGJyZWFrcG9pbnRfb2JqZmlsZV9kYXRhICpicF9vYmpmaWxlX2RhdGEg PSBkYXRhOwotKwotKyAgVkVDX2ZyZWUgKHN0YXBfcHJvYmVfcCwgYnBfb2JqZmlsZV9kYXRhLT5s b25nam1wX3Byb2Jlcyk7Ci0rICBWRUNfZnJlZSAoc3RhcF9wcm9iZV9wLCBicF9vYmpmaWxlX2Rh dGEtPmV4Y2VwdGlvbl9wcm9iZXMpOwotK30KLSsKLStzdGF0aWMgdm9pZAotIGNyZWF0ZV9vdmVy bGF5X2V2ZW50X2JyZWFrcG9pbnQgKHZvaWQpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci1AQCAtMjM0MSw2ICsyNDAxLDM3IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3Bv aW50ICh2b2lkKQotIAotICAgICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29i amZpbGVfZGF0YSAob2JqZmlsZSk7Ci0gCi0rICAgICAgaWYgKCFicF9vYmpmaWxlX2RhdGEtPmxv bmdqbXBfc2VhcmNoZWQpCi0rCXsKLSsJICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVz Ci0rCSAgICA9IGZpbmRfcHJvYmVzX2luX29iamZpbGUgKG9iamZpbGUsICJsaWJjIiwgImxvbmdq bXAiKTsKLSsJICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfc2VhcmNoZWQgPSAxOwotKwl9Ci0r Ci0rICAgICAgaWYgKGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZXMgIT0gTlVMTCkKLSsJ ewotKwkgIGludCBpOwotKwkgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKLSsJICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKwotKwkgIGZv ciAoaSA9IDA7Ci0rCSAgICAgICBWRUNfaXRlcmF0ZSAoc3RhcF9wcm9iZV9wLAotKwkJCSAgICBi cF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVzLAotKwkJCSAgICBpLCBwcm9iZSk7Ci0rCSAg ICAgICArK2kpCi0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwotKwkgICAg ICAgCi0rCSAgICAgIGIgPSBjcmVhdGVfaW50ZXJuYWxfYnJlYWtwb2ludCAoZ2RiYXJjaCwgcHJv YmUtPmFkZHJlc3MsCi0rCQkJCQkgICAgICBicF9sb25nam1wX21hc3RlciwKLSsJCQkJCSAgICAg ICZpbnRlcm5hbF9icmVha3BvaW50X29wcyk7Ci0rCSAgICAgIGItPmFkZHJfc3RyaW5nID0geHN0 cmR1cCAoIi1wIGxpYmM6bG9uZ2ptcCIpOwotKwkgICAgICBiLT5lbmFibGVfc3RhdGUgPSBicF9k aXNhYmxlZDsKLSsJICAgIH0KLSsKLSsJICBjb250aW51ZTsKLSsJfQotKwotICAgICAgIGZvciAo aSA9IDA7IGkgPCBOVU1fTE9OR0pNUF9OQU1FUzsgaSsrKQotIAl7Ci0gCSAgc3RydWN0IGJyZWFr cG9pbnQgKmI7Ci1AQCAtMjQ1MSw2ICsyNTQyLDQwIEBAIGNyZWF0ZV9leGNlcHRpb25fbWFzdGVy X2JyZWFrcG9pbnQgKHZvaWQpCi0gCi0gICAgICAgYnBfb2JqZmlsZV9kYXRhID0gZ2V0X2JyZWFr cG9pbnRfb2JqZmlsZV9kYXRhIChvYmpmaWxlKTsKLSAKLSsgICAgICAvKiBXZSBwcmVmZXIgdGhl IFN5c3RlbVRhcCBwcm9iZSBwb2ludCBpZiBpdCBleGlzdHMuICAqLwotKyAgICAgIGlmICghYnBf b2JqZmlsZV9kYXRhLT5leGNlcHRpb25fc2VhcmNoZWQpCi0rCXsKLSsJICBicF9vYmpmaWxlX2Rh dGEtPmV4Y2VwdGlvbl9wcm9iZXMKLSsJICAgID0gZmluZF9wcm9iZXNfaW5fb2JqZmlsZSAob2Jq ZmlsZSwgImxpYmdjYyIsICJ1bndpbmQiKTsKLSsJICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlv bl9zZWFyY2hlZCA9IDE7Ci0rCX0KLSsKLSsgICAgICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNl cHRpb25fcHJvYmVzICE9IE5VTEwpCi0rCXsKLSsJICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKwkgIGludCBpOwotKwkgIHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZTsKLSsKLSsJICBmb3IgKGkgPSAwOwotKwkgICAgICAgVkVDX2l0ZXJhdGUg KHN0YXBfcHJvYmVfcCwKLSsJCQkgICAgYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmVz LAotKwkJCSAgICBpLCBwcm9iZSk7Ci0rCSAgICAgICArK2kpCi0rCSAgICB7Ci0rCSAgICAgIHN0 cnVjdCBicmVha3BvaW50ICpiOwotKwotKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFr cG9pbnQgKGdkYmFyY2gsIHByb2JlLT5hZGRyZXNzLAotKwkJCQkJICAgICAgYnBfZXhjZXB0aW9u X21hc3RlciwKLSsJCQkJCSAgICAgICZpbnRlcm5hbF9icmVha3BvaW50X29wcyk7Ci0rCSAgICAg IGItPmFkZHJfc3RyaW5nID0geHN0cmR1cCAoIi1wIGxpYmdjYzp1bndpbmQiKTsKLSsJICAgICAg Yi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7Ci0rCSAgICB9Ci0rCi0rCSAgY29udGludWU7 Ci0rCX0KLSsKLSsgICAgICAvKiBPdGhlcndpc2UsIHRyeSB0aGUgaG9vayBmdW5jdGlvbi4gICov Ci0rCi0gICAgICAgaWYgKG1zeW1fbm90X2ZvdW5kX3AgKGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0 aW9uX21zeW0pKQotIAljb250aW51ZTsKLSAKLUBAIC0yNjY2LDYgKzI3OTEsOCBAQCByZW1vdmVf YnJlYWtwb2ludF8xIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLCBpbnNlcnRpb25fc3RhdGVfdCBp cykKLSAJewotIAkgIC8qIE5vIG92ZXJsYXkgaGFuZGxpbmc6IGp1c3QgcmVtb3ZlIHRoZSBicmVh a3BvaW50LiAgKi8KLSAJICB2YWwgPSBibC0+b3duZXItPm9wcy0+cmVtb3ZlX2xvY2F0aW9uIChi bCk7Ci0rCi0rCSAgbW9kaWZ5X3NlbWFwaG9yZSAoYmwsIDApOwotIAl9Ci0gICAgICAgZWxzZQot IAl7Ci1AQCAtNzExMSw2ICs3MjM4LDcgQEAgbW9tZW50YXJ5X2JyZWFrcG9pbnRfZnJvbV9tYXN0 ZXIgKHN0cnVjdCBicmVha3BvaW50ICpvcmlnLAotICAgY29weS0+bG9jLT5hZGRyZXNzID0gb3Jp Zy0+bG9jLT5hZGRyZXNzOwotICAgY29weS0+bG9jLT5zZWN0aW9uID0gb3JpZy0+bG9jLT5zZWN0 aW9uOwotICAgY29weS0+bG9jLT5wc3BhY2UgPSBvcmlnLT5sb2MtPnBzcGFjZTsKLSsgIGNvcHkt PmxvYy0+c2VtYXBob3JlID0gb3JpZy0+bG9jLT5zZW1hcGhvcmU7Ci0gCi0gICBpZiAob3JpZy0+ bG9jLT5zb3VyY2VfZmlsZSAhPSBOVUxMKQotICAgICBjb3B5LT5sb2MtPnNvdXJjZV9maWxlID0g eHN0cmR1cCAob3JpZy0+bG9jLT5zb3VyY2VfZmlsZSk7Ci1AQCAtNzE5Niw2ICs3MzI0LDcgQEAg YWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAotICAgbG9j LT5yZXF1ZXN0ZWRfYWRkcmVzcyA9IHNhbC0+cGM7Ci0gICBsb2MtPmFkZHJlc3MgPSBhZGp1c3Rl ZF9hZGRyZXNzOwotICAgbG9jLT5wc3BhY2UgPSBzYWwtPnBzcGFjZTsKLSsgIGxvYy0+c2VtYXBo b3JlID0gc2FsLT5zZW1hcGhvcmU7Ci0gICBnZGJfYXNzZXJ0IChsb2MtPnBzcGFjZSAhPSBOVUxM KTsKLSAgIGxvYy0+c2VjdGlvbiA9IHNhbC0+c2VjdGlvbjsKLSAgIGxvYy0+Z2RiYXJjaCA9IGxv Y19nZGJhcmNoOwotQEAgLTEzNTIxLDYgKzEzNjUwLDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9p ZCkKK0BAIC0xNTE1NCw2ICsxNTE1NCwyNCBAQCBhbGxfdHJhY2Vwb2ludHMgKHZvaWQpCiAgICBy ZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTY4NSwxNyArMTIyLDcgQEAgaW5kZXggZjZhMDI3Ni4u ZTQwNjE1NiAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUg YnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrCiAgICAgY29tbWFuZHMuICBJdCBpcyBk ZWZpbmVkIGFzIGEgbWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4KLUBAIC0xMzgxNSw3ICsx Mzk2Miw4IEBAIF9pbml0aWFsaXplX2JyZWFrcG9pbnQgKHZvaWQpCi0gICBvYnNlcnZlcl9hdHRh Y2hfaW5mZXJpb3JfZXhpdCAoY2xlYXJfc3lzY2FsbF9jb3VudHMpOwotICAgb2JzZXJ2ZXJfYXR0 YWNoX21lbW9yeV9jaGFuZ2VkIChpbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2Up OwotIAotLSAgYnJlYWtwb2ludF9vYmpmaWxlX2tleSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAo KTsKLSsgIGJyZWFrcG9pbnRfb2JqZmlsZV9rZXkKLSsgICAgPSByZWdpc3Rlcl9vYmpmaWxlX2Rh dGFfd2l0aF9jbGVhbnVwIChOVUxMLCBmcmVlX2JyZWFrcG9pbnRfcHJvYmVzKTsKLSAKLSAgIGJy ZWFrcG9pbnRfY2hhaW4gPSAwOwotICAgLyogRG9uJ3QgYm90aGVyIHRvIGNhbGwgc2V0X2JyZWFr cG9pbnRfY291bnQuICAkYnBudW0gaXNuJ3QgdXNlZnVsCi1AQCAtMTQzNDAsNCArMTQ0ODgsNyBA QCByYW5nZSAoaW5jbHVkaW5nIFNUQVJULUxPQ0FUSU9OIGFuZCBFTkQtTE9DQVRJT04pLiIpKTsK K0BAIC0xNjA5Nyw0ICsxNjExNSw3IEBAIFNob3cgdGhlIGNoYW5uZWwgdG8gdXNlIGZvciBkeW5h bWljIHByaW50ZiIpLCBOVUxMLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0g MTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fi b3V0X3RvX3Byb2NlZWQpOwpAQCAtNzAzLDM2ICsxMzAsOCBAQCBpbmRleCBmNmEwMjc2Li5lNDA2 MTU2IDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBl c19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5o IGIvZ2RiL2JyZWFrcG9pbnQuaAotaW5kZXggOGE4ZDVmMi4uMWUxODU2MiAxMDA2NDQKLS0tLSBh L2dkYi9icmVha3BvaW50LmgKLSsrKyBiL2dkYi9icmVha3BvaW50LmgKLUBAIC0zNzksNiArMzc5 LDExIEBAIHN0cnVjdCBicF9sb2NhdGlvbgotICAgICAgcHJvY2Vzc29yJ3MgYXJjaGl0ZWN0dWFs IGNvbnN0cmFpbnRzLiAgKi8KLSAgIENPUkVfQUREUiByZXF1ZXN0ZWRfYWRkcmVzczsKLSAKLSsg IC8qIElmIHRoZSBsb2NhdGlvbiBjb21lcyBmcm9tIGEgU3lzdGVtVGFwIHByb2JlIHBvaW50LCBh bmQgdGhlIHByb2JlCi0rICAgICBoYXMgYW4gYXNzb2NpYXRlZCBzZW1hcGhvcmUgdmFyaWFibGUs IHRoZW4gdGhpcyBpcyB0aGUgYWRkcmVzcyBvZgotKyAgICAgdGhlIHNlbWFwaG9yZS4gIE90aGVy d2lzZSwgdGhpcyBpcyB6ZXJvLiAgKi8KLSsgIENPUkVfQUREUiBzZW1hcGhvcmU7Ci0rCi0gICBj aGFyICpmdW5jdGlvbl9uYW1lOwotIAotICAgLyogRGV0YWlscyBvZiB0aGUgcGxhY2VkIGJyZWFr cG9pbnQsIHdoZW4gaW5zZXJ0ZWQuICAqLwotQEAgLTE0MTIsNCArMTQxNywxMSBAQCBleHRlcm4g aW50IHVzZXJfYnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKLSAvKiBBdHRlbXB0 IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwu ICAqLwotIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFi X2FuZF9saW5lIHNhbCk7Ci0gCi0rLyogU2V0IG9yIGNsZWFyIGEgU3lzdGVtVGFwIHNlbWFwaG9y ZS4gIExPQyBpcyB0aGUgbG9jYXRpb24gd2hpY2ggbWF5Ci0rICAgaG9sZCBhIHNlbWFwaG9yZS4g IFNFVCBpcyBub24temVybyBpZiB0aGUgc2VtYXBob3JlIHNob3VsZCBiZSBzZXQsCi0rICAgb3Ig emVybyBpZiB0aGUgc2VtYXBob3JlIHNob3VsZCBiZSBjbGVhcmVkLiAgU2VtYXBob3JlcyBhY3Qg YXMKLSsgICByZWZlcmVuY2UgY291bnRlcnMsIHNvIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gbXVz dCBiZSBwYWlyZWQuICAqLwotKwotK2V4dGVybiB2b2lkIG1vZGlmeV9zZW1hcGhvcmUgKHN0cnVj dCBicF9sb2NhdGlvbiAqbG9jYXRpb24sIGludCBzZXQpOwotKwotICNlbmRpZiAvKiAhZGVmaW5l ZCAoQlJFQUtQT0lOVF9IKSAqLwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2Ri L2MtdHlwZXByaW50LmMKLWluZGV4IGRiMjU0ZGMuLjE4MWRlMDUgMTAwNjQ0CitpbmRleCBhNTg5 MmI1Li4yOTQ0YzJkIDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBiL2dkYi9j LXR5cGVwcmludC5jCiBAQCAtNjI0LDkgKzYyNCwxNCBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19z dWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtNzUzLDEwNiArMTUyLDExIEBAIGluZGV4IGRi MjU0ZGMuLjE4MWRlMDUgMTAwNjQ0CiAgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIl0iKTsK ICAKICAJY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgc3RyZWFtLAotZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xpLXV0aWxzLmMgYi9nZGIvY2xpL2Ns aS11dGlscy5jCi1pbmRleCBhN2IyNzE4Li5hMWU1MTYxIDEwMDY0NAotLS0tIGEvZ2RiL2NsaS9j bGktdXRpbHMuYwotKysrIGIvZ2RiL2NsaS9jbGktdXRpbHMuYwotQEAgLTIyMyw2ICsyMjMsMTgg QEAgc2tpcF9zcGFjZXMgKGNoYXIgKmNocCkKLSAgIHJldHVybiBjaHA7Ci0gfQotIAotKy8qIEEg Y29uc3QtY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSBhYm92ZS4gICovCi0rCi0rY29uc3QgY2hhciAq Ci0rc2tpcF9zcGFjZXNfY29uc3QgKGNvbnN0IGNoYXIgKmNocCkKLSt7Ci0rICBpZiAoY2hwID09 IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKyAgd2hpbGUgKCpjaHAgJiYgaXNzcGFjZSAoKmNo cCkpCi0rICAgIGNocCsrOwotKyAgcmV0dXJuIGNocDsKLSt9Ci0rCi0gLyogU2VlIGRvY3VtZW50 YXRpb24gaW4gY2xpLXV0aWxzLmguICAqLwotIAotIGNoYXIgKgotQEAgLTI0NSwzICsyNTcsMzIg QEAgcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnN0YXJ0LCBjaGFyICpz KQotIAotICAgcmV0dXJuIHM7Ci0gfQotKwotKy8qIFNlZSBkb2N1bWVudGF0aW9uIGluIGNsaS11 dGlscy5oLiAgKi8KLSsKLStjaGFyICoKLStleHRyYWN0X2FyZyAoY2hhciAqKmFyZykKLSt7Ci0r ICBjaGFyICpyZXN1bHQsICpjb3B5OwotKwotKyAgaWYgKCEqYXJnKQotKyAgICByZXR1cm4gTlVM TDsKLSsKLSsgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBhcmd1bWVudC4gICovCi0rICAqYXJn ID0gc2tpcF9zcGFjZXMgKCphcmcpOwotKyAgaWYgKCEgKiphcmcpCi0rICAgIHJldHVybiBOVUxM OwotKyAgcmVzdWx0ID0gKmFyZzsKLSsKLSsgIC8qIEZpbmQgdGhlIGVuZCBvZiB0aGUgYXJndW1l bnQuICAqLwotKyAgKmFyZyA9IHNraXBfdG9fc3BhY2UgKCphcmcgKyAxKTsKLSsKLSsgIGlmIChy ZXN1bHQgPT0gKmFyZykKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBjb3B5ID0geG1hbGxvYyAo KmFyZyAtIHJlc3VsdCArIDEpOwotKyAgbWVtY3B5IChjb3B5LCByZXN1bHQsICphcmcgLSByZXN1 bHQpOwotKyAgY29weVsqYXJnIC0gcmVzdWx0XSA9ICdcMCc7Ci0rCi0rICByZXR1cm4gY29weTsK LSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktdXRpbHMuaCBiL2dkYi9jbGkvY2xpLXV0aWxz LmgKLWluZGV4IGUyM2M3ZDguLjVmOGE5MWQgMTAwNjQ0Ci0tLS0gYS9nZGIvY2xpL2NsaS11dGls cy5oCi0rKysgYi9nZGIvY2xpL2NsaS11dGlscy5oCi1AQCAtOTQsNiArOTQsMTAgQEAgZXh0ZXJu IGludCBudW1iZXJfaXNfaW5fbGlzdCAoY2hhciAqbGlzdCwgaW50IG51bWJlcik7Ci0gCi0gZXh0 ZXJuIGNoYXIgKnNraXBfc3BhY2VzIChjaGFyICppbnApOwotIAotKy8qIEEgY29uc3QtY29ycmVj dCB2ZXJzaW9uIG9mIHRoZSBhYm92ZS4gICovCi0rCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKnNraXBf c3BhY2VzX2NvbnN0IChjb25zdCBjaGFyICppbnApOwotKwotIC8qIFNraXAgbGVhZGluZyBub24t d2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIElOUCwgcmV0dXJuaW5nIGFuIHVwZGF0ZWQKLSAgICBw b2ludGVyLiAgSWYgSU5QIGlzIE5VTEwsIHJldHVybiBOVUxMLiAgKi8KLSAKLUBAIC0xMDMsNCAr MTA3LDExIEBAIGV4dGVybiBjaGFyICpza2lwX3RvX3NwYWNlIChjaGFyICppbnApOwotICAgIFNU QVJULiAgKi8KLSAKLSBleHRlcm4gY2hhciAqcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNv bnN0IGNoYXIgKnN0YXJ0LCBjaGFyICpzKTsKLSsKLSsvKiBBIGhlbHBlciBmdW5jdGlvbiB0byBl eHRyYWN0IGFuIGFyZ3VtZW50IGZyb20gKkFSRy4gIEFuIGFyZ3VtZW50IGlzCi0rICAgZGVsaW1p dGVkIGJ5IHdoaXRlc3BhY2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBOVUxMIGlmIG5v Ci0rICAgYXJndW1lbnQgd2FzIGZvdW5kLCBvciBhbiB4bWFsbG9jJ2Qgc3RyaW5nLiAgKi8KLSsK LStleHRlcm4gY2hhciAqZXh0cmFjdF9hcmcgKGNoYXIgKiphcmcpOwotKwotICNlbmRpZiAvKiBD TElfVVRJTFNfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFk LmMKLWluZGV4IGM3MjcyMjguLmUxZmFiNmQgMTAwNjQ0Ci0tLS0gYS9nZGIvY29mZnJlYWQuYwot KysrIGIvZ2RiL2NvZmZyZWFkLmMKLUBAIC0yMTk1LDYgKzIxOTUsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5bV9mbnMgY29mZl9zeW1fZm5zID0KLSAKLSAgIGRlZmF1bHRfc3ltZmlsZV9yZWxv Y2F0ZSwJLyogc3ltX3JlbG9jYXRlOiBSZWxvY2F0ZSBhIGRlYnVnCi0gCQkJCSAgIHNlY3Rpb24u ICAqLwotKyAgTlVMTCwJCQkJLyogc3ltX3Byb2JlX2ZucyAqLwotICAgJnBzeW1fZnVuY3Rpb25z Ci0gfTsKLSAKIGRpZmYgLS1naXQgYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9n ZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLWluZGV4IDQyOTZlNWEuLmIwNGQxMmYgMTAw NjQ0CitpbmRleCA4N2M2ZGQ0Li4xYzI2NjUyIDEwMDY0NAogLS0tIGEvZ2RiL2RhdGEtZGlyZWN0 b3J5L01ha2VmaWxlLmluCiArKysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLUBA IC01MiwxMyArNTIsMjQgQEAgU1lTQ0FMTFNfRklMRVMgPSBcCitAQCAtNTIsMTQgKzUyLDI1IEBA IFNZU0NBTExTX0ZJTEVTID0gXAogIFBZVEhPTl9ESVIgPSBweXRob24KICBQWVRIT05fSU5TVEFM TF9ESVIgPSAkKERFU1RESVIpJChHREJfREFUQURJUikvJChQWVRIT05fRElSKQogIFBZVEhPTl9G SUxFUyA9IFwKQEAgLTg2OCw4ICsxNzIsOSBAQCBpbmRleCA0Mjk2ZTVhLi5iMDRkMTJmIDEwMDY0 NAogKwlnZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IFwKICsJZ2RiL2NvbW1hbmQvcGFob2xl LnB5IFwKICAJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwKLS0JZ2RiL2NvbW1hbmQv cHJvbXB0LnB5Ci0rCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCisgCWdkYi9jb21tYW5kL3Byb21w dC5weSBcCistCWdkYi9jb21tYW5kL2V4cGxvcmUucHkKKysJZ2RiL2NvbW1hbmQvZXhwbG9yZS5w eSBcCiArCWdkYi9jb21tYW5kL3JlcXVpcmUucHkgXAogKwlnZGIvY29tbWFuZC91cHRvLnB5IFwK ICsJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwKQEAgLTg4MSwyMyArMTg2LDExIEBAIGluZGV4 IDQyOTZlNWEuLmIwNGQxMmYgMTAwNjQ0CiAgCiAgRkxBR1NfVE9fUEFTUyA9IFwKICAJInByZWZp eD0kKHByZWZpeCkiIFwKLWRpZmYgLS1naXQgYS9nZGIvZGJ4cmVhZC5jIGIvZ2RiL2RieHJlYWQu YwotaW5kZXggYWRmODMxNS4uYzExZTRkNCAxMDA2NDQKLS0tLSBhL2dkYi9kYnhyZWFkLmMKLSsr KyBiL2dkYi9kYnhyZWFkLmMKLUBAIC0zNTg4LDYgKzM1ODgsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHN5bV9mbnMgYW91dF9zeW1fZm5zID0KLSAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJ LyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwotICAgTlVMTCwKLSAg IGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAg Ki8KLSsgIE5VTEwsCQkJCS8qIHN5bV9wcm9iZV9mbnMgKi8KLSAgICZwc3ltX2Z1bmN0aW9ucwot IH07Ci0gCiBkaWZmIC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKLWluZGV4IDgzYTcx NmEuLjdmODc1MmUgMTAwNjQ0CitpbmRleCAwMzA5MmFhLi42ZDczMzg2IDEwMDY0NAogLS0tIGEv Z2RiL2RlZnMuaAogKysrIGIvZ2RiL2RlZnMuaAotQEAgLTQxMSw2ICs0MTEsOCBAQCBleHRlcm4g c3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CitA QCAtMzUzLDYgKzM1Myw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jl c3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKgogICAgc2V0 X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CiAg CkBAIC05MDcsMTAgKzIwMCwxMCBAQCBpbmRleCA4M2E3MTZhLi43Zjg3NTJlIDEwMDY0NAogIGV4 dGVybiBjaGFyICp4ZnVsbHBhdGggKGNvbnN0IGNoYXIgKik7CiAgCiBkaWZmIC0tZ2l0IGEvZ2Ri L2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IDIwYjBiNjcuLjU3 MDY4YzMgMTAwNjQ0CitpbmRleCAwMTRjZmQ4Li5kMGE4YzUxIDEwMDY0NAogLS0tIGEvZ2RiL2Rv Yy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTExNzMsNiArMTE3 MywxNiBAQCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KK0BAIC0xMTkxLDYgKzExOTEsMTYgQEAgZm9y IHJlbW90ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9n cmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlu a3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC05MjcsMTI0ICsy MjAsNyBAQCBpbmRleCAyMGIwYjY3Li41NzA2OGMzIDEwMDY0NAogIEBjIHJlc29sdmUgdGhlIHNp dHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNvZGV7 LS10dWl9Ci1AQCAtMzMwMSw2ICszMzExLDcgQEAgYWxsIGJyZWFrcG9pbnRzIGluIHRoYXQgcmFu Z2UgYXJlIG9wZXJhdGVkIG9uLgotICogQ29uZGl0aW9uczo6ICAgICAgICAgICAgICAgICAgQnJl YWsgY29uZGl0aW9ucwotICogQnJlYWsgQ29tbWFuZHM6OiAgICAgICAgICAgICAgQnJlYWtwb2lu dCBjb21tYW5kIGxpc3RzCi0gKiBTYXZlIEJyZWFrcG9pbnRzOjogICAgICAgICAgICBIb3cgdG8g c2F2ZSBicmVha3BvaW50cyBpbiBhIGZpbGUKLSsqIFN0YXRpYyBQcm9iZSBQb2ludHM6OiAgICAg ICAgIExpc3Rpbmcgc3RhdGljIHByb2JlIHBvaW50cwotICogRXJyb3IgaW4gQnJlYWtwb2ludHM6 OiAgICAgICAgYGBDYW5ub3QgaW5zZXJ0IGJyZWFrcG9pbnRzJycKLSAqIEJyZWFrcG9pbnQtcmVs YXRlZCBXYXJuaW5nczo6IGBgQnJlYWtwb2ludCBhZGRyZXNzIGFkanVzdGVkLi4uJycKLSBAZW5k IG1lbnUKLUBAIC00NTMwLDYgKzQ1NDEsNTAgQEAgYW5kIHJlbW92ZSB0aGUgYnJlYWtwb2ludCBk ZWZpbml0aW9ucyB5b3UncmUgbm90IGludGVyZXN0ZWQgaW4sIG9yCi0gdGhhdCBjYW4gbm8gbG9u Z2VyIGJlIHJlY3JlYXRlZC4KLSBAZW5kIHRhYmxlCi0gCi0rQG5vZGUgU3RhdGljIFByb2JlIFBv aW50cwotK0BzdWJzZWN0aW9uIFN0YXRpYyBQcm9iZSBQb2ludHMKLSsKLStAY2luZGV4IFN5c3Rl bVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQKLStAY2luZGV4IHNkdC1wcm9iZQotK1RoZSBAc2N7Z251 fS9MaW51eCB0b29sIEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMgYSB3YXkgZm9yCi0rYXBwbGlj YXRpb25zIHRvIGVtYmVkIHN0YXRpYyBwcm9iZXMsIHVzaW5nIEBmaWxle3N5cy9zZHQuaH0uICBA dmFsdWV7R0RCTn0KLStjYW4gbGlzdCB0aGUgYXZhaWxhYmxlIHByb2JlcywgYW5kIHlvdSBjYW4g cHV0IGJyZWFrcG9pbnRzIGF0IHRoZQotK3Byb2JlIHBvaW50cyAoQHB4cmVme1NwZWNpZnkgTG9j YXRpb259KS4KLSsKLStZb3UgY2FuIGV4YW1pbmUgdGhlIGF2YWlsYWJsZSBAY29kZXtTeXN0ZW1U YXB9IHN0YXRpYyBwcm9iZXMgdXNpbmcKLStAY29kZXtpbmZvIHByb2Jlc306Ci0rCi0rQHRhYmxl IEBjb2RlCi0rQGtpbmRleCBpbmZvIHByb2JlcwotK0BpdGVtIGluZm8gcHJvYmVzIFtAdmFye3By b3ZpZGVyfSBbQHZhcntuYW1lfSBbQHZhcntvYmpmaWxlfV1dXQotK0xpc3QgdGhlIGF2YWlsYWJs ZSBAY29kZXtTeXN0ZW1UYXB9IHN0YXRpYyBwcm9iZXMuCi0rCi0rSWYgZ2l2ZW4sIEB2YXJ7cHJv dmlkZXJ9IGlzIGEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gc2VsZWN0IHdoaWNoCi0rcHJv dmlkZXJzIHRvIGxpc3QuICBJZiBvbWl0dGVkLCBhbGwgcHJvdmlkZXJzIGFyZSBsaXN0ZWQuCi0r Ci0rSWYgZ2l2ZW4sIEB2YXJ7bmFtZX0gaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBz ZWxlY3Qgd2hpY2gKLStwcm9iZXMgdG8gbGlzdC4gIElmIG9taXR0ZWQsIGFsbCBwcm9iZXMgYXJl IGxpc3RlZC4KLSsKLStJZiBnaXZlbiwgQHZhcntvYmpmaWxlfSBpcyBhIHJlZ3VsYXIgZXhwcmVz c2lvbiB1c2VkIHRvIHNlbGVjdCB3aGljaAotK29iamVjdCBmaWxlcyAoZXhlY3V0YWJsZSBvciBz aGFyZWQgbGlicmFyaWVzKSB0byBleGFtaW5lLiAgSWYgbm90Ci0rZ2l2ZW4sIGFsbCBvYmplY3Qg ZmlsZXMgYXJlIGNvbnNpZGVyZWQuCi0rQGVuZCB0YWJsZQotKwotK0B2aW5kZXggJF9wcm9iZV9h cmdAcnssIGNvbnZlbmllbmNlIHZhcmlhYmxlfQotK0EgcHJvYmUgbWF5IHNwZWNpZnkgdXAgdG8g dGVuIGFyZ3VtZW50cy4gIFRoZXNlIGFyZSBhdmFpbGFibGUgYXQgdGhlCi0rcG9pbnQgYXQgd2hp Y2ggdGhlIHByb2JlIGlzIGRlZmluZWQtLS10aGF0IGlzLCB3aGVuIHRoZSBjdXJyZW50IFBDIGlz Ci0rYXQgdGhlIHByb2JlJ3MgbG9jYXRpb24uICBUaGUgYXJndW1lbnRzIGFyZSBhdmFpbGFibGUg dXNpbmcgdGhlCi0rY29udmVuaWVuY2UgdmFyaWFibGVzIChAcHhyZWZ7Q29udmVuaWVuY2UgVmFy c30pCi0rQGNvZGV7JF9wcm9iZV9hcmcwfUBkb3Rze31AY29kZXskX3Byb2JlX2FyZzExfS4gIEVh Y2ggcHJvYmUgYXJndW1lbnQgaXMKLSthbiBpbnRlZ2VyIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXpl OyB0eXBlcyBhcmUgbm90IHByZXNlcnZlZC4gIFRoZQotK2NvbnZlbmllbmNlIHZhcmlhYmxlIEBj b2RleyRfcHJvYmVfYXJnY30gaG9sZHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMKLSthdCB0aGUg Y3VycmVudCBwcm9iZSBwb2ludC4KLSsKLStUaGVzZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBhdmFp bGFibGUsIGJ1dCBhdHRlbXB0cyB0byBhY2Nlc3MgdGhlbSBhdAotK2FueSBsb2NhdGlvbiBvdGhl ciB0aGFuIGEgcHJvYmUgcG9pbnQgd2lsbCBjYXVzZSBAdmFsdWV7R0RCTn0gdG8gZ2l2ZQotK2Fu IGVycm9yLgotKwotKwotIEBjICBAaWZjbGVhciBCQVJFVEFSR0VUCi0gQG5vZGUgRXJyb3IgaW4g QnJlYWtwb2ludHMKLSBAc3Vic2VjdGlvbiBgYENhbm5vdCBpbnNlcnQgYnJlYWtwb2ludHMnJwot QEAgLTY1NTUsNiArNjYxMCwyOSBAQCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5 LCBlLmcuLCBpZiB0aGVyZSBhcmUgc2V2ZXJhbAotIGZ1bmN0aW9ucyB3aXRoIGlkZW50aWNhbCBu YW1lcyBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgotIEBlbmQgdGFibGUKLSAKLStAY2luZGV4 IFN5c3RlbVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQKLStAaXRlbSAtcCBAcntbfUB2YXJ7b2JqZmls ZX06QHJ7XX1AcntbfUB2YXJ7cHJvdmlkZXJ9OkBye119QHZhcntuYW1lfQotK1RoZSBAc2N7Z251 fS9MaW51eCB0b29sIEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMgYSB3YXkgZm9yCi0rYXBwbGlj YXRpb25zIHRvIGVtYmVkIHN0YXRpYyBwcm9iZXMuICBUaGlzIGZvcm0gb2YgbGluZXNwZWMgc3Bl Y2lmaWVzCi0rdGhlIGxvY2F0aW9uIG9mIHN1Y2ggYSBzdGF0aWMgcHJvYmUuICBTZWUKLStAdXJl ZntodHRwOi8vc291cmNld2FyZS5vcmcvc3lzdGVtdGFwL3dpa2kvQWRkaW5nVXNlclNwYWNlUHJv YmluZ1RvQXBwc30KLStmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdGF0aWMgcHJvYmVzLgotKwot K0lmIEB2YXJ7b2JqZmlsZX0gaXMgZ2l2ZW4sIG9ubHkgcHJvYmVzIGNvbWluZyBmcm9tIHRoYXQg c2hhcmVkIGxpYnJhcnkKLStvciBleGVjdXRhYmxlIGFyZSBjb25zaWRlcmVkLiAgSWYgQHZhcntw cm92aWRlcn0gaXMgZ2l2ZW4sIHRoZW4gb25seQotK3Byb2JlcyBmcm9tIHRoYXQgcHJvdmlkZXIg YXJlIGNvbnNpZGVyZWQuCi0rCi0rQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50c30sIGZvciBtb3Jl IGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgYW5kIHVzaW5nCi0rc3RhdGljIHByb2Jlcy4KLSsKLStT b21lIHByb2JlcyBoYXZlIGFuIGFzc29jaWF0ZWQgc2VtYXBob3JlIHZhcmlhYmxlOyBmb3IgaW5z dGFuY2UsIHRoaXMKLStoYXBwZW5zIGF1dG9tYXRpY2FsbHkgaWYgeW91IGRlZmluZWQgeW91ciBw cm9iZSB1c2luZyBhIERUcmFjZS1zdHlsZQotK0BmaWxley5kfSBmaWxlLiAgSWYgeW91ciBwcm9i ZSBoYXMgYSBzZW1hcGhvcmUsIEB2YWx1ZXtHREJOfSB3aWxsCi0rYXV0b21hdGljYWxseSBlbmFi bGUgaXQgd2hlbiB5b3Ugc3BlY2lmeSBhIGJyZWFrcG9pbnQgdXNpbmcgdGhlCi0rQHNhbXB7LXB9 IG5vdGF0aW9uLiAgQnV0LCBpZiB5b3UgcHV0IGEgYnJlYWtwb2ludCBhdCBhIHByb2JlJ3MKLSts b2NhdGlvbiBieSBzb21lIG90aGVyIG1ldGhvZCAoZS5nLiwgQGNvZGV7YnJlYWsgZmlsZTpsaW5l fSksIHRoZW4KLStAdmFsdWV7R0RCTn0gd2lsbCBub3QgYXV0b21hdGljYWxseSBzZXQgdGhlIHNl bWFwaG9yZS4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gCi1AQCAtODgxMSw2ICs4ODg5LDEwIEBAIHRv IG1hdGNoIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGRhdGEgd2FzIHByaW50ZWQuCi0gVGhlIHZh cmlhYmxlIEBjb2RleyRfZXhpdGNvZGV9IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoZSBleGl0 IGNvZGUgd2hlbgotIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHRlcm1pbmF0ZXMuCi0gCi0r QGl0ZW0gJF9wcm9iZV9hcmdjCi0rQGl0ZW14ICRfcHJvYmVfYXJnMEBkb3Rze30kX3Byb2JlX2Fy ZzExCi0rQXJndW1lbnRzIHRvIGEgU3lzdGVtVGFwIHN0YXRpYyBwcm9iZS4gIEB4cmVme1N0YXRp YyBQcm9iZSBQb2ludHN9LgotKwotIEBpdGVtICRfc2RhdGEKLSBAdmluZGV4ICRfc2RhdGFAcnss IGluc3BlY3QsIGNvbnZlbmllbmNlIHZhcmlhYmxlfQotIFRoZSB2YXJpYWJsZSBAY29kZXskX3Nk YXRhfSBjb250YWlucyBleHRyYSBjb2xsZWN0ZWQgc3RhdGljIHRyYWNlcG9pbnQKLUBAIC0xMDc2 Myw2ICsxMDg0NSwxNiBAQCBDb2xsZWN0IGFsbCBsb2NhbCB2YXJpYWJsZXMuCi0gQ29sbGVjdCB0 aGUgcmV0dXJuIGFkZHJlc3MuICBUaGlzIGlzIGhlbHBmdWwgaWYgeW91IHdhbnQgdG8gc2VlIG1v cmUKLSBvZiBhIGJhY2t0cmFjZS4KLSAKLStAaXRlbSAkX3Byb2JlX2FyZ2MKLStDb2xsZWN0cyB0 aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBmcm9tIHRoZSBAY29kZXtTeXN0ZW1UYXB9IHByb2JlIGF0 Ci0rd2hpY2ggdGhlIHRyYWNlcG9pbnQgaXMgbG9jYXRlZC4KLStAeHJlZntTdGF0aWMgUHJvYmUg UG9pbnRzLCxTdGF0aWMgUHJvYmUgUG9pbnRzfS4KLSsKLStAaXRlbSAkX3Byb2JlX2FyZ0B2YXJ7 Tn0KLStXaGVyZSBAdmFye059IHZhcmllcyBmcm9tIDAgdG8gMTEuICBDb2xsZWN0cyB0aGUgQHZh cntOfXRoIGFyZ3VtZW50Ci0rZnJvbSB0aGUgQGNvZGV7U3lzdGVtVGFwfSBwcm9iZSBhdCB3aGlj aCB0aGUgdHJhY2Vwb2ludCBpcyBsb2NhdGVkLgotK0B4cmVme1N0YXRpYyBQcm9iZSBQb2ludHMs LFN0YXRpYyBQcm9iZSBQb2ludHN9LgotKwotIEBpdGVtICRfc2RhdGEKLSBAdmluZGV4ICRfc2Rh dGFAcnssIGNvbGxlY3R9Ci0gQ29sbGVjdCBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lm aWMgZGF0YS4gIE9ubHkgYXZhaWxhYmxlIGZvcgotQEAgLTIxNTA2LDggKzIxNTk4LDYgQEAgY29u dGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitAQCAtMjI0OTQsOCArMjI1MDQsNiBA QCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxl CiAgKEB2YWx1ZXtHREJQfSkgcHl0aG9uCkBAIC0xMDUzLDcgKzIyOSw3IEBAIGluZGV4IDIwYjBi NjcuLjU3MDY4YzMgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMjE1MjEsNiAr MjE2MTEsMTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50LXN0YWNr fTogaWYgQGNvZGV7ZnVsbH0sIHRoZW4KK0BAIC0yMjUwOSw2ICsyMjUxNywxNCBAQCBjb250cm9s bGVkIHVzaW5nIEBjb2Rle3NldCBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtmdWxsfSwg dGhlbgogIGZ1bGwgUHl0aG9uIHN0YWNrIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle25v bmV9LCB0aGVuIFB5dGhvbiBzdGFjawogIGFuZCBtZXNzYWdlIHByaW50aW5nIGlzIGRpc2FibGVk OyBpZiBAY29kZXttZXNzYWdlfSwgdGhlIGRlZmF1bHQsIG9ubHkKICB0aGUgbWVzc2FnZSBjb21w b25lbnQgb2YgdGhlIGVycm9yIGlzIHByaW50ZWQuCkBAIC0xMDY4LDcgKzI0NCw3IEBAIGluZGV4 IDIwYjBiNjcuLjU3MDY4YzMgMTAwNjQ0CiAgQGVuZCB0YWJsZQogIAogIEl0IGlzIGFsc28gcG9z c2libGUgdG8gZXhlY3V0ZSBhIFB5dGhvbiBzY3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1A QCAtMjE1NDIsNiArMjE2NDAsMTQgQEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KK0BA IC0yMjUzMCw2ICsyMjU0NiwxNCBAQCBhbmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgogIEBj aW5kZXggcHl0aG9uIGFwaQogIEBjaW5kZXggcHJvZ3JhbW1pbmcgaW4gcHl0aG9uCiAgCkBAIC0x MDg0LDcgKzI2MCw3IEBAIGluZGV4IDIwYjBiNjcuLjU3MDY4YzMgMTAwNjQ0CiAgQGNpbmRleCBw eXRob24gcGFnaW5hdGlvbgogIEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0 aG9uJ3MgQGNvZGV7c3lzLnN0ZG91dH0gYW5kCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQu dGV4aW5mbyBiL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KLWluZGV4IDAyNmRjNTkuLmYwZjZlZTMg MTAwNjQ0CitpbmRleCAyNjdhNmViLi40ZjE1OWI0IDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJp bnQudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogQEAgLTIxMDMsNiArMjEw MywxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1l bnRhbGx5LiAgRm9yIGluc3RhbmNlLApAQCAtMTIxMywxMSArMzg5LDExIEBAIGluZGV4IDAyNmRj NTkuLmYwZjZlZTMgMTAwNjQ0CiAgCiAgQG5vZGUgTGFuZ3VhZ2UgU3VwcG9ydAogZGlmZiAtLWdp dCBhL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aSBiL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQotaW5kZXgg MjQyMzNjYi4uZWZiMjAxMyAxMDA2NDQKK2luZGV4IDY4MjdlZDguLmM2M2I5MDEgMTAwNjQ0CiAt LS0gYS9nZGIvZG9jL29ic2VydmVyLnRleGkKICsrKyBiL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQot QEAgLTIyNiw2ICsyMjYsMTEgQEAgQ2FsbGVkIGJlZm9yZSBhIHRvcC1sZXZlbCBwcm9tcHQgaXMg ZGlzcGxheWVkLiAgQHZhcntjdXJyZW50X3Byb21wdH0gaXMKLSB0aGUgY3VycmVudCB0b3AtbGV2 ZWwgcHJvbXB0LgorQEAgLTIzMCw2ICsyMzAsMTEgQEAgdGhlIGN1cnJlbnQgdG9wLWxldmVsIHBy b21wdC4KKyBWYXJpYWJsZSBnZGJfZGF0YWRpciBoYXMgYmVlbiBzZXQuICBUaGUgdmFsdWUgbWF5 IG5vdCBuZWNlc3NhcmlseSBjaGFuZ2UuCiAgQGVuZCBkZWZ0eXBlZnVuCiAgCiArQGMgQGRlZnR5 cGVmdW4gdm9pZCBtYXJrX3VzZWQgKHZvaWQpCkBAIC0xMjI5LDEwICs0MDUsMTAgQEAgaW5kZXgg MjQyMzNjYi4uZWZiMjAxMyAxMDA2NDQKICBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVy bmFsIHRlc3RpbmcuICBEbyBub3QgdXNlLiAgCiAgU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2Vy dmVyLmV4cC4KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIu YwotaW5kZXggMjIyZmNjMy4uOTMzODllMCAxMDA2NDQKK2luZGV4IGUwYWFmYzcuLjczODc3MTEg MTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYyZXhwci5jCiArKysgYi9nZGIvZHdhcmYyZXhwci5jCi1A QCAtMTQ0OSw2ICsxNDQ5LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQgKmN0eCwKK0BAIC0xNDU4LDYgKzE0NTgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAo c3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAogIAkgIH0KICAJICBicmVhazsKICAKQEAg LTEyNDgsMTYgKzQyNCwxNiBAQCBpbmRleCAyMjJmY2MzLi45MzM4OWUwIDEwMDY0NAogIAkgIGVy cm9yIChfKCJVbmhhbmRsZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7CiAg CX0KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5oIGIvZ2RiL2R3YXJmMmV4cHIuaAotaW5k ZXggZmQ3MGJmOS4uNTEyOWM0ZSAxMDA2NDQKK2luZGV4IGYzOWVmM2MuLjA2NmNiMTAgMTAwNjQ0 CiAtLS0gYS9nZGIvZHdhcmYyZXhwci5oCiArKysgYi9nZGIvZHdhcmYyZXhwci5oCi1AQCAtNzMs MTIgKzczLDEwIEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKLSAJCQkJICAgICAg aW50IGR3YXJmX3JlZywgQ09SRV9BRERSIGZiX29mZnNldCwKLSAJCQkJICAgICAgaW50IGRlcmVm X3NpemUpOworQEAgLTkxLDEyICs5MSw4IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVu Y3MKKyAgICAgIFRoaXMgY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgb3V0 IG9mIHJhbmdlLiAgKi8KKyAgIENPUkVfQUREUiAoKmdldF9hZGRyX2luZGV4KSAodm9pZCAqYmF0 b24sIHVuc2lnbmVkIGludCBpbmRleCk7CiAgCiAtI2lmIDAKLSAgIC8qIE5vdCB5ZXQgaW1wbGVt ZW50ZWQuICAqLwotIAorLSAgLyogTm90IHlldCBpbXBsZW1lbnRlZC4gICovCistCiAgICAvKiBS ZXR1cm4gdGhlIGBvYmplY3QgYWRkcmVzcycgZm9yIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Mu ICAqLwogICAgQ09SRV9BRERSICgqZ2V0X29iamVjdF9hZGRyZXNzKSAodm9pZCAqYmF0b24pOwog LSNlbmRpZgpAQCAtMTI2NSwxMCArNDQxLDEwIEBAIGluZGV4IGZkNzBiZjkuLjUxMjljNGUgMTAw NjQ0CiAgCiAgLyogVGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLwogZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAx MDA2NDQKK2luZGV4IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9j LmMKICsrKyBiL2dkYi9kd2FyZjJsb2MuYwotQEAgLTE1Nyw2ICsxNTcsOSBAQCBzdHJ1Y3QgZHdh cmZfZXhwcl9iYXRvbgorQEAgLTI3NCw2ICsyNzQsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRv bgogIHsKICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2FyZjJfcGVy X2N1X2RhdGEgKnBlcl9jdTsKQEAgLTEyNzgsNyArNDU0LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVl MDc2NiAxMDA2NDQKICB9OwogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFs dWF0ZV9sb2NfZGVzYy4gICovCi1AQCAtMjE2LDE2ICsyMTksMTQgQEAgc3RhdGljIHZvaWQKK0BA IC0zMzMsMTYgKzMzNiwxNCBAQCBzdGF0aWMgdm9pZAogIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8x IChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKICAJCQkgY29uc3QgZ2Ri X2J5dGUgKipzdGFydCwgc2l6ZV90ICpsZW5ndGgpCiAgewpAQCAtMTI5Nyw3ICs0NzMsNyBAQCBp bmRleCAzMTNkZjdiLi4zNWUwNzY2IDEwMDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJm Ml9sb2NleHByX2JhdG9uICpzeW1iYXRvbjsKICAKLUBAIC0yMzgsMTAgKzIzOSwyMyBAQCBkd2Fy Zl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIg cGMsCitAQCAtMzU1LDEwICszNTYsMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVj dCBzeW1ib2wgKmZyYW1lZnVuYywgQ09SRV9BRERSIHBjLAogICAgICAgIGVsc2UKICAJKmxlbmd0 aCA9IDA7CiAgICAgIH0KQEAgLTEzMjIsNyArNDk4LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2 NiAxMDA2NDQKICB9CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2MuICBDb21wdXRlcyB0aGUgQ0ZBIGZvcgotQEAgLTMwOSw2ICszMjMsODUgQEAgZHdh cmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVf dCBkaWVfb2Zmc2V0KQorQEAgLTQyNiw2ICs0NDAsODUgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxs IChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWVfb2Zmc2V0KQog IAkJICAgICBjdHgtPmZ1bmNzLT5nZXRfZnJhbWVfcGMsIGN0eC0+YmF0b24pOwogIH0KICAKQEAg LTE0MDgsNyArNTg0LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQKICAvKiBDYWxs YmFjayBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KICAKICBzdGF0 aWMgc3RydWN0IHR5cGUgKgotQEAgLTk5MCwxMCArMTA4MywxMiBAQCBkd2FyZl9leHByX3B1c2hf ZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCitA QCAtMTEwNSwxMCArMTE5OCwxMiBAQCBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3Zh bHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCiAgICBzYXZlZF9jdHguZ2Ri YXJjaCA9IGN0eC0+Z2RiYXJjaDsKICAgIHNhdmVkX2N0eC5hZGRyX3NpemUgPSBjdHgtPmFkZHJf c2l6ZTsKQEAgLTE0MjEsNyArNTk3LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQK ICAgIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAoYmF0b25fbG9jYWwu cGVyX2N1KTsKICAgIGN0eC0+YmF0b24gPSAmYmF0b25fbG9jYWw7CiAgCi1AQCAtMTAwMSwxMCAr MTA5Niw5MiBAQCBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCitAQCAtMTExNiwxMCArMTIxMSw5NSBAQCBkd2FyZl9l eHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0 ICpjdHgsCiAgCiAgICBjdHgtPmdkYmFyY2ggPSBzYXZlZF9jdHguZ2RiYXJjaDsKICAgIGN0eC0+ YWRkcl9zaXplID0gc2F2ZWRfY3R4LmFkZHJfc2l6ZTsKQEAgLTE0MzAsNiArNjA2LDggQEAgaW5k ZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQKICAgIGN0eC0+YmF0b24gPSBzYXZlZF9jdHguYmF0 b247CiAgfQogIAorK3N0YXRpYyBDT1JFX0FERFIgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCAo dm9pZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRleCk7CisrCiArLyogVmlydHVhbCBtZXRob2Qg dGFibGUgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIGJlbG93LiAgKi8KICsKICtz dGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBkd2FyZl9leHByX2N0 eF9mdW5jcyA9CkBAIC0xNDQzLDYgKzYyMSw3IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAw NjQ0CiArICBkd2FyZl9leHByX2R3YXJmX2NhbGwsCiArICBkd2FyZl9leHByX2dldF9iYXNlX3R5 cGUsCiArICBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlLAorKyAgZHdhcmZf ZXhwcl9nZXRfYWRkcl9pbmRleCwKICsgIGR3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MKICt9Owog KwpAQCAtMTUxMSwxMCArNjkwLDEwIEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiAr ICByZXR1cm4gcmV0dmFsOwogK30KICsKLSAvKiBWQUxVRSBtdXN0IGJlIG9mIHR5cGUgbHZhbF9j b21wdXRlZCB3aXRoIGVudHJ5X2RhdGFfdmFsdWVfZnVuY3MuICBQZXJmb3JtCi0gICAgdGhlIGlu ZGlyZWN0IG1ldGhvZCBvbiBpdCwgdGhhdCBpcyB1c2UgaXRzIHN0b3JlZCB0YXJnZXQgdmFsdWUs IHRoZSBzb2xlCi0gICAgcHVycG9zZSBvZiBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLi4gICovCi1A QCAtMTkyNywyMSArMjEwNCw2IEBAIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKHZvaWQpCisg LyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4KKyAgICBG ZXRjaCB0aGUgYWRkcmVzcyBpbmRleGVkIGJ5IERXX09QX0dOVV9hZGRyX2luZGV4LiAgKi8KKyAK K0BAIC0yMDUzLDIyICsyMjMzLDYgQEAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRlciAodm9pZCkK ICAJICAgInJlZmVyZW5jZWQgdmlhIHN5bnRoZXRpYyBwb2ludGVyIikpOwogIH0KICAKQEAgLTE1 MzAsMTMgKzcwOSwxNCBAQCBpbmRleCAzMTNkZjdiLi4zNWUwNzY2IDEwMDY0NAogLSAgZHdhcmZf ZXhwcl90bHNfYWRkcmVzcywKIC0gIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKIC0gIGR3YXJmX2V4 cHJfZ2V0X2Jhc2VfdHlwZSwKLS0gIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFs dWUKKy0gIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUsCistICBkd2FyZl9l eHByX2dldF9hZGRyX2luZGV4CiAtfTsKIC0KICAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2Ny aXB0aW9uLCBzdGFydGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZp bmQgdGhlIGN1cnJlbnQgbG9jYXRpb24gb2YgdmFyaWFibGUgb2YgVFlQRSBpbiB0aGUKICAgICBj b250ZXh0IG9mIEZSQU1FLiAgQllURV9PRkZTRVQgaXMgYXBwbGllZCBhZnRlciB0aGUgY29udGVu dHMgYXJlCi1AQCAtMTk1NCw3ICsyMTE2LDYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1 bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCitAQCAtMjA4 MSw3ICsyMjQ1LDYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCQkJICAgICAgIExPTkdFU1QgYnl0 ZV9vZmZzZXQpCiAgewogICAgc3RydWN0IHZhbHVlICpyZXR2YWw7CkBAIC0xNTQ0LDcgKzcyNCw3 IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHg7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdmFsdWVfY2hhaW47 CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVy X2N1KTsKLUBAIC0xOTY2LDI5ICsyMTI3LDE4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19m dWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTIw OTMsMjkgKzIyNTYsMTggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICBpZiAoc2l6ZSA9PSAwKQog ICAgICByZXR1cm4gYWxsb2NhdGVfb3B0aW1pemVkX291dF92YWx1ZSAodHlwZSk7CiAgCkBAIC0x NTc1LDcgKzc1NSw3IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiAgCSAgcmV0dmFs ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwogIAkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFi bGUgKHJldHZhbCwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKICAJICByZXR1cm4gcmV0dmFsOwot QEAgLTIwNTIsNiArMjIwMiwxNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMTc5LDYgKzIz MzEsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0g ZHdhcmZfZXhwcl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCiAgCSAgICBkb19j bGVhbnVwcyAodmFsdWVfY2hhaW4pOwpAQCAtMTU5Miw3ICs3NzIsNyBAQCBpbmRleCAzMTNkZjdi Li4zNWUwNzY2IDEwMDY0NAogIAkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlw ZSk7CiAgCSAgICBWQUxVRV9MVkFMIChyZXR2YWwpID0gbHZhbF9tZW1vcnk7CiAgCSAgICBpZiAo aW5fc3RhY2tfbWVtb3J5KQotQEAgLTM4OTYsOCArNDA1Niw3IEBAIGxvY2xpc3RfdHJhY2Vwb2lu dF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAorQEAgLTQwNDgsOCArNDIxMCw3IEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1 Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCSAgICAgICBk bGJhdG9uLT5wZXJfY3UpOwogIH0KICAKQEAgLTE2MDIsNyArNzgyLDcgQEAgaW5kZXggMzEzZGY3 Yi4uMzVlMDc2NiAxMDA2NDQKICBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZSwKICAgIGxvY2xp c3RfcmVhZF92YXJpYWJsZV9hdF9lbnRyeSwKLUBAIC0zOTA2LDYgKzQwNjUsNDggQEAgY29uc3Qg c3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CitAQCAt NDA1OCw2ICs0MjE5LDQ4IEBAIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJm Ml9sb2NsaXN0X2Z1bmNzID0gewogICAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYKICB9Owog IApAQCAtMTY0OCwxNCArODI4LDE0IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiAr ICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgogK307CiArCi0gdm9pZAotIF9pbml0aWFsaXpl X2R3YXJmMmxvYyAodm9pZCkKLSB7CisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNl IC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KKyBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBl IF9pbml0aWFsaXplX2R3YXJmMmxvYzsKKyAKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmgg Yi9nZGIvZHdhcmYybG9jLmgKLWluZGV4IGE3ZjgzNWYuLjUyYTQ0ZjEgMTAwNjQ0CitpbmRleCBl OWQwNmEzLi5iZmE2Nzc2IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCiArKysgYi9nZGIv ZHdhcmYybG9jLmgKLUBAIC0xMTgsNiArMTE4LDE1IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbgorQEAgLTEyNyw2ICsxMjcsMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAg CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHBy X2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJf bG9jbGlzdF9mdW5jczsKQEAgLTE2NzIsMTAgKzg1MiwxMCBAQCBpbmRleCBhN2Y4MzVmLi41MmE0 NGYxIDEwMDY0NAogIC8qIENvbXBpbGUgYSBEV0FSRiBsb2NhdGlvbiBleHByZXNzaW9uIHRvIGFu IGFnZW50IGV4cHJlc3Npb24uCiAgICAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBi L2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CitpbmRleCA4 ZGJjNTNlLi5iNWI3ODEzIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2Ri L2R3YXJmMnJlYWQuYwotQEAgLTEyMDksNiArMTIwOSw5IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5f bG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTM0OCw2ICsxMzQ4LDkg QEAgc3RhdGljIHZvaWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpj dSwKICAJCQkJICAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbiwKICAJCQkJICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cik7CiAgCkBAIC0xNjg1LDkgKzg2NSw5IEBAIGluZGV4IDBl ZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3N5bWJvbF9tYXJrX2Nv bXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAogIAkJCQkJIHN0cnVjdCBzeW1ib2wgKnN5 bSwKICAJCQkJCSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci1AQCAtMTI0MCw2ICsxMjQzLDkgQEAg c3RhdGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKK0BAIC0xMzgwLDYgKzEz ODMsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAotIHN0 YXRpYyB2b2lkIGZyZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7Cisgc3RhdGljIHZv aWQgZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq KTsKICAKICtzdGF0aWMgdm9pZCBmZXRjaF9kaWVfdHlwZV9hdHRycyAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLAogKwkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsK QEAgLTE2OTUsNyArODc1LDcgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICBzdGF0 aWMgc3RydWN0IHR5cGUgKnNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0 eXBlICosCiAgCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xMjYzLDYgKzEyNjks OSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHVuc2lnbmVk IGludCwKK0BAIC0xNDA1LDYgKzE0MTEsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVf dHlwZV9hdF9vZmZzZXQgKHNlY3Rfb2Zmc2V0LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwog IApAQCAtMTcwNCw4ICs4ODQsOCBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogKwog IHN0YXRpYyB2b2lkIGR3YXJmMl9yZWxlYXNlX3F1ZXVlICh2b2lkICpkdW1teSk7CiAgCi0gc3Rh dGljIHZvaWQgcXVldWVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJf Y3UpOwotQEAgLTgwMDEsNiArODAxMCwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgc3RhdGljIHZvaWQg cXVldWVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCitAQCAt OTUyNiw2ICs5NTM1LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19zeW1ib2wgKGRpZSwgdGhp c190eXBlLCBjdSk7CiAgfQogIApAQCAtMTczNSw3ICs5MTUsNyBAQCBpbmRleCAwZWYwYTViLi44 MGU1ZmU0IDEwMDY0NAogIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdf YXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgogICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAg Rm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCiAgICAgYXJyYXlzLiAg Ki8KLUBAIC04MDE0LDcgKzgwNDYsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC05NTM5LDcgKzk1NzEsNyBAQCByZWFk X2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK ICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsK ICAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwogICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKQEAgLTE3NDQsNyArOTI0LDcgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2 NDQKICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICAgY2hhciAqbmFtZTsKICAKLUBAIC04 MDY3LDE3ICs4MDk5LDE5IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTk1OTIsMTcgKzk2MjQsMTkgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0 eXBlID0gZWxlbWVudF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3Up ID09IERXX09SRF9jb2xfbWFqb3IpCkBAIC0xNzc1LDcgKzk1NSw3IEBAIGluZGV4IDBlZjBhNWIu LjgwZTVmZTQgMTAwNjQ0CiAgCiAgICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2 ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0 aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTg1NjEs MjkgKzg1OTUsMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTAwODYsMjkgKzEwMTIwLDExNCBAQCByZWFk X3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpm aWxlKTsKICAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpj aGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMTgxOSw4ICs5OTksOCBA QCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogKwkgICAgICBVTE9OR0VTVCB1bG9uZ2Vz dDsKICsJICAgICAgY29uc3QgZ2RiX2J5dGUgKmVuZDsKICsKLSsJICAgICAgZW5kID0gcmVhZF91 bGViMTI4ICgmYmxrLT5kYXRhWzFdLCAmYmxrLT5kYXRhW2Jsay0+c2l6ZV0sCi0rCQkJCSAgJnVs b25nZXN0KTsKKysJICAgICAgZW5kID0gc2FmZV9yZWFkX3VsZWIxMjggKCZibGstPmRhdGFbMV0s ICZibGstPmRhdGFbYmxrLT5zaXplXSwKKysJCQkJICAgICAgICZ1bG9uZ2VzdCk7CiArCSAgICAg IGlmIChlbmQgPT0gJmJsay0+ZGF0YVtibGstPnNpemVdKQogKwkJbGVuZ3RoX2JhdG9uID0gZHdh cmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwogKwkgICAgfQpAQCAtMTkwMyw0 MyArMTA4Myw4NiBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogICAgY2hhcl90eXBl ID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gp OwogICAgdHlwZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90 eXBlKTsKICAKLUBAIC04ODg3LDggKzkwMDYsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMDQxMiw3ICsxMDUz MSw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0eXBl ICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIExPTkdFU1QgbG93 ID0gMDsKLS0gIExPTkdFU1QgaGlnaCA9IC0xOworLSAgTE9OR0VTVCBsb3csIGhpZ2g7CiArICBM T05HRVNUIGxvdzsKKyAgIGludCBsb3dfZGVmYXVsdF9pc192YWxpZDsKICAgIGNoYXIgKm5hbWU7 CiAgICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CitAQCAtMTA0NjgsNDIgKzEwNTg3LDYgQEAgcmVh ZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCisgCQkJCSAgICAgICItIERJRSBhdCAweCV4IFtpbiBtb2R1bGUgJXNdIiksCisgCSAgICAg ICBkaWUtPm9mZnNldC5zZWN0X29mZiwgY3UtPm9iamZpbGUtPm5hbWUpOwogIAotQEAgLTg5MDEs NTMgKzkwMTksMTI2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgaWYgKHJhbmdlX3R5cGUpCi0gICAgIHJldHVybiBy YW5nZV90eXBlOwotIAotLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQor LSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3VwcGVyX2JvdW5kLCBjdSk7CistICBp ZiAoYXR0cikKKy0gICAgeworLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpIHx8 IGlzX3JlZl9hdHRyIChhdHRyKSkKKy0gICAgICAgIHsKKy0gICAgICAgICAgLyogR0NDIGVuY29k ZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBsZW5ndGgKKy0gICAgICAgICAg ICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRyaWJ1 dGUuCistICAgICAgICAgICAgIEZJWE1FOiBHREIgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhh bmRsZSBkeW5hbWljCistICAgICAgICAgICAgIGFycmF5cyBwcm9wZXJseSwgdHJlYXQgdGhlbSBh cyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZAorLSAgICAgICAgICAgICBsZW5ndGggZm9yIG5vdy4K Ky0KKy0gICAgICAgICAgICAgRklYTUU6IGppbWIvMjAwMy0wOS0yMjogR0RCIGRvZXMgbm90IHJl YWxseSBrbm93CistICAgICAgICAgICAgIGhvdyB0byBoYW5kbGUgYXJyYXlzIG9mIHVuc3BlY2lm aWVkIGxlbmd0aAorLSAgICAgICAgICAgICBlaXRoZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRoZW0g YXMgemVyby1sZW5ndGgKKy0gICAgICAgICAgICAgYXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJvcHJp YXRlIHVwcGVyIGJvdW5kIGdpdmVuCistICAgICAgICAgICAgIHRoZSBsb3dlciBib3VuZCB3ZSd2 ZSBjb21wdXRlZCBhYm92ZS4gICovCistICAgICAgICAgIGhpZ2ggPSBsb3cgLSAxOworLSAgICAg ICAgfQorLSAgICAgIGVsc2UKKy0gICAgICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3Rh bnRfdmFsdWUgKGF0dHIsIDEpOworLSAgICB9CistICBlbHNlCiAtICAgIHsKLS0gICAgICAvKiBG T1JUUkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLwotLSAg ICAgIGxvdyA9IDE7CistICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50 LCBjdSk7CistICAgICAgaWYgKGF0dHIpCistCXsKKy0JICBpbnQgY291bnQgPSBkd2FyZjJfZ2V0 X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworLQkgIGhpZ2ggPSBsb3cgKyBjb3VudCAt IDE7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICAvKiBVbnNwZWNpZmllZCBhcnJheSBsZW5n dGguICAqLworLQkgIGhpZ2ggPSBsb3cgLSAxOworLQl9CiAtICAgIH0KKy0KKyAgIC8qIER3YXJm LTIgc3BlY2lmaWNhdGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5 cGVzCisgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgYSBiYXNlIHR5cGUuCisgICAgICBJbiB0aGF0 IGNhc2UsIHRoZSBiYXNlIHR5cGUgbXVzdCBiZSBzZXQgdG8gdGhlIHR5cGUgb2YKK0BAIC0xMDU0 MiwyNCArMTA2MjUsMTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAl9CisgICAgIH0KKyAKKy0gIG5lZ2F0aXZlX21h c2sgPQogKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVs b3cuICAqLwogKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5 cGUsIDAsIC0xKTsKICsgIFRZUEVfVU5TSUdORUQgKHJhbmdlX3R5cGUpID0gMDsKICsKICsgIG5l Z2F0aXZlX21hc2sgPSAKLSsgICAgKExPTkdFU1QpIC0xIDw8IChUWVBFX0xFTkdUSCAoYmFzZV90 eXBlKSAqIFRBUkdFVF9DSEFSX0JJVCAtIDEpOwotKwotKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9h ZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCi0rICAg ICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3 YXkgYW5kIHRoZQorICAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUp ICogVEFSR0VUX0NIQVJfQklUIC0gMSk7CistICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlw ZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21hc2spKQorLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsK Ky0gIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21h c2spKQorLSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CisgCistICByYW5nZV90eXBlID0gY3Jl YXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgbG93LCBoaWdoKTsKKysgIC8qIEV4Y2x1 ZGUgbGFuZ3VhZ2VfYWRhIGZyb20gYW55IFRZUEVfRFlOQU1JQyBjb25zdHJ1Y3RzIGJlbG93LiAg R0RCIEFkYQorKyAgICAgc3VwcG9ydHMgaW1wbGVtZW50cyB0aGUgZHluYW1pYyBib3VuZHMgaW4g YSBub24tRFdBUkYgd2F5IGFuZCB0aGUKICsgICAgIGV4aXN0aW5nIERXQVJGIGR5bmFtaWMgYm91 bmRzIGFyZSBpbnZhbGlkLCBsZWFkaW5nIHRvIG1lbW9yeSBhY2Nlc3MKICsgICAgIGVycm9ycy4g ICovCiAgCi0tICAvKiBGSVhNRTogRm9yIHZhcmlhYmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2Yg dGhlc2UgY291bGQgYmUKLS0gICAgIGEgdmFyaWFibGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2 YWx1ZS4gIFdlJ2xsIGFsbG93IGl0LAotLSAgICAgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhh bmRsZSBpdC4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91 bmQsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3Rh bnRfdmFsdWUgKGF0dHIsIDApOworLSAgLyogTWFyayBhcnJheXMgd2l0aCBkeW5hbWljIGxlbmd0 aCBhdCBsZWFzdCBhcyBhbiBhcnJheSBvZiB1bnNwZWNpZmllZAorLSAgICAgbGVuZ3RoLiAgR0RC IGNvdWxkIGNoZWNrIHRoZSBib3VuZGFyeSBidXQgYmVmb3JlIGl0IGdldHMgaW1wbGVtZW50ZWQg YXQKKy0gICAgIGxlYXN0IGFsbG93IGFjY2Vzc2luZyB0aGUgYXJyYXkgZWxlbWVudHMuICAqLwor LSAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKy0gICAgVFlQRV9ISUdI X0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKyAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCiArICAgIHsK ICsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfQkxPQ0s7CkBAIC0xOTU0LDkgKzExNzcsNyBAQCBpbmRleCAwZWYwYTVi Li44MGU1ZmU0IDEwMDY0NAogKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKICsg ICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKICsgICAgICBzdHJ1Y3QgYXR0 cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0gCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQorKwogKyAgICAgIHRhcmdldF9k aWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7CiArICAg ICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKICsgICAg ICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRp b24sIHRhcmdldF9jdSk7CkBAIC0xOTcxLDI2ICsxMTkyLDEwIEBAIGluZGV4IDBlZjBhNWIuLjgw ZTVmZTQgMTAwNjQ0CiArICAgICAgbG93ID0gMDsKICsgICAgfQogKyAgZWxzZQotICAgICB7Ci0t ICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwgaXNfcmVmX2F0dHIgKGF0dHIp KQotLSAgICAgICAgewotLSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNw ZWNpZmllZCBvciBkeW5hbWljIGxlbmd0aAotLSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9i bG9jazEgYXR0cmlidXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJpYnV0ZS4KLS0gICAgICAgICAgICAg RklYTUU6IEdEQiBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIGR5bmFtaWMKLS0gICAg ICAgICAgICAgYXJyYXlzIHByb3Blcmx5LCB0cmVhdCB0aGVtIGFzIGFycmF5cyB3aXRoIHVuc3Bl Y2lmaWVkCi0tICAgICAgICAgICAgIGxlbmd0aCBmb3Igbm93LgotLQotLSAgICAgICAgICAgICBG SVhNRTogamltYi8yMDAzLTA5LTIyOiBHREIgZG9lcyBub3QgcmVhbGx5IGtub3cKLS0gICAgICAg ICAgICAgaG93IHRvIGhhbmRsZSBhcnJheXMgb2YgdW5zcGVjaWZpZWQgbGVuZ3RoCi0tICAgICAg ICAgICAgIGVpdGhlcjsgd2UganVzdCByZXByZXNlbnQgdGhlbSBhcyB6ZXJvLWxlbmd0aAotLSAg ICAgICAgICAgICBhcnJheXMuICBDaG9vc2UgYW4gYXBwcm9wcmlhdGUgdXBwZXIgYm91bmQgZ2l2 ZW4KLS0gICAgICAgICAgICAgdGhlIGxvd2VyIGJvdW5kIHdlJ3ZlIGNvbXB1dGVkIGFib3ZlLiAg Ki8KLS0gICAgICAgICAgaGlnaCA9IGxvdyAtIDE7Ci0tICAgICAgICB9CisrICAgIHsKICsgICAg ICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQogKwlsb3cgPSBkd2Fy ZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwotICAgICAgIGVsc2UKLS0gICAg ICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworKyAg ICAgIGVsc2UKICsJewogKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikK ICsJICAgIHsKQEAgLTIwMDksMjQgKzEyMTQsMjIgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAx MDA2NDQKICsgICAgICBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7CiArICAgICAg aWYgKGxvdyA+PSAwKQogKwlUWVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7Ci0gICAgIH0K LS0gIGVsc2UKLSsKKysgICAgfQorIAorLSAgLyogQWRhIGV4cGVjdHMgYW4gZW1wdHkgYXJyYXkg b24gbm8gYm91bmRhcnkgYXR0cmlidXRlcy4gICovCistICBpZiAoYXR0ciA9PSBOVUxMICYmIGN1 LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCistICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpID0gMTsKICsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91 cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRyIHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKQogKwkJJiYgIWlzX3JlZl9hdHRy IChhdHRyKSkpCi0gICAgIHsKLSAgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf Y291bnQsIGN1KTsKLS0gICAgICBpZiAoYXR0cikKLS0JewotLQkgIGludCBjb3VudCA9IGR3YXJm Ml9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMSk7Ci0tCSAgaGlnaCA9IGxvdyArIGNv dW50IC0gMTsKKysgICAgeworKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9j b3VudCwgY3UpOwogKyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNz bHkgaW5lZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCiArICAgICAgaWYgKGF0dHIgJiYg KGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRy KSkpCiArICAgICAgCXsKICsJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKHJhbmdl X3R5cGUpID0gMTsKICsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSAJfQorKwl9 CiArICAgICAgLyogUGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQu ICAqLwogKyAgICB9CiArCkBAIC0yMDYwLDMyICsxMjYzLDE4IEBAIGluZGV4IDBlZjBhNWIuLjgw ZTVmZTQgMTAwNjQ0CiArCiArICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChhdHRyKSkKICsJaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwg MCk7Ci0gICAgICAgZWxzZQotIAl7Ci0tCSAgLyogVW5zcGVjaWZpZWQgYXJyYXkgbGVuZ3RoLiAg Ki8KKysgICAgICBlbHNlCisrCXsKICsJICAvKiBBZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBv biBubyBib3VuZGFyeSBhdHRyaWJ1dGVzLiAgKi8KICsJICBpZiAoY3UtPmxhbmd1YWdlICE9IGxh bmd1YWdlX2FkYSkKICsJICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUp ID0gMTsKLSAJICBoaWdoID0gbG93IC0gMTsKLSAJfQorKwkgIGhpZ2ggPSBsb3cgLSAxOworKwl9 CiArICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRp dmVfbWFzaykpCiArCWhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKICsgICAgICBUWVBFX0hJR0hfQk9V TkQgKHJhbmdlX3R5cGUpID0gaGlnaDsKLSAgICAgfQotIAotICAgLyogRHdhcmYtMiBzcGVjaWZp Y2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKLUBAIC04 OTg4LDI0ICs5MTc5LDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAl9Ci0gICAgIH0KLSAKLS0gIG5lZ2F0aXZlX21h c2sgPQotLSAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFS R0VUX0NIQVJfQklUIC0gMSk7Ci0tICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYg KGxvdyAmIG5lZ2F0aXZlX21hc2spKQotLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKLS0gIGlm ICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQot LSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7Ci0tCi0tICByYW5nZV90eXBlID0gY3JlYXRlX3Jh bmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgbG93LCBoaWdoKTsKKysgICAgfQorKwogKyAgLyog RFdfQVRfYml0X3N0cmlkZSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgYXMgd2UgY291bnQgaW4g Ynl0ZXMuICAqLwogKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc3RyaWRl LCBjdSk7CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5s YW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCkBAIC0yMTAxLDE5ICsxMjkwLDExIEBAIGluZGV4IDBl ZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiArICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGll OwogKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OwogKyAgICAgIHN0cnVj dCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKLSAKLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGgg ZHluYW1pYyBsZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAg IGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRz IGltcGxlbWVudGVkIGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVs ZW1lbnRzLiAgKi8KLS0gIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0t ICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKKysKICsgICAg ICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRf Y3UpOwogKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmls ZSk7CiArICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERX X0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOwotIAotLSAgLyogQWRhIGV4cGVjdHMgYW4gZW1wdHkg YXJyYXkgb24gbm8gYm91bmRhcnkgYXR0cmlidXRlcy4gICovCi0tICBpZiAoYXR0ciA9PSBOVUxM ICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0tICAgIFRZUEVfSElHSF9CT1VORF9V TkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKKysKICsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJh bmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCiArICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRf RFdBUkZfTE9DTElTVDsKICsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRl X3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdApAQCAtMjEzMiw3ICsxMzEzLDcgQEAgaW5k ZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGll LCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC0xMTU0NSwxMCArMTE3NTMsMTIgQEAgdmFyX2RlY29k ZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAor QEAgLTEzMjU3LDEwICsxMzQ3OSwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2 YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNl ZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQK ICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5s ZXNzIHBlcmZvcm1hbmNlCkBAIC0yMTQ3LDcgKzEzMjgsNyBAQCBpbmRleCAwZWYwYTViLi44MGU1 ZmU0IDEwMDY0NAogIAogICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPT0gJmR3YXJm Ml9sb2NsaXN0X2Z1bmNzKQogICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwotQEAgLTExNTg5LDYg KzExNzk5LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTEzMzAxLDYgKzEzNTI1LDgg QEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJc3ltID0gT0JTVEFDS19a QUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBzeW1ib2wpOwogICAgICAg IE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTIxNTYsNyArMTMzNyw3IEBAIGluZGV4 IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiAgCiAgICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wn cyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KICAgICAg ICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7Ci1AQCAtMTIzNTQsNiAr MTI1NjYsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC0xNDA3NSw2ICsxNDMwMSw5IEBAIHJlYWRfdHlwZV9kaWVfMSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGJyZWFr OwogICAgICB9CiAgCkBAIC0yMTY2LDggKzEzNDcsOCBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0 IDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtMTU1OTAsNjIgKzE1ODA1 LDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotICAg YmF0b24tPmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7CitAQCAtMTY0NzIsNjIgKzE2 NzAxLDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAor ICAgYmF0b24tPmZyb21fZHdvID0gY3UtPmR3b191bml0ICE9IE5VTEw7CiAgfQogIAogLXN0YXRp YyB2b2lkCkBAIC0yMTc4LDI2ICsxMzU5LDE2IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAw NjQ0CiArCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqCiArZHdhcmYyX2F0 dHJfdG9fbG9jZXhwcl9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29i amZpbGUtPm9iamZpbGU7CisreworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJf cGVyX29iamZpbGUtPm9iamZpbGU7CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJh dG9uOwotIAotLSAgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKLS0gICAg ICAvKiAiLmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5 IGJlIG91dHNpZGUKLS0JIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUg Y29tcGxhaW50IGluIHRoZQotLQkgb3RoZXIgYnJhbmNoLiAgKi8KLS0gICAgICAmJiBEV19VTlNO RCAoYXR0cikgPCBkd2FyZjJfc2VjdGlvbl9zaXplIChvYmpmaWxlLAotLQkJCQkJCSZkd2FyZjJf cGVyX29iamZpbGUtPmxvYykpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24gKmJhdG9uOworKwogKyAgZ2RiX2Fzc2VydCAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSk7CiArCiArICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssIHNpemVvZiAoKmJhdG9uKSk7CiArICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKICsg IGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOwotIAotLSAgICAgIGJhdG9uID0gb2JzdGFja19h bGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAoc3RydWN0 IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CisrCiArICAvKiBOb3RlIHRoYXQgd2UncmUganVzdCBj b3B5aW5nIHRoZSBibG9jaydzIGRhdGEgcG9pbnRlcgogKyAgICAgaGVyZSwgbm90IHRoZSBhY3R1 YWwgZGF0YS4gIFdlJ3JlIHN0aWxsIHBvaW50aW5nIGludG8gdGhlCiArICAgICBpbmZvX2J1ZmZl ciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKQEAgLTIyMDYs MTggKzEzNzcsMTUgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICsgIGJhdG9uLT5z aXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwogKyAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAo YXR0ciktPmRhdGE7CiArICBnZGJfYXNzZXJ0IChiYXRvbi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5k YXRhICE9IE5VTEwpOwotIAotLSAgICAgIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoY3UsIGJhdG9u LCBhdHRyKTsKKysKICsgIHJldHVybiBiYXRvbjsKICt9Ci0gCi0tICAgICAgaWYgKGN1LT5iYXNl X2tub3duID09IDApCi0tCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLS0JCSAgIF8o IkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0ICIKLS0JCSAgICAgInNwZWNpZnlpbmcgdGhlIENV IGJhc2UgYWRkcmVzcy4iKSk7CisrCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRv biAqCiArZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0 ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0reworIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlOworICAgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKnNlY3Rpb24gPSBjdV9kZWJ1Z19sb2Nfc2VjdGlvbiAoY3UpOwogKyAgc3RydWN0 IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbjsKICsKICsgIC8qIERXX0FUX2xvY2F0aW9uIG9m IHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUgbWlzc2luZyBpZiB0aGUgcmVmZXJlbmNlZApAQCAt MjIyNSwyNyArMTM5MywzNiBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogKyAgaWYg KCFhdHRyKQogKyAgICByZXR1cm4gTlVMTDsKICsKLSsgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3 YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKLSsJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxl LT5sb2MpOwotKworKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5v YmpmaWxlLCBzZWN0aW9uKTsKKyAKKy0gIGlmIChhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQg KGF0dHIpCiArICBpZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCi0rCS8q ICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUg b3V0c2lkZQotKwkgICB0aGUgc2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNv bXBsYWludCBpbiB0aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAgKi8KLSsJJiYgRFdfVU5TTkQgKGF0 dHIpIDwgZHdhcmYyX3NlY3Rpb25fc2l6ZSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAot KwkJCQkJCSAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jKSkpCisgICAgICAgLyogLmRlYnVnX2xv Y3ssLmR3b30gbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNp ZGUKKyAJIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50 IGluIHRoZQorIAkgb3RoZXIgYnJhbmNoLiAgKi8KKy0gICAgICAmJiBEV19VTlNORCAoYXR0cikg PCBkd2FyZjJfc2VjdGlvbl9zaXplIChvYmpmaWxlLCBzZWN0aW9uKSkKKy0gICAgeworLSAgICAg IHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247CisrICAgICAgJiYgRFdfVU5TTkQg KGF0dHIpIDwgZHdhcmYyX3NlY3Rpb25fc2l6ZSAob2JqZmlsZSwgc2VjdGlvbikpKQogKyAgICBy ZXR1cm4gTlVMTDsKLSsKLSsgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssCisgCistICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmb2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xp c3RfYmF0b24pKTsKKysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjaywKICsJCQkgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKLSsK KyAKKy0gICAgICBmaWxsX2luX2xvY2xpc3RfYmF0b24gKGN1LCBiYXRvbiwgYXR0cik7CiArICBm aWxsX2luX2xvY2xpc3RfYmF0b24gKGN1LCBiYXRvbiwgYXR0cik7Ci0rCisgCistICAgICAgaWYg KGN1LT5iYXNlX2tub3duID09IDApCistCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywK Ky0JCSAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0ICIKKy0JCSAgICAgInNwZWNpZnlp bmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CiArICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkK ICsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogKwkgICAgICAgXygiTG9jYXRp b24gbGlzdCB1c2VkIHdpdGhvdXQgIgogKwkJICJzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJl c3MuIikpOwotIAorKwogKyAgcmV0dXJuIGJhdG9uOwogK30KICsKQEAgLTIyNTYsNyArMTQzMyw3 IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiArCQkJICAgICBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICt7CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3RfYmF0 b247Ci0rCisgCiArICBsb2NsaXN0X2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRv biAoYXR0ciwgY3UpOwogKyAgaWYgKGxvY2xpc3RfYmF0b24pCiArICAgIHsKQEAgLTIzMDksOCAr MTQ4Niw4IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiAgICAgIH0KICB9CiAgCi1A QCAtMTYwMDMsNiArMTYyNTYsMjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICpp dGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCi0gICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0 ID09IG9mc19yaHMtPm9mZnNldDsKK0BAIC0xNjg5NSw2ICsxNzE2MiwyNSBAQCBwZXJfY3Vfb2Zm c2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9y aHMpCisgCSAgJiYgb2ZzX2xocy0+b2Zmc2V0LnNlY3Rfb2ZmID09IG9mc19yaHMtPm9mZnNldC5z ZWN0X29mZik7CiAgfQogIAogKy8qIEZpbGwgaW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2Fi bGUgZm9yIHR5cGUgRElFcy4gICovCkBAIC0yMzM1LDM1NiArMTUxMiwxNyBAQCBpbmRleCAwZWYw YTViLi44MGU1ZmU0IDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElF IHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4g IEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTYwMjgsNiArMTYzMDAsOCBA QCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTY5MTksNiArMTcyMDUsOCBAQCBzZXRfZGllX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipzbG90 LCBvZnM7CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotICAgaHRh Yl90ICp0eXBlX2hhc2hfcHRyOwogIAogKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlw ZSwgY3UpOwogKwogICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRoYXQgdGhlIGduYXQt c3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKICAgICAgIGluaXRpYWxpemVkIChpZiBub3QgYWxyZWFk eSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCiAgICAgICB3ZSBzaG91bGQgbm90 IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFyZWEgaXMKLWRpZmYgLS1n aXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwotaW5kZXggZGRhZTA5OS4uYWVhNDQz ZiAxMDA2NDQKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0z Niw2ICszNiw4IEBACi0gI2luY2x1ZGUgImRlbWFuZ2xlLmgiCi0gI2luY2x1ZGUgInBzeW1wcml2 LmgiCi0gI2luY2x1ZGUgImZpbGVuYW1lcy5oIgotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0r I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKLSAjaW5jbHVk ZSAidmFsdWUuaCIKLSAjaW5jbHVkZSAiaW5mY2FsbC5oIgotQEAgLTYwLDYgKzYyLDIxIEBAIHN0 cnVjdCBlbGZpbmZvCi0gICAgIGFzZWN0aW9uICptZGVidWdzZWN0OwkvKiBTZWN0aW9uIHBvaW50 ZXIgZm9yIC5tZGVidWcgc2VjdGlvbiAqLwotICAgfTsKLSAKLSsvKiBQZXItb2JqZmlsZSBkYXRh IGZvciBTeXN0ZW1UYXAgcHJvYmUgaW5mby4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBv YmpmaWxlX2RhdGEgKnN0YXBfcHJvYmVfa2V5ID0gTlVMTDsKLSsKLSsvKiBQZXItb2JqZmlsZSBk YXRhIGFib3V0IFN5c3RlbVRhcCBwcm9iZXMuICAqLwotKwotK3N0cnVjdCBzdGFwX3Byb2JlX3Bl cl9vYmpmaWxlCi0rICB7Ci0rICAgIC8qIFRoZSBudW1iZXIgb2YgcHJvYmVzIGluIHRoaXMgb2Jq ZmlsZS4gICovCi0rICAgIGludCBzdGFwX251bV9wcm9iZXM7Ci0rCi0rICAgIC8qIFRoZSBwcm9i ZXMgdGhlbXNlbHZlcy4gICovCi0rICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7Ci0rICB9 OwotKwotIHN0YXRpYyB2b2lkIGZyZWVfZWxmaW5mbyAodm9pZCAqKTsKLSAKLSAvKiBNaW5pbWFs IHN5bWJvbHMgbG9jYXRlZCBhdCB0aGUgR09UIGVudHJpZXMgZm9yIC5wbHQgLSB0aGF0IGlzIHRo ZSByZWFsCi1AQCAtMTU3Niw3ICsxNTkzLDI3MCBAQCBlbGZzdGFiX29mZnNldF9zZWN0aW9ucyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KQotICAg ICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCSAgICAgICBfKCJlbGYvc3RhYiBz ZWN0aW9uIGluZm9ybWF0aW9uIG1pc3NpbmcgZm9yICVzIiksIGZpbGVuYW1lKTsKLSB9Ci0rCi0r LyogSGVscGVyIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQg aW4gYQotKyAgIFN5c3RlbVRhcCdzIHByb2JlLiAgQmFzaWNhbGx5LCB0aGUgaW5mb3JtYXRpb24g Y29uc2lzdHMgaW46Ci0rCi0rICAgLSBQcm9iZSdzIFBDIGFkZHJlc3M7Ci0rICAgLSBMaW5rLXRp bWUgc2VjdGlvbiBhZGRyZXNzIG9mIGAuc3RhcHNkdC5iYXNlJyBzZWN0aW9uOwotKyAgIC0gTGlu ay10aW1lIGFkZHJlc3Mgb2YgdGhlIHNlbWFwaG9yZSB2YXJpYWJsZSwgb3IgWkVSTyBpZiB0aGUK LSsgICAgIHByb2JlIGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlbWFwaG9yZTsKLSsgICAt IFByb2JlJ3MgcHJvdmlkZXIgbmFtZTsKLSsgICAtIFByb2JlJ3MgbmFtZTsKLSsgICAtIFByb2Jl J3MgYXJndW1lbnQgZm9ybWF0LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2hhbmRsZV9wcm9iZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZHRfbm90ZSAqZWwsCi0rCSAgICAgIHN0 cnVjdCBzdGFwX3Byb2JlICpyZXQsIENPUkVfQUREUiBiYXNlKQotK3sKLSsgIGJmZCAqYWJmZCA9 IG9iamZpbGUtPm9iZmQ7Ci0rICBpbnQgc2l6ZSA9IGJmZF9nZXRfYXJjaF9zaXplIChhYmZkKSAv IDg7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOwotKyAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+ YnVpbHRpbl9kYXRhX3B0cjsKLSsgIENPUkVfQUREUiBiYXNlX3JlZjsKLSsKLSsgIHJldC0+Z2Ri YXJjaCA9IGdkYmFyY2g7Ci0rCi0rICAvKiBQcm92aWRlciBhbmQgdGhlIG5hbWUgb2YgdGhlIHBy b2JlLiAgKi8KLSsgIHJldC0+cHJvdmlkZXIgPSAoY29uc3QgY2hhciAqKSAmZWwtPmRhdGFbMyAq IHNpemVdOwotKyAgcmV0LT5uYW1lID0gbWVtY2hyIChyZXQtPnByb3ZpZGVyLCAnXDAnLAotKwkJ ICAgICAgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEKLSsJCSAgICAgICsgZWwtPnNpemUgLSAo dW5zaWduZWQgbG9uZyAqKSByZXQtPnByb3ZpZGVyKTsKLSsgIC8qIE1ha2luZyBzdXJlIHRoZXJl IGlzIGEgbmFtZS4gICovCi0rICBpZiAoIXJldC0+bmFtZSkKLSsgICAgY29tcGxhaW50ICgmc3lt ZmlsZV9jb21wbGFpbnRzLCBfKCJjb3JydXB0IHByb2JlIHdoZW4gcmVhZGluZyBgJXMnIiksCi0r CSAgICAgICBvYmpmaWxlLT5uYW1lKTsKLSsgIGVsc2UKLSsgICAgKytyZXQtPm5hbWU7Ci0rCi0r ICAvKiBSZXRyaWV2aW5nIHRoZSBwcm9iZSdzIGFkZHJlc3MuICAqLwotKyAgcmV0LT5hZGRyZXNz ID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzICgoY29uc3QgZ2RiX2J5dGUgKikgJmVsLT5kYXRhWzBd LAotKwkJCQkJcHRyX3R5cGUpOwotKyAgLyogTGluay10aW1lIHNoX2FkZHIgb2YgYC5zdGFwc2R0 LmJhc2UnIHNlY3Rpb24uICAqLwotKyAgYmFzZV9yZWYgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3Mg KChjb25zdCBnZGJfYnl0ZSAqKSAmZWwtPmRhdGFbc2l6ZV0sCi0rCQkJCSAgICBwdHJfdHlwZSk7 Ci0rICAvKiBTZW1hcGhvcmUgYWRkcmVzcy4gICovCi0rICByZXQtPnNlbV9hZGRyID0gZXh0cmFj dF90eXBlZF9hZGRyZXNzICgoY29uc3QgZ2RiX2J5dGUgKikgJmVsLT5kYXRhWzIgKiBzaXplXSwK LSsJCQkJCSBwdHJfdHlwZSk7Ci0rCi0rICByZXQtPmFkZHJlc3MgKz0gKEFOT0ZGU0VUIChvYmpm aWxlLT5zZWN0aW9uX29mZnNldHMsCi0rCQkJICAgICBTRUNUX09GRl9URVhUIChvYmpmaWxlKSkK LSsJCSAgICsgYmFzZSAtIGJhc2VfcmVmKTsKLSsgIGlmIChyZXQtPnNlbV9hZGRyKQotKyAgICBy ZXQtPnNlbV9hZGRyICs9IChBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLAotKwkJ CQlTRUNUX09GRl9EQVRBIChvYmpmaWxlKSkKLSsJCSAgICAgICsgYmFzZSAtIGJhc2VfcmVmKTsK LSsKLSsgIC8qIEFyZ3VtZW50cy4gIFdlIGNhbiBvbmx5IGV4dHJhY3QgdGhlIGFyZ3VtZW50IGZv cm1hdCBpZiB0aGVyZSBpcyBhIHZhbGlkCi0rICAgICBuYW1lIGZvciB0aGlzIHByb2JlLiAgKi8K LSsgIGlmIChyZXQtPm5hbWUpCi0rICAgIHsKLSsgICAgICByZXQtPmFyZ3MgPSBtZW1jaHIgKHJl dC0+bmFtZSwgJ1wwJywKLSsJCQkgICh1bnNpZ25lZCBsb25nICopIGVsLT5kYXRhCi0rCQkJICAr IGVsLT5zaXplIC0gKHVuc2lnbmVkIGxvbmcgKikgcmV0LT5uYW1lKTsKLSsKLSsgICAgICBpZiAo cmV0LT5hcmdzICE9IE5VTEwpCi0rCSsrcmV0LT5hcmdzOwotKyAgICAgIGlmIChyZXQtPmFyZ3Mg PT0gTlVMTAotKwkgIHx8IChtZW1jaHIgKHJldC0+YXJncywgJ1wwJywgKHVuc2lnbmVkIGxvbmcg KikgZWwtPmRhdGEKLSsJCSAgICAgICsgZWwtPnNpemUgLSAodW5zaWduZWQgbG9uZyAqKSByZXQt Pm5hbWUpCi0rCSAgICAgICE9IGVsLT5kYXRhICsgZWwtPnNpemUgLSAxKSkKLSsJY29tcGxhaW50 ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJjb3JydXB0IHByb2JlIHdoZW4gcmVhZGluZyBgJXMn IiksCi0rCQkgICBvYmpmaWxlLT5uYW1lKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXQtPmFy Z3MgPSBOVUxMOwotK30KLSsKLSsvKiBUaGUgbmFtZSBvZiB0aGUgU3lzdGVtVGFwIHNlY3Rpb24g d2hlcmUgd2Ugd2lsbCBmaW5kIGluZm9ybWF0aW9uIGFib3V0Ci0rICAgdGhlIHByb2Jlcy4gICov Ci0rCi0rI2RlZmluZSBTVEFQX0JBU0VfU0VDVElPTl9OQU1FICIuc3RhcHNkdC5iYXNlIgotKwot Ky8qIEhlbHBlciBmdW5jdGlvbiB3aGljaCB0cmllcyB0byBmaW5kIHRoZSBiYXNlIGFkZHJlc3Mg b2YgdGhlIFN5c3RlbVRhcAotKyAgIGJhc2Ugc2VjdGlvbiBuYW1lZCBTVEFQX0JBU0VfU0VDVElP Tl9OQU1FLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2dldF9iYXNlX2FkZHJlc3NfMSAoYmZkICph YmZkLCBhc2VjdGlvbiAqc2VjdCwgdm9pZCAqb2JqKQotK3sKLSsgIGJmZF92bWEgKmJhc2UgPSAo YmZkX3ZtYSAqKSBvYmo7Ci0rCi0rICBpZiAoKmJhc2UgPT0gKGJmZF92bWEpIC0xCi0rICAgICAg JiYgKHNlY3QtPmZsYWdzICYgKFNFQ19EQVRBIHwgU0VDX0FMTE9DIHwgU0VDX0hBU19DT05URU5U UykpCi0rICAgICAgJiYgc2VjdC0+bmFtZSAmJiAhc3RyY21wIChzZWN0LT5uYW1lLCBTVEFQX0JB U0VfU0VDVElPTl9OQU1FKSkKLSsgICAgKmJhc2UgPSBzZWN0LT52bWE7Ci0rfQotKwotKy8qIEhl bHBlciBmdW5jdGlvbiB3aGljaCBpdGVyYXRlcyBvdmVyIGV2ZXJ5IHNlY3Rpb24gaW4gdGhlIEJG RCBmaWxlLAotKyAgIHRyeWluZyB0byBmaW5kIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFN5c3Rl bVRhcCBiYXNlIHNlY3Rpb24uCi0rICAgUmV0dXJucyB0aGUgc2VjdGlvbiBhZGRyZXNzIGlmIGZv dW5kLCBvciAtMSBvdGhlcndpc2UuICAqLwotKwotK3N0YXRpYyBiZmRfdm1hCi0rZ2V0X2Jhc2Vf YWRkcmVzcyAoYmZkICpvYmZkKQotK3sKLSsgIGJmZF92bWEgYmFzZSA9IChiZmRfdm1hKSAtMTsK LSsKLSsgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAob2JmZCwgZ2V0X2Jhc2VfYWRkcmVzc18xLCAo dm9pZCAqKSAmYmFzZSk7Ci0rCi0rICByZXR1cm4gYmFzZTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50 YXRpb24gb2YgYHN5bV9nZXRfcHJvYmVzJywgYXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAq LwotKwotK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCi0rZWxmX2dldF9wcm9iZXMgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgKm51bV9wcm9iZXMpCi0rewotKyAgc3RydWN0IHN0YXBf cHJvYmUgKnJldCA9IE5VTEw7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqcHJv YmVzX3Blcl9vYmpmaWxlOwotKwotKyAgLyogSW5pdGlhbGx5LCBubyBwcm9iZXMuICAqLwotKyAg Km51bV9wcm9iZXMgPSAwOwotKwotKyAgLyogSGF2ZSB3ZSBwYXJzZWQgdGhpcyBvYmpmaWxlJ3Mg cHJvYmVzIGFscmVhZHk/ICAqLwotKyAgcHJvYmVzX3Blcl9vYmpmaWxlCi0rICAgID0gKHN0cnVj dCBzdGFwX3Byb2JlX3Blcl9vYmpmaWxlICopIG9iamZpbGVfZGF0YSAob2JqZmlsZSwKLSsJCQkJ CQkgICAgICBzdGFwX3Byb2JlX2tleSk7Ci0rCi0rICBpZiAoIXByb2Jlc19wZXJfb2JqZmlsZSkK LSsgICAgewotKyAgICAgIC8qIElmIHdlIGFyZSBoZXJlLCB0aGVuIHRoaXMgaXMgdGhlIGZpcnN0 IHRpbWUgd2UgYXJlIHBhcnNpbmcgdGhlCi0rCSBwcm9iZSdzIGluZm9ybWF0aW9uLiAgV2UgYmFz aWNhbGx5IGhhdmUgdG8gY291bnQgaG93IG1hbnkgcHJvYmVzCi0rCSB0aGUgb2JqZmlsZSBoYXMs IGFuZCB0aGVuIGZpbGwgaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbgotKwkgZm9yIGVhY2gg b25lLiAgKi8KLSsKLSsgICAgICBiZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgICAgIGJm ZF92bWEgYmFzZSA9IGdldF9iYXNlX2FkZHJlc3MgKG9iZmQpOwotKyAgICAgIHN0cnVjdCBzZHRf bm90ZSAqaXRlcjsKLSsgICAgICBpbnQgaTsKLSsgICAgICBpbnQgbiA9IDA7Ci0rCi0rICAgICAg aWYgKCEgZWxmX3RkYXRhIChvYmZkKS0+c2R0X25vdGVfaGVhZCkKLSsJLyogVGhlcmUgaXNuJ3Qg YW55IHByb2JlIGhlcmUuICAqLwotKwlyZXR1cm4gTlVMTDsKLSsKLSsgICAgICAvKiBBbGxvY2F0 aW5nIHNwYWNlIGZvciBwcm9iZSBpbmZvLiAgKi8KLSsgICAgICBmb3IgKGl0ZXIgPSBlbGZfdGRh dGEgKG9iZmQpLT5zZHRfbm90ZV9oZWFkOwotKwkgICBpdGVyOwotKwkgICBpdGVyID0gaXRlci0+ bmV4dCwgKytuKTsKLSsKLSsgICAgICByZXQgPSB4Y2FsbG9jIChuLCBzaXplb2YgKHN0cnVjdCBz dGFwX3Byb2JlKSk7Ci0rCi0rICAgICAgLyogUGFyc2luZyBlYWNoIHByb2JlJ3MgaW5mb3JtYXRp b24uICAqLwotKyAgICAgIGZvciAoaXRlciA9IGVsZl90ZGF0YSAob2JmZCktPnNkdF9ub3RlX2hl YWQsIGkgPSAwOwotKwkgICBpdGVyOwotKwkgICBpdGVyID0gaXRlci0+bmV4dCwgaSsrKQotKwkv KiBXZSBmaXJzdCBoYXZlIHRvIGhhbmRsZSBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZQot KwkgICBwcm9iZSB3aGljaCBpcyBwcmVzZW50IGluIHRoZSBzZWN0aW9uLiAgKi8KLSsJaGFuZGxl X3Byb2JlIChvYmpmaWxlLCBpdGVyLCAmcmV0W2ldLCBiYXNlKTsKLSsKLSsgICAgICAvKiBDcmVh dGluZyBhIGNhY2hlIGZvciB0aGVzZSBwcm9iZXMgaW4gdGhlIG9iamZpbGUncyByZWdpc3RyeS4g ICovCi0rICAgICAgcHJvYmVzX3Blcl9vYmpmaWxlID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg c3RhcF9wcm9iZV9wZXJfb2JqZmlsZSkpOwotKwotKyAgICAgIHByb2Jlc19wZXJfb2JqZmlsZS0+ c3RhcF9udW1fcHJvYmVzID0gbjsKLSsgICAgICBwcm9iZXNfcGVyX29iamZpbGUtPnByb2JlcyA9 IHJldDsKLSsKLSsgICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBzdGFwX3Byb2JlX2tl eSwgcHJvYmVzX3Blcl9vYmpmaWxlKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXQgPSBwcm9i ZXNfcGVyX29iamZpbGUtPnByb2JlczsKLSsKLSsgICpudW1fcHJvYmVzID0gcHJvYmVzX3Blcl9v YmpmaWxlLT5zdGFwX251bV9wcm9iZXM7Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBJ bXBsZW1lbnRhdGlvbiBvZiBgc3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCcsIGFzIGRvY3Vt ZW50ZWQgaW4KLSsgICBzeW1maWxlLmguICAqLwotKwotK3N0YXRpYyBpbnQKLStlbGZfZ2V0X3By b2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAgICBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpCi0rewotKyAgY29uc3QgY2hhciAqcGFyZ3MgPSBwcm9i ZS0+YXJnczsKLSsKLSsgIGlmICghcGFyZ3MgfHwgISpwYXJncyB8fCAqcGFyZ3MgPT0gJzonKQot KyAgICAvKiBObyBhcmd1bWVudHMuICAqLwotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJldHVybiBz dGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwotK30KLSsKLSsvKiBJbXBsZW1l bnRhdGlvbiBvZiBgc3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50JywgYXMgZG9jdW1lbnRlZCBp bgotKyAgIHN5bWZpbGUuaC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rZWxmX2V2 YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAg IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKLSsJCQkgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKLSsJCQkgICAgIGludCBuKQotK3sKLSsgIHJldHVybiBzdGFwX2V2YWx1YXRlX3Byb2Jl X2FyZ3VtZW50IChvYmpmaWxlLCBwcm9iZSwgZnJhbWUsIG4pOwotK30KLSsKLSsvKiBJbXBsZW1l bnRhdGlvbiBvZiBgc3ltX2NvbXBpbGVfdG9fYXgnLCBhcyBkb2N1bWVudGVkIGluIHN5bWZpbGUu aC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStlbGZfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCi0rCQkgICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCi0rCQkgICBzdHJ1 Y3QgYWdlbnRfZXhwciAqZXhwciwKLSsJCSAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAotKwkJ ICAgaW50IG4pCi0rewotKyAgc3RhcF9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBwcm9iZSwgZXhw ciwgdmFsdWUsIG4pOwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX3JlbG9jYXRl X3Byb2JlJywgYXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLwotKwotK3N0YXRpYyB2b2lk Ci0rZWxmX3N5bWZpbGVfcmVsb2NhdGVfcHJvYmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot KwkJCSAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKLSsJCQkgICAgc3Ry dWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3Qgc3Rh cF9wcm9iZV9wZXJfb2JqZmlsZSAqcAotKyAgICA9IChzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2Jq ZmlsZSAqKSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsCi0rCQkJCQkJICAgICAgc3RhcF9wcm9iZV9r ZXkpOwotKwotKyAgaWYgKCFwKQotKyAgICAvKiBObyBwcm9iZSB0byByZWxvY2F0ZS4gICovCi0r ICAgIHJldHVybjsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBwLT5zdGFwX251bV9wcm9iZXM7IGkr KykKLSsgICAgewotKyAgICAgIHAtPnByb2Jlc1tpXS5hZGRyZXNzICs9IEFOT0ZGU0VUIChkZWx0 YSwgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwotKyAgICAgIGlmIChwLT5wcm9iZXNbaV0uc2Vt X2FkZHIpCi0rCXAtPnByb2Jlc1tpXS5zZW1fYWRkciArPSBBTk9GRlNFVCAoZGVsdGEsIFNFQ1Rf T0ZGX0RBVEEgKG9iamZpbGUpKTsKLSsgICAgfQotK30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24g dXNlZCB0byBmcmVlIHRoZSBzcGFjZSBhbGxvY2F0ZWQgZm9yIHN0b3JpbmcgU3lzdGVtVGFwCi0r ICAgcHJvYmUgaW5mb3JtYXRpb24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wcm9iZV9r ZXlfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCi0rewotKyAgaW50IGk7 Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqZGF0YSA9IChzdHJ1Y3Qgc3RhcF9w cm9iZV9wZXJfb2JqZmlsZSAqKSBkOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGRhdGEtPnN0YXBf bnVtX3Byb2JlczsgaSsrKQotKyAgICBzdGFwX2ZyZWVfcGFyc2VkX2FyZ3MgKGRhdGEtPnByb2Jl c1tpXS5wYXJzZWRfYXJncyk7Ci0rICB4ZnJlZSAoZGF0YS0+cHJvYmVzKTsKLSsgIHhmcmVlIChk YXRhKTsKLSt9Ci0rCi0gDAotKwotKy8qIEltcGxlbWVudGF0aW9uIGBzeW1fcHJvYmVfZm5zJywg YXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c3ltX3Byb2JlX2ZucyBlbGZfcHJvYmVfZm5zID0KLSt7Ci0rICBlbGZfZ2V0X3Byb2JlcywJCS8q IHN5bV9nZXRfcHJvYmVzICovCi0rICBlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50LAkvKiBz eW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50ICovCi0rICBlbGZfZXZhbHVhdGVfcHJvYmVfYXJn dW1lbnQsCS8qIHN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAqLwotKyAgZWxmX2NvbXBpbGVf dG9fYXgsCQkvKiBzeW1fY29tcGlsZV90b19heCAqLwotKyAgZWxmX3N5bWZpbGVfcmVsb2NhdGVf cHJvYmUsCS8qIHN5bV9yZWxvY2F0ZV9wcm9iZSAqLwotK307Ci0rCi0gLyogUmVnaXN0ZXIgdGhh dCB3ZSBhcmUgYWJsZSB0byBoYW5kbGUgRUxGIG9iamVjdCBmaWxlIGZvcm1hdHMuICAqLwotIAot IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9Ci1AQCAtMTU5MSw2ICsx ODcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zID0KLSAgIGVs Zl9zeW1maWxlX3NlZ21lbnRzLAkJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZp bGUuICAqLwotICAgTlVMTCwKLSAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2Nh dGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KLSsgICZlbGZfcHJvYmVfZm5zLAkJLyogc3ltX3Byb2Jl X2ZucyAqLwotICAgJnBzeW1fZnVuY3Rpb25zCi0gfTsKLSAKLUBAIC0xNjA5LDYgKzE4OTAsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfbGF6eV9wc3ltcyA9Ci0g ICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20g YSBmaWxlLiAgKi8KLSAgIE5VTEwsCi0gICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJl bG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCi0rICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9w cm9iZV9mbnMgKi8KLSAgICZwc3ltX2Z1bmN0aW9ucwotIH07Ci0gCi1AQCAtMTYyNiw2ICsxOTA4 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleCA9 Ci0gICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZy b20gYSBmaWxlLiAgKi8KLSAgIE5VTEwsCi0gICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8q IFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCi0rICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5 bV9wcm9iZV9mbnMgKi8KLSAgICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucwotIH07Ci0gCi1A QCAtMTY0Miw2ICsxOTI1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVs Zl9nbnVfaWZ1bmNfZm5zID0KLSB2b2lkCi0gX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKLSB7 Ci0rICBzdGFwX3Byb2JlX2tleQotKyAgICA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YV93aXRoX2Ns ZWFudXAgKE5VTEwsIHN0YXBfcHJvYmVfa2V5X2ZyZWUpOwotICAgYWRkX3N5bXRhYl9mbnMgKCZl bGZfc3ltX2Zucyk7Ci0gCi0gICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJl Z2lzdGVyX29iamZpbGVfZGF0YSAoKTsKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2 YWwuYwotaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKK2luZGV4IDdmMWRmYWMuLjUyNDYy YmMgMTAwNjQ0CiAtLS0gYS9nZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDEsNiAr NDEsNyBAQApAQCAtMjY5NSw3ICsxNTMzLDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAxMDA2 NDQKICAKICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotQEAgLTQ5OCwyNyArNDk5LDIxNyBA QCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAq ZWxlbWVudCwKK0BAIC01MDAsMjcgKzUwMSwyMTcgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1 Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCiAgfQogIAogIHN0YXRpYyBz dHJ1Y3QgdmFsdWUgKgpAQCAtMjkyOSw3ICsxNzY3LDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2 NyAxMDA2NDQKICB9CiAgCiAgCi1AQCAtNzk5LDYgKzk5MCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTgwMSw2ICs5OTIsNyBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgIGlu dCBzYXZlX3BvczE7CiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CiAgICBjaGFy ICpmdW5jdGlvbl9uYW1lID0gTlVMTDsKQEAgLTI5MzcsNyArMTc3NSw3IEBAIGluZGV4IDAyNDRm N2EuLmIzM2QzNjcgMTAwNjQ0CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVs dHNbcGNdLm9wY29kZTsKLUBAIC0xODc0LDYgKzIwNjYsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0xODc1LDYgKzIwNjcsOCBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAg ICAgICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRo LiAgKi8KICAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9z LCBub3NpZGUpOwpAQCAtMjk0Niw3ICsxNzg0LDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAx MDA2NDQKICAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwog ICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogIAotQEAgLTE4OTQsMjMgKzIwODgsMTMg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitA QCAtMTg5NSwyMyArMjA4OSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0 eXBlICpleHBlY3RfdHlwZSwKICAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAg ICB9CiAgCX0gCkBAIC0yOTcyLDcgKzE4MTAsNyBAQCBpbmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEw MDY0NAogIAogIAljYXNlIFRZUEVfQ09ERV9QVFI6CiAgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1A QCAtMjM0OSw0OSArMjUzMyw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzNDQsNDkgKzI1MjgsNiBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJfQogICAgICAgIHJldHVybiAo YXJnMSk7CiAgCkBAIC0zMDIyLDcgKzE4NjAsNyBAQCBpbmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEw MDY0NAogICAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5EOgogICAgICAgIGFyZzEgPSBldmFsdWF0 ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7CiAgICAgICAgaWYgKG5vc2lk ZSA9PSBFVkFMX1NLSVApCi1AQCAtMjYyMywxNSArMjc2NCwyMyBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNjE4LDE1ICsyNzU5LDIz IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAog ICAgICAgIGlmIChleHBlY3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBF X0NPREVfUFRSKQogIAlleHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVk ZWYgKGV4cGVjdF90eXBlKSk7CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0 X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtMzA0OCw3ICsxODg2LDcgQEAgaW5kZXggMDI0 NGY3YS4uYjMzZDM2NyAxMDA2NDQKICAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9J RF9TSURFX0VGRkVDVFMpCiAgCXsKICAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAoYXJnMSkpOwotQEAgLTI2NDAsMTIgKzI3ODksMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjYzNSwxMiArMjc4NCwxOCBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAv KiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAg Ki8KICAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAg ICkKQEAgLTMwNzIsNyArMTkxMCw3IEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcgMTAwNjQ0CiAg CSAgZWxzZQogIAkgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5v bi1wb2ludGVyIHZhbHVlLiIpKTsKICAJfQotQEAgLTI2NTUsOSArMjgxMCwxNCBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNjUwLDkg KzI4MDUsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCiAgCSBkby4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhh dAogIAkgQlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAq LwogICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCkBAIC0zMDkw LDcgKzE5MjgsNyBAQCBpbmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEwMDY0NAogIAogICAgICBjYXNl IFVOT1BfQUREUjoKICAgICAgICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIg dG8gbWVtYmVycy4gICovCi1AQCAtMjk5OSw3ICszMTU5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dp dGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjk5NCw3ICszMTU0LDcg QEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAs CiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMzA5OSw3ICsxOTM3 LDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZh cjsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAotQEAgLTMwMTAsMTMgKzMxNzAsMTggQEAgZXZh bHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAt MzAwNSwxMyArMzE2NSwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAg ICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC0zMTE5LDcgKzE5NTcsNyBAQCBp bmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29r dXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwp OwogIAl9Ci1AQCAtMzA2OCw5ICszMjMzLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9m IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKK0BAIC0zMDYzLDkgKzMyMjgsMTMg QEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCAqcG9zKQogIAogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsK QEAgLTMxMzYsNyArMTk3NCw3IEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcgMTAwNjQ0CiAgCiAg ICAgIGRlZmF1bHQ6CiAgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4 cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7Ci1AQCAtMzEwMSwxOCArMzI3MCwyNSBA QCBwYXJzZV9hbmRfZXZhbF90eXBlIChjaGFyICpwLCBpbnQgbGVuZ3RoKQorQEAgLTMwOTYsMTgg KzMyNjUsMjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBp bnQKICBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBA IC0zMTczLDEwICsyMDExLDEwIEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcgMTAwNjQ0CiArCiAg fQogZGlmZiAtLWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLWluZGV4IGIyNThjMGEu LjE3NTI5NzMgMTAwNjQ0CitpbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAogLS0tIGEvZ2Ri L2YtZXhwLnkKICsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjkyLDcgKzI5Miw5IEBAIGFyZ2xpc3Qg OglzdWJyYW5nZQorQEAgLTI5OCw3ICsyOTgsOSBAQCBhcmdsaXN0IDoJc3VicmFuZ2UKICAJCQl7 IGFyZ2xpc3RfbGVuID0gMTsgfQogIAk7CiAgICAgCkBAIC0zMTg4LDcgKzIwMjYsNyBAQCBpbmRl eCBiMjU4YzBhLi4xNzUyOTczIDEwMDY0NAogIAk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFu Zy5oIGIvZ2RiL2YtbGFuZy5oCi1pbmRleCAzYTQ2ZWJmLi4yYjczZTFmIDEwMDY0NAoraW5kZXgg NGFhZTNjNS4uNTFhNGUxZSAxMDA2NDQKIC0tLSBhL2dkYi9mLWxhbmcuaAogKysrIGIvZ2RiL2Yt bGFuZy5oCiBAQCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJ LyogRGVmaW5lZCBpbiBmLWV4cC55ICovCkBAIC0zMTk5LDkgKzIwMzcsOSBAQCBpbmRleCAzYTQ2 ZWJmLi4yYjczZTFmIDEwMDY0NAogKyAgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtKTsKICtleHRlcm4gdm9pZCBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3Jf ZXJyb3IgKHN0cnVjdCB0eXBlICp0eXBlKTsKICsKLSBleHRlcm4gaW50IGZfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKLSAJCQlzdHJ1 Y3QgdWlfZmlsZSAqLCBpbnQsCi0gCQkJY29uc3Qgc3RydWN0IHZhbHVlICosCisgZXh0ZXJuIHZv aWQgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosIGludCwgQ09S RV9BRERSLAorIAkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisgCQkJIGNvbnN0IHN0cnVjdCB2 YWx1ZSAqLAogZGlmZiAtLWdpdCBhL2dkYi9mLXR5cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50 LmMKIGluZGV4IGE5NWVmODQuLjgzMDkxN2QgMTAwNjQ0CiAtLS0gYS9nZGIvZi10eXBlcHJpbnQu YwpAQCAtMzI3MSw3ICsyMTA5LDcgQEAgaW5kZXggYTk1ZWY4NC4uODMwOTE3ZCAxMDA2NDQKICAg ICAgewogICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKIGRpZmYgLS1naXQgYS9nZGIvZi12YWxw cmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggODdiMmVkMS4uNWQyNjNmMiAxMDA2NDQK K2luZGV4IDhiODRiNWEuLjRiMjQwYTMgMTAwNjQ0CiAtLS0gYS9nZGIvZi12YWxwcmludC5jCiAr KysgYi9nZGIvZi12YWxwcmludC5jCiBAQCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdfYXJyYXlf b2Zmc2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CkBAIC0zMzk5LDQzICsyMjM3LDQx IEBAIGluZGV4IDg3YjJlZDEuLjVkMjYzZjIgMTAwNjQ0CiAgCSAgICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIuLi4iKTsKICAJfQogICAgICB9Ci1AQCAtMjYwLDYgKzI2OCw5IEBAIGZfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBl bWJlZGRlZF9vZmZzZXQsCitAQCAtMjcwLDYgKzI3OCw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQs CiAgICBDT1JFX0FERFIgYWRkcjsKICAgIGludCBpbmRleDsKICAKICsgIGlmIChmX29iamVjdF9h ZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtICh0eXBlLCBzdHJlYW0pICE9IE5VTEwp Ci0rICAgIHJldHVybiAwOworKyAgICByZXR1cm47CiArCiAgICBDSEVDS19UWVBFREVGICh0eXBl KTsKICAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKICAgICAgewogZGlmZiAtLWdpdCBhL2dk Yi9maW5kdmFyLmMgYi9nZGIvZmluZHZhci5jCi1pbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0 NAoraW5kZXggZWQ3OTAzYy4uZTQxMmEzZCAxMDA2NDQKIC0tLSBhL2dkYi9maW5kdmFyLmMKICsr KyBiL2dkYi9maW5kdmFyLmMKLUBAIC0zNCw2ICszNCw3IEBACi0gI2luY2x1ZGUgInVzZXItcmVn cy5oIgorQEAgLTM1LDYgKzM1LDcgQEAKICAjaW5jbHVkZSAiYmxvY2suaCIKICAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICsjaW5jbHVkZSAiZHdhcmYybG9j LmgiCiAgCiAgLyogQmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcg ZnVuY3Rpb25zIHJldHVybiBhCiAgICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0 LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMKLUBAIC00MDcsOCArNDA4LDExIEBAIHN5 bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0gCi0gLyogR2l2ZW4g YSBzdHJ1Y3Qgc3ltYm9sIGZvciBhIHZhcmlhYmxlLAotICAgIGFuZCBhIHN0YWNrIGZyYW1lIGlk LCByZWFkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKLS0gICBhbmQgcmV0dXJuIGEgKHBvaW50 ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLgotLSAgIElmIHRoZSB2 YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHRocm93IGVycm9yLiAgKi8KLSsgICBhbmQgcmV0dXJu IGEgKHBvaW50ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKLSsg ICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCB0aHJvdyBlcnJvci4KK0BAIC00MDcs NyArNDA4LDEwIEBAIHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0p CisgfQorIAorIC8qIEEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJsYV9yZWFkX3Zh cl92YWx1ZSIgaG9vayBpbgorLSAgIHRoZSBsYW5ndWFnZSB2ZWN0b3Igd2hpY2ggc2hvdWxkIHdv cmsgaW4gbW9zdCBzaXR1YXRpb25zLiAgKi8KKysgICB0aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNo IHNob3VsZCB3b3JrIGluIG1vc3Qgc2l0dWF0aW9ucy4KICsgICBXZSBoYXZlIHRvIGZpcnN0IGZp bmQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIGJlZm9yZSBhbGxvY2F0aW5nIHN0cnVjdAog KyAgIHZhbHVlIHRvIHJldHVybiBhcyBpdHMgc2l6ZSBtYXkgZGVwZW5kIG9uIERXX09QX1BVU0hf T0JKRUNUX0FERFJFU1MgcG9zc2libHkgCiArICAgdXNlZCBieSBpdHMgdHlwZS4gICovCiAgCiAg c3RydWN0IHZhbHVlICoKLSByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi1AQCAtNDE2LDE2ICs0MjAsNiBAQCByZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgZGVmYXVs dF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCitAQCAtNDE1LDE2ICs0MTksNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCB2YWx1 ZSAqdjsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JF X0FERFIgYWRkcjsKQEAgLTM0NTIsNyArMjI4OCw3IEBAIGluZGV4IDc5YzQyMjEuLjFiYjdjMjIg MTAwNjQ0CiAgCiAgICBpZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCiAgICAgIGdk Yl9hc3NlcnQgKGZyYW1lKTsKLUBAIC00MzUsNyArNDI5LDcgQEAgcmVhZF92YXJfdmFsdWUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTQzNCw3ICs0 MjgsNyBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgY2FzZSBMT0NfQ09OU1Q6CiAgICAgICAgLyogUHV0 IHRoZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwogICAgICAgIHYgPSBhbGxv Y2F0ZV92YWx1ZSAodHlwZSk7CkBAIC0zNDYxLDcgKzIyOTcsNyBAQCBpbmRleCA3OWM0MjIxLi4x YmI3YzIyIDEwMDY0NAogIAkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2gg KHR5cGUpKSwKICAJCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CiAgICAgICAg VkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLUBAIC00NjAsMTIgKzQ1NCwxMiBAQCByZWFkX3Zh cl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitA QCAtNDU5LDEyICs0NTMsMTIgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJv bCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCiAgICAgIGNhc2UgTE9DX0NPTlNU X0JZVEVTOgogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CkBAIC0zNDc2LDcgKzIz MTIsNyBAQCBpbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgICAgIGlmIChvdmVybGF5 X2RlYnVnZ2luZykKICAJYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcyAoU1lNQk9MX1ZB TFVFX0FERFJFU1MgKHZhciksCiAgCQkJCQkgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKLUBA IC00NzksNyArNDczLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTQ3OCw3ICs0NzIsNiBAQCBkZWZhdWx0X3JlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK ICAJZXJyb3IgKF8oIlVua25vd24gYXJndW1lbnQgbGlzdCBhZGRyZXNzIGZvciBgJXMnLiIpLAog IAkgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogICAgICAgIGFkZHIgKz0gU1lNQk9M X1ZBTFVFICh2YXIpOwpAQCAtMzQ4NCw3ICsyMzIwLDcgQEAgaW5kZXggNzljNDIyMS4uMWJiN2My MiAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfUkVGX0FSRzoKLUBAIC00 OTQsMTQgKzQ4NywxMiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDkzLDE0ICs0ODYsMTIgQEAgZGVmYXVsdF9yZWFk X3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUp CiAgCWFyZ3JlZiArPSBTWU1CT0xfVkFMVUUgKHZhcik7CiAgCXJlZiA9IHZhbHVlX2F0IChsb29r dXBfcG9pbnRlcl90eXBlICh0eXBlKSwgYXJncmVmKTsKICAJYWRkciA9IHZhbHVlX2FzX2FkZHJl c3MgKHJlZik7CkBAIC0zNDk5LDcgKzIzMzUsNyBAQCBpbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEw MDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIExPQ19UWVBFREVGOgotQEAgLTUxMCw3 ICs1MDEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCitAQCAtNTA5LDcgKzUwMCw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFs dWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAg IGJyZWFrOwogIAogICAgICBjYXNlIExPQ19CTE9DSzoKQEAgLTM1MDcsNyArMjM0Myw3IEBAIGlu ZGV4IDc5YzQyMjEuLjFiYjdjMjIgMTAwNjQ0CiAgICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5n KQogIAlhZGRyID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCiAgCSAgKEJMT0NLX1NUQVJUIChT WU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotQEAg LTUzNiw3ICs1MjYsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNTM1LDcgKzUyNSw2IEBAIGRlZmF1bHRfcmVhZF92 YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQog IAkgICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogIAogIAkgICAgYWRkciA9 IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7CkBAIC0zNTE1LDcgKzIzNTEsNyBAQCBpbmRleCA3 OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogIAkgIH0KICAJZWxzZQogIAkgIHsKLUBAIC01NzYsNyAr NTY1LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQorQEAgLTU4Myw3ICs1NzIsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVl IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJaWYgKG9i al9zZWN0aW9uCiAgCSAgICAmJiAob2JqX3NlY3Rpb24tPnRoZV9iZmRfc2VjdGlvbi0+ZmxhZ3Mg JiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQogIAkgIGFkZHIgPSB0YXJnZXRfdHJhbnNsYXRlX3Rs c19hZGRyZXNzIChvYmpfc2VjdGlvbi0+b2JqZmlsZSwgYWRkcik7CkBAIC0zNTIzLDcgKzIzNTks NyBAQCBpbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgICAgIH0KICAgICAgICBicmVh azsKICAKLUBAIC01ODksNiArNTc3LDEwIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9s ICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01OTYsNiArNTg0LDEwIEBAIGRl ZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBAIC0zNTM0LDcgKzIzNzAsNyBA QCBpbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgVkFMVUVfTFZBTCAodikgPSBsdmFs X21lbW9yeTsKICAgIHNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKICAgIHJldHVybiB2Owot QEAgLTY3MSwxMCArNjYzLDExIEBAIHN0cnVjdCB2YWx1ZSAqCitAQCAtNjkxLDEwICs2ODMsMTEg QEAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIHsKICAgIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKQEAgLTM1NDgsNyArMjM4 NCw3IEBAIGluZGV4IDc5YzQyMjEuLjFiYjdjMjIgMTAwNjQ0CiAgICAgIHsKICAgICAgICBpbnQg b3B0aW0sIHVuYXZhaWwsIG9rOwogIAotQEAgLTY4OSw3ICs2ODIsNyBAQCB2YWx1ZV9mcm9tX3Jl Z2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKQorQEAgLTcwOSw3ICs3MDIsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAg IFZBTFVFX0xWQUwgKHYpID0gbHZhbF9yZWdpc3RlcjsKICAgICAgICBWQUxVRV9GUkFNRV9JRCAo dikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKICAgICAgICBWQUxVRV9SRUdOVU0gKHYpID0gcmVn bnVtOwpAQCAtMzU1Nyw1NTMgKzIzOTMsMTIgQEAgaW5kZXggNzljNDIyMS4uMWJiN2MyMiAxMDA2 NDQKICAJCQkJICAgICAgdmFsdWVfY29udGVudHNfcmF3ICh2KSwgJm9wdGltLAogIAkJCQkgICAg ICAmdW5hdmFpbCk7CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2guYyBiL2dkYi9nZGJhcmNo LmMKLWluZGV4IDFiZDIzNDEuLjQzMWRkY2MgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RiYXJjaC5jCi0r KysgYi9nZGIvZ2RiYXJjaC5jCi1AQCAtMjY1LDYgKzI2NSwxNiBAQCBzdHJ1Y3QgZ2RiYXJjaAot ICAgZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlX2Z0eXBlICpnZXRfc2lnaW5mb190eXBlOwotICAg Z2RiYXJjaF9yZWNvcmRfc3BlY2lhbF9zeW1ib2xfZnR5cGUgKnJlY29yZF9zcGVjaWFsX3N5bWJv bDsKLSAgIGdkYmFyY2hfZ2V0X3N5c2NhbGxfbnVtYmVyX2Z0eXBlICpnZXRfc3lzY2FsbF9udW1i ZXI7Ci0rICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIg KiBzdGFwX2ludGVnZXJfc3VmaXg7Ci0rICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9wcmVm aXg7Ci0rICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeDsKLSsgIGNvbnN0IGNoYXIg KiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIgKiBzdGFw X3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4OwotKyAgY29uc3QgY2hhciAqIHN0YXBfZ2RiX3Jl Z2lzdGVyX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeDsK LSsgIGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZF9mdHlwZSAqc3RhcF9pc19zaW5nbGVf b3BlcmFuZDsKLSsgIGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0eXBlICpzdGFw X3BhcnNlX3NwZWNpYWxfdG9rZW47Ci0gICBpbnQgaGFzX2dsb2JhbF9zb2xpc3Q7Ci0gICBpbnQg aGFzX2dsb2JhbF9icmVha3BvaW50czsKLSAgIGdkYmFyY2hfaGFzX3NoYXJlZF9hZGRyZXNzX3Nw YWNlX2Z0eXBlICpoYXNfc2hhcmVkX2FkZHJlc3Nfc3BhY2U7Ci1AQCAtNDIzLDYgKzQzMywxNiBA QCBzdHJ1Y3QgZ2RiYXJjaCBzdGFydHVwX2dkYmFyY2ggPQotICAgMCwgIC8qIGdldF9zaWdpbmZv X3R5cGUgKi8KLSAgIDAsICAvKiByZWNvcmRfc3BlY2lhbF9zeW1ib2wgKi8KLSAgIDAsICAvKiBn ZXRfc3lzY2FsbF9udW1iZXIgKi8KLSsgIDAsICAvKiBzdGFwX2ludGVnZXJfcHJlZml4ICovCi0r ICAwLCAgLyogc3RhcF9pbnRlZ2VyX3N1Zml4ICovCi0rICAwLCAgLyogc3RhcF9yZWdpc3Rlcl9w cmVmaXggKi8KLSsgIDAsICAvKiBzdGFwX3JlZ2lzdGVyX3N1Zml4ICovCi0rICAwLCAgLyogc3Rh cF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKi8KLSsgIDAsICAvKiBzdGFwX3JlZ2lzdGVy X2luZGlyZWN0aW9uX3N1Zml4ICovCi0rICAwLCAgLyogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4 ICovCi0rICAwLCAgLyogc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggKi8KLSsgIDAsICAvKiBzdGFw X2lzX3NpbmdsZV9vcGVyYW5kICovCi0rICAwLCAgLyogc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2Vu ICovCi0gICAwLCAgLyogaGFzX2dsb2JhbF9zb2xpc3QgKi8KLSAgIDAsICAvKiBoYXNfZ2xvYmFs X2JyZWFrcG9pbnRzICovCi0gICBkZWZhdWx0X2hhc19zaGFyZWRfYWRkcmVzc19zcGFjZSwgIC8q IGhhc19zaGFyZWRfYWRkcmVzc19zcGFjZSAqLwotQEAgLTcxNSw2ICs3MzUsMTYgQEAgdmVyaWZ5 X2dkYmFyY2ggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgLyogU2tpcCB2ZXJpZnkgb2Yg Z2V0X3NpZ2luZm9fdHlwZSwgaGFzIHByZWRpY2F0ZS4gICovCi0gICAvKiBTa2lwIHZlcmlmeSBv ZiByZWNvcmRfc3BlY2lhbF9zeW1ib2wsIGhhcyBwcmVkaWNhdGUuICAqLwotICAgLyogU2tpcCB2 ZXJpZnkgb2YgZ2V0X3N5c2NhbGxfbnVtYmVyLCBoYXMgcHJlZGljYXRlLiAgKi8KLSsgIC8qIFNr aXAgdmVyaWZ5IG9mIHN0YXBfaW50ZWdlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAv KiBTa2lwIHZlcmlmeSBvZiBzdGFwX2ludGVnZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCi0r ICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAg Ki8KLSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9 PSAwICovCi0rICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3By ZWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0 ZXJfaW5kaXJlY3Rpb25fc3VmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAvKiBTa2lwIHZlcmlm eSBvZiBzdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAvKiBT a2lwIHZlcmlmeSBvZiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCwgaW52YWxpZF9wID09IDAgKi8K LSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfaXNfc2luZ2xlX29wZXJhbmQsIGhhcyBwcmVkaWNh dGUuICAqLwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuLCBo YXMgcHJlZGljYXRlLiAgKi8KLSAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19nbG9iYWxfc29saXN0 LCBpbnZhbGlkX3AgPT0gMCAqLwotICAgLyogU2tpcCB2ZXJpZnkgb2YgaGFzX2dsb2JhbF9icmVh a3BvaW50cywgaW52YWxpZF9wID09IDAgKi8KLSAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19zaGFy ZWRfYWRkcmVzc19zcGFjZSwgaW52YWxpZF9wID09IDAgKi8KLUBAIC0xMjY3LDYgKzEyOTcsNDIg QEAgZ2RiYXJjaF9kdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHVpX2ZpbGUg KmZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YWJzX2FyZ3Vt ZW50X2hhc19hZGRyID0gPCVzPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRy ZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+c3RhYnNfYXJndW1lbnRfaGFzX2FkZHIpKTsKLSAgIGZw cmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hf ZHVtcDogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAg ICAgICAgIGdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCk7Ci0rICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0 YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIGdk YmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4KTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAo ZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2Vy X3ByZWZpeCA9ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX2lu dGVnZXJfcHJlZml4KTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAg ICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2VyX3N1Zml4ID0gJXNcbiIsCi0r ICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCk7Ci0rICBm cHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNo X2R1bXA6IGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZF9wKCkgPSAlZFxuIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKGdkYmFy Y2gpKTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgImdkYmFyY2hfZHVtcDogc3RhcF9pc19zaW5nbGVfb3BlcmFuZCA9IDwlcz5cbiIsCi0rICAg ICAgICAgICAgICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnN0YXBf aXNfc2luZ2xlX29wZXJhbmQpKTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNp YWxfdG9rZW5fcCgpID0gJWRcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc3Rh cF9wYXJzZV9zcGVjaWFsX3Rva2VuX3AgKGdkYmFyY2gpKTsKLSsgIGZwcmludGZfdW5maWx0ZXJl ZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9wYXJz ZV9zcGVjaWFsX3Rva2VuID0gPCVzPlxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgaG9zdF9h ZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKSk7Ci0r ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZGJh cmNoX2R1bXA6IHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4ID0gJXNcbiIsCi0rICAg ICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJl Zml4KTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgImdkYmFyY2hfZHVtcDogc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCA9ICVzXG4i LAotKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0 aW9uX3N1Zml4KTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9yZWdpc3Rlcl9wcmVmaXggPSAlc1xuIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9wcmVmaXgpOwotKyAg ZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJj aF9kdW1wOiBzdGFwX3JlZ2lzdGVyX3N1Zml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAgICAg ICAgIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfc3VmaXgpOwotKyAgZnByaW50Zl91bmZpbHRlcmVk IChmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX3N0 YXRpY190cmFuc2Zvcm1fbmFtZV9wKCkgPSAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg Z2RiYXJjaF9zdGF0aWNfdHJhbnNmb3JtX25hbWVfcCAoZ2RiYXJjaCkpOwotICAgZnByaW50Zl91 bmZpbHRlcmVkIChmaWxlLAotQEAgLTM4MzQsNiArMzkwMCwxOTAgQEAgc2V0X2dkYmFyY2hfZ2V0 X3N5c2NhbGxfbnVtYmVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgIGdkYmFyY2gtPmdl dF9zeXNjYWxsX251bWJlciA9IGdldF9zeXNjYWxsX251bWJlcjsKLSB9Ci0gCi0rY29uc3QgY2hh ciAqCi0rZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOwotKyAgLyogU2tpcCB2ZXJp Znkgb2Ygc3RhcF9pbnRlZ2VyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIGlmIChnZGJh cmNoX2RlYnVnID49IDIpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdk YmFyY2hfc3RhcF9pbnRlZ2VyX3ByZWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gt PnN0YXBfaW50ZWdlcl9wcmVmaXg7Ci0rfQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX2lu dGVnZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3ByZWZpeCkKLSt7Ci0r ICBnZGJhcmNoLT5zdGFwX2ludGVnZXJfcHJlZml4ID0gc3RhcF9pbnRlZ2VyX3ByZWZpeDsKLSt9 Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX2ludGVnZXJfc3VmaXggKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7Ci0r ICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2ludGVnZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICov Ci0rICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csICJnZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0 dXJuIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeDsKLSt9Ci0rCi0rdm9pZAotK3NldF9nZGJh cmNoX3N0YXBfaW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3N1Zml4 KQotK3sKLSsgIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCA9IHN0YXBfaW50ZWdlcl9zdWZp eDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBO VUxMKTsKLSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfcHJlZml4LCBpbnZhbGlk X3AgPT0gMCAqLwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCBjYWxsZWRc biIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfcHJlZml4OwotK30KLSsKLSt2 b2lkCi0rc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICog c3RhcF9yZWdpc3Rlcl9wcmVmaXgpCi0rewotKyAgZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9wcmVm aXggPSBzdGFwX3JlZ2lzdGVyX3ByZWZpeDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJj aF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSt7Ci0rICBn ZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9y ZWdpc3Rlcl9zdWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIGlmIChnZGJhcmNoX2RlYnVnID49 IDIpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9y ZWdpc3Rlcl9zdWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0 ZXJfc3VmaXg7Ci0rfQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeCkKLSt7Ci0rICBnZGJhcmNoLT5z dGFwX3JlZ2lzdGVyX3N1Zml4ID0gc3RhcF9yZWdpc3Rlcl9zdWZpeDsKLSt9Ci0rCi0rY29uc3Qg Y2hhciAqCi0rZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsK LSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4LCBp bnZhbGlkX3AgPT0gMCAqLwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0 aW9uX3ByZWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJf aW5kaXJlY3Rpb25fcHJlZml4OwotK30KLSsKLSt2b2lkCi0rc2V0X2dkYmFyY2hfc3RhcF9yZWdp c3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3Rh cF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXgpCi0rewotKyAgZ2RiYXJjaC0+c3RhcF9yZWdp c3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggPSBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZp eDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0 aW9uX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChn ZGJhcmNoICE9IE5VTEwpOwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9yZWdpc3Rlcl9pbmRp cmVjdGlvbl9zdWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIGlmIChnZGJhcmNoX2RlYnVnID49 IDIpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9y ZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gt PnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXg7Ci0rfQotKwotK3ZvaWQKLStzZXRfZ2Ri YXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICogc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCkKLSt7Ci0rICBnZGJhcmNo LT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4ID0gc3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9zdWZpeDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX2dkYl9yZWdp c3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotK3sKLSsgIGdkYl9hc3NlcnQg KGdkYmFyY2ggIT0gTlVMTCk7Ci0rICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2dkYl9yZWdpc3Rl cl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQot KyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX3N0YXBfZ2RiX3Jl Z2lzdGVyX3ByZWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfZ2RiX3Jl Z2lzdGVyX3ByZWZpeDsKLSt9Ci0rCi0rdm9pZAotK3NldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lz dGVyX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4 KQotK3sKLSsgIGdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCA9IHN0YXBfZ2RiX3Jl Z2lzdGVyX3ByZWZpeDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX2dkYl9y ZWdpc3Rlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fzc2Vy dCAoZ2RiYXJjaCAhPSBOVUxMKTsKLSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfZ2RiX3JlZ2lz dGVyX3N1Zml4LCBpbnZhbGlkX3AgPT0gMCAqLwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikK LSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX2dkYl9y ZWdpc3Rlcl9zdWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfZ2RiX3Jl Z2lzdGVyX3N1Zml4OwotK30KLSsKLSt2b2lkCi0rc2V0X2dkYmFyY2hfc3RhcF9nZGJfcmVnaXN0 ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXgpCi0r ewotKyAgZ2RiYXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggPSBzdGFwX2dkYl9yZWdpc3Rl cl9zdWZpeDsKLSt9Ci0rCi0raW50Ci0rZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3Ag KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0g TlVMTCk7Ci0rICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9pc19zaW5nbGVfb3BlcmFuZCAhPSBOVUxM OwotK30KLSsKLStpbnQKLStnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICpzKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFy Y2ggIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5zdGFwX2lzX3NpbmdsZV9vcGVy YW5kICE9IE5VTEwpOwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIGNh bGxlZFxuIik7Ci0rICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoZ2Ri YXJjaCwgcyk7Ci0rfQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVy YW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmRfZnR5cGUgc3RhcF9pc19z aW5nbGVfb3BlcmFuZCkKLSt7Ci0rICBnZGJhcmNoLT5zdGFwX2lzX3NpbmdsZV9vcGVyYW5kID0g c3RhcF9pc19zaW5nbGVfb3BlcmFuZDsKLSt9Ci0rCi0raW50Ci0rZ2RiYXJjaF9zdGFwX3BhcnNl X3NwZWNpYWxfdG9rZW5fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKLSsgIHJldHVybiBnZGJhcmNoLT5zdGFwX3BhcnNlX3Nw ZWNpYWxfdG9rZW4gIT0gTlVMTDsKLSt9Ci0rCi0raW50Ci0rZ2RiYXJjaF9zdGFwX3BhcnNlX3Nw ZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qgc3RhcF9wYXJzZV9p bmZvICpwKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7Ci0rICBnZGJfYXNz ZXJ0IChnZGJhcmNoLT5zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gIT0gTlVMTCk7Ci0rICBpZiAo Z2RiYXJjaF9kZWJ1ZyA+PSAyKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs ICJnZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiBjYWxsZWRcbiIpOwotKyAgcmV0dXJu IGdkYmFyY2gtPnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwgcCk7Ci0rfQotKwot K3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Ri YXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW5fZnR5cGUgc3RhcF9wYXJzZV9zcGVjaWFsX3Rv a2VuKQotK3sKLSsgIGdkYmFyY2gtPnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiA9IHN0YXBfcGFy c2Vfc3BlY2lhbF90b2tlbjsKLSt9Ci0rCi0gaW50Ci0gZ2RiYXJjaF9oYXNfZ2xvYmFsX3NvbGlz dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewotZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNo LmggYi9nZGIvZ2RiYXJjaC5oCi1pbmRleCAwNDQyODFjLi4yOTRhNjNmIDEwMDY0NAotLS0tIGEv Z2RiL2dkYmFyY2guaAotKysrIGIvZ2RiL2dkYmFyY2guaAotQEAgLTU1LDYgKzU1LDcgQEAgc3Ry dWN0IGNvcmVfcmVnc2V0X3NlY3Rpb247Ci0gc3RydWN0IHN5c2NhbGw7Ci0gc3RydWN0IGFnZW50 X2V4cHI7Ci0gc3RydWN0IGF4c192YWx1ZTsKLStzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvOwotIAot IC8qIFRoZSBhcmNoaXRlY3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25uZWN0aW9uIHRvIHRo ZSB0YXJnZXQuCi0gIAotQEAgLTk3OSw2ICs5ODAsMTI1IEBAIHR5cGVkZWYgTE9OR0VTVCAoZ2Ri YXJjaF9nZXRfc3lzY2FsbF9udW1iZXJfZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg cHRpCi0gZXh0ZXJuIExPTkdFU1QgZ2RiYXJjaF9nZXRfc3lzY2FsbF9udW1iZXIgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBwdGlkX3QgcHRpZCk7Ci0gZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hf Z2V0X3N5c2NhbGxfbnVtYmVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9nZXRf c3lzY2FsbF9udW1iZXJfZnR5cGUgKmdldF9zeXNjYWxsX251bWJlcik7Ci0gCi0rLyogU3lzdGVt VGFwIHJlbGF0ZWQgZmllbGRzIGFuZCBmdW5jdGlvbnMuCi0rICAgUHJlZml4IHVzZWQgdG8gbWFy ayBhbiBpbnRlZ2VyIGNvbnN0YW50IG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseQotKyAg IEZvciBleGFtcGxlLCBvbiB4ODYgaW50ZWdlciBjb25zdGFudHMgYXJlIHdyaXR0ZW4gYXM6Ci0r ICAKLSsgICAgJDEwIDs7IGludGVnZXIgY29uc3RhbnQgMTAKLSsgIAotKyAgIGluIHRoaXMgY2Fz ZSwgdGhpcyBwcmVmaXggd291bGQgYmUgdGhlIGNoYXJhY3RlciBgJCcuICovCi0rCi0rZXh0ZXJu IGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoKTsKLStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfaW50ZWdlcl9wcmVm aXgpOwotKwotKy8qIFN1Zml4IHVzZWQgdG8gbWFyayBhbiBpbnRlZ2VyIGNvbnN0YW50IG9uIHRo ZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4gKi8KLSsKLStleHRlcm4gY29uc3QgY2hhciAqIGdk YmFyY2hfc3RhcF9pbnRlZ2VyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0rZXh0 ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9pbnRlZ2VyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfaW50ZWdlcl9zdWZpeCk7Ci0rCi0rLyogUHJlZml4 IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIG5hbWUgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2Vt Ymx5LgotKyAgIEZvciBleGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIG5hbWUgaXMgd3JpdHRl biBhczoKLSsgIAotKyAgICAlZWF4IDs7IHJlZ2lzdGVyIGVheAotKyAgCi0rICAgaW4gdGhpcyBj YXNlLCB0aGlzIHByZWZpeCB3b3VsZCBiZSB0aGUgY2hhcmFjdGVyIGAlJy4gKi8KLSsKLStleHRl cm4gY29uc3QgY2hhciAqIGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKTsKLStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3By ZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVy X3ByZWZpeCk7Ci0rCi0rLyogU3VmaXggdXNlZCB0byBtYXJrIGEgcmVnaXN0ZXIgbmFtZSBvbiB0 aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkgKi8KLSsKLStleHRlcm4gY29uc3QgY2hhciAqIGdk YmFyY2hfc3RhcF9yZWdpc3Rlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwotK2V4 dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeCk7Ci0rCi0rLyogUHJl Zml4IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIGluZGlyZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1 cmUncyBhc3NlbWJseS4KLSsgICBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBpbmRp cmVjdGlvbiBpcyB3cml0dGVuIGFzOgotKyAgCi0rICAgICglZWF4KSA7OyBpbmRpcmVjdGluZyBl YXgKLSsgIAotKyAgIGluIHRoaXMgY2FzZSwgdGhpcyBwcmVmaXggd291bGQgYmUgdGhlIGNoYXJh dGVyIGAoJy4KLSsgIAotKyAgIFBsZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRpcmVjdGlv biBwcmVmaXggYWxzbyBmb3IgcmVnaXN0ZXIKLSsgICBkaXNwbGFjZW1lbnQsIGUuZy4sIGA0KCVl YXgpJyBvbiB4ODYuICovCi0rCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVn aXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0rZXh0 ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9wcmVmaXgpOwotKwotKy8qIFN1Zml4IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIGluZGly ZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4KLSsgICBGb3IgZXhhbXBsZSwg b24geDg2IHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBpcyB3cml0dGVuIGFzOgotKyAgCi0rICAg ICglZWF4KSA7OyBpbmRpcmVjdGluZyBlYXgKLSsgIAotKyAgIGluIHRoaXMgY2FzZSwgdGhpcyBw cmVmaXggd291bGQgYmUgdGhlIGNoYXJhdGVyIGApJy4KLSsgIAotKyAgIFBsZWFzZSBub3RlIHRo YXQgd2UgdXNlIHRoZSBpbmRpcmVjdGlvbiBzdWZpeCBhbHNvIGZvciByZWdpc3RlcgotKyAgIGRp c3BsYWNlbWVudCwgZS5nLiwgYDQoJWVheCknIG9uIHg4Ni4gKi8KLSsKLStleHRlcm4gY29uc3Qg Y2hhciAqIGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpOwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJf aW5kaXJlY3Rpb25fc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICog c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCk7Ci0rCi0rLyogUHJlZml4IHVzZWQgdG8g bmFtZSBhIHJlZ2lzdGVyIHVzaW5nIEdEQidzIG5vbWVuY2xhdHVyZS4KLSsgIAotKyAgIEZvciBl eGFtcGxlLCBvbiBQUEMgYSByZWdpc3RlciBpcyByZXByZXNlbnRlZCBieSBhIG51bWJlciBpbiB0 aGUgYXNzZW1ibHkKLSsgICBsYW5ndWFnZSAoZS5nLiwgYDEwJyBpcyB0aGUgMTB0aCBnZW5lcmFs LXB1cnBvc2UgcmVnaXN0ZXIpLiAgSG93ZXZlciwKLSsgICBpbnNpZGUgR0RCIHRoaXMgc2FtZSBy ZWdpc3RlciBoYXMgYW4gYHInIGFwcGVuZGVkIHRvIGl0cyBuYW1lLCBzbyB0aGUgMTB0aAotKyAg IHJlZ2lzdGVyIHdvdWxkIGJlIHJlcHJlc2VudGVkIGFzIGByMTAnIGludGVybmFsbHkuICovCi0r Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBf Z2RiX3JlZ2lzdGVyX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIg KiBzdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXgpOwotKwotKy8qIFN1Zml4IHVzZWQgdG8gbmFtZSBh IHJlZ2lzdGVyIHVzaW5nIEdEQidzIG5vbWVuY2xhdHVyZS4gKi8KLSsKLStleHRlcm4gY29uc3Qg Y2hhciAqIGdkYmFyY2hfc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKTsKLStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9zdWZp eCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rl cl9zdWZpeCk7Ci0rCi0rLyogQ2hlY2sgaWYgUyBpcyBhIHNpbmdsZSBvcGVyYW5kLgotKyAgCi0r ICAgU2luZ2xlIG9wZXJhbmRzIGNhbiBiZToKLSsgICAgLSBMaXRlcmFsIGludGVnZXJzLCBlLmcu IGAkMTAnIG9uIHg4NgotKyAgICAtIFJlZ2lzdGVyIGFjY2VzcywgZS5nLiBgJWVheCcgb24geDg2 Ci0rICAgIC0gUmVnaXN0ZXIgaW5kaXJlY3Rpb24sIGUuZy4gYCglZWF4KScgb24geDg2Ci0rICAg IC0gUmVnaXN0ZXIgZGlzcGxhY2VtZW50LCBlLmcuIGA0KCVlYXgpJyBvbiB4ODYKLSsgIAotKyAg IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGNoZWNrIGZvciB0aGVzZSBwYXR0ZXJucyBvbiB0aGUgc3Ry aW5nCi0rICAgYW5kIHJldHVybiAxIGlmIHNvbWUgd2VyZSBmb3VuZCwgb3IgemVybyBvdGhlcndp c2UuICBQbGVhc2UgdHJ5IHRvIG1hdGNoCi0rICAgYXMgbXVjaCBpbmZvIGFzIHlvdSBjYW4gZnJv bSB0aGUgc3RyaW5nLCBpLmUuLCBpZiB5b3UgaGF2ZSB0byBtYXRjaAotKyAgIHNvbWV0aGluZyBs aWtlIGAoJScsIGRvIG5vdCBtYXRjaCBqdXN0IHRoZSBgKCcuICovCi0rCi0rZXh0ZXJuIGludCBn ZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp OwotKwotK3R5cGVkZWYgaW50IChnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmRfZnR5cGUp IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqcyk7Ci0rZXh0ZXJuIGludCBn ZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBj b25zdCBjaGFyICpzKTsKLStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9v cGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9v cGVyYW5kX2Z0eXBlICpzdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKLSsKLSsvKiBGdW5jdGlvbiB1 c2VkIHRvIGhhbmRsZSBhICJzcGVjaWFsIGNhc2UiIGluIHRoZSBwYXJzZXIuCi0rICAKLSsgICBB ICJzcGVjaWFsIGNhc2UiIGlzIGNvbnNpZGVyZWQgdG8gYmUgYW4gdW5rbm93biB0b2tlbiwgaS5l LiwgYSB0b2tlbgotKyAgIHRoYXQgdGhlIHBhcnNlciBkb2VzIG5vdCBrbm93IGhvdyB0byBwYXJz ZS4gIEEgZ29vZCBleGFtcGxlIG9mIHNwZWNpYWwKLSsgICBjYXNlIHdvdWxkIGJlIEFSTSdzIHJl Z2lzdGVyIGRpc3BsYWNlbWVudCBzeW50YXg6Ci0rICAKLSsgICAgW1IwLCAjNF0gIDs7IGRpc3Bs YWNpbmcgUjAgYnkgNAotKyAgCi0rICAgU2luY2UgdGhlIHBhcnNlciBhc3N1bWVzIHRoYXQgYSBy ZWdpc3RlciBkaXNwbGFjZW1lbnQgaXMgb2YgdGhlIGZvcm06Ci0rICAKLSsgICAgPG51bWJlcj4g PGluZGlyZWN0aW9uX3ByZWZpeD4gPHJlZ2lzdGVyX25hbWU+IDxpbmRpcmVjdGlvbl9zdWZpeD4K LSsgIAotKyAgIGl0IG1lYW5zIHRoYXQgaXQgd2lsbCBub3QgYmUgYWJsZSB0byByZWNvZ25pemUg YW5kIHBhcnNlIHRoaXMgb2RkIHN5bnRheC4KLSsgICBUaGVyZWZvcmUsIHdlIHNob3VsZCBhZGQg YSBzcGVjaWFsIGNhc2UgZnVuY3Rpb24gdGhhdCB3aWxsIGhhbmRsZSB0aGlzIHRva2VuLgotKyAg Ci0rICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgZ2VuZXJhdGUgdGhlIHByb3BlciBleHByZXNzaW9u IGZvcm0gb2YgdGhlIGV4cHJlc3Npb24KLSsgICB1c2luZyBHREIncyBpbnRlcm5hbCBleHByZXNz aW9uIG1lY2hhbmlzbSAoZS5nLiwgYHdyaXRlX2V4cF9lbHRfb3Bjb2RlJwotKyAgIGFuZCBzbyBv bikuICBJdCBzaG91bGQgYWxzbyByZXR1cm4gMSBpZiB0aGUgcGFyc2luZyB3YXMgc3VjY2Vzc2Z1 bCwgb3IgemVybwotKyAgIGlmIHRoZSB0b2tlbiB3YXMgbm90IHJlY29nbml6ZWQgYXMgYSBzcGVj aWFsIHRva2VuIChpbiB0aGlzIGNhc2UsIHJldHVybmluZwotKyAgIHplcm8gbWVhbnMgdGhhdCB0 aGUgc3BlY2lhbCBwYXJzZXIgaXMgZGVmZXJyaW5nIHRoZSBwYXJzaW5nIHRvIHRoZSBnZW5lcmlj Ci0rICAgcGFyc2VyKSwgYW5kIHNob3VsZCBhZHZhbmNlIHRoZSBidWZmZXIgcG9pbnRlciAocC0+ YXJnKS4gKi8KLSsKLStleHRlcm4gaW50IGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2Vu X3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLSsKLSt0eXBlZGVmIGludCAoZ2RiYXJjaF9z dGFwX3BhcnNlX3NwZWNpYWxfdG9rZW5fZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCk7Ci0rZXh0ZXJuIGludCBnZGJhcmNoX3N0YXBfcGFy c2Vfc3BlY2lhbF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBzdGFwX3Bh cnNlX2luZm8gKnApOwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lh bF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVj aWFsX3Rva2VuX2Z0eXBlICpzdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4pOwotKwotIC8qIFRydWUg aWYgdGhlIGxpc3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyBpcyBvbmUgYW5kIG9ubHkgZm9yIGFsbAot ICAgIHByb2Nlc3NlcywgYXMgb3Bwb3NlZCB0byBhIGxpc3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyBw ZXIgaW5mZXJpb3IuCi0gICAgVGhpcyB1c3VhbGx5IG1lYW5zIHRoYXQgYWxsIHByb2Nlc3Nlcywg YWx0aG91Z2ggbWF5IG9yIG1heSBub3Qgc2hhcmUKLWRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC5z aCBiL2dkYi9nZGJhcmNoLnNoCi1pbmRleCAzNzI4MWJhLi44NzlmYWI3IDEwMDc1NQotLS0tIGEv Z2RiL2dkYmFyY2guc2gKLSsrKyBiL2dkYi9nZGJhcmNoLnNoCi1AQCAtNzkyLDYgKzc5MiwxMDEg QEAgTTp2b2lkOnJlY29yZF9zcGVjaWFsX3N5bWJvbDpzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg YXN5bWJvbCAqc3ltOm9iamZpbGUsIHN5bQotICMgR2V0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBz eXN0ZW0gY2FsbHMgaW5mb3JtYXRpb24gZnJvbSByZWdpc3RlcnMuCi0gTTpMT05HRVNUOmdldF9z eXNjYWxsX251bWJlcjpwdGlkX3QgcHRpZDpwdGlkCi0gCi0rIyBTeXN0ZW1UYXAgcmVsYXRlZCBm aWVsZHMgYW5kIGZ1bmN0aW9ucy4KLSsKLSsjIFByZWZpeCB1c2VkIHRvIG1hcmsgYW4gaW50ZWdl ciBjb25zdGFudCBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkKLSsjIEZvciBleGFtcGxl LCBvbiB4ODYgaW50ZWdlciBjb25zdGFudHMgYXJlIHdyaXR0ZW4gYXM6Ci0rIwotKyMgIFwkMTAg OzsgaW50ZWdlciBjb25zdGFudCAxMAotKyMKLSsjIGluIHRoaXMgY2FzZSwgdGhpcyBwcmVmaXgg d291bGQgYmUgdGhlIGNoYXJhY3RlciBcYFwkXCcuCi0rdjpjb25zdCBjaGFyICo6c3RhcF9pbnRl Z2VyX3ByZWZpeDo6OjA6MDo6MDpnZGJhcmNoLT5zdGFwX2ludGVnZXJfcHJlZml4Ci0rCi0rIyBT dWZpeCB1c2VkIHRvIG1hcmsgYW4gaW50ZWdlciBjb25zdGFudCBvbiB0aGUgYXJjaGl0ZWN0dXJl J3MgYXNzZW1ibHkuCi0rdjpjb25zdCBjaGFyICo6c3RhcF9pbnRlZ2VyX3N1Zml4Ojo6MDowOjow OmdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeAotKwotKyMgUHJlZml4IHVzZWQgdG8gbWFyayBh IHJlZ2lzdGVyIG5hbWUgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5LgotKyMgRm9yIGV4 YW1wbGUsIG9uIHg4NiB0aGUgcmVnaXN0ZXIgbmFtZSBpcyB3cml0dGVuIGFzOgotKyMKLSsjICBc JWVheCA7OyByZWdpc3RlciBlYXgKLSsjCi0rIyBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4IHdv dWxkIGJlIHRoZSBjaGFyYWN0ZXIgXGBcJVwnLgotK3Y6Y29uc3QgY2hhciAqOnN0YXBfcmVnaXN0 ZXJfcHJlZml4Ojo6MDowOjowOmdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfcHJlZml4Ci0rCi0rIyBT dWZpeCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBuYW1lIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBh c3NlbWJseQotK3Y6Y29uc3QgY2hhciAqOnN0YXBfcmVnaXN0ZXJfc3VmaXg6OjowOjA6OjA6Z2Ri YXJjaC0+c3RhcF9yZWdpc3Rlcl9zdWZpeAotKwotKyMgUHJlZml4IHVzZWQgdG8gbWFyayBhIHJl Z2lzdGVyIGluZGlyZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4KLSsjIEZv ciBleGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIGluZGlyZWN0aW9uIGlzIHdyaXR0ZW4gYXM6 Ci0rIwotKyMgIFwoXCVlYXhcKSA7OyBpbmRpcmVjdGluZyBlYXgKLSsjCi0rIyBpbiB0aGlzIGNh c2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYXRlciBcYFwoXCcuCi0rIwotKyMgUGxl YXNlIG5vdGUgdGhhdCB3ZSB1c2UgdGhlIGluZGlyZWN0aW9uIHByZWZpeCBhbHNvIGZvciByZWdp c3RlcgotKyMgZGlzcGxhY2VtZW50LCBlLmcuLCBcYDRcKFwlZWF4XClcJyBvbiB4ODYuCi0rdjpj b25zdCBjaGFyICo6c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXg6OjowOjA6OjA6Z2Ri YXJjaC0+c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXgKLSsKLSsjIFN1Zml4IHVzZWQg dG8gbWFyayBhIHJlZ2lzdGVyIGluZGlyZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3Nl bWJseS4KLSsjIEZvciBleGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIGluZGlyZWN0aW9uIGlz IHdyaXR0ZW4gYXM6Ci0rIwotKyMgIFwoXCVlYXhcKSA7OyBpbmRpcmVjdGluZyBlYXgKLSsjCi0r IyBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYXRlciBcYFwpXCcu Ci0rIwotKyMgUGxlYXNlIG5vdGUgdGhhdCB3ZSB1c2UgdGhlIGluZGlyZWN0aW9uIHN1Zml4IGFs c28gZm9yIHJlZ2lzdGVyCi0rIyBkaXNwbGFjZW1lbnQsIGUuZy4sIFxgNFwoXCVlYXhcKVwnIG9u IHg4Ni4KLSt2OmNvbnN0IGNoYXIgKjpzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4Ojo6 MDowOjowOmdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXgKLSsKLSsjIFBy ZWZpeCB1c2VkIHRvIG5hbWUgYSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuCi0r IwotKyMgRm9yIGV4YW1wbGUsIG9uIFBQQyBhIHJlZ2lzdGVyIGlzIHJlcHJlc2VudGVkIGJ5IGEg bnVtYmVyIGluIHRoZSBhc3NlbWJseQotKyMgbGFuZ3VhZ2UgKGUuZy4sIFxgMTBcJyBpcyB0aGUg MTB0aCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIpLiAgSG93ZXZlciwKLSsjIGluc2lkZSBHREIg dGhpcyBzYW1lIHJlZ2lzdGVyIGhhcyBhbiBcYHJcJyBhcHBlbmRlZCB0byBpdHMgbmFtZSwgc28g dGhlIDEwdGgKLSsjIHJlZ2lzdGVyIHdvdWxkIGJlIHJlcHJlc2VudGVkIGFzIFxgcjEwXCcgaW50 ZXJuYWxseS4KLSt2OmNvbnN0IGNoYXIgKjpzdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXg6OjowOjA6 OjA6Z2RiYXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4Ci0rCi0rIyBTdWZpeCB1c2VkIHRv IG5hbWUgYSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuCi0rdjpjb25zdCBjaGFy ICo6c3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXg6OjowOjA6OjA6Z2RiYXJjaC0+c3RhcF9nZGJfcmVn aXN0ZXJfc3VmaXgKLSsKLSsjIENoZWNrIGlmIFMgaXMgYSBzaW5nbGUgb3BlcmFuZC4KLSsjCi0r IyBTaW5nbGUgb3BlcmFuZHMgY2FuIGJlOgotKyMgIFwtIExpdGVyYWwgaW50ZWdlcnMsIGUuZy4g XGBcJDEwXCcgb24geDg2Ci0rIyAgXC0gUmVnaXN0ZXIgYWNjZXNzLCBlLmcuIFxgXCVlYXhcJyBv biB4ODYKLSsjICBcLSBSZWdpc3RlciBpbmRpcmVjdGlvbiwgZS5nLiBcYFwoXCVlYXhcKVwnIG9u IHg4NgotKyMgIFwtIFJlZ2lzdGVyIGRpc3BsYWNlbWVudCwgZS5nLiBcYDRcKFwlZWF4XClcJyBv biB4ODYKLSsjCi0rIyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjaGVjayBmb3IgdGhlc2UgcGF0dGVy bnMgb24gdGhlIHN0cmluZwotKyMgYW5kIHJldHVybiAxIGlmIHNvbWUgd2VyZSBmb3VuZCwgb3Ig emVybyBvdGhlcndpc2UuICBQbGVhc2UgdHJ5IHRvIG1hdGNoCi0rIyBhcyBtdWNoIGluZm8gYXMg eW91IGNhbiBmcm9tIHRoZSBzdHJpbmcsIGkuZS4sIGlmIHlvdSBoYXZlIHRvIG1hdGNoCi0rIyBz b21ldGhpbmcgbGlrZSBcYFwoXCVcJywgZG8gbm90IG1hdGNoIGp1c3QgdGhlIFxgXChcJy4KLStN OmludDpzdGFwX2lzX3NpbmdsZV9vcGVyYW5kOmNvbnN0IGNoYXIgKnM6cwotKwotKyMgRnVuY3Rp b24gdXNlZCB0byBoYW5kbGUgYSAic3BlY2lhbCBjYXNlIiBpbiB0aGUgcGFyc2VyLgotKyMKLSsj IEEgInNwZWNpYWwgY2FzZSIgaXMgY29uc2lkZXJlZCB0byBiZSBhbiB1bmtub3duIHRva2VuLCBp LmUuLCBhIHRva2VuCi0rIyB0aGF0IHRoZSBwYXJzZXIgZG9lcyBub3Qga25vdyBob3cgdG8gcGFy c2UuICBBIGdvb2QgZXhhbXBsZSBvZiBzcGVjaWFsCi0rIyBjYXNlIHdvdWxkIGJlIEFSTSdzIHJl Z2lzdGVyIGRpc3BsYWNlbWVudCBzeW50YXg6Ci0rIwotKyMgIFtSMCwgIzRdICA7OyBkaXNwbGFj aW5nIFIwIGJ5IDQKLSsjCi0rIyBTaW5jZSB0aGUgcGFyc2VyIGFzc3VtZXMgdGhhdCBhIHJlZ2lz dGVyIGRpc3BsYWNlbWVudCBpcyBvZiB0aGUgZm9ybToKLSsjCi0rIyAgPG51bWJlcj4gPGluZGly ZWN0aW9uX3ByZWZpeD4gPHJlZ2lzdGVyX25hbWU+IDxpbmRpcmVjdGlvbl9zdWZpeD4KLSsjCi0r IyBpdCBtZWFucyB0aGF0IGl0IHdpbGwgbm90IGJlIGFibGUgdG8gcmVjb2duaXplIGFuZCBwYXJz ZSB0aGlzIG9kZCBzeW50YXguCi0rIyBUaGVyZWZvcmUsIHdlIHNob3VsZCBhZGQgYSBzcGVjaWFs IGNhc2UgZnVuY3Rpb24gdGhhdCB3aWxsIGhhbmRsZSB0aGlzIHRva2VuLgotKyMKLSsjIFRoaXMg ZnVuY3Rpb24gc2hvdWxkIGdlbmVyYXRlIHRoZSBwcm9wZXIgZXhwcmVzc2lvbiBmb3JtIG9mIHRo ZSBleHByZXNzaW9uCi0rIyB1c2luZyBHREJcJ3MgaW50ZXJuYWwgZXhwcmVzc2lvbiBtZWNoYW5p c20gKGUuZy4sIFxgd3JpdGVfZXhwX2VsdF9vcGNvZGVcJwotKyMgYW5kIHNvIG9uKS4gIEl0IHNo b3VsZCBhbHNvIHJldHVybiAxIGlmIHRoZSBwYXJzaW5nIHdhcyBzdWNjZXNzZnVsLCBvciB6ZXJv Ci0rIyBpZiB0aGUgdG9rZW4gd2FzIG5vdCByZWNvZ25pemVkIGFzIGEgc3BlY2lhbCB0b2tlbiAo aW4gdGhpcyBjYXNlLCByZXR1cm5pbmcKLSsjIHplcm8gbWVhbnMgdGhhdCB0aGUgc3BlY2lhbCBw YXJzZXIgaXMgZGVmZXJyaW5nIHRoZSBwYXJzaW5nIHRvIHRoZSBnZW5lcmljCi0rIyBwYXJzZXIp LCBhbmQgc2hvdWxkIGFkdmFuY2UgdGhlIGJ1ZmZlciBwb2ludGVyIChwLT5hcmcpLgotK006aW50 OnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbjpzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwOnAKLSsK LSsKLSAjIFRydWUgaWYgdGhlIGxpc3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyBpcyBvbmUgYW5kIG9u bHkgZm9yIGFsbAotICMgcHJvY2Vzc2VzLCBhcyBvcHBvc2VkIHRvIGEgbGlzdCBvZiBzaGFyZWQg bGlicmFyaWVzIHBlciBpbmZlcmlvci4KLSAjIFRoaXMgdXN1YWxseSBtZWFucyB0aGF0IGFsbCBw cm9jZXNzZXMsIGFsdGhvdWdoIG1heSBvciBtYXkgbm90IHNoYXJlCi1AQCAtOTU0LDYgKzEwNDks NyBAQCBzdHJ1Y3QgY29yZV9yZWdzZXRfc2VjdGlvbjsKLSBzdHJ1Y3Qgc3lzY2FsbDsKLSBzdHJ1 Y3QgYWdlbnRfZXhwcjsKLSBzdHJ1Y3QgYXhzX3ZhbHVlOwotK3N0cnVjdCBzdGFwX3BhcnNlX2lu Zm87Ci0gCi0gLyogVGhlIGFyY2hpdGVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbm5lY3Rp b24gdG8gdGhlIHRhcmdldC4KLSAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYmluaXQuaW4gYi9nZGIv Z2RiaW5pdC5pbgotaW5kZXggZmZiN2Y1My4uYTJlN2U5NCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJp bml0LmluCi0rKysgYi9nZGIvZ2RiaW5pdC5pbgotQEAgLTEsNSArMSwxNSBAQAotIGVjaG8gU2V0 dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KK2RpZmYgLS1naXQg YS9nZGIvZ2RiLWdkYi5nZGIuaW4gYi9nZGIvZ2RiLWdkYi5nZGIuaW4KK2luZGV4IGZmYjdmNTMu LmEyZTdlOTQgMTAwNjQ0CistLS0gYS9nZGIvZ2RiLWdkYi5nZGIuaW4KKysrKyBiL2dkYi9nZGIt Z2RiLmdkYi5pbgorQEAgLTEsNSArMSwxNSBAQAorIGVjaG8gU2V0dGluZyB1cCB0aGUgZW52aXJv bm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KICAKICsjIFNldCB1cCB0aGUgUHl0aG9uIGxpYnJh cnkgYW5kICJyZXF1aXJlIiBjb21tYW5kLgogK3B5dGhvbgpAQCAtNDExOSw3ICsyNDE0LDcgQEAg aW5kZXggZmZiN2Y1My4uYTJlN2U5NCAxMDA2NDQKICAKICBiIGludGVybmFsX2Vycm9yCiBkaWZm IC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggYjA5YzFlYy4u OGUwMjU2YyAxMDA2NDQKK2luZGV4IGUzZGIxZWQuLjlhMzQ2ZTYgMTAwNjQ0CiAtLS0gYS9nZGIv Z2RidHlwZXMuYwogKysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zNyw2ICszNyw5IEBACkBAIC00 MjY0LDcgKzI1NTksNyBAQCBpbmRleCBiMDljMWVjLi44ZTAyNTZjIDEwMDY0NAogIAogICAgcmV0 dXJuIHJlc3VsdF90eXBlOwogIH0KLUBAIC0xNDM4LDYgKzE0OTMsMTA1IEBAIHN0dWJfbm9uYW1l X2NvbXBsYWludCAodm9pZCkKK0BAIC0xNDMxLDYgKzE0ODYsMTA1IEBAIHN0dWJfbm9uYW1lX2Nv bXBsYWludCAodm9pZCkKICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1 YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7CiAgfQogIApAQCAtNDM3MCw3ICsyNjY1LDcgQEAgaW5k ZXggYjA5YzFlYy4uOGUwMjU2YyAxMDA2NDQKICAvKiBGaW5kIHRoZSByZWFsIHR5cGUgb2YgVFlQ RS4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVhbCB0eXBlLAogICAgIGFmdGVyIHJlbW92 aW5nIGFsbCBsYXllcnMgb2YgdHlwZWRlZnMsIGFuZCBjb21wbGV0aW5nIG9wYXF1ZSBvciBzdHVi CiAgICAgdHlwZXMuICBDb21wbGV0aW9uIGNoYW5nZXMgdGhlIFRZUEUgYXJndW1lbnQsIGJ1dCBz dHJpcHBpbmcgb2YKLUBAIC0xNjA0LDUyICsxNzU4LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVj dCB0eXBlICp0eXBlKQorQEAgLTE1OTcsNTIgKzE3NTEsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3Ry dWN0IHR5cGUgKnR5cGUpCiAgICAgICAgICB9CiAgICAgIH0KICAKQEAgLTQ0NDQsNyArMjczOSw3 IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAo dHlwZSkgPSAwOwogIAl9CiAgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfUkFOR0UpCi1AQCAtMTY1Nyw2ICsxNzk2LDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0 IHR5cGUgKnR5cGUpCitAQCAtMTY1MCw2ICsxNzg5LDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0 IHR5cGUgKnR5cGUpCiAgCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdl dF90eXBlKTsKICAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7CiAgCX0KQEAgLTQ0NTIs NyArMjc0Nyw3IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgICAgIH0KICAKICAg IHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0eXBlLCBpbnN0YW5jZV9mbGFncywgTlVMTCk7 Ci1AQCAtMzMxMCwzMyArMzQ1MCw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1f bGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKK0BAIC0zMzA4LDMzICszNDQ4LDQyIEBAIHR5cGVf cGFpcl9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogIH0K ICAKICAvKiBBbGxvY2F0ZSB0aGUgaGFzaCB0YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNp dmUgdG8gd2FsawpAQCAtNDUxMCw3ICsyODA1LDcgQEAgaW5kZXggYjA5YzFlYy4uOGUwMjU2YyAx MDA2NDQKICAgICAgcmV0dXJuIHR5cGU7CiAgCiAgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJl IHBvaW50aW5nIHRvIGFueSB0eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKLUBAIC0zMzUxLDkgKzM1 MDAsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitA QCAtMzM0OSw5ICszNDk4LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBlX2FyY2gg KHR5cGUpKTsKICAKICAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUgaGFzaCB0 YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQpAQCAtNDUyNCw3ICsyODE5LDcgQEAgaW5kZXggYjA5 YzFlYy4uOGUwMjU2YyAxMDA2NDQKICAgIHN0b3JlZC0+b2xkID0gdHlwZTsKICAgIHN0b3JlZC0+ bmV3ID0gbmV3X3R5cGU7CiAgICAqc2xvdCA9IHN0b3JlZDsKLUBAIC0zMzY0LDYgKzM1MTQsMjEg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzM2 Miw2ICszNTEyLDIxIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQRV9PV05F UiAobmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAgLTQ1NDYs NyArMjg0MSw3IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgICBpZiAoVFlQRV9O QU1FICh0eXBlKSkKICAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05B TUUgKHR5cGUpKTsKICAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKLUBAIC0zMzcyLDEyICsz NTM3LDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor QEAgLTMzNzAsMTIgKzM1MzUsNDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCiAgICBUWVBFX0lOU1RBTkNFX0ZMQUdTIChuZXdfdHlwZSkgPSBUWVBFX0lO U1RBTkNFX0ZMQUdTICh0eXBlKTsKICAgIFRZUEVfTEVOR1RIIChuZXdfdHlwZSkgPSBUWVBFX0xF TkdUSCAodHlwZSk7CiAgCkBAIC00NTk1LDcgKzI4OTAsNyBAQCBpbmRleCBiMDljMWVjLi44ZTAy NTZjIDEwMDY0NAogICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmll bGRzLCBzdHJ1Y3QgZmllbGQpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKysp CiAgCXsKLUBAIC0zMzg2LDggKzM1ODcsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMzg0LDggKzM1ODUsOCBAQCBjb3B5X3R5cGVfcmVjdXJz aXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKG5l d190eXBlLCBpKSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7CiAgCSAgaWYgKFRZUEVf RklFTERfVFlQRSAodHlwZSwgaSkpCiAgCSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190eXBlLCBp KQpAQCAtNDYwNiw3ICsyOTAxLDcgQEAgaW5kZXggYjA5YzFlYy4uOGUwMjU2YyAxMDA2NDQKICAJ ICBpZiAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfTkFNRSAo bmV3X3R5cGUsIGkpID0gCiAgCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwg aSkpOwotQEAgLTM0MTQsMjQgKzM2MTUsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM0MTYsMjQgKzM2MTcsMTg0IEBAIGNvcHlfdHlwZV9y ZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTQ3 OTgsNyArMzA5Myw3IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgICAvKiBNYXli ZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0x Mi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zNDQ4 LDYgKzM4MDksMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCitAQCAtMzQ1MCw2ICszODExLDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTQ4MTYsNyAr MzExMSw3IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgLyogTWFrZSBhIGNvcHkg b2YgdGhlIGdpdmVuIFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCiAg ICAgdHlwZXMgYXJlIG5vdCBwcmVzZXJ2ZWQuCiAgICAgCi1AQCAtMzQ3MCw2ICszODQyLDIwMSBA QCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM0NzIsNiArMzg0NCwy MDEgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgIHJldHVybiBuZXdf dHlwZTsKICB9CiAgCkBAIC01MDE4LDcgKzMzMTMsNyBAQCBpbmRleCBiMDljMWVjLi44ZTAyNTZj IDEwMDY0NAogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhcmNoaXRlY3R1 cmUtc3BlY2lmaWMgdHlwZXMuICAqLwogIAotQEAgLTQwMDIsNiArNDU2OSwxMyBAQCB2b2lkCitA QCAtNDAwNSw2ICs0NTcyLDEzIEBAIHZvaWQKICBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkK ICB7CiAgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAo Z2RidHlwZXNfcG9zdF9pbml0KTsKQEAgLTUwMzMsNyArMzMyOCw3IEBAIGluZGV4IGIwOWMxZWMu LjhlMDI1NmMgMTAwNjQ0CiAgCiAgICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9h ZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVz LmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggMjA3MGYwMC4uNDBkYjYwNiAxMDA2NDQKK2luZGV4 IDg4N2RmZGIuLjZlOTcyZDEgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2Ri L2dkYnR5cGVzLmgKIEBAIC0yMTMsNiArMjEzLDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCkBAIC01MDk5LDcgKzMzOTQsNyBAQCBpbmRleCAyMDcwZjAwLi40MGRiNjA2IDEwMDY0 NAogIC8qIENvbnN0YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcg dHlwZSBoYXMgYQogICAgIGNvbnN0IG1vZGlmaWVyLiAgKi8KICAKLUBAIC00MDUsNiArNDU0LDE1 IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC00MDYsNiArNDU1LDE1IEBAIHN0cnVjdCBtYWluX3R5 cGUKICAgIC8qIFRydWUgaWYgdGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0 aGVyIHRoYW4KICAgICAgICJzdHJ1Y3QiLiAgKi8KICAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xh cmVkX2NsYXNzIDogMTsKQEAgLTUxMTUsNyArMzQxMCw3IEBAIGluZGV4IDIwNzBmMDAuLjQwZGI2 MDYgMTAwNjQ0CiAgCiAgICAvKiBUcnVlIGlmIHRoaXMgaXMgYW4gZW51bSB0eXBlIHdpdGggZGlz am9pbnQgdmFsdWVzLiAgVGhpcyBhZmZlY3RzCiAgICAgICBob3cgdGhlIGVudW0gaXMgcHJpbnRl ZC4gICovCi1AQCAtNDgzLDYgKzU0MSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNDg2LDYg KzU0NCwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5 cGU7CiAgCkBAIC01MTM2LDcgKzM0MzEsNyBAQCBpbmRleCAyMDcwZjAwLi40MGRiNjA2IDEwMDY0 NAogICAgLyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3JpcHRpb24gb2Yg ZWFjaCBmaWVsZC4KICAgICAgIEZvciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBlcywgdGhlcmUg aXMgb25lICJmaWVsZCIsCiAgICAgICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4gdHlwZSBvZiB0 aGUgc2V0IG9yIGFycmF5LgotQEAgLTU2MywxMyArNjM1LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUK K0BAIC01NjgsMTMgKzY0MCwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICAgIHN0cnVjdCBy YW5nZV9ib3VuZHMKICAgICAgewpAQCAtNTIyNCw3ICszNTE5LDcgQEAgaW5kZXggMjA3MGYwMC4u NDBkYjYwNiAxMDA2NDQKICAKICAvKiBDKysgKi8KICAKLUBAIC0xNDgyLDYgKzE1ODcsMTggQEAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHR5cGUgKiwKK0BAIC0xNDg5LDYgKzE1OTQsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpj cmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAg ICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3Jh bmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTUyNDMsNyArMzUzOCw3 IEBAIGluZGV4IDIwNzBmMDAuLjQwZGI2MDYgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpj cmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJCQlz dHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJpbmdfcmFuZ2Vf dHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTE1MjcsNiArMTY0NCwxMCBAQCBl eHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUg Kik7CitAQCAtMTUzNCw2ICsxNjUxLDEwIEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9y IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlzX3VuaXF1 ZV9hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIApAQCAtNTI1NCw3 ICszNTQ5LDcgQEAgaW5kZXggMjA3MGYwMC4uNDBkYjYwNiAxMDA2NDQKICAvKiBPdmVybG9hZCBy ZXNvbHV0aW9uICovCiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBd KQotQEAgLTE2MDIsMTAgKzE3MjMsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRf dHlwZSAoY2hhciAqLCBpbnQpOworQEAgLTE2MDksMTAgKzE3MzAsMTMgQEAgZXh0ZXJuIHZvaWQg bWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3Qg Y3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBA IC01MjcwLDIxMDQgKzM1NjUsNzgzIEBAIGluZGV4IDIwNzBmMDAuLjQwZGI2MDYgMTAwNjQ0CiAr I2VuZGlmCiArCiAgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvaTM4 Ni1saW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1pbmRleCA0YjFiMjBmLi4zOGU3 MDI3IDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9pMzg2LWxp bnV4LW5hdC5jCi1AQCAtNzA4LDggKzcwOCw4IEBAIGkzODZfbGludXhfZHJfZ2V0X3N0YXR1cyAo dm9pZCkKLSAgIHJldHVybiBpMzg2X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RB VFVTKTsKLSB9Ci0gCi0tLyogQ2FsbGJhY2sgZm9yIGl0ZXJhdGVfb3Zlcl9sd3BzLiAgVXBkYXRl IHRoZSBkZWJ1ZyByZWdpc3RlcnMgb2YKLS0gICBMV1AuICAqLwotKy8qIENhbGxiYWNrIGZvciBs aW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMuICBVcGRhdGUgdGhlIGRlYnVnIHJlZ2lz dGVycwotKyAgIG9mIExXUC4gICovCi0gCi0gc3RhdGljIGludAotIHVwZGF0ZV9kZWJ1Z19yZWdp c3RlcnNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLCB2b2lkICphcmcpCi1AQCAtNzM1 LDkgKzczNSw3IEBAIHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2sgKHN0cnVjdCBsd3Bf aW5mbyAqbHdwLCB2b2lkICphcmcpCi0gc3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X2RyX3NldF9j b250cm9sICh1bnNpZ25lZCBsb25nIGNvbnRyb2wpCi0gewotLSAgcHRpZF90IHBpZF9wdGlkID0g cGlkX3RvX3B0aWQgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOwotLQotLSAgaXRlcmF0 ZV9vdmVyX2x3cHMgKHBpZF9wdGlkLCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrLCBO VUxMKTsKLSsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAodXBkYXRlX2RlYnVn X3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7Ci0gfQotIAotIC8qIFNldCBhZGRyZXNzIFJFR05V TSAoemVybyBiYXNlZCkgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiB0aGUgY3VycmVudAotQEAgLTc1 MCw3ICs3NDgsNyBAQCBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FE RFIgYWRkcikKLSAKLSAgIGdkYl9hc3NlcnQgKHJlZ251bSA+PSAwICYmIHJlZ251bSA8PSBEUl9M QVNUQUREUiAtIERSX0ZJUlNUQUREUik7Ci0gCi0tICBpdGVyYXRlX292ZXJfbHdwcyAocGlkX3B0 aWQsIHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOwotKyAgbGludXhfbmF0 X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzICh1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNr LCBOVUxMKTsKLSB9CitkaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKK2luZGV4 IDMxNDhkNzIuLmM1YjQ4MjYgMTAwNjQ0CistLS0gYS9nZGIvbWFpbi5jCisrKysgYi9nZGIvbWFp bi5jCitAQCAtMzcsNiArMzcsNyBAQAogIAotIC8qIENhbGxlZCB3aGVuIHJlc3VtaW5nIGEgdGhy ZWFkLgotQEAgLTc3Miw2ICs3NzAsOSBAQCBpMzg2X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChz dHJ1Y3QgbHdwX2luZm8gKmx3cCkKLSAgICAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg KnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci0gICAgICAgaW50IGk7CisgI2luY2x1 ZGUgImludGVycHMuaCIKKyAjaW5jbHVkZSAibWFpbi5oIgorKyNpbmNsdWRlICJweXRob24vcHl0 aG9uLmgiCisgI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIK KyAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorQEAgLTI4Myw2ICsyODQsOCBAQCBjYXB0dXJl ZF9tYWluICh2b2lkICpkYXRhKQorICAgY2hhciAqY2RhcmcgPSBOVUxMOworICAgY2hhciAqdHR5 YXJnID0gTlVMTDsKICAKLSsgICAgICAvKiBTZWUgYW1kNjRfbGludXhfcHJlcGFyZV90b19yZXN1 bWUgZm9yIExpbnV4IGtlcm5lbCBub3RlIG9uCi0rCSBpMzg2X2xpbnV4X2RyX3NldCBjYWxscyBv cmRlcmluZy4gICovCisrICBpbnQgcHl0aG9uX3NjcmlwdCA9IDA7CiArCi0gICAgICAgZm9yIChp ID0gRFJfRklSU1RBRERSOyBpIDw9IERSX0xBU1RBRERSOyBpKyspCi0gCWlmIChzdGF0ZS0+ZHJf cmVmX2NvdW50W2ldID4gMCkKLSAJICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRl cC5jIGIvZ2RiL2kzODYtbGludXgtdGRlcC5jCi1pbmRleCBlYjExNGVmLi5mODBlMDVhIDEwMDY0 NAotLS0tIGEvZ2RiL2kzODYtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC10ZGVw LmMKLUBAIC05MDMsNiArOTAzLDE1IEBAIGkzODZfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJh cmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGkzODZfbGludXhfZ2V0X3N5c2NhbGxfbnVtYmVyKTsKLSAKLSAg IHNldF9nZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUgKGdkYmFyY2gsIGxpbnV4X2dldF9zaWdpbmZv X3R5cGUpOwotKwotKyAgLyogU3lzdGVtVGFwIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLiAgKi8K LSsgIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICIkIik7Ci0rICBz ZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgIiUiKTsKLSsgIHNldF9n ZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAiKCIpOwot KyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwg IikiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIGkz ODZfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3Nw ZWNpYWxfdG9rZW4gKGdkYmFyY2gsCi0rCQkJCQlpMzg2X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tl bik7Ci0gfQorICAgLyogVGhlc2UgYXJlIHN0YXRpYyBzbyB0aGF0IHdlIGNhbiB0YWtlIHRoZWly IGFkZHJlc3MgaW4gYW4KKyAgICAgIGluaXRpYWxpemVyLiAgKi8KKyAgIHN0YXRpYyBpbnQgcHJp bnRfaGVscDsKK0BAIC00NzMsMTAgKzQ3NiwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQorICAgICAgIHsicmV0dXJuLWNoaWxkLXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAmcmV0dXJuX2No aWxkX3Jlc3VsdCwgMX0sCisgICAgICAgeyJ1c2UtZGVwcmVjYXRlZC1pbmRleC1zZWN0aW9ucyIs IG5vX2FyZ3VtZW50LAorICAgICAgICAmdXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMsIDF9 LAorKyNpZiBIQVZFX1BZVEhPTgorKyAgICAgIHsicHl0aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQ J30sCisrICAgICAgeyJQIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrI2VuZGlmCisgICAgICAg ezAsIG5vX2FyZ3VtZW50LCAwLCAwfQorICAgICB9OwogIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5 cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2Ri L2kzODYtbmF0LmMgYi9nZGIvaTM4Ni1uYXQuYwotaW5kZXggZmExNzgyMy4uODQ2YjJiOCAxMDA2 NDQKLS0tLSBhL2dkYi9pMzg2LW5hdC5jCi0rKysgYi9nZGIvaTM4Ni1uYXQuYwotQEAgLTI1LDYg KzI1LDcgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgInRhcmdldC5oIgotICNp bmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCistICAgIHdoaWxl ICgxKQorKyAgICB3aGlsZSAoIXB5dGhvbl9zY3JpcHQpCisgICAgICAgeworIAlpbnQgb3B0aW9u X2luZGV4OwogIAotIC8qIFN1cHBvcnQgZm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzIGFuZCBicmVh a3BvaW50cyB1c2luZyB0aGUgaTM4NgotICAgIGRlYnVnIHJlZ2lzdGVycy4KLUBAIC0xNzAsMTQg KzE3MSw4OCBAQCBpMzg2X2luaXRfZHJlZ3MgKHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAq c3RhdGUpCi0gICBzdGF0ZS0+ZHJfc3RhdHVzX21pcnJvciAgPSAwOwotIH0KK0BAIC00OTQsNiAr NTAxLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAJICBjYXNlIDA6CisgCSAgICAv KiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBhIGZsYWcuICAqLworIAkgICAgYnJlYWs7Cisr CSAgY2FzZSAnUCc6CisrCSAgICBweXRob25fc2NyaXB0ID0gMTsKKysJICAgIGJyZWFrOworIAkg IGNhc2UgT1BUX1NFOgorIAkgICAgc3ltYXJnID0gb3B0YXJnOworIAkgICAgZXhlY2FyZyA9IG9w dGFyZzsKK0BAIC03MDEsNyArNzExLDMxIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAg Ci0tLyogVGhlIGxvY2FsIG1pcnJvciBvZiB0aGUgaW5mZXJpb3IncyBkZWJ1ZyByZWdpc3RlcnMu ICBDdXJyZW50bHkgdGhpcwotLSAgIGlzIGEgZ2xvYmFsLCBidXQgaXQgc2hvdWxkIHJlYWxseSBi ZSBwZXItaW5mZXJpb3IuICAqLwotLXN0YXRpYyBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg ZHJfbWlycm9yOwotKy8qIFBlci1pbmZlcmlvciBkYXRhIGtleS4gICovCi0rc3RhdGljIGNvbnN0 IHN0cnVjdCBpbmZlcmlvcl9kYXRhICppMzg2X2luZmVyaW9yX2RhdGE7Ci0rCi0rLyogUGVyLWlu ZmVyaW9yIGRhdGEuICAqLwotK3N0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEKLSsgIHsKLSsgICAg LyogQ29weSBvZiBpMzg2IGhhcmR3YXJlIGRlYnVnIHJlZ2lzdGVycyBmb3IgcGVyZm9ybWFuY2Ug cmVhc29ucy4gICovCi0rICAgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBzdGF0ZTsKLSsg IH07Ci0rCi0rLyogUGVyLWluZmVyaW9yIGhvb2sgZm9yIHJlZ2lzdGVyX2luZmVyaW9yX2RhdGFf d2l0aF9jbGVhbnVwLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2kzODZfaW5mZXJpb3JfZGF0YV9j bGVhbnVwIChzdHJ1Y3QgaW5mZXJpb3IgKmluZiwgdm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBp Mzg2X2luZmVyaW9yX2RhdGEgKmluZl9kYXRhID0gYXJnOwotKwotKyAgeGZyZWUgKGluZl9kYXRh KTsKLSt9Ci0rCi0rLyogR2V0IGRhdGEgc3BlY2lmaWMgZm9yIElORkVSSU9SX1BUSUQgTFdQLiAg UmV0dXJuIHNwZWNpYWwgZGF0YSBhcmVhCi0rICAgZm9yIHByb2Nlc3NlcyBiZWluZyBkZXRhY2hl ZC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEgKgotK2kzODZfaW5m ZXJpb3JfZGF0YV9nZXQgKHZvaWQpCi0rewotKyAgc3RydWN0IGluZmVyaW9yICppbmYgPSBjdXJy ZW50X2luZmVyaW9yICgpOwotKyAgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2RhdGE7 Ci0rCi0rICBpbmZfZGF0YSA9IGluZmVyaW9yX2RhdGEgKGluZiwgaTM4Nl9pbmZlcmlvcl9kYXRh KTsKLSsgIGlmIChpbmZfZGF0YSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW5mX2RhdGEgPSB4 emFsbG9jIChzaXplb2YgKCppbmZfZGF0YSkpOwotKyAgICAgIHNldF9pbmZlcmlvcl9kYXRhIChj dXJyZW50X2luZmVyaW9yICgpLCBpMzg2X2luZmVyaW9yX2RhdGEsIGluZl9kYXRhKTsKLSsgICAg fQotKwotKyAgaWYgKGluZi0+cGlkICE9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpCisg ICAvKiBOb3cgdGhhdCBnZGJfaW5pdCBoYXMgY3JlYXRlZCB0aGUgaW5pdGlhbCBpbmZlcmlvciwg d2UncmUgaW4KKyAgICAgIHBvc2l0aW9uIHRvIHNldCBhcmdzIGZvciB0aGF0IGluZmVyaW9yLiAg Ki8KKy0gIGlmIChzZXRfYXJncykKKysgIGlmIChweXRob25fc2NyaXB0KQogKyAgICB7Ci0rICAg ICAgLyogSU5GRVJJT1JfUFRJRCBpcyBiZWluZyBkZXRhY2hlZCBmcm9tIHRoZSBpbmZlcmlvciBJ TkYuCi0rCSBQcm92aWRlIGxvY2FsIGNhY2hlIHNwZWNpZmljIGZvciB0aGUgZGV0YWNoZWQgTFdQ LiAgKi8KLSsKLSsgICAgICBzdGF0aWMgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSBkZXRhY2hl ZF9pbmZfZGF0YV9sb2NhbDsKLSsgICAgICBzdGF0aWMgaW50IGRldGFjaGVkX2luZl9waWQgPSAt MTsKLSsKLSsgICAgICBpZiAoZGV0YWNoZWRfaW5mX3BpZCAhPSBwdGlkX2dldF9waWQgKGluZmVy aW9yX3B0aWQpKQorKyAgICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHB5dGhvbiBzY3Jp cHQgdG8gZXZhbHVhdGUsIGFuZAorKwkgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0 byB0aGUgc2NyaXB0IGZvcgorKwkgcHJvY2Vzc2luZyB0aGVyZS4gICovCisrICAgICAgaWYgKG9w dGluZCA+PSBhcmdjKQogKwl7Ci0rCSAgLyogUmVpbml0aWFsaXplIHRoZSBsb2NhbCBjYWNoZSBp ZiBJTkZFUklPUl9QVElEIGlzCi0rCSAgICAgZGlmZmVyZW50IGZyb20gdGhlIExXUCBsYXN0IGRl dGFjaGVkLgotKyAKLSsJICAgICBMaW51eCBrZXJuZWwgYmVmb3JlIDIuNi4zMyBjb21taXQKLSsJ ICAgICA3MmY2NzRkMjAzY2QyMzA0MjY0MzdjZGNmN2RkNmY2ODFkYWQ4YjBkCi0rCSAgICAgd2ls bCBpbmhlcml0IGhhcmR3YXJlIGRlYnVnIHJlZ2lzdGVycyBmcm9tIHBhcmVudAotKwkgICAgIG9u IGZvcmsvdmZvcmsvY2xvbmUuICBOZXdlciBMaW51eCBrZXJuZWxzIGNyZWF0ZSBzdWNoIHRhc2tz IHdpdGgKLSsJICAgICB6ZXJvZWQgZGVidWcgcmVnaXN0ZXJzLgotKwotKwkgICAgIEdEQiB3aWxs IHJlbW92ZSBhbGwgYnJlYWtwb2ludHMgKGFuZCB3YXRjaHBvaW50cykgZnJvbSB0aGUgZm9ya2Vk Ci0rCSAgICAgb2ZmIHByb2Nlc3MuICBXZSBhbHNvIG5lZWQgdG8gcmVzZXQgdGhlIGRlYnVnIHJl Z2lzdGVycyBpbiB0aGF0Ci0rCSAgICAgcHJvY2VzcyB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhl IG9sZGVyIExpbnV4IGtlcm5lbHMuCi0rCi0rCSAgICAgQ29weSB0aGUgZGVidWcgcmVnaXN0ZXJz IG1pcnJvcnMgaW50byB0aGUgbmV3IHByb2Nlc3Mgc28gdGhhdCBhbGwKLSsJICAgICBicmVha3Bv aW50cyBhbmQgd2F0Y2hwb2ludHMgY2FuIGJlIHJlbW92ZWQgdG9nZXRoZXIuICBUaGUgZGVidWcK LSsJICAgICByZWdpc3RlcnMgbWlycm9yIHdpbGwgYmVjb21lIHplcm9lZCBpbiB0aGUgZW5kIGJl Zm9yZSBkZXRhY2hpbmcKLSsJICAgICB0aGUgZm9ya2VkIG9mZiBwcm9jZXNzLiAgKi8KLSsKLSsJ ICBkZXRhY2hlZF9pbmZfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSsJICBt ZW1jcHkgKCZkZXRhY2hlZF9pbmZfZGF0YV9sb2NhbCwgaW5mX2RhdGEsCi0rCQkgIHNpemVvZiAo ZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWwpKTsKKysJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRlcnIsCisrCQkJICAgICAgXygiJXM6IFB5dGhvbiBzY3JpcHQgZmlsZSBuYW1lIHJlcXVpcmVk XG4iKSwKKysJCQkgICAgICBhcmd2WzBdKTsKKysJICBleGl0ICgxKTsKICsJfQogKwotKyAgICAg IHJldHVybiAmZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWw7CisrICAgICAgLyogRklYTUU6IHNob3Vs ZCBoYW5kbGUgaW5mZXJpb3IgSS9PIGludGVsbGlnZW50bHkgaGVyZS4KKysJIEUuZy4sIHNob3Vs ZCBiZSBwb3NzaWJsZSB0byBydW4gZ2RiIGluIHBpcGVsaW5lIGFuZCBoYXZlCisrCSBQeXRob24g KGFuZCBnZGIpIG91dHB1dCBnbyB0byBzdGRlcnIgb3IgZmlsZTsgYW5kIGlmIGEKKysJIHByb21w dCBpcyBuZWVkZWQsIG9wZW4gdGhlIHR0eS4gICovCisrICAgICAgcXVpZXQgPSAxOworKyAgICAg IC8qIEZJWE1FOiBzaG91bGQgcmVhZCAuZ2RiaW5pdCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0 IGlzCisrCSByZXF1ZXN0ZWQgYnkgdGhlIHNjcmlwdC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlz IG5vdAorKwkgaWRlYWw/ICAqLworKyAgICAgIC8qIEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBp biBoaXN0b3J5LiAgKi8KKysgICAgICBpbmhpYml0X2dkYmluaXQgPSAxOwogKyAgICB9Ci0rCi0r ICByZXR1cm4gaW5mX2RhdGE7Ci0rfQotKwotKy8qIEdldCBkZWJ1ZyByZWdpc3RlcnMgc3RhdGUg Zm9yIElORkVSSU9SX1BUSUQsIHNlZQotKyAgIGkzODZfaW5mZXJpb3JfZGF0YV9nZXQuICAqLwor KyAgZWxzZSBpZiAoc2V0X2FyZ3MpCisgICAgIHsKKyAgICAgICAvKiBUaGUgcmVtYWluaW5nIG9w dGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGhlCisgCSBpbmZlcmlvci4g IFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUgcmVzdAorQEAgLTk4 MSw3ICsxMDE1LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAKLSBzdHJ1Y3QgaTM4 Nl9kZWJ1Z19yZWdfc3RhdGUgKgotIGkzODZfZGVidWdfcmVnX3N0YXRlICh2b2lkKQotIHsKLS0g IHJldHVybiAmZHJfbWlycm9yOwotKyAgcmV0dXJuICZpMzg2X2luZmVyaW9yX2RhdGFfZ2V0ICgp LT5zdGF0ZTsKLSB9Ci0gCi0gLyogV2hldGhlciBvciBub3QgdG8gcHJpbnQgdGhlIG1pcnJvcmVk IGRlYnVnIHJlZ2lzdGVycy4gICovCi1AQCAtMjMwLDcgKzMwNSw5IEBAIHN0YXRpYyBpbnQgaTM4 Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRjaHBvaW50IChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3Rh dGUgKnN0YXRlCi0gdm9pZAotIGkzODZfY2xlYW51cF9kcmVncyAodm9pZCkKLSB7Ci0tICBpMzg2 X2luaXRfZHJlZ3MgKCZkcl9taXJyb3IpOwotKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRl ICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwotKwotKyAgaTM4Nl9pbml0X2RyZWdz IChzdGF0ZSk7Ci0gfQotIAotIC8qIFByaW50IHRoZSB2YWx1ZXMgb2YgdGhlIG1pcnJvcmVkIGRl YnVnIHJlZ2lzdGVycy4gIFRoaXMgaXMgY2FsbGVkCi1AQCAtNDk0LDIwICs1NzEsMjEgQEAgSW52 YWxpZCB2YWx1ZSAlZCBvZiBvcGVyYXRpb24gaW4gaTM4Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRj aHBvaW50LlxuIiksCi0gc3RhdGljIHZvaWQKLSBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9kZWJ1Z19y ZWdzIChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKm5ld19zdGF0ZSkKLSB7Ci0rICBzdHJ1 Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7 Ci0gICBpbnQgaTsKKyAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUg Y29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KKyAgICAgIHJlYWQuICAqLworLSAgaW5pdF9oaXN0b3J5 ICgpOworKyAgaWYgKCFweXRob25fc2NyaXB0KQorKyAgICBpbml0X2hpc3RvcnkgKCk7CiAgCi0g ICBBTExfREVCVUdfUkVHSVNURVJTIChpKQorICAgaWYgKGJhdGNoX2ZsYWcpCiAgICAgIHsKLS0g ICAgICBpZiAoSTM4Nl9EUl9WQUNBTlQgKG5ld19zdGF0ZSwgaSkgIT0gSTM4Nl9EUl9WQUNBTlQg KCZkcl9taXJyb3IsIGkpKQotKyAgICAgIGlmIChJMzg2X0RSX1ZBQ0FOVCAobmV3X3N0YXRlLCBp KSAhPSBJMzg2X0RSX1ZBQ0FOVCAoc3RhdGUsIGkpKQotIAlpMzg2X2RyX2xvdy5zZXRfYWRkciAo aSwgbmV3X3N0YXRlLT5kcl9taXJyb3JbaV0pOwotICAgICAgIGVsc2UKLS0JZ2RiX2Fzc2VydCAo bmV3X3N0YXRlLT5kcl9taXJyb3JbaV0gPT0gZHJfbWlycm9yLmRyX21pcnJvcltpXSk7Ci0rCWdk Yl9hc3NlcnQgKG5ld19zdGF0ZS0+ZHJfbWlycm9yW2ldID09IHN0YXRlLT5kcl9taXJyb3JbaV0p OwotICAgICB9Ci0gCi0tICBpZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21pcnJvciAhPSBkcl9t aXJyb3IuZHJfY29udHJvbF9taXJyb3IpCi0rICBpZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21p cnJvciAhPSBzdGF0ZS0+ZHJfY29udHJvbF9taXJyb3IpCi0gICAgIGkzODZfZHJfbG93LnNldF9j b250cm9sIChuZXdfc3RhdGUtPmRyX2NvbnRyb2xfbWlycm9yKTsKLSAKLS0gIGRyX21pcnJvciA9 ICpuZXdfc3RhdGU7Ci0rICAqc3RhdGUgPSAqbmV3X3N0YXRlOwotIH0KK0BAIC05OTIsMTMgKzEw MjcsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIC8qIFNob3cgdGltZSBhbmQv b3Igc3BhY2UgdXNhZ2UuICAqLworICAgZG9fY2xlYW51cHMgKHByZV9zdGF0X2NoYWluKTsKICAK LSAvKiBJbnNlcnQgYSB3YXRjaHBvaW50IHRvIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB3aGljaCBz dGFydHMgYXQKLUBAIC01MTgsMTAgKzU5NiwxMSBAQCBzdGF0aWMgaW50Ci0gaTM4Nl9pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotIAkJCXN0cnVj dCBleHByZXNzaW9uICpjb25kKQotIHsKLSsgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAq c3RhdGUgPSBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAoKTsKLSAgIGludCByZXR2YWw7Ci0gICAvKiBX b3JrIG9uIGEgbG9jYWwgY29weSBvZiB0aGUgZGVidWcgcmVnaXN0ZXJzLCBhbmQgb24gc3VjY2Vz cywKLSAgICAgIGNvbW1pdCB0aGUgY2hhbmdlIGJhY2sgdG8gdGhlIGluZmVyaW9yLiAgKi8KLS0g IHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9IGRyX21pcnJvcjsKLSsg IHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9ICpzdGF0ZTsKLSAKLSAg IGlmICh0eXBlID09IGh3X3JlYWQpCi0gICAgIHJldHVybiAxOyAvKiB1bnN1cHBvcnRlZCAqLwot QEAgLTU0Miw3ICs2MjEsNyBAQCBpMzg2X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICAgIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3Jl Z3MgKCZsb2NhbF9zdGF0ZSk7Ci0gCi0gICBpZiAobWFpbnRfc2hvd19kcikKLS0gICAgaTM4Nl9z aG93X2RyICgmZHJfbWlycm9yLCAiaW5zZXJ0X3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUp OwotKyAgICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAiaW5zZXJ0X3dhdGNocG9pbnQiLCBhZGRyLCBs ZW4sIHR5cGUpOwotIAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAtNTU0LDEwICs2MzMsMTEg QEAgc3RhdGljIGludAotIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBp bnQgbGVuLCBpbnQgdHlwZSwKLSAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0rICBz dHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg KCk7Ci0gICBpbnQgcmV0dmFsOwotICAgLyogV29yayBvbiBhIGxvY2FsIGNvcHkgb2YgdGhlIGRl YnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3MsCi0gICAgICBjb21taXQgdGhlIGNoYW5nZSBi YWNrIHRvIHRoZSBpbmZlcmlvci4gICovCi0tICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg bG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7Ci0rICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg bG9jYWxfc3RhdGUgPSAqc3RhdGU7Ci0gCi0gICBpZiAoKChsZW4gIT0gMSAmJiBsZW4gIT0yICYm IGxlbiAhPTQpICYmICEoVEFSR0VUX0hBU19EUl9MRU5fOCAmJiBsZW4gPT0gOCkpCi0gICAgICAg fHwgYWRkciAlIGxlbiAhPSAwKQotQEAgLTU3NSw3ICs2NTUsNyBAQCBpMzg2X3JlbW92ZV93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICAgIGkzODZfdXBk YXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKCZsb2NhbF9zdGF0ZSk7Ci0gCi0gICBpZiAobWFpbnRf c2hvd19kcikKLS0gICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAicmVtb3ZlX3dhdGNocG9p bnQiLCBhZGRyLCBsZW4sIHR5cGUpOwotKyAgICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAicmVtb3Zl X3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUpOwotIAotICAgcmV0dXJuIHJldHZhbDsKLSB9 Ci1AQCAtNTg2LDExICs2NjYsMTIgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotIHN0YXRpYyBpbnQKLSBpMzg2X3JlZ2lvbl9va19m b3Jfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCi0gewotKyAgc3RydWN0IGkz ODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwotICAg aW50IG5yZWdzOwotIAotICAgLyogQ29tcHV0ZSBob3cgbWFueSBhbGlnbmVkIHdhdGNocG9pbnRz IHdlIHdvdWxkIG5lZWQgdG8gY292ZXIgdGhpcwotICAgICAgcmVnaW9uLiAgKi8KLS0gIG5yZWdz ID0gaTM4Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRjaHBvaW50ICgmZHJfbWlycm9yLAotKyAgbnJl Z3MgPSBpMzg2X2hhbmRsZV9ub25hbGlnbmVkX3dhdGNocG9pbnQgKHN0YXRlLAotIAkJCQkJICAg ICBXUF9DT1VOVCwgYWRkciwgbGVuLCBod193cml0ZSk7Ci0gICByZXR1cm4gbnJlZ3MgPD0gRFJf TkFERFIgPyAxIDogMDsKLSB9Ci1AQCAtNjAyLDYgKzY4Myw3IEBAIGkzODZfcmVnaW9uX29rX2Zv cl93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikKLSBzdGF0aWMgaW50Ci0gaTM4 Nl9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERS ICphZGRyX3ApCi0gewotKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkz ODZfZGVidWdfcmVnX3N0YXRlICgpOwotICAgQ09SRV9BRERSIGFkZHIgPSAwOwotICAgaW50IGk7 Ci0gICBpbnQgcmMgPSAwOwotQEAgLTYxNSwyNSArNjk3LDI0IEBAIGkzODZfc3RvcHBlZF9kYXRh X2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiAqYWRkcl9wKQotICAg dW5zaWduZWQgY29udHJvbCA9IDA7Ci0gCi0gICAvKiBJbiBub24tc3RvcC9hc3luYywgdGhyZWFk cyBjYW4gYmUgcnVubmluZyB3aGlsZSB3ZSBjaGFuZ2UgdGhlCi0tICAgICBnbG9iYWwgZHJfbWly cm9yIChhbmQgZnJpZW5kcykuICBTYXksIHdlIHNldCBhIHdhdGNocG9pbnQsIGFuZAotLSAgICAg bGV0IHRocmVhZHMgcmVzdW1lLiAgTm93LCBzYXkgeW91IGRlbGV0ZSB0aGUgd2F0Y2hwb2ludCwg b3IKLS0gICAgIGFkZC9yZW1vdmUgd2F0Y2hwb2ludHMgc3VjaCB0aGF0IGRyX21pcnJvciBjaGFu Z2VzIHdoaWxlIHRocmVhZHMKLS0gICAgIGFyZSBydW5uaW5nLiAgT24gdGFyZ2V0cyB0aGF0IHN1 cHBvcnQgbm9uLXN0b3AsCi0tICAgICBpbnNlcnRpbmcvZGVsZXRpbmcgd2F0Y2hwb2ludHMgdXBk YXRlcyB0aGUgZ2xvYmFsIGRyX21pcnJvciBvbmx5LgotLSAgICAgSXQgZG9lcyBub3QgdXBkYXRl IHRoZSByZWFsIHRocmVhZCdzIGRlYnVnIHJlZ2lzdGVyczsgdGhhdCdzIG9ubHkKLS0gICAgIGRv bmUgcHJpb3IgdG8gcmVzdW1lLiAgSW5zdGVhZCwgaWYgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVu IHRoZQotLSAgICAgbWlycm9yIGNoYW5nZXMsIGEgdGVtcG9yYXJ5IGFuZCB0cmFuc3BhcmVudCBz dG9wIG9uIGFsbCB0aHJlYWRzCi0tICAgICBpcyBmb3JjZWQgc28gdGhleSBjYW4gZ2V0IHRoZWly IGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycwotLSAgICAgdXBkYXRlZCBvbiByZS1yZXN1bWUu ICBOb3csIHNheSwgYSB0aHJlYWQgaGl0IGEgd2F0Y2hwb2ludCBiZWZvcmUKLS0gICAgIGhhdmlu ZyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IGRyX21pcnJvciBjb250ZW50cywgYW5kIHdlCi0t ICAgICBoYXZlbid0IHlldCBoYW5kbGVkIHRoZSBjb3JyZXNwb25kaW5nIFNJR1RSQVAuICBJZiB3 ZSB0cnVzdGVkCi0tICAgICBkcl9taXJyb3IgYmVsb3csIHdlJ2QgbWlzdGFrZSB0aGUgcmVhbCB0 cmFwcGVkIGFkZHJlc3MgKGZyb20gdGhlCi0tICAgICBsYXN0IHRpbWUgd2UgaGFkIHVwZGF0ZWQg ZGVidWcgcmVnaXN0ZXJzIGluIHRoZSB0aHJlYWQpIHdpdGgKLS0gICAgIHdoYXRldmVyIHdhcyBj dXJyZW50bHkgaW4gZHJfbWlycm9yLiAgU28gdG8gZml4IHRoaXMsIGRyX21pcnJvcgotLSAgICAg YWx3YXlzIHJlcHJlc2VudHMgaW50ZW50aW9uLCB3aGF0IHdlIF93YW50XyB0aHJlYWRzIHRvIGhh dmUgaW4KLS0gICAgIGRlYnVnIHJlZ2lzdGVycy4gIFRvIGdldCBhdCB0aGUgYWRkcmVzcyBhbmQg Y2F1c2Ugb2YgdGhlIHRyYXAsIHdlCi0tICAgICBuZWVkIHRvIHJlYWQgdGhlIHN0YXRlIHRoZSB0 aHJlYWQgc3RpbGwgaGFzIGluIGl0cyBkZWJ1ZwotLSAgICAgcmVnaXN0ZXJzLgotKyAgICAgU1RB VEUgKGFuZCBmcmllbmRzKS4gIFNheSwgd2Ugc2V0IGEgd2F0Y2hwb2ludCwgYW5kIGxldCB0aHJl YWRzCi0rICAgICByZXN1bWUuICBOb3csIHNheSB5b3UgZGVsZXRlIHRoZSB3YXRjaHBvaW50LCBv ciBhZGQvcmVtb3ZlCi0rICAgICB3YXRjaHBvaW50cyBzdWNoIHRoYXQgU1RBVEUgY2hhbmdlcyB3 aGlsZSB0aHJlYWRzIGFyZSBydW5uaW5nLgotKyAgICAgT24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQg bm9uLXN0b3AsIGluc2VydGluZy9kZWxldGluZyB3YXRjaHBvaW50cwotKyAgICAgdXBkYXRlcyB0 aGUgU1RBVEUgb25seS4gIEl0IGRvZXMgbm90IHVwZGF0ZSB0aGUgcmVhbCB0aHJlYWQncwotKyAg ICAgZGVidWcgcmVnaXN0ZXJzOyB0aGF0J3Mgb25seSBkb25lIHByaW9yIHRvIHJlc3VtZS4gIElu c3RlYWQsIGlmCi0rICAgICB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gdGhlIG1pcnJvciBjaGFu Z2VzLCBhIHRlbXBvcmFyeSBhbmQKLSsgICAgIHRyYW5zcGFyZW50IHN0b3Agb24gYWxsIHRocmVh ZHMgaXMgZm9yY2VkIHNvIHRoZXkgY2FuIGdldCB0aGVpcgotKyAgICAgY29weSBvZiB0aGUgZGVi dWcgcmVnaXN0ZXJzIHVwZGF0ZWQgb24gcmUtcmVzdW1lLiAgTm93LCBzYXksCi0rICAgICBhIHRo cmVhZCBoaXQgYSB3YXRjaHBvaW50IGJlZm9yZSBoYXZpbmcgYmVlbiB1cGRhdGVkIHdpdGggdGhl IG5ldwotKyAgICAgU1RBVEUgY29udGVudHMsIGFuZCB3ZSBoYXZlbid0IHlldCBoYW5kbGVkIHRo ZSBjb3JyZXNwb25kaW5nCi0rICAgICBTSUdUUkFQLiAgSWYgd2UgdHJ1c3RlZCBTVEFURSBiZWxv dywgd2UnZCBtaXN0YWtlIHRoZSByZWFsCi0rICAgICB0cmFwcGVkIGFkZHJlc3MgKGZyb20gdGhl IGxhc3QgdGltZSB3ZSBoYWQgdXBkYXRlZCBkZWJ1ZwotKyAgICAgcmVnaXN0ZXJzIGluIHRoZSB0 aHJlYWQpIHdpdGggd2hhdGV2ZXIgd2FzIGN1cnJlbnRseSBpbiBTVEFURS4KLSsgICAgIFNvIHRv IGZpeCB0aGlzLCBTVEFURSBhbHdheXMgcmVwcmVzZW50cyBpbnRlbnRpb24sIHdoYXQgd2UgX3dh bnRfCi0rICAgICB0aHJlYWRzIHRvIGhhdmUgaW4gZGVidWcgcmVnaXN0ZXJzLiAgVG8gZ2V0IGF0 IHRoZSBhZGRyZXNzIGFuZAotKyAgICAgY2F1c2Ugb2YgdGhlIHRyYXAsIHdlIG5lZWQgdG8gcmVh ZCB0aGUgc3RhdGUgdGhlIHRocmVhZCBzdGlsbCBoYXMKLSsgICAgIGluIGl0cyBkZWJ1ZyByZWdp c3RlcnMuCi0gCi0gICAgICBJbiBzdW0sIGFsd2F5cyBnZXQgdGhlIGN1cnJlbnQgZGVidWcgcmVn aXN0ZXIgdmFsdWVzIHRoZSBjdXJyZW50Ci0gICAgICB0aHJlYWQgaGFzLCBpbnN0ZWFkIG9mIHRy dXN0aW5nIHRoZSBnbG9iYWwgbWlycm9yLiAgSWYgdGhlIHRocmVhZAotQEAgLTY2MywxMSArNzQ0 LDExIEBAIGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMs IENPUkVfQUREUiAqYWRkcl9wKQotIAkgIGFkZHIgPSBpMzg2X2RyX2xvdy5nZXRfYWRkciAoaSk7 Ci0gCSAgcmMgPSAxOwotIAkgIGlmIChtYWludF9zaG93X2RyKQotLQkgICAgaTM4Nl9zaG93X2Ry ICgmZHJfbWlycm9yLCAid2F0Y2hwb2ludF9oaXQiLCBhZGRyLCAtMSwgaHdfd3JpdGUpOwotKwkg ICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgIndhdGNocG9pbnRfaGl0IiwgYWRkciwgLTEsIGh3X3dy aXRlKTsKLSAJfQorLSAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2Jh Ymx5IG5vIHJlYXNvbiBmb3Igbm90CistICAgICBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29k ZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AoKQorLSAgICAgaW50byB0aGUgY29tbWFu ZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKKy0gICAg IGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVuIGVsaW1pbmF0ZWQuICAqLworLSAg d2hpbGUgKDEpCisrI2lmIEhBVkVfUFlUSE9OCisrICBpZiAocHl0aG9uX3NjcmlwdCkKKyAgICAg eworLSAgICAgIGNhdGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFuZF9sb29wLCAwLCAiIiwgUkVU VVJOX01BU0tfQUxMKTsKKysgICAgICBleHRlcm4gaW50IHBhZ2luYXRpb25fZW5hYmxlZDsKKysg ICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAwOworKyAgICAgIHJ1bl9weXRob25fc2NyaXB0IChh cmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRdKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQor KyAgZWxzZQorKyNlbmRpZgorKyAgICB7CisrICAgICAgLyogTk9URTogY2FnbmV5LzE5OTktMTEt MDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90CisrCSBtb3ZpbmcgdGhpcyBs b29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AoKQorKwkgaW50 byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNr IHRoYXQKKysJIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVuIGVsaW1pbmF0ZWQu ICovCisrICAgICAgd2hpbGUgKDEpCisrCXsKKysJICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2Nv bW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7CisrCX0KICAgICAgfQotICAgaWYg KG1haW50X3Nob3dfZHIgJiYgYWRkciA9PSAwKQotLSAgICBpMzg2X3Nob3dfZHIgKCZkcl9taXJy b3IsICJzdG9wcGVkX2RhdGFfYWRkciIsIDAsIDAsIGh3X3dyaXRlKTsKLSsgICAgaTM4Nl9zaG93 X2RyIChzdGF0ZSwgInN0b3BwZWRfZGF0YV9hZGRyIiwgMCwgMCwgaHdfd3JpdGUpOwotIAotICAg aWYgKHJjKQotICAgICAqYWRkcl9wID0gYWRkcjsKLUBAIC02ODcsMTEgKzc2OCwxMiBAQCBzdGF0 aWMgaW50Ci0gaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCi0gCQkJICAgc3RydWN0IGJwX3RhcmdldF9pbmZvICpicF90Z3QpCi0gewotKyAgc3RydWN0 IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwot ICAgdW5zaWduZWQgbGVuX3J3ID0gaTM4Nl9sZW5ndGhfYW5kX3J3X2JpdHMgKDEsIGh3X2V4ZWN1 dGUpOwotICAgQ09SRV9BRERSIGFkZHIgPSBicF90Z3QtPnBsYWNlZF9hZGRyZXNzOwotICAgLyog V29yayBvbiBhIGxvY2FsIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nl c3MsCi0gICAgICBjb21taXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCi0t ICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7Ci0r ICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7Ci0gICBp bnQgcmV0dmFsID0gaTM4Nl9pbnNlcnRfYWxpZ25lZF93YXRjaHBvaW50ICgmbG9jYWxfc3RhdGUs Ci0gCQkJCQkgICAgICAgYWRkciwgbGVuX3J3KSA/IEVCVVNZIDogMDsKLSAKLUBAIC02OTksNyAr NzgxLDcgQEAgaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCi0gICAgIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKCZsb2NhbF9zdGF0ZSk7 Ci0gCi0gICBpZiAobWFpbnRfc2hvd19kcikKLS0gICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9y LCAiaW5zZXJ0X2h3YnAiLCBhZGRyLCAxLCBod19leGVjdXRlKTsKLSsgICAgaTM4Nl9zaG93X2Ry IChzdGF0ZSwgImluc2VydF9od2JwIiwgYWRkciwgMSwgaHdfZXhlY3V0ZSk7Ci0gCi0gICByZXR1 cm4gcmV0dmFsOwotIH0KLUBAIC03MTEsMTEgKzc5MywxMiBAQCBzdGF0aWMgaW50Ci0gaTM4Nl9y ZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJICAgc3Ry dWN0IGJwX3RhcmdldF9pbmZvICpicF90Z3QpCi0gewotKyAgc3RydWN0IGkzODZfZGVidWdfcmVn X3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwotICAgdW5zaWduZWQgbGVu X3J3ID0gaTM4Nl9sZW5ndGhfYW5kX3J3X2JpdHMgKDEsIGh3X2V4ZWN1dGUpOwotICAgQ09SRV9B RERSIGFkZHIgPSBicF90Z3QtPnBsYWNlZF9hZGRyZXNzOwotICAgLyogV29yayBvbiBhIGxvY2Fs IGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3MsCi0gICAgICBjb21t aXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCi0tICBzdHJ1Y3QgaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7Ci0rICBzdHJ1Y3QgaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7Ci0gICBpbnQgcmV0dmFsID0gaTM4 Nl9yZW1vdmVfYWxpZ25lZF93YXRjaHBvaW50ICgmbG9jYWxfc3RhdGUsCi0gCQkJCQkgICAgICAg YWRkciwgbGVuX3J3KTsKLSAKLUBAIC03MjMsNyArODA2LDcgQEAgaTM4Nl9yZW1vdmVfaHdfYnJl YWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgIGkzODZfdXBkYXRlX2luZmVy aW9yX2RlYnVnX3JlZ3MgKCZsb2NhbF9zdGF0ZSk7Ci0gCi0gICBpZiAobWFpbnRfc2hvd19kcikK LS0gICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAicmVtb3ZlX2h3YnAiLCBhZGRyLCAxLCBo d19leGVjdXRlKTsKLSsgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgInJlbW92ZV9od2JwIiwgYWRk ciwgMSwgaHdfZXhlY3V0ZSk7Ci0gCi0gICByZXR1cm4gcmV0dmFsOwotIH0KLUBAIC03ODgsNiAr ODcxLDEwIEBAIGkzODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKLSAg IHQtPnRvX3JlbW92ZV93YXRjaHBvaW50ID0gaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludDsKLSAgIHQt PnRvX2luc2VydF9od19icmVha3BvaW50ID0gaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludDsKLSAg IHQtPnRvX3JlbW92ZV9od19icmVha3BvaW50ID0gaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludDsK LSsKLSsgIGlmIChpMzg2X2luZmVyaW9yX2RhdGEgPT0gTlVMTCkKLSsgICAgaTM4Nl9pbmZlcmlv cl9kYXRhCi0rICAgICAgPSByZWdpc3Rlcl9pbmZlcmlvcl9kYXRhX3dpdGhfY2xlYW51cCAoaTM4 Nl9pbmZlcmlvcl9kYXRhX2NsZWFudXApOwotIH0KLSAKLSB2b2lkCi1kaWZmIC0tZ2l0IGEvZ2Ri L2kzODYtdGRlcC5jIGIvZ2RiL2kzODYtdGRlcC5jCi1pbmRleCA1NDkyOTdlLi41NzgzYzRjIDEw MDY0NAotLS0tIGEvZ2RiL2kzODYtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni10ZGVwLmMKLUBAIC01 OCw4ICs1OCwxNCBAQAotICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LmMiCi0gI2lu Y2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1tbXguYyIKLSAKLSsjaW5jbHVkZSAic3RhcC1wcm9i ZS5oIgotICNpbmNsdWRlICJheC5oIgotICNpbmNsdWRlICJheC1nZGIuaCIKLSsjaW5jbHVkZSAi dXNlci1yZWdzLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAiZXhw cmVzc2lvbi5oIgotKyNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgotKyNpbmNsdWRlIDxjdHlwZS5o PgotIAotIC8qIFJlZ2lzdGVyIG5hbWVzLiAgKi8KLSAKLUBAIC03MjQ2LDYgKzcyNTIsMzEyIEBA IGkzODZfdmFsaWRhdGVfdGRlc2NfcCAoc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCwKLSAgIHJl dHVybiB2YWxpZF9wOworICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21t YW5kLiAgKi8KICB9CitAQCAtMTAzMCw3ICsxMDc3LDEyIEBAIHByaW50X2dkYl9oZWxwIChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtKQorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorIFRoaXMgaXMg dGhlIEdOVSBkZWJ1Z2dlci4gIFVzYWdlOlxuXG5cCisgICAgIGdkYiBbb3B0aW9uc10gW2V4ZWN1 dGFibGUtZmlsZSBbY29yZS1maWxlIG9yIHByb2Nlc3MtaWRdXVxuXAorLSAgICBnZGIgW29wdGlv bnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG5cblwK KysgICAgZ2RiIFtvcHRpb25zXSAtLWFyZ3MgZXhlY3V0YWJsZS1maWxlIFtpbmZlcmlvci1hcmd1 bWVudHMgLi4uXVxuIiksIHN0cmVhbSk7CisrI2lmIEhBVkVfUFlUSE9OCisrICBmcHV0c191bmZp bHRlcmVkIChfKCJcCisrICAgIGdkYiBbb3B0aW9uc10gWy0tcHl0aG9ufC1QXSBzY3JpcHQtZmls ZSBbc2NyaXB0LWFyZ3VtZW50cyAuLi5dXG4iKSwgc3RyZWFtKTsKKysjZW5kaWYKKysgIGZwdXRz X3VuZmlsdGVyZWQgKF8oIlxuXAorIE9wdGlvbnM6XG5cblwKKyAiKSwgc3RyZWFtKTsKKyAgIGZw dXRzX3VuZmlsdGVyZWQgKF8oIlwKK0BAIC0xMDcwLDcgKzExMjIsMTMgQEAgT3B0aW9uczpcblxu XAorICAgLS1udwkJICAgICBEbyBub3QgdXNlIGEgd2luZG93IGludGVyZmFjZS5cblwKKyAgIC0t bnggICAgICAgICAgICAgICBEbyBub3QgcmVhZCAiKSwgc3RyZWFtKTsKKyAgIGZwdXRzX3VuZmls dGVyZWQgKGdkYmluaXQsIHN0cmVhbSk7CistICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5c blwKKysgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlLlxuIiksIHN0cmVhbSk7CisrI2lmIEhB VkVfUFlUSE9OCisrICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisrICAtLXB5dGhvbiwgLVAgICAg ICAgRm9sbG93aW5nIGFyZ3VtZW50IGlzIFB5dGhvbiBzY3JpcHQgZmlsZTsgcmVtYWluaW5nXG5c CisrICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gc2NyaXB0Llxu IiksIHN0cmVhbSk7CisrI2VuZGlmCisrICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisgICAtLXF1 aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5c CisgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3Qg YWNjZXNzLlxuXAorICIpLCBzdHJlYW0pOworZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMg Yi9nZGIvcC12YWxwcmludC5jCitpbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAorLS0tIGEv Z2RiL3AtdmFscHJpbnQuYworKysrIGIvZ2RiL3AtdmFscHJpbnQuYworQEAgLTM5LDYgKzM5LDcg QEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKKyAjaW5j bHVkZSAiZXhjZXB0aW9ucy5oIgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAMCiAgCi0raW50 Ci0raTM4Nl9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Y29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gKCpzID09ICckJyAvKiBMaXRlcmFsIG51bWJl ci4gICovCi0rCSAgfHwgKGlzZGlnaXQgKCpzKSAmJiBzWzFdID09ICcoJyAmJiBzWzJdID09ICcl JykgLyogRGlzcGxhY2VtZW50LiAgKi8KLSsJICB8fCAoKnMgPT0gJygnICYmIHNbMV0gPT0gJyUn KSAvKiBSZWdpc3RlciBpbmRpcmVjdGlvbi4gICovCi0rCSAgfHwgKCpzID09ICclJyAmJiBpc2Fs cGhhIChzWzFdKSkpOyAvKiBSZWdpc3RlciBhY2Nlc3MuICAqLwotK30KLSsKLStpbnQKLStpMzg2 X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJ ICAgICAgIHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewotKyAgY29uc3QgY2hhciAqcyA9 IHAtPmFyZzsKLSsKLSsgIC8qIEluIG9yZGVyIHRvIHBhcnNlIHNwZWNpYWwgdG9rZW5zLCB3ZSB1 c2UgYSBzdGF0ZS1tYWNoaW5lIHRoYXQgZ28KLSsgICAgIHRocm91Z2ggZXZlcnkga25vd24gdG9r ZW4gYW5kIHRyeSB0byBnZXQgYSBtYXRjaC4gICovCi0rICBlbnVtCi0rICAgIHsKLSsgICAgICBU UklQTEVULAotKyAgICAgIFRIUkVFX0FSR19ESVNQTEFDRU1FTlQsCi0rICAgICAgRE9ORQotKyAg ICB9IGN1cnJlbnRfc3RhdGU7Ci0rCi0rICBjdXJyZW50X3N0YXRlID0gVFJJUExFVDsKLSsKLSsg IC8qIFRoZSBzcGVjaWFsIHRva2VucyB0byBiZSBwYXJzZWQgaGVyZSBhcmU6Ci0rCi0rICAgICAt IGByZWdpc3RlciBiYXNlICsgKHJlZ2lzdGVyIGluZGV4ICogc2l6ZSkgKyBvZmZzZXQnLCBhcyBy ZXByZXNlbnRlZAotKyAgICAgaW4gYCglcmN4LCVyYXgsOCknLCBvciBgW09GRlNFVF0oQkFTRV9S RUcsSU5ERVhfUkVHWyxTSVpFXSknLgotKwotKyAgICAgLSBPcGVyYW5kcyBvZiB0aGUgZm9ybSBg LTgrMysxKCVyYnApJywgd2hpY2ggbXVzdCBiZSBpbnRlcnByZXRlZCBhcwotKyAgICAgYCooLTgg KyAzIC0gMSArICh2b2lkICopICRlYXgpJy4gICovCi0rCi0rICB3aGlsZSAoY3VycmVudF9zdGF0 ZSAhPSBET05FKQorIC8qIERlY29yYXRpb25zIGZvciBQYXNjYWwuICAqLworQEAgLTc0LDggKzc1 LDMxIEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKKyAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7CisgICBDT1JFX0FERFIgYWRk cjsKKyAgIGludCB3YW50X3NwYWNlID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwor KyAgc3RydWN0IHR5cGUgKnNhdmVkX3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2Fk ZHJlc3MgPSBhZGRyZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2Ns ZWFudXAsIDApOworKyAgYWRkcmVzcyArPSBlbWJlZGRlZF9vZmZzZXQ7CisrICB0eXBlID0gb2Jq ZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUsICZhZGRyZXNzKTsKKysgIGlmICh0eXBlID09IE5V TEwpCiArICAgIHsKLSsgICAgICBjb25zdCBjaGFyICpzID0gcC0+YXJnOwotKwotKyAgICAgIHN3 aXRjaCAoY3VycmVudF9zdGF0ZSkKLSsJewotKwljYXNlIFRSSVBMRVQ6Ci0rCSAgICB7Ci0rCSAg ICAgIGlmIChpc2RpZ2l0ICgqcykgfHwgKnMgPT0gJy0nIHx8ICpzID09ICcrJykKLSsJCXsKLSsJ CSAgaW50IGdvdF9taW51c1szXTsKLSsJCSAgaW50IGk7Ci0rCQkgIGxvbmcgZGlzcGxhY2VtZW50 c1szXTsKLSsJCSAgY29uc3QgY2hhciAqc3RhcnQ7Ci0rCQkgIGNoYXIgKnJlZ25hbWU7Ci0rCQkg IGludCBsZW47Ci0rCQkgIHN0cnVjdCBzdG9rZW4gc3RyOwotKwotKwkJICBnb3RfbWludXNbMF0g PSAwOwotKwkJICBpZiAoKnMgPT0gJysnKQotKwkJICAgICsrczsKLSsJCSAgZWxzZSBpZiAoKnMg PT0gJy0nKQotKwkJICAgIHsKLSsJCSAgICAgICsrczsKLSsJCSAgICAgIGdvdF9taW51c1swXSA9 IDE7Ci0rCQkgICAgfQotKwotKwkJICBkaXNwbGFjZW1lbnRzWzBdID0gc3RydG9sIChzLCAoY2hh ciAqKikgJnMsIDEwKTsKLSsKLSsJCSAgaWYgKCpzICE9ICcrJyAmJiAqcyAhPSAnLScpCi0rCQkg ICAgLyogV2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggYSB0cmlwbGV0LiAgKi8KLSsJCSAgICBicmVh azsKLSsKLSsJCSAgZ290X21pbnVzWzFdID0gMDsKLSsJCSAgaWYgKCpzID09ICcrJykKLSsJCSAg ICArK3M7Ci0rCQkgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICArK3M7Ci0rCQkgICAgICBnb3Rf bWludXNbMV0gPSAxOwotKwkJICAgIH0KLSsKLSsJCSAgZGlzcGxhY2VtZW50c1sxXSA9IHN0cnRv bCAocywgKGNoYXIgKiopICZzLCAxMCk7Ci0rCi0rCQkgIGlmICgqcyAhPSAnKycgJiYgKnMgIT0g Jy0nKQotKwkJICAgIC8qIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgdHJpcGxldC4gICovCi0r CQkgICAgYnJlYWs7Ci0rCi0rCQkgIGdvdF9taW51c1syXSA9IDA7Ci0rCQkgIGlmICgqcyA9PSAn KycpCi0rCQkgICAgKytzOwotKwkJICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgKytzOwotKwkJ ICAgICAgZ290X21pbnVzWzJdID0gMTsKLSsJCSAgICB9Ci0rCi0rCQkgIGRpc3BsYWNlbWVudHNb Ml0gPSBzdHJ0b2wgKHMsIChjaGFyICoqKSAmcywgMTApOwotKwotKwkJICBpZiAoKnMgIT0gJygn IHx8IHNbMV0gIT0gJyUnKQotKwkJICAgIGJyZWFrOwotKwotKwkJICBzICs9IDI7Ci0rCQkgIHN0 YXJ0ID0gczsKLSsKLSsJCSAgd2hpbGUgKGlzYWxudW0gKCpzKSkKLSsJCSAgICArK3M7Ci0rCi0r CQkgIGlmICgqcysrICE9ICcpJykKLSsJCSAgICBicmVhazsKLSsKLSsJCSAgbGVuID0gcyAtIHN0 YXJ0OwotKwkJICByZWduYW1lID0gYWxsb2NhIChsZW4gKyAxKTsKLSsKLSsJCSAgc3RybmNweSAo cmVnbmFtZSwgc3RhcnQsIGxlbik7Ci0rCQkgIHJlZ25hbWVbbGVuXSA9ICdcMCc7Ci0rCi0rCQkg IGlmICh1c2VyX3JlZ19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsCi0rCQkJCQkJICAgcmVn bmFtZSwgbGVuKSA9PSAtMSkKLSsJCSAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1l IGAlcycgIgotKwkJCSAgICAgIm9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJCQkgICByZWduYW1l LCBwLT5zYXZlZF9hcmcpOwotKwotKwkJICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQotKwkJICAg IHsKLSsJCSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIHdy aXRlX2V4cF9lbHRfdHlwZQotKwkJCShidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xv bmcpOwotKwkJICAgICAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChkaXNwbGFjZW1lbnRzW2ldKTsK LSsJCSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIGlmIChn b3RfbWludXNbaV0pCi0rCQkJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKLSsJCSAg ICB9Ci0rCi0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7Ci0rCQkgIHN0 ci5wdHIgPSByZWduYW1lOwotKwkJICBzdHIubGVuZ3RoID0gbGVuOwotKwkJICB3cml0ZV9leHBf c3RyaW5nIChzdHIpOwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOwot KwkJICAKLSsJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7Ci0rCQkgIHdyaXRl X2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cik7 Ci0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1QpOwotKwotKwkJICB3cml0ZV9l eHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKLSsJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJ Tk9QX0FERCk7Ci0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9BREQpOwotKwotKwkJ ICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsJCSAgd3JpdGVfZXhwX2VsdF90 eXBlIChsb29rdXBfcG9pbnRlcl90eXBlIChwLT5hcmdfdHlwZSkpOwotKwkJICB3cml0ZV9leHBf ZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsKLSsJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVO T1BfSU5EKTsKLSsKLSsJCSAgcC0+YXJnID0gczsKLSsKLSsJCSAgcmV0dXJuIDE7Ci0rCQl9Ci0r CSAgICAgIGJyZWFrOwotKwkgICAgfQotKwljYXNlIFRIUkVFX0FSR19ESVNQTEFDRU1FTlQ6Ci0r CSAgICB7Ci0rCSAgICAgIGlmIChpc2RpZ2l0ICgqcykgfHwgKnMgPT0gJygnIHx8ICpzID09ICct JyB8fCAqcyA9PSAnKycpCi0rCQl7Ci0rCQkgIGludCBvZmZzZXRfbWludXMgPSAwOwotKwkJICBs b25nIG9mZnNldCA9IDA7Ci0rCQkgIGludCBzaXplX21pbnVzID0gMDsKLSsJCSAgbG9uZyBzaXpl ID0gMDsKLSsJCSAgY29uc3QgY2hhciAqc3RhcnQ7Ci0rCQkgIGNoYXIgKmJhc2U7Ci0rCQkgIGlu dCBsZW5fYmFzZTsKLSsJCSAgY2hhciAqaW5kZXg7Ci0rCQkgIGludCBsZW5faW5kZXg7Ci0rCQkg IHN0cnVjdCBzdG9rZW4gYmFzZV90b2tlbiwgaW5kZXhfdG9rZW47Ci0rCi0rCQkgIGlmICgqcyA9 PSAnKycpCi0rCQkgICAgKytzOwotKwkJICBlbHNlIGlmICgqcyA9PSAnLScpCi0rCQkgICAgewot KwkJICAgICAgKytzOwotKwkJICAgICAgb2Zmc2V0X21pbnVzID0gMTsKLSsJCSAgICB9Ci0rCi0r CQkgIGlmIChvZmZzZXRfbWludXMgJiYgIWlzZGlnaXQgKCpzKSkKLSsJCSAgICBicmVhazsKLSsK LSsJCSAgaWYgKGlzZGlnaXQgKCpzKSkKLSsJCSAgICBvZmZzZXQgPSBzdHJ0b2wgKHMsIChjaGFy ICoqKSAmcywgMTApOwotKwotKwkJICBpZiAoKnMgIT0gJygnIHx8IHNbMV0gIT0gJyUnKQotKwkJ ICAgIGJyZWFrOwotKwotKwkJICBzICs9IDI7Ci0rCQkgIHN0YXJ0ID0gczsKLSsKLSsJCSAgd2hp bGUgKGlzYWxudW0gKCpzKSkKLSsJCSAgICArK3M7Ci0rCi0rCQkgIGlmICgqcyAhPSAnLCcgfHwg c1sxXSAhPSAnJScpCi0rCQkgICAgYnJlYWs7Ci0rCi0rCQkgIGxlbl9iYXNlID0gcyAtIHN0YXJ0 OwotKwkJICBiYXNlID0gYWxsb2NhIChsZW5fYmFzZSArIDEpOwotKwkJICBzdHJuY3B5IChiYXNl LCBzdGFydCwgbGVuX2Jhc2UpOwotKwkJICBiYXNlW2xlbl9iYXNlXSA9ICdcMCc7Ci0rCi0rCQkg IGlmICh1c2VyX3JlZ19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsCi0rCQkJCQkJICAgYmFz ZSwgbGVuX2Jhc2UpID09IC0xKQotKwkJICAgIGVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5h bWUgYCVzJyAiCi0rCQkJICAgICAib24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkJCSAgIGJhc2Us IHAtPnNhdmVkX2FyZyk7Ci0rCi0rCQkgIHMgKz0gMjsKLSsJCSAgc3RhcnQgPSBzOwotKwotKwkJ ICB3aGlsZSAoaXNhbG51bSAoKnMpKQotKwkJICAgICsrczsKLSsKLSsJCSAgbGVuX2luZGV4ID0g cyAtIHN0YXJ0OwotKwkJICBpbmRleCA9IGFsbG9jYSAobGVuX2luZGV4ICsgMSk7Ci0rCQkgIHN0 cm5jcHkgKGluZGV4LCBzdGFydCwgbGVuX2luZGV4KTsKLSsJCSAgaW5kZXhbbGVuX2luZGV4XSA9 ICdcMCc7Ci0rCi0rCQkgIGlmICh1c2VyX3JlZ19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gs Ci0rCQkJCQkJICAgaW5kZXgsIGxlbl9pbmRleCkgPT0gLTEpCi0rCQkgICAgZXJyb3IgKF8oIklu dmFsaWQgcmVnaXN0ZXIgbmFtZSBgJXMnICIKLSsJCQkgICAgICJvbiBleHByZXNzaW9uIGAlcycu IiksCi0rCQkJICAgaW5kZXgsIHAtPnNhdmVkX2FyZyk7Ci0rCi0rCQkgIGlmICgqcyAhPSAnLCcg JiYgKnMgIT0gJyknKQotKwkJICAgIGJyZWFrOwotKwotKwkJICBpZiAoKnMgPT0gJywnKQotKwkJ ICAgIHsKLSsJCSAgICAgICsrczsKLSsJCSAgICAgIGlmICgqcyA9PSAnKycpCi0rCQkJKytzOwot KwkJICAgICAgZWxzZSBpZiAoKnMgPT0gJy0nKQotKwkJCXsKLSsJCQkgICsrczsKLSsJCQkgIHNp emVfbWludXMgPSAxOwotKwkJCX0KLSsKLSsJCSAgICAgIHNpemUgPSBzdHJ0b2wgKHMsIChjaGFy ICoqKSAmcywgMTApOwotKwotKwkJICAgICAgaWYgKCpzICE9ICcpJykKLSsJCQlicmVhazsKLSsJ CSAgICB9Ci0rCi0rCQkgICsrczsKLSsKLSsJCSAgaWYgKG9mZnNldCkKLSsJCSAgICB7Ci0rCQkg ICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Ci0rCQkgICAgICB3cml0ZV9leHBf ZWx0X3R5cGUKLSsJCQkoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9sb25nKTsKLSsJ CSAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAob2Zmc2V0KTsKLSsJCSAgICAgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIGlmIChvZmZzZXRfbWludXMpCi0rCQkJ d3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKLSsJCSAgICB9Ci0rCi0rCQkgIHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7Ci0rCQkgIGJhc2VfdG9rZW4ucHRyID0gYmFz ZTsKLSsJCSAgYmFzZV90b2tlbi5sZW5ndGggPSBsZW5fYmFzZTsKLSsJCSAgd3JpdGVfZXhwX3N0 cmluZyAoYmFzZV90b2tlbik7Ci0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RF Uik7Ci0rCQkgIAotKwkJICBpZiAob2Zmc2V0KQotKwkJICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChCSU5PUF9BREQpOwotKwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIp OwotKwkJICBpbmRleF90b2tlbi5wdHIgPSBpbmRleDsKLSsJCSAgaW5kZXhfdG9rZW4ubGVuZ3Ro ID0gbGVuX2luZGV4OwotKwkJICB3cml0ZV9leHBfc3RyaW5nIChpbmRleF90b2tlbik7Ci0rCQkg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7Ci0rCi0rCQkgIGlmIChzaXplKQot KwkJICAgIHsKLSsJCSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAg ICAgIHdyaXRlX2V4cF9lbHRfdHlwZQotKwkJCShidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWls dGluX2xvbmcpOwotKwkJICAgICAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChzaXplKTsKLSsJCSAg ICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIGlmIChzaXplX21p bnVzKQotKwkJCXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX05FRyk7Ci0rCQkgICAgICB3cml0 ZV9leHBfZWx0X29wY29kZSAoQklOT1BfTVVMKTsKLSsJCSAgICB9Ci0rCi0rCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChCSU5PUF9BREQpOwotKwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAo VU5PUF9DQVNUKTsKLSsJCSAgd3JpdGVfZXhwX2VsdF90eXBlIChsb29rdXBfcG9pbnRlcl90eXBl IChwLT5hcmdfdHlwZSkpOwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsK LSsKLSsJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfSU5EKTsKLSsKLSsJCSAgcC0+YXJn ID0gczsKLSsKLSsJCSAgcmV0dXJuIDE7Ci0rCQl9Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQot Kwl9Ci0rCi0rICAgICAgLyogQWR2YW5jaW5nIHRvIHRoZSBuZXh0IHN0YXRlLiAgKi8KLSsgICAg ICArK2N1cnJlbnRfc3RhdGU7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNz X2RhdGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBnZGJfZmx1c2gg KHN0cmVhbSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJldHVybjsK ICsgICAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIAwKLSBzdGF0aWMgc3RydWN0IGdkYmFy Y2ggKgotIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVj dCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLWRpZmYgLS1naXQgYS9nZGIvaTM4Ni10ZGVwLmggYi9n ZGIvaTM4Ni10ZGVwLmgKLWluZGV4IDg3MDA1NGYuLjlmZmJlNDQgMTAwNjQ0Ci0tLS0gYS9nZGIv aTM4Ni10ZGVwLmgKLSsrKyBiL2dkYi9pMzg2LXRkZXAuaAotQEAgLTM3OSw2ICszNzksMTUgQEAg ZXh0ZXJuIHZvaWQgaTM4Nl9zdnI0X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvLCBzdHJ1 Y3QgZ2RiYXJjaCAqKTsKKysgIGlmIChhZGRyZXNzICE9IHNhdmVkX2FkZHJlc3MgKyBlbWJlZGRl ZF9vZmZzZXQpCisrICAgIHsKKysgICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5 cGUpOwogIAotIGV4dGVybiBpbnQgaTM4Nl9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgYWRkcik7Ci0rCi0rLyogU3lzdGVtVGFwIHJlbGF0ZWQg ZnVuY3Rpb25zLiAgKi8KLSsKLStleHRlcm4gaW50IGkzODZfc3RhcF9pc19zaW5nbGVfb3BlcmFu ZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQljb25zdCBjaGFyICpzKTsKLSsKLStl eHRlcm4gaW50IGkzODZfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKLSsJCQkJCSAgc3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCk7Ci0rCi0gDAorLSAg Q0hFQ0tfVFlQRURFRiAodHlwZSk7CisrICAgICAgdmFsYWRkciA9IHhtYWxsb2MgKGxlbmd0aCk7 CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICopIHZhbGFkZHIpOworKyAg ICAgIHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFsYWRkciwgbGVuZ3RoKTsK KysgICAgICBlbWJlZGRlZF9vZmZzZXQgPSAwOworKyAgICB9CisrICBlbHNlCisrICAgIGFkZHJl c3MgLT0gZW1iZWRkZWRfb2Zmc2V0OworICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQorICAg ICB7CisgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgorQEAgLTEzMSw4ICsxNTUsOCBAQCBwYXNj YWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CisgCQl7CisgCQkgIGkgPSAwOworIAkJfQorLQkgICAgICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVu dHMgKHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNldCwKKy0JCQkJCWFkZHJlc3MsIHN0cmVh bSwgcmVjdXJzZSwKKysJICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzYXZlZF90eXBl LCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsCisrCQkJCQlzYXZlZF9hZGRyZXNzLCBzdHJlYW0s IHJlY3Vyc2UsCisgCQkJCQlvcmlnaW5hbF92YWx1ZSwgb3B0aW9ucywgaSk7CisgCSAgICAgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0iKTsKKyAJICAgIH0KK0BAIC0xNzAsNiArMTk0LDcg QEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAorIAl7CisgCSAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24gaXQgcG9pbnRz IHRvLiAgKi8KKyAJICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChvcHRpb25zLCBnZGJhcmNoLCBh ZGRyLCBzdHJlYW0sIGRlbWFuZ2xlKTsKKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisgCSAg cmV0dXJuOworIAl9CiAgCi0gLyogRnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZXhwb3J0ZWQgZnJv bSBpMzg2YnNkLXRkZXAuYy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2lu ZnJ1bi5jCi1pbmRleCAyNGQyNzIwLi5jNTE2YjhiIDEwMDY0NAotLS0tIGEvZ2RiL2luZnJ1bi5j Ci0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC01NSw2ICs1NSw4IEBACi0gI2luY2x1ZGUgImNvbnRp bnVhdGlvbnMuaCIKLSAjaW5jbHVkZSAiaW50ZXJwcy5oIgotICNpbmNsdWRlICJza2lwLmgiCi0r I2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKLSsjaW5jbHVkZSAib2JqZmlsZXMuaCIKK0BAIC0yNzEs NiArMjk2LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAorIAkgICAgfQorIAl9CiAgCi0gLyogUHJvdG90eXBlcyBmb3IgbG9j YWwgZnVuY3Rpb25zICovCisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgICAgIHJl dHVybjsKICAKLUBAIC0yMzc5LDcgKzIzODEsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RlcF9p bnRvX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSBzdGF0aWMgdm9pZCBoYW5k bGVfc3RlcF9pbnRvX2Z1bmN0aW9uX2JhY2t3YXJkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK LSAJCQkJCQlzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci0gc3RhdGljIHZv aWQgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRl ICosCi0tCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9sICopOwotKwkJ CQkgICAgc3RydWN0IGZyYW1lX2luZm8gKik7CisgICAgIGNhc2UgVFlQRV9DT0RFX1JFRjoKK0BA IC00MjEsNiArNDQ3LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOworICAgICB9 CisgICBnZGJfZmx1c2ggKHN0cmVhbSk7CisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisgfQor IAwKKyB2b2lkCitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworaW5kZXgg ZjU0YzZmMi4uNzBlOWEwNSAxMDA2NDQKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFy c2UuYworQEAgLTE1MTYsNiArMTUxNiw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25z dCBjaGFyICp5LCAuLi4pCiAgCi0gc3RhdGljIHZvaWQgc3RvcF9zdGVwcGluZyAoc3RydWN0IGV4 ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwotIHN0YXRpYyB2b2lkIHByZXBhcmVfdG9fd2Fp dCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwotQEAgLTQ0MTcsOSArNDQx OSwxNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKKyBpbnQKKyBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKysJCQkgaW50ICgqdHlw ZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSBpbnQgKCpvYmpm aWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJCSAgICAgIHZvaWQgKmRh dGEpLAorIAkJCSB2b2lkICpkYXRhKQorQEAgLTE1NTcsNyArMTU1OCw3IEBAIG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorIAkgICAgc3Ry dWN0IHR5cGUgKnR5cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7CisgCSAgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CiAgCi0gCWlmICh3aGF0Lmlz X2xvbmdqbXApCi0gCSAgewotLQkgICAgaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9w IChnZGJhcmNoKQotLQkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLAot LQkJCQkJCWZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCSAgICBzdHJ1Y3QgdmFsdWUgKmFyZ192YWx1 ZTsKLSsKLSsJICAgIC8qIElmIHdlIHNldCB0aGUgbG9uZ2ptcCBicmVha3BvaW50IHZpYSBhIFN5 c3RlbVRhcCBwcm9iZSwKLSsJICAgICAgIHRoZW4gdXNlIGl0IHRvIGV4dHJhY3QgdGhlIGFyZ3Vt ZW50cy4gIFRoZSBkZXN0aW5hdGlvbgotKwkgICAgICAgUEMgaXMgdGhlIHRoaXJkIGFyZ3VtZW50 IHRvIHRoZSBwcm9iZS4gICovCi0rCSAgICBhcmdfdmFsdWUgPSBzdGFwX3NhZmVfZXZhbHVhdGVf YXRfcGMgKGZyYW1lLCAyKTsKLSsJICAgIGlmIChhcmdfdmFsdWUpCi0rCSAgICAgIGptcF9idWZf cGMgPSB2YWx1ZV9hc19hZGRyZXNzIChhcmdfdmFsdWUpOwotKwkgICAgZWxzZSBpZiAoIWdkYmFy Y2hfZ2V0X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCi0rCQkgICAgIHx8ICFnZGJhcmNoX2dl dF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKLSsJCQkJCQkgICAgIGZyYW1lLCAmam1wX2J1Zl9w YykpCi0gCSAgICAgIHsKLSAJCWlmIChkZWJ1Z19pbmZydW4pCi0gCQkgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywKLUBAIC00NDM3LDEyICs0NDQ3LDcgQEAgcHJvY2Vzc19ldmVudF9z dG9wX3Rlc3Q6Ci0gCSAgICBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJj aCwgam1wX2J1Zl9wYyk7CistCSAgICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykgKG9i amZpbGUsIGRhdGEpKQorKwkgICAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2Jq ZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgCSAgICAgIHJldHVybiAxOwogIAkgIH0KLSAJ ZWxzZQotLQkgIHsKLS0JICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rp b24gKGZyYW1lKTsKLS0KLS0JICAgIGlmIChmdW5jKQotLQkgICAgICBjaGVja19leGNlcHRpb25f cmVzdW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKLS0JICB9Ci0rCSAgY2hlY2tfZXhjZXB0aW9uX3Jl c3VtZSAoZWNzLCBmcmFtZSk7Ci0gCWtlZXBfZ29pbmcgKGVjcyk7Ci0gCXJldHVybjsKKyAgICAg ICB9CitAQCAtMTU3NSw3ICsxNTc2LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCi1AQCAtNTUyNCwxNSArNTUyOSw2NSBAQCBp bnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRw LAotICAgICB9Ci0gfQorIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBpdHNl bGYgaXMgcGxhY2VkLgorIAkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJlIE5V TEwuICAqLworLQlpZiAoKCpvYmpmaWxlX2Z1bmMpIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5v YmpmaWxlLCBkYXRhKSkKKysJaWYgKG9iamZpbGVfZnVuYworKwkgICAgJiYgKCpvYmpmaWxlX2Z1 bmMpIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5vYmpmaWxlLCBkYXRhKSkKKyAJICByZXR1cm4g MTsKICAKLSsvKiBBIGhlbHBlciBmb3IgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSB0aGF0IHNldHMg YW4KLSsgICBleGNlcHRpb24tYnJlYWtwb2ludCBiYXNlZCBvbiBhIFN5c3RlbVRhcCBwcm9iZS4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2Jl IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAotKwkJCQkgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJv YmUgKnByb2JlLAotKwkJCQkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCSAgICBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0rewotKyAgc3RydWN0IHZhbHVlICphcmdfdmFsdWU7 Ci0rICBDT1JFX0FERFIgaGFuZGxlcjsKLSsgIHN0cnVjdCBicmVha3BvaW50ICpicDsKLSsKLSsg IGFyZ192YWx1ZSA9IHN0YXBfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoZnJhbWUsIDEpOwotKyAgaWYg KCFhcmdfdmFsdWUpCi0rICAgIHJldHVybjsKLSsKLSsgIGhhbmRsZXIgPSB2YWx1ZV9hc19hZGRy ZXNzIChhcmdfdmFsdWUpOwotKwotKyAgaWYgKGRlYnVnX2luZnJ1bikKLSsgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQg JXNcbiIsCi0rCQkJcGFkZHJlc3MgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLAotKwkJCQkg IGhhbmRsZXIpKTsKLSsKLSsgIGJwID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChn ZXRfZnJhbWVfYXJjaCAoZnJhbWUpLAotKwkJCQkgICAgICAgaGFuZGxlciwgYnBfZXhjZXB0aW9u X3Jlc3VtZSk7Ci0rICBicC0+dGhyZWFkID0gdHAtPm51bTsKLSsgIGluZmVyaW9yX3RocmVhZCAo KS0+Y29udHJvbC5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgPSBicDsKLSt9Ci0rCi0gLyog VGhpcyBpcyBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gaW50ZXJjZXB0ZWQuICBD aGVjayB0bwotICAgIHNlZSB3aGV0aGVyIHRoZSBleGNlcHRpb24ncyBkZXN0aW5hdGlvbiBpcyBv ZiBpbnRlcmVzdCwgYW5kIGlmIHNvLAotICAgIHNldCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFr cG9pbnQgdGhlcmUuICAqLworIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUg Y29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLworQEAgLTE1ODgsMjQgKzE1OTAsMjcgQEAg b3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3Ms CiAgCi0gc3RhdGljIHZvaWQKLSBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcywKLS0JCQlzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHN0 cnVjdCBzeW1ib2wgKmZ1bmMpCi0rCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLSAg IHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZTsKLSsgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKLSsgIHN0cnVjdCBzeW1i b2wgKmZ1bmM7Ci0rCi0rICAvKiBGaXJzdCBzZWUgaWYgdGhpcyBleGNlcHRpb24gdW53aW5kaW5n IGJyZWFrcG9pbnQgd2FzIHNldCB2aWEgYQotKyAgICAgU3lzdGVtVGFwIHByb2JlIHBvaW50LiAg SWYgc28sIHRoZSBwcm9iZSBoYXMgdHdvIGFyZ3VtZW50czogdGhlCi0rICAgICBDRkEgYW5kIHRo ZSBIQU5ETEVSLiAgV2UgaWdub3JlIHRoZSBDRkEsIGV4dHJhY3QgdGhlIGhhbmRsZXIsIGFuZAot KyAgICAgc2V0IGEgYnJlYWtwb2ludCB0aGVyZS4gICovCi0rICBwcm9iZSA9IGZpbmRfcHJvYmVf YnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7Ci0rICBpZiAocHJvYmUpCi0r ICAgIHsKLSsgICAgICBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlIChlY3MtPmV2 ZW50X3RocmVhZCwgcHJvYmUsCi0rCQkJCQkgIG9iamZpbGUsIGZyYW1lKTsKLSsgICAgICByZXR1 cm47Ci0rICAgIH0KLSsKLSsgIGZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsKLSsg IGlmICghZnVuYykKLSsgICAgcmV0dXJuOworICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQ RSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKLSAgIFRS WV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfRVJST1IpCi0gICAgIHsKLUBAIC02NTY0LDcgKzY2MTks OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGx2YWxfZnVuY3Mgc2lnaW5mb192YWx1ZV9mdW5jcyA9 Ci0gICAgaWYgdGhlcmUncyBubyBvYmplY3QgYXZhaWxhYmxlLiAgKi8KKy0gIGlmICh0eXBlICYm IFRZUEVfT0JKRklMRSAodHlwZSkKKysgIGlmICh0eXBlICYmIHR5cGVfZnVuYyAmJiAoKnR5cGVf ZnVuYykgKHR5cGUsIGRhdGEpKQorKyAgICByZXR1cm4gMTsKKysgIGlmICh0eXBlICYmIFRZUEVf T0JKRklMRSAodHlwZSkgJiYgb2JqZmlsZV9mdW5jCisgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMp IChUWVBFX09CSkZJTEUgKHR5cGUpLCBkYXRhKSkKKyAgICAgcmV0dXJuIDE7CistICBpZiAob2Jq ZmlsZSAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQorKyAgaWYgKG9iamZpbGUg JiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgICAg IHJldHVybiAxOwogIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNpZ2luZm9fbWFrZV92YWx1 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQotK3Np Z2luZm9fbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5h bHZhciAqdmFyLAotKwkJICAgIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBpZiAodGFyZ2V0X2hhc19z dGFjawotICAgICAgICYmICFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpCi1A QCAtNzA1OSw2ICs3MTE1LDE1IEBAIHNob3dfc2NoZWR1bGVfbXVsdGlwbGUgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0gCQkJICAgICJvZiBhbGwgcHJvY2Vzc2VzIGlzICVz LlxuIiksIHZhbHVlKTsKKyAgIHJldHVybiAwOwogIH0KICAKLSsvKiBJbXBsZW1lbnRhdGlvbiBv ZiBgc2lnaW5mbycgdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJu YWx2YXJfZnVuY3Mgc2lnaW5mb19mdW5jcyA9Ci0rewotKyAgc2lnaW5mb19tYWtlX3ZhbHVlLAot KyAgTlVMTCwKLSsgIE5VTEwKLSt9OwotKwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9pbmZydW4gKHZv aWQpCi0gewotQEAgLTczNDcsNyArNzQxMiw3IEBAIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBzb21l IHBsYXRmb3Jtcy4iKSwKLSAgICAgIHZhbHVlIHdpdGggYSB2b2lkIHR5cGVkIHZhbHVlLCBhbmQg d2hlbiB3ZSBnZXQgaGVyZSwgZ2RiYXJjaAotICAgICAgaXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LiAg QXQgdGhpcyBwb2ludCwgd2UncmUgcXVpdGUgc3VyZSB0aGVyZQotICAgICAgaXNuJ3QgYW5vdGhl ciBjb252ZW5pZW5jZSB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1lLiAgKi8KLS0gIGNyZWF0ZV9p bnRlcm5hbHZhcl90eXBlX2xhenkgKCJfc2lnaW5mbyIsIHNpZ2luZm9fbWFrZV92YWx1ZSk7Ci0r ICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3NpZ2luZm8iLCAmc2lnaW5mb19mdW5j cywgTlVMTCk7Ci0gCi0gICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoIm9ic2VydmVyIiwgbm9f Y2xhc3MsCi0gCQkJICAgJm9ic2VydmVyX21vZGVfMSwgXygiXAotZGlmZiAtLWdpdCBhL2dkYi9s aW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKLWluZGV4IDA3ODJjNTQuLjMxYmIzNmMgMTAwNjQ0 Ci0tLS0gYS9nZGIvbGluZXNwZWMuYwotKysrIGIvZ2RiL2xpbmVzcGVjLmMKLUBAIC00Myw2ICs0 Myw3IEBACi0gI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSAjaW5jbHVkZSAiZmlsZW5hbWVz LmgiCi0gI2luY2x1ZGUgImFkYS1sYW5nLmgiCi0rI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKLSAK LSB0eXBlZGVmIHN0cnVjdCBzeW10YWIgKnN5bXRhYl9wOwotIERFRl9WRUNfUCAoc3ltdGFiX3Ap OwotQEAgLTgwMiw2ICs4MDMsNyBAQCBrZWVwX25hbWVfaW5mbyAoY2hhciAqcCwgaW50IG9uX2Jv dW5kYXJ5KQotICAgIFBDIHJldHVybmVkIGlzIDAuCi0gICAgRklMRTpGVU5DVElPTiAtLSBsaWtl d2lzZSwgYnV0IHByZWZlciBmdW5jdGlvbnMgaW4gdGhhdCBmaWxlLgotICAgICpFWFBSIC0tIGxp bmUgaW4gd2hpY2ggYWRkcmVzcyBFWFBSIGFwcGVhcnMuCi0rICAgLXAgW09CSkZJTEU6XVtQUk9W SURFUjpdTkFNRSAtLSBhIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUKLSAKLSAgICBUaGlzIG1heSBh bGwgYmUgZm9sbG93ZWQgYnkgYW4gImlmIEVYUFIiLCB3aGljaCB3ZSBpZ25vcmUuCi0gCi1AQCAt ODcyLDYgKzg3NCw5IEBAIGRlY29kZV9saW5lX2ludGVybmFsIChzdHJ1Y3QgbGluZXNwZWNfc3Rh dGUgKnNlbGYsIGNoYXIgKiphcmdwdHIpCi0gICAgICAgcmV0dXJuIGRlY29kZV9pbmRpcmVjdCAo c2VsZiwgYXJncHRyKTsKLSAgICAgfQorLS8qIENhbGwgT0JKRklMRV9GVU5DIGZvciBhbnkgVFlQ RSBhbmQgT0JKRklMRSBmb3VuZCBiZWluZyByZWZlcmVuY2VkIGJ5IEVYUC4KKy0gICBUaGUgZnVu Y3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxMIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0 IHBhc3NlZCBhbgorLSAgIGFyYml0cmFyeSBjYWxsZXIgc3VwcGxpZWQgREFUQSBwb2ludGVyLiAg SWYgYW55IG9mIHRoZSBmdW5jdGlvbnMgcmV0dXJucworLSAgIG5vbi16ZXJvIHZhbHVlIHRoZW4g KGFueSBvdGhlcikgbm9uLXplcm8gdmFsdWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8KKy0g ICB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQgYWZ0ZXIgaXRlcmF0aW5n IHRocm91Z2ggd2hvbGUgRVhQLgorLSAgICovCisrLyogQ2FsbCBUWVBFX0ZVTkMgYW5kIE9CSkZJ TEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcKKysgICByZWZlcmVu Y2VkIGJ5IEVYUC4gIFRoZSBmdW5jdGlvbnMgYXJlIG5ldmVyIGNhbGxlZCB3aXRoIE5VTEwgVFlQ RSBvciBOVUxMCisrICAgT0JKRklMRS4gIEZ1bmN0aW9ucyBnZXQgcGFzc2VkIGFuIGFyYml0cmFy eSBjYWxsZXIgc3VwcGxpZWQgREFUQSBwb2ludGVyLgorKyAgIElmIGFueSBvZiB0aGUgZnVuY3Rp b25zIHJldHVybnMgbm9uLXplcm8gdmFsdWUgdGhlbiAoYW55IG90aGVyKSBub24temVybworKyAg IHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2Ug emVybyBpcyByZXR1cm5lZAorKyAgIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4g ICovCiAgCi0rICBpZiAoc3RybmNtcCAoKmFyZ3B0ciwgIi1wIiwgMikgPT0gMCAmJiBpc3NwYWNl ICgoKmFyZ3B0cilbMl0pKQotKyAgICByZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBz ZWxmLT5jYW5vbmljYWwpOwotKwotICAgaXNfcXVvdGVkID0gKHN0cmNociAoZ2V0X2dkYl9jb21w bGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAoKSwKLSAJCSAgICAgICAqKmFyZ3B0cikgIT0gTlVMTCk7 Cisgc3RhdGljIGludAorIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkg ICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJ ICAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAq ZGF0YSksCisgCSAgICAgdm9pZCAqZGF0YSkKKyB7CitAQCAtMTYyMCw3ICsxNjI1LDkgQEAgZXhw X2l0ZXJhdGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2xp bnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCA1MGQ0ZWZkLi44OTNiN2M0IDEwMDY0 NAotLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC0yODgs NiArMjg4LDcgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9jaGlsZF9zaWduYWxzX21hc2sgKHNpZ3Nl dF90ICpwcmV2X21hc2spOwotIHN0cnVjdCBsd3BfaW5mbzsKLSBzdGF0aWMgc3RydWN0IGx3cF9p bmZvICphZGRfbHdwIChwdGlkX3QgcHRpZCk7Ci0gc3RhdGljIHZvaWQgcHVyZ2VfbHdwX2xpc3Qg KGludCBwaWQpOwotK3N0YXRpYyB2b2lkIGRlbGV0ZV9sd3AgKHB0aWRfdCBwdGlkKTsKLSBzdGF0 aWMgc3RydWN0IGx3cF9pbmZvICpmaW5kX2x3cF9waWQgKHB0aWRfdCBwdGlkKTsKKyAgICAgICBw b3MgPSBlbmRwb3MgLSBvcGxlbjsKKyAgICAgICBpZiAoZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9l eHBfZGVzYy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLAorLQkJCQkJCQkgICBvYmpmaWxlX2Z1 bmMsIGRhdGEpKQorKwkJCQkJCQkgICB0eXBlX2Z1bmMsCisrCQkJCQkJCSAgIG9iamZpbGVfZnVu YywKKysJCQkJCQkJICAgZGF0YSkpCisgCXJldHVybiAxOwogIAotIAwKLUBAIC01ODQsNiArNTg1 LDMxIEBAIGxpbnV4X2NoaWxkX3Bvc3Rfc3RhcnR1cF9pbmZlcmlvciAocHRpZF90IHB0aWQpCi0g ICBsaW51eF9lbmFibGVfdHJhY2VzeXNnb29kIChwdGlkKTsKLSB9CisgICAgICAgZW5kcG9zID0g cG9zOworQEAgLTE2NTEsOCArMTY1OCwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CisgICBnZGJfYXNzZXJ0 IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwogIAot Ky8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGtub3duIExXUHMgaW4gdGhlIHRnaWQgZ2l2ZW4gYnkg UElELiAgKi8KKy0gIHJldHVybiBleHBfaXRlcmF0ZSAoZXhwLCBleHBfdXNlc19vYmpmaWxlX2l0 ZXIsIG9iamZpbGUpOworKyAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIE5VTEwsIGV4cF91c2Vz X29iamZpbGVfaXRlciwgb2JqZmlsZSk7CisrfQorKworKy8qIEhlbHBlciBmb3IgZXhwX3R5cGVz X21hcmtfdXNlZC4gICovCiArCisrI2lmIDAKICtzdGF0aWMgaW50Ci0rbnVtX2x3cHMgKGludCBw aWQpCisrZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAq dW51c2VkKQogK3sKLSsgIGludCBjb3VudCA9IDA7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwot KwotKyAgZm9yIChscCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0 aWRfZ2V0X3BpZCAobHAtPnB0aWQpID09IHBpZCkKLSsgICAgICBjb3VudCsrOworKyAgdHlwZV9t YXJrX3VzZWQgKHR5cGUpOwogKwotKyAgcmV0dXJuIGNvdW50OworKyAgLyogQ29udGludWUgdGhl IHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKICt9CiArCi0rLyogQ2FsbCBkZWxldGVfbHdw IHdpdGggcHJvdG90eXBlIGNvbXBhdGlibGUgZm9yIG1ha2VfY2xlYW51cC4gICovCisrLyogQ2Fs bCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCiArCi0r c3RhdGljIHZvaWQKLStkZWxldGVfbHdwX2NsZWFudXAgKHZvaWQgKmxwX3ZvaWRwKQorK3ZvaWQK KytleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQogK3sKLSsgIHN0 cnVjdCBsd3BfaW5mbyAqbHAgPSBscF92b2lkcDsKKysgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90 eXBlc19tYXJrX3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7CisgfQorKyNlbmRpZgorIAorIHZvaWQK KyBfaW5pdGlhbGl6ZV9wYXJzZSAodm9pZCkKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2VyLWRlZnMu aCBiL2dkYi9wYXJzZXItZGVmcy5oCitpbmRleCA3MmI5ZTJmLi43MTlhNjUyIDEwMDY0NAorLS0t IGEvZ2RiL3BhcnNlci1kZWZzLmgKKysrKyBiL2dkYi9wYXJzZXItZGVmcy5oCitAQCAtMjE1LDYg KzIxNSw4IEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3Ry dWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwKKyAJCQkJICAgICAgaW50ICopOworIAorIGV4 dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCBwb3MsCisrCQkJCSAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwK KysJCQkJCQkgICAgICB2b2lkICpkYXRhKSwKKyAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykK KyAJCQkJICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKKyAJCQkJ ICAgIHZvaWQgKmRhdGEpOworQEAgLTMwMSw2ICszMDMsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0 b3IKKyAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBj YWxsZXIuICBPdGhlcndpc2UgemVybworICAgICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICAqLwor ICAgICBpbnQgKCpvcGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBw b3MsCisrCQkJICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRh dGEpLAorIAkJCSAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorIAkJCQkJCXZvaWQgKmRhdGEpLAorIAkJCSAgIHZvaWQgKmRhdGEpOworQEAgLTMzOSw0ICsz NDIsMTAgQEAgZXh0ZXJuIHZvaWQgcGFyc2VyX2ZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAq LCAuLi4pIEFUVFJJQlVURV9QUklOVEYgKDIsIDMpOworIAorIGV4dGVybiBpbnQgZXhwX3VzZXNf b2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUp OworIAorK2V4dGVybiBpbnQgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogKwotKyAgZGVsZXRlX2x3cCAobHAtPnB0aWQp OwotK30KKysjaWYgMAorK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBl eHByZXNzaW9uICpleHApOworKyNlbmRpZgogKwotIHN0YXRpYyBpbnQKLSBsaW51eF9jaGlsZF9m b2xsb3dfZm9yayAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgaW50IGZvbGxvd19jaGlsZCkKLSB7 Ci1AQCAtNjMwLDYgKzY1Niw4IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJz ZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBcCi0gICAgICAgLyogRGV0YWNoIG5ldyBmb3JrZWQgcHJv Y2Vzcz8gICovCi0gICAgICAgaWYgKGRldGFjaF9mb3JrKQotIAl7Ci0rCSAgc3RydWN0IGNsZWFu dXAgKm9sZF9jaGFpbjsKKyAjZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAqLworZGlmZiAtLWdpdCBh L2dkYi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKK2luZGV4IDAzMGE0ZjIuLjMwNmJlMTgg MTAwNjQ0CistLS0gYS9nZGIvcHJpbnRjbWQuYworKysrIGIvZ2RiL3ByaW50Y21kLmMKK0BAIC00 OSw2ICs0OSw3IEBACisgI2luY2x1ZGUgImNoYXJzZXQuaCIKKyAjaW5jbHVkZSAiYXJjaC11dGls cy5oIgorICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5o IgorIAorICNpZmRlZiBUVUkKKyAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyogRm9yIHR1aV9hY3Rp dmUgZXQgYWwuICAgKi8KK0BAIC05NzQsNiArOTc1LDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hh ciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKKyAgIGVsc2UKKyAgICAgdmFsID0g YWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOworIAorKyAgLyogRG8gbm90IHRyeSB0byBPQkpFQ1Rf QUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZQorKyAg ICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5kIGJ5IFJFQURfVkFSX1ZB TFVFLiAgVGhlIHZhbHVlIGhlcmUKKysgICAgIGNhbiBiZSBhbHJlYWR5IGEgY2FsY3VsYXRlZCBl eHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKKysgICAgIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MuICAqLwogKwotIAkgIC8qIEJlZm9yZSBkZXRhY2hpbmcgZnJvbSB0aGUgY2hp bGQsIHJlbW92ZSBhbGwgYnJlYWtwb2ludHMKLSAJICAgICBmcm9tIGl0LiAgSWYgd2UgZm9ya2Vk LCB0aGVuIHRoaXMgaGFzIGFscmVhZHkgYmVlbiB0YWtlbgotIAkgICAgIGNhcmUgb2YgYnkgaW5m cnVuLmMuICBJZiB3ZSB2Zm9ya2VkIGhvd2V2ZXIsIGFueQotQEAgLTY1Miw3ICs2ODAsMjggQEAg aG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZXRhY2gtb24tZm9ya1wiIG9y IFwKLSAJCQkJY2hpbGRfcGlkKTsKLSAJICAgIH0KKyAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAm JiB2YWx1ZV90eXBlICh2YWwpICYmCisgCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwp KSAhPSBUWVBFX0NPREVfVk9JRCkpCisgICAgIHsKK0BAIC0xMDYyLDYgKzEwNjgsOSBAQCBvdXRw dXRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCisgCisgICB2YWwgPSBldmFsdWF0 ZV9leHByZXNzaW9uIChleHByKTsKICAKLSsJICBvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0 aWQgKCk7Ci0rCSAgaW5mZXJpb3JfcHRpZCA9IHB0aWRfYnVpbGQgKGNoaWxkX3BpZCwgY2hpbGRf cGlkLCAwKTsKKysgIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQorKyAgICBv YmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzICh2YWwpKTsKICsKLSsJICBjaGls ZF9scCA9IGFkZF9sd3AgKGluZmVyaW9yX3B0aWQpOwotKwkgIGNoaWxkX2xwLT5zdG9wcGVkID0g MTsKLSsJICBjaGlsZF9scC0+bGFzdF9yZXN1bWVfa2luZCA9IHJlc3VtZV9zdG9wOwotKwkgIG1h a2VfY2xlYW51cCAoZGVsZXRlX2x3cF9jbGVhbnVwLCBjaGlsZF9scCk7CisgICBhbm5vdGF0ZV92 YWx1ZV9iZWdpbiAodmFsdWVfdHlwZSAodmFsKSk7CisgCisgICBnZXRfZm9ybWF0dGVkX3ByaW50 X29wdGlvbnMgKCZvcHRzLCBmb3JtYXQpOworQEAgLTE0OTEsNiArMTUwMCwyNCBAQCB4X2NvbW1h bmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorIAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9p bnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CisgICAgIH0KKyB9CiArCi0r CSAgLyogQ0hJTERfTFAgaGFzIG5ldyBQSUQsIHRoZXJlZm9yZSBsaW51eF9uYXRfbmV3X3RocmVh ZCBpcyBub3QgY2FsbGVkIGZvciBpdC4KLSsJICAgICBTZWUgaTM4Nl9pbmZlcmlvcl9kYXRhX2dl dCBmb3IgdGhlIExpbnV4IGtlcm5lbCBzcGVjaWZpY3MuCi0rCSAgICAgRW5zdXJlIGxpbnV4X25h dF9wcmVwYXJlX3RvX3Jlc3VtZSB3aWxsIHJlc2V0IHRoZSBoYXJkd2FyZSBkZWJ1ZwotKwkgICAg IHJlZ2lzdGVycy4gIEl0IGlzIGRvbmUgYnkgdGhlIGxpbnV4X25hdF9uZXdfdGhyZWFkIGNhbGws IHdoaWNoIGlzCi0rCSAgICAgYmVpbmcgc2tpcHBlZCBpbiBhZGRfbHdwIGFib3ZlIGZvciB0aGUg Zmlyc3QgbHdwIG9mIGEgcGlkLiAgKi8KLSsJICBnZGJfYXNzZXJ0IChudW1fbHdwcyAoR0VUX1BJ RCAoY2hpbGRfbHAtPnB0aWQpKSA9PSAxKTsKLSsJICBpZiAobGludXhfbmF0X25ld190aHJlYWQg IT0gTlVMTCkKLSsJICAgIGxpbnV4X25hdF9uZXdfdGhyZWFkIChjaGlsZF9scCk7CisrI2lmIDAK KysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRo aXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KICsKLSsJICBpZiAobGludXhfbmF0X3ByZXBhcmVfdG9f cmVzdW1lICE9IE5VTEwpCi0rCSAgICBsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1bWUgKGNoaWxk X2xwKTsKLSAJICBwdHJhY2UgKFBUUkFDRV9ERVRBQ0gsIGNoaWxkX3BpZCwgMCwgMCk7Cisrc3Rh dGljIHZvaWQKKytwcmludF90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisreworKyAgc3RydWN0IGRp c3BsYXkgKmQ7CiArCi0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0gCX0KLSAgICAgICBl bHNlCi0gCXsKLUBAIC02NzAsNiArNzE5LDkgQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4g IFRyeSBcInNldCBkZXRhY2gtb24tZm9ya1wiIG9yIFwKLSAJICBzYXZlX2N1cnJlbnRfcHJvZ3Jh bV9zcGFjZSAoKTsKLSAKLSAJICBpbmZlcmlvcl9wdGlkID0gcHRpZF9idWlsZCAoY2hpbGRfcGlk LCBjaGlsZF9waWQsIDApOwotKwkgIHJlaW5pdF9mcmFtZV9jYWNoZSAoKTsKLSsJICByZWdpc3Rl cnNfY2hhbmdlZCAoKTsKLSsKLSAJICBhZGRfdGhyZWFkIChpbmZlcmlvcl9wdGlkKTsKLSAJICBj aGlsZF9scCA9IGFkZF9sd3AgKGluZmVyaW9yX3B0aWQpOwotIAkgIGNoaWxkX2xwLT5zdG9wcGVk ID0gMTsKLUBAIC04NjEsNiArOTEzLDkgQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRy eSBcInNldCBkZXRhY2gtb24tZm9ya1wiIG9yIFwKLSAJIGluZm9ybWluZyB0aGUgc29saWIgbGF5 ZXIgYWJvdXQgdGhpcyBuZXcgcHJvY2Vzcy4gICovCi0gCi0gICAgICAgaW5mZXJpb3JfcHRpZCA9 IHB0aWRfYnVpbGQgKGNoaWxkX3BpZCwgY2hpbGRfcGlkLCAwKTsKLSsgICAgICByZWluaXRfZnJh bWVfY2FjaGUgKCk7Ci0rICAgICAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7Ci0rCi0gICAgICAgYWRk X3RocmVhZCAoaW5mZXJpb3JfcHRpZCk7Ci0gICAgICAgY2hpbGRfbHAgPSBhZGRfbHdwIChpbmZl cmlvcl9wdGlkKTsKLSAgICAgICBjaGlsZF9scC0+c3RvcHBlZCA9IDE7Ci1AQCAtMTExMSwyMSAr MTE2Niw2IEBAIHB1cmdlX2x3cF9saXN0IChpbnQgcGlkKQotICAgICB9Ci0gfQorKyAgaWYgKGxh c3RfZXhhbWluZV92YWx1ZSkKKysgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGxhc3Rf ZXhhbWluZV92YWx1ZSkpOworKworKyAgZm9yIChkID0gZGlzcGxheV9jaGFpbjsgZDsgZCA9IGQt Pm5leHQpCisrICAgIGlmIChkLT5leHApCisrICAgICAgZXhwX3R5cGVzX21hcmtfdXNlZCAoZC0+ ZXhwKTsKKyt9CisrI2VuZGlmCisrCisgDAogIAotLS8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGtu b3duIExXUHMgaW4gdGhlIHRnaWQgZ2l2ZW4gYnkgUElELiAgKi8KLS0KLS1zdGF0aWMgaW50Ci0t bnVtX2x3cHMgKGludCBwaWQpCi0tewotLSAgaW50IGNvdW50ID0gMDsKLS0gIHN0cnVjdCBsd3Bf aW5mbyAqbHA7Ci0tCi0tICBmb3IgKGxwID0gbHdwX2xpc3Q7IGxwOyBscCA9IGxwLT5uZXh0KQot LSAgICBpZiAocHRpZF9nZXRfcGlkIChscC0+cHRpZCkgPT0gcGlkKQotLSAgICAgIGNvdW50Kys7 Ci0tCi0tICByZXR1cm4gY291bnQ7Ci0tfQotLQotIC8qIEFkZCB0aGUgTFdQIHNwZWNpZmllZCBi eSBQSUQgdG8gdGhlIGxpc3QuICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZQotICAgIHN0cnVjdHVy ZSBkZXNjcmliaW5nIHRoZSBuZXcgTFdQLiAgVGhlIExXUCBzaG91bGQgYWxyZWFkeSBiZSBzdG9w cGVkCi0gICAgKHdpdGggYW4gZXhjZXB0aW9uIGZvciB0aGUgdmVyeSBmaXJzdCBMV1ApLiAgKi8K LUBAIC0xMjM1LDYgKzEyNzUsNDYgQEAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWRfdCBmaWx0ZXIs Ci0gICByZXR1cm4gTlVMTDsKLSB9CisgLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8t ZGlzcGxheSBjaGFpbi4KK0BAIC0xOTg2LDYgKzIwMTMsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5k X3ZhbHVlIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCisgICAgICAgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKICAKLSsvKiBJdGVyYXRlIGxpa2UgaXRlcmF0 ZV9vdmVyX2x3cHMgZG9lcyBleGNlcHQgd2hlbiBmb3JraW5nLW9mZiBhIGNoaWxkIGNhbGwKLSsg ICBDQUxMQkFDSyB3aXRoIENBTExCQUNLX0RBVEEgc3BlY2lmaWNhbGx5IG9ubHkgZm9yIHRoYXQg bmV3IGNoaWxkIFBJRC4gICovCisgICAgICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHZhciwgZnJh bWUpOwogKwotK3ZvaWQKLStsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMKLSsgIChs aW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHNfZnR5cGUgY2FsbGJhY2ssIHZvaWQgKmNh bGxiYWNrX2RhdGEpCi0rewotKyAgaW50IGluZmVyaW9yX3BpZCA9IHB0aWRfZ2V0X3BpZCAoaW5m ZXJpb3JfcHRpZCk7Ci0rICBzdHJ1Y3QgaW5mZXJpb3IgKmluZiA9IGN1cnJlbnRfaW5mZXJpb3Ig KCk7CisrICAgICAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7CisrICAg ICAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7CiArCi0rICBpZiAoaW5mLT5waWQgPT0gaW5mZXJpb3Jf cGlkKQotKyAgICB7Ci0rICAgICAgLyogSXRlcmF0ZSBhbGwgdGhlIHRocmVhZHMgb2YgdGhlIGN1 cnJlbnQgaW5mZXJpb3IuICBXaXRob3V0IHNwZWNpZnlpbmcKLSsJIElORkVSSU9SX1BJRCBpdCB3 b3VsZCBpdGVyYXRlIGFsbCB0aHJlYWRzIG9mIGFsbCBpbmZlcmlvcnMsIHdoaWNoIGlzCi0rCSBp bmFwcHJvcHJpYXRlIGZvciB3YXRjaHBvaW50cy4gICovCisgICAgICAgZ2V0X3VzZXJfcHJpbnRf b3B0aW9ucyAoJm9wdHMpOworICAgICAgIG9wdHMuZGVyZWZfcmVmID0gMTsKKyAgICAgICBjb21t b25fdmFsX3ByaW50ICh2YWwsIHN0cmVhbSwgaW5kZW50LCAmb3B0cywgY3VycmVudF9sYW5ndWFn ZSk7CitAQCAtMjg5OSw0ICsyOTMwLDggQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5h bWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCisgICBhZGRfY29tICgi ZXZhbCIsIG5vX2NsYXNzLCBldmFsX2NvbW1hbmQsIF8oIlwKKyBDb252ZXJ0IFwicHJpbnRmIGZv cm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBhcmduIHRvXG5cCisgYSBjb21t YW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIpKTsKICsKLSsgICAgICBpdGVyYXRlX292ZXJfbHdwcyAo cGlkX3RvX3B0aWQgKGluZmVyaW9yX3BpZCksIGNhbGxiYWNrLCBjYWxsYmFja19kYXRhKTsKLSsg ICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogRGV0YWNoaW5nIGEgbmV3IGNoaWxkIFBJ RCB0ZW1wb3JhcmlseSBwcmVzZW50IGluIElORkVSSU9SX1BJRC4gICovCisrI2lmIDAKKysgIG9i c2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7CisrI2VuZGlm CisgfQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5IGIv Z2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi41NjU0NTQ2CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9u L2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQorQEAgLTAsMCArMSwzMyBAQAorKyMgSXRlcmF0b3Ig b3ZlciBmcmFtZXMuCiArCi0rICAgICAgc3RydWN0IGx3cF9pbmZvICpjaGlsZF9scDsKLSsgICAg ICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotKyAgICAgIHBpZF90IGNoaWxkX3BpZCA9IEdF VF9QSUQgKGluZmVyaW9yX3B0aWQpOwotKyAgICAgIHB0aWRfdCBjaGlsZF9wdGlkID0gcHRpZF9i dWlsZCAoY2hpbGRfcGlkLCBjaGlsZF9waWQsIDApOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgICAgIGdkYl9hc3NlcnQg KCFpc19sd3AgKGluZmVyaW9yX3B0aWQpKTsKLSsgICAgICBnZGJfYXNzZXJ0IChmaW5kX2x3cF9w aWQgKGNoaWxkX3B0aWQpID09IE5VTEwpOwotKyAgICAgIGNoaWxkX2xwID0gYWRkX2x3cCAoY2hp bGRfcHRpZCk7Ci0rICAgICAgY2hpbGRfbHAtPnN0b3BwZWQgPSAxOwotKyAgICAgIGNoaWxkX2xw LT5sYXN0X3Jlc3VtZV9raW5kID0gcmVzdW1lX3N0b3A7Ci0rICAgICAgb2xkX2NoYWluID0gbWFr ZV9jbGVhbnVwIChkZWxldGVfbHdwX2NsZWFudXAsIGNoaWxkX2xwKTsKKysjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiArCi0rICAgICAgY2FsbGJhY2sgKGNoaWxkX2xwLCBjYWxsYmFja19k YXRhKTsKKytjbGFzcyBGcmFtZUl0ZXJhdG9yOgorKyAgICAiIiJBbiBpdGVyYXRvciB0aGF0IGl0 ZXJhdGVzIG92ZXIgZnJhbWVzLiIiIgogKwotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4p OwotKyAgICB9Ci0rfQorKyAgICBkZWYgX19pbml0X18gKHNlbGYsIGZyYW1lKToKKysgICAgICAg ICJJbml0aWFsaXplIGEgRnJhbWVJdGVyYXRvci4gIEZSQU1FIGlzIHRoZSBzdGFydGluZyBmcmFt ZS4iCisrICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUKICsKLSAvKiBVcGRhdGUgb3VyIGludGVy bmFsIHN0YXRlIHdoZW4gY2hhbmdpbmcgZnJvbSBvbmUgY2hlY2twb2ludCB0bwotICAgIGFub3Ro ZXIgaW5kaWNhdGVkIGJ5IE5FV19QVElELiAgV2UgY2FuIG9ubHkgc3dpdGNoIHNpbmdsZS10aHJl YWRlZAotICAgIGFwcGxpY2F0aW9ucywgc28gd2Ugb25seSBjcmVhdGUgb25lIG5ldyBMV1AsIGFu ZCB0aGUgcHJldmlvdXMgbGlzdAotZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuaCBiL2dkYi9s aW51eC1uYXQuaAotaW5kZXggZDlkYzcxYi4uNjIxNzM3MCAxMDA2NDQKLS0tLSBhL2dkYi9saW51 eC1uYXQuaAotKysrIGIvZ2RiL2xpbnV4LW5hdC5oCi1AQCAtMTU4LDYgKzE1OCwxMiBAQCBzdHJ1 Y3QgbHdwX2luZm8gKml0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkX3QgZmlsdGVyLAotIAkJCQkJCSAg ICAgdm9pZCAqKSwgCi0gCQkJCSAgICB2b2lkICpkYXRhKTsKLSAKLSt0eXBlZGVmIGludCAoKmxp bnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSkgKHN0cnVjdCBsd3BfaW5mbyAq bHdwLAotKwkJCQkJCQl2b2lkICphcmcpOwotKwotK2V4dGVybiB2b2lkIGxpbnV4X25hdF9pdGVy YXRlX3dhdGNocG9pbnRfbHdwcwotKyAgKGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdw c19mdHlwZSBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfZGF0YSk7Ci0rCi0gLyogQ3JlYXRlIGEg cHJvdG90eXBlIGdlbmVyaWMgR05VL0xpbnV4IHRhcmdldC4gIFRoZSBjbGllbnQgY2FuCi0gICAg b3ZlcnJpZGUgaXQgd2l0aCBsb2NhbCBtZXRob2RzLiAgKi8KLSBzdHJ1Y3QgdGFyZ2V0X29wcyAq IGxpbnV4X3RhcmdldCAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21hY2hvcmVhZC5jIGIvZ2Ri L21hY2hvcmVhZC5jCi1pbmRleCA5ZmE5N2UxLi5kNmYwZjM4IDEwMDY0NAotLS0tIGEvZ2RiL21h Y2hvcmVhZC5jCi0rKysgYi9nZGIvbWFjaG9yZWFkLmMKLUBAIC0xMDMyLDYgKzEwMzIsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgbWFjaG9fc3ltX2ZucyA9IHsKLSAgIGRlZmF1bHRf c3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUu ICAqLwotICAgTlVMTCwKLSAgIG1hY2hvX3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEg ZGVidWcgc2VjdGlvbi4gICovCi0rICBOVUxMLAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLwotICAg JnBzeW1fZnVuY3Rpb25zCi0gfTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvbWFpbi5jIGIvZ2RiL21h aW4uYwotaW5kZXggOGI0NWMyNS4uYzdlYTBkZiAxMDA2NDQKLS0tLSBhL2dkYi9tYWluLmMKLSsr KyBiL2dkYi9tYWluLmMKLUBAIC0zNyw2ICszNyw3IEBACi0gCi0gI2luY2x1ZGUgImludGVycHMu aCIKLSAjaW5jbHVkZSAibWFpbi5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi0gI2lu Y2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLSAjaW5jbHVkZSAi cHl0aG9uL3B5dGhvbi5oIgotQEAgLTI2NCw2ICsyNjUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQotICAgY2hhciAqY2RhcmcgPSBOVUxMOwotICAgY2hhciAqdHR5YXJnID0gTlVMTDsK LSAKLSsgIGludCBweXRob25fc2NyaXB0ID0gMDsKKysgICAgZGVmIF9faXRlcl9fIChzZWxmKToK KysgICAgICAgIHJldHVybiBzZWxmCiArCi0gICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQg d2UgY2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbgotICAgICAgaW5pdGlhbGl6ZXIuICAqLwot ICAgc3RhdGljIGludCBwcmludF9oZWxwOwotQEAgLTQ1NywxMCArNDYwLDE0IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgeyJhcmdzIiwgbm9fYXJndW1lbnQsICZzZXRfYXJn cywgMX0sCi0gICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCi0gICAgICAg eyJyZXR1cm4tY2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0 LCAxfSwKLSsjaWYgSEFWRV9QWVRIT04KLSsgICAgICB7InB5dGhvbiIsIG5vX2FyZ3VtZW50LCAw LCAnUCd9LAotKyAgICAgIHsiUCIsIG5vX2FyZ3VtZW50LCAwLCAnUCd9LAotKyNlbmRpZgotICAg ICAgIHswLCBub19hcmd1bWVudCwgMCwgMH0KLSAgICAgfTsKLSAKLS0gICAgd2hpbGUgKDEpCi0r ICAgIHdoaWxlICghcHl0aG9uX3NjcmlwdCkKLSAgICAgICB7Ci0gCWludCBvcHRpb25faW5kZXg7 Ci0gCi1AQCAtNDc4LDYgKzQ4NSw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCSAg Y2FzZSAwOgotIAkgICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMgYSBmbGFnLiAgKi8K LSAJICAgIGJyZWFrOwotKwkgIGNhc2UgJ1AnOgotKwkgICAgcHl0aG9uX3NjcmlwdCA9IDE7Ci0r CSAgICBicmVhazsKLSAJICBjYXNlIE9QVF9TRToKLSAJICAgIHN5bWFyZyA9IG9wdGFyZzsKLSAJ ICAgIGV4ZWNhcmcgPSBvcHRhcmc7Ci1AQCAtNjczLDcgKzY4MywzMSBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQotIAotICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhl IGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCi0gICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBm b3IgdGhhdCBpbmZlcmlvci4gICovCi0tICBpZiAoc2V0X2FyZ3MpCi0rICBpZiAocHl0aG9uX3Nj cmlwdCkKLSsgICAgewotKyAgICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHB5dGhvbiBz Y3JpcHQgdG8gZXZhbHVhdGUsIGFuZAotKwkgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3Nl ZCB0byB0aGUgc2NyaXB0IGZvcgotKwkgcHJvY2Vzc2luZyB0aGVyZS4gICovCi0rICAgICAgaWYg KG9wdGluZCA+PSBhcmdjKQotKwl7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJy LAotKwkJCSAgICAgIF8oIiVzOiBQeXRob24gc2NyaXB0IGZpbGUgbmFtZSByZXF1aXJlZFxuIiks Ci0rCQkJICAgICAgYXJndlswXSk7Ci0rCSAgZXhpdCAoMSk7Ci0rCX0KKysgICAgZGVmIG5leHQg KHNlbGYpOgorKyAgICAgICAgcmVzdWx0ID0gc2VsZi5mcmFtZQorKyAgICAgICAgaWYgcmVzdWx0 IGlzIE5vbmU6CisrICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorKyAgICAgICAgc2Vs Zi5mcmFtZSA9IHJlc3VsdC5vbGRlciAoKQorKyAgICAgICAgcmV0dXJuIHJlc3VsdAorZGlmZiAt LWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvRnJhbWVXcmFwcGVyLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uYjc5MGE1NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1l V3JhcHBlci5weQorQEAgLTAsMCArMSwxMTIgQEAKKysjIFdyYXBwZXIgQVBJIGZvciBmcmFtZXMu CiArCi0rICAgICAgLyogRklYTUU6IHNob3VsZCBoYW5kbGUgaW5mZXJpb3IgSS9PIGludGVsbGln ZW50bHkgaGVyZS4KLSsJIEUuZy4sIHNob3VsZCBiZSBwb3NzaWJsZSB0byBydW4gZ2RiIGluIHBp cGVsaW5lIGFuZCBoYXZlCi0rCSBQeXRob24gKGFuZCBnZGIpIG91dHB1dCBnbyB0byBzdGRlcnIg b3IgZmlsZTsgYW5kIGlmIGEKLSsJIHByb21wdCBpcyBuZWVkZWQsIG9wZW4gdGhlIHR0eS4gICov Ci0rICAgICAgcXVpZXQgPSAxOwotKyAgICAgIC8qIEZJWE1FOiBzaG91bGQgcmVhZCAuZ2RiaW5p dCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0IGlzCi0rCSByZXF1ZXN0ZWQgYnkgdGhlIHNjcmlw dC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAotKwkgaWRlYWw/ICAqLwotKyAgICAgIC8q IEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAgKi8KLSsgICAgICBpbmhpYml0 X2dkYmluaXQgPSAxOwotKyAgICB9Ci0rICBlbHNlIGlmIChzZXRfYXJncykKLSAgICAgewotICAg ICAgIC8qIFRoZSByZW1haW5pbmcgb3B0aW9ucyBhcmUgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25z IGZvciB0aGUKLSAJIGluZmVyaW9yLiAgVGhlIGZpcnN0IG9uZSBpcyB0aGUgc3ltL2V4ZWMgZmls ZSwgYW5kIHRoZSByZXN0Ci1AQCAtOTIyLDcgKzk1Niw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCi0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNv bW1hbmQgZmlsZXMgaGF2ZSBiZWVuCi0gICAgICByZWFkLiAgKi8KLS0gIGluaXRfaGlzdG9yeSAo KTsKLSsgIGlmICghcHl0aG9uX3NjcmlwdCkKLSsgICAgaW5pdF9oaXN0b3J5ICgpOwotIAotICAg aWYgKGJhdGNoX2ZsYWcpCi0gICAgIHsKLUBAIC05MzMsMTMgKzk2OCwyNSBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQotICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICov Ci0gICBkb19jbGVhbnVwcyAocHJlX3N0YXRfY2hhaW4pOwotIAotLSAgLyogTk9URTogY2FnbmV5 LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90Ci0tICAgICBt b3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xv b3AoKQotLSAgICAgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhp bmcgaG9sZGluZyBiYWNrIHRoYXQKLS0gICAgIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhh cyBiZWVuIGVsaW1pbmF0ZWQuICAqLwotLSAgd2hpbGUgKDEpCi0rI2lmIEhBVkVfUFlUSE9OCi0r ICBpZiAocHl0aG9uX3NjcmlwdCkKLSAgICAgewotLSAgICAgIGNhdGNoX2Vycm9ycyAoY2FwdHVy ZWRfY29tbWFuZF9sb29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxMKTsKLSsgICAgICBleHRlcm4g aW50IHBhZ2luYXRpb25fZW5hYmxlZDsKLSsgICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAwOwot KyAgICAgIHJ1bl9weXRob25fc2NyaXB0IChhcmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRdKTsK LSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKyAgZWxzZQotKyNlbmRpZgotKyAgICB7Ci0rICAg ICAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNv biBmb3Igbm90Ci0rCSBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0 dXJlZF9jb21tYW5kX2xvb3AoKQotKwkgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAg VGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKLSsJIGNoYW5nZSAtIFNFVF9UT1BfTEVW RUwoKSAtIGhhcyBiZWVuIGVsaW1pbmF0ZWQuICovCi0rICAgICAgd2hpbGUgKDEpCi0rCXsKLSsJ ICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNL X0FMTCk7Ci0rCX0KLSAgICAgfQotICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVp dF9jb21tYW5kLiAgKi8KLSB9Ci1AQCAtOTcxLDcgKzEwMTgsMTIgQEAgcHJpbnRfZ2RiX2hlbHAg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gVGhp cyBpcyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKLSAgICAgZ2RiIFtvcHRpb25zXSBb ZXhlY3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBb b3B0aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1c blxuXAotKyAgICBnZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9y LWFyZ3VtZW50cyAuLi5dXG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRz X3VuZmlsdGVyZWQgKF8oIlwKLSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlw dC1maWxlIFtzY3JpcHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAotICIpLCBzdHJlYW0pOwot ICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTEwMDksNyArMTA2MSwxMyBAQCBPcHRpb25z OlxuXG5cCi0gICAtLW53CQkgICAgIERvIG5vdCB1c2UgYSB3aW5kb3cgaW50ZXJmYWNlLlxuXAot ICAgLS1ueCAgICAgICAgICAgICAgIERvIG5vdCByZWFkICIpLCBzdHJlYW0pOwotICAgZnB1dHNf dW5maWx0ZXJlZCAoZ2RiaW5pdCwgc3RyZWFtKTsKLS0gIGZwdXRzX3VuZmlsdGVyZWQgKF8oIiBm aWxlLlxuXAotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG4iKSwgc3RyZWFtKTsKLSsj aWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSsgIC0tcHl0aG9uLCAt UCAgICAgICBGb2xsb3dpbmcgYXJndW1lbnQgaXMgUHl0aG9uIHNjcmlwdCBmaWxlOyByZW1haW5p bmdcblwKLSsgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBzY3Jp cHQuXG4iKSwgc3RyZWFtKTsKLSsjZW5kaWYKLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAg IC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3RhcnR1 cC5cblwKLSAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBvbiBm aXJzdCBhY2Nlc3MuXG5cCi0gIiksIHN0cmVhbSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNt ZC12YXIuYyBiL2dkYi9taS9taS1jbWQtdmFyLmMKLWluZGV4IDRkZTczOTIuLmZiMGI1NTAgMTAw NjQ0Ci0tLS0gYS9nZGIvbWkvbWktY21kLXZhci5jCi0rKysgYi9nZGIvbWkvbWktY21kLXZhci5j Ci1AQCAtNzIxLDcgKzcyMSw2IEBAIG1pX2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBj aGFyICoqYXJndiwgaW50IGFyZ2MpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIC8q IEdldCB2YXJvYmogaGFuZGxlLCBpZiBhIHZhbGlkIHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVk ICovCi0gICAgICAgc3RydWN0IHZhcm9iaiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUp OwotIAotICAgICAgIHZhcm9ial91cGRhdGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBl eHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQu YwotaW5kZXggNTc5MDczMC4uMjNjZWVjZSAxMDA2NDQKLS0tLSBhL2dkYi9taXBzcmVhZC5jCi0r KysgYi9nZGIvbWlwc3JlYWQuYwotQEAgLTQwMSw2ICs0MDEsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHN5bV9mbnMgZWNvZmZfc3ltX2ZucyA9Ci0gICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMs CS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KLSAgIE5VTEwsCi0g ICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4g ICovCi0rICBOVUxMLAkJCQkvKiBzeW1fcHJvYmVfZm5zICovCi0gICAmcHN5bV9mdW5jdGlvbnMK LSB9OwotIAotZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKLWlu ZGV4IDFjZjVhZWUuLmQxNjQwZWYgMTAwNjQ0Ci0tLS0gYS9nZGIvb2JqZmlsZXMuYwotKysrIGIv Z2RiL29iamZpbGVzLmMKLUBAIC04MTEsNiArODExLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykpOwotICAg ICB9Ci0gCi0rICAvKiBSZWxvY2F0aW5nIFN5c3RlbVRhcCBwcm9iZXMuICAqLwotKyAgaWYgKG9i amZpbGUtPnNmICYmIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQotKyAgICBvYmpmaWxlLT5z Zi0+c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAotKwkJCQkJCSAg ICBuZXdfb2Zmc2V0cywgZGVsdGEpOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotICAgLyogRGF0YSBjaGFuZ2VkLiAgKi8KLSAg IHJldHVybiAxOwotIH0KLWRpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5jIGIvZ2RiL3AtdmFs cHJpbnQuYwotaW5kZXggYzViZWY4YS4uZmMzYmViMyAxMDA2NDQKLS0tLSBhL2dkYi9wLXZhbHBy aW50LmMKLSsrKyBiL2dkYi9wLXZhbHByaW50LmMKLUBAIC0zOSw2ICszOSw3IEBACi0gI2luY2x1 ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJjcC1zdXBwb3J0LmgiCi0gI2luY2x1ZGUgImV4Y2Vw dGlvbnMuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIC8qIFNlZSB2YWxfcHJp bnQgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGlzCi1A QCAtNjMsOCArNjQsMzEgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAotICAgc3RydWN0IHR5cGUgKmNoYXJfdHlwZTsKLSAgIExP TkdFU1QgdmFsOwotICAgQ09SRV9BRERSIGFkZHI7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKLSsgIHN0cnVjdCB0eXBlICpzYXZlZF90eXBlID0gdHlwZTsKLSsgIENPUkVfQUREUiBzYXZl ZF9hZGRyZXNzID0gYWRkcmVzczsKLSsgIAotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVs bF9jbGVhbnVwLCAwKTsKLSsgIGFkZHJlc3MgKz0gZW1iZWRkZWRfb2Zmc2V0OwotKyAgdHlwZSA9 IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7Ci0rICBpZiAodHlwZSA9 PSBOVUxMKQotKyAgICB7Ci0rICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNzX2Rh dGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKLSsgICAgICBnZGJfZmx1c2ggKHN0 cmVhbSk7Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKyAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0 KQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAK LS0gIENIRUNLX1RZUEVERUYgKHR5cGUpOwotKyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5n dGgpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsK LSsgICAgICByZWFkX21lbW9yeSAoYWRkcmVzcywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0 aCk7Ci0rICAgICAgZW1iZWRkZWRfb2Zmc2V0ID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBh ZGRyZXNzIC09IGVtYmVkZGVkX29mZnNldDsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkK LSAgICAgewotICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLUBAIC0xMjAsOCArMTQ0LDggQEAg cGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLAotIAkJewotIAkJICBpID0gMDsKLSAJCX0KLS0JICAgICAgdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzICh0eXBlLCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsCi0tCQkJCQlhZGRyZXNzLCBz dHJlYW0sIHJlY3Vyc2UsCi0rCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRf dHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LAotKwkJCQkJc2F2ZWRfYWRkcmVzcywgc3Ry ZWFtLCByZWN1cnNlLAotIAkJCQkJb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkpOwotIAkgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7Ci0gCSAgICB9Ci1AQCAtMTYwLDYgKzE4 NCw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKLSAJICAvKiBUcnkgdG8gcHJpbnQgd2hhdCBmdW5jdGlvbiBpdCBwb2ludHMg dG8uICAqLwotIAkgIHByaW50X2FkZHJlc3NfZGVtYW5nbGUgKGdkYmFyY2gsIGFkZHIsIHN0cmVh bSwgZGVtYW5nbGUpOwotIAkgIC8qIFJldHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2VwdCBm b3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8KLSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gCSAg cmV0dXJuICgwKTsKLSAJfQotIAotQEAgLTI1MSw2ICsyNzYsNyBAQCBwYXNjYWxfdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gICAgICAgLyog UmV0dXJuIG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWlu YXRpbmcKLSAJICdcMCcgaWYgd2UgcmVhY2hlZCB0aGUgZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0 YWtlcyBjYXJlIGluY2x1ZGluZwotIAkgdGhlIHRlcm1pbmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5 LiAgKi8KLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuIGk7Ci0g Ci0gICAgICAgYnJlYWs7Ci1AQCAtNTc2LDYgKzYwMiw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAgICBUWVBFX0NP REUgKHR5cGUpKTsKLSAgICAgfQotICAgZ2RiX2ZsdXNoIChzdHJlYW0pOwotKyAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOwotICAgcmV0dXJuICgwKTsKLSB9Ci0gDAotZGlmZiAtLWdpdCBhL2dkYi9w YXJzZS5jIGIvZ2RiL3BhcnNlLmMKLWluZGV4IDMyYTNiZDYuLjllYWYyZGUgMTAwNjQ0Ci0tLS0g YS9nZGIvcGFyc2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC0xMTMsOCArMTEzLDYgQEAgc2hv d19wYXJzZXJkZWJ1ZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSAKLSBz dGF0aWMgdm9pZCBmcmVlX2Z1bmNhbGxzICh2b2lkICppZ25vcmUpOwotIAotLXN0YXRpYyBpbnQg cHJlZml4aWZ5X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICopOwotLQotIHN0YXRpYyBp bnQgcHJlZml4aWZ5X3N1YmV4cCAoc3RydWN0IGV4cHJlc3Npb24gKiwgc3RydWN0IGV4cHJlc3Np b24gKiwgaW50LAotIAkJCSAgICAgaW50KTsKLSAKLUBAIC0xODgsNyArMTg2LDcgQEAgZnJlZV9m dW5jYWxscyAodm9pZCAqaWdub3JlKQotICAgIHRoZSBleHBvdXQgYXJyYXkuICBMQU5HIGlzIHRo ZSBsYW5ndWFnZSB1c2VkIHRvIHBhcnNlIHRoZSBleHByZXNzaW9uLgotICAgIEFuZCBHREJBUkNI IGlzIHRoZSBnZGJhcmNoIHRvIHVzZSBkdXJpbmcgcGFyc2luZy4gICovCi0gCi0tc3RhdGljIHZv aWQKLSt2b2lkCi0gaW5pdGlhbGl6ZV9leHBvdXQgKGludCBpbml0aWFsX3NpemUsIGNvbnN0IHN0 cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5nLAotIAkJICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Ci0gewotQEAgLTIwNCw3ICsyMDIsNyBAQCBpbml0aWFsaXplX2V4cG91dCAoaW50IGluaXRpYWxf c2l6ZSwgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmcsCi0gICAgSXQgaXMgZ2VuZXJh bGx5IHVzZWQgd2hlbiB0aGUgcGFyc2VyIGhhcyBqdXN0IGJlZW4gcGFyc2VkIGFuZAotICAgIGNy ZWF0ZWQuICAqLwotIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIHJlYWxsb2NhdGVfZXhwb3V0ICh2 b2lkKQotIHsKLSAgIC8qIFJlY29yZCB0aGUgYWN0dWFsIG51bWJlciBvZiBleHByZXNzaW9uIGVs ZW1lbnRzLCBhbmQgdGhlbgotQEAgLTgxMSw3ICs4MDksNyBAQCBjb3B5X25hbWUgKHN0cnVjdCBz dG9rZW4gdG9rZW4pCi0gICAgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgc3ViZXhwcmVzc2lvbiB3 aGljaCBpcyB0aGUgbGVmdC1oYW5kLXNpZGUKLSAgICBvZiB0aGUgc3RydWN0IG9wZXJhdGlvbiBh dCBFWFBPVVRfTEFTVF9TVFJVQ1QuICAqLwotIAotLXN0YXRpYyBpbnQKLStpbnQKLSBwcmVmaXhp ZnlfZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIpCi0gewotICAgaW50IGxlbiA9 IHNpemVvZiAoc3RydWN0IGV4cHJlc3Npb24pICsgRVhQX0VMRU1fVE9fQllURVMgKGV4cHItPm5l bHRzKTsKLUBAIC0xNTI5LDYgKzE1MjcsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29u c3QgY2hhciAqeSwgLi4uKQotIAotIGludAotIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCSBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJIGludCAoKm9iamZpbGVfZnVuYykgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCi0gCQkJIHZv aWQgKmRhdGEpCi1AQCAtMTU3MCw3ICsxNTY5LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0gCSAgICBzdHJ1Y3QgdHlwZSAqdHlw ZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsKLSAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKLSAKLS0JICAgIGlmIChvYmpmaWxlICYmICgqb2Jq ZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCi0rCSAgICBpZiAob2JqZmlsZSAmJiBvYmpmaWxl X2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAJICAgICAgcmV0dXJu IDE7Ci0gCSAgfQotICAgICAgIH0KLUBAIC0xNTg4LDcgKzE1ODcsOCBAQCBvcGVyYXRvcl9jaGVj a19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAJLyogQ2hl Y2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KLSAJICAgU1lN Qk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JaWYgKCgqb2JqZmls ZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0rCWlmIChv YmpmaWxlX2Z1bmMKLSsJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3lt Ym9sKS0+b2JqZmlsZSwgZGF0YSkpCi0gCSAgcmV0dXJuIDE7Ci0gCi0gCS8qIENoZWNrIG9iamZp bGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1A QCAtMTYwMSwyNCArMTYwMSwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZ UEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0gCi0tICBp ZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMg JiYgKCp0eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBpZiAodHlw ZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYmICgqb2Jq ZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVybiAxOwot LSAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSsgIGlm IChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRh dGEpKQotICAgICByZXR1cm4gMTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBDYWxsIE9C SkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcgcmVmZXJlbmNl ZCBieSBFWFAuCi0tICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVMTCBP QkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KLS0gICBhcmJpdHJhcnkgY2FsbGVyIHN1 cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMKLS0g ICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVlIGlzIGltbWVk aWF0ZWx5IHJldHVybmVkIHRvCi0tICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvIGlzIHJl dHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4KLS0gICAqLwotKy8qIENh bGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpGSUxFIGZv dW5kIGJlaW5nCi0rICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25zIGFyZSBuZXZl ciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAotKyAgIE9CSkZJTEUuICBGdW5jdGlvbnMg Z2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4KLSsg ICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFu eSBvdGhlcikgbm9uLXplcm8KLSsgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0 aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKLSsgICBhZnRlciBpdGVyYXRp bmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLwotIAotIHN0YXRpYyBpbnQKLSBleHBfaXRlcmF0ZSAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSsJICAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAotIAkgICAgIHZvaWQgKmRhdGEpCi0g ewotQEAgLTE2MzMsNyArMTYzNiw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLAotIAotICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwotICAgICAgIGlmIChleHAtPmxh bmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCi0tCQkJ CQkJCSAgIG9iamZpbGVfZnVuYywgZGF0YSkpCi0rCQkJCQkJCSAgIHR5cGVfZnVuYywKLSsJCQkJ CQkJICAgb2JqZmlsZV9mdW5jLAotKwkJCQkJCQkgICBkYXRhKSkKLSAJcmV0dXJuIDE7Ci0gCi0g ICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE2NjQsOCArMTY2OSwyOSBAQCBleHBfdXNlc19vYmpm aWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7 Ci0gICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5r ID09IE5VTEwpOwotIAotLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIGV4cF91c2VzX29iamZp bGVfaXRlciwgb2JqZmlsZSk7Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwgZXhw X3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBleHBf dHlwZXNfbWFya191c2VkLiAgKi8KKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0r I2lmIDAKLStzdGF0aWMgaW50Ci0rZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgdm9pZCAqdW51c2VkKQotK3sKLSsgIHR5cGVfbWFya191c2VkICh0eXBlKTsKKytp bXBvcnQgZ2RiCiArCi0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KLSsgIHJldHVy biAwOwotK30KKysjIEZJWE1FOiBhcmd1YWJseSBhbGwgdGhpcyBzaG91bGQgYmUgb24gRnJhbWUg c29tZWhvdy4KKytjbGFzcyBGcmFtZVdyYXBwZXI6CisrICAgIGRlZiBfX2luaXRfXyAoc2VsZiwg ZnJhbWUpOgorKyAgICAgICAgc2VsZi5mcmFtZSA9IGZyYW1lOwogKwotKy8qIENhbGwgdHlwZV9t YXJrX3VzZWQgZm9yIGFueSB0eXBlIGNvbnRhaW5lZCBpbiBFWFAuICAqLworKyAgICBkZWYgd3Jp dGVfc3ltYm9sIChzZWxmLCBzdHJlYW0sIHN5bSwgYmxvY2spOgorKyAgICAgICAgaWYgbGVuIChz eW0ubGlua2FnZV9uYW1lKToKKysgICAgICAgICAgICBuc3ltLCBpc19maWVsZF9vZl90aGlzID0g Z2RiLmxvb2t1cF9zeW1ib2wgKHN5bS5saW5rYWdlX25hbWUsIGJsb2NrKQorKyAgICAgICAgICAg IGlmIG5zeW0uYWRkcl9jbGFzcyAhPSBnZGIuU1lNQk9MX0xPQ19SRUdJU1RFUjoKKysgICAgICAg ICAgICAgICAgc3ltID0gbnN5bQogKwotK3ZvaWQKLStleHBfdHlwZXNfbWFya191c2VkIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwKQotK3sKLSsgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19t YXJrX3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7Ci0gfQotKyNlbmRpZgotIAotIHZvaWQKLSBfaW5p dGlhbGl6ZV9wYXJzZSAodm9pZCkKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dk Yi9wYXJzZXItZGVmcy5oCi1pbmRleCAxNmI0MGFjLi5jMzgxM2ZmIDEwMDY0NAotLS0tIGEvZ2Ri L3BhcnNlci1kZWZzLmgKLSsrKyBiL2dkYi9wYXJzZXItZGVmcy5oCi1AQCAtMTMwLDYgKzEzMCwy NCBAQCB1bmlvbiB0eXBlX3N0YWNrX2VsdAotIGV4dGVybiB1bmlvbiB0eXBlX3N0YWNrX2VsdCAq dHlwZV9zdGFjazsKLSBleHRlcm4gaW50IHR5cGVfc3RhY2tfZGVwdGgsIHR5cGVfc3RhY2tfc2l6 ZTsKLSAKLSsvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBgZXhwb3V0JyBhbmQgaXRzIHJlbGF0 ZWQgdmFyaWFibGVzIGBleHBvdXRfc2l6ZScKLSsgICBhbmQgYGV4cG91dF9wdHInLgorKyAgICAg ICAgc3RyZWFtLndyaXRlIChzeW0ucHJpbnRfbmFtZSArICI9IikKKysgICAgICAgIHRyeToKKysg ICAgICAgICAgICB2YWwgPSBzZWxmLnJlYWRfdmFyIChzeW0pCisrICAgICAgICAgICAgaWYgdmFs ICE9IE5vbmU6CisrICAgICAgICAgICAgICAgIHZhbCA9IHN0ciAodmFsKQorKyAgICAgICAgIyBG SVhNRTogd291bGQgYmUgbmljZSB0byBoYXZlIGEgbW9yZSBwcmVjaXNlIGV4Y2VwdGlvbiBoZXJl LgorKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciwgdGV4dDoKKysgICAgICAgICAgICB2YWwg PSB0ZXh0CisrICAgICAgICBpZiB2YWwgPT0gTm9uZToKKysgICAgICAgICAgICBzdHJlYW0ud3Jp dGUgKCI/Pz8iKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKHN0 ciAodmFsKSkKICsKLSsgICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGluaXRpYWwgc2l6ZSB0 byBiZSB1c2VkIGZvciB4bWFsbG9jLiAgVGhlIHNlY29uZAotKyAgIGFyZ3VtZW50IGlzIHRoZSBs YW5ndWFnZSByZWxhdGVkIHRvIHRoZSBleHByZXNzaW9uLiAgVGhlIHRoaXJkIGFyZ3VtZW50IGlz Ci0rICAgY29ycmVzcG9uZGluZyBnZGJhcmNoLiAgKi8KKysgICAgZGVmIHByaW50X2ZyYW1lX2xv Y2FscyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKKysgICAgICAgIGlmIG5vdCBmdW5jOgorKyAgICAg ICAgICAgIHJldHVybgogKwotK2V4dGVybiB2b2lkIGluaXRpYWxpemVfZXhwb3V0IChpbnQsIGNv bnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICosCi0rCQkJICAgICAgIHN0cnVjdCBnZGJhcmNoICop OworKyAgICAgICAgZmlyc3QgPSBUcnVlCisrICAgICAgICBibG9jayA9IGZ1bmMudmFsdWUKICsK LSsvKiBSZWFsbG9jYXRlIGBleHBvdXQnIGluIG9yZGVyIHRvIGZyZWUgZXhjZXNzaXZlIGVsZW1l bnRzIHRoYXQgbWlnaHQgaGF2ZQotKyAgIGJlZW4gY3JlYXRlZCBkdXJpbmcgdGhlIHBhcnNpbmcu ICBTZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cwotKyAgIGFjY29yZGluZ2x5LiAgKi8KKysgICAg ICAgIGZvciBzeW0gaW4gYmxvY2s6CisrICAgICAgICAgICAgaWYgc3ltLmlzX2FyZ3VtZW50Ogor KyAgICAgICAgICAgICAgICBjb250aW51ZTsKICsKLStleHRlcm4gdm9pZCByZWFsbG9jYXRlX2V4 cG91dCAodm9pZCk7CisrICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3lt LCBibG9jaykKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCdcbicpCiArCi0rZXh0ZXJuIGlu dCBwcmVmaXhpZnlfZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIpOworKyAgICBk ZWYgcHJpbnRfZnJhbWVfYXJncyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKKysgICAgICAgIGlmIG5v dCBmdW5jOgorKyAgICAgICAgICAgIHJldHVybgogKwotIGV4dGVybiB2b2lkIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChlbnVtIGV4cF9vcGNvZGUpOwotIAotIGV4dGVybiB2b2lkIHdyaXRlX2V4cF9l bHRfc3ltIChzdHJ1Y3Qgc3ltYm9sICopOwotQEAgLTE5MSw2ICsyMDksOCBAQCBleHRlcm4gdm9p ZCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICosIGlu dCwgaW50ICosCi0gCQkJCSAgICAgIGludCAqKTsKLSAKLSBleHRlcm4gaW50IG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCQkgICAg aW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkJCQkJICAgICAgdm9pZCAq ZGF0YSksCi0gCQkJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpCi0gCQkJCSAgICAgIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCi0gCQkJCSAgICB2b2lkICpkYXRhKTsKLUBA IC0yNzcsNiArMjk3LDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCi0gICAgICAgIHZhbHVlIHNo b3VsZCBiZSBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHpl cm8KLSAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkLiAgKi8KLSAgICAgaW50ICgqb3BlcmF0b3Jf Y2hlY2spIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCSAgIGludCAoKnR5 cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKLSAJCQkgICBpbnQgKCpv YmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQl2b2lkICpkYXRh KSwKLSAJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0zMTUsNCArMzM2LDEwIEBAIGV4dGVybiB2b2lk IHBhcnNlcl9mcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJ TlRGICgyLCAzKTsKLSAKLSBleHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSAKLStleHRlcm4gaW50IGV4 cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKTsKKysgICAgICAgIGZpcnN0ID0gVHJ1ZQorKyAgICAgICAgYmxvY2sgPSBmdW5jLnZh bHVlCiArCi0rI2lmIDAKLStleHRlcm4gdm9pZCBleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwKTsKLSsjZW5kaWYKKysgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6Cisr ICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVudDoKKysgICAgICAgICAgICAgICAgY29u dGludWU7CiArCi0gI2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIv cHBjLWxpbnV4LW5hdC5jIGIvZ2RiL3BwYy1saW51eC1uYXQuYwotaW5kZXggYWY4MDkxOS4uMzA3 N2M0YiAxMDA2NDQKLS0tLSBhL2dkYi9wcGMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9wcGMtbGlu dXgtbmF0LmMKLUBAIC0xNDY4LDE0ICsxNDY4LDEzIEBAIHBwY19saW51eF9jYW5fdXNlX2h3X2Jy ZWFrcG9pbnQgKGludCB0eXBlLCBpbnQgY250LCBpbnQgb3QpCi0gICBpZiAoIWhhdmVfcHRyYWNl X2Jvb2tlX2ludGVyZmFjZSAoKSkKLSAgICAgewotICAgICAgIGludCB0aWQ7Ci0tICAgICAgcHRp ZF90IHB0aWQgPSBpbmZlcmlvcl9wdGlkOwotIAotICAgICAgIC8qIFdlIG5lZWQgdG8ga25vdyB3 aGV0aGVyIHB0cmFjZSBzdXBwb3J0cyBQVFJBQ0VfU0VUX0RFQlVHUkVHCi0gCSBhbmQgd2hldGhl ciB0aGUgdGFyZ2V0IGhhcyBEQUJSLiAgSWYgZWl0aGVyIGFuc3dlciBpcyBubywgdGhlCi0gCSBw dHJhY2UgY2FsbCB3aWxsIHJldHVybiAtMS4gIEZhaWwgaW4gdGhhdCBjYXNlLiAgKi8KLS0gICAg ICB0aWQgPSBUSURHRVQgKHB0aWQpOwotKyAgICAgIHRpZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRp ZCk7Ci0gICAgICAgaWYgKHRpZCA9PSAwKQotLQl0aWQgPSBQSURHRVQgKHB0aWQpOwotKwl0aWQg PSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOwotIAotICAgICAgIGlmIChwdHJhY2UgKFBUUkFDRV9T RVRfREVCVUdSRUcsIHRpZCwgMCwgMCkgPT0gLTEpCi0gCXJldHVybiAwOwotQEAgLTE1NjYsOCAr MTU2NSw5IEBAIGJvb2tlX2ZpbmRfdGhyZWFkX3BvaW50c19ieV90aWQgKGludCB0aWQsIGludCBh bGxvY19uZXcpCi0gLyogVGhpcyBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgd3JhcHBlciB0aGF0IGlz IHJlc3BvbnNpYmxlIGZvciBpbnNlcnRpbmcgYQotICAgICpwb2ludCAoaS5lLiwgY2FsbGluZyBg cHRyYWNlJyBpbiBvcmRlciB0byBpc3N1ZSB0aGUgcmVxdWVzdCB0byB0aGUKLSAgICBrZXJuZWwp IGFuZCByZWdpc3RlcmluZyBpdCBpbnRlcm5hbGx5IGluIEdEQi4gICovCisrICAgICAgICAgICAg aWYgbm90IGZpcnN0OgorKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIsICIpCiArCi0g c3RhdGljIHZvaWQKLS1ib29rZV9pbnNlcnRfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwb2lu dCAqYiwgaW50IHRpZCkKLStib29rZV9pbnNlcnRfcG9pbnQgKHN0cnVjdCBsd3BfaW5mbyAqbHAs IHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqYikKLSB7Ci0gICBpbnQgaTsKLSAgIGxvbmcgc2xv dDsKLUBAIC0xNTgwLDEyICsxNTgwLDEyIEBAIGJvb2tlX2luc2VydF9wb2ludCAoc3RydWN0IHBw Y19od19icmVha3BvaW50ICpiLCBpbnQgdGlkKQotICAgbWVtY3B5IChwLCBiLCBzaXplb2YgKHN0 cnVjdCBwcGNfaHdfYnJlYWtwb2ludCkpOwotIAotICAgZXJybm8gPSAwOwotLSAgc2xvdCA9IHB0 cmFjZSAoUFBDX1BUUkFDRV9TRVRIV0RFQlVHLCB0aWQsIDAsIHApOwotKyAgc2xvdCA9IHB0cmFj ZSAoUFBDX1BUUkFDRV9TRVRIV0RFQlVHLCBUSURHRVQgKGxwLT5wdGlkKSwgMCwgcCk7Ci0gICBp ZiAoc2xvdCA8IDApCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIlVuZXhwZWN0ZWQgZXJyb3Ig c2V0dGluZyBicmVha3BvaW50IG9yIHdhdGNocG9pbnQiKSk7Ci0gCi0gICAvKiBFdmVyeXRoaW5n IHdlbnQgZmluZSwgc28gd2UgaGF2ZSB0byByZWdpc3RlciB0aGlzICpwb2ludC4gICovCi0tICB0 ID0gYm9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAodGlkLCAxKTsKLSsgIHQgPSBib29r ZV9maW5kX3RocmVhZF9wb2ludHNfYnlfdGlkIChUSURHRVQgKGxwLT5wdGlkKSwgMSk7Ci0gICBn ZGJfYXNzZXJ0ICh0ICE9IE5VTEwpOwotICAgaHdfYnJlYWtzID0gdC0+aHdfYnJlYWtzOwotIAot QEAgLTE2MDMsMTcgKzE2MDMsMzMgQEAgYm9va2VfaW5zZXJ0X3BvaW50IChzdHJ1Y3QgcHBjX2h3 X2JyZWFrcG9pbnQgKmIsIGludCB0aWQpCi0gICBkaXNjYXJkX2NsZWFudXBzIChjKTsKLSB9Ci0g Ci0tLyogVGhpcyBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgd3JhcHBlciB0aGF0IGlzIHJlc3BvbnNp YmxlIGZvciByZW1vdmluZyBhCi0tICAgKnBvaW50IChpLmUuLCBjYWxsaW5nIGBwdHJhY2UnIGlu IG9yZGVyIHRvIGlzc3VlIHRoZSByZXF1ZXN0IHRvIHRoZQotLSAgIGtlcm5lbCksIGFuZCB1bnJl Z2lzdGVyaW5nIGl0IGludGVybmFsbHkgYXQgR0RCLiAgKi8KLS1zdGF0aWMgdm9pZAotLWJvb2tl X3JlbW92ZV9wb2ludCAoc3RydWN0IHBwY19od19icmVha3BvaW50ICpiLCBpbnQgdGlkKQotKy8q IENhbGxiYWNrIGZvciBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMKLSsgICBjYWxs aW5nIGJvb2tlX2luc2VydF9wb2ludC4gICovCisrICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1i b2wgKHN0cmVhbSwgc3ltLCBibG9jaykKKysgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCiArCi0r c3RhdGljIGludAotK2Jvb2tlX2luc2VydF9wb2ludF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZv ICpscCwgdm9pZCAqYl92b2lkcCkKLSB7Ci0rICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKmIg PSBiX3ZvaWRwOworKyAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlIGEg bWV0aG9kIG9uIGdkYi5GcmFtZS4KKysgICAgIyBCdXQgdGhlbiB3ZSBuZWVkIHN0cmVhbSB3cmFw cGVycy4KKysgICAgZGVmIGRlc2NyaWJlIChzZWxmLCBzdHJlYW0sIGZ1bGwpOgorKyAgICAgICAg aWYgc2VsZi50eXBlICgpID09IGdkYi5EVU1NWV9GUkFNRToKKysgICAgICAgICAgICBzdHJlYW0u d3JpdGUgKCIgPGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGdkYj5cbiIpCisrICAgICAgICBlbGlmIHNl bGYudHlwZSAoKSA9PSBnZGIuU0lHVFJBTVBfRlJBTUU6CisrICAgICAgICAgICAgc3RyZWFtLndy aXRlICgiIDxzaWduYWwgaGFuZGxlciBjYWxsZWQ+XG4iKQorKyAgICAgICAgZWxzZToKKysgICAg ICAgICAgICBzYWwgPSBzZWxmLmZpbmRfc2FsICgpCisrICAgICAgICAgICAgcGMgPSBzZWxmLnBj ICgpCisrICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZSAoKQorKyAgICAgICAgICAgIGlmIG5v dCBuYW1lOgorKyAgICAgICAgICAgICAgICBuYW1lID0gIj8/IgorKyAgICAgICAgICAgIGlmIHBj ICE9IHNhbC5wYyBvciBub3Qgc2FsLnN5bXRhYjoKKysgICAgICAgICAgICAgICAgc3RyZWFtLndy aXRlICgiIDB4JTA4eCBpbiIgJSBwYykKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgIiAr IG5hbWUgKyAiICgiKQogKwotKyAgYm9va2VfaW5zZXJ0X3BvaW50IChscCwgYik7CisrICAgICAg ICAgICAgZnVuYyA9IHNlbGYuZnVuY3Rpb24gKCkKKysgICAgICAgICAgICBzZWxmLnByaW50X2Zy YW1lX2FyZ3MgKHN0cmVhbSwgZnVuYykKICsKLSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwu ICAqLwotKyAgcmV0dXJuIDA7Ci0rfQorKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIikiKQog KwotKy8qIFRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVf d2F0Y2hwb2ludF9sd3BzIHRoYXQgaXMKLSsgICByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYSAq cG9pbnQgKGkuZS4sIGNhbGxpbmcgYHB0cmFjZScgaW4gb3JkZXIgdG8gaXNzdWUKLSsgICB0aGUg cmVxdWVzdCB0byB0aGUga2VybmVsKSwgYW5kIHVucmVnaXN0ZXJpbmcgaXQgaW50ZXJuYWxseSBh dCBHREIuICAqLworKyAgICAgICAgICAgIGlmIHNhbC5zeW10YWIgYW5kIHNhbC5zeW10YWIuZmls ZW5hbWU6CisrICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiBhdCAiICsgc2FsLnN5bXRh Yi5maWxlbmFtZSkKKysgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiOiIgKyBzdHIgKHNh bC5saW5lKSkKICsKLStzdGF0aWMgaW50Ci0rYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrIChz dHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpiX3ZvaWRwKQotK3sKLSsgIHN0cnVjdCBwcGNfaHdf YnJlYWtwb2ludCAqYiA9IGJfdm9pZHA7Ci0gICBpbnQgaTsKLSAgIHN0cnVjdCBod19icmVha190 dXBsZSAqaHdfYnJlYWtzOwotICAgc3RydWN0IHRocmVhZF9wb2ludHMgKnQ7Ci0gCi0tICB0ID0g Ym9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAodGlkLCAwKTsKLSsgIHQgPSBib29rZV9m aW5kX3RocmVhZF9wb2ludHNfYnlfdGlkIChUSURHRVQgKGxwLT5wdGlkKSwgMCk7Ci0gICBnZGJf YXNzZXJ0ICh0ICE9IE5VTEwpOwotICAgaHdfYnJlYWtzID0gdC0+aHdfYnJlYWtzOwotIAotQEAg LTE2MjcsMTMgKzE2NDMsMTcgQEAgYm9va2VfcmVtb3ZlX3BvaW50IChzdHJ1Y3QgcHBjX2h3X2Jy ZWFrcG9pbnQgKmIsIGludCB0aWQpCi0gICAgICBicmVha3BvaW50cy93YXRjaHBvaW50cyBhcyAi b25lLXNob3QiLCB0aGF0IGlzLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5Ci0gICAgICBkZWxldGVk IHdoZW4gaGl0LiAgKi8KLSAgIGVycm5vID0gMDsKLS0gIGlmIChwdHJhY2UgKFBQQ19QVFJBQ0Vf REVMSFdERUJVRywgdGlkLCAwLCBod19icmVha3NbaV0uc2xvdCkgPCAwKQotKyAgaWYgKHB0cmFj ZSAoUFBDX1BUUkFDRV9ERUxIV0RFQlVHLCBUSURHRVQgKGxwLT5wdGlkKSwgMCwgaHdfYnJlYWtz W2ldLnNsb3QpCi0rICAgICAgPCAwKQotICAgICBpZiAoZXJybm8gIT0gRU5PRU5UKQotICAgICAg IHBlcnJvcl93aXRoX25hbWUgKF8oIlVuZXhwZWN0ZWQgZXJyb3IgZGVsZXRpbmcgIgotIAkJCSAg ImJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCIpKTsKLSAKLSAgIHhmcmVlIChod19icmVha3NbaV0u aHdfYnJlYWspOwotICAgaHdfYnJlYWtzW2ldLmh3X2JyZWFrID0gTlVMTDsKKysgICAgICAgICAg ICBpZiBub3Qgc2VsZi5uYW1lICgpIG9yIChub3Qgc2FsLnN5bXRhYiBvciBub3Qgc2FsLnN5bXRh Yi5maWxlbmFtZSk6CisrICAgICAgICAgICAgICAgIGxpYiA9IGdkYi5zb2xpYl9hZGRyZXNzIChw YykKKysgICAgICAgICAgICAgICAgaWYgbGliOgorKyAgICAgICAgICAgICAgICAgICAgc3RyZWFt LndyaXRlICgiIGZyb20gIiArIGxpYikKICsKLSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwu ICAqLwotKyAgcmV0dXJuIDA7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlZ2lz dGVycyBuZWVkZWQgZm9yIGEgcmFuZ2VkIGJyZWFrcG9pbnQuICAqLwotQEAgLTE2NTMsNyArMTY3 Myw2IEBAIHN0YXRpYyBpbnQKLSBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAotIAkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0 KQotIHsKLS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9p bnQgcDsKLSAKLSAgIGlmICghaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQotQEAgLTE2 NzksOCArMTY5OCw3IEBAIHBwY19saW51eF9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCi0gICAgICAgcC5hZGRyMiA9IDA7Ci0gICAgIH0KLSAKLS0gIEFMTF9M V1BTIChscCkKLS0gICAgYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChscC0+cHRpZCkp OwotKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9pbnNlcnRfcG9p bnRfY2FsbGJhY2ssICZwKTsKLSAKLSAgIHJldHVybiAwOwotIH0KLUBAIC0xNjg5LDcgKzE3MDcs NiBAQCBzdGF0aWMgaW50Ci0gcHBjX2xpbnV4X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJICBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkK LSB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotICAgc3RydWN0IHBwY19od19icmVha3BvaW50 IHA7Ci0gCi0gICBpZiAoIWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBAIC0xNzE1 LDggKzE3MzIsNyBAQCBwcGNfbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAotICAgICAgIHAuYWRkcjIgPSAwOwotICAgICB9Ci0gCi0tICBBTExfTFdQ UyAobHApCi0tICAgIGJvb2tlX3JlbW92ZV9wb2ludCAoJnAsIFRJREdFVCAobHAtPnB0aWQpKTsK LSsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50 X2NhbGxiYWNrLCAmcCk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTc0NSw3ICsxNzYxLDYg QEAgc3RhdGljIGludAotIHBwY19saW51eF9pbnNlcnRfbWFza193YXRjaHBvaW50IChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgYWRkciwKLSAJCQkJICBDT1JFX0FERFIgbWFzaywg aW50IHJ3KQotIHsKLS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBzdHJ1Y3QgcHBjX2h3X2Jy ZWFrcG9pbnQgcDsKLSAKLSAgIGdkYl9hc3NlcnQgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFj ZSAoKSk7Ci1AQCAtMTc1OCw4ICsxNzczLDcgQEAgcHBjX2xpbnV4X2luc2VydF9tYXNrX3dhdGNo cG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRyLAotICAgcC5hZGRy MiA9IG1hc2s7Ci0gICBwLmNvbmRpdGlvbl92YWx1ZSA9IDA7Ci0gCi0tICBBTExfTFdQUyAobHAp Ci0tICAgIGJvb2tlX2luc2VydF9wb2ludCAoJnAsIFRJREdFVCAobHAtPnB0aWQpKTsKLSsgIGxp bnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfaW5zZXJ0X3BvaW50X2NhbGxi YWNrLCAmcCk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTc3Myw3ICsxNzg3LDYgQEAgc3Rh dGljIGludAotIHBwY19saW51eF9yZW1vdmVfbWFza193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLCBDT1JFX0FERFIgYWRkciwKLSAJCQkJICBDT1JFX0FERFIgbWFzaywgaW50IHJ3 KQotIHsKLS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9p bnQgcDsKLSAKLSAgIGdkYl9hc3NlcnQgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSk7 Ci1AQCAtMTc4Niw4ICsxNzk5LDcgQEAgcHBjX2xpbnV4X3JlbW92ZV9tYXNrX3dhdGNocG9pbnQg KHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRyLAotICAgcC5hZGRyMiA9IG1h c2s7Ci0gICBwLmNvbmRpdGlvbl92YWx1ZSA9IDA7Ci0gCi0tICBBTExfTFdQUyAobHApCi0tICAg IGJvb2tlX3JlbW92ZV9wb2ludCAoJnAsIFRJREdFVCAobHAtPnB0aWQpKTsKLSsgIGxpbnV4X25h dF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAm cCk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTc5NywxMCArMTgwOSwxNiBAQCBzdGF0aWMg aW50Ci0gY2FuX3VzZV93YXRjaHBvaW50X2NvbmRfYWNjZWwgKHZvaWQpCi0gewotICAgc3RydWN0 IHRocmVhZF9wb2ludHMgKnA7Ci0tICBpbnQgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlkKTsK LSAgIGludCBjbnQgPSBib29rZV9kZWJ1Z19pbmZvLm51bV9jb25kaXRpb25fcmVncywgaTsKLSAg IENPUkVfQUREUiB0bXBfdmFsdWU7Ci0gCi0rICAvKiBPdmVybG9hZCB0aHJlYWQgaWQgb250byBw cm9jZXNzIGlkLiAgKi8KLSsgIGludCB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAg ICAgICAgICAgIHN0cmVhbS53cml0ZSAoIlxuIikKICsKLSsgIC8qIE5vIHRocmVhZCBpZCwganVz dCB1c2UgcHJvY2VzcyBpZC4gICovCi0rICBpZiAodGlkID09IDApCi0rICAgIHRpZCA9IFBJREdF VCAoaW5mZXJpb3JfcHRpZCk7CisrICAgICAgICAgICAgaWYgZnVsbDoKKysgICAgICAgICAgICAg ICAgc2VsZi5wcmludF9mcmFtZV9sb2NhbHMgKHN0cmVhbSwgZnVuYykKICsKLSAgIGlmICghaGF2 ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpIHx8IGNudCA9PSAwKQotICAgICByZXR1cm4gMDsK LSAKLUBAIC0xOTk5LDYgKzIwMTcsMjIgQEAgcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50 X2NvbmRpdGlvbiAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAJICAmJiBjaGVj a19jb25kaXRpb24gKGFkZHIsIGNvbmQsICZkYXRhX3ZhbHVlLCAmbGVuKSk7Ci0gfQotIAotKy8q IENhbGxiYWNrIGZvciBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgc2V0dGluZyBS RVRQX1ZPSURQIGJ5Ci0rICAgUFRSQUNFX1NFVF9ERUJVR1JFRyBmb3IgTFAuICAqLworKyAgICBk ZWYgX19nZXRhdHRyX18gKHNlbGYsIG5hbWUpOgorKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNl bGYuZnJhbWUsIG5hbWUpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFj ZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi42YmI0ZmIxCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0 aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5CitAQCAtMCwwICsxLDQyIEBACisrIyBGaWx0ZXJpbmcg YmFja3RyYWNlLgogKwotK3N0YXRpYyBpbnQKLStzZXRfc2F2ZWRfZGFicl92YWx1ZV9jYWxsYmFj ayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm9pZCAqcmV0cF92b2lkcCkKLSt7Ci0rICBpbnQgKnJl dHAgPSByZXRwX3ZvaWRwOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JF RywgVElER0VUIChscC0+cHRpZCksIDAsIHNhdmVkX2RhYnJfdmFsdWUpCi0rICAgICAgPCAwKQot KyAgICAqcmV0cCA9IC0xOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsgIC8q IENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0dXJuIDA7Ci0rfQorK2ltcG9ydCBn ZGIKKytpbXBvcnQgaXRlcnRvb2xzCiArCi0gLyogU2V0IHVwIFAgd2l0aCB0aGUgcGFyYW1ldGVy cyBuZWNlc3NhcnkgdG8gcmVxdWVzdCBhIHdhdGNocG9pbnQgY292ZXJpbmcKLSAgICBMRU4gYnl0 ZXMgc3RhcnRpbmcgYXQgQUREUiBhbmQgaWYgcG9zc2libGUgd2l0aCBjb25kaXRpb24gZXhwcmVz c2lvbiBDT05ECi0gICAgZXZhbHVhdGVkIGJ5IGhhcmR3YXJlLiAgSU5TRVJUIHRlbGxzIGlmIHdl IGFyZSBjcmVhdGluZyBhIHJlcXVlc3QgZm9yCi1AQCAtMjA1NCw3ICsyMDg4LDYgQEAgc3RhdGlj IGludAotIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCBydywKLSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLS0gIHN0 cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBpbnQgcmV0ID0gLTE7Ci0gCi0gICBpZiAoaGF2ZV9wdHJh Y2VfYm9va2VfaW50ZXJmYWNlICgpKQotQEAgLTIwNjMsOCArMjA5Niw3IEBAIHBwY19saW51eF9p bnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAKLSAg ICAgICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0ICgmcCwgYWRkciwgbGVuLCBydywgY29uZCwg MSk7Ci0gCi0tICAgICAgQUxMX0xXUFMgKGxwKQotLQlib29rZV9pbnNlcnRfcG9pbnQgKCZwLCBU SURHRVQgKGxwLT5wdGlkKSk7Ci0rICAgICAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9s d3BzIChib29rZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKLSAKLSAgICAgICByZXQgPSAw OwotICAgICB9Ci1AQCAtMjEwNywxMiArMjEzOSw4IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAKLSAgICAgICBzYXZlZF9k YWJyX3ZhbHVlID0gZGFicl92YWx1ZTsKLSAKLS0gICAgICBBTExfTFdQUyAobHApCi0tCWlmIChw dHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIFRJREdFVCAobHAtPnB0aWQpLCAwLAotLQkJICAg IHNhdmVkX2RhYnJfdmFsdWUpIDwgMCkKLS0JICByZXR1cm4gLTE7Ci0tCi0gICAgICAgcmV0ID0g MDsKLSsgICAgICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHNldF9zYXZlZF9k YWJyX3ZhbHVlX2NhbGxiYWNrLCAmcmV0KTsKLSAgICAgfQotIAotICAgcmV0dXJuIHJldDsKLUBA IC0yMTIyLDcgKzIxNTAsNiBAQCBzdGF0aWMgaW50Ci0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAotIAkJCSAgICAgc3RydWN0IGV4 cHJlc3Npb24gKmNvbmQpCi0gewotLSAgc3RydWN0IGx3cF9pbmZvICpscDsKLSAgIGludCByZXQg PSAtMTsKLSAKLSAgIGlmIChoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAtMjEz MSwyMCArMjE1OCwxNiBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0gCi0gICAgICAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVz dCAoJnAsIGFkZHIsIGxlbiwgcncsIGNvbmQsIDApOwotIAotLSAgICAgIEFMTF9MV1BTIChscCkK LS0JYm9va2VfcmVtb3ZlX3BvaW50ICgmcCwgVElER0VUIChscC0+cHRpZCkpOwotKyAgICAgIGxp bnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxi YWNrLCAmcCk7Ci0gCi0gICAgICAgcmV0ID0gMDsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0g ICAgICAgc2F2ZWRfZGFicl92YWx1ZSA9IDA7Ci0tICAgICAgQUxMX0xXUFMgKGxwKQotLQlpZiAo cHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCBUSURHRVQgKGxwLT5wdGlkKSwgMCwKLS0JCSAg ICBzYXZlZF9kYWJyX3ZhbHVlKSA8IDApCi0tCSAgcmV0dXJuIC0xOwotIAotICAgICAgIHJldCA9 IDA7Ci0rICAgICAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzZXRfc2F2ZWRf ZGFicl92YWx1ZV9jYWxsYmFjaywgJnJldCk7Ci0gICAgIH0KLSAKLSAgIHJldHVybiByZXQ7Ci1A QCAtMjE3MSw3ICsyMTk0LDcgQEAgcHBjX2xpbnV4X25ld190aHJlYWQgKHN0cnVjdCBsd3BfaW5m byAqbHApCi0gICAgICAgLyogQ29weSB0aGF0IHRocmVhZCdzIGJyZWFrcG9pbnRzIGFuZCB3YXRj aHBvaW50cyB0byB0aGUgbmV3IHRocmVhZC4gICovCi0gICAgICAgZm9yIChpID0gMDsgaSA8IG1h eF9zbG90c19udW1iZXI7IGkrKykKLSAJaWYgKGh3X2JyZWFrc1tpXS5od19icmVhaykKLS0JICBi b29rZV9pbnNlcnRfcG9pbnQgKGh3X2JyZWFrc1tpXS5od19icmVhaywgdGlkKTsKLSsJICBib29r ZV9pbnNlcnRfcG9pbnQgKGxwLCBod19icmVha3NbaV0uaHdfYnJlYWspOwotICAgICB9Ci0gICBl bHNlCi0gICAgIHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCAwLCBzYXZlZF9kYWJy X3ZhbHVlKTsKLUBAIC0yMjI5LDcgKzIyNTIsMTQgQEAgcHBjX2xpbnV4X3N0b3BwZWRfZGF0YV9h ZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LCBDT1JFX0FERFIgKmFkZHJfcCkKLSAg ICAgICAvKiBUaGUgaW5kZXggKG9yIHNsb3QpIG9mIHRoZSAqcG9pbnQgaXMgcGFzc2VkIGluIHRo ZSBzaV9lcnJubyBmaWVsZC4gICovCi0gICAgICAgaW50IHNsb3QgPSBzaWdpbmZvX3AtPnNpX2Vy cm5vOwotIAotLSAgICAgIHQgPSBib29rZV9maW5kX3RocmVhZF9wb2ludHNfYnlfdGlkIChUSURH RVQgKGluZmVyaW9yX3B0aWQpLCAwKTsKLSsgICAgICAvKiBPdmVybG9hZCB0aHJlYWQgaWQgb250 byBwcm9jZXNzIGlkLiAgKi8KLSsgICAgICBpbnQgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlk KTsKLSsKLSsgICAgICAvKiBObyB0aHJlYWQgaWQsIGp1c3QgdXNlIHByb2Nlc3MgaWQuICAqLwot KyAgICAgIGlmICh0aWQgPT0gMCkKLSsJdGlkID0gUElER0VUIChpbmZlcmlvcl9wdGlkKTsKLSsK LSsgICAgICB0ID0gYm9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAodGlkLCAwKTsKLSAK LSAgICAgICAvKiBGaW5kIG91dCBpZiB0aGlzICpwb2ludCBpcyBhIGhhcmR3YXJlIGJyZWFrcG9p bnQuCi0gCSBJZiBzbywgd2Ugc2hvdWxkIHJldHVybiAwLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIv cHBjLWxpbnV4LXRkZXAuYyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCi1pbmRleCBiNjQ3MGZlLi5m ODcxMzA5IDEwMDY0NAotLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9wcGMt bGludXgtdGRlcC5jCi1AQCAtNjUsNiArNjUsMTQgQEAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2 MDAwL3Bvd2VycGMtaXNhMjA1LXZzeDY0bC5jIgotICNpbmNsdWRlICJmZWF0dXJlcy9yczYwMDAv cG93ZXJwYy1lNTAwbC5jIgotIAotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0rI2luY2x1ZGUg ImF4LmgiCi0rI2luY2x1ZGUgImF4LWdkYi5oIgotKyNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgi Ci0rI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCi0rI2luY2x1ZGUgInVzZXItcmVncy5oIgotKyNp bmNsdWRlIDxjdHlwZS5oPgotKwotIC8qIFRoZSBzeXNjYWxsJ3MgWE1MIGZpbGVuYW1lIGZvciBQ UEMgYW5kIFBQQzY0LiAgKi8KLSAjZGVmaW5lIFhNTF9TWVNDQUxMX0ZJTEVOQU1FX1BQQyAic3lz Y2FsbHMvcHBjLWxpbnV4LnhtbCIKLSAjZGVmaW5lIFhNTF9TWVNDQUxMX0ZJTEVOQU1FX1BQQzY0 ICJzeXNjYWxscy9wcGM2NC1saW51eC54bWwiCi1AQCAtMTE5Miw2ICsxMjAwLDY1IEBAIHBwY19s aW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAg ICB9Ci0gfQotIAotK3N0YXRpYyBpbnQKLStwcGNfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuICgqcyA9 PSAnaScgLyogTGl0ZXJhbCBudW1iZXIuICAqLwotKwkgIHx8IChpc2RpZ2l0ICgqcykgJiYgc1sx XSA9PSAnKCcKLSsJICAgICAgJiYgaXNkaWdpdCAoc1syXSkpIC8qIERpc3BsYWNlbWVudC4gICov Ci0rCSAgfHwgKCpzID09ICcoJyAmJiBpc2RpZ2l0IChzWzFdKSkgLyogUmVnaXN0ZXIgaW5kaXJl Y3Rpb24uICAqLwotKwkgIHx8IGlzZGlnaXQgKCpzKSk7IC8qIFJlZ2lzdGVyIHZhbHVlLiAgKi8K LSt9CisrIyBPdXIgb25seSBleHBvcnRzLgorK19fYWxsX18gPSBbJ3B1c2hfZnJhbWVfZmlsdGVy JywgJ2NyZWF0ZV9mcmFtZV9maWx0ZXInXQogKwotK3N0YXRpYyBpbnQKLStwcGNfc3RhcF9wYXJz ZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgICAgICBzdHJ1 Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQotK3sKLSsgIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKLSsg ICAgewotKyAgICAgIC8qIFRoaXMgdGVtcG9yYXJ5IHBvaW50ZXIgaXMgbmVlZGVkIGJlY2F1c2Ug d2UgaGF2ZSB0byBkbyBhIGxvb2thaGVhZC4KLSsJICBXZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGgg YSByZWdpc3RlciBkaXNwbGFjZW1lbnQsIGFuZCBpbiBzdWNoIGNhc2UKLSsJICB3ZSB3b3VsZCBu b3QgbmVlZCB0byBkbyBhbnl0aGluZy4gICovCi0rICAgICAgY29uc3QgY2hhciAqcyA9IHAtPmFy ZzsKLSsgICAgICBjaGFyICpyZWduYW1lOwotKyAgICAgIGludCBsZW47Ci0rICAgICAgc3RydWN0 IHN0b2tlbiBzdHI7Ci0rCi0rICAgICAgd2hpbGUgKGlzZGlnaXQgKCpzKSkKLSsJKytzOwotKwot KyAgICAgIGlmICgqcyA9PSAnKCcpCi0rCS8qIEl0IGlzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50 IGluZGVlZC4gIFJldHVybmluZyAwIG1lYW5zIHdlIGFyZQotKwkgICBkZWZlcnJpbmcgdGhlIHRy ZWF0bWVudCBvZiB0aGlzIGNhc2UgdG8gdGhlIGdlbmVyaWMgcGFyc2VyLiAgKi8KLSsJcmV0dXJu IDA7Ci0rCi0rICAgICAgbGVuID0gcyAtIHAtPmFyZzsKLSsgICAgICByZWduYW1lID0gYWxsb2Nh IChsZW4gKyAyKTsKLSsgICAgICByZWduYW1lWzBdID0gJ3InOwotKwotKyAgICAgIHN0cm5jcHkg KHJlZ25hbWUgKyAxLCBwLT5hcmcsIGxlbik7Ci0rICAgICAgKytsZW47Ci0rICAgICAgcmVnbmFt ZVtsZW5dID0gJ1wwJzsKLSsKLSsgICAgICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVt IChnZGJhcmNoLCByZWduYW1lLCBsZW4pID09IC0xKQotKwllcnJvciAoXygiSW52YWxpZCByZWdp c3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAgcmVnbmFtZSwg cC0+c2F2ZWRfYXJnKTsKLSsKLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNU RVIpOwotKyAgICAgIHN0ci5wdHIgPSByZWduYW1lOwotKyAgICAgIHN0ci5sZW5ndGggPSBsZW47 Ci0rICAgICAgd3JpdGVfZXhwX3N0cmluZyAoc3RyKTsKLSsgICAgICB3cml0ZV9leHBfZWx0X29w Y29kZSAoT1BfUkVHSVNURVIpOwotKwotKyAgICAgIHAtPmFyZyA9IHM7Ci0rICAgIH0KLSsgIGVs c2UKLSsgICAgLyogQWxsIHRoZSBvdGhlciB0b2tlbnMgc2hvdWxkIGJlIGhhbmRsZWQgY29ycmVj dGx5IGJ5IHRoZSBnZW5lcmljCi0rICAgICAgIHBhcnNlci4gICovCi0rICAgIHJldHVybiAwOwor K2ZyYW1lX2ZpbHRlciA9IE5vbmUKICsKLSsgIHJldHVybiAxOwotK30KLSAKLSAvKiBDZWxsL0Iu RS4gYWN0aXZlIFNQRSBjb250ZXh0IHRyYWNraW5nIHN1cHBvcnQuICAqLwotIAotQEAgLTE1MDks NiArMTU3NiwxNSBAQCBwcGNfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bywKLSAgIC8qIEdldCB0aGUgc3lzY2FsbCBudW1iZXIgZnJvbSB0aGUgYXJjaCdzIHJlZ2lzdGVy LiAgKi8KLSAgIHNldF9nZGJhcmNoX2dldF9zeXNjYWxsX251bWJlciAoZ2RiYXJjaCwgcHBjX2xp bnV4X2dldF9zeXNjYWxsX251bWJlcik7Ci0gCi0rICAvKiBTeXN0ZW1UYXAgZnVuY3Rpb25zLiAg Ki8KLSsgIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICJpIik7Ci0r ICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoZ2RiYXJjaCwg IigiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKGdk YmFyY2gsICIpIik7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXggKGdk YmFyY2gsICJyIik7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChnZGJh cmNoLCBwcGNfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3Bh cnNlX3NwZWNpYWxfdG9rZW4gKGdkYmFyY2gsCi0rCQkJCQlwcGNfc3RhcF9wYXJzZV9zcGVjaWFs X3Rva2VuKTsKKytkZWYgcHVzaF9mcmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKKysgICAgIiIi UmVnaXN0ZXIgYSBuZXcgYmFja3RyYWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNl JyBjb21tYW5kLgorK1RoZSBmaWx0ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4g YXJndW1lbnQuICBUaGUgaXRlcmF0b3IKKyt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmpl Y3RzLiAgVGhlIGZpbHRlciBzaG91bGQgaW4gdHVybiBhY3QgYXMKKythbiBpdGVyYXRvciByZXR1 cm5pbmcgc3VjaCBvYmplY3RzLiIiIgorKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCisrICAgIGlm IGZyYW1lX2ZpbHRlciA9PSBOb25lOgorKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29uc3RydWN0 b3IKKysgICAgZWxzZToKKysgICAgICAgIGZyYW1lX2ZpbHRlciA9IGxhbWJkYSBpdGVyYXRvciwg ZmlsdGVyID0gZnJhbWVfZmlsdGVyOiBjb25zdHJ1Y3RvciAoZmlsdGVyIChpdGVyYXRvcikpCiAr Ci0gICBpZiAodGRlcC0+d29yZHNpemUgPT0gNCkKLSAgICAgewotICAgICAgIC8qIFVudGlsIE5v dmVtYmVyIDIwMDEsIGdjYyBkaWQgbm90IGNvbXBseSB3aXRoIHRoZSAzMiBiaXQgU3lzVgotZGlm ZiAtLWdpdCBhL2dkYi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKLWluZGV4IGJlZThhODUu LjAwZjMzMmQgMTAwNjQ0Ci0tLS0gYS9nZGIvcHJpbnRjbWQuYwotKysrIGIvZ2RiL3ByaW50Y21k LmMKLUBAIC00OSw2ICs0OSw3IEBACi0gI2luY2x1ZGUgImNoYXJzZXQuaCIKLSAjaW5jbHVkZSAi YXJjaC11dGlscy5oIgotICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCi0rI2luY2x1ZGUgImR3 YXJmMmxvYy5oIgotIAotICNpZmRlZiBUVUkKLSAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyogRm9y IHR1aV9hY3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NzEsNiArOTcyLDExIEBAIHByaW50X2NvbW1h bmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKLSAgIGVsc2UKLSAg ICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOwotIAotKyAgLyogRG8gbm90IHRyeSB0 byBPQkpFQ1RfQUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVzdGVkIGlu IHRoZQotKyAgICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5kIGJ5IFJF QURfVkFSX1ZBTFVFLiAgVGhlIHZhbHVlIGhlcmUKLSsgICAgIGNhbiBiZSBhbHJlYWR5IGEgY2Fs Y3VsYXRlZCBleHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKLSsgICAgIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworK2RlZiBjcmVhdGVfZnJhbWVfZmlsdGVyIChpdGVy KToKKysgICAgZ2xvYmFsIGZyYW1lX2ZpbHRlcgorKyAgICBpZiBmcmFtZV9maWx0ZXIgaXMgTm9u ZToKKysgICAgICAgIHJldHVybiBpdGVyCisrICAgIHJldHVybiBmcmFtZV9maWx0ZXIgKGl0ZXIp CiArCi0gICBpZiAodm9pZHByaW50IHx8ICh2YWwgJiYgdmFsdWVfdHlwZSAodmFsKSAmJgotIAkJ ICAgIFRZUEVfQ09ERSAodmFsdWVfdHlwZSAodmFsKSkgIT0gVFlQRV9DT0RFX1ZPSUQpKQotICAg ICB7Ci1AQCAtMTA1OSw2ICsxMDY1LDkgQEAgb3V0cHV0X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50 IGZyb21fdHR5KQotIAotICAgdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7Ci0gCi0r ICBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKLSsgICAgb2JqZWN0X2FkZHJl c3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvYmFja3RyYWNlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWVl YTkwOQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFj a3RyYWNlLnB5CitAQCAtMCwwICsxLDEwNiBAQAorKyMgTmV3IGJhY2t0cmFjZSBjb21tYW5kLgog KwotICAgYW5ub3RhdGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOwotIAotICAgZ2V0 X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKLUBAIC0xNDcyLDYgKzE0 ODEsMjQgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKLSAJc2V0X2ludGVy bmFsdmFyIChsb29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwot ICAgICB9Ci0gfQorKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyNpZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBm b3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK3N0YXRpYyB2b2lkCi0rcHJpbnRfdHlw ZXNfbWFya191c2VkICh2b2lkKQotK3sKLSsgIHN0cnVjdCBkaXNwbGF5ICpkOworK2ltcG9ydCBn ZGIKKytpbXBvcnQgZ2RiLmJhY2t0cmFjZQorK2ltcG9ydCBpdGVydG9vbHMKKytmcm9tIGdkYi5G cmFtZUl0ZXJhdG9yIGltcG9ydCBGcmFtZUl0ZXJhdG9yCisrZnJvbSBnZGIuRnJhbWVXcmFwcGVy IGltcG9ydCBGcmFtZVdyYXBwZXIKKytpbXBvcnQgc3lzCiArCi0rICBpZiAobGFzdF9leGFtaW5l X3ZhbHVlKQotKyAgICB0eXBlX21hcmtfdXNlZCAodmFsdWVfdHlwZSAobGFzdF9leGFtaW5lX3Zh bHVlKSk7CisrY2xhc3MgUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlciAoZ2RiLlBhcmFtZXRlcik6 CisrICAgICIiIlRoZSBuZXctYmFja3RyYWNlIGNvbW1hbmQgY2FuIHNob3cgYmFja3RyYWNlcyBp biAncmV2ZXJzZScgb3JkZXIuCisrVGhpcyBtZWFucyB0aGF0IHRoZSBpbm5lcm1vc3QgZnJhbWUg d2lsbCBiZSBwcmludGVkIGxhc3QuCisrTm90ZSB0aGF0IHJldmVyc2UgYmFja3RyYWNlcyBhcmUg bW9yZSBleHBlbnNpdmUgdG8gY29tcHV0ZS4iIiIKICsKLSsgIGZvciAoZCA9IGRpc3BsYXlfY2hh aW47IGQ7IGQgPSBkLT5uZXh0KQotKyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4cF90eXBlc19t YXJrX3VzZWQgKGQtPmV4cCk7Ci0rfQotKyNlbmRpZgorKyAgICBzZXRfZG9jID0gIkVuYWJsZSBv ciBkaXNhYmxlIHJldmVyc2UgYmFja3RyYWNlcy4iCisrICAgIHNob3dfZG9jID0gIlNob3cgd2hl dGhlciBiYWNrdHJhY2VzIHdpbGwgYmUgcHJpbnRlZCBpbiByZXZlcnNlIG9yZGVyLiIKICsKLSAM Ci0gCi0gLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFpbi4KLUBA IC0xOTcxLDYgKzE5OTgsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25zdCBjaGFy ICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCi0gICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgb3B0czsKLSAKLSAgICAgICB2YWwgPSByZWFkX3Zhcl92YWx1ZSAodmFyLCBmcmFtZSk7 CisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIGdkYi5QYXJhbWV0ZXIuX19pbml0 X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBBUkFNX0JPT0xFQU4pCisrICAgICAgICAj IERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdkYi4KKysgICAgICAgIHNlbGYudmFsdWUg PSBGYWxzZQogKwotKyAgICAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lICgp OwotKyAgICAgIHNlbGVjdF9mcmFtZSAoZnJhbWUpOworK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFj ZSAoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZy YW1lcywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lcy4KKytXaXRoIGEgbmVnYXRpdmUgYXJndW1l bnQsIHByaW50IG91dGVybW9zdCAtQ09VTlQgZnJhbWVzLgorK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1 YWxpZmllciBhbHNvIHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCisr VXNlIG9mIHRoZSAncmF3JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFi bGUgbW9kdWxlcy4KKysiIiIKICsKLSAgICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0 cyk7Ci0gICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwotICAgICAgIGNvbW1vbl92YWxfcHJpbnQg KHZhbCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKLUBAIC0yODg0 LDQgKzI5MTUsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBu dW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKLSAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xh c3MsIGV2YWxfY29tbWFuZCwgXygiXAotIENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wi LCBhcmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ24gdG9cblwKLSBhIGNvbW1hbmQgbGluZSwgYW5k IGNhbGwgaXQuIikpOworKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgIyBGSVhN RTogdGhpcyBpcyBub3Qgd29ya2luZyBxdWl0ZSB3ZWxsIGVub3VnaCB0byByZXBsYWNlCisrICAg ICAgICAjICJiYWNrdHJhY2UiIHlldC4KKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fIChz ZWxmLCAibmV3LWJhY2t0cmFjZSIsIGdkYi5DT01NQU5EX1NUQUNLKQorKyAgICAgICAgc2VsZi5y ZXZlcnNlID0gUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlcigpCiArCi0rI2lmIDAKLSsgIG9ic2Vy dmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7Ci0rI2VuZGlmCi0g fQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5IGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKKysgICAgZGVmIHJldmVyc2VfaXRlciAo c2VsZiwgaXRlcik6CisrICAgICAgICByZXN1bHQgPSBbXQorKyAgICAgICAgZm9yIGl0ZW0gaW4g aXRlcjoKKysgICAgICAgICAgICByZXN1bHQuYXBwZW5kIChpdGVtKQorKyAgICAgICAgcmVzdWx0 LnJldmVyc2UoKQorKyAgICAgICAgcmV0dXJuIHJlc3VsdAorKworKyAgICBkZWYgZmluYWxfbiAo c2VsZiwgaXRlciwgeCk6CisrICAgICAgICByZXN1bHQgPSBbXQorKyAgICAgICAgZm9yIGl0ZW0g aW4gaXRlcjoKKysgICAgICAgICAgICByZXN1bHQuYXBwZW5kIChpdGVtKQorKyAgICAgICAgcmV0 dXJuIHJlc3VsdFt4Ol0KKysKKysgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6 CisrICAgICAgICBpID0gMAorKyAgICAgICAgY291bnQgPSAwCisrICAgICAgICBmaWx0ZXIgPSBU cnVlCisrICAgICAgICBmdWxsID0gRmFsc2UKKysKKysgICAgICAgIGZvciB3b3JkIGluIGFyZy5z cGxpdCAoIiAiKToKKysgICAgICAgICAgICBpZiB3b3JkID09ICcnOgorKyAgICAgICAgICAgICAg ICBjb250aW51ZQorKyAgICAgICAgICAgIGVsaWYgd29yZCA9PSAncmF3JzoKKysgICAgICAgICAg ICAgICAgZmlsdGVyID0gRmFsc2UKKysgICAgICAgICAgICBlbGlmIHdvcmQgPT0gJ2Z1bGwnOgor KyAgICAgICAgICAgICAgICBmdWxsID0gVHJ1ZQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAg ICAgICAgICAgIGNvdW50ID0gaW50ICh3b3JkKQorKworKyAgICAgICAgIyBGSVhNRTogcHJvdmlk ZSBvcHRpb24gdG8gc3RhcnQgYXQgc2VsZWN0ZWQgZnJhbWUKKysgICAgICAgICMgSG93ZXZlciwg c2hvdWxkIHN0aWxsIG51bWJlciBhcyBpZiBzdGFydGluZyBmcm9tIG5ld2VzdAorKyAgICAgICAg bmV3ZXN0X2ZyYW1lID0gZ2RiLm5ld2VzdF9mcmFtZSgpCisrICAgICAgICBpdGVyID0gaXRlcnRv b2xzLmltYXAgKEZyYW1lV3JhcHBlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RnJhbWVJdGVyYXRvciAobmV3ZXN0X2ZyYW1lKSkKKysgICAgICAgIGlmIGZpbHRlcjoKKysgICAg ICAgICAgICBpdGVyID0gZ2RiLmJhY2t0cmFjZS5jcmVhdGVfZnJhbWVfZmlsdGVyIChpdGVyKQor KworKyAgICAgICAgIyBOb3cgd3JhcCBpbiBhbiBpdGVyYXRvciB0aGF0IG51bWJlcnMgdGhlIGZy YW1lcy4KKysgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaXppcCAoaXRlcnRvb2xzLmNvdW50ICgw KSwgaXRlcikKKysKKysgICAgICAgICMgUmV2ZXJzZSBpZiB0aGUgdXNlciB3YW50ZWQgdGhhdC4K KysgICAgICAgIGlmIHNlbGYucmV2ZXJzZS52YWx1ZToKKysgICAgICAgICAgICBpdGVyID0gc2Vs Zi5yZXZlcnNlX2l0ZXIgKGl0ZXIpCisrCisrICAgICAgICAjIEV4dHJhY3Qgc3ViLXJhbmdlIHVz ZXIgd2FudHMuCisrICAgICAgICBpZiBjb3VudCA8IDA6CisrICAgICAgICAgICAgaXRlciA9IHNl bGYuZmluYWxfbiAoaXRlciwgY291bnQpCisrICAgICAgICBlbGlmIGNvdW50ID4gMDoKKysgICAg ICAgICAgICBpdGVyID0gaXRlcnRvb2xzLmlzbGljZSAoaXRlciwgMCwgY291bnQpCisrCisrICAg ICAgICBmb3IgcGFpciBpbiBpdGVyOgorKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUgKCIj JS0yZCIgJSBwYWlyWzBdKQorKyAgICAgICAgICAgIHBhaXJbMV0uZGVzY3JpYmUgKHN5cy5zdGRv dXQsIGZ1bGwpCisrCisrRmlsdGVyaW5nQmFja3RyYWNlKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjU2NTQ1NDYKK2luZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKIC0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5Ci1AQCAtMCwwICsxLDMzIEBA Ci0rIyBJdGVyYXRvciBvdmVyIGZyYW1lcy4KKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL2lnbm9yZV9lcnJvcnMucHkKK0BAIC0wLDAgKzEsMzcgQEAKKysjIElnbm9yZSBlcnJvcnMg aW4gdXNlciBjb21tYW5kcy4KICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpA QCAtNzM4MiwyOSArNDM1NiwzMyBAQCBpbmRleCAwMDAwMDAwLi41NjU0NTQ2CiArIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rY2xhc3MgRnJhbWVJdGVyYXRvcjoKLSsgICAgIiIiQW4g aXRlcmF0b3IgdGhhdCBpdGVyYXRlcyBvdmVyIGZyYW1lcy4iIiIKKytpbXBvcnQgZ2RiCiArCi0r ICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgIkluaXRpYWxpemUgYSBG cmFtZUl0ZXJhdG9yLiAgRlJBTUUgaXMgdGhlIHN0YXJ0aW5nIGZyYW1lLiIKLSsgICAgICAgIHNl bGYuZnJhbWUgPSBmcmFtZQorK2NsYXNzIElnbm9yZUVycm9yc0NvbW1hbmQgKGdkYi5Db21tYW5k KToKKysgICAgIiIiRXhlY3V0ZSBhIHNpbmdsZSBjb21tYW5kLCBpZ25vcmluZyBhbGwgZXJyb3Jz LgorK09ubHkgb25lLWxpbmUgY29tbWFuZHMgYXJlIHN1cHBvcnRlZC4KKytUaGlzIGlzIHByaW1h cmlseSB1c2VmdWwgaW4gc2NyaXB0cy4iIiIKICsKLSsgICAgZGVmIF9faXRlcl9fIChzZWxmKToK LSsgICAgICAgIHJldHVybiBzZWxmCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAg ICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJpZ25vcmUtZXJy b3JzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkKICsKLSsg ICAgZGVmIG5leHQgKHNlbGYpOgotKyAgICAgICAgcmVzdWx0ID0gc2VsZi5mcmFtZQotKyAgICAg ICAgaWYgcmVzdWx0IGlzIE5vbmU6Ci0rICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgot KyAgICAgICAgc2VsZi5mcmFtZSA9IHJlc3VsdC5vbGRlciAoKQotKyAgICAgICAgcmV0dXJuIHJl c3VsdAotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CisrICAgIGRlZiBpbnZva2UgKHNlbGYs IGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIGdkYi5leGVjdXRl IChhcmcsIGZyb21fdHR5KQorKyAgICAgICAgZXhjZXB0OgorKyAgICAgICAgICAgIHBhc3MKKysK KytJZ25vcmVFcnJvcnNDb21tYW5kICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvcGFob2xlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5 CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjc5MGE1NAoraW5kZXggMDAw MDAwMC4uMjFhMGJmMAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0Zy YW1lV3JhcHBlci5weQotQEAgLTAsMCArMSwxMTIgQEAKLSsjIFdyYXBwZXIgQVBJIGZvciBmcmFt ZXMuCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKK0BAIC0wLDAg KzEsNzUgQEAKKysjIHBhaG9sZSBjb21tYW5kIGZvciBnZGIKICsKICsjIENvcHlyaWdodCAoQykg MjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTc0MjMsMTA4 ICs0NDAxLDcxIEBAIGluZGV4IDAwMDAwMDAuLmI3OTBhNTQKICsKICtpbXBvcnQgZ2RiCiArCi0r IyBGSVhNRTogYXJndWFibHkgYWxsIHRoaXMgc2hvdWxkIGJlIG9uIEZyYW1lIHNvbWVob3cuCi0r Y2xhc3MgRnJhbWVXcmFwcGVyOgotKyAgICBkZWYgX19pbml0X18gKHNlbGYsIGZyYW1lKToKLSsg ICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZTsKKytjbGFzcyBQYWhvbGUgKGdkYi5Db21tYW5kKToK KysgICAgIiIiU2hvdyB0aGUgaG9sZXMgaW4gYSBzdHJ1Y3R1cmUuCisrVGhpcyBjb21tYW5kIHRh a2VzIGEgc2luZ2xlIGFyZ3VtZW50LCBhIHR5cGUgbmFtZS4KKytJdCBwcmludHMgdGhlIHR5cGUg YW5kIGRpc3BsYXlzIGNvbW1lbnRzIHNob3dpbmcgd2hlcmUgaG9sZXMgYXJlLiIiIgogKwotKyAg ICBkZWYgd3JpdGVfc3ltYm9sIChzZWxmLCBzdHJlYW0sIHN5bSwgYmxvY2spOgotKyAgICAgICAg aWYgbGVuIChzeW0ubGlua2FnZV9uYW1lKToKLSsgICAgICAgICAgICBuc3ltLCBpc19maWVsZF9v Zl90aGlzID0gZ2RiLmxvb2t1cF9zeW1ib2wgKHN5bS5saW5rYWdlX25hbWUsIGJsb2NrKQotKyAg ICAgICAgICAgIGlmIG5zeW0uYWRkcl9jbGFzcyAhPSBnZGIuU1lNQk9MX0xPQ19SRUdJU1RFUjoK LSsgICAgICAgICAgICAgICAgc3ltID0gbnN5bQorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgor KyAgICAgICAgc3VwZXIgKFBhaG9sZSwgc2VsZikuX19pbml0X18gKCJwYWhvbGUiLCBnZGIuQ09N TUFORF9OT05FLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5D T01QTEVURV9TWU1CT0wpCiArCi0rICAgICAgICBzdHJlYW0ud3JpdGUgKHN5bS5wcmludF9uYW1l ICsgIj0iKQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHZhbCA9IHNlbGYucmVhZF92YXIg KHN5bSkKLSsgICAgICAgICAgICBpZiB2YWwgIT0gTm9uZToKLSsgICAgICAgICAgICAgICAgdmFs ID0gc3RyICh2YWwpCi0rICAgICAgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBt b3JlIHByZWNpc2UgZXhjZXB0aW9uIGhlcmUuCi0rICAgICAgICBleGNlcHQgUnVudGltZUVycm9y LCB0ZXh0OgotKyAgICAgICAgICAgIHZhbCA9IHRleHQKLSsgICAgICAgIGlmIHZhbCA9PSBOb25l OgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIj8/PyIpCi0rICAgICAgICBlbHNlOgotKyAg ICAgICAgICAgIHN0cmVhbS53cml0ZSAoc3RyICh2YWwpKQotKwotKyAgICBkZWYgcHJpbnRfZnJh bWVfbG9jYWxzIChzZWxmLCBzdHJlYW0sIGZ1bmMpOgotKyAgICAgICAgaWYgbm90IGZ1bmM6Ci0r ICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAgICBmaXJzdCA9IFRydWUKLSsgICAgICAgIGJs b2NrID0gZnVuYy52YWx1ZQotKwotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAg ICAgICBpZiBzeW0uaXNfYXJndW1lbnQ6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwot KyAgICAgICAgICAgIHNlbGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5bSwgYmxvY2spCi0rICAg ICAgICAgICAgc3RyZWFtLndyaXRlICgnXG4nKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfYXJn cyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKLSsgICAgICAgIGlmIG5vdCBmdW5jOgotKyAgICAgICAg ICAgIHJldHVybgotKwotKyAgICAgICAgZmlyc3QgPSBUcnVlCi0rICAgICAgICBibG9jayA9IGZ1 bmMudmFsdWUKLSsKLSsgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6Ci0rICAgICAgICAgICAgaWYg bm90IHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29udGludWU7Ci0rCi0rICAg ICAgICAgICAgaWYgbm90IGZpcnN0OgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIs ICIpCi0rCi0rICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9j aykKLSsgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCi0rCi0rICAgICMgRklYTUU6IHRoaXMgc2hv dWxkIHByb2JhYmx5IGp1c3QgYmUgYSBtZXRob2Qgb24gZ2RiLkZyYW1lLgotKyAgICAjIEJ1dCB0 aGVuIHdlIG5lZWQgc3RyZWFtIHdyYXBwZXJzLgotKyAgICBkZWYgZGVzY3JpYmUgKHNlbGYsIHN0 cmVhbSwgZnVsbCk6Ci0rICAgICAgICBpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLkRVTU1ZX0ZSQU1F OgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiA8ZnVuY3Rpb24gY2FsbGVkIGZyb20gZ2Ri PlxuIikKLSsgICAgICAgIGVsaWYgc2VsZi50eXBlICgpID09IGdkYi5TSUdUUkFNUF9GUkFNRToK LSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD5cbiIp Ci0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHNhbCA9IHNlbGYuZmluZF9zYWwgKCkKLSsg ICAgICAgICAgICBwYyA9IHNlbGYucGMgKCkKLSsgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1l ICgpCi0rICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0rICAgICAgICAgICAgICAgIG5hbWUgPSAi Pz8iCi0rICAgICAgICAgICAgaWYgcGMgIT0gc2FsLnBjIG9yIG5vdCBzYWwuc3ltdGFiOgotKyAg ICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgMHglMDh4IGluIiAlIHBjKQotKyAgICAgICAg ICAgIHN0cmVhbS53cml0ZSAoIiAiICsgbmFtZSArICIgKCIpCisrICAgIGRlZiBwYWhvbGUgKHNl bGYsIHR5cGUsIGxldmVsLCBuYW1lKToKKysgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKysgICAg ICAgICAgICBuYW1lID0gJycKKysgICAgICAgIHRhZyA9IHR5cGUudGFnCisrICAgICAgICBpZiB0 YWcgaXMgTm9uZToKKysgICAgICAgICAgICB0YWcgPSAnJworKyAgICAgICAgcHJpbnQgJyVzc3Ry dWN0ICVzIHsnICUgKCcgJyAqICgyICogbGV2ZWwpLCB0YWcpCisrICAgICAgICBiaXRwb3MgPSAw CisrICAgICAgICBmb3IgZmllbGQgaW4gdHlwZS5maWVsZHMgKCk6CisrICAgICAgICAgICAgIyBT a2lwIHN0YXRpYyBmaWVsZHMuCisrICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIgKGZpZWxkLCAo J2JpdHBvcycpKToKKysgICAgICAgICAgICAgICAgY29udGludWUKICsKLSsgICAgICAgICAgICBm dW5jID0gc2VsZi5mdW5jdGlvbiAoKQotKyAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVfYXJn cyAoc3RyZWFtLCBmdW5jKQorKyAgICAgICAgICAgIGZ0eXBlID0gZmllbGQudHlwZS5zdHJpcF90 eXBlZGVmcygpCiArCi0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiKSIpCisrICAgICAgICAg ICAgaWYgYml0cG9zICE9IGZpZWxkLmJpdHBvczoKKysgICAgICAgICAgICAgICAgaG9sZSA9IGZp ZWxkLmJpdHBvcyAtIGJpdHBvcworKyAgICAgICAgICAgICAgICBwcmludCAnICAvKiBYWFggJWQg Yml0IGhvbGUsIHRyeSB0byBwYWNrICovJyAlIGhvbGUKKysgICAgICAgICAgICAgICAgYml0cG9z ID0gZmllbGQuYml0cG9zCisrICAgICAgICAgICAgaWYgZmllbGQuYml0c2l6ZSA+IDA6CisrICAg ICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IGZpZWxkLmJpdHNpemUKKysgICAgICAgICAgICBlbHNl OgorKyAgICAgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVCBoZXJlLi4uCisrICAgICAgICAg ICAgICAgIGZpZWxkc2l6ZSA9IDggKiBmdHlwZS5zaXplb2YKICsKLSsgICAgICAgICAgICBpZiBz YWwuc3ltdGFiIGFuZCBzYWwuc3ltdGFiLmZpbGVuYW1lOgotKyAgICAgICAgICAgICAgICBzdHJl YW0ud3JpdGUgKCIgYXQgIiArIHNhbC5zeW10YWIuZmlsZW5hbWUpCi0rICAgICAgICAgICAgICAg IHN0cmVhbS53cml0ZSAoIjoiICsgc3RyIChzYWwubGluZSkpCisrICAgICAgICAgICAgIyBUQVJH RVRfQ0hBUl9CSVQKKysgICAgICAgICAgICBwcmludCAnIC8qICUzZCAlM2QgKi8nICUgKGludCAo Yml0cG9zIC8gOCksIGludCAoZmllbGRzaXplIC8gOCkpLAorKyAgICAgICAgICAgIGJpdHBvcyA9 IGJpdHBvcyArIGZpZWxkc2l6ZQogKwotKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLm5hbWUgKCkg b3IgKG5vdCBzYWwuc3ltdGFiIG9yIG5vdCBzYWwuc3ltdGFiLmZpbGVuYW1lKToKLSsgICAgICAg ICAgICAgICAgbGliID0gZ2RiLnNvbGliX2FkZHJlc3MgKHBjKQotKyAgICAgICAgICAgICAgICBp ZiBsaWI6Ci0rICAgICAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgZnJvbSAiICsgbGli KQorKyAgICAgICAgICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6Cisr ICAgICAgICAgICAgICAgIHNlbGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBmaWVsZC5uYW1l KQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHByaW50ICcgJyAqICgyICsg MiAqIGxldmVsKSwKKysgICAgICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChzdHIgKGZ0eXBl KSwgZmllbGQubmFtZSkKICsKLSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCJcbiIpCisrICAg ICAgICBwcmludCAnICcgKiAoMTQgKyAyICogbGV2ZWwpLAorKyAgICAgICAgcHJpbnQgJ30gJXMn ICUgbmFtZQogKwotKyAgICAgICAgICAgIGlmIGZ1bGw6Ci0rICAgICAgICAgICAgICAgIHNlbGYu cHJpbnRfZnJhbWVfbG9jYWxzIChzdHJlYW0sIGZ1bmMpCisrICAgIGRlZiBpbnZva2UgKHNlbGYs IGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgdHlwZSA9IGdkYi5sb29rdXBfdHlwZSAoYXJnKQor KyAgICAgICAgdHlwZSA9IHR5cGUuc3RyaXBfdHlwZWRlZnMgKCkKKysgICAgICAgIGlmIHR5cGUu Y29kZSAhPSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKKysgICAgICAgICAgICByYWlzZSBUeXBlRXJy b3IsICclcyBpcyBub3QgYSBzdHJ1Y3QgdHlwZScgJSBhcmcKKysgICAgICAgIHByaW50ICcgJyAq IDE0LAorKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5cGUsIDAsICcnKQogKwotKyAgICBkZWYgX19n ZXRhdHRyX18gKHNlbGYsIG5hbWUpOgotKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNlbGYuZnJh bWUsIG5hbWUpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBi L2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKKytQYWhvbGUoKQorZGlmZiAtLWdpdCBh L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9yZXF1aXJlLnB5CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uNmJiNGZiMQoraW5kZXggMDAwMDAwMC4uMWZiYzFlOAogLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQotQEAgLTAsMCArMSw0MiBAQAotKyMgRmls dGVyaW5nIGJhY2t0cmFjZS4KKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVp cmUucHkKK0BAIC0wLDAgKzEsNTcgQEAKKysjIERlbWFuZC1sb2FkaW5nIGNvbW1hbmRzLgogKwot KyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC03NTQwLDM5ICs0NDgx LDU0IEBAIGluZGV4IDAwMDAwMDAuLjZiYjRmYjEKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwogK2ltcG9y dCBnZGIKLStpbXBvcnQgaXRlcnRvb2xzCisraW1wb3J0IG9zCiArCi0rIyBPdXIgb25seSBleHBv cnRzLgotK19fYWxsX18gPSBbJ3B1c2hfZnJhbWVfZmlsdGVyJywgJ2NyZWF0ZV9mcmFtZV9maWx0 ZXInXQorK2NsYXNzIFJlcXVpcmVDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAgICIiIlByZWZp eCBjb21tYW5kIGZvciByZXF1aXJpbmcgZmVhdHVyZXMuIiIiCiArCi0rZnJhbWVfZmlsdGVyID0g Tm9uZQorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFJlcXVpcmVD b21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInJlcXVpcmUiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9OT05F LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkK ICsKLStkZWYgcHVzaF9mcmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKLSsgICAgIiIiUmVnaXN0 ZXIgYSBuZXcgYmFja3RyYWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21t YW5kLgotK1RoZSBmaWx0ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1l bnQuICBUaGUgaXRlcmF0b3IKLSt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAg VGhlIGZpbHRlciBzaG91bGQgaW4gdHVybiBhY3QgYXMKLSthbiBpdGVyYXRvciByZXR1cm5pbmcg c3VjaCBvYmplY3RzLiIiIgotKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1l X2ZpbHRlciA9PSBOb25lOgotKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29uc3RydWN0b3IKLSsg ICAgZWxzZToKLSsgICAgICAgIGZyYW1lX2ZpbHRlciA9IGxhbWJkYSBpdGVyYXRvciwgZmlsdGVy ID0gZnJhbWVfZmlsdGVyOiBjb25zdHJ1Y3RvciAoZmlsdGVyIChpdGVyYXRvcikpCisrY2xhc3Mg UmVxdWlyZVN1YmNvbW1hbmQgKGdkYi5Db21tYW5kKToKKysgICAgIiIiRGVtYW5kLWxvYWQgYSBj b21tYW5kIGJ5IG5hbWUuIiIiCiArCi0rZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgot KyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2ZpbHRlciBpcyBOb25lOgot KyAgICAgICAgcmV0dXJuIGl0ZXIKLSsgICAgcmV0dXJuIGZyYW1lX2ZpbHRlciAoaXRlcikKKysg ICAgZGVmIF9faW5pdF9fIChzZWxmLCBuYW1lKToKKysgICAgICAgIHNlbGYuX19kb2NfXyA9ICJE ZW1hbmQtbG9hZCBhICVzIGJ5IG5hbWUuIiAlIG5hbWUKKysgICAgICAgIHN1cGVyIChSZXF1aXJl U3ViY29tbWFuZCwgc2VsZikuX19pbml0X18gKCJyZXF1aXJlICVzIiAlIG5hbWUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9T VVBQT1JUKQorKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogKwotZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL2JhY2t0cmFjZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2JhY2t0cmFjZS5weQorKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5 KToKKysgICAgICAgIGZvciBjbWQgaW4gYXJnLnNwbGl0KCk6CisrICAgICAgICAgICAgZXhlYyAo J2ltcG9ydCBnZGIuJyArIHNlbGYubmFtZSArICcuJyArIGNtZCwgZ2xvYmFscyAoKSkKKysKKysg ICAgZGVmIGNvbXBsZXRlIChzZWxmLCB0ZXh0LCB3b3JkKToKKysgICAgICAgIGRpciA9IGdkYi5w eXRob25kaXIgKyAnL2dkYi8nICsgc2VsZi5uYW1lCisrICAgICAgICByZXN1bHQgPSBbXQorKyAg ICAgICAgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihkaXIpOgorKyAgICAgICAgICAgIGlmIG5vdCBm aWxlLnN0YXJ0c3dpdGggKHdvcmQpIG9yIG5vdCBmaWxlLmVuZHN3aXRoICgnLnB5Jyk6CisrICAg ICAgICAgICAgICAgIGNvbnRpbnVlCisrICAgICAgICAgICAgZmVhdHVyZSA9IGZpbGVbMDotM10K KysgICAgICAgICAgICBpZiBmZWF0dXJlID09ICdyZXF1aXJlJyBvciBmZWF0dXJlID09ICdfX2lu aXRfXyc6CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlCisrICAgICAgICAgICAgcmVzdWx0LmFw cGVuZCAoZmVhdHVyZSkKKysgICAgICAgIHJldHVybiByZXN1bHQKKysKKytSZXF1aXJlQ29tbWFu ZCgpCisrUmVxdWlyZVN1YmNvbW1hbmQoImNvbW1hbmQiKQorK1JlcXVpcmVTdWJjb21tYW5kKCJm dW5jdGlvbiIpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5w eSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkKIG5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi5lZWVhOTA5CitpbmRleCAwMDAwMDAwLi5mYWY1NGVkCiAtLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkK LUBAIC0wLDAgKzEsMTA2IEBACi0rIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCisrKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5CitAQCAtMCwwICsxLDEyOSBAQAorKyMgdXB0 byBjb21tYW5kLgogKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBA IC03NTg4LDE0NiArNDU0NCwxMzMgQEAgaW5kZXggMDAwMDAwMC4uZWVlYTkwOQogKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCiAraW1wb3J0IGdkYgotK2ltcG9ydCBnZGIuYmFja3RyYWNlCi0raW1wb3J0IGl0 ZXJ0b29scworK2ltcG9ydCByZQogK2Zyb20gZ2RiLkZyYW1lSXRlcmF0b3IgaW1wb3J0IEZyYW1l SXRlcmF0b3IKICtmcm9tIGdkYi5GcmFtZVdyYXBwZXIgaW1wb3J0IEZyYW1lV3JhcHBlcgotK2lt cG9ydCBzeXMKICsKLStjbGFzcyBSZXZlcnNlQmFja3RyYWNlUGFyYW1ldGVyIChnZGIuUGFyYW1l dGVyKToKLSsgICAgIiIiVGhlIG5ldy1iYWNrdHJhY2UgY29tbWFuZCBjYW4gc2hvdyBiYWNrdHJh Y2VzIGluICdyZXZlcnNlJyBvcmRlci4KLStUaGlzIG1lYW5zIHRoYXQgdGhlIGlubmVybW9zdCBm cmFtZSB3aWxsIGJlIHByaW50ZWQgbGFzdC4KLStOb3RlIHRoYXQgcmV2ZXJzZSBiYWNrdHJhY2Vz IGFyZSBtb3JlIGV4cGVuc2l2ZSB0byBjb21wdXRlLiIiIgorK2NsYXNzIFVwdG9QcmVmaXggKGdk Yi5Db21tYW5kKToKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVyIChV cHRvUHJlZml4LCBzZWxmKS5fX2luaXRfXyAoInVwdG8iLCBnZGIuQ09NTUFORF9TVEFDSywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gVHJ1ZSkK ICsKLSsgICAgc2V0X2RvYyA9ICJFbmFibGUgb3IgZGlzYWJsZSByZXZlcnNlIGJhY2t0cmFjZXMu IgotKyAgICBzaG93X2RvYyA9ICJTaG93IHdoZXRoZXIgYmFja3RyYWNlcyB3aWxsIGJlIHByaW50 ZWQgaW4gcmV2ZXJzZSBvcmRlci4iCisrY2xhc3MgVXB0b0ltcGxlbWVudGF0aW9uIChnZGIuQ29t bWFuZCk6CisrICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgc3ViY29tbWFuZCk6CisrICAgICAgICBz dXBlciAoVXB0b0ltcGxlbWVudGF0aW9uLCBzZWxmKS5fX2luaXRfXyAoInVwdG8gIiArIHN1YmNv bW1hbmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2RiLkNPTU1BTkRfU1RBQ0spCiArCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAg ICAgIGdkYi5QYXJhbWV0ZXIuX19pbml0X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBB UkFNX0JPT0xFQU4pCi0rICAgICAgICAjIERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdk Yi4KLSsgICAgICAgIHNlbGYudmFsdWUgPSBGYWxzZQorKyAgICBkZWYgc2VhcmNoIChzZWxmKToK KysgICAgICAgIHNhdmVkID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICBpdGVyID0g RnJhbWVJdGVyYXRvciAoc2F2ZWQpCisrICAgICAgICBmb3VuZCA9IEZhbHNlCisrICAgICAgICB0 cnk6CisrICAgICAgICAgICAgZm9yIGZyYW1lIGluIGl0ZXI6CisrICAgICAgICAgICAgICAgIGZy YW1lLnNlbGVjdCAoKQorKyAgICAgICAgICAgICAgICB0cnk6CisrICAgICAgICAgICAgICAgICAg ICBpZiBzZWxmLmZpbHRlciAoZnJhbWUpOgorKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBw ZXIgPSBGcmFtZVdyYXBwZXIgKGZyYW1lKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBw ZXIuZGVzY3JpYmUgKHN5cy5zdGRvdXQsIEZhbHNlKQorKyAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybgorKyAgICAgICAgICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAgICAgICAgICBw YXNzCisrICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAgcGFzcworKyAgICAgICAgc2F2ZWQu c2VsZWN0ICgpCisrICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdDb3VsZCBub3QgZmluZCBh IG1hdGNoaW5nIGZyYW1lJwogKwotK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFjZSAoZ2RiLkNvbW1h bmQpOgotKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5u ZXJtb3N0IENPVU5UIGZyYW1lcy4KLStXaXRoIGEgbmVnYXRpdmUgYXJndW1lbnQsIHByaW50IG91 dGVybW9zdCAtQ09VTlQgZnJhbWVzLgotK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1YWxpZmllciBhbHNv IHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCi0rVXNlIG9mIHRoZSAn cmF3JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFibGUgbW9kdWxlcy4K LSsiIiIKKysgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgICAgICBz ZWxmLnJ4ID0gcmUuY29tcGlsZSAoYXJnKQorKyAgICAgICAgc2VsZi5zZWFyY2ggKCkKICsKLSsg ICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgICMgRklYTUU6IHRoaXMgaXMgbm90IHdv cmtpbmcgcXVpdGUgd2VsbCBlbm91Z2ggdG8gcmVwbGFjZQotKyAgICAgICAgIyAiYmFja3RyYWNl IiB5ZXQuCi0rICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyAoc2VsZiwgIm5ldy1iYWNrdHJh Y2UiLCBnZGIuQ09NTUFORF9TVEFDSykKLSsgICAgICAgIHNlbGYucmV2ZXJzZSA9IFJldmVyc2VC YWNrdHJhY2VQYXJhbWV0ZXIoKQorK2NsYXNzIFVwdG9TeW1ib2xDb21tYW5kIChVcHRvSW1wbGVt ZW50YXRpb24pOgorKyAgICAiIiJTZWxlY3QgYW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBm cmFtZSwgYmFzZWQgb24gc3ltYm9sLgorK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVz c2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFjaywgc3RvcHBpbmcgYXQgdGhl IGZpcnN0IGZyYW1lIHdob3NlIHN5bWJvbCBtYXRjaGVzIHRoZSByZWd1bGFyCisrZXhwcmVzc2lv bi4iIiIKICsKLSsgICAgZGVmIHJldmVyc2VfaXRlciAoc2VsZiwgaXRlcik6Ci0rICAgICAgICBy ZXN1bHQgPSBbXQotKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKLSsgICAgICAgICAgICByZXN1 bHQuYXBwZW5kIChpdGVtKQotKyAgICAgICAgcmVzdWx0LnJldmVyc2UoKQotKyAgICAgICAgcmV0 dXJuIHJlc3VsdAorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFVw dG9TeW1ib2xDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInN5bWJvbCIpCiArCi0rICAgIGRlZiBm aW5hbF9uIChzZWxmLCBpdGVyLCB4KToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBm b3IgaXRlbSBpbiBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAg ICAgICByZXR1cm4gcmVzdWx0W3g6XQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZy b21fdHR5KToKLSsgICAgICAgIGkgPSAwCi0rICAgICAgICBjb3VudCA9IDAKLSsgICAgICAgIGZp bHRlciA9IFRydWUKLSsgICAgICAgIGZ1bGwgPSBGYWxzZQotKwotKyAgICAgICAgZm9yIHdvcmQg aW4gYXJnLnNwbGl0ICgiICIpOgotKyAgICAgICAgICAgIGlmIHdvcmQgPT0gJyc6Ci0rICAgICAg ICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgZWxpZiB3b3JkID09ICdyYXcnOgotKyAg ICAgICAgICAgICAgICBmaWx0ZXIgPSBGYWxzZQotKyAgICAgICAgICAgIGVsaWYgd29yZCA9PSAn ZnVsbCc6Ci0rICAgICAgICAgICAgICAgIGZ1bGwgPSBUcnVlCi0rICAgICAgICAgICAgZWxzZToK LSsgICAgICAgICAgICAgICAgY291bnQgPSBpbnQgKHdvcmQpCi0rCi0rICAgICAgICAjIEZJWE1F OiBwcm92aWRlIG9wdGlvbiB0byBzdGFydCBhdCBzZWxlY3RlZCBmcmFtZQotKyAgICAgICAgIyBI b3dldmVyLCBzaG91bGQgc3RpbGwgbnVtYmVyIGFzIGlmIHN0YXJ0aW5nIGZyb20gbmV3ZXN0Ci0r ICAgICAgICBuZXdlc3RfZnJhbWUgPSBnZGIubmV3ZXN0X2ZyYW1lKCkKLSsgICAgICAgIGl0ZXIg PSBpdGVydG9vbHMuaW1hcCAoRnJhbWVXcmFwcGVyLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGcmFtZUl0ZXJhdG9yIChuZXdlc3RfZnJhbWUpKQotKyAgICAgICAgaWYgZmlsdGVy OgotKyAgICAgICAgICAgIGl0ZXIgPSBnZGIuYmFja3RyYWNlLmNyZWF0ZV9mcmFtZV9maWx0ZXIg KGl0ZXIpCi0rCi0rICAgICAgICAjIE5vdyB3cmFwIGluIGFuIGl0ZXJhdG9yIHRoYXQgbnVtYmVy cyB0aGUgZnJhbWVzLgotKyAgICAgICAgaXRlciA9IGl0ZXJ0b29scy5pemlwIChpdGVydG9vbHMu Y291bnQgKDApLCBpdGVyKQotKwotKyAgICAgICAgIyBSZXZlcnNlIGlmIHRoZSB1c2VyIHdhbnRl ZCB0aGF0LgotKyAgICAgICAgaWYgc2VsZi5yZXZlcnNlLnZhbHVlOgotKyAgICAgICAgICAgIGl0 ZXIgPSBzZWxmLnJldmVyc2VfaXRlciAoaXRlcikKKysgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJh bWUpOgorKyAgICAgICAgbmFtZSA9IGZyYW1lLm5hbWUgKCkKKysgICAgICAgIGlmIG5hbWUgaXMg bm90IE5vbmU6CisrICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBO b25lOgorKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorKyAgICAgICAgcmV0dXJuIEZhbHNl CiArCi0rICAgICAgICAjIEV4dHJhY3Qgc3ViLXJhbmdlIHVzZXIgd2FudHMuCi0rICAgICAgICBp ZiBjb3VudCA8IDA6Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYuZmluYWxfbiAoaXRlciwgY291 bnQpCi0rICAgICAgICBlbGlmIGNvdW50ID4gMDoKLSsgICAgICAgICAgICBpdGVyID0gaXRlcnRv b2xzLmlzbGljZSAoaXRlciwgMCwgY291bnQpCisrY2xhc3MgVXB0b1NvdXJjZUNvbW1hbmQgKFVw dG9JbXBsZW1lbnRhdGlvbik6CisrICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBjYWxsaW5n IHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBzb3VyY2UgZmlsZS4KKytUaGUgYXJndW1lbnQgaXMgYSBy ZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCisrc3RhY2ssIHN0 b3BwaW5nIGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9zZSBzb3VyY2UgZmlsZSBuYW1lIG1hdGNoZXMg dGhlCisrcmVndWxhciBleHByZXNzaW9uLiIiIgogKwotKyAgICAgICAgZm9yIHBhaXIgaW4gaXRl cjoKLSsgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlICgiIyUtMmQiICUgcGFpclswXSkKLSsg ICAgICAgICAgICBwYWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBmdWxsKQorKyAgICBkZWYg X19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFVwdG9Tb3VyY2VDb21tYW5kLCBzZWxm KS5fX2luaXRfXyAoInNvdXJjZSIpCiArCi0rRmlsdGVyaW5nQmFja3RyYWNlKCkKLWRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLUBAIC0wLDAgKzEsMzcgQEAKLSsj IElnbm9yZSBlcnJvcnMgaW4gdXNlciBjb21tYW5kcy4KKysgICAgZGVmIGZpbHRlciAoc2VsZiwg ZnJhbWUpOgorKyAgICAgICAgbmFtZSA9IGZyYW1lLmZpbmRfc2FsICgpLnN5bXRhYi5maWxlbmFt ZQorKyAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBpZiBzZWxmLnJ4 LnNlYXJjaCAobmFtZSkgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVl CisrICAgICAgICByZXR1cm4gRmFsc2UKICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytjbGFzcyBVcHRvT2JqZWN0Q29tbWFuZCAoVXB0b0lt cGxlbWVudGF0aW9uKToKKysgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3Rh Y2sgZnJhbWUsIGJhc2VkIG9uIG9iamVjdCBmaWxlLgorK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3Vs YXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFjaywgc3RvcHBp bmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIG9iamVjdCBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUK KytyZWd1bGFyIGV4cHJlc3Npb24uIiIiCiArCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFVwdG9PYmplY3RD b21tYW5kLCBzZWxmKS5fX2luaXRfXyAoIm9iamVjdCIpCiArCi0raW1wb3J0IGdkYgorKyAgICBk ZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6CisrICAgICAgICBuYW1lID0gZnJhbWUuZmluZF9zYWwg KCkuc3ltdGFiLm9iamZpbGUuZmlsZW5hbWUKKysgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6 CisrICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgorKyAg ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorKyAgICAgICAgcmV0dXJuIEZhbHNlCiArCi0rY2xh c3MgSWdub3JlRXJyb3JzQ29tbWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJFeGVjdXRlIGEg c2luZ2xlIGNvbW1hbmQsIGlnbm9yaW5nIGFsbCBlcnJvcnMuCi0rT25seSBvbmUtbGluZSBjb21t YW5kcyBhcmUgc3VwcG9ydGVkLgotK1RoaXMgaXMgcHJpbWFyaWx5IHVzZWZ1bCBpbiBzY3JpcHRz LiIiIgorK2NsYXNzIFVwdG9XaGVyZUNvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6CisrICAg ICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBl eHByZXNzaW9uLgorK1RoZSBhcmd1bWVudCBpcyBhbiBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5k IG1vdmVzIHVwIHRoZSBzdGFjaywKKytwYXJzaW5nIGFuZCBldmFsdWF0aW5nIHRoZSBleHByZXNz aW9uIGluIGVhY2ggZnJhbWUuICBUaGlzIHN0b3BzIHdoZW4KKyt0aGUgZXhwcmVzc2lvbiBldmFs dWF0ZXMgdG8gYSBub24temVybyAodHJ1ZSkgdmFsdWUuIiIiCiArCiArICAgIGRlZiBfX2luaXRf XyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19p bml0X18gKCJpZ25vcmUtZXJyb3JzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExF VEVfQ09NTUFORCkKKysgICAgICAgIHN1cGVyIChVcHRvV2hlcmVDb21tYW5kLCBzZWxmKS5fX2lu aXRfXyAoIndoZXJlIikKICsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6 CisrICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKICsgICAgICAgIHRyeToKLSsgICAgICAg ICAgICBnZGIuZXhlY3V0ZSAoYXJnLCBmcm9tX3R0eSkKKysgICAgICAgICAgICBpZiBnZGIucGFy c2VfYW5kX2V2YWwgKHNlbGYuZXhwcmVzc2lvbik6CisrICAgICAgICAgICAgICAgIHJldHVybiBU cnVlCiArICAgICAgICBleGNlcHQ6CiArICAgICAgICAgICAgcGFzcworKyAgICAgICAgcmV0dXJu IEZhbHNlCiArCi0rSWdub3JlRXJyb3JzQ29tbWFuZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5k L3BhaG9sZS5weQorKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKKysgICAg ICAgIHNlbGYuZXhwcmVzc2lvbiA9IGFyZworKyAgICAgICAgc2VsZi5zZWFyY2ggKCkKKysKKytV cHRvUHJlZml4ICgpCisrVXB0b1N5bWJvbENvbW1hbmQgKCkKKytVcHRvU291cmNlQ29tbWFuZCAo KQorK1VwdG9PYmplY3RDb21tYW5kICgpCisrVXB0b1doZXJlQ29tbWFuZCAoKQorZGlmZiAtLWdp dCBhL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weSBiL2dkYi9weXRob24v bGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjIxYTBiZjAKK2luZGV4IDAwMDAwMDAuLjhiMTM3ODkKIC0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQotQEAgLTAsMCArMSw3 NSBAQAotKyMgcGFob2xlIGNvbW1hbmQgZm9yIGdkYgorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2Z1bmN0aW9uL19faW5pdF9fLnB5CitAQCAtMCwwICsxIEBACiArCi0rIyBDb3B5cmlnaHQgKEMp IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBiL2dkYi9weXRob24vbGli L2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi4yYjljNWM3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vY2FsbGVyX2lzLnB5CitAQCAtMCwwICsxLDU4IEBACisrIyBDYWxsZXItaXMgZnVu Y3Rpb25zLgorKworKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC03NzQzLDcyICs0 Njg2LDU1IEBAIGluZGV4IDAwMDAwMDAuLjIxYTBiZjAKICsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwogK2lt cG9ydCBnZGIKKytpbXBvcnQgcmUKICsKLStjbGFzcyBQYWhvbGUgKGdkYi5Db21tYW5kKToKLSsg ICAgIiIiU2hvdyB0aGUgaG9sZXMgaW4gYSBzdHJ1Y3R1cmUuCi0rVGhpcyBjb21tYW5kIHRha2Vz IGEgc2luZ2xlIGFyZ3VtZW50LCBhIHR5cGUgbmFtZS4KLStJdCBwcmludHMgdGhlIHR5cGUgYW5k IGRpc3BsYXlzIGNvbW1lbnRzIHNob3dpbmcgd2hlcmUgaG9sZXMgYXJlLiIiIgorK2NsYXNzIENh bGxlcklzIChnZGIuRnVuY3Rpb24pOgorKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGlu ZyBmdW5jdGlvbidzIG5hbWUgaXMgZXF1YWwgdG8gYSBzdHJpbmcuCisrVGhpcyBmdW5jdGlvbiB0 YWtlcyBvbmUgb3IgdHdvIGFyZ3VtZW50cy4KKytUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIG5h bWUgb2YgYSBmdW5jdGlvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncworK25hbWUgaXMgZXF1 YWwgdG8gdGhpcyBhcmd1bWVudCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFRydWUuCisrVGhlIG9w dGlvbmFsIHNlY29uZCBhcmd1bWVudCB0ZWxscyB0aGlzIGZ1bmN0aW9uIGhvdyBtYW55IHN0YWNr IGZyYW1lcworK3RvIHRyYXZlcnNlIHRvIGZpbmQgdGhlIGNhbGxpbmcgZnVuY3Rpb24uICBUaGUg ZGVmYXVsdCBpcyAxLiIiIgogKwogKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAg c3VwZXIgKFBhaG9sZSwgc2VsZikuX19pbml0X18gKCJwYWhvbGUiLCBnZGIuQ09NTUFORF9OT05F LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9T WU1CT0wpCi0rCi0rICAgIGRlZiBwYWhvbGUgKHNlbGYsIHR5cGUsIGxldmVsLCBuYW1lKToKLSsg ICAgICAgIGlmIG5hbWUgaXMgTm9uZToKLSsgICAgICAgICAgICBuYW1lID0gJycKLSsgICAgICAg IHRhZyA9IHR5cGUudGFnCi0rICAgICAgICBpZiB0YWcgaXMgTm9uZToKLSsgICAgICAgICAgICB0 YWcgPSAnJwotKyAgICAgICAgcHJpbnQgJyVzc3RydWN0ICVzIHsnICUgKCcgJyAqICgyICogbGV2 ZWwpLCB0YWcpCi0rICAgICAgICBiaXRwb3MgPSAwCi0rICAgICAgICBmb3IgZmllbGQgaW4gdHlw ZS5maWVsZHMgKCk6Ci0rICAgICAgICAgICAgIyBTa2lwIHN0YXRpYyBmaWVsZHMuCi0rICAgICAg ICAgICAgaWYgbm90IGhhc2F0dHIgKGZpZWxkLCAoJ2JpdHBvcycpKToKLSsgICAgICAgICAgICAg ICAgY29udGludWUKLSsKLSsgICAgICAgICAgICBmdHlwZSA9IGZpZWxkLnR5cGUuc3RyaXBfdHlw ZWRlZnMoKQotKwotKyAgICAgICAgICAgIGlmIGJpdHBvcyAhPSBmaWVsZC5iaXRwb3M6Ci0rICAg ICAgICAgICAgICAgIGhvbGUgPSBmaWVsZC5iaXRwb3MgLSBiaXRwb3MKLSsgICAgICAgICAgICAg ICAgcHJpbnQgJyAgLyogWFhYICVkIGJpdCBob2xlLCB0cnkgdG8gcGFjayAqLycgJSBob2xlCi0r ICAgICAgICAgICAgICAgIGJpdHBvcyA9IGZpZWxkLmJpdHBvcwotKyAgICAgICAgICAgIGlmIGZp ZWxkLmJpdHNpemUgPiAwOgotKyAgICAgICAgICAgICAgICBmaWVsZHNpemUgPSBmaWVsZC5iaXRz aXplCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9C SVQgaGVyZS4uLgotKyAgICAgICAgICAgICAgICBmaWVsZHNpemUgPSA4ICogZnR5cGUuc2l6ZW9m CisrICAgICAgICBzdXBlciAoQ2FsbGVySXMsIHNlbGYpLl9faW5pdF9fICgiY2FsbGVyX2lzIikK ICsKLSsgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVAotKyAgICAgICAgICAgIHByaW50ICcg LyogJTNkICUzZCAqLycgJSAoaW50IChiaXRwb3MgLyA4KSwgaW50IChmaWVsZHNpemUgLyA4KSks Ci0rICAgICAgICAgICAgYml0cG9zID0gYml0cG9zICsgZmllbGRzaXplCisrICAgIGRlZiBpbnZv a2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVj dGVkX2ZyYW1lICgpCisrICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKKysgICAgICAgICAgICBm cmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAx CisrICAgICAgICByZXR1cm4gZnJhbWUubmFtZSAoKSA9PSBuYW1lLnN0cmluZyAoKQogKwotKyAg ICAgICAgICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6Ci0rICAgICAg ICAgICAgICAgIHNlbGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBmaWVsZC5uYW1lKQotKyAg ICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgIHByaW50ICcgJyAqICgyICsgMiAqIGxl dmVsKSwKLSsgICAgICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChzdHIgKGZ0eXBlKSwgZmll bGQubmFtZSkKKytjbGFzcyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgorKyAgICAiIiJS ZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmlu Zy4KKytUaGlzIGZ1bmN0aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgorK1RoZSBmaXJz dCBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rp b24ncworK25hbWUgaXMgbWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJl dHVybnMgVHJ1ZS4KKytUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVu Y3Rpb24gaG93IG1hbnkgc3RhY2sgZnJhbWVzCisrdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2Fs bGluZyBmdW5jdGlvbi4gIFRoZSBkZWZhdWx0IGlzIDEuIiIiCiArCi0rICAgICAgICBwcmludCAn ICcgKiAoMTQgKyAyICogbGV2ZWwpLAotKyAgICAgICAgcHJpbnQgJ30gJXMnICUgbmFtZQorKyAg ICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKENhbGxlck1hdGNoZXMsIHNl bGYpLl9faW5pdF9fICgiY2FsbGVyX21hdGNoZXMiKQogKwotKyAgICBkZWYgaW52b2tlIChzZWxm LCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAgIHR5cGUgPSBnZGIubG9va3VwX3R5cGUgKGFyZykK LSsgICAgICAgIHR5cGUgPSB0eXBlLnN0cmlwX3R5cGVkZWZzICgpCi0rICAgICAgICBpZiB0eXBl LmNvZGUgIT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6Ci0rICAgICAgICAgICAgcmFpc2UgVHlwZUVy cm9yLCAnJXMgaXMgbm90IGEgc3RydWN0IHR5cGUnICUgYXJnCi0rICAgICAgICBwcmludCAnICcg KiAxNCwKLSsgICAgICAgIHNlbGYucGFob2xlICh0eXBlLCAwLCAnJykKKysgICAgZGVmIGludm9r ZSAoc2VsZiwgbmFtZSwgbmZyYW1lcyA9IDEpOgorKyAgICAgICAgZnJhbWUgPSBnZGIuc2VsZWN0 ZWRfZnJhbWUgKCkKKysgICAgICAgIHdoaWxlIG5mcmFtZXMgPiAwOgorKyAgICAgICAgICAgIGZy YW1lID0gZnJhbWUub2xkZXIgKCkKKysgICAgICAgICAgICBuZnJhbWVzID0gbmZyYW1lcyAtIDEK KysgICAgICAgIHJldHVybiByZS5tYXRjaCAobmFtZS5zdHJpbmcgKCksIGZyYW1lLm5hbWUgKCkp IGlzIG5vdCBOb25lCiArCi0rUGFob2xlKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9yZXF1aXJlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWly ZS5weQorK0NhbGxlcklzKCkKKytDYWxsZXJNYXRjaGVzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVu Y3Rpb24vaW5fc2NvcGUucHkKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4x ZmJjMWU4CitpbmRleCAwMDAwMDAwLi5kZWJiM2JiCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5Ci1AQCAtMCwwICsxLDU3IEBACi0rIyBE ZW1hbmQtbG9hZGluZyBjb21tYW5kcy4KKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlv bi9pbl9zY29wZS5weQorQEAgLTAsMCArMSw0NyBAQAorKyMgSW4tc2NvcGUgZnVuY3Rpb24uCiAr Ci0rIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTc4MjQsNDU0OSArNDc1MCw4 NzIgQEAgaW5kZXggMDAwMDAwMC4uMWZiYzFlOAogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCiAraW1wb3J0 IGdkYgotK2ltcG9ydCBvcwogKwotK2NsYXNzIFJlcXVpcmVDb21tYW5kIChnZGIuQ29tbWFuZCk6 Ci0rICAgICIiIlByZWZpeCBjb21tYW5kIGZvciByZXF1aXJpbmcgZmVhdHVyZXMuIiIiCisrY2xh c3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRo ZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KKytUYWtlcyBvbmUgYXJn dW1lbnQgZm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgogKwogKyAgICBk ZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFJlcXVpcmVDb21tYW5kLCBzZWxm KS5fX2luaXRfXyAoInJlcXVpcmUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9OT05FLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKKysJc3VwZXIgKElu U2NvcGUsIHNlbGYpLl9faW5pdF9fICgiaW5fc2NvcGUiKQogKwotK2NsYXNzIFJlcXVpcmVTdWJj b21tYW5kIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkRlbWFuZC1sb2FkIGEgY29tbWFuZCBieSBu YW1lLiIiIgorKyAgICBkZWYgaW52b2tlIChzZWxmLCAqdmFycyk6CisrICAgICAgICBpZiBsZW4g KHZhcnMpID09IDA6CisrCSAgICByYWlzZSBUeXBlRXJyb3IsICJpbl9zY29wZSB0YWtlcyBhdCBs ZWFzdCBvbmUgYXJndW1lbnQiCiArCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgbmFtZSk6Ci0r ICAgICAgICBzZWxmLl9fZG9jX18gPSAiRGVtYW5kLWxvYWQgYSAlcyBieSBuYW1lLiIgJSBuYW1l Ci0rICAgICAgICBzdXBlciAoUmVxdWlyZVN1YmNvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgicmVx dWlyZSAlcyIgJSBuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCkKLSsgICAgICAgIHNlbGYubmFtZSA9IG5h bWUKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBm b3IgY21kIGluIGFyZy5zcGxpdCgpOgotKyAgICAgICAgICAgIGV4ZWMgKCdpbXBvcnQgZ2RiLicg KyBzZWxmLm5hbWUgKyAnLicgKyBjbWQsIGdsb2JhbHMgKCkpCi0rCi0rICAgIGRlZiBjb21wbGV0 ZSAoc2VsZiwgdGV4dCwgd29yZCk6Ci0rICAgICAgICBkaXIgPSBnZGIucHl0aG9uZGlyICsgJy9n ZGIvJyArIHNlbGYubmFtZQotKyAgICAgICAgcmVzdWx0ID0gW10KLSsgICAgICAgIGZvciBmaWxl IGluIG9zLmxpc3RkaXIoZGlyKToKLSsgICAgICAgICAgICBpZiBub3QgZmlsZS5zdGFydHN3aXRo ICh3b3JkKSBvciBub3QgZmlsZS5lbmRzd2l0aCAoJy5weScpOgotKyAgICAgICAgICAgICAgICBj b250aW51ZQotKyAgICAgICAgICAgIGZlYXR1cmUgPSBmaWxlWzA6LTNdCi0rICAgICAgICAgICAg aWYgZmVhdHVyZSA9PSAncmVxdWlyZScgb3IgZmVhdHVyZSA9PSAnX19pbml0X18nOgotKyAgICAg ICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGZlYXR1cmUp Ci0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rUmVxdWlyZUNvbW1hbmQoKQotK1JlcXVpcmVT dWJjb21tYW5kKCJjb21tYW5kIikKLStSZXF1aXJlU3ViY29tbWFuZCgiZnVuY3Rpb24iKQotZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkgYi9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC91cHRvLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uZmFmNTRlZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvdXB0by5weQotQEAgLTAsMCArMSwxMjkgQEAKLSsjIHVwdG8gY29tbWFuZC4KLSsKLSsj IENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCByZQot K2Zyb20gZ2RiLkZyYW1lSXRlcmF0b3IgaW1wb3J0IEZyYW1lSXRlcmF0b3IKLStmcm9tIGdkYi5G cmFtZVdyYXBwZXIgaW1wb3J0IEZyYW1lV3JhcHBlcgotKwotK2NsYXNzIFVwdG9QcmVmaXggKGdk Yi5Db21tYW5kKToKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChV cHRvUHJlZml4LCBzZWxmKS5fX2luaXRfXyAoInVwdG8iLCBnZGIuQ09NTUFORF9TVEFDSywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gVHJ1ZSkK KysgICAgICAgICMgZ2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBp biBhIG1hcC4KKysJIyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KKysJd2FudGVkID0gc2V0ICht YXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwgdmFycykpCisrCWZvdW5kID0gc2V0ICgpCisrCWJs b2NrID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCisrCXdoaWxlIGJsb2NrOgorKwkg ICAgZm9yIHN5bSBpbiBibG9jazoKKysJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2Nv bnN0YW50CisrCQkgICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToK KysJCSAgICBpZiBzeW0ubmFtZSBpbiB3YW50ZWQ6CisrCQkJZm91bmQuYWRkIChzeW0ubmFtZSkK ICsKLStjbGFzcyBVcHRvSW1wbGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKLSsgICAgZGVmIF9f aW5pdF9fIChzZWxmLCBzdWJjb21tYW5kKToKLSsgICAgICAgIHN1cGVyIChVcHRvSW1wbGVtZW50 YXRpb24sIHNlbGYpLl9faW5pdF9fICgidXB0byAiICsgc3ViY29tbWFuZCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFD SykKKysJICAgIGJsb2NrID0gYmxvY2suc3VwZXJibG9jawogKwotKyAgICBkZWYgc2VhcmNoIChz ZWxmKToKLSsgICAgICAgIHNhdmVkID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAgICBp dGVyID0gRnJhbWVJdGVyYXRvciAoc2F2ZWQpCi0rICAgICAgICBmb3VuZCA9IEZhbHNlCi0rICAg ICAgICB0cnk6Ci0rICAgICAgICAgICAgZm9yIGZyYW1lIGluIGl0ZXI6Ci0rICAgICAgICAgICAg ICAgIGZyYW1lLnNlbGVjdCAoKQotKyAgICAgICAgICAgICAgICB0cnk6Ci0rICAgICAgICAgICAg ICAgICAgICBpZiBzZWxmLmZpbHRlciAoZnJhbWUpOgotKyAgICAgICAgICAgICAgICAgICAgICAg IHdyYXBwZXIgPSBGcmFtZVdyYXBwZXIgKGZyYW1lKQotKyAgICAgICAgICAgICAgICAgICAgICAg IHdyYXBwZXIuZGVzY3JpYmUgKHN5cy5zdGRvdXQsIEZhbHNlKQotKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybgotKyAgICAgICAgICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgICAg ICAgICBwYXNzCi0rICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcGFzcwotKyAgICAgICAg c2F2ZWQuc2VsZWN0ICgpCi0rICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdDb3VsZCBub3Qg ZmluZCBhIG1hdGNoaW5nIGZyYW1lJworKwlyZXR1cm4gd2FudGVkID09IGZvdW5kCiArCi0rICAg IGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5yeCA9IHJl LmNvbXBpbGUgKGFyZykKLSsgICAgICAgIHNlbGYuc2VhcmNoICgpCisrSW5TY29wZSAoKQorZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKK2lu ZGV4IDk4MDMwYTYuLjk4NzBlZWMgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwor KysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKK0BAIC0zMCw2ICszMCw4IEBACisgI2luY2x1ZGUg InZlYy5oIgorICNpbmNsdWRlICJiY2FjaGUuaCIKKyAjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisr I2luY2x1ZGUgIm9ic2VydmVyLmgiCisrI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAKKyB0eXBl ZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0CisgeworQEAgLTM4LDExICs0MCwxOSBAQCB0eXBl ZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0CisgCisgICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlz IGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxlLCBpdCBpcyBrZXB0IG9uIGEKKyAgICAgIGRvdWJs eS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRoZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkg dGhlCistICAgICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVs ZXRlZC4gICovCisrICAgICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUg aXMgZGVsZXRlZC4KICsKLStjbGFzcyBVcHRvU3ltYm9sQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0 aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUs IGJhc2VkIG9uIHN5bWJvbC4KLStUaGUgYXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24u ICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCi0rc3RhY2ssIHN0b3BwaW5nIGF0IHRoZSBmaXJz dCBmcmFtZSB3aG9zZSBzeW1ib2wgbWF0Y2hlcyB0aGUgcmVndWxhcgotK2V4cHJlc3Npb24uIiIi CisrICAgICBXaXRoIE5VTEwgb2JqZmlsZSBUeXBlIHN0aWxsIGNhbiBiZSBkb3VibHktbGlua2Vk IGluIHRoZSBsaXN0CisrICAgICBQWVRZX09CSkVDVFNfRElTQ0FSREFCTEUuICAqLworICAgc3Ry dWN0IHB5dHlfdHlwZV9vYmplY3QgKnByZXY7CisgICBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdCAq bmV4dDsKKyB9IHR5cGVfb2JqZWN0OworIAorKyNpZiAwCisrLyogRmlyc3QgZWxlbWVudCBvZiBh IGRvdWJseS1saW5rZWQgbGlzdCBvZiBUWVBFX0RJU0NBUkRBQkxFIFR5cGVzLiAgKi8KKytzdGF0 aWMgdHlwZV9vYmplY3QgKnB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKKysjZW5kaWYKICsKLSsg ICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvU3ltYm9sQ29tbWFu ZCwgc2VsZikuX19pbml0X18gKCJzeW1ib2wiKQorIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9v YmplY3RfdHlwZTsKKyAKKyAvKiBBIEZpZWxkIG9iamVjdC4gICovCitAQCAtMTE2Niw4ICsxMTc2 LDYzIEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIs IGludCBvcCkKKyAKKyAMCisgCisrLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUg cG9pbnRpbmcgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YKKysgICBhIGRvdWJseS1saW5rZWQgbGlz dCBvZiBUeXBlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8KKyBzdGF0aWMgY29u c3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5OworIAorKy8qIExp bmsgVFlQRV9PQkogdG8gaXRzIGFwcHJvcHJpYXRlIGxpc3QuICBFaXRoZXIgdG8gaXRzIG9iamZp bGUgYXNzb2NpYXRlZCBvbmUKKysgICBvciBhdCBsZWFzdCB0byB0aGUgZ2xvYmFsIGxpc3QgZm9y IFRZUEVfRElTQ0FSREFCTEUgVHlwZXMuICBQZXJtYW5lbnQgdHlwZXMKKysgICBkbyBub3QgZ2V0 IGxpbmtlZCBhbnl3aGVyZS4gICovCisrc3RhdGljIHZvaWQKKyt0eXB5X2xpbmsgKHR5cGVfb2Jq ZWN0ICp0eXBlX29iaikKKyt7CisrICB0eXBlX29iai0+cHJldiA9IE5VTEw7CiArCi0rICAgIGRl ZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5uYW1lICgpCi0r ICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIGlmIHNlbGYucnguc2Vh cmNoIChuYW1lKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsg ICAgICAgIHJldHVybiBGYWxzZQorKyAgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZV9vYmotPnR5cGUpKQorKyAgICB7CisrICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGUgPSBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKTsKICsKLStjbGFzcyBVcHRvU291cmNl Q29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBz b21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIHNvdXJjZSBmaWxlLgotK1RoZSBhcmd1 bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUK LStzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIHNvdXJjZSBmaWxlIG5h bWUgbWF0Y2hlcyB0aGUKLStyZWd1bGFyIGV4cHJlc3Npb24uIiIiCisrICAgICAgdHlwZV9vYmot Pm5leHQgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSk7Cisr ICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0KQorKwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVf b2JqOworKyAgICAgIHNldF9vYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRh X2tleSwgdHlwZV9vYmopOworKyAgICB9CisrI2lmIDAKKysgIGVsc2UgaWYgKHR5cGVfb2JqLT50 eXBlICYmIFRZUEVfRElTQ0FSREFCTEUgKHR5cGVfb2JqLT50eXBlKSkKKysgICAgeworKyAgICAg IHR5cGVfb2JqLT5uZXh0ID0gcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOworKyAgICAgIGlmICh0 eXBlX29iai0+bmV4dCkKKysJdHlwZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iajsKKysgICAg ICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29iajsKKysgICAgfQorKyNlbmRpZgor KyAgZWxzZQorKyAgICB0eXBlX29iai0+bmV4dCA9IE5VTEw7CisrfQogKwotKyAgICBkZWYgX19p bml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFVwdG9Tb3VyY2VDb21tYW5kLCBzZWxmKS5f X2luaXRfXyAoInNvdXJjZSIpCisrLyogVW5saW5rIFRZUEVfT0JKIGZyb20gaXRzIGN1cnJlbnQg bGlzdC4gIFBlcm1hbmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAorKyAgIGFueXdoZXJlIGFuZCB0 aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICovCisrc3RhdGljIHZvaWQKKyt0 eXB5X3VubGluayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQorK3sKKysgIGlmICh0eXBlX29iai0+ cHJldikKKysgICAgdHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBlX29iai0+bmV4dDsKKysgIGVs c2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQor KyAgICB7CisrICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLworKyAgICAgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7CiAr Ci0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5m aW5kX3NhbCAoKS5zeW10YWIuZmlsZW5hbWUKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6 Ci0rICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAg ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCisrICAgICAg c2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29i ai0+bmV4dCk7CisrICAgIH0KKysjaWYgMAorKyAgZWxzZSBpZiAocHl0eV9vYmplY3RzX2Rpc2Nh cmRhYmxlID09IHR5cGVfb2JqKQorKyAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBl X29iai0+bmV4dDsKKysjZW5kaWYKICsKLStjbGFzcyBVcHRvT2JqZWN0Q29tbWFuZCAoVXB0b0lt cGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3Rh Y2sgZnJhbWUsIGJhc2VkIG9uIG9iamVjdCBmaWxlLgotK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3Vs YXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKLStzdGFjaywgc3RvcHBp bmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIG9iamVjdCBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUK LStyZWd1bGFyIGV4cHJlc3Npb24uIiIiCisrICBpZiAodHlwZV9vYmotPm5leHQpCisrICAgIHR5 cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7CisrfQogKwotKyAgICBkZWYgX19p bml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFVwdG9PYmplY3RDb21tYW5kLCBzZWxmKS5f X2luaXRfXyAoIm9iamVjdCIpCisgc3RhdGljIHZvaWQKKyBzYXZlX29iamZpbGVfdHlwZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKKyB7CitAQCAtMTE4NSwxMiArMTI1 MCwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lk ICpkYXR1bSkKKyAgICAgeworICAgICAgIHR5cGVfb2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0Owor IAorLSAgICAgIGh0YWJfZW1wdHkgKGNvcGllZF90eXBlcyk7CisrICAgICAgZ2RiX2Fzc2VydCAo VFlQRV9PQkpGSUxFIChvYmotPnR5cGUpID09IG9iamZpbGUpOworKyAgICAgIHR5cHlfdW5saW5r IChvYmopOworIAorLSAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZp bGUsIG9iai0+dHlwZSwgY29waWVkX3R5cGVzKTsKKysgICAgICBvYmotPnR5cGUgPSBjb3B5X3R5 cGVfcmVjdXJzaXZlIChvYmotPnR5cGUsIGNvcGllZF90eXBlcyk7CisgCistICAgICAgb2JqLT5u ZXh0ID0gTlVMTDsKKy0gICAgICBvYmotPnByZXYgPSBOVUxMOworKyAgICAgIGdkYl9hc3NlcnQg KFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBOVUxMKTsKKysgICAgICB0eXB5X2xpbmsgKG9i aik7CisgCisgICAgICAgb2JqID0gbmV4dDsKKyAgICAgfQorQEAgLTEyMDEsNDMgKzEyNjcsMjgg QEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0 dW0pCisgfQorIAorIHN0YXRpYyB2b2lkCistc2V0X3R5cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0 cnVjdCB0eXBlICp0eXBlKQorK3R5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKKyB7CistICBv YmotPnR5cGUgPSB0eXBlOworLSAgb2JqLT5wcmV2ID0gTlVMTDsKKy0gIGlmICh0eXBlICYmIFRZ UEVfT0JKRklMRSAodHlwZSkpCistICAgIHsKKy0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CisrICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlw ZV9vYmplY3QgKikgb2JqOworIAorLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2Jq ZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKKy0gICAgICBpZiAob2JqLT5uZXh0KQorLQlv YmotPm5leHQtPnByZXYgPSBvYmo7CistICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwg dHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmopOworLSAgICB9CistICBlbHNlCistICAgIG9iai0+ bmV4dCA9IE5VTEw7CisrICB0eXB5X3VubGluayAodHlwZV9vYmopOwogKwotKyAgICBkZWYgZmls dGVyIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBuYW1lID0gZnJhbWUuZmluZF9zYWwgKCkuc3lt dGFiLm9iamZpbGUuZmlsZW5hbWUKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0rICAg ICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAgICAg ICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCisrICB0eXBlX29iai0+ b2JfdHlwZS0+dHBfZnJlZSAob2JqKTsKKyB9CisgCisrI2lmIDAKKysvKiBDYWxsIHR5cGVfbWFy a191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxl LiAgKi8KKyBzdGF0aWMgdm9pZAorLXR5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKKyt0eXB5 X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKKyB7CistICB0eXBlX29iamVjdCAqdHlwZSA9ICh0eXBl X29iamVjdCAqKSBvYmo7CistCistICBpZiAodHlwZS0+cHJldikKKy0gICAgdHlwZS0+cHJldi0+ bmV4dCA9IHR5cGUtPm5leHQ7CistICBlbHNlIGlmICh0eXBlLT50eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZS0+dHlwZSkpCistICAgIHsKKy0gICAgICAvKiBNdXN0IHJlc2V0IGhlYWQgb2YgbGlz dC4gICovCistICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5 cGUtPnR5cGUpOworLQorLSAgICAgIGlmIChvYmpmaWxlKQorLQlzZXRfb2JqZmlsZV9kYXRhIChv YmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXksIHR5cGUtPm5leHQpOworLSAgICB9CistICBp ZiAodHlwZS0+bmV4dCkKKy0gICAgdHlwZS0+bmV4dC0+cHJldiA9IHR5cGUtPnByZXY7CisrICB0 eXBlX29iamVjdCAqdHlwZV9vYmo7CisgCistICB0eXBlLT5vYl90eXBlLT50cF9mcmVlICh0eXBl KTsKKysgIGZvciAodHlwZV9vYmogPSBweXR5X29iamVjdHNfZGlzY2FyZGFibGU7CisrICAgICAg IHR5cGVfb2JqICE9IE5VTEw7CisrICAgICAgIHR5cGVfb2JqID0gdHlwZV9vYmotPm5leHQpCisr ICAgIHR5cGVfbWFya191c2VkICh0eXBlX29iai0+dHlwZSk7CisgfQorKyNlbmRpZgorIAorIC8q IFJldHVybiBudW1iZXIgb2YgZmllbGRzICgibGVuZ3RoIiBvZiB0aGUgZmllbGQgZGljdGlvbmFy eSkuICAqLworIAorQEAgLTE0NTcsNyArMTUwOCwxMCBAQCB0eXBlX3RvX3R5cGVfb2JqZWN0IChz dHJ1Y3QgdHlwZSAqdHlwZSkKKyAKKyAgIHR5cGVfb2JqID0gUHlPYmplY3RfTmV3ICh0eXBlX29i amVjdCwgJnR5cGVfb2JqZWN0X3R5cGUpOworICAgaWYgKHR5cGVfb2JqKQorLSAgICBzZXRfdHlw ZSAodHlwZV9vYmosIHR5cGUpOworKyAgICB7CisrICAgICAgdHlwZV9vYmotPnR5cGUgPSB0eXBl OworKyAgICAgIHR5cHlfbGluayAodHlwZV9vYmopOworKyAgICB9CisgCisgICByZXR1cm4gKFB5 T2JqZWN0ICopIHR5cGVfb2JqOworIH0KK0BAIC0xNTM3LDYgKzE1OTEsMTAgQEAgZ2RicHlfaW5p dGlhbGl6ZV90eXBlcyAodm9pZCkKKyAKKyAgIFB5X0lOQ1JFRiAoJmZpZWxkX29iamVjdF90eXBl KTsKKyAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIkZpZWxkIiwgKFB5T2JqZWN0 ICopICZmaWVsZF9vYmplY3RfdHlwZSk7CiArCi0rY2xhc3MgVXB0b1doZXJlQ29tbWFuZCAoVXB0 b0ltcGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcg c3RhY2sgZnJhbWUsIGJhc2VkIG9uIGV4cHJlc3Npb24uCi0rVGhlIGFyZ3VtZW50IGlzIGFuIGV4 cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlIHN0YWNrLAotK3BhcnNpbmcgYW5k IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gaW4gZWFjaCBmcmFtZS4gIFRoaXMgc3RvcHMgd2hl bgotK3RoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIG5vbi16ZXJvICh0cnVlKSB2YWx1ZS4i IiIKKysjaWYgMAorKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAodHlweV90eXBlc19tYXJr X3VzZWQpOworKyNlbmRpZgorIH0KKyAKKyAMCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS12 YWx1ZS5jIGIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCitpbmRleCA2ZjY3YmRiLi41ZGRkNmJjIDEw MDY0NAorLS0tIGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCisrKysgYi9nZGIvcHl0aG9uL3B5LXZh bHVlLmMKK0BAIC0yOSw2ICsyOSw3IEBACisgI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKKyAjaW5j bHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgInB5dGhvbi5oIgorKyNpbmNsdWRlICJvYnNlcnZl ci5oIgorIAorICNpZmRlZiBIQVZFX1BZVEhPTgorIAorQEAgLTEzNzgsNiArMTM3OSwxOSBAQCBn ZGJweV9pc192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopCisgICByZXR1cm4gUHlPYmplY3Rf VHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7CisgfQorIAorKyNpZiAwCisrLyog Q2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdE QiBzb3VyY2UgZmlsZS4gICovCiArCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAg ICBzdXBlciAoVXB0b1doZXJlQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJ3aGVyZSIpCisrc3Rh dGljIHZvaWQKKytweXRob25fdHlwZXNfbWFya191c2VkICh2b2lkKQorK3sKKysgIHZhbHVlX29i amVjdCAqaXRlcjsKICsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAg dHJ5OgotKyAgICAgICAgICAgIGlmIGdkYi5wYXJzZV9hbmRfZXZhbCAoc2VsZi5leHByZXNzaW9u KToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIGV4Y2VwdDoKLSsgICAg ICAgICAgICBwYXNzCi0rICAgICAgICByZXR1cm4gRmFsc2UKKysgIGZvciAoaXRlciA9IHZhbHVl c19pbl9weXRob247IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQorKyAgICB0eXBlX21hcmtfdXNl ZCAodmFsdWVfdHlwZSAoaXRlci0+dmFsdWUpKTsKKyt9CisrI2VuZGlmCiArCi0rICAgIGRlZiBp bnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5leHByZXNzaW9uID0g YXJnCi0rICAgICAgICBzZWxmLnNlYXJjaCAoKQorIHZvaWQKKyBnZGJweV9pbml0aWFsaXplX3Zh bHVlcyAodm9pZCkKKyB7CitAQCAtMTM4OCw2ICsxNDAyLDEwIEBAIGdkYnB5X2luaXRpYWxpemVf dmFsdWVzICh2b2lkKQorICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUi LCAoUHlPYmplY3QgKikgJnZhbHVlX29iamVjdF90eXBlKTsKKyAKKyAgIHZhbHVlc19pbl9weXRo b24gPSBOVUxMOwogKwotK1VwdG9QcmVmaXggKCkKLStVcHRvU3ltYm9sQ29tbWFuZCAoKQotK1Vw dG9Tb3VyY2VDb21tYW5kICgpCi0rVXB0b09iamVjdENvbW1hbmQgKCkKLStVcHRvV2hlcmVDb21t YW5kICgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9f LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1AQCAtMCwwICsxIEBACisr I2lmIDAKKysgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHB5dGhvbl90eXBlc19tYXJrX3Vz ZWQpOworKyNlbmRpZgorIH0KKyAKKyAMCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24u YyBiL2dkYi9weXRob24vcHl0aG9uLmMKK2luZGV4IDE5ZWI3YjUuLjBlNzI1NmUgMTAwNjQ0Cist LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAt NjYsMTAgKzY2LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpnZGJweV9zaG91bGRfcHJpbnRfc3Rh Y2sgPSBweXRob25fZXhjcF9tZXNzYWdlOworICNpbmNsdWRlICJsaW5lc3BlYy5oIgorICNpbmNs dWRlICJzb3VyY2UuaCIKKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorKyNpbmNsdWRlICJpbmZlcmlv ci5oIgorKyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAidGFyZ2V0LmgiCisgI2lu Y2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJp bnRlcnBzLmgiCisrI2luY2x1ZGUgImV2ZW50LXRvcC5oIgorIAorIHN0YXRpYyBQeU1ldGhvZERl ZiBHZGJNZXRob2RzW107CisgCitAQCAtOTc0LDYgKzk3Nyw1MyBAQCBnZGJweV9wcmludF9zdGFj ayAodm9pZCkKKyAKKyAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgorICAgIFRoZXJl IGFsd2F5cyBpcyBvbmUuICAqLworKy8qIFRydWUgaWYgJ2dkYiAtUCcgd2FzIHVzZWQsIGZhbHNl IG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBydW5uaW5nX3B5dGhvbl9zY3JpcHQ7CiArCi1k aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBiL2dk Yi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi4yYjljNWM3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0 aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5Ci1AQCAtMCwwICsxLDU4IEBACi0rIyBD YWxsZXItaXMgZnVuY3Rpb25zLgorKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBhIGNh bGwgdG8gJ2dkYi5jbGknLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgaW5fY2xp OwogKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKy8qIEVudGVyIHRoZSBjb21tYW5kIGxvb3AuICAqLwogKwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKytzdGF0aWMgUHlPYmplY3QgKgorK2dkYnB5X2NsaSAoUHlPYmplY3QgKnVu dXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorK3sKKysgIGlmICghIHJ1bm5pbmdfcHl0aG9uX3Nj cmlwdCB8fCBpbl9jbGkpCisrICAgIHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVF cnJvciwgImNhbm5vdCBpbnZva2UgQ0xJIHJlY3Vyc2l2ZWx5Iik7CiArCi0raW1wb3J0IGdkYgot K2ltcG9ydCByZQorKyAgaW5fY2xpID0gMTsKKysgIGNsaV9jb21tYW5kX2xvb3AgKCk7CisrICBp bl9jbGkgPSAwOwogKwotK2NsYXNzIENhbGxlcklzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJS ZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgaXMgZXF1YWwgdG8gYSBz dHJpbmcuCi0rVGhpcyBmdW5jdGlvbiB0YWtlcyBvbmUgb3IgdHdvIGFyZ3VtZW50cy4KLStUaGUg Zmlyc3QgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgYSBmdW5jdGlvbjsgaWYgdGhlIGNhbGxpbmcg ZnVuY3Rpb24ncwotK25hbWUgaXMgZXF1YWwgdG8gdGhpcyBhcmd1bWVudCwgdGhpcyBmdW5jdGlv biByZXR1cm5zIFRydWUuCi0rVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCB0ZWxscyB0aGlz IGZ1bmN0aW9uIGhvdyBtYW55IHN0YWNrIGZyYW1lcwotK3RvIHRyYXZlcnNlIHRvIGZpbmQgdGhl IGNhbGxpbmcgZnVuY3Rpb24uICBUaGUgZGVmYXVsdCBpcyAxLiIiIgorKyAgUHlfUkVUVVJOX05P TkU7CisrfQogKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKENh bGxlcklzLCBzZWxmKS5fX2luaXRfXyAoImNhbGxlcl9pcyIpCisrLyogU2V0IHVwIHRoZSBQeXRo b24gYXJndW1lbnQgdmVjdG9yIGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4gIFRoaXMgaXMKKysgICB1 c2VkIHRvIGltcGxlbWVudCAnZ2RiIC1QJy4gICovCiArCi0rICAgIGRlZiBpbnZva2UgKHNlbGYs IG5hbWUsIG5mcmFtZXMgPSAxKToKLSsgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1l ICgpCi0rICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKLSsgICAgICAgICAgICBmcmFtZSA9IGZy YW1lLm9sZGVyICgpCi0rICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCi0rICAgICAg ICByZXR1cm4gZnJhbWUubmFtZSAoKSA9PSBuYW1lLnN0cmluZyAoKQorK3ZvaWQKKytydW5fcHl0 aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIEZJTEUgKmlucHV0Owog KwotK2NsYXNzIENhbGxlck1hdGNoZXMgKGdkYi5GdW5jdGlvbik6Ci0rICAgICIiIlJldHVybiBU cnVlIGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MgbmFtZSBtYXRjaGVzIGEgc3RyaW5nLgotK1Ro aXMgZnVuY3Rpb24gdGFrZXMgb25lIG9yIHR3byBhcmd1bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3Vt ZW50IGlzIGEgcmVndWxhciBleHByZXNzaW9uOyBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzCi0r bmFtZSBpcyBtYXRjaGVkIGJ5IHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBU cnVlLgotK1RoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBo b3cgbWFueSBzdGFjayBmcmFtZXMKLSt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1 bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMgMS4iIiIKKysgIC8qIFdlIG5ldmVyIGZyZWUgdGhpcywg c2luY2Ugd2UgcGxhbiB0byBleGl0IGF0IHRoZSBlbmQuICAqLworKyAgZW5zdXJlX3B5dGhvbl9l bnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwogKwotKyAgICBkZWYg X19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKENhbGxlck1hdGNoZXMsIHNlbGYpLl9f aW5pdF9fICgiY2FsbGVyX21hdGNoZXMiKQorKyAgcnVubmluZ19weXRob25fc2NyaXB0ID0gMTsK KysgIFB5U3lzX1NldEFyZ3YgKGFyZ2MgLSAxLCBhcmd2ICsgMSk7CisrICBpbnB1dCA9IGZvcGVu IChhcmd2WzBdLCAiciIpOworKyAgaWYgKCEgaW5wdXQpCisrICAgIHsKKysgICAgICBmcHJpbnRm IChzdGRlcnIsICJjb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9yIChl cnJubykpOworKyAgICAgIGV4aXQgKDEpOworKyAgICB9CisrICBQeVJ1bl9TaW1wbGVGaWxlIChp bnB1dCwgYXJndlswXSk7CisrICBmY2xvc2UgKGlucHV0KTsKKysgIGV4aXQgKDApOworK30KICsK LSsgICAgZGVmIGludm9rZSAoc2VsZiwgbmFtZSwgbmZyYW1lcyA9IDEpOgotKyAgICAgICAgZnJh bWUgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkKLSsgICAgICAgIHdoaWxlIG5mcmFtZXMgPiAwOgot KyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUub2xkZXIgKCkKLSsgICAgICAgICAgICBuZnJhbWVz ID0gbmZyYW1lcyAtIDEKLSsgICAgICAgIHJldHVybiByZS5tYXRjaCAobmFtZS5zdHJpbmcgKCks IGZyYW1lLm5hbWUgKCkpIGlzIG5vdCBOb25lCisrDAogKwotK0NhbGxlcklzKCkKLStDYWxsZXJN YXRjaGVzKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2Nv cGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEsNDcg QEAKLSsjIEluLXNjb3BlIGZ1bmN0aW9uLgorIAorIHN0YXRpYyBQeU9iamVjdCAqCisgZ2RicHlf Z2V0X2N1cnJlbnRfcHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNl ZDIpCitAQCAtMTQxNSw2ICsxNDY1LDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNb XSA9CisgICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCisgICB7ICJleGVjdXRlIiwg KFB5Q0Z1bmN0aW9uKSBleGVjdXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tF WVdPUkRTLAorICAgICAiRXhlY3V0ZSBhIGdkYiBjb21tYW5kIiB9LAorKyAgeyAiY2xpIiwgZ2Ri cHlfY2xpLCBNRVRIX05PQVJHUywKKysgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAorICAgeyAi cGFyYW1ldGVyIiwgZ2RicHlfcGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgICJSZXR1cm4g YSBnZGIgcGFyYW1ldGVyJ3MgdmFsdWUiIH0sCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9w eXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKK2luZGV4IGRkNzA2NmYuLmYwZjZlOTAgMTAw NjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5o CitAQCAtMzAsNiArMzAsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5k IChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworIAorIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQg KEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyt2b2lkIHJ1bl9weXRob25f c2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwogKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9u KToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFj cm9zIGFyZSBpbiBzY29wZS4KLStUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVhY2ggdmFyaWFibGUg bmFtZSB0byBiZSBjaGVja2VkLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKwlz dXBlciAoSW5TY29wZSwgc2VsZikuX19pbml0X18gKCJpbl9zY29wZSIpCi0rCi0rICAgIGRlZiBp bnZva2UgKHNlbGYsICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykgPT0gMDoKLSsJICAg IHJhaXNlIFR5cGVFcnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIK LSsKLSsgICAgICAgICMgZ2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1 dCBpbiBhIG1hcC4KLSsJIyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0 IChtYXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rCWZvdW5kID0gc2V0ICgpCi0r CWJsb2NrID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCi0rCXdoaWxlIGJsb2NrOgot KwkgICAgZm9yIHN5bSBpbiBibG9jazoKLSsJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlz X2NvbnN0YW50Ci0rCQkgICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxl KToKLSsJCSAgICBpZiBzeW0ubmFtZSBpbiB3YW50ZWQ6Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFt ZSkKLSsKLSsJICAgIGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwotKwlyZXR1cm4gd2FudGVk ID09IGZvdW5kCi0rCi0rSW5TY29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlw ZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLWluZGV4IGRhZGIwMzcuLjg2NGRhOTkgMTAwNjQ0 Ci0tLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwotKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMK LUBAIC0zMCw2ICszMCw4IEBACi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJiY2FjaGUu aCIKLSAjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2lu Y2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0 Ci0gewotQEAgLTM4LDExICs0MCwxOSBAQCB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0 Ci0gCi0gICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxl LCBpdCBpcyBrZXB0IG9uIGEKLSAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRo ZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkgdGhlCi0tICAgICB1bmRlcmx5aW5nIHN0cnVj dCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCi0rICAgICB1bmRlcmx5aW5n IHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4KLSsKLSsgICAgIFdpdGgg TlVMTCBvYmpmaWxlIFR5cGUgc3RpbGwgY2FuIGJlIGRvdWJseS1saW5rZWQgaW4gdGhlIGxpc3QK LSsgICAgIFBZVFlfT0JKRUNUU19ESVNDQVJEQUJMRS4gICovCi0gICBzdHJ1Y3QgcHl0eV90eXBl X29iamVjdCAqcHJldjsKLSAgIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpuZXh0OwotIH0gdHlw ZV9vYmplY3Q7Ci0gCi0rI2lmIDAKLSsvKiBGaXJzdCBlbGVtZW50IG9mIGEgZG91Ymx5LWxpbmtl ZCBsaXN0IG9mIFRZUEVfRElTQ0FSREFCTEUgVHlwZXMuICAqLwotK3N0YXRpYyB0eXBlX29iamVj dCAqcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOwotKyNlbmRpZgotKwotIHN0YXRpYyBQeVR5cGVP YmplY3QgdHlwZV9vYmplY3RfdHlwZTsKLSAKLSAvKiBBIEZpZWxkIG9iamVjdC4gICovCi1AQCAt MTE1MCw4ICsxMTYwLDYzIEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqb3RoZXIsIGludCBvcCkKLSAKLSAMCi0gCi0rLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBl YWNoIG9iamZpbGUgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YKLSsgICBhIGRvdWJs eS1saW5rZWQgbGlzdCBvZiBUeXBlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8K LSBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5 OworIGludCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKKyAJCQkgICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JF X0FERFIgYWRkcmVzcywKKyAJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVj dXJzZSwKK2RpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCitpbmRleCAwMmUz NmNhLi4wNjY0MDdmIDEwMDY0NAorLS0tIGEvZ2RiL3N0YWNrLmMKKysrKyBiL2dkYi9zdGFjay5j CitAQCAtNTA5LDYgKzUwOSwxMCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpm dW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisgICBzdGIgPSBtZW1fZmlsZW9wZW4gKCk7 CisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0Yik7CiAgCi0r LyogTGluayBUWVBFX09CSiB0byBpdHMgYXBwcm9wcmlhdGUgbGlzdC4gIEVpdGhlciB0byBpdHMg b2JqZmlsZSBhc3NvY2lhdGVkIG9uZQotKyAgIG9yIGF0IGxlYXN0IHRvIHRoZSBnbG9iYWwgbGlz dCBmb3IgVFlQRV9ESVNDQVJEQUJMRSBUeXBlcy4gIFBlcm1hbmVudCB0eXBlcwotKyAgIGRvIG5v dCBnZXQgbGlua2VkIGFueXdoZXJlLiAgKi8KLStzdGF0aWMgdm9pZAotK3R5cHlfbGluayAodHlw ZV9vYmplY3QgKnR5cGVfb2JqKQotK3sKLSsgIHR5cGVfb2JqLT5wcmV2ID0gTlVMTDsKLSsKLSsg IGlmICh0eXBlX29iai0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKSkKLSsg ICAgewotKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBl X29iai0+dHlwZSk7Ci0rCi0rICAgICAgdHlwZV9vYmotPm5leHQgPSBvYmpmaWxlX2RhdGEgKG9i amZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSk7Ci0rICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0 KQotKwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2JqOwotKyAgICAgIHNldF9vYmpmaWxl X2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSwgdHlwZV9vYmopOwotKyAgICB9 Ci0rI2lmIDAKLSsgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfRElTQ0FSREFCTEUg KHR5cGVfb2JqLT50eXBlKSkKLSsgICAgewotKyAgICAgIHR5cGVfb2JqLT5uZXh0ID0gcHl0eV9v YmplY3RzX2Rpc2NhcmRhYmxlOwotKyAgICAgIGlmICh0eXBlX29iai0+bmV4dCkKLSsJdHlwZV9v YmotPm5leHQtPnByZXYgPSB0eXBlX29iajsKLSsgICAgICBweXR5X29iamVjdHNfZGlzY2FyZGFi bGUgPSB0eXBlX29iajsKLSsgICAgfQotKyNlbmRpZgotKyAgZWxzZQotKyAgICB0eXBlX29iai0+ bmV4dCA9IE5VTEw7Ci0rfQotKwotKy8qIFVubGluayBUWVBFX09CSiBmcm9tIGl0cyBjdXJyZW50 IGxpc3QuICBQZXJtYW5lbnQgdHlwZXMgYXJlIG5vdCBsaW5rZWQKLSsgICBhbnl3aGVyZSBhbmQg dGhpcyBmdW5jdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZW0uICAqLwotK3N0YXRpYyB2b2lkCi0r dHlweV91bmxpbmsgKHR5cGVfb2JqZWN0ICp0eXBlX29iaikKLSt7Ci0rICBpZiAodHlwZV9vYmot PnByZXYpCi0rICAgIHR5cGVfb2JqLT5wcmV2LT5uZXh0ID0gdHlwZV9vYmotPm5leHQ7Ci0rICBl bHNlIGlmICh0eXBlX29iai0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKSkK LSsgICAgewotKyAgICAgIC8qIE11c3QgcmVzZXQgaGVhZCBvZiBsaXN0LiAgKi8KLSsgICAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpOwot KwotKyAgICAgIHNldF9vYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tl eSwgdHlwZV9vYmotPm5leHQpOwotKyAgICB9Ci0rI2lmIDAKLSsgIGVsc2UgaWYgKHB5dHlfb2Jq ZWN0c19kaXNjYXJkYWJsZSA9PSB0eXBlX29iaikKLSsgICAgcHl0eV9vYmplY3RzX2Rpc2NhcmRh YmxlID0gdHlwZV9vYmotPm5leHQ7Ci0rI2VuZGlmCi0rCi0rICBpZiAodHlwZV9vYmotPm5leHQp Ci0rICAgIHR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7Ci0rfQorKyAgLyog RnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAq LworKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7CisrICBzZWxlY3Rf ZnJhbWUgKGZyYW1lKTsKICsKLSBzdGF0aWMgdm9pZAotIHNhdmVfb2JqZmlsZV90eXBlcyAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQotIHsKLUBAIC0xMTY5LDEyICsxMjM0 LDEzIEBAIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQg KmRhdHVtKQorICAgaWYgKGZ1bmMpCiAgICAgIHsKLSAgICAgICB0eXBlX29iamVjdCAqbmV4dCA9 IG9iai0+bmV4dDsKLSAKLS0gICAgICBodGFiX2VtcHR5IChjb3BpZWRfdHlwZXMpOwotKyAgICAg IGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBvYmpmaWxlKTsKLSsgICAg ICB0eXB5X3VubGluayAob2JqKTsKLSAKLS0gICAgICBvYmotPnR5cGUgPSBjb3B5X3R5cGVfcmVj dXJzaXZlIChvYmpmaWxlLCBvYmotPnR5cGUsIGNvcGllZF90eXBlcyk7Ci0rICAgICAgb2JqLT50 eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqLT50eXBlLCBjb3BpZWRfdHlwZXMpOwotIAot LSAgICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0tICAgICAgb2JqLT5wcmV2ID0gTlVMTDsKLSsgICAg ICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKG9iai0+dHlwZSkgPT0gTlVMTCk7Ci0rICAgICAg dHlweV9saW5rIChvYmopOwotIAotICAgICAgIG9iaiA9IG5leHQ7CisgICAgICAgc3RydWN0IGJs b2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9w YWNrZWRfYXJyYXkuZXhwCitpbmRleCA2Nzg2MzljLi40N2EyMjAyIDEwMDY0NAorLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCitAQCAtNjAsNSArNjAsMTEgQEAgZ2RiX3Rlc3RfbXVs dGlwbGUgIiR0ZXN0IiAiJHRlc3QiIHsKKyAgICAgICAgICMgYXJlLiAgT2JzZXJ2ZWQgd2l0aCAo RlNGIEdOVSBBZGEgNC41LjMgMjAxMTAxMjQpLgorICAgICAgICAgeGZhaWwgJHRlc3QKICAgICAg fQotQEAgLTExODUsNDMgKzEyNTEsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tc2V0X3R5 cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBlKQotK3R5cHlfZGVhbGxvYyAo UHlPYmplY3QgKm9iaikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBlOwotLSAgb2JqLT5wcmV2ID0g TlVMTDsKLS0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCi0tICAgIHsKLS0gICAg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0rICB0eXBl X29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotIAotLSAgICAgIG9iai0+ bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKLS0g ICAgICBpZiAob2JqLT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYgPSBvYmo7Ci0tICAgICAgc2V0 X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmopOwotLSAg ICB9Ci0tICBlbHNlCi0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0rICB0eXB5X3VubGluayAodHlw ZV9vYmopOwotKwotKyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2ZyZWUgKG9iaik7Ci0gfQotIAot KyNpZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQg ZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCi0gc3RhdGljIHZvaWQKLS10eXB5X2RlYWxs b2MgKFB5T2JqZWN0ICpvYmopCi0rdHlweV90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0gewotLSAg dHlwZV9vYmplY3QgKnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOwotLQotLSAgaWYgKHR5cGUt PnByZXYpCi0tICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0OwotLSAgZWxzZSBpZiAo dHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQotLSAgICB7Ci0tICAgICAg LyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwotLSAgICAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKLS0KLS0gICAgICBpZiAob2JqZmls ZSkKLS0Jc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0 eXBlLT5uZXh0KTsKLS0gICAgfQotLSAgaWYgKHR5cGUtPm5leHQpCi0tICAgIHR5cGUtPm5leHQt PnByZXYgPSB0eXBlLT5wcmV2OwotKyAgdHlwZV9vYmplY3QgKnR5cGVfb2JqOwotIAotLSAgdHlw ZS0+b2JfdHlwZS0+dHBfZnJlZSAodHlwZSk7Ci0rICBmb3IgKHR5cGVfb2JqID0gcHl0eV9vYmpl Y3RzX2Rpc2NhcmRhYmxlOwotKyAgICAgICB0eXBlX29iaiAhPSBOVUxMOwotKyAgICAgICB0eXBl X29iaiA9IHR5cGVfb2JqLT5uZXh0KQotKyAgICB0eXBlX21hcmtfdXNlZCAodHlwZV9vYmotPnR5 cGUpOwotIH0KLSsjZW5kaWYKLSAKLSAvKiBSZXR1cm4gbnVtYmVyIG9mIGZpZWxkcyAoImxlbmd0 aCIgb2YgdGhlIGZpZWxkIGRpY3Rpb25hcnkpLiAgKi8KLSAKLUBAIC0xNDQ0LDcgKzE0OTUsMTAg QEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCi0gICB0eXBlX29i aiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBlKTsKLSAgIGlm ICh0eXBlX29iaikKLS0gICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBlKTsKLSsgICAgewotKyAg ICAgIHR5cGVfb2JqLT50eXBlID0gdHlwZTsKLSsgICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsK KysgICAgLXJlICI9IFxcKFxcKVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKKysJIyBhcmNoZXIt amFua3JhdG9jaHZpbC12bGEgcmVzb2x2ZXMgaXQgYXMgYSBkeW5hbWljIHR5cGUgcmVzb2x2ZWQg YXMgYW4KKysJIyBlbXB0eSBhcnJheSBbMC4uLTFdLgorKwkjIERXX0FUX3VwcGVyX2JvdW5kIDog KERXX09QX2ZicmVnOiAtNDg7IERXX09QX2RlcmVmKQorKyAgICAgICAgeGZhaWwgJHRlc3QKICsg ICAgfQotIAotICAgcmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29iajsKLSB9Ci1AQCAtMTUyNCw2 ICsxNTc4LDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCi0gCi0gICBQeV9JTkNS RUYgKCZmaWVsZF9vYmplY3RfdHlwZSk7Ci0gICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1 bGUsICJGaWVsZCIsIChQeU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwotKwotKyNpZiAw Ci0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkICh0eXB5X3R5cGVzX21hcmtfdXNlZCk7Ci0r I2VuZGlmCiAgfQogIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9n ZGIvcHl0aG9uL3B5LXZhbHVlLmMKLWluZGV4IDc2MDM2MGUuLmQ5MzVmNTQgMTAwNjQ0Ci0tLS0g YS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLSsrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotQEAg LTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAiaW5mY2FsbC5oIgotICNpbmNsdWRlICJleHByZXNz aW9uLmgiCi0gI2luY2x1ZGUgImNwLWFiaS5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotIAot ICNpZmRlZiBIQVZFX1BZVEhPTgotIAotQEAgLTEzMzUsNiArMTMzNiwxOSBAQCBnZGJweV9pc192 YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopCi0gICByZXR1cm4gUHlPYmplY3RfVHlwZUNoZWNr IChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7Ci0gfQotIAotKyNpZiAwCi0rLyogQ2FsbCB0eXBl X21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2Ug ZmlsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStweXRob25fdHlwZXNfbWFya191c2VkICh2b2lk KQotK3sKLSsgIHZhbHVlX29iamVjdCAqaXRlcjsKLSsKLSsgIGZvciAoaXRlciA9IHZhbHVlc19p bl9weXRob247IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQotKyAgICB0eXBlX21hcmtfdXNlZCAo dmFsdWVfdHlwZSAoaXRlci0+dmFsdWUpKTsKLSt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjgzZmFhZjYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCitAQCAtMCwwICsxLDQ1NyBAQAorKwkuZmls ZQkieDg2XzY0LXZsYS1wb2ludGVyLmMiCisrCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHBy b2diaXRzCisrLkxkZWJ1Z19hYmJyZXYwOgorKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJv Z2JpdHMKKysuTGRlYnVnX2luZm8wOgorKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2Jp dHMKKysuTGRlYnVnX2xpbmUwOgorKwkudGV4dAorKy5MdGV4dDA6CisrLmdsb2JsIGZvbworKwku dHlwZQlmb28sIEBmdW5jdGlvbgorK2ZvbzoKKysuTEZCMjoKKysJLmZpbGUgMSAieDg2XzY0LXZs YS1wb2ludGVyLmMiCisrCS5sb2MgMSAyMiAwCisrCXB1c2hxCSVyYnAKKysuTENGSTA6CisrCW1v dnEJJXJzcCwgJXJicAorKy5MQ0ZJMToKKysJc3VicQkkNjQsICVyc3AKKysuTENGSTI6CisrCW1v dmwJJWVkaSwgLTM2KCVyYnApCisrCS5sb2MgMSAyMiAwCisrCW1vdnEJJXJzcCwgJXJheAorKwlt b3ZxCSVyYXgsIC00OCglcmJwKQorKwkubG9jIDEgMjMgMAorKwltb3ZsCS0zNiglcmJwKSwgJWVk eAorKwltb3ZzbHEJJWVkeCwlcmF4CisrCXN1YnEJJDEsICVyYXgKKysJbW92cQklcmF4LCAtMjQo JXJicCkKKysJLmxvYyAxIDI0IDAKKysJbW92c2xxCSVlZHgsJXJheAorKwlhZGRxCSQxNSwgJXJh eAorKwlhZGRxCSQxNSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJ c3VicQklcmF4LCAlcnNwCisrCW1vdnEJJXJzcCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnAp LCAlcmF4CisrCWFkZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkkNCwgJXJh eAorKwltb3ZxCSVyYXgsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwltb3Zx CSVyYXgsIC0xNiglcmJwKQorKwkubG9jIDEgMjcgMAorKwltb3ZsCSQwLCAtNCglcmJwKQorKwlq bXAJLkwyCisrLkwzOgorKwkubG9jIDEgMjggMAorKwltb3ZsCS00KCVyYnApLCAlZXNpCisrCW1v dmwJLTQoJXJicCksICVlYXgKKysJbW92bAklZWF4LCAlZWN4CisrCW1vdnEJLTE2KCVyYnApLCAl cmR4CisrCW1vdnNscQklZXNpLCVyYXgKKysJbW92YgklY2wsICglcmR4LCVyYXgpCisrCS5sb2Mg MSAyNyAwCisrCWFkZGwJJDEsIC00KCVyYnApCisrLkwyOgorKwltb3ZsCS00KCVyYnApLCAlZWF4 CisrCWNtcGwJLTM2KCVyYnApLCAlZWF4CisrCWpsCS5MMworKwkubG9jIDEgMzAgMAorKwkuZ2xv YmwJYnJlYWtfaGVyZQorK2JyZWFrX2hlcmU6CisrCW1vdnEJLTE2KCVyYnApLCAlcmF4CisrCW1v dmIJJDAsICglcmF4KQorKwltb3ZxCS00OCglcmJwKSwgJXJzcAorKwkubG9jIDEgMzEgMAorKwls ZWF2ZQorKwlyZXQKKysuTEZFMjoKKysJLnNpemUJZm9vLCAuLWZvbworKwkuc2VjdGlvbgkuZGVi dWdfZnJhbWUsIiIsQHByb2diaXRzCisrLkxmcmFtZTA6CisrCS5sb25nCS5MRUNJRTAtLkxTQ0lF MAorKy5MU0NJRTA6CisrCS5sb25nCTB4ZmZmZmZmZmYKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJ IiIKKysJLnVsZWIxMjggMHgxCisrCS5zbGViMTI4IC04CisrCS5ieXRlCTB4MTAKKysJLmJ5dGUJ MHhjCisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxl YjEyOCAweDEKKysJLmFsaWduIDgKKysuTEVDSUUwOgorKy5MU0ZERTA6CisrCS5sb25nCS5MRUZE RTAtLkxBU0ZERTAKKysuTEFTRkRFMDoKKysJLmxvbmcJLkxmcmFtZTAKKysJLnF1YWQJLkxGQjIK KysJLnF1YWQJLkxGRTItLkxGQjIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgor KwkuYnl0ZQkweGUKKysJLnVsZWIxMjggMHgxMAorKwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4 MgorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkxLS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVs ZWIxMjggMHg2CisrCS5hbGlnbiA4CisrLkxFRkRFMDoKKysJLnNlY3Rpb24JLmVoX2ZyYW1lLCJh IixAcHJvZ2JpdHMKKysuTGZyYW1lMToKKysJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCisrLkxTQ0lF MToKKysJLmxvbmcJMHgwCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJ6UiIKKysJLnVsZWIxMjgg MHgxCisrCS5zbGViMTI4IC04CisrCS5ieXRlCTB4MTAKKysJLnVsZWIxMjggMHgxCisrCS5ieXRl CTB4MworKwkuYnl0ZQkweGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0 ZQkweDkwCisrCS51bGViMTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTE6CisrLkxTRkRFMToK KysJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQorKy5MQVNGREUxOgorKwkubG9uZwkuTEFTRkRFMS0u TGZyYW1lMQorKwkubG9uZwkuTEZCMgorKwkubG9uZwkuTEZFMi0uTEZCMgorKwkudWxlYjEyOCAw eDAKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwkuYnl0ZQkweGUKKysJLnVs ZWIxMjggMHgxMAorKwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkweDQKKysJ LmxvbmcJLkxDRkkxLS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIxMjggMHg2CisrCS5hbGln biA4CisrLkxFRkRFMToKKysJLnRleHQKKysuTGV0ZXh0MDoKKysJLnNlY3Rpb24JLmRlYnVnX2xv YywiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2xvYzA6CisrLkxMU1QwOgorKwkucXVhZAkuTEZCMi0u THRleHQwCisrCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3 NworKwkuc2xlYjEyOCA4CisrCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCisrCS5xdWFkCS5MQ0ZJMS0u THRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3NworKwkuc2xlYjEyOCAxNgorKwkucXVh ZAkuTENGSTEtLkx0ZXh0MAorKwkucXVhZAkuTEZFMi0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJ LmJ5dGUJMHg3NgorKwkuc2xlYjEyOCAxNgorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisrCS5z ZWN0aW9uCS5kZWJ1Z19pbmZvCisrLkxkZWJ1Z19yZWxhdGl2ZToKKysJLmxvbmcJLkxkZWJ1Z19l bmQgLSAuTGRlYnVnX3N0YXJ0CisrLkxkZWJ1Z19zdGFydDoKKysJLnZhbHVlCTB4MgorKwkubG9u ZwkuTGRlYnVnX2FiYnJldjAKKysJLmJ5dGUJMHg4CisrCS51bGViMTI4IDB4MQorKwkubG9uZwku TEFTRjIKKysJLmJ5dGUJMHgxCisrCS5sb25nCS5MQVNGMworKwkubG9uZwkuTEFTRjQKKysJLnF1 YWQJLkx0ZXh0MAorKwkucXVhZAkuTGV0ZXh0MAorKwkubG9uZwkuTGRlYnVnX2xpbmUwCisrCS51 bGViMTI4IDB4MgorKwkuYnl0ZQkweDEKKysJLnN0cmluZwkiZm9vIgorKwkuYnl0ZQkweDEKKysJ LmJ5dGUJMHgxNgorKwkuYnl0ZQkweDEKKysJLnF1YWQJLkxGQjIKKysJLnF1YWQJLkxGRTIKKysJ LmxvbmcJLkxMU1QwCisrCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS51 bGViMTI4IDB4MworKwkubG9uZwkuTEFTRjUKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTUKKysJ LmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKKysJLmJ5dGUJMHgyCisrCS5ieXRl CTB4OTEKKysJLnNsZWIxMjggLTUyCisrLkx0YWdfcG9pbnRlcjoKKysJLnVsZWIxMjggMHg0Cisr CS5ieXRlCTB4OAkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmxvbmcJLkx0YWdfYXJyYXlfdHlw ZSAtIC5kZWJ1Z19pbmZvCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjggMHg1CS8qIEFiYnJl diBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KKysJLmxvbmcJLkxBU0YwCisrCS5ieXRl CTB4MQorKwkuYnl0ZQkweDE4CisrI2lmIDEKKysJLmxvbmcJLkx0YWdfcG9pbnRlciAtIC5kZWJ1 Z19pbmZvCisrI2Vsc2UKKysJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5k aXJlY3Rpb24uICAqLworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KICsj ZW5kaWYKLSsKLSB2b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCi0gewotQEAg LTEzNDUsNiArMTM1OSwxMCBAQCBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKLSAgIFB5 TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlZhbHVlIiwgKFB5T2JqZWN0ICopICZ2YWx1 ZV9vYmplY3RfdHlwZSk7Ci0gCi0gICB2YWx1ZXNfaW5fcHl0aG9uID0gTlVMTDsKLSsKKysJLyog RFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQkweDMKKysJ LmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtMzIKICsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21h cmtfdXNlZCAocHl0aG9uX3R5cGVzX21hcmtfdXNlZCk7CisrCS5ieXRlCTB4NgkvKiBEV19PUF9k ZXJlZiAqLworKyNlbHNlCisrCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCiArI2VuZGlmCi0g fQotIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9w eXRob24uYwotaW5kZXggNWEwZDc3Ni4uYWYwMWRmZCAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24v cHl0aG9uLmMKLSsrKyBiL2dkYi9weXRob24vcHl0aG9uLmMKLUBAIC02NiwxMCArNjYsMTMgQEAg c3RhdGljIGNvbnN0IGNoYXIgKmdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IHB5dGhvbl9leGNw X21lc3NhZ2U7Ci0gI2luY2x1ZGUgImxpbmVzcGVjLmgiCi0gI2luY2x1ZGUgInNvdXJjZS5oIgot ICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2luY2x1ZGUg ImdkYnRocmVhZC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZ2RidGhyZWFk LmgiCi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImludGVycHMuaCIKLSsjaW5j bHVkZSAiZXZlbnQtdG9wLmgiCi0gCi0gc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsK LSAKLUBAIC05NDYsNiArOTQ5LDUzIEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQotIAotIC8q IFJldHVybiB0aGUgY3VycmVudCBQcm9nc3BhY2UuCi0gICAgVGhlcmUgYWx3YXlzIGlzIG9uZS4g ICovCi0rLyogVHJ1ZSBpZiAnZ2RiIC1QJyB3YXMgdXNlZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8K LStzdGF0aWMgaW50IHJ1bm5pbmdfcHl0aG9uX3NjcmlwdDsKLSsKLSsvKiBUcnVlIGlmIHdlIGFy ZSBjdXJyZW50bHkgaW4gYSBjYWxsIHRvICdnZGIuY2xpJywgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8K LStzdGF0aWMgaW50IGluX2NsaTsKLSsKLSsvKiBFbnRlciB0aGUgY29tbWFuZCBsb29wLiAgKi8K LSsKLStzdGF0aWMgUHlPYmplY3QgKgotK2dkYnB5X2NsaSAoUHlPYmplY3QgKnVudXNlZDEsIFB5 T2JqZWN0ICp1bnVzZWQyKQotK3sKLSsgIGlmICghIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCB8fCBp bl9jbGkpCi0rICAgIHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImNh bm5vdCBpbnZva2UgQ0xJIHJlY3Vyc2l2ZWx5Iik7Ci0rCi0rICBpbl9jbGkgPSAxOwotKyAgY2xp X2NvbW1hbmRfbG9vcCAoKTsKLSsgIGluX2NsaSA9IDA7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsK LSt9Ci0rCi0rLyogU2V0IHVwIHRoZSBQeXRob24gYXJndW1lbnQgdmVjdG9yIGFuZCBldmFsdWF0 ZSBhIHNjcmlwdC4gIFRoaXMgaXMKLSsgICB1c2VkIHRvIGltcGxlbWVudCAnZ2RiIC1QJy4gICov Ci0rCi0rdm9pZAotK3J1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0r ewotKyAgRklMRSAqaW5wdXQ7Ci0rCi0rICAvKiBXZSBuZXZlciBmcmVlIHRoaXMsIHNpbmNlIHdl IHBsYW4gdG8gZXhpdCBhdCB0aGUgZW5kLiAgKi8KLSsgIGVuc3VyZV9weXRob25fZW52IChnZXRf Y3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsgIHJ1bm5pbmdfcHl0aG9u X3NjcmlwdCA9IDE7Ci0rICBQeVN5c19TZXRBcmd2IChhcmdjIC0gMSwgYXJndiArIDEpOwotKyAg aW5wdXQgPSBmb3BlbiAoYXJndlswXSwgInIiKTsKLSsgIGlmICghIGlucHV0KQotKyAgICB7Ci0r ICAgICAgZnByaW50ZiAoc3RkZXJyLCAiY291bGQgbm90IG9wZW4gJXM6ICVzXG4iLCBhcmd2WzBd LCBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQotKyAgUHlSdW5f U2ltcGxlRmlsZSAoaW5wdXQsIGFyZ3ZbMF0pOwotKyAgZmNsb3NlIChpbnB1dCk7Ci0rICBleGl0 ICgwKTsKLSt9Ci0rCi0rDAotKwotIAotIHN0YXRpYyBQeU9iamVjdCAqCi0gZ2RicHlfZ2V0X2N1 cnJlbnRfcHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCi1A QCAtMTM4Niw2ICsxNDM2LDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9Ci0g ICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCi0gICB7ICJleGVjdXRlIiwgKFB5Q0Z1 bmN0aW9uKSBleGVjdXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRT LAotICAgICAiRXhlY3V0ZSBhIGdkYiBjb21tYW5kIiB9LAotKyAgeyAiY2xpIiwgZ2RicHlfY2xp LCBNRVRIX05PQVJHUywKLSsgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAotICAgeyAicGFyYW1l dGVyIiwgZ2RicHlfcGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJSZXR1cm4gYSBnZGIg cGFyYW1ldGVyJ3MgdmFsdWUiIH0sCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24u aCBiL2dkYi9weXRob24vcHl0aG9uLmgKLWluZGV4IDllNDYxZjcuLjU3YjIxZGEgMTAwNjQ0Ci0t LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCi0rKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1AQCAt MzIsNiArMzIsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1 Y3QgY29tbWFuZF9saW5lICopOwotIAotIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0 IGNoYXIgKmZpbGUpOwotIAotK3ZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFy ICoqYXJndik7Ci0rCi0gaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJCSAgICAgIGludCBlbWJlZGRlZF9v ZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGludCByZWN1cnNlLAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUu YwotaW5kZXggZjM0ODUzNi4uZTIwZjZiZiAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysr IGIvZ2RiL3JlbW90ZS5jCi1AQCAtOTk0OCw3ICs5OTQ4LDcgQEAgcmVtb3RlX2Rvd25sb2FkX3Ry YWNlcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQotICAgY2hhciAqKnN0ZXBwaW5nX2Fj dGlvbnM7Ci0gICBpbnQgbmR4OwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7 Ci0tICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHI7Ci0rICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4 cHIgPSBOVUxMOwotICAgc3RydWN0IGNsZWFudXAgKmFleHByX2NoYWluID0gTlVMTDsKLSAgIGNo YXIgKnBrdDsKLSAgIHN0cnVjdCBicmVha3BvaW50ICpiID0gbG9jLT5vd25lcjsKLWRpZmYgLS1n aXQgYS9nZGIvczM5MC1uYXQuYyBiL2dkYi9zMzkwLW5hdC5jCi1pbmRleCAyNzU1ZTU4Li44ZGYz ZmQxIDEwMDY0NAotLS0tIGEvZ2RiL3MzOTAtbmF0LmMKLSsrKyBiL2dkYi9zMzkwLW5hdC5jCi1A QCAtNTE1LDYgKzUxNSwxNyBAQCBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0cnVjdCBsd3BfaW5m byAqbHApCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIkNvdWxkbid0IG1vZGlmeSB3YXRjaHBv aW50IHN0YXR1cyIpKTsKLSB9Ci0gCi0rLyogQ2FsbGJhY2sgZm9yIGl0ZXJhdGVfb3Zlcl9sd3Bz LCB0byBjYWxsIHMzOTBfZml4X3dhdGNoX3BvaW50cy4gICovCi0rCi0rc3RhdGljIGludAotK3Mz OTBfZml4X3dhdGNoX3BvaW50c19pdGVyYXRlIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICph cmcpCi0rewotKyAgczM5MF9maXhfd2F0Y2hfcG9pbnRzIChscCk7Ci0rCi0rICAvKiBDb250aW51 ZSB0aGUgdHJhdmVyc2FsLiAgKi8KLSsgIHJldHVybiAwOwotK30KLSsKLSBzdGF0aWMgaW50Ci0g czM5MF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBl LAotIAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQotQEAgLTUzMSw4ICs1NDIsOCBAQCBzMzkw X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0g ICBhcmVhLT5uZXh0ID0gd2F0Y2hfYmFzZTsKLSAgIHdhdGNoX2Jhc2UgPSBhcmVhOwotIAotLSAg QUxMX0xXUFMgKGxwKQotLSAgICBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKGxwKTsKLSsgIGl0ZXJh dGVfb3Zlcl9sd3BzIChtaW51c19vbmVfcHRpZCwgczM5MF9maXhfd2F0Y2hfcG9pbnRzX2l0ZXJh dGUsIE5VTEwpOwotKwotICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTU1OSw4ICs1NzAsOCBAQCBz MzkwX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUs Ci0gICAqcGFyZWEgPSBhcmVhLT5uZXh0OwotICAgeGZyZWUgKGFyZWEpOwotIAotLSAgQUxMX0xX UFMgKGxwKQotLSAgICBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKGxwKTsKLSsgIGl0ZXJhdGVfb3Zl cl9sd3BzIChtaW51c19vbmVfcHRpZCwgczM5MF9maXhfd2F0Y2hfcG9pbnRzX2l0ZXJhdGUsIE5V TEwpOwotKwotICAgcmV0dXJuIDA7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zMzkwLXRkZXAu YyBiL2dkYi9zMzkwLXRkZXAuYwotaW5kZXggYWMwYzUyNi4uZGQwZTQ3NyAxMDA2NDQKLS0tLSBh L2dkYi9zMzkwLXRkZXAuYwotKysrIGIvZ2RiL3MzOTAtdGRlcC5jCi1AQCAtNTUsNiArNTUsMTIg QEAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvczM5MHgtbGludXg2NHYxLmMiCi0gI2luY2x1ZGUgImZl YXR1cmVzL3MzOTB4LWxpbnV4NjR2Mi5jIgotIAotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0r I2luY2x1ZGUgImF4LmgiCi0rI2luY2x1ZGUgImF4LWdkYi5oIgotKyNpbmNsdWRlICJ1c2VyLXJl Z3MuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgotKyNpbmNsdWRlIDxjdHlwZS5oPgot IAotIC8qIFRoZSB0ZGVwIHN0cnVjdHVyZS4gICovCi0gCi1AQCAtMjk1Myw2ICsyOTU5LDE1IEBA IHMzOTBfYWRkcmVzc19jbGFzc19uYW1lX3RvX3R5cGVfZmxhZ3MgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0rc3RhdGljIGludAotK3MzOTBfc3RhcF9p c19zaW5nbGVfb3BlcmFuZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMp Ci0rewotKyAgcmV0dXJuICgoaXNkaWdpdCAoKnMpICYmIHNbMV0gPT0gJygnICYmIHNbMl0gPT0g JyUnKSAvKiBEaXNwbGFjZW1lbnQKLSsJCQkJCQkJICBvciBpbmRpcmVjdGlvbi4gICovCi0rCSAg fHwgKnMgPT0gJyUnIC8qIFJlZ2lzdGVyIGFjY2Vzcy4gICovCi0rCSAgfHwgaXNkaWdpdCAoKnMp KTsgLyogTGl0ZXJhbCBudW1iZXIuICAqLwotK30KLSsKLSAvKiBTZXQgdXAgZ2RiYXJjaCBzdHJ1 Y3QuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCi1AQCAtMzI4Myw2ICszMjk4LDEy IEBAIHMzOTBfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBn ZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAKLSAgIHNldF9nZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUg KGdkYmFyY2gsIGxpbnV4X2dldF9zaWdpbmZvX3R5cGUpOwotIAotKyAgLyogU3lzdGVtVGFwIGZ1 bmN0aW9ucy4gICovCi0rICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJj aCwgIiUiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4 IChnZGJhcmNoLCAiKCIpOwotKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlv bl9zdWZpeCAoZ2RiYXJjaCwgIikiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29w ZXJhbmQgKGdkYmFyY2gsIHMzOTBfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7Ci0rCi0gICByZXR1 cm4gZ2RiYXJjaDsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbXJlYWQuYyBiL2dkYi9zb21y ZWFkLmMKLWluZGV4IGU2MjFjYmEuLjE5YTE1ZTIgMTAwNjQ0Ci0tLS0gYS9nZGIvc29tcmVhZC5j Ci0rKysgYi9nZGIvc29tcmVhZC5jCi1AQCAtNDI3LDYgKzQyNyw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucyA9Ci0gICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMs CS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KLSAgIE5VTEwsCi0g ICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4g ICovCi0rICBOVUxMLAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLwotICAgJnBzeW1fZnVuY3Rpb25z Ci0gfTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCi1pbmRleCBi MTViNWZjLi5iMmRhZDI5IDEwMDY0NAotLS0tIGEvZ2RiL3N0YWNrLmMKLSsrKyBiL2dkYi9zdGFj ay5jCi1AQCAtNTA5LDYgKzUwOSwxMCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9s ICpmdW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gICBzdGIgPSB1aV9vdXRfc3RyZWFt X25ldyAodWlvdXQpOwotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF9zdHJlYW1f ZGVsZXRlIChzdGIpOwotIAotKyAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlw ZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAqLwotKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0 ZWRfZnJhbWUgKCk7Ci0rICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKLSsKLSAgIGlmIChmdW5jKQot ICAgICB7Ci0gICAgICAgc3RydWN0IGJsb2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5j KTsKLWRpZmYgLS1naXQgYS9nZGIvc3RhcC1wcm9iZS5jIGIvZ2RiL3N0YXAtcHJvYmUuYwotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjEyMzUzMGYKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi9zdGFwLXByb2JlLmMKLUBAIC0wLDAgKzEsMTY3MiBAQAotKy8qIFN5c3RlbVRh cCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lu Y2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgotKyNpbmNsdWRlICJ2ZWMu aCIKLSsjaW5jbHVkZSAidWktb3V0LmgiCi0rI2luY2x1ZGUgImdkYl9yZWdleC5oIgotKyNpbmNs dWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImNv bW1hbmQuaCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImZpbGVuYW1lcy5oIgot KyNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUg ImF4LmgiCi0rI2luY2x1ZGUgImF4LWdkYi5oIgotKyNpbmNsdWRlICJjb21wbGFpbnRzLmgiCi0r I2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAibGluZXNwZWMuaCIKLSsjaW5j bHVkZSAidXNlci1yZWdzLmgiCi0rI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCi0rI2luY2x1ZGUg Imxhbmd1YWdlLmgiCi0rCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rCi0rLyogVGhlIG1heGltdW0g bnVtYmVyIG9mIGFyZ3VtZW50cyB0aGF0IGEgcHJvYmUgY2FuIGhhdmUsCi0rICAgYXMgZGVmaW5l ZCBpbiA8c3lzL3NkdC5oPi4gICovCi0rCi0rI2RlZmluZSBTVEFQX01BWF9BUkdTIDEyCi0rCi0r LyogU2hvdWxkIHdlIGRpc3BsYXkgZGVidWcgaW5mb3JtYXRpb24gZm9yIHRoZSBwcm9iZSdzIGFy Z3VtZW50IGV4cHJlc3Npb24KLSsgICBwYXJzaW5nPyAgKi8KLSsKLStzdGF0aWMgaW50IHN0YXBf ZXhwcmVzc2lvbl9kZWJ1ZyA9IDA7Ci0rCi0rLyogVGhlIHZhcmlvdXMgcG9zc2liaWxpdGllcyBv ZiBiaXRuZXNzIGRlZmluZWQgZm9yIGEgcHJvYmUncyBhcmd1bWVudC4KLSsKLSsgICBUaGUgcmVs YXRpb25zaGlwIGlzOgotKwotKyAgIC0gU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ6ICBUaGUg dXNlciBoYXNuJ3Qgc3BlY2lmaWVkIHRoZSBiaXRuZXNzLgotKyAgIC0gU1RBUF9BUkdfQklUTkVT U18zMkJJVF9VTlNJR05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgNEAnLgotKyAg IC0gU1RBUF9BUkdfQklUTkVTU18zMkJJVF9TSUdORUQ6ICBhcmd1bWVudCBzdHJpbmcgc3RhcnRz IHdpdGggYC00QCcuCi0rICAgLSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1VOU0lHTkVEOiAgYXJn dW1lbnQgc3RyaW5nIHN0YXJ0cyB3aXRoIGA4QCcuCi0rICAgLSBTVEFQX0FSR19CSVRORVNTXzY0 QklUX1NJR05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgLThAJy4gICovCi0rCi0r ZW51bSBzdGFwX2FyZ19iaXRuZXNzCi0rewotKyAgU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQs Ci0rICBTVEFQX0FSR19CSVRORVNTXzMyQklUX1VOU0lHTkVELAotKyAgU1RBUF9BUkdfQklUTkVT U18zMkJJVF9TSUdORUQsCi0rICBTVEFQX0FSR19CSVRORVNTXzY0QklUX1VOU0lHTkVELAotKyAg U1RBUF9BUkdfQklUTkVTU182NEJJVF9TSUdORUQsCi0rfTsKLSsKLSsvKiBUaGUgZm9sbG93aW5n IHN0cnVjdHVyZSByZXByZXNlbnRzIGEgc2luZ2xlIGFyZ3VtZW50IGZvciB0aGUgcHJvYmUuICAq LwotKwotK3N0cnVjdCBzdGFwX3Byb2JlX2FyZwotK3sKLSsgIC8qIFRoZSBiaXRuZXNzIG9mIHRo aXMgYXJndW1lbnQuICAqLwotKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5lc3M7Ci0rCi0r ICAvKiBUaGUgY29ycmVzcG9uZGluZyBgc3RydWN0IHR5cGUgKicgdG8gdGhlIGJpdG5lc3MuICAq LwotKyAgc3RydWN0IHR5cGUgKmF0eXBlOwotKwotKyAgLyogVGhlIGFyZ3VtZW50IGNvbnZlcnRl ZCB0byBhbiBpbnRlcm5hbCBHREIgZXhwcmVzc2lvbi4gICovCi0rICBzdHJ1Y3QgZXhwcmVzc2lv biAqYWV4cHI7Ci0rfTsKLSsKLSsvKiBTdHJ1Y3R1cmUgdGhhdCBob2xkcyBpbmZvcm1hdGlvbiBh Ym91dCBhbGwgYXJndW1lbnRzIG9mIGEgcHJvYmUuICAqLwotKwotK3N0cnVjdCBzdGFwX2FyZ3Nf aW5mbwotK3sKLSsgIC8qIFRoZSBudW1iZXIgb2YgdmFsaWQgcGFyc2VkIGFyZ3VtZW50cy4gICov Ci0rICBpbnQgbl9hcmdzOwotKwotKyAgLyogVGhlIHByb2JlIHRvIHdoaWNoIHRoZXNlIGFyZ3Vt ZW50cyBiZWxvbmcuICAqLwotKyAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwotKwotKyAgLyog SW5mb3JtYXRpb24gYWJvdXQgZWFjaCBhcmd1bWVudC4gIFRoaXMgaXMgYW4gYXJyYXkgb2YgYHN0 YXBfcHJvYmVfYXJnJywKLSsgICAgIHdpdGggZWFjaCBlbnRyeSByZXByZXNlbnRpbmcgb25lIGFy Z3VtZW50LiAgKi8KLSsgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqYXJnczsKLSt9OwotKwotKy8q IFdoZW4gcGFyc2luZyB0aGUgYXJndW1lbnRzLCB3ZSBoYXZlIHRvIGVzdGFibGlzaCBkaWZmZXJl bnQgcHJlY2VkZW5jZXMKLSsgICBmb3IgdGhlIHZhcmlvdXMga2luZHMgb2YgYXNtIG9wZXJhdG9y cy4gIFRoaXMgZW51bWVyYXRpb24gcmVwcmVzZW50cyB0aG9zZQotKyAgIHByZWNlZGVuY2VzLgot KwotKyAgIFRoaXMgbG9naWMgYmVoaW5kIHRoaXMgaXMgYXZhaWxhYmxlIGF0Ci0rICAgPGh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9iaW51dGlscy9kb2NzL2FzL0luZml4LU9wcy5odG1sI0luZml4LU9w cz4sIG9yIHVzaW5nCi0rICAgdGhlIGNvbW1hbmQgImluZm8gJyhhcylJbmZpeCBPcHMnIi4gICov Ci0rCi0rZW51bSBzdGFwX29wZXJhbmRfcHJlYwotK3sKLSsgIC8qIExvd2VzdCBwcmVjZWRlbmNl LCB1c2VkIGZvciBub24tcmVjb2duaXplZCBvcGVyYW5kcyBvciBmb3IgdGhlIGJlZ2lubmluZwot KyAgICAgb2YgdGhlIHBhcnNpbmcgcHJvY2Vzcy4gICovCi0rICBTVEFQX09QRVJBTkRfUFJFQ19O T05FID0gMCwKLSsKLSsgIC8qIFByZWNlZGVuY2Ugb2YgbG9naWNhbCBPUi4gICovCi0rICBTVEFQ X09QRVJBTkRfUFJFQ19MT0dJQ0FMX09SLAotKwotKyAgLyogUHJlY2VkZW5jZSBvZiBsb2dpY2Fs IEFORC4gICovCi0rICBTVEFQX09QRVJBTkRfUFJFQ19MT0dJQ0FMX0FORCwKLSsKLSsgIC8qIFBy ZWNlZGVuY2Ugb2YgYWRkaXRpdmUgKHBsdXMsIG1pbnVzKSBhbmQgY29tcGFyYXRpdmUgKGVxdWFs LCBsZXNzLAotKyAgICAgZ3JlYXRlci10aGFuLCBldGMpIG9wZXJhbmRzLiAgKi8KLSsgIFNUQVBf T1BFUkFORF9QUkVDX0FERF9DTVAsCi0rCi0rICAvKiBQcmVjZWRlbmNlIG9mIGJpdHdpc2Ugb3Bl cmFuZHMgKGJpdHdpc2UgT1IsIFhPUiwgYml0d2lzZSBBTkQsCi0rICAgICBsb2dpY2FsIE5PVCku ICAqLwotKyAgU1RBUF9PUEVSQU5EX1BSRUNfQklUV0lTRSwKLSsKLSsgIC8qIFByZWNlZGVuY2Ug b2YgbXVsdGlwbGljYXRpdmUgb3BlcmFuZHMgKG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwKLSsg ICAgIHJlbWFpbmRlciwgbGVmdCBzaGlmdCBhbmQgcmlnaHQgc2hpZnQpLiAgKi8KLSsgIFNUQVBf T1BFUkFORF9QUkVDX01VTAotK307Ci0rCi0rLyogVGhpcyBkdW1teSB2YXJpYWJsZSBpcyB1c2Vk IHdoZW4gcGFyc2luZyBhIHByb2JlJ3MgYXJndW1lbnQgZmFpbHMuCi0rICAgSW4gdGhpcyBjYXNl LCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgdGhpcyBwcm9iZSBpcyB6ZXJvLCBzbyB0aGF0 J3MKLSsgICB3aHkgdGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwuICAqLwotKwotK3N0YXRpYyBzdHJ1 Y3Qgc3RhcF9hcmdzX2luZm8gZHVtbXlfc3RhcF9hcmdzX2luZm8gPQotKyAgeyAwLCBOVUxMLCBO VUxMIH07Ci0rCi0rc3RhdGljIHZvaWQgc3RhcF9wYXJzZV9hcmd1bWVudF8xIChzdHJ1Y3Qgc3Rh cF9wYXJzZV9pbmZvICpwLCBpbnQgaGFzX2xocywKLSsJCQkJICAgZW51bSBzdGFwX29wZXJhbmRf cHJlYyBwcmVjKTsKLSsKLStzdGF0aWMgdm9pZCBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlv bmFsbHkgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApOwotKwotKy8qIFJldHVybnMgMSBpZiAq UyBpcyBhbiBvcGVyYXRvciwgemVybyBvdGhlcndpc2UuICAqLwotKwotK3N0YXRpYyBpbnQgc3Rh cF9pc19vcGVyYXRvciAoY2hhciBvcCk7Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X3N0YXBleHBy ZXNzaW9uZGVidWcgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnBy aW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiU3lzdGVtVGFwIFByb2JlIGV4cHJlc3Npb24gZGVidWdn aW5nIGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSsvKiBSZXR1cm5zIHRoZSBv cGVyYXRvciBwcmVjZWRlbmNlIGxldmVsIG9mIE9QLCBvciBTVEFQX09QRVJBTkRfUFJFQ19OT05F Ci0rICAgaWYgdGhlIG9wZXJhdG9yIGNvZGUgd2FzIG5vdCByZWNvZ25pemVkLiAgKi8KLSsKLStz dGF0aWMgZW51bSBzdGFwX29wZXJhbmRfcHJlYwotK3N0YXBfZ2V0X29wZXJhdG9yX3ByZWMgKGVu dW0gZXhwX29wY29kZSBvcCkKLSt7Ci0rICBzd2l0Y2ggKG9wKQotKyAgICB7Ci0rICAgIGNhc2Ug QklOT1BfTE9HSUNBTF9PUjoKLSsgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTE9HSUNB TF9PUjsKLSsKLSsgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSsgICAgICByZXR1cm4gU1RB UF9PUEVSQU5EX1BSRUNfTE9HSUNBTF9BTkQ7Ci0rCi0rICAgIGNhc2UgQklOT1BfQUREOgotKyAg ICBjYXNlIEJJTk9QX1NVQjoKLSsgICAgY2FzZSBCSU5PUF9FUVVBTDoKLSsgICAgY2FzZSBCSU5P UF9OT1RFUVVBTDoKLSsgICAgY2FzZSBCSU5PUF9MRVNTOgotKyAgICBjYXNlIEJJTk9QX0xFUToK LSsgICAgY2FzZSBCSU5PUF9HVFI6Ci0rICAgIGNhc2UgQklOT1BfR0VROgotKyAgICAgIHJldHVy biBTVEFQX09QRVJBTkRfUFJFQ19BRERfQ01QOwotKwotKyAgICBjYXNlIEJJTk9QX0JJVFdJU0Vf SU9SOgotKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfQU5EOgotKyAgICBjYXNlIEJJTk9QX0JJVFdJ U0VfWE9SOgotKyAgICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6Ci0rICAgICAgcmV0dXJuIFNUQVBf T1BFUkFORF9QUkVDX0JJVFdJU0U7Ci0rCi0rICAgIGNhc2UgQklOT1BfTVVMOgotKyAgICBjYXNl IEJJTk9QX0RJVjoKLSsgICAgY2FzZSBCSU5PUF9SRU06Ci0rICAgIGNhc2UgQklOT1BfTFNIOgot KyAgICBjYXNlIEJJTk9QX1JTSDoKLSsgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTVVM OwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBTVEFQX09QRVJBTkRfUFJFQ19OT05F OwotKyAgICB9Ci0rfQotKwotKy8qIEdpdmVuIFMsIHJlYWQgdGhlIG9wZXJhdG9yIGluIGl0IGFu ZCBmaWxscyB0aGUgT1AgcG9pbnRlciB3aXRoIGl0cyBjb2RlLgotKyAgIFJldHVybiAxIG9uIHN1 Y2Nlc3MsIHplcm8gaWYgdGhlIG9wZXJhdG9yIHdhcyBub3QgcmVjb2duaXplZC4gICovCi0rCi0r c3RhdGljIGludAotK3N0YXBfZ2V0X29wY29kZSAoY29uc3QgY2hhciAqKnMsIGVudW0gZXhwX29w Y29kZSAqb3ApCi0rewotKyAgY29uc3QgY2hhciBjID0gKipzOwotKyAgaW50IHJldCA9IDE7Ci0r Ci0rICAqcyArPSAxOwotKwotKyAgc3dpdGNoIChjKQotKyAgICB7Ci0rICAgIGNhc2UgJyonOgot KyAgICAgICpvcCA9IEJJTk9QX01VTDsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLyc6 Ci0rICAgICAgKm9wID0gQklOT1BfRElWOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcl JzoKLSsgICAgICAqb3AgPSBCSU5PUF9SRU07Ci0rICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc8 JzoKLSsgICAgICAqb3AgPSBCSU5PUF9MRVNTOwotKyAgICAgIGlmICgqKnMgPT0gJzwnKQotKwl7 Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9MU0g7Ci0rCX0KLSsgICAgICBlbHNlIGlm ICgqKnMgPT0gJz0nKQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9MRVE7Ci0r CX0KLSsgICAgICBlbHNlIGlmICgqKnMgPT0gJz4nKQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAq b3AgPSBCSU5PUF9OT1RFUVVBTDsKLSsJfQotKyAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPic6 Ci0rICAgICAgKm9wID0gQklOT1BfR1RSOwotKyAgICAgIGlmICgqKnMgPT0gJz4nKQotKwl7Ci0r CSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9SU0g7Ci0rCX0KLSsgICAgICBlbHNlIGlmICgq KnMgPT0gJz0nKQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9HRVE7Ci0rCX0K LSsgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJ3wnOgotKyAgICAgICpvcCA9IEJJTk9QX0JJVFdJ U0VfSU9SOwotKyAgICAgIGlmICgqKnMgPT0gJ3wnKQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAq b3AgPSBCSU5PUF9MT0dJQ0FMX09SOwotKwl9Ci0rICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcm JzoKLSsgICAgICAqb3AgPSBCSU5PUF9CSVRXSVNFX0FORDsKLSsgICAgICBpZiAoKipzID09ICcm JykKLSsJewotKwkgICpzICs9IDE7Ci0rCSAgKm9wID0gQklOT1BfTE9HSUNBTF9BTkQ7Ci0rCX0K LSsgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJ14nOgotKyAgICAgICpvcCA9IEJJTk9QX0JJVFdJ U0VfWE9SOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICchJzoKLSsgICAgICAqb3AgPSBV Tk9QX0xPR0lDQUxfTk9UOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcrJzoKLSsgICAg ICAqb3AgPSBCSU5PUF9BREQ7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJy0nOgotKyAg ICAgICpvcCA9IEJJTk9QX1NVQjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPSc6Ci0r ICAgICAgaWYgKCoqcyAhPSAnPScpCi0rCXsKLSsJICByZXQgPSAwOwotKwkgIGJyZWFrOwotKwl9 Ci0rICAgICAgKm9wID0gQklOT1BfRVFVQUw7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGRlZmF1 bHQ6Ci0rICAgICAgLyogV2UgZGlkbid0IGZpbmQgYW55IG9wZXJhdG9yLiAgKi8KLSsgICAgICAq cyAtPSAxOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmV0OwotK30K LSsKLSsvKiBHaXZlbiB0aGUgYml0bmVzcyBvZiB0aGUgYXJndW1lbnQsIHJlcHJlc2VudGVkIGJ5 IEIsIHJldHVybiB0aGUKLSsgICBjb3JyZXNwb25kaW5nIGBzdHJ1Y3QgdHlwZSAqJy4gICovCi0r Ci0rc3RhdGljIHN0cnVjdCB0eXBlICoKLStzdGFwX2dldF9leHBlY3RlZF9hcmd1bWVudF90eXBl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJIGVudW0gc3RhcF9hcmdfYml0bmVzcyBi KQotK3sKLSsgIHN3aXRjaCAoYikKLSsgICAgewotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1Nf VU5ERUZJTkVEOgotKyAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSA9PSAzMikK LSsJcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMyOwotKyAgICAg IGVsc2UKLSsJcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0Owot KwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfU0lHTkVEOgotKyAgICAgIHJldHVy biBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDMyOwotKwotKyAgICBjYXNlIFNU QVBfQVJHX0JJVE5FU1NfMzJCSVRfVU5TSUdORUQ6Ci0rICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMyOwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5F U1NfNjRCSVRfU0lHTkVEOgotKyAgICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2ludDY0OwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdO RUQ6Ci0rICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0 OwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sCi0rCQkgICAgICBfKCJVbmRlZmluZWQgYml0bmVzcyBmb3IgcHJvYmUuIikpOwotKyAg ICAgIGJyZWFrOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wYXJzZV9yZWdp c3Rlcl9vcGVyYW5kIChzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQotK3sKLSsgIC8qIFNpbXBs ZSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgaGF2ZSBzZWVuIGEgbWludXMgc2lnbmFsIGJl Zm9yZQotKyAgICAgY2VydGFpbiBudW1iZXIuICAqLwotKyAgaW50IGdvdF9taW51cyA9IDA7Ci0r ICAvKiBGbGFncyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgYWNjZXNzIGlzIGJl aW5nIGRpc3BsYWNlZCBhbmQvb3IKLSsgICAgIGluZGlyZWN0ZWQuICAqLwotKyAgaW50IGRpc3Bf cCA9IDAsIGluZGlyZWN0X3AgPSAwOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5n ZGJhcmNoOwotKyAgLyogTmVlZGVkIHRvIGdlbmVyYXRlIHRoZSByZWdpc3RlciBuYW1lIGFzIGEg cGFydCBvZiBhbiBleHByZXNzaW9uLiAgKi8KLSsgIHN0cnVjdCBzdG9rZW4gc3RyOwotKyAgLyog VmFyaWFibGVzIHVzZWQgdG8gZXh0cmFjdCB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIHRoZSBwcm9i ZSdzCi0rICAgICBhcmd1bWVudC4gICovCi0rICBjb25zdCBjaGFyICpzdGFydDsKLSsgIGNoYXIg KnJlZ25hbWU7Ci0rICBpbnQgbGVuOwotKwotKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBwYXJzZXIu ICAqLwotKyAgY29uc3QgY2hhciAqcmVnX3ByZWZpeCA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9w cmVmaXggKGdkYmFyY2gpOwotKyAgY29uc3QgY2hhciAqcmVnX2luZF9wcmVmaXgKLSsgICAgPSBn ZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoKTsKLSsgIGNv bnN0IGNoYXIgKmdkYl9yZWdfcHJlZml4ID0gZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVm aXggKGdkYmFyY2gpOwotKyAgaW50IHJlZ19wcmVmaXhfbGVuID0gcmVnX3ByZWZpeCA/IHN0cmxl biAocmVnX3ByZWZpeCkgOiAwOwotKyAgaW50IHJlZ19pbmRfcHJlZml4X2xlbiA9IHJlZ19pbmRf cHJlZml4ID8gc3RybGVuIChyZWdfaW5kX3ByZWZpeCkgOiAwOwotKyAgaW50IGdkYl9yZWdfcHJl Zml4X2xlbiA9IGdkYl9yZWdfcHJlZml4ID8gc3RybGVuIChnZGJfcmVnX3ByZWZpeCkgOiAwOwot KwotKyAgLyogU3VmaXhlcyBmb3IgdGhlIHBhcnNlci4gICovCi0rICBjb25zdCBjaGFyICpyZWdf c3VmaXggPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKGdkYmFyY2gpOwotKyAgY29uc3Qg Y2hhciAqcmVnX2luZF9zdWZpeAotKyAgICA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9zdWZpeCAoZ2RiYXJjaCk7Ci0rICBjb25zdCBjaGFyICpnZGJfcmVnX3N1Zml4ID0gZ2Ri YXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCAoZ2RiYXJjaCk7Ci0rICBpbnQgcmVnX3N1Zml4 X2xlbiA9IHJlZ19zdWZpeCA/IHN0cmxlbiAocmVnX3N1Zml4KSA6IDA7Ci0rICBpbnQgcmVnX2lu ZF9zdWZpeF9sZW4gPSByZWdfaW5kX3N1Zml4ID8gc3RybGVuIChyZWdfaW5kX3N1Zml4KSA6IDA7 Ci0rICBpbnQgZ2RiX3JlZ19zdWZpeF9sZW4gPSBnZGJfcmVnX3N1Zml4ID8gc3RybGVuIChnZGJf cmVnX3N1Zml4KSA6IDA7Ci0rCi0rICAvKiBDaGVja2luZyBmb3IgYSBkaXNwbGFjZW1lbnQgYXJn dW1lbnQuICAqLwotKyAgaWYgKCpwLT5hcmcgPT0gJysnKQotKyAgICAvKiBJZiBpdCdzIGEgcGx1 cyBzaWduLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLCBqdXN0IGFkdmFuY2UgdGhlCi0r ICAgICAgIHBvaW50ZXIuICAqLwotKyAgICArK3AtPmFyZzsKLSsKLSsgIGlmICgqcC0+YXJnID09 ICctJykKLSsgICAgewotKyAgICAgIGdvdF9taW51cyA9IDE7Ci0rICAgICAgKytwLT5hcmc7Ci0r ICAgIH0KLSsKLSsgIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKLSsgICAgewotKyAgICAgIC8qIFRo ZSB2YWx1ZSBvZiB0aGUgZGlzcGxhY2VtZW50LiAgKi8KLSsgICAgICBsb25nIGRpc3BsYWNlbWVu dDsKLSsKLSsgICAgICBkaXNwX3AgPSAxOwotKyAgICAgIGRpc3BsYWNlbWVudCA9IHN0cnRvbCAo cC0+YXJnLCAoY2hhciAqKikgJnAtPmFyZywgMTApOwotKwotKyAgICAgIC8qIEdlbmVyYXRpbmcg dGhlIGV4cHJlc3Npb24gZm9yIHRoZSBkaXNwbGFjZW1lbnQuICAqLwotKyAgICAgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKGJ1aWx0 aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fbG9uZyk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9s b25nY3N0IChkaXNwbGFjZW1lbnQpOwotKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9M T05HKTsKLSsgICAgICBpZiAoZ290X21pbnVzKQotKwl3cml0ZV9leHBfZWx0X29wY29kZSAoVU5P UF9ORUcpOwotKyAgICB9Ci0rCi0rICAvKiBHZXR0aW5nIHJpZCBvZiByZWdpc3RlciBpbmRpcmVj dGlvbiBwcmVmaXguICAqLwotKyAgaWYgKHJlZ19pbmRfcHJlZml4Ci0rICAgICAgJiYgc3RybmNt cCAocC0+YXJnLCByZWdfaW5kX3ByZWZpeCwgcmVnX2luZF9wcmVmaXhfbGVuKSA9PSAwKQotKyAg ICB7Ci0rICAgICAgaW5kaXJlY3RfcCA9IDE7Ci0rICAgICAgcC0+YXJnICs9IHJlZ19pbmRfcHJl Zml4X2xlbjsKLSsgICAgfQotKwotKyAgaWYgKGRpc3BfcCAmJiAhaW5kaXJlY3RfcCkKLSsgICAg ZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IHN5bnRheCBvbiBleHByZXNz aW9uIGAlcycuIiksCi0rCSAgIHAtPnNhdmVkX2FyZyk7Ci0rCi0rICAvKiBHZXR0aW5nIHJpZCBv ZiByZWdpc3RlciBwcmVmaXguICAqLwotKyAgaWYgKHJlZ19wcmVmaXggJiYgc3RybmNtcCAocC0+ YXJnLCByZWdfcHJlZml4LCByZWdfcHJlZml4X2xlbikgPT0gMCkKLSsgICAgcC0+YXJnICs9IHJl Z19wcmVmaXhfbGVuOwotKwotKyAgLyogTm93IHdlIHNob3VsZCBoYXZlIG9ubHkgdGhlIHJlZ2lz dGVyIG5hbWUuICBMZXQncyBleHRyYWN0IGl0IGFuZCBnZXQKLSsgICAgIHRoZSBhc3NvY2lhdGVk IG51bWJlci4gICovCi0rICBzdGFydCA9IHAtPmFyZzsKLSsKLSsgIC8qIFdlIGFzc3VtZSB0aGUg cmVnaXN0ZXIgbmFtZSBpcyBjb21wb3NlZCBieSBsZXR0ZXJzIGFuZCBudW1iZXJzLiAgKi8KLSsg IHdoaWxlIChpc2FsbnVtICgqcC0+YXJnKSkKLSsgICAgKytwLT5hcmc7Ci0rCi0rICBsZW4gPSBw LT5hcmcgLSBzdGFydDsKLSsKLSsgIHJlZ25hbWUgPSBhbGxvY2EgKGxlbiArIGdkYl9yZWdfcHJl Zml4X2xlbiArIGdkYl9yZWdfc3VmaXhfbGVuICsgMSk7Ci0rICByZWduYW1lWzBdID0gJ1wwJzsK LSsKLSsgIC8qIFdlIG9ubHkgYWRkIHRoZSBHREIncyByZWdpc3RlciBwcmVmaXgvc3VmaXggaWYg d2UgYXJlIGRlYWxpbmcgd2l0aAotKyAgICAgYSBudW1lcmljIHJlZ2lzdGVyLiAgKi8KLSsgIGlm IChnZGJfcmVnX3ByZWZpeCAmJiBpc2RpZ2l0ICgqc3RhcnQpKQotKyAgICB7Ci0rICAgICAgc3Ry bmNweSAocmVnbmFtZSwgZ2RiX3JlZ19wcmVmaXgsIGdkYl9yZWdfcHJlZml4X2xlbik7Ci0rICAg ICAgc3RybmNweSAocmVnbmFtZSArIGdkYl9yZWdfcHJlZml4X2xlbiwgc3RhcnQsIGxlbik7Ci0r Ci0rICAgICAgaWYgKGdkYl9yZWdfc3VmaXgpCi0rCXN0cm5jcHkgKHJlZ25hbWUgKyBnZGJfcmVn X3ByZWZpeF9sZW4gKyBsZW4sCi0rCQkgZ2RiX3JlZ19zdWZpeCwgZ2RiX3JlZ19zdWZpeF9sZW4p OwotKwotKyAgICAgIGxlbiArPSBnZGJfcmVnX3ByZWZpeF9sZW4gKyBnZGJfcmVnX3N1Zml4X2xl bjsKLSsgICAgfQotKyAgZWxzZQotKyAgICBzdHJuY3B5IChyZWduYW1lLCBzdGFydCwgbGVuKTsK LSsKLSsgIHJlZ25hbWVbbGVuXSA9ICdcMCc7Ci0rICAvKiBJcyB0aGlzIGEgdmFsaWQgcmVnaXN0 ZXIgbmFtZT8gICovCi0rICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNo LCByZWduYW1lLCBsZW4pID09IC0xKQotKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBu YW1lIGAlcycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICByZWduYW1lLCBwLT5zYXZlZF9h cmcpOwotKwotKyAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKLSsgIHN0ci5w dHIgPSByZWduYW1lOwotKyAgc3RyLmxlbmd0aCA9IGxlbjsKLSsgIHdyaXRlX2V4cF9zdHJpbmcg KHN0cik7Ci0rICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOwotKwotKyAgaWYg KGluZGlyZWN0X3ApCi0rICAgIHsKLSsgICAgICBpZiAoZGlzcF9wKQotKwl3cml0ZV9leHBfZWx0 X29wY29kZSAoQklOT1BfQUREKTsKLSsKLSsgICAgICAvKiBDYXN0aW5nIHRvIHRoZSBleHBlY3Rl ZCB0eXBlLiAgKi8KLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsg ICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHAtPmFyZ190eXBl KSk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7Ci0rCi0rICAgICAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfSU5EKTsKLSsgICAgfQotKwotKyAgLyogR2V0dGlu ZyByaWQgb2YgdGhlIHJlZ2lzdGVyIG5hbWUgc3VmaXguICAqLwotKyAgaWYgKHJlZ19zdWZpeCkK LSsgICAgewotKyAgICAgIGlmIChzdHJuY21wIChwLT5hcmcsIHJlZ19zdWZpeCwgcmVnX3N1Zml4 X2xlbikgIT0gMCkKLSsJZXJyb3IgKF8oIk1pc3NpbmcgcmVnaXN0ZXIgbmFtZSBzdWZpeCBgJXMn IG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJICAgICAgIHJlZ19zdWZpeCwgcC0+c2F2ZWRfYXJn KTsKLSsKLSsgICAgICBwLT5hcmcgKz0gcmVnX3N1Zml4X2xlbjsKLSsgICAgfQotKwotKyAgLyog R2V0dGluZyByaWQgb2YgdGhlIHJlZ2lzdGVyIGluZGlyZWN0aW9uIHN1Zml4LiAgKi8KLSsgIGlm IChpbmRpcmVjdF9wICYmIHJlZ19pbmRfc3VmaXgpCi0rICAgIHsKLSsgICAgICBpZiAoc3RybmNt cCAocC0+YXJnLCByZWdfaW5kX3N1Zml4LCByZWdfaW5kX3N1Zml4X2xlbikgIT0gMCkKLSsJZXJy b3IgKF8oIk1pc3NpbmcgaW5kaXJlY3Rpb24gc3VmaXggYCVzJyBvbiBleHByZXNzaW9uIGAlcycu IiksCi0rCSAgICAgICByZWdfaW5kX3N1Zml4LCBwLT5zYXZlZF9hcmcpOwotKwotKyAgICAgIHAt PmFyZyArPSByZWdfaW5kX3N1Zml4X2xlbjsKLSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZAot K3N0YXBfcGFyc2Vfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0r ewotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5nZGJhcmNoOwotKyAgLyogUHJlZml4 ZXMgZm9yIHRoZSBwYXJzZXIuICAqLwotKyAgY29uc3QgY2hhciAqY29uc3RfcHJlZml4ID0gZ2Ri YXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChnZGJhcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ19w cmVmaXggPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4IChnZGJhcmNoKTsKLSsgIGNvbnN0 IGNoYXIgKnJlZ19pbmRfcHJlZml4Ci0rICAgID0gZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGly ZWN0aW9uX3ByZWZpeCAoZ2RiYXJjaCk7Ci0rICBpbnQgY29uc3RfcHJlZml4X2xlbiA9IGNvbnN0 X3ByZWZpeCA/IHN0cmxlbiAoY29uc3RfcHJlZml4KSA6IDA7Ci0rICBpbnQgcmVnX3ByZWZpeF9s ZW4gPSByZWdfcHJlZml4ID8gc3RybGVuIChyZWdfcHJlZml4KSA6IDA7Ci0rICBpbnQgcmVnX2lu ZF9wcmVmaXhfbGVuID0gcmVnX2luZF9wcmVmaXggPyBzdHJsZW4gKHJlZ19pbmRfcHJlZml4KSA6 IDA7Ci0rCi0rICAvKiBTdWZpeGVzIGZvciB0aGUgcGFyc2VyLiAgKi8KLSsgIGNvbnN0IGNoYXIg KmNvbnN0X3N1Zml4ID0gZ2RiYXJjaF9zdGFwX2ludGVnZXJfc3VmaXggKGdkYmFyY2gpOwotKyAg Y29uc3QgY2hhciAqcmVnX3N1Zml4ID0gZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChnZGJh cmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ19pbmRfc3VmaXgKLSsgICAgPSBnZGJhcmNoX3N0YXBf cmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKGdkYmFyY2gpOwotKyAgaW50IGNvbnN0X3N1Zml4 X2xlbiA9IGNvbnN0X3N1Zml4ID8gc3RybGVuIChjb25zdF9zdWZpeCkgOiAwOwotKyAgaW50IHJl Z19zdWZpeF9sZW4gPSByZWdfc3VmaXggPyBzdHJsZW4gKHJlZ19zdWZpeCkgOiAwOwotKyAgaW50 IHJlZ19pbmRfc3VmaXhfbGVuID0gcmVnX2luZF9zdWZpeCA/IHN0cmxlbiAocmVnX2luZF9zdWZp eCkgOiAwOwotKwotKyAgLyogV2UgZmlyc3QgdHJ5IHRvIHBhcnNlIHRoaXMgdG9rZW4gYXMgYSAi c3BlY2lhbCB0b2tlbiIuICAqLwotKyAgaWYgKGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rv a2VuX3AgKGdkYmFyY2gpKQotKyAgICB7Ci0rICAgICAgaW50IHJldCA9IGdkYmFyY2hfc3RhcF9w YXJzZV9zcGVjaWFsX3Rva2VuIChnZGJhcmNoLCBwKTsKLSsKLSsgICAgICBpZiAocmV0KQotKwkv KiBJZiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBhYm92ZSBmdW5jdGlvbiBpcyBub3QgemVybywK LSsJICAgaXQgbWVhbnMgaXQgc3VjY2Vzc2Z1bGx5IHBhcnNlZCB0aGUgc3BlY2lhbCB0b2tlbi4K LSsKLSsJICAgSWYgaXQgaXMgTlVMTCwgd2UgdHJ5IHRvIHBhcnNlIGl0IHVzaW5nIG91ciBtZXRo b2QuICAqLwotKwlyZXR1cm47Ci0rICAgIH0KLSsKLSsgIGlmICgqcC0+YXJnID09ICctJyB8fCAq cC0+YXJnID09ICd+JyB8fCAqcC0+YXJnID09ICcrJykKLSsgICAgewotKyAgICAgIGNoYXIgYyA9 ICpwLT5hcmc7Ci0rICAgICAgLyogV2UgdXNlIHRoaXMgdmFyaWFibGUgdG8gZG8gYSBsb29rYWhl YWQuICAqLwotKyAgICAgIGNvbnN0IGNoYXIgKnRtcCA9IHAtPmFyZzsKLSsKLSsgICAgICArK3Rt cDsKLSsKLSsgICAgICAvKiBUaGlzIGlzIGFuIHVuYXJ5IG9wZXJhdGlvbi4gIEhlcmUgaXMgYSBs aXN0IG9mIGFsbG93ZWQgdG9rZW5zCi0rCSBoZXJlOgotKwotKwkgLSBudW1lcmljIGxpdGVyYWw7 Ci0rCSAtIG51bWJlciAoZnJvbSByZWdpc3RlciBkaXNwbGFjZW1lbnQpCi0rCSAtIHN1YmV4cHJl c3Npb24gKGJlZ2lubmluZyB3aXRoIGAoJykKLSsKLSsJIFdlIGhhbmRsZSB0aGUgcmVnaXN0ZXIg ZGlzcGxhY2VtZW50IGhlcmUsIGFuZCB0aGUgb3RoZXIgY2FzZXMKLSsJIHJlY3Vyc2l2ZWx5LiAg Ki8KLSsgICAgICBpZiAoaXNkaWdpdCAoKnRtcCkpCi0rCXsKLSsJICBpbnQgbnVtYmVyID0gc3Ry dG9sICh0bXAsIChjaGFyICoqKSAmdG1wLCAxMCk7Ci0rCi0rCSAgaWYgKHAtPmluc2lkZV9wYXJl bl9wKQotKwkgICAgdG1wID0gc2tpcF9zcGFjZXNfY29uc3QgKHRtcCk7Ci0rCSAgaWYgKCFyZWdf aW5kX3ByZWZpeAotKwkgICAgICB8fCBzdHJuY21wICh0bXAsIHJlZ19pbmRfcHJlZml4LCByZWdf aW5kX3ByZWZpeF9sZW4pICE9IDApCi0rCSAgICBnb3RvIG5vdF9kaXNwbGFjZW1lbnQ7Ci0rCi0r CSAgLyogSWYgd2UgYXJlIGhlcmUsIGl0IG1lYW5zIGl0IGlzIGEgZGlzcGxhY2VtZW50LiAgVGhl IG9ubHkKLSsJICAgICBvcGVyYXRpb25zIGFsbG93ZWQgaGVyZSBhcmUgYC0nIGFuZCBgKycuICAq LwotKwkgIGlmIChjID09ICd+JykKLSsJICAgIGVycm9yIChfKCJJbnZhbGlkIG9wZXJhdG9yIGAl YycgZm9yIHJlZ2lzdGVyIGRpc3BsYWNlbWVudCAiCi0rCQkgICAgICJvbiBleHByZXNzaW9uIGAl cycuIiksIGMsIHAtPnNhdmVkX2FyZyk7Ci0rCi0rCSAgc3RhcF9wYXJzZV9yZWdpc3Rlcl9vcGVy YW5kIChwKTsKLSsJfQotKyAgICAgIGVsc2UKLStub3RfZGlzcGxhY2VtZW50OgotKwl7Ci0rCSAg cC0+YXJnID0gdG1wOwotKwkgIHN0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxseSAocCk7 Ci0rCSAgaWYgKGMgPT0gJy0nKQotKwkgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVH KTsKLSsJICBlbHNlIGlmIChjID09ICd+JykKLSsJICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChV Tk9QX0NPTVBMRU1FTlQpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGlzZGlnaXQgKCpwLT5h cmcpKQotKyAgICB7Ci0rICAgICAgLyogQSB0ZW1wb3JhcnkgdmFyaWFibGUsIG5lZWRlZCBmb3Ig bG9va2FoZWFkLiAgKi8KLSsgICAgICBjb25zdCBjaGFyICp0bXAgPSBwLT5hcmc7Ci0rICAgICAg bG9uZyBudW1iZXI7Ci0rCi0rICAgICAgLyogV2UgY2FuIGJlIGRlYWxpbmcgd2l0aCBhIG51bWVy aWMgY29uc3RhbnQgKGlmIGBjb25zdF9wcmVmaXgnIGlzCi0rCSBOVUxMKSwgb3Igd2l0aCBhIHJl Z2lzdGVyIGRpc3BsYWNlbWVudC4gICovCi0rICAgICAgbnVtYmVyID0gc3RydG9sICh0bXAsIChj aGFyICoqKSAmdG1wLCAxMCk7Ci0rCi0rICAgICAgaWYgKHAtPmluc2lkZV9wYXJlbl9wKQotKwl0 bXAgPSBza2lwX3NwYWNlc19jb25zdCAodG1wKTsKLSsgICAgICBpZiAoIWNvbnN0X3ByZWZpeCAm JiByZWdfaW5kX3ByZWZpeAotKwkgICYmIHN0cm5jbXAgKHRtcCwgcmVnX2luZF9wcmVmaXgsIHJl Z19pbmRfcHJlZml4X2xlbikgIT0gMCkKLSsJewotKwkgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGgg YSBudW1lcmljIGNvbnN0YW50LiAgKi8KLSsJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9O Ryk7Ci0rCSAgd3JpdGVfZXhwX2VsdF90eXBlIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWls dGluX2xvbmcpOwotKwkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAobnVtYmVyKTsKLSsJICB3cml0 ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Ci0rCi0rCSAgcC0+YXJnID0gdG1wOwotKwotKwkg IGlmIChjb25zdF9zdWZpeCkKLSsJICAgIHsKLSsJICAgICAgaWYgKHN0cm5jbXAgKHAtPmFyZywg Y29uc3Rfc3VmaXgsIGNvbnN0X3N1Zml4X2xlbikgPT0gMCkKLSsJCXAtPmFyZyArPSBjb25zdF9z dWZpeF9sZW47Ci0rCSAgICAgIGVsc2UKLSsJCWVycm9yIChfKCJJbnZhbGlkIGNvbnN0YW50IHN1 Zml4IG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJCSAgICAgICBwLT5zYXZlZF9hcmcpOwotKwkg ICAgfQotKwl9Ci0rICAgICAgZWxzZSBpZiAocmVnX2luZF9wcmVmaXgKLSsJICAgICAgICYmIHN0 cm5jbXAgKHRtcCwgcmVnX2luZF9wcmVmaXgsIHJlZ19pbmRfcHJlZml4X2xlbikgPT0gMCkKLSsJ c3RhcF9wYXJzZV9yZWdpc3Rlcl9vcGVyYW5kIChwKTsKLSsgICAgICBlbHNlCi0rCWVycm9yIChf KCJVbmtub3duIG51bWVyaWMgdG9rZW4gb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAg cC0+c2F2ZWRfYXJnKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoY29uc3RfcHJlZml4Ci0rCSAgICYm IHN0cm5jbXAgKHAtPmFyZywgY29uc3RfcHJlZml4LCBjb25zdF9wcmVmaXhfbGVuKSA9PSAwKQot KyAgICB7Ci0rICAgICAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCBhIG51bWVyaWMgY29uc3RhbnQu ICAqLwotKyAgICAgIGxvbmcgbnVtYmVyOwotKwotKyAgICAgIHAtPmFyZyArPSBjb25zdF9wcmVm aXhfbGVuOwotKyAgICAgIG51bWJlciA9IHN0cnRvbCAocC0+YXJnLCAoY2hhciAqKikgJnAtPmFy ZywgMTApOwotKwotKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsgICAg ICB3cml0ZV9leHBfZWx0X3R5cGUgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fbG9u Zyk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChudW1iZXIpOwotKyAgICAgIHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsKLSsgICAgICBpZiAoY29uc3Rfc3VmaXgpCi0r CXsKLSsJICBpZiAoc3RybmNtcCAocC0+YXJnLCBjb25zdF9zdWZpeCwgY29uc3Rfc3VmaXhfbGVu KSA9PSAwKQotKwkgICAgcC0+YXJnICs9IGNvbnN0X3N1Zml4X2xlbjsKLSsJICBlbHNlCi0rCSAg ICBlcnJvciAoXygiSW52YWxpZCBjb25zdGFudCBzdWZpeCBvbiBleHByZXNzaW9uIGAlcycuIiks Ci0rCQkgICBwLT5zYXZlZF9hcmcpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKChyZWdfcHJl Zml4Ci0rCSAgICAmJiBzdHJuY21wIChwLT5hcmcsIHJlZ19wcmVmaXgsIHJlZ19wcmVmaXhfbGVu KSA9PSAwKQotKwkgICB8fCAocmVnX2luZF9wcmVmaXgKLSsJICAgICAgICYmIHN0cm5jbXAgKHAt PmFyZywgcmVnX2luZF9wcmVmaXgsIHJlZ19pbmRfcHJlZml4X2xlbikgPT0gMCkpCi0rICAgIHN0 YXBfcGFyc2VfcmVnaXN0ZXJfb3BlcmFuZCAocCk7Ci0rICBlbHNlCi0rICAgIGVycm9yIChfKCJP cGVyYXRvciBgJWMnIG5vdCByZWNvZ25pemVkIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJICAg KnAtPmFyZywgcC0+c2F2ZWRfYXJnKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzdGFwX3BhcnNl X2FyZ3VtZW50X2NvbmRpdGlvbmFsbHkgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewot KyAgaWYgKCpwLT5hcmcgPT0gJy0nIHx8ICpwLT5hcmcgPT0gJ34nIHx8ICpwLT5hcmcgPT0gJysn IC8qIFVuYXJ5LiAgKi8KLSsgICAgICB8fCBpc2RpZ2l0ICgqcC0+YXJnKQotKyAgICAgIHx8IGdk YmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAocC0+Z2RiYXJjaCwgcC0+YXJnKSkKLSsgICAg c3RhcF9wYXJzZV9zaW5nbGVfb3BlcmFuZCAocCk7Ci0rICBlbHNlIGlmICgqcC0+YXJnID09ICco JykKLSsgICAgewotKyAgICAgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGggYSBwYXJlbnRoZXNpemVk IG9wZXJhbmQuICBJdCBtZWFucyB3ZQotKwkgaGF2ZSB0byBwYXJzZSBpdCBhcyBpdCB3YXMgYSBz ZXBhcmF0ZSBleHByZXNzaW9uLCB3aXRob3V0Ci0rCSBsZWZ0LXNpZGUgb3IgcHJlY2VkZW5jZS4g ICovCi0rICAgICAgKytwLT5hcmc7Ci0rICAgICAgcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3Qg KHAtPmFyZyk7Ci0rICAgICAgKytwLT5pbnNpZGVfcGFyZW5fcDsKLSsKLSsgICAgICBzdGFwX3Bh cnNlX2FyZ3VtZW50XzEgKHAsIDAsIFNUQVBfT1BFUkFORF9QUkVDX05PTkUpOwotKwotKyAgICAg IC0tcC0+aW5zaWRlX3BhcmVuX3A7Ci0rICAgICAgaWYgKCpwLT5hcmcgIT0gJyknKQotKwllcnJv ciAoXygiTWlzc2lnbiBjbG9zZS1wYXJlbiBvbiBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgICAg ICBwLT5zYXZlZF9hcmcpOwotKwotKyAgICAgICsrcC0+YXJnOwotKyAgICAgIGlmIChwLT5pbnNp ZGVfcGFyZW5fcCkKLSsJcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7Ci0rICAg IH0KLSsgIGVsc2UKLSsgICAgZXJyb3IgKF8oIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGAlcycu IiksIHAtPnNhdmVkX2FyZyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wYXJzZV9hcmd1 bWVudF8xIChzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwLCBpbnQgaGFzX2xocywKLSsJCSAgICAg ICBlbnVtIHN0YXBfb3BlcmFuZF9wcmVjIHByZWMpCi0rewotKyAgLyogVGhpcyBpcyBhbiBvcGVy YXRvci1wcmVjZWRlbmNlIHBhcnNlci4KLSsKLSsgICAgIFdlIHdvcmsgd2l0aCBsZWZ0LSBhbmQg cmlnaHQtc2lkZXMgb2YgZXhwcmVzc2lvbnMsIGFuZAotKyAgICAgcGFyc2UgdGhlbSBkZXBlbmRp bmcgb24gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9ycwotKyAgICAgd2UgZmluZC4gICov Ci0rCi0rICBpZiAocC0+aW5zaWRlX3BhcmVuX3ApCi0rICAgIHAtPmFyZyA9IHNraXBfc3BhY2Vz X2NvbnN0IChwLT5hcmcpOwotKwotKyAgaWYgKCFoYXNfbGhzKQotKyAgICAvKiBXZSB3ZXJlIGNh bGxlZCB3aXRob3V0IGEgbGVmdC1zaWRlLCBlaXRoZXIgYmVjYXVzZSB0aGlzIGlzIHRoZQotKyAg ICAgICBmaXJzdCBjYWxsLCBvciBiZWNhdXNlIHdlIHdlcmUgY2FsbGVkIHRvIHBhcnNlIGEgcGFy ZW50aGVzaXplZAotKyAgICAgICBleHByZXNzaW9uLiAgSXQgZG9lc24ndCByZWFsbHkgbWF0dGVy OyB3ZSBoYXZlIHRvIHBhcnNlIHRoZQotKyAgICAgICBsZWZ0LXNpZGUgaW4gb3JkZXIgdG8gY29u dGludWUgdGhlIHByb2Nlc3MuICAqLwotKyAgICBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlv bmFsbHkgKHApOwotKwotKyAgLyogU3RhcnQgdG8gcGFyc2UgdGhlIHJpZ2h0LXNpZGUsIGFuZCB0 byAiam9pbiIgbGVmdCBhbmQgcmlnaHQgc2lkZXMKLSsgICAgIGRlcGVuZGluZyBvbiB0aGUgb3Bl cmF0aW9uIHNwZWNpZmllZC4KLSsKLSsgICAgIFRoaXMgbG9vcCBzaGFsbCBjb250aW51ZSB1bnRp bCB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0LAotKyAgICAgb3IgdW50aWwg d2UgZmluZCBhIGNsb3NlLXBhcmVudGhlc2lzLCB3aGljaCBtZWFucyB0aGF0IHdlJ3ZlIHJlYWNo ZWQKLSsgICAgIHRoZSBlbmQgb2YgYSBzdWItZXhwcmVzc2lvbi4gICovCi0rICB3aGlsZSAocC0+ YXJnICYmICpwLT5hcmcgJiYgKnAtPmFyZyAhPSAnKScgJiYgIWlzc3BhY2UgKCpwLT5hcmcpKQot KyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqdG1wX2V4cF9idWY7Ci0rICAgICAgZW51bSBleHBf b3Bjb2RlIG9wY29kZTsKLSsgICAgICBlbnVtIHN0YXBfb3BlcmFuZF9wcmVjIGN1cl9wcmVjOwot KwotKyAgICAgIGlmICghc3RhcF9pc19vcGVyYXRvciAoKnAtPmFyZykpCi0rCWVycm9yIChfKCJJ bnZhbGlkIG9wZXJhdG9yIGAlYycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLCAqcC0+YXJnLAotKwkg ICAgICAgcC0+c2F2ZWRfYXJnKTsKLSsKLSsgICAgICAvKiBXZSBoYXZlIHRvIHNhdmUgdGhlIGN1 cnJlbnQgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gYnVmZmVyIGJlY2F1c2UKLSsJIHRoZSBgc3Rh cF9nZXRfb3Bjb2RlJyBtb2RpZmllcyBpdCBpbiBvcmRlciB0byBnZXQgdGhlIGN1cnJlbnQKLSsJ IG9wZXJhdG9yLiAgSWYgdGhpcyBvcGVyYXRvcidzIHByZWNlZGVuY2UgaXMgbG93ZXIgdGhhbiBQ UkVDLCB3ZQotKwkgc2hvdWxkIHJldHVybiBhbmQgbm90IGFkdmFuY2UgdGhlIGV4cHJlc3Npb24g YnVmZmVyIHBvaW50ZXIuICAqLwotKyAgICAgIHRtcF9leHBfYnVmID0gcC0+YXJnOwotKyAgICAg IHN0YXBfZ2V0X29wY29kZSAoJnRtcF9leHBfYnVmLCAmb3Bjb2RlKTsKLSsKLSsgICAgICBjdXJf cHJlYyA9IHN0YXBfZ2V0X29wZXJhdG9yX3ByZWMgKG9wY29kZSk7Ci0rICAgICAgaWYgKGN1cl9w cmVjIDwgcHJlYykKLSsJLyogSWYgdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9yIHRoYXQg d2UgYXJlIHNlZWluZyBub3cgaXMKLSsJICAgbG93ZXIgdGhhbiB0aGUgcHJlY2VkZW5jZSBvZiB0 aGUgZmlyc3Qgb3BlcmF0b3Igc2VlbiBiZWZvcmUKLSsJICAgdGhpcyBwYXJzaW5nIHByb2Nlc3Mg YmVnYW4sIGl0IG1lYW5zIHdlIHNob3VsZCBzdG9wIHBhcnNpbmcKLSsJICAgYW5kIHJldHVybi4g ICovCi0rCWJyZWFrOwotKwotKyAgICAgIHAtPmFyZyA9IHRtcF9leHBfYnVmOwotKyAgICAgIGlm IChwLT5pbnNpZGVfcGFyZW5fcCkKLSsJcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFy Zyk7Ci0rCi0rICAgICAgLyogUGFyc2UgdGhlIHJpZ2h0LXNpZGUgb2YgdGhlIGV4cHJlc3Npb24u ICAqLwotKyAgICAgIHN0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxseSAocCk7Ci0rCi0r ICAgICAgLyogV2hpbGUgd2Ugc3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBwYXJzZSBhbm90 aGVyCi0rCSByaWdodC1zaWRlLCBidXQgdXNpbmcgdGhlIGN1cnJlbnQgcmlnaHQtc2lkZSBhcyBh IGxlZnQtc2lkZS4gICovCi0rICAgICAgd2hpbGUgKCpwLT5hcmcgJiYgc3RhcF9pc19vcGVyYXRv ciAoKnAtPmFyZykpCi0rCXsKLSsJICBlbnVtIGV4cF9vcGNvZGUgbG9va2FoZWFkX29wY29kZTsK LSsJICBlbnVtIHN0YXBfb3BlcmFuZF9wcmVjIGxvb2thaGVhZF9wcmVjOwotKwotKwkgIC8qIFNh dmluZyB0aGUgY3VycmVudCBleHByZXNzaW9uIGJ1ZmZlciBwb3NpdGlvbi4gIFRoZSBleHBsYW5h dGlvbgotKwkgICAgIGlzIHRoZSBzYW1lIGFzIGFib3ZlLiAgKi8KLSsJICB0bXBfZXhwX2J1ZiA9 IHAtPmFyZzsKLSsJICBzdGFwX2dldF9vcGNvZGUgKCZ0bXBfZXhwX2J1ZiwgJmxvb2thaGVhZF9v cGNvZGUpOwotKwkgIGxvb2thaGVhZF9wcmVjID0gc3RhcF9nZXRfb3BlcmF0b3JfcHJlYyAobG9v a2FoZWFkX29wY29kZSk7Ci0rCi0rCSAgaWYgKGxvb2thaGVhZF9wcmVjIDw9IHByZWMpCi0rCSAg ICAvKiBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGFuIG9wZXJhdG9yIHdob3NlIHByZWNlZGVuY2Ug aXMgbG93ZXIKLSsJICAgICAgIHRoYW4gdGhlIGZpcnN0IG9uZSwganVzdCBhYmFuZG9uIHRoZSBh dHRlbXB0LiAgKi8KLSsJICAgIGJyZWFrOwotKwotKwkgIC8qIFBhcnNlIHRoZSByaWdodC1zaWRl IG9mIHRoZSBleHByZXNzaW9uLCBidXQgc2luY2Ugd2UgYWxyZWFkeQotKwkgICAgIGhhdmUgYSBs ZWZ0LXNpZGUgYXQgdGhpcyBwb2ludCwgc2V0IGBoYXNfbGhzJyB0byAxLiAgKi8KLSsJICBzdGFw X3BhcnNlX2FyZ3VtZW50XzEgKHAsIDEsIGxvb2thaGVhZF9wcmVjKTsKLSsJfQotKwotKyAgICAg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChvcGNvZGUpOwotKyAgICB9Ci0rfQotKwotKy8qIFBhcnNl IGEgcHJvYmUncyBhcmd1bWVudC4KLSsKLSsgICBBc3N1bWluZyB0aGF0OgotKwotKyAgIExQID0g bGl0ZXJhbCBpbnRlZ2VyIHByZWZpeAotKyAgIExTID0gbGl0ZXJhbCBpbnRlZ2VyIHN1Zml4Ci0r Ci0rICAgUlAgPSByZWdpc3RlciBwcmVmaXgKLSsgICBSUyA9IHJlZ2lzdGVyIHN1Zml4Ci0rCi0r ICAgUklQID0gcmVnaXN0ZXIgaW5kaXJlY3Rpb24gcHJlZml4Ci0rICAgUklTID0gcmVnaXN0ZXIg aW5kaXJlY3Rpb24gc3VmaXgKLSsKLSsgICBUaGlzIHJvdXRpbmUgYXNzdW1lcyB0aGF0IGFyZ3Vt ZW50cycgdG9rZW5zIGFyZSBvZiB0aGUgZm9ybToKLSsKLSsgICAtIFtMUF0gTlVNQkVSIFtMU10K LSsgICAtIFtSUF0gUkVHSVNURVIgW1JTXQotKyAgIC0gW1JJUF0gW1JQXSBSRUdJU1RFUiBbUlNd IFtSSVNdCi0rICAgLSBJZiB3ZSBmaW5kIGEgbnVtYmVyIHdpdGhvdXQgTFAsIHdlIHRyeSB0byBw YXJzZSBpdCBhcyBhIGxpdGVyYWwgaW50ZWdlcgotKyAgIGNvbnN0YW50IChpZiBMUCA9PSBOVUxM KSwgb3IgYXMgYSByZWdpc3RlciBkaXNwbGFjZW1lbnQuCi0rICAgLSBXZSBjb3VudCBwYXJlbnRo ZXNpcywgYW5kIG9ubHkgc2tpcCB3aGl0ZXNwYWNlcyBpZiB3ZSBhcmUgaW5zaWRlIHRoZW0uCi0r ICAgLSBJZiB3ZSBmaW5kIGFuIG9wZXJhdG9yLCB3ZSBza2lwIGl0LgotKwotKyAgIFRoaXMgZnVu Y3Rpb24gY2FuIGFsc28gY2FsbCBhIHNwZWNpYWwgZnVuY3Rpb24gdGhhdCB3aWxsIHRyeSB0byBt YXRjaAotKyAgIHVua25vd24gdG9rZW5zLiAgSXQgd2lsbCByZXR1cm4gMSBpZiB0aGUgYXJndW1l bnQgaGFzIGJlZW4gcGFyc2VkCi0rICAgc3VjY2Vzc2Z1bGx5LCBvciB6ZXJvIG90aGVyd2lzZS4g ICovCi0rCi0rc3RhdGljIGludAotK3N0YXBfcGFyc2VfYXJndW1lbnQgKGNvbnN0IGNoYXIgKiph cmcsIHN0cnVjdCB0eXBlICphdHlwZSwKLSsJCSAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Ci0rewotKyAgc3RydWN0IHN0YXBfcGFyc2VfaW5mbyBwOwotKyAgdm9sYXRpbGUgc3RydWN0IGdk Yl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIFdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZXhwcmVz c2lvbiBidWZmZXIsIGluIG9yZGVyIHRvIGJlZ2luCi0rICAgICBvdXIgcGFyc2luZyBlZmZvcnRz LiAgVGhlIGxhbmd1YWdlIGhlcmUgZG9lcyBub3QgbWF0dGVyLCBzaW5jZSB3ZQotKyAgICAgYXJl IHVzaW5nIG91ciBvd24gcGFyc2VyLiAgKi8KLSsgIGluaXRpYWxpemVfZXhwb3V0ICgxMCwgY3Vy cmVudF9sYW5ndWFnZSwgZ2RiYXJjaCk7Ci0rCi0rICBwLnNhdmVkX2FyZyA9ICphcmc7Ci0rICBw LmFyZyA9ICphcmc7Ci0rICBwLmFyZ190eXBlID0gYXR5cGU7Ci0rICBwLmdkYmFyY2ggPSBnZGJh cmNoOwotKyAgcC5pbnNpZGVfcGFyZW5fcCA9IDA7Ci0rCi0rICBUUllfQ0FUQ0ggKGUsIFJFVFVS Tl9NQVNLX0VSUk9SKQotKyAgICB7Ci0rICAgICAgc3RhcF9wYXJzZV9hcmd1bWVudF8xICgmcCwg MCwgU1RBUF9PUEVSQU5EX1BSRUNfTk9ORSk7Ci0rICAgIH0KLSsgIGlmIChlLnJlYXNvbiA8IDAp Ci0rICAgIHsKLSsgICAgICB4ZnJlZSAoZXhwb3V0KTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAg fQotKwotKyAgZ2RiX2Fzc2VydCAocC5pbnNpZGVfcGFyZW5fcCA9PSAwKTsKLSsKLSsgIC8qIENh c3RpbmcgdGhlIGZpbmFsIGV4cHJlc3Npb24gdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUuICAqLwot KyAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7Ci0rICB3cml0ZV9leHBfZWx0X3R5 cGUgKGF0eXBlKTsKLSsgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1QpOwotKwotKyAg cmVhbGxvY2F0ZV9leHBvdXQgKCk7Ci0rCi0rICBwLmFyZyA9IHNraXBfc3BhY2VzX2NvbnN0IChw LmFyZyk7Ci0rICAqYXJnID0gcC5hcmc7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogSGVs cGVyIGZ1bmN0aW9uIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBzcGFjZSBh bGxvY2F0ZWQgdG8KLSsgICBob2xkIGluZm9ybWF0aW9uIGFib3V0IGEgcHJvYmUncyBhcmd1bWVu dHMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9mcmVlX2FyZ3NfaW5mbyAodm9pZCAqYXJn c19pbmZvX3B0cikKLSt7Ci0rICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKmEgPSAoc3RydWN0IHN0 YXBfYXJnc19pbmZvICopIGFyZ3NfaW5mb19wdHI7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9 IDA7IGkgPCBhLT5uX2FyZ3M7IGkrKykKLSsgICAgeGZyZWUgKGEtPmFyZ3NbaV0uYWV4cHIpOwot KwotKyAgeGZyZWUgKGEtPmFyZ3MpOwotKyAgeGZyZWUgKGEpOwotK30KLSsKLSsvKiBGdW5jdGlv biB3aGljaCBwYXJzZXMgYW4gYXJndW1lbnQgc3RyaW5nIGZyb20gUFJPQkUsIGNvcnJlY3RseSBz cGxpdHRpbmcKLSsgICB0aGUgYXJndW1lbnRzIGFuZCBzdG9yaW5nIHRoZWlyIGluZm9ybWF0aW9u IGluIHByb3Blcmx5IHdheXMuCi0rCi0rICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBhcmd1bWVu dCBzdHJpbmcgKHg4NiBzeW50YXgpOgotKwotKyAgIGA0QCVlYXggNEAkMTAnCi0rCi0rICAgV2Ug aGF2ZSB0d28gYXJndW1lbnRzLCBgJWVheCcgYW5kIGAkMTAnLCBib3RoIHdpdGggMzItYml0IHVu c2lnbmVkIGJpdG5lc3MuCi0rICAgVGhpcyBmdW5jdGlvbiBiYXNpY2FsbHkgaGFuZGxlcyB0aGVt LCBwcm9wZXJseSBmaWxsaW5nIHNvbWUgc3RydWN0dXJlcyB3aXRoCi0rICAgdGhpcyBpbmZvcm1h dGlvbi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAo c3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQotK3sKLSsgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAq YXJnc19pbmZvOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rICBjb25zdCBjaGFyICpj dXIgPSBwcm9iZS0+YXJnczsKLSsgIGludCBjdXJyZW50X2FyZyA9IC0xOwotKyAgLyogVGhpcyBp cyBhIHN0YXRlLW1hY2hpbmUgcGFyc2VyLCB3aGljaCBtZWFucyB3ZSB3aWxsIGFsd2F5cyBiZQot KyAgICAgaW4gYSBrbm93biBzdGF0ZSB3aGVuIHBhcnNpbmcgYW4gYXJndW1lbnQuICBUaGUgc3Rh dGUgY291bGQgYmUKLSsgICAgIGVpdGhlciBgTkVXX0FSRycgaWYgd2UgYXJlIHBhcnNpbmcgYSBu ZXcgYXJndW1lbnQsIGBCSVRORVNTJyBpZgotKyAgICAgd2UgYXJlIHBhcnNpbmcgdGhlIGJpdG5l c3MtZGVmaW5pdGlvbiBwYXJ0IChpLmUuLCBgNEAnKSwgb3IKLSsgICAgIGBQQVJTRV9BUkcnIGlm IHdlIGFyZSBhY3R1YWxseSBwYXJzaW5nIHRoZSBhcmd1bWVudCBwYXJ0LiAgKi8KLSsgIGVudW0K LSsgICAgewotKyAgICAgIE5FV19BUkcsCi0rICAgICAgQklUTkVTUywKLSsgICAgICBQQVJTRV9B UkcsCi0rICAgIH0gY3VycmVudF9zdGF0ZTsKLSsKLSsgIC8qIEZvciBub3csIHdlIGFzc3VtZSBl dmVyeXRoaW5nIGlzIG5vdCBnb2luZyB0byB3b3JrLiAgKi8KLSsgIHByb2JlLT5wYXJzZWRfYXJn cyA9ICZkdW1teV9zdGFwX2FyZ3NfaW5mbzsKLSsKLSsgIGlmICghY3VyIHx8ICEqY3VyIHx8ICpj dXIgPT0gJzonKQotKyAgICByZXR1cm47Ci0rCi0rICBhcmdzX2luZm8gPSB4bWFsbG9jIChzaXpl b2YgKHN0cnVjdCBzdGFwX2FyZ3NfaW5mbykpOwotKyAgYXJnc19pbmZvLT5uX2FyZ3MgPSAwOwot KyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoc3RhcF9mcmVlX2FyZ3NfaW5mbywgYXJnc19pbmZv KTsKLSsgIGFyZ3NfaW5mby0+YXJncyA9IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAo c3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7Ci0rCi0rICAvKiBPaywgbGV0J3Mgc3RhcnQuICAqLwot KyAgY3VycmVudF9zdGF0ZSA9IE5FV19BUkc7Ci0rCi0rICB3aGlsZSAoKmN1cikKLSsgICAgewot KyAgICAgIHN3aXRjaCAoY3VycmVudF9zdGF0ZSkKLSsJewotKwljYXNlIE5FV19BUkc6Ci0rCSAg KytjdXJyZW50X2FyZzsKLSsKLSsJICBpZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJHUykK LSsJICAgIHsKLSsJICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJCSBf KCJwcm9iZSBgJXMnIGhhcyBtb3JlIGFyZ3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKLSsJCQkg ICAiYWxsb3dlZCIpLCBwcm9iZS0+bmFtZSk7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKLSsJICAgICAgcmV0dXJuOwotKwkgICAgfQotKwotKwkgIGN1cnJlbnRfc3RhdGUgPSBCSVRO RVNTOwotKwkgIGJyZWFrOwotKwotKwljYXNlIEJJVE5FU1M6Ci0rCSAgICB7Ci0rCSAgICAgIGVu dW0gc3RhcF9hcmdfYml0bmVzcyBiOwotKwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKLSsKLSsJ ICAgICAgLyogV2UgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIGxpa2U6Ci0rCi0rCQkgTkBPUAot KwotKwkJIFdoZXJlIGBOJyBjYW4gYmUgWyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRhdG9y eSwgc28KLSsJCSB3ZSBjaGVjayBpdCBoZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28gdG8g dGhlIG5leHQKLSsJCSBzdGF0ZS4gICovCi0rCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYgY3Vy WzFdICYmIGN1clsyXSAhPSAnQCcpCi0rCQkgICYmIGN1clsxXSAhPSAnQCcpCi0rCQl7Ci0rCQkg IGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7Ci0rCQkgIGFyZ3NfaW5mby0+YXJnc1tjdXJyZW50 X2FyZ10uYml0bmVzcwotKwkJICAgID0gU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ7Ci0rCQkg IGJyZWFrOwotKwkJfQotKwotKwkgICAgICBpZiAoKmN1ciA9PSAnLScpCi0rCQl7Ci0rCQkgIC8q IERpc2NhcmQgdGhlIGAtJy4gICovCi0rCQkgICsrY3VyOwotKwkJICBnb3RfbWludXMgPSAxOwot KwkJfQotKwotKwkgICAgICBpZiAoKmN1ciA9PSAnNCcpCi0rCQliID0gZ290X21pbnVzID8gU1RB UF9BUkdfQklUTkVTU18zMkJJVF9TSUdORUQKLSsJCSAgOiBTVEFQX0FSR19CSVRORVNTXzMyQklU X1VOU0lHTkVEOwotKwkgICAgICBlbHNlIGlmICgqY3VyID09ICc4JykKLSsJCWIgPSBnb3RfbWlu dXMgPyBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRAotKwkJICA6IFNUQVBfQVJHX0JJVE5F U1NfNjRCSVRfVU5TSUdORUQ7Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgLyogV2UgaGF2ZSBh biBlcnJvciwgYmVjYXVzZSB3ZSBkb24ndCBleHBlY3QgYW55dGhpbmcKLSsJCSAgICAgZXhjZXB0 IDQgYW5kIDguICAqLwotKwkJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJ ICAgICBfKCJ1bnJlY29nbml6ZWQgYml0bmVzcyBgJWMnIGZvciBwcm9iZSBgJXMnIiksCi0rCQkJ ICAgICAqY3VyLCBwcm9iZS0+bmFtZSk7Ci0rCQkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsJ CSAgcmV0dXJuOwotKwkJfQotKwotKwkgICAgICBhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmdd LmJpdG5lc3MgPSBiOwotKwkgICAgICBhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmF0eXBl Ci0rCQk9IHN0YXBfZ2V0X2V4cGVjdGVkX2FyZ3VtZW50X3R5cGUgKHByb2JlLT5nZGJhcmNoLCBi KTsKLSsJICAgICAgLyogRGlzY2FyZCB0aGUgbnVtYmVyIGFuZCB0aGUgYEAnIHNpZ24uICAqLwot KwkgICAgICBjdXIgKz0gMjsKLSsJICAgICAgLyogTW92ZSBvbi4gICovCi0rCSAgICAgIGN1cnJl bnRfc3RhdGUgPSBQQVJTRV9BUkc7Ci0rCSAgICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgUEFS U0VfQVJHOgotKwkgICAgewotKwkgICAgICBpZiAoIXN0YXBfcGFyc2VfYXJndW1lbnQgKCZjdXIs Ci0rCQkJCQlhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmF0eXBlLAotKwkJCQkJcHJvYmUt PmdkYmFyY2gpKQotKwkJewotKwkJICAvKiBXZSBoYXZlIHRyaWVkIHRvIHBhcnNlIHRoaXMgYXJn dW1lbnQsIGJ1dCBpdCdzCi0rCQkgICAgIG1hbGZvcm1lZC4gIFRoaXMgaXMgYW4gZXJyb3IuICAq LwotKwkJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJICAgICBfKCJtYWxm b3JtZWQgYXJndW1lbnQgZm9yIHByb2JlIGAlcyciKSwKLSsJCQkgICAgIHByb2JlLT5uYW1lKTsK LSsJCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKwkJICByZXR1cm47Ci0rCQl9Ci0rCi0rCSAg ICAgIGlmIChzdGFwX2V4cHJlc3Npb25fZGVidWcpCi0rCQlkdW1wX3Jhd19leHByZXNzaW9uIChl eHBvdXQsIGdkYl9zdGRsb2csCi0rCQkJCSAgICAgImJlZm9yZSBjb252ZXJzaW9uIHRvIHByZWZp eCBmb3JtIik7Ci0rCi0rCSAgICAgIHByZWZpeGlmeV9leHByZXNzaW9uIChleHBvdXQpOwotKwot KwkgICAgICBpZiAoc3RhcF9leHByZXNzaW9uX2RlYnVnKQotKwkJZHVtcF9wcmVmaXhfZXhwcmVz c2lvbiAoZXhwb3V0LCBnZGJfc3RkbG9nKTsKLSsKLSsJICAgICAgYXJnc19pbmZvLT5hcmdzW2N1 cnJlbnRfYXJnXS5hZXhwciA9IGV4cG91dDsKLSsJICAgICAgZXhwb3V0ID0gTlVMTDsKLSsKLSsJ ICAgICAgKythcmdzX2luZm8tPm5fYXJnczsKLSsJICAgICAgLyogU3RhcnQgaXQgb3ZlciBhZ2Fp bi4gICovCi0rCSAgICAgIGN1ciA9IHNraXBfc3BhY2VzX2NvbnN0IChjdXIpOwotKwkgICAgICBj dXJyZW50X3N0YXRlID0gTkVXX0FSRzsKLSsJICAgIH0KLSsJICBicmVhazsKLSsJfQotKwotKyAg ICAgIGlmICghKmN1ciAmJiBjdXJyZW50X3N0YXRlICE9IE5FV19BUkcpCi0rCXsKLSsJICAvKiBX ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IHN0cmluZywgYnV0IHdlJ3JlCi0rCSAg ICAgc3RpbGwgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcHJvY2VzcyBvZiBwYXJzaW5nIGFuIGFyZ3Vt ZW50LgotKwkgICAgIEl0IG1lYW5zIHRoZSBhcmd1bWVudCBzdHJpbmcgaXMgbWFsZm9ybWVkLiAg Ki8KLSsJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkgICAgIF8oIm1hbGZv cm1lZCBhcmd1bWVudCBmb3IgcHJvYmUgYCVzJyIpLAotKwkJICAgICBwcm9iZS0+bmFtZSk7Ci0r CSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKwkgIHJldHVybjsKLSsJfQotKyAgICB9Ci0rCi0r ICBhcmdzX2luZm8tPmFyZ3MgPSB4cmVhbGxvYyAoYXJnc19pbmZvLT5hcmdzLAotKwkJCSAgICAg IGFyZ3NfaW5mby0+bl9hcmdzCi0rCQkJICAgICAgKiBzaXplb2YgKHN0cnVjdCBzdGFwX3Byb2Jl X2FyZykpOwotKyAgYXJnc19pbmZvLT5wcm9iZSA9IHByb2JlOwotKwotKyAgcHJvYmUtPnBhcnNl ZF9hcmdzID0gYXJnc19pbmZvOwotKwotKyAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7Ci0r fQotKwotKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCi0rCi0raW50Ci0r c3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkK LSt7Ci0rICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKLSsgICAgc3RhcF9wYXJzZV9wcm9iZV9h cmd1bWVudHMgKHByb2JlKTsKLSsKLSsgIHJldHVybiBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJn czsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgT1AgaXMgYSB2YWxpZCBvcGVyYXRvciBpbnNpZGUg YSBwcm9iZSBhcmd1bWVudCwgb3IgemVybwotKyAgIG90aGVyd2lzZS4gICovCi0rCi0rc3RhdGlj IGludAotK3N0YXBfaXNfb3BlcmF0b3IgKGNoYXIgb3ApCi0rewotKyAgcmV0dXJuIChvcCA9PSAn KycgfHwgb3AgPT0gJy0nIHx8IG9wID09ICcqJyB8fCBvcCA9PSAnLycKLSsJICB8fCBvcCA9PSAn PicgfHwgb3AgPT0gJzwnIHx8IG9wID09ICchJyB8fCBvcCA9PSAnXicKLSsJICB8fCBvcCA9PSAn fCcgfHwgb3AgPT0gJyYnIHx8IG9wID09ICclJyB8fCBvcCA9PSAnPScpOwotK30KLSsKLSsvKiBT ZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2JlLmguICAqLwotKwotK3N0cnVjdCB2YWx1ZSAqCi0r c3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0r CQkJICAgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAotKwkJCSAgICAgIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwKLSsJCQkgICAgICBpbnQgbikKLSt7Ci0rICBpbnQgcG9zID0gMDsKLSsK LSsgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzKQotKyAgICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3Vt ZW50cyAocHJvYmUpOwotKwotKyAgaWYgKCFwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3MKLSsgICAg ICB8fCBuID49IHByb2JlLT5wYXJzZWRfYXJncy0+bl9hcmdzKQotKyAgICByZXR1cm4gTlVMTDsK LSsKLSsgIC8qIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugb24gc29tZSBhcmNoaXRlY3R1cmVzIChl LmcuLCBBUk0pIHdlIG5lZWQKLSsgICAgIHRoZSBmcmFtZSdzIGdkYmFyY2ggaW4gb3JkZXIgdG8g Y29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIGZyYW1lCi0rICAgICBwb2ludGVyLiAgKi8KLSsgIHBy b2JlLT5wYXJzZWRfYXJncy0+YXJnc1tuXS5hZXhwci0+Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNo IChmcmFtZSk7Ci0rCi0rICByZXR1cm4gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChwcm9iZS0+ cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYXR5cGUsCi0rCQkJCSAgIHByb2JlLT5wYXJzZWRfYXJncy0+ YXJnc1tuXS5hZXhwciwKLSsJCQkJICAgJnBvcywgRVZBTF9OT1JNQUwpOwotK30KLSsKLSsvKiBT ZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2JlLmguICAqLwotKwotK3ZvaWQKLStzdGFwX2NvbXBp bGVfdG9fYXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgIHN0cnVjdCBzdGFwX3By b2JlICpwcm9iZSwKLSsJCSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKLSsJCSAgICBzdHJ1 Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKLSsJCSAgICBpbnQgbikKLSt7Ci0rICB1bmlvbiBleHBfZWxl bWVudCAqcGM7Ci0rCi0rICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKLSsgICAgc3RhcF9wYXJz ZV9wcm9iZV9hcmd1bWVudHMgKHByb2JlKTsKLSsKLSsgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdz LT5hcmdzCi0rICAgICAgfHwgbiA+PSBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJncykKLSsgICAg cmV0dXJuOwotKwotKyAgcGMgPSBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYWV4cHItPmVs dHM7Ci0rICBnZW5fZXhwciAocHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmFleHByLCAmcGMs IGV4cHIsIHZhbHVlKTsKLSsKLSsgIHJlcXVpcmVfcnZhbHVlIChleHByLCB2YWx1ZSk7Ci0rICB2 YWx1ZS0+dHlwZSA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnc1tuXS5hdHlwZTsKLSt9Ci0rCi0r c3RydWN0IHZhbHVlICoKLStzdGFwX3NhZmVfZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwgaW50IG4pCi0rewotKyAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwotKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0rICBpbnQgbl9wcm9iZXM7Ci0rCi0rICBwcm9iZSA9 IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7Ci0rICBp ZiAoIXByb2JlKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNm ICYmIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKTsKLSsKLSsgIG5fcHJvYmVzCi0rICAgID0g b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQg KG9iamZpbGUsCi0rCQkJCQkJCQlwcm9iZSk7Ci0rICBpZiAobiA+PSBuX3Byb2JlcykKLSsgICAg cmV0dXJuIE5VTEw7Ci0rCi0rICByZXR1cm4gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5 bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAob2JqZmlsZSwKLSsJCQkJCQkJCSAgcHJvYmUsCi0r CQkJCQkJCQkgIGZyYW1lLAotKwkJCQkJCQkJICBuKTsKLSt9Ci0rCi0rLyogVGhpcyBmdW5jdGlv biBmcmVlcyB0aGUgc3BhY2UgYWxsb2NhdGVkIHRvIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQKLSsg ICB0aGUgcHJvYmUncyBwYXJzZWQgYXJndW1lbnRzLiAgKi8KLSsKLSt2b2lkCi0rc3RhcF9mcmVl X3BhcnNlZF9hcmdzIChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzKQotK3sKLSsg IGludCBpOwotKwotKyAgaWYgKCFwYXJzZWRfYXJncwotKyAgICAgIHx8IHBhcnNlZF9hcmdzID09 ICZkdW1teV9zdGFwX2FyZ3NfaW5mbwotKyAgICAgIHx8IHBhcnNlZF9hcmdzLT5uX2FyZ3MgPT0g MCkKLSsgICAgcmV0dXJuOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2Fy Z3M7IGkrKykKLSsgICAgeGZyZWUgKHBhcnNlZF9hcmdzLT5hcmdzW2ldLmFleHByKTsKLSsKLSsg IHhmcmVlIChwYXJzZWRfYXJncy0+YXJncyk7Ci0rICB4ZnJlZSAocGFyc2VkX2FyZ3MpOwotK30K LSsKLSsvKiBBIHV0aWxpdHkgc3RydWN0dXJlLiAgQSBWRUMgb2YgdGhlc2UgaXMgYnVpbHQgd2hl biBoYW5kbGluZyAiaW5mbwotKyAgIHByb2JlcyIuICAqLwotKwotK3N0cnVjdCBzdGFwX3Byb2Jl X2FuZF9vYmpmaWxlCi0rewotKyAgLyogVGhlIHByb2JlLiAgKi8KLSsgIHN0cnVjdCBzdGFwX3By b2JlICpwcm9iZTsKLSsgIC8qIFRoZSBwcm9iZSdzIG9iamZpbGUuICAqLwotKyAgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci0rfTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBzdGFwX3Byb2JlX2FuZF9v YmpmaWxlIHN0YXBfZW50cnk7Ci0rREVGX1ZFQ19PIChzdGFwX2VudHJ5KTsKLSsKLSsvKiBBIGhl bHBlciBmdW5jdGlvbiBmb3IgY29sbGVjdF9wcm9iZXMgdGhhdCBjb21waWxlcyBhIHJlZ2V4cCBh bmQKLSsgICB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAgVGhpcyBpbnN0YWxscyBhIGNs ZWFudXAgdG8gZnJlZSB0aGUKLSsgICByZXN1bHRpbmcgcGF0dGVybiBvbiBzdWNjZXNzLiAgSWYg UlggaXMgTlVMTCwgdGhpcyBkb2VzIG5vdGhpbmcuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rY29t cGlsZV9yeF9vcl9lcnJvciAocmVnZXhfdCAqcGF0dGVybiwgY29uc3QgY2hhciAqcngsIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpCi0rewotKyAgaW50IGNvZGU7Ci0rCi0rICBpZiAoIXJ4KQotKyAgICBy ZXR1cm47Ci0rCi0rICBjb2RlID0gcmVnY29tcCAocGF0dGVybiwgcngsIFJFR19OT1NVQik7Ci0r ICBpZiAoY29kZSA9PSAwKQotKyAgICBtYWtlX3JlZ2ZyZWVfY2xlYW51cCAocGF0dGVybik7Ci0r ICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICplcnIgPSBnZXRfcmVnY29tcF9lcnJvciAoY29k ZSwgcGF0dGVybik7Ci0rCi0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZXJyKTsKLSsgICAg ICBlcnJvciAoXygiJXM6ICVzIiksIG1lc3NhZ2UsIGVycik7Ci0rICAgIH0KLSt9Ci0rCi0rLyog TWFrZSBhIHZlY3RvciBvZiBwcm9iZXMgbWF0Y2hpbmcgT0JKTkFNRSwgUFJPVklERVIsIGFuZCBQ Uk9CRS4KLSsgICBFYWNoIGFyZ3VtZW50IGlzIGEgcmVnZXhwLCBvciBOVUxMLCB3aGljaCBtYXRj aGVzIGFueXRoaW5nLiAgKi8KLSsKLStzdGF0aWMgVkVDIChzdGFwX2VudHJ5KSAqCi0rY29sbGVj dF9wcm9iZXMgKGNoYXIgKm9iam5hbWUsIGNoYXIgKnByb3ZpZGVyLCBjaGFyICpwcm9iZSkKLSt7 Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIFZFQyAoc3RhcF9lbnRyeSkgKnJlc3Vs dCA9IE5VTEw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSsgIHJlZ2V4X3Qgb2JqX3Bh dCwgcHJvdl9wYXQsIHByb2JlX3BhdDsKLSsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKFZF Q19jbGVhbnVwIChzdGFwX2VudHJ5KSwgJnJlc3VsdCk7Ci0rCi0rICBjb21waWxlX3J4X29yX2Vy cm9yICgmcHJvdl9wYXQsIHByb3ZpZGVyLCBfKCJJbnZhbGlkIHByb3ZpZGVyIHJlZ2V4cCIpKTsK LSsgIGNvbXBpbGVfcnhfb3JfZXJyb3IgKCZwcm9iZV9wYXQsIHByb2JlLCBfKCJJbnZhbGlkIHBy b2JlIHJlZ2V4cCIpKTsKLSsgIGNvbXBpbGVfcnhfb3JfZXJyb3IgKCZvYmpfcGF0LCBvYmpuYW1l LCBfKCJJbnZhbGlkIG9iamVjdCBmaWxlIHJlZ2V4cCIpKTsKLSsKLSsgIEFMTF9PQkpGSUxFUyAo b2JqZmlsZSkKLSsgIHsKLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKLSsgICAgaW50 IGksIG51bV9wcm9iZXM7Ci0rCi0rICAgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmlsZS0+ c2YtPnN5bV9wcm9iZV9mbnMpCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIGlmIChvYmpuYW1l KQotKyAgICAgIHsKLSsJaWYgKHJlZ2V4ZWMgKCZvYmpfcGF0LCBvYmpmaWxlLT5uYW1lLCAwLCBO VUxMLCAwKSAhPSAwKQotKwkgIGNvbnRpbnVlOwotKyAgICAgIH0KLSsKLSsgICAgcHJvYmVzID0g b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVzIChvYmpmaWxlLCAmbnVt X3Byb2Jlcyk7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcHJvYmVzOyArK2kpCi0rICAgICAg ewotKwlzdGFwX2VudHJ5IGVudHJ5OwotKwotKwlpZiAocHJvdmlkZXIpCi0rCSAgewotKwkgICAg aWYgKHJlZ2V4ZWMgKCZwcm92X3BhdCwgcHJvYmVzW2ldLnByb3ZpZGVyLCAwLCBOVUxMLCAwKSAh PSAwKQotKwkgICAgICBjb250aW51ZTsKLSsJICB9Ci0rCi0rCWlmIChwcm9iZSkKLSsJICB7Ci0r CSAgICBpZiAocmVnZXhlYyAoJnByb2JlX3BhdCwgcHJvYmVzW2ldLm5hbWUsIDAsIE5VTEwsIDAp ICE9IDApCi0rCSAgICAgIGNvbnRpbnVlOwotKwkgIH0KLSsKLSsJZW50cnkucHJvYmUgPSAmcHJv YmVzW2ldOwotKwllbnRyeS5vYmpmaWxlID0gb2JqZmlsZTsKLSsJVkVDX3NhZmVfcHVzaCAoc3Rh cF9lbnRyeSwgcmVzdWx0LCAmZW50cnkpOwotKyAgICAgIH0KLSsgIH0KLSsKLSsgIGRpc2NhcmRf Y2xlYW51cHMgKGNsZWFudXApOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogQSBxc29y dCBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBzdGFwX2VudHJ5IG9iamVjdHMuICAqLwotKwotK3N0 YXRpYyBpbnQKLStjb21wYXJlX2VudHJpZXMgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIp Ci0rewotKyAgY29uc3Qgc3RhcF9lbnRyeSAqZWEgPSBhOwotKyAgY29uc3Qgc3RhcF9lbnRyeSAq ZWIgPSBiOwotKyAgaW50IHY7Ci0rCi0rICB2ID0gc3RyY21wIChlYS0+cHJvYmUtPnByb3ZpZGVy LCBlYi0+cHJvYmUtPnByb3ZpZGVyKTsKLSsgIGlmICh2KQotKyAgICByZXR1cm4gdjsKLSsKLSsg IHYgPSBzdHJjbXAgKGVhLT5wcm9iZS0+bmFtZSwgZWItPnByb2JlLT5uYW1lKTsKLSsgIGlmICh2 KQotKyAgICByZXR1cm4gdjsKLSsKLSsgIGlmIChlYS0+cHJvYmUtPmFkZHJlc3MgPCBlYi0+cHJv YmUtPmFkZHJlc3MpCi0rICAgIHJldHVybiAtMTsKLSsgIGlmIChlYS0+cHJvYmUtPmFkZHJlc3Mg PiBlYi0+cHJvYmUtPmFkZHJlc3MpCi0rICAgIHJldHVybiAxOwotKwotKyAgcmV0dXJuIHN0cmNt cCAoZWEtPm9iamZpbGUtPm5hbWUsIGViLT5vYmpmaWxlLT5uYW1lKTsKLSt9Ci0rCi0rLyogSW1w bGVtZW50YXRpb24gb2YgdGhlICJpbmZvIHByb2JlcyIgY29tbWFuZC4gICovCi0rCi0rc3RhdGlj IHZvaWQKLStpbmZvX3Byb2Jlc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSt7 Ci0rICBjaGFyICpwcm92aWRlciwgKnByb2JlID0gTlVMTCwgKm9iam5hbWUgPSBOVUxMOwotKyAg c3RydWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVM TCk7Ci0rICBWRUMgKHN0YXBfZW50cnkpICppdGVtczsKLSsgIGludCBpLCBhZGRyX3dpZHRoLCBh bnlfZm91bmQ7Ci0rICBzdGFwX2VudHJ5ICplbnRyeTsKLSsKLSsgIHByb3ZpZGVyID0gZXh0cmFj dF9hcmcgKCZhcmcpOwotKyAgaWYgKHByb3ZpZGVyKQotKyAgICB7Ci0rICAgICAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgcHJvdmlkZXIpOwotKwotKyAgICAgIHByb2JlID0gZXh0cmFjdF9hcmcgKCZh cmcpOwotKyAgICAgIGlmIChwcm9iZSkKLSsJewotKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHBy b2JlKTsKLSsKLSsJICBvYmpuYW1lID0gZXh0cmFjdF9hcmcgKCZhcmcpOwotKwkgIGlmIChvYmpu YW1lKQotKwkgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgb2JqbmFtZSk7Ci0rCX0KLSsgICAgfQot KwotKyAgaXRlbXMgPSBjb2xsZWN0X3Byb2JlcyAob2JqbmFtZSwgcHJvdmlkZXIsIHByb2JlKTsK LSsgIG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKHN0YXBfZW50cnkpLCAmaXRlbXMpOwotKyAg bWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlvdXQsIDUsCi0r CQkJCSAgICAgICBWRUNfbGVuZ3RoIChzdGFwX2VudHJ5LCBpdGVtcyksCi0rCQkJCSAgICAgICAi U3lzdGVtVGFwUHJvYmVzIik7Ci0rCi0rICBpZiAoISBWRUNfZW1wdHkgKHN0YXBfZW50cnksIGl0 ZW1zKSkKLSsgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChzdGFwX2VudHJ5LCBpdGVtcyksCi0rCSAg IFZFQ19sZW5ndGggKHN0YXBfZW50cnksIGl0ZW1zKSwKLSsJICAgc2l6ZW9mIChzdGFwX2VudHJ5 KSwKLSsJICAgY29tcGFyZV9lbnRyaWVzKTsKLSsKLSsgIGFkZHJfd2lkdGggPSA0ICsgKGdkYmFy Y2hfcHRyX2JpdCAoZ2V0X2N1cnJlbnRfYXJjaCAoKSkgLyA0KTsKLSsKLSsgIHVpX291dF90YWJs ZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDEwLCB1aV9sZWZ0LCAicHJvdmlkZXIiLCBfKCJQcm92 aWRlciIpKTsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDEwLCB1aV9s ZWZ0LCAibmFtZSIsIF8oIk5hbWUiKSk7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50 X3Vpb3V0LCBhZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwgImFkZHIiLCBfKCJXaGVyZSIpKTsKLSsg IHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIGFkZHJfd2lkdGggLSAxLCB1aV9s ZWZ0LCAic2VtYXBob3JlIiwKLSsJCSAgICAgICBfKCJTZW1hcGhvcmUiKSk7Ci0rICB1aV9vdXRf dGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAzMCwgdWlfbGVmdCwgIm9iamVjdCIsIF8oIk9i amVjdCIpKTsKLSsgIHVpX291dF90YWJsZV9ib2R5IChjdXJyZW50X3Vpb3V0KTsKLSsKLSsgIGZv ciAoaSA9IDA7IFZFQ19pdGVyYXRlIChzdGFwX2VudHJ5LCBpdGVtcywgaSwgZW50cnkpOyArK2kp Ci0rICAgIHsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqaW5uZXI7Ci0rCi0rICAgICAgaW5uZXIg PSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgInBy b2JlIik7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgInBy b3ZpZGVyIiwgZW50cnktPnByb2JlLT5wcm92aWRlcik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAoY3VycmVudF91aW91dCwgIm5hbWUiLCBlbnRyeS0+cHJvYmUtPm5hbWUpOwotKyAgICAg IHVpX291dF9maWVsZF9jb3JlX2FkZHIgKGN1cnJlbnRfdWlvdXQsICJhZGRyIiwgZ2V0X2N1cnJl bnRfYXJjaCAoKSwKLSsJCQkgICAgICBlbnRyeS0+cHJvYmUtPmFkZHJlc3MpOwotKyAgICAgIGlm IChlbnRyeS0+cHJvYmUtPnNlbV9hZGRyID09IDApCi0rCXVpX291dF9maWVsZF9za2lwIChjdXJy ZW50X3Vpb3V0LCAic2VtYXBob3JlIik7Ci0rICAgICAgZWxzZQotKyAgICAgIHVpX291dF9maWVs ZF9jb3JlX2FkZHIgKGN1cnJlbnRfdWlvdXQsICJzZW1hcGhvcmUiLCBnZXRfY3VycmVudF9hcmNo ICgpLAotKwkJCSAgICAgIGVudHJ5LT5wcm9iZS0+c2VtX2FkZHIpOwotKyAgICAgIHVpX291dF9m aWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJvYmplY3QiLCBlbnRyeS0+b2JqZmlsZS0+bmFt ZSk7Ci0rICAgICAgdWlfb3V0X3RleHQgKGN1cnJlbnRfdWlvdXQsICJcbiIpOwotKwotKyAgICAg IGRvX2NsZWFudXBzIChpbm5lcik7Ci0rICAgIH0KLSsKLSsgIGFueV9mb3VuZCA9ICEgVkVDX2Vt cHR5IChzdGFwX2VudHJ5LCBpdGVtcyk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rCi0r ICBpZiAoISBhbnlfZm91bmQpCi0rICAgIHVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0LCAw LCBfKCJObyBwcm9iZXMgbWF0Y2hlZC5cbiIpKTsKLSt9Ci0rCi0rDAotKwotKy8qIFNlZSBkZWZp bml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCi0rCi0rVkVDIChzdGFwX3Byb2JlX3ApICoKLStm aW5kX3Byb2Jlc19pbl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQljb25z dCBjaGFyICpwcm92aWRlciwKLSsJCQljb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZXM7Ci0rICBpbnQgaSwgbnVtX3Byb2JlczsKLSsgIFZFQyAoc3RhcF9w cm9iZV9wKSAqcmVzdWx0ID0gTlVMTDsKLSsKLSsgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2Jq ZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgcHJvYmVz ID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVzIChvYmpmaWxlLCAm bnVtX3Byb2Jlcyk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgbnVtX3Byb2JlczsgKytpKQotKyAgICB7 Ci0rICAgICAgaWYgKHN0cmNtcCAocHJvYmVzW2ldLnByb3ZpZGVyLCBwcm92aWRlcikgIT0gMCkK LSsJY29udGludWU7Ci0rCi0rICAgICAgaWYgKHN0cmNtcCAocHJvYmVzW2ldLm5hbWUsIG5hbWUp ICE9IDApCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIFZFQ19zYWZlX3B1c2ggKHN0YXBfcHJvYmVf cCwgcmVzdWx0LCAmcHJvYmVzW2ldKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9 Ci0rCi0rLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5oLiAgKi8KLSsKLStzdHJ1Y3Qg c3ltdGFic19hbmRfbGluZXMKLStwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRyLCBzdHJ1 Y3QgbGluZXNwZWNfcmVzdWx0ICpjYW5vbmljYWwpCi0rewotKyAgY2hhciAqYXJnX3N0YXJ0LCAq YXJnX2VuZCwgKmFyZzsKLSsgIGNoYXIgKm9iamZpbGVfbmFtZSA9IE5VTEwsICpwcm92aWRlciA9 IE5VTEwsICpuYW1lLCAqcDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgc3RydWN0 IHN5bXRhYnNfYW5kX2xpbmVzIHJlc3VsdDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwot KwotKyAgcmVzdWx0LnNhbHMgPSBOVUxMOwotKyAgcmVzdWx0Lm5lbHRzID0gMDsKLSsKLSsgIGFy Z19zdGFydCA9ICphcmdwdHI7Ci0rICAvKiBUaGUgY2FsbGVyIGVuc3VyZWQgdGhhdCB0aGlzIHN0 YXJ0cyB3aXRoICctcCcuICAqLwotKyAgZ2RiX2Fzc2VydCAoYXJnX3N0YXJ0ICYmIHN0cm5jbXAg KGFyZ19zdGFydCwgIi1wIiwgMikgPT0gMCk7Ci0rICBhcmdfZW5kID0gYXJnX3N0YXJ0ICsgMjsK LSsgIGFyZ19lbmQgPSBza2lwX3NwYWNlcyAoYXJnX2VuZCk7Ci0rCi0rICBpZiAoISphcmdfZW5k KQotKyAgICBlcnJvciAoXygiYXJndW1lbnQgdG8gYC1wJyBtaXNzaW5nIikpOwotKwotKyAgYXJn ID0gYXJnX2VuZDsKLSsgIGFyZ19lbmQgPSBza2lwX3RvX3NwYWNlIChhcmdfZW5kKTsKLSsKLSsg IC8qIFdlIG1ha2UgYSBjb3B5IGhlcmUgc28gd2UgY2FuIHdyaXRlIG92ZXIgcGFydHMgd2l0aCBp bXB1bml0eS4gICovCi0rICBhcmcgPSBzYXZlc3RyaW5nIChhcmcsIGFyZ19lbmQgLSBhcmcpOwot KyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFyZyk7Ci0rCi0rICAvKiBFeHRyYWN0 IGVhY2ggd29yZCBmcm9tIHRoZSBhcmd1bWVudCwgc2VwYXJhdGVkIGJ5ICI6InMuICAqLwotKyAg cCA9IHN0cmNociAoYXJnLCAnOicpOwotKyAgaWYgKHAgPT0gTlVMTCkKLSsgICAgewotKyAgICAg IC8qIFRoaXMgaXMgYC1wIG5hbWUnLiAgKi8KLSsgICAgICBuYW1lID0gYXJnOwotKyAgICB9Ci0r ICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICpob2xkID0gcCArIDE7Ci0rCi0rICAgICAgKnAg PSAnXDAnOwotKyAgICAgIHAgPSBzdHJjaHIgKGhvbGQsICc6Jyk7Ci0rICAgICAgaWYgKHAgPT0g TlVMTCkKLSsJewotKwkgIC8qIFRoaXMgaXMgYC1wIHByb3ZpZGVyOm5hbWUnLiAgKi8KLSsJICBw cm92aWRlciA9IGFyZzsKLSsJICBuYW1lID0gaG9sZDsKLSsJfQotKyAgICAgIGVsc2UKLSsJewot KwkgIC8qIFRoaXMgaXMgYC1wIG9iamZpbGU6cHJvdmlkZXI6bmFtZScuICAqLwotKwkgICpwID0g J1wwJzsKLSsJICBvYmpmaWxlX25hbWUgPSBhcmc7Ci0rCSAgcHJvdmlkZXIgPSBob2xkOwotKwkg IG5hbWUgPSBwICsgMTsKLSsJfQotKyAgICB9Ci0rCi0rICBpZiAoKm5hbWUgPT0gJ1wwJykKLSsg ICAgZXJyb3IgKF8oIm5vIHByb2JlIG5hbWUgc3BlY2lmaWVkIikpOwotKyAgaWYgKHByb3ZpZGVy ICYmICpwcm92aWRlciA9PSAnXDAnKQotKyAgICBlcnJvciAoXygiaW52YWxpZCBwcm92aWRlciBu YW1lIikpOwotKyAgaWYgKG9iamZpbGVfbmFtZSAmJiAqb2JqZmlsZV9uYW1lID09ICdcMCcpCi0r ICAgIGVycm9yIChfKCJpbnZhbGlkIG9iamZpbGUgbmFtZSIpKTsKLSsKLSsgIEFMTF9PQkpGSUxF UyAob2JqZmlsZSkKLSsgIHsKLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKLSsgICAg aW50IGksIG51bV9wcm9iZXM7Ci0rCi0rICAgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmls ZS0+c2YtPnN5bV9wcm9iZV9mbnMpCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIGlmIChvYmpm aWxlX25hbWUKLSsJJiYgRklMRU5BTUVfQ01QIChvYmpmaWxlLT5uYW1lLCBvYmpmaWxlX25hbWUp ICE9IDAKLSsJJiYgRklMRU5BTUVfQ01QIChsYmFzZW5hbWUgKG9iamZpbGUtPm5hbWUpLCBvYmpm aWxlX25hbWUpICE9IDApCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIHByb2JlcyA9IG9iamZp bGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlcyAob2JqZmlsZSwgJm51bV9wcm9i ZXMpOwotKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3Byb2JlczsgKytpKQotKyAgICAgIHsKLSsJ c3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsOwotKwotKwlpZiAocHJvdmlkZXIgJiYgc3RyY21w IChwcm9iZXNbaV0ucHJvdmlkZXIsIHByb3ZpZGVyKSAhPSAwKQotKwkgIGNvbnRpbnVlOwotKwot KwlpZiAoc3RyY21wIChwcm9iZXNbaV0ubmFtZSwgbmFtZSkgIT0gMCkKLSsJICBjb250aW51ZTsK LSsKLSsJKytyZXN1bHQubmVsdHM7Ci0rCXJlc3VsdC5zYWxzID0geHJlYWxsb2MgKHJlc3VsdC5z YWxzLAotKwkJCQlyZXN1bHQubmVsdHMgKiBzaXplb2YgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUp KTsKLSsJc2FsID0gJnJlc3VsdC5zYWxzW3Jlc3VsdC5uZWx0cyAtIDFdOwotKwotKwlpbml0X3Nh bCAoc2FsKTsKLSsKLSsJc2FsLT5wYyA9IHByb2Jlc1tpXS5hZGRyZXNzOwotKwlzYWwtPmV4cGxp Y2l0X3BjID0gMTsKLSsJc2FsLT5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwtPnBjKTsK LSsJc2FsLT5wc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0rCXNhbC0+c2VtYXBob3Jl ID0gcHJvYmVzW2ldLnNlbV9hZGRyOwotKyAgICAgIH0KLSsgIH0KLSsKLSsgIGlmIChyZXN1bHQu bmVsdHMgPT0gMCkKLSsgICAgewotKyAgICAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1Is Ci0rCQkgICBfKCJObyBwcm9iZSBtYXRjaGluZyBvYmpmaWxlPWAlcycsIHByb3ZpZGVyPWAlcycs IG5hbWU9YCVzJyIpLAotKwkJICAgb2JqZmlsZV9uYW1lID8gb2JqZmlsZV9uYW1lIDogXygiPGFu eT4iKSwKLSsJCSAgIHByb3ZpZGVyID8gcHJvdmlkZXIgOiBfKCI8YW55PiIpLAotKwkJICAgbmFt ZSk7Ci0rICAgIH0KLSsKLSsgIGlmIChjYW5vbmljYWwpCi0rICAgIHsKLSsgICAgICBjYW5vbmlj YWwtPnNwZWNpYWxfZGlzcGxheSA9IDE7Ci0rICAgICAgY2Fub25pY2FsLT5wcmVfZXhwYW5kZWQg PSAxOwotKyAgICAgIGNhbm9uaWNhbC0+YWRkcl9zdHJpbmcgPSBzYXZlc3RyaW5nICgqYXJncHRy LCBhcmdfZW5kIC0gKmFyZ3B0cik7Ci0rICAgIH0KLSsKLSsgICphcmdwdHIgPSBhcmdfZW5kOwot KyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0r DAotKwotKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCi0rCi0rc3RydWN0 IHN0YXBfcHJvYmUgKgotK2ZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywgc3RydWN0IG9i amZpbGUgKipvYmpmaWxlX291dCkKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsK LSsgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSsgIHsKLSsgICAgc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlczsKLSsgICAgaW50IGksIG51bV9wcm9iZXM7Ci0rICAgIHN0YXBfZW50cnkgZW50cnk7 Ci0rCi0rICAgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9m bnMpCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIC8qIElmIHRoaXMgcHJvdmVzIHRvbyBpbmVm ZmljaWVudCwgd2UgY2FuIHJlcGxhY2Ugd2l0aCBhIGhhc2guICAqLwotKyAgICBwcm9iZXMgPSBv YmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1f cHJvYmVzKTsKLSsgICAgZm9yIChpID0gMDsgaSA8IG51bV9wcm9iZXM7ICsraSkKLSsgICAgICB7 Ci0rCWlmIChwcm9iZXNbaV0uYWRkcmVzcyA9PSBwYykKLSsJICB7Ci0rCSAgICAqb2JqZmlsZV9v dXQgPSBvYmpmaWxlOwotKwkgICAgcmV0dXJuICZwcm9iZXNbaV07Ci0rCSAgfQotKyAgICAgIH0K LSsgIH0KLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBUaGlzIGlzIGNhbGxlZCB0byBj b21wdXRlIHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlICRfcHJvYmVfYXJnKgotKyAgIGNvbnZlbmll bmNlIHZhcmlhYmxlcy4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rY29tcHV0ZV9w cm9iZV9hcmcgKHN0cnVjdCBnZGJhcmNoICphcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKml2YXIs Ci0rCQkgICB2b2lkICpkYXRhKQotK3sKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGdl dF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Ci0rICBDT1JFX0FERFIg cGMgPSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKLSsgIGludCBzZWwgPSAoaW50KSAodWludHB0cl90 KSBkYXRhOwotKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9i ZSAqcGNfcHJvYmU7Ci0rICBpbnQgbl9wcm9iZXM7Ci0rCi0rICAvKiBTRUw9PS0xIG1lYW5zICJf cHJvYmVfYXJnYyIuICAqLwotKyAgZ2RiX2Fzc2VydCAoc2VsID49IC0xICYmIHNlbCA8PSBTVEFQ X01BWF9BUkdTKTsKLSsKLSsgIHBjX3Byb2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMsICZvYmpm aWxlKTsKLSsgIGlmIChwY19wcm9iZSA9PSBOVUxMKQotKyAgICBlcnJvciAoXygiTm8gU3lzdGVt VGFwIHByb2JlIGF0IFBDICVzIiksIGNvcmVfYWRkcl90b19zdHJpbmcgKHBjKSk7Ci0rCi0rICBu X3Byb2JlcwotKyAgICA9IG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2Jl X2FyZ3VtZW50X2NvdW50IChvYmpmaWxlLAotKwkJCQkJCQkJcGNfcHJvYmUpOwotKyAgaWYgKHNl bCA9PSAtMSkKLSsgICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChh cmNoKS0+YnVpbHRpbl9pbnQsIG5fcHJvYmVzKTsKLSsKLSsgIGlmIChzZWwgPj0gbl9wcm9iZXMp Ci0rICAgIGVycm9yIChfKCJJbnZhbGlkIHByb2JlIGFyZ3VtZW50ICVkIC0tIHByb2JlIGhhcyAl ZCBhcmd1bWVudHMgYXZhaWxhYmxlIiksCi0rCSAgIHNlbCwgbl9wcm9iZXMpOwotKwotKyAgcmV0 dXJuIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1l bnQgKG9iamZpbGUsCi0rCQkJCQkJCQkgIHBjX3Byb2JlLAotKwkJCQkJCQkJICBmcmFtZSwgc2Vs KTsKLSt9Ci0rCi0rLyogVGhpcyBpcyBjYWxsZWQgdG8gY29tcGlsZSBvbmUgb2YgdGhlICRfcHJv YmVfYXJnKiBjb252ZW5pZW5jZQotKyAgIHZhcmlhYmxlcyBpbnRvIGFuIGFnZW50IGV4cHJlc3Np b24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rY29tcGlsZV9wcm9iZV9hcmcgKHN0cnVjdCBpbnRl cm5hbHZhciAqaXZhciwgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkgICBzdHJ1Y3QgYXhz X3ZhbHVlICp2YWx1ZSwgdm9pZCAqZGF0YSkKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBleHByLT5z Y29wZTsKLSsgIGludCBzZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOwotKyAgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcGNfcHJvYmU7Ci0rICBpbnQg bl9wcm9iZXM7Ci0rCi0rICAvKiBTRUw9PS0xIG1lYW5zICJfcHJvYmVfYXJnYyIuICAqLwotKyAg Z2RiX2Fzc2VydCAoc2VsID49IC0xICYmIHNlbCA8PSBTVEFQX01BWF9BUkdTKTsKLSsKLSsgIHBj X3Byb2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMsICZvYmpmaWxlKTsKLSsgIGlmIChwY19wcm9i ZSA9PSBOVUxMKQotKyAgICBlcnJvciAoXygiTm8gU3lzdGVtVGFwIHByb2JlIGF0IFBDICVzIiks IGNvcmVfYWRkcl90b19zdHJpbmcgKHBjKSk7Ci0rCi0rICBuX3Byb2JlcwotKyAgICA9IG9iamZp bGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChvYmpm aWxlLAotKwkJCQkJCQkJcGNfcHJvYmUpOwotKyAgaWYgKHNlbCA9PSAtMSkKLSsgICAgewotKyAg ICAgIHZhbHVlLT5raW5kID0gYXhzX3J2YWx1ZTsKLSsgICAgICB2YWx1ZS0+dHlwZSA9IGJ1aWx0 aW5fdHlwZSAoZXhwci0+Z2RiYXJjaCktPmJ1aWx0aW5faW50OwotKyAgICAgIGF4X2NvbnN0X2wg KGV4cHIsIG5fcHJvYmVzKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGdkYl9hc3Nl cnQgKHNlbCA+PSAwKTsKLSsgIGlmIChzZWwgPj0gbl9wcm9iZXMpCi0rICAgIGVycm9yIChfKCJJ bnZhbGlkIHByb2JlIGFyZ3VtZW50ICVkIC0tIHByb2JlIGhhcyAlZCBhcmd1bWVudHMgYXZhaWxh YmxlIiksCi0rCSAgIHNlbCwgbl9wcm9iZXMpOwotKwotKyAgb2JqZmlsZS0+c2YtPnN5bV9wcm9i ZV9mbnMtPnN5bV9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBwY19wcm9iZSwKLSsJCQkJCQkgZXhw ciwgdmFsdWUsIHNlbCk7Ci0rfQotKwotKwwKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBgJF9w cm9iZV9hcmcqJyBzZXQgb2YgdmFyaWFibGVzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVybmFsdmFyX2Z1bmNzIHByb2JlX2Z1bmNzID0KLSt7Ci0rICBjb21wdXRlX3Byb2JlX2Fy ZywKLSsgIGNvbXBpbGVfcHJvYmVfYXJnLAotKyAgTlVMTAotK307Ci0rCi0rdm9pZAotK19pbml0 aWFsaXplX3N0YXBfcHJvYmUgKHZvaWQpCi0rewotKyAgYWRkX2luZm8gKCJwcm9iZXMiLCBpbmZv X3Byb2Jlc19jb21tYW5kLCBfKCJcCi0rU2hvdyBhdmFpbGFibGUgc3RhdGljIHByb2Jlcy5cblwK LStVc2FnZTogaW5mbyBwcm9iZXMgW1BST1ZJREVSIFtOQU1FIFtPQkpFQ1RdXV1cblwKLStFYWNo IGFyZ3VtZW50IGlzIGEgcmVndWxhciBleHByZXNzaW9uLCB1c2VkIHRvIHNlbGVjdCBwcm9iZXMu XG5cCi0rUFJPVklERVIgbWF0Y2hlcyBwcm9iZSBwcm92aWRlciBuYW1lcy5cblwKLStOQU1FIG1h dGNoZXMgdGhlIHByb2JlIG5hbWVzLlxuXAotK09CSkVDVCBtYXRjaCB0aGUgZXhlY3V0YWJsZSBv ciBzaGFyZWQgbGlicmFyeSBuYW1lLiIpKTsKLSsKLSsgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2Nt ZCAoInN0YXAtZXhwcmVzc2lvbiIsIGNsYXNzX21haW50ZW5hbmNlLAotKwkJCSAgICAmc3RhcF9l eHByZXNzaW9uX2RlYnVnLAotKwkJCSAgICBfKCJTZXQgU3lzdGVtVGFwIGV4cHJlc3Npb24gZGVi dWdnaW5nLiIpLAotKwkJCSAgICBfKCJTaG93IFN5c3RlbVRhcCBleHByZXNzaW9uIGRlYnVnZ2lu Zy4iKSwKLSsJCQkgICAgXygiV2hlbiBub24temVybywgdGhlIGludGVybmFsIHJlcHJlc2VudGF0 aW9uICIKLSsJCQkgICAgICAib2YgU3lzdGVtVGFwIGV4cHJlc3Npb25zIHdpbGwgYmUgcHJpbnRl ZC4iKSwKLSsJCQkgICAgTlVMTCwKLSsJCQkgICAgc2hvd19zdGFwZXhwcmVzc2lvbmRlYnVnLAot KwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0rCi0rICBjcmVhdGVfaW50 ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZ2MiLCAmcHJvYmVfZnVuY3MsCi0rCQkJCSh2 b2lkICopICh1aW50cHRyX3QpIC0xKTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkg KCJfcHJvYmVfYXJnMCIsICZwcm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkg MCk7Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzEiLCAmcHJv YmVfZnVuY3MsCi0rCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDEpOwotKyAgY3JlYXRlX2ludGVy bmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmcyIiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9p ZCAqKSAodWludHB0cl90KSAyKTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJf cHJvYmVfYXJnMyIsICZwcm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgMyk7 Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzQiLCAmcHJvYmVf ZnVuY3MsCi0rCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDQpOwotKyAgY3JlYXRlX2ludGVybmFs dmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmc1IiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAq KSAodWludHB0cl90KSA1KTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJv YmVfYXJnNiIsICZwcm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgNik7Ci0r ICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzciLCAmcHJvYmVfZnVu Y3MsCi0rCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDcpOwotKyAgY3JlYXRlX2ludGVybmFsdmFy X3R5cGVfbGF6eSAoIl9wcm9iZV9hcmc4IiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAqKSAo dWludHB0cl90KSA4KTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVf YXJnOSIsICZwcm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgOSk7Ci0rICBj cmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzEwIiwgJnByb2JlX2Z1bmNz LAotKwkJCQkodm9pZCAqKSAodWludHB0cl90KSAxMCk7Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJf dHlwZV9sYXp5ICgiX3Byb2JlX2FyZzExIiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAqKSAo dWludHB0cl90KSAxMSk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXByb2JlLmggYi9nZGIv c3RhcC1wcm9iZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOWI2ZGM3 YQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3N0YXAtcHJvYmUuaAotQEAgLTAsMCArMSwxNDQg QEAKLSsvKiBTeXN0ZW1UYXAgcHJvYmUgc3VwcG9ydCBmb3IgR0RCLgotKwotKyAgIENvcHlyaWdo dCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwotKwotKyNpZiAhZGVmaW5lZCAoU1RBUF9QUk9CRV9IKQotKyNkZWZpbmUgU1RBUF9Q Uk9CRV9IIDEKLSsKLSsjaW5jbHVkZSAidmVjLmgiCi0rCi0rc3RydWN0IHN0YXBfYXJnc19pbmZv OwotK3N0cnVjdCBheHNfdmFsdWU7Ci0rc3RydWN0IGxpbmVzcGVjX3Jlc3VsdDsKLSsKLSsvKiBN YWluIHN0cnVjdHVyZSB3aGljaCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhIFN5c3RlbVRhcCBw cm9iZS4gICovCi0rCi0rc3RydWN0IHN0YXBfcHJvYmUKLSt7Ci0rICAvKiBUaGUgcHJvdmlkZXIg b2YgdGhpcyBwcm9iZS4gICovCi0rICBjb25zdCBjaGFyICpwcm92aWRlcjsKLSsKLSsgIC8qIFRo ZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwotKyAgLyog VGhlIGFkZHJlc3Mgd2hlcmUgdGhlIHByb2JlIGlzIGluc2VydGVkLiAgKi8KLSsgIENPUkVfQURE UiBhZGRyZXNzOwotKwotKyAgLyogVGhlIGFkZHJlc3Mgb2YgdGhlIHByb2JlJ3Mgc2VtYXBob3Jl LCBvciAwIGlmIHRoaXMgcHJvYmUgZG9lcyBub3QKLSsgICAgIGhhdmUgYW4gYXNzb2NpYXRlZCBz ZW1hcGhvcmUuICAqLwotKyAgQ09SRV9BRERSIHNlbV9hZGRyOwotKwotKyAgLyogUHJvYmUncyBh cmd1bWVudHMuICBVc2VycyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBleGFtaW5lIHRoaXMsIGJ1dAot KyAgICAgc2hvdWxkIGluc3RlYWQgZXh0cmFjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1l bnRzIHVzaW5nIHRoZQotKyAgICAgbWV0aG9kcyBwcm92aWRlZCBpbiBzeW1fcHJvYmVfZm5zLiAg Ki8KLSsgIGNvbnN0IGNoYXIgKmFyZ3M7Ci0rCi0rICAvKiBQcm9iZSdzIGFyZ3VtZW50cyBhZnRl ciBwYXJzaW5nLiAgVGhpcyBpcyBhbiBvcGFxdWUgc3RydWN0dXJlIHRoYXQKLSsgICAgIHdpbGwg aG9sZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1lbnRzIHBvaW50ZWQgYnkgQVJHUy4gICov Ci0rICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzOwotKwotKyAgLyogZ2RiYXJj aCBzdHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvYmUuICAqLwotKyAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2g7Ci0rfTsKLSsKLSsvKiBTdHJ1Y3R1cmUgd2hpY2ggaG9sZHMgaW5mb3Jt YXRpb24gYWJvdXQgdGhlIHBhcnNpbmcgcHJvY2VzcyBvZiBvbmUgcHJvYmUncwotKyAgIGFyZ3Vt ZW50LiAgKi8KLSsKLStzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvCi0rewotKyAgLyogVGhlIHByb2Jl J3MgYXJndW1lbnQgaW4gYSBzdHJpbmcgZm9ybWF0LiAgKi8KLSsgIGNvbnN0IGNoYXIgKmFyZzsK LSsKLSsgIC8qIEEgcG9pbnRlciB0byB0aGUgZnVsbCBjaGFpbiBvZiBhcmd1bWVudHMuICBUaGlz IGlzIHVzZWZ1bCBmb3IgcHJpbnRpbmcKLSsgICAgIGVycm9yIG1lc3NhZ2VzLiAgVGhlIHBhcnNl ciBmdW5jdGlvbnMgc2hvdWxkIG5vdCBtb2RpZnkgdGhpcyBhcmd1bWVudAotKyAgICAgZGlyZWN0 bHk7IGluc3RlYWQsIHRoZXkgc2hvdWxkIHVzZSB0aGUgQVJHIHBvaW50ZXIgYWJvdmUuICAqLwot KyAgY29uc3QgY2hhciAqc2F2ZWRfYXJnOwotKwotKyAgLyogVGhlIGV4cGVjdGVkIGFyZ3VtZW50 IHR5cGUgKGJpdG5lc3MpLCBhcyBkZWZpbmVkIGluIHRoZSBwcm9iZSdzCi0rICAgICBhcmd1bWVu dC4gIEZvciBpbnN0YW5jZSwgaWYgdGhlIGFyZ3VtZW50IGJlZ2lucyB3aXRoIGAtOEAnLCBpdCBt ZWFucwotKyAgICAgdGhlIGJpdG5lc3MgaXMgNjQtYml0IHNpZ25lZC4gIEluIHRoaXMgY2FzZSwg QVJHX1RZUEUgd291bGQgcmVwcmVzZW50Ci0rICAgICB0aGUgdHlwZSBgaW50NjRfdCcuICAqLwot KyAgc3RydWN0IHR5cGUgKmFyZ190eXBlOwotKwotKyAgLyogQSBwb2ludGVyIHRvIHRoZSBjdXJy ZW50IGdkYmFyY2guICAqLwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0rCi0rICAvKiBH cmVhdGVyIHRoYW4gemVybyBpZiB3ZSBhcmUgaW5zaWRlIGEgcGFyZW50aGVzaXplZCBleHByZXNz aW9uLiAgVXNlZnVsCi0rICAgICBmb3Iga25vd2luZyB3aGVuIHRvIHNraXAgc3BhY2VzIG9yIG5v dC4gICovCi0rICBpbnQgaW5zaWRlX3BhcmVuX3A7Ci0rfTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBz dGFwX3Byb2JlICpzdGFwX3Byb2JlX3A7Ci0rREVGX1ZFQ19QIChzdGFwX3Byb2JlX3ApOwotKwot Ky8qIEEgaGVscGVyIGZvciBsaW5lc3BlYyB0aGF0IGRlY29kZXMgYSBzdGFwIHByb2JlIHNwZWNp ZmljYXRpb24uICBJdAotKyAgIHJldHVybnMgYSBzeW10YWJzX2FuZF9saW5lcyBvYmplY3QgYW5k IHVwZGF0ZXMgKkFSR1BUUiBvciB0aHJvd3MgYW4KLSsgICBlcnJvci4gICovCi0rCi0rZXh0ZXJu IHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRy LAotKwkJCQkJCSAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdCAqY2Fub24pOwotKwotKy8qIFNlYXJj aCBPQkpGSUxFIGZvciBhIHByb2JlIHdpdGggdGhlIGdpdmVuIFBST1ZJREVSIGFuZCBOQU1FLgot KyAgIFJldHVybiBhIFZFQyBvZiBhbGwgcHJvYmVzIHRoYXQgd2VyZSBmb3VuZC4gIElmIG5vIG1h dGNoaW5nIHByb2JlCi0rICAgaXMgZm91bmQsIHJldHVybiBOVUxMLiAgVGhlIGNhbGxlciBtdXN0 IGZyZWUgdGhlIFZFQy4gICovCi0rCi0rZXh0ZXJuIFZFQyAoc3RhcF9wcm9iZV9wKSAqZmluZF9w cm9iZXNfaW5fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCQkJICAgY29u c3QgY2hhciAqcHJvdmlkZXIsCi0rCQkJCQkJICAgY29uc3QgY2hhciAqbmFtZSk7Ci0rCi0rLyog R2l2ZW4gYSBQQywgZmluZCBhbiBhc3NvY2lhdGVkIFN5c3RlbVRhcCBwcm9iZS4gIElmIGEgcHJv YmUgaXMKLSsgICBmb3VuZCwgc2V0ICpPQkpGSUxFX09VVCB0byB0aGUgcHJvYmUncyBvYmpmaWxl LCBhbmQgcmV0dXJuIHRoZQotKyAgIHByb2JlLiAgSWYgbm8gcHJvYmUgaXMgZm91bmQsIHJldHVy biBOVUxMLiAgKi8KLSsKLStleHRlcm4gc3RydWN0IHN0YXBfcHJvYmUgKmZpbmRfcHJvYmVfYnlf cGMgKENPUkVfQUREUiBwYywKLSsJCQkJCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0 KTsKLSsKLSsvKiBHaXZlbiBQUk9CRSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBw cmVzZW50IGluIHRoYXQgcHJvYmUncwotKyAgIGFyZ3VtZW50IHN0cmluZy4gICovCi0rCi0rZXh0 ZXJuIGludCBzdGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlKTsKLSsKLSsvKiBHaXZlbiBQQVJTRURfQVJHUywgZnJlZXMgdGhlIHNwYWNlIGFsbG9j YXRlZCB0byBob2xkIGluZm9ybWF0aW9uIGFib3V0Ci0rICAgdGhlIHByb2JlJ3MgcGFyc2VkIGFy Z3VtZW50cy4gICovCi0rCi0rZXh0ZXJuIHZvaWQgc3RhcF9mcmVlX3BhcnNlZF9hcmdzIChzdHJ1 Y3Qgc3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzKTsKLSsKLSsvKiBFdmFsdWF0ZSB0aGUgcHJv YmUncyBhcmd1bWVudCBOLCByZXR1cm5pbmcgYSB2YWx1ZSBjb3JyZXNwb25kaW5nCi0rICAgdG8g aXQuICAqLwotKwotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKnN0YXBfZXZhbHVhdGVfcHJvYmVfYXJn dW1lbnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkJCSAgIHN0cnVjdCBzdGFwX3By b2JlICpwcm9iZSwKLSsJCQkJCQkgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCQkJ ICAgaW50IG4pOwotKwotKy8qIENvbXBpbGUgdGhlIHByb2JlJ3MgYXJndW1lbnQgTiB0byBhZ2Vu dCBleHByZXNzaW9uLiAgKi8KLSsKLStleHRlcm4gdm9pZCBzdGFwX2NvbXBpbGVfdG9fYXggKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQlzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCi0r CQkJCXN0cnVjdCBhZ2VudF9leHByICpleHByLAotKwkJCQlzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1 ZSwKLSsJCQkJaW50IG4pOwotKwotKy8qIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBmaW5k cyBhIHByb2JlIGF0IHRoZSBQQyBpbiBGUkFNRSBhbmQKLSsgICBldmFsdWF0ZXMgYXJndW1lbnQg Ti4gIElmIHRoZXJlIGlzIG5vIHByb2JlIGF0IHRoYXQgbG9jYXRpb24sIG9yIGlmCi0rICAgdGhl IHByb2JlIGRvZXMgbm90IGhhdmUgZW5vdWdoIGFyZ3VtZW50cywgdGhpcyByZXR1cm5zIE5VTEwu ICAqLwotKwotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKnN0YXBfc2FmZV9ldmFsdWF0ZV9hdF9wYyAo c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJCQkJICAgICAgIGludCBuKTsKLSsKLSsjZW5k aWYgLyogIWRlZmluZWQgKFNUQVBfUFJPQkVfSCkgKi8KLWRpZmYgLS1naXQgYS9nZGIvc3ltZmls ZS5oIGIvZ2RiL3N5bWZpbGUuaAotaW5kZXggNmI2NjRjZC4uNmNhNzk3ZCAxMDA2NDQKLS0tLSBh L2dkYi9zeW1maWxlLmgKLSsrKyBiL2dkYi9zeW1maWxlLmgKLUBAIC0yOSw2ICsyOSwxMSBAQCBz dHJ1Y3Qgb2JqZmlsZTsKLSBzdHJ1Y3Qgb2JqX3NlY3Rpb247Ci0gc3RydWN0IG9ic3RhY2s7Ci0g c3RydWN0IGJsb2NrOwotK3N0cnVjdCBzdGFwX3Byb2JlOwotK3N0cnVjdCB2YWx1ZTsKLStzdHJ1 Y3QgZnJhbWVfaW5mbzsKLStzdHJ1Y3QgYWdlbnRfZXhwcjsKLStzdHJ1Y3QgYXhzX3ZhbHVlOwot IAotIC8qIENvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHN5bWJvbCBsb29rIHVwcy4gICovCi0gCi1A QCAtMjk5LDYgKzMwNCw1MiBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJCQlp bnQgbmVlZF9mdWxsbmFtZSk7Ci0gfTsKLSAKLSsvKiBTdHJ1Y3R1cmUgb2YgZnVuY3Rpb25zIHVz ZWQgZm9yIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0LiAgSWYgb25lIG9mCi0rICAgdGhlc2UgZnVu Y3Rpb25zIGlzIHByb3ZpZGVkLCBhbGwgbXVzdCBiZS4gICovCi0rCi0rc3RydWN0IHN5bV9wcm9i ZV9mbnMKLSt7Ci0rICAvKiBJZiBub24tTlVMTCwgcmV0dXJuIGFuIGFycmF5IG9mIFN5c3RlbVRh cCBwcm9iZSBvYmplY3RzLiAgVGhlCi0rICAgICBudW1iZXIgb2Ygb2JqZWN0cyBpcyByZXR1cm5l ZCBpbiAqTlVNX1BST0JFUy4gICovCi0rICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqKCpzeW1fZ2V0X3By b2JlcykgKHN0cnVjdCBvYmpmaWxlICosCi0rCQkJCQkgICAgICBpbnQgKm51bV9wcm9iZXMpOwot KwotKyAgLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGF2YWlsYWJsZSB0byBQUk9C RS4gIFBST0JFIHdpbGwKLSsgICAgIGhhdmUgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZp bGUncyBzeW1fZ2V0X3Byb2JlcyBtZXRob2QuCi0rICAgICBJZiB5b3UgcHJvdmlkZSBhbiBpbXBs ZW1lbnRhdGlvbiBvZiBzeW1fZ2V0X3Byb2JlcywgeW91IG11c3QKLSsgICAgIGltcGxlbWVudCB0 aGlzIG1ldGhvZCBhcyB3ZWxsLiAgKi8KLSsgIGludCAoKnN5bV9nZXRfcHJvYmVfYXJndW1lbnRf Y291bnQpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJICAgICAgIHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZSk7Ci0rCi0rICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGF2YWls YWJsZSB0byBQUk9CRS4gIFBST0JFIHdpbGwgaGF2ZQotKyAgICAgY29tZSBmcm9tIGEgY2FsbCB0 byB0aGlzIG9iamZpbGUncyBzeW1fZ2V0X3Byb2JlcyBtZXRob2QuICBOIHdpbGwKLSsgICAgIGJl IGJldHdlZW4gMCBhbmQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYXZhaWxhYmxlIHRvIHRoaXMg cHJvYmUuCi0rICAgICBGUkFNRSBpcyB0aGUgZnJhbWUgaW4gd2hpY2ggdGhlIGV2YWx1YXRpb24g aXMgZG9uZTsgdGhlIGZyYW1lJ3MKLSsgICAgIFBDIHdpbGwgbWF0Y2ggdGhlIGFkZHJlc3Mgb2Yg dGhlIHByb2JlLiAgSWYgeW91IHByb3ZpZGUgYW4KLSsgICAgIGltcGxlbWVudGF0aW9uIG9mIHN5 bV9nZXRfcHJvYmVzLCB5b3UgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QKLSsgICAgIGFzIHdl bGwuICAqLwotKyAgc3RydWN0IHZhbHVlICooKnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCkg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkJCXN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSwKLSsJCQkJCQlzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCQkJaW50IG4pOwotKwot KyAgLyogQ29tcGlsZSB0aGUgTnRoIHByb2JlIGFyZ3VtZW50IHRvIGFuIGFnZW50IGV4cHJlc3Np b24uICBQUk9CRQotKyAgICAgd2lsbCBoYXZlIGNvbWUgZnJvbSBhIGNhbGwgdG8gdGhpcyBvYmpm aWxlJ3Mgc3ltX2dldF9wcm9iZXMKLSsgICAgIG1ldGhvZC4gIE4gd2lsbCBiZSBiZXR3ZWVuIDAg YW5kIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCi0rICAgICBhdmFpbGFibGUgdG8gdGhpcyBwcm9i ZS4gIEVYUFIgYW5kIFZBTFVFIGFyZSB0aGUgYWdlbnQgZXhwcmVzc2lvbgotKyAgICAgdGhhdCBp cyBiZWluZyB1cGRhdGVkLiAgKi8KLSsgIHZvaWQgKCpzeW1fY29tcGlsZV90b19heCkgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAot KwkJCSAgICAgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkJICAgICBzdHJ1Y3QgYXhzX3Zh bHVlICp2YWx1ZSwKLSsJCQkgICAgIGludCBuKTsKLSsKLSsgIC8qIFJlbG9jYXRlIHRoZSBwcm9i ZSBzZWN0aW9uIG9mIE9CSkZJTEUuICAqLwotKyAgdm9pZCAoKnN5bV9yZWxvY2F0ZV9wcm9iZSkg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNl dHMgKm5ld19vZmZzZXRzLAotKwkJCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRh KTsKLSt9OwotKwotIC8qIFN0cnVjdHVyZSB0byBrZWVwIHRyYWNrIG9mIHN5bWJvbCByZWFkaW5n IGZ1bmN0aW9ucyBmb3IgdmFyaW91cwotICAgIG9iamVjdCBmaWxlIHR5cGVzLiAgKi8KLSAKLUBA IC0zNjksNiArNDIwLDEwIEBAIHN0cnVjdCBzeW1fZm5zCi0gCi0gICBiZmRfYnl0ZSAqKCpzeW1f cmVsb2NhdGUpIChzdHJ1Y3Qgb2JqZmlsZSAqLCBhc2VjdGlvbiAqc2VjdHAsIGJmZF9ieXRlICpi dWYpOwotIAotKyAgLyogSWYgbm9uLU5VTEwsIHRoaXMgb2JqZmlsZSBoYXMgcHJvYmUgc3VwcG9y dCwgYW5kIGFsbCB0aGUgcHJvYmUKLSsgICAgIGZ1bmN0aW9ucyByZWZlcnJlZCB0byBoZXJlIHdp bGwgYmUgbm9uLU5VTEwuICAqLwotKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnN5bV9w cm9iZV9mbnM7Ci0rCi0gICAvKiBUaGUgInF1aWNrIiAoYWthIHBhcnRpYWwpIHN5bWJvbCBmdW5j dGlvbnMgZm9yIHRoaXMgc3ltYm9sCi0gICAgICByZWFkZXIuICAqLwotICAgY29uc3Qgc3RydWN0 IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgKnFmOwotZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBi L2dkYi9zeW10YWIuYwotaW5kZXggMTc0NmQ2OS4uMmFiYzE3ZiAxMDA2NDQKLS0tLSBhL2dkYi9z eW10YWIuYwotKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtODY5LDYgKzg2OSw3IEBAIGluaXRfc2Fs IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpCi0gICBzYWwtPmVuZCA9IDA7Ci0gICBzYWwt PmV4cGxpY2l0X3BjID0gMDsKLSAgIHNhbC0+ZXhwbGljaXRfbGluZSA9IDA7Ci0rICBzYWwtPnNl bWFwaG9yZSA9IDA7Ci0gfQotIAwKLSAKLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9nZGIv c3ltdGFiLmgKLWluZGV4IDQ4MzZkZDYuLjY2OGEyMmIgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltdGFi LmgKLSsrKyBiL2dkYi9zeW10YWIuaAotQEAgLTEwNTYsNiArMTA1NiwxMCBAQCBzdHJ1Y3Qgc3lt dGFiX2FuZF9saW5lCi0gICBDT1JFX0FERFIgZW5kOwotICAgaW50IGV4cGxpY2l0X3BjOwotICAg aW50IGV4cGxpY2l0X2xpbmU7Ci0rCi0rICAvKiBJZiBub24temVybywgdGhlIHNlbWFwaG9yZSBs b2NhdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBTeXN0ZW1UYXAKLSsgICAgIHByb2JlLiAgKi8KLSsg IENPUkVfQUREUiBzZW1hcGhvcmU7Ci0gfTsKLSAKLSBleHRlcm4gdm9pZCBpbml0X3NhbCAoc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKTsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5hZGEvcGFja2VkX2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJy YXkuZXhwCi1pbmRleCA2Nzg2MzljLi40N2EyMjAyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9w YWNrZWRfYXJyYXkuZXhwCi1AQCAtNjAsNSArNjAsMTEgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0 ZXN0IiAiJHRlc3QiIHsKLSAgICAgICAgICMgYXJlLiAgT2JzZXJ2ZWQgd2l0aCAoRlNGIEdOVSBB ZGEgNC41LjMgMjAxMTAxMjQpLgotICAgICAgICAgeGZhaWwgJHRlc3QKLSAgICAgfQotKyAgICAt cmUgIj0gXFwoXFwpXFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgewotKwkjIGFyY2hlci1qYW5rcmF0 b2NodmlsLXZsYSByZXNvbHZlcyBpdCBhcyBhIGR5bmFtaWMgdHlwZSByZXNvbHZlZCBhcyBhbgot KwkjIGVtcHR5IGFycmF5IFswLi4tMV0uCi0rCSMgRFdfQVRfdXBwZXJfYm91bmQgOiAoRFdfT1Bf ZmJyZWc6IC00ODsgRFdfT1BfZGVyZWYpCi0rICAgICAgICB4ZmFpbCAkdGVzdAotKyAgICB9Ci0g fQotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2lu dGVyLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9v LlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44M2ZhYWY2Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1m b28uUwotQEAgLTAsMCArMSw0NTcgQEAKLSsJLmZpbGUJIng4Nl82NC12bGEtcG9pbnRlci5jIgot Kwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoK LSsJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19pbmZvMDoKLSsJ LnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnRl eHQKLSsuTHRleHQwOgotKy5nbG9ibCBmb28KLSsJLnR5cGUJZm9vLCBAZnVuY3Rpb24KLStmb286 Ci0rLkxGQjI6Ci0rCS5maWxlIDEgIng4Nl82NC12bGEtcG9pbnRlci5jIgotKwkubG9jIDEgMjIg MAotKwlwdXNocQklcmJwCi0rLkxDRkkwOgotKwltb3ZxCSVyc3AsICVyYnAKLSsuTENGSTE6Ci0r CXN1YnEJJDY0LCAlcnNwCi0rLkxDRkkyOgotKwltb3ZsCSVlZGksIC0zNiglcmJwKQotKwkubG9j IDEgMjIgMAotKwltb3ZxCSVyc3AsICVyYXgKLSsJbW92cQklcmF4LCAtNDgoJXJicCkKLSsJLmxv YyAxIDIzIDAKLSsJbW92bAktMzYoJXJicCksICVlZHgKLSsJbW92c2xxCSVlZHgsJXJheAotKwlz dWJxCSQxLCAlcmF4Ci0rCW1vdnEJJXJheCwgLTI0KCVyYnApCi0rCS5sb2MgMSAyNCAwCi0rCW1v dnNscQklZWR4LCVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJc2hy cQkkNCwgJXJheAotKwlzYWxxCSQ0LCAlcmF4Ci0rCXN1YnEJJXJheCwgJXJzcAotKwltb3ZxCSVy c3AsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAot KwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJbW92cQklcmF4LCAtNTYoJXJicCkK LSsJbW92cQktNTYoJXJicCksICVyYXgKLSsJbW92cQklcmF4LCAtMTYoJXJicCkKLSsJLmxvYyAx IDI3IDAKLSsJbW92bAkkMCwgLTQoJXJicCkKLSsJam1wCS5MMgotKy5MMzoKLSsJLmxvYyAxIDI4 IDAKLSsJbW92bAktNCglcmJwKSwgJWVzaQotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCW1vdmwJ JWVheCwgJWVjeAotKwltb3ZxCS0xNiglcmJwKSwgJXJkeAotKwltb3ZzbHEJJWVzaSwlcmF4Ci0r CW1vdmIJJWNsLCAoJXJkeCwlcmF4KQotKwkubG9jIDEgMjcgMAotKwlhZGRsCSQxLCAtNCglcmJw KQotKy5MMjoKLSsJbW92bAktNCglcmJwKSwgJWVheAotKwljbXBsCS0zNiglcmJwKSwgJWVheAot KwlqbAkuTDMKLSsJLmxvYyAxIDMwIDAKLSsJLmdsb2JsCWJyZWFrX2hlcmUKLSticmVha19oZXJl OgotKwltb3ZxCS0xNiglcmJwKSwgJXJheAotKwltb3ZiCSQwLCAoJXJheCkKLSsJbW92cQktNDgo JXJicCksICVyc3AKLSsJLmxvYyAxIDMxIDAKLSsJbGVhdmUKLSsJcmV0Ci0rLkxGRTI6Ci0rCS5z aXplCWZvbywgLi1mb28KLSsJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBwcm9nYml0cwotKy5M ZnJhbWUwOgotKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKLSsuTFNDSUUwOgotKwkubG9uZwkweGZm ZmZmZmZmCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xl YjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS5ieXRlCTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVs ZWIxMjggMHg4Ci0rCS5ieXRlCTB4OTAKLSsJLnVsZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxF Q0lFMDoKLSsuTFNGREUwOgotKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCi0rLkxBU0ZERTA6Ci0r CS5sb25nCS5MZnJhbWUwCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyLS5MRkIyCi0rCS5i eXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4 MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5M Q0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5M RUZERTA6Ci0rCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCi0rLkxmcmFtZTE6Ci0r CS5sb25nCS5MRUNJRTEtLkxTQ0lFMQotKy5MU0NJRTE6Ci0rCS5sb25nCTB4MAotKwkuYnl0ZQkw eDEKLSsJLnN0cmluZwkielIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0 ZQkweDEwCi0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHhjCi0rCS51bGVi MTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJ LmFsaWduIDgKLSsuTEVDSUUxOgotKy5MU0ZERTE6Ci0rCS5sb25nCS5MRUZERTEtLkxBU0ZERTEK LSsuTEFTRkRFMToKLSsJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKLSsJLmxvbmcJLkxGQjIKLSsJ LmxvbmcJLkxGRTItLkxGQjIKLSsJLnVsZWIxMjggMHgwCi0rCS5ieXRlCTB4NAotKwkubG9uZwku TENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4Ngot KwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5 dGUJMHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTE6Ci0rCS50ZXh0Ci0r LkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19s b2MwOgotKy5MTFNUMDoKLSsJLnF1YWQJLkxGQjItLkx0ZXh0MAotKwkucXVhZAkuTENGSTAtLkx0 ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIxMjggOAotKwkucXVhZAku TENGSTAtLkx0ZXh0MAotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5i eXRlCTB4NzcKLSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJLkxDRkkxLS5MdGV4dDAKLSsJLnF1YWQJ LkxGRTItLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzYKLSsJLnNsZWIxMjggMTYK LSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKy5MZGVi dWdfcmVsYXRpdmU6Ci0rCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAotKy5MZGVi dWdfc3RhcnQ6Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCi0rCS5ieXRl CTB4OAotKwkudWxlYjEyOCAweDEKLSsJLmxvbmcJLkxBU0YyCi0rCS5ieXRlCTB4MQotKwkubG9u ZwkuTEFTRjMKLSsJLmxvbmcJLkxBU0Y0Ci0rCS5xdWFkCS5MdGV4dDAKLSsJLnF1YWQJLkxldGV4 dDAKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHgxCi0r CS5zdHJpbmcJImZvbyIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTYKLSsJLmJ5dGUJMHgxCi0r CS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyCi0rCS5sb25nCS5MTFNUMAotKwkubG9uZwkuTHR5 cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQotKwkudWxlYjEyOCAweDMKLSsJLmxvbmcJLkxBU0Y1 Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE1Ci0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVn X3JlbGF0aXZlCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC01MgotKy5M dGFnX3BvaW50ZXI6Ci0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDgJLyogRFdfQVRfYnl0ZV9z aXplICovCi0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwkvKiBEV19BVF90 eXBlICovCi0rCS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1IChEV19UQUdfdmFyaWFi bGUpICovCi0rCS5sb25nCS5MQVNGMAotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxOAotKyNpZiAx Ci0rCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVidWdfaW5mbwotKyNlbHNlCi0rCS8qIERlYnVn Z2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAgKi8KLSsJLmxvbmcJLkx0 YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCi0rI2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9u OiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJ LnNsZWIxMjggLTMyCi0rI2lmIDAKLSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCi0rI2Vs c2UKLSsJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KLSsjZW5kaWYKLSsJLyogRFdfQVRfbG9j YXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg2Ci0rCS5zdHJpbmcJ ImkiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE5Ci0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRl YnVnX3JlbGF0aXZlCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC0yMAot KwkuYnl0ZQkweDAKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOCAweDcKLSsJLmJ5dGUJMHg0Ci0r CS5ieXRlCTB4NQotKwkuc3RyaW5nCSJpbnQiCi0rLkx0YWdfYXJyYXlfdHlwZToKLSsJLnVsZWIx MjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLwotKwkubG9u ZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmxvbmcJLkx0eXBlX3Vsb25nIC0g LkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3JlZjQgKi8KLSsxOgkv KiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJ MmYgLSAzZgkvKiBsZW5ndGggKi8KLSszOgotKwkuYnl0ZQkweDk3CS8qIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MgKi8KLSsjaWYgMQotKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KLSsj ZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLwotKyNlbmRpZgotKzI6CS8qIERXX0FU X2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg5Ci0r CS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF90eXBlOiBEV19G T1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTQwCi0r CS5ieXRlCTB4NgotKwkuYnl0ZQkweDAKLSsuTHR5cGVfdWxvbmc6Ci0rCS51bGViMTI4IDB4YQot KwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHg3Ci0rLkx0eXBlX2NoYXI6Ci0rCS51bGViMTI4IDB4Ygot KwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHg2Ci0rCS5sb25nCS5MQVNGMQotKwkuYnl0ZQkweDAKLSsu TGRlYnVnX2VuZDoKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKwkudWxlYjEyOCAweDEKLSsJ LnVsZWIxMjggMHgxMQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgyNQotKwkudWxlYjEyOCAw eGUKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51 bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDFiCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAw eDExCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEyCi0rCS51bGViMTI4IDB4MQotKwku dWxlYjEyOCAweDEwCi0rCS51bGViMTI4IDB4NgotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweDJlCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAw eDNmCi0rCS51bGViMTI4IDB4YwotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS51 bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4MjcKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MTEKLSsJ LnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4 IDB4NDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEzCi0r CS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4NQot KwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAw eDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4 IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NAkvKiAuTHRhZ19w b2ludGVyIGFiYnJldiAqLwotKwkudWxlYjEyOCAweDBmCS8qIERXX1RBR19wb2ludGVyX3R5cGUg Ki8KLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4NQotKwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMK LSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgx MwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxl YjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4MAotKwku Ynl0ZQkweDAKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJh eV90eXBlKSAqLwotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4NDkJ LyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwku dWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZP Uk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFfbG9jYXRpb24gKi8KLSsJ LnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHg5Ci0rCS51bGViMTI4IDB4MjEKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVm NCAqLwotKwkudWxlYjEyOCAweDJmCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4YQotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjgg MHhiCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVs ZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4 ZQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkuc2VjdGlvbgkuZGVi dWdfcHVibmFtZXMsIiIsQHByb2diaXRzCi0rCS5sb25nCTB4MTYKLSsJLnZhbHVlCTB4MgotKwku bG9uZwkuTGRlYnVnX2luZm8wCi0rCS5sb25nCTB4YTgKLSsJLmxvbmcJMHgyZAotKwkuc3RyaW5n CSJmb28iCi0rCS5sb25nCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJvZ2Jp dHMKLSsJLmxvbmcJMHgyYwotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJ LmJ5dGUJMHg4Ci0rCS5ieXRlCTB4MAotKwkudmFsdWUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnF1 YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCi0rCS5xdWFkCTB4MAotKwkucXVh ZAkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0cywxCi0rLkxBU0YwOgot Kwkuc3RyaW5nCSJhcnJheSIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJInNpemUiCi0rLkxBU0YzOgot Kwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsuTEFTRjY6Ci0rCS5zdHJpbmcJImFy cmF5X3QiCi0rLkxBU0YxOgotKwkuc3RyaW5nCSJjaGFyIgotKy5MQVNGNDoKLSsJLnN0cmluZwki Z2RiLmFyY2giCi0rLkxBU0YyOgotKwkuc3RyaW5nCSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVk IEhhdCA0LjMuMi03KSIKLSsJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQg SGF0IDQuMy4yLTcpIgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZTJjOGY3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCi1AQCAtMCwwICsxLDQz IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmIDAKLSsK LSt2b2lkCi0rZm9vIChpbnQgc2l6ZSkKLSt7Ci0rICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXpl XTsKLSsgIGFycmF5X3QgYXJyYXk7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBz aXplOyBpKyspCi0rICAgIGFycmF5W2ldID0gaTsKLSsKLSsgIGFycmF5WzBdID0gMDsJLyogYnJl YWstaGVyZSAqLwotK30KLSsKLSsjZWxzZQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAg Zm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsjZW5kaWYKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kMjQzY2YxCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKLUBAIC0wLDAg KzEsNjYgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAhW2lzdGFyZ2V0ICJ4 ODZfNjQtKi0qIl0gdGhlbiB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gv eDg2XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKLSsgICAg cmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXBvaW50ZXIKLStzZXQgc3Jj YXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStz ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rc2V0IGJpbm9iamZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubwotK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIg b2JqZWN0IHt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVz dCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4 ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21w aWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2Ri X3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQg JHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB4ODZfNjQt dmxhLXBvaW50ZXIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3BvaW50ICJicmVh a19oZXJlIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgotKwot K2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFi bGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0 eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwot K2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0 OiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBc XFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlICphcnJheSIKLSsKLStnZGJfdGVzdCAicCAoKmFycmF5 KVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgotK2dkYl90ZXN0ICJwICgqYXJyYXkp XFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCi0rZ2RiX3Rlc3QgInAgKCphcnJheSlc WzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAzJyIKLStnZGJfdGVzdCAicCAoKmFycmF5KVxb NFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQnIgotKwotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0g Y2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0r Z2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzc4XFxcXSIg InNlY29uZDogcHR5cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBl ID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJw dHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSAqYXJy YXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVk ZWYtZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28u UwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY2ZjdhMzkKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLWZv by5TCi1AQCAtMCwwICsxLDQ1NSBAQAotKwkuZmlsZQkieDg2XzY0LXZsYS10eXBlZGVmLmMiCi0r CS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgot Kwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwku c2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xpbmUwOgotKwkudGV4 dAotKy5MdGV4dDA6Ci0rLmdsb2JsIGZvbwotKwkudHlwZQlmb28sIEBmdW5jdGlvbgotK2ZvbzoK LSsuTEZCMjoKLSsJLmZpbGUgMSAieDg2XzY0LXZsYS10eXBlZGVmLmMiCi0rCS5sb2MgMSAyMiAw Ci0rCXB1c2hxCSVyYnAKLSsuTENGSTA6Ci0rCW1vdnEJJXJzcCwgJXJicAotKy5MQ0ZJMToKLSsJ c3VicQkkNjQsICVyc3AKLSsuTENGSTI6Ci0rCW1vdmwJJWVkaSwgLTM2KCVyYnApCi0rCS5sb2Mg MSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAotKwltb3ZxCSVyYXgsIC00OCglcmJwKQotKwkubG9j IDEgMjMgMAotKwltb3ZsCS0zNiglcmJwKSwgJWVkeAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCXN1 YnEJJDEsICVyYXgKLSsJbW92cQklcmF4LCAtMjQoJXJicCkKLSsJLmxvYyAxIDI0IDAKLSsJbW92 c2xxCSVlZHgsJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJx CSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJc3VicQklcmF4LCAlcnNwCi0rCW1vdnEJJXJz cCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0r CXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJheAotKwltb3ZxCSVyYXgsIC01NiglcmJwKQot Kwltb3ZxCS01NiglcmJwKSwgJXJheAotKwltb3ZxCSVyYXgsIC0xNiglcmJwKQotKwkubG9jIDEg MjcgMAotKwltb3ZsCSQwLCAtNCglcmJwKQotKwlqbXAJLkwyCi0rLkwzOgotKwkubG9jIDEgMjgg MAotKwltb3ZsCS00KCVyYnApLCAlZXNpCi0rCW1vdmwJLTQoJXJicCksICVlYXgKLSsJbW92bAkl ZWF4LCAlZWN4Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmR4Ci0rCW1vdnNscQklZXNpLCVyYXgKLSsJ bW92YgklY2wsICglcmR4LCVyYXgpCi0rCS5sb2MgMSAyNyAwCi0rCWFkZGwJJDEsIC00KCVyYnAp Ci0rLkwyOgotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCWNtcGwJLTM2KCVyYnApLCAlZWF4Ci0r CWpsCS5MMwotKwkubG9jIDEgMzAgMAotKwkuZ2xvYmwJYnJlYWtfaGVyZQotK2JyZWFrX2hlcmU6 Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmF4Ci0rCW1vdmIJJDAsICglcmF4KQotKwltb3ZxCS00OCgl cmJwKSwgJXJzcAotKwkubG9jIDEgMzEgMAotKwlsZWF2ZQotKwlyZXQKLSsuTEZFMjoKLSsJLnNp emUJZm9vLCAuLWZvbwotKwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIsQHByb2diaXRzCi0rLkxm cmFtZTA6Ci0rCS5sb25nCS5MRUNJRTAtLkxTQ0lFMAotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZm ZmZmZmYKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJIiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGVi MTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxl YjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVD SUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5MRUZERTAtLkxBU0ZERTAKLSsuTEFTRkRFMDoKLSsJ LmxvbmcJLkxmcmFtZTAKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTItLkxGQjIKLSsJLmJ5 dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgx MAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxD RkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxF RkRFMDoKLSsJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMKLSsuTGZyYW1lMToKLSsJ LmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi0rLkxTQ0lFMToKLSsJLmxvbmcJMHgwCi0rCS5ieXRlCTB4 MQotKwkuc3RyaW5nCSJ6UiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRl CTB4MTAKLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkweGMKLSsJLnVsZWIx MjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwku YWxpZ24gOAotKy5MRUNJRTE6Ci0rLkxTRkRFMToKLSsJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQot Ky5MQVNGREUxOgotKwkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQotKwkubG9uZwkuTEZCMgotKwku bG9uZwkuTEZFMi0uTEZCMgotKwkudWxlYjEyOCAweDAKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5M Q0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0r CS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0 ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMToKLSsJLnRleHQKLSsu TGV0ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xv YzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTEZCMi0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMC0uTHRl eHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCA4Ci0rCS5xdWFkCS5M Q0ZJMC0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5 dGUJMHg3NwotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwkucXVhZAku TEZFMi0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NgotKwkuc2xlYjEyOCAxNgot KwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rCS5sb25n CS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAotKy5MZGVidWdfc3RhcnQ6Ci0rCS52YWx1ZQkw eDIKLSsJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCi0rCS5ieXRlCTB4OAotKwkudWxlYjEyOCAweDEK LSsJLmxvbmcJLkxBU0YyCi0rCS5ieXRlCTB4MQotKwkubG9uZwkuTEFTRjMKLSsJLmxvbmcJLkxB U0Y0Ci0rCS5xdWFkCS5MdGV4dDAKLSsJLnF1YWQJLkxldGV4dDAKLSsJLmxvbmcJLkxkZWJ1Z19s aW5lMAotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJImZvbyIKLSsJLmJ5 dGUJMHgxCi0rCS5ieXRlCTB4MTYKLSsJLmJ5dGUJMHgxCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFk CS5MRkUyCi0rCS5sb25nCS5MTFNUMAotKwkubG9uZwkweDgzCi0rCS51bGViMTI4IDB4MwotKwku bG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTUKLSsJLmxvbmcJMHg4MwotKwku Ynl0ZQkweDIKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtNTIKLSsuTHRhZ190eXBlZGVmOgot KwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxBU0Y2Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE3 Ci0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwotKwkudWxlYjEyOCAweDUJ LyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkubG9uZwkuTEFTRjAK LSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTgKLSsjaWYgMQotKwkubG9uZwkuTHRhZ190eXBlZGVm IC0gLmRlYnVnX2luZm8KLSsjZWxzZQotKwkvKiBEZWJ1Z2dpbmcgb25seTogU2tpcCB0aGUgdHlw ZWRlZiBpbmRpcmVjdGlvbi4gICovCi0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdf aW5mbwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0 ICovCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC0zMgotKyNpZiAwCi0r CS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKyNlbHNlCi0rCS5ieXRlCTB4OTYJLyogRFdf T1Bfbm9wICovCi0rI2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTog ZW5kICovCi0rCS51bGViMTI4IDB4NgotKwkuc3RyaW5nCSJpIgotKwkuYnl0ZQkweDEKLSsJLmJ5 dGUJMHgxOQotKwkubG9uZwkweDgzCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGVi MTI4IC0yMAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg3Ci0rCS5ieXRlCTB4NAotKwkuYnl0 ZQkweDUKLSsJLnN0cmluZwkiaW50IgotKy5MdGFnX2FycmF5X3R5cGU6Ci0rCS51bGViMTI4IDB4 OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8KLSsJLmxvbmcJMHhh MCArICgyZiAtIDFmKQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJLmxvbmcJMHg5 ZCArICgyZiAtIDFmKQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3JlZjQgKi8KLSsxOgkvKiBE V19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMmYg LSAzZgkvKiBsZW5ndGggKi8KLSszOgotKwkuYnl0ZQkweDk3CS8qIERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3MgKi8KLSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCi0rMjoJLyogRFdfQVRf ZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwkudWxlYjEyOCAweDkKLSsJ LmxvbmcJMHg5ZCArICgyYiAtIDFiKQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJ LmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTQwCi0rCS5ieXRlCTB4NgotKwku Ynl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwkuYnl0ZQkweDcKLSsJLnVs ZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDYKLSsJLmxvbmcJLkxBU0YxCi0rCS5i eXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2Ci0rCS51bGVi MTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDI1Ci0r CS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEy OCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MWIKLSsJLnVsZWIxMjggMHhlCi0r CS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIx MjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJLnVsZWIxMjggMHg2Ci0rCS5ieXRlCTB4MAotKwku Ynl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4MmUKLSsJLmJ5dGUJMHgxCi0r CS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEy OCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNwotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIx MjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMgotKwkudWxlYjEyOCAweDEK LSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgxCi0rCS51bGVi MTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVs ZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0r CS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIK LSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0 Ci0rCS51bGViMTI4IDB4MTYKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEy OCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIx MjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEK LSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgz NAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwkudWxlYjEy OCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4Ygot KwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGVi MTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NwotKwkudWxl YjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0r CS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEy OCAweDgKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDgJLyogQWJicmV2 IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51bGViMTI4IDB4MQotKwkuYnl0 ZQkweDEKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJ LyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBEV19BVF9zaWJsaW5nICovCi0r CS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4NTAJLyogRFdf QVRfZGF0YV9sb2NhdGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyogRFdfRk9STV9ibG9jazEgKi8K LSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkKLSsJLnVsZWIxMjggMHgy MQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGVi MTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MmYKLSsJLnVsZWIxMjgg MHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS51bGViMTI4 IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVs ZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhi Ci0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxl YjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLmJ5 dGUJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJ MHgxNgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmxvbmcJMHhhOAot KwkubG9uZwkweDJkCi0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJMHgwCi0rCS5zZWN0aW9uCS5k ZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCi0rCS52YWx1ZQkweDIKLSsJ LmxvbmcJLkxkZWJ1Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHgwCi0rCS52YWx1ZQkw eDAKLSsJLnZhbHVlCTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5xdWFkCS5MZXRleHQwLS5MdGV4 dDAKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIs QHByb2diaXRzLDEKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5IgotKy5MQVNGNToKLSsJLnN0 cmluZwkic2l6ZSIKLSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82NC12bGEtdHlwZWRlZi5jIgot Ky5MQVNGNjoKLSsJLnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJImNoYXIi Ci0rLkxBU0Y0OgotKwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFTRjI6Ci0rCS5zdHJpbmcJIkdO VSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuaWRlbnQJIkdDQzogKEdO VSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5zZWN0aW9uCS5ub3RlLkdO VS1zdGFjaywiIixAcHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXR5cGVkZWYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI4MDljNGUK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10 eXBlZGVmLmMKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLSsjaWYgMAotKwotK3ZvaWQKLStmb28gKGludCBzaXplKQotK3sKLSsgIHR5 cGVkZWYgY2hhciBhcnJheV90W3NpemVdOwotKyAgYXJyYXlfdCBhcnJheTsKLSsgIGludCBpOwot KwotKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKLSsgICAgYXJyYXlbaV0gPSBpOwotKwot KyAgYXJyYXlbMF0gPSAwOwkvKiBicmVhay1oZXJlICovCi0rfQotKwotKyNlbHNlCi0rCi0raW50 Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJu IDA7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS10eXBlZGVmLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIwNTQx MWUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS10eXBlZGVmLmV4cAotQEAgLTAsMCArMSw2NCBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0aW9uIGFjY2Vzc2VkIHRocm91Z2ggRFdfVEFH X3R5cGVkZWYgaW50ZXJtZWRpYXRlLgotKwotK2lmICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0 aGVuIHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXR5 cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4ODZfNjQuIgotKyAgICByZXR1cm4KLSt9Ci0r Ci0rc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlwZWRlZgotK3NldCBzcmNhc21maWxlICR7dGVz dGZpbGV9LWZvby5TCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStzZXQgYmlub2JqZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9 ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0r ICAgIHJldHVybiAtMQotK30KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVi dWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9n cmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0r Ci0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHVudGVzdGVkIHg4Nl82NC12bGEtdHlwZWRlZgot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndo YXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLSsKLStn ZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0 eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAn XFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxc MDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMn IgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0r Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3Qg IndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0r Ci0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29u ZDogcHR5cGUgYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCi1pbmRleCBhOTkxMzdl Li5jM2RjMmQ5IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5j Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLUBAIC0xNyw2ICsxNywx MyBAQAotIAotIGludCBhcnJheVtdID0gezEsIDIsIDMsIDR9OwotIAotKyNpZmRlZiBfX0dOVUNf XwotK3N0cnVjdAotKyAgewotKyAgICBpbnQgYVswXTsKLSsgIH0gdW5ib3VuZDsKLSsjZW5kaWYK LSsKLSBpbnQKLSBtYWluICh2b2lkKQotIHsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhw Ci1pbmRleCBjYmEwMDI0Li4wZGMwZTQ2IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hcnJheWlkeC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHgu ZXhwCi1AQCAtNTMsNCArNTMsMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFycmF5IiBcCi0gICAgICAg ICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFsz XFxcXSA9IDRcXH0iIFwKLSAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0aCBhcnJheS1pbmRleGVz IG9uIgotIAotLQotK3NldCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAmdW5ib3VuZC5hXFswXF0iCi0r Z2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIiA9IDFcclxuJGdkYl9w cm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJObyBzeW1ib2wgXCJ1 bmJvdW5kXCIgaW4gY3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXVuc3Vw cG9ydGVkICIkdGVzdCAobm8gR0NDKSIKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZh dWx0LmV4cAotaW5kZXggOTY3NzM5Ni4uNTVkMDNhOSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVm YXVsdC5leHAKLUBAIC02MTAsNiArNjEwLDE5IEBAIGdkYl90ZXN0X2xpc3RfZXhhY3QgInNob3cg Y29udmVuaWVuY2UiICJzaG93IGNvbnZlbmllbmNlIiBcCi0gCXskX3NkYXRhID0gdm9pZH0gXAot IAl7JF9zaWdpbmZvID0gdm9pZH0gXAotIAl7JF90aHJlYWQgPSAwfSBcCi0rCXskX3Byb2JlX2Fy Z2MgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAotKwl7JF9wcm9iZV9hcmcwID0gPGVy cm9yOiBObyBmcmFtZSBzZWxlY3RlZD59IFwKLSsJeyRfcHJvYmVfYXJnMSA9IDxlcnJvcjogTm8g ZnJhbWUgc2VsZWN0ZWQ+fSBcCi0rCXskX3Byb2JlX2FyZzIgPSA8ZXJyb3I6IE5vIGZyYW1lIHNl bGVjdGVkPn0gXAotKwl7JF9wcm9iZV9hcmczID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59 IFwKLSsJeyRfcHJvYmVfYXJnNCA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0ZWQ+fSBcCi0rCXsk X3Byb2JlX2FyZzUgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAotKwl7JF9wcm9iZV9h cmc2ID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59IFwKLSsJeyRfcHJvYmVfYXJnNyA9IDxl cnJvcjogTm8gZnJhbWUgc2VsZWN0ZWQ+fSBcCi0rCXskX3Byb2JlX2FyZzggPSA8ZXJyb3I6IE5v IGZyYW1lIHNlbGVjdGVkPn0gXAotKwl7JF9wcm9iZV9hcmc5ID0gPGVycm9yOiBObyBmcmFtZSBz ZWxlY3RlZD59IFwKLSsJeyRfcHJvYmVfYXJnMTAgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVk Pn0gXAotKwl7JF9wcm9iZV9hcmcxMSA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0ZWQ+fSBcCi0g ICAgIH0KLSAKLSAjdGVzdCBzaG93IGRpcmVjdG9yaWVzCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uZWViN2I4NQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1AQCAtMCwwICsx LDIwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rc3RydWN0 IHsKLSsgIGludCBmaWVsZDsKLSt9IHN0YXRpY3N0cnVjdCA9IHsgMSB9OwotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42ZDgyZTczCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNz LmV4cAotQEAgLTAsMCArMSwyNiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3Nl dCB0ZXN0IGludGVybmFsLXZhci1maWVsZC1hZGRyZXNzCi0rc2V0IGJpbmZpbGUgJHt0ZXN0fS54 Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0uYyIgIiR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtiaW5maWxlfSIgb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0gewot KyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVy biAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rCi0rZ2RiX3Rlc3Qge3NldCAk dmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQotK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9 ICIgPSAxIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi4yMzZkYTk2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuYwotQEAgLTAsMCArMSwxMDggQEAKLSsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHly aWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWYgVVNFX1BST0JFUwotKwotKyNk ZWZpbmUgX1NEVF9IQVNfU0VNQVBIT1JFUwotK19fZXh0ZW5zaW9uX18gdW5zaWduZWQgc2hvcnQg dGVzdGVfdXNlcl9zZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRl X18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7Ci0rI2RlZmluZSBURVNUIHRlc3RlX3VzZXJfc2Vt YXBob3JlCi0rCi0rX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV90d29fc2VtYXBo b3JlIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5w cm9iZXMiKSkpOwotKyNkZWZpbmUgVEVTVDIgdGVzdGVfdHdvX3NlbWFwaG9yZQotKwotK19fZXh0 ZW5zaW9uX18gdW5zaWduZWQgc2hvcnQgdGVzdGVfbTRfc2VtYXBob3JlIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9iZXMiKSkpOwotKwotK19f ZXh0ZW5zaW9uX18gdW5zaWduZWQgc2hvcnQgdGVzdGVfcHN0cl9zZW1hcGhvcmUgX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7Ci0r Ci0rX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV9wc19zZW1hcGhvcmUgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7 Ci0rI2Vsc2UKLSsKLSsjZGVmaW5lIFRFU1QgMQotKyNkZWZpbmUgVEVTVDIgMQotKwotKyNlbmRp ZgotKwotKyNpbmNsdWRlIDxzeXMvc2R0Lmg+Ci0rCi0rLyogV2Ugb25seSBzdXBwb3J0IFN5c3Rl bVRhcCBhbmQgb25seSB0aGUgdjMgZm9ybS4gICovCi0rI2lmIF9TRFRfTk9URV9UWVBFICE9IDMK LSsjZXJyb3IgIm5vdCB1c2luZyBTeXN0ZW1UYXAgdjMgcHJvYmVzIgotKyNlbmRpZgotKwotK3N0 cnVjdCBmdW5jcwotK3sKLSsgIGludCB2YWw7Ci0rCi0rICBjb25zdCBjaGFyICooKnBzKSAoaW50 KTsKLSt9OwotKwotK3N0YXRpYyB2b2lkCi0rbTEgKHZvaWQpCi0rewotKyAgaWYgKFRFU1QyKQot KyAgICBTVEFQX1BST0JFICh0ZXN0ZSwgdHdvKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSttMiAo dm9pZCkKLSt7Ci0rICBpZiAoVEVTVDIpCi0rICAgIFNUQVBfUFJPQkUgKHRlc3RlLCB0d28pOwot K30KLSsKLStzdGF0aWMgaW50Ci0rZiAoaW50IHgpCi0rewotKyAgaWYgKFRFU1QpCi0rICAgIFNU QVBfUFJPQkUxICh0ZXN0ZSwgdXNlciwgeCk7Ci0rICByZXR1cm4geCs1OwotK30KLSsKLStzdGF0 aWMgY29uc3QgY2hhciAqCi0rcHN0ciAoaW50IHZhbCkKLSt7Ci0rICBjb25zdCBjaGFyICphID0g IlRoaXMgaXMgYSB0ZXN0IG1lc3NhZ2UuIjsKLSsgIGNvbnN0IGNoYXIgKmIgPSAiVGhpcyBpcyBh bm90aGVyIHRlc3QgbWVzc2FnZS4iOwotKwotKyAgU1RBUF9QUk9CRTMgKHRlc3RlLCBwcywgYSwg YiwgdmFsKTsKLSsKLSsgIHJldHVybiB2YWwgPT0gMCA/IGEgOiBiOwotK30KLSsKLStzdGF0aWMg dm9pZAotK200IChjb25zdCBzdHJ1Y3QgZnVuY3MgKmZzLCBpbnQgdikKLSt7Ci0rICBTVEFQX1BS T0JFMyAodGVzdGUsIG00LCBmcy0+dmFsLCBmcy0+cHMgKHYpLCB2KTsKLSt9Ci0rCi0raW50Ci0r bWFpbigpCi0rewotKyAgc3RydWN0IGZ1bmNzIGZzOwotKwotKyAgZnMudmFsID0gNDI7Ci0rICBm cy5wcyA9IHBzdHI7Ci0rCi0rICBmIChmICgyMykpOwotKyAgbTEgKCk7Ci0rICBtMiAoKTsKLSsK LSsgIG00ICgmZnMsIDApOwotKyAgbTQgKCZmcywgMSk7Ci0rCi0rICByZXR1cm4gMDsgLyogbGFz dCBicmVhayBoZXJlICovCi0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c3RhcC1wcm9iZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDY4ZWZiOQotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAotQEAgLTAsMCAr MSwxODcgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxl IHN0YXAtcHJvYmUKLSsKLSsjIFJ1biB0aGUgdGVzdHMuICBXZSBydW4gdGhlIHRlc3RzIHR3byBk aWZmZXJlbnQgd2F5czogb25jZSB3aXRoIGEKLSsjIHBsYWluIHByb2JlLCBhbmQgb25jZSB3aXRo IGEgcHJvYmUgdGhhdCBoYXMgYW4gYXNzb2NpYXRlZCBzZW1hcGhvcmUuCi0rIyBUaGlzIHJldHVy bnMgLTEgb24gZmFpbHVyZSB0byBjb21waWxlIG9yIHN0YXJ0LCAwIG90aGVyd2lzZS4KLStwcm9j IHN0YXBfdGVzdCB7e2FyZyAiIn19IHsKLSsgICAgZ2xvYmFsIHRlc3RmaWxlIGhleAotKwotKyAg ICBpZiB7JGFyZyAhPSAiIn0gewotKyAgICAJc2V0IGFyZyAiYWRkaXRpb25hbF9mbGFncz0kYXJn IgotKwlzZXQgYWRkZW5kdW0gIiwgd2l0aCBzZW1hcGhvcmUsIG5vdCBvcHRpbWl6ZWQiCi0rICAg IH0gZWxzZSB7Ci0rCXNldCBhZGRlbmR1bSAiLCBubyBzZW1hcGhvcmUsIG5vdCBvcHRpbWl6ZWQi Ci0rICAgIH0KLSsKLSsgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3Rlc3RmaWxlfS5jIFwKLSsJICAgW2NvbmNhdCAkYXJnIGRlYnVnXV19 IHsKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSsKLSsgICAgaWYgIVtydW50b19tYWluXSB7Ci0rCXJl dHVybiAtMQotKyAgICB9Ci0rCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAi Tm8gU3lzdGVtVGFwIHByb2JlIGF0IFBDICRoZXgiIFwKLSsJImNoZWNrIGFyZ3VtZW50IG5vdCBh dCBwcm9iZSBwb2ludCRhZGRlbmR1bSIKLSsKLSsgICAgZ2RiX3Rlc3QgImluZm8gcHJvYmVzIiBc Ci0rCSJ0ZXN0ZSAqdXNlciAqJGhleCAuKiIgXAotKwkiaW5mbyBwcm9iZXMkYWRkZW5kdW0iCi0r ICAgIAotKyAgICBpZiB7W3J1bnRvICItcCB0ZXN0ZTp1c2VyIl19IHsKLSsJcGFzcyAicnVuIHRv IC1wIHRlc3RlOnVzZXIkYWRkZW5kdW0iCi0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgInJ1biB0byAt cCB0ZXN0ZTp1c2VyJGFkZGVuZHVtIgotKyAgICB9Ci0rCi0rICAgICMgVGVzdCBwcm9iZSBhcmd1 bWVudHMuCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAotKyAg ICAicHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKLSsgICAgZ2Ri X3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZzAgPT0geCIgIiA9IDEiIFwKLSsgICAgImNoZWNrIFwk X3Byb2JlX2FyZzAgZm9yIHByb2JlIHVzZXIkYWRkZW5kdW0iCi0rICAgIGdkYl90ZXN0ICJwcmlu dCBcJF9wcm9iZV9hcmcxIiBcCi0rICAgIAkiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAxIC0tIHBy b2JlIGhhcyAxIGFyZ3VtZW50cyBhdmFpbGFibGUiIFwKLSsgICAgCSJjaGVjayBcJF9wcm9iZV9h cmcxIGZvciBwcm9iZSB1c2VyJGFkZGVuZHVtIgotKwotKyAgICAjIFNldCBhIGJyZWFrcG9pbnQg d2l0aCBtdWx0aXBsZSBwcm9iZSBsb2NhdGlvbnMuCi0rICAgIGdkYl90ZXN0ICJicmVhayAtcCB0 ZXN0ZTp0d28iIFwKLSsJIkJyZWFrcG9pbnQgXFswLTlcXSsgYXQgJGhleC4qMiBsb2NhdGlvbnMu KiIgXAotKwkic2V0IG11bHRpLWxvY2F0aW9uIHByb2JlIGJyZWFrcG9pbnQgKHByb2JlIHR3bykk YWRkZW5kdW0iCi0rCi0rICAgICMgUmVpbml0IEdEQiwgc2V0IGEgYnJlYWtwb2ludCBvbiBwcm9i ZSBtNC4KLSsgICAgZGVsZXRlX2JyZWFrcG9pbnRzCi0rICAgIHJlcnVuX3RvX21haW4KLSsgICAg aWYge1tydW50byAiLXAgdGVzdGU6bTQiXX0gewotKyAgICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0 ZTptNCRhZGRlbmR1bSIKLSsgICAgfSBlbHNlIHsKLSsgICAgICBmYWlsICJydW4gdG8gLXAgdGVz dGU6bTQkYWRkZW5kdW0iCi0rICAgIH0KLSsKLSsgICAgIyBUZXN0aW5nIHByb2JlIGFyZ3VtZW50 cy4KLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCi0rICAgICJw cmludCBcJF9wcm9iZV9hcmdjIGZvciBwcm9iZSBtNCRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3Qg InByaW50IFwkX3Byb2JlX2FyZzAiICIgPSA0MiIgXAotKyAgICAiY2hlY2sgXCRfcHJvYmVfYXJn MCBmb3IgcHJvYmUgbTQkYWRkZW5kdW0iCi0rICAgIGdkYl90ZXN0ICJwcmludCAoY29uc3QgY2hh ciAqKSBcJF9wcm9iZV9hcmcxIiBcCi0rICAgICIgPSAkaGV4IC5UaGlzIGlzIGEgdGVzdCBtZXNz YWdlLioiIFwKLSsgICAgImNoZWNrIFwkX3Byb2JlX2FyZzEgZm9yIHByb2JlIG00JGFkZGVuZHVt IgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMiA9PSB2IiAiID0gMSIgXAotKyAg ICAiY2hlY2sgXCRfcHJvYmVfYXJnMiBmb3IgcHJvYmUgbTQkYWRkZW5kdW0iCi0rCi0rICAgICMg UmVpbml0IEdEQiwgc2V0IGEgYnJlYWtwb2ludCBvbiBwcm9iZSBwcy4KLSsgICAgZGVsZXRlX2Jy ZWFrcG9pbnRzCi0rICAgIHJlcnVuX3RvX21haW4KLSsgICAgaWYge1tydW50byAiLXAgdGVzdGU6 cHMiXX0gewotKyAgICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKLSsgICAg fSBlbHNlIHsKLSsgICAgICBmYWlsICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0iCi0rICAg IH0KLSsKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCi0rICAg ICJwcmludCBcJF9wcm9iZV9hcmdjIGZvciBwcm9iZSBwcyRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rl c3QgInByaW50IChjb25zdCBjaGFyICopIFwkX3Byb2JlX2FyZzEiIFwKLSsgICAgIiA9ICRoZXgg LlRoaXMgaXMgYW5vdGhlciB0ZXN0IG1lc3NhZ2UuKiIgXAotKyAgICAicHJpbnQgXCRfcHJvYmVf YXJnMSBmb3IgcHJvYmUgcHMkYWRkZW5kdW0iCi0rCi0rICAgIHJldHVybiAwCi0rfQotKwotK3By b2Mgc3RhcF90ZXN0X25vX2RlYnVnaW5mbyB7eyBhcmcgIiIgfX0gewotKyAgICBnbG9iYWwgdGVz dGZpbGUgaGV4Ci0rCi0rICAgIGlmIHskYXJnICE9ICIifSB7Ci0rICAgIAlzZXQgYXJnICJhZGRp dGlvbmFsX2ZsYWdzPSRhcmciCi0rCXNldCBhZGRlbmR1bSAiLCB3aXRoIHNlbWFwaG9yZSwgb3B0 aW1pemVkIgotKyAgICB9IGVsc2UgewotKwlzZXQgYWRkZW5kdW0gIiwgbm8gc2VtYXBob3JlLCBv cHRpbWl6ZWQiCi0rICAgIH0KLSsKLSsgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3Rlc3RmaWxlfS5jIFwKLSsJICAgeyRhcmcgbm9kZWJ1 ZyBvcHRpbWl6ZT0tTzJ9XX0gewotKwlyZXR1cm4gLTEKLSsgICAgfQotKwotKyAgICBpZiB7W3J1 bnRvICItcCB0ZXN0ZTp1c2VyIl19IHsKLSsJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVzZXIkYWRk ZW5kdW0iCi0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgInJ1biB0byAtcCB0ZXN0ZTp1c2VyJGFkZGVu ZHVtIgotKyAgICB9Ci0rCi0rICAgICMgVGVzdCBwcm9iZSBhcmd1bWVudHMuCi0rICAgIGdkYl90 ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAotKyAgICAicHJpbnQgXCRfcHJvYmVf YXJnYyBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkX3By b2JlX2FyZzAgPT0gMjMiICIgPSAxIiBcCi0rICAgICJjaGVjayBcJF9wcm9iZV9hcmcwIGZvciBw cm9iZSB1c2VyJGFkZGVuZHVtIgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMSIg XAotKyAgICAJIkludmFsaWQgcHJvYmUgYXJndW1lbnQgMSAtLSBwcm9iZSBoYXMgMSBhcmd1bWVu dHMgYXZhaWxhYmxlIiBcCi0rICAgIAkiY2hlY2sgXCRfcHJvYmVfYXJnMSBmb3IgcHJvYmUgdXNl ciRhZGRlbmR1bSIKLSsKLSsgICAgIyBTZXQgYSBicmVha3BvaW50IHdpdGggbXVsdGlwbGUgcHJv YmUgbG9jYXRpb25zLgotKyAgICAjIEluIHRoaXMgc2NlbmFyaW8sIHdlIG1heSBleHBlY3QgbW9y ZSB0aGFuIDIgbG9jYXRpb25zIGJlY2F1c2Ugb2YKLSsgICAgIyB0aGUgb3B0aW1pemF0aW9ucyAo aW5saW5pbmcsIGxvb3AgdW5yb2xsaW5nLCBldGMpLgotKyAgICBnZGJfdGVzdCAiYnJlYWsgLXAg dGVzdGU6dHdvIiBcCi0rCSJCcmVha3BvaW50IC4qIGF0ICRoZXguKlxbMC05XF0rIGxvY2F0aW9u cy4qIiBcCi0rCSJzZXQgbXVsdGktbG9jYXRpb24gcHJvYmUgYnJlYWtwb2ludCAocHJvYmUgdHdv KSRhZGRlbmR1bSIKLSsKLSsgICAgIyBSZWluaXQgR0RCLCBzZXQgYSBicmVha3BvaW50IG9uIHBy b2JlIG00LgotKyAgICBkZWxldGVfYnJlYWtwb2ludHMKLSsgICAgcmVydW5fdG9fbWFpbgotKyAg ICBpZiB7W3J1bnRvICItcCB0ZXN0ZTptNCJdfSB7Ci0rICAgICAgcGFzcyAicnVuIHRvIC1wIHRl c3RlOm00JGFkZGVuZHVtIgotKyAgICB9IGVsc2UgewotKyAgICAgIGZhaWwgInJ1biB0byAtcCB0 ZXN0ZTptNCRhZGRlbmR1bSIKLSsgICAgfQotKwotKyAgICAjIFRlc3RpbmcgcHJvYmUgYXJndW1l bnRzLgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnYyIgIiA9IDMiIFwKLSsgICAg InByaW50IFwkX3Byb2JlX2FyZ2MgZm9yIHByb2JlIG00JGFkZGVuZHVtIgotKyAgICBnZGJfdGVz dCAicHJpbnQgXCRfcHJvYmVfYXJnMCIgIiA9IDQyIiBcCi0rICAgICJjaGVjayBcJF9wcm9iZV9h cmcwIGZvciBwcm9iZSBtNCRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50IChjb25zdCBj aGFyICopIFwkX3Byb2JlX2FyZzEiIFwKLSsgICAgIiA9ICRoZXggLlRoaXMgaXMgYSB0ZXN0IG1l c3NhZ2UuKiIgXAotKyAgICAiY2hlY2sgXCRfcHJvYmVfYXJnMSBmb3IgcHJvYmUgbTQkYWRkZW5k dW0iCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcyID09IDAiICIgPSAxIiBcCi0r ICAgICJjaGVjayBcJF9wcm9iZV9hcmcyIGZvciBwcm9iZSBtNCRhZGRlbmR1bSIKLSsKLSsgICAg IyBSZWluaXQgR0RCLCBzZXQgYSBicmVha3BvaW50IG9uIHByb2JlIHBzLgotKyAgICBkZWxldGVf YnJlYWtwb2ludHMKLSsgICAgcmVydW5fdG9fbWFpbgotKyAgICBpZiB7W3J1bnRvICItcCB0ZXN0 ZTpwcyJdfSB7Ci0rICAgICAgcGFzcyAicnVuIHRvIC1wIHRlc3RlOm00JGFkZGVuZHVtIgotKyAg ICB9IGVsc2UgewotKyAgICAgIGZhaWwgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKLSsg ICAgfQotKwotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnYyIgIiA9IDMiIFwKLSsg ICAgInByaW50IFwkX3Byb2JlX2FyZ2MgZm9yIHByb2JlIHBzJGFkZGVuZHVtIgotKyAgICBnZGJf dGVzdCAicHJpbnQgKGNvbnN0IGNoYXIgKikgXCRfcHJvYmVfYXJnMSIgXAotKyAgICAiID0gJGhl eCAuVGhpcyBpcyBhbm90aGVyIHRlc3QgbWVzc2FnZS4qIiBcCi0rICAgICJwcmludCBcJF9wcm9i ZV9hcmcxIGZvciBwcm9iZSBwcyRhZGRlbmR1bSIKLSsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0r aWYge1tzdGFwX3Rlc3RdID09IC0xfSB7Ci0rICAgIHVudGVzdGVkIHN0YXAtcHJvYmUuZXhwCi0r ICAgIHJldHVybiAtMQotK30KLSsKLStzdGFwX3Rlc3QgIi1EVVNFX1BST0JFUyIKLStzdGFwX3Rl c3Rfbm9fZGVidWdpbmZvCi0rc3RhcF90ZXN0X25vX2RlYnVnaW5mbyAiLURVU0VfUFJPQkVTIgot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uNTc1MGY2OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS92bGEtZnJhbWUuYwotQEAgLTAsMCArMSwzMSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLStpbnQKLSttYWlu IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgY2hhciBzWzIgKyBhcmdjXTsKLSsgIHZv aWQgKCpmKSAoY2hhciAqKSA9IDA7Ci0rCi0rICBtZW1zZXQgKHMsIDAsIHNpemVvZiAocykpOwot KyAgc1swXSA9ICdYJzsKLSsKLSsgIGYgKHMpOwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLWZyYW1lLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjQ3NzM2YzcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLWZyYW1lLmV4cAotQEAgLTAsMCArMSwzOCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhLWZyYW1lCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0Zmls ZX0KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1 dGFibGV9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IHRlc3QgImNvbnRpbnVlIgotK2dkYl90ZXN0X211 bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5nXFwuXHJcblxyXG5Qcm9n cmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHRcXC5cclxuMHgw KyBpbiBcXD9cXD8gXFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAg ICB9Ci0rICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW50ZXN0ZWQgJHt0ZXN0Zmls ZX0uZXhwCi0rCXJldHVybgotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJidCBmdWxsIiAiXHJc biArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZs b3cuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmM1ZDVlZTAKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMKLUBA IC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQotK3sKLSsgIGludCBhcnJheVthcmdjXTsKLSsKLSsgIGFycmF5WzBdID0gYXJyYXlbMF07 Ci0rCi0rICBhYm9ydCAoKTsKLSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS1vdmVyZmxvdy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li4yNGE2MDhmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1vdmVyZmxvdy5leHAKLUBAIC0wLDAgKzEsMTA5IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rIyBXZSBjb3VsZCBjcmFzaCBpbjoKLSsjICMwICBibG9ja19saW5rYWdlX2Z1bmN0 aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5Ci0rIyAjMSAgaW4gZHdhcmZfYmxv Y2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6OTcKLSsj ICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChnZXRfZnJhbWVfYmxv Y2sgKGZyYW1lLCBOVUxMKSk7Ci0rIyAjMiAgaW4gZXhlY3V0ZV9zdGFja19vcCAoLi4uKSBhdCAu Li8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgotKyMgIzMgIGluIGR3YXJmX2Jsb2NrX2V4ZWNfY29y ZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoxNTYKLSsjICM0ICBkd2FyZl9ibG9ja19l eGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIwNgotKyMgIzUgIGluIHJhbmdl X3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6 MTQzMAotKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0 eXBlcy5jOjg0MAotKyMgLi4uCi0rIyAjMjEgaW4gcHN5bXRhYl90b19zeW10YWIgKC4uLikgYXQg Li4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKLSsjIC4uLgotKyMgIzI5IGluIGJhY2t0cmFjZV9jb21t YW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3MwotKwotK3NldCB0ZXN0ZmlsZSB2bGEt b3ZlcmZsb3cKLStzZXQgc2hmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2Ri LnNoCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIg fSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK3NldCBmIFtvcGVuICJ8Z2V0Y29uZiBQQUdFU0laRSIgInIiXQot K2dldHMgJGYgcGFnZXNpemUKLStjbG9zZSAkZgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0r Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxl fQotKwotK3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3QgZmlsZWlk XV0KLSsKLStpZiB7IFtydW50b19tYWluXSA8IDAgfSB7Ci0rICAgIHVudGVzdGVkIHZsYS1vdmVy ZmxvdwotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBHZXQgdGhlIEdEQiBtZW1vcnkgc2l6ZSB3 aGVuIHdlIHN0YXkgYXQgbWFpbi4KLSsKLStwcm9jIG1lbW9yeV92X3BhZ2VzX2dldCB7fSB7Ci0r ICAgIGdsb2JhbCBwaWRfb2ZfZ2RiIHBhZ2VzaXplCi0rICAgIHNldCBmZCBbb3BlbiAiL3Byb2Mv JHBpZF9vZl9nZGIvc3RhdG0iXQotKyAgICBnZXRzICRmZCBsaW5lCi0rICAgIGNsb3NlICRmZAot KyAgICAjIG51bWJlciBvZiBwYWdlcyBvZiB2aXJ0dWFsIG1lbW9yeQotKyAgICBzY2FuICRsaW5l ICIlZCIgZHJzCi0rICAgIHJldHVybiAkZHJzCi0rfQotKwotK3NldCBwYWdlc19mb3VuZCBbbWVt b3J5X3ZfcGFnZXNfZ2V0XQotKwotKyMgczM5MHggd2l0aCBnbGliYy1kZWJ1Z2luZm8uczM5MHgg aW5zdGFsbGVkIHVzZWQgYXBwcm94LiAxNk1CLgotK3NldCBtYl9yZXNlcnZlIDQwCi0rdmVyYm9z ZSAtbG9nICJwYWdlc19mb3VuZCA9ICRwYWdlc19mb3VuZCwgbWJfcmVzZXJ2ZSA9ICRtYl9yZXNl cnZlIgotK3NldCBrYl9mb3VuZCBbZXhwciAkcGFnZXNfZm91bmQgKiAkcGFnZXNpemUgLyAxMDI0 XQotK3NldCBrYl9wZXJtaXQgW2V4cHIgJGtiX2ZvdW5kICsgMSAqIDEwMjQgKyAkbWJfcmVzZXJ2 ZSAqIDEwMjRdCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCA9ICRrYl9mb3VuZCwga2JfcGVybWl0 ID0gJGtiX3Blcm1pdCIKLSsKLSsjIENyZWF0ZSB0aGUgdWxpbWl0IHdyYXBwZXIuCi0rc2V0IGYg W29wZW4gJHNoZmlsZSAidyJdCi0rcHV0cyAkZiAiIyEgL2Jpbi9zaCIKLStwdXRzICRmICJ1bGlt aXQgLXYgJGtiX3Blcm1pdCIKLStwdXRzICRmICJleGVjICRHREIgXCJcJEBcIiIKLStjbG9zZSAk ZgotK3JlbW90ZV9leGVjIGhvc3QgImNobW9kICt4ICRzaGZpbGUiCi0rCi0rZ2RiX2V4aXQKLStz ZXQgR0RCb2xkICRHREIKLStzZXQgR0RCICIkc2hmaWxlIgotK2dkYl9zdGFydAotK3NldCBHREIg JEdEQm9sZAotKwotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9s b2FkICR7YmluZmlsZX0KLSsKLStzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAtaSBbYm9hcmRfaW5m byBob3N0IGZpbGVpZF1dCi0rCi0rIyBDaGVjayB0aGUgc2l6ZSBhZ2FpbiBhZnRlciB0aGUgc2Vj b25kIHJ1bi4KLSsjIFdlIG11c3Qgbm90IHN0b3AgaW4gbWFpbiBhcyBpdCB3b3VsZCBjYWNoZSBg YXJyYXknIGFuZCBuZXZlciBjcmFzaCBsYXRlci4KLSsKLStnZGJfcnVuX2NtZAotKwotK3ZlcmJv c2UgLWxvZyAia2JfZm91bmQgYmVmb3JlIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNf Z2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotKwotK2dkYl90ZXN0ICIiICJQcm9ncmFtIHJlY2Vp dmVkIHNpZ25hbCBTSUdBQlJULCBBYm9ydGVkLi4qIiAiRW50ZXIgYWJvcnQoKSIKLSsKLSt2ZXJi b3NlIC1sb2cgImtiX2ZvdW5kIGluIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0 XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotKwotKyMgYGFib3J0JyBjYW4gZ2V0IGV4cHJlc3NlZCBh cyBgKl9fR0lfYWJvcnQnLgotK2dkYl90ZXN0ICJidCIgImluIFxbXiBcXSphYm9ydCBcXCguKiBp biBtYWluIFxcKC4qIiAiQmFja3RyYWNlIGFmdGVyIGFib3J0KCkiCi0rCi0rdmVyYm9zZSAtbG9n ICJrYl9mb3VuZCBpbiBidCBhZnRlciBhYm9ydCgpID0gW2V4cHIgW21lbW9yeV92X3BhZ2VzX2dl dF0gKiAkcGFnZXNpemUgLyAxMDI0XSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYworKwkvKiBEV19BVF9sb2Nh dGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDYKKysJLnN0cmluZwki aSIKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTkKKysJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVi dWdfcmVsYXRpdmUKKysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTIwCisr CS5ieXRlCTB4MAorKy5MdHlwZV9pbnQ6CisrCS51bGViMTI4IDB4NworKwkuYnl0ZQkweDQKKysJ LmJ5dGUJMHg1CisrCS5zdHJpbmcJImludCIKKysuTHRhZ19hcnJheV90eXBlOgorKwkudWxlYjEy OCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCisrCS5sb25n CS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQorKwkubG9uZwkuTHR5cGVfdWxvbmcgLSAu TGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3NpYmxpbmc6IERXX0ZPUk1fcmVmNCAqLworKzE6CS8q IERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQky ZiAtIDNmCS8qIGxlbmd0aCAqLworKzM6CisrCS5ieXRlCTB4OTcJLyogRFdfT1BfcHVzaF9vYmpl Y3RfYWRkcmVzcyAqLworKyNpZiAxCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNl bHNlCisrCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCisrI2VuZGlmCisrMjoJLyogRFdfQVRf ZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDkKKysJ LmxvbmcJLkx0eXBlX2NoYXIgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3R5cGU6IERXX0ZP Uk1fcmVmNCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtNDAKKysJ LmJ5dGUJMHg2CisrCS5ieXRlCTB4MAorKy5MdHlwZV91bG9uZzoKKysJLnVsZWIxMjggMHhhCisr CS5ieXRlCTB4OAorKwkuYnl0ZQkweDcKKysuTHR5cGVfY2hhcjoKKysJLnVsZWIxMjggMHhiCisr CS5ieXRlCTB4MQorKwkuYnl0ZQkweDYKKysJLmxvbmcJLkxBU0YxCisrCS5ieXRlCTB4MAorKy5M ZGVidWdfZW5kOgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2CisrCS51bGViMTI4IDB4MQorKwku dWxlYjEyOCAweDExCisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDI1CisrCS51bGViMTI4IDB4 ZQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVs ZWIxMjggMHhlCisrCS51bGViMTI4IDB4MWIKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4 MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJLnVsZWIxMjggMHgxCisrCS51 bGViMTI4IDB4MTAKKysJLnVsZWIxMjggMHg2CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4MmUKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4 M2YKKysJLnVsZWIxMjggMHhjCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLnVs ZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAw eGIKKysJLnVsZWIxMjggMHgyNworKwkudWxlYjEyOCAweGMKKysJLnVsZWIxMjggMHgxMQorKwku dWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjgg MHg0MAorKwkudWxlYjEyOCAweDYKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTMKKysJ LmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHg1Cisr CS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4 M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjgg MHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg0CS8qIC5MdGFnX3Bv aW50ZXIgYWJicmV2ICovCisrCS51bGViMTI4IDB4MGYJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAq LworKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgwYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIx MjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVs ZWIxMjggMHg1CisrCS51bGViMTI4IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4Mwor KwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIx MjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEz CisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4 MAorKwkudWxlYjEyOCAweDYKKysJLnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIx MjggMHgzCisrCS51bGViMTI4IDB4OAorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4Ygor KwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGVi MTI4IDB4MTMKKysJLnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJ LmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAor KwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIx MjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHgwCisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5 X3R5cGUpICovCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHg0OQkv KiBEV19BVF90eXBlICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51 bGViMTI4IDB4MQkvKiBEV19BVF9zaWJsaW5nICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9S TV9yZWY0ICovCisrCS51bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLworKwku dWxlYjEyOCAweGEJLyogRFdfRk9STV9ibG9jazEgKi8KKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4 MAorKwkudWxlYjEyOCAweDkKKysJLnVsZWIxMjggMHgyMQorKwkuYnl0ZQkweDAKKysJLnVsZWIx MjggMHg0OQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0 ICovCisrCS51bGViMTI4IDB4MmYKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0 ZQkweDAKKysJLnVsZWIxMjggMHhhCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51 bGViMTI4IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAw eGIKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjgg MHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4YgorKwkudWxl YjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhl CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5zZWN0aW9uCS5kZWJ1 Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgxNgorKwkudmFsdWUJMHgyCisrCS5s b25nCS5MZGVidWdfaW5mbzAKKysJLmxvbmcJMHhhOAorKwkubG9uZwkweDJkCisrCS5zdHJpbmcJ ImZvbyIKKysJLmxvbmcJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0 cworKwkubG9uZwkweDJjCisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19pbmZvMAorKwku Ynl0ZQkweDgKKysJLmJ5dGUJMHgwCisrCS52YWx1ZQkweDAKKysJLnZhbHVlCTB4MAorKwkucXVh ZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAKKysJLnF1YWQJMHgwCisrCS5xdWFk CTB4MAorKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKKysuTEFTRjA6Cisr CS5zdHJpbmcJImFycmF5IgorKy5MQVNGNToKKysJLnN0cmluZwkic2l6ZSIKKysuTEFTRjM6Cisr CS5zdHJpbmcJIng4Nl82NC12bGEtcG9pbnRlci5jIgorKy5MQVNGNjoKKysJLnN0cmluZwkiYXJy YXlfdCIKKysuTEFTRjE6CisrCS5zdHJpbmcJImNoYXIiCisrLkxBU0Y0OgorKwkuc3RyaW5nCSJn ZGIuYXJjaCIKKysuTEFTRjI6CisrCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQg SGF0IDQuMy4yLTcpIgorKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBI YXQgNC4zLjItNykiCisrCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUxZjNlZDEKK2luZGV4IDAwMDAwMDAuLmZlMmM4ZjcK IC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMKLUBAIC0w LDAgKzEsNTUgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2lu dGVyLmMKK0BAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyMzgx LDM3ICs1NjMwLDIzIEBAIGluZGV4IDAwMDAwMDAuLmUxZjNlZDEKICsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KICsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rdm9pZAotK21h cmtlciAodm9pZCkKLSt7Ci0rfQotKwotK3ZvaWQKLStiYXIgKGNoYXIgKmEsIGNoYXIgKmIsIGNo YXIgKmMsIGludCBzaXplKQotK3sKLSsgIG1lbXNldCAoYSwgJzEnLCBzaXplKTsKLSsgIG1lbXNl dCAoYiwgJzInLCBzaXplKTsKLSsgIG1lbXNldCAoYywgJzMnLCA0OCk7Ci0rfQorKyNpZiAwCiAr CiArdm9pZAogK2ZvbyAoaW50IHNpemUpCiArewotKyAgY2hhciB0ZW1wMVtzaXplXTsKLSsgIGNo YXIgdGVtcDNbNDhdOwotKwotKyAgdGVtcDFbc2l6ZSAtIDFdID0gJ1wwJzsKLSsgIHsKLSsgICAg Y2hhciB0ZW1wMltzaXplXTsKKysgIHR5cGVkZWYgY2hhciBhcnJheV90W3NpemVdOworKyAgYXJy YXlfdCBhcnJheTsKKysgIGludCBpOwogKwotKyAgICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMs IHNpemUpOworKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKysgICAgYXJyYXlbaV0gPSBp OwogKwotKyAgICBtYXJrZXIgKCk7CS8qIGJyZWFrLWhlcmUgKi8KLSsgIH0KKysgIGFycmF5WzBd ID0gMDsJLyogYnJlYWstaGVyZSAqLwogK30KICsKKysjZWxzZQorKwogK2ludAogK21haW4gKHZv aWQpCiArewpAQCAtMTI0MTksMTMgKzU2NTQsMTUgQEAgaW5kZXggMDAwMDAwMC4uZTFmM2VkMQog KyAgZm9vICg3OCk7CiArICByZXR1cm4gMDsKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCisrCisr I2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhw CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNWRhNzM3OAoraW5kZXggMDAw MDAwMC4uZDI0M2NmMQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuZXhwCi1AQCAtMCwwICsxLDYyIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmV4cAorQEAgLTAsMCArMSw2NiBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKQEAgLTEyNDQwLDEwICs1Njc3LDIxIEBAIGluZGV4IDAwMDAwMDAuLjVkYTczNzgKICsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStzZXQgdGVzdGZpbGUgdmxhCisraWYgIVtp c3RhcmdldCAieDg2XzY0LSotKiJdIHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVy IGdkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82 NC4iCisrICAgIHJldHVybgorK30KKysKKytzZXQgdGVzdGZpbGUgeDg2XzY0LXZsYS1wb2ludGVy Cisrc2V0IHNyY2FzbWZpbGUgJHt0ZXN0ZmlsZX0tZm9vLlMKICtzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5jCiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKytzZXQgYmlub2JqZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCisraWYgIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qg e31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dy YW0iCisrICAgIHJldHVybiAtMQorK30KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJs ZSB7ZGVidWd9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVz dCBwcm9ncmFtIgogKyAgICByZXR1cm4gLTEKICt9CkBAIC0xMjQ1NCw3MCArNTcwMiw1MDIgQEAg aW5kZXggMDAwMDAwMC4uNWRhNzM3OAogK2dkYl9sb2FkICR7YmluZmlsZX0KICsKICtpZiAhW3J1 bnRvX21haW5dIHsKLSsgICAgdW50ZXN0ZWQgdmxhCisrICAgIHVudGVzdGVkIHg4Nl82NC12bGEt cG9pbnRlcgogKyAgICByZXR1cm4gLTEKICt9CiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgImJyZWFrLWhlcmUiXQotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJicmVhay1oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBc XFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMSIKLStnZGJfdGVzdCAid2hhdGlz IHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVt cDIiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJm aXJzdDogd2hhdGlzIHRlbXAzIgorK2dkYl9icmVha3BvaW50ICJicmVha19oZXJlIgogKwotK2dk Yl90ZXN0ICJwdHlwZSB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5 cGUgdGVtcDEiCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxc XSIgImZpcnN0OiBwdHlwZSB0ZW1wMiIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDMiICJ0eXBlID0g Y2hhciBcXFxbNDhcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAzIgorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJicmVha19oZXJlIgogKwotK2dkYl90ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxy ZXBlYXRzIDI2IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMSIKLStnZGJfdGVzdCAicCB0ZW1w MiIgIiA9ICcyJyA8cmVwZWF0cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDIiCi0rZ2Ri X3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAiZmlyc3Q6IHByaW50 IHRlbXAzIgorK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClc XFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKKytnZGJfdGVzdCAicHR5cGUg YXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFy cmF5IgogKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIgorK2dkYl90 ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiB3aGF0 aXMgKmFycmF5IgorK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZc XFxdIiAiZmlyc3Q6IHB0eXBlICphcnJheSIKICsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAi dHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAxIgotK2dk Yl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAic2Vj b25kOiB3aGF0aXMgdGVtcDIiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFy IFxcXFs0OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMyIKKytnZGJfdGVzdCAicCAoKmFycmF5 KVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwICgqYXJyYXkp XFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgKCphcnJheSlc WzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJfdGVzdCAicCAoKmFycmF5KVxb NFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQnIgogKwotK2dkYl90ZXN0ICJwdHlwZSB0ZW1w MSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAxIgotK2dkYl90 ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBl IHRlbXAyIgotK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0i ICJzZWNvbmQ6IHB0eXBlIHRlbXAzIgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVh a19oZXJlIgogKwotK2dkYl90ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDc4IHRpbWVz PiIgInNlY29uZDogcHJpbnQgdGVtcDEiCi0rZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJl cGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMiIKLStnZGJfdGVzdCAicCB0ZW1w MyIgIiA9ICczJyA8cmVwZWF0cyA0OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAzIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVydGhyb3cuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKLWluZGV4IDdkNGEwYzUuLjJkYWZjYWIg MTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKLUBAIC01NCw2ICs1NCwx NyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hvb2siICJjaGVjayBm b3IgdW53aW5kZXIgaG9vayIgewotICAgICB9Ci0gfQotIGlmIHshJG9rfSB7Ci0rICAgIGdkYl90 ZXN0X211bHRpcGxlICJpbmZvIHByb2JlIiAiY2hlY2sgZm9yIHN0YXAgcHJvYmUgaW4gdW53aW5k ZXIiIHsKLSsJLXJlICIuKmxpYmdjYy4qdW53aW5kLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkg ICAgcGFzcyAiY2hlY2sgZm9yIHN0YXAgcHJvYmUgaW4gdW53aW5kZXIiCi0rCSAgICBzZXQgb2sg MQotKwl9Ci0rCS1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJfQotKyAgICB9Ci0rfQorK2dk Yl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVc XFxdIiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlw ZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCiArCi0r aWYgeyEkb2t9IHsKLSAgICAgdW5zdXBwb3J0ZWQgIm5leHRvdmVydGhyb3cuZXhwIGNvdWxkIG5v dCBmaW5kIF9VbndpbmRfRGVidWdIb29rIgotICAgICByZXR1cm4gLTEKLSB9Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMgYi9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUworK2dkYl90ZXN0ICJ3aGF0aXMg KmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlzICphcnJheSIK KytnZGJfdGVzdCAicHR5cGUgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29u ZDogcHR5cGUgKmFycmF5IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2 XzY0LXZsYS10eXBlZGVmLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXR5cGVkZWYtZm9vLlMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42NmY3 YTM5CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtdHlwZWRlZi1mb28uUworQEAgLTAsMCArMSw0NTUgQEAKKysJLmZpbGUJIng4Nl82NC12bGEt dHlwZWRlZi5jIgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cworKy5MZGVi dWdfYWJicmV2MDoKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCisrLkxkZWJ1 Z19pbmZvMDoKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCisrLkxkZWJ1Z19s aW5lMDoKKysJLnRleHQKKysuTHRleHQwOgorKy5nbG9ibCBmb28KKysJLnR5cGUJZm9vLCBAZnVu Y3Rpb24KKytmb286CisrLkxGQjI6CisrCS5maWxlIDEgIng4Nl82NC12bGEtdHlwZWRlZi5jIgor KwkubG9jIDEgMjIgMAorKwlwdXNocQklcmJwCisrLkxDRkkwOgorKwltb3ZxCSVyc3AsICVyYnAK KysuTENGSTE6CisrCXN1YnEJJDY0LCAlcnNwCisrLkxDRkkyOgorKwltb3ZsCSVlZGksIC0zNigl cmJwKQorKwkubG9jIDEgMjIgMAorKwltb3ZxCSVyc3AsICVyYXgKKysJbW92cQklcmF4LCAtNDgo JXJicCkKKysJLmxvYyAxIDIzIDAKKysJbW92bAktMzYoJXJicCksICVlZHgKKysJbW92c2xxCSVl ZHgsJXJheAorKwlzdWJxCSQxLCAlcmF4CisrCW1vdnEJJXJheCwgLTI0KCVyYnApCisrCS5sb2Mg MSAyNCAwCisrCW1vdnNscQklZWR4LCVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJYWRkcQkkMTUs ICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCXN1YnEJJXJheCwgJXJz cAorKwltb3ZxCSVyc3AsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwlhZGRx CSQxNSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJbW92cQklcmF4 LCAtNTYoJXJicCkKKysJbW92cQktNTYoJXJicCksICVyYXgKKysJbW92cQklcmF4LCAtMTYoJXJi cCkKKysJLmxvYyAxIDI3IDAKKysJbW92bAkkMCwgLTQoJXJicCkKKysJam1wCS5MMgorKy5MMzoK KysJLmxvYyAxIDI4IDAKKysJbW92bAktNCglcmJwKSwgJWVzaQorKwltb3ZsCS00KCVyYnApLCAl ZWF4CisrCW1vdmwJJWVheCwgJWVjeAorKwltb3ZxCS0xNiglcmJwKSwgJXJkeAorKwltb3ZzbHEJ JWVzaSwlcmF4CisrCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQorKwkubG9jIDEgMjcgMAorKwlhZGRs CSQxLCAtNCglcmJwKQorKy5MMjoKKysJbW92bAktNCglcmJwKSwgJWVheAorKwljbXBsCS0zNigl cmJwKSwgJWVheAorKwlqbAkuTDMKKysJLmxvYyAxIDMwIDAKKysJLmdsb2JsCWJyZWFrX2hlcmUK KyticmVha19oZXJlOgorKwltb3ZxCS0xNiglcmJwKSwgJXJheAorKwltb3ZiCSQwLCAoJXJheCkK KysJbW92cQktNDgoJXJicCksICVyc3AKKysJLmxvYyAxIDMxIDAKKysJbGVhdmUKKysJcmV0Cisr LkxGRTI6CisrCS5zaXplCWZvbywgLi1mb28KKysJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBw cm9nYml0cworKy5MZnJhbWUwOgorKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKKysuTFNDSUUwOgor KwkubG9uZwkweGZmZmZmZmZmCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSIiCisrCS51bGViMTI4 IDB4MQorKwkuc2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS5ieXRlCTB4YworKwkudWxlYjEy OCAweDcKKysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5h bGlnbiA4CisrLkxFQ0lFMDoKKysuTFNGREUwOgorKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCisr LkxBU0ZERTA6CisrCS5sb25nCS5MZnJhbWUwCisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUy LS5MRkIyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisr CS51bGViMTI4IDB4MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0 CisrCS5sb25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwku YWxpZ24gOAorKy5MRUZERTA6CisrCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCisr LkxmcmFtZTE6CisrCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQorKy5MU0NJRTE6CisrCS5sb25nCTB4 MAorKwkuYnl0ZQkweDEKKysJLnN0cmluZwkielIiCisrCS51bGViMTI4IDB4MQorKwkuc2xlYjEy OCAtOAorKwkuYnl0ZQkweDEwCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDMKKysJLmJ5dGUJ MHhjCisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxl YjEyOCAweDEKKysJLmFsaWduIDgKKysuTEVDSUUxOgorKy5MU0ZERTE6CisrCS5sb25nCS5MRUZE RTEtLkxBU0ZERTEKKysuTEFTRkRFMToKKysJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKKysJLmxv bmcJLkxGQjIKKysJLmxvbmcJLkxGRTItLkxGQjIKKysJLnVsZWIxMjggMHgwCisrCS5ieXRlCTB4 NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGViMTI4IDB4MTAKKysJ LmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMS0u TENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24gOAorKy5MRUZERTE6 CisrCS50ZXh0CisrLkxldGV4dDA6CisrCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRz CisrLkxkZWJ1Z19sb2MwOgorKy5MTFNUMDoKKysJLnF1YWQJLkxGQjItLkx0ZXh0MAorKwkucXVh ZAkuTENGSTAtLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjgg OAorKwkucXVhZAkuTENGSTAtLkx0ZXh0MAorKwkucXVhZAkuTENGSTEtLkx0ZXh0MAorKwkudmFs dWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJLkxDRkkxLS5MdGV4 dDAKKysJLnF1YWQJLkxGRTItLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzYKKysJ LnNsZWIxMjggMTYKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2VjdGlvbgkuZGVidWdf aW5mbworKwkubG9uZwkuTGRlYnVnX2VuZCAtIC5MZGVidWdfc3RhcnQKKysuTGRlYnVnX3N0YXJ0 OgorKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfYWJicmV2MAorKwkuYnl0ZQkweDgKKysJ LnVsZWIxMjggMHgxCisrCS5sb25nCS5MQVNGMgorKwkuYnl0ZQkweDEKKysJLmxvbmcJLkxBU0Yz CisrCS5sb25nCS5MQVNGNAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQwCisrCS5s b25nCS5MZGVidWdfbGluZTAKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4MQorKwkuc3RyaW5n CSJmb28iCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE2CisrCS5ieXRlCTB4MQorKwkucXVhZAku TEZCMgorKwkucXVhZAkuTEZFMgorKwkubG9uZwkuTExTVDAKKysJLmxvbmcJMHg4MworKwkudWxl YjEyOCAweDMKKysJLmxvbmcJLkxBU0Y1CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE1CisrCS5s b25nCTB4ODMKKysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTUyCisrLkx0 YWdfdHlwZWRlZjoKKysJLnVsZWIxMjggMHg0CisrCS5sb25nCS5MQVNGNgorKwkuYnl0ZQkweDEK KysJLmJ5dGUJMHgxNworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KKysJ LnVsZWIxMjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KKysJ LmxvbmcJLkxBU0YwCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE4CisrI2lmIDEKKysJLmxvbmcJ Lkx0YWdfdHlwZWRlZiAtIC5kZWJ1Z19pbmZvCisrI2Vsc2UKKysJLyogRGVidWdnaW5nIG9ubHk6 IFNraXAgdGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAqLworKwkubG9uZwkuTHRhZ19hcnJheV90 eXBlIC0gLmRlYnVnX2luZm8KKysjZW5kaWYKKysJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1f YmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAt MzIKKysjaWYgMAorKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KKysjZWxzZQorKwkuYnl0 ZQkweDk2CS8qIERXX09QX25vcCAqLworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlvbjogRFdf Rk9STV9ibG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDYKKysJLnN0cmluZwkiaSIKKysJLmJ5 dGUJMHgxCisrCS5ieXRlCTB4MTkKKysJLmxvbmcJMHg4MworKwkuYnl0ZQkweDIKKysJLmJ5dGUJ MHg5MQorKwkuc2xlYjEyOCAtMjAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NworKwkuYnl0 ZQkweDQKKysJLmJ5dGUJMHg1CisrCS5zdHJpbmcJImludCIKKysuTHRhZ19hcnJheV90eXBlOgor KwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICov CisrCS5sb25nCTB4YTAgKyAoMmYgLSAxZikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICov CisrCS5sb25nCTB4OWQgKyAoMmYgLSAxZikJLyogRFdfQVRfc2libGluZzogRFdfRk9STV9yZWY0 ICovCisrMToJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICov CisrCS5ieXRlCTJmIC0gM2YJLyogbGVuZ3RoICovCisrMzoKKysJLmJ5dGUJMHg5NwkvKiBEV19P UF9wdXNoX29iamVjdF9hZGRyZXNzICovCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwor KzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVs ZWIxMjggMHg5CisrCS5sb25nCTB4OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTogRFdfRk9S TV9yZWY0ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC00MAorKwku Ynl0ZQkweDYKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDgKKysJLmJ5 dGUJMHg3CisrCS51bGViMTI4IDB4YgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHg2CisrCS5sb25n CS5MQVNGMQorKwkuYnl0ZQkweDAKKysuTGRlYnVnX2VuZDoKKysJLnNlY3Rpb24JLmRlYnVnX2Fi YnJldgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMQorKwkuYnl0ZQkweDEKKysJLnVs ZWIxMjggMHgyNQorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAw eGIKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDFiCisrCS51 bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAw eDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEwCisrCS51bGViMTI4IDB4NgorKwku Ynl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweDJlCisr CS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDNmCisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAw eDMKKysJLnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjcKKysJLnVsZWIxMjgg MHhjCisrCS51bGViMTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJ LnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4NDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4 IDB4MQorKwkudWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIx MjggMHgzCisrCS51bGViMTI4IDB4NQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51 bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAw eDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJ LnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisr CS51bGViMTI4IDB4NAorKwkudWxlYjEyOCAweDE2CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAw eDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjgg MHgxMworKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NQorKwkudWxlYjEy OCAweDM0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51 bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjgg MHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJ LnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg2Cisr CS51bGViMTI4IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAw eDgKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4 IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDcKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAw eDMKKysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLworKwkudWxlYjEy OCAweDEKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwku dWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDEJLyogRFdfQVRf c2libGluZyAqLworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEy OCAweDUwCS8qIERXX0FUX2RhdGFfbG9jYXRpb24gKi8KKysJLnVsZWIxMjggMHhhCS8qIERXX0ZP Uk1fYmxvY2sxICovCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg5Cisr CS51bGViMTI4IDB4MjEKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlw ZSAqLworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDJm CisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 YQorKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIx MjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MAorKwku Ynl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisr CS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkuYnl0ZQkweDAKKysJLmJ5 dGUJMHgwCisrCS5ieXRlCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2di aXRzCisrCS5sb25nCTB4MTYKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisr CS5sb25nCTB4YTgKKysJLmxvbmcJMHgyZAorKwkuc3RyaW5nCSJmb28iCisrCS5sb25nCTB4MAor Kwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgyYworKwku dmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfaW5mbzAKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4 MAorKwkudmFsdWUJMHgwCisrCS52YWx1ZQkweDAKKysJLnF1YWQJLkx0ZXh0MAorKwkucXVhZAku TGV0ZXh0MC0uTHRleHQwCisrCS5xdWFkCTB4MAorKwkucXVhZAkweDAKKysJLnNlY3Rpb24JLmRl YnVnX3N0ciwiTVMiLEBwcm9nYml0cywxCisrLkxBU0YwOgorKwkuc3RyaW5nCSJhcnJheSIKKysu TEFTRjU6CisrCS5zdHJpbmcJInNpemUiCisrLkxBU0YzOgorKwkuc3RyaW5nCSJ4ODZfNjQtdmxh LXR5cGVkZWYuYyIKKysuTEFTRjY6CisrCS5zdHJpbmcJImFycmF5X3QiCisrLkxBU0YxOgorKwku c3RyaW5nCSJjaGFyIgorKy5MQVNGNDoKKysJLnN0cmluZwkiZ2RiLmFyY2giCisrLkxBU0YyOgor Kwkuc3RyaW5nCSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKKysJLmlk ZW50CSJHQ0M6IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgorKwkuc2Vj dGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS10eXBlZGVmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi5hYWMzYmFhCitpbmRleCAwMDAwMDAwLi5iODA5YzRlCiAtLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwotQEAgLTAsMCAr MSwyNDYgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LmMKK0BAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyNTMyLDI0 MiArNjIxMiwzOSBAQCBpbmRleCAwMDAwMDAwLi5hYWMzYmFhCiArICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCiArCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsvKiBXZSB3 aWxsIGBicmVhayAqbWFpbicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rpb24uICAqLwotKyNk ZWZpbmUgbWFpbl9sZW5ndGggMQotKwotKwkuc2VjdGlvbgkuZGF0YQotK3ZhcmRhdGE6Ci0rCS8q IFNlZSBEV19PUF9saXQzICsgMSAoMC1iYXNlZCkuICAqLwotKwkuc3RyaW5nCQkic2Vlbm5vdHNl ZW4iCi0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46Ci0rCS40Ynl0ZQkJ LkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8K LSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8K LSsJLjRieXRlCQkuTGRlYnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlv biAqLwotKwkuYnl0ZQkJNAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCi0rCS8q IENVIGRpZSAqLwotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0 ICovCi0rCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLyogVXNl IEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAiIi4gICovCi0rCS5i eXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KLSsJLjRieXRlCQltYWluCQkJ LyogRFdfQVRfbG93X3BjICovCi0rCS5ieXRlCQltYWluX2xlbmd0aAkJLyogRFdfQVRfaGlnaF9w YyAqLwotKwotKy5MYXJyYXlfdHlwZToKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFH X2FycmF5X3R5cGUgKi8KLSsJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19B VF90eXBlICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90 eXBlICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAq LwotKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS40Ynl0ZQkJLkxsZW5f dmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyog RW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyBy ZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KLSsuTGFycmF5Yl90eXBl OgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5 dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIx MjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVp bnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkwCQkJLyogRFdf QVRfbG93ZXJfYm91bmQgKi8KLSsJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERX X0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRp ZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyByZWdpc3Rlci4g ICovCi0rLkxhcnJheXJlZ190eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdf YXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FU X3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5 cGUgd2l0aCBibG9jayAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERX X0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkuYnl0 ZQkJMmYgLSAxZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rMToJLmJ5dGUJCTB4NTAJCQkv KiBEV19PUF9yZWcwICovCi0rMjoKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2Yg ZGllICovCi0rCi0rLkx1aW50X3R5cGU6Ci0rCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RB R19iYXNlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1lICovCi0r CS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQk3CQkJLyogRFdfQVRf ZW5jb2RpbmcgKi8KLSsKLSsuTGNoYXJfdHlwZToKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjog RFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl9zdHIJCS8qIERXX0FUX25hbWUg Ki8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBE V19BVF9lbmNvZGluZyAqLwotKwotKy5MbGVuX3ZhcjoKLSsJLnVsZWIxMjgJNQkJCS8qIEFiYnJl djogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9h cnRpZmljaWFsICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRf dHlwZSAqLwotKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8qIERXX0FUX2xvY2F0 aW9uICovCi0rCi0rCS8qIG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9yIGJfc3RyaW5nLiAgKi8K LSsuTGxlbmJfdmFyOgotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUg YXJ0aWZpY2lhbCBubyBEV19BVF9sb2NhdGlvbiAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2Fy dGlmaWNpYWwgKi8KLSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90 eXBlICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19G T1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCi0r CS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5 dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRlCQkzCQkJLyogICBE V19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCi0rMjoKLSsK LSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2 YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBE V19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBEV19BVF9uYW1lICov Ci0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0r CS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8q ICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6 Ci0rCi0rCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8K LSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5n ICovCi0rCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJ CS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQky ZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1Bf YWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6Ci0rCi0rCS5i eXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTFfZW5kOgotKwotKwku c2VjdGlvbgkuZGVidWdfbG9jCi0rLkxsb2NsaXN0OgotKy5MbGVuX2xvY2xpc3Q6Ci0rCS40Ynl0 ZQkwCQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MKLSsJLjRieXRlCW1haW5fbGVuZ3Ro CQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MKLSsJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24g ZXhwcmVzc2lvbiBzaXplCi0rMToJLmJ5dGUJMHgzMwkjIERXX09QX2xpdDMKLSsJLmJ5dGUJMHg5 ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rMjoKLSsJLnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0 ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQotKwkucXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRl cm1pbmF0b3IgZW5kICgqLkxMU1QyKQotKwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxk ZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIx MjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIGhh c19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJ LnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBE V19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0r CS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyog RFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0r CS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIx MjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MQkJCS8qIFRBRzogRFdfVEFH X2FycmF5X3R5cGUgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwku dWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdf Rk9STV9yZWY0ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBl ICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgy MgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1f ZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51 bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJ NAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90 eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4ZQkJCS8qIERXX0ZPUk1fc3RycCAqLwot KwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJ LyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2Rpbmcg Ki8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKyNpZiAw CiArCi0rCS51bGViMTI4CTUJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJ LyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwot KwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLwotKwkudWxlYjEyOAkweDBj CQkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICov Ci0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgwMgkJ CS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4CTB4MDYJCQkvKiBEV19GT1JNX2RhdGE0 ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisreworKyAgdHlwZWRlZiBjaGFy IGFycmF5X3Rbc2l6ZV07CisrICBhcnJheV90IGFycmF5OworKyAgaW50IGk7CiArCi0rCS51bGVi MTI4CTYJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3Zh cmlhYmxlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkw eDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5n ICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJ CQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24g Ki8KLSsJLnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysgIGZv ciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCisrICAgIGFycmF5W2ldID0gaTsKICsKLSsJLnVsZWIx MjgJNwkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFy aWFibGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4 MzQJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rCS51bGViMTI4CTB4MGMJCQkvKiBEV19GT1JN X2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjgJ MHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKyAgYXJyYXlbMF0gPSAwOwkvKiBi cmVhay1oZXJlICovCisrfQogKwotKwkudWxlYjEyOAk4CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJ LnVsZWIxMjgJMHgyMQkJCS8qIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGggYmxvY2sgKi8KLSsJ LmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19B VF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIx MjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERX X0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICov Ci0rCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrI2Vsc2UK ICsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKytpbnQKKyttYWluICh2b2lkKQor K3sKKysgIGZvbyAoMjYpOworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKKyt9CiArCi0rLyog U3RyaW5nIHRhYmxlICovCi0rCS5zZWN0aW9uIC5kZWJ1Z19zdHIKLSsuTHByb2R1Y2VyOgotKwku c3RyaW5nCQkiR05VIEMgMy4zLjMiCi0rLkxjaGFyX3N0cjoKLSsJLnN0cmluZwkJImNoYXIiCi0r Lkx1aW50X3N0cjoKLSsJLnN0cmluZwkJInVuc2lnbmVkIGludCIKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAorKyNlbmRpZgorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLjgxNWVkOTMKK2luZGV4IDAwMDAwMDAuLmIwNTQxMWUKIC0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlz dC5leHAKLUBAIC0wLDAgKzEsNTQgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXR5cGVkZWYuZXhwCitAQCAtMCwwICsxLDY0IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQpAQCAtMTI3ODIsMTg3ICs2MjU5LDIzOSBAQCBpbmRleCAwMDAwMDAwLi44MTVlZDkzCiArIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rIyBUZXN0IHByaW50aW5nIHZhcmlhYmxlIHdp dGggZHluYW1pYyBib3VuZHMgd2hpY2ggcmVmZXJlbmNlIGEgZGlmZmVyZW50Ci0rIyAoYXJ0aWZp Y2lhbCBpbiB0aGUgR0NDIGNhc2UpIHZhcmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMg bG9jYXRpb24uCi0rIyBUaGlzIHRlc3RjYXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0 aGUgcmVmZXJlbmNlZCB2YXJpYWJsZToKLSsjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9z aG93X2J1Zy5jZ2k/aWQ9NDM3NjIKKysjIFRlc3QgRFdfQVRfZGF0YV9sb2NhdGlvbiBhY2Nlc3Nl ZCB0aHJvdWdoIERXX1RBR190eXBlZGVmIGludGVybWVkaWF0ZS4KICsKLSsjIFRoaXMgdGVzdCBj YW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBn YXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7 IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNk Kl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBw b3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwCisraWYgIVtpc3RhcmdldCAieDg2XzY0 LSotKiJdIHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNoL3g4Nl82 NC12bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisrICAgIHJldHVy bgogK30KICsKLStzZXQgdGVzdGZpbGUgZHcyLWJvdW5kLWxvY2xpc3QKLStpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBbbGlzdCAke3Rlc3RmaWxl fS5TIG1haW4uY10ge31dIH0geworK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXR5cGVkZWYKKytz ZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Cisrc2V0IGJp bm9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubworK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpm aWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBp bGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisraWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKICsgICAgcmV0dXJuIC0xCiArfQogKwotKyMgVmVyaWZ5 IGl0IGJlaGF2ZXMgYXQgbGVhc3QgYXMgYW4gdW5ib3VuZCBhcnJheSB3aXRob3V0IGluZmVyaW9y LgotKwotK2dkYl90ZXN0ICJwIGFfc3RyaW5nIiB7ID0gMHhbMC05YS1mXSsgInNlZW5ub3RzZWVu In0KLStnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcW1xdfQorK2dkYl9l eGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisr Z2RiX2xvYWQgJHtiaW5maWxlfQogKwotKyMgTm90IHJ1bnRvX21haW4gYXMgZHcyLWJvdW5kLWxv Y2xpc3QuUyBoYW5kbGVzIG9ubHkgdGhlIGZpcnN0IGJ5dGUgb2YgbWFpbi4KLStpZiAhW3J1bnRv ICIqbWFpbiJdIHsKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgeDg2XzY0LXZs YS10eXBlZGVmCiArICAgIHJldHVybiAtMQogK30KICsKLStnZGJfdGVzdCAicCBhX3N0cmluZyIg eyA9ICJzZWVuIn0KLStnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcWzRc XX0KKytnZGJfYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIKICsKLStnZGJfdGVzdCAicCBiX3N0cmlu ZyIgeyA9ICgweFswLTlhLWZdKyApPyJzZWVubm90c2VlbiJ9Ci0rZ2RiX3Rlc3QgInB0eXBlIGJf c3RyaW5nIiB7dHlwZSA9IGNoYXIgXFtcXX0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi YnJlYWtfaGVyZSIKICsKLSsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRpY3RhYmxlIHZh bHVlIC0gdGhlIGFycmF5IHNpemUuCi0rZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJpbmciIHt0eXBl ID0gY2hhciBcWy0/WzAtOV0rXF19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBl ZC5jCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdo YXRpcyBhcnJheSIKKysKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxb MjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgorKworK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0i ICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCisrZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxc JFxbMC05XF0gPSAyICdcXFxcMDAyJyIKKytnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFsw LTlcXSA9IDMgJ1xcXFwwMDMnIgorK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxd ID0gNCAnXFxcXDAwNCciCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hl cmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25k OiB3aGF0aXMgYXJyYXkiCisrCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIg XFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlk eC5jCitpbmRleCBhOTkxMzdlLi5jM2RjMmQ5IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9hcnJheWlkeC5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4 LmMKK0BAIC0xNyw2ICsxNywxMyBAQAorIAorIGludCBhcnJheVtdID0gezEsIDIsIDMsIDR9Owor IAorKyNpZmRlZiBfX0dOVUNfXworK3N0cnVjdAorKyAgeworKyAgICBpbnQgYVswXTsKKysgIH0g dW5ib3VuZDsKKysjZW5kaWYKKysKKyBpbnQKKyBtYWluICh2b2lkKQorIHsKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYXJyYXlpZHguZXhwCitpbmRleCBjYmEwMDI0Li4wZGMwZTQ2IDEwMDY0NAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguZXhwCitAQCAtNTMsNCArNTMsMTIgQEAgZ2RiX3Rlc3QgInByaW50 IGFycmF5IiBcCisgICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxc XFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKKyAgICAgICAgICAiUHJpbnQgYXJyYXkg d2l0aCBhcnJheS1pbmRleGVzIG9uIgorIAorLQorK3NldCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAm dW5ib3VuZC5hXFswXF0iCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAt cmUgIiA9IDFcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAg LXJlICJObyBzeW1ib2wgXCJ1bmJvdW5kXCIgaW4gY3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3By b21wdCAkIiB7CisrCXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKKysgICAgfQorK30KK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRy ZXNzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNz LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjAyZDkwCitpbmRleCAw MDAwMDAwLi5lZWI3Yjg1CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLXN0cmlwcGVkLmMKLUBAIC0wLDAgKzEsNDIgQEAKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuYworQEAgLTAsMCArMSwyMCBA QAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr Ci0rICAgQ29weXJpZ2h0IDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwogKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCiArICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQogKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIAorKwogKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywK LSsgICBVU0EuICAqLworKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICsKKytzdHJ1Y3QgeworKyAgaW50 IGZpZWxkOworK30gc3RhdGljc3RydWN0ID0geyAxIH07CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjZkODJlNzMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCitAQCAt MCwwICsxLDI2IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KICsKLSsvKiBUaGUgZnVuY3Rpb24gYGZ1bmMxJyB0cmFjZWQgaW50byBtdXN0IGhhdmUg ZGVidWcgaW5mbyBvbiBvZmZzZXQgPiAwOwotKyAgIChEV19VTlNORCAoYXR0cikpLiAgVGhpcyBp cyB0aGUgcmVhc29uIG9mIGBmdW5jMCcgZXhpc3RlbmNlLiAgKi8KKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiArCi0rdm9pZAotK2Z1bmMwKGludCBhLCBpbnQgYikKLSt7Cisrc2V0IHRl c3QgaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MKKytzZXQgYmluZmlsZSAke3Rlc3R9LngKKytp ZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jIiAiJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke2JpbmZpbGV9IiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7CisrICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0x CiArfQogKwotKy8qIGBmdW5jMScgYmVpbmcgdHJhY2VkIGludG8gbXVzdCBoYXZlIHNvbWUgYXJn dW1lbnRzIHRvIGR1bXAuICAqLworK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKICsKLSt2b2lkCi0r ZnVuYzEoaW50IGEsIGludCBiKQotK3sKLSsgIGZ1bmMwIChhLGIpOwotK30KKytnZGJfdGVzdCB7 c2V0ICR2YXJzdHJ1Y3QgPSBzdGF0aWNzdHJ1Y3R9CisrZ2RiX3Rlc3Qge3AgJHZhcnN0cnVjdC5m aWVsZH0gIiA9IDEiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJh bWUuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi41NzUwZjY4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5jCitAQCAtMCwwICsxLDMxIEBACisrLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5 cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgog KwogK2ludAotK21haW4odm9pZCkKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiArewot KyAgZnVuYzEgKDEsIDIpOworKyAgY2hhciBzWzIgKyBhcmdjXTsKKysgIHZvaWQgKCpmKSAoY2hh ciAqKSA9IDA7CisrCisrICBtZW1zZXQgKHMsIDAsIHNpemVvZiAocykpOworKyAgc1swXSA9ICdY JzsKKysKKysgIGYgKHMpOwogKyAgcmV0dXJuIDA7CiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1zdHJpcHBlZC5leHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS1mcmFtZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5leHAKIG5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xYzZlODRhCitpbmRleCAwMDAwMDAw Li40NzczNmM3CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLXN0cmlwcGVkLmV4cAotQEAgLTAsMCArMSw3OSBAQAotKyMgQ29weXJpZ2h0IDIwMDYgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS1mcmFtZS5leHAKK0BAIC0wLDAgKzEsMzggQEAKKysjIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMgCisrIwogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQog KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAorKyMK ICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLSsjIE1pbmltYWwg RFdBUkYtMiB1bml0IHRlc3QKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFy Z2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBv ZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAh W2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJp Kl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAw ICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJkdzItc3RyaXBwZWQiCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0u eAotKwotK3JlbW90ZV9leGVjIGJ1aWxkICJybSAtZiAke2JpbmZpbGV9IgotKwotKyMgZ2V0IHRo ZSB2YWx1ZSBvZiBnY2NfY29tcGlsZWQKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxl fV0gewotKyAgICByZXR1cm4gLTEKLSt9CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsjIFRoaXMgdGVz dCBjYW4gb25seSBiZSBydW4gb24gZ2NjIGFzIHdlIHVzZSBhZGRpdGlvbmFsX2ZsYWdzPUZJWE1F Ci0raWYgeyRnY2NfY29tcGlsZWQgPT0gMH0gewotKyAgICByZXR1cm4gMAotK30KKytzZXQgdGVz dGZpbGUgdmxhLWZyYW1lCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KICsKLStpZiAgeyBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUge2RlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWdnZGIzfV0gIT0gIiIgfSB7Cisr aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHtleGVjdXRhYmxlfV0g fSB7CiArICAgIHJldHVybiAtMQogK30KICsKLStyZW1vdGVfZXhlYyBidWlsZCAib2JqY29weSAt UiAuZGVidWdfbG9jICR7YmluZmlsZX0iCi0rc2V0IHN0cmlwX291dHB1dCBbcmVtb3RlX2V4ZWMg YnVpbGQgIm9iamR1bXAgLWggJHtiaW5maWxlfSJdCi0rCi0rc2V0IHRlc3QgInN0cmlwcGluZyB0 ZXN0IGZpbGUgcHJlc2VydmF0aW9uIgotK2lmIFsgcmVnZXhwICIuZGVidWdfaW5mbyAiICRzdHJp cF9vdXRwdXRdICB7Ci0rICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfaW5mbyBwcmVzZXJ2ZWQpIgot K30gZWxzZSB7Ci0rICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfaW5mbyBnb3QgYWxzbyBzdHJpcHBl ZCkiCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVybiAtMQogK30KICsKLStzZXQgdGVz dCAic3RyaXBwaW5nIHRlc3QgZmlsZSBmdW5jdGlvbmFsaXR5IgotK2lmIFsgcmVnZXhwICIuZGVi dWdfbG9jICIgJHN0cmlwX291dHB1dF0gIHsKLSsgICAgZmFpbCAiJHRlc3QgKC5kZWJ1Z19sb2Mg c3RpbGwgcHJlc2VudCkiCi0rfSBlbHNlIHsKLSsgICAgcGFzcyAiJHRlc3QgKC5kZWJ1Z19sb2Mg c3RyaXBwZWQpIgorK3NldCB0ZXN0ICJjb250aW51ZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVz dCAkdGVzdCB7CisrICAgIC1yZSAiQ29udGludWluZ1xcLlxyXG5cclxuUHJvZ3JhbSByZWNlaXZl ZCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0XFwuXHJcbjB4MCsgaW4gXFw/XFw/ IFxcKFxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAt cmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKwly ZXR1cm4KKysgICAgfQogK30KICsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRp YWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIEZv ciBDIHByb2dyYW1zLCAic3RhcnQiIHNob3VsZCBzdG9wIGluIG1haW4oKS4KLSsKLStnZGJfdGVz dCAic3RhcnQiIFwKLSsgICAgICAgICAiLiptYWluIFxcKFxcKSBhdCAuKiIgXAotKyAgICAgICAg ICJzdGFydCIKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgICAgICAgICJmdW5jLiogXFwoLipcXCkg YXQgLioiIFwKLSsgICAgICAgICAic3RlcCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUworK2dkYl90ZXN0 ICJidCBmdWxsIiAiXHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS92bGEtb3ZlcmZsb3cuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjVmY2RkODQKK2luZGV4IDAwMDAwMDAuLmM1ZDVlZTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMK LUBAIC0wLDAgKzEsODMgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJm bG93LmMKK0BAIC0wLDAgKzEsMzAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyOTc3 LDc5ICs2NTA2LDI2IEBAIGluZGV4IDAwMDAwMDAuLjVmY2RkODQKICsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KICsKLSsvKiBEZWJ1ZyBpbmZvcm1hdGlvbiAqLwotKwotKwkuc2Vj dGlvbiAuZGVidWdfaW5mbwotKy5MY3UxX2JlZ2luOgotKwkvKiBDVSBoZWFkZXIgKi8KLSsJLjRi eXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5p dCAqLwotKy5MY3UxX3N0YXJ0OgotKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCi0r CS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAq LwotKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJ LnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmFzY2lp CSJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmNcMCIJLyogRFdfQVRfbmFtZSAqLwot KwkuYXNjaWkJIkdOVSBDIDQuMy4yXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJ MQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgKi8KLSsKLSsuTHR5cGVfdWNoYXI6Ci0rCS51bGVi MTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAqLwotKwkuYXNjaWkJCSJz b21lX3N0cnVjdFwwIgkJLyogRFdfQVRfbmFtZSAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJi cmV2OiBEV19UQUdfbWVtYmVyICovCi0rCS5hc2NpaQkJImZpZWxkXDAiCQkvKiBEV19BVF9uYW1l ICovCi0rCS5ieXRlCQkwCQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsKLSsJ LmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2Ygc29tZV9zdHJ1Y3QgKi8KLSsKLSsJLmJ5 dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsKLSsuTGN1MV9lbmQ6CisrI2lu Y2x1ZGUgPHN0ZGxpYi5oPgogKwotKy8qIEFiYnJldiB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVi dWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNv ZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5 dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFt ZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkw eDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9z dHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xhbmd1YWdlICovCi0rCS51bGVi MTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKytpbnQKKyttYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgaW50IGFycmF5W2FyZ2NdOwogKwotKwkudWxlYjEy OAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX1RBR19zdHJ1 Y3R1cmVfdHlwZSAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEy OAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3Ry aW5nICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCisrICBhcnJheVswXSA9IGFycmF5WzBdOwogKwotKwkudWxlYjEyOAkz CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIg Ki8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyog RFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwku dWxlYjEyOAkweDM4CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsJLnVsZWIx MjgJMHgwYgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysgIGFib3J0ICgpOwogKwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0 LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt c3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4cAorKyAgcmV0dXJuIDA7CisrfQorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLmM0MTE1MWMKK2luZGV4IDAwMDAwMDAuLjI0YTYwOGYKIC0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRh LWxvY2F0aW9uLmV4cAotQEAgLTAsMCArMSwzNyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1vdmVyZmxvdy5leHAKK0BAIC0wLDAgKzEsMTA5IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQpAQCAtMTMwNjQsNjE0ICs2NTQwLDQ4OCBAQCBpbmRleCAwMDAwMDAwLi5jNDExNTFjCiAr IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUg cnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9y IG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQg Ki0qLWxpbnV4Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3Rh cmdldCAqLSotZWxmKl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYm ICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVh YmkqXX0gewotKyAgICByZXR1cm4gMCAgCisrIyBXZSBjb3VsZCBjcmFzaCBpbjoKKysjICMwICBi bG9ja19saW5rYWdlX2Z1bmN0aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5Cisr IyAjMSAgaW4gZHdhcmZfYmxvY2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3 YXJmMmJsb2NrLmM6OTcKKysjICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0 aW9uIChnZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBOVUxMKSk7CisrIyAjMiAgaW4gZXhlY3V0ZV9z dGFja19vcCAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgorKyMgIzMgIGluIGR3 YXJmX2Jsb2NrX2V4ZWNfY29yZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoxNTYKKysj ICM0ICBkd2FyZl9ibG9ja19leGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIw NgorKyMgIzUgIGluIHJhbmdlX3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4v Li4vZ2RiL2dkYnR5cGVzLmM6MTQzMAorKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4p IGF0IC4uLy4uL2dkYi9nZGJ0eXBlcy5jOjg0MAorKyMgLi4uCisrIyAjMjEgaW4gcHN5bXRhYl90 b19zeW10YWIgKC4uLikgYXQgLi4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKKysjIC4uLgorKyMgIzI5 IGluIGJhY2t0cmFjZV9jb21tYW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3MworKwor K3NldCB0ZXN0ZmlsZSB2bGEtb3ZlcmZsb3cKKytzZXQgc2hmaWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0tZ2RiLnNoCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCiArfQogKwotK3NldCB0ZXN0ZmlsZSAiZHcyLXN0 cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbiIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0r c2V0IGJpbmZpbGUgJHt0ZXN0ZmlsZX0ueAorK3NldCBmIFtvcGVuICJ8Z2V0Y29uZiBQQUdFU0la RSIgInIiXQorK2dldHMgJGYgcGFnZXNpemUKKytjbG9zZSAkZgogKwotK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGly fS8ke2JpbmZpbGV9IiBvYmplY3Qge25vZGVidWd9XSAhPSAiIiB9IHsKKytnZGJfZXhpdAorK2dk Yl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2Fk ICR7YmluZmlsZX0KKysKKytzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAtaSBbYm9hcmRfaW5mbyBo b3N0IGZpbGVpZF1dCisrCisraWYgeyBbcnVudG9fbWFpbl0gPCAwIH0geworKyAgICB1bnRlc3Rl ZCB2bGEtb3ZlcmZsb3cKICsgICAgcmV0dXJuIC0xCiArfQogKwotK2NsZWFuX3Jlc3RhcnQgJGJp bmZpbGUKKysjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ugc3RheSBhdCBtYWluLgog KwotK2dkYl90ZXN0ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0IHNv bWVfc3RydWN0IHtcW1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uZDdiOGJlYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1AQCAtMCwwICsxLDQyIEBACi0rIyBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytwcm9jIG1lbW9y eV92X3BhZ2VzX2dldCB7fSB7CisrICAgIGdsb2JhbCBwaWRfb2ZfZ2RiIHBhZ2VzaXplCisrICAg IHNldCBmZCBbb3BlbiAiL3Byb2MvJHBpZF9vZl9nZGIvc3RhdG0iXQorKyAgICBnZXRzICRmZCBs aW5lCisrICAgIGNsb3NlICRmZAorKyAgICAjIG51bWJlciBvZiBwYWdlcyBvZiB2aXJ0dWFsIG1l bW9yeQorKyAgICBzY2FuICRsaW5lICIlZCIgZHJzCisrICAgIHJldHVybiAkZHJzCisrfQogKwot KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj IAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisrc2V0IHBhZ2Vz X2ZvdW5kIFttZW1vcnlfdl9wYWdlc19nZXRdCiArCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4g YnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKyMgczM5MHgg d2l0aCBnbGliYy1kZWJ1Z2luZm8uczM5MHggaW5zdGFsbGVkIHVzZWQgYXBwcm94LiAxNk1CLgor K3NldCBtYl9yZXNlcnZlIDQwCisrdmVyYm9zZSAtbG9nICJwYWdlc19mb3VuZCA9ICRwYWdlc19m b3VuZCwgbWJfcmVzZXJ2ZSA9ICRtYl9yZXNlcnZlIgorK3NldCBrYl9mb3VuZCBbZXhwciAkcGFn ZXNfZm91bmQgKiAkcGFnZXNpemUgLyAxMDI0XQorK3NldCBrYl9wZXJtaXQgW2V4cHIgJGtiX2Zv dW5kICsgMSAqIDEwMjQgKyAkbWJfcmVzZXJ2ZSAqIDEwMjRdCisrdmVyYm9zZSAtbG9nICJrYl9m b3VuZCA9ICRrYl9mb3VuZCwga2JfcGVybWl0ID0gJGtiX3Blcm1pdCIKICsKLSsjIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgQXJyYXkgZWxlbWVudCBzdHJpZGUgbXVz dCBub3QgYmUKLSsjIHNwZWNpZmllZCBpbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBh IG51bWJlciBvZiBieXRlcyBpbnN0ZWFkLgotKyMgT3JpZ2luYWwgcHJvYmxlbToKLSsjIChnZGIp IHAgYzQwcHQoMSkKLSsjICQxID0gJzAtaGVsbG8nLCAnICcgPHJlcGVhdHMgMzMgdGltZXM+Ci0r IyAoZ2RiKSBwIGM0MHB0KDIpCi0rIyB3YXJuaW5nOiBGb3J0cmFuIGFycmF5IHN0cmlkZSBub3Qg ZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50IHNpemUKKysjIENyZWF0ZSB0aGUgdWxpbWl0IHdyYXBw ZXIuCisrc2V0IGYgW29wZW4gJHNoZmlsZSAidyJdCisrcHV0cyAkZiAiIyEgL2Jpbi9zaCIKKytw dXRzICRmICJ1bGltaXQgLXYgJGtiX3Blcm1pdCIKKytwdXRzICRmICJleGVjICRHREIgXCJcJEBc IiIKKytjbG9zZSAkZgorK3JlbW90ZV9leGVjIGhvc3QgImNobW9kICt4ICRzaGZpbGUiCisrCisr Z2RiX2V4aXQKKytzZXQgR0RCb2xkICRHREIKKytzZXQgR0RCICIkc2hmaWxlIgorK2dkYl9zdGFy dAorK3NldCBHREIgJEdEQm9sZAorKworK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKysKKytzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAt aSBbYm9hcmRfaW5mbyBob3N0IGZpbGVpZF1dCisrCisrIyBDaGVjayB0aGUgc2l6ZSBhZ2FpbiBh ZnRlciB0aGUgc2Vjb25kIHJ1bi4KKysjIFdlIG11c3Qgbm90IHN0b3AgaW4gbWFpbiBhcyBpdCB3 b3VsZCBjYWNoZSBgYXJyYXknIGFuZCBuZXZlciBjcmFzaCBsYXRlci4KKysKKytnZGJfcnVuX2Nt ZAorKworK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgYmVmb3JlIGFib3J0KCkgPSBbZXhwciBbbWVt b3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgogKwotK3NldCB0ZXN0ZmlsZSBk d2FyZi1zdHJpZGUKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKKytnZGJfdGVzdCAiIiAi UHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHQUJSVCwgQWJvcnRlZC4uKiIgIkVudGVyIGFib3J0 KCkiCiArCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0 ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KKyt2 ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNf Z2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgogKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsK LSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNv bnRpbnVlCi0rfQorKyMgYGFib3J0JyBjYW4gZ2V0IGV4cHJlc3NlZCBhcyBgKl9fR0lfYWJvcnQn LgorK2dkYl90ZXN0ICJidCIgImluIFxbXiBcXSphYm9ydCBcXCguKiBpbiBtYWluIFxcKC4qIiAi QmFja3RyYWNlIGFmdGVyIGFib3J0KCkiCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgImJyZWFrLWhlcmUiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVh ay1oZXJlIiAiLipicmVhay1oZXJlLioiCi0rZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAnMC1o ZWxsby4qIgotK2dkYl90ZXN0ICJwIGM0MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKKyt2ZXJib3NlIC1sb2cgImtiX2Zv dW5kIGluIGJ0IGFmdGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRw YWdlc2l6ZSAvIDEwMjRdIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uZTQ5MmIzYQoraW5kZXggMDAwMDAwMC4uZTFmM2VkMQogLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCi1A QCAtMCwwICsxLDQwIEBACi0rISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgot KyEKLSshIEZpbGUgd3JpdHRlbiBieSBBbGFuIE1hdHN1b2thLgorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuYworQEAgLTAsMCArMSw1NSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rcHJvZ3JhbSByZXBybworKyAgIENv cHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgdHlwZSBz bWFsbF9zdHJpZGUKLSsgICAgIGNoYXJhY3Rlcio0MCBsb25nX3N0cmluZwotKyAgICAgaW50ZWdl ciAgICAgIHNtYWxsX3BhZAotKyAgZW5kIHR5cGUgc21hbGxfc3RyaWRlCisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsgIHR5cGUoc21hbGxfc3RyaWRlKSwgZGltZW5zaW9uICgy MCksIHRhcmdldCA6OiB1bnBsZWFzYW50Ci0rICBjaGFyYWN0ZXIqNDAsIHBvaW50ZXIsIGRpbWVu c2lvbig6KTo6IGM0MHB0CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsgIGludGVnZXIg aQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotKyAgZG8gaSA9IDAsMTkK LSsgICAgIHVucGxlYXNhbnQoaSsxKSVzbWFsbF9wYWQgPSBpKzEKLSsgICAgIHVucGxlYXNhbnQo aSsxKSVsb25nX3N0cmluZyA9IGNoYXIgKGljaGFyKCcwJykgKyBpKSAvLyAnLWhlbGxvJwotKyAg ZW5kIGRvCisrI2luY2x1ZGUgPHN0cmluZy5oPgogKwotKyAgYzQwcHQgPT4gdW5wbGVhc2FudCVs b25nX3N0cmluZworK3ZvaWQKKyttYXJrZXIgKHZvaWQpCisreworK30KICsKLSsgIHByaW50ICos IGM0MHB0ICAhIGJyZWFrLWhlcmUKKyt2b2lkCisrYmFyIChjaGFyICphLCBjaGFyICpiLCBjaGFy ICpjLCBpbnQgc2l6ZSkKKyt7CisrICBtZW1zZXQgKGEsICcxJywgc2l6ZSk7CisrICBtZW1zZXQg KGIsICcyJywgc2l6ZSk7CisrICBtZW1zZXQgKGMsICczJywgNDgpOworK30KICsKLStlbmQgcHJv Z3JhbSByZXBybwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1p Yy1vdGhlci1mcmFtZS1zdHViLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1p Yy1vdGhlci1mcmFtZS1zdHViLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjI2MWNlMTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAotQEAgLTAsMCArMSwyNCBAQAotKyEgQ29w eXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhl IEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3 cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQg Zm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+LgorK3ZvaWQKKytmb28gKGludCBzaXplKQorK3sKKysgIGNoYXIgdGVtcDFbc2l6 ZV07CisrICBjaGFyIHRlbXAzWzQ4XTsKICsKLStzdWJyb3V0aW5lIGJhcgotKyAgcmVhbCA6OiBk dW1teQotKyAgZHVtbXkgPSAxCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKKysgIHRlbXAxW3NpemUg LSAxXSA9ICdcMCc7CisrICB7CisrICAgIGNoYXIgdGVtcDJbc2l6ZV07CisrCisrICAgIGJhciAo dGVtcDEsIHRlbXAyLCB0ZW1wMywgc2l6ZSk7CisrCisrICAgIG1hcmtlciAoKTsJLyogYnJlYWst aGVyZSAqLworKyAgfQorK30KKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAoMjYp OworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmE0MWI4MAoraW5kZXggMDAwMDAw MC4uNWRhNzM3OAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAotQEAgLTAsMCArMSwzNyBAQAotKyMgQ29weXJpZ2h0 IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS5leHAKK0BAIC0wLDAgKzEsNjIgQEAKKysjIENvcHlyaWdodCAyMDA4IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIyAKKysjCiArIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiArIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAr IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCisrIwog KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rc2V0IHRlc3Rm aWxlICJkeW5hbWljLW90aGVyLWZyYW1lIgotK3NldCBzcmNmaWxlMSAke3Rlc3RmaWxlfS5mOTAK LStzZXQgc3JjZmlsZTIgJHt0ZXN0ZmlsZX0tc3R1Yi5mOTAKLStzZXQgb2JqZmlsZTIgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1zdHViLm8KLStzZXQgZXhlY3V0YWJsZSAke3Rlc3Rm aWxlfQotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlMn0iICIke29iamZpbGUyfSIgb2JqZWN0IHtmOTB9XSAhPSAiIgotKyAgICAgfHwg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTF9ICR7b2JqZmlsZTJ9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZTF9IG9yICR7c3JjZmlsZTJ9IgorK3Nl dCB0ZXN0ZmlsZSB2bGEKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVi dWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9n cmFtIgogKyAgICByZXR1cm4gLTEKICt9CiArCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFibGV9 CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0raWYgIVtydW50byBiYXJfXSB0aGVuIHsK LSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYmFyXyIKLSsgICAgY29udGludWUKKytpZiAh W3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgdmxhCisrICAgIHJldHVybiAtMQogK30KICsK LStnZGJfdGVzdCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmJjNjM3ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAotQEAgLTAsMCAr MSwzNiBAQAotKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJ aGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEg T3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+ LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJicmVhay1oZXJlIl0KICsKLStzdWJyb3V0aW5lIGZvbyAoc3RyaW5nKQotKyAgaW50 ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgYmFyCi0rICAgIGVuZCBzdWJyb3V0aW5lCi0rICBlbmQg aW50ZXJmYWNlCi0rICBjaGFyYWN0ZXIgc3RyaW5nKigqKQotKyAgY2FsbCBiYXIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEgc3RvcC1oZXJlCi0rZW5kIHN1YnJvdXRpbmUgZm9vCi0r cHJvZ3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UKLSsgICAgc3Vicm91dGluZSBmb28gKHN0cmluZykK LSsgICAgY2hhcmFjdGVyIHN0cmluZyooKikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBp bnRlcmZhY2UKLSsgIGNhbGwgZm9vICgnaGVsbG8nKQotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R5bmFtaWMuZXhwCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUi CisrCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxc XF0iICJmaXJzdDogd2hhdGlzIHRlbXAxIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBl ID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMiIKKytnZGJfdGVz dCAid2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiB3aGF0aXMg dGVtcDMiCisrCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxc XSIgImZpcnN0OiBwdHlwZSB0ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0g Y2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0 ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCisrCisr Z2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHBy aW50IHRlbXAxIgorK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDI2IHRpbWVz PiIgImZpcnN0OiBwcmludCB0ZW1wMiIKKytnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8cmVw ZWF0cyA0OCB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDMiCisrCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5 cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMSIKKytnZGJf dGVzdCAid2hhdGlzIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgInNlY29u ZDogd2hhdGlzIHRlbXAyIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBc XFxbNDhcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInB0eXBlIHRl bXAxIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDEiCisrZ2Ri X3Rlc3QgInB0eXBlIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5 cGUgdGVtcDIiCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxc XSIgInNlY29uZDogcHR5cGUgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScg PHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKKytnZGJfdGVzdCAicCB0 ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgor K2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDog cHJpbnQgdGVtcDMiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1i b3VuZC1sb2NsaXN0LlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xp c3QuUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU3OWU5NGEKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKLUBA IC0wLDAgKzEsMTUyIEBACi0rIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KK2luZGV4IDAwMDAwMDAuLmFhYzNiYWEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCitAQCAtMCwwICsxLDI0 NiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CiArCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKKysgICBD b3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsjIFRoaXMg ZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4uCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsjIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgSXQgY29udGFpbnMgdGVzdHMgZm9yIGR5bmFt aWNhbGx5Ci0rIyBhbGxvY2F0ZWQgRm9ydHJhbiBhcnJheXMuCi0rIyBJdCBkZXBlbmRzIG9uIHRo ZSBHQ0MgZHluYW1pYyBGb3J0cmFuIGFycmF5cyBEV0FSRiBzdXBwb3J0OgotKyMgCWh0dHA6Ly9n Y2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDQKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgogKwotK3NldCB0ZXN0ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0raWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQorKy8qIERlYnVnIGluZm9y bWF0aW9uICovCiArCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrLyogV2Ugd2lsbCBgYnJl YWsgKm1haW4nIGF0IHRoZSB2ZXJ5IGZpcnN0IGluc3RydWN0aW9uLiAgKi8KKysjZGVmaW5lIG1h aW5fbGVuZ3RoIDEKICsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAi Y291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KKysJ LnNlY3Rpb24JLmRhdGEKKyt2YXJkYXRhOgorKwkvKiBTZWUgRFdfT1BfbGl0MyArIDEgKDAtYmFz ZWQpLiAgKi8KKysJLnN0cmluZwkJInNlZW5ub3RzZWVuIgogKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4LWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2YXJ4LWluaXQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmpl Y3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCB1bmFsbG9jYXRlZCIKLStn ZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBh bGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEs NSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJl Y2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1 LDE3KSB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNyk9MSIgIihDYW5ub3Qg YWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVj dHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInAgdmFyeCgxLDUsMTcpPTEgdW5hbGxvY2F0 ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVu YWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMg bm90IGFsbG9jYXRlZFxcLiIgInB0eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKKysJLnNl Y3Rpb24JLmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLjRieXRlCQkuTGN1MV9lbmQgLSAu TGN1MV9zdGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0 OgorKwkuMmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLworKwkuNGJ5dGUJCS5M ZGVidWdfYWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCisrCS5ieXRl CQk0CQkJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KICsKLStnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAw KSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4p Ci0rZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkg XFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0ZWQiCi0rIyBJbnRlbCBGb3J0 cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rl c3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYg dmFyeCBhbGxvY2F0ZWQiCisrCS8qIENVIGRpZSAqLworKwkudWxlYjEyOAkxCQkJLyogQWJicmV2 OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRf cHJvZHVjZXIgKi8KKysJLyogVXNlIEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdf QVRfbmFtZSAiIi4gICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAg Ki8KKysJLjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCisrCS5ieXRlCQltYWluX2xl bmd0aAkJLyogRFdfQVRfaGlnaF9wYyAqLwogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2YXJ4LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZh cngtZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZhcngoMiwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA2 IgotK2dkYl90ZXN0ICJwIHZhcngoMSwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA3IgotK2dkYl90 ZXN0ICJwIHZhcngoMiwgNiwgMTgpIiAiXFwkXFswLTlcXSogPSA4IgotK2dkYl90ZXN0ICJwIHZh cngoNiwgMTUsIDI4KSIgIlxcJFxbMC05XF0qID0gOSIKLSsjIFRoZSBsYXR0ZXIgb25lIGlzIGZv ciB0aGUgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBwb2ludGVyIHR5cGUuCi0rZ2Ri X3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90 IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2Jq ZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInAgdmFydiB1bmFz c29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKDwob2JqZWN0fHRoZSBh cnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFj Y2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIg InB0eXBlIHZhcnYgdW5hc3NvY2lhdGVkIgorKy5MYXJyYXlfdHlwZToKKysJLnVsZWIxMjgJMgkJ CS8qIEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8KKysJLjRieXRlCQkuTGNoYXJfdHlwZS0u TGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCiArCi0rc2V0IHRlc3QgIm91dHB1dCB2YXJ4Igot K2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJeb3V0cHV0IHZhcnhc clxuXFsoKSAsNjc4OS5cXSokZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQot K30KKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJ LjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCS5ieXRl CQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KKysJLjRieXRlCQkuTGxlbl92YXItLkxjdTFf YmVnaW4JLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hp bGRyZW4gb2YgZGllICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZhcnYtYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNz b2NpYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIg InAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFy digzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDYiICJwIHZhcnYoMywgNywgMTkpIGFzc29jaWF0 ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdD QyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5 NDk2NzI5NSkiICJwIGwgaWYgdmFydiBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4 IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKSIgInB0 eXBlIHZhcnggd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVy IDEwLjEuMDA4IHVzZXMgdGhlIHBvaW50ZXIgdHlwZS4KLStnZGJfdGVzdCAicHR5cGUgdmFydiIg InR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP3JlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNTox NSwxNzoyOFxcKVxcKT8iICJwdHlwZSB2YXJ2IGFzc29jaWF0ZWQiCisrCS8qIERXX0FUX3VwcGVy X2JvdW5kIGlzIHJlZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUuICAqLworKy5M YXJyYXliX3R5cGU6CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBl ICovCisrCS40Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwog KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWZpbGxlZCJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZh cngoMywgNywgMTkpIiAiXFwkXFswLTlcXSogPSAxMCIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2 YXJ2IGZpbGxlZCIKLStnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0g MTAiICJwIHZhcnYoMywgNywgMTkpIGZpbGxlZCIKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjog RFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdp bgkvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8K KysJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICov CisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwogKwotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWRlYXNzb2NpYXRlZCJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtZGVhc3NvY2lhdGVkIgotKyMgVGhlIGxhdHRlciBv bmUgaXMgZm9yIHRoZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlw ZS4KLStnZGJfdGVzdCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFycmF5 KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNz IHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2 YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChvYmpl Y3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFi bGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2Np YXRlZC4pIiAicHR5cGUgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxb MC05XF0qID0gXFwuRkFMU0VcXC4iICJwIGwgaWYgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rl c3QgInAgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0 aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZFxc LiIKLStnZGJfdGVzdCAicHR5cGUgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5h YmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBu b3QgYXNzb2NpYXRlZFxcLiIKKysJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcg cmVnaXN0ZXIuICAqLworKy5MYXJyYXlyZWdfdHlwZToKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJl djogRFdfVEFHX2FycmF5X3R5cGUgKi8KKysJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdp bgkvKiBEV19BVF90eXBlICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZhcngtZGVhbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4 LWRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwIHZhcngiICJcXCRcWzAtOVxdKiA9IDwob2JqZWN0 fHRoZSBhcnJheSkgaXMgbm90IGFsbG9jYXRlZD4iICJwIHZhcnggZGVhbGxvY2F0ZWQiCi0rZ2Ri X3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYWxs b2NhdGVkPiIgInB0eXBlIHZhcnggZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxb MC05XF0qID0gXFwuRkFMU0VcXC4iICJwIGwgaWYgdmFyeCBkZWFsbG9jYXRlZCIKLStnZGJfdGVz dCAicCB2YXJ4KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRo ZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4i ICJwIHZhcngoMSw1LDE3KSBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUs MTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNh dXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicHR5cGUgdmFyeCgx LDUsMTcpIGRlYWxsb2NhdGVkIgorKwkudWxlYjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3Vi cmFuZ2VfdHlwZSB3aXRoIGJsb2NrICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVn aW4JLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICov CisrCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KKysxOgkuYnl0ZQkJ MHg1MAkJCS8qIERXX09QX3JlZzAgKi8KKysyOgorKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGls ZHJlbiBvZiBkaWUgKi8KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmFyeS1wYXNzZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LXBhc3NlZCIK LSsjICQxID0gKCggKCAxLCAxLCAxLCAxLCAxLCAxKSAoIDEsIDEsIDEsIDEsIDEsIDEpIC0tLSAs IDEpICkgKCAoIDEsIDEsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFyeSIgIlxcJFxb MC05XF0qID0gXFwoXFsoKTEsIC5cXSpcXCkiCisrLkx1aW50X3R5cGU6CisrCS51bGViMTI4CTQJ CQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRfc3RyCQkv KiBEV19BVF9uYW1lICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5i eXRlCQk3CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAidmFyeS1maWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJ2YXJ5LWZpbGxlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeSIgInR5cGUgPSByZWFsKFxcKGtp bmQ9NFxcKXxcXCo0KSBcXCgxMCwxMFxcKSIKLStnZGJfdGVzdCAicCB2YXJ5KDEsIDEpIiAiXFwk XFswLTlcXSogPSA4IgotK2dkYl90ZXN0ICJwIHZhcnkoMiwgMikiICJcXCRcWzAtOVxdKiA9IDki Ci0rZ2RiX3Rlc3QgInAgdmFyeSgxLCAzKSIgIlxcJFxbMC05XF0qID0gMTAiCi0rIyAkMSA9ICgo ICggMywgMywgMywgMywgMywgMykgKCAzLCAzLCAzLCAzLCAzLCAzKSAtLS0gLCAzKSApICggKCAz LCAzLCAuLi4pIC4uLikgLi4uKQotK2dkYl90ZXN0ICJwIHZhcnciICJcXCRcWzAtOVxdKiA9IFxc KFxbKCkzLCAuXF0qXFwpIgorKy5MY2hhcl90eXBlOgorKwkudWxlYjEyOAk0CQkJLyogQWJicmV2 OiBEV19UQUdfYmFzZV90eXBlICovCisrCS40Ynl0ZQkJLkxjaGFyX3N0cgkJLyogRFdfQVRfbmFt ZSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkuYnl0ZQkJNgkJCS8q IERXX0FUX2VuY29kaW5nICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZhcnctYWxtb3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFy dy1hbG1vc3RmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChr aW5kPTRcXCl8XFwqNCkgXFwoNSw0LDNcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIg IlxcJFxbMC05XF0qID0gMSIKLSsjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUs IDUsIDUsIDUsIDUpIC0tLSAsIDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rl c3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1 LCAuXF0qXFwpIiAicCB2YXJ3IGZpbGxlZCIKLSsjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90 aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsjIG91 dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgotKyMg V2UgbmVlZCBib3RoIHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25h bGx5IG1heSBzdGlsbCBiZQotKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0 ZXIgYGZpbmlzaCcuCi0rZ2RiX3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8 Y2FsbCBmb28gXFwoeCwgelxcKDI6NiwgNDo3LCA2OjhcXClcXCkpIgotK2dkYl90ZXN0ICJwIHoo Miw0LDUpIiAiXFwkXFswLTlcXSogPSAzIgotK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFsw LTlcXSogPSA2IgotK2dkYl90ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgotK2dk Yl90ZXN0ICJwIHooNCw0LDYpIiAiXFwkXFswLTlcXSogPSAxIgorKy5MbGVuX3ZhcjoKKysJLnVs ZWIxMjgJNQkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KKysJLmJ5 dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxj dTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2Ns aXN0CS8qIERXX0FUX2xvY2F0aW9uICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAidmFyei1hbG1vc3RmaWxsZWQiCi0rIyBHQ0MgdXNlcyB0aGUgcG9pbnRlciB0eXBlIGhlcmUs IEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3QuCi0rZ2RiX3Rlc3QgInB0 eXBlIHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0 KSBcXChcXCpcXClcXCk/IgotKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBoYXMg YSBidWcgaGVyZSAtICgyOjExLDc6NykKLSsjIGFzIGl0IHByb2R1Y2VzIERXX0FUX2xvd2VyX2Jv dW5kID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnQiICJ0 eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCgyOjExLDc6 XFwqXFwpXFwpPyIKLStnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlcXSogPSBcXChcXCkiCi0r Z2RiX3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgotK2dkYl90ZXN0ICJwIHZh cnooMykiICJcXCRcWzAtOVxdKiA9IDQiCi0rIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDEpCi0rZ2Ri X3Rlc3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgotKyMgbWFwcyB0byBmb286OnZh cnkoMiwyKQotK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIKLSsjIG1h cHMgdG8gZm9vOjp2YXJ5KDEsMykKLStnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAtOVxd KiA9IDEwIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5m OTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGY0MzU2NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAotQEAgLTAsMCArMSw5OCBAQAotKyEg Q29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMg dGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmls ZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZp ZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+LgorKwkvKiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlIGZvciBiX3N0cmluZy4g ICovCisrLkxsZW5iX3ZhcjoKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldjogRFdfVEFHX3Zhcmlh YmxlIGFydGlmaWNpYWwgbm8gRFdfQVRfbG9jYXRpb24gKi8KKysJLmJ5dGUJCTEJCQkvKiBEV19B VF9hcnRpZmljaWFsICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdf QVRfdHlwZSAqLworKworKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUg RFdfRk9STV9zdHJpbmcgKi8KKysJLnN0cmluZwkJImFfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAq LworKwkuNGJ5dGUJCS5MYXJyYXlfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisr CS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysxOgkuYnl0ZQkJMwkJCS8q ICAgRFdfT1BfYWRkciAqLworKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLworKzI6 CisrCisrCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIGFuIG9wdGltaXplZC1v dXQgdmFyaWFibGUuICAqLworKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFi bGUgRFdfRk9STV9zdHJpbmcgKi8KKysJLnN0cmluZwkJImJfc3RyaW5nIgkJLyogRFdfQVRfbmFt ZSAqLworKwkuNGJ5dGUJCS5MYXJyYXliX3R5cGUtLkxjdTFfYmVnaW4gLyogRFdfQVRfdHlwZSAq LworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJ CQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXJkYXRhCQkJLyogICA8YWRkcj4gKi8K KysyOgogKwotK3N1YnJvdXRpbmUgYmF6Ci0rICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6 IHZhcnggKDosIDosIDopCi0rICByZWFsLCBwb2ludGVyIDo6IHZhcnYgKDosIDosIDopCi0rICBy ZWFsLCB0YXJnZXQgOjogdmFydSAoMSwgMiwgMykKLSsgIGxvZ2ljYWwgOjogbAotKyAgYWxsb2Nh dGUgKHZhcnggKDE6NiwgNToxNSwgMTc6MjgpKSAgICAgICAgICAgICEgdmFyeC1pbml0Ci0rICBs ID0gYWxsb2NhdGVkICh2YXJ4KQotKyAgdmFyeCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICEgdmFyeC1hbGxvY2F0ZWQKLSsgIHZhcngoMSwgNSwgMTcpID0gNwotKyAg dmFyeCgyLCA2LCAxOCkgPSA4Ci0rICB2YXJ4KDYsIDE1LCAyOCkgPSA5Ci0rICB2YXJ2ID0+IHZh cnggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWZpbGxlZAotKyAgbCA9 IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2YXJ2KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ2LWFzc29jaWF0ZWQKLSsgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZmlsbGVkCi0rICBsID0gYXNzb2NpYXRlZCAo dmFydikKLSsgIGRlYWxsb2NhdGUgKHZhcngpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh IHZhcnYtZGVhc3NvY2lhdGVkCi0rICBsID0gYWxsb2NhdGVkICh2YXJ4KQotKyAgdmFydSg6LCA6 LCA6KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAot KyAgYWxsb2NhdGUgKHZhcnYgKDE6NiwgNToxNSwgMTc6MjgpKQotKyAgbCA9IGFzc29jaWF0ZWQg KHZhcnYpCi0rICB2YXJ2KDosIDosIDopID0gNgotKyAgdmFydigxLCA1LCAxNykgPSA3Ci0rICB2 YXJ2KDIsIDYsIDE4KSA9IDgKLSsgIHZhcnYoNiwgMTUsIDI4KSA9IDkKLSsgIGRlYWxsb2NhdGUg KHZhcnYpCi0rICBsID0gYXNzb2NpYXRlZCAodmFydikKLSsgIHZhcnYgPT4gdmFydQotKyAgdmFy digxLCAxLCAxKSA9IDYKLSsgIHZhcnYoMSwgMiwgMykgPSA3Ci0rICBsID0gYXNzb2NpYXRlZCAo dmFydikKLStlbmQgc3Vicm91dGluZSBiYXoKLStzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykK LSsgIHJlYWwgOjogdmFyeSAoOiwgOikKLSsgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKLSsgIHZh cnkoOiwgOikgPSA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2Vk Ci0rICB2YXJ5KDEsIDEpID0gOAotKyAgdmFyeSgyLCAyKSA9IDkKLSsgIHZhcnkoMSwgMykgPSAx MAotKyAgdmFydyg6LCA6LCA6KSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFy eS1maWxsZWQKLSsgIHZhcncoMSwgMSwgMSkgPSA2Ci0rICB2YXJ3KDIsIDIsIDIpID0gNyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ3LWFsbW9zdGZpbGxlZAotK2VuZCBzdWJyb3V0 aW5lIGZvbwotK3N1YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQotKyAgcmVhbCA6OiB2YXJ6ICgq KQotKyAgcmVhbCA6OiB2YXJ0ICgyOjExLCA3OiopCi0rICB2YXJ6KDE6MykgPSA0Ci0rICB2YXJ6 KDIpID0gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZp bGxlZAotKyAgdmFydCgyLDcpID0gdmFydCgyLDcpCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi0rcHJv Z3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UKLSsgICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncp Ci0rICAgIHJlYWwgOjogdmFyeSAoOiwgOikKLSsgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQot KyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5kIGludGVyZmFjZQotKyAgaW50ZXJmYWNlCi0rICAg IHN1YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQotKyAgICByZWFsIDo6IHZhcnogKCopCi0rICAg IHJlYWwgOjogdmFydCAoMjoxMSwgNzoqKQotKyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5kIGlu dGVyZmFjZQotKyAgcmVhbCA6OiB4ICgxMCwgMTApLCB5ICg1KSwgeig4LCA4LCA4KQotKyAgeCg6 LDopID0gMQotKyAgeSg6KSA9IDIKLSsgIHooOiw6LDopID0gMwotKyAgY2FsbCBiYXoKLSsgIGNh bGwgZm9vICh4LCB6KDI6NiwgNDo3LCA2OjgpKQotKyAgY2FsbCBiYXIgKHksIHgpCi0rICBpZiAo eCAoMSwgMSkgLm5lLiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0 KSBjYWxsIGFib3J0Ci0rICBpZiAoeCAoMSwgMykgLm5lLiAxMCkgY2FsbCBhYm9ydAotKyAgaWYg KHogKDIsIDQsIDYpIC5uZS4gNiAub3IuIHogKDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQs IDcpIC5uZS4gNSkgY2FsbCBhYm9ydAotKyAgaWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwg Mi8pKSkgY2FsbCBhYm9ydAotKyAgY2FsbCBmb28gKHRyYW5zcG9zZSAoeCksIHopCi0rICBpZiAo eCAoMSwgMSkgLm5lLiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0 KSBjYWxsIGFib3J0Ci0rICBpZiAoeCAoMywgMSkgLm5lLiAxMCkgY2FsbCBhYm9ydAotK2VuZAot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjM5ZGUyYzQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3RyaW5nLmV4cAotQEAgLTAsMCArMSw1OSBAQAotKyMgQ29weXJpZ2h0IDIw MDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCS8qIERXX0FUX3VwcGVyX2JvdW5k IGlzIHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8KKysJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjog RFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCisrCS5zdHJpbmcJCSJyZWdfc3RyaW5n IgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdp biAvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24g Ki8KKysxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLworKwkuNGJ5dGUJCXZhcmRhdGEJ CQkvKiAgIDxhZGRyPiAqLworKzI6CiArCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMg Ci0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8K KysuTGN1MV9lbmQ6CiArCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKwkuc2VjdGlvbgkuZGVidWdfbG9jCisr Lkxsb2NsaXN0OgorKy5MbGVuX2xvY2xpc3Q6CisrCS40Ynl0ZQkwCQkJIyBMb2NhdGlvbiBsaXN0 IGJlZ2luIGFkZHJlc3MKKysJLjRieXRlCW1haW5fbGVuZ3RoCQkjIExvY2F0aW9uIGxpc3QgZW5k IGFkZHJlc3MKKysJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCisrMToJ LmJ5dGUJMHgzMwkjIERXX09QX2xpdDMKKysJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVl CisrMjoKKysJLnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxM U1QyKQorKwkucXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1Qy KQogKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250 YWlucyB0ZXN0cyBmb3IgRm9ydHJhbgotKyMgc3RyaW5ncyB3aXRoIGR5bmFtaWMgbGVuZ3RoLgor Kwkuc2VjdGlvbiAuZGVidWdfYWJicmV2CisrLkxkZWJ1Z19hYmJyZXYwOgorKwkudWxlYjEyOAkx CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxl X3VuaXQgKi8KKysJLmJ5dGUJCTB4MQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkw eDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9z dHJwICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEy OAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9s b3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGViMTI4 CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1f ZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KICsKLStzZXQgdGVzdGZpbGUgInN0cmluZyIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEJ CQkvKiBUQUc6IERXX1RBR19hcnJheV90eXBlICovCisrCS5ieXRlCQkweDEJCQkvKiBEV19jaGls ZHJlbl95ZXMgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIx MjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwotK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KKysJLnVsZWIxMjgJMwkJ CS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2Vf dHlwZSAqLworKwkuYnl0ZQkJMHgwCQkJLyogbm8gY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHg0 OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAq LworKwkudWxlYjEyOAkweDIyCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KKysJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDJmCQkJLyogRFdfQVRfdXBw ZXJfYm91bmQgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQorKwkudWxlYjEyOAk0CQkJLyogQWJicmV2 IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5 dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25h bWUgKi8KKysJLnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCisrCS51bGViMTI4CTB4 YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2Rh dGExICovCisrCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKwkudWxlYjEy OAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0raWYgIVtydW50byBNQUlO X19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5f XyIKLSsgICAgY29udGludWUKLSt9CisrCS51bGViMTI4CTUJCQkvKiBBYmJyZXYgY29kZSAqLwor KwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkweDAJCQkv KiBub19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAq LworKwkudWxlYjEyOAkweDBjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS51bGViMTI4CTB4NDkJ CQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8K KysJLnVsZWIxMjgJMHgwMgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrCS51bGViMTI4CTB4MDYJ CQkvKiBEV19GT1JNX2RhdGE0ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgInZhci1pbml0Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyLWluaXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGMiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9 MVxcKXxcXCoxKSIKLStnZGJfdGVzdCAicHR5cGUgZCIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2lu ZD04XFwpfFxcKjgpIgotK2dkYl90ZXN0ICJwdHlwZSBlIiAidHlwZSA9IGNoYXJhY3RlcihcXChr aW5kPTRcXCl8XFwqNCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGYiICJ0eXBlID0gY2hhcmFjdGVyKFxc KGtpbmQ9NFxcKXxcXCo0KSBcXCg3LDg6MTBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBlICplIiAiQXR0 ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIgotK2dkYl90ZXN0 ICJwdHlwZSAqZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIFxcKDdcXCki Ci0rZ2RiX3Rlc3QgInAgYyIgIlxcJFxbMC05XF0qID0gJ2MnIgotK2dkYl90ZXN0ICJwIGQiICJc XCRcWzAtOVxdKiA9ICdkICAgICAgICciCi0rZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0g J2cgICAnIgotK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnaCAgICcsICdo ICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAg JywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCgg J2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwp IFxcKSIKLStnZGJfdGVzdCAicCAqZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5v bi1wb2ludGVyIHZhbHVlLiIKLStnZGJfdGVzdCAicCAqZiIgIkF0dGVtcHQgdG8gdGFrZSBjb250 ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKKysJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBj b2RlICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KKysJLmJ5dGUJ CTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUg Ki8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHg0 OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAq LworKwkudWxlYjEyOAkweDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLworKwkudWxlYjEyOAkweGEJ CQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2YXItZmluaXNoIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAidmFyLWZpbmlzaCIKLStnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJw IGUgcmUtc2V0IgotK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcs ICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdm MiAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBc XCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAn XFwpIFxcKSIgInAgKmYgcmUtc2V0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3RyaW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIyNmRjNWQKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotQEAgLTAsMCAr MSwzNyBAQAotKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJ aGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEg T3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+ LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKwkudWxlYjEyOAk3CQkJLyogQWJicmV2IGNvZGUg Ki8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLworKwkuYnl0ZQkJMHgw CQkJLyogbm9fY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERXX0FUX2FydGlmaWNp YWwgKi8KKysJLnVsZWIxMjgJMHgwYwkJCS8qIERXX0ZPUk1fZmxhZyAqLworKwkudWxlYjEyOAkw eDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0 ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCiArCi0rc3Vicm91dGluZSBmb28gKGUsIGYpCi0rICBjaGFyYWN0ZXIgKGxl bj0xKSA6OiBjCi0rICBjaGFyYWN0ZXIgKGxlbj04KSA6OiBkCi0rICBjaGFyYWN0ZXIgKGxlbj0q KSA6OiBlCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBmICgxOjcsIDg6MTApCi0rICBjID0gJ2Mn Ci0rICBkID0gJ2QnCi0rICBlID0gJ2UnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgISB2YXItaW5pdAotKyAgZiA9ICdmJwotKyAgZigxLDkpID0gJ2YyJwotKyAgYyA9ICdj JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyLWZpbmlzaAotK2Vu ZCBzdWJyb3V0aW5lIGZvbwotKyAgY2hhcmFjdGVyIChsZW49NCkgOjogZywgaCAoMTo3LCA4OjEw KQotKyAgZyA9ICdnJwotKyAgaCA9ICdoJwotKyAgY2FsbCBmb28gKGcsIGgpCi0rZW5kCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorKwkudWxlYjEyOAk4CQkJLyogQWJicmV2 IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyMQkJCS8qIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGgg YmxvY2sgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCisrCS51bGViMTI4CTB4 NDkJCQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQg Ki8KKysJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS51bGViMTI4 CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3Vw cGVyX2JvdW5kICovCisrCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCisrCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCisrCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrLyogU3RyaW5nIHRh YmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19zdHIKKysuTHByb2R1Y2VyOgorKwkuc3RyaW5nCQki R05VIEMgMy4zLjMiCisrLkxjaGFyX3N0cjoKKysJLnN0cmluZwkJImNoYXIiCisrLkx1aW50X3N0 cjoKKysJLnN0cmluZwkJInVuc2lnbmVkIGludCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLmM4MTllMjMKK2luZGV4IDAwMDAwMDAuLjgxNWVkOTMKIC0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwCi1AQCAtMCwwICsxLDYw IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKK0BAIC0w LDAgKzEsNTQgQEAKKysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xMzY4NiwyMDQgKzcw MzYsMTg3IEBAIGluZGV4IDAwMDAwMDAuLmM4MTllMjMKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KICsKLStpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEgfQorKyMg VGVzdCBwcmludGluZyB2YXJpYWJsZSB3aXRoIGR5bmFtaWMgYm91bmRzIHdoaWNoIHJlZmVyZW5j ZSBhIGRpZmZlcmVudAorKyMgKGFydGlmaWNpYWwgaW4gdGhlIEdDQyBjYXNlKSB2YXJpYWJsZSBj b250YWluaW5nIGxvY2xpc3QgYXMgaXRzIGxvY2F0aW9uLgorKyMgVGhpcyB0ZXN0Y2FzZSB1c2Vz IHZhbHVlIChub3QgYWRkcmVzcykgb2YgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGU6CisrIyBodHRw Oi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzNzYyCiArCi0rc2V0IHRl c3RmaWxlICJzdWJyYW5nZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStpZiB7IFtw cmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9 IHtkZWJ1ZyBmOTB9XSB9IHsKLSsgICAgcmV0dXJuIC0xCisrIyBUaGlzIHRlc3QgY2FuIG9ubHkg YmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgorKyMg Rm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCisraWYgeyFbaXN0YXJn ZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KKysgICAgJiYgIVtp c3RhcmdldCAqLSotZWxmKl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCisrICAg ICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCisrICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0q LWVhYmkqXX0geworKyAgICByZXR1cm4gMAogK30KICsKLStpZiAhW3J1bnRvIE1BSU5fX10gewot KyAgICBwZXJyb3IgIkNvdWxkbid0IHJ1biB0byBNQUlOX18iCi0rICAgIGNvbnRpbnVlCisrc2V0 IHRlc3RmaWxlIGR3Mi1ib3VuZC1sb2NsaXN0CisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAk e3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uUyBtYWluLmNdIHt9 XSB9IHsKKysgICAgcmV0dXJuIC0xCiArfQogKwotKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxl ciB2ZXJzaW9uIGJlaW5nIHVzZWQsIHRoZSBuYW1lIG9mIHRoZSA0LWJ5dGUgaW50ZWdlcgotKyMg YW5kIHJlYWwgdHlwZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuICBGb3IgaW5zdGFuY2Us IGdmb3J0cmFuLTQuMSB1c2VzCi0rIyAiaW50NCIgd2hlcmVhcyBnZm9ydHJhbi00LjMgdXNlcyAi aW50KGtpbmQ9NCkiLgotK3NldCBpbnQ0ICIoaW50NHxpbnRlZ2VyXFwoa2luZD00XFwpKSIKLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstc3RhdGljIl0KLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstc3RhdGljIiAiLipicmVhay1zdGF0aWMu KiIKLSsKLStmb3JlYWNoIHZhciB7YSBhbGxvYyBwdHJ9IHsKLSsgICAgZ2xvYmFsIHBmX3ByZWZp eAotKyAgICBzZXQgb2xkX3ByZWZpeCAkcGZfcHJlZml4Ci0rICAgIGxhcHBlbmQgcGZfcHJlZml4 ICIkdmFyOiIKKysjIFZlcmlmeSBpdCBiZWhhdmVzIGF0IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJy YXkgd2l0aG91dCBpbmZlcmlvci4KICsKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoMiwgMjozKSIg eyA9IFwoMjIsIDMyXCl9Ci0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDI6MywgMykiIHsgPSBcKDMy LCAzM1wpfQotKyAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAzMVwpfQot KyAgICBnZGJfdGVzdCAicCAkdmFyICgyLCA6MikiIHsgPSBcKDEyLCAyMlwpfQotKyAgICBnZGJf dGVzdCAicCAkdmFyICgzLCAyOjIpIiB7ID0gXCgyM1wpfQotKyAgICBnZGJfdGVzdCAicHR5cGUg JHZhciAoMywgMjoyKSIgIiA9ICRpbnQ0IFxcKDI6MlxcKSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZh ciAoNCwgOikiIHsgPSBcKDE0LCAyNCwgMzRcKX0KLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwg OikiIHsgPSBcKFwoICoxMSwgMTIsIDEzLCAxNFwpIFwoICoyMSwgMjIsIDIzLCAyNFwpIFwoICoz MSwgMzIsIDMzLCAzNFwpICpcKX0KLSsgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDopIiAi ID0gJGludDQgXFwoNCwzXFwpIgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6KSIgIldyb25nIG51 bWJlciBvZiBzdWJzY3JpcHRzIgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6LCA6KSIgIldy b25nIG51bWJlciBvZiBzdWJzY3JpcHRzIgorK2dkYl90ZXN0ICJwIGFfc3RyaW5nIiB7ID0gMHhb MC05YS1mXSsgInNlZW5ub3RzZWVuIn0KKytnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBl ID0gY2hhciBcW1xdfQogKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfcHJlZml4CisrIyBOb3Qg cnVudG9fbWFpbiBhcyBkdzItYm91bmQtbG9jbGlzdC5TIGhhbmRsZXMgb25seSB0aGUgZmlyc3Qg Ynl0ZSBvZiBtYWluLgorK2lmICFbcnVudG8gIiptYWluIl0geworKyAgICByZXR1cm4gLTEKICt9 CiArCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtzZXQgJGE9YX0KLStkZWxldGVfYnJlYWtwb2ludHMK LStnZGJfdW5sb2FkCi0rZ2RiX3Rlc3Qge3AgJGEgKDMsIDI6Mil9IHsgPSBcKDIzXCl9Ci1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjQ3NDdlYTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwCi1AQCAtMCwwICsxLDI4IEBACi0rISBDb3B5cmlnaHQg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrZ2RiX3Rlc3QgInAgYV9zdHJpbmciIHsgPSAic2VlbiJ9CisrZ2Ri X3Rlc3QgInB0eXBlIGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFs0XF19CiArCi0rcHJvZ3JhbSB0 ZXN0Ci0rICBpbnRlZ2VyLCB0YXJnZXQgOjogYSAoNCwgMykKLSsgIGludGVnZXIsIGFsbG9jYXRh YmxlIDo6IGFsbG9jICg6LCA6KQotKyAgaW50ZWdlciwgcG9pbnRlciA6OiBwdHIgKDosIDopCi0r ICBkbyAxIGkgPSAxLCA0Ci0rICBkbyAxIGogPSAxLCAzCi0rICAgIGEgKGksIGopID0gaiAqIDEw ICsgaQotKzEgY29udGludWUKLSsgIGFsbG9jYXRlIChhbGxvYyAoNCwgMykpCi0rICBhbGxvYyA9 IGEKLSsgIHB0ciA9PiBhCi0rICB3cml0ZSAoKiwqKSBhICAgICAgICAgICAgICAgICAhIGJyZWFr LXN0YXRpYwotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1pbmRleCAyMTc5OGJj Li4xMTFmNjkyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4 cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotQEAgLTg4LDYgKzg4 LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAi c3RlcCBvdmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJzdGVwIgot IAkgICAgfQotKwkgICAgLXJlICIuKnB5dGhvbl9zY3JpcHQgPSAwLiokZ2RiX3Byb21wdCAkIiB7 Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0 aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUgIi4qcHJlX3N0 YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9tcHQgJCIgewot IAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAg YW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5jCisrZ2RiX3Rlc3QgInAgYl9zdHJpbmci IHsgPSAoMHhbMC05YS1mXSsgKT8ic2Vlbm5vdHNlZW4ifQorK2dkYl90ZXN0ICJwdHlwZSBiX3N0 cmluZyIge3R5cGUgPSBjaGFyIFxbXF19CisrCisrIyBUaGUgcmVnaXN0ZXIgY29udGFpbnMgdW5w cmVkaWN0YWJsZSB2YWx1ZSAtIHRoZSBhcnJheSBzaXplLgorK2dkYl90ZXN0ICJwdHlwZSByZWdf c3RyaW5nIiB7dHlwZSA9IGNoYXIgXFstP1swLTldK1xdfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3RyaXBwZWQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmVi Y2VkM2MKK2luZGV4IDAwMDAwMDAuLjFmMDJkOTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5jCi1AQCAtMCwwICsxLDI2IEBACi0r LyogQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKK0BAIC0wLDAgKzEsNDIgQEAK KysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiArICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKKysgCiArICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywK KysgICBVU0EuICAqLwogKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysK KysvKiBUaGUgZnVuY3Rpb24gYGZ1bmMxJyB0cmFjZWQgaW50byBtdXN0IGhhdmUgZGVidWcgaW5m byBvbiBvZmZzZXQgPiAwOworKyAgIChEV19VTlNORCAoYXR0cikpLiAgVGhpcyBpcyB0aGUgcmVh c29uIG9mIGBmdW5jMCcgZXhpc3RlbmNlLiAgKi8KKysKKyt2b2lkCisrZnVuYzAoaW50IGEsIGlu dCBiKQogK3sKLSsgIGNoYXIgdmxhW2FyZ2NdOworK30KICsKLSsgIHZsYVswXSA9IDA7CS8qIGJy ZWFrLWhlcmUgKi8KKysvKiBgZnVuYzEnIGJlaW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21l IGFyZ3VtZW50cyB0byBkdW1wLiAgKi8KICsKKyt2b2lkCisrZnVuYzEoaW50IGEsIGludCBiKQor K3sKKysgIGZ1bmMwIChhLGIpOworK30KKysKKytpbnQKKyttYWluKHZvaWQpCisreworKyAgZnVu YzEgKDEsIDIpOwogKyAgcmV0dXJuIDA7CiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTIt dmFyLXN0YWxlLXR5cGUuZXhwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJpcHBlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVk LmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc0YTEwNGUKK2luZGV4 IDAwMDAwMDAuLjFjNmU4NGEKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAKLUBAIC0wLDAgKzEsNTcgQEAKLSsjIENvcHlyaWdo dCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCitAQCAtMCwwICsxLDc5IEBACisrIyBD b3B5cmlnaHQgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKICsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKKysjIAogKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgogKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQogKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCisrIyAKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLgogKwotK2xvYWRfbGliIG1pLXN1cHBvcnQuZXhwCi0rc2V0IE1JRkxB R1MgIi1pPW1pMiIKKysjIE1pbmltYWwgRFdBUkYtMiB1bml0IHRlc3QKICsKLStnZGJfZXhpdAot K2lmIFttaV9nZGJfc3RhcnRdIHsKLSsgICAgY29udGludWUKKysjIFRoaXMgdGVzdCBjYW4gb25s eSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIuCisrIyBGb3Igbm93IHBp Y2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KKytpZiB7IVtpc3RhcmdldCAqLSotbGlu dXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KKysgICAgJiYgIVtpc3Rh cmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7 CisrICAgIHJldHVybiAwICAKICt9CiArCi0rc2V0IHRlc3RmaWxlICJtaTItdmFyLXN0YWxlLXR5 cGUiCisrc2V0IHRlc3RmaWxlICJkdzItc3RyaXBwZWQiCiArc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiB7 W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0uZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZV0gPT0g LTF9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0ueAogKwotK21pX2RlbGV0ZV9icmVha3BvaW50cwotK21pX2dkYl9yZWlu aXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK21pX2dkYl9sb2FkICR7YmluZmlsZX0KKyty ZW1vdGVfZXhlYyBidWlsZCAicm0gLWYgJHtiaW5maWxlfSIKICsKLSttaV9nZGJfdGVzdCB7LWlu dGVycHJldGVyLWV4ZWMgY29uc29sZSAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFsLWVycm9yIHF1 aXQgeWVzIn0gXAotKyAge1xeZG9uZX0gXAotKyAgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1l cnJvciBxdWl0IHllcyIKKysjIGdldCB0aGUgdmFsdWUgb2YgZ2NjX2NvbXBpbGVkCisraWYgW2dl dF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKKysgICAgcmV0dXJuIC0xCisrfQogKwotK21p X2dkYl90ZXN0IHstaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlICJtYWludGVuYW5jZSBzZXQgaW50 ZXJuYWwtZXJyb3IgY29yZWZpbGUgeWVzIn0gXAotKyAge1xeZG9uZX0gXAotKyAgIm1haW50ZW5h bmNlIHNldCBpbnRlcm5hbC1lcnJvciBjb3JlZmlsZSB5ZXMiCisrIyBUaGlzIHRlc3QgY2FuIG9u bHkgYmUgcnVuIG9uIGdjYyBhcyB3ZSB1c2UgYWRkaXRpb25hbF9mbGFncz1GSVhNRQorK2lmIHsk Z2NjX2NvbXBpbGVkID09IDB9IHsKKysgICAgcmV0dXJuIDAKKyt9CiArCi0rc2V0IGxpbmUgW2dk Yl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWhlcmUiXQotK3NldCBmdW5jICJtYWluIgorK2lmICB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZ2dkYjN9XSAhPSAiIiB9IHsK KysgICAgcmV0dXJuIC0xCisrfQogKwotK21pX2dkYl90ZXN0ICItYnJlYWstaW5zZXJ0IC10ICRz cmNmaWxlOiRsaW5lIiBcCi0rICAiXFxeZG9uZSxia3B0PVx7bnVtYmVyPVwiXFswLTlcXStcIix0 eXBlPVwiYnJlYWtwb2ludFwiLGRpc3A9XCJkZWxcIixlbmFibGVkPVwieVwiLGFkZHI9XCIkaGV4 XCIsZnVuYz1cIiRmdW5jXChcXFwoLipcXFwpXCk/XCIsZmlsZT1cIi4qXCIsbGluZT1cIiRsaW5l XCIsdGltZXM9XCIwXCIsb3JpZ2luYWwtbG9jYXRpb249XCIuKlwiXH0iIFwKLSsgICJicmVha3Bv aW50IGF0ICRmdW5jIgorK3JlbW90ZV9leGVjIGJ1aWxkICJvYmpjb3B5IC1SIC5kZWJ1Z19sb2Mg JHtiaW5maWxlfSIKKytzZXQgc3RyaXBfb3V0cHV0IFtyZW1vdGVfZXhlYyBidWlsZCAib2JqZHVt cCAtaCAke2JpbmZpbGV9Il0KICsKLStpZiB7IFttaV9ydW5fY21kXSA8IDAgfSB7Ci0rICAgIHJl dHVybiAtMQorK3NldCB0ZXN0ICJzdHJpcHBpbmcgdGVzdCBmaWxlIHByZXNlcnZhdGlvbiIKKytp ZiBbIHJlZ2V4cCAiLmRlYnVnX2luZm8gIiAkc3RyaXBfb3V0cHV0XSAgeworKyAgICBwYXNzICIk dGVzdCAoLmRlYnVnX2luZm8gcHJlc2VydmVkKSIKKyt9IGVsc2UgeworKyAgICBmYWlsICIkdGVz dCAoLmRlYnVnX2luZm8gZ290IGFsc28gc3RyaXBwZWQpIgogK30KLSttaV9leHBlY3Rfc3RvcCAi YnJlYWtwb2ludC1oaXQiICRmdW5jICIuKiIgIi4qIiAiXFswLTlcXSsiIHsgIiIgImRpc3A9XCJk ZWxcIiIgfSAic3RvcCBhZnRlciBpbml0aWFsaXppbmcgdmxhIgogKwotK21pX2NyZWF0ZV92YXJv YmogInZsYSIgInZsYSIgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGEiCisrc2V0IHRlc3QgInN0 cmlwcGluZyB0ZXN0IGZpbGUgZnVuY3Rpb25hbGl0eSIKKytpZiBbIHJlZ2V4cCAiLmRlYnVnX2xv YyAiICRzdHJpcF9vdXRwdXRdICB7CisrICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfbG9jIHN0aWxs IHByZXNlbnQpIgorK30gZWxzZSB7CisrICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfbG9jIHN0cmlw cGVkKSIKKyt9CiArCi0rbWlfZ2RiX3Rlc3QgIi12YXItdXBkYXRlICoiICJcXF5kb25lLGNoYW5n ZWxpc3Q9LioiICItdmFyLXVwZGF0ZSAqIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri Lm11bHRpL3dhdGNocG9pbnQtbXVsdGkuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNo cG9pbnQtbXVsdGkuYworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworKyMgRm9yIEMgcHJv Z3JhbXMsICJzdGFydCIgc2hvdWxkIHN0b3AgaW4gbWFpbigpLgorKworK2dkYl90ZXN0ICJzdGFy dCIgXAorKyAgICAgICAgICIuKm1haW4gXFwoXFwpIGF0IC4qIiBcCisrICAgICAgICAgInN0YXJ0 IgorK2dkYl90ZXN0ICJzdGVwIiBcCisrICAgICAgICAgImZ1bmMuKiBcXCguKlxcKSBhdCAuKiIg XAorKyAgICAgICAgICJzdGVwIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCiBuZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uNTE2OTdiMAoraW5kZXggMDAwMDAwMC4uNWZjZGQ4NAogLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0 aS5jCi1AQCAtMCwwICsxLDUxIEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCitAQCAtMCwwICsxLDgzIEBACiArLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsgICBDb3B5 cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQg MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQog KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CkBAIC0xMzg5OCw0OCArNzIzMSw4MCBAQCBpbmRleCAwMDAwMDAwLi41 MTY5N2IwCiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKICsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rI2luY2x1ZGUg PHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrLyogRGVidWcgaW5mb3JtYXRpb24g Ki8KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IGEsIGIsIGM7CisrCS5zZWN0aW9uIC5kZWJ1Z19p bmZvCisrLkxjdTFfYmVnaW46CisrCS8qIENVIGhlYWRlciAqLworKwkuNGJ5dGUJLkxjdTFfZW5k IC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFf c3RhcnQ6CisrCS4yYnl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KKysJLjRieXRlCS5MYWJi cmV2MV9iZWdpbgkJCS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCisrCS5ieXRlCTQJ CQkJLyogUG9pbnRlciBzaXplICovCiArCi0rc3RhdGljIHZvaWQKLSttYXJrZXJfZXhpdCAodm9p ZCkKLSt7Ci0rICBhID0gMTsKLSt9CisrCS8qIENVIGRpZSAqLworKwkudWxlYjEyOCAxCQkJCS8q IEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYXNjaWkJImR3Mi1zdHJ1Y3QtbWVt YmVyLWRhdGEtbG9jYXRpb24uY1wwIgkvKiBEV19BVF9uYW1lICovCisrCS5hc2NpaQkiR05VIEMg NC4zLjJcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkuYnl0ZQkxCQkJCS8qIERXX0FUX2xh bmd1YWdlIChDKSAqLwogKwotK3N0YXRpYyB2b2lkICoKLStzdGFydCAodm9pZCAqYXJnKQotK3sK LSsgIGIgPSAyOwotKyAgYyA9IDM7CisrLkx0eXBlX3VjaGFyOgorKwkudWxlYjEyOAkyCQkJLyog QWJicmV2OiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KKysJLmFzY2lpCQkic29tZV9zdHJ1Y3Rc MCIJCS8qIERXX0FUX25hbWUgKi8KICsKLSsgIHJldHVybiBOVUxMOwotK30KKysJLnVsZWIxMjgJ MwkJCS8qIEFiYnJldjogRFdfVEFHX21lbWJlciAqLworKwkuYXNjaWkJCSJmaWVsZFwwIgkJLyog RFdfQVRfbmFtZSAqLworKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9u ICovCiArCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBwdGhyZWFkX3QgdGhyZWFkOwotKyAg aW50IGk7CisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIHNvbWVfc3RydWN0ICov CisrCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCiArCi0rICBpID0g cHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQsIE5VTEwsIHN0YXJ0LCBOVUxMKTsKLSsgIGFzc2VydCAo aSA9PSAwKTsKLSsgIGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZCwgTlVMTCk7Ci0rICBhc3NlcnQg KGkgPT0gMCk7CisrLkxjdTFfZW5kOgogKwotKyAgbWFya2VyX2V4aXQgKCk7Ci0rICByZXR1cm4g MDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1t dWx0aS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAor Ky8qIEFiYnJldiB0YWJsZSAqLworKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2CisrLkxhYmJyZXYx X2JlZ2luOgorKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgx MQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KKysJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRy ZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJ CQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVj ZXIgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJ MHgxMwkJCS8qIERXX0FUX2xhbmd1YWdlICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1f ZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCisr CS51bGViMTI4CTB4MTMJCQkvKiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KKysJLmJ5dGUJCTEJ CQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwor KwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxl YjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19t ZW1iZXIgKi8KKysJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgz CQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAq LworKwkudWxlYjEyOAkweDM4CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KKysJ LnVsZWIxMjgJMHgwYgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXIt ZGF0YS1sb2NhdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1t ZW1iZXItZGF0YS1sb2NhdGlvbi5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi5kN2RhZWVjCitpbmRleCAwMDAwMDAwLi5jNDExNTFjCiAtLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAotQEAgLTAsMCAr MSw5MiBAQAotKyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rIworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRh dGEtbG9jYXRpb24uZXhwCitAQCAtMCwwICsxLDM3IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQogKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKQEAgLTEzOTUzLDkyICs3MzE4LDM3IEBAIGluZGV4IDAwMDAwMDAu LmQ3ZGFlZWMKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStpZiBbaXNfcmVtb3Rl IHRhcmdldF0gewotKyAgICAjIEl0IGlzIEtGQUlMLgotKyAgICBjb250aW51ZQorKyMgVGhpcyB0 ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQg dXNlIGdhcy4KKysjIEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgor K2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpd CisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9w ZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFy Z2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAgcmV0dXJuIDAgIAogK30KICsKLStzZXQgdGVz dGZpbGUgIndhdGNocG9pbnQtbXVsdGkiCi0rCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0K LStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke2V4ZWN1dGFibGV9Cisrc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRh LWxvY2F0aW9uIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKKytzZXQgYmluZmlsZSAke3Rl c3RmaWxlfS54CiArCi0raWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIg fSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2Jp bmZpbGV9IiBvYmplY3Qge25vZGVidWd9XSAhPSAiIiB9IHsKICsgICAgcmV0dXJuIC0xCiArfQog KwotK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsg ICAgcmV0dXJuCi0rfQotKyMgTmV2ZXIga2VlcC91c2UgYW55IG5vbi1odyBicmVha3BvaW50cyB0 byB3b3JrYXJvdW5kIGEgbXVsdGktaW5mZXJpb3IgYnVnLgotK2RlbGV0ZV9icmVha3BvaW50cwot KwotK2dkYl90ZXN0ICJhZGQtaW5mZXJpb3IiICJBZGRlZCBpbmZlcmlvciAyIgotK2dkYl90ZXN0 ICJpbmZlcmlvciAyIiAid2l0Y2hpbmcgdG8gaW5mZXJpb3IgMiAuKiIKLStnZGJfbG9hZCAkYmlu ZmlsZQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4KLSt9Ci0rZGVsZXRlX2Jy ZWFrcG9pbnRzCi0rCi0rIyBTaW11bGF0ZSBub24tc3RvcCt0YXJnZXQtYXN5bmMgd2hpY2ggYWxz byB1c2VzIGJyZWFrcG9pbnQgYWx3YXlzLWluc2VydGVkLgotK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IGJyZWFrcG9pbnQgYWx3YXlzLWluc2VydGVkIG9uIgotKyMgZGlzcGxhY2VkLXN0ZXBwaW5n IGlzIGFsc28gbmVlZGVkIGFzIG90aGVyIEdEQiBzb21ldGltZXMgc3RpbGwgcmVtb3ZlcyB0aGUK LSsjIGJyZWFrcG9pbnRzLCBldmVuIHdpdGggYWx3YXlzLWluc2VydGVkIG9uLgotK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IGRpc3BsYWNlZC1zdGVwcGluZyBvbiIKLSsKLSsjIERlYnVnZ2luZyBv ZiB0aGlzIHRlc3RjYXNlOgotKyNnZGJfdGVzdF9ub19vdXRwdXQgIm1haW50ZW5hbmNlIHNldCBz aG93LWRlYnVnLXJlZ3Mgb24iCi0rI2dkYl90ZXN0X25vX291dHB1dCAic2V0IGRlYnVnIGluZnJ1 biAxIgotKwotKyMgRG8gbm90IHVzZSBzaW1wbGUgaGFyZHdhcmUgd2F0Y2hwb2ludCAoIndhdGNo IikgYXMgaXRzIGZhbHNlIGhpdCBtYXkgYmUKLSsjIHVubm90aWNlZCBieSBHREIgaWYgaXQgcmVh ZHMgaXQgc3RpbGwgaGFzIHRoZSBzYW1lIHZhbHVlLgotK2dkYl90ZXN0ICJhd2F0Y2ggYyIgIkhh cmR3YXJlIGFjY2VzcyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGMiCi0r Ci0rZ2RiX2JyZWFrcG9pbnQgIm1hcmtlcl9leGl0IgotKwotK2dkYl90ZXN0ICJpbmZlcmlvciAx IiAid2l0Y2hpbmcgdG8gaW5mZXJpb3IgMSAuKiIKLSsKLStzZXQgaGF2ZV9hd2F0Y2hfYiAwCi0r c2V0IHRlc3QgImF3YXRjaCBiIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsg ICAgLXJlICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05 XF0rOiBiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKwlzZXQgaGF2ZV9hd2F0 Y2hfYiAxCi0rICAgIH0KLSsgICAgLXJlICJUaGVyZSBhcmUgbm90IGVub3VnaCBhdmFpbGFibGUg aGFyZHdhcmUgcmVzb3VyY2VzIGZvciB0aGlzIHdhdGNocG9pbnRcXC5cclxuJGdkYl9wcm9tcHQg JCIgewotKwl1bnRlc3RlZCAkdGVzdAotKwlyZXR1cm4KLSsgICAgfQotK30KLSsKLStnZGJfdGVz dCAiaW5mZXJpb3IgMiIgIndpdGNoaW5nIHRvIGluZmVyaW9yIDIgLioiCi0rCi0rIyBGQUlMIHdv dWxkIGJlIGEgaGl0IG9uIHdhdGNocG9pbnQgZm9yIGBiJyAtIHRoYXQgb25lIGlzIGZvciB0aGUg b3RoZXIKLSsjIGluZmVyaW9yLgotK2dkYl90ZXN0ICJjb250aW51ZSIgIkhhcmR3YXJlIGFjY2Vz cyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGNcclxuXHJcbk9sZCB2YWx1 ZSA9IDBcclxuTmV3IHZhbHVlID0gM1xyXG4uKiIgImNhdGNoIGMiCi0rCi0rZ2RiX3Rlc3QgImNv bnRpbnVlIiAiQnJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyX2V4aXQgLioiICJjYXRjaCBtYXJr ZXJfZXhpdCBpbiBpbmZlcmlvciAyIgotKwotK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAid2l0Y2hp bmcgdG8gaW5mZXJpb3IgMSAuKiIKLSsKLStnZGJfdGVzdCAiY29udGludWUiICJIYXJkd2FyZSBh Y2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiXHJcblxyXG5PbGQg dmFsdWUgPSAwXHJcbk5ldyB2YWx1ZSA9IDJcclxuLioiICJjYXRjaCBiIgorK2NsZWFuX3Jlc3Rh cnQgJGJpbmZpbGUKICsKLStnZGJfdGVzdCAiY29udGludWUiICJCcmVha3BvaW50IFxbMC05XF0r LCBtYXJrZXJfZXhpdCAuKiIgImNhdGNoIG1hcmtlcl9leGl0IGluIGluZmVyaW9yIDEiCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCisrZ2Ri X3Rlc3QgInB0eXBlIHN0cnVjdCBzb21lX3N0cnVjdCIgInR5cGUgPSBzdHJ1Y3Qgc29tZV9zdHJ1 Y3Qge1xbXHJcbiBcdFxdKnZvaWQgZmllbGQ7XFtcclxuIFx0XF0qfSIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCiBuZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uNzI5ZjQ1NworaW5kZXggMDAwMDAwMC4uOWRiYmYzYwogLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0 ZXItZnVuYy5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dWJyYW5nZS1uby10eXBlLlMKK0BAIC0wLDAgKzEsMTIxIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsgICBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CkBAIC0xNDA1Myw1NiArNzM2MywxMjEgQEAgaW5kZXggMDAwMDAwMC4uNzI5ZjQ1NwogKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiArICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotK2ludAotK2Z1bmMgKGludCAqYXJy KQotK3sKLSsgIHJldHVybiBhcnJbMF07Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJy YXktZnJvbS1yZWdpc3Rlci5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MzA5MGU3ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5 LWZyb20tcmVnaXN0ZXIuYwotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysvKiBEZWJ1ZyBpbmZvcm1hdGlvbiAqLwogKwot KyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwkuc2Vj dGlvbgkuZGF0YQorK3ZhcmRhdGE6CisrCS5yZXB0CQkxMjkKKysJLmFzY2lpCQkieCIKKysJLmVu ZHIKKysJLmFzY2lpCQkiVU5TRUVOXDAiCiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysJLnNlY3Rpb24JLmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLjRieXRlCQkuTGN1 MV9lbmQgLSAuTGN1MV9zdGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLworKy5M Y3UxX3N0YXJ0OgorKwkuMmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLworKwku NGJ5dGUJCS5MZGVidWdfYWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICov CisrCS5ieXRlCQk0CQkJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KICsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJl djogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYXNjaWkJCSJHTlUgQyAzLjMuM1wwIgkJLyog RFdfQVRfcHJvZHVjZXIgKi8KKysJLmJ5dGUJCTIJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgLSAg Ki8KKysKKysuTGFycmF5X3R5cGU6CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19h cnJheV90eXBlICovCisrCS40Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRf dHlwZSAqLworKworKwkudWxlYjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlw ZSB3aXRob3V0IERXX0FUX3R5cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3Vu ZCAqLworKwkuYnl0ZQkJMTI4CQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KKysKKysJLmJ5dGUJ CTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCisrCisrLkxjaGFyX3R5cGU6CisrCS51 bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmFzY2lpCQkiY2hh clwwIgkJLyogRFdfQVRfbmFtZSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAq LworKwkuYnl0ZQkJNgkJCS8qIERXX0FUX2VuY29kaW5nICovCisrCisrCS51bGViMTI4CTYJCQkv KiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLworKwkuYXNjaWkJCSJu b3R5cGVfc3RyaW5nXDAiCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTGFycmF5X3R5cGUt LkxjdTFfYmVnaW4gLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FU X2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRl CQl2YXJkYXRhCQkJLyogICA8YWRkcj4gKi8KKysyOgorKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBv ZiBjaGlsZHJlbiBvZiBDVSAqLworKy5MY3UxX2VuZDoKKysKKysJLnNlY3Rpb24gLmRlYnVnX2Fi YnJldgorKy5MZGVidWdfYWJicmV2MDoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICov CisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkw eDEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1 Y2VyICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4 CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JN X2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCiArCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEJCQkvKiBU QUc6IERXX1RBR19hcnJheV90eXBlICovCisrCS5ieXRlCQkweDEJCQkvKiBEV19jaGlsZHJlbl95 ZXMgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgx MwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwotK2V4dGVybiBpbnQgZnVuYyAoaW50 ICphcnIpOworKwkudWxlYjEyOAk0CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgy NAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVu ICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJ LyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXpl ICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgz ZQkJCS8qIERXX0FUX2VuY29kaW5nICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KICsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCBhcnJbXSA9 IHsgNDIgfTsKKysJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4 MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVu ICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJ LyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8K KysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOAkweDIJCQkv KiBEV19BVF9sb2NhdGlvbiAqLworKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwogKwotKyAgZnVuYyAoYXJyKTsKKysJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBj b2RlICovCisrCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0 IERXX0FUX3R5cGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCisrCS51bGVi MTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAq LworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0rICBy ZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZy b20tcmVnaXN0ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0 ZXIuZXhwCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10eXBlLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAKIG5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMmRlNzE4CitpbmRleCAwMDAwMDAwLi5hMTNlMzQ2CiAt LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdp c3Rlci5leHAKLUBAIC0wLDAgKzEsMzMgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKyMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItc3VicmFuZ2Utbm8tdHlwZS5leHAKK0BAIC0wLDAgKzEsMzkgQEAKKysjIENvcHlyaWdodCAy MDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwogKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCkBAIC0xNDExMSw2ODEgKzc0ODYs NzM5IEBAIGluZGV4IDAwMDAwMDAuLmYyZGU3MTgKICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCiArIwogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLgotKyMKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRl LgorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrbG9hZF9saWIgZHdhcmYuZXhwCiArCi0raWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyBhcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCAiYXJyYXktZnJvbS1yZWdpc3Rl ciIgICAgICBcCi0rCQkJICB7YXJyYXktZnJvbS1yZWdpc3Rlci5jIGFycmF5LWZyb20tcmVnaXN0 ZXItZnVuYy5jfSBcCi0rCQkJICB7ZGVidWcgb3B0aW1pemU9LU8yfV0gfSB7Ci0rICAgIHJldHVy biAtMQorKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD04MDY5 MjAKKysjIHJlYWRfc3VicmFuZ2VfdHlwZSA8VFlQRV9DT0RFIChiYXNlX3R5cGUpID09IFRZUEVf Q09ERV9WT0lEPiByZWluaXRpYWxpemF0aW9uCisrIyBvZiBCQVNFX1RZUEUgd2FzIGRvbmUgdG9v IGxhdGUsIGl0IGFmZmVjdHMgRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aG91dAorKyMgc3BlY2lm aWVkIERXX0FUX3R5cGUsIHByZXNlbnQgb25seSBpbiBYTEYgcHJvZHVjZWQgY29kZS4KKysKKysj IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJG LTIgYW5kIHVzZSBnYXMuCisraWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7CisrICAgIHJldHVybiAw ICAKICt9CiArCi0raWYgIVtydW50byBmdW5jXSB0aGVuIHsKKytzZXQgdGVzdGZpbGUgZHcyLXN1 YnJhbmdlLW5vLXR5cGUKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCisrc2V0IGV4ZWN1dGFi bGUgJHt0ZXN0ZmlsZX0ueAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVj dXRhYmxlfQorKworK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewogKyAgICByZXR1cm4gLTEK ICt9CiArCi0rZ2RiX3Rlc3QgInAgYXJyIiAiXFwkXFswLTlcXSsgPSBcXChpbnQgXFwqXFwpICow eFxbMC05YS1mXF0rIgorK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKICsKLSsjIFNlZW4gcmVn cmVzc2lvbjoKLSsjIEFkZHJlc3MgcmVxdWVzdGVkIGZvciBpZGVudGlmaWVyICJhcnIiIHdoaWNo IGlzIGluIHJlZ2lzdGVyICRyZGkKLStnZGJfdGVzdCAicCBhcnJcWzBcXSIgIlxcJFxbMC05XF0r ID0gNDIiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAorK2dkYl90ZXN0ICJwdHlwZSBu b3R5cGVfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFsxMjlcXX0KKytnZGJfdGVzdCAicCBub3R5cGVf c3RyaW5nIiAiID0gJ3gnIDxyZXBlYXRzIDEyOSB0aW1lcz4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uY2NjNmUxZQoraW5kZXggMDAwMDAwMC4uZDdiOGJlYQogLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAKLUBAIC0wLDAgKzEsMTA0IEBA Ci0rIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsjCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKK0BA IC0wLDAgKzEsNDIgQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwor KyMgCiArIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiArIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiArIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKKysjIAogKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2 ZWwKLSt9Ci0rCi0rbG9hZF9saWIgInBhc2NhbC5leHAiCi0rCi0rc2V0IHRlc3RmaWxlICJhcnJh eXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0ucGFzCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfSRFWEVFWFQKLSsKLSsjIFRoZXNlIHRlc3RzIG9ubHkgd29y ayB3aXRoIGZwYywgdXNpbmcgdGhlIC1ndzMgY29tcGlsZS1vcHRpb24KLStwYXNjYWxfaW5pdAot K2lmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgIT0gMSB9IHsKLSsgIHJldHVybiAtMQotK30K LSsKLSsjIERldGVjdCBpZiB0aGUgZnBjIHZlcnNpb24gaXMgYmVsb3cgMi4zLjAKLStzZXQgZnBj X2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgMQotK2lmIHsgKCRmcGN2ZXJzaW9u X21ham9yIDwgMikgfHwgKCAoJGZwY3ZlcnNpb25fbWFqb3IgPT0gMikgJiYgKCRmcGN2ZXJzaW9u X21pbm9yIDwgMykpfSAgewotKyAgc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNf YXJyYXlzIDAKLSt9Ci0rCi0rCi0raWYge1tnZGJfY29tcGlsZV9wYXNjYWwgIi1ndzMgJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBk ZWJ1ZyBdXSAhPSAiIiB9IHsKLSsgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9z dGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7 YmluZmlsZX0KLStzZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJl YWtwb2ludCAxIGhlcmUiXQotK3NldCBicF9sb2NhdGlvbjIgW2dkYl9nZXRfbGluZV9udW1iZXIg InNldCBicmVha3BvaW50IDIgaGVyZSJdCi0rCi0rCi0raWYgeyBbZ2RiX2JyZWFrcG9pbnQgJHtz cmNmaWxlfToke2JwX2xvY2F0aW9uMX1dIH0gewotKyAgICBwYXNzICJzZXR0aW5nIGJyZWFrcG9p bnQgMSIKLSt9Ci0raWYgeyBbZ2RiX2JyZWFrcG9pbnQgJHtzcmNmaWxlfToke2JwX2xvY2F0aW9u Mn1dIH0gewotKyAgICBwYXNzICJzZXR0aW5nIGJyZWFrcG9pbnQgMiIKLSt9Ci0rCi0rIyBWZXJp ZnkgdGhhdCAic3RhcnQiIGxhbmRzIGluc2lkZSB0aGUgcmlnaHQgcHJvY2VkdXJlLgotK2lmIHsg W2dkYl9zdGFydF9jbWRdIDwgMCB9IHsKLSsgICAgdW50ZXN0ZWQgc3RhcnQKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK2dkYl90ZXN0ICIiICIuKiBhdCAuKiR7c3JjZmlsZX0uKiIgInN0YXJ0Igot KwotK2dkYl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMX0uKiIgIkdv aW5nIHRvIGZpcnN0IGJyZWFrcG9pbnQiCi0rCi0rZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJJbnQi ICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFc XH0iICJQcmludCBzdGF0aWMgYXJyYXkgb2YgaW50ZWdlciB0eXBlIgotK2dkYl90ZXN0ICJwcmlu dCBTdGF0QXJySW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1 OCwgNTksIDYwLCA2MVxcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBpbnRlZ2VyIgotKwotK2dk Yl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMn0uKiIgIkdvaW5nIHRv IHNlY29uZCBicmVha3BvaW50IgotKwotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyQ2hhciIgIi4q ID0gJ2FiY2RlZmdoaWprbCciICJQcmludCBzdGF0aWMgYXJyYXkgb2YgY2hhciIKLStnZGJfdGVz dCAicHJpbnQgU3RhdDJkQXJySW50IiAiLiogPSBcXHtcXHswLCAxLCAyLCAzLCA0XFx9LCBcXHsx LCAyLCAzLCA0LCA1XFx9LCBcXHsyLCAzLCA0LCA1LCA2XFx9LCBcXHszLCA0LCA1LCA2LCA3XFx9 LCBcXHs0LCA1LCA2LCA3LCA4XFx9LCBcXHs1LCA2LCA3LCA4LCA5XFx9LCBcXHs2LCA3LCA4LCA5 LCAxMFxcfSwgXFx7NywgOCwgOSwgMTAsIDExXFx9LCBcXHs4LCA5LCAxMCwgMTEsIDEyXFx9LCBc XHs5LCAxMCwgMTEsIDEyLCAxM1xcfSwgXFx7MTAsIDExLCAxMiwgMTMsIDE0XFx9LCBcXHsxMSwg MTIsIDEzLCAxNCwgMTVcXH1cXH0iICJQcmludCBzdGF0aWMgMi1kaW1lbnNpb25hbCBhcnJheSBv ZiBpbnRlZ2VyIgotKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJy YXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50 IER5bkFyckludCIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwg NTksIDYwLCA2MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIgdHlwZSIK LStpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0r ICBzZXR1cF94ZmFpbCAiKi0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnRfIiAi LiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2 MlxcfSIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2YgaW50ZWdlciIKLSsKLStpZiB7ICRmcGNfZ2Vu ZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFpbCAi Ki0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBzIiAiLiogPSAndGVzdCcjMCdzdHJpbmcnIiAi UHJpbnQgc3RyaW5nIGNvbnRhaW5pbmcgbnVsbC1jaGFyIgotKwotK2lmIHsgJGZwY19nZW5lcmF0 ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSot KiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyclN0ciIgIi4qID0gXFx7J2RzdHIwJywgJ2Rz dHIxJywgJ2RzdHIyJywgJ2RzdHIzJywgJ2RzdHI0JywgJ2RzdHI1JywgJ2RzdHI2JywgJ2RzdHI3 JywgJ2RzdHI4JywgJ2RzdHI5JywgJ2RzdHIxMCcsICdkc3RyMTEnLCAnZHN0cjEyJ1xcfSIgIlBy aW50IGR5bmFtaWMgYXJyYXkgb2Ygc3RyaW5nIgotKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdh cmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9 Ci0rZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJTdHIiICIuKiA9IFxceydzdHIwJywgJ3N0cjEnLCAn c3RyMicsICdzdHIzJywgJ3N0cjQnLCAnc3RyNScsICdzdHI2JywgJ3N0cjcnLCAnc3RyOCcsICdz dHI5JywgJ3N0cjEwJywgJ3N0cjExJywgJ3N0cjEyJ1xcfSIgIlByaW50IHN0YXRpYyBhcnJheSBv ZiBzdHJpbmciCi0rCi0raWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJh eXMgPT0gMH0gewotKyAgc2V0dXBfeGZhaWwgIiotKi0qIgotK30KLStnZGJfdGVzdCAicHJpbnQg RHluQXJyQ2hhciIgIi4qID0gJ2FiY2RlZmdoaWprbG0nIiAiUHJpbnQgZHluYW1pYyBhcnJheSBv ZiBjaGFyIgotKwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMu cGFzIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yOTU2MDJkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcwotQEAgLTAsMCArMSw4MiBAQAotK3sKLSsg Q29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotK30KLSsKLStwcm9ncmFtIGFycmF5czsKLSsKLSt7JG1vZGUgb2Jq ZnBjfXskaCt9Ci0rCi0rdXNlcyBzeXN1dGlsczsKLSsKLSt0eXBlIFRTdGF0QXJySW50PSBhcnJh eVswLi4xMV0gb2YgaW50ZWdlcjsKLSsgICAgIFREeW5BcnJJbnQ9IGFycmF5IG9mIGludGVnZXI7 Ci0rICAgICBUU3RhdEFyclN0cj0gYXJyYXlbMC4uMTJdIG9mIHN0cmluZzsKLSsgICAgIFREeW5B cnJTdHI9IGFycmF5IG9mIHN0cmluZzsKLSsgICAgIFREeW5BcnJDaGFyID0gYXJyYXkgb2YgY2hh cjsKLSsgICAgIFRTdGF0QXJyQ2hhciA9IGFycmF5IFswLi4xMV0gb2YgY2hhcjsKLSsKLSsgICAg IFRTdGF0MmRBcnJJbnQgPSBhcnJheVswLi4xMSwwLi40XSBvZiBpbnRlZ2VyOwotKwotK3ZhciBT dGF0QXJySW50OiBUU3RhdEFyckludDsKLSsgICAgU3RhdEFyckludF86IEFycmF5WzAuLjExXSBv ZiBpbnRlZ2VyOwotKyAgICBEeW5BcnJJbnQ6ICBURHluQXJySW50OwotKyAgICBEeW5BcnJJbnRf OiBBcnJheSBvZiBpbnRlZ2VyOwotKyAgICBTdGF0QXJyU3RyOiBUU3RhdEFyclN0cjsKLSsgICAg RHluQXJyU3RyOiBURHluQXJyU3RyOwotKyAgICBTdGF0QXJyQ2hhcjogVFN0YXRBcnJDaGFyOwot KyAgICBEeW5BcnJDaGFyOiBURHluQXJyQ2hhcjsKLSsKLSsgICAgU3RhdDJkQXJySW50OiBUU3Rh dDJkQXJySW50OwotKwotKyAgICBzOiBzdHJpbmc7Ci0rCQotKyAgICBpLGogOiBpbnRlZ2VyOwot KwotK2JlZ2luCi0rICBmb3IgaSA6PSAwIHRvIDExIGRvCi0rICAgIGJlZ2luCi0rICAgIFN0YXRB cnJJbnRbaV06PSBpKzUwOwotKyAgICBTdGF0QXJySW50X1tpXTo9IGkrNTA7Ci0rICAgIFN0YXRB cnJDaGFyW2ldOj0gY2hyKG9yZCgnYScpK2kpOwotKyAgICBmb3IgaiA6PSAwIHRvIDQgZG8KLSsg ICAgICBTdGF0MmRBcnJJbnRbaSxqXTo9aStqOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxuKFN0YXRB cnJJbnRfWzBdKTsKLSsgIHdyaXRlbG4oU3RhdEFyckludFswXSk7IHsgc2V0IGJyZWFrcG9pbnQg MSBoZXJlIH0KLSsgIHdyaXRlbG4oU3RhdEFyckNoYXJbMF0pOwotKyAgd3JpdGVsbihTdGF0MmRB cnJJbnRbMCwwXSk7CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAogKwotKyAgc2V0bGVu Z3RoKER5bkFyckludCwxMyk7Ci0rICBzZXRsZW5ndGgoRHluQXJySW50XywxMyk7Ci0rICBzZXRs ZW5ndGgoRHluQXJyU3RyLDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJDaGFyLDEzKTsKLSsgIGZv ciBpIDo9IDAgdG8gMTIgZG8KLSsgICAgYmVnaW4KLSsgICAgRHluQXJySW50W2ldOj0gaSs1MDsK LSsgICAgRHluQXJySW50X1tpXTo9IGkrNTA7Ci0rICAgIER5bkFyckNoYXJbaV06PSBjaHIob3Jk KCdhJykraSk7Ci0rICAgIFN0YXRBcnJTdHJbaV06PSdzdHInK2ludHRvc3RyKGkpOwotKyAgICBE eW5BcnJTdHJbaV06PSdkc3RyJytpbnR0b3N0cihpKTsKLSsgICAgZW5kOwotKyAgd3JpdGVsbihE eW5BcnJJbnRfWzFdKTsKLSsgIHdyaXRlbG4oRHluQXJySW50WzFdKTsgCi0rICB3cml0ZWxuKER5 bkFyclN0clsxXSk7IAotKyAgd3JpdGVsbihTdGF0QXJyU3RyWzFdKTsKLSsgIHdyaXRlbG4oRHlu QXJyQ2hhclsxXSk7CisrIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotKyAgcyA6PSAndGVzdCcjMCdzdHJpbmcn OwotKyAgd3JpdGVsbihzKTsgeyBzZXQgYnJlYWtwb2ludCAyIGhlcmUgfQotK2VuZC4KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAotaW5kZXggODNmZjhmZS4uYmRkYmY5ZiAxMDA2 NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLUBAIC03NCw4ICs3NCw2IEBAIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgYmZyYW1lID09IGdkYi5uZXdlc3RfZnJhbWUoKSIgVHJ1ZSBc Ci0gCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBmMSIgIiA9IEZh bHNlIiAidGVzdCBlcXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSkiCi0gZ2RiX3Rlc3QgInB5dGhv biBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBmMCIgIiA9IFRydWUiICJ0ZXN0IGVxdWFsaXR5IGNv bXBhcmlzb24gKHRydWUpIgotLWdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAg IT0gZjEiICIgPSBUcnVlIiAidGVzdCBpbmVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotLWdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjAiICIgPSBGYWxzZSIgInRl c3QgaW5lcXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSkiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCAncmVzdWx0ID0nLCBmMC5pc192YWxpZCAoKSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLmlzX3Zh bGlkIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAubmFtZSAoKSIgIiA9 IGYyIiAidGVzdCBGcmFtZS5uYW1lIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAudHlwZSAoKSA9PSBnZGIuTk9STUFMX0ZSQU1FIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUu dHlwZSIKLUBAIC05MCwzICs4OCw1IEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAucmVhZF92YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4Ci0gZ2RiX3Rl c3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAoJ2EnKSIgIiA9IDEiICJ0 ZXN0IEZyYW1lLnJlYWRfdmFyIC0gc3VjY2VzcyIKLSAKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50 ICdyZXN1bHQgPScsIGdkYi5zZWxlY3RlZF9mcmFtZSAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0 IGdkYi5zZWxlY3RlZF9mcmFtZSIKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVz dHN1aXRlLiAgQXJyYXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKKysjIHNwZWNpZmllZCBp biB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBpbnN0ZWFk LgorKyMgT3JpZ2luYWwgcHJvYmxlbToKKysjIChnZGIpIHAgYzQwcHQoMSkKKysjICQxID0gJzAt aGVsbG8nLCAnICcgPHJlcGVhdHMgMzMgdGltZXM+CisrIyAoZ2RiKSBwIGM0MHB0KDIpCisrIyB3 YXJuaW5nOiBGb3J0cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50 IHNpemUKICsKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLmJsb2NrICgp IiAiPGdkYi5CbG9jayBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4iICJ0ZXN0IEZyYW1l LmJsb2NrIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi1pbmRleCBjOWQ4Yzk3 Li40MzI0ZGIwIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVl LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotQEAgLTM2 MCw2ICszNjAsMTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKLSAgICAgInBy aW50IHZhbHVlJ3MgdHlwZSIKLSB9Ci0gCi0rIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGEgY2FzdCBm YWlsdXJlLiAgVGhlIGJ1ZyB3YXMgdGhhdCBpZiB3ZSBjYXN0IGEKLSsjIHZhbHVlIHRvIGl0cyBv d24gdHlwZSwgZ2RiIGNvdWxkIGNyYXNoLiAgVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdlCi0rIyBj b3VsZCBlbmQgdXAgZG91YmxlLWZyZWVpbmcgYSBzdHJ1Y3QgdmFsdWUuCi0rcHJvYyB0ZXN0X2Nh c3RfcmVncmVzc2lvbiB7fSB7Ci0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSBnZGIuVmFsdWUoNSki ICIiICJjcmVhdGUgdmFsdWUgZm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gdiA9 IHYuY2FzdCh2LnR5cGUpIiAiIiAiY2FzdCB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgotKyAgZ2RiX3Rl c3QgInB5dGhvbiBwcmludCB2IiAiNSIgInByaW50IHZhbHVlIGZvciBjYXN0IHRlc3QiCisrc2V0 IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorKwor K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7 c3JjZmlsZX0ge2RlYnVnIGY5MH1dIH0geworKyAgICByZXR1cm4gLTEKICt9CiArCi0gIyBSZWdy ZXNzaW9uIHRlc3QgZm9yIGludmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdh cyB0aGF0Ci0gIyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJl Zm9yZSBhbGxvd2luZyBhCi0gIyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAt NDk2LDYgKzUwNSw3IEBAIHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKLSB0ZXN0X2luZmVyaW9yX2Z1 bmN0aW9uX2NhbGwKLSB0ZXN0X2xhenlfc3RyaW5ncwotIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgK LSt0ZXN0X2Nhc3RfcmVncmVzc2lvbgotIAotICMgVGVzdCBlaXRoZXIgQyBvciBDKysgdmFsdWVz LiAKLSB0ZXN0X3N1YnNjcmlwdF9yZWdyZXNzaW9uICIke2JpbmZpbGV9IiAiYyIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYworK2lmICFb cnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtw b2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiYnJlYWstaGVyZSIgIi4qYnJlYWstaGVyZS4qIgorK2dkYl90ZXN0ICJwIGM0MHB0KDEpIiAi ID0gJzAtaGVsbG8uKiIKKytnZGJfdGVzdCAicCBjNDBwdCgyKSIgIiA9ICcxLWhlbGxvLioiCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2E3ZTA3ZgoraW5kZXggMDAwMDAwMC4uZTQ5MmIzYQog LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmstY2hpbGQuYwotQEAgLTAsMCArMSwxMjkgQEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZvcmdv dHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MAorQEAgLTAsMCArMSw0 MCBAQAorKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr IQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBGaWxl IHdyaXR0ZW4gYnkgQWxhbiBNYXRzdW9rYS4KICsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytwcm9ncmFtIHJlcHJvCiArCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgorKyAgdHlwZSBzbWFsbF9zdHJpZGUKKysgICAgIGNoYXJhY3Rlcio0 MCBsb25nX3N0cmluZworKyAgICAgaW50ZWdlciAgICAgIHNtYWxsX3BhZAorKyAgZW5kIHR5cGUg c21hbGxfc3RyaWRlCiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgIHR5cGUo c21hbGxfc3RyaWRlKSwgZGltZW5zaW9uICgyMCksIHRhcmdldCA6OiB1bnBsZWFzYW50CisrICBj aGFyYWN0ZXIqNDAsIHBvaW50ZXIsIGRpbWVuc2lvbig6KTo6IGM0MHB0CiArCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysgIGludGVnZXIgaQogKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsg ICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworKyAgZG8gaSA9IDAsMTkKKysgICAgIHVucGxl YXNhbnQoaSsxKSVzbWFsbF9wYWQgPSBpKzEKKysgICAgIHVucGxlYXNhbnQoaSsxKSVsb25nX3N0 cmluZyA9IGNoYXIgKGljaGFyKCcwJykgKyBpKSAvLyAnLWhlbGxvJworKyAgZW5kIGRvCiArCi0r I2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDx1bmlz dGQuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNs dWRlIDxzdGRpby5oPgorKyAgYzQwcHQgPT4gdW5wbGVhc2FudCVsb25nX3N0cmluZworKworKyAg cHJpbnQgKiwgYzQwcHQgICEgYnJlYWstaGVyZQogKwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZv cmsuaCIKKytlbmQgcHJvZ3JhbSByZXBybworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjI2MWNlMTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAorQEAgLTAsMCAr MSwyNCBAQAorKyEgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJ aGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEg T3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+ LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotKy8qIGBwaWRfdCcgbWF5IG5vdCBiZSBhdmFp bGFibGUuICAqLworK3N1YnJvdXRpbmUgYmFyCisrICByZWFsIDo6IGR1bW15CisrICBkdW1teSA9 IDEKKytlbmQgc3Vicm91dGluZSBiYXIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLmZhNDFiODAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKK0BAIC0wLDAgKzEsMzcgQEAKKysjIENvcHly aWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK3N0YXRpYyB2b2xh dGlsZSBpbnQgdXNyMV9nb3Q7CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMgCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuICAKICsKLStzdGF0aWMgdm9pZAotK2hhbmRsZXJfdXNyMSAoaW50IHNpZ25vKQotK3sK LSsgIHVzcjFfZ290Kys7Cisrc2V0IHRlc3RmaWxlICJkeW5hbWljLW90aGVyLWZyYW1lIgorK3Nl dCBzcmNmaWxlMSAke3Rlc3RmaWxlfS5mOTAKKytzZXQgc3JjZmlsZTIgJHt0ZXN0ZmlsZX0tc3R1 Yi5mOTAKKytzZXQgb2JqZmlsZTIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1zdHVi Lm8KKytzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQorK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHtleGVjdXRhYmxlfQorKworK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZTJ9IiAiJHtvYmpmaWxlMn0iIG9iamVjdCB7ZjkwfV0gIT0gIiIK KysgICAgIHx8IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUxfSAk e29iamZpbGUyfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIiIH0g eworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGUxfSBvciAke3NyY2Zp bGUyfSIKKysgICAgcmV0dXJuIC0xCiArfQogKwotK3ZvaWQKLStmb3Jrb2ZmIChpbnQgbnIpCi0r ewotKyAgaW50IGNoaWxkLCBzYXZlX3BhcmVudCA9IGdldHBpZCAoKTsKLSsgIGludCBpOwotKyAg c3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9sZGFjdDsKLSsjaWZkZWYgVEhSRUFECi0rICB2b2lkICp0 aHJlYWRfcmVzdWx0OwotKyNlbmRpZgorK2NsZWFuX3Jlc3RhcnQgJHtleGVjdXRhYmxlfQorKwor K2lmICFbcnVudG8gYmFyX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJh cl8iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl90ZXN0ICJidCIge2ZvbyBcKHN0cmluZz0n aGVsbG8nLip9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LW90aGVyLWZyYW1lLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhl ci1mcmFtZS5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yYmM2Mzdk CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMt b3RoZXItZnJhbWUuZjkwCitAQCAtMCwwICsxLDM2IEBACisrISBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLgorKyEKKyshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2Ug ZmlsZSBmb3IgZHluYW1pYy5leHAuCisrISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4uCisrISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0 Y2FzZSBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisr c3Vicm91dGluZSBmb28gKHN0cmluZykKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0aW5lIGJh cgorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgY2hhcmFjdGVyIHN0 cmluZyooKikKKysgIGNhbGwgYmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHN0 b3AtaGVyZQorK2VuZCBzdWJyb3V0aW5lIGZvbworK3Byb2dyYW0gdGVzdAorKyAgaW50ZXJmYWNl CisrICAgIHN1YnJvdXRpbmUgZm9vIChzdHJpbmcpCisrICAgIGNoYXJhY3RlciBzdHJpbmcqKCop CisrICAgIGVuZCBzdWJyb3V0aW5lCisrICBlbmQgaW50ZXJmYWNlCisrICBjYWxsIGZvbyAoJ2hl bGxvJykKKytlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU3OWU5NGEKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0BAIC0wLDAgKzEsMTUyIEBA CisrIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsg IG1lbXNldCAoJmFjdCwgMCwgc2l6ZW9mIGFjdCk7Ci0rICBhY3Quc2FfZmxhZ3MgPSBTQV9SRVNU QVJUOwotKyAgYWN0LnNhX2hhbmRsZXIgPSBoYW5kbGVyX3VzcjE7Ci0rICBzaWdlbXB0eXNldCAo JmFjdC5zYV9tYXNrKTsKLSsgIGkgPSBzaWdhY3Rpb24gKFNJR1VTUjEsICZhY3QsICZvbGRhY3Qp OwotKyAgYXNzZXJ0IChpID09IDApOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjIAor KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysjIAorKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLiAgCiArCi0rICBjaGlsZCA9IGZvcmsgKCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQot KyAgICB7Ci0rICAgIGNhc2UgLTE6Ci0rICAgICAgYXNzZXJ0ICgwKTsKLSsgICAgZGVmYXVsdDoK LSsgICAgICBwcmludGYgKCJwYXJlbnQlZDogJWRcbiIsIG5yLCAoaW50KSBjaGlsZCk7CisrIyBU aGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+LgogKwotKyAgICAgIC8qIFNsZWVwIGZvciBhIHdoaWxlIHRvIHBvc3NpYmx5IGdl dCBpbmNvcnJlY3RseSBBVFRBQ0hfVEhSRUFEZWQgYnkgR0RCCi0rCSB0cmFjaW5nIHRoZSBjaGls ZCBmb3JrIHdpdGggbm8gbG9uZ2VyIHZhbGlkIHRocmVhZC9sd3AgZW50cmllcyBvZiB0aGUKLSsJ IHBhcmVudC4gICovCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4g IEl0IGNvbnRhaW5zIHRlc3RzIGZvciBkeW5hbWljYWxseQorKyMgYWxsb2NhdGVkIEZvcnRyYW4g YXJyYXlzLgorKyMgSXQgZGVwZW5kcyBvbiB0aGUgR0NDIGR5bmFtaWMgRm9ydHJhbiBhcnJheXMg RFdBUkYgc3VwcG9ydDoKKysjIAlodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcu Y2dpP2lkPTIyMjQ0CiArCi0rICAgICAgaSA9IHNsZWVwICgyKTsKLSsgICAgICBhc3NlcnQgKGkg PT0gMCk7Cisrc2V0IHRlc3RmaWxlICJkeW5hbWljIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmY5MAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsKLSsg ICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4g YnJlYWtwb2ludCkuICAqLworK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0g IT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisr ICAgIHJldHVybiAtMQorK30KICsKLSsgICAgICB2YXIrKzsKLSsgICAgICBtYXJrZXIgKCk7Cisr Z2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rI2lmZGVmIFRIUkVBRAotKyAgICAgIC8qIEFu ZCBuZWl0aGVyIGdvdCBjYXVnaHQgb3VyIHRocmVhZC4gICovCisraWYgIVtydW50byBNQUlOX19d IHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIK KysgICAgY29udGludWUKKyt9CiArCi0rICAgICAgc3RlcCA9IDk5OwotKyAgICAgIGkgPSBwdGhy ZWFkX2pvaW4gKHRocmVhZCwgJnRocmVhZF9yZXN1bHQpOwotKyAgICAgIGFzc2VydCAoaSA9PSAw KTsKLSsgICAgICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgOTlVTCk7Ci0rI2Vu ZGlmCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtaW5pdCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtaW5pdCIKKytnZGJfdGVzdCAicCB2YXJ4 IiAiXFwkXFswLTlcXSogPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAi cCB2YXJ4IHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IDwob2Jq ZWN0fHRoZSBhcnJheSkgaXMgbm90IGFsbG9jYXRlZD4iICJwdHlwZSB2YXJ4IHVuYWxsb2NhdGVk IgorK2dkYl90ZXN0ICJwIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0 byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFs bG9jYXRlZFxcLiIgInAgdmFyeCgxLDUsMTcpIHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwIHZh cngoMSw1LDE3KT0xIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2Jq ZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicCB2 YXJ4KDEsNSwxNyk9MSB1bmFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUsMTcp IiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNl IHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicHR5cGUgdmFyeCgxLDUs MTcpIHVuYWxsb2NhdGVkIgogKwotKyAgICAgIC8qIEJlIHN1cmUgb3VyIGNoaWxkIGtub3dzIHdl IGRpZCBub3QgZ2V0IGNhdWdodCBhYm92ZS4gICovCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZhcngtYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAidmFyeC1hbGxvY2F0ZWQiCisrIyAkMSA9ICgoICggMCwgMCwgMCwgMCwgMCwgMCkgKCAwLCAw LCAwLCAwLCAwLCAwKSAtLS0gLCAwKSApICggKCAwLCAwLCAuLi4pIC4uLikgLi4uKQorK2dkYl90 ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNTox NSwxNzoyOFxcKSIgInB0eXBlIHZhcnggYWxsb2NhdGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21w aWxlciAxMC4xLjAwOCB1c2VzIC0xIHRoZXJlLCBHQ0MgdXNlcyAxLgorK2dkYl90ZXN0ICJwIGwi ICJcXCRcWzAtOVxdKiA9IChcXC5UUlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlmIHZhcnggYWxs b2NhdGVkIgogKwotKyAgICAgIGkgPSBraWxsIChjaGlsZCwgU0lHVVNSMSk7Ci0rICAgICAgYXNz ZXJ0IChpID09IDApOworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4 LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZmlsbGVkIgorK2dk Yl90ZXN0ICJwIHZhcngoMiwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA2IgorK2dkYl90ZXN0ICJw IHZhcngoMSwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA3IgorK2dkYl90ZXN0ICJwIHZhcngoMiwg NiwgMTgpIiAiXFwkXFswLTlcXSogPSA4IgorK2dkYl90ZXN0ICJwIHZhcngoNiwgMTUsIDI4KSIg IlxcJFxbMC05XF0qID0gOSIKKysjIFRoZSBsYXR0ZXIgb25lIGlzIGZvciB0aGUgSW50ZWwgRm9y dHJhbiBDb21waWxlciAxMC4xLjAwOCBwb2ludGVyIHR5cGUuCisrZ2RiX3Rlc3QgInAgdmFydiIg IlxcJFxbMC05XF0qID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4q KENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRo ZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInAgdmFydiB1bmFzc29jaWF0ZWQiCisrZ2Ri X3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFz c29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0 KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInB0eXBlIHZhcnYgdW5h c3NvY2lhdGVkIgogKwotKyAgICAgIC8qIFNsZWVwIGZvciBhIHdoaWxlIHRvIGNoZWNrIEdEQidz IGBpbmZvIHRocmVhZHMnIG5vIGxvbmdlciB0cmFja3MgdXMgaW4KLSsJIHRoZSBjaGlsZCBmb3Jr LiAgKi8KKytzZXQgdGVzdCAib3V0cHV0IHZhcngiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3Qg JHRlc3QgeworKyAgICAtcmUgIl5vdXRwdXQgdmFyeFxyXG5cWygpICw2Nzg5LlxdKiRnZGJfcHJv bXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQogKwotKyAgICAgIGkgPSBzbGVlcCAo Mik7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2YXJ2LWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJ2YXJ2LWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCgzLCA3LCAxOSkiICJcXCRcWzAt OVxdKiA9IDYiICJwIHZhcngoMywgNywgMTkpIHdpdGggdmFydiBhc3NvY2lhdGVkIgorK2dkYl90 ZXN0ICJwIHZhcnYoMywgNywgMTkpIiAiXFwkXFswLTlcXSogPSA2IiAicCB2YXJ2KDMsIDcsIDE5 KSBhc3NvY2lhdGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCB1c2VzIC0x IHRoZXJlLCBHQ0MgdXNlcyAxLgorK2dkYl90ZXN0ICJwIGwiICJcXCRcWzAtOVxdKiA9IChcXC5U UlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlmIHZhcnYgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAi cHR5cGUgdmFyeCIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2LDU6MTUsMTc6 MjhcXCkiICJwdHlwZSB2YXJ4IHdpdGggdmFydiBhc3NvY2lhdGVkIgorKyMgSW50ZWwgRm9ydHJh biBDb21waWxlciAxMC4xLjAwOCB1c2VzIHRoZSBwb2ludGVyIHR5cGUuCisrZ2RiX3Rlc3QgInB0 eXBlIHZhcnYiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0 KSBcXCg2LDU6MTUsMTc6MjhcXClcXCk/IiAicHR5cGUgdmFydiBhc3NvY2lhdGVkIgogKwotKyAg ICAgIF9leGl0ICgwKTsKLSsgICAgY2FzZSAwOgotKyAgICAgIHByaW50ZiAoImNoaWxkJWQ6ICVk XG4iLCBuciwgKGludCkgZ2V0cGlkICgpKTsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFydi1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2 LWZpbGxlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAi ICJwIHZhcngoMywgNywgMTkpIHdpdGggdmFydiBmaWxsZWQiCisrZ2RiX3Rlc3QgInAgdmFydigz LCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDEwIiAicCB2YXJ2KDMsIDcsIDE5KSBmaWxsZWQiCiAr Ci0rICAgICAgLyogTGV0IHRoZSBwYXJlbnQgc2lnbmFsIHVzIGFib3V0IGl0cyBzdWNjZXNzLiAg QmUgY2FyZWZ1bCBvZiByYWNlcy4gICovCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhcnYtZGVhc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFydi1kZWFzc29jaWF0ZWQiCisrIyBUaGUgbGF0dGVyIG9uZSBpcyBmb3IgdGhlIEludGVsIEZv cnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggcG9pbnRlciB0eXBlLgorK2dkYl90ZXN0ICJwIHZhcnYi ICJcXCRcWzAtOVxdKiA9ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwu KihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0 aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVkLikiICJwIHZhcnYgZGVhc3NvY2lhdGVkIgorK2dk Yl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBh c3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVj dCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVkLikiICJwdHlwZSB2YXJ2IGRl YXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicCBsIiAiXFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIg InAgbCBpZiB2YXJ2IGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ2KDEsNSwxNykiICIo Q2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhl IChvYmplY3R8YXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkXFwuIgorK2dkYl90ZXN0ICJwdHlwZSB2 YXJ2KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmpl Y3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkXFwuIgogKwot KyAgICAgIGZvciAoOzspCi0rCXsKLSsJICAvKiBQYXJlbnQgZWl0aGVyIGRpZWQgKGFuZCBVU1Ix X0dPVCBpcyB6ZXJvKSBvciBpdCBzdWNjZWVkZWQuICAqLwotKwkgIGlmIChnZXRwcGlkICgpICE9 IHNhdmVfcGFyZW50KQotKwkgICAgYnJlYWs7Ci0rCSAgaWYgKGtpbGwgKGdldHBwaWQgKCksIDAp ICE9IDApCi0rCSAgICBicmVhazsKLSsJICAvKiBQYXJlbnQgc3VjY2VlZGVkPyAgKi8KLSsJICBp ZiAodXNyMV9nb3QpCi0rCSAgICBicmVhazsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFyeC1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZhcngtZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChv YmplY3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCBkZWFsbG9jYXRlZCIK KytnZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5v dCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicCBsIiAi XFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ4IGRlYWxsb2NhdGVkIgorK2dk Yl90ZXN0ICJwIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nl c3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRl ZFxcLiIgInAgdmFyeCgxLDUsMTcpIGRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4 KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3Qp IGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwdHlwZSB2 YXJ4KDEsNSwxNykgZGVhbGxvY2F0ZWQiCiArCi0rI2lmZGVmIFRIUkVBRAotKwkgIGkgPSBwdGhy ZWFkX3lpZWxkICgpOwotKwkgIGFzc2VydCAoaSA9PSAwKTsKLSsjZW5kaWYKLSsJfQotKyAgICAg IGFzc2VydCAodXNyMV9nb3QpOworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2YXJ5LXBhc3NlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnktcGFzc2Vk IgorKyMgJDEgPSAoKCAoIDEsIDEsIDEsIDEsIDEsIDEpICggMSwgMSwgMSwgMSwgMSwgMSkgLS0t ICwgMSkgKSAoICggMSwgMSwgLi4uKSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2YXJ5IiAiXFwk XFswLTlcXSogPSBcXChcWygpMSwgLlxdKlxcKSIKICsKLSsgICAgICAvKiBXZSBtdXN0IGdldCBj YXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZhbHNlIHdhdGNocG9pbnQgcmVtb3ZhbCkuICAqLworK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ5LWZpbGxlZCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnktZmlsbGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ5 IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDEwLDEwXFwpIgorK2dkYl90ZXN0 ICJwIHZhcnkoMSwgMSkiICJcXCRcWzAtOVxdKiA9IDgiCisrZ2RiX3Rlc3QgInAgdmFyeSgyLCAy KSIgIlxcJFxbMC05XF0qID0gOSIKKytnZGJfdGVzdCAicCB2YXJ5KDEsIDMpIiAiXFwkXFswLTlc XSogPSAxMCIKKysjICQxID0gKCggKCAzLCAzLCAzLCAzLCAzLCAzKSAoIDMsIDMsIDMsIDMsIDMs IDMpIC0tLSAsIDMpICkgKCAoIDMsIDMsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFy dyIgIlxcJFxbMC05XF0qID0gXFwoXFsoKTMsIC5cXSpcXCkiCiArCi0rICAgICAgbWFya2VyICgp OwotKyAgICB9CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxt b3N0ZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxs ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwq NCkgXFwoNSw0LDNcXCkiCisrZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0q ID0gMSIKKysjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUp IC0tLSAsIDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFydyIg IlxcJFxbMC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAi cCB2YXJ3IGZpbGxlZCIKKysjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4g Y29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKKysjIG91dGVyIGZ1bmN0aW9u IG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgorKyMgV2UgbmVlZCBib3Ro IHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGls bCBiZQorKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcu CisrZ2RiX3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwo eCwgelxcKDI6NiwgNDo3LCA2OjhcXClcXCkpIgorK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwk XFswLTlcXSogPSAzIgorK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2Igor K2dkYl90ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgorK2dkYl90ZXN0ICJwIHoo NCw0LDYpIiAiXFwkXFswLTlcXSogPSAxIgogKwotKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwg Jm9sZGFjdCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMgYi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCisrZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmFyei1hbG1vc3RmaWxsZWQiCisrIyBHQ0MgdXNlcyB0aGUgcG9pbnRlciB0 eXBlIGhlcmUsIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3QuCisrZ2Ri X3Rlc3QgInB0eXBlIHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9 NFxcKXxcXCo0KSBcXChcXCpcXClcXCk/IgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4x LjAwOCBoYXMgYSBidWcgaGVyZSAtICgyOjExLDc6NykKKysjIGFzIGl0IHByb2R1Y2VzIERXX0FU X2xvd2VyX2JvdW5kID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCisrZ2RiX3Rlc3QgInB0eXBl IHZhcnQiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBc XCgyOjExLDc6XFwqXFwpXFwpPyIKKytnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlcXSogPSBc XChcXCkiCisrZ2RiX3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgorK2dkYl90 ZXN0ICJwIHZhcnooMykiICJcXCRcWzAtOVxdKiA9IDQiCisrIyBtYXBzIHRvIGZvbzo6dmFyeSgx LDEpCisrZ2RiX3Rlc3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgorKyMgbWFwcyB0 byBmb286OnZhcnkoMiwyKQorK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0g OSIKKysjIG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKKytnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJc XCRcWzAtOVxdKiA9IDEwIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmZkZDg5ZgoraW5kZXggMDAwMDAwMC4u MGY0MzU2NAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmstbXQuYwotQEAgLTAsMCArMSwxNzQgQEAKLSsvKiBUZXN0IGNhc2UgZm9y IGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4K LSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs Ci0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAorQEAgLTAsMCArMSw5OCBAQAorKyEgQ29weXJpZ2h0 IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr ISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRy YW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVu IGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRo ZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+LgogKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lu Y2x1ZGUgPHN5cy93YWl0Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxp Yi5oPgotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Cisrc3Vicm91dGluZSBiYXoKKysgIHJlYWwsIHRh cmdldCwgYWxsb2NhdGFibGUgOjogdmFyeCAoOiwgOiwgOikKKysgIHJlYWwsIHBvaW50ZXIgOjog dmFydiAoOiwgOiwgOikKKysgIHJlYWwsIHRhcmdldCA6OiB2YXJ1ICgxLCAyLCAzKQorKyAgbG9n aWNhbCA6OiBsCisrICBhbGxvY2F0ZSAodmFyeCAoMTo2LCA1OjE1LCAxNzoyOCkpICAgICAgICAg ICAgISB2YXJ4LWluaXQKKysgIGwgPSBhbGxvY2F0ZWQgKHZhcngpCisrICB2YXJ4KDosIDosIDop ID0gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWFsbG9jYXRlZAorKyAgdmFy eCgxLCA1LCAxNykgPSA3CisrICB2YXJ4KDIsIDYsIDE4KSA9IDgKKysgIHZhcngoNiwgMTUsIDI4 KSA9IDkKKysgIHZhcnYgPT4gdmFyeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh IHZhcngtZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIHZhcnYoMywgNywgMTkp ID0gMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtYXNzb2NpYXRlZAorKyAgdmFy diA9PiBudWxsICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydi1maWxsZWQK KysgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQorKyAgZGVhbGxvY2F0ZSAodmFyeCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICEgdmFydi1kZWFzc29jaWF0ZWQKKysgIGwgPSBhbGxvY2F0ZWQg KHZhcngpCisrICB2YXJ1KDosIDosIDopID0gMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB2YXJ4LWRlYWxsb2NhdGVkCisrICBhbGxvY2F0ZSAodmFydiAoMTo2LCA1OjE1LCAxNzoyOCkp CisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIHZhcnYoOiwgOiwgOikgPSA2CisrICB2YXJ2 KDEsIDUsIDE3KSA9IDcKKysgIHZhcnYoMiwgNiwgMTgpID0gOAorKyAgdmFydig2LCAxNSwgMjgp ID0gOQorKyAgZGVhbGxvY2F0ZSAodmFydikKKysgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQorKyAg dmFydiA9PiB2YXJ1CisrICB2YXJ2KDEsIDEsIDEpID0gNgorKyAgdmFydigxLCAyLCAzKSA9IDcK KysgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQorK2VuZCBzdWJyb3V0aW5lIGJhegorK3N1YnJvdXRp bmUgZm9vICh2YXJ5LCB2YXJ3KQorKyAgcmVhbCA6OiB2YXJ5ICg6LCA6KQorKyAgcmVhbCA6OiB2 YXJ3ICg6LCA6LCA6KQorKyAgdmFyeSg6LCA6KSA9IDQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICEgdmFyeS1wYXNzZWQKKysgIHZhcnkoMSwgMSkgPSA4CisrICB2YXJ5KDIsIDIpID0g OQorKyAgdmFyeSgxLCAzKSA9IDEwCisrICB2YXJ3KDosIDosIDopID0gNSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgISB2YXJ5LWZpbGxlZAorKyAgdmFydygxLCAxLCAxKSA9IDYKKysgIHZh cncoMiwgMiwgMikgPSA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnctYWxtb3N0 ZmlsbGVkCisrZW5kIHN1YnJvdXRpbmUgZm9vCisrc3Vicm91dGluZSBiYXIgKHZhcnosIHZhcnQp CisrICByZWFsIDo6IHZhcnogKCopCisrICByZWFsIDo6IHZhcnQgKDI6MTEsIDc6KikKKysgIHZh cnooMTozKSA9IDQKKysgIHZhcnooMikgPSA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhcnotYWxtb3N0ZmlsbGVkCisrICB2YXJ0KDIsNykgPSB2YXJ0KDIsNykKKytlbmQg c3Vicm91dGluZSBiYXIKKytwcm9ncmFtIHRlc3QKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0 aW5lIGZvbyAodmFyeSwgdmFydykKKysgICAgcmVhbCA6OiB2YXJ5ICg6LCA6KQorKyAgICByZWFs IDo6IHZhcncgKDosIDosIDopCisrICAgIGVuZCBzdWJyb3V0aW5lCisrICBlbmQgaW50ZXJmYWNl CisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBiYXIgKHZhcnosIHZhcnQpCisrICAgIHJl YWwgOjogdmFyeiAoKikKKysgICAgcmVhbCA6OiB2YXJ0ICgyOjExLCA3OiopCisrICAgIGVuZCBz dWJyb3V0aW5lCisrICBlbmQgaW50ZXJmYWNlCisrICByZWFsIDo6IHggKDEwLCAxMCksIHkgKDUp LCB6KDgsIDgsIDgpCisrICB4KDosOikgPSAxCisrICB5KDopID0gMgorKyAgeig6LDosOikgPSAz CisrICBjYWxsIGJhegorKyAgY2FsbCBmb28gKHgsIHooMjo2LCA0OjcsIDY6OCkpCisrICBjYWxs IGJhciAoeSwgeCkKKysgIGlmICh4ICgxLCAxKSAubmUuIDggLm9yLiB4ICgyLCAyKSAubmUuIDkg Lm9yLiB4ICgxLCAyKSAubmUuIDQpIGNhbGwgYWJvcnQKKysgIGlmICh4ICgxLCAzKSAubmUuIDEw KSBjYWxsIGFib3J0CisrICBpZiAoeiAoMiwgNCwgNikgLm5lLiA2IC5vci4geiAoMywgNSwgNykg Lm5lLiA3IC5vci4geiAoMiwgNCwgNykgLm5lLiA1KSBjYWxsIGFib3J0CisrICBpZiAoYW55ICh5 IC5uZS4gKC80LCA1LCA0LCAyLCAyLykpKSBjYWxsIGFib3J0CisrICBjYWxsIGZvbyAodHJhbnNw b3NlICh4KSwgeikKKysgIGlmICh4ICgxLCAxKSAubmUuIDggLm9yLiB4ICgyLCAyKSAubmUuIDkg Lm9yLiB4ICgxLCAyKSAubmUuIDQpIGNhbGwgYWJvcnQKKysgIGlmICh4ICgzLCAxKSAubmUuIDEw KSBjYWxsIGFib3J0CisrZW5kCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdHJpbmcuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMzlkZTJjNAorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCitAQCAtMCwwICsxLDU5 IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsK LSsjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZGVmaW5l IGdldHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQorKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjIAorKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjIAorKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisr IyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEtMTMwNywgVVNBLiAgCiArCi0rI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay5oIgor KyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPi4KICsKLSsvKiBOb24tYXRvbWljIGB2YXIrKycgc2hvdWxkIG5vdCBodXJ0 IGFzIHdlIHN5bmNocm9uaXplIHRoZSB0aHJlYWRzIGJ5IHRoZSBTVEVQCi0rICAgdmFyaWFibGUu ICBIaXQtY29tbWVudHMgbmVlZCB0byBiZSBkdXBsaWNpdGUgdGhlcmUgdG8gY2F0Y2ggYm90aCBh dC1zdG9wcwotKyAgIGFuZCBiZWhpbmQtc3RvcHMsIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0LiAg Ki8KKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgSXQgY29udGFp bnMgdGVzdHMgZm9yIEZvcnRyYW4KKysjIHN0cmluZ3Mgd2l0aCBkeW5hbWljIGxlbmd0aC4KICsK LSt2b2xhdGlsZSBpbnQgdmFyOworK3NldCB0ZXN0ZmlsZSAic3RyaW5nIgorK3NldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmY5MAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KICsKLSt2b2lkCi0rbWFya2VyICh2b2lkKQotK3sKKytpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2ZpbGV9IgorKyAgICByZXR1cm4gLTEKICt9CiArCi0rc3RhdGljIHZvaWQKLStl bXB0eSAodm9pZCkKLSt7Ci0rfQorK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotK3N0YXRp YyB2b2lkCi0rbWFya19leGl0ICh2b2lkKQotK3sKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7 CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBj b250aW51ZQogK30KICsKLStwdGhyZWFkX3QgdGhyZWFkOwotK3ZvbGF0aWxlIGludCBzdGVwOwot KwotK3N0YXRpYyB2b2lkICoKLStzdGFydCAodm9pZCAqYXJnKQotK3sKLSsgIGludCBpOwotKwot KyAgaWYgKHN0ZXAgPj0gMykKLSsgICAgZ290byBzdGVwXzM7Ci0rCi0rICB3aGlsZSAoc3RlcCAh PSAxKQotKyAgICB7Ci0rICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7Ci0rICAgICAgYXNzZXJ0 IChpID09IDApOwotKyAgICB9Ci0rCi0rICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUIgKi8K LSsgIGVtcHR5ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLwotKyAgc3RlcCA9IDI7Ci0rICB3 aGlsZSAoc3RlcCAhPSAzKQotKyAgICB7Ci0rICAgICAgaWYgKHN0ZXAgPT0gOTkpCi0rCWdvdG8g c3RlcF85OTsKLSsKLSsgICAgICBpID0gcHRocmVhZF95aWVsZCAoKTsKLSsgICAgICBhc3NlcnQg KGkgPT0gMCk7Ci0rICAgIH0KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmFyLWluaXQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXItaW5pdCIKKytnZGJf dGVzdCAicHR5cGUgYyIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD0xXFwpfFxcKjEpIgorK2dk Yl90ZXN0ICJwdHlwZSBkIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPThcXCl8XFwqOCkiCisr Z2RiX3Rlc3QgInB0eXBlIGUiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSIK KytnZGJfdGVzdCAicHR5cGUgZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQp IFxcKDcsODoxMFxcKSIKKytnZGJfdGVzdCAicHR5cGUgKmUiICJBdHRlbXB0IHRvIHRha2UgY29u dGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCisrZ2RiX3Rlc3QgInB0eXBlICpmIiAidHlw ZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoN1xcKSIKKytnZGJfdGVzdCAicCBj IiAiXFwkXFswLTlcXSogPSAnYyciCisrZ2RiX3Rlc3QgInAgZCIgIlxcJFxbMC05XF0qID0gJ2Qg ICAgICAgJyIKKytnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZyAgICciCisrZ2RiX3Rl c3QgInAgZiIgIlxcJFxbMC05XF0qID0gXFwoXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdo ICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAg JywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKCAnaCAgICcsICdoICAgJywg J2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwpIgorK2dkYl90ZXN0 ICJwICplIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUu IgorK2dkYl90ZXN0ICJwICpmIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBv aW50ZXIgdmFsdWUuIgogKwotK3N0ZXBfMzoKLSsgIGlmIChzdGVwID49IDUpCi0rICAgIGdvdG8g c3RlcF81OworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXItZmluaXNo Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZpbmlzaCIKKytnZGJfdGVzdCAi cCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0IgorK2dkYl90ZXN0ICJwIGYi ICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2YgICAnLCAnZiAgICcsICdmICAg JywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIgInAgKmYgcmUtc2V0IgorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjIyNmRjNWQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmY5MAorQEAgLTAsMCArMSwzNyBAQAorKyEgQ29weXJpZ2h0IDIwMDgg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor KyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291 cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIg dGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgog KwotKyAgdmFyKys7CS8qIGFmdGVyLWZvcmsxLUIgKi8KLSsgIGVtcHR5ICgpOwkvKiBhZnRlci1m b3JrMS1CICovCi0rICBzdGVwID0gNDsKLSsgIHdoaWxlIChzdGVwICE9IDUpCi0rICAgIHsKLSsg ICAgICBpZiAoc3RlcCA9PSA5OSkKLSsJZ290byBzdGVwXzk5OworK3N1YnJvdXRpbmUgZm9vIChl LCBmKQorKyAgY2hhcmFjdGVyIChsZW49MSkgOjogYworKyAgY2hhcmFjdGVyIChsZW49OCkgOjog ZAorKyAgY2hhcmFjdGVyIChsZW49KikgOjogZQorKyAgY2hhcmFjdGVyIChsZW49KikgOjogZiAo MTo3LCA4OjEwKQorKyAgYyA9ICdjJworKyAgZCA9ICdkJworKyAgZSA9ICdlJyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyLWluaXQKKysgIGYgPSAnZicKKysgIGYo MSw5KSA9ICdmMicKKysgIGMgPSAnYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhci1maW5pc2gKKytlbmQgc3Vicm91dGluZSBmb28KKysgIGNoYXJhY3RlciAobGVu PTQpIDo6IGcsIGggKDE6NywgODoxMCkKKysgIGcgPSAnZycKKysgIGggPSAnaCcKKysgIGNhbGwg Zm9vIChnLCBoKQorK2VuZAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3VicmFuZ2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jODE5ZTIzCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorQEAgLTAsMCAr MSw2MCBAQAorKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCi0rICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDAp OwotKyAgICB9CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK3N0ZXBfNToKLSsg IHZhcisrOwkvKiBhZnRlci1mb3JrMi1CICovCi0rICBlbXB0eSAoKTsJLyogYWZ0ZXItZm9yazIt QiAqLwotKyAgcmV0dXJuICh2b2lkICopIDVVTDsKKytpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNd IH0geyByZXR1cm4gLTEgfQogKwotK3N0ZXBfOTk6Ci0rICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1 Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLwotKyAgdmFyKys7 Ci0rICBtYXJrZXIgKCk7Ci0rICByZXR1cm4gKHZvaWQgKikgOTlVTDsKKytzZXQgdGVzdGZpbGUg InN1YnJhbmdlIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK2lmIHsgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVn IGY5MH1dIH0geworKyAgICByZXR1cm4gLTEKICt9CiArCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7 Ci0rICBpbnQgaTsKLSsgIHZvaWQgKnRocmVhZF9yZXN1bHQ7Ci0rCi0rICBzZXRidWYgKHN0ZG91 dCwgTlVMTCk7Ci0rICBwcmludGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0dGlkICgpKTsKLSsK LSsgIC8qIEdlbmVyYWwgaGFyZHdhcmUgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIHZhbGlk aXR5LiAgKi8KLSsgIG1hcmtlciAoKTsKLSsgIHZhcisrOwkvKiB2YWxpZGl0eS1maXJzdCAqLwot KyAgZW1wdHkgKCk7CS8qIHZhbGlkaXR5LWZpcnN0ICovCi0rCi0rICBpID0gcHRocmVhZF9jcmVh dGUgKCZ0aHJlYWQsIE5VTEwsIHN0YXJ0LCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsK LSsgIHZhcisrOwkvKiB2YWxpZGl0eS10aHJlYWQtQSAqLwotKyAgZW1wdHkgKCk7CS8qIHZhbGlk aXR5LXRocmVhZC1BICovCi0rICBzdGVwID0gMTsKLSsgIHdoaWxlIChzdGVwICE9IDIpCi0rICAg IHsKLSsgICAgICBpID0gcHRocmVhZF95aWVsZCAoKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7 Ci0rICAgIH0KLSsKLSsgIC8qIEhhcmR3YXJlIHdhdGNocG9pbnRzIGdvdCBkaXNhcm1lZCBoZXJl LiAgKi8KLSsgIGZvcmtvZmYgKDEpOworK2lmICFbcnVudG8gTUFJTl9fXSB7CisrICAgIHBlcnJv ciAiQ291bGRuJ3QgcnVuIHRvIE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CiArCi0rICB2YXIr KzsJLyogYWZ0ZXItZm9yazEtQSAqLwotKyAgZW1wdHkgKCk7CS8qIGFmdGVyLWZvcmsxLUEgKi8K LSsgIHN0ZXAgPSAzOwotKyNpZmRlZiBGT0xMT1dfQ0hJTEQKLSsgIC8qIFNwYXduIG5ldyB0aHJl YWQgYXMgaXQgd2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLwotKyAgaSA9IHB0 aHJlYWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkg PT0gMCk7Ci0rI2VuZGlmCi0rICB3aGlsZSAoc3RlcCAhPSA0KQotKyAgICB7Ci0rICAgICAgaSA9 IHB0aHJlYWRfeWllbGQgKCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICB9CisrIyBE ZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyIHZlcnNpb24gYmVpbmcgdXNlZCwgdGhlIG5hbWUgb2Yg dGhlIDQtYnl0ZSBpbnRlZ2VyCisrIyBhbmQgcmVhbCB0eXBlcyBjYW4gYmUgcHJpbnRlZCBkaWZm ZXJlbnRseS4gIEZvciBpbnN0YW5jZSwgZ2ZvcnRyYW4tNC4xIHVzZXMKKysjICJpbnQ0IiB3aGVy ZWFzIGdmb3J0cmFuLTQuMyB1c2VzICJpbnQoa2luZD00KSIuCisrc2V0IGludDQgIihpbnQ0fGlu dGVnZXJcXChraW5kPTRcXCkpIgogKwotKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBo YXJkd2FyZSB3YXRjaHBvaW50cyByZW1vdmFsLiAgKi8KLSsgIGZvcmtvZmYgKDIpOworK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1zdGF0aWMiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJicmVhay1zdGF0aWMiICIuKmJyZWFrLXN0YXRpYy4qIgogKwot KyAgdmFyKys7CS8qIGFmdGVyLWZvcmsyLUEgKi8KLSsgIGVtcHR5ICgpOwkvKiBhZnRlci1mb3Jr Mi1BICovCi0rICBzdGVwID0gNTsKLSsjaWZkZWYgRk9MTE9XX0NISUxECi0rICAvKiBTcGF3biBu ZXcgdGhyZWFkIGFzIGl0IHdhcyBkZWxldGVkIGluIHRoZSBjaGlsZCBvZiBGT1JLLiAgKi8KLSsg IGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwotKyAgYXNz ZXJ0IChpID09IDApOwotKyNlbmRpZgorK2ZvcmVhY2ggdmFyIHthIGFsbG9jIHB0cn0geworKyAg ICBnbG9iYWwgcGZfcHJlZml4CisrICAgIHNldCBvbGRfcHJlZml4ICRwZl9wcmVmaXgKKysgICAg bGFwcGVuZCBwZl9wcmVmaXggIiR2YXI6IgogKwotKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFk LCAmdGhyZWFkX3Jlc3VsdCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rICBhc3NlcnQgKHRocmVh ZF9yZXN1bHQgPT0gKHZvaWQgKikgNVVMKTsKKysgICAgZ2RiX3Rlc3QgInAgJHZhciAoMiwgMjoz KSIgeyA9IFwoMjIsIDMyXCl9CisrICAgIGdkYl90ZXN0ICJwICR2YXIgKDI6MywgMykiIHsgPSBc KDMyLCAzM1wpfQorKyAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAzMVwp fQorKyAgICBnZGJfdGVzdCAicCAkdmFyICgyLCA6MikiIHsgPSBcKDEyLCAyMlwpfQorKyAgICBn ZGJfdGVzdCAicCAkdmFyICgzLCAyOjIpIiB7ID0gXCgyM1wpfQorKyAgICBnZGJfdGVzdCAicHR5 cGUgJHZhciAoMywgMjoyKSIgIiA9ICRpbnQ0IFxcKDI6MlxcKSIKKysgICAgZ2RiX3Rlc3QgInAg JHZhciAoNCwgOikiIHsgPSBcKDE0LCAyNCwgMzRcKX0KKysgICAgZ2RiX3Rlc3QgInAgJHZhciAo OiwgOikiIHsgPSBcKFwoICoxMSwgMTIsIDEzLCAxNFwpIFwoICoyMSwgMjIsIDIzLCAyNFwpIFwo ICozMSwgMzIsIDMzLCAzNFwpICpcKX0KKysgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDop IiAiID0gJGludDQgXFwoNCwzXFwpIgorKyAgICBnZGJfdGVzdCAicCAkdmFyICg6KSIgIldyb25n IG51bWJlciBvZiBzdWJzY3JpcHRzIgorKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6LCA6KSIg Ildyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIgogKwotKyAgbWFya19leGl0ICgpOwotKyAgcmV0 dXJuIDA7CisrICAgIHNldCBwZl9wcmVmaXggJG9sZF9wcmVmaXgKICt9Ci1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFyZW50LmMgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYworKworK2dkYl90 ZXN0X25vX291dHB1dCB7c2V0ICRhPWF9CisrZGVsZXRlX2JyZWFrcG9pbnRzCisrZ2RiX3VubG9h ZAorK2dkYl90ZXN0IHtwICRhICgzLCAyOjIpfSB7ID0gXCgyM1wpfQorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdWJyYW5nZS5mOTAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li45YmJmNDM4CitpbmRleCAwMDAwMDAwLi40NzQ3ZWE5CiAtLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYwotQEAgLTAs MCArMSw3NCBAQAotKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFm dGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgotKwotKyAgIENvcHlyaWdodCAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgot KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUg PGFzc2VydC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgot KwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmsuaCIKLSsKLSt2b2lkCi0rZm9ya29mZiAoaW50 IG5yKQotK3sKLSsgIHBpZF90IGNoaWxkLCBwaWRfZ290OwotKyAgaW50IGV4aXRfY29kZSA9IDQy ICsgbnI7Ci0rICBpbnQgc3RhdHVzLCBpOworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdWJyYW5nZS5mOTAKK0BAIC0wLDAgKzEsMjggQEAKKyshIENvcHlyaWdodCAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrISAKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrISAKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KICsKLSsgIGNoaWxkID0gZm9yayAoKTsKLSsgIHN3aXRjaCAoY2hpbGQpCi0rICAgIHsK LSsgICAgY2FzZSAtMToKLSsgICAgICBhc3NlcnQgKDApOwotKyAgICBjYXNlIDA6Ci0rICAgICAg cHJpbnRmICgiY2hpbGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRwaWQgKCkpOwotKyAgICAgIC8q IERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2FnZSBw cmludGVkIHdpdGhvdXQKLSsJIGEgcmFjZSBicmVha2luZyBleHBlY3QgYnkgaXRzIGVuZGxlc3Mg d2FpdCBvbiBgJGdkYl9wcm9tcHQkJzoKLSsJIEJyZWFrcG9pbnQgMywgbWFya2VyICgpIGF0IC4u Ly4uLy4uL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmM6MzMKLSsJ IDMzICAgICAgfQotKwkgKGdkYikgcGFyZW50MjogMTQyMjMgICovCi0rICAgICAgaSA9IHNsZWVw ICgxKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICAgICAgLyogV2UgbXVzdCBub3Qg Z2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8KLSsg ICAgICB2YXIrKzsKLSsgICAgICBtYXJrZXIgKCk7Ci0rCi0rICAgICAgX2V4aXQgKGV4aXRfY29k ZSk7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwg KGludCkgY2hpbGQpOwotKyAgICAgIC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIg YW5kICJwYXJlbnQlZCIgbWVzc2FnZSBwcmludGVkLCBzZWUKLSsJIGFib3ZlLiAgKi8KLSsgICAg ICBpID0gc2xlZXAgKDEpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgICAgICBwaWRf Z290ID0gd2FpdCAoJnN0YXR1cyk7Ci0rICAgICAgYXNzZXJ0IChwaWRfZ290ID09IGNoaWxkKTsK LSsgICAgICBhc3NlcnQgKFdJRkVYSVRFRCAoc3RhdHVzKSk7Ci0rICAgICAgYXNzZXJ0IChXRVhJ VFNUQVRVUyAoc3RhdHVzKSA9PSBleGl0X2NvZGUpOwotKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0 IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCi0r ICAgICAgbWFya2VyICgpOwotKyAgICB9Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXN0LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCisrcHJvZ3JhbSB0ZXN0CisrICBpbnRlZ2VyLCB0YXJn ZXQgOjogYSAoNCwgMykKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGFsbG9jICg6LCA6KQor KyAgaW50ZWdlciwgcG9pbnRlciA6OiBwdHIgKDosIDopCisrICBkbyAxIGkgPSAxLCA0CisrICBk byAxIGogPSAxLCAzCisrICAgIGEgKGksIGopID0gaiAqIDEwICsgaQorKzEgY29udGludWUKKysg IGFsbG9jYXRlIChhbGxvYyAoNCwgMykpCisrICBhbGxvYyA9IGEKKysgIHB0ciA9PiBhCisrICB3 cml0ZSAoKiwqKSBhICAgICAgICAgICAgICAgICAhIGJyZWFrLXN0YXRpYworK2VuZAorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5nZGIvc2VsZnRlc3QuZXhwCitpbmRleCA3NjQ1Y2FmLi5mNGY5YzFmIDEwMDY0NAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorQEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNf YW5kX25leHRzIHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMg aW5pdGlhbGl6YXRpb24iCisgCQlzZXQgY29tbWFuZCAic3RlcCIKKyAJICAgIH0KKysJICAgIC1y ZSAiLipweXRob25fc2NyaXB0ID0gMC4qJGdkYl9wcm9tcHQgJCIgeworKwkJc2V0IGRlc2NyaXB0 aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKKysJCXNldCBjb21t YW5kICJzdGVwIgorKwkgICAgfQorIAkgICAgLXJlICIuKnByZV9zdGF0X2NoYWluID0gbWFrZV9j b21tYW5kX3N0YXRzX2NsZWFudXAuKiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBkZXNjcmlwdGlv biAibmV4dCBvdmVyIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwIGFuZCBldmVyeXRoaW5nIGl0 IGNhbGxzIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTIt dmFyLXN0YWxlLXR5cGUuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE3 Y2MwNTgKK2luZGV4IDAwMDAwMDAuLmViY2VkM2MKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXN0LmMKLUBAIC0wLDAgKzEsNjEg QEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3Jr KCktb2ZmIG9mIGEgcHJvY2Vzcy4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3Rh bGUtdHlwZS5jCitAQCAtMCwwICsxLDI2IEBACisrLyogQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgog KwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCiArICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKICsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKQEAgLTE0Nzk0LDU3ICs4MjI3LDI0IEBAIGluZGV4IDAwMDAwMDAuLjE3Y2MwNTgKICsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwogKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKwotKyNpbmNs dWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0 Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotKyNpbmNs dWRlICJ3YXRjaHBvaW50LWZvcmsuaCIKLSsKLSt2b2xhdGlsZSBpbnQgdmFyOworKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KICsKLSt2b2lkCi0rbWFya2VyICh2b2lkKQorK2ludAorK21haW4gKGludCBh cmdjLCBjaGFyICoqYXJndikKICt7Ci0rfQorKyAgY2hhciB2bGFbYXJnY107CiArCi0rc3RhdGlj IHZvaWQKLSttYXJrX2V4aXQgKHZvaWQpCi0rewotK30KKysgIHZsYVswXSA9IDA7CS8qIGJyZWFr LWhlcmUgKi8KICsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHNldGJ1ZiAoc3Rkb3V0LCBO VUxMKTsKLSsgIHByaW50ZiAoIm1haW46ICVkXG4iLCAoaW50KSBnZXRwaWQgKCkpOwotKwotKyAg LyogR2VuZXJhbCBoYXJkd2FyZSBicmVha3BvaW50cyBhbmQgd2F0Y2hwb2ludHMgdmFsaWRpdHku ICAqLwotKyAgbWFya2VyICgpOwotKyAgdmFyKys7Ci0rICAvKiBIYXJkd2FyZSB3YXRjaHBvaW50 cyBnb3QgZGlzYXJtZWQgaGVyZS4gICovCi0rICBmb3Jrb2ZmICgxKTsKLSsgIC8qIFRoaXMgd2F0 Y2hwb2ludCBnb3QgbG9zdCBiZWZvcmUuICAqLwotKyAgdmFyKys7Ci0rICAvKiBBIHNhbml0eSBj aGVjayBmb3IgZG91YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAqLwotKyAgZm9y a29mZiAoMik7Ci0rICB2YXIrKzsKLSsKLSsgIG1hcmtfZXhpdCAoKTsKICsgIHJldHVybiAwOwog K30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAogbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJlMDEzNDQKK2luZGV4IDAwMDAwMDAuLjc0YTEwNGUK IC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLmV4cAotQEAgLTAsMCArMSwxNDkgQEAKLSsjIENvcHlyaWdodCAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZh ci1zdGFsZS10eXBlLmV4cAorQEAgLTAsMCArMSw1NyBAQAorKyMgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CkBAIC0xNDg1OSwxNTUgKzgyNTksNjEgQEAgaW5kZXggMDAwMDAwMC4uMmUwMTM0NAog KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyMgVGVzdCBjYXNlIGZvciBmb3Jnb3R0 ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCi0rCi0rcHJv YyB0ZXN0IHt0eXBlIHN5bWJvbH0gewotKyAgICBnbG9iYWwgb2JqZGlyIHN1YmRpciBzcmNkaXIg Z2RiX3Byb21wdAotKwotKyAgICBzZXQgdGVzdGZpbGUgd2F0Y2hwb2ludC1mb3JrCi0rCi0rICAg IGdsb2JhbCBwZl9wcmVmaXgKLSsgICAgc2V0IHByZWZpeF90ZXN0ICRwZl9wcmVmaXgKLSsgICAg bGFwcGVuZCBwZl9wcmVmaXggIiR0eXBlOiIKLSsgICAgc2V0IHByZWZpeF9tdCAkcGZfcHJlZml4 Ci0rCi0rICAgIHNldCBzcmNmaWxlX3R5cGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fS0ke3R5cGV9LmMKLSsKLSsKLSsgICAgIyBubyB0aHJlYWRzCi0rCi0rICAgIHNldCBwZl9wcmVm aXggJHByZWZpeF9tdAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6Igot KwotKyAgICBzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS0ke3R5cGV9LXN0Ci0rICAgIHNldCBz cmNmaWxlX21haW4gJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1zdC5jCi0rICAgIGlm IHsgW2dkYl9jb21waWxlICIke3NyY2ZpbGVfbWFpbn0gJHtzcmNmaWxlX3R5cGV9IiAke29iamRp cn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlv bmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9ICIiIH0gewotKwl1bnRlc3RlZCAke3Rlc3RmaWxlfS5l eHAKLSsJcmV0dXJuCi0rICAgIH0KLSsgICAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwot KyAgICBnZGJfdGVzdCAic2hvdyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0 YWNoIHRoZSBjaGlsZCBvZiBhIGZvcmsgaXMgb25cXC4iCi0rICAgIGdkYl90ZXN0X25vX291dHB1 dCAic2V0IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCi0rICAgIGdkYl90ZXN0ICJzaG93IGZvbGxv dy1mb3JrLW1vZGUiICJEZWJ1Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3Jr IG9yIHZmb3JrIGlzIFwiJHR5cGVcIlxcLiIKLSsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0 aGUgYGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUg U0lHVVNSMSBub3N0b3Agbm9wcmludCBwYXNzIiAiTm9cWyBcdFxdK05vXFsgXHRcXStZZXMuKiIK LSsKLSsgICAgaWYgIVtydW50b19tYWluXSB7Ci0rCXJldHVybgotKyAgICB9Ci0rCi0rICAgIGdk Yl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9pbnQgXFswLTlcXSs6IHZhciIgIlNldCB0aGUgd2F0 Y2hwb2ludCIKLSsKLSsgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUg bGVmdCBvdmVyIGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIHNldCBoYnJlYWsgImhi cmVhayIKLSsgICAgc2V0IHRlc3QgImhicmVhayBtYXJrZXIiCi0rICAgIGdkYl90ZXN0X211bHRp cGxlICR0ZXN0ICR0ZXN0IHsKLSsJLXJlICJIYXJkd2FyZSBhc3Npc3RlZCBicmVha3BvaW50IFxb MC05XF0rIGF0IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQot KwktcmUgIihObyBoYXJkd2FyZSBicmVha3BvaW50IHN1cHBvcnQgaW4gdGhlIHRhcmdldFxcLnxI YXJkd2FyZSBicmVha3BvaW50cyB1c2VkIGV4Y2VlZHMgbGltaXRcXC4pXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJICAgIHNldCBoYnJlYWsgImJyZWFrIgotKwkgICAg Z2RiX3Rlc3QgImJyZWFrIG1hcmtlciIKLSsJfQotKyAgICB9Ci0rCi0rICAgIGdkYl9icmVha3Bv aW50ICJtYXJrX2V4aXQiCisrbG9hZF9saWIgbWktc3VwcG9ydC5leHAKKytzZXQgTUlGTEFHUyAi LWk9bWkyIgogKwotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50 IFxbMC05XF0rLCBtYXJrZXIuKiIgImhhcmR3YXJlIGJyZWFrcG9pbnRzIHdvcmsiCi0rICAgIGdk Yl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZhci4qT2xk IHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4qZm9ya29mZiAqXFwoMVxcKS4qIiAid2F0Y2hwb2lu dHMgd29yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgInJlYWtwb2ludCBc WzAtOVxdKywgbWFya2VyLioiICJicmVha3BvaW50IGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIu Kk9sZCB2YWx1ZSA9IDEuKk5ldyB2YWx1ZSA9IDIuKmZvcmtvZmYgKlxcKDJcXCkuKiIgIndhdGNo cG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAot KwkgICAgICJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtlci4qIiAiYnJlYWtwb2ludCBhZnRlciB0 aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNo cG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVlID0gMi4qTmV3IHZhbHVlID0gMy4qbWFya19l eGl0IFxcKFxcKTsiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKLSsgICAgZ2Ri X3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZ1xcLi4qXHJcbkJyZWFrcG9pbnQgXFswLTlcXSss IG1hcmtfZXhpdCAuKiIgImZpbmlzaCIKKytnZGJfZXhpdAorK2lmIFttaV9nZGJfc3RhcnRdIHsK KysgICAgY29udGludWUKKyt9CiArCisrc2V0IHRlc3RmaWxlICJtaTItdmFyLXN0YWxlLXR5cGUi Cisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0KKytpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0uZXhw ICR0ZXN0ZmlsZSAkc3JjZmlsZV0gPT0gLTF9IHsKKysgICAgcmV0dXJuIC0xCisrfQogKwotKyAg ICAjIHRocmVhZHMKKyttaV9kZWxldGVfYnJlYWtwb2ludHMKKyttaV9nZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKKyttaV9nZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rICAgIHNl dCBwZl9wcmVmaXggJHByZWZpeF9tdAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAibXVsdGl0aHJl YWRlZDoiCisrbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5h bmNlIHNldCBpbnRlcm5hbC1lcnJvciBxdWl0IHllcyJ9IFwKKysgIHtcXmRvbmV9IFwKKysgICJt YWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMiCiArCi0rICAgIHNldCBleGVj dXRhYmxlICR7dGVzdGZpbGV9LSR7dHlwZX0tbXQKLSsgICAgc2V0IHNyY2ZpbGVfbWFpbiAke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LW10LmMKLSsgICAgaWYgeyBbZ2RiX2NvbXBpbGVf cHRocmVhZHMgIiR7c3JjZmlsZV9tYWlufSAke3NyY2ZpbGVfdHlwZX0iICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHtleGVjdXRhYmxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2Zs YWdzPS1EJHN5bWJvbCAtRFRIUkVBRCJdXSAhPSAiIiB9IHsKLSsJdW50ZXN0ZWQgJHt0ZXN0Zmls ZX0uZXhwCi0rCXJldHVybgotKyAgICB9Ci0rICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUK KyttaV9nZGJfdGVzdCB7LWludGVycHJldGVyLWV4ZWMgY29uc29sZSAibWFpbnRlbmFuY2Ugc2V0 IGludGVybmFsLWVycm9yIGNvcmVmaWxlIHllcyJ9IFwKKysgIHtcXmRvbmV9IFwKKysgICJtYWlu dGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgY29yZWZpbGUgeWVzIgogKwotKyAgICBnZGJfdGVz dF9ub19vdXRwdXQgInNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgotKyAgICAjIFRlc3RjYXNl IHVzZXMgaXQgZm9yIHRoZSBgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgdHlwZS4KLSsgICAgZ2Ri X3Rlc3QgImhhbmRsZSBTSUdVU1IxIG5vc3RvcCBub3ByaW50IHBhc3MiICJOb1xbIFx0XF0rTm9c WyBcdFxdK1llcy4qIgorK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJl Il0KKytzZXQgZnVuYyAibWFpbiIKICsKLSsgICAgaWYgIVtydW50b19tYWluXSB7Ci0rCXJldHVy bgotKyAgICB9CisrbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgLXQgJHNyY2ZpbGU6JGxpbmUi IFwKKysgICJcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCJcWzAtOVxdK1wiLHR5cGU9XCJicmVha3Bv aW50XCIsZGlzcD1cImRlbFwiLGVuYWJsZWQ9XCJ5XCIsYWRkcj1cIiRoZXhcIixmdW5jPVwiJGZ1 bmNcKFxcXCguKlxcXClcKT9cIixmaWxlPVwiLipcIixsaW5lPVwiJGxpbmVcIix0aW1lcz1cIjBc IixvcmlnaW5hbC1sb2NhdGlvbj1cIi4qXCJcfSIgXAorKyAgImJyZWFrcG9pbnQgYXQgJGZ1bmMi CiArCi0rICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9pbnQgXFswLTlcXSs6IHZhciIg IlNldCB0aGUgd2F0Y2hwb2ludCIKLSsKLSsgICAgIyBJdCBzaG91bGQgbm90IGJlIGxlZnQgb3Zl ciBpbiB0aGUgZm9yaygpZWQtb2ZmIGNoaWxkLgotKyAgICBnZGJfdGVzdCAiJGhicmVhayBtYXJr ZXIiIHtyZWFrcG9pbnQgWzAtOV0rLip9Ci0rCi0rICAgIGdkYl9icmVha3BvaW50ICJtYXJrX2V4 aXQiCi0rCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgXFsw LTlcXSssIG1hcmtlci4qIiAiaGFyZHdhcmUgYnJlYWtwb2ludHMgd29yayIKLSsgICAgZ2RiX3Rl c3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFs dWUgPSAwLipOZXcgdmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdh dGNocG9pbnRzIHdvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNo cG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qdmFsaWRp dHktdGhyZWFkLUEuKiIgIm11bHRpdGhyZWFkZWQgd2F0Y2hwb2ludHMgd29yayBhdCBBIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIu Kk9sZCB2YWx1ZSA9IDIuKk5ldyB2YWx1ZSA9IDMuKnZhbGlkaXR5LXRocmVhZC1CLioiICJtdWx0 aXRocmVhZGVkIHdhdGNocG9pbnRzIHdvcmsgYXQgQiIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVl IiBcCi0rCSAgICAgInJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyLioiICJicmVha3BvaW50IChB KSBhZnRlciB0aGUgZmlyc3QgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAg ICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAzLipOZXcgdmFsdWUgPSA0 LiphZnRlci1mb3JrMS1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCi0r ICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZh ci4qT2xkIHZhbHVlID0gNC4qTmV3IHZhbHVlID0gNS4qYWZ0ZXItZm9yazEtQi4qIiAid2F0Y2hw b2ludCBCIGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwK LSsJICAgICAicmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXIuKiIgImJyZWFrcG9pbnQgKEEpIGFm dGVyIHRoZSBzZWNvbmQgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAg ImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSA1LipOZXcgdmFsdWUgPSA2Liph ZnRlci1mb3JrMi1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIu Kk9sZCB2YWx1ZSA9IDYuKk5ldyB2YWx1ZSA9IDcuKmFmdGVyLWZvcmsyLUIuKiIgIndhdGNocG9p bnQgQiBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIkNv bnRpbnVpbmdcXC4uKlxyXG5CcmVha3BvaW50IFxbMC05XF0rLCBtYXJrX2V4aXQgLioiICJmaW5p c2giCi0rCi0rCi0rICAgICMgY2xlYW51cAotKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfdGVz dAorK2lmIHsgW21pX3J1bl9jbWRdIDwgMCB9IHsKKysgICAgcmV0dXJuIC0xCiArfQorK21pX2V4 cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgJGZ1bmMgIi4qIiAiLioiICJcWzAtOVxdKyIgeyAi IiAiZGlzcD1cImRlbFwiIiB9ICJzdG9wIGFmdGVyIGluaXRpYWxpemluZyB2bGEiCiArCi0rdGVz dCBwYXJlbnQgRk9MTE9XX1BBUkVOVAorK21pX2NyZWF0ZV92YXJvYmogInZsYSIgInZsYSIgImNy ZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGEiCiArCi0rIyBPbmx5IEdOVS9MaW51eCBpcyBrbm93biB0 byBzdXBwb3J0IGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcuCi0raWYge1tpc3RhcmdldCAi Ki0qLWxpbnV4KiJdICYmICFbaXNfcmVtb3RlIHRhcmdldF19IHsKLSsgICAgdGVzdCBjaGlsZCBG T0xMT1dfQ0hJTEQKLSt9IGVsc2UgewotKyAgICB1bnRlc3RlZCAiY2hpbGQiCi0rfQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmggYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5oCisrbWlfZ2RiX3Rlc3QgIi12 YXItdXBkYXRlICoiICJcXF5kb25lLGNoYW5nZWxpc3Q9LioiICItdmFyLXVwZGF0ZSAqIgorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwogbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmNiMTA5ZmEKK2luZGV4IDAwMDAwMDAu LjcyOWY0NTcKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLmgKLUBAIC0wLDAgKzEsMzIgQEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZv cmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KLSsK LSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYworQEAgLTAs MCArMSwyMiBAQAorKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KICsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrICAgQ29weXJpZ2h0IDIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApAQCAtMTUwMTYsMzAgKzgzMjIs MjIgQEAgaW5kZXggMDAwMDAwMC4uY2IxMDlmYQogKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCiArCiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gICovCi0rCi0rI2lmZGVmIFRIUkVBRAotKyNpbmNsdWRlIDxwdGhy ZWFkLmg+Ci0rCi0rZXh0ZXJuIHZvbGF0aWxlIGludCBzdGVwOwotK2V4dGVybiBwdGhyZWFkX3Qg dGhyZWFkOwotKyNlbmRpZiAvKiBUSFJFQUQgKi8KLSsKLStleHRlcm4gdm9sYXRpbGUgaW50IHZh cjsKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rZXh0ZXJuIHZvaWQgbWFya2VyICh2b2lkKTsK LStleHRlcm4gdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAt dHJhY2UuYworK2ludAorK2Z1bmMgKGludCAqYXJyKQorK3sKKysgIHJldHVybiBhcnJbMF07Cisr fQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVy LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjdmMzE3ZQoraW5kZXggMDAwMDAwMC4uMzA5 MGU3ZQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10 cmFjZS5jCi1AQCAtMCwwICsxLDcxIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1m cm9tLXJlZ2lzdGVyLmMKK0BAIC0wLDAgKzEsMjggQEAKKysvKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAt MTUwNTQsNjkgKzgzNTIsNjQgQEAgaW5kZXggMDAwMDAwMC4uMjdmMzE3ZQogKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CiArICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotKyNpZiBVU0VfUFJPQkVTCi0rCi0rI2RlZmluZSBf U0RUX0hBU19TRU1BUEhPUkVTCi0rX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV91 c2VyX3NlbWFwaG9yZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgX19hdHRyaWJ1dGVfXyAoKHNl Y3Rpb24gKCIucHJvYmVzIikpKTsKLSsjZGVmaW5lIFRFU1QgdGVzdGVfdXNlcl9zZW1hcGhvcmUK LSsKLStfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIHNob3J0IHRlc3RlX3R3b19zZW1hcGhvcmUgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIp KSk7Ci0rI2RlZmluZSBURVNUMiB0ZXN0ZV90d29fc2VtYXBob3JlCi0rCi0rI2Vsc2UKLSsKLSsj ZGVmaW5lIFRFU1QgMQotKyNkZWZpbmUgVEVTVDIgMQotKwotKyNlbmRpZiAvKiBVU0VfUFJPQkVT ICovCisrZXh0ZXJuIGludCBmdW5jIChpbnQgKmFycik7CiArCi0rI2luY2x1ZGUgPHN5cy9zZHQu aD4KKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGludCBhcnJbXSA9IHsgNDIgfTsKICsKLSsv KiBXZSBvbmx5IHN1cHBvcnQgU3lzdGVtVGFwIGFuZCBvbmx5IHRoZSB2MyBmb3JtLiAgKi8KLSsj aWYgX1NEVF9OT1RFX1RZUEUgIT0gMwotKyNlcnJvciAibm90IHVzaW5nIFN5c3RlbVRhcCB2MyBw cm9iZXMiCi0rI2VuZGlmCisrICBmdW5jIChhcnIpOwogKwotK3ZvaWQKLSttMSAoaW50IHgpCi0r ewotKyAgaWYgKFRFU1QyKQotKyAgICBTVEFQX1BST0JFMSAodGVzdGUsIHR3bywgeCk7CisrICBy ZXR1cm4gMDsKICt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZy b20tcmVnaXN0ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0 ZXIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjJkZTcxOAorLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0 ZXIuZXhwCitAQCAtMCwwICsxLDMzIEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLgorKyMKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgog KwotK2ludAotK2YgKGludCB4KQotK3sKLSsgIGlmIChURVNUKQotKyAgICBTVEFQX1BST0JFMSh0 ZXN0ZSwgdXNlciwgeCk7Ci0rICByZXR1cm4geCs1OworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgYXJyYXktZnJvbS1yZWdpc3Rlci5leHAgImFycmF5LWZyb20tcmVnaXN0ZXIiICAgICAgXAor KwkJCSAge2FycmF5LWZyb20tcmVnaXN0ZXIuYyBhcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuY30g XAorKwkJCSAge2RlYnVnIG9wdGltaXplPS1PMn1dIH0geworKyAgICByZXR1cm4gLTEKICt9CiAr Ci0rdm9pZAotK25vdGhpbmcgKHZvaWQpCi0rewotKyAgaW50IGEgPSAxICsgMTsKLSsgIHJldHVy bjsKKytpZiAhW3J1bnRvIGZ1bmNdIHRoZW4geworKyAgICByZXR1cm4gLTEKICt9CiArCi0raW50 Ci0rbWFpbigpCi0rewotKyAgZiAoZiAoMjMpKTsKLSsgIG0xICg0Nik7Ci0rICBub3RoaW5nICgp OyAvKiBlbmQtaGVyZSAqLworK2dkYl90ZXN0ICJwIGFyciIgIlxcJFxbMC05XF0rID0gXFwoaW50 IFxcKlxcKSAqMHhcWzAtOWEtZlxdKyIKICsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCisrIyBTZWVuIHJlZ3Jlc3Npb246CisrIyBBZGRyZXNz IHJlcXVlc3RlZCBmb3IgaWRlbnRpZmllciAiYXJyIiB3aGljaCBpcyBpbiByZWdpc3RlciAkcmRp CisrZ2RiX3Rlc3QgInAgYXJyXFswXF0iICJcXCRcWzAtOVxdKyA9IDQyIgorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGFzY2FsL2FycmF5cy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5i MGYxZDdkCitpbmRleCAwMDAwMDAwLi5jY2M2ZTFlCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cAotQEAgLTAsMCArMSwxMjkgQEAKLSsj IENvcHlyaWdodCAyMDExCi0rIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCitAQCAtMCwwICsxLDEwNCBA QAorKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrIwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiArIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgpAQCAtMTUx MzAsMTI0ICs4NDIzLDIzNSBAQCBpbmRleCAwMDAwMDAwLi5iMGYxZDdkCiArIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiArCi0rbG9hZF9saWIgInRyYWNlLXN1cHBvcnQuZXhwIgotKwogK2lm ICR0cmFjZWxldmVsIHRoZW4gewotKwlzdHJhY2UgJHRyYWNlbGV2ZWwKKysgICAgc3RyYWNlICR0 cmFjZWxldmVsCiArfQogKwotK3NldCB0ZXN0ZmlsZSAic3RhcC10cmFjZSIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGV4ZWN1dGFibGUgJHRlc3RmaWxlCi0rc2V0IGJpbmZpbGUg JG9iamRpci8kc3ViZGlyLyRleGVjdXRhYmxlCisrbG9hZF9saWIgInBhc2NhbC5leHAiCisrCisr c2V0IHRlc3RmaWxlICJhcnJheXMiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0ucGFzCisrc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfSRFWEVFWFQKKysKKysjIFRo ZXNlIHRlc3RzIG9ubHkgd29yayB3aXRoIGZwYywgdXNpbmcgdGhlIC1ndzMgY29tcGlsZS1vcHRp b24KKytwYXNjYWxfaW5pdAorK2lmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgIT0gMSB9IHsK KysgIHJldHVybiAtMQorK30KKysKKysjIERldGVjdCBpZiB0aGUgZnBjIHZlcnNpb24gaXMgYmVs b3cgMi4zLjAKKytzZXQgZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgMQor K2lmIHsgKCRmcGN2ZXJzaW9uX21ham9yIDwgMikgfHwgKCAoJGZwY3ZlcnNpb25fbWFqb3IgPT0g MikgJiYgKCRmcGN2ZXJzaW9uX21pbm9yIDwgMykpfSAgeworKyAgc2V0IGZwY19nZW5lcmF0ZXNf ZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzIDAKKyt9CisrCisrCisraWYge1tnZGJfY29tcGlsZV9w YXNjYWwgIi1ndzMgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBdXSAhPSAiIiB9IHsKKysgIHJldHVybiAtMQorK30KKysK KytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKytzZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxIGhlcmUiXQorK3NldCBicF9sb2NhdGlvbjIgW2dk Yl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDIgaGVyZSJdCisrCisrCisraWYgeyBb Z2RiX2JyZWFrcG9pbnQgJHtzcmNmaWxlfToke2JwX2xvY2F0aW9uMX1dIH0geworKyAgICBwYXNz ICJzZXR0aW5nIGJyZWFrcG9pbnQgMSIKKyt9CisraWYgeyBbZ2RiX2JyZWFrcG9pbnQgJHtzcmNm aWxlfToke2JwX2xvY2F0aW9uMn1dIH0geworKyAgICBwYXNzICJzZXR0aW5nIGJyZWFrcG9pbnQg MiIKKyt9CiArCi0rc2V0IHdzICJcW1xyXG5cdCBcXSsiCi0rc2V0IGNyICJcW1xyXG5cXSsiCisr IyBWZXJpZnkgdGhhdCAic3RhcnQiIGxhbmRzIGluc2lkZSB0aGUgcmlnaHQgcHJvY2VkdXJlLgor K2lmIHsgW2dkYl9zdGFydF9jbWRdIDwgMCB9IHsKKysgICAgdW50ZXN0ZWQgc3RhcnQKKysgICAg cmV0dXJuIC0xCisrfQorKworK2dkYl90ZXN0ICIiICIuKiBhdCAuKiR7c3JjZmlsZX0uKiIgInN0 YXJ0IgorKworK2dkYl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMX0u KiIgIkdvaW5nIHRvIGZpcnN0IGJyZWFrcG9pbnQiCisrCisrZ2RiX3Rlc3QgInByaW50IFN0YXRB cnJJbnQiICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2 MCwgNjFcXH0iICJQcmludCBzdGF0aWMgYXJyYXkgb2YgaW50ZWdlciB0eXBlIgorK2dkYl90ZXN0 ICJwcmludCBTdGF0QXJySW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYs IDU3LCA1OCwgNTksIDYwLCA2MVxcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBpbnRlZ2VyIgor KworK2dkYl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMn0uKiIgIkdv aW5nIHRvIHNlY29uZCBicmVha3BvaW50IgorKworK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyQ2hh ciIgIi4qID0gJ2FiY2RlZmdoaWprbCciICJQcmludCBzdGF0aWMgYXJyYXkgb2YgY2hhciIKKytn ZGJfdGVzdCAicHJpbnQgU3RhdDJkQXJySW50IiAiLiogPSBcXHtcXHswLCAxLCAyLCAzLCA0XFx9 LCBcXHsxLCAyLCAzLCA0LCA1XFx9LCBcXHsyLCAzLCA0LCA1LCA2XFx9LCBcXHszLCA0LCA1LCA2 LCA3XFx9LCBcXHs0LCA1LCA2LCA3LCA4XFx9LCBcXHs1LCA2LCA3LCA4LCA5XFx9LCBcXHs2LCA3 LCA4LCA5LCAxMFxcfSwgXFx7NywgOCwgOSwgMTAsIDExXFx9LCBcXHs4LCA5LCAxMCwgMTEsIDEy XFx9LCBcXHs5LCAxMCwgMTEsIDEyLCAxM1xcfSwgXFx7MTAsIDExLCAxMiwgMTMsIDE0XFx9LCBc XHsxMSwgMTIsIDEzLCAxNCwgMTVcXH1cXH0iICJQcmludCBzdGF0aWMgMi1kaW1lbnNpb25hbCBh cnJheSBvZiBpbnRlZ2VyIgogKwotKyMgT25seSB4ODYgYW5kIHg4Nl82NCB0YXJnZXRzIGFyZSBz dXBwb3J0ZWQgZm9yIG5vdy4KKytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWlj X2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoiCisrfQorK2dkYl90ZXN0ICJw cmludCBEeW5BcnJJbnQiICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1Nywg NTgsIDU5LCA2MCwgNjEsIDYyXFx9IiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBpbnRlZ2VyIHR5 cGUiCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0g eworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAicHJpbnQgRHluQXJySW50 XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2 MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIiCiArCi0raWYgeyAhW2lz dGFyZ2V0ICJ4ODZfNjQtKiJdICYmICFbaXN0YXJnZXQgImk/ODYtKiJdIH0gewotKyAgICBjb250 aW51ZQorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9 IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKICt9CisrZ2RiX3Rlc3QgInByaW50IHMiICIuKiA9 ICd0ZXN0JyMwJ3N0cmluZyciICJQcmludCBzdHJpbmcgY29udGFpbmluZyBudWxsLWNoYXIiCiAr Ci0rcHJvYyBjb21waWxlX3N0YXBfYmluIHt7IGFyZyAiIiB9fSB7Ci0rICAgIGdsb2JhbCBzcmNm aWxlCi0rICAgIGdsb2JhbCBiaW5maWxlCi0rICAgIGdsb2JhbCBzcmNkaXIKLSsgICAgZ2xvYmFs IHN1YmRpcgorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09 IDB9IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3QgInByaW50IER5bkFy clN0ciIgIi4qID0gXFx7J2RzdHIwJywgJ2RzdHIxJywgJ2RzdHIyJywgJ2RzdHIzJywgJ2RzdHI0 JywgJ2RzdHI1JywgJ2RzdHI2JywgJ2RzdHI3JywgJ2RzdHI4JywgJ2RzdHI5JywgJ2RzdHIxMCcs ICdkc3RyMTEnLCAnZHN0cjEyJ1xcfSIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2Ygc3RyaW5nIgog KwotKyAgICBpZiB7ICRhcmcgIT0gIiIgfSB7Ci0rCXNldCBhcmcgImFkZGl0aW9uYWxfZmxhZ3M9 JGFyZyIKLSsgICAgfQorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJy YXlzID09IDB9IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3QgInByaW50 IFN0YXRBcnJTdHIiICIuKiA9IFxceydzdHIwJywgJ3N0cjEnLCAnc3RyMicsICdzdHIzJywgJ3N0 cjQnLCAnc3RyNScsICdzdHI2JywgJ3N0cjcnLCAnc3RyOCcsICdzdHI5JywgJ3N0cjEwJywgJ3N0 cjExJywgJ3N0cjEyJ1xcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBzdHJpbmciCiArCi0rICAg IGlmIHsgW2dkYl9jb21waWxlICIkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUiICRiaW5maWxlIFwK LSsJICAgIGV4ZWN1dGFibGUgW2NvbmNhdCAkYXJnIGRlYnVnIG5vd2FybmluZ3NdXSAhPSAiIiB9 IHsKLSsJdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlICR7c3JjZmlsZX0iCi0rCXJldHVybiAt MQotKyAgICB9CisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMg PT0gMH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgogK30KKytnZGJfdGVzdCAicHJpbnQgRHlu QXJyQ2hhciIgIi4qID0gJ2FiY2RlZmdoaWprbG0nIiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBj aGFyIgogKwotK3Byb2MgcHJlcGFyZV9mb3JfdHJhY2VfdGVzdCB7fSB7Ci0rICAgIGdsb2JhbCBl eGVjdXRhYmxlCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5w YXMgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLjI5NTYwMmQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCitAQCAtMCwwICsxLDgyIEBACisreworKyBD b3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsg ICAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQorKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwot KyAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB7Ci0rCXBlcnJvciAiQ291bGQgbm90IHJ1biB0byBg bWFpbicuIgotKwljb250aW51ZQotKyAgICB9CisrIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICAgIGdk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJlbmQtaGVyZSJdCisrIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgogK30KICsKLStwcm9jIHJ1bl90cmFjZV9leHBlcmltZW50IHsgdGVz dF9wcm9iZSBtc2cgfSB7Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAgIHNldCB0ZXN0 ICJjb2xsZWN0ICRtc2c6IHN0YXJ0IHRyYWNlIGV4cGVyaW1lbnQiCi0rICAgIGdkYl90ZXN0X211 bHRpcGxlICJ0c3RhcnQiICIkdGVzdCIgewotKwktcmUgIl50c3RhcnRcclxuJGdkYl9wcm9tcHQg JCIgewotKwkgICAgcGFzcyAiJHRlc3QiCi0rCX0KLSsgICAgfQorK3Byb2dyYW0gYXJyYXlzOwog KwotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICJDb250aW51aW5nLipCcmVha3Bv aW50IFxbMC05XF0rLioiIFwKLSsJICAgICJjb2xsZWN0ICRtc2c6IHJ1biB0cmFjZSBleHBlcmlt ZW50IgotKyAgICBnZGJfdGVzdCAidHN0b3AiIFwKLSsJICAgICJcW1xyXG5cXSsiIFwKLSsJICAg ICJjb2xsZWN0ICRtc2c6IHN0b3AgdHJhY2UgZXhwZXJpbWVudCIKLSsgICAgZ2RiX3Rlc3QgInRm aW5kIHN0YXJ0IiBcCi0rCSAgICAiIzAgLioiIFwKLSsJICAgICJjb2xsZWN0ICRtc2c6IHRmaW5k IHRlc3QgZnJhbWUiCi0rfQorK3skbW9kZSBvYmpmcGN9eyRoK30KICsKLStwcm9jIGdkYl9jb2xs ZWN0X3Byb2JlX2FyZyB7IG1zZyBwcm9iZSB2YWxfYXJnMCB9IHsKLSsgICAgZ2xvYmFsIGdkYl9w cm9tcHQKLSsgICAgZ2xvYmFsIGNyCisrdXNlcyBzeXN1dGlsczsKICsKLSsgICAgcHJlcGFyZV9m b3JfdHJhY2VfdGVzdAorK3R5cGUgVFN0YXRBcnJJbnQ9IGFycmF5WzAuLjExXSBvZiBpbnRlZ2Vy OworKyAgICAgVER5bkFyckludD0gYXJyYXkgb2YgaW50ZWdlcjsKKysgICAgIFRTdGF0QXJyU3Ry PSBhcnJheVswLi4xMl0gb2Ygc3RyaW5nOworKyAgICAgVER5bkFyclN0cj0gYXJyYXkgb2Ygc3Ry aW5nOworKyAgICAgVER5bkFyckNoYXIgPSBhcnJheSBvZiBjaGFyOworKyAgICAgVFN0YXRBcnJD aGFyID0gYXJyYXkgWzAuLjExXSBvZiBjaGFyOwogKwotKyAgICBnZGJfdGVzdCAidHJhY2UgJHBy b2JlIiBcCi0rCSAgICAiVHJhY2Vwb2ludCBcWzAtOVxdKyBhdCAuKiIgXAotKwkgICAgImNvbGxl Y3QgJG1zZzogc2V0IHRyYWNlcG9pbnQiCi0rICAgIGdkYl90cmFjZV9zZXRhY3Rpb25zICJjb2xs ZWN0ICRtc2c6IGRlZmluZSBhY3Rpb25zIiBcCi0rCSAgICAiIiBcCi0rCSAgICAiY29sbGVjdCBc JF9wcm9iZV9hcmcwIiAiXiQiCisrICAgICBUU3RhdDJkQXJySW50ID0gYXJyYXlbMC4uMTEsMC4u NF0gb2YgaW50ZWdlcjsKICsKLSsgICAgIyBCZWdpbiB0aGUgdGVzdC4KLSsgICAgcnVuX3RyYWNl X2V4cGVyaW1lbnQgJG1zZyAkcHJvYmUKKyt2YXIgU3RhdEFyckludDogVFN0YXRBcnJJbnQ7Cisr ICAgIFN0YXRBcnJJbnRfOiBBcnJheVswLi4xMV0gb2YgaW50ZWdlcjsKKysgICAgRHluQXJySW50 OiAgVER5bkFyckludDsKKysgICAgRHluQXJySW50XzogQXJyYXkgb2YgaW50ZWdlcjsKKysgICAg U3RhdEFyclN0cjogVFN0YXRBcnJTdHI7CisrICAgIER5bkFyclN0cjogVER5bkFyclN0cjsKKysg ICAgU3RhdEFyckNoYXI6IFRTdGF0QXJyQ2hhcjsKKysgICAgRHluQXJyQ2hhcjogVER5bkFyckNo YXI7CiArCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcwIiBcCi0rCSAgICAiXFwk XFswLTlcXSsgPSAkdmFsX2FyZzAkY3IiIFwKLSsJICAgICJjb2xsZWN0ICRtc2c6IGNvbGxlY3Rl ZCBwcm9iZSBhcmcwIgotK30KKysgICAgU3RhdDJkQXJySW50OiBUU3RhdDJkQXJySW50OwogKwot K2NvbXBpbGVfc3RhcF9iaW4gIiIKKysgICAgczogc3RyaW5nOworKwkKKysgICAgaSxqIDogaW50 ZWdlcjsKICsKLStjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0raWYgeyAhW3J1bnRvX21haW5d IH0gewotKyAgICBwZXJyb3IgIkNvdWxkIG5vdCBydW4gdG8gYG1haW4nLiIKLSsgICAgY29udGlu dWUKLSt9CisrYmVnaW4KKysgIGZvciBpIDo9IDAgdG8gMTEgZG8KKysgICAgYmVnaW4KKysgICAg U3RhdEFyckludFtpXTo9IGkrNTA7CisrICAgIFN0YXRBcnJJbnRfW2ldOj0gaSs1MDsKKysgICAg U3RhdEFyckNoYXJbaV06PSBjaHIob3JkKCdhJykraSk7CisrICAgIGZvciBqIDo9IDAgdG8gNCBk bworKyAgICAgIFN0YXQyZEFyckludFtpLGpdOj1pK2o7CisrICAgIGVuZDsKKysgIHdyaXRlbG4o U3RhdEFyckludF9bMF0pOworKyAgd3JpdGVsbihTdGF0QXJySW50WzBdKTsgeyBzZXQgYnJlYWtw b2ludCAxIGhlcmUgfQorKyAgd3JpdGVsbihTdGF0QXJyQ2hhclswXSk7CisrICB3cml0ZWxuKFN0 YXQyZEFyckludFswLDBdKTsKICsKLStpZiB7ICFbZ2RiX3RhcmdldF9zdXBwb3J0c190cmFjZV0g fSB7Ci0rICAgICMgVGVzdCBjYW5ub3QgcnVuIG9uIHRoaXMgdGFyZ2V0LgotKyAgICByZXR1cm4g MTsKLSt9CisrICBzZXRsZW5ndGgoRHluQXJySW50LDEzKTsKKysgIHNldGxlbmd0aChEeW5BcnJJ bnRfLDEzKTsKKysgIHNldGxlbmd0aChEeW5BcnJTdHIsMTMpOworKyAgc2V0bGVuZ3RoKER5bkFy ckNoYXIsMTMpOworKyAgZm9yIGkgOj0gMCB0byAxMiBkbworKyAgICBiZWdpbgorKyAgICBEeW5B cnJJbnRbaV06PSBpKzUwOworKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKKysgICAgRHluQXJy Q2hhcltpXTo9IGNocihvcmQoJ2EnKStpKTsKKysgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50 dG9zdHIoaSk7CisrICAgIER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOworKyAgICBl bmQ7CisrICB3cml0ZWxuKER5bkFyckludF9bMV0pOworKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0p OyAKKysgIHdyaXRlbG4oRHluQXJyU3RyWzFdKTsgCisrICB3cml0ZWxuKFN0YXRBcnJTdHJbMV0p OworKyAgd3JpdGVsbihEeW5BcnJDaGFyWzFdKTsKICsKLStnZGJfY29sbGVjdF9wcm9iZV9hcmcg InByb2JlIGFyZ3Mgd2l0aG91dCBzZW1hcGhvcmUiICItcCB1c2VyIiAiMjMiCi0rZ2RiX2V4aXQK KysgIHMgOj0gJ3Rlc3QnIzAnc3RyaW5nJzsKKysgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9p bnQgMiBoZXJlIH0KKytlbmQuCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKK2lu ZGV4IDgzZmY4ZmUuLmJkZGJmOWYgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZnJhbWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUu ZXhwCitAQCAtNzQsOCArNzQsNiBAQCBnZGJfdGVzdCAicHl0aG9uIHByaW50IGJmcmFtZSA9PSBn ZGIubmV3ZXN0X2ZyYW1lKCkiIFRydWUgXAorIAorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jl c3VsdCA9JywgZjAgPT0gZjEiICIgPSBGYWxzZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAo ZmFsc2UpIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIg PSBUcnVlIiAidGVzdCBlcXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKKy1nZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0 eSBjb21wYXJpc29uICh0cnVlKSIKKy1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScs IGYwICE9IGYwIiAiID0gRmFsc2UiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2Up IgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIg PSBUcnVlIiAidGVzdCBGcmFtZS5pc192YWxpZCIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLm5hbWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKKyBnZGJfdGVz dCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFN RSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUiCitAQCAtOTAsMyArODgsNSBAQCBnZGJfdGVz dCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hf c3VyZWx5X2RvZXNudF9leAorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAu cmVhZF92YXIgKCdhJykiICIgPSAxIiAidGVzdCBGcmFtZS5yZWFkX3ZhciAtIHN1Y2Nlc3MiCisg CisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBnZGIuc2VsZWN0ZWRfZnJhbWUg KCkgPT0gZjEiICIgPSBUcnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJhbWUiCiArCi0rY29tcGls ZV9zdGFwX2JpbiAiLURVU0VfUFJPQkVTIgotK2dkYl9jb2xsZWN0X3Byb2JlX2FyZyAicHJvYmUg YXJncyB3aXRoIHNlbWFwaG9yZSIgIi1wIHR3byIgIjQ2IgorK2dkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6 eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS12YWx1ZS5leHAKK2luZGV4IGM5ZDhjOTcuLjQzMjRkYjAgMTAwNjQ0CistLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktdmFsdWUuZXhwCitAQCAtMzYwLDYgKzM2MCwxNSBAQCBwcm9jIHRlc3RfdmFsdWVf YWZ0ZXJfZGVhdGgge30geworICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgorIH0KKyAKKysjIFJl Z3Jlc3Npb24gdGVzdCBmb3IgYSBjYXN0IGZhaWx1cmUuICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdl IGNhc3QgYQorKyMgdmFsdWUgdG8gaXRzIG93biB0eXBlLCBnZGIgY291bGQgY3Jhc2guICBUaGlz IGhhcHBlbmVkIGJlY2F1c2Ugd2UKKysjIGNvdWxkIGVuZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0 cnVjdCB2YWx1ZS4KKytwcm9jIHRlc3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsKKysgIGdkYl90ZXN0 ICJweXRob24gdiA9IGdkYi5WYWx1ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0 IgorKyAgZ2RiX3Rlc3QgInB5dGhvbiB2ID0gdi5jYXN0KHYudHlwZSkiICIiICJjYXN0IHZhbHVl IGZvciBjYXN0IHRlc3QiCisrICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHYiICI1IiAicHJpbnQg dmFsdWUgZm9yIGNhc3QgdGVzdCIKKyt9CiArCi0rIyBGaW5pc2hlZCEKLStnZGJfdGVzdCAidGZp bmQgbm9uZSIgIi4qIiAiIgorICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpbnZhbGlkIHN1YnNjcmlw dCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAorICMgdGhlIHR5cGUgb2YgdGhlIHZhbHVl IHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcgYQorICMgc3Vic2NyaXB0IG9w ZXJhdGlvbiB0byBwcm9jZWVkLgorQEAgLTQ5Niw2ICs1MDUsNyBAQCB0ZXN0X3ZhbHVlX2luX2lu ZmVyaW9yCisgdGVzdF9pbmZlcmlvcl9mdW5jdGlvbl9jYWxsCisgdGVzdF9sYXp5X3N0cmluZ3MK KyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCisrdGVzdF9jYXN0X3JlZ3Jlc3Npb24KKyAKKyAjIFRl c3QgZWl0aGVyIEMgb3IgQysrIHZhbHVlcy4gCisgdGVzdF9zdWJzY3JpcHRfcmVncmVzc2lvbiAi JHtiaW5maWxlfSIgImMiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBi L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLWluZGV4IDAwZmU3MWMuLjVjYTk1NjMgMTAwNjQ0 CitpbmRleCAxZGZlNTY0Li4xODZmOWQ3IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTEzOSw2ICsxMzks MTEgQEAgcHJvYyBnZGJfdW5sb2FkIHt9IHsKK0BAIC0xNDIsNiArMTQyLDExIEBAIHByb2MgZ2Ri X3VubG9hZCB7fSB7CiAgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVlCiAg CX0KQEAgLTE1Mjk0LDQ4ICs4Njk4LDExIEBAIGluZGV4IGRkMThkMzcuLmY5NzM0ODUgMTAwNjQ0 CiAgICAgIH0KICAgICAgc2V0IHBhc2NhbF9pbml0X2RvbmUgMQogIH0gICAKLWRpZmYgLS1naXQg YS9nZGIvdGhyZWFkLmMgYi9nZGIvdGhyZWFkLmMKLWluZGV4IDlhMjkzODMuLjFhNDliMDAgMTAw NjQ0Ci0tLS0gYS9nZGIvdGhyZWFkLmMKLSsrKyBiL2dkYi90aHJlYWQuYwotQEAgLTE0MzEsNyAr MTQzMSw4IEBAIHVwZGF0ZV90aHJlYWRfbGlzdCAodm9pZCkKLSAgICBubyB0aHJlYWQgaXMgc2Vs ZWN0ZWQsIG9yIG5vIHRocmVhZHMgZXhpc3QuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUg KgotLXRocmVhZF9pZF9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IGludGVybmFsdmFyICp2YXIpCi0rdGhyZWFkX2lkX21ha2VfdmFsdWUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwKLSsJCSAgICAgIHZvaWQgKmlnbm9y ZSkKLSB7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gZmluZF90aHJlYWRfcHRpZCAoaW5m ZXJpb3JfcHRpZCk7Ci0gCi1AQCAtMTQ0Miw2ICsxNDQzLDE1IEBAIHRocmVhZF9pZF9tYWtlX3Zh bHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIpCi0g LyogQ29tbWFuZHMgd2l0aCBhIHByZWZpeCBvZiBgdGhyZWFkJy4gICovCi0gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKnRocmVhZF9jbWRfbGlzdCA9IE5VTEw7Ci0gCi0rLyogSW1wbGVtZW50YXRp b24gb2YgYHRocmVhZCcgdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgaW50ZXJuYWx2 YXJfZnVuY3MgdGhyZWFkX2Z1bmNzID0KLSt7Ci0rICB0aHJlYWRfaWRfbWFrZV92YWx1ZSwKLSsg IE5VTEwsCi0rICBOVUxMCi0rfTsKLSsKLSB2b2lkCi0gX2luaXRpYWxpemVfdGhyZWFkICh2b2lk KQotIHsKLUBAIC0xNDg3LDUgKzE0OTcsNSBAQCBTaG93IHByaW50aW5nIG9mIHRocmVhZCBldmVu dHMgKHN1Y2ggYXMgdGhyZWFkIHN0YXJ0IGFuZCBleGl0KS4iKSwgTlVMTCwKLSAgICAgICAgICBz aG93X3ByaW50X3RocmVhZF9ldmVudHMsCi0gICAgICAgICAgJnNldHByaW50bGlzdCwgJnNob3dw cmludGxpc3QpOwotIAotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90aHJlYWQi LCB0aHJlYWRfaWRfbWFrZV92YWx1ZSk7Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5 ICgiX3RocmVhZCIsICZ0aHJlYWRfZnVuY3MsIE5VTEwpOwotIH0KIGRpZmYgLS1naXQgYS9nZGIv dG9wLmMgYi9nZGIvdG9wLmMKLWluZGV4IGM0ZTkxM2QuLjViNzk5ODMgMTAwNjQ0CitpbmRleCAw NjFhZDQ4Li5kNjE1Y2ZjIDEwMDY0NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMK LUBAIC0zNDksNiArMzQ5LDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCitAQCAt MzUyLDYgKzM1Miw5IEBAIHByZXBhcmVfZXhlY3V0ZV9jb21tYW5kICh2b2lkKQogIAogICAgbWFy ayA9IHZhbHVlX21hcmsgKCk7CiAgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3ZhbHVlX2ZyZWVf dG9fbWFyayAobWFyayk7CkBAIC0xNTM0NSwxMTIgKzg3MTIsOCBAQCBpbmRleCBjNGU5MTNkLi41 Yjc5OTgzIDEwMDY0NAogIAogICAgLyogV2l0aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hp bGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMKICAgICAgIHN0b3BwZWQsIHRoZSBkY2FjaGUg Y2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFibGUgdG8gZGV0ZWN0Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3RyYWNlcG9pbnQuYyBiL2dkYi90cmFjZXBvaW50LmMKLWluZGV4IGVkZTM3NDIuLmIy MGY3MzMgMTAwNjQ0Ci0tLS0gYS9nZGIvdHJhY2Vwb2ludC5jCi0rKysgYi9nZGIvdHJhY2Vwb2lu dC5jCi1AQCAtNjgzLDcgKzY4Myw3IEBAIHZhbGlkYXRlX2FjdGlvbmxpbmUgKGNoYXIgKipsaW5l LCBzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBO VUxMOwotICAgY2hhciAqcCwgKnRtcF9wOwotICAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0t ICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHI7Ci0rICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIg PSBOVUxMOwotICAgc3RydWN0IHRyYWNlcG9pbnQgKnQgPSAoc3RydWN0IHRyYWNlcG9pbnQgKikg YjsKLSAKLSAgIC8qIElmIEVPRiBpcyB0eXBlZCwgKmxpbmUgaXMgTlVMTC4gICovCi1AQCAtMTM1 Miw3ICsxMzUyLDcgQEAgZW5jb2RlX2FjdGlvbnNfMSAoc3RydWN0IGNvbW1hbmRfbGluZSAqYWN0 aW9uLAotICAgaW50IGk7Ci0gICBzdHJ1Y3QgdmFsdWUgKnRlbXB2YWw7Ci0gICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqY21kOwotLSAgc3RydWN0IGFnZW50X2V4cHIgKmFleHByOwotKyAgc3Ry dWN0IGFnZW50X2V4cHIgKmFleHByID0gTlVMTDsKLSAKLSAgIGZvciAoOyBhY3Rpb247IGFjdGlv biA9IGFjdGlvbi0+bmV4dCkKLSAgICAgewotQEAgLTE3MTYsNiArMTcxNiw3IEBAIHN0YXJ0X3Ry YWNpbmcgKGNoYXIgKm5vdGVzKQotICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChicmVha3Bv aW50X3AsIHRwX3ZlYywgaXgsIGIpOyBpeCsrKQotICAgICB7Ci0gICAgICAgc3RydWN0IHRyYWNl cG9pbnQgKnQgPSAoc3RydWN0IHRyYWNlcG9pbnQgKikgYjsKLSsgICAgICBzdHJ1Y3QgYnBfbG9j YXRpb24gKmxvYzsKLSAKLSAgICAgICBpZiAoYi0+ZW5hYmxlX3N0YXRlID09IGJwX2VuYWJsZWQp Ci0gCWFueV9lbmFibGVkID0gMTsKLUBAIC0xNzc4LDYgKzE3NzksOSBAQCBzdGFydF90cmFjaW5n IChjaGFyICpub3RlcykKLSAJfQotIAotICAgICAgIHQtPm51bWJlcl9vbl90YXJnZXQgPSBiLT5u dW1iZXI7Ci0rCi0rICAgICAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0 KQotKwltb2RpZnlfc2VtYXBob3JlIChsb2MsIDEpOwotICAgICB9Ci0gICBWRUNfZnJlZSAoYnJl YWtwb2ludF9wLCB0cF92ZWMpOwotIAotQEAgLTE4NTAsOSArMTg1NCwyOCBAQCB2b2lkCi0gc3Rv cF90cmFjaW5nIChjaGFyICpub3RlKQotIHsKLSAgIGludCByZXQ7Ci0rICBWRUMoYnJlYWtwb2lu dF9wKSAqdHBfdmVjID0gTlVMTDsKLSsgIGludCBpeDsKLSsgIHN0cnVjdCBicmVha3BvaW50ICp0 OwotIAotICAgdGFyZ2V0X3RyYWNlX3N0b3AgKCk7Ci0gCi0rICB0cF92ZWMgPSBhbGxfdHJhY2Vw b2ludHMgKCk7Ci0rICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJyZWFrcG9pbnRfcCwgdHBf dmVjLCBpeCwgdCk7IGl4KyspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxv YzsKLSsKLSsgICAgICBpZiAoKHQtPnR5cGUgPT0gYnBfZmFzdF90cmFjZXBvaW50Ci0rCSAgID8g IW1heV9pbnNlcnRfZmFzdF90cmFjZXBvaW50cwotKwkgICA6ICFtYXlfaW5zZXJ0X3RyYWNlcG9p bnRzKSkKLSsJY29udGludWU7Ci0rCi0rICAgICAgZm9yIChsb2MgPSB0LT5sb2M7IGxvYzsgbG9j ID0gbG9jLT5uZXh0KQotKwltb2RpZnlfc2VtYXBob3JlIChsb2MsIDApOwotKyAgICB9Ci0rCi0r ICBWRUNfZnJlZSAoYnJlYWtwb2ludF9wLCB0cF92ZWMpOwotKwotICAgaWYgKCFub3RlKQotICAg ICBub3RlID0gdHJhY2Vfc3RvcF9ub3RlczsKLSAgIHJldCA9IHRhcmdldF9zZXRfdHJhY2Vfbm90 ZXMgKE5VTEwsIE5VTEwsIG5vdGUpOwotQEAgLTQ5MjQsNyArNDk0Nyw4IEBAIGluZm9fc3RhdGlj X3RyYWNlcG9pbnRfbWFya2Vyc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAg ICBhdmFpbGFibGUuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNkYXRhX21ha2Vf dmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikK LStzZGF0YV9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVy bmFsdmFyICp2YXIsCi0rCQkgIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBMT05HRVNUIHNpemU7Ci0g ICBnZGJfYnl0ZSAqYnVmOwotQEAgLTUxMDMsNiArNTEyNywxNSBAQCB0cmFjZWZyYW1lX2F2YWls YWJsZV9tZW1vcnkgKFZFQyhtZW1fcmFuZ2VfcykgKipyZXN1bHQsCi0gICByZXR1cm4gMDsKLSB9 Ci0gCi0rLyogSW1wbGVtZW50YXRpb24gb2YgYHNkYXRhJyB2YXJpYWJsZS4gICovCi0rCi0rc3Rh dGljIGNvbnN0IHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyBzZGF0YV9mdW5jcyA9Ci0rewotKyAg c2RhdGFfbWFrZV92YWx1ZSwKLSsgIE5VTEwsCi0rICBOVUxMCi0rfTsKLSsKLSAvKiBtb2R1bGUg aW5pdGlhbGl6YXRpb24gKi8KLSB2b2lkCi0gX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkK LUBAIC01MTEzLDcgKzUxNDYsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQotICAg ICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBn ZGJhcmNoCi0gICAgICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdy ZSBxdWl0ZSBzdXJlIHRoZXJlCi0gICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlh YmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6 eSAoIl9zZGF0YSIsIHNkYXRhX21ha2VfdmFsdWUpOwotKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5 cGVfbGF6eSAoIl9zZGF0YSIsICZzZGF0YV9mdW5jcywgTlVMTCk7Ci0gCi0gICB0cmFjZWZyYW1l X251bWJlciA9IC0xOwotICAgdHJhY2Vwb2ludF9udW1iZXIgPSAtMTsKIGRpZmYgLS1naXQgYS9n ZGIvdHlwZXByaW50LmMgYi9nZGIvdHlwZXByaW50LmMKLWluZGV4IGRlOTZmZDUuLjc1NDg1ZmYg MTAwNjQ0CitpbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAogLS0tIGEvZ2RiL3R5cGVwcmlu dC5jCiArKysgYi9nZGIvdHlwZXByaW50LmMKIEBAIC0zNSw2ICszNSw3IEBACkBAIC0xNTQ2Miw3 ICs4NzI1LDcgQEAgaW5kZXggZGU5NmZkNS4uNzU0ODVmZiAxMDA2NDQKICAKICBleHRlcm4gdm9p ZCBfaW5pdGlhbGl6ZV90eXBlcHJpbnQgKHZvaWQpOwogQEAgLTc2LDYgKzc3LDkgQEAgdm9pZAot IHR5cGVfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCisgdHlwZV9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNo YXIgKnZhcnN0cmluZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJICAgIGludCBzaG93KQog IHsKICsgIGlmIChzaG93ID49IDAgJiYgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgIT0g bGFuZ3VhZ2VfYWRhKQpAQCAtMTU0OTYsNyArODc1OSw3IEBAIGluZGV4IGRlOTZmZDUuLjc1NDg1 ZmYgMTAwNjQ0CiAgICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKICAKICAgIGdldF91c2VyX3By aW50X29wdGlvbnMgKCZvcHRzKTsKLUBAIC0xNjcsOCArMTczLDcgQEAgd2hhdGlzX2V4cCAoY2hh ciAqZXhwLCBpbnQgc2hvdykKK0BAIC0xNTgsOCArMTY0LDcgQEAgd2hhdGlzX2V4cCAoY2hhciAq ZXhwLCBpbnQgc2hvdykKICAgIHR5cGVfcHJpbnQgKHR5cGUsICIiLCBnZGJfc3Rkb3V0LCBzaG93 KTsKICAgIHByaW50Zl9maWx0ZXJlZCAoIlxuIik7CiAgCkBAIC0xNTUwNywxMCArODc3MCwxMCBA QCBpbmRleCBkZTk2ZmQ1Li43NTQ4NWZmIDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiBkaWZmIC0t Z2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5kZXggNDg2M2U0MS4uYzFmZWM4MiAx MDA2NDQKK2luZGV4IDJkNjA3ZWYuLmQ2N2U3ZGQgMTAwNjQ0CiAtLS0gYS9nZGIvdXRpbHMuYwog KysrIGIvZ2RiL3V0aWxzLmMKLUBAIC0xOTA0LDYgKzE5MDQsMzYgQEAgc2V0X2JhdGNoX2ZsYWdf YW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKK0BAIC0xNzM3LDYgKzE3 MzcsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5m byAodm9pZCkKICAgIHJldHVybiBiYWNrX3RvOwogIH0KICAKQEAgLTE1NTQ4LDcgKzg4MTEsNyBA QCBpbmRleCA0ODYzZTQxLi5jMWZlYzgyIDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiBkaWZmIC0t Z2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggYjhiY2M2Yi4uZmI4 M2M3MCAxMDA2NDQKK2luZGV4IDAyMjUzMzkuLmY3NzViZmMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFs YXJpdGguYwogKysrIGIvZ2RiL3ZhbGFyaXRoLmMKIEBAIC0xOTcsNyArMTk3LDEwIEBAIHZhbHVl X3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBpbmRleCwg aW50IGxvd2VyYm91bmQpCkBAIC0xNTU3NSw3ICs4ODM4LDcgQEAgaW5kZXggYjhiY2M2Yi4uZmI4 M2M3MCAxMDA2NDQKICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9w cy5jCi1pbmRleCA1NDUzYjFhLi41YTRhOGZhIDEwMDY0NAoraW5kZXggZmViNDdmNS4uNmQxNGVl ZSAxMDA2NDQKIC0tLSBhL2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtNDUs NiArNDUsNyBAQApAQCAtMTU1ODYsNyArODg0OSw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEg MTAwNjQ0CiAgCiAgZXh0ZXJuIGludCBvdmVybG9hZF9kZWJ1ZzsKICAvKiBMb2NhbCBmdW5jdGlv bnMuICAqLwotQEAgLTkxNSw2ICs5MTYsNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlw ZSkKK0BAIC05MTksNiArOTIwLDY1IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUpCiAg ICByZXR1cm4gdmFsOwogIH0KICAKQEAgLTE1NjUyLDcgKzg5MTUsMTcgQEAgaW5kZXggNTQ1M2Ix YS4uNWE0YThmYSAxMDA2NDQKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZhbHVlX2F0LCB2YWx1 ZV9hdF9sYXp5LCBhbmQgdmFsdWVfYXRfbGF6eV9zdGFjay4gICovCiAgCiAgc3RhdGljIHN0cnVj dCB2YWx1ZSAqCi1AQCAtMTAxMSwxMiArMTA3MSwyMCBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1 Y3QgdmFsdWUgKnZhbCkKK0BAIC05ODEsNyArMTA0MSw4IEBAIGludAorIHZhbHVlX2ZldGNoX2xh enkgKHN0cnVjdCB2YWx1ZSAqdmFsKQorIHsKKyAgIGdkYl9hc3NlcnQgKHZhbHVlX2xhenkgKHZh bCkpOworLSAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7CisrICBpZiAoVkFMVUVfTFZB TCAodmFsKSAhPSBsdmFsX21lbW9yeSkKKysgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZh bCk7CisgICBpZiAodmFsdWVfYml0c2l6ZSAodmFsKSkKKyAgICAgeworICAgICAgIC8qIFRvIHJl YWQgYSBsYXp5IGJpdGZpZWxkLCByZWFkIHRoZSBlbnRpcmUgZW5jbG9zaW5nIHZhbHVlLiAgVGhp cworQEAgLTEwMTUsMTIgKzEwNzYsMjQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVl ICp2YWwpCiAgICAgIH0KICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1v cnkpCiAgICAgIHsKQEAgLTE1NjcwLDE1ICs4OTQzLDE5IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4 ZmEgMTAwNjQ0CiArCiArCSAgaWYgKGxlbmd0aCkKICsJICAgIHsKKysJICAgICAgLyogRGVsYXkg aXQgYWZ0ZXIgb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgYWJvdmUuICAqLworKwkgICAgICBhbGxv Y2F0ZV92YWx1ZV9jb250ZW50cyAodmFsKTsKICsJICAgICAgYWRkciArPSB2YWx1ZV9vZmZzZXQg KHZhbCk7CiArCSAgICAgIHJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2 YWwpLAogKwkJCQkgYWRkciwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAodmFsKSwgbGVuZ3RoKTsK ICsJICAgIH0KICsJfQorKyAgICAgIC8qIEp1c3QgdG8gYmUgc3VyZSBpdCBoYXMgYmVlbiBjYWxs ZWQuICAqLworKyAgICAgIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOwogICAgICB9CiAg ICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIpCiAgICAgIHsKLUBA IC0xNTI4LDcgKzE1OTYsMTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCitAQCAtMTUzMiw3ICsxNjA1LDE4IEBAIGFkZHJlc3Nfb2Zf dmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChW QUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAg ICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTU2 OTgsNyArODk3NSw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAgCiAgICAgICAg cmV0dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFk ZHIpOwogICAgICB9Ci1AQCAtMTYzNSw2ICsxNzE0LDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0x NjM5LDYgKzE3MjMsNyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3Ry dWN0IHZhbHVlICphcmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAtMTU3MDYsNyArODk4Myw3IEBAIGluZGV4IDU0NTNi MWEuLjVhNGE4ZmEgMTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21l dGhpbmcgcmVxdWlyaW5nIGEgcG9pbnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBu b3QgeWV0IGJlZW4gcHVzaGVkIHRvIHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE2 NDQsOCArMTcyNCwxMiBAQCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkK K0BAIC0xNjQ4LDggKzE3MzMsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUg KmFyZzEpCiAgICBpZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVy cm9yIChfKCJBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBt ZW1vcnkuIikpOwogIApAQCAtMTU3MjAsNyArODk5Nyw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4 ZmEgMTAwNjQ0CiAgfQogIAogIC8qIEdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwg cmV0dXJuIGEgdmFsdWUgd2hpY2ggaXMgYSBwb2ludGVyCi1AQCAtMzY5NCw2ICszNzc4LDggQEAg dmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0 aCkKK0BAIC0zNzcyLDYgKzM4NjEsOCBAQCB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJh eSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQogIAkJCQkJVFlQRV9UQVJHRVRfVFlQRSAocmFu Z2VfdHlwZSksCiAgCQkJCQlsb3dib3VuZCwgCiAgCQkJCQlsb3dib3VuZCArIGxlbmd0aCAtIDEp OwpAQCAtMTU3MzAsNyArOTAwNyw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAg ICAgIHsKICAgICAgICBpbnQgaTsKIGRpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92 YWxwcmludC5jCi1pbmRleCAzMjVjZjQwLi43MGE5OGMyIDEwMDY0NAoraW5kZXggZmM1OTQyZC4u ODMzM2ViNCAxMDA2NDQKIC0tLSBhL2dkYi92YWxwcmludC5jCiArKysgYi9nZGIvdmFscHJpbnQu YwogQEAgLTM3LDYgKzM3LDcgQEAKQEAgLTE1NzQxLDcgKzkwMTgsNyBAQCBpbmRleCAzMjVjZjQw Li43MGE5OGMyIDEwMDY0NAogIAogICNpbmNsdWRlIDxlcnJuby5oPgogIAotQEAgLTI0MCw3ICsy NDEsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0yNTEsNyArMjUy LDYgQEAgc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICAgIGNhc2UgVFlQRV9D T0RFX1NUUlVDVDoKICAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046CiAgICAgIGNhc2UgVFlQRV9D T0RFX1NFVDoKQEAgLTE1NzQ5LDcgKzkwMjYsNyBAQCBpbmRleCAzMjVjZjQwLi43MGE5OGMyIDEw MDY0NAogICAgICBjYXNlIFRZUEVfQ09ERV9CSVRTVFJJTkc6CiAgICAgICAgcmV0dXJuIDA7CiAg ICAgIGRlZmF1bHQ6Ci1AQCAtMTE5OCw2ICsxMTk4LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1l bnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0xNTcwLDYgKzE1NzAsNyBAQCB2YWxfcHJpbnRf YXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAogIHsKICAgIHVuc2lnbmVkIGludCB0 aGluZ3NfcHJpbnRlZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CkBAIC0xNTc1Nyw3ICs5MDM0LDcg QEAgaW5kZXggMzI1Y2Y0MC4uNzBhOThjMiAxMDA2NDQKICAgIHN0cnVjdCB0eXBlICplbHR0eXBl LCAqaW5kZXhfdHlwZTsKICAgIHVuc2lnbmVkIGVsdGxlbjsKICAgIC8qIFBvc2l0aW9uIG9mIHRo ZSBhcnJheSBlbGVtZW50IHdlIGFyZSBleGFtaW5pbmcgdG8gc2VlCi1AQCAtMTIwNiw5ICsxMjA3 LDMzIEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAt MTU3OCw5ICsxNTc5LDMzIEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUg KnR5cGUsCiAgICAvKiBOdW1iZXIgb2YgcmVwZXRpdGlvbnMgd2UgaGF2ZSBkZXRlY3RlZCBzbyBm YXIuICAqLwogICAgdW5zaWduZWQgaW50IHJlcHM7CiAgICBMT05HRVNUIGxvd19ib3VuZCwgaGln aF9ib3VuZDsKQEAgLTE1NzkzLDcgKzkwNzAsNyBAQCBpbmRleCAzMjVjZjQwLi43MGE5OGMyIDEw MDY0NAogICAgaW5kZXhfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7CiAgCiAgICBpZiAo Z2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpKQotQEAgLTEy OTUsNiArMTMyMCw4IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5 cGUsCitAQCAtMTY2Nyw2ICsxNjkyLDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1 Y3QgdHlwZSAqdHlwZSwKICAgICAgewogICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg Ii4uLiIpOwogICAgICB9CkBAIC0xNTgwMywxOCArOTA4MCwxOCBAQCBpbmRleCAzMjVjZjQwLi43 MGE5OGMyIDEwMDY0NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBtZW1vcnkgYXQg YWRkcmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIv Z2RiL3ZhbHVlLmMKLWluZGV4IDU4M2JlMzMuLmNiNzNlZGEgMTAwNjQ0CitpbmRleCBjNjRlNTVi Li5jZDA4YTBiIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCi1A QCAtNDEsNiArNDEsNyBAQAotICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCitAQCAtNDIsNiAr NDIsNyBAQAogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisg I2luY2x1ZGUgImNwLWFiaS5oIgogKyNpbmNsdWRlICJvYnNlcnZlci5oIgogIAogIC8qIFByb3Rv dHlwZXMgZm9yIGV4cG9ydGVkIGZ1bmN0aW9ucy4gICovCiAgCi1AQCAtMTM4NSwxMiArMTM4Niwx NSBAQCB2b2lkCitAQCAtMTQzNywxMiArMTQzOCwxNSBAQCB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBv bmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCiAgCQkJICAgICAgY29uc3Qg c3RydWN0IHZhbHVlICp3aG9sZSkKICB7CkBAIC0xNTgzMCw3ICs5MTA3LDcgQEAgaW5kZXggNTgz YmUzMy4uY2I3M2VkYSAxMDA2NDQKICAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2NvbXB1dGVk KQogICAgICB7CiAgICAgICAgY29uc3Qgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUt PmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOwotQEAgLTEzOTgsNiArMTQwMiwxMiBAQCBzZXRfdmFs dWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKK0BAIC0xNDUw LDYgKzE0NTQsMTIgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVl ICpjb21wb25lbnQsCiAgICAgICAgaWYgKGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCiAgICAgICAgICBj b21wb25lbnQtPmxvY2F0aW9uLmNvbXB1dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJl ICh3aG9sZSk7CiAgICAgIH0KQEAgLTE1ODQzLDcgKzkxMjAsNyBAQCBpbmRleCA1ODNiZTMzLi5j YjczZWRhIDEwMDY0NAogIH0KICAKICAMCi1AQCAtMTUzMSw2ICsxNTQxLDMxIEBAIHNob3dfdmFs dWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTU4Myw2ICsxNTkzLDMxIEBA IHNob3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgICAgICAgbnVtX2V4 cFsxXSA9ICdcMCc7CiAgICAgIH0KICB9CkBAIC0xNTg3NSw4OCArOTE1Miw3IEBAIGluZGV4IDU4 M2JlMzMuLmNiNzNlZGEgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNl IGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMg YXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTU3Niw3ICsxNjExLDE0IEBAIHN0 cnVjdCBpbnRlcm5hbHZhcgotICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7Ci0gCi0gICAgICAg LyogVGhlIGNhbGwtYmFjayByb3V0aW5lIHVzZWQgd2l0aCBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVF LiAgKi8KLS0gICAgICBpbnRlcm5hbHZhcl9tYWtlX3ZhbHVlIG1ha2VfdmFsdWU7Ci0rICAgICAg c3RydWN0Ci0rICAgICAgICB7Ci0rCSAgLyogVGhlIGZ1bmN0aW9ucyB0byBjYWxsLiAgKi8KLSsJ ICBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgKmZ1bmN0aW9uczsKLSsKLSsJICAvKiBU aGUgZnVuY3Rpb24ncyB1c2VyLWRhdGEuICAqLwotKwkgIHZvaWQgKmRhdGE7Ci0rICAgICAgICB9 IG1ha2VfdmFsdWU7Ci0gCi0gICAgICAgLyogVGhlIGludGVybmFsIGZ1bmN0aW9uIHVzZWQgd2l0 aCBJTlRFUk5BTFZBUl9GVU5DVElPTi4gICovCi0gICAgICAgc3RydWN0Ci1AQCAtMTY3NSwxOCAr MTcxNywzOSBAQCBjcmVhdGVfaW50ZXJuYWx2YXIgKGNvbnN0IGNoYXIgKm5hbWUpCi0gLyogQ3Jl YXRlIGFuIGludGVybmFsIHZhcmlhYmxlIHdpdGggbmFtZSBOQU1FIGFuZCByZWdpc3RlciBGVU4g YXMgdGhlCi0gICAgZnVuY3Rpb24gdGhhdCB2YWx1ZV9vZl9pbnRlcm5hbHZhciB1c2VzIHRvIGNy ZWF0ZSBhIHZhbHVlIHdoZW5ldmVyCi0gICAgdGhpcyB2YXJpYWJsZSBpcyByZWZlcmVuY2VkLiAg TkFNRSBzaG91bGQgbm90IG5vcm1hbGx5IGluY2x1ZGUgYQotLSAgIGRvbGxhciBzaWduLiAgKi8K LSsgICBkb2xsYXIgc2lnbi4gIERBVEEgaXMgcGFzc2VkIHVuaW50ZXJwcmV0ZWQgdG8gRlVOIHdo ZW4gaXQgaXMKLSsgICBjYWxsZWQuICBDTEVBTlVQLCBpZiBub3QgTlVMTCwgaXMgY2FsbGVkIHdo ZW4gdGhlIGludGVybmFsIHZhcmlhYmxlCi0rICAgaXMgZGVzdHJveWVkLiAgSXQgaXMgcGFzc2Vk IERBVEEgYXMgaXRzIG9ubHkgYXJndW1lbnQuICAqLwotIAotIHN0cnVjdCBpbnRlcm5hbHZhciAq Ci0tY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoY2hhciAqbmFtZSwgaW50ZXJuYWx2YXJf bWFrZV92YWx1ZSBmdW4pCi0rY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoY29uc3QgY2hh ciAqbmFtZSwKLSsJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgKmZ1bmNz LAotKwkJCSAgICAgIHZvaWQgKmRhdGEpCi0gewotICAgc3RydWN0IGludGVybmFsdmFyICp2YXIg PSBjcmVhdGVfaW50ZXJuYWx2YXIgKG5hbWUpOwotIAotICAgdmFyLT5raW5kID0gSU5URVJOQUxW QVJfTUFLRV9WQUxVRTsKLS0gIHZhci0+dS5tYWtlX3ZhbHVlID0gZnVuOwotKyAgdmFyLT51Lm1h a2VfdmFsdWUuZnVuY3Rpb25zID0gZnVuY3M7Ci0rICB2YXItPnUubWFrZV92YWx1ZS5kYXRhID0g ZGF0YTsKLSAgIHJldHVybiB2YXI7Ci0gfQotIAotKy8qIFNlZSBkb2N1bWVudGF0aW9uIGluIHZh bHVlLmguICAqLwotKwotK2ludAotK2NvbXBpbGVfaW50ZXJuYWx2YXJfdG9fYXggKHN0cnVjdCBp bnRlcm5hbHZhciAqdmFyLAotKwkJCSAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAotKwkJCSAg IHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKQotK3sKLSsgIGlmICh2YXItPmtpbmQgIT0gSU5URVJO QUxWQVJfTUFLRV9WQUxVRQotKyAgICAgIHx8IHZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9ucy0+ Y29tcGlsZV90b19heCA9PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHZhci0+dS5tYWtl X3ZhbHVlLmZ1bmN0aW9ucy0+Y29tcGlsZV90b19heCAodmFyLCBleHByLCB2YWx1ZSwKLSsJCQkJ CSAgICAgIHZhci0+dS5tYWtlX3ZhbHVlLmRhdGEpOwotKyAgcmV0dXJuIDE7Ci0rfQotKwotIC8q IExvb2sgdXAgYW4gaW50ZXJuYWwgdmFyaWFibGUgd2l0aCBuYW1lIE5BTUUuICBOQU1FIHNob3Vs ZCBub3QKLSAgICBub3JtYWxseSBpbmNsdWRlIGEgZG9sbGFyIHNpZ24uCi0gCi1AQCAtMTc1OSw3 ICsxODIyLDggQEAgdmFsdWVfb2ZfaW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBJ TlRFUk5BTFZBUl9NQUtFX1ZBTFVFOgotLSAgICAgIHZhbCA9ICgqdmFyLT51Lm1ha2VfdmFsdWUp IChnZGJhcmNoLCB2YXIpOwotKyAgICAgIHZhbCA9ICgqdmFyLT51Lm1ha2VfdmFsdWUuZnVuY3Rp b25zLT5tYWtlX3ZhbHVlKSAoZ2RiYXJjaCwgdmFyLAotKwkJCQkJCQl2YXItPnUubWFrZV92YWx1 ZS5kYXRhKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgZGVmYXVsdDoKLUBAIC0xOTU1LDYgKzIw MTksMTEgQEAgY2xlYXJfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQotICAg ICAgIHhmcmVlICh2YXItPnUuc3RyaW5nKTsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBJ TlRFUk5BTFZBUl9NQUtFX1ZBTFVFOgotKyAgICAgIGlmICh2YXItPnUubWFrZV92YWx1ZS5mdW5j dGlvbnMtPmRlc3Ryb3kgIT0gTlVMTCkKLSsJdmFyLT51Lm1ha2VfdmFsdWUuZnVuY3Rpb25zLT5k ZXN0cm95ICh2YXItPnUubWFrZV92YWx1ZS5kYXRhKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAg ZGVmYXVsdDoKLSAgICAgICBicmVhazsKLSAgICAgfQotQEAgLTIwMDksNiArMjA3OCwzOCBAQCBj YWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMDk1 LDYgKzIxMzAsMzggQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCiAgICByZXR1cm4gKCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZu LT5jb29raWUsIGFyZ2MsIGFyZ3YpOwogIH0KICAKQEAgLTE1OTk1LDcgKzkxOTEsNyBAQCBpbmRl eCA1ODNiZTMzLi5jYjczZWRhIDEwMDY0NAogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBU aGlzIGRvZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0byBsZXQg ImhlbHAgZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAgICAgdGhl IGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgot QEAgLTIwNTYsMTEgKzIxNTcsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUg KnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTQyLDExICsyMjA5LDEwIEBA IHByZXNlcnZlX29uZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCiAgCQkgICAgaHRhYl90IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAoVFlQRV9P QkpGSUxFICh2YWx1ZS0+dHlwZSkgPT0gb2JqZmlsZSkKQEAgLTE2MDA5LDcgKzkyMDUsNyBAQCBp bmRleCA1ODNiZTMzLi5jYjczZWRhIDEwMDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0K ICAKLUBAIC0yMDc1LDcgKzIxNzUsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVj dCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTYxLDcg KzIyMjcsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAq dmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRF R0VSOgogICAgICAgIGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFy LT51LmludGVnZXIudHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAt MTYwMTgsMTMgKzkyMTQsMTQgQEAgaW5kZXggNTgzYmUzMy4uY2I3M2VkYSAxMDA2NDQKICAgICAg ICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0zMTM3LDkgKzMy MzcsMjYgQEAgY29lcmNlX3JlZl9pZl9jb21wdXRlZCAoY29uc3Qgc3RydWN0IHZhbHVlICphcmcp CitAQCAtMzI1MywxMCArMzMxOSwyNyBAQCByZWFkanVzdF9pbmRpcmVjdF92YWx1ZV90eXBlIChz dHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGUsCiAgc3RydWN0IHZhbHVl ICoKICBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykKICB7CiAtICBzdHJ1Y3QgdHlwZSAq dmFsdWVfdHlwZV9hcmdfdG1wID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CiAr ICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZV9hcmdfdG1wOwogICAgc3RydWN0IHZhbHVlICpyZXR2 YWw7CisgICBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGU7CiAgCiArICBpZiAoVFlQRV9EWU5BTUlDICh2 YWx1ZV90eXBlIChhcmcpKSkKICsgICAgewpAQCAtMTYwNDYsNyArOTI0Myw3IEBAIGluZGV4IDU4 M2JlMzMuLmNiNzNlZGEgMTAwNjQ0CiAgICByZXR2YWwgPSBjb2VyY2VfcmVmX2lmX2NvbXB1dGVk IChhcmcpOwogICAgaWYgKHJldHZhbCkKICAgICAgcmV0dXJuIHJldHZhbDsKLUBAIC0zMjQxLDQg KzMzNTgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CitAQCAtMzM2 Myw0ICszNDQ2LDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOwogICAg YWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlvbl9jb21tYW5kLCBf KCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNvbnZlbmllbmNl IGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAsICZjbWRs aXN0KTsKQEAgLTE2MDU4LDEwICs5MjU1LDEwIEBAIGluZGV4IDU4M2JlMzMuLmNiNzNlZGEgMTAw NjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgK LWluZGV4IDQ3Mjc3NTUuLmQ4ZDIyYzggMTAwNjQ0CitpbmRleCBiNjMwZmM3Li4yZjk1ZGIyIDEw MDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92YWx1ZS5oCi1AQCAtNDg4LDYgKzQ4 OCwxMCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3Qg dHlwZSAqdHlwZSwKK0BAIC01MzMsNiArNTMzLDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZh bHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBjb25zdCBnZGJf Ynl0ZSAqZGVjYnl0ZXMpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21faGlzdG9y eV9yZWYgKGNoYXIgKiwgY2hhciAqKik7CiAgCkBAIC0xNjA3MiwxMDcgKzkyNjksMyBAQCBpbmRl eCA0NzI3NzU1Li5kOGQyMmM4IDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFs dWUgKnZhbHVlX2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAg Ci1AQCAtNzE3LDEwICs3MjEsNTIgQEAgZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqbG9va3Vw X29ubHlfaW50ZXJuYWx2YXIgKGNvbnN0IGNoYXIgKm5hbWUpOwotIAotIGV4dGVybiBzdHJ1Y3Qg aW50ZXJuYWx2YXIgKmNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7Ci0gCi0t dHlwZWRlZiBzdHJ1Y3QgdmFsdWUgKiAoKmludGVybmFsdmFyX21ha2VfdmFsdWUpIChzdHJ1Y3Qg Z2RiYXJjaCAqLAotLQkJCQkJCSAgc3RydWN0IGludGVybmFsdmFyICopOwotKy8qIEFuIGludGVy bmFsdmFyIGNhbiBiZSBkeW5hbWljYWxseSBjb21wdXRlZCBieSBzdXBwbHlpbmcgYSB2ZWN0b3Ig b2YKLSsgICBmdW5jdGlvbiBwb2ludGVycyB0byBwZXJmb3JtIHZhcmlvdXMgb3BlcmF0aW9ucy4g ICovCi0rCi0rc3RydWN0IGludGVybmFsdmFyX2Z1bmNzCi0rewotKyAgLyogQ29tcHV0ZSB0aGUg dmFsdWUgb2YgdGhlIHZhcmlhYmxlLiAgVGhlIERBVEEgYXJndW1lbnQgcGFzc2VkIHRvCi0rICAg ICB0aGUgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXJndW1lbnQgdGhhdCB3YXMgcGFzc2VkIHRvCi0r ICAgICBgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eScuICAqLwotKwotKyAgc3RydWN0IHZh bHVlICooKm1ha2VfdmFsdWUpIChzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwKLSsJCQkgICAgICAgc3Ry dWN0IGludGVybmFsdmFyICp2YXIsCi0rCQkJICAgICAgIHZvaWQgKmRhdGEpOwotKwotKyAgLyog VXBkYXRlIHRoZSBhZ2VudCBleHByZXNzaW9uIEVYUFIgd2l0aCBieXRlY29kZSB0byBjb21wdXRl IHRoZQotKyAgICAgdmFsdWUuICBWQUxVRSBpcyB0aGUgYWdlbnQgdmFsdWUgd2UgYXJlIHVwZGF0 aW5nLiAgVGhlIERBVEEKLSsgICAgIGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGlz IHRoZSBzYW1lIGFyZ3VtZW50IHRoYXQgd2FzCi0rICAgICBwYXNzZWQgdG8gYGNyZWF0ZV9pbnRl cm5hbHZhcl90eXBlX2xhenknLiAgSWYgdGhpcyBwb2ludGVyIGlzCi0rICAgICBOVUxMLCB0aGVu IHRoZSBpbnRlcm5hbHZhciBjYW5ub3QgYmUgY29tcGlsZWQgdG8gYW4gYWdlbnQKLSsgICAgIGV4 cHJlc3Npb24uICAqLwotKwotKyAgdm9pZCAoKmNvbXBpbGVfdG9fYXgpIChzdHJ1Y3QgaW50ZXJu YWx2YXIgKnZhciwKLSsJCQkgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkJIHN0cnVjdCBh eHNfdmFsdWUgKnZhbHVlLAotKwkJCSB2b2lkICpkYXRhKTsKLSsKLSsgIC8qIElmIG5vbi1OVUxM LCB0aGlzIGlzIGNhbGxlZCB0byBkZXN0cm95IERBVEEuICBUaGUgREFUQSBhcmd1bWVudAotKyAg ICAgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXJndW1lbnQgdGhhdCB3YXMg cGFzc2VkIHRvCi0rICAgICBgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eScuICAqLwotKwot KyAgdm9pZCAoKmRlc3Ryb3kpICh2b2lkICpkYXRhKTsKLSt9OwotKwotIGV4dGVybiBzdHJ1Y3Qg aW50ZXJuYWx2YXIgKgotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoY2hhciAqbmFt ZSwgaW50ZXJuYWx2YXJfbWFrZV92YWx1ZSBmdW4pOwotK2NyZWF0ZV9pbnRlcm5hbHZhcl90eXBl X2xhenkgKGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVybmFs dmFyX2Z1bmNzICpmdW5jcywKLSsJCQkgICAgICB2b2lkICpkYXRhKTsKLSsKLSsvKiBDb21waWxl IGFuIGludGVybmFsIHZhcmlhYmxlIHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICBWQVIgaXMgdGhl Ci0rICAgdmFyaWFibGUgdG8gY29tcGlsZTsgRVhQUiBhbmQgVkFMVUUgYXJlIHRoZSBhZ2VudCBl eHByZXNzaW9uIHdlIGFyZQotKyAgIHVwZGF0aW5nLiAgVGhpcyB3aWxsIHJldHVybiAwIGlmIHRo ZXJlIGlzIG5vIGtub3duIHdheSB0byBjb21waWxlCi0rICAgVkFSLCBhbmQgMSBpZiBWQVIgd2Fz IHN1Y2Nlc3NmdWxseSBjb21waWxlZC4gIEl0IG1heSBhbHNvIHRocm93IGFuCi0rICAgZXhjZXB0 aW9uIG9uIGVycm9yLiAgKi8KLSsKLStleHRlcm4gaW50IGNvbXBpbGVfaW50ZXJuYWx2YXJfdG9f YXggKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLAotKwkJCQkgICAgICBzdHJ1Y3QgYWdlbnRfZXhw ciAqZXhwciwKLSsJCQkJICAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUpOwotIAotIGV4dGVy biBzdHJ1Y3QgaW50ZXJuYWx2YXIgKmxvb2t1cF9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFt ZSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3dpbmRvd3MtdGRlcC5jIGIvZ2RiL3dpbmRvd3MtdGRl cC5jCi1pbmRleCBlMTExZDQxLi4xOGUzMTgwIDEwMDY0NAotLS0tIGEvZ2RiL3dpbmRvd3MtdGRl cC5jCi0rKysgYi9nZGIvd2luZG93cy10ZGVwLmMKLUBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzIHRsYl92YWx1ZV9mdW5jcyA9Ci0gICAgaWYgdGhlcmUn cyBubyBvYmplY3QgYXZhaWxhYmxlLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS10 bGJfbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZh ciAqdmFyKQotK3RsYl9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IGludGVybmFsdmFyICp2YXIsIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBpZiAodGFyZ2V0X2hhc19z dGFjayAmJiAhcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKSkKLSAgICAgewot QEAgLTQyNSw2ICs0MjUsMTUgQEAgaW5pdF93MzJfY29tbWFuZF9saXN0ICh2b2lkKQotICAgICB9 Ci0gfQotIAotKy8qIEltcGxlbWVudGF0aW9uIG9mIGB0bGInIHZhcmlhYmxlLiAgKi8KLSsKLStz dGF0aWMgY29uc3Qgc3RydWN0IGludGVybmFsdmFyX2Z1bmNzIHRsYl9mdW5jcyA9Ci0rewotKyAg dGxiX21ha2VfdmFsdWUsCi0rICBOVUxMLAotKyAgTlVMTAotK307Ci0rCi0gdm9pZAotIF9pbml0 aWFsaXplX3dpbmRvd3NfdGRlcCAodm9pZCkKLSB7Ci1AQCAtNDUxLDUgKzQ2MCw1IEBAIGV2ZW4g aWYgdGhlaXIgbWVhbmluZyBpcyB1bmtub3duLiIpLAotICAgICAgdmFsdWUgd2l0aCBhIHZvaWQg dHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCi0gICAgICBpc24ndCBp bml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCi0g ICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUu ICAqLwotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90bGIiLCB0bGJfbWFrZV92 YWx1ZSk7Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RsYiIsICZ0bGJfZnVu Y3MsIE5VTEwpOwotIH0KLWRpZmYgLS1naXQgYS9nZGIveGNvZmZyZWFkLmMgYi9nZGIveGNvZmZy ZWFkLmMKLWluZGV4IDFhMmJiMTQuLmQ0M2U5NDYgMTAwNjQ0Ci0tLS0gYS9nZGIveGNvZmZyZWFk LmMKLSsrKyBiL2dkYi94Y29mZnJlYWQuYwotQEAgLTMxMjMsNiArMzEyMyw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc3ltX2ZucyB4Y29mZl9zeW1fZm5zID0KLSAgIGRlZmF1bHRfc3ltZmlsZV9z ZWdtZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwotICAg YWl4X3Byb2Nlc3NfbGluZW5vcywKLSAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVs b2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KLSsgIE5VTEwsCQkJCS8qIHN5bV9wcm9iZV9mbnMg Ki8KLSAgICZwc3ltX2Z1bmN0aW9ucwotIH07Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWF0dGFjaC1m YWlsLXJlYXNvbnMtMW9mNS5wYXRjaCBiL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTFvZjUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNTQ3ZDguLjAwMDAwMDAKLS0tIGEv Z2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtMW9mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4 ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDIvbXNnMDAx ODAuaHRtbAotCi0jIyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCTIwMTIvMDIvMjUgMTk6 NTQ6NTAJMS41NTYKLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMi8wMi8yNyAx NjoxOToxOQkxLjU1NwotIyMgLTEsMyArMSw5IEBACi0rMjAxMi0wMi0yNyAgUGVkcm8gQWx2ZXMg IDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSsKLSsJUFIgc2VydmVyLzk2ODQKLSsJKiBsaW51eC1sb3cu YyAocGlkX2lzX3N0b3BwZWQpOiBOZXcuCi0rCShsaW51eF9hdHRhY2hfbHdwXzEpOiBIYW5kbGUg YXR0YWNoaW5nIHRvICdUIChzdG9wcGVkKScgcHJvY2Vzc2VzLgotKwotIDIwMTItMDItMjUgIEx1 aXMgTWFjaGFkbyAgPGxndXN0YXZvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogbWVtLWJyZWFr LmMgKGNsZWFyX2dkYl9icmVha3BvaW50X2NvbmRpdGlvbnMpOiBGaXggZGUtYWxsb2NhdGlvbgot LS0tIHNyYy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTIvMDIvMjQgMTU6MTU6NTYJMS4x OTMKLSsrKyBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLzAyLzI3IDE2OjE5OjE5 CTEuMTk0Ci1AQCAtNTk4LDYgKzU5OCwzNyBAQAotICAgcmV0dXJuIHBpZDsKLSB9Ci0gCi0rLyog RGV0ZWN0IGBUIChzdG9wcGVkKScgaW4gYC9wcm9jL1BJRC9zdGF0dXMnLgotKyAgIE90aGVyIHN0 YXRlcyBpbmNsdWRpbmcgYFQgKHRyYWNpbmcgc3RvcCknIGFyZSByZXBvcnRlZCBhcyBmYWxzZS4g ICovCi0rCi0rc3RhdGljIGludAotK3BpZF9pc19zdG9wcGVkIChwaWRfdCBwaWQpCi0rewotKyAg RklMRSAqc3RhdHVzX2ZpbGU7Ci0rICBjaGFyIGJ1ZlsxMDBdOwotKyAgaW50IHJldHZhbCA9IDA7 Ci0rCi0rICBzbnByaW50ZiAoYnVmLCBzaXplb2YgKGJ1ZiksICIvcHJvYy8lZC9zdGF0dXMiLCAo aW50KSBwaWQpOwotKyAgc3RhdHVzX2ZpbGUgPSBmb3BlbiAoYnVmLCAiciIpOwotKyAgaWYgKHN0 YXR1c19maWxlICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbnQgaGF2ZV9zdGF0ZSA9IDA7Ci0r Ci0rICAgICAgd2hpbGUgKGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQot Kwl7Ci0rCSAgaWYgKHN0cm5jbXAgKGJ1ZiwgIlN0YXRlOiIsIDYpID09IDApCi0rCSAgICB7Ci0r CSAgICAgIGhhdmVfc3RhdGUgPSAxOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAg ICAgIGlmIChoYXZlX3N0YXRlICYmIHN0cnN0ciAoYnVmLCAiVCAoc3RvcHBlZCkiKSAhPSBOVUxM KQotKwlyZXR2YWwgPSAxOwotKyAgICAgIGZjbG9zZSAoc3RhdHVzX2ZpbGUpOwotKyAgICB9Ci0r ICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAvKiBBdHRhY2ggdG8gYW4gaW5mZXJpb3IgcHJvY2Vz cy4gICovCi0gCi0gc3RhdGljIHZvaWQKLUBAIC02NDMsNiArNjc0LDMzIEBACi0gICAgICBwdHJh Y2UgY2FsbCBvbiB0aGlzIExXUC4gICovCi0gICBuZXdfbHdwLT5tdXN0X3NldF9wdHJhY2VfZmxh Z3MgPSAxOwotIAotKyAgaWYgKHBpZF9pc19zdG9wcGVkIChsd3BpZCkpCi0rICAgIHsKLSsgICAg ICBpZiAoZGVidWdfdGhyZWFkcykKLSsJZnByaW50ZiAoc3RkZXJyLAotKwkJICJBdHRhY2hlZCB0 byBhIHN0b3BwZWQgcHJvY2Vzc1xuIik7Ci0rCi0rICAgICAgLyogVGhlIHByb2Nlc3MgaXMgZGVm aW5pdGVseSBzdG9wcGVkLiAgSXQgaXMgaW4gYSBqb2IgY29udHJvbAotKwkgc3RvcCwgdW5sZXNz IHRoZSBrZXJuZWwgcHJlZGF0ZXMgdGhlIFRBU0tfU1RPUFBFRCAvCi0rCSBUQVNLX1RSQUNFRCBk aXN0aW5jdGlvbiwgaW4gd2hpY2ggY2FzZSBpdCBtaWdodCBiZSBpbiBhCi0rCSBwdHJhY2Ugc3Rv cC4gIE1ha2Ugc3VyZSBpdCBpcyBpbiBhIHB0cmFjZSBzdG9wOyBmcm9tIHRoZXJlIHdlCi0rCSBj YW4ga2lsbCBpdCwgc2lnbmFsIGl0LCBldCBjZXRlcmEuCi0rCi0rCSBGaXJzdCBtYWtlIHN1cmUg dGhlcmUgaXMgYSBwZW5kaW5nIFNJR1NUT1AuICBTaW5jZSB3ZSBhcmUKLSsJIGFscmVhZHkgYXR0 YWNoZWQsIHRoZSBwcm9jZXNzIGNhbiBub3QgdHJhbnNpdGlvbiBmcm9tIHN0b3BwZWQKLSsJIHRv IHJ1bm5pbmcgd2l0aG91dCBhIFBUUkFDRV9DT05UOyBzbyB3ZSBrbm93IHRoaXMgc2lnbmFsIHdp bGwKLSsJIGdvIGludG8gdGhlIHF1ZXVlLiAgVGhlIFNJR1NUT1AgZ2VuZXJhdGVkIGJ5IFBUUkFD RV9BVFRBQ0ggaXMKLSsJIHByb2JhYmx5IGFscmVhZHkgaW4gdGhlIHF1ZXVlICh1bmxlc3MgdGhp cyBrZXJuZWwgaXMgb2xkCi0rCSBlbm91Z2ggdG8gdXNlIFRBU0tfU1RPUFBFRCBmb3IgcHRyYWNl IHN0b3BzKTsgYnV0IHNpbmNlCi0rCSBTSUdTVE9QIGlzIG5vdCBhbiBSVCBzaWduYWwsIGl0IGNh biBvbmx5IGJlIHF1ZXVlZCBvbmNlLiAgKi8KLSsgICAgICBraWxsX2x3cCAobHdwaWQsIFNJR1NU T1ApOwotKwotKyAgICAgIC8qIEZpbmFsbHksIHJlc3VtZSB0aGUgc3RvcHBlZCBwcm9jZXNzLiAg VGhpcyB3aWxsIGRlbGl2ZXIgdGhlCi0rCSBTSUdTVE9QIChvciBhIGhpZ2hlciBwcmlvcml0eSBz aWduYWwsIGp1c3QgbGlrZSBub3JtYWwKLSsJIFBUUkFDRV9BVFRBQ0gpLCB3aGljaCB3ZSdsbCBj YXRjaCBsYXRlciBvbi4gICovCi0rICAgICAgcHRyYWNlIChQVFJBQ0VfQ09OVCwgbHdwaWQsIDAs IDApOwotKyAgICB9Ci0rCi0gICAvKiBUaGUgbmV4dCB0aW1lIHdlIHdhaXQgZm9yIHRoaXMgTFdQ IHdlJ2xsIHNlZSBhIFNJR1NUT1AgYXMgUFRSQUNFX0FUVEFDSAotICAgICAgYnJpbmdzIGl0IHRv IGEgaGFsdC4KLSAKCmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy0yb2Y1LnBh dGNoIGIvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtMm9mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggOTI1NjViOS4uMDAwMDAwMAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVh c29ucy0yb2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDIvbXNnMDAxODEuaHRtbAotCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8yNCAyMzo0ODozNwkxLjEzODY5Ci0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wMi8yNyAxNjoyMjowNgkxLjEzODcwCi0jIyAtMSwzICsxLDEzIEBACi0r MjAxMi0wMi0yNyAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSsKLSsJKiBsaW51 eC1uYXQuYyAocGlkX2lzX3N0b3BwZWQpOiBEZWxldGUsIG1vdmVkIHRvIGNvbW1vbi8uCi0rCShs aW51eF9uYXRfcG9zdF9hdHRhY2hfd2FpdCk6IEFkanVzdCB0byB1c2UKLSsJbGludXhfcHJvY19w aWRfaXNfc3RvcHBlZC4KLSsJKiBjb21tb24vbGludXgtcHJvY2ZzLmggKGxpbnV4X3Byb2NfcGlk X2lzX3N0b3BwZWQpOiBEZWNsYXJlLgotKwkqIGNvbW1vbi9saW51eC1wcm9jZnMuYyAobGludXhf cHJvY19waWRfaXNfc3RvcHBlZCk6IE5ldyBmdW5jdGlvbiwKLSsJYmFzZWQgb24gcGlkX2lzX3N0 b3BwZWQgZnJvbSBib3RoIGxpbnV4LW5hdC5jIGFuZAotKwlnZGJzZXJ2ZXIvbGludXgtbG93LmMs IGFuZCByZW5hbWVkLgotKwotIDIwMTItMDItMjQgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9A Y29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiByZW1vdGUuYyAocmVtb3RlX3dhdGNocG9pbnRfYWRk cl93aXRoaW5fcmFuZ2UpOiBOZXcgZnVuY3Rpb24uCi0tLS0gc3JjL2dkYi9saW51eC1uYXQuYwky MDEyLzAyLzE2IDIxOjA3OjIwCTEuMjM5Ci0rKysgc3JjL2dkYi9saW51eC1uYXQuYwkyMDEyLzAy LzI3IDE2OjIyOjEzCTEuMjQwCi1AQCAtMTM1NiwzNyArMTM1Niw2IEBACi0gICBkZWxldGVfbHdw IChscC0+cHRpZCk7Ci0gfQotIAotLS8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9Q SUQvc3RhdHVzJy4KLS0gICBPdGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3Ap JyBhcmUgcmVwb3J0ZWQgYXMgZmFsc2UuICAqLwotLQotLXN0YXRpYyBpbnQKLS1waWRfaXNfc3Rv cHBlZCAocGlkX3QgcGlkKQotLXsKLS0gIEZJTEUgKnN0YXR1c19maWxlOwotLSAgY2hhciBidWZb MTAwXTsKLS0gIGludCByZXR2YWwgPSAwOwotLQotLSAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChi dWYpLCAiL3Byb2MvJWQvc3RhdHVzIiwgKGludCkgcGlkKTsKLS0gIHN0YXR1c19maWxlID0gZm9w ZW4gKGJ1ZiwgInIiKTsKLS0gIGlmIChzdGF0dXNfZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAg ICAgaW50IGhhdmVfc3RhdGUgPSAwOwotLQotLSAgICAgIHdoaWxlIChmZ2V0cyAoYnVmLCBzaXpl b2YgKGJ1ZiksIHN0YXR1c19maWxlKSkKLS0JewotLQkgIGlmIChzdHJuY21wIChidWYsICJTdGF0 ZToiLCA2KSA9PSAwKQotLQkgICAgewotLQkgICAgICBoYXZlX3N0YXRlID0gMTsKLS0JICAgICAg YnJlYWs7Ci0tCSAgICB9Ci0tCX0KLS0gICAgICBpZiAoaGF2ZV9zdGF0ZSAmJiBzdHJzdHIgKGJ1 ZiwgIlQgKHN0b3BwZWQpIikgIT0gTlVMTCkKLS0JcmV0dmFsID0gMTsKLS0gICAgICBmY2xvc2Ug KHN0YXR1c19maWxlKTsKLS0gICAgfQotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0gLyogV2Fp dCBmb3IgdGhlIExXUCBzcGVjaWZpZWQgYnkgTFAsIHdoaWNoIHdlIGhhdmUganVzdCBhdHRhY2hl ZCB0by4KLSAgICBSZXR1cm5zIGEgd2FpdCBzdGF0dXMgZm9yIHRoYXQgTFdQLCB0byBjYWNoZS4g ICovCi0gCi1AQCAtMTM5Nyw3ICsxMzY2LDcgQEAKLSAgIHBpZF90IG5ld19waWQsIHBpZCA9IEdF VF9MV1AgKHB0aWQpOwotICAgaW50IHN0YXR1czsKLSAKLS0gIGlmIChwaWRfaXNfc3RvcHBlZCAo cGlkKSkKLSsgIGlmIChsaW51eF9wcm9jX3BpZF9pc19zdG9wcGVkIChwaWQpKQotICAgICB7Ci0g ICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAotLS0tIHNyYy9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIwMTIvMDEvMDQgMDg6MTc6 MTgJMS4yCi0rKysgc3JjL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmMJMjAxMi8wMi8yNyAxNjoy MjoxNAkxLjMKLUBAIC01MywzICs1MywzNCBAQAotIAotICAgcmV0dXJuIHRnaWQ7Ci0gfQotKwot Ky8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4KLSsgICBPdGhl ciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0ZWQgYXMgZmFs c2UuICAqLwotKwotK2ludAotK2xpbnV4X3Byb2NfcGlkX2lzX3N0b3BwZWQgKHBpZF90IHBpZCkK LSt7Ci0rICBGSUxFICpzdGF0dXNfZmlsZTsKLSsgIGNoYXIgYnVmWzEwMF07Ci0rICBpbnQgcmV0 dmFsID0gMDsKLSsKLSsgIHNucHJpbnRmIChidWYsIHNpemVvZiAoYnVmKSwgIi9wcm9jLyVkL3N0 YXR1cyIsIChpbnQpIHBpZCk7Ci0rICBzdGF0dXNfZmlsZSA9IGZvcGVuIChidWYsICJyIik7Ci0r ICBpZiAoc3RhdHVzX2ZpbGUgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGludCBoYXZlX3N0YXRl ID0gMDsKLSsKLSsgICAgICB3aGlsZSAoZmdldHMgKGJ1Ziwgc2l6ZW9mIChidWYpLCBzdGF0dXNf ZmlsZSkpCi0rCXsKLSsJICBpZiAoc3RybmNtcCAoYnVmLCAiU3RhdGU6IiwgNikgPT0gMCkKLSsJ ICAgIHsKLSsJICAgICAgaGF2ZV9zdGF0ZSA9IDE7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQot Kwl9Ci0rICAgICAgaWYgKGhhdmVfc3RhdGUgJiYgc3Ryc3RyIChidWYsICJUIChzdG9wcGVkKSIp ICE9IE5VTEwpCi0rCXJldHZhbCA9IDE7Ci0rICAgICAgZmNsb3NlIChzdGF0dXNfZmlsZSk7Ci0r ICAgIH0KLSsgIHJldHVybiByZXR2YWw7Ci0rfQotLS0tIHNyYy9nZGIvY29tbW9uL2xpbnV4LXBy b2Nmcy5oCTIwMTIvMDEvMDQgMDg6MTc6MTgJMS4yCi0rKysgc3JjL2dkYi9jb21tb24vbGludXgt cHJvY2ZzLmgJMjAxMi8wMi8yNyAxNjoyMjoxNQkxLjMKLUBAIC0yNiw0ICsyNiw5IEBACi0gCi0g ZXh0ZXJuIGludCBsaW51eF9wcm9jX2dldF90Z2lkIChpbnQgbHdwaWQpOwotIAotKy8qIERldGVj dCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4KLSsgICBPdGhlciBzdGF0ZXMg aW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0ZWQgYXMgZmFsc2UuICAqLwot KwotK2V4dGVybiBpbnQgbGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAocGlkX3QgcGlkKTsKLSsK LSAjZW5kaWYgLyogQ09NTU9OX0xJTlVYX1BST0NGU19IICovCi0jIyMgc3JjL2dkYi9nZGJzZXJ2 ZXIvQ2hhbmdlTG9nCTIwMTIvMDIvMjcgMTY6MTk6MTkJMS41NTcKLSMjIyBzcmMvZ2RiL2dkYnNl cnZlci9DaGFuZ2VMb2cJMjAxMi8wMi8yNyAxNjoyMjoxNQkxLjU1OAotIyMgLTEsNSArMSwxMCBA QAotIDIwMTItMDItMjcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0rCSog bGludXgtbG93LmMgKHBpZF9pc19zdG9wcGVkKTogRGVsZXRlLCBtb3ZlZCB0byBjb21tb24vLgot KwkobGludXhfYXR0YWNoX2x3cF8xKTogQWRqdXN0IHRvIHVzZSBsaW51eF9wcm9jX3BpZF9pc19z dG9wcGVkLgotKwotKzIwMTItMDItMjcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+ Ci0rCi0gCVBSIHNlcnZlci85Njg0Ci0gCSogbGludXgtbG93LmMgKHBpZF9pc19zdG9wcGVkKTog TmV3LgotIAkobGludXhfYXR0YWNoX2x3cF8xKTogSGFuZGxlIGF0dGFjaGluZyB0byAnVCAoc3Rv cHBlZCknIHByb2Nlc3Nlcy4KLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEy LzAyLzI3IDE2OjE5OjE5CTEuMTk0Ci0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJ MjAxMi8wMi8yNyAxNjoyMjoxNgkxLjE5NQotQEAgLTU5OCwzNyArNTk4LDYgQEAKLSAgIHJldHVy biBwaWQ7Ci0gfQotIAotLS8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3Rh dHVzJy4KLS0gICBPdGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUg cmVwb3J0ZWQgYXMgZmFsc2UuICAqLwotLQotLXN0YXRpYyBpbnQKLS1waWRfaXNfc3RvcHBlZCAo cGlkX3QgcGlkKQotLXsKLS0gIEZJTEUgKnN0YXR1c19maWxlOwotLSAgY2hhciBidWZbMTAwXTsK LS0gIGludCByZXR2YWwgPSAwOwotLQotLSAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChidWYpLCAi L3Byb2MvJWQvc3RhdHVzIiwgKGludCkgcGlkKTsKLS0gIHN0YXR1c19maWxlID0gZm9wZW4gKGJ1 ZiwgInIiKTsKLS0gIGlmIChzdGF0dXNfZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaW50 IGhhdmVfc3RhdGUgPSAwOwotLQotLSAgICAgIHdoaWxlIChmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1 ZiksIHN0YXR1c19maWxlKSkKLS0JewotLQkgIGlmIChzdHJuY21wIChidWYsICJTdGF0ZToiLCA2 KSA9PSAwKQotLQkgICAgewotLQkgICAgICBoYXZlX3N0YXRlID0gMTsKLS0JICAgICAgYnJlYWs7 Ci0tCSAgICB9Ci0tCX0KLS0gICAgICBpZiAoaGF2ZV9zdGF0ZSAmJiBzdHJzdHIgKGJ1ZiwgIlQg KHN0b3BwZWQpIikgIT0gTlVMTCkKLS0JcmV0dmFsID0gMTsKLS0gICAgICBmY2xvc2UgKHN0YXR1 c19maWxlKTsKLS0gICAgfQotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0gLyogQXR0YWNoIHRv IGFuIGluZmVyaW9yIHByb2Nlc3MuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtNjc0LDcgKzY0 Myw3IEBACi0gICAgICBwdHJhY2UgY2FsbCBvbiB0aGlzIExXUC4gICovCi0gICBuZXdfbHdwLT5t dXN0X3NldF9wdHJhY2VfZmxhZ3MgPSAxOwotIAotLSAgaWYgKHBpZF9pc19zdG9wcGVkIChsd3Bp ZCkpCi0rICBpZiAobGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAobHdwaWQpKQotICAgICB7Ci0g ICAgICAgaWYgKGRlYnVnX3RocmVhZHMpCi0gCWZwcmludGYgKHN0ZGVyciwKCmRpZmYgLS1naXQg YS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy0zb2Y1LnBhdGNoIGIvZ2RiLWF0dGFjaC1mYWlsLXJl YXNvbnMtM29mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE2NjE4ZS4u MDAwMDAwMAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy0zb2Y1LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNTgzICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEyLTAzL21zZzAwMTY5Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAxLzNdIGF0dGFjaC1m YWlsLXJlYXNvbnM6IFJlc2h1ZmZsZSBjb2RlCi0KLUhpLAotCi10aGlzIHBhdGNoIGRvZXMgbm90 IG1ha2Ugc2Vuc2Ugb24gaXRzIG93biBidXQgaXQgY29udGFpbnMgYWxsIHRoZQotdW5pbnRlcmVz dGluZyBjb2RlIG1vdmVzIC8gcmVjb25maWd1cmF0aW9ucy4KLQotCi1UaGFua3MsCi1KYW4KLQot Ci1nZGIvCi0yMDEyLTAzLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0KLQkqIE1ha2VmaWxlLmluIChsaW51eC1wdHJhY2Uubyk6IE5ldy4KLQkqIGNvbW1v bi9saW51eC1wcm9jZnMuYyAobGludXhfcHJvY19waWRfaXNfem9tYmllKTogTmV3LAotCWZyb20g bGludXgtbmF0LmMuCi0JKiBjb21tb24vbGludXgtcHJvY2ZzLmggKGxpbnV4X3Byb2NfcGlkX2lz X3pvbWJpZSk6IE5ldyBkZWNsYXJhdGlvbi4KLQkqIGNvbW1vbi9saW51eC1wdHJhY2UuYzogTmV3 IGZpbGUuCi0JKiBjb25maWcvYWxwaGEvYWxwaGEtbGludXgubWggKE5BVERFUEZJTEVTKTogQWRk IGxpbnV4LXB0cmFjZS5vLgotCSogY29uZmlnL2FybS9saW51eC5taDogTGlrZXdpc2UuCi0JKiBj b25maWcvaTM4Ni9saW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9saW51eDY0Lm1o OiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pYTY0L2xpbnV4Lm1oOiBMaWtld2lzZS4KLQkqIGNvbmZp Zy9tMzJyL2xpbnV4Lm1oOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9tNjhrL2xpbnV4Lm1oOiBMaWtl d2lzZS4KLQkqIGNvbmZpZy9taXBzL2xpbnV4Lm1oOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9wYS9s aW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcvcG93ZXJwYy9saW51eC5taDogTGlrZXdpc2Uu Ci0JKiBjb25maWcvcG93ZXJwYy9wcGM2NC1saW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcv cG93ZXJwYy9zcHUtbGludXgubWg6IExpa2V3aXNlLgotCSogY29uZmlnL3MzOTAvczM5MC5taDog TGlrZXdpc2UuCi0JKiBjb25maWcvc3BhcmMvbGludXgubWg6IExpa2V3aXNlLgotCSogY29uZmln L3NwYXJjL2xpbnV4NjQubWg6IExpa2V3aXNlLgotCSogY29uZmlnL3h0ZW5zYS9saW51eC5taDog TGlrZXdpc2UuCi0JKiBsaW51eC1uYXQuYyAobGludXhfbHdwX2lzX3pvbWJpZSk6IFJlbW92ZSwg bW92ZSBpdCB0bwotCWNvbW1vbi9saW51eC1wcm9jZnMuYy4KLQkod2FpdF9sd3ApOiBSZW5hbWUg bGludXhfbHdwX2lzX3pvbWJpZSB0byBsaW51eF9wcm9jX3BpZF9pc196b21iaWUuCi0KLWdkYi9n ZGJzZXJ2ZXIvCi0yMDEyLTAzLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQkqIE1ha2VmaWxlLmluIChsaW51eC1wdHJhY2Uubyk6IE5ldy4KLQkqIGNv bmZpZ3VyZS5zcnYgKGFybSotKi1saW51eCosIGJmaW4tKi0qbGludXgqLCBjcmlzdjMyLSotbGlu dXgqKQotCShjcmlzLSotbGludXgqLCBpWzM0NTY3XTg2LSotbGludXgqLCBpYTY0LSotbGludXgq LCBtMzJyKi0qLWxpbnV4KikKLQkobTY4Ki0qLWxpbnV4KiwgbTY4Ki0qLXVjbGludXgqLCBtaXBz Ki0qLWxpbnV4KiwgcG93ZXJwYyotKi1saW51eCopCi0JKHMzOTAqLSotbGludXgqLCBzaCotKi1s aW51eCosIHNwYXJjKi0qLWxpbnV4KiwgdGljNngtKi11Y2xpbnV4KQotCSh4ODZfNjQtKi1saW51 eCosIHh0ZW5zYSotKi1saW51eCopOiBBZGQgbGludXgtcHRyYWNlLm8gdG8gU1JWX1RHVE9CSgot CW9mIHRoZXNlIHRhcmdldHMuCi0JKiBsaW51eC1sb3cuYyAobGludXhfYXR0YWNoX2x3cF8xKTog UmVtb3ZlIHJlZHVuZGVudCBlbHNlIGNsYXVzZS4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEyLTAzLTA2IDA3OjM5OjQxLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL01ha2VmaWxlLmluCTIwMTItMDMtMDYgMDc6Mzk6 NTAuNzcxNzEzMTI4ICswMTAwCi1AQCAtMTk2OCw2ICsxOTY4LDEwIEBAIGxpbnV4LXByb2Nmcy5v OiAkKHNyY2RpcikvY29tbW9uL2xpbnV4LXAKLSAJJChDT01QSUxFKSAkKHNyY2RpcikvY29tbW9u L2xpbnV4LXByb2Nmcy5jCi0gCSQoUE9TVENPTVBJTEUpCi0gCi0rbGludXgtcHRyYWNlLm86ICQo c3JjZGlyKS9jb21tb24vbGludXgtcHRyYWNlLmMKLSsJJChDT01QSUxFKSAkKHNyY2RpcikvY29t bW9uL2xpbnV4LXB0cmFjZS5jCi0rCSQoUE9TVENPTVBJTEUpCi0rCi0gIwotICMgZ2RiL3R1aS8g ZGVwZW5kZW5jaWVzCi0gIwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1vbi9s aW51eC1wcm9jZnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIwMTItMDMtMDYgMDc6Mzk6NDEuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIw MTItMDMtMDYgMDc6Mzk6NTAuNzcxNzEzMTI4ICswMTAwCi1AQCAtODQsMyArODQsMzQgQEAgbGlu dXhfcHJvY19waWRfaXNfc3RvcHBlZCAocGlkX3QgcGlkKQotICAgICB9Ci0gICByZXR1cm4gcmV0 dmFsOwotIH0KLSsKLSsvKiBTZWUgbGludXgtcHJvY2ZzLmggZGVjbGFyYXRpb24uICAqLwotKwot K2ludAotK2xpbnV4X3Byb2NfcGlkX2lzX3pvbWJpZSAocGlkX3QgcGlkKQotK3sKLSsgIGNoYXIg YnVmZmVyWzEwMF07Ci0rICBGSUxFICpwcm9jZmlsZTsKLSsgIGludCByZXR2YWw7Ci0rICBpbnQg aGF2ZV9zdGF0ZTsKLSsKLSsgIHhzbnByaW50ZiAoYnVmZmVyLCBzaXplb2YgKGJ1ZmZlciksICIv cHJvYy8lZC9zdGF0dXMiLCAoaW50KSBwaWQpOwotKyAgcHJvY2ZpbGUgPSBmb3BlbiAoYnVmZmVy LCAiciIpOwotKyAgaWYgKHByb2NmaWxlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICB3YXJuaW5n IChfKCJ1bmFibGUgdG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmZmVyKTsKLSsgICAgICBy ZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaGF2ZV9zdGF0ZSA9IDA7Ci0rICB3aGlsZSAoZmdldHMg KGJ1ZmZlciwgc2l6ZW9mIChidWZmZXIpLCBwcm9jZmlsZSkgIT0gTlVMTCkKLSsgICAgaWYgKHN0 cm5jbXAgKGJ1ZmZlciwgIlN0YXRlOiIsIDYpID09IDApCi0rICAgICAgewotKwloYXZlX3N0YXRl ID0gMTsKLSsJYnJlYWs7Ci0rICAgICAgfQotKyAgcmV0dmFsID0gKGhhdmVfc3RhdGUKLSsJICAg ICYmIHN0cmNtcCAoYnVmZmVyLCAiU3RhdGU6XHRaICh6b21iaWUpXG4iKSA9PSAwKTsKLSsgIGZj bG9zZSAocHJvY2ZpbGUpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5oCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmgJMjAxMi0wMy0w NiAwNzozOTo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9j b21tb24vbGludXgtcHJvY2ZzLmgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzE3MTMxMjggKzAxMDAK LUBAIC0zMSw0ICszMSw4IEBAIGV4dGVybiBpbnQgbGludXhfcHJvY19nZXRfdGdpZCAoaW50IGx3 cGkKLSAKLSBleHRlcm4gaW50IGxpbnV4X3Byb2NfcGlkX2lzX3N0b3BwZWQgKHBpZF90IHBpZCk7 Ci0gCi0rLyogUmV0dXJuIG5vbi16ZXJvIGlmIFBJRCBpcyBhIHpvbWJpZS4gICovCi0rCi0rZXh0 ZXJuIGludCBsaW51eF9wcm9jX3BpZF9pc196b21iaWUgKHBpZF90IHBpZCk7Ci0rCi0gI2VuZGlm IC8qIENPTU1PTl9MSU5VWF9QUk9DRlNfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3MTcxMzEyOCAr MDEwMAotQEAgLTAsMCArMSwyNiBAQAotKy8qIExpbnV4LXNwZWNpZmljIHB0cmFjZSBtYW5pcHVs YXRpb24gcm91dGluZXMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmZGVmIEdEQlNFUlZF UgotKyNpbmNsdWRlICJzZXJ2ZXIuaCIKLSsjZWxzZQotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2lu Y2x1ZGUgImdkYl9zdHJpbmcuaCIKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAibGludXgtcHRyYWNl LmgiCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2FscGhhL2FscGhhLWxp bnV4Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25m aWcvYWxwaGEvYWxwaGEtbGludXgubWgJMjAxMi0wMS0xMCAxNzozMDo0NC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvYWxwaGEvYWxwaGEtbGludXgu bWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzE3MTMxMjggKzAxMDAKLUBAIC0yLDcgKzIsNyBAQAot IE5BVF9GSUxFPSBjb25maWcvbm0tbGludXguaAotIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8g YWxwaGEtbGludXgtbmF0Lm8gXAotIAlmb3JrLWNoaWxkLm8gcHJvYy1zZXJ2aWNlLm8gbGludXgt dGhyZWFkLWRiLm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8g bGludXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5v IGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3By b2Mtc2VydmljZS5saXN0Ci0gCi0gIyBUaGUgZHluYW1pY2FsbHkgbG9hZGVkIGxpYnRocmVhZF9k YiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9jb25maWcvYXJtL2xpbnV4Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9jb25maWcvYXJtL2xpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjUu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2FybS9s aW51eC5taAkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3MjcxMzEyNSArMDEwMAotQEAgLTMsNyArMyw3 IEBACi0gTkFUX0ZJTEU9IGNvbmZpZy9ubS1saW51eC5oCi0gTkFUREVQRklMRVM9IGluZi1wdHJh Y2UubyBmb3JrLWNoaWxkLm8gYXJtLWxpbnV4LW5hdC5vIFwKLSAJcHJvYy1zZXJ2aWNlLm8gbGlu dXgtdGhyZWFkLWRiLm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3Jr Lm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9y ay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIp L3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gTE9BRExJQkVTPSAtbGRsICQoUkRZTkFNSUMpCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2kzODYvbGludXgubWgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4Lm1o CTIwMTItMDMtMDYgMDc6Mzk6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzI3MTMx MjUgKzAxMDAKLUBAIC00LDcgKzQsNyBAQCBOQVRfRklMRT0gbm0tbGludXguaAotIE5BVERFUEZJ TEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwKLSAJaTM4Ni1uYXQubyBpMzg2LWxpbnV4 LW5hdC5vIFwKLSAJcHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gXAotLQlsaW51eC1u YXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgt bmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0 cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gIyBU aGUgZHluYW1pY2FsbHkgbG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9s cyBpbiB0aGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvaTM4Ni9saW51 eDY0Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25m aWcvaTM4Ni9saW51eDY0Lm1oCTIwMTItMDMtMDYgMDc6Mzk6NDEuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAkyMDEyLTAz LTA2IDA3OjM5OjUwLjc3MjcxMzEyNSArMDEwMAotQEAgLTMsNyArMyw3IEBAIE5BVERFUEZJTEVT PSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwKLSAJaTM4Ni1uYXQubyBhbWQ2NC1uYXQubyBh bWQ2NC1saW51eC1uYXQubyBcCi0gCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIFwKLSAJcHJv Yy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gbGludXgtZm9yay5vIFwKLS0JbGludXgtcHJv Y2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBOQVRfRklMRT0gbm0tbGlu dXg2NC5oCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2lhNjQvbGludXgubWgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy9pYTY0L2xpbnV4Lm1o CTIwMTItMDEtMTAgMTc6MzA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvY29uZmlnL2lhNjQvbGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzI3MTMx MjUgKzAxMDAKLUBAIC01LDcgKzUsNyBAQCBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmst Y2hpbGQubyBcCi0gCWNvcmUtcmVnc2V0Lm8gaWE2NC1saW51eC1uYXQubyBcCi0gCXByb2Mtc2Vy dmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIFwKLSAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8g bGludXgtZm9yay5vIFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGludXgt cHRyYWNlLm8KLSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSBM T0FETElCRVMgPSAtbGRsICQoUkRZTkFNSUMpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29uZmlnL20zMnIvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2NvbmZpZy9tMzJyL2xpbnV4Lm1oCTIwMTItMDEtMTAgMTc6MzA6NDQuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL20zMnIvbGlu dXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzM3MTMxMjIgKzAxMDAKLUBAIC0zLDcgKzMsNyBA QAotIE5BVF9GSUxFPSBjb25maWcvbm0tbGludXguaAotIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNl Lm8gZm9yay1jaGlsZC5vCQkJCVwKLSAJbTMyci1saW51eC1uYXQubyBwcm9jLXNlcnZpY2UubyBs aW51eC10aHJlYWQtZGIubwlcCi0tCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWZv cmsubyBsaW51eC1wcm9jZnMubwotKwlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1m b3JrLm8gbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBOQVRfQ0RFUFMgPSAkKHNyY2Rp cikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSBMT0FETElCRVM9IC1sZGwgJChSRFlOQU1JQykKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvbTY4ay9saW51eC5taAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL202OGsvbGludXgu bWgJMjAxMi0wMS0xMCAxNzozMDo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9jb25maWcvbTY4ay9saW51eC5taAkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3Mzcx MzEyMiArMDEwMAotQEAgLTQsNyArNCw3IEBAIE5BVF9GSUxFPSBjb25maWcvbm0tbGludXguaAot IE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwKLSAJbTY4a2xpbnV4LW5h dC5vIFwKLSAJcHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gXAotLQlsaW51eC1uYXQu byBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0 Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFj ZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gIyBUaGUg ZHluYW1pY2FsbHkgbG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBp biB0aGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvbWlwcy9saW51eC5t aAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL21p cHMvbGludXgubWgJMjAxMS0wOC0yNCAxNDowNzoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvbWlwcy9saW51eC5taAkyMDEyLTAzLTA2IDA3OjM5 OjUwLjc3MzcxMzEyMiArMDEwMAotQEAgLTMsNyArMyw3IEBAIE5BVF9GSUxFPSBjb25maWcvbm0t bGludXguaAotIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIG1pcHMtbGlu dXgtbmF0Lm8gXAotIAlsaW51eC10aHJlYWQtZGIubyBwcm9jLXNlcnZpY2UubyBcCi0gCWxpbnV4 LW5hdC5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBcCi0tCWxpbnV4LXByb2Nmcy5vCi0r CWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3By b2Mtc2VydmljZS5saXN0Ci0gCi0gTE9BRExJQkVTID0gLWxkbCAkKFJEWU5BTUlDKQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy9wYS9saW51eC5taAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL3BhL2xpbnV4Lm1oCTIwMTIt MDEtMTAgMTc6MzA6NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29uZmlnL3BhL2xpbnV4Lm1oCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzczNzEzMTIyICswMTAw Ci1AQCAtMyw3ICszLDcgQEAgTkFUX0ZJTEU9IGNvbmZpZy9ubS1saW51eC5oCi0gTkFUREVQRklM RVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAotIAlocHBhLWxpbnV4LW5hdC5vIHByb2Mt c2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIFwKLSAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRh Lm8gbGludXgtZm9yay5vIFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGlu dXgtcHRyYWNlLm8KLSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAK LSBMT0FETElCRVMgPSAtbGRsICQoUkRZTkFNSUMpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlnL3Bvd2VycGMvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy9wb3dlcnBjL2xpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6 MDc6MjcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln L3Bvd2VycGMvbGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzM3MTMxMjIgKzAxMDAKLUBA IC01LDcgKzUsNyBAQCBYTV9DTElCUz0KLSBOQVRfRklMRT0gY29uZmlnL25tLWxpbnV4LmgKLSBO QVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCi0gCXBwYy1saW51eC1uYXQu byBwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBcCi0tCWxpbnV4LW5hdC5vIGxpbnV4 LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBsaW51eC1wcm9jZnMubwotKwlsaW51eC1uYXQubyBsaW51 eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBO QVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSBMT0FETElCRVMgPSAt bGRsICQoUkRZTkFNSUMpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bv d2VycGMvcHBjNjQtbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL2NvbmZpZy9wb3dlcnBjL3BwYzY0LWxpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6 MjcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bv d2VycGMvcHBjNjQtbGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzQ3MTMxMTggKzAxMDAK LUBAIC01LDcgKzUsNyBAQCBYTV9DTElCUz0KLSBOQVRfRklMRT0gY29uZmlnL25tLWxpbnV4LmgK LSBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCi0gCXBwYy1saW51eC1u YXQubyBwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBcCi0tCWxpbnV4LW5hdC5vIGxp bnV4LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBsaW51eC1wcm9jZnMubwotKwlsaW51eC1uYXQubyBs aW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8K LSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSAjIFRoZSBQb3dl clBDIGhhcyBzZXZlcmUgbGltaXRhdGlvbnMgb24gVE9DIHNpemUsIGFuZCB1c2VzIHRoZW0gZXZl bgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy9wb3dlcnBjL3NwdS1saW51 eC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmln L3Bvd2VycGMvc3B1LWxpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjcuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bvd2VycGMvc3B1LWxpbnV4Lm1o CTIwMTItMDMtMDYgMDc6Mzk6NTAuNzc0NzEzMTE4ICswMTAwCi1AQCAtNCw1ICs0LDUgQEAKLSAj IFBQVSBzaWRlIG9mIHRoZSBDZWxsIEJFIGFuZCBkZWJ1Z2dpbmcgdGhlIFNQVSBzaWRlLgotIAot IE5BVERFUEZJTEVTID0gc3B1LWxpbnV4LW5hdC5vIGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8g XAotLQkgICAgICBsaW51eC1wcm9jZnMubwotKwkgICAgICBsaW51eC1wcm9jZnMubyBsaW51eC1w dHJhY2UubwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy9zMzkwL3Mz OTAubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZp Zy9zMzkwL3MzOTAubWgJMjAxMi0wMS0wNSAxODowNzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvczM5MC9zMzkwLm1oCTIwMTItMDMtMDYgMDc6 Mzk6NTAuNzc0NzEzMTE4ICswMTAwCi1AQCAtMiw2ICsyLDYgQEAKLSBOQVRfRklMRT0gY29uZmln L25tLWxpbnV4LmgKLSBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBzMzkw LW5hdC5vIFwKLSAJbGludXgtdGhyZWFkLWRiLm8gcHJvYy1zZXJ2aWNlLm8gXAotLQlsaW51eC1u YXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgt bmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0 cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gTE9BRExJ QkVTID0gLWxkbCAkKFJEWU5BTUlDKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2Nv bmZpZy9zcGFyYy9saW51eC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29uZmlnL3NwYXJjL2xpbnV4Lm1oCTIwMTItMDEtMTAgMTc6MzA6NDkuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3NwYXJjL2xpbnV4 Lm1oCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzc0NzEzMTE4ICswMTAwCi1AQCAtNCw3ICs0LDcgQEAg TkFUREVQRklMRVM9IHNwYXJjLW5hdC5vIHNwYXJjLWxpbnV4LW5hdAotIAljb3JlLXJlZ3NldC5v IGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8gXAotIAlwcm9jLXNlcnZpY2UubyBsaW51eC10aHJl YWQtZGIubyBcCi0gCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBcCi0t CWxpbnV4LXByb2Nmcy5vCi0rCWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NE RVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gIyBUaGUgZHluYW1pY2FsbHkg bG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvc3BhcmMvbGludXg2NC5taAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL3NwYXJjL2xpbnV4 NjQubWgJMjAxMi0wMS0xMCAxNzozMDo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9jb25maWcvc3BhcmMvbGludXg2NC5taAkyMDEyLTAzLTA2IDA3OjM5OjUw Ljc3NTcxMzExNCArMDEwMAotQEAgLTUsNyArNSw3IEBAIE5BVERFUEZJTEVTPSBzcGFyYy1uYXQu byBzcGFyYzY0LW5hdC5vIHMKLSAJZm9yay1jaGlsZC5vIGluZi1wdHJhY2UubyBcCi0gCXByb2Mt c2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIFwKLSAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRh Lm8gbGludXgtZm9yay5vIFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGlu dXgtcHRyYWNlLm8KLSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAK LSAjIFRoZSBkeW5hbWljYWxseSBsb2FkZWQgbGlidGhyZWFkX2RiIG5lZWRzIGFjY2VzcyB0byBz eW1ib2xzIGluIHRoZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy94dGVu c2EvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZy94dGVuc2EvbGludXgubWgJMjAxMS0wOC0yNCAxNDowNzoyNy4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcveHRlbnNhL2xpbnV4Lm1oCTIw MTItMDMtMDYgMDc6Mzk6NTAuNzc1NzEzMTE0ICswMTAwCi1AQCAtNCw3ICs0LDcgQEAgTkFUX0ZJ TEU9IGNvbmZpZy9ubS1saW51eC5oCi0gCi0gTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3Jr LWNoaWxkLm8geHRlbnNhLWxpbnV4LW5hdC5vIFwKLSAJbGludXgtdGhyZWFkLWRiLm8gcHJvYy1z ZXJ2aWNlLm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGlu dXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxp bnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mt c2VydmljZS5saXN0Ci0gCi0gTE9BRExJQkVTID0gLWxkbCAkKFJEWU5BTUlDKQotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIw MTItMDEtMDQgMDk6MTc6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzc1NzEzMTE0 ICswMTAwCi1AQCAtNDA4LDYgKzQwOCw5IEBAIHNpZ25hbHMubzogLi4vY29tbW9uL3NpZ25hbHMu YyAkKHNlcnZlcl8KLSBsaW51eC1wcm9jZnMubzogLi4vY29tbW9uL2xpbnV4LXByb2Nmcy5jICQo c2VydmVyX2gpCi0gCSQoQ0MpIC1jICQoQ1BQRkxBR1MpICQoSU5URVJOQUxfQ0ZMQUdTKSAkPCAt REdEQlNFUlZFUgotIAotK2xpbnV4LXB0cmFjZS5vOiAuLi9jb21tb24vbGludXgtcHRyYWNlLmMg JChzZXJ2ZXJfaCkKLSsJJChDQykgLWMgJChDUFBGTEFHUykgJChJTlRFUk5BTF9DRkxBR1MpICQ8 IC1ER0RCU0VSVkVSCi0rCi0gY29tbW9uLXV0aWxzLm86IC4uL2NvbW1vbi9jb21tb24tdXRpbHMu YyAkKHNlcnZlcl9oKQotIAkkKENDKSAtYyAkKENQUEZMQUdTKSAkKElOVEVSTkFMX0NGTEFHUykg JDwgLURHREJTRVJWRVIKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJzZXJ2 ZXIvY29uZmlndXJlLnNydgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYJMjAxMS0xMi0wNiAxNToxNDo0OS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJl LnNydgkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3NTcxMzExNCArMDEwMAotQEAgLTQ3LDYgKzQ3LDcg QEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCXNydl9yZWdvYmo9IiR7c3J2X3JlZ29ian0gYXJt LXdpdGgtdmZwdjMubyIKLSAJCQlzcnZfcmVnb2JqPSIke3Nydl9yZWdvYmp9IGFybS13aXRoLW5l b24ubyIKLSAJCQlzcnZfdGd0b2JqPSJsaW51eC1sb3cubyBsaW51eC1vc2RhdGEubyBsaW51eC1h cm0tbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBs aW51eC1wdHJhY2UubyIKLSAJCQlzcnZfeG1sZmlsZXM9ImFybS13aXRoLWl3bW14dC54bWwiCi0g CQkJc3J2X3htbGZpbGVzPSIke3Nydl94bWxmaWxlc30gYXJtLXdpdGgtdmZwdjIueG1sIgotIAkJ CXNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9IGFybS13aXRoLXZmcHYzLnhtbCIKLUBAIC02 OSwxNiArNzAsMTkgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCTs7Ci0gICBiZmluLSotKmxp bnV4KikJc3J2X3JlZ29iaj1yZWctYmZpbi5vCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8g bGludXgtb3NkYXRhLm8gbGludXgtYmZpbi1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZf dGd0b2JqPSIke3Nydl90Z3RvYmp9IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl9saW51eF91c3Jy ZWdzPXllcwotIAkJCXNydl9saW51eF90aHJlYWRfZGI9eWVzCi0gCQkJOzsKLSAgIGNyaXN2MzIt Ki1saW51eCopCXNydl9yZWdvYmo9cmVnLWNyaXN2MzIubwotIAkJCXNydl90Z3RvYmo9ImxpbnV4 LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWNyaXN2MzItbG93Lm8gbGludXgtcHJvY2ZzLm8i Ci0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZf bGludXhfcmVnc2V0cz15ZXMKLSAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXllcwotIAkJCTs7Ci0g ICBjcmlzLSotbGludXgqKQlzcnZfcmVnb2JqPXJlZy1jcmlzLm8KLSAJCQlzcnZfdGd0b2JqPSJs aW51eC1sb3cubyBsaW51eC1vc2RhdGEubyBsaW51eC1jcmlzLWxvdy5vIGxpbnV4LXByb2Nmcy5v IgotKwkJCXNydl90Z3RvYmo9IiR7c3J2X3RndG9ian0gbGludXgtcHRyYWNlLm8iCi0gCQkJc3J2 X2xpbnV4X3VzcnJlZ3M9eWVzCi0gCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLSAJCQk7Owot QEAgLTkzLDYgKzk3LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCSAgICBzcnZfeG1sZmls ZXM9IiR7c3J2X3htbGZpbGVzfSAkc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzIgotIAkJCWZpCi0g CQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgteDg2LWxvdy5v IGkzODYtbG93Lm8gaTM4Ny1mcC5vIGxpbnV4LXByb2Nmcy5vIgotKwkJCXNydl90Z3RvYmo9IiR7 c3J2X3RndG9ian0gbGludXgtcHRyYWNlLm8iCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi0g CQkJc3J2X2xpbnV4X3JlZ3NldHM9eWVzCi0gCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLUBA IC0xMjQsMTAgKzEyOSwxMiBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gCQkJOzsKLSAgIGlhNjQt Ki1saW51eCopCXNydl9yZWdvYmo9cmVnLWlhNjQubwotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxv dy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWlhNjQtbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJ c3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhf dXNycmVncz15ZXMKLSAJCQk7OwotICAgbTMyciotKi1saW51eCopCXNydl9yZWdvYmo9cmVnLW0z MnIubwotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LW0z MnItbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBs aW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhfdXNycmVncz15ZXMKLSAgCQkJc3J2X2xpbnV4 X3RocmVhZF9kYj15ZXMKLSAJCQk7OwotQEAgLTEzNyw2ICsxNDQsNyBAQCBjYXNlICIke3Rhcmdl dH0iIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcnZfcmVnb2JqPXJlZy1tNjhrLm8K LSAgICAgICAgICAgICAgICAgICAgICAgICBmaQotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5v IGxpbnV4LW9zZGF0YS5vIGxpbnV4LW02OGstbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2 X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhfdXNy cmVncz15ZXMKLSAJCQlzcnZfbGludXhfcmVnc2V0cz15ZXMKLSAJCQlzcnZfbGludXhfdGhyZWFk X2RiPXllcwotQEAgLTE0NywxMiArMTU1LDE0IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNydl9yZWdvYmo9cmVnLW02OGsubwotICAgICAgICAgICAg ICAgICAgICAgICAgIGZpCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRh Lm8gbGludXgtbTY4ay1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Ny dl90Z3RvYmp9IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl9saW51eF91c3JyZWdzPXllcwotIAkJ CXNydl9saW51eF9yZWdzZXRzPXllcwotIAkJCXNydl9saW51eF90aHJlYWRfZGI9eWVzCi0gCQkJ OzsKLSAgIG1pcHMqLSotbGludXgqKQlzcnZfcmVnb2JqPSJtaXBzLWxpbnV4Lm8gbWlwczY0LWxp bnV4Lm8iCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgt bWlwcy1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9 IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl94bWxmaWxlcz0ibWlwcy1saW51eC54bWwiCi0gCQkJ c3J2X3htbGZpbGVzPSIke3Nydl94bWxmaWxlc30gbWlwcy1jcHUueG1sIgotIAkJCXNydl94bWxm aWxlcz0iJHtzcnZfeG1sZmlsZXN9IG1pcHMtY3AwLnhtbCIKLUBAIC0xODEsNiArMTkxLDcgQEAg Y2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCXNydl9yZWdvYmo9IiR7c3J2X3JlZ29ian0gcG93ZXJw Yy1pc2EyMDUtYWx0aXZlYzY0bC5vIgotIAkJCXNydl9yZWdvYmo9IiR7c3J2X3JlZ29ian0gcG93 ZXJwYy1pc2EyMDUtdnN4NjRsLm8iCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgt b3NkYXRhLm8gbGludXgtcHBjLWxvdy5vIGxpbnV4LXByb2Nmcy5vIgotKwkJCXNydl90Z3RvYmo9 IiR7c3J2X3RndG9ian0gbGludXgtcHRyYWNlLm8iCi0gCQkJc3J2X3htbGZpbGVzPSJyczYwMDAv cG93ZXJwYy0zMmwueG1sIgotIAkJCXNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9IHJzNjAw MC9wb3dlcnBjLWFsdGl2ZWMzMmwueG1sIgotIAkJCXNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmls ZXN9IHJzNjAwMC9wb3dlcnBjLWNlbGwzMmwueG1sIgotQEAgLTIyMyw2ICsyMzQsNyBAQCBjYXNl ICIke3RhcmdldH0iIGluCi0gCQkJc3J2X3JlZ29iaj0iJHtzcnZfcmVnb2JqfSBzMzkweC1saW51 eDY0djEubyIKLSAJCQlzcnZfcmVnb2JqPSIke3Nydl9yZWdvYmp9IHMzOTB4LWxpbnV4NjR2Mi5v IgotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LXMzOTAt bG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51 eC1wdHJhY2UubyIKLSAJCQlzcnZfeG1sZmlsZXM9InMzOTAtbGludXgzMi54bWwiCi0gCQkJc3J2 X3htbGZpbGVzPSIke3Nydl94bWxmaWxlc30gczM5MC1saW51eDMydjEueG1sIgotIAkJCXNydl94 bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9IHMzOTAtbGludXgzMnYyLnhtbCIKLUBAIC0yNDMsMTIg KzI1NSwxNCBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gCQkJOzsKLSAgIHNoKi0qLWxpbnV4KikJ CXNydl9yZWdvYmo9cmVnLXNoLm8KLSAJCQlzcnZfdGd0b2JqPSJsaW51eC1sb3cubyBsaW51eC1v c2RhdGEubyBsaW51eC1zaC1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIk e3Nydl90Z3RvYmp9IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl9saW51eF91c3JyZWdzPXllcwot IAkJCXNydl9saW51eF9yZWdzZXRzPXllcwotIAkJCXNydl9saW51eF90aHJlYWRfZGI9eWVzCi0g CQkJOzsKLSAgIHNwYXJjKi0qLWxpbnV4KikJc3J2X3JlZ29iaj1yZWctc3BhcmM2NC5vCi0gCQkJ c3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgtc3BhcmMtbG93Lm8g bGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJh Y2UubyIKLSAJCQlzcnZfbGludXhfcmVnc2V0cz15ZXMKLSAJCQlzcnZfbGludXhfdGhyZWFkX2Ri PXllcwotIAkJCTs7Ci1AQCAtMjY1LDEyICsyNzksMTQgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgot IAkJCXNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9IHRpYzZ4LWdwLnhtbCIKLSAJCQlzcnZf eG1sZmlsZXM9IiR7c3J2X3htbGZpbGVzfSB0aWM2eC1jNnhwLnhtbCIKLSAgIAkJCXNydl90Z3Rv Ymo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LXRpYzZ4LWxvdy5vIGxpbnV4LXBy b2Nmcy5vIgotKwkJCXNydl90Z3RvYmo9IiR7c3J2X3RndG9ian0gbGludXgtcHRyYWNlLm8iCi0g CQkJc3J2X2xpbnV4X3JlZ3NldHM9eWVzCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi0gCQkJ c3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLSAJCQk7OwotICAgeDg2XzY0LSotbGludXgqKQlzcnZf cmVnb2JqPSIkc3J2X2FtZDY0X2xpbnV4X3JlZ29iaiAkc3J2X2kzODZfbGludXhfcmVnb2JqIgot IAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LXg4Ni1sb3cu byBpMzg2LWxvdy5vIGkzODctZnAubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIk e3Nydl90Z3RvYmp9IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl94bWxmaWxlcz0iJHNydl9pMzg2 X2xpbnV4X3htbGZpbGVzICRzcnZfYW1kNjRfbGludXhfeG1sZmlsZXMiCi0gCQkJc3J2X2xpbnV4 X3VzcnJlZ3M9eWVzICMgVGhpcyBpcyBmb3IgaTM4NiBwcm9ncy4KLSAJCQlzcnZfbGludXhfcmVn c2V0cz15ZXMKLUBAIC0yODUsNiArMzAxLDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAotICAg eHRlbnNhKi0qLWxpbnV4KikJc3J2X3JlZ29iaj1yZWcteHRlbnNhLm8KLSAJCQlzcnZfdGd0b2Jq PSJsaW51eC1sb3cubyBsaW51eC1vc2RhdGEubyBsaW51eC14dGVuc2EtbG93Lm8gbGludXgtcHJv Y2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJ CQlzcnZfbGludXhfcmVnc2V0cz15ZXMKLSAJCQk7OwotICAgKikJCQllY2hvICJFcnJvcjogdGFy Z2V0IG5vdCBzdXBwb3J0ZWQgYnkgZ2Ric2VydmVyLiIKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLTAzLTA2IDA3OjM5 OjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYnNlcnZl ci9saW51eC1sb3cuYwkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3NjcxMzExMSArMDEwMAotQEAgLTYz MCwxMCArNjMwLDEwIEBAIGxpbnV4X2F0dGFjaF9sd3BfMSAodW5zaWduZWQgbG9uZyBsd3BpZCwK LSAJICBmZmx1c2ggKHN0ZGVycik7Ci0gCSAgcmV0dXJuOwotIAl9Ci0tICAgICAgZWxzZQotLQkv KiBJZiB3ZSBmYWlsIHRvIGF0dGFjaCB0byBhIHByb2Nlc3MsIHJlcG9ydCBhbiBlcnJvci4gICov Ci0tCWVycm9yICgiQ2Fubm90IGF0dGFjaCB0byBsd3AgJWxkOiAlcyAoJWQpXG4iLCBsd3BpZCwK LS0JICAgICAgIHN0cmVycm9yIChlcnJubyksIGVycm5vKTsKLSsKLSsgICAgICAvKiBJZiB3ZSBm YWlsIHRvIGF0dGFjaCB0byBhIHByb2Nlc3MsIHJlcG9ydCBhbiBlcnJvci4gICovCi0rICAgICAg ZXJyb3IgKCJDYW5ub3QgYXR0YWNoIHRvIGx3cCAlbGQ6ICVzICglZClcbiIsIGx3cGlkLAotKwkg ICAgIHN0cmVycm9yIChlcnJubyksIGVycm5vKTsKLSAgICAgfQotIAotICAgaWYgKGluaXRpYWwp Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtbmF0LmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDMtMDYg MDc6Mzk6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGlu dXgtbmF0LmMJMjAxMi0wMy0wNiAwNzozOTo1MC43Nzc3MTMxMDggKzAxMDAKLUBAIC0yNDY0LDM3 ICsyNDY0LDYgQEAgbGludXhfaGFuZGxlX2V4dGVuZGVkX3dhaXQgKHN0cnVjdCBsd3BfaQotIAkJ ICBfKCJ1bmtub3duIHB0cmFjZSBldmVudCAlZCIpLCBldmVudCk7Ci0gfQotIAotLS8qIFJldHVy biBub24temVybyBpZiBMV1AgaXMgYSB6b21iaWUuICAqLwotLQotLXN0YXRpYyBpbnQKLS1saW51 eF9sd3BfaXNfem9tYmllIChsb25nIGx3cCkKLS17Ci0tICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVO XTsKLS0gIEZJTEUgKnByb2NmaWxlOwotLSAgaW50IHJldHZhbDsKLS0gIGludCBoYXZlX3N0YXRl OwotLQotLSAgeHNucHJpbnRmIChidWZmZXIsIHNpemVvZiAoYnVmZmVyKSwgIi9wcm9jLyVsZC9z dGF0dXMiLCBsd3ApOwotLSAgcHJvY2ZpbGUgPSBmb3BlbiAoYnVmZmVyLCAiciIpOwotLSAgaWYg KHByb2NmaWxlID09IE5VTEwpCi0tICAgIHsKLS0gICAgICB3YXJuaW5nIChfKCJ1bmFibGUgdG8g b3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmZmVyKTsKLS0gICAgICByZXR1cm4gMDsKLS0gICAg fQotLQotLSAgaGF2ZV9zdGF0ZSA9IDA7Ci0tICB3aGlsZSAoZmdldHMgKGJ1ZmZlciwgc2l6ZW9m IChidWZmZXIpLCBwcm9jZmlsZSkgIT0gTlVMTCkKLS0gICAgaWYgKHN0cm5jbXAgKGJ1ZmZlciwg IlN0YXRlOiIsIDYpID09IDApCi0tICAgICAgewotLQloYXZlX3N0YXRlID0gMTsKLS0JYnJlYWs7 Ci0tICAgICAgfQotLSAgcmV0dmFsID0gKGhhdmVfc3RhdGUKLS0JICAgICYmIHN0cmNtcCAoYnVm ZmVyLCAiU3RhdGU6XHRaICh6b21iaWUpXG4iKSA9PSAwKTsKLS0gIGZjbG9zZSAocHJvY2ZpbGUp OwotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0gLyogV2FpdCBmb3IgTFAgdG8gc3RvcC4gIFJl dHVybnMgdGhlIHdhaXQgc3RhdHVzLCBvciAwIGlmIHRoZSBMV1AgaGFzCi0gICAgZXhpdGVkLiAg Ki8KLSAKLUBAIC0yNTQ4LDEwICsyNTE3LDEwIEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8g KmxwKQotIAotIAkgVGhpcyBpcyByYWN5LCB3aGF0IGlmIHRoZSB0Z2wgYmVjb21lcyBhIHpvbWJp ZSByaWdodCBhZnRlciB3ZSBjaGVjaz8KLSAJIFRoZXJlZm9yZSBhbHdheXMgdXNlIFdOT0hBTkcg d2l0aCBzaWdzdXNwZW5kIC0gaXQgaXMgZXF1aXZhbGVudCB0bwotLQkgd2FpdGluZyB3YWl0cGlk IGJ1dCB0aGUgbGludXhfbHdwX2lzX3pvbWJpZSBpcyBzYWZlIHRoaXMgd2F5LiAgKi8KLSsJIHdh aXRpbmcgd2FpdHBpZCBidXQgbGludXhfcHJvY19waWRfaXNfem9tYmllIGlzIHNhZmUgdGhpcyB3 YXkuICAqLwotIAotICAgICAgIGlmIChHRVRfUElEIChscC0+cHRpZCkgPT0gR0VUX0xXUCAobHAt PnB0aWQpCi0tCSAgJiYgbGludXhfbHdwX2lzX3pvbWJpZSAoR0VUX0xXUCAobHAtPnB0aWQpKSkK LSsJICAmJiBsaW51eF9wcm9jX3BpZF9pc196b21iaWUgKEdFVF9MV1AgKGxwLT5wdGlkKSkpCi0g CXsKLSAJICB0aHJlYWRfZGVhZCA9IDE7Ci0gCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0z NDMxLDcgKzM0MDAsNyBAQCBjaGVja196b21iaWVfbGVhZGVycyAodm9pZCkKLSAJICAvKiBDaGVj ayBpZiB0aGVyZSBhcmUgb3RoZXIgdGhyZWFkcyBpbiB0aGUgZ3JvdXAsIGFzIHdlIG1heQotIAkg ICAgIGhhdmUgcmFjZWQgd2l0aCB0aGUgaW5mZXJpb3Igc2ltcGx5IGV4aXRpbmcuICAqLwotIAkg ICYmIG51bV9sd3BzIChpbmYtPnBpZCkgPiAxCi0tCSAgJiYgbGludXhfbHdwX2lzX3pvbWJpZSAo aW5mLT5waWQpKQotKwkgICYmIGxpbnV4X3Byb2NfcGlkX2lzX3pvbWJpZSAoaW5mLT5waWQpKQot IAl7Ci0gCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSAJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKCmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy00b2Y1LnBh dGNoIGIvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNG9mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNTY0ZWU3Mi4uMDAwMDAwMAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVh c29ucy00b2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAyICswLDAgQEAKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAzL21zZzAwMTcwLmh0bWwKLVN1Ympl Y3Q6IFtwYXRjaCAyLzNdIGF0dGFjaC1mYWlsLXJlYXNvbnM6IFNheSBtb3JlIHRoYW4gcHRyYWNl OiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZC4KLQotSGksCi0KLVRoZXJlIGlzIGEgY29tbW9uIHF1 ZXN0aW9uIG9uICNnZGIgYW5kIGFsc28gYWxyZWFkeSBkZXNjcmliZWQ6Ci0KLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9nZGIvd2lraS9GQVEKLTE2LiBHZXR0aW5nIGFuIGludGVybmFsIGVycm9yIG9y IG90aGVyIGVycm9yIHdoaWxlIGF0dGFjaGluZyB0byBwcm9jZXNzZXMgb24KLSAgICBHTlUvTGlu dXgKLS0+Ci0gICAgVHJ5IHNldGVuZm9yY2UgMCAoU0VMaW51eCkgb3IgZWNobyAwID4vcHJvYy9z eXMva2VybmVsL3lhbWEvcHRyYWNlX3Njb3BlCi0gICAgKHB0cmFjZSBzY29wZSkgdG8gZGlzYWJs ZSBzeXN0ZW0gc2VjdXJpdHkgcHJvdGVjdGlvbnMuIAotCi1hbmQgaGVyZSBpcyBhIHBhdGNoIHRv IGdpdmUgc29tZSBleHBsYW5hdGlvbnMuCi0KLU1vcmUgcmVhc29ucyBjYW4gYmUgZ2l2ZW4gbGF0 ZXIsIHRoaXMgaXMgYSBjb250YWluZXIgZm9yIHRoZW0gYW5kIGl0IGNvbnRhaW5zCi1zb21lIHVz ZWZ1bCBvbmVzIGFscmVhZHkuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0z MixpNjg2fS1mZWRvcmExNy1saW51eC1nbnUgYW5kIHdpdGgKLW5vbi1leHRlbmRlZCBnZGJzZXJ2 ZXIuCi0KLVRoZSB0ZXN0Y2FzZSBkb2VzIG5vdCB0ZXN0IGdkYnNlcnZlciwgc29tZWhvdyBpdCBp cyBhIGJpdCBkaWZmaWN1bHQgd2l0aG91dAotaGF2aW5nIHNoZWxsIG9uIHRhcmdldC4KLQotQXR0 YWNoaW5nIHRvIHByb2Nlc3MgMjc0ODAKLXB0cmFjZTogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQu Ci0oZ2RiKSBfCi0tPgotQXR0YWNoaW5nIHRvIHByb2Nlc3MgMjc0ODAKLXdhcm5pbmc6IHByb2Nl c3MgMjc0ODAgaXMgYWxyZWFkeSB0cmFjZWQgYnkgcHJvY2VzcyAyOTAxMQotcHRyYWNlOiBPcGVy YXRpb24gbm90IHBlcm1pdHRlZC4KLShnZGIpIF8KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIv Ci0yMDEyLTAzLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQkqIGNvbW1vbi9saW51eC1wcm9jZnMuYyAobGludXhfcHJvY19nZXRfaW50KTogTmV3LCBm cm9tCi0JbGludXhfcHJvY19nZXRfdGdpZC4KLQkobGludXhfcHJvY19nZXRfdGdpZCk6IE9ubHkg Y2FsbCBsaW51eF9wcm9jX2dldF9pbnQuCi0JKGxpbnV4X3Byb2NfZ2V0X3RyYWNlcnBpZCk6IE5l dy4KLQkobGludXhfcHJvY19waWRfaGFzX3N0YXRlKTogTmV3LCBmcm9tIGxpbnV4X3Byb2NfcGlk X2lzX3pvbWJpZS4KLQkobGludXhfcHJvY19waWRfaXNfc3RvcHBlZCwgbGludXhfcHJvY19waWRf aXNfem9tYmllKTogT25seSBjYWxsCi0JbGludXhfcHJvY19waWRfaGFzX3N0YXRlLgotCSogY29t bW9uL2xpbnV4LXByb2Nmcy5oIChsaW51eF9wcm9jX2dldF90cmFjZXJwaWQpOiBOZXcgZGVjbGFy YXRpb24uCi0JKiBjb21tb24vbGludXgtcHRyYWNlLmM6IEluY2x1ZGUgbGludXgtcHJvY2ZzLmgu Ci0JKGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MpOiBOZXcuCi0JKiBjb21tb24vbGludXgt cHRyYWNlLmggKGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MpOiBOZXcgZGVjbGFyYXRpb24u Ci0JKiBsaW51eC1uYXQuYzogSW5jbHVkZSBleGNlcHRpb25zLmggYW5kIGxpbnV4LXB0cmFjZS5o LgotCShsaW51eF9uYXRfYXR0YWNoKTogTmV3IHZhcmlhYmxlIGV4LiAgV3JhcCB0b19hdHRhY2gg YnkgVFJZX0NBVENIIGFuZAotCWNhbGwgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncy4KLQot Z2RiL2dkYnNlcnZlci8KLTIwMTItMDMtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCSogbGludXgtbG93LmMgKGxpbnV4X2F0dGFjaF9sd3BfMSk6IENh bGwgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTIt MDMtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSog Z2RiLmJhc2UvYXR0YWNoLXR3aWNlLmM6IE5ldyBmaWxlcy4KLQkqIGdkYi5iYXNlL2F0dGFjaC10 d2ljZS5leHA6IE5ldyBmaWxlcy4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2Nv bW1vbi9saW51eC1wcm9jZnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIwMTItMDMtMDYgMDc6MzQ6MDAuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xpbnV4LXByb2Nm cy5jCTIwMTItMDMtMDYgMDc6MzQ6MTcuNTg2ODE2NDQ5ICswMTAwCi1AQCAtMjgsNjcgKzI4LDU0 IEBACi0gLyogUmV0dXJuIHRoZSBUR0lEIG9mIExXUElEIGZyb20gL3Byb2MvcGlkL3N0YXR1cy4g IFJldHVybnMgLTEgaWYgbm90Ci0gICAgZm91bmQuICAqLwotIAotLWludAotLWxpbnV4X3Byb2Nf Z2V0X3RnaWQgKGludCBsd3BpZCkKLStzdGF0aWMgaW50Ci0rbGludXhfcHJvY19nZXRfaW50IChp bnQgbHdwaWQsIGNvbnN0IGNoYXIgKmZpZWxkKQotIHsKLSsgIHNpemVfdCBmaWVsZF9sZW4gPSBz dHJsZW4gKGZpZWxkKTsKLSAgIEZJTEUgKnN0YXR1c19maWxlOwotICAgY2hhciBidWZbMTAwXTsK LS0gIGludCB0Z2lkID0gLTE7Ci0rICBpbnQgcmV0dmFsID0gLTE7Ci0gCi0gICBzbnByaW50ZiAo YnVmLCBzaXplb2YgKGJ1ZiksICIvcHJvYy8lZC9zdGF0dXMiLCAoaW50KSBsd3BpZCk7Ci0gICBz dGF0dXNfZmlsZSA9IGZvcGVuIChidWYsICJyIik7Ci0tICBpZiAoc3RhdHVzX2ZpbGUgIT0gTlVM TCkKLSsgIGlmIChzdGF0dXNfZmlsZSA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgd2hpbGUgKGZn ZXRzIChidWYsIHNpemVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQotLQl7Ci0tCSAgaWYgKHN0cm5j bXAgKGJ1ZiwgIlRnaWQ6IiwgNSkgPT0gMCkKLS0JICAgIHsKLS0JICAgICAgdGdpZCA9IHN0cnRv dWwgKGJ1ZiArIHN0cmxlbiAoIlRnaWQ6IiksIE5VTEwsIDEwKTsKLS0JICAgICAgYnJlYWs7Ci0t CSAgICB9Ci0tCX0KLS0KLS0gICAgICBmY2xvc2UgKHN0YXR1c19maWxlKTsKLSsgICAgICB3YXJu aW5nIChfKCJ1bmFibGUgdG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmKTsKLSsgICAgICBy ZXR1cm4gLTE7Ci0gICAgIH0KLSAKLS0gIHJldHVybiB0Z2lkOwotKyAgd2hpbGUgKGZnZXRzIChi dWYsIHNpemVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQotKyAgICBpZiAoc3RybmNtcCAoYnVmLCBm aWVsZCwgZmllbGRfbGVuKSA9PSAwICYmIGJ1ZltmaWVsZF9sZW5dID09ICc6JykKLSsgICAgICB7 Ci0rCXJldHZhbCA9IHN0cnRvbCAoJmJ1ZltmaWVsZF9sZW4gKyAxXSwgTlVMTCwgMTApOwotKwli cmVhazsKLSsgICAgICB9Ci0rCi0rICBmY2xvc2UgKHN0YXR1c19maWxlKTsKLSsgIHJldHVybiBy ZXR2YWw7Ci0gfQotIAotLS8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3Rh dHVzJy4KLS0gICBPdGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUg cmVwb3J0ZWQgYXMgZmFsc2UuICAqLwotKy8qIFJldHVybiB0aGUgVEdJRCBvZiBMV1BJRCBmcm9t IC9wcm9jL3BpZC9zdGF0dXMuICBSZXR1cm5zIC0xIGlmIG5vdAotKyAgIGZvdW5kLiAgKi8KLSAK LSBpbnQKLS1saW51eF9wcm9jX3BpZF9pc19zdG9wcGVkIChwaWRfdCBwaWQpCi0rbGludXhfcHJv Y19nZXRfdGdpZCAoaW50IGx3cGlkKQotIHsKLS0gIEZJTEUgKnN0YXR1c19maWxlOwotLSAgY2hh ciBidWZbMTAwXTsKLS0gIGludCByZXR2YWwgPSAwOwotKyAgcmV0dXJuIGxpbnV4X3Byb2NfZ2V0 X2ludCAobHdwaWQsICJUZ2lkIik7Ci0rfQotIAotLSAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChi dWYpLCAiL3Byb2MvJWQvc3RhdHVzIiwgKGludCkgcGlkKTsKLS0gIHN0YXR1c19maWxlID0gZm9w ZW4gKGJ1ZiwgInIiKTsKLS0gIGlmIChzdGF0dXNfZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAg ICAgaW50IGhhdmVfc3RhdGUgPSAwOwotKy8qIFNlZSBsaW51eC1wcm9jZnMuaC4gICovCi0gCi0t ICAgICAgd2hpbGUgKGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQotLQl7 Ci0tCSAgaWYgKHN0cm5jbXAgKGJ1ZiwgIlN0YXRlOiIsIDYpID09IDApCi0tCSAgICB7Ci0tCSAg ICAgIGhhdmVfc3RhdGUgPSAxOwotLQkgICAgICBicmVhazsKLS0JICAgIH0KLS0JfQotLSAgICAg IGlmIChoYXZlX3N0YXRlICYmIHN0cnN0ciAoYnVmLCAiVCAoc3RvcHBlZCkiKSAhPSBOVUxMKQot LQlyZXR2YWwgPSAxOwotLSAgICAgIGZjbG9zZSAoc3RhdHVzX2ZpbGUpOwotLSAgICB9Ci0tICBy ZXR1cm4gcmV0dmFsOwotK3BpZF90Ci0rbGludXhfcHJvY19nZXRfdHJhY2VycGlkIChpbnQgbHdw aWQpCi0rewotKyAgcmV0dXJuIGxpbnV4X3Byb2NfZ2V0X2ludCAobHdwaWQsICJUcmFjZXJQaWQi KTsKLSB9Ci0gCi0tLyogU2VlIGxpbnV4LXByb2Nmcy5oIGRlY2xhcmF0aW9uLiAgKi8KLSsvKiBS ZXR1cm4gbm9uLXplcm8gaWYgJ1N0YXRlJyBvZiAvcHJvYy9QSUQvc3RhdHVzIGNvbnRhaW5zIFNU QVRFLiAgKi8KLSAKLS1pbnQKLS1saW51eF9wcm9jX3BpZF9pc196b21iaWUgKHBpZF90IHBpZCkK LStzdGF0aWMgaW50Ci0rbGludXhfcHJvY19waWRfaGFzX3N0YXRlIChwaWRfdCBwaWQsIGNvbnN0 IGNoYXIgKnN0YXRlKQotIHsKLSAgIGNoYXIgYnVmZmVyWzEwMF07Ci0gICBGSUxFICpwcm9jZmls ZTsKLUBAIC0xMTAsOCArOTcsMjQgQEAgbGludXhfcHJvY19waWRfaXNfem9tYmllIChwaWRfdCBw aWQpCi0gCWhhdmVfc3RhdGUgPSAxOwotIAlicmVhazsKLSAgICAgICB9Ci0tICByZXR2YWwgPSAo aGF2ZV9zdGF0ZQotLQkgICAgJiYgc3RyY21wIChidWZmZXIsICJTdGF0ZTpcdFogKHpvbWJpZSlc biIpID09IDApOwotKyAgcmV0dmFsID0gKGhhdmVfc3RhdGUgJiYgc3Ryc3RyIChidWZmZXIsIHN0 YXRlKSAhPSBOVUxMKTsKLSAgIGZjbG9zZSAocHJvY2ZpbGUpOwotICAgcmV0dXJuIHJldHZhbDsK LSB9Ci0rCi0rLyogRGV0ZWN0IGBUIChzdG9wcGVkKScgaW4gYC9wcm9jL1BJRC9zdGF0dXMnLgot KyAgIE90aGVyIHN0YXRlcyBpbmNsdWRpbmcgYFQgKHRyYWNpbmcgc3RvcCknIGFyZSByZXBvcnRl ZCBhcyBmYWxzZS4gICovCi0rCi0raW50Ci0rbGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAocGlk X3QgcGlkKQotK3sKLSsgIHJldHVybiBsaW51eF9wcm9jX3BpZF9oYXNfc3RhdGUgKHBpZCwgIlQg KHN0b3BwZWQpIik7Ci0rfQotKwotKy8qIFNlZSBsaW51eC1wcm9jZnMuaCBkZWNsYXJhdGlvbi4g ICovCi0rCi0raW50Ci0rbGludXhfcHJvY19waWRfaXNfem9tYmllIChwaWRfdCBwaWQpCi0rewot KyAgcmV0dXJuIGxpbnV4X3Byb2NfcGlkX2hhc19zdGF0ZSAocGlkLCAiWiAoem9tYmllKSIpOwot K30KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbW1vbi9saW51 eC1wcm9jZnMuaAkyMDEyLTAzLTA2IDA3OjM0OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1vbi9saW51eC1wcm9jZnMuaAkyMDEyLTAzLTA2IDA3OjM0 OjE3LjU4NjgxNjQ0OSArMDEwMAotQEAgLTI2LDYgKzI2LDExIEBACi0gCi0gZXh0ZXJuIGludCBs aW51eF9wcm9jX2dldF90Z2lkIChpbnQgbHdwaWQpOwotIAotKy8qIFJldHVybiB0aGUgVHJhY2Vy UGlkIG9mIExXUElEIGZyb20gL3Byb2MvcGlkL3N0YXR1cy4gIFJldHVybnMgLTEgaWYgbm90Ci0r ICAgZm91bmQuICAqLwotKwotK2V4dGVybiBwaWRfdCBsaW51eF9wcm9jX2dldF90cmFjZXJwaWQg KGludCBsd3BpZCk7Ci0rCi0gLyogRGV0ZWN0IGBUIChzdG9wcGVkKScgaW4gYC9wcm9jL1BJRC9z dGF0dXMnLgotICAgIE90aGVyIHN0YXRlcyBpbmNsdWRpbmcgYFQgKHRyYWNpbmcgc3RvcCknIGFy ZSByZXBvcnRlZCBhcyBmYWxzZS4gICovCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAxMi0wMy0wNiAwNzozNDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb21tb24vbGludXgt cHRyYWNlLmMJMjAxMi0wMy0wNiAwNzozNDoxNy41ODY4MTY0NDkgKzAxMDAKLUBAIC0yNCwzICsy NCwyMSBAQAotICNlbmRpZgotIAotICNpbmNsdWRlICJsaW51eC1wdHJhY2UuaCIKLSsjaW5jbHVk ZSAibGludXgtcHJvY2ZzLmgiCi0rCi0rLyogUHJpbnQgYWxsIHBvc3NpYmxlIHJlYXNvbnMgd2Ug Y291bGQgZmFpbCB0byBhdHRhY2ggUElELiAgKi8KLSsKLSt2b2lkCi0rbGludXhfcHRyYWNlX2F0 dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkKQotK3sKLSsgIHBpZF90IHRyYWNlcnBpZDsKLSsKLSsg IHRyYWNlcnBpZCA9IGxpbnV4X3Byb2NfZ2V0X3RyYWNlcnBpZCAocGlkKTsKLSsgIGlmICh0cmFj ZXJwaWQgPiAwKQotKyAgICB3YXJuaW5nIChfKCJwcm9jZXNzICVkIGlzIGFscmVhZHkgdHJhY2Vk IGJ5IHByb2Nlc3MgJWQiKSwgKGludCkgcGlkLAotKwkgICAgIChpbnQpIHRyYWNlcnBpZCk7Ci0r Ci0rICBpZiAobGludXhfcHJvY19waWRfaXNfem9tYmllIChwaWQpKQotKyAgICB3YXJuaW5nIChf KCJwcm9jZXNzICVkIGlzIGEgem9tYmllIC0gdGhlIHByb2Nlc3MgaGFzIGFscmVhZHkgdGVybWlu YXRlZCIpLAotKwkgICAgIChpbnQpIHBpZCk7Ci0rfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTItMDEtMDQgMDk6MTc6 MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xp bnV4LXB0cmFjZS5oCTIwMTItMDMtMDYgMDc6MzQ6MTcuNTg2ODE2NDQ5ICswMTAwCi1AQCAtNjUs NCArNjUsNiBAQAotICNkZWZpbmUgX19XQUxMICAgICAgICAgIDB4NDAwMDAwMDAgLyogV2FpdCBm b3IgYW55IGNoaWxkLiAgKi8KLSAjZW5kaWYKLSAKLStleHRlcm4gdm9pZCBsaW51eF9wdHJhY2Vf YXR0YWNoX3dhcm5pbmdzIChwaWRfdCBwaWQpOwotKwotICNlbmRpZiAvKiBDT01NT05fTElOVVhf UFRSQUNFX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2dk YnNlcnZlci9saW51eC1sb3cuYwkyMDEyLTAzLTA2IDA3OjM0OjAwLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLTAz LTA2IDA3OjM0OjE3LjU4NzgxNjQ0NiArMDEwMAotQEAgLTYzMiw2ICs2MzIsNyBAQCBsaW51eF9h dHRhY2hfbHdwXzEgKHVuc2lnbmVkIGxvbmcgbHdwaWQsCi0gCX0KLSAKLSAgICAgICAvKiBJZiB3 ZSBmYWlsIHRvIGF0dGFjaCB0byBhIHByb2Nlc3MsIHJlcG9ydCBhbiBlcnJvci4gICovCi0rICAg ICAgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyAobHdwaWQpOwotICAgICAgIGVycm9yICgi Q2Fubm90IGF0dGFjaCB0byBsd3AgJWxkOiAlcyAoJWQpXG4iLCBsd3BpZCwKLSAJICAgICBzdHJl cnJvciAoZXJybm8pLCBlcnJubyk7Ci0gICAgIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbGludXgtbmF0LmMJMjAxMi0wMy0wNiAwNzozNDowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC1uYXQuYwkyMDEyLTAzLTA2IDA3OjM0OjI5 Ljg2MDc3NTgwMyArMDEwMAotQEAgLTU5LDYgKzU5LDggQEAKLSAjaW5jbHVkZSAic29saWIuaCIK LSAjaW5jbHVkZSAibGludXgtb3NkYXRhLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIK LSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJsaW51eC1wdHJhY2UuaCIKLSAK LSAjaWZuZGVmIFNQVUZTX01BR0lDCi0gI2RlZmluZSBTUFVGU19NQUdJQyAweDIzYzliNjRlCi1A QCAtMTYxMywxMSArMTYxNSwyMiBAQCBsaW51eF9uYXRfYXR0YWNoIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzCi0gICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotICAgaW50IHN0YXR1czsKLSAgIHB0aWRf dCBwdGlkOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7Ci0gCi0gICAvKiBN YWtlIHN1cmUgd2UgcmVwb3J0IGFsbCBzaWduYWxzIGR1cmluZyBhdHRhY2guICAqLwotICAgbGlu dXhfbmF0X3Bhc3Nfc2lnbmFscyAoMCwgTlVMTCk7Ci0gCi0tICBsaW51eF9vcHMtPnRvX2F0dGFj aCAob3BzLCBhcmdzLCBmcm9tX3R0eSk7Ci0rICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19F UlJPUikKLSsgICAgewotKyAgICAgIGxpbnV4X29wcy0+dG9fYXR0YWNoIChvcHMsIGFyZ3MsIGZy b21fdHR5KTsKLSsgICAgfQotKyAgaWYgKGV4LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBw aWRfdCBwaWQgPSBwYXJzZV9waWRfdG9fYXR0YWNoIChhcmdzKTsKLSsKLSsgICAgICBsaW51eF9w dHJhY2VfYXR0YWNoX3dhcm5pbmdzIChwaWQpOwotKyAgICAgIHRocm93X2V4Y2VwdGlvbiAoZXgp OwotKyAgICB9Ci0gCi0gICAvKiBUaGUgcHRyYWNlIGJhc2UgdGFyZ2V0IGFkZHMgdGhlIG1haW4g dGhyZWFkIHdpdGggKHBpZCwwLDApCi0gICAgICBmb3JtYXQuICBEZWNvcmF0ZSBpdCB3aXRoIGx3 cCBpbmZvLiAgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYXR0YWNoLXR3aWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLXR3aWNlLmMJMjAxMi0wMy0wNiAwNzozNDoxNy41ODk4 MTY0NDAgKzAxMDAKLUBAIC0wLDAgKzEsNDIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExLTIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5p c3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsK LStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGxvbmcgbDsKLSsKLSsgIHN3aXRjaCAoZm9yayAo KSkKLSsgIHsKLSsgICAgY2FzZSAtMToKLSsgICAgICBwZXJyb3IgKCJmb3JrIik7Ci0rICAgICAg ZXhpdCAoMSk7Ci0rICAgIGNhc2UgMDoKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgcHRyYWNl IChQVFJBQ0VfQVRUQUNILCBnZXRwcGlkICgpLCBOVUxMLCBOVUxMKTsKLSsgICAgICBpZiAoZXJy bm8gIT0gMCkKLSsJcGVycm9yICgiUFRSQUNFX0FUVEFDSCIpOwotKyAgICAgIGJyZWFrOwotKyAg fQotKyAgc2xlZXAgKDYwMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC10d2ljZS5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLXR3aWNl LmV4cAkyMDEyLTAzLTA2IDA3OjM0OjE3LjU4OTgxNjQ0MCArMDEwMAotQEAgLTAsMCArMSw1MiBA QAotKyMgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBNYW5pcHVsYXRpb24gd2l0 aCBQSUQgb24gdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWQuCi0raWYgW2lzX3JlbW90ZSB0YXJnZXRd IHRoZW4gewotKyAgICByZXR1cm4gMAotK30KLSsKLStzZXQgdGVzdGZpbGUgYXR0YWNoLXR3aWNl Ci0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAkZXhlY3V0YWJsZV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQg dGVzdHBpZCBbZXZhbCBleGVjICRiaW5maWxlICZdCi0rZXhlYyBzbGVlcCAyCi0rCi0rc2V0IHBh cmVudHBpZCAwCi0rCi0rc2V0IHRlc3QgImF0dGFjaCIKLStnZGJfdGVzdF9tdWx0aXBsZSAiYXR0 YWNoICR0ZXN0cGlkIiAkdGVzdCB7Ci0rICAgIC1yZSAiQXR0YWNoaW5nIHRvIHByb2dyYW06IFxb XlxyXG5cXSosIHByb2Nlc3MgJHRlc3RwaWRcclxuLip3YXJuaW5nOiBwcm9jZXNzICR0ZXN0cGlk IGlzIGFscmVhZHkgdHJhY2VkIGJ5IHByb2Nlc3MgKFxbMC05XF0rKVxyXG4uKnB0cmFjZTogT3Bl cmF0aW9uIG5vdCBwZXJtaXR0ZWRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwlzZXQgcGFyZW50 cGlkICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJl ICJBdHRhY2hpbmcgdG8gcHJvZ3JhbTogXFteXHJcblxdKiwgcHJvY2VzcyAkdGVzdHBpZFxyXG4u KnB0cmFjZTogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewot KwlmYWlsICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgewotKwl4 ZmFpbCAkdGVzdAotKyAgICB9Ci0rfQotKwotK2V2YWwgZXhlYyBwcyB4ZncKLStpZiB7JHBhcmVu dHBpZCAhPSAwfSB7Ci0rICBldmFsIGV4ZWMga2lsbCAtOSAkcGFyZW50cGlkCi0rfQotK2V2YWwg ZXhlYyBraWxsIC05ICR0ZXN0cGlkCgpkaWZmIC0tZ2l0IGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNv bnMtNW9mNS5wYXRjaCBiL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKaW5kZXgg YWE0YTQ0Zi4uYmY5NWU3YyAxMDA2NDQKLS0tIGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9m NS5wYXRjaAorKysgYi9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCkBAIC0zNyw1 MyArMzcsNjAgQEAgZ2RiL2dkYnNlcnZlci8KIAkobGludXhfY3JlYXRlX2luZmVyaW9yLCBsaW51 eF90cmFjZWZvcmtfY2hpbGQpOiBDYWxsIGl0IGluc3RlYWQgb2YKIAlkaXJlY3QgcHRyYWNlLgog Ci0tLS0gYS9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCi0rKysgYi9nZGIvY29tbW9uL2xpbnV4 LXB0cmFjZS5jCi1AQCAtMjYsNiArMjYsMTAgQEAKLSAjaW5jbHVkZSAibGludXgtcHRyYWNlLmgi CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9jb21tb24vbGludXgt cHRyYWNlLmMJMjAxMi0wMy0xMyAxNjowMjoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAxMi0wNi0wMiAyMDozNzo1 My45MzM4Mjg1NzAgKzAyMDAKK0BAIC0yNyw2ICsyNywxMCBAQAogICNpbmNsdWRlICJsaW51eC1w cm9jZnMuaCIKKyAjaW5jbHVkZSAiYnVmZmVyLmgiCiAgCiArI2lmZGVmIEhBVkVfU0VMSU5VWF9T RUxJTlVYX0gKICsjIGluY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgogKyNlbmRpZiAvKiBIQVZF X1NFTElOVVhfU0VMSU5VWF9IICovCiArCi0gLyogUHJpbnQgYWxsIHBvc3NpYmxlIHJlYXNvbnMg d2UgY291bGQgZmFpbCB0byBhdHRhY2ggUElELiAgKi8KLSAKLSB2b2lkCi1AQCAtNDEsNCArNDUs MjEgQEAgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkKQotICAgaWYgKGxp bnV4X3Byb2NfcGlkX2lzX3pvbWJpZSAocGlkKSkKLSAgICAgd2FybmluZyAoXygicHJvY2VzcyAl ZCBpcyBhIHpvbWJpZSAtIHRoZSBwcm9jZXNzIGhhcyBhbHJlYWR5IHRlcm1pbmF0ZWQiKSwKLSAJ ICAgICAoaW50KSBwaWQpOworIC8qIEZpbmQgYWxsIHBvc3NpYmxlIHJlYXNvbnMgd2UgY291bGQg ZmFpbCB0byBhdHRhY2ggUElEIGFuZCBhcHBlbmQgdGhlc2UKKyAgICBuZXdsaW5lIHRlcm1pbmF0 ZWQgcmVhc29uIHN0cmluZ3MgdG8gaW5pdGlhbGl6ZWQgQlVGRkVSLiAgJ1wwJyB0ZXJtaW5hdGlv bgorICAgIG9mIEJVRkZFUiBtdXN0IGJlIGRvbmUgYnkgdGhlIGNhbGxlci4gICovCitAQCAtNDYs NCArNTAsMjIgQEAgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkLAorICAg ICBidWZmZXJfeG1sX3ByaW50ZiAoYnVmZmVyLCBfKCJ3YXJuaW5nOiBwcm9jZXNzICVkIGlzIGEg em9tYmllICIKKyAJCQkJICItIHRoZSBwcm9jZXNzIGhhcyBhbHJlYWR5IHRlcm1pbmF0ZWRcbiIp LAorIAkJICAgICAgIChpbnQpIHBpZCk7CiArCi0rICBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5p bmdzICgpOworKyAgbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoYnVmZmVyKTsKICt9CiAr CiArLyogUHJpbnQgYWxsIHBvc3NpYmxlIHJlYXNvbnMgd2UgY291bGQgZmFpbCB0byBjcmVhdGUg YSB0cmFjZWQgcHJvY2Vzcy4gICovCiArCiArdm9pZAotK2xpbnV4X3B0cmFjZV9jcmVhdGVfd2Fy bmluZ3MgKHZvaWQpCisrbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZl ciAqYnVmZmVyKQogK3sKICsjaWZkZWYgSEFWRV9MSUJTRUxJTlVYCiArICAvKiAtMSBpcyByZXR1 cm5lZCBmb3IgZXJyb3JzLCAwIGlmIGl0IGhhcyBubyBlZmZlY3QsIDEgaWYgUFRSQUNFX0FUVEFD SCBpcwogKyAgICAgZm9yYmlkZGVuLiAgKi8KICsgIGlmIChzZWN1cml0eV9nZXRfYm9vbGVhbl9h Y3RpdmUgKCJkZW55X3B0cmFjZSIpID09IDEpCi0rICAgIHdhcm5pbmcgKF8oInRoZSBTRUxpbnV4 IGJvb2xlYW4gJ2RlbnlfcHRyYWNlJyBpcyBlbmFibGVkLCAiCi0rCSAgICAgICAieW91IGNhbiBk aXNhYmxlIHRoaXMgcHJvY2VzcyBhdHRhY2ggcHJvdGVjdGlvbiBieTogIgotKwkgICAgICAgIihn ZGIpIHNoZWxsIHN1ZG8gc2V0c2Vib29sIGRlbnlfcHRyYWNlPTAiKSk7CisrICAgIGJ1ZmZlcl94 bWxfcHJpbnRmIChidWZmZXIsCisrCQkgICAgICAgXygidGhlIFNFTGludXggYm9vbGVhbiAnZGVu eV9wdHJhY2UnIGlzIGVuYWJsZWQsICIKKysJCQkgInlvdSBjYW4gZGlzYWJsZSB0aGlzIHByb2Nl c3MgYXR0YWNoIHByb3RlY3Rpb24gYnk6ICIKKysJCQkgIihnZGIpIHNoZWxsIHN1ZG8gc2V0c2Vi b29sIGRlbnlfcHRyYWNlPTAiKSk7CiArI2VuZGlmIC8qIEhBVkVfTElCU0VMSU5VWCAqLwogIH0K LS0tLSBhL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgKLSsrKyBiL2dkYi9jb21tb24vbGludXgt cHRyYWNlLmgKLUBAIC02Niw1ICs2Niw2IEBACitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDYwMi5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxMi0wMy0xMyAxNjowMjoyMy4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb21tb24vbGludXgt cHRyYWNlLmgJMjAxMi0wNi0wMiAyMDozNzo0Ni41NjU4MzE5NTYgKzAyMDAKK0BAIC02OCw1ICs2 OCw2IEBAIHN0cnVjdCBidWZmZXI7CiAgI2VuZGlmCiAgCi0gZXh0ZXJuIHZvaWQgbGludXhfcHRy YWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkKTsKLStleHRlcm4gdm9pZCBsaW51eF9wdHJh Y2VfY3JlYXRlX3dhcm5pbmdzICh2b2lkKTsKKyBleHRlcm4gdm9pZCBsaW51eF9wdHJhY2VfYXR0 YWNoX3dhcm5pbmdzIChwaWRfdCBwaWQsIHN0cnVjdCBidWZmZXIgKmJ1ZmZlcik7CisrZXh0ZXJu IHZvaWQgbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVy KTsKICAKICAjZW5kaWYgLyogQ09NTU9OX0xJTlVYX1BUUkFDRV9IICovCi0tLS0gYS9nZGIvY29u ZmlndXJlLmFjCi0rKysgYi9nZGIvY29uZmlndXJlLmFjCi1AQCAtMTc0OCw2ICsxNzQ4LDEwIEBA IHRoZW4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWd1cmUuYWMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEy LTA2LTAyIDIwOjA1OjA4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA2LTAyIDIwOjM1OjA2LjM3OTc5ODcyNiArMDIwMAorQEAg LTIwMDIsNiArMjAwMiwxMCBAQCB0aGVuCiAgCSAgICAgIFtEZWZpbmUgaWYgeW91IHN1cHBvcnQg dGhlIHBlcnNvbmFsaXR5IHN5c2NhbGwuXSkKICBmaQogIApAQCAtOTQsOSArMTAxLDExIEBAIGdk Yi9nZGJzZXJ2ZXIvCiAgZG5sIEhhbmRsZSBvcHRpb25hbCBmZWF0dXJlcyB0aGF0IGNhbiBiZSBl bmFibGVkLgogIAogICMgU3VwcG9ydCBmb3IgLS13aXRoLXN5c3Jvb3QgaXMgYSBjb3B5IG9mIEdE Ql9BQ19XSVRIX0RJUiwKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCi0rKysgYi9n ZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwotQEAgLTQxMSw2ICs0MTEsMTAgQEAgaWYgJHdhbnRf aXBhIDsgdGhlbgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnNlcnZlci9jb25m aWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2dk YnNlcnZlci9jb25maWd1cmUuYWMJMjAxMi0wNC0xOSAyMTozNDo1MS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTIt MDYtMDIgMjA6MzU6MDYuNDA4Nzk3NjYzICswMjAwCitAQCAtNDM4LDYgKzQzOCwxMCBAQCBpZiAk d2FudF9pcGEgOyB0aGVuCiAgICAgZmkKICBmaQogIApAQCAtMTA3LDkgKzExNiwxMSBAQCBnZGIv Z2Ric2VydmVyLwogIEFDX1NVQlNUKEdEQlNFUlZFUl9ERVBGSUxFUykKICBBQ19TVUJTVChHREJT RVJWRVJfTElCUykKICBBQ19TVUJTVChVU0VfVEhSRUFEX0RCKQotLS0tIGEvZ2RiL2dkYnNlcnZl ci9saW51eC1sb3cuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotQEAgLTU1MCw2 ICs1NTAsMjUgQEAgYWRkX2x3cCAocHRpZF90IHB0aWQpCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMi0wNS0zMCAyMTo1 MTozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9nZGJzZXJ2 ZXIvbGludXgtbG93LmMJMjAxMi0wNi0wMiAyMDozOTo0OS44ODY3ODUzNTUgKzAyMDAKK0BAIC02 MDEsNiArNjAxLDI4IEBAIGFkZF9sd3AgKHB0aWRfdCBwdGlkKQogICAgcmV0dXJuIGx3cDsKICB9 CiAgCkBAIC0xMTksMTUgKzEzMCwxOCBAQCBnZGIvZ2Ric2VydmVyLwogK2xpbnV4X3RyYWNlbWUg KGNvbnN0IGNoYXIgKnByb2dyYW0pCiArewogKyAgaW50IHNhdmVfZXJybm87CisrICBzdHJ1Y3Qg YnVmZmVyIGJ1ZmZlcjsKICsKICsgIGVycm5vID0gMDsKICsgIGlmIChwdHJhY2UgKFBUUkFDRV9U UkFDRU1FLCAwLCBOVUxMLCBOVUxMKSA9PSAwKQogKyAgICByZXR1cm47CiArCiArICBzYXZlX2Vy cm5vID0gZXJybm87Ci0rICBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgpOwotKyAgZnBy aW50ZiAoc3RkZXJyLCBfKCJDYW5ub3QgdHJhY2UgY3JlYXRlZCBwcm9jZXNzICVzOiAlcy5cbiIp LCBwcm9ncmFtLAotKwkgICBzdHJlcnJvciAoc2F2ZV9lcnJubykpOworKyAgYnVmZmVyX2luaXQg KCZidWZmZXIpOworKyAgbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoJmJ1ZmZlcik7Cisr ICBidWZmZXJfZ3Jvd19zdHIwICgmYnVmZmVyLCAiIik7CisrICBmcHJpbnRmIChzdGRlcnIsIF8o IiVzQ2Fubm90IHRyYWNlIGNyZWF0ZWQgcHJvY2VzcyAlczogJXMuXG4iKSwKKysJICAgYnVmZmVy X2ZpbmlzaCAoJmJ1ZmZlciksIHByb2dyYW0sIHN0cmVycm9yIChzYXZlX2Vycm5vKSk7CiArICBm Zmx1c2ggKHN0ZGVycik7CiArICBfZXhpdCAoMDE3Nyk7CiArfQpAQCAtMTM1LDcgKzE0OSw3IEBA IGdkYi9nZGJzZXJ2ZXIvCiAgLyogU3RhcnQgYW4gaW5mZXJpb3IgcHJvY2VzcyBhbmQgcmV0dXJu cyBpdHMgcGlkLgogICAgIEFMTEFSR1MgaXMgYSB2ZWN0b3Igb2YgcHJvZ3JhbS1uYW1lIGFuZCBh cmdzLiAqLwogIAotQEAgLTU5MCw3ICs2MDksNyBAQCBsaW51eF9jcmVhdGVfaW5mZXJpb3IgKGNo YXIgKnByb2dyYW0sIGNoYXIgKiphbGxhcmdzKQorQEAgLTY0MSw3ICs2NjMsNyBAQCBsaW51eF9j cmVhdGVfaW5mZXJpb3IgKGNoYXIgKnByb2dyYW0sIGNoCiAgCiAgICBpZiAocGlkID09IDApCiAg ICAgIHsKQEAgLTE0NCw3ICsxNTgsNyBAQCBnZGIvZ2Ric2VydmVyLwogIAogICNpZm5kZWYgX19B TkRST0lEX18gLyogQmlvbmljIGRvZXNuJ3QgdXNlIFNJR1JUTUlOIHRoZSB3YXkgZ2xpYmMgZG9l cy4gICovCiAgICAgICAgc2lnbmFsIChfX1NJR1JUTUlOICsgMSwgU0lHX0RGTCk7Ci1AQCAtNDM4 Niw3ICs0NDA1LDcgQEAgbGludXhfdHJhY2Vmb3JrX2dyYW5kY2hpbGQgKHZvaWQgKmFyZykKK0BA IC00NTY3LDcgKzQ1ODksNyBAQCBsaW51eF90cmFjZWZvcmtfZ3JhbmRjaGlsZCAodm9pZCAqYXJn KQogIHN0YXRpYyBpbnQKICBsaW51eF90cmFjZWZvcmtfY2hpbGQgKHZvaWQgKmFyZykKICB7CkBA IC0xNTMsOCArMTY3LDEwIEBAIGdkYi9nZGJzZXJ2ZXIvCiAgICBraWxsIChnZXRwaWQgKCksIFNJ R1NUT1ApOwogIAogICNpZiAhKGRlZmluZWQoX19VQ0xJQkNfXykgJiYgZGVmaW5lZChIQVNfTk9N TVUpKQotLS0tIGEvZ2RiL2luZi1wdHJhY2UuYwotKysrIGIvZ2RiL2luZi1wdHJhY2UuYworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2luZi1wdHJhY2UuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTItMDUtMjQgMTg6 NTE6MzQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaW5mLXB0 cmFjZS5jCTIwMTItMDYtMDIgMjA6MzU6MDYuNDI4Nzk3MzExICswMjAwCiBAQCAtMTA1LDcgKzEw NSwxNSBAQCBzdGF0aWMgdm9pZAogIGluZl9wdHJhY2VfbWUgKHZvaWQpCiAgewpAQCAtMTcxLDkg KzE4NywxMSBAQCBnZGIvZ2Ric2VydmVyLwogIH0KICAKICAvKiBTdGFydCBhIG5ldyBpbmZlcmlv ciBVbml4IGNoaWxkIHByb2Nlc3MuICBFWEVDX0ZJTEUgaXMgdGhlIGZpbGUgdG8KLS0tLSBhL2dk Yi9saW51eC1uYXQuYwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtMTU3MCw2ICsxNTcwLDcg QEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMi0wNi0wMiAyMDow MTozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1u YXQuYwkyMDEyLTA2LTAyIDIwOjQxOjE4LjEwMTc1MTE4NiArMDIwMAorQEAgLTE1NzIsNiArMTU3 Miw3IEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKICAjaWZkZWYg SEFWRV9QRVJTT05BTElUWQogICAgaW50IHBlcnNvbmFsaXR5X29yaWcgPSAwLCBwZXJzb25hbGl0 eV9zZXQgPSAwOwogICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCkBAIC0xODEsNyArMTk5 LDcgQEAgZ2RiL2dkYnNlcnZlci8KICAKICAgIC8qIFRoZSBmb3JrX2NoaWxkIG1lY2hhbmlzbSBp cyBzeW5jaHJvbm91cyBhbmQgY2FsbHMgdGFyZ2V0X3dhaXQsIHNvCiAgICAgICB3ZSBoYXZlIHRv IG1hc2sgdGhlIGFzeW5jIG1vZGUuICAqLwotQEAgLTE1OTQsNyArMTU5NSwxMCBAQCBsaW51eF9u YXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorQEAgLTE1OTYsNyAr MTU5NywxMCBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CiAgICAv KiBNYWtlIHN1cmUgd2UgcmVwb3J0IGFsbCBzaWduYWxzIGR1cmluZyBzdGFydHVwLiAgKi8KICAg IGxpbnV4X25hdF9wYXNzX3NpZ25hbHMgKDAsIE5VTEwpOwogIApAQCAtMTkzLDE3ICsyMTEsMjgg QEAgZ2RiL2dkYnNlcnZlci8KICAKICAjaWZkZWYgSEFWRV9QRVJTT05BTElUWQogICAgaWYgKHBl cnNvbmFsaXR5X3NldCkKLUBAIC0xNjA2LDYgKzE2MTAsMTIgQEAgbGludXhfbmF0X2NyZWF0ZV9p bmZlcmlvciAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKK0BAIC0xNjA4LDYgKzE2MTIsMjQgQEAg bGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldAogIAkJIHNhZmVfc3RyZXJy b3IgKGVycm5vKSk7CiAgICAgIH0KICAjZW5kaWYgLyogSEFWRV9QRVJTT05BTElUWSAqLwogKwog KyAgaWYgKGV4LnJlYXNvbiA8IDApCiArICAgIHsKLSsgICAgICBsaW51eF9wdHJhY2VfY3JlYXRl X3dhcm5pbmdzICgpOwotKyAgICAgIHRocm93X2V4Y2VwdGlvbiAoZXgpOworKyAgICAgIHN0cnVj dCBidWZmZXIgYnVmZmVyOworKyAgICAgIGNoYXIgKm1lc3NhZ2UsICpidWZmZXJfczsKKysKKysg ICAgICBtZXNzYWdlID0geHN0cmR1cCAoZXgubWVzc2FnZSk7CisrICAgICAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgbWVzc2FnZSk7CisrCisrICAgICAgYnVmZmVyX2luaXQgKCZidWZmZXIpOworKyAg ICAgIGxpbnV4X3B0cmFjZV9jcmVhdGVfd2FybmluZ3MgKCZidWZmZXIpOworKworKyAgICAgIGJ1 ZmZlcl9ncm93X3N0cjAgKCZidWZmZXIsICIiKTsKKysgICAgICBidWZmZXJfcyA9IGJ1ZmZlcl9m aW5pc2ggKCZidWZmZXIpOworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1ZmZlcl9zKTsK KysKKysgICAgICB0aHJvd19lcnJvciAoZXguZXJyb3IsICIlcyVzIiwgYnVmZmVyX3MsIG1lc3Nh Z2UpOwogKyAgICB9CiAgfQogIAogIHN0YXRpYyB2b2lkCi0KCmRpZmYgLS1naXQgYS9nZGItYXR0 YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNoIGIvZ2RiLWF0dGFjaC1mYWlsLXJl YXNvbnMtNW9mNWNvbmZpZ3VyZS5wYXRjaAppbmRleCBlYTFiM2ZjLi42MDk4NjQ1IDEwMDY0NAot LS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNoCisrKyBiL2dk Yi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKQEAgLTEsMTYgKzEsMTgg QEAKLS0tLSAxL2dkYi9jb25maWcuaW4JMjAxMi0wMy0wOSAxODo0MDoyOC4wMDE4NzEwMjMgKzAx MDAKLSsrKyAuL2dkYi9jb25maWcuaW4JMjAxMi0wMy0wOSAxODo0MTo0Ni41NTI2MjExMTMgKzAx MDAKLUBAIC0yNDUsNiArMjQ1LDkgQEAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9j b25maWcuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2Nv bmZpZy5pbgkyMDEyLTA2LTAyIDIxOjQ5OjI2LjE0NzM5OTIzMiArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2NvbmZpZy5pbgkyMDEyLTA2LTAyIDIxOjQ5OjI3LjIwNjM5ODg0NSAr MDIwMAorQEAgLTIyMiw2ICsyMjIsOSBAQAogIC8qIERlZmluZSBpZiBsaWJycG0gbGlicmFyeSBp cyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlJQTQogIAogKy8qIERlZmluZSB0byAx IGlmIHlvdSBoYXZlIHRoZSBgc2VsaW51eCcgbGlicmFyeSAoLWxzZWxpbnV4KS4gKi8KICsjdW5k ZWYgSEFWRV9MSUJTRUxJTlVYCiArCi0gLyogRGVmaW5lIGlmIGxpYnVud2luZCBsaWJyYXJ5IGlz IGJlaW5nIHVzZWQuICovCi0gI3VuZGVmIEhBVkVfTElCVU5XSU5ECisgLyogRGVmaW5lIHRvIDEg aWYgeW91IGhhdmUgdGhlIDxsaWJ1bndpbmQtaWE2NC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5k ZWYgSEFWRV9MSUJVTldJTkRfSUE2NF9ICiAgCi1AQCAtNDgzLDYgKzQ4Niw5IEBACitAQCAtMzYz LDYgKzM2Niw5IEBACiAgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzYnJrJyBmdW5j dGlvbi4gKi8KICAjdW5kZWYgSEFWRV9TQlJLCiAgCkBAIC0yMCw5ICsyMiwxMSBAQAogIC8qIERl ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0bG9jYWxlJyBmdW5jdGlvbi4gKi8KICAjdW5k ZWYgSEFWRV9TRVRMT0NBTEUKICAKLS0tLSAxL2dkYi9jb25maWd1cmUJMjAxMi0wMy0wOSAxODo0 MDoyOC4xODM4NzA0NDMgKzAxMDAKLSsrKyAuL2dkYi9jb25maWd1cmUJMjAxMi0wMy0wOSAxODo0 MTo0NS43ODM2MjM1NTkgKzAxMDAKLUBAIC0xNTU1Nyw2ICsxNTU1Nyw2NCBAQCAkYXNfZWNobyAi I2RlZmluZSBIQVZFX1BFUlNPTkFMSVRZIDEiID4+CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi9jb25maWd1cmUJMjAxMi0wNi0wMiAyMTo0OToyNy4xMzkzOTg4NjkgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWd1cmUJMjAxMi0wNi0wMiAyMTo0OTo1MC44OTAz OTAxNzkgKzAyMDAKK0BAIC0xMjc0NSw2ICsxMjc0NSw2NCBAQCAkYXNfZWNobyAiI2RlZmluZSBI QVZFX1BFUlNPTkFMSVRZIDEiID4+CiAgCiAgZmkKICAKQEAgLTg3LDMgKzkxLDk2IEBACiAgCiAg IyBTdXBwb3J0IGZvciAtLXdpdGgtc3lzcm9vdCBpcyBhIGNvcHkgb2YgR0RCX0FDX1dJVEhfRElS LAogICMgZXhjZXB0IHRoYXQgdGhlIGFyZ3VtZW50IHRvIC0td2l0aC1zeXNyb290IGlzIG9wdGlv bmFsLgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4K Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2dkYnNlcnZlci9j b25maWcuaW4JMjAxMi0wNC0xOSAyMTozNDo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9nZGJzZXJ2ZXIvY29uZmlnLmluCTIwMTItMDYtMDIgMjE6NDk6NTUu OTQ1Mzg4MzI5ICswMjAwCitAQCAtNjksNiArNjksOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSBgZGwnIGxpYnJhcnkgKC1sZGwpLiAqLworICN1bmRlZiBIQVZFX0xJQkRMCisg CisrLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxpbnV4JyBsaWJyYXJ5ICgtbHNl bGludXgpLiAqLworKyN1bmRlZiBIQVZFX0xJQlNFTElOVVgKKysKKyAvKiBEZWZpbmUgdG8gMSBp ZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2VsZi5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFW RV9MSU5VWF9FTEZfSAorIAorQEAgLTEzMCw2ICsxMzMsOSBAQAorIC8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSBgcmVhZGxpbmsnIGZ1bmN0aW9uLiAqLworICN1bmRlZiBIQVZFX1JFQURM SU5LCisgCisrLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxpbnV4L3NlbGludXgu aD4gaGVhZGVyIGZpbGUuICovCisrI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKKysKKyAv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNndHR5Lmg+IGhlYWRlciBmaWxlLiAqLwor ICN1bmRlZiBIQVZFX1NHVFRZX0gKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9n ZGJzZXJ2ZXIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5v cmlnL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlCTIwMTItMDQtMjAgMTk6NTg6NDkuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQky MDEyLTA2LTAyIDIxOjQ5OjU0LjQ4NTM4ODg2NCArMDIwMAorQEAgLTU1MzIsNiArNTUzMiw2NCBA QCBpZiAkd2FudF9pcGEgOyB0aGVuCisgICAgZmkKKyBmaQorIAorK2ZvciBhY19oZWFkZXIgaW4g c2VsaW51eC9zZWxpbnV4LmgKKytkbyA6CisrICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVs ICIkTElORU5PIiAic2VsaW51eC9zZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxp bnV4X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKytpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9z ZWxpbnV4X3NlbGludXhfaCIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8 PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9TRUxJTlVYX1NFTElOVVhfSCAxCisrX0FDRU9GCisrCisr ZmkKKysKKytkb25lCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIg PiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2 ZSBpbiAtbHNlbGludXguLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4 X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNf ZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9 JExJQlMKKytMSUJTPSItbHNlbGludXggICRMSUJTIgorK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisrLyogT3Zl cnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisrICAg VXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0ND CisrICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxs IGFwcGx5LiAgKi8KKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiCisrI2VuZGlmCisr Y2hhciBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7CisraW50CisrbWFpbiAoKQorK3sK KytyZXR1cm4gc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlICgpOworKyAgOworKyAgcmV0dXJu IDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoK KysgIGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKKytl bHNlCisrICBhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8K KytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorKyAg ICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorK0xJQlM9JGFjX2NoZWNrX2xp Yl9zYXZlX0xJQlMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZl IiA+JjUKKyskYXNfZWNobyAiJGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFu X2FjdGl2ZSIgPiY2OyB9CisraWYgdGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9n ZXRfYm9vbGVhbl9hY3RpdmUiID0geCIieWVzOyB0aGVuIDoKKysgIGNhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKKysjZGVmaW5lIEhBVkVfTElCU0VMSU5VWCAxCisrX0FDRU9GCisrCisrICBMSUJT PSItbHNlbGludXggJExJQlMiCisrCisrZmkKKysKKysKKyAKKyAKKyAKCmRpZmYgLS1naXQgYS9n ZGItYXV0b2xvYWQtMDFvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTAxb2YyOC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMyYjIxZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0 b2xvYWQtMDFvZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwMi5odG1sCi0KLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAxLzI0IDE5OjEyOjMxCTEuMTM3NzEKLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTM3NzIKLSMjIC0xLDMgKzEsMTIgQEAK LSsyMDEyLTAxLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9m cm9tX3N0cmVhbSk6IE5ldmVyIGZjbG9zZSBTVFJFQU0uCi0rCVVwZGF0ZSB0aGUgZnVuY3Rpb24g Y29tbWVudCBmb3IgaXQuCi0rCShzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoKTogQ2FsbCBtYWtl X2NsZWFudXBfZmNsb3NlIGZvciBTVFJFQU0uCi0rCSogY2xpL2NsaS1zY3JpcHQuYyAoc2NyaXB0 X2Zyb21fZmlsZSk6IERvIG5vdCBjYWxsIG1ha2VfY2xlYW51cF9mY2xvc2UKLSsJZm9yIFNUUkVB TS4KLSsKLSAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAot IAkqIGJyZWFrcG9pbnQuYyAoYnBzdGF0X3N0b3Bfc3RhdHVzKTogTW92aW5nIGNsZWFyaW5nIHBy aW50X2l0Ci0tLS0gc3JjL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzIzIDE2OjM3OjAzCTEu MTIzCi0rKysgc3JjL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTI0 Ci1AQCAtNTI3LDggKzUyNyw3IEBACi0gICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogTG9hZCBzY3Jp cHQgRklMRSwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLgotLSAgIFNU UkVBTSBpcyBjbG9zZWQgYmVmb3JlIHdlIHJldHVybi4gICovCi0rLyogTG9hZCBzY3JpcHQgRklM RSwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLiAgKi8KLSAKLSBzdGF0 aWMgdm9pZAotIHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwgY29uc3Qg Y2hhciAqZmlsZSkKLUBAIC01NTYsMTIgKzU1NSw5IEBACi0gCSAgZWxzZQotIAkgICAgewotIAkg ICAgICAvKiBOb3BlLCBqdXN0IHB1bnQuICAqLwotLQkgICAgICBmY2xvc2UgKHN0cmVhbSk7Ci0g CSAgICAgIHRocm93X2V4Y2VwdGlvbiAoZSk7Ci0gCSAgICB9Ci0gCX0KLS0gICAgICBlbHNlCi0t CWZjbG9zZSAoc3RyZWFtKTsKLSAgICAgfQotICAgZWxzZQotICAgICBzY3JpcHRfZnJvbV9maWxl IChzdHJlYW0sIGZpbGUpOwotQEAgLTU5NSw2ICs1OTEsNyBAQAotICAgICB9Ci0gCi0gICBvbGRf Y2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKyAgbWFrZV9jbGVh bnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRo ZSBmaWxlLCBzbyB3ZSBuZWVkIHRvIHBhc3MgZnVsbF9wYXRoIGhlcmUKLSAgICAgIGluIGNhc2Ug dGhlIGZpbGUgd2FzIGZvdW5kIG9uIHRoZSBzZWFyY2ggcGF0aC4gIEl0J3MgdXNlZnVsIHRvIGRv IHRoaXMKLSAgICAgIGFueXdheSBzbyB0aGF0IGVycm9yIG1lc3NhZ2VzIHNob3cgdGhlIGFjdHVh bCBmaWxlIHVzZWQuICBCdXQgb25seSBkbwotLS0tIHNyYy9nZGIvY2xpL2NsaS1zY3JpcHQuYwky MDEyLzAxLzA0IDA4OjE3OjE3CTEuNzMKLSsrKyBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAx Mi8wMS8yNCAyMDo1NjozMwkxLjc0Ci1AQCAtMTYxNCwxMSArMTYxNCw5IEBACi0gICBpZiAoc3Ry ZWFtID09IE5VTEwpCi0gICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8o ImNhbGxlZCB3aXRoIE5VTEwgZmlsZSBwb2ludGVyISIpKTsKLSAKLS0gIG9sZF9jbGVhbnVwcyA9 IG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0tCi0gICBvbGRfbGluZXMub2xkX2xpbmUg PSBzb3VyY2VfbGluZV9udW1iZXI7Ci0gICBvbGRfbGluZXMub2xkX2ZpbGUgPSBzb3VyY2VfZmls ZV9uYW1lOwotLSAgbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5l cyk7Ci0rICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV9jbGVhbnVwX2xpbmVz LCAmb2xkX2xpbmVzKTsKLSAgIHNvdXJjZV9saW5lX251bWJlciA9IDA7Ci0gICBzb3VyY2VfZmls ZV9uYW1lID0gZmlsZTsKLSAgIC8qIFRoaXMgd2lsbCBnZXQgc2V0IGV2ZXJ5IHRpbWUgd2UgcmVh ZCBhIGxpbmUuICBTbyBpdCB3b24ndCBzdGF5ICIiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2Fk LTAyb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wMm9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGI0NGM5YmIuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAyb2Yy OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjA1Lmh0bWwKLQotLS0tIHNyYy9nZGIvZ2Ri X3ZlY3MuaAotKysrIHNyYy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2 NjAwMCArMDAwMAotQEAgLTAsMCArMSwyOCBAQAotKy8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMg dHlwZXMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rCi0rI2lmbmRlZiBHREJfVkVDU19I Ci0rI2RlZmluZSBHREJfVkVDU19ICi0rCi0rI2luY2x1ZGUgInZlYy5oIgotKwotK0RFRl9WRUNf UCAoY2hhcl9wdHIpOwotKwotKyNlbmRpZiAvKiBHREJfVkVDU19IICovCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozMjo1NgkxLjEzNzc0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMS8yNCAyMTozNjozNwkxLjEzNzc1Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMi0w MS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwotKwkqIGFkYS1sYW5nLmM6 IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiBjaGFyc2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4K LSsJKiB0cmFjZXBvaW50Lmg6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiBnZGJfdmVjcy5oOiBO ZXcgZmlsZS4KLSsKLSAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2Vy eS5jb20+Ci0gCi0gCSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQot LS0tIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAxLzA2IDAzOjM0OjQ1CTEuMzMwCi0rKysgc3Jj L2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4zMzEKLUBAIC01Nyw2ICs1Nyw3 IEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRl ICJzdGFjay5oIgotKyNpbmNsdWRlICJnZGJfdmVjcy5oIgotIAotICNpbmNsdWRlICJwc3ltdGFi LmgiCi0gI2luY2x1ZGUgInZhbHVlLmgiCi1AQCAtNTYyOCw4ICs1NjI5LDYgQEAKLSAgIHJldHVy biBzeW1fbmFtZTsKLSB9Ci0gCi0tREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0tCi0gLyogQSBjb21w YW5pb24gZnVuY3Rpb24gdG8gYWRhX21ha2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlzdCgpLgotICAg IENoZWNrIGlmIFNZTV9OQU1FIHJlcHJlc2VudHMgYSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBi ZSBzdWl0YWJsZQotICAgIHRvIGNvbXBsZXRlIFRFWFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGgg b2YgVEVYVCksIGluIHdoaWNoIGNhc2UKLS0tLSBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0 IDA4OjE3OjAwCTEuNDYKLSsrKyBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3 CTEuNDcKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJl bnZpcm9uLmgiCi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3Mu aCIKLSAKLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBA IC03MTcsOCArNzE4LDYgQEAKLSAKLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0 aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGUgKi8KLSAKLS1ERUZfVkVDX1Ag KGNoYXJfcHRyKTsKLS0KLSBzdGF0aWMgVkVDIChjaGFyX3B0cikgKmNoYXJzZXRzOwotIAotICNp ZmRlZiBQSE9OWV9JQ09OVgotLS0tIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6 Mjc6NTcJMS40NgotKysrIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJ MS40NwotQEAgLTIyLDYgKzIyLDcgQEAKLSAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotICNpbmNs dWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKLSsjaW5jbHVkZSAiZ2RiX3Zl Y3MuaCIKLSAKLSAvKiBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBi eSBhIHRhcmdldCBiZWluZwotICAgIHRyYWNlZC4gIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9y IHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBhY2Nlc3NlZAotQEAgLTE0Myw4ICsxNDQsNiBAQAotIAot IC8qIFN0cnVjdCB0byBjb2xsZWN0IHJhbmRvbSBpbmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRo ZSB0YXJnZXQuICAqLwotIAotLURFRl9WRUNfUCAoY2hhcl9wdHIpOwotLQotIHN0cnVjdCB1cGxv YWRlZF90cAotIHsKLSAgIGludCBudW1iZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAz b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wM29mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGMwZWZjOGMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAzb2YyOC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDEvMjYgMTY6NDQ6MjkJMS4xMzc4MAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDEvMjYgMjE6NTQ6NDIJMS4xMzc4MQotIyMgLTEsMyArMSwyMiBAQAotKzIwMTItMDEtMjYg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRG8gbm90 IG9wZW4gc2NyaXB0IGZpbGVuYW1lcyB0d2ljZS4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNl X3NjcmlwdF9mcm9tX3N0cmVhbSk6IFBhc3MgdG8KLSsJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxz byBTVFJFQU0uCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3Jp cHRzKTogUGFzcyB0bwotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNU UkVBTS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhv bl9zY3JpcHRfZm9yX29iamZpbGUKLSsJYWxzbyBJTlBVVC4KLSsJKiBweXRob24vcHl0aG9uLWlu dGVybmFsLmggKHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXBhcmFt ZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0rCSogcHl0aG9u L3B5dGhvbi5jIChweXRob25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxl Ci0rCWluc3RlYWQgaWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KLSsJ KHNvdXJjZV9weXRob25fc2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkK LSsJKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFy YW1ldGVyIGZpbGUgdG8KLSsJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5f c2ltcGxlX2ZpbGUuCi0rCSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6 IE5ldyBwYXJhbWV0ZXIgZmlsZSwgcmVuYW1lCi0rCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1l LgotKwotIDIwMTItMDEtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0g CSogY29yZWxvdy5jIChjb3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMu YwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTUyOSw5ICs1MjksNyBA QCBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCi0gCi0gICAgICAgVFJZ X0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKLSAJewotLSAgICAgICAgICAvKiBUaGUgcHl0 aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAotLSAg ICAgICAgICAgICBzbyB0aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAq LwotLQkgIHNvdXJjZV9weXRob25fc2NyaXB0IChmaWxlKTsKLSsJICBzb3VyY2VfcHl0aG9uX3Nj cmlwdCAoc3RyZWFtLCBmaWxlKTsKLSAJfQotICAgICAgIGlmIChlLnJlYXNvbiA8IDApCi0gCXsK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQy LjY5Njg1NTQzMCArMDIwMAotQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2Fk LXNjcmlwdHMgW1JFR0VYUF0nIHRvCi0gCXsKLSAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1 cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotIAkgIGlmICghIGluX2hhc2hfdGFibGUpCi0t CSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRo KTsKLSsJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJl YW0sIGZ1bGxfcGF0aCk7Ci0gCSAgZmNsb3NlIChzdHJlYW0pOwotIAkgIHhmcmVlIChmdWxsX3Bh dGgpOwotIAl9Ci1AQCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAo c3RydWN0IG9iamZpbGUKLSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxv YWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRl bXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKLSsgICAg ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVn ZmlsZSk7Ci0gICAgICAgZmNsb3NlIChpbnB1dCk7Ci0gICAgIH0KLSAKLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAky MDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1 NTQzMCArMDIwMAotQEAgLTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1 YWdlX2RlZm4gKnB5dGhvCi0gCi0gdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7Ci0gCi0t dm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCi0tCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlKTsKLSt2b2lkIHNvdXJjZV9weXRo b25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmls ZSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSBQeU9iamVjdCAqcHl0 aG9uX3N0cmluZ190b191bmljb2RlIChQeU9iamVjdCAqb2JqKTsKLSBjaGFyICp1bmljb2RlX3Rv X3RhcmdldF9zdHJpbmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0cik7Ci1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9u LmMJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKLUBAIC0xNTQsMzQgKzE1NCwz MSBAQCBlbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gICByZXR1cm4g bWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7Ci0gfQotIAotLS8qIEEgd3Jh cHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCi0t ICAgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuLgotKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5f U2ltcGxlRmlsZS4gIEZJTEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCi0rICAgbmFtZWQg RklMRU5BTUUuCi0gCi0tICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZp bGUgaXMgYSBGSUxFICouCi0tICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0 cmVtZWx5IHN5c3RlbSBhbmQgY29tcGlsZXIKLS0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRo ZSBQeXRob24gbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB1c2luZwotLSAgIHRoZSBzYW1lIGJ1 aWxkIGVudmlyb25tZW50IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRpbmcKLS0gICBh IGNyYXNoIGR1ZSB0byBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2Vk IGJ5IEdEQiwKLS0gICBhbmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21h dGNoIGNhbiB2ZXJ5IGxpa2VseQotLSAgIGxlYWQgdG8gYSBjcmFzaC4KLS0KLS0gICBUaGVyZSBp cyBhbHNvIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKLS0g ICBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJh cnkuCi0tICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBm ZXcgdXNlcnMgd291bGQKLS0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0 cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksCi0tICAgYW5kIHRodXMgdXNlIGJpbmFyaWVz IGJ1aWx0IGJ5IHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCi0tICAgYmVpbmcgYnVpbHQg d2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwKLS0gICAoRWcu IG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCi0t ICAgZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3Rs eSBpbgotKyAgIE9uIFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0 aGVtc2VsdmVzICh0aGlzIGlzIG5vCi0rICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0p LCBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkKLSsgICBzb21lb25lIGVsc2UgaW5zdGVh ZC4gIFRoZXJlIG1heSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24KLSsgICBsaWJy YXJ5IGFuZCBHREIgYXJlIHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVu dGltZQotKyAgIGxpYnJhcnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVz ZSBvbmUgdmVyc2lvbiBvZiB0aGUKLSsgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3 aGlsZSBNaW5HVyB1c2VzIG1zdmNydC5kbGwuCi0rICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGlt ZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotICAgIHRoZSBvdGhl ciBydW50aW1lLgotIAotLSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3 ZSBjcmVhdGUgdGhlIEZJTEUgb2JqZWN0Ci0tICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVz IG1ha2luZyBzdXJlIHRoYXQgaXQgaXMgY29tcGF0aWJsZQotLSAgIHdpdGggdGhlIFB5dGhvbiBs aWJyYXJ5LiAgKi8KLSsgICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2Ug Y3JlYXRlIG9uIFdpbmRvd3MgaG9zdHMgdGhlCi0rICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9u IHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKLSsgICBjb21wYXRpYmxlIHdp dGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXB5dGhvbl9ydW5f c2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3B5dGhvbl9ydW5fc2ltcGxlX2Zp bGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsjaWZuZGVmIF9XSU4z MgotKwotKyAgUHlSdW5fU2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKwotKyNlbHNlIC8q IF9XSU4zMiAqLwotKwotICAgY2hhciAqZnVsbF9wYXRoOwotICAgUHlPYmplY3QgKnB5dGhvbl9m aWxlOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci1AQCAtMjAxLDYgKzE5OCw4IEBAIHB5 dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKLSAgIG1ha2VfY2xlYW51cF9w eV9kZWNyZWYgKHB5dGhvbl9maWxlKTsKLSAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0Zp bGUgKHB5dGhvbl9maWxlKSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwot KwotKyNlbmRpZiAvKiBfV0lOMzIgKi8KLSB9Ci0gCi0gLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUs IHJldHVybiBhIGNvbW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCi1AQCAtNjIzLDE3 ICs2MjIsMTcgQEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQotIH0K LSAKLSAvKiBSZWFkIGEgZmlsZSBhcyBQeXRob24gY29kZS4KLS0gICBGSUxFIGlzIHRoZSBuYW1l IG9mIHRoZSBmaWxlLgotKyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMg bmFtZSBvZiB0aGUgZmlsZSBGSUxFLgotICAgIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9y cy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKLSAgICB0aGUgdHJh Y2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLSAKLSB2b2lkCi0tc291 cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCi0rc291cmNlX3B5dGhvbl9zY3Jp cHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVh bnVwICpjbGVhbnVwOwotIAotICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3Vy cmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLS0gIHB5dGhvbl9ydW5fc2ltcGxlX2Zp bGUgKGZpbGUpOwotKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwot ICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLSAKLUBAIC0xMDQxLDE5ICsxMDQwLDIwIEBA IGdkYnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KLSAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCi0g c3RhdGljIHN0cnVjdCBvYmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7Ci0gCi0tLyogU2V0 IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0 aG9uIGNvZGUuCi0tICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhj ZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAotLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNs ZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLwotKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxl IHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCi0rICAgYXMgUHl0 aG9uIGNvZGUuICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRp b24KLSsgICBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIg dGhlIGVycm9yIGluZGljYXRvci4gICovCi0gCi0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkK LStzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIEZJTEUgKmZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAKLSAg IGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUp LCBjdXJyZW50X2xhbmd1YWdlKTsKLSAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7 Ci0gCi0tICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxlKTsKLSsgIHB5dGhvbl9ydW5fc2lt cGxlX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 Ci0gICBnZGJweV9jdXJyZW50X29iamZpbGUgPSBOVUxMOwotQEAgLTExMjksNyArMTEyOSw3IEBA IGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKLSB9Ci0gCi0gdm9pZAot LXNvdXJjZV9weXRob25fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQotK3NvdXJjZV9weXRob25f c2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gICB0aHJvd19l cnJvciAoVU5TVVBQT1JURURfRVJST1IsCi0gCSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlz IG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9u LmgJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKLUBAIC0zMCw3ICszMCw3IEBA IGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KLSAKLSB2b2lkIGV2YWxf cHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwotIAot LXZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOwotK3ZvaWQgc291 cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAK LSB2b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIAoKZGlm ZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDRvZjI4 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDVhYzg3Li4wMDAwMDAwCi0t LSBhL2dkYi1hdXRvbG9hZC0wNG9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5o dG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUK LSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKLSMjIC0x LDMgKzEsMTQgQEAKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBtYWluLmMgKHN0cnVjdCBjbWRh cmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCi0rCShjbWRh cmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcuCi0rCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJn IGZyb20gaGVyZS4gIE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKLSsJY21kYXJnX3AuICBS ZW1vdmUgdmFyaWFibGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9u LgotKwlJbnN0YWxsIGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Ig b3B0aW9ucyAneCcgYW5kCi0rCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21k YXJnX3ZlYyBwcm9jZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCi0rCW9mIENNREFSRy4KLSsKLSAyMDEy LTAzLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogZ251LXYzLWFi aS5jIChnbnV2M19wcmludF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4KLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAw OjQyOjE1LjM1NDc3MjMzNyArMDIwMAotQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3Jl X2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZQotICAgICB9Ci0gfQotIAotKy8qIEFyZ3VtZW50 cyBvZiAtLWNvbW1hbmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLwotK3R5cGVkZWYg c3RydWN0IGNtZGFyZyB7Ci0rICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KLSsgIGVudW0g ewotKyAgICAvKiBPcHRpb24gdHlwZSAteC4gICovCi0rICAgIENNREFSR19GSUxFLAotKwotKyAg ICAvKiBPcHRpb24gdHlwZSAtZXguICAqLwotKyAgICBDTURBUkdfQ09NTUFORAotKyAgfSB0eXBl OwotKwotKyAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNv bW1hbmQgaXRzZWxmLiAgU3RyaW5nIG1lbW9yeQotKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMg c3RydWN0dXJlIGRlc3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCi0rICBjaGFyICpzdHJpbmc7Ci0r fSBjbWRhcmdfczsKLSsKLSsvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCi0rREVG X1ZFQ19PIChjbWRhcmdfcyk7Ci0rCi0gc3RhdGljIGludAotIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCi0gewotQEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKLSAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKLSAKLSAgIC8qIFBvaW50ZXJzIHRvIGFs bCBhcmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbi4gICovCi0tICBzdHJ1Y3QgY21kYXJnIHsK LS0gICAgZW51bSB7Ci0tICAgICAgQ01EQVJHX0ZJTEUsCi0tICAgICAgQ01EQVJHX0NPTU1BTkQK LS0gICAgfSB0eXBlOwotLSAgICBjaGFyICpzdHJpbmc7Ci0tICB9ICpjbWRhcmc7Ci0tICAvKiBB bGxvY2F0ZWQgc2l6ZSBvZiBjbWRhcmcuICAqLwotLSAgaW50IGNtZHNpemU7Ci0tICAvKiBOdW1i ZXIgb2YgZWxlbWVudHMgb2YgY21kYXJnIHVzZWQuICAqLwotLSAgaW50IG5jbWQ7Ci0rICBWRUMg KGNtZGFyZ19zKSAqY21kYXJnX3ZlYyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdf cDsKLSAKLSAgIC8qIEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRp b24uICAqLwotICAgY2hhciAqKmRpcmFyZzsKLUBAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKLSAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIp OwotICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0tICBjbWRzaXplID0gMTsKLS0gIGNtZGFy ZyA9IChzdHJ1Y3QgY21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcp KTsKLS0gIG5jbWQgPSAwOwotKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3Mp LCAmY21kYXJnX3ZlYyk7Ci0gICBkaXJzaXplID0gMTsKLSAgIGRpcmFyZyA9IChjaGFyICoqKSB4 bWFsbG9jIChkaXJzaXplICogc2l6ZW9mICgqZGlyYXJnKSk7Ci0gICBuZGlyID0gMDsKLUBAIC01 ODIsMjQgKzU5MCwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAgcGlkYXJn ID0gb3B0YXJnOwotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAneCc6Ci0tCSAgICBjbWRhcmdbbmNt ZF0udHlwZSA9IENNREFSR19GSUxFOwotLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0 YXJnOwotLQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAq PSAyOwotLQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21k c2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOwotLQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0 cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07Ci0rCi0rCSAgICAg IFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0K LSAJICAgIGJyZWFrOwotIAkgIGNhc2UgJ1gnOgotLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBD TURBUkdfQ09NTUFORDsKLS0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKLS0J ICAgIGlmIChuY21kID49IGNtZHNpemUpCi0tCSAgICAgIHsKLS0JCWNtZHNpemUgKj0gMjsKLS0J CWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCi0tCQkJCSAgIGNtZHNpemUgKiBz aXplb2YgKCpjbWRhcmcpKTsKLS0JICAgICAgfQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgY21k YXJnIGNtZGFyZyA9IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNf c2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAg ICBicmVhazsKLSAJICAgIGJyZWFrOwotIAkgIGNhc2UgJ0InOgotIAkgICAgYmF0Y2hfZmxhZyA9 IGJhdGNoX3NpbGVudCA9IDE7Ci1AQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgICAgbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOwotIAotLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7 IGkrKykKLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywg aSwgY21kYXJnX3ApOyBpKyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0gICAgIHsK LS0gICAgICBpZiAoY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCi0tICAgICAgICBjYXRj aF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywKLSsgICAg ICBjYXNlIENNREFSR19GSUxFOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJj ZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCi0gCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVS Tl9NQVNLX0FMTCk7Ci0tICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NP TU1BTkQgKi8KLS0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQs IGNtZGFyZ1tpXS5zdHJpbmcsCi0rCWJyZWFrOwotKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6 Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdf cC0+c3RyaW5nLAotIAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwli cmVhazsKLSAgICAgfQotLSAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBv bGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCi0gICAgICBy ZWFkLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoIGIvZ2RiLWF1 dG9sb2FkLTA1b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkOGNj My4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjQ0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDMvbXNnMDAyMzUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODox NjoxNwkxLjE0MDI2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxOToyMwkx LjE0MDI3Ci0jIyAtMSw1ICsxLDE4IEBACi0gMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIE5FV1M6IERlc2NyaWJlIG5ldyBvcHRp b25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKLSsJLS1pbml0LWV2YWwtY29tbWFuZD1D T01NQU5ELCAtaWV4LgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVtIGl0ZW1z IENNREFSR19JTklUX0ZJTEUgYW5kCi0rCUNNREFSR19JTklUX0NPTU1BTkQuCi0rCShjYXB0dXJl ZF9tYWluKTogTmV3IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRfSUVYLiAgQWRkCi0rCSJpbml0 LWNvbW1hbmQiLCAiaW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFuZCAiaWV4IiB0byB0aGUgdmFy aWFibGUKLSsJbG9uZ19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBhbmQgT1BUX0lFWC4gIFByb2Nl c3MgdGhlbSBmcm9tIENNREFSR19WRUMuCi0rCU5ldyBjb21tZW50IGZvciBDTURBUkdfRklMRSBh bmQgQ01EQVJHX0NPTU1BTkQgcHJvY2Vzc2luZy4KLSsJKHByaW50X2dkYl9oZWxwKTogRGVzY3Jp YmUgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21tYW5kPUNP TU1BTkQsIC1pZXguCi0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotKwotIAlDb2RlIGNsZWFudXAuCi0gCSogbWFpbi5jIChzdHJ1Y3Qg Y21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRzLgotIAko Y21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L05FV1MJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi1A QCAtMjgsNiArMjgsMTMgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxkL2djYy9l eHByLmMsIGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcgY29tbWFu ZCBsaW5lIG9wdGlvbnMKLSsKLSstLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlr ZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgotKy0taW5pdC1ldmFsLWNvbW1hbmQ9 Q09NTUFORCwgLWlleCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1leCBidXQKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBp bmZlcmlvci4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgNy40Ci0gCi0gKiBHREIgbm93IGhhbmRs ZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0aW5nCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0MjoxNS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0x OCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLUBAIC0yODUsNyArMjg1LDEzIEBAIHR5cGVkZWYg c3RydWN0IGNtZGFyZyB7Ci0gICAgIENNREFSR19GSUxFLAotIAotICAgICAvKiBPcHRpb24gdHlw ZSAtZXguICAqLwotLSAgICBDTURBUkdfQ09NTUFORAotKyAgICBDTURBUkdfQ09NTUFORCwKLSsK LSsgICAgLyogT3B0aW9uIHR5cGUgLWl4LiAgKi8KLSsgICAgQ01EQVJHX0lOSVRfRklMRSwKLSsg ICAgCi0rICAgIC8qIE9wdGlvbiB0eXBlIC1pZXguICAqLwotKyAgICBDTURBUkdfSU5JVF9DT01N QU5ECi0gICB9IHR5cGU7Ci0gCi0gICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1l IG9yIHRoZSBHREIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5Ci1AQCAtNDM0LDcgKzQ0 MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgT1BUX1NUQVRJU1RJQ1Ms Ci0gICAgICAgT1BUX1RVSSwKLSAgICAgICBPUFRfTk9XSU5ET1dTLAotLSAgICAgIE9QVF9XSU5E T1dTCi0rICAgICAgT1BUX1dJTkRPV1MsCi0rICAgICAgT1BUX0lYLAotKyAgICAgIE9QVF9JRVgK LSAgICAgfTsKLSAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPQotICAg ICB7Ci1AQCAtNDc1LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAg ICAgIHsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVyc2lvbiwgMX0sCi0gICAgICAg eyJ4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd4J30sCi0gICAgICAgeyJleCIsIHJlcXVpcmVk X2FyZ3VtZW50LCAwLCAnWCd9LAotKyAgICAgIHsiaW5pdC1jb21tYW5kIiwgcmVxdWlyZWRfYXJn dW1lbnQsIDAsIE9QVF9JWH0sCi0rICAgICAgeyJpbml0LWV2YWwtY29tbWFuZCIsIHJlcXVpcmVk X2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKLSsgICAgICB7Iml4IiwgcmVxdWlyZWRfYXJndW1lbnQs IDAsIE9QVF9JWH0sCi0rICAgICAgeyJpZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lF WH0sCi0gI2lmZGVmIEdEQlRLCi0gICAgICAgeyJ0Y2xjb21tYW5kIiwgcmVxdWlyZWRfYXJndW1l bnQsIDAsICd6J30sCi0gICAgICAgeyJlbmFibGUtZXh0ZXJuYWwtZWRpdG9yIiwgbm9fYXJndW1l bnQsIDAsICd5J30sCi1AQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQotIAkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFy Zyk7Ci0gCSAgICB9Ci0gCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JWDoKLSsJICAgIHsKLSsJ ICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0ZJTEUsIG9wdGFyZyB9 OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFy Zyk7Ci0rCSAgICB9Ci0rCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JRVg6Ci0rCSAgICB7Ci0r CSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfSU5JVF9DT01NQU5ELCBvcHRh cmcgfTsKLSsKLSsJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZj bWRhcmcpOwotKwkgICAgfQotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAgICBiYXRj aF9mbGFnID0gYmF0Y2hfc2lsZW50ID0gMTsKLUBAIC04NzcsNiArOTAyLDIwIEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCi0gICBxdWl0X3ByZV9wcmludCA9IGVycm9yX3ByZV9wcmludDsK LSAgIHdhcm5pbmdfcHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAiKTsKLSAKLSsgIC8qIFByb2Nl c3MgJy1peCcgYW5kICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8KLSsgIGZvciAoaSA9IDA7IFZF Q19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCi0rICAg IHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0rICAgIHsKLSsgICAgICBjYXNlIENNREFSR19JTklU X0ZJTEU6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21k YXJnX3AtPnN0cmluZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsK LSsJYnJlYWs7Ci0rICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01NQU5EOgotKyAgICAgICAgY2F0 Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmluZywKLSsJ CQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0rICAgIH0K LSsKLSAgIC8qIFJlYWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13aWRlIGdkYmluaXQgZmlsZSwg aWYgaXQgZXhpc3RzLgotICAgICAgVGhpcyBpcyBkb25lICpiZWZvcmUqIGFsbCB0aGUgY29tbWFu ZCBsaW5lIGFyZ3VtZW50cyBhcmUKLSAgICAgIHByb2Nlc3NlZDsgaXQgc2V0cyBnbG9iYWwgcGFy YW1ldGVycywgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCi1AQCAtOTkzLDYgKzEwMzIsNyBAQCBj YXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAg ICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0rICAvKiBQcm9j ZXNzICcteCcgYW5kICctZXgnIG9wdGlvbnMuICAqLwotICAgZm9yIChpID0gMDsgVkVDX2l0ZXJh dGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKLSAgICAgc3dpdGNo IChjbWRhcmdfcC0+dHlwZSkKLSAgICAgewotQEAgLTEwOTMsNiArMTEzMyw4IEBAIE9wdGlvbnM6 XG5cblwKLSAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIGEgc2luZ2xlIEdEQiBjb21tYW5k LlxuXAotICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGFu ZCBpbiBjb25qdW5jdGlvblxuXAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1jb21tYW5k LlxuXAotKyAgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2UgLXggYnV0IGV4ZWN1dGUgaXQg YmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCi0rICAtLWluaXQtZXZhbC1jb21tYW5kPUNPTU1B TkQsIC1pZXggTGlrZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAotICAgLS1j b3JlPUNPUkVGSUxFICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBDT1JFRklMRS5cblwKLSAgIC0t cGlkPVBJRCAgICAgICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9jZXNzIFBJRC5cblwKLSAiKSwg c3RyZWFtKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8K LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIzMjY4MTA1 MiArMDIwMAotQEAgLTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBpbnRlcmxlYXZlZCB3aXRoIEBz YW1wey1jb21tYW5kfQotICAgIC14IHNldGJyZWFrcG9pbnRzIC1leCAncnVuJyBhLm91dAotIEBl bmQgc21hbGxleGFtcGxlCi0gCi0rQGl0ZW0gLWluaXQtY29tbWFuZCBAdmFye2ZpbGV9Ci0rQGl0 ZW14IC1peCBAdmFye2ZpbGV9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtY29tbWFuZH0KLStAY2lu ZGV4IEBjb2Rley1peH0KLStFeGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9IGJl Zm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3Rh cnR1cH0uCi0rCi0rQGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0KLStAaXRl bXggLWlleCBAdmFye2NvbW1hbmR9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtZXZhbC1jb21tYW5k fQotK0BjaW5kZXggQGNvZGV7LWlleH0KLStFeGVjdXRlIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBj b21tYW5kIGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0r QHhyZWZ7U3RhcnR1cH0uCi0rCi0gQGl0ZW0gLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yeX0KLSBA aXRlbXggLWQgQHZhcntkaXJlY3Rvcnl9Ci0gQGNpbmRleCBAY29kZXstLWRpcmVjdG9yeX0KLUBA IC0xMjUwLDYgKzEyNjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBz cGVjaQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotIEBpdGVtCi0r RXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2Ft cHstaWV4fSBhbmQKLStAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVkIG9yZGVy LiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKLStAc2FtcHstZXh9IGFuZCBAc2FtcHsteH0g b3B0aW9ucyBpbnN0ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBhcHBseQotK3NldHRpbmdzIGJl Zm9yZSBAdmFsdWV7R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0ZWQgYW5kIGJlZm9yZSBpbmZl cmlvcgotK2dldHMgbG9hZGVkLgotKwotK0BpdGVtCi0gQGNpbmRleCBpbml0IGZpbGUKLSBSZWFk cyB0aGUgc3lzdGVtLXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBAb3B0aW9uey0td2l0aC1zeXN0 ZW0tZ2RiaW5pdH0gd2FzCi0gdXNlZCB3aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsgQHB4cmVm e1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24sCi1AQCAtMTI4MywxNCArMTMwNiwxMSBAQCBJZiB5 b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBzb21ldGhp bmcgbGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAtZXggInNl dCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXByb2dyYW0iCi0rJCBnZGIgLWll eCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFsbGV4YW1w bGUKLSAKLS1UaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2Fk aW5nIGlzIHR1cm5lZCBvZmYgdG9vIGxhdGU6Ci0tCi0tQHNtYWxsZXhhbXBsZQotLSQgZ2RiIC1l eCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0tQGVuZCBzbWFsbGV4YW1w bGUKLStPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9h ZGluZyBpcyB0aGVuIHR1cm5lZAotK29mZiB0b28gbGF0ZS4KLSAKLSBAaXRlbQotIFJlYWRzIGNv bW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0gb3B0aW9uLiAgQHhyZWZ7Q29t bWFuZAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3Nl bGZ0ZXN0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIv c2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCi1AQCAtOTIs NiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2NyaXB0 aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21t YW5kICJzdGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKmNtZGFyZ192ZWMgPSBOVUxMLiokZ2Ri X3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGlu aXRpYWxpemF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUg Ii4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9t cHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRz X2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIK LUBAIC0xMjgsMTggKzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNl dCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0YWNrIGFsaWdubWVudCBhbGxv Y2EiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLSAJICAgIH0KLS0JICAgIC1yZSAiLipjbWRzaXpl ID0gMS4qJGdkYl9wcm9tcHQgJCIgewotLQkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgY21k c2l6ZSBpbml0aWFsaXphdGlvbiIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkg ICAgLXJlICIuKmNtZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJvbXB0ICQiIHsKLS0JCXNldCBk ZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXphdGlvbiB2aWEgeG1hbGxvYyIK LS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKm5jbWQgPSAwLiok Z2RiX3Byb21wdCAkIiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBuY21kIGluaXRp YWxpemF0aW9uIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0gCSAgICAtcmUgIi4q ZGlyc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBv dmVyIGRpcnNpemUgaW5pdGlhbGl6YXRpb24iCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0x NjMsNiArMTU1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNj cmlwdGlvbiAibmV4dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIKLSAJCXNldCBjb21tYW5kICJu ZXh0IgotIAkgICAgfQotKwkgICAgLXJlICIuKlZFQ19jbGVhbnVwIC5jbWRhcmdfcy4qJGdkYl9w cm9tcHQgJCIgewotKwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnX3MgVkVDX2Ns ZWFudXAiCi0rCQlzZXQgY29tbWFuZCAibmV4dCIKLSsJICAgIH0KLSAJICAgIC1yZSAiXFswLTlc XStcW1x0IFxdK1x7XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAic3Rl cCBvdmVyIGluaXRpYWwgYnJhY2UiCi0gCQlzZXQgY29tbWFuZCAic3RlcCIKCmRpZmYgLS1naXQg YS9nZGItYXV0b2xvYWQtMDZvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxMjFlZi4uMDAwMDAwMAotLS0gYS9nZGIt YXV0b2xvYWQtMDZvZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNi5odG1sCi0KLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcKLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjIzOjUxCTEuMTQwMjgKLSMjIC0xLDUgKzEsMTMg QEAKLSAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0gCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBweXRob24vcHktYXV0by1sb2FkLmMgKHNvdXJj ZV9zZWN0aW9uX3NjcmlwdHMpOiBOZXcgdmFyaWFibGUgYmFja190by4KLSsJVHVybiBmY2xvc2Ug YW5kIHhmcmVlIGNhbGxzIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZSBhbmQgbWFrZV9jbGVhbnVw Ci0rCXdpdGggeGZyZWUuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBUdXJuIGZjbG9z ZSBpbnRvIG1ha2VfY2xlYW51cF9mY2xvc2UuCi0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAkqIE5FV1M6IERlc2NyaWJlIG5l dyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKLSAJLS1pbml0LWV2YWwtY29t bWFuZD1DT01NQU5ELCAtaWV4LgotIAkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVt IGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCi0tLS0gc3JjL2dkYi9weXRob24vcHktYXV0by1s b2FkLmMJMjAxMi8wMS8yNiAyMTo1NDo0NQkxLjE4Ci0rKysgc3JjL2dkYi9weXRob24vcHktYXV0 by1sb2FkLmMJMjAxMi8wMy8xOSAxODoyMzo1MgkxLjE5Ci1AQCAtMjU0LDYgKzI1NCw3IEBACi0g ICAgICAgRklMRSAqc3RyZWFtOwotICAgICAgIGNoYXIgKmZ1bGxfcGF0aDsKLSAgICAgICBpbnQg b3BlbmVkLCBpbl9oYXNoX3RhYmxlOwotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwot IAotICAgICAgIGlmICgqcCAhPSAxKQotIAl7Ci1AQCAtMjg2LDYgKzI4NywxMyBAQAotICAgICAg IG9wZW5lZCA9IGZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCAxIC8qc2VhcmNoX3BhdGgqLywK LSAJCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoKTsKLSAKLSsgICAgICBiYWNrX3RvID0gbWFr ZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotKyAgICAgIGlmIChvcGVuZWQpCi0rCXsK LSsJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotKwkgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGZ1bGxfcGF0aCk7Ci0rCX0KLSsKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZv dW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQgZWl0aGVy LiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCi0gCSBz Y3JpcHQsIHRvbyBtdWNoIG5vaXNlLiAgSW5zdGVhZCwgd2UgcHJpbnQgdGhlIHdhcm5pbmcgb25j ZSBhbmQgdGVsbAotQEAgLTMxMyw5ICszMjEsOSBAQAotIAkgIC8qIElmIHRoaXMgZmlsZSBpcyBu b3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCi0gCSAgaWYgKCEgaW5faGFzaF90YWJs ZSkKLSAJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJl YW0sIGZ1bGxfcGF0aCk7Ci0tCSAgZmNsb3NlIChzdHJlYW0pOwotLQkgIHhmcmVlIChmdWxsX3Bh dGgpOwotIAl9Ci0rCi0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gfQot IAotQEAgLTQyMCw2ICs0MjgsOCBAQAotICAgICB7Ci0gICAgICAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gCi0rICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAo aW5wdXQpOwotKwotICAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0 b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCi0gCSBjYW4gcHJpbnQgaXQuICAqLwotICAg ICAgIHBzcGFjZV9pbmZvID0KLUBAIC00MzIsNyArNDQyLDYgQEAKLSAJIGFuZCB0aGVzZSBzY3Jp cHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBsb2Fk cyBhbnl3YXkuICAqLwotICAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChv YmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLS0gICAgICBmY2xvc2UgKGlucHV0KTsKLSAgICAg fQotIAotICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xv YWQtMDdvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2YyOC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNTFkMTI5ZS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDdv ZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDI5Ni5odG1sCi0KLSMjIyBzcmMvZ2RiL2Rv Yy9DaGFuZ2VMb2cJMjAxMi8wMy8yMiAwODoxMDo0MQkxLjEyODkKLSMjIyBzcmMvZ2RiL2RvYy9D aGFuZ2VMb2cJMjAxMi8wMy8yNyAyMDoxNToyMAkxLjEyOTAKLSMjIC0xLDMgKzEsMTIgQEAKLSsy MDEyLTAzLTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFJlbmFtZSBub2RlIHJlZmVyZW5jZQot KwknLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24nIHRvICdkb3RkZWJ1Z19nZGJfc2NyaXB0cyBz ZWN0aW9uJy4KLSsJVHdpY2UuCi0rCSguZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6IFJlbmFt ZSB0aGUgbm9kZSAuLi4KLSsJKGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24pOiAuLi4gaGVy ZS4KLSsJKE1haW50ZW5hbmNlIENvbW1hbmRzKTogQWxzbyByZW5hbWUgdGhpcyBub2RlIHJlZmVy ZW5jZS4KLSsKLSAyMDEyLTAzLTIyICBTaXZhIENoYW5kcmEgUmVkZHkgIDxzaXZhY2hhbmRyYUBn b29nbGUuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChQeXRob24gQVBJL1ZhbHVlcyBGcm9tIElu ZmVyaW9yKTogQWRkIGRlc2NyaXB0aW9uCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx Mi8wMy8yMiAwODoxMDo0MQkxLjkzNgotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDMvMjcgMjA6MTU6MjAJMS45MzcKLUBAIC0yNDcxNyw4ICsyNDcxNyw4IEBACi0gQGZpbGV7QHZh cntvYmpmaWxlfS1nZGIucHl9IGFuZCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24u Ci0gCi0gQG1lbnUKLS0qIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgIFRoZSBAZmlsZXtA dmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotLSogLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246 OiAgVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgotKyogb2JqZmlsZS1nZGIu cHkgZmlsZTo6ICAgICAgICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQot KyogZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbjo6IFRoZSBAY29kZXsuZGVidWdfZ2RiX3Nj cmlwdHN9IHNlY3Rpb24KLSAqIFdoaWNoIGZsYXZvciB0byBjaG9vc2U/OjoKLSBAZW5kIG1lbnUK LSAKLUBAIC0yNDc0NCw3ICsyNDc0NCw3IEBACi0gCi0gQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0 IG9mIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBpbgotIHRoZSBAY29kZXsuZGVidWdfZ2Ri X3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCi0tKEBweHJlZnsuZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbn0pLgotKyhAcHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlv bn0pLgotIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFtZXMgYXJlIG5vdCBwcmludGVk IHdoZW4gQHZhbHVle0dEQk59Ci0gdHJpZXMgdG8gbG9hZCB0aGVtIGFuZCBmYWlscy4gIFRoZXJl IG1heSBiZSBtYW55IG9mIHRoZW0sIGFuZCBwcmludGluZwotIGFuIGVycm9yIG1lc3NhZ2UgZm9y IGVhY2ggb25lIGlzIHByb2JsZW1hdGljLgotQEAgLTI0Nzk1LDcgKzI0Nzk1LDcgQEAKLSBTbyB5 b3VyIEBmaWxley1nZGIucHl9IGZpbGUgc2hvdWxkIGJlIGNhcmVmdWwgdG8gYXZvaWQgZXJyb3Jz IGlmIGl0Ci0gaXMgZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNlLgotIAotLUBub2RlIC5kZWJ1Z19n ZGJfc2NyaXB0cyBzZWN0aW9uCi0rQG5vZGUgZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgot IEBzdWJzdWJzZWN0aW9uIFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSBA Y2luZGV4IEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgotIAotQEAgLTMzNDc1LDcg KzMzNDc1LDcgQEAKLSBtYXRjaGluZyBAdmFye3JlZ2V4cH0uCi0gRm9yIGVhY2ggc2NyaXB0LCB0 aGlzIGNvbW1hbmQgcHJpbnRzIGl0cyBuYW1lIGFzIHNwZWNpZmllZCBpbiB0aGUgb2JqZmlsZSwK LSBhbmQgdGhlIGZ1bGwgcGF0aCBpZiBrbm93bi4KLS1AeHJlZnsuZGVidWdfZ2RiX3NjcmlwdHMg c2VjdGlvbn0uCi0rQHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0uCi0gCi0gQGtp bmRleCBtYWludCBwcmludCBzdGF0aXN0aWNzCi0gQGNpbmRleCBiY2FjaGUgc3RhdGlzdGljcwoK ZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDhv ZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhiZmMxLi4wMDAwMDAw Ci0tLSBhL2dkYi1hdXRvbG9hZC0wOG9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEg KzAsMCBAQAotW3BhdGNoIzQgMi84XSBDb2RlIGNsZWFudXA6IG5ldyBwYXRoIHRvIFZFQyBpbiB1 dGlscy5jCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cw MDA4Ni5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAw MTExLmh0bWwKLSAtIHJlZHVjZWQgZm9yIHRoZSBiYWNrcG9ydAotCi0jIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMi8wNC8xNyAxNTo0NTowNQkxLjE0MTEwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNC8xNyAxNTo0NzowOAkxLjE0MTExCi0jIyAtMSw2ICsxLDM0IEBACi0gMjAxMi0wNC0x NyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlDb2Rl IGNsZWFudXAuCi0rCSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBSZW1vdmUgdmFy aWFibGVzIGl4IGFuZCBlbHQuCi0rCVVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KLSsJKiBlbGZyZWFk LmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92 ZWMsCi0rCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJl bW92ZSB2YXJpYWJsZQotKwlkZWJ1Z2Rpcl9lbmQuICBOZXcgdmFyaWFibGUgZGVidWdkaXJfbGVu LgotKwkqIGdkYl92ZWNzLmggKGZyZWVfY2hhcl9wdHJfdmVjLCBtYWtlX2NsZWFudXBfZnJlZV9j aGFyX3B0cl92ZWMpCi0rCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLCBkaXJuYW1l c190b19jaGFyX3B0cl92ZWMpOiBOZXcKLSsJZGVjbGFyYXRpb25zLgotKwkqIHByb2dzcGFjZS5j IChjbGVhcl9wcm9ncmFtX3NwYWNlX3NvbGliX2NhY2hlKTogUmVtb3ZlIHZhcmlhYmxlcyBpeAot KwlhbmQgZWx0LiAgVXNlIGZyZWVfY2hhcl9wdHJfdmVjLgotKwkqIHNvdXJjZS5jIChhZGRfcGF0 aCk6IFJlbW92ZSB2YXJpYWJsZXMgYXJndiwgYXJnIGFuZCBhcmd2X2luZGV4LgotKwlOZXcgdmFy aWFibGVzIGRpcl92ZWMsIGJhY2tfdG8sIGl4IGFuZCBuYW1lLgotKwlVc2UgZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjX2FwcGVuZC4gIFVzZSBmcmVlYXJndiBpbnN0ZWFkIG9mCi0rCW1ha2VfY2xl YW51cF9mcmVlYXJndi4gIFJlbW92ZSB2YXJpYWJsZSBzZXBhcmF0b3IuICBTaW1wbGlmeSB0aGUg Y29kZQotKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgotKwkob3BlbnAp OiBSZW1vdmUgdmFyaWFibGUgcCwgcDEgYW5kIGxlbi4gIE5ldyB2YXJpYWJsZXMgZGlyX3ZlYywK LSsJYmFja190bywgaXggYW5kIGRpci4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBT aW1wbGlmeSB0aGUgY29kZQotKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9S LgotKwkqIHN5bWZpbGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogTmV3IHZhcmlhYmxl cyBkZWJ1Z2Rpcl92ZWMsCi0rCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJf cHRyX3ZlYy4gIFJlbW92ZSB2YXJpYWJsZQotKwlkZWJ1Z2Rpcl9lbmQuCi0rCSogdXRpbHMuYyAo ZnJlZV9jaGFyX3B0cl92ZWMsIGRvX2ZyZWVfY2hhcl9wdHJfdmVjKQotKwkobWFrZV9jbGVhbnVw X2ZyZWVfY2hhcl9wdHJfdmVjLCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kKQotKwko ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3IGZ1bmN0aW9ucy4KLSsKLSsyMDEyLTA0LTE3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUg Y2xlYW51cC4KLSAJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgYWx3YXlzIHRydWUgY29u ZGl0aW9uYWwgJ3AgPT0gMCcgYW5kCi0gCXVuaW5kZW50IGl0cyBjb2RlIGJsb2NrLgotIAotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDox Mi4wNjcwODYwMTYgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5o CTIwMTItMDQtMTggMDA6NDA6MjMuNDc0MDU2OTkzICswMjAwCi1AQCAtMjUsNCArMjUsMTYgQEAK LSAKLSBERUZfVkVDX1AgKGNoYXJfcHRyKTsKLSAKLSsvKiBGcm9tIHV0aWxzLmM6ICovCi0rCi0r ZXh0ZXJuIHZvaWQgZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92 ZWMpOwotKwotK2V4dGVybiBzdHJ1Y3QgY2xlYW51cCAqCi0rICBtYWtlX2NsZWFudXBfZnJlZV9j aGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOwotKwotK2V4dGVybiB2 b2lkIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVj cCwKLSsJCQkJCSAgICAgY29uc3QgY2hhciAqZGlybmFtZXMpOwotKwotK2V4dGVybiBWRUMgKGNo YXJfcHRyKSAqZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcyk7 Ci0rCi0gI2VuZGlmIC8qIEdEQl9WRUNTX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi91dGlscy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi91dGlscy5jCTIwMTItMDQtMTggMDA6NDA6MTIuMDY4MDg2MDEzICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjQ5Ljg2Mjk4OTg1NSAr MDIwMAotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAotICNp bmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSAjZW5kaWYgLyogSEFWRV9TWVNfUkVTT1VSQ0VfSCAq LwotKyNpbmNsdWRlICJnZGJfdmVjcy5oIgotIAotICNpZmRlZiBUVUkKLSAjaW5jbHVkZSAidHVp L3R1aS5oIgkJLyogRm9yIHR1aV9nZXRfY29tbWFuZF9kaW1lbnNpb24uICAgKi8KLUBAIC0zODM1 LDYgKzM4MzYsOTUgQEAgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1Ywot ICAgcmV0dXJuIG1pbm9yOwotIH0KLSAKLSsvKiBDYWxsIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQg b2YgQ0hBUl9QVFJfVkVDIGFuZCBmaW5hbCBWRUNfZnJlZSBmb3IKLSsgICBDSEFSX1BUUl9WRUMg aXRzZWxmLgotKwotKyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIGl0 IGdvdCByZWdpc3RlcmVkIHdpdGggdGhpcyBmdW5jdGlvbgotKyAgIGJ5IG1ha2VfY2xlYW51cCBh cyB0aGUgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVz LgotKyAgIENvbnRyYXJ5IHRvIFZFQ19mcmVlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5v dCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLwotKwotK3ZvaWQKLStmcmVlX2NoYXJfcHRyX3ZlYyAo VkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYykKLSt7Ci0rICBpbnQgaXg7Ci0rICBjaGFyICpu YW1lOwotKwotKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgY2hhcl9wdHJf dmVjLCBpeCwgbmFtZSk7ICsraXgpCi0rICAgIHhmcmVlIChuYW1lKTsKLSsgIFZFQ19mcmVlIChj aGFyX3B0ciwgY2hhcl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBtYWtlX2NsZWFu dXBfZnJlZV9jaGFyX3B0cl92ZWMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZG9fZnJlZV9jaGFy X3B0cl92ZWMgKHZvaWQgKmFyZykKLSt7Ci0rICBWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVj ID0gYXJnOwotKwotKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGNoYXJfcHRyX3ZlYyk7Ci0rfQotKwot Ky8qIE1ha2UgY2xlYW51cCBoYW5kbGVyIGNhbGxpbmcgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBv ZiBDSEFSX1BUUl9WRUMgYW5kCi0rICAgZmluYWwgVkVDX2ZyZWUgZm9yIENIQVJfUFRSX1ZFQyBp dHNlbGYuCi0rCi0rICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgdGhp cyBjbGVhbnVwIHJlZ2lzdHJhdGlvbiBhcyB0aGUKLSsgICBDSEFSX1BUUl9WRUMgYmFzZSBhZGRy ZXNzIG1heSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuICBDb250cmFyeSB0byBWRUNfZnJlZQotKyAg IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLwot KwotK3N0cnVjdCBjbGVhbnVwICoKLSttYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKFZF QyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpCi0rewotKyAgcmV0dXJuIG1ha2VfY2xlYW51cCAo ZG9fZnJlZV9jaGFyX3B0cl92ZWMsIGNoYXJfcHRyX3ZlYyk7Ci0rfQotKwotKy8qIEV4dGVuZGVk IHZlcnNpb24gb2YgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIC0gYWRkaXRpb25hbGx5IGlmICpW RUNQIGlzCi0rICAgbm9uLU5VTEwgdGhlIG5ldyBsaXN0IGVsZW1lbnRzIGZyb20gRElSTkFNRVMg YXJlIGFwcGVuZGVkIHRvIHRoZSBleGlzdGluZwotKyAgICpWRUNQIGxpc3Qgb2YgZW50cmllcy4g ICpWRUNQIGFkZHJlc3Mgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoaXMgY2FsbC4gICovCi0rCi0rdm9p ZAotK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVj cCwgY29uc3QgY2hhciAqZGlybmFtZXMpCi0rewotKyAgZG8KLSsgICAgewotKyAgICAgIHNpemVf dCB0aGlzX2xlbjsKLSsgICAgICBjaGFyICpuZXh0X2RpciwgKnRoaXNfZGlyOwotKwotKyAgICAg IG5leHRfZGlyID0gc3RyY2hyIChkaXJuYW1lcywgRElSTkFNRV9TRVBBUkFUT1IpOwotKyAgICAg IGlmIChuZXh0X2RpciA9PSBOVUxMKQotKwl0aGlzX2xlbiA9IHN0cmxlbiAoZGlybmFtZXMpOwot KyAgICAgIGVsc2UKLSsJewotKwkgIHRoaXNfbGVuID0gbmV4dF9kaXIgLSBkaXJuYW1lczsKLSsJ ICBuZXh0X2RpcisrOwotKwl9Ci0rCi0rICAgICAgdGhpc19kaXIgPSB4bWFsbG9jICh0aGlzX2xl biArIDEpOwotKyAgICAgIG1lbWNweSAodGhpc19kaXIsIGRpcm5hbWVzLCB0aGlzX2xlbik7Ci0r ICAgICAgdGhpc19kaXJbdGhpc19sZW5dID0gJ1wwJzsKLSsgICAgICBWRUNfc2FmZV9wdXNoIChj aGFyX3B0ciwgKnZlY3AsIHRoaXNfZGlyKTsKLSsKLSsgICAgICBkaXJuYW1lcyA9IG5leHRfZGly OwotKyAgICB9Ci0rICB3aGlsZSAoZGlybmFtZXMgIT0gTlVMTCk7Ci0rfQotKwotKy8qIFNwbGl0 IERJUk5BTUVTIGJ5IERJUk5BTUVfU0VQQVJBVE9SIGRlbGltaXRlciBhbmQgcmV0dXJuIGEgbGlz dCBvZiBhbGwgdGhlCi0rICAgZWxlbWVudHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBGb3Ig ZW1wdHkgc3RyaW5nICgiIikgRElSTkFNRVMgcmV0dXJuCi0rICAgbGlzdCBvZiBvbmUgZW1wdHkg c3RyaW5nICgiIikgZWxlbWVudC4KLSsgICAKLSsgICBZb3UgbWF5IG1vZGlmeSB0aGUgcmV0dXJu ZWQgc3RyaW5ncy4KLSsgICBSZWFkIGZyZWVfY2hhcl9wdHJfdmVjIGZvciBpdHMgY2xlYW51cC4g ICovCi0rCi0rVkVDIChjaGFyX3B0cikgKgotK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29u c3QgY2hhciAqZGlybmFtZXMpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKnJldHZhbCA9IE5VTEw7 Ci0rICAKLSsgIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKCZyZXR2YWwsIGRpcm5h bWVzKTsKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotICNpZmRlZiBIQVZFX1dBSVRQSUQK LSAKLSAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOW9mMjgucGF0 Y2ggYi9nZGItYXV0b2xvYWQtMDlvZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAxMjQ0Y2ZmLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wOW9mMjgucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMTY4ICswLDAgQEAKLVtwYXRjaCM0IDMvOF0gYXV0by1sb2FkOiBy ZXNodWZmbGUgY29kZQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTIt MDQvbXNnMDAwODcuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w NC9tc2cwMDExMi5odG1sCi0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxv YWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCi1AQCAtMCwwICsxLDQ3MiBAQAotKy8qIEdE QiByb3V0aW5lcyBmb3Igc3VwcG9ydGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgotKwotKyAgIENv cHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImF1dG8tbG9h ZC5oIgotKyNpbmNsdWRlICJwcm9nc3BhY2UuaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5o IgotKyNpbmNsdWRlICJnZGJfcmVnZXguaCIKLSsjaW5jbHVkZSAidWktb3V0LmgiCi0rI2luY2x1 ZGUgImZpbGVuYW1lcy5oIgotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCi0rI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24t aW50ZXJuYWwuaCIKLSsKLSsvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBh dXRvLWxvYWRpbmcuCi0rICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0 aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSsgICBmYWxzZSBvdGhlcndpc2Uu Ci0rCi0rICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2Fk IG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKLSsgICBhdXRvLWxvYWRpbmcuCi0rCi0rICAgVGhpcyBm bGFnIGV4aXN0cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0 YXJ0LXVwCi0rICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkg YXVnbWVudCB0aGUgc2VhcmNoIGRpcmVjdG9yaWVzCi0rICAgdXNlZCB0byBmaW5kIHRoZSBzY3Jp cHRzLiAgKi8KLStpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogRm9yIHNj cmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMg bWF5IGxvYWQKLSsgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRp bmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKLSsgICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90 IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKLSsg ICBsb2FkZWQgdGhpcyB3YXkuICAqLwotKwotK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8K LSt7Ci0rICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVk IHNjcmlwdHMuICAqLwotKyAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotKwotKyAgLyog Tm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBz Y3JpcHQgbm90IGJlaW5nCi0rICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlz IHdhcm5pbmcgb25jZS4gICovCi0rICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50 ZWQ7Ci0rfTsKLSsKLSsvKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBs b2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLwotKwotK3N0cnVjdCBsb2FkZWRfc2NyaXB0Ci0r ewotKyAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0rICBjb25zdCBj aGFyICpuYW1lOwotKyAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0 IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCi0rICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLSsgIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aDsKLSt9OwotKwotKy8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEg a2V5LiAgKi8KLStzdGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19s b2FkX3BzcGFjZV9kYXRhOwotKwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX3BzcGFjZV9kYXRh X2NsZWFudXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKLSt7Ci0r ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGlu Zm8gIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykKLSsJ aHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKLSsgICAgICB4ZnJlZSAoaW5mbyk7 Ci0rICAgIH0KLSt9Ci0rCi0rLyogR2V0IHRoZSBjdXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBu b25lIGlzIGZvdW5kIHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKLSsgICBmdW5jdGlvbiBhbHdheXMg cmV0dXJucyBhIHZhbGlkIG9iamVjdC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKgotK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFt X3NwYWNlICpwc3BhY2UpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5m bzsKLSsKLSsgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3Bz cGFjZV9kYXRhKTsKLSsgIGlmIChpbmZvID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbmZvID0g WFpBTExPQyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7Ci0rICAgICAgc2V0X3Byb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEsIGluZm8pOwotKyAg ICB9Ci0rCi0rICByZXR1cm4gaW5mbzsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhl IGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK2hhc2hfbG9h ZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7Ci0rCi0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAo ZS0+bmFtZSk7Ci0rfQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNj cmlwdCBoYXNoLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqZWEgPSBhOwotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsK LSsKLSsgIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKLSt9Ci0rCi0r LyogSW5pdGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi0rICAgRWFj aCBlbnRyeSBpcyBoYXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KLSsKLStzdGF0aWMg dm9pZAotK2luaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8pCi0rewotKyAgLyogQ2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBz aXplIG9mIHRoZSBoYXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmlseS4KLSsgICAgIFNwYWNl IGZvciBlYWNoIGVudHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJl ZSB0aGVtCi0rICAgICBlYXNpbHkuICAqLwotKwotKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3Jp cHRzID0gaHRhYl9jcmVhdGUgKDMxLAotKwkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50 cnksCi0rCQkJCQkgICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCi0rCQkJCQkgICAgIHhmcmVl KTsKLSsKLSsgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9 IEZBTFNFOwotK30KLSsKLSsvKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg dG8gYWxzbyBhbGxvY2F0ZSB0aGUgaGFzaCB0YWJsZQotKyAgIGZvciBsb2FkaW5nIHNjcmlwdHMu ICAqLwotKwotK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotK2dldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0r ewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOwotKyAgaWYgKGluZm8tPmxvYWRlZF9z Y3JpcHRzID09IE5VTEwpCi0rICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Ci0r Ci0rICByZXR1cm4gaW5mbzsKLSt9Ci0rCi0rLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFi bGUgb2YgUFNQQUNFX0lORk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3 YXNuJ3QgZm91bmQuCi0rICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFs cmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotKwotK2ludAotK21heWJlX2FkZF9zY3JpcHQg KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpu YW1lLAotKwkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0rewotKyAgc3RydWN0IGh0YWIgKmh0 YWIgPSBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHM7Ci0rICBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKnNsb3QsIGVudHJ5OwotKyAgaW50IGluX2hhc2hfdGFibGU7Ci0rCi0rICBlbnRyeS5uYW1l ID0gbmFtZTsKLSsgIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIHNsb3QgPSAoc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VS VCk7Ci0rICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLSsKLSsgIC8qIElmIHRoaXMg c2NyaXB0IGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLSsKLSsgIGlmICgh IGluX2hhc2hfdGFibGUpCi0rICAgIHsKLSsgICAgICBjaGFyICpwOwotKwotKyAgICAgIC8qIEFs bG9jYXRlIGFsbCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICov Ci0rICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLSsJCSAgICAgICArIHN0 cmxlbiAobmFtZSkgKyAxCi0rCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVu IChmdWxsX3BhdGgpICsgMSkgOiAwKSk7Ci0rICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNp emVvZiAoKipzbG90KTsKLSsgICAgICBzdHJjcHkgKHAsIG5hbWUpOwotKyAgICAgICgqc2xvdCkt Pm5hbWUgPSBwOwotKyAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLSsJewotKwkgIHAgKz0g c3RybGVuIChwKSArIDE7Ci0rCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotKwkgICgqc2xvdCkt PmZ1bGxfcGF0aCA9IHA7Ci0rCX0KLSsgICAgICBlbHNlCi0rCSgqc2xvdCktPmZ1bGxfcGF0aCA9 IE5VTEw7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBpbl9oYXNoX3RhYmxlOwotK30KLSsKLSsvKiBD bGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCi0rCi0rc3RhdGlj IHZvaWQKLStjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCi0rewotKyAgc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKLSsgIHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRh IChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyAhPSBOVUxMICYm IGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBodGFiX2RlbGV0 ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotKyAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0g TlVMTDsKLSsgICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZB TFNFOwotKyAgICB9Ci0rfQotKwotKy8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFz c29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsKLSt2b2lkCi0rYXV0b19s b2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAq c3VmZml4KQotK3sKLSsgIGNoYXIgKnJlYWxuYW1lOwotKyAgY2hhciAqZmlsZW5hbWUsICpkZWJ1 Z2ZpbGU7Ci0rICBpbnQgbGVuOwotKyAgRklMRSAqaW5wdXQ7Ci0rICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cHM7Ci0rCi0rICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7 Ci0rICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKLSsgIGZpbGVuYW1lID0geG1hbGxvYyAobGVu ICsgc3RybGVuIChzdWZmaXgpICsgMSk7Ci0rICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwg bGVuKTsKLSsgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7Ci0rCi0rICBjbGVhbnVw cyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIHJlYWxuYW1lKTsKLSsKLSsgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotKyAg ZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0rCi0rICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGly ZWN0b3J5KQotKyAgICB7Ci0rICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUg c2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotKyAgICAgIGRlYnVnZmlsZSA9IHht YWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCi0rCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGly ZWN0b3J5KSArIDEpOwotKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVj dG9yeSk7Ci0rICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQg YSAiLyIgaGVyZS4gICovCi0rICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSsK LSsgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotKyAgICAgIGlucHV0ID0g Zm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLSsgICAgfQotKwotKyAgaWYgKCFpbnB1dCAmJiBnZGJf ZGF0YWRpcikKLSsgICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBz dWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQotKwkgZGlyZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1 Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUp Ci0rCQkJICAgKyBzdHJsZW4gKCIvYXV0by1sb2FkIikgKyAxKTsKLSsgICAgICBzdHJjcHkgKGRl YnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8t bG9hZCIpOwotKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVk IGEgIi8iIGhlcmUuICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0r Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9 IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmIChpbnB1dCkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKwot KyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKLSsKLSsgICAgICAvKiBBZGQgdGhp cyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRz IgotKwkgY2FuIHByaW50IGl0LiAgKi8KLSsgICAgICBwc3BhY2VfaW5mbyA9Ci0rCWdldF9hdXRv X2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0r ICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxl KTsKLSsKLSsgICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3Qg Y2hlY2sgZm9yIHdoZXRoZXIgdGhlCi0rCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxl LCBhbmQgYWx3YXlzIGxvYWQgaXQuCi0rCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2Qg ZXZlciBsb2FkIGl0IHR3aWNlLAotKwkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRv IGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKLSsJIGxvYWRzIGFueXdheS4gICovCi0rICAg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1 Z2ZpbGUpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotK30KLSsKLSsv KiBUaGlzIGlzIGEgbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNj cmlwdHMuCi0rCi0rICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3Vw cG9ydGVkLgotKyAgIDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCi0rICAgMikg ZnJvbSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2F1 dG9fbG9hZF9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYg KCFvYmpmaWxlKQotKyAgICB7Ci0rICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGlu ZyBhIG5ldyAibWFpbiIgc3ltYm9sLWZpbGUuICAqLwotKyAgICAgIGNsZWFyX3NlY3Rpb25fc2Ny aXB0cyAoKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSt9Ci0rCi0rLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJl IHByaW50ZWQgaW4gYSB2ZWMuICAqLwotKwotK3R5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQg KmxvYWRlZF9zY3JpcHRfcHRyOwotK0RFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOwotKwot Ky8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KLSsgICBDb2xsZWN0IHRo ZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwotKwotK3N0YXRpYyBpbnQKLStj b2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQotK3sKLSsg IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLSsgIFZFQyAobG9hZGVkX3Nj cmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOwotKwotKyAgaWYgKHJlX2V4ZWMgKHNjcmlw dC0+bmFtZSkpCi0rICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0 c19wdHIsIHNjcmlwdCk7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogUHJpbnQgU0NSSVBU LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3ByaW50X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3Jp cHQgKnNjcmlwdCkKLSt7Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7 Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW47Ci0rCi0rICBjaGFpbiA9IG1ha2VfY2xlYW51cF91 aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Ci0rCi0rICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlz c2luZyIpOwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQt Pm5hbWUpOwotKyAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsgIC8qIElmIHRoZSBu YW1lIGlzbid0IHRoZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCi0rICBpZiAoc2NyaXB0 LT5mdWxsX3BhdGggIT0gTlVMTAotKyAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5uYW1lLCBzY3Jp cHQtPmZ1bGxfcGF0aCkgIT0gMCkKLSsgICAgewotKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwg Ilx0ZnVsbCBuYW1lOiAiKTsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZ1 bGxfcGF0aCIsIHNjcmlwdC0+ZnVsbF9wYXRoKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcbiIpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2hhaW4pOwotK30KLSsKLSsvKiBI ZWxwZXIgZm9yIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBu YW1lLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZv aWQgKmFwLCBjb25zdCB2b2lkICpicCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqYSA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOwotKyAgY29uc3Qgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBi cDsKLSsKLSsgIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOwotK30KLSsK LSsvKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZv aWQKLStpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkp Ci0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rICBzdHJ1Y3QgY2xlYW51cCAq c2NyaXB0X2NoYWluOwotKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlwdHM7Ci0rICBp bnQgbnJfc2NyaXB0czsKLSsKLSsgIGRvbnRfcmVwZWF0ICgpOwotKwotKyAgcHNwYWNlX2luZm8g PSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKwot KyAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCi0rICAgIHsKLSsgICAgICBjaGFyICpyZV9lcnIg PSByZV9jb21wIChwYXR0ZXJuKTsKLSsKLSsgICAgICBpZiAocmVfZXJyKQotKwllcnJvciAoXygi SW52YWxpZCByZWdleHA6ICVzIiksIHJlX2Vycik7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewot KyAgICAgIHJlX2NvbXAgKCIiKTsKLSsgICAgfQotKwotKyAgLyogV2UgbmVlZCB0byBrbm93IHRo ZSBudW1iZXIgb2Ygcm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgotKyAgICAgUGx1cyB3 ZSB3YW50IHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KLSsgICAgIFNvIGZpcnN0IHRyYXZl cnNlIHRoZSBoYXNoIHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLwot KwotKyAgc2NyaXB0cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEwKTsKLSsgIHNj cmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRy KSwgJnNjcmlwdHMpOwotKwotKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2lu Zm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbW1lZGlhdGVfcXVp dCsrOwotKyAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVz aCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCi0rICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAo cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAotKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0cywgJnNjcmlwdHMpOwotKyAgICAgIGltbWVkaWF0ZV9xdWl0LS07Ci0rICAgIH0KLSsK LSsgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7 Ci0rICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3Nj cmlwdHMsCi0rCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotKwotKyAgdWlf b3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAiTG9hZGVkIik7 Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJzY3JpcHQiLCAi U2NyaXB0Iik7Ci0rICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwotKwotKyAgaWYgKG5yX3Nj cmlwdHMgPiAwKQotKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rICAgICAgbG9hZGVkX3NjcmlwdF9w dHIgc2NyaXB0OwotKwotKyAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpLAotKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3Jp cHRzKSwKLSsJICAgICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9zY3JpcHRzX2J5 X25hbWUpOwotKyAgICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQotKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7Ci0r ICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOwotKwotKyAgaWYgKG5yX3Nj cmlwdHMgPT0gMCkKLSsgICAgewotKyAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotKwl1 aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyAl cy5cbiIsCi0rCQkJcGF0dGVybik7Ci0rICAgICAgZWxzZQotKwl1aV9vdXRfbWVzc2FnZSAodWlv dXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cy5cbiIpOwotKyAgICB9Ci0rfQotKwotKy8qIFJl dHVybiBub24temVybyBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BB Q0VfSU5GTyB3YXMgdW5zZXQKLSsgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3 YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAotKyAgIG9mIFBTUEFDRV9J TkZPLiAgKi8KLSsKLStpbnQKLStzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotK3sKLSsgIGludCByZXR2YWwg PSAhcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOwotKwotKyAg cHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gMTsKLSsKLSsg IHJldHVybiByZXR2YWw7Ci0rfQotKwotK3ZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lk KTsKLSsKLSt2b2lkCi0rX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotK3sKLSsgIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQotKyAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLSsKLSsgIG9ic2VydmVy X2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKLSsKLSsgIGFkZF9p bmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotKwkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywK LSsJICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMu XG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0rfQotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAy MTIgKzAyMDAKLUBAIC0wLDAgKzEsMzYgQEAKLSsvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRp bmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZu ZGVmIEFVVE9fTE9BRF9ICi0rI2RlZmluZSBBVVRPX0xPQURfSCAxCi0rCi0rc3RydWN0IHByb2dy YW1fc3BhY2U7Ci0rCi0rZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotKwotK2V4 dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLSsgIGdldF9hdXRvX2xvYWRfcHNw YWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotK2V4 dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm8sCi0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxs X3BhdGgpOwotK2V4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0rCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7Ci0rZXh0ZXJu IGludAotKyAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7Ci0rCi0rI2VuZGlmIC8qIEFVVE9fTE9BRF9IICov Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4KLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA0OTEyMDIxMiArMDIwMAotQEAgLTAsMCArMSwzNCBAQAotK2VjaG8gU2V0dGluZyB1cCB0 aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSsKLStzZXQgY29tcGxhaW50cyAx Ci0rCi0rYiBpbnRlcm5hbF9lcnJvcgotKwotK2IgaW5mb19jb21tYW5kCi0rY29tbWFuZHMKLSsJ c2lsZW50Ci0rCXJldHVybgotK2VuZAotKwotK2RpciBAc3JjZGlyQC8uLi9saWJpYmVydHkKLStk aXIgQHNyY2RpckAvLi4vYmZkCi0rZGlyIEBzcmNkaXJACi0rZGlyIC4KLStzZXQgcHJvbXB0ICh0 b3AtZ2RiKSAKLSsKLStkZWZpbmUgcGRpZQotKyAgaWYgJGFyZ2MgPT0gMQotKyAgICBjYWxsIGR1 bXBfZGllICgkYXJnMCwgMSkKLSsgIGVsc2UKLSsgICAgaWYgJGFyZ2MgPT0gMgotKyAgICAgIGNh bGwgZHVtcF9kaWUgKCRhcmcwLCAkYXJnMSkKLSsgICAgZWxzZQotKyAgICAgIHByaW50ZiAiU3lu dGF4OiBwZGllIGRpZSBbZGVwdGhdXG4iCi0rICAgIGVuZAotKyAgZW5kCi0rZW5kCi0rCi0rZG9j dW1lbnQgcGRpZQotK1ByZXR0eSBwcmludCBhIERXQVJGIERJRS4KLStTeW50YXg6IHBkaWUgZGll IFtkZXB0aF0KLStlbmQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9NYWtlZmlsZS5p bgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTWFrZWZpbGUu aW4JMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9NYWtlZmlsZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjUzLjQ1NTA1ODAzNyArMDIw MAotQEAgLTY4MCw3ICs2ODAsNyBAQCBUQVJHRVRfRkxBR1NfVE9fUEFTUyA9IFwKLSAjIFNGSUxF UyBpcyB1c2VkIGluIGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gYXJjaGl2ZS4KLSAKLSBTRklM RVMgPSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMg YWRhLXRhc2tzLmMgXAotLQlhZGRybWFwLmMgXAotKwlhZGRybWFwLmMgYXV0by1sb2FkLmMgXAot IAlhdXh2LmMgYXgtZ2VuZXJhbC5jIGF4LWdkYi5jIFwKLSAJYmNhY2hlLmMgXAotIAliZmQtdGFy Z2V0LmMgXAotQEAgLTgxOSw3ICs4MTksNyBAQCBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhw dXguaCBzb2xpYi1zCi0gZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2Mr K2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0gZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAotIGNvbW1vbi9jb21tb24tdXRp bHMuaCBjb21tb24veG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAot LWNvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24uaAotK2NvbW1vbi9saW51eC1vc2RhdGEu aCBnZGItZGxmY24uaCBhdXRvLWxvYWQuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFk eSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgotIAotQEAgLTg1 MSw3ICs4NTEsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCi0g CXZlcnNpb24ubyBcCi0gCWFubm90YXRlLm8gXAotIAlhZGRybWFwLm8gXAotLQlhdXh2Lm8gXAot KwlhdXRvLWxvYWQubyBhdXh2Lm8gXAotIAliZmQtdGFyZ2V0Lm8gXAotIAlibG9ja2ZyYW1lLm8g YnJlYWtwb2ludC5vIGZpbmR2YXIubyByZWdjYWNoZS5vIFwKLSAJY2hhcnNldC5vIGNvbnRpbnVh dGlvbnMubyBjb3JlbG93Lm8gZGlzYXNtLm8gZHVtbXktZnJhbWUubyBkZnAubyBcCi1AQCAtMTI1 NSw3ICsxMjU1LDcgQEAgZGlzdGNsZWFuOiBjbGVhbgotIAlybSAtZiBnZGJzZXJ2ZXIvY29uZmln LnN0YXR1cyBnZGJzZXJ2ZXIvY29uZmlnLmxvZwotIAlybSAtZiBnZGJzZXJ2ZXIvdG0uaCBnZGJz ZXJ2ZXIveG0uaCBnZGJzZXJ2ZXIvbm0uaAotIAlybSAtZiBnZGJzZXJ2ZXIvTWFrZWZpbGUgZ2Ri c2VydmVyL2NvbmZpZy5jYWNoZQotLQlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmgg c3RhbXAtaCAuZ2RiaW5pdCBqaXQtcmVhZGVyLmgKLSsJcm0gLWYgbm0uaCBjb25maWcuc3RhdHVz IGNvbmZpZy5oIHN0YW1wLWggZ2RiLWdkYi5nZGIgaml0LXJlYWRlci5oCi0gCXJtIC1mIHkub3V0 cHV0IHlhY2MuYWN0cyB5YWNjLnRtcCB5LnRhYi5oCi0gCXJtIC1mIGNvbmZpZy5sb2cgY29uZmln LmNhY2hlCi0gCXJtIC1mIE1ha2VmaWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9j b25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIg KzAyMDAKLUBAIC0xNjgzOSw3ICsxNjgzOSw3IEBAIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZp Z19saW5rcyAkYWNfY28KLSAkYXNfZWNobyAiI2RlZmluZSBHREJfREVGQVVMVF9IT1NUX0NIQVJT RVQgXCJVVEYtOFwiIiA+PmNvbmZkZWZzLmgKLSAKLSAKLS1hY19jb25maWdfZmlsZXM9IiRhY19j b25maWdfZmlsZXMgTWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251 bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgotK2FjX2NvbmZpZ19maWxlcz0i JGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGli L01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgotIAotIGFjX2NvbmZpZ19jb21tYW5k cz0iJGFjX2NvbmZpZ19jb21tYW5kcyBkZWZhdWx0IgotIAotQEAgLTE3NjA1LDcgKzE3NjA1LDcg QEAgZG8KLSAgICAgImppdC1yZWFkZXIuaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBq aXQtcmVhZGVyLmg6aml0LXJlYWRlci5pbiIgOzsKLSAgICAgIiRhY19jb25maWdfbGlua3NfMSIp IENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyAkYWNfY29uZmlnX2xpbmtzXzEiIDs7Ci0gICAg ICJNYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsKLS0g ICAgIi5nZGJpbml0IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC5nZGJpbml0OmdkYmlu aXQuaW4iIDs7Ci0rICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxF UyBnZGItZ2RiLmdkYiIgOzsKLSAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENP TkZJR19GSUxFUyBkb2MvTWFrZWZpbGUiIDs7Ci0gICAgICJnbnVsaWIvTWFrZWZpbGUiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ251bGliL01ha2VmaWxlIiA7OwotICAgICAiZGF0YS1k aXJlY3RvcnkvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZGF0YS1kaXJl Y3RvcnkvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25m aWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAy MDIgKzAyMDAKLUBAIC0yNDIyLDcgKzI0MjIsNyBAQCBkbmwgIEF0IHRoZSBtb21lbnQsIHdlIGp1 c3QgYXNzdW1lIGl0J3MKLSBBQ19ERUZJTkUoR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VULCAiVVRG LTgiLAotICAgICAgICAgICBbRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0aGUgZGVmYXVs dCBob3N0IGNoYXJhY3RlciBzZXQuXSkKLSAKLS1BQ19PVVRQVVQoTWFrZWZpbGUgLmdkYmluaXQ6 Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01h a2VmaWxlLAotK0FDX09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251 bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAotIFsKLSBjYXNlIHgkQ09ORklH X0hFQURFUlMgaW4KLSB4Y29uZmlnLmg6Y29uZmlnLmluKQotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5 ICswMjAwCi1AQCAtNDIsNiArNDIsNyBAQAotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLSAj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNs dWRlICJhdXRvLWxvYWQuaCIKLSAKLSAvKiBUaGUgc2VsZWN0ZWQgaW50ZXJwcmV0ZXIuICBUaGlz IHdpbGwgYmUgdXNlZCBhcyBhIHNldCBjb21tYW5kCi0gICAgdmFyaWFibGUsIHNvIGl0IHNob3Vs ZCBhbHdheXMgYmUgbWFsbG9jJ2VkIC0gc2luY2UKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjE0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTE4LDMw ICsxOCwxNCBAQAotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgot LSNpbmNsdWRlICJmaWxlbmFtZXMuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotLSNpbmNs dWRlICJnZGJfcmVnZXguaCIKLSAjaW5jbHVkZSAidG9wLmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlv bnMuaCIKLS0jaW5jbHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRlICJnZGJjbWQuaCIKLS0jaW5j bHVkZSAib2JzZXJ2ZXIuaCIKLS0jaW5jbHVkZSAicHJvZ3NwYWNlLmgiCi0gI2luY2x1ZGUgIm9i amZpbGVzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi5oIgotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMu aCIKLS0KLS0vKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRp bmcuCi0tICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUg d2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLS0gICBmYWxzZSBvdGhlcndpc2UuCi0tCi0tICAg Qm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUg dHJ1ZSB0byBlbmFibGUKLS0gICBhdXRvLWxvYWRpbmcuCi0tCi0tICAgVGhpcyBmbGFnIGV4aXN0 cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCi0t ICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0 aGUgc2VhcmNoIGRpcmVjdG9yaWVzCi0tICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8K LS1pbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rI2luY2x1ZGUgImF1dG8tbG9hZC5o IgotIAotICNpZmRlZiBIQVZFX1BZVEhPTgotIAotQEAgLTYwLDMyICs0NCw2IEBAIGludCBnZGJw eV9nbG9iYWxfYXV0b19sb2FkID0gMTsKLSAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93 IHVwd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbnMuICAqLwotICNkZWZpbmUgR0RCUFlfQVVUT19T RUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2NyaXB0cyIKLSAKLS0vKiBGb3Igc2NyaXB0cyBzcGVj aWZpZWQgaW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAot LSAgIHRoZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2Ny aXB0IG11bHRpcGxlIHRpbWVzLAotLSAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmls ZXMgYW5kIHNjcmlwdHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cwotLSAgIGxvYWRlZCB0 aGlzIHdheS4gICovCi0tCi0tc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbwotLXsKLS0gIC8q IEZvciBlYWNoIHByb2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4g ICovCi0tICBzdHJ1Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7Ci0tCi0tICAvKiBOb24temVybyBp ZiB3ZSd2ZSBpc3N1ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3Qg YmVpbmcKLS0gICAgIGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBv bmNlLiAgKi8KLS0gIGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLS19Owot LQotLS8qIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaCB0YWJsZS4gICovCi0tCi0tc3RydWN0IGxvYWRlZF9zY3JpcHQKLS17Ci0tICAvKiBO YW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLS0gIGNvbnN0IGNoYXIgKm5hbWU7 Ci0tICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9y IHdhcyBvdGhlcndpc2UKLS0gICAgIGluYWNjZXNzaWJsZSkuICAqLwotLSAgY29uc3QgY2hhciAq ZnVsbF9wYXRoOwotLX07Ci0tCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nOgotICAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKLSAg ICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMg d2hlbiBhbiBvYmpmaWxlCi1AQCAtOTcsMTM2ICs1NSw2IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0 Ci0gICAgVGhlIGZhY3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLiAgKi8KLSBzdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKLSAKLS0v KiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi0tc3RhdGljIGNvbnN0IHN0cnVjdCBw cm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKLS0KLS1zdGF0aWMgdm9p ZAotLWF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq cHNwYWNlLCB2b2lkICphcmcpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq aW5mbzsKLS0KLS0gIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2Fk X3BzcGFjZV9kYXRhKTsKLS0gIGlmIChpbmZvICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAo aW5mby0+bG9hZGVkX3NjcmlwdHMpCi0tCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0 cyk7Ci0tICAgICAgeGZyZWUgKGluZm8pOwotLSAgICB9Ci0tfQotLQotLS8qIEdldCB0aGUgY3Vy cmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBU aGlzCi0tICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLwotLQot LXN0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLS1nZXRfYXV0b19sb2FkX3Bz cGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotLXsKLS0gIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyA9PSBOVUxM KQotLSAgICB7Ci0tICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8pOwotLSAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2Fk X3BzcGFjZV9kYXRhLCBpbmZvKTsKLS0gICAgfQotLQotLSAgcmV0dXJuIGluZm87Ci0tfQotLQot LS8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQotLXN0 YXRpYyBoYXNodmFsX3QKLS1oYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRh dGEpCi0tewotLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOwotLQotLSAg cmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOwotLX0KLS0KLS0vKiBFcXVhbGl0eSBm dW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0tCi0tc3RhdGljIGludAot LWVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0t ewotLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLS0gIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7Ci0tCi0tICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwg ZWItPm5hbWUpID09IDA7Ci0tfQotLQotLS8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNr IGxvYWRlZCBzY3JpcHRzLgotLSAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBh dGggbmFtZS4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1pbml0X2xvYWRlZF9zY3JpcHRzX2luZm8g KHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotLXsKLS0gIC8qIENo b29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQg YXJiaXRyYXJpbHkuCi0tICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRo IG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQotLSAgICAgZWFzaWx5LiAgKi8KLS0KLS0g IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKLS0JCQkJCSAg ICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAotLQkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0 X2VudHJ5LAotLQkJCQkJICAgICB4ZnJlZSk7Ci0tCi0tICBwc3BhY2VfaW5mby0+c2NyaXB0X25v dF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKLS19Ci0tCi0tLyogV3JhcHBlciBvbiBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUK LS0gICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqCi0tZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAo c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3Bz cGFjZV9pbmZvICppbmZvOwotLQotLSAgaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg KHBzcGFjZSk7Ci0tICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0gTlVMTCkKLS0gICAgaW5p dF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsKLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0K LS0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBIVEFCLgotLSAgIEZVTExfUEFUSCBp cyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotLSAgIFRoZSByZXN1bHQgaXMgdHJ1 ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLS0KLS1z dGF0aWMgaW50Ci0tbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGh0YWIgKmh0YWIsIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKLS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3Nj cmlwdCAqKnNsb3QsIGVudHJ5OwotLSAgaW50IGluX2hhc2hfdGFibGU7Ci0tCi0tICBlbnRyeS5u YW1lID0gbmFtZTsKLS0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLS0gIHNsb3QgPSAo c3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElO U0VSVCk7Ci0tICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLS0KLS0gIC8qIElmIHRo aXMgc2NyaXB0IGlzIG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLS0KLS0gIGlm ICghIGluX2hhc2hfdGFibGUpCi0tICAgIHsKLS0gICAgICBjaGFyICpwOwotLQotLSAgICAgIC8q IEFsbG9jYXRlIGFsbCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4g ICovCi0tICAgICAgKnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLS0JCSAgICAgICAr IHN0cmxlbiAobmFtZSkgKyAxCi0tCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3Ry bGVuIChmdWxsX3BhdGgpICsgMSkgOiAwKSk7Ci0tICAgICAgcCA9ICgoY2hhciopICpzbG90KSAr IHNpemVvZiAoKipzbG90KTsKLS0gICAgICBzdHJjcHkgKHAsIG5hbWUpOwotLSAgICAgICgqc2xv dCktPm5hbWUgPSBwOwotLSAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLS0JewotLQkgIHAg Kz0gc3RybGVuIChwKSArIDE7Ci0tCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotLQkgICgqc2xv dCktPmZ1bGxfcGF0aCA9IHA7Ci0tCX0KLS0gICAgICBlbHNlCi0tCSgqc2xvdCktPmZ1bGxfcGF0 aCA9IE5VTEw7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBpbl9oYXNoX3RhYmxlOwotLX0KLS0KLSAv KiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGlt aXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKLSAgICBmaWxl IG5hbWVzLgotQEAgLTMwMSwyMCArMTI5LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0 cnVjdCBvYmpmaWxlICoKLSAKLSAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5l cmFsLXB1cnBvc2UuICAqLwotIAotLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsIGZpbGUsCi0rICAgICAgaW5faGFzaF90 YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAotIAkJCQkJb3BlbmVk ID8gZnVsbF9wYXRoIDogTlVMTCk7Ci0gCi0gICAgICAgaWYgKCEgb3BlbmVkKQotIAl7Ci0gCSAg LyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2Fi bGUuICAqLwotLQkgIGlmICghIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdf cHJpbnRlZCkKLS0JICAgIHsKLS0JICAgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQg c2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSsJICBpZiAoc2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCi0rCSAgICB3YXJuaW5nIChfKCJNaXNz aW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAotIG9mIGZp bGUgJXNcblwKLSBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3Qg dGhlbS4iKSwKLS0JCSAgICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFt ZSk7Ci0tCSAgICAgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRl ZCA9IFRSVUU7Ci0tCSAgICB9Ci0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpm aWxlLT5uYW1lKTsKLSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTM1NiwxMTYgKzE4MSw2IEBA IGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRvX2NsZWFudXBz IChjbGVhbnVwcyk7Ci0gfQotIAotLS8qIENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlv biBzY3JpcHRzLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLWNsZWFyX3NlY3Rpb25fc2NyaXB0cyAo dm9pZCkKLS17Ci0tICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9n cmFtX3NwYWNlOwotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0g IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKLS0gIGlmIChpbmZvICE9IE5VTEwgJiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkK LS0gICAgewotLSAgICAgIGh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0tICAg ICAgaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBOVUxMOwotLSAgICAgIGluZm8tPnNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7Ci0tICAgIH0KLS19Ci0tCi0tLyogTG9vayBm b3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQg aXQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotLXsKLS0gIGNoYXIgKnJl YWxuYW1lOwotLSAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci0tICBpbnQgbGVuOwotLSAg RklMRSAqaW5wdXQ7Ci0tICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0tCi0tICByZWFsbmFt ZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0tICBsZW4gPSBzdHJsZW4gKHJlYWxu YW1lKTsKLS0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7 Ci0tICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKLS0gIHN0cmNweSAoZmlsZW5h bWUgKyBsZW4sIHN1ZmZpeCk7Ci0tCi0tICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGZpbGVuYW1lKTsKLS0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLS0KLS0gIGlu cHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotLSAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0t Ci0tICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQotLSAgICB7Ci0tICAgICAg LyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJl Y3RvcnkuICAqLwotLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUp Ci0tCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOwotLSAgICAgIHN0 cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICAgICAgLyogRklMRU5B TUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAg c3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLS0KLS0gICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsK LS0gICAgfQotLQotLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLS0gICAgewotLSAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0 YQotLQkgZGlyZWN0b3J5LiAgKi8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4g KGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBzdHJsZW4gKCIvYXV0 by1sb2FkIikgKyAxKTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwot LSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOwotLSAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 Ci0tICAgIH0KLS0KLS0gIGlmIChpbnB1dCkKLS0gICAgewotLSAgICAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotLQotLSAgICAgIG1ha2VfY2xlYW51cF9mY2xv c2UgKGlucHV0KTsKLS0KLS0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFi bGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgotLQkgY2FuIHByaW50IGl0LiAgKi8K LS0gICAgICBwc3BhY2VfaW5mbyA9Ci0tCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICAgICAgbWF5YmVfYWRkX3NjcmlwdCAo cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0tCi0t ICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZv ciB3aGV0aGVyIHRoZQotLQkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFs d2F5cyBsb2FkIGl0LgotLQkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9h ZCBpdCB0d2ljZSwKLS0JIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVt cG90ZW50IHVuZGVyIG11bHRpcGxlCi0tCSBsb2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsK LS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLS19Ci0tCi0tLyogVGhpcyBp cyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgot LQotLSAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4K LS0gICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotLSAgIDIpIGZyb20gLmRl YnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCi0tCi0tc3RhdGljIHZvaWQKLS1hdXRvX2xvYWRf bmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotLXsKLS0gIGlmICghb2JqZmls ZSkKLS0gICAgewotLSAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcg Im1haW4iIHN5bWJvbC1maWxlLiAgKi8KLS0gICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7 Ci0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tCi0tICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAob2JqZmlsZSk7Ci0tfQotLQotIC8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMg Zm9yIE9CSkZJTEUuICAqLwotIAotIHZvaWQKLUBAIC00NzgsMTQ2ICsxOTMsOSBAQCBsb2FkX2F1 dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iCi0gICAgIH0KLSB9Ci0gDAotLS8qIENv bGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KLS0KLS10eXBlZGVmIHN0 cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLS1ERUZfVkVDX1AgKGxvYWRl ZF9zY3JpcHRfcHRyKTsKLS0KLS0vKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVy c2UuCi0tICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8K LS0KLS1zdGF0aWMgaW50Ci0tY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwg dm9pZCAqaW5mbykKLS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7 Ci0tICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKLS0KLS0g IGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQotLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRf c2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotLQotLSAgcmV0dXJuIDE7Ci0tfQot LQotLS8qIFByaW50IFNDUklQVC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1wcmludF9zY3JpcHQg KHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCi0tewotLSAgc3RydWN0IHVpX291dCAqdWlv dXQgPSBjdXJyZW50X3Vpb3V0OwotLSAgc3RydWN0IGNsZWFudXAgKmNoYWluOwotLQotLSAgY2hh aW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwot LQotLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxf cGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKLS0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0 LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKLS0gIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7 Ci0tCi0tICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28u ICAqLwotLSAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKLS0gICAgICAmJiBzdHJjbXAg KHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCi0tICAgIHsKLS0gICAgICB1 aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7Ci0tICAgICAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7Ci0tICAgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKGNo YWluKTsKLS19Ci0tCi0tLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNv cnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCi0tCi0tc3RhdGljIGludAotLXNvcnRfc2NyaXB0 c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0tewotLSAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoq KSBhcDsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqKikgYnA7Ci0tCi0tICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1l LCBiLT5uYW1lKTsKLS19Ci0tCi0tLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQu ICAqLwotLQotLXN0YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0 dGVybiwgaW50IGZyb21fdHR5KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwot LSAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKLS0gIFZFQyAobG9hZGVkX3NjcmlwdF9w dHIpICpzY3JpcHRzOwotLSAgaW50IG5yX3NjcmlwdHM7Ci0tCi0tICBkb250X3JlcGVhdCAoKTsK LS0KLS0gIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9w cm9ncmFtX3NwYWNlKTsKLS0KLS0gIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotLSAgICB7Ci0t ICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Ci0tCi0tICAgICAgaWYgKHJl X2VycikKLS0JZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOwotLSAgICB9 Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICByZV9jb21wICgiIik7Ci0tICAgIH0KLS0KLS0gIC8q IFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0 YWJsZS4KLS0gICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0t ICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRj aGluZyBzY3JpcHRzLiAgKi8KLS0KLS0gIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3Jp cHRfcHRyLCAxMCk7Ci0tICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVw IChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKLS0KLS0gIGlmIChwc3BhY2VfaW5mbyAh PSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotLSAgICB7Ci0t ICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKLS0gICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3Jp cHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotLSAgICAgIGh0YWJf dHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0JCQkgICAg ICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLS0gICAgICBpbW1lZGlhdGVf cXVpdC0tOwotLSAgICB9Ci0tCi0tICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3Nj cmlwdF9wdHIsIHNjcmlwdHMpOwotLSAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9l bmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAotLQkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRz VGFibGUiKTsKLS0KLS0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAi bG9hZGVkIiwgIkxvYWRlZCIpOwotLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1 aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOwotLSAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0 KTsKLS0KLS0gIGlmIChucl9zY3JpcHRzID4gMCkKLS0gICAgewotLSAgICAgIGludCBpOwotLSAg ICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKLS0KLS0gICAgICBxc29ydCAoVkVDX2FkZHJl c3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKLS0JICAgICBWRUNfbGVuZ3RoIChsb2Fk ZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCi0tCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0 ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKLS0gICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0 ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKLS0JcHJpbnRf c2NyaXB0IChzY3JpcHQpOwotLSAgICB9Ci0tCi0tICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWlu KTsKLS0KLS0gIGlmIChucl9zY3JpcHRzID09IDApCi0tICAgIHsKLS0gICAgICBpZiAocGF0dGVy biAmJiAqcGF0dGVybikKLS0JdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2Fk IHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAotLQkJCXBhdHRlcm4pOwotLSAgICAgIGVsc2UKLS0J dWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLS0g ICAgfQotLX0KLS0MCi0gdm9pZAotIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQot IHsKLS0gIGF1dG9fbG9hZF9wc3BhY2VfZGF0YQotLSAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3Bh Y2VfZGF0YV93aXRoX2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLS0K LS0gIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsK LS0KLSAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFz c19zdXBwb3J0LAotIAkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotIFNldCB0aGUgZGVi dWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwK LUBAIC02MjcsMTEgKzIwNSw2IEBAIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiks Ci0gCQkJICAgTlVMTCwgTlVMTCwKLSAJCQkgICAmc2V0bGlzdCwKLSAJCQkgICAmc2hvd2xpc3Qp OwotLQotLSAgYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCi0tCSAgICBpbmZvX2F1dG9f bG9hZF9zY3JpcHRzLAotLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBs b2FkZWQgc2NyaXB0cy5cblwKLS1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQ XSIpKTsKLSB9Ci0gCi0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6MjY6MTQu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhv bi5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCi1AQCAtMjQsOCArMjQsNiBA QAotIAotIHN0cnVjdCBicmVha3BvaW50X29iamVjdDsKLSAKLS1leHRlcm4gaW50IGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQ7Ci0tCi0gZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXph dGlvbiAodm9pZCk7Ci0gCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAo c3RydWN0IGNvbW1hbmRfbGluZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjI4 LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEwb2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggYzU5Njk4Mi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTBvZjI4LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTcwNCArMCwwIEBACi1bcGF0Y2gjNCA0LzhdIHNldCBhdXRv LWxvYWQgKiBtYWluIHBhcnQKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA0L21zZzAwMDg4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDQvbXNnMDAxMTMuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo0OToxMQkxLjE0MTEyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1MTo0 MQkxLjE0MTEzCi0jIyAtMSw1ICsxLDEwMSBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJYXV0by1sb2FkOiBJbXBsZW1lbnRh dGlvbi4KLSsJKiBORVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAot KwkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMiLAotKwkiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kICJpbmZvIGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGIiLgotKwlEZXByZWNhdGUgImluZm8gYXV0by1sb2FkLXNjcmlwdHMi LCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKLSsJYW5kICJzaG93IGF1dG8tbG9hZC1z Y3JpcHRzIi4gIE5ldyBkZXNjcmlwdGlvbiBmb3IgInNldCBhdXRvLWxvYWQiLAotKwkic2hvdyBh dXRvLWxvYWQiLCAic2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsCi0rCSJzaG93IGF1dG8tbG9h ZCBnZGItc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJInNob3cg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIs Ci0rCSJzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwgInNldCBhdXRvLWxvYWQgbGlidGhy ZWFkLWRiIiBhbmQKLSsJInNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCi0rCSogYXV0by1s b2FkLmM6IFJlbW92ZSBpbmNsdWRlIHB5dGhvbi9weXRob24taW50ZXJuYWwuaC4gIEFkZCBpbmNs dWRlcwotKwlleGNlcHRpb25zLmgsIGNsaS9jbGktc2NyaXB0LmgsIGdkYmNtZC5oLCBjbGkvY2xp LWRlY29kZS5oIGFuZAotKwljbGkvY2xpLXNldHNob3cuaC4KLSsJKEdEQl9BVVRPX0ZJTEVfTkFN RSwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpCi0rCShhdXRvX2xvYWRfZ2RiX3Njcmlw dHMsIHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzKTogTmV3LgotKwkoZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCk6IFJlbmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4K LSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRo bmFtZSkKLSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCwgc2hvd19hdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdCkKLSsJKHNjcmlwdF9sYW5ndWFnZV9nZGIsIHNvdXJjZV9nZGJfc2NyaXB0 X2Zvcl9vYmpmaWxlKTogTmV3LgotKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQg bGFuZ3VhZ2UuCi0rCShoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksIGVxX2xvYWRlZF9zY3JpcHRf ZW50cnkpOiBDYWxjdWxhdGUgYWxzbwotKwlMQU5HVUFHRS4KLSsJKG1heWJlX2FkZF9zY3JpcHQp OiBBZGQgcGFyYW1ldGVyIGxhbmd1YWdlLiAgRHJvcCByZWR1bmRhbnQKLSsJZW50cnkuZnVsbF9w YXRoIGluaXRpYWxpemF0aW9uLiAgSW5pdGlhbGl6ZSBlbnRyeS5sYW5ndWFnZSBhbmQKLSsJKCpz bG90KS0+bGFuZ3VhZ2UuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFuZ2UgcGFy YW1ldGVyIHN1ZmZpeCB0byBsYW5ndWFnZS4KLSsJUmVtb3ZlIHRoZSBjYWxsIG9mIG1heWJlX2Fk ZF9zY3JpcHQuCi0rCUNhbGwgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUuCi0r CShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSwgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0c19kYXRhKToKLSsJTmV3LgotKwkoY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzKTogQWRq dXN0IGl0IGZvcgotKwlzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpOiBOZXcgdmFyaWFibGUuCi0rCShpbmZv X2F1dG9fbG9hZF9zY3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX2luZm9fc2Ny aXB0cyk6IC4uLiBoZXJlLCBhZGQgcGFyYW1ldGVyIGxhbmd1YWdlLiAgQWRqdXN0IGl0Ci0rCWZv ciBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShpbmZvX2F1dG9fbG9h ZF9nZGJfc2NyaXB0cywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJKHNldF9hdXRv X2xvYWRfY21kLCBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0LCBzaG93X2F1dG9fbG9hZF9jbWQp Ci0rCShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgaW5mb19hdXRvX2xvYWRfY21kKQotKwko YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQpOiBOZXcuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xv YWQpOiBNb3ZlIGFkZF9pbmZvIG9mICJhdXRvLWxvYWQtc2NyaXB0cyIgdG8KLSsJcHl0aG9uL3B5 LWF1dG8tbG9hZC5jLiAgTmV3IGluc3RhbGxtZW50IGZvciAic2V0IGF1dG8tbG9hZCBnZGItc2Ny aXB0cyIsCi0rCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQiIGFuZAotKwkiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIuCi0rCSog YXV0by1sb2FkLmggKHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UpOiBOZXcuCi0rCShnZGJweV9nbG9i YWxfYXV0b19sb2FkKTogUmVuYW1lIHRvIC4uLgotKwkoZ2xvYmFsX2F1dG9fbG9hZCk6IC4uLiBo ZXJlLgotKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X3BhdGhuYW1lKQotKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkKTogTmV3IGRlY2xh cmF0aW9ucy4KLSsJKG1heWJlX2FkZF9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGxhbmd1YWdlLgot KwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8g bGFuZ3VhZ2UuCi0rCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSwgYXV0b19sb2FkX2lu Zm9fc2NyaXB0c19wYXR0ZXJuX25sKQotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0cywgYXV0b19s b2FkX3NldF9jbWRsaXN0X2dldCkKLSsJKGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBhdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogbGludXgt dGhyZWFkLWRiLmM6IEluY2x1ZGUgYXV0by1sb2FkLmggYW5kIGN0eXBlLmguCi0rCShhdXRvX2xv YWRfdGhyZWFkX2RiLCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIpOiBOZXcuCi0rCShzdHJ1Y3Qg dGhyZWFkX2RiX2luZm8pOiBOZXcgZmllbGQgZmlsZW5hbWUuCi0rCShkZWxldGVfdGhyZWFkX2Ri X2luZm8pOiBDYWxsIHhmcmVlIGZvciBGSUxFTkFNRS4KLSsJKHRyeV90aHJlYWRfZGJfbG9hZCk6 IEluaXRpYWxpemUgRklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyLCB0 cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBSZXR1cm4KLSsJaWYgIUFVVE9fTE9BRF9USFJF QURfREIuCi0rCShpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSwgaW5mb19hdXRv X2xvYWRfbGlidGhyZWFkX2RiKTogTmV3LgotKwkoX2luaXRpYWxpemVfdGhyZWFkX2RiKTogSW5z dGFsbCBhdXRvX2xvYWRfdGhyZWFkX2RiCi0rCWFzICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1k YiIgYW5kIGluc3RhbGwgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiCi0rCWFzICJpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IFJlbmFt ZSBnZGJweV9nbG9iYWxfYXV0b19sb2FkIHRvCi0rCWdsb2JhbF9hdXRvX2xvYWQuICBJbml0aWFs aXplIEFVVE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGFuZAotKwlBVVRPX0xPQURfTE9D QUxfR0RCSU5JVF9MT0FERUQuCi0rCShwcmludF9nZGJfaGVscCk6IEV4dGVuZCB0aGUgaGVscCBm b3IgJ2xvY2FsIGluaXQgZmlsZScuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jOiBSZW1vdmUg YSBjb21tZW50IGFib3V0IGdkYiBzY3JpcHRzIGV4dGVuc2lvbi4KLSsJKEdEQlBZX0FVVE9fU0VD VElPTl9OQU1FKTogRXh0ZW5kIHRoZSBjb21tZW50IGl0IGlzIFB5dGhvbiBzcGVjaWZpYy4KLSsJ KGF1dG9fbG9hZF9zY3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzKTogLi4uIGhlcmUsIHVwZGF0ZSB0aGUgY29tbWVudC4KLSsJKGdkYnB5X2xvYWRfYXV0 b19zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcgZGVjbGFyYXRpb24uCi0rCShzaG93X2F1dG9fbG9h ZF9weXRob25fc2NyaXB0cywgc2NyaXB0X2xhbmd1YWdlX3B5dGhvbikKLSsJKGdkYnB5X2xvYWRf YXV0b19zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcuCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRz KTogUmVmYWN0b3IgdGhlIGNvZGUuCi0rCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6 IFJlbmFtZSB0byAuLi4KLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTog Li4uIGhlcmUsIHVwZGF0ZSB0aGUKLSsJYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IGNhbGxlciwg ZHJvcCBHREJQWV9HTE9CQUxfQVVUT19MT0FEIGNoZWNraW5nLgotKwkoaW5mb19hdXRvX2xvYWRf cHl0aG9uX3NjcmlwdHMpOiBOZXcuCi0rCShnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5l dyB2YXJpYWJsZXMgY21kIGFuZCBjbWRfbmFtZS4KLSsJUmVuYW1lICJzZXQgYXV0by1sb2FkLXNj cmlwdHMiIHRvICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4KLSsJUmVnaXN0ZXIgInNl dCBhdXRvLWxvYWQtc2NyaXB0cyIgYXMgaXRzIGRlcHJlY2F0ZWQgYWxpYXMuICBSZWdpc3Rlcgot KwkiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLiAgUmVnaXN0ZXIgImluZm8gYXV0by1s b2FkLXNjcmlwdHMiIGFzCi0rCWl0cyBkZXByZWNhdGVkIGFsaWFzLgotKwkobG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2Ny aXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLgotKwkqIHB5dGhvbi9weXRob24uaCAobG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1 dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLgotKwotKzIwMTItMDQtMTcgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJYXV0by1sb2FkOiBN b3ZlIGZpbGVzLgotIAkqIE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgYXV0by1sb2FkLmMuCi0g CShIRklMRVNfTk9fU1JDRElSKTogQWRkIGF1dG8tbG9hZC5oLgotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MDIuMDM1NzM3NjQ0ICsw MjAwCi1AQCAtMjgsNiArMjgsNDUgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxk L2djYy9leHByLmMsIGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcg Y29tbWFuZHMKLSsKLSsgICoqICJpbmZvIGF1dG8tbG9hZCIgc2hvd3Mgc3RhdHVzIG9mIGFsbCBr aW5kcyBvZiBhdXRvLWxvYWRlZCBmaWxlcywKLSsgICAgICJpbmZvIGF1dG8tbG9hZCBnZGItc2Ny aXB0cyIgc2hvd3Mgc3RhdHVzIG9mIGF1dG8tbG9hZGluZyBHREIgY2FubmVkCi0rICAgICBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIK LSsgICAgIHNob3dzIHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgUHl0aG9uIHNjcmlwdCBmaWxlcywK LSsgICAgICJpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBzaG93cyBzdGF0dXMgb2YgbG9h ZGluZyBpbml0IGZpbGUKLSsgICAgICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBh bmQgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgc2hvd3MKLSsgICAgIHN0YXR1cyBvZiBp bmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5IGxvYWRpbmcu Ci0rCi0rICAqKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlw dHMgb258b2ZmIgotKyAgICAgYW5kICJzaG93IGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kcyBo YXZlIGJlZW4gZGVwcmVjYXRlZCwgdXNlIHRoZWlyCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYiCi0rICAg ICBhbmQgInNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiBjb3VudGVycGFydHMgaW5zdGVh ZC4KLSsKLSsqIE5ldyBvcHRpb25zCi0rCi0rc2V0IGF1dG8tbG9hZCBvZmYKLSsgIERpc2FibGUg YXV0by1sb2FkaW5nIGdsb2JhbGx5LgotKwotK3Nob3cgYXV0by1sb2FkCi0rICBTaG93IGF1dG8t bG9hZGluZyBzZXR0aW5nIG9mIGFsbCBraW5kcyBvZiBhdXRvLWxvYWRlZCBmaWxlcy4KLSsKLStz ZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgotK3Nob3cgYXV0by1sb2FkIGdkYi1zY3Jp cHRzCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBj b21tYW5kcyBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgot K3Nob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBv ZiBQeXRob24gc2NyaXB0IGZpbGVzLgotKwotK3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCBv bnxvZmYKLStzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rICBDb250cm9sIGxvYWRpbmcg b2YgaW5pdCBmaWxlICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStzZXQg YXV0by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIKLSsgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBk ZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCi0rCi0gKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMK LSAKLSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14 IGJ1dCBleGVjdXRlIGl0Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9h ZC5jCTIwMTItMDQtMTggMDA6NDQ6MjYuOTUwNDM3NTIwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAy MDAKLUBAIC0yNywxOSArMjcsOTIgQEAKLSAjaW5jbHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRl ICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotLSNpbmNsdWRlICJweXRob24v cHl0aG9uLWludGVybmFsLmgiCi0rI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAi Y2xpL2NsaS1zY3JpcHQuaCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImNsaS9j bGktZGVjb2RlLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgotKwotKy8qIFRoZSBz dWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBj b21tYW5kIGZpbGVzLgotKyAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28s IGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KLSsjZGVmaW5lIEdEQl9BVVRPX0ZJTEVfTkFN RSAiLWdkYi5nZGIiCi0rCi0rc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkJICAgY29uc3Qg Y2hhciAqZmlsZW5hbWUpOwotKwotKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9k aXNhYmxlIGF1dG8tbG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUKLSsgICBzY3JpcHRzOgot KyAgIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCi0rICAgVGhpcyBpcyB0cnVlIGlm IHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQot KyAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9h ZF9nZGJfc2NyaXB0cyA9IDE7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xv YWRfZ2RiX3NjcmlwdHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGlu dCBmcm9tX3R0eSwKLSsJCQkgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNo YXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGlu ZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzICIKLSsJCQkgICAgInNjcmlwdHMgaXMg JXMuXG4iKSwKLSsJCSAgICB2YWx1ZSk7Ci0rfQotIAotIC8qIEludGVybmFsLXVzZSBmbGFnIHRv IGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZy4KLSAgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hv dWxkIGF1dG8tbG9hZCBweXRob24gY29kZSB3aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAotICAg IGZhbHNlIG90aGVyd2lzZS4KLSAKLS0gICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5 X2dsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQotKyAgIEJvdGggYXV0b19s b2FkX3NjcmlwdHMgJiYgZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0g ICAgYXV0by1sb2FkaW5nLgotIAotICAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBk ZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotICAgIHVudGlsIGFmdGVyIC4v LmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3Rv cmllcwotICAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0taW50IGdkYnB5X2dsb2Jh bF9hdXRvX2xvYWQgPSAxOwotK2ludCBnbG9iYWxfYXV0b19sb2FkID0gMTsKLSsKLSsvKiBBdXRv LWxvYWQgLmdkYmluaXQgZmlsZSBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeT8gICovCi0raW50 IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0ID0gMTsKLSsKLSsvKiBBYnNvbHV0ZSBwYXRobmFtZSB0 byB0aGUgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQsIGlmIGl0IGV4aXN0cy4gICovCi0rY2hh ciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBOVUxMOwotKwotKy8qIEJvb2xl YW4gdmFsdWUgaWYgQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5BTUUgaGFzIGJlZW4gbG9h ZGVkLiAgKi8KLStpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMDsKLSsKLSsv KiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0IGNvbmZpZ3Vy YXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgICAg ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAg ZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlw dCBmcm9tIGN1cnJlbnQgIgotKwkJCSAgICAiZGlyZWN0b3J5IGlzICVzLlxuIiksCi0rCQkgICAg dmFsdWUpOwotK30KLSsKLSsvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RC IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKLSsgID0geyBHREJfQVVUT19G SUxFX05BTUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIH07Ci0rCi0rc3RhdGljIHZv aWQKLStzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIEZJTEUgKmZpbGUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUg aGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgICAgY2Fu IHByaW50IGl0LiAgKi8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1heWJlX2FkZF9zY3Jp cHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2Ri KTsKLSsKLSsgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAg c2NyaXB0X2Zyb21fZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKyAgICB9Ci0rICBleGNlcHRpb25f cHJpbnQgKGdkYl9zdGRlcnIsIGUpOwotK30KLSAKLSAvKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQg aW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAotICAgIHRo ZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11 bHRpcGxlIHRpbWVzLAotQEAgLTYyLDkgKzEzNSwxMiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAot IHsKLSAgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLwotICAgY29uc3Qg Y2hhciAqbmFtZTsKLSsKLSAgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdh c24ndCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQotICAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0g ICBjb25zdCBjaGFyICpmdWxsX3BhdGg7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1 YWdlICpsYW5ndWFnZTsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAg Ki8KLUBAIC0xMDksNyArMTg1LDcgQEAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2 b2lkICpkYQotIHsKLSAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLSAK LS0gIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLSsgIHJldHVybiBodGFiX2hh c2hfc3RyaW5nIChlLT5uYW1lKSBeIGh0YWJfaGFzaF9wb2ludGVyIChlLT5sYW5ndWFnZSk7Ci0g fQotIAotIC8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAg Ki8KLUBAIC0xMjAsNyArMTk2LDcgQEAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9p ZCAqYSwgYwotICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLSAgIGNvbnN0 IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7Ci0gCi0tICByZXR1cm4gc3RyY21wIChlYS0+ bmFtZSwgZWItPm5hbWUpID09IDA7Ci0rICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5h bWUpID09IDAgJiYgZWEtPmxhbmd1YWdlID09IGViLT5sYW5ndWFnZTsKLSB9Ci0gCi0gLyogSW5p dGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi1AQCAtMTU2LDIwICsy MzIsMjEgQEAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAocwotICAgcmV0 dXJuIGluZm87Ci0gfQotIAotLS8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBT UEFDRV9JTkZPLgotLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZv dW5kLgotLSAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGlu IHRoZSBoYXNoIHRhYmxlLiAgKi8KLSsvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8g aGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KLSsgICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUg c2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsgICB0cnVlIGlmIHRoZSBzY3Jp cHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotIAotIGludAotLW1heWJlX2Fk ZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25z dCBjaGFyICpuYW1lLAotLQkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0rbWF5YmVfYWRkX3Nj cmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0rCQkgIGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCSAgY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0IGh0YWIgKmh0YWIgPSBw c3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHM7Ci0gICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNs b3QsIGVudHJ5OwotICAgaW50IGluX2hhc2hfdGFibGU7Ci0gCi0gICBlbnRyeS5uYW1lID0gbmFt ZTsKLS0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIGVudHJ5Lmxhbmd1YWdlID0g bGFuZ3VhZ2U7Ci0gICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRf c2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOwotICAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9 IE5VTEw7Ci0gCi1AQCAtMTk0LDYgKzI3MSw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBh dXRvX2xvYWRfcHNwYWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0g TlVMTDsKLSsgICAgICAoKnNsb3QpLT5sYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgICB9Ci0gCi0g ICByZXR1cm4gaW5faGFzaF90YWJsZTsKLUBAIC0yMTYsMTAgKzI5NCwxMiBAQCBjbGVhcl9zZWN0 aW9uX3NjcmlwdHMgKHZvaWQpCi0gICAgIH0KLSB9Ci0gCi0tLyogTG9vayBmb3IgdGhlIGF1dG8t bG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLwotKy8q IExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGluIExBTkdVQUdFIGFzc29jaWF0ZWQgd2l0 aCBPQkpGSUxFIGFuZCBsb2FkCi0rICAgaXQuICAqLwotIAotIHZvaWQKLS1hdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgp Ci0rYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJ CQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIGNoYXIg KnJlYWxuYW1lOwotICAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci1AQCAtMjI5LDkgKzMw OSw5IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIHJl YWxuYW1lID0gZ2RiX3JlYWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKLSAgIGxlbiA9IHN0cmxlbiAo cmVhbG5hbWUpOwotLSAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKHN1ZmZpeCkg KyAxKTsKLSsgIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChsYW5ndWFnZS0+c3Vm Zml4KSArIDEpOwotICAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBzdHJj cHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwotKyAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwg bGFuZ3VhZ2UtPnN1ZmZpeCk7Ci0gCi0gICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUs IGZpbGVuYW1lKTsKLSAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLUBAIC0yNjks MjcgKzM0OSwzMyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0g Ci0gICBpZiAoaW5wdXQpCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbzsKLS0KLSAgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7 Ci0gCi0tICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICovCi0tICAgICAgcHNw YWNlX2luZm8gPQotLQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0tCi0gICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3Rp bmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQotIAkgc2NyaXB0IHdh cyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgotIAkgSXQncyBoaWdo bHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSAJIGFuZCB0aGVzZSBz Y3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBs b2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLSsgICAgICBsYW5ndWFnZS0+c291cmNlX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAgIH0KLSAK LSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gfQotIAotKy8qIExvYWQgYW55IGF1dG8tbG9h ZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUuICAqLwotKwotK3ZvaWQKLStsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYgKCFnbG9i YWxfYXV0b19sb2FkKQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoYXV0b19sb2FkX2dkYl9zY3Jp cHRzKQotKyAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFu Z3VhZ2VfZ2RiKTsKLSsKLSsgIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChv YmpmaWxlKTsKLSt9Ci0rCi0gLyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxi YWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgotIAotICAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9h ZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KLUBAIC0zMTQsNiArNDAwLDEzIEBAIGF1dG9fbG9h ZF9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm8KLSB0eXBlZGVmIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLSBERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRy KTsKLSAKLStzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEKLSt7Ci0rICBWRUMg KGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcDsKLSsKLSsgIGNvbnN0IHN0cnVjdCBzY3Jp cHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOwotK307Ci0rCi0gLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZv ciBodGFiX3RyYXZlcnNlLgotICAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhl IHJlZ2V4cC4gICovCi0gCi1AQCAtMzIxLDEwICs0MTQsMTAgQEAgc3RhdGljIGludAotIGNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCi0gewotICAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0 X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87Ci0rICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19z Y3JpcHRzX2RhdGEgKmRhdGEgPSBpbmZvOwotIAotLSAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFt ZSkpCi0tICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIs IHNjcmlwdCk7Ci0rICBpZiAoc2NyaXB0LT5sYW5ndWFnZSA9PSBkYXRhLT5sYW5ndWFnZSAmJiBy ZV9leGVjIChzY3JpcHQtPm5hbWUpKQotKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0 X3B0ciwgKmRhdGEtPnNjcmlwdHNfcCwgc2NyaXB0KTsKLSAKLSAgIHJldHVybiAxOwotIH0KLUBA IC0zNjYsMTAgKzQ1OSwxOCBAQCBzb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAs IGNvCi0gICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSB9Ci0gCi0t LyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotKy8qIFNwZWNpYWwgaW50 ZXJuYWwgR0RCIHZhbHVlIG9mIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMncyBQQVRURVJOIGlkZW50 aWZ5Ci0rICAgdGhlICJpbmZvIGF1dG8tbG9hZCBYWFgiIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0 ZWQgdGhyb3VnaCB0aGUgZ2VuZXJhbAotKyAgICJpbmZvIGF1dG8tbG9hZCIgaW52b2NhdGlvbi4g IEV4dHJhIG5ld2xpbmUgd2lsbCBiZSBwcmludGVkIGlmIG5lZWRlZC4gICovCi0rY2hhciBhdXRv X2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmxbXSA9ICIiOwotKwotKy8qIEltcGxlbWVudGF0 aW9uIGZvciAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCi0rICAgKGFuZCAiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiKS4gIExpc3Qgc2NyaXB0cyBpbiBMQU5HVUFHRSBtYXRjaGlu ZwotKyAgIFBBVFRFUk4uICBGUk9NX1RUWSBpcyB0aGUgdXN1YWwgR0RCIGJvb2xlYW4gZm9yIHVz ZXIgaW50ZXJhY3Rpdml0eS4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1pbmZvX2F1dG9fbG9hZF9z Y3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rdm9pZAotK2F1dG9fbG9hZF9p bmZvX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSwKLSsJCQljb25zdCBzdHJ1 Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1Y3QgdWlfb3V0ICp1aW91 dCA9IGN1cnJlbnRfdWlvdXQ7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKLUBAIC00MDIsMTQgKzUwMywyMiBAQCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChj aGFyICpwYXR0ZXJuLCBpCi0gCi0gICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLSAgICAgewotKyAgICAgIHN0cnVjdCBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSBkYXRhID0geyAmc2NyaXB0cywgbGFuZ3VhZ2UgfTsK LSsKLSAgICAgICBpbW1lZGlhdGVfcXVpdCsrOwotICAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRv IHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCi0gICAgICAg aHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAotLQkJ CSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNjcmlwdHMpOwotKwkJCSAgICAgIGNv bGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJmRhdGEpOwotICAgICAgIGltbWVkaWF0ZV9xdWl0LS07 Ci0gICAgIH0KLSAKLSAgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cyk7Ci0rCi0rICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRlZCByaWdodCBieSBwcmVj ZWRpbmcgImdkYi1zY3JpcHRzOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5z LiAgKi8KLSsgIGlmIChucl9zY3JpcHRzID4gMCAmJiBwYXR0ZXJuID09IGF1dG9fbG9hZF9pbmZv X3NjcmlwdHNfcGF0dGVybl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsK LSAgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2Ny aXB0cywKLSAJCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0gCi1AQCAtNDQx LDYgKzU1MCwyOSBAQCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpCi0g ICAgIH0KLSB9Ci0gCi0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRz Ii4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cyAoY2hh ciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMg KHBhdHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rfQotKwotKy8qIElt cGxlbWVudCAnaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0raW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotK3sKLSsgIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9PSBOVUxM KQotKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgd2FzIG5vdCBm b3VuZC5cbiIpKTsKLSsgIGVsc2UgaWYgKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCkK LSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMg YmVlbiBsb2FkZWQuXG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5h bWUpOwotKyAgZWxzZQotKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZp bGUgXCIlc1wiIGhhcyBub3QgYmVlbiBsb2FkZWQuXG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfcGF0aG5hbWUpOwotK30KLSsKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NS SVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0Ci0g ICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9G T1VORF9XQVJOSU5HX1BSSU5URUQKLSAgICBvZiBQU1BBQ0VfSU5GTy4gICovCi1AQCAtNDU1LDYg KzU4NywxMzIgQEAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYQotICAg cmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogVGhlIG9ubHkgdmFsaWQgInNldCBhdXRvLWxvYWQi IGFyZ3VtZW50IGlzIG9mZnwwfG5vfGRpc2FibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0 X2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqbGlzdDsKLSsgIHNpemVfdCBsZW5ndGg7Ci0rCi0rICAvKiBTZWUg cGFyc2VfYmluYXJ5X29wZXJhdGlvbiBpbiB1c2UgYnkgdGhlIHN1Yi1jb21tYW5kcy4gICovCi0r Ci0rICBsZW5ndGggPSBhcmdzID8gc3RybGVuIChhcmdzKSA6IDA7Ci0rCi0rICB3aGlsZSAobGVu Z3RoID4gMCAmJiAoYXJnc1tsZW5ndGggLSAxXSA9PSAnICcgfHwgYXJnc1tsZW5ndGggLSAxXSA9 PSAnXHQnKSkKLSsgICAgbGVuZ3RoLS07Ci0rCi0rICBpZiAobGVuZ3RoID09IDAgfHwgKHN0cm5j bXAgKGFyZ3MsICJvZmYiLCBsZW5ndGgpICE9IDAKLSsJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3Ms ICIwIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAibm8iLCBsZW5n dGgpICE9IDAKLSsJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICJkaXNhYmxlIiwgbGVuZ3RoKSAh PSAwKSkKLSsgICAgZXJyb3IgKF8oIlZhbGlkIGlzIG9ubHkgZ2xvYmFsICdzZXQgYXV0by1sb2Fk IG5vJzsgIgotKwkgICAgICJvdGhlcndpc2UgY2hlY2sgdGhlIGF1dG8tbG9hZCBzdWItY29tbWFu ZHMuIikpOwotKwotKyAgZm9yIChsaXN0ID0gKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCk7 IGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCi0rICAgIGlmIChsaXN0LT52YXJfdHlw ZSA9PSB2YXJfYm9vbGVhbikKLSsgICAgICB7Ci0rCWdkYl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0g c2V0X2NtZCk7Ci0rCWRvX3NldHNob3dfY29tbWFuZCAoYXJncywgZnJvbV90dHksIGxpc3QpOwot KyAgICAgIH0KLSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSAic2V0IGF1dG8tbG9hZCAiIGNvbW1hbmRz IHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KgotK2F1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0r ICAgIGFkZF9wcmVmaXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNldF9h dXRvX2xvYWRfY21kLCBfKCJcCi0rQXV0by1sb2FkaW5nIHNwZWNpZmljIHNldHRpbmdzLlxuXAot K0NvbmZpZ3VyZSB2YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhc1xu XAotK2F1dG9tYXRpYyBsb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLiIpLAotKwkJICAgICZyZXR2 YWwsICJzZXQgYXV0by1sb2FkICIsCi0rCQkgICAgMS8qYWxsb3ctdW5rbm93biovLCAmc2V0bGlz dCk7Ci0rCi0rICByZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAic2hvdyBhdXRv LWxvYWQiIGRpc3BsYXlzIHN1bW1hcnkgb2YgYWxsIHRoZSBjdXJyZW50Ci0rICAgInNob3cgYXV0 by1sb2FkICIgc2V0dGluZ3MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRf Y21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgY21kX3Nob3dfbGlzdCAoKmF1 dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpLCBmcm9tX3R0eSwgIiIpOwotK30KLSsKLSsvKiBJ bml0aWFsaXplICJzaG93IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0 LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9hZF9zaG93X2Nt ZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq cmV0dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAo ImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzaG93X2F1dG9fbG9hZF9jbWQsIF8oIlwK LStTaG93IGF1dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKLStTaG93IGNvbmZpZ3Vy YXRpb24gb2YgdmFyaW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwK LSthdXRvbWF0aWMgbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0dmFs LCAic2hvdyBhdXRvLWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZzaG93bGlz dCk7Ci0rCi0rICByZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAiaW5mbyBhdXRv LWxvYWQiIGRpc3BsYXlzIHdoZXRoZXIgdGhlIHZhcmlvdXMgYXV0by1sb2FkIGZpbGVzIGhhdmUK LSsgICBiZWVuIGxvYWRlZC4gIFRoaXMgaXMgcmVpbXBsZW1lbnRhdGlvbiBvZiBjbWRfc2hvd19s aXN0IHdoaWNoIGluc2VydHMKLSsgICBuZXdsaW5lcyBhdCBwcm9wZXIgcGxhY2VzLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotK3sKLSsgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0OwotKyAgc3RydWN0IGNs ZWFudXAgKmluZm9saXN0X2NoYWluOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OwotKwotKyAgaW5mb2xpc3RfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxl X2JlZ2luX2VuZCAodWlvdXQsICJpbmZvbGlzdCIpOwotKwotKyAgZm9yIChsaXN0ID0gKmF1dG9f bG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0 KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKm9wdGlvbl9jaGFpbgotKwk9IG1ha2Vf Y2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgIm9wdGlvbiIpOwotKwotKyAg ICAgIGdkYl9hc3NlcnQgKCFsaXN0LT5wcmVmaXhsaXN0KTsKLSsgICAgICBnZGJfYXNzZXJ0IChs aXN0LT50eXBlID09IG5vdF9zZXRfY21kKTsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5n ICh1aW91dCwgIm5hbWUiLCBsaXN0LT5uYW1lKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICI6ICAiKTsKLSsgICAgICBjbWRfZnVuYyAobGlzdCwgYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sLCBmcm9tX3R0eSk7Ci0rCi0rICAgICAgLyogQ2xvc2UgdGhlIHR1cGxlLiAgKi8K LSsgICAgICBkb19jbGVhbnVwcyAob3B0aW9uX2NoYWluKTsKLSsgICAgfQotKwotKyAgLyogQ2xv c2UgdGhlIHR1cGxlLiAgKi8KLSsgIGRvX2NsZWFudXBzIChpbmZvbGlzdF9jaGFpbik7Ci0rfQot KwotKy8qIEluaXRpYWxpemUgImluZm8gYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCBy ZXR1cm4gaXQuICAqLwotKwotK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCi0rYXV0b19sb2Fk X2luZm9fY21kbGlzdF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpyZXR2YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0rICAgIGFkZF9wcmVm aXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfY21kLCBfKCJc Ci0rUHJpbnQgY3VycmVudCBzdGF0dXMgb2YgYXV0by1sb2FkZWQgZmlsZXMuXG5cCi0rUHJpbnQg d2hldGhlciB2YXJpb3VzIGZpbGVzIGxpa2UgUHl0aG9uIHNjcmlwdHMgb3IgLmdkYmluaXQgZmls ZXMgaGF2ZSBiZWVuXG5cCi0rZm91bmQgYW5kL29yIGxvYWRlZC4iKSwKLSsJCSAgICAmcmV0dmFs LCAiaW5mbyBhdXRvLWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZpbmZvbGlz dCk7Ci0rCi0rICByZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9hdXRv X2xvYWQgKHZvaWQpOwotIAotIHZvaWQKLUBAIC00NjUsOCArNzIzLDM4IEBAIF9pbml0aWFsaXpl X2F1dG9fbG9hZCAodm9pZCkKLSAKLSAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0 b19sb2FkX25ld19vYmpmaWxlKTsKLSAKLS0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMi LAotLQkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0 IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1s b2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImdk Yi1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX2dkYl9zY3JpcHRz LCBfKCJcCi0rRW5hYmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgc2NyaXB0cy4iKSwgXygiXAotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIGVuYWJsZWQuIiks Ci0rCQkJICAgXygiXAotK0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg YXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4ZWN1dGFibGUgb3Ig c2hhcmVkIGxpYnJhcnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlv bnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xv YWRfZ2RiX3NjcmlwdHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJ CQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgiZ2Ri LXNjcmlwdHMiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKLSsJICAg XygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbUkVHRVhQXSIp LAotKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfc2V0c2hv d19ib29sZWFuX2NtZCAoImxvY2FsLWdkYmluaXQiLCBjbGFzc19zdXBwb3J0LAotKwkJCSAgICZh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgXygiXAotK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9h ZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkuIiksIF8oIlwKLStT aG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIC5nZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50IGRpcmVj dG9yeSBpcyBlbmFibGVkLiIpLAotKwkJCSAgIF8oIlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hlbiBkZWJ1Z2dlciBzdGFydHNcblwKLStm cm9tIC5nZGJpbml0IGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkuICBTdWNoIGZpbGVzIGFyZSBk ZXByZWNhdGVkLFxuXAotK3VzZSBhIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggaW5mZXJpb3IgZXhl Y3V0YWJsZSBmaWxlIGluc3RlYWQuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBs aWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19h dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0 ICgpLAotKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGFkZF9j bWQgKCJsb2NhbC1nZGJpbml0IiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdCwKLSsJICAgXygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBm aWxlIGhhcyBiZWVuIGxvYWRlZC5cblwKLStVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdCIpLAotKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0gfQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ0OjI2 Ljk1MTQzNzUxNyArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5o CTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCi1AQCAtMjIsMTUgKzIyLDM2IEBA Ci0gCi0gc3RydWN0IHByb2dyYW1fc3BhY2U7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9nbG9iYWxf YXV0b19sb2FkOwotK3N0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UKLSt7Ci0rICBjb25zdCBjaGFyICpz dWZmaXg7Ci0rCi0rICB2b2lkICgqc291cmNlX3NjcmlwdF9mb3Jfb2JqZmlsZSkgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKLSt9OwotKwotK2V4dGVybiBpbnQgZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStleHRlcm4g aW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0OwotK2V4dGVybiBjaGFyICphdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9wYXRobmFtZTsKLStleHRlcm4gaW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X2xvYWRlZDsKLSAKLSBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0gICBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqcHNwYWNlKTsKLSBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqZnVsbF9wYXRoKTsKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ug Kmxhbmd1YWdlKTsKLSBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotKwkJ CQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rZXh0ZXJu IHZvaWQgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKTsKLSBleHRlcm4gaW50Ci0gICBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKTsKLStleHRlcm4gY2hhciBh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmxbXTsKLStleHRlcm4gdm9pZCBhdXRvX2xv YWRfaW5mb19zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJCSAgICBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rCi0rZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAodm9pZCk7Ci0r ZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9n ZXQgKHZvaWQpOwotK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAx Mi0wMS0wNCAwOToxNzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIw MAotQEAgLTQwLDggKzQwLDEwIEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUg ImxpbnV4LW5hdC5oIgotICNpbmNsdWRlICJsaW51eC1wcm9jZnMuaCIKLSsjaW5jbHVkZSAiYXV0 by1sb2FkLmgiCi0gCi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgot IAotICNpZmRlZiBIQVZFX0dOVV9MSUJDX1ZFUlNJT05fSAotICNpbmNsdWRlIDxnbnUvbGliYy12 ZXJzaW9uLmg+Ci1AQCAtNzUsNiArNzcsMjEgQEAKLSAKLSBzdGF0aWMgY2hhciAqbGlidGhyZWFk X2RiX3NlYXJjaF9wYXRoOwotIAotKy8qIFNldCB0byBub24temVybyBpZiB0aHJlYWRfZGIgYXV0 by1sb2FkaW5nIGlzIGVuYWJsZWQKLSsgICBieSB0aGUgInNldCBhdXRvLWxvYWQgbGlidGhyZWFk LWRiIiBjb21tYW5kLiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9hZF90aHJlYWRfZGIgPSAxOwot KwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3RocmVhZF9kYiBjb25maWd1 cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3Ro cmVhZF9kYiAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRm X2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGli dGhyZWFkX2RiICIKLSsJCQkgICAgImlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsK LSBzdGF0aWMgdm9pZAotIHNldF9saWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggKGNoYXIgKmlnbm9y ZWQsIGludCBmcm9tX3R0eSwKLSAJCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykK LUBAIC0xMTksNiArMTM2LDEwIEBAIHN0cnVjdCB0aHJlYWRfZGJfaW5mbwotICAgLyogSGFuZGxl IGZyb20gZGxvcGVuIGZvciBsaWJ0aHJlYWRfZGIuc28uICAqLwotICAgdm9pZCAqaGFuZGxlOwot IAotKyAgLyogQWJzb2x1dGUgcGF0aG5hbWUgZnJvbSBnZGJfcmVhbHBhdGggdG8gZGlzayBmaWxl IHVzZWQgZm9yIGRsb3Blbi1pbmcKLSsgICAgIEhBTkRMRS4gIEl0IG1heSBiZSBOVUxMIGZvciBz eXN0ZW0gbGlicmFyeS4gICovCi0rICBjaGFyICpmaWxlbmFtZTsKLSsKLSAgIC8qIFN0cnVjdHVy ZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNoaWxkIHByb2Nlc3MgZm9yIHRoZQotICAgICAgPHByb2Nf c2VydmljZS5oPiBpbnRlcmZhY2UuICAqLwotICAgc3RydWN0IHBzX3Byb2NoYW5kbGUgcHJvY19o YW5kbGU7Ci1AQCAtMjQ4LDYgKzI2OSw4IEBAIGRlbGV0ZV90aHJlYWRfZGJfaW5mbyAoaW50IHBp ZCkKLSAgIGlmIChpbmZvLT5oYW5kbGUgIT0gTlVMTCkKLSAgICAgZGxjbG9zZSAoaW5mby0+aGFu ZGxlKTsKLSAKLSsgIHhmcmVlIChpbmZvLT5maWxlbmFtZSk7Ci0rCi0gICBpZiAoaW5mb19wcmV2 KQotICAgICBpbmZvX3ByZXYtPm5leHQgPSBpbmZvLT5uZXh0OwotICAgZWxzZQotQEAgLTgwNyw2 ICs4MzAsMTAgQEAgdHJ5X3RocmVhZF9kYl9sb2FkIChjb25zdCBjaGFyICpsaWJyYXJ5KQotIAot ICAgaW5mbyA9IGFkZF90aHJlYWRfZGJfaW5mbyAoaGFuZGxlKTsKLSAKLSsgIC8qIERvIG5vdCBz YXZlIHN5c3RlbSBsaWJyYXJ5IG5hbWUsIHRoYXQgb25lIGlzIGFsd2F5cyB0cnVzdGVkLiAgKi8K LSsgIGlmIChzdHJjaHIgKGxpYnJhcnksICcvJykgIT0gTlVMTCkKLSsgICAgaW5mby0+ZmlsZW5h bWUgPSBnZGJfcmVhbHBhdGggKGxpYnJhcnkpOwotKwotICAgaWYgKHRyeV90aHJlYWRfZGJfbG9h ZF8xIChpbmZvKSkKLSAgICAgcmV0dXJuIDE7Ci0gCi1AQCAtODU2LDYgKzg4Myw5IEBAIHRyeV90 aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXIgKHZvaWQpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9i ajsKLSAKLSsgIGlmICghYXV0b19sb2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0g ICBBTExfT0JKRklMRVMgKG9iaikKLSAgICAgaWYgKGxpYnB0aHJlYWRfbmFtZV9wIChvYmotPm5h bWUpKQotICAgICAgIHsKLUBAIC04OTUsNiArOTI1LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zy b21fZGlyIChjb25zdCBjaGFyCi0gICBjaGFyICpwYXRoOwotICAgaW50IHJlc3VsdDsKLSAKLSsg IGlmICghYXV0b19sb2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBwYXRoID0g eG1hbGxvYyAoZGlyX2xlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxKTsKLSAg IGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBwYXRoKTsKLSAKLUBAIC0xODAyLDYgKzE4 MzUsMTUwIEBAIHRocmVhZF9kYl9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKLSAgIGJl bmVhdGgtPnRvX3Jlc3VtZSAoYmVuZWF0aCwgcHRpZCwgc3RlcCwgc2lnbm8pOwotIH0KLSAKLSsv KiBxc29ydCBoZWxwZXIgZnVuY3Rpb24gZm9yIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwg c29ydCB0aGUKLSsgICB0aHJlYWRfZGJfaW5mbyBwb2ludGVycyBwcmltYXJpbHkgYnkgdGhlaXIg RklMRU5BTUUgYW5kIHNlY29uZGFyaWx5IGJ5IHRoZWlyCi0rICAgUElELCBib3RoIGluIGFzY2Vu ZGluZyBvcmRlci4gICovCi0rCi0rc3RhdGljIGludAotK2luZm9fYXV0b19sb2FkX2xpYnRocmVh ZF9kYl9jb21wYXJlIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgc3Ry dWN0IHRocmVhZF9kYl9pbmZvICphID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiopIGFwOwot KyAgc3RydWN0IHRocmVhZF9kYl9pbmZvICpiID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiop IGJwOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHJldHZhbCA9IHN0cmNtcCAoYS0+ZmlsZW5hbWUs IGItPmZpbGVuYW1lKTsKLSsgIGlmIChyZXR2YWwpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rCi0r ICByZXR1cm4gKGEtPnBpZCA+IGItPnBpZCkgLSAoYS0+cGlkIC0gYi0+cGlkKTsKLSt9Ci0rCi0r LyogSW1wbGVtZW50ICdpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQotK3sKLSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsg IGNvbnN0IGNoYXIgKmNzID0gYXJncyA/IGFyZ3MgOiAiIjsKLSsgIHN0cnVjdCB0aHJlYWRfZGJf aW5mbyAqaW5mbywgKiphcnJheTsKLSsgIHVuc2lnbmVkIGluZm9fY291bnQsIHVuaXF1ZV9maWxl bmFtZXM7Ci0rICBzaXplX3QgbWF4X2ZpbGVuYW1lX2xlbiwgbWF4X3BpZHNfbGVuLCBwaWRzX2xl bjsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgY2hhciAqcGlkczsKLSsgIGludCBp OwotKwotKyAgd2hpbGUgKGlzc3BhY2UgKCpjcykpCi0rICAgIGNzKys7Ci0rICBpZiAoKmNzKQot KyAgICBlcnJvciAoXygiJ2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYicgZG9lcyBub3QgYWNj ZXB0IGFueSBwYXJhbWV0ZXJzIikpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBmb3IgKGlu Zm8gPSB0aHJlYWRfZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAgIGlmIChp bmZvLT5maWxlbmFtZSAhPSBOVUxMKQotKyAgICAgIGluZm9fY291bnQrKzsKLSsKLSsgIGFycmF5 ID0geG1hbGxvYyAoc2l6ZW9mICgqYXJyYXkpICogaW5mb19jb3VudCk7Ci0rICBiYWNrX3RvID0g bWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJyYXkpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBm b3IgKGluZm8gPSB0aHJlYWRfZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAg IGlmIChpbmZvLT5maWxlbmFtZSAhPSBOVUxMKQotKyAgICAgIGFycmF5W2luZm9fY291bnQrK10g PSBpbmZvOwotKwotKyAgLyogU29ydCBBUlJBWSBieSBmaWxlbmFtZXMgYW5kIFBJRHMuICAqLwot KwotKyAgcXNvcnQgKGFycmF5LCBpbmZvX2NvdW50LCBzaXplb2YgKCphcnJheSksCi0rCSBpbmZv X2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSk7Ci0rCi0rICAvKiBDYWxjdWxhdGUgdGhl IG51bWJlciBvZiB1bmlxdWUgZmlsZW5hbWVzIChyb3dzKSBhbmQgdGhlIG1heGltdW0gc3RyaW5n Ci0rICAgICBsZW5ndGggb2YgUElEcyBsaXN0IGZvciB0aGUgdW5pcXVlIGZpbGVuYW1lcyAoY29s dW1ucykuICAqLwotKwotKyAgdW5pcXVlX2ZpbGVuYW1lcyA9IDA7Ci0rICBtYXhfZmlsZW5hbWVf bGVuID0gMDsKLSsgIG1heF9waWRzX2xlbiA9IDA7Ci0rICBwaWRzX2xlbiA9IDA7Ci0rICBmb3Ig KGkgPSAwOyBpIDwgaW5mb19jb3VudDsgaSsrKQotKyAgICB7Ci0rICAgICAgaW50IHBpZCA9IGFy cmF5W2ldLT5waWQ7Ci0rICAgICAgc2l6ZV90IHRoaXNfcGlkX2xlbjsKLSsKLSsgICAgICBmb3Ig KHRoaXNfcGlkX2xlbiA9IDA7IHBpZCAhPSAwOyBwaWQgLz0gMTApCi0rCXRoaXNfcGlkX2xlbisr OwotKwotKyAgICAgIGlmIChpID09IDAgfHwgc3RyY21wIChhcnJheVtpIC0gMV0tPmZpbGVuYW1l LCBhcnJheVtpXS0+ZmlsZW5hbWUpICE9IDApCi0rCXsKLSsJICB1bmlxdWVfZmlsZW5hbWVzKys7 Ci0rCSAgbWF4X2ZpbGVuYW1lX2xlbiA9IG1heCAobWF4X2ZpbGVuYW1lX2xlbiwKLSsJCQkJICBz dHJsZW4gKGFycmF5W2ldLT5maWxlbmFtZSkpOwotKwotKwkgIGlmIChpID4gMCkKLSsJICAgIHsK LSsJICAgICAgcGlkc19sZW4gLT0gc3RybGVuICgiLCAiKTsKLSsJICAgICAgbWF4X3BpZHNfbGVu ID0gbWF4IChtYXhfcGlkc19sZW4sIHBpZHNfbGVuKTsKLSsJICAgIH0KLSsJICBwaWRzX2xlbiA9 IDA7Ci0rCX0KLSsgICAgICBwaWRzX2xlbiArPSB0aGlzX3BpZF9sZW4gKyBzdHJsZW4gKCIsICIp OwotKyAgICB9Ci0rICBpZiAoaSkKLSsgICAgewotKyAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAo IiwgIik7Ci0rICAgICAgbWF4X3BpZHNfbGVuID0gbWF4IChtYXhfcGlkc19sZW4sIHBpZHNfbGVu KTsKLSsgICAgfQotKwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2Vk aW5nICJsaWJ0aHJlYWQtZGI6ICAiIHdvdWxkIG5vdCBtYXRjaAotKyAgICAgaXRzIGNvbHVtbnMu ICAqLwotKyAgaWYgKGluZm9fY291bnQgPiAwICYmIGFyZ3MgPT0gYXV0b19sb2FkX2luZm9fc2Ny aXB0c19wYXR0ZXJuX25sKQotKyAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKwotKyAg bWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCB1bmlxdWVfZmls ZW5hbWVzLAotKwkJCQkgICAgICAgIkxpbnV4VGhyZWFkRGJUYWJsZSIpOwotKwotKyAgdWlfb3V0 X3RhYmxlX2hlYWRlciAodWlvdXQsIG1heF9maWxlbmFtZV9sZW4sIHVpX2xlZnQsICJmaWxlbmFt ZSIsCi0rCQkgICAgICAgIkZpbGVuYW1lIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91 dCwgcGlkc19sZW4sIHVpX2xlZnQsICJQSURzIiwgIlBpZHMiKTsKLSsgIHVpX291dF90YWJsZV9i b2R5ICh1aW91dCk7Ci0rCi0rICBwaWRzID0geG1hbGxvYyAobWF4X3BpZHNfbGVuICsgMSk7Ci0r ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBwaWRzKTsKLSsKLSsgIC8qIE5vdGUgSSBpcyBpbmNyZW1l bnRlZCBpbnNpZGUgdGhlIGN5Y2xlLCBub3QgYXQgaXRzIGVuZC4gICovCi0rICBmb3IgKGkgPSAw OyBpIDwgaW5mb19jb3VudDspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW4g PSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKyAg ICAgIGNoYXIgKnBpZHNfZW5kOwotKwotKyAgICAgIGluZm8gPSBhcnJheVtpXTsKLSsgICAgICB1 aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZpbGVuYW1lIiwgaW5mby0+ZmlsZW5hbWUpOwot KyAgICAgIHBpZHNfZW5kID0gcGlkczsKLSsKLSsgICAgICB3aGlsZSAoaSA8IGluZm9fY291bnQg JiYgc3RyY21wIChpbmZvLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSA9PSAwKQotKwl7 Ci0rCSAgaWYgKHBpZHNfZW5kICE9IHBpZHMpCi0rCSAgICB7Ci0rCSAgICAgICpwaWRzX2VuZCsr ID0gJywnOwotKwkgICAgICAqcGlkc19lbmQrKyA9ICcgJzsKLSsJICAgIH0KLSsJICBwaWRzX2Vu ZCArPSB4c25wcmludGYgKHBpZHNfZW5kLCAmcGlkc1ttYXhfcGlkc19sZW4gKyAxXSAtIHBpZHNf ZW5kLAotKwkJCQkgIiV1IiwgYXJyYXlbaV0tPnBpZCk7Ci0rCSAgZ2RiX2Fzc2VydCAocGlkc19l bmQgPCAmcGlkc1ttYXhfcGlkc19sZW4gKyAxXSk7Ci0rCi0rCSAgaSsrOwotKwl9Ci0rICAgICAg KnBpZHNfZW5kID0gJ1wwJzsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwg InBpZHMiLCBwaWRzKTsKLSsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAg ICAgIGRvX2NsZWFudXBzIChjaGFpbik7Ci0rICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKLSsKLSsgIGlmIChpbmZvX2NvdW50ID09IDApCi0rICAgIHVpX291dF9tZXNzYWdlICh1 aW91dCwgMCwgXygiTm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLlxuIikpOwotK30KLSsKLSBz dGF0aWMgdm9pZAotIGluaXRfdGhyZWFkX2RiX29wcyAodm9pZCkKLSB7Ci1AQCAtMTg2Myw2ICsy MDQwLDIzIEBAIFdoZW4gbm9uLXplcm8sIGxpYnRocmVhZC1kYiBkZWJ1Z2dpbmcgaXMKLSAJCQkg ICAgc2hvd19saWJ0aHJlYWRfZGJfZGVidWcsCi0gCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93 ZGVidWdsaXN0KTsKLSAKLSsgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibGlidGhyZWFkLWRi IiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX3RocmVhZF9kYiwgXygiXAotK0Vu YWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJl YWRfZGIuIiksIF8oIlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIGluZmVyaW9yIHNwZWNp ZmljIGxpYnRocmVhZF9kYiBpcyBlbmFibGVkLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgbGlidGhy ZWFkX2RiIHdpbGwgYmUgc2VhcmNoZWQgaW4gJ3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgn XG5cCi0rbG9jYXRpb25zIHRvIGxvYWQgbGlidGhyZWFkX2RiIGNvbXBhdGlibGUgd2l0aCB0aGUg aW5mZXJpb3IuXG5cCi0rU3RhbmRhcmQgc3lzdGVtIGxpYnRocmVhZF9kYiBzdGlsbCBnZXRzIGxv YWRlZCBldmVuIHdpdGggdGhpcyBvcHRpb24gb2ZmLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2Vj dXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5V TEwsIHNob3dfYXV0b19sb2FkX3RocmVhZF9kYiwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICgpLAotKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsg IGFkZF9jbWQgKCJsaWJ0aHJlYWQtZGIiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9saWJ0 aHJlYWRfZGIsCi0rCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGxvYWRlZCBpbmZlcmlvciBzcGVj aWZpYyBsaWJ0aHJlYWRfZGIuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1k YiIpLAotKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICAvKiBBZGQg b3Vyc2VsdmVzIHRvIG9iamZpbGUgZXZlbnQgY2hhaW4uICAqLwotICAgb2JzZXJ2ZXJfYXR0YWNo X25ld19vYmpmaWxlICh0aHJlYWRfZGJfbmV3X29iamZpbGUpOwotIAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU3NDM3NTAzICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU3 MDc5Nzc3ICswMjAwCi1AQCAtOTQ1LDggKzk0NSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCi0gICAvKiBTa2lwIGF1dG8tbG9hZGluZyBzZWN0aW9uLXNwZWNpZmllZCBzY3JpcHRzIHVu dGlsIHdlJ3ZlIHNvdXJjZWQKLSAgICAgIGxvY2FsX2dkYmluaXQgKHdoaWNoIGlzIG9mdGVuIHVz ZWQgdG8gYXVnbWVudCB0aGUgc291cmNlIHNlYXJjaAotICAgICAgcGF0aCkuICAqLwotLSAgc2F2 ZV9hdXRvX2xvYWQgPSBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotLSAgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCA9IDA7Ci0rICBzYXZlX2F1dG9fbG9hZCA9IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rICBn bG9iYWxfYXV0b19sb2FkID0gMDsKLSAKLSAgIGlmIChleGVjYXJnICE9IE5VTEwKLSAgICAgICAm JiBzeW1hcmcgIT0gTlVMTAotQEAgLTEwMjIsMTQgKzEwMjIsMjQgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKLSAKLSAgIC8qIFJlYWQgdGhlIC5nZGJpbml0IGZpbGUgaW4gdGhlIGN1cnJl bnQgZGlyZWN0b3J5LCAqaWYqIGl0IGlzbid0Ci0gICAgICB0aGUgc2FtZSBhcyB0aGUgJEhPTUUv LmdkYmluaXQgZmlsZSAoaXQgc2hvdWxkIGV4aXN0LCBhbHNvKS4gICovCi0tICBpZiAobG9jYWxf Z2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo c291cmNlX3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwgUkVUVVJOX01BU0tfQUxMKTsKLSsgIGlm IChsb2NhbF9nZGJpbml0KQotKyAgICB7Ci0rICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf cGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotKwotKyAgICAgIGlmICgh aW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQotKwl7Ci0rCSAgYXV0 b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMTsKLSsKLSsJICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoc291cmNlX3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwKLSsJCQkJUkVUVVJOX01BU0tf QUxMKTsKLSsJfQotKyAgICB9Ci0gCi0gICAvKiBOb3cgdGhhdCBhbGwgLmdkYmluaXQncyBoYXZl IGJlZW4gcmVhZCBhbmQgYWxsIC1kIG9wdGlvbnMgaGF2ZSBiZWVuCi0gICAgICBwcm9jZXNzZWQs IHdlIGNhbiByZWFkIGFueSBzY3JpcHRzIG1lbnRpb25lZCBpbiBTWU1BUkcuCi0gICAgICBXZSB3 YWl0IHVudGlsIG5vdyBiZWNhdXNlIGl0IGlzIGNvbW1vbiB0byBhZGQgdG8gdGhlIHNvdXJjZSBz ZWFyY2gKLSAgICAgIHBhdGggaW4gbG9jYWxfZ2RiaW5pdC4gICovCi0tICBnZGJweV9nbG9iYWxf YXV0b19sb2FkID0gc2F2ZV9hdXRvX2xvYWQ7Ci0rICBnbG9iYWxfYXV0b19sb2FkID0gc2F2ZV9h dXRvX2xvYWQ7Ci0gICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICAgIGxvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSAKLUBAIC0xMTk2LDcgKzEyMDYsNyBAQCBBdCBz dGFydHVwLCBHREIgcmVhZHMgdGhlIGZvbGxvd2luZyBpbml0Ci0gIiksIGhvbWVfZ2RiaW5pdCk7 Ci0gICBpZiAobG9jYWxfZ2RiaW5pdCkKLSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChzdHJlYW0s IF8oIlwKLS0gICAqIGxvY2FsIGluaXQgZmlsZTogLi8lc1xuXAotKyAgICogbG9jYWwgaW5pdCBm aWxlIChzZWUgYWxzbyAnc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Jyk6IC4vJXNcblwKLSAi KSwgbG9jYWxfZ2RiaW5pdCk7Ci0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcblwKLSBGb3IgbW9y ZSBpbmZvcm1hdGlvbiwgdHlwZSBcImhlbHBcIiBmcm9tIHdpdGhpbiBHREIsIG9yIGNvbnN1bHQg dGhlXG5cCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi0wNC0xOCAwMDo0NDoyNi45Mjg0Mzc1NzcgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQg KzAyMDAKLUBAIC0xMDM0LDYgKzEwMzQsNyBAQCBZb3UgY2FuIHJ1biBAdmFsdWV7R0RCTn0gaW4g dmFyaW91cyBhbHRlCi0gYmF0Y2ggbW9kZSBvciBxdWlldCBtb2RlLgotIAotIEB0YWJsZSBAY29k ZQotK0BhbmNob3J7LW54fQotIEBpdGVtIC1ueAotIEBpdGVteCAtbgotIEBjaW5kZXggQGNvZGV7 LS1ueH0KLUBAIC0xMjY1LDYgKzEyNjYsNyBAQCBIZXJlJ3MgdGhlIGRlc2NyaXB0aW9uIG9mIHdo YXQgQHZhbHVle0dECi0gU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaWZp ZWQgYnkgdGhlIGNvbW1hbmQgbGluZQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRl cn0pLgotIAotK0BhbmNob3J7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0KLSBAaXRlbQotIEV4 ZWN1dGVzIGNvbW1hbmRzIGFuZCBjb21tYW5kIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgQHNhbXB7 LWlleH0gYW5kCi0gQHNhbXB7LWl4fSBvcHRpb25zIGluIHRoZWlyIHNwZWNpZmllZCBvcmRlci4g IFVzdWFsbHkgeW91IHNob3VsZCB1c2UgdGhlCi1AQCAtMTI3OSw2ICsxMjgxLDcgQEAgdXNlZCB3 aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsgQHB4cmVmewotICAsU3lzdGVtLXdpZGUgY29uZmln dXJhdGlvbiBhbmQgc2V0dGluZ3N9KSBhbmQgZXhlY3V0ZXMgYWxsIHRoZSBjb21tYW5kcyBpbgot IHRoYXQgZmlsZS4KLSAKLStAYW5jaG9ye0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0KLSBAaXRl bQotIFJlYWRzIHRoZSBpbml0IGZpbGUgKGlmIGFueSkgaW4geW91ciBob21lIGRpcmVjdG9yeUBm b290bm90ZXtPbgotIERPUy9XaW5kb3dzIHN5c3RlbXMsIHRoZSBob21lIGRpcmVjdG9yeSBpcyB0 aGUgb25lIHBvaW50ZWQgdG8gYnkgdGhlCi1AQCAtMTI4OCw5ICsxMjkxLDEyIEBAIHRoYXQgZmls ZS4KLSBAaXRlbQotIFByb2Nlc3NlcyBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQgb3BlcmFuZHMu Ci0gCi0rQGFuY2hvcntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBT dGFydHVwfQotIEBpdGVtCi0gUmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjb21tYW5kcyBmcm9tIGlu aXQgZmlsZSAoaWYgYW55KSBpbiB0aGUgY3VycmVudAotLXdvcmtpbmcgZGlyZWN0b3J5LiAgVGhp cyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0rd29ya2luZyBkaXJl Y3RvcnkgYXMgbG9uZyBhcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9IGlzIHNl dCB0bwotK0BzYW1we29ufSAoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rv cnl9KS4KLStUaGlzIGlzIG9ubHkgZG9uZSBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKLSBk aWZmZXJlbnQgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5LiAgVGh1cywgeW91IGNhbiBoYXZlIG1v cmUgdGhhbiBvbmUKLSBpbml0IGZpbGUsIG9uZSBnZW5lcmljIGluIHlvdXIgaG9tZSBkaXJlY3Rv cnksIGFuZCBhbm90aGVyLCBzcGVjaWZpYwotIHRvIHRoZSBwcm9ncmFtIHlvdSBhcmUgZGVidWdn aW5nLCBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHlvdSBpbnZva2UKLUBAIC0xMzA2LDcgKzEzMTIs NyBAQCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBk byBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdk YiAtaWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLSskIGdkYiAtaWV4 ICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFs bGV4YW1wbGUKLSAKLSBPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhl IGF1dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5lZAotQEAgLTI4OTEsNiArMjg5Nyw3IEBAIHByb2dy YW1zIHdpdGggbXVsdGlwbGUgdGhyZWFkcy4KLSBAeHJlZntTZXQgV2F0Y2hwb2ludHMsLFNldHRp bmcgV2F0Y2hwb2ludHN9LCBmb3IgaW5mb3JtYXRpb24gYWJvdXQKLSB3YXRjaHBvaW50cyBpbiBw cm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCi0gCi0rQGFuY2hvcntzZXQgbGlidGhyZWFk LWRiLXNlYXJjaC1wYXRofQotIEB0YWJsZSBAY29kZQotIEBraW5kZXggc2V0IGxpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aAotIEBjaW5kZXggc2VhcmNoIHBhdGggZm9yIEBjb2Rle2xpYnRocmVhZF9k Yn0KLUBAIC0yOTA1LDExICsyOTEyLDE1IEBAIG1hY3JvLgotIE9uIEBzY3tnbnV9L0xpbnV4IGFu ZCBTb2xhcmlzIHN5c3RlbXMsIEB2YWx1ZXtHREJOfSB1c2VzIGEgYGBoZWxwZXInJwotIEBjb2Rl e2xpYnRocmVhZF9kYn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhyZWFk cyBpbiB0aGUKLSBpbmZlcmlvciBwcm9jZXNzLiAgQHZhbHVle0dEQk59IHdpbGwgdXNlIEBzYW1w e2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLS10byBmaW5kIEBjb2Rle2xpYnRocmVhZF9kYn0u Ci0rdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LiAgQHZhbHVle0dEQk59IGFsc28gY29uc3Vs dHMgZmlyc3QgaWYgaW5mZXJpb3IKLStzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkg bG9hZGluZyBpcyBlbmFibGVkCi0rYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 IChAcHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0pLgotIAotIEEgc3BlY2lhbCBlbnRyeSBA c2FtcHskc2Rpcn0gZm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLSByZWZlcnMg dG8gdGhlIGRlZmF1bHQgc3lzdGVtIGRpcmVjdG9yaWVzIHRoYXQgYXJlCi0tbm9ybWFsbHkgc2Vh cmNoZWQgZm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllcy4KLStub3JtYWxseSBzZWFyY2hlZCBm b3IgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIEBzYW1weyRzZGlyfSBlbnRyeQotK2lz IHRoZSBvbmx5IGtpbmQgbm90IG5lZWRpbmcgdG8gYmUgZW5hYmxlZCBieSBAc2FtcHtzZXQgYXV0 by1sb2FkIGxpYnRocmVhZC1kYn0KLSsoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4K LSAKLSBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHBkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9Ci0gcmVmZXJzIHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBAY29kZXts aWJwdGhyZWFkfQotQEAgLTIwMzIwLDYgKzIwMzMxLDcgQEAgZGVzY3JpYmVkIGhlcmUuCi0gKiBT Y3JlZW4gU2l6ZTo6ICAgICAgICAgICAgICAgICBTY3JlZW4gc2l6ZQotICogTnVtYmVyczo6ICAg ICAgICAgICAgICAgICAgICAgTnVtYmVycwotICogQUJJOjogICAgICAgICAgICAgICAgICAgICAg ICAgQ29uZmlndXJpbmcgdGhlIGN1cnJlbnQgQUJJCi0rKiBBdXRvLWxvYWRpbmc6OiAgICAgICAg ICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRlZCBmaWxlcwotICogTWVzc2Fn ZXMvV2FybmluZ3M6OiAgICAgICAgICAgT3B0aW9uYWwgd2FybmluZ3MgYW5kIG1lc3NhZ2VzCi0g KiBEZWJ1Z2dpbmcgT3V0cHV0OjogICAgICAgICAgICBPcHRpb25hbCBtZXNzYWdlcyBhYm91dCBp bnRlcm5hbCBoYXBwZW5pbmdzCi0gKiBPdGhlciBNaXNjIFNldHRpbmdzOjogICAgICAgICBPdGhl ciBNaXNjZWxsYW5lb3VzIFNldHRpbmdzCi1AQCAtMjA3NDUsNiArMjA3NTcsMjI3IEBAIFdpdGgg bm8gYXJndW1lbnQsIHNob3cgdGhlIGxpc3Qgb2Ygc3VwcG8KLSBTZXQgdGhlIGN1cnJlbnQgQ0B0 eysrfSBBQkkgdG8gQHZhcnthYml9LCBvciByZXR1cm4gdG8gYXV0b21hdGljIGRldGVjdGlvbi4K LSBAZW5kIHRhYmxlCi0gCi0rQG5vZGUgQXV0by1sb2FkaW5nCi0rQHNlY3Rpb24gQXV0b21hdGlj YWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKLStAY2luZGV4IGF1dG8tbG9hZGluZwotKwot K0B2YWx1ZXtHREJOfSBzb21ldGltZXMgcmVhZHMgZmlsZXMgd2l0aCBjb21tYW5kcyBhbmQgc2V0 dGluZ3MgYXV0b21hdGljYWxseSwKLSt3aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgdG9sZCBzbyBi eSB0aGUgdXNlci4gIFdlIGNhbGwgdGhpcyBmZWF0dXJlCi0rQGRmbnthdXRvLWxvYWRpbmd9LiAg V2hpbGUgYXV0by1sb2FkaW5nIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljYWxseSBhZGFwdGluZwot K0B2YWx1ZXtHREJOfSB0byB0aGUgbmVlZHMgb2YgeW91ciBwcm9qZWN0LCBpdCBjYW4gc29tZXRp bWVzIHByb2R1Y2UgdW5leHBlY3RlZAotK3Jlc3VsdHMgb3IgaW50cm9kdWNlIHNlY3VyaXR5IHJp c2tzIChlLmcuLCBpZiB0aGUgZmlsZSBjb21lcyBmcm9tIHVudHJ1c3RlZAotK3NvdXJjZXMpLgot KwotK0ZvciB0aGVzZSByZWFzb25zLCBAdmFsdWV7R0RCTn0gaW5jbHVkZXMgY29tbWFuZHMgYW5k IG9wdGlvbnMgdG8gbGV0IHlvdQotK2NvbnRyb2wgd2hlbiB0byBhdXRvLWxvYWQgZmlsZXMgYW5k IHdoaWNoIGZpbGVzIHNob3VsZCBiZSBhdXRvLWxvYWRlZC4KLSsKLStAdGFibGUgQGNvZGUKLStA YW5jaG9ye3NldCBhdXRvLWxvYWQgb2ZmfQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBvZmYKLStA aXRlbSBzZXQgYXV0by1sb2FkIG9mZgotK0dsb2JhbGx5IGRpc2FibGUgbG9hZGluZyBvZiBhbGwg YXV0by1sb2FkZWQgZmlsZXMuCi0rWW91IG1heSB3YW50IHRvIHVzZSB0aGlzIGNvbW1hbmQgd2l0 aCB0aGUgQHNhbXB7LWlleH0gb3B0aW9uCi0rKEBweHJlZntPcHRpb24gLWluaXQtZXZhbC1jb21t YW5kfSkgc3VjaCBhczoKLStAc21hbGxleGFtcGxlCi0rJCBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIG9mZiIgdW50cnVzdGVkLWV4ZWN1dGFibGUgY29yZWZpbGV9Ci0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStCZSBhd2FyZSB0aGF0IHN5c3RlbSBpbml0IGZpbGUgKEBweHJlZntTeXN0ZW0t d2lkZSBjb25maWd1cmF0aW9ufSkKLSthbmQgaW5pdCBmaWxlcyBmcm9tIHlvdXIgaG9tZSBkaXJl Y3RvcnkgKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KQotK3N0aWxsIGdldCByZWFk IChhcyB0aGV5IGNvbWUgZnJvbSBnZW5lcmFsbHkgdHJ1c3RlZCBkaXJlY3RvcmllcykuCi0rVG8g cHJldmVudCBAdmFsdWV7R0RCTn0gZnJvbSBhdXRvLWxvYWRpbmcgZXZlbiB0aG9zZSBpbml0IGZp bGVzLCB1c2UgdGhlCi0rQG9wdGlvbnstbnh9IG9wdGlvbiAoQHB4cmVme01vZGUgT3B0aW9uc30p LCBpbiBhZGRpdGlvbiB0bwotK0Bjb2Rle3NldCBhdXRvLWxvYWQgbm99LgotKwotK0BhbmNob3J7 c2hvdyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZAotK0BpdGVtIHNob3cgYXV0 by1sb2FkCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBlYWNoIHNwZWNpZmljIEBzYW1w e2F1dG8tbG9hZH0gZmlsZShzKSBpcyBlbmFibGVkCi0rb3IgZGlzYWJsZWQuCi0rCi0rQHNtYWxs ZXhhbXBsZQotKyhnZGIpIHNob3cgYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIG9uLgotK2xpYnRo cmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIg aXMgb24uCi0rbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQg ZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KLStweXRob24tc2NyaXB0czogIEF1dG8tbG9h ZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0Bh bmNob3J7aW5mbyBhdXRvLWxvYWR9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZAotK0BpdGVtIGlu Zm8gYXV0by1sb2FkCi0rUHJpbnQgd2hldGhlciBlYWNoIHNwZWNpZmljIEBzYW1we2F1dG8tbG9h ZH0gZmlsZShzKSBoYXZlIGJlZW4gYXV0by1sb2FkZWQgb3IKLStub3QuCi0rCi0rQHNtYWxsZXhh bXBsZQotKyhnZGIpIGluZm8gYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6Ci0rTG9hZGVkICBTY3Jp cHQKLStZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0rbGlidGhyZWFkLWRiOiAg Tm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLgotK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2Ri aW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgotK3B5 dGhvbi1zY3JpcHRzOgotK0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAgICAvaG9tZS91c2VyL2dkYi9n ZGItZ2RiLnB5Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLStAZW5kIHRhYmxlCi0rCi0rVGhlc2UgYXJl IHZhcmlvdXMga2luZHMgb2YgZmlsZXMgQHZhbHVle0dEQk59IGNhbiBhdXRvbWF0aWNhbGx5IGxv YWQ6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0BpdGVtCi0rQHhyZWZ7b2JqZmlsZS1nZGIucHkg ZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4K LStAaXRlbQotK0B4cmVme29iamZpbGUtZ2RiLmdkYiBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVm e3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgotK0BpdGVtCi0rQHhyZWZ7ZG90ZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbn0sCi0rY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHN9LgotK0BpdGVtCi0rQHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERp cmVjdG9yeX0sCi0rY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0uCi0rQGl0ZW0KLStAeHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSwgY29udHJvbGxlZCBi eSBAcmVme3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAZW5kIGl0ZW1pemUKLSsKLStU aGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMgZm9yIHRoZSBhdXRvLWxvYWRp bmc6Ci0rCi0rQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuNSAuNQotK0BpdGVtIEB4cmVm e3NldCBhdXRvLWxvYWQgb2ZmfS4KLStAdGFiIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5 LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkfS4KLStAdGFiIFNob3cgc2V0dGluZyBvZiBh bGwga2luZHMgb2YgZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWR9LgotK0B0YWIg U2hvdyBzdGF0ZSBvZiBhbGwga2luZHMgb2YgZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8t bG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gY29tbWFu ZCBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStA dGFiIFNob3cgc2V0dGluZyBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgotK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUgb2Yg QHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2Fk IHB5dGhvbi1zY3JpcHRzfS4KLStAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBQeXRob24g c2NyaXB0cy4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0r QHRhYiBTaG93IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUg b2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxv YWQgbG9jYWwtZ2RiaW5pdH0uCi0rQHRhYiBDb250cm9sIGZvciBpbml0IGZpbGUgaW4gdGhlIGN1 cnJlbnQgZGlyZWN0b3J5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmlu aXR9LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCi0rQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rQHRh YiBTaG93IHN0YXRlIG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rQGl0 ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgQ29udHJvbCBmb3Ig dGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxp YnRocmVhZC1kYn0uCi0rQHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJy YXJ5LgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQHRhYiBT aG93IHN0YXRlIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAZW5kIG11bHRpdGFibGUK LSsKLStAbWVudQotKyogSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeTo6IEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rKiBsaWJ0aHJlYWRfZGIu c28uMSBmaWxlOjogICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGli dGhyZWFkLWRifQotKyogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9Ci0rQHhyZWZ7UHl0aG9uIEF1dG8t bG9hZGluZ30uCi0rQGVuZCBtZW51Ci0rCi0rQG5vZGUgSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50 IERpcmVjdG9yeQotK0BzdWJzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBpbml0IGZpbGUg aW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0rQGNpbmRleCBhdXRvLWxvYWRpbmcgaW5pdCBmaWxl IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotKwotK0J5IGRlZmF1bHQsIEB2YWx1ZXtHREJOfSBy ZWFkcyBhbmQgZXhlY3V0ZXMgdGhlIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLStmcm9t IGluaXQgZmlsZSAoaWYgYW55KSBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKLStz ZWUgQHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVw fS4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK0BpdGVtIHNldCBhdXRv LWxvYWQgbG9jYWwtZ2RiaW5pdCBbb258b2ZmXQotK0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRv LWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcwotKyhAcHhyZWZ7U2VxdWVu Y2VzfSkgZm91bmQgaW4gaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStA YW5jaG9ye3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBzaG93IGF1dG8t bG9hZCBsb2NhbC1nZGJpbml0Ci0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAot K1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyBmcm9tIGluaXQgZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9yeSBpcyBlbmFibGVkIG9y IGRpc2FibGVkLgotKwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLStA a2luZGV4IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBpbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0Ci0rUHJpbnQgd2hldGhlciBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1h bmRzIGZyb20gaW5pdCBmaWxlIGluIHRoZQotK2N1cnJlbnQgZGlyZWN0b3J5IGhhdmUgYmVlbiBh dXRvLWxvYWRlZC4KLStAZW5kIHRhYmxlCi0rCi0rQG5vZGUgbGlidGhyZWFkX2RiLnNvLjEgZmls ZQotK0BzdWJzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyB0aHJlYWQgZGVidWdnaW5nIGxp YnJhcnkKLStAY2luZGV4IGF1dG8tbG9hZGluZyBsaWJ0aHJlYWRfZGIuc28uMQotKwotK1RoaXMg ZmVhdHVyZSBpcyBjdXJyZW50bHkgcHJlc2VudCBvbmx5IG9uIEBzY3tnbnV9L0xpbnV4IG5hdGl2 ZSBob3N0cy4KLSsKLStAdmFsdWV7R0RCTn0gcmVhZHMgaW4gc29tZSBjYXNlcyB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkgZnJvbSBwbGFjZXMgc3BlY2lmaWMKLSt0byB0aGUgaW5mZXJpb3IgKEBw eHJlZntzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSkuCi0rCi0rVGhlIHNwZWNpYWwgQHNh bXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSBlbnRyeSBAc2FtcHskc2Rpcn0gaXMgcHJvY2Vz c2VkCi0rd2l0aG91dCBjaGVja2luZyB0aGlzIEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFk LWRifSBzd2l0Y2ggYXMgc3lzdGVtCi0rbGlicmFyaWVzIGhhdmUgdG8gYmUgdHJ1c3RlZCBpbiBn ZW5lcmFsLiAgSW4gYWxsIG90aGVyIGNhc2VzIG9mCi0rQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJj aC1wYXRofSBlbnRyaWVzIEB2YWx1ZXtHREJOfSBjaGVja3MgZmlyc3QgaWYgQHNhbXB7c2V0Ci0r YXV0by1sb2FkIGxpYnRocmVhZC1kYn0gaXMgZW5hYmxlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4g c3VjaCB0aHJlYWQgZGVidWdnaW5nCi0rbGlicmFyeS4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5j aG9ye3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGIKLStAaXRlbSBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBbb258b2ZmXQot K0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMg dGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgbGli dGhyZWFkLWRifQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0g c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBv ZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkgaXMKLStlbmFibGVk IG9yIGRpc2FibGVkLgotKwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQot K0BraW5kZXggaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gaW5mbyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGxvYWRlZCBpbmZlcmlvciBz cGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcmllcyBhbmQKLStmb3IgZWFjaCBzdWNoIGxp YnJhcnkgcHJpbnQgbGlzdCBvZiBpbmZlcmlvciBAdmFye3BpZH1zIHVzaW5nIGl0LgotK0BlbmQg dGFibGUKLSsKLStAbm9kZSBvYmpmaWxlLWdkYi5nZGIgZmlsZQotK0BzdWJzZWN0aW9uIFRoZSBA ZmlsZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9IGZpbGUKLStAY2luZGV4IGF1dG8tbG9hZGluZyBA ZmlsZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9Ci0rCi0rQHZhbHVle0dEQk59IHRyaWVzIHRvIGxv YWQgYW4gQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlIGNvbnRhaW5pbmcKLStjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIChAcHhyZWZ7U2VxdWVuY2VzfSksIGFzIGxvbmcgYXMg QHNhbXB7c2V0Ci0rYXV0by1sb2FkIGdkYi1zY3JpcHRzfSBpcyBzZXQgdG8gQHNhbXB7b259Lgot KwotK0ZvciBtb3JlIGJhY2tncm91bmQgcmVmZXIgdG8gdGhlIHNpbWlsYXIgUHl0aG9uIHNjcmlw dHMgYXV0by1sb2FkaW5nCi0rZGVzY3JpcHRpb24gKEBweHJlZntvYmpmaWxlLWdkYi5weSBmaWxl fSkuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRz fQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK0BpdGVtIHNldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cy4KLSsKLStAYW5jaG9y e3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgZ2Ri LXNjcmlwdHMKLStAaXRlbSBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK1Nob3cgd2hldGhl ciBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlz IGVuYWJsZWQgb3IKLStkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGdkYi1z Y3JpcHRzfQotK0BraW5kZXggaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAY2luZGV4IHBy aW50IGxpc3Qgb2YgYXV0by1sb2FkZWQgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3Jp cHRzCi0rQGl0ZW0gaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQ cmludCB0aGUgbGlzdCBvZiBhbGwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRz IHRoYXQgQHZhbHVle0dEQk59Ci0rYXV0by1sb2FkZWQuCi0rQGVuZCB0YWJsZQotKwotK0lmIEB2 YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMg c2NyaXB0cyB3aXRoCi0rbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0rCi0gQG5vZGUgTWVz c2FnZXMvV2FybmluZ3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMK LSAKLUBAIC0yMTYxNiw3ICsyMTg0OSw3IEBAIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgd2hlbiBA dmFsdWV7R0RCTn0KLSBAbWVudQotICogUHl0aG9uIENvbW1hbmRzOjogICAgICAgICAgICAgQWNj ZXNzaW5nIFB5dGhvbiBmcm9tIEB2YWx1ZXtHREJOfS4KLSAqIFB5dGhvbiBBUEk6OiAgICAgICAg ICAgICAgICAgIEFjY2Vzc2luZyBAdmFsdWV7R0RCTn0gZnJvbSBQeXRob24uCi0tKiBBdXRvLWxv YWRpbmc6OiAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUu Ci0rKiBQeXRob24gQXV0by1sb2FkaW5nOjogICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcg UHl0aG9uIGNvZGUuCi0gKiBQeXRob24gbW9kdWxlczo6ICAgICAgICAgICAgICBQeXRob24gbW9k dWxlcyBwcm92aWRlZCBieSBAdmFsdWV7R0RCTn0uCi0gQGVuZCBtZW51Ci0gCi1AQCAtMjI3OTks NyArMjMwMzIsNyBAQCBUaGlzIHByYWN0aWNlIHdpbGwgZW5hYmxlIEB2YWx1ZXtHREJOfSB0Ci0g eW91ciBwcmV0dHktcHJpbnRlcnMgYXQgdGhlIHNhbWUgdGltZSwgYmVjYXVzZSB0aGV5IHdpbGwg aGF2ZQotIGRpZmZlcmVudCBuYW1lcy4KLSAKLS1Zb3Ugc2hvdWxkIHdyaXRlIGF1dG8tbG9hZGVk IGNvZGUgKEBweHJlZntBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKLStZb3Ugc2hvdWxkIHdy aXRlIGF1dG8tbG9hZGVkIGNvZGUgKEBweHJlZntQeXRob24gQXV0by1sb2FkaW5nfSkgc3VjaCB0 aGF0IGl0Ci0gY2FuIGJlIGV2YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNoYW5naW5n IGl0cyBtZWFuaW5nLiAgQW4KLSBpZGVhbCBhdXRvLWxvYWQgZmlsZSB3aWxsIGNvbnNpc3Qgc29s ZWx5IG9mIEBjb2Rle2ltcG9ydH1zIG9mIHlvdXIKLSBwcmludGVyIG1vZHVsZXMsIGZvbGxvd2Vk IGJ5IGEgY2FsbCB0byBhIHJlZ2lzdGVyIHByZXR0eS1wcmludGVycyB3aXRoCi1AQCAtMjM3NjAs NyArMjM5OTMsNyBAQCBUaGUgZm9sbG93aW5nIG9iamZpbGUtcmVsYXRlZCBmdW5jdGlvbnMKLSAK LSBAZmluZGV4IGdkYi5jdXJyZW50X29iamZpbGUKLSBAZGVmdW4gZ2RiLmN1cnJlbnRfb2JqZmls ZSAoKQotLVdoZW4gYXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme0F1dG8tbG9h ZGluZ30pLCBAdmFsdWV7R0RCTn0KLStXaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQg KEBweHJlZntQeXRob24gQXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQotIHNldHMgdGhlIGBg Y3VycmVudCBvYmpmaWxlJycgdG8gdGhlIGNvcnJlc3BvbmRpbmcgb2JqZmlsZS4gIFRoaXMKLSBm dW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IG9iamZpbGUuICBJZiB0aGVyZSBpcyBubyBjdXJy ZW50IG9iamZpbGUsCi0gdGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LgotQEAgLTI0 NjcxLDkgKzI0OTA0LDkgQEAgcmVzb2x2ZSB0aGlzIHRvIHRoZSBsYXp5IHN0cmluZydzIGNoYXJh YwotIHdyaXRhYmxlLgotIEBlbmQgZGVmdmFyCi0gCi0tQG5vZGUgQXV0by1sb2FkaW5nCi0tQHN1 YnNlY3Rpb24gQXV0by1sb2FkaW5nCi0tQGNpbmRleCBhdXRvLWxvYWRpbmcsIFB5dGhvbgotK0Bu b2RlIFB5dGhvbiBBdXRvLWxvYWRpbmcKLStAc3Vic2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5n Ci0rQGNpbmRleCBQeXRob24gYXV0by1sb2FkaW5nCi0gCi0gV2hlbiBhIG5ldyBvYmplY3QgZmls ZSBpcyByZWFkIChmb3IgZXhhbXBsZSwgZHVlIHRvIHRoZSBAY29kZXtmaWxlfQotIGNvbW1hbmQs IG9yIGJlY2F1c2UgdGhlIGluZmVyaW9yIGhhcyBsb2FkZWQgYSBzaGFyZWQgbGlicmFyeSksCi1A QCAtMjQ2OTMsMzIgKzI0OTI2LDM1IEBAIEF1dG8tbG9hZGluZyBjYW4gYmUgZW5hYmxlZCBvciBk aXNhYmxlZCwKLSBhbmQgdGhlIGxpc3Qgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBjYW4gYmUgcHJp bnRlZC4KLSAKLSBAdGFibGUgQGNvZGUKLS1Aa2luZGV4IHNldCBhdXRvLWxvYWQtc2NyaXB0cwot LUBpdGVtIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBbeWVzfG5vXQotK0BhbmNob3J7c2V0IGF1dG8t bG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMKLStAaXRlbSBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtvbnxvZmZdCi0gRW5hYmxl IG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4KLSAKLS1Aa2lu ZGV4IHNob3cgYXV0by1sb2FkLXNjcmlwdHMKLS1AaXRlbSBzaG93IGF1dG8tbG9hZC1zY3JpcHRz Ci0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IHNob3cg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHMKLSBTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIGVu YWJsZWQgb3IgZGlzYWJsZWQuCi0gCi0tQGtpbmRleCBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzCi0t QGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMKLS1AaXRlbSBpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0tUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIHNj cmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQuCi0rQGFuY2hvcntpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzCi0rQGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzCi0r QGl0ZW0gaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQcmlu dCB0aGUgbGlzdCBvZiBhbGwgUHl0aG9uIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0gYXV0by1s b2FkZWQuCi0gCi0tQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIHNjcmlwdHMgdGhhdCB3ZXJl IG1lbnRpb25lZCBpbgotK0Fsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBQeXRob24gc2NyaXB0 cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCi0gdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30g c2VjdGlvbiBhbmQgd2VyZSBub3QgZm91bmQKLSAoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb259KS4KLSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3Qg cHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMu ICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKLSBhbiBlcnJvciBtZXNz YWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KLSAKLS1JZiBAdmFye3JlZ2V4cH0gaXMg c3VwcGxpZWQgb25seSBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0r SWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgUHl0aG9uIHNjcmlwdHMgd2l0aCBtYXRj aGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KLSAKLSBFeGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUK LS0oZ2RiKSBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzCi0rKGdkYikgaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMKLSBMb2FkZWQgIFNjcmlwdAotIFllcyAgICAgcHktc2VjdGlvbi1zY3JpcHQu cHkKLSAgICAgICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5 Nzc0ICswMjAwCi1AQCAtMzEsMjkgKzMxLDU2IEBACi0gCi0gI2luY2x1ZGUgInB5dGhvbi1pbnRl cm5hbC5oIgotIAotLS8qIE5PVEU6IEl0J3MgdHJpdmlhbCB0byBhbHNvIHN1cHBvcnQgYXV0by1s b2FkaW5nIG5vcm1hbCBnZGIgc2NyaXB0cy4KLS0gICBUaGVyZSBoYXMgeWV0IHRvIGJlIGEgbmVl ZCBzbyBpdCdzIG5vdCBpbXBsZW1lbnRlZC4gICovCi0tCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXIt b2JqZmlsZSBzY3JpcHRzIHRvIGF1dG8tbG9hZC4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0g bG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLnB5LiAgKi8KLSAjZGVmaW5lIEdE QlBZX0FVVE9fRklMRV9OQU1FICItZ2RiLnB5IgotIAotLS8qIFRoZSBzZWN0aW9uIHRvIGxvb2sg Zm9yIHNjcmlwdHMgKGluIGZpbGUgZm9ybWF0cyB0aGF0IHN1cHBvcnQgc2VjdGlvbnMpLgotKy8q IFRoZSBzZWN0aW9uIHRvIGxvb2sgZm9yIFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIChpbiBm aWxlIGZvcm1hdHMgdGhhdAotKyAgIHN1cHBvcnQgc2VjdGlvbnMpLgotICAgIEVhY2ggZW50cnkg aW4gdGhpcyBzZWN0aW9uIGlzIGEgYnl0ZSBvZiB2YWx1ZSAxLCBhbmQgdGhlbiB0aGUgbnVsLXRl cm1pbmF0ZWQKLSAgICBuYW1lIG9mIHRoZSBzY3JpcHQuICBUaGUgc2NyaXB0IG5hbWUgbWF5IGlu Y2x1ZGUgYSBkaXJlY3RvcnkuCi0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdh cmQgY29tcGF0aWJsZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElP Tl9OQU1FICIuZGVidWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogVXNlci1zZXR0YWJsZSBvcHRpb24g dG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nOgotLSAgIHNldCBhdXRvLWxvYWQtc2NyaXB0 cyBvbnxvZmYKLS0gICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lh dGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpmaWxlCi0tICAgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndp c2UuCi0tICAgQXQgdGhlIG1vbWVudCwgdGhpcyBvbmx5IGFmZmVjdHMgcHl0aG9uIHNjcmlwdHMs IGJ1dCB0aGVyZSdzIG5vIHJlYXNvbgotLSAgIG9uZSBjb3VsZG4ndCBhbHNvIGhhdmUgb3RoZXIg a2luZHMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cywgYW5kIHRoZXJlJ3MKLS0gICBubyByZWFzb24g dG8gaGF2ZSB0aGVtIGVhY2ggY29udHJvbGxlZCBieSBhIHNlcGFyYXRlIGZsYWcuCi0tICAgU28g d2UgZWxpZGUgInB5dGhvbiIgZnJvbSB0aGUgbmFtZSBoZXJlIGFuZCBpbiB0aGUgb3B0aW9uLgot LSAgIFRoZSBmYWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9u IGRldGFpbC4gICovCi0tc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0rLyogVXNl ci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIFB5dGhv biBzY3JpcHRzOgotKyAgIHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmCi0rICAg VGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBQeXRob24gc2Ny aXB0cyB3aGVuIGFuCi0rICAgb2JqZmlsZSBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICov Ci0rc3RhdGljIGludCBhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgPSAxOwotKwotK3N0YXRpYyB2 b2lkIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotKwkJCQkJCUZJTEUgKmZpbGUsCi0rCQkJCQkJY29uc3QgY2hhciAqZmlsZW5hbWUp OwotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRz IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRv X2xvYWRfcHl0aG9uX3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks Ci0rCQkJICAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1 ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMgaXMgJXMuXG4iKSwgdmFsdWUpOwotK30KLSsKLSsvKiBEZWZpbml0aW9uIG9m IHNjcmlwdCBsYW5ndWFnZSBmb3IgUHl0aG9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9weXRob24KLSsgID0geyBH REJQWV9BVVRPX0ZJTEVfTkFNRSwgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSB9 OwotKwotKy8qIFdyYXBwZXIgb2Ygc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgZm9y IHNjcmlwdF9sYW5ndWFnZV9weXRob24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfbG9h ZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUg KmZpbGUsCi0rCQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlw dCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IgotKyAgICAgY2FuIHByaW50IGl0LiAgKi8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9h ZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1h eWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRf bGFuZ3VhZ2VfcHl0aG9uKTsKLSsKLSsgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChvYmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Ci0rfQotIAotIC8qIExvYWQgc2NyaXB0cyBzcGVj aWZpZWQgaW4gT0JKRklMRS4KLSAgICBTVEFSVCxFTkQgZGVsaW1pdCBhIGJ1ZmZlciBjb250YWlu aW5nIGEgbGlzdCBvZiBudWwtdGVybWluYXRlZAotQEAgLTEyMSw2ICsxNDgsMTcgQEAgc291cmNl X3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAkgIG1ha2VfY2xlYW51cF9mY2xv c2UgKHN0cmVhbSk7Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSAJfQot KyAgICAgIGVsc2UKLSsJewotKwkgIGZ1bGxfcGF0aCA9IE5VTEw7Ci0rCi0rCSAgLyogV2UgZG9u J3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwot KwkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKLSsJ ICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBz ZWN0aW9uICVzXG5cCi0rb2YgZmlsZSAlc1xuXAotK1VzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9u IFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCi0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9O QU1FLCBvYmpmaWxlLT5uYW1lKTsKLSsJfQotIAotICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNu J3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCi0gCSBmb3VuZCBl aXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gK LUBAIC0xMjksMjQgKzE2NywxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2Jq ZmlsZSAqCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJw b3NlLiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGZpbGUsCi0tCQkJCQlvcGVuZWQgPyBmdWxsX3BhdGggOiBOVUxMKTsKLSsgICAg ICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsIGZ1 bGxfcGF0aCwKLSsJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLS0gICAgICBpZiAo ISBvcGVuZWQpCi0tCXsKLS0JICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dy YW0gaXMgc3RpbGwgZGVidWdnYWJsZS4gICovCi0tCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2Fy bmluZ19wcmludCAocHNwYWNlX2luZm8pKQotLQkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRv LWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLS1vZiBmaWxlICVzXG5c Ci0tVXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiks Ci0tCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsKLS0JfQot LSAgICAgIGVsc2UKLS0JewotLQkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxv YWRlZCwgbG9hZCBpdC4gICovCi0tCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKLS0JICAgIHNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7 Ci0tCX0KLSsgICAgICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxv YWQgaXQuICAqLwotKyAgICAgIGlmIChvcGVuZWQgJiYgIWluX2hhc2hfdGFibGUpCi0rCXNvdXJj ZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7 Ci0gCi0gICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci1AQCAtMTgxLDM2ICsy MDcsNzUgQEAgYXV0b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbAotICAgZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKLSB9Ci0gCi0tLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2Ny aXB0cyBmb3IgT0JKRklMRS4gICovCi0rLyogTG9hZCBhbnkgUHl0aG9uIGF1dG8tbG9hZGVkIHNj cmlwdHMgZm9yIE9CSkZJTEUuICAqLwotIAotIHZvaWQKLS1sb2FkX2F1dG9fc2NyaXB0c19mb3Jf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rZ2RicHlfbG9hZF9hdXRvX3Njcmlw dHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsKLS0gIGlmIChhdXRv X2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkKQotKyAgaWYgKGF1dG9fbG9h ZF9weXRob25fc2NyaXB0cykKLSAgICAgewotLSAgICAgIGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCAob2JqZmlsZSwgR0RCUFlfQVVUT19GSUxFX05BTUUpOwotKyAgICAgIGF1dG9fbG9hZF9vYmpm aWxlX3NjcmlwdCAob2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotICAgICAgIGF1 dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKG9iamZpbGUsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1F KTsKLSAgICAgfQotIH0KLSsKLSsvKiBXcmFwcGVyIGZvciAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rewotKyAgYXV0b19sb2FkX2lu Zm9fc2NyaXB0cyAocGF0dGVybiwgZnJvbV90dHksICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsK LSt9Ci0gDAotIHZvaWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0r ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kOwotKyAgY2hhciAqY21kX25hbWU7Ci0rCi0r ICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9y dCwKLSsJCQkgICAmYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBkZWJ1 Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMuIiks IF8oIlwKLStTaG93IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2Fk ZWQgUHl0aG9uIHNjcmlwdHMuIiksIF8oIlwKLStJZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBQeXRo b24gc2NyaXB0cyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCi0rYW4gZXhl Y3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5 IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBOVUxMLCBz aG93X2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICgpLAotKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSAg IGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBw b3J0LAotLQkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotLVNldCB0aGUgZGVidWdnZXIn cyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1TaG93 IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4i KSwgXygiXAotLUlmIGVuYWJsZWQsIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVu IHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotLWFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnku IiksCi0tCQkJICAgTlVMTCwgTlVMTCwKLS0JCQkgICAmc2V0bGlzdCwKLS0JCQkgICAmc2hvd2xp c3QpOwotKwkJCSAgICZhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKLStTZXQgdGhlIGRl YnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cywg IgotKwkJCQkJCQkJICJkZXByZWNhdGVkLiIpLAotKwkJCSAgIF8oIlwKLStTaG93IHRoZSBkZWJ1 Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIK LSsJCQkJCQkJCSAiZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBOVUxMLCBOVUxMLCBzaG93X2F1dG9f bG9hZF9weXRob25fc2NyaXB0cywKLSsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSsgIGNt ZF9uYW1lID0gImF1dG8tbG9hZC1zY3JpcHRzIjsKLSsgIGNtZCA9IGxvb2t1cF9jbWQgKCZjbWRf bmFtZSwgc2V0bGlzdCwgIiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNldCBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiKTsKLSsKLSsgIC8qIEl0IGlzIG5lZWRlZCBiZWNhdXNl IGxvb2t1cF9jbWQgdXBkYXRlcyB0aGUgQ01EX05BTUUgcG9pbnRlci4gICovCi0rICBjbWRfbmFt ZSA9ICJhdXRvLWxvYWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUs IHNob3dsaXN0LCAiIiwgLTEsIDEpOwotKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAic2hvdyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiKTsKLSsKLSsgIGFkZF9jbWQgKCJweXRob24tc2NyaXB0cyIs IGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAotKwkgICBfKCJQcmlu dCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cy5cblwKLStV c2FnZTogaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwotKyAgY21kID0gYWRkX2luZm8gKCJhdXRv LWxvYWQtc2NyaXB0cyIsIGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rUHJp bnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMsIGRlcHJl Y2F0ZWQuIikpOwotKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiKTsKLSB9Ci0gCi0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotIAotIHZvaWQK LS1sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp Ci0rZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKQotIHsKLSB9Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9u L3B5dGhvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9w eXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0NDoy Ni45Nzk0Mzc0NDYgKzAyMDAKLUBAIC00MSw3ICs0MSw3IEBAIGludCBhcHBseV92YWxfcHJldHR5 X3ByaW50ZXIgKHN0cnVjdCB0eXAKLSAKLSB2b2lkIHByZXNlcnZlX3B5dGhvbl92YWx1ZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBodGFiX3QgY29waWVkX3R5cGVzKTsKLSAKLS12b2lkIGxv YWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0r dm9pZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpOwotIAotIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnRf b2JqZWN0ICpicF9vYmopOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCTIwMTItMDEtMDQgMDk6MTc6 NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2hlbHAuZXhwCTIwMTItMDQtMTggMDA6NDQ6MjYuOTgwNDM3NDQ0ICswMjAwCi1A QCAtMjQsNyArMjQsNyBAQAotIGdkYl9zdGFydAotIAotICMgZm9yY2UgdGhlIGhlaWdodCBvZiB0 aGUgZGVidWdnZXIgdG8gYmUgcHJldHR5IGxhcmdlIHNvIG5vIHBhZ2VycyBnZXQgdXNlZAotLWdk Yl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCA0MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0rZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDUwMCIgInRlc3Qgc2V0IGhlaWdodCIKLSAKLSAj IHVzZSBhIGxhcmdlciBleHBlY3QgaW5wdXQgYnVmZmVyIGZvciBsb25nIGhlbHAgb3V0cHV0cy4K LSAjIHRlc3QgaGVscCBhZGQtc3ltYm9sLWZpbGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LW9iamZpbGUtc2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9i amZpbGUtc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAg LTQwLDcgKzQwLDcgQEAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2Ri X2xvYWQgJHtiaW5maWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLS1n ZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdkYi5w eS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qLyR7 dGVzdGZpbGV9LWdkYi5weS4qIgotIAotIGlmICFbcnVudG9fbWFpbl0gewotICAgICBwZXJyb3Ig ImNvdWxkbid0IHJ1biB0byBtYWluIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2Vj dGlvbi1zY3JpcHQuZXhwCTIwMTItMDEtMTYgMTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1z Y3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAtNTIsMTEg KzUyLDExIEBAIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2Fk ICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0tZ2RiX3Rl c3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5h bWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxl fS5weS4qIgotICMgQWdhaW4sIHdpdGggYSByZWdleHAgdGhpcyB0aW1lLgotLWdkYl90ZXN0ICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4q ZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwg bmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoYXQg bWF0Y2hlcyBubyBzY3JpcHRzLgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIG5v LXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcyIgXAotICAgIk5vIGF1dG8tbG9hZCBzY3Jp cHRzIG1hdGNoaW5nIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMuIgotIAotIGlmICFbcnVudG9fbWFp bl0gewoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xMW9mMjgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMTFvZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWM2OGIwLi4w MDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0xMW9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw3NDQgKzAsMCBAQAotW3BhdGNoIzQgNS84XSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCi0K LSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKLSMjIC0xLDUgKzEs MzkgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0gCi0rCU5ldyBvcHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KLSsJKiBO RVdTOiBOZXcgY29tbWFuZHMgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgotKwlhbmQgInNob3cg YXV0by1sb2FkIHNhZmUtcGF0aCIuCi0rCSogYXV0by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3Mu aCwgcmVhZGxpbmUvdGlsZGUuaCBhbmQgY29tcGxldGVyLmguCi0rCShhdXRvX2xvYWRfc2FmZV9w YXRoLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYykKLSsJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVj X3VwZGF0ZSwgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpCi0rCShzaG93X2F1dG9fbG9hZF9zYWZl X3BhdGgsIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9pc19pbl9kaXIpCi0rCShm aWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRf c2FmZSk6IE5ldy4KLSsJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlh YmxlIGlzX3NhZmUuICBDYWxsCi0rCWZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYg aXQgaXMgbm90LgotKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgot KwkobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBT TE9UIHdpdGggaXQuCi0rCShwcmludF9zY3JpcHQpOiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0 ZWFkIG9mIEZVTExfUEFUSC4gIENoYW5nZQotKwlvdXRwdXQgIk1pc3NpbmciIHRvICJObyIuCi0r CShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQot KwlhdXRvX2xvYWRfc2FmZV9wYXRoLiAgUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IiwKLSsJInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUt cGF0aCIuCi0rCSogYXV0by1sb2FkLmggKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVy IGxvYWRlZC4KLSsJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCi0r CSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLSsJ KiBjb25maWd1cmUuYWM6IE5ldyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRo Ci0rCWFuZCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KLSsJKiBsaW51eC10aHJlYWQt ZGIuYyAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQotKwkodHJ5X3RocmVhZF9kYl9s b2FkX2Zyb21fZGlyKTogQ2hlY2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmaXJzdC4KLSsJKiBt YWluLmMgKGNhcHR1cmVkX21haW4pOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgot KwlMT0NBTF9HREJJTklULgotKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9h dXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldwotKwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KLSsJKHNvdXJjZV9z ZWN0aW9uX3NjcmlwdHMpOiBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYg aXQgaXMKLSsJbm90LgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KLSAJKiBO RVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAotIAkiaW5mbyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6 MzMuMjgyNzA2MzE5ICswMjAwCi1AQCAtNjcsNiArNjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIgb258b2ZmCi0gc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0gICBDb250cm9s IGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJl ZCBsaWJyYXJ5LgotIAotK3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4u XQotK3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgotKyAgVGhlIGRlbGlt aXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9y bS4KLSsKLSAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5pdC1jb21tYW5kPUZJ TEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0 Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQu YwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAotQEAgLTMyLDYgKzMyLDkgQEAK LSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCi0gI2lu Y2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgotKyNpbmNsdWRlICJnZGJfdmVjcy5oIgotKyNpbmNs dWRlICJyZWFkbGluZS90aWxkZS5oIgotKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKLSAKLSAvKiBU aGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRo b24gY29tbWFuZCBmaWxlcy4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9v LnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCi1AQCAtOTAsNiArOTMsMTgxIEBAIHNo b3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV8KLSAJCSAgICB2YWx1ZSk7Ci0g fQotIAotKy8qIERpcmVjdG9yeSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4g IEl0IGlzIG5vdCBjaGVja2VkIGZvcgotKyAgIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBz dHJvbmdseSByZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5Ci0rICAgX2luaXRpYWxp emVfYXV0b19sb2FkLiAgKi8KLStzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKLSsK LSsvKiBWZWN0b3Igb2YgZGlyZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEgg d2l0aCBlYWNoIG9uZSBub3JtYWxpemVkCi0rICAgYnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJs eSBlYWNoIGVudHJpZXMgaGFzIGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgKLSsgICBjb3VudGVycGFy dC4gICovCi0rc3RhdGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsK LSsKLSsvKiBVcGRhdGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9f TE9BRF9TQUZFX1BBVEguICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWNfdXBkYXRlICh2b2lkKQotK3sKLSsgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVM TDsKLSsgIHVuc2lnbmVkIGxlbjsKLSsgIGludCBpeDsKLSsKLSsgIGZyZWVfY2hhcl9wdHJfdmVj IChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7Ci0rCi0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rICBs ZW4gPSBWRUNfbGVuZ3RoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOwotKwot KyAgLyogQXBwbHkgdGlsZGVfZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xP QURfU0FGRV9QQVRIX1ZFQwotKyAgICAgZWxlbWVudC4gICovCi0rICBmb3IgKGl4ID0gMDsgaXgg PCBsZW47IGl4KyspCi0rICAgIHsKLSsgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJf cHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOwotKyAgICAgIGNoYXIgKmV4cGFuZGVk ID0gdGlsZGVfZXhwYW5kIChkaXIpOwotKyAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFs cGF0aCAoZXhwYW5kZWQpOwotKwotKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBp cyBhdCBsZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLwotKyAgICAgIHhmcmVlIChkaXIpOwotKyAg ICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBl eHBhbmRlZCk7Ci0rCi0rICAgICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJl bnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8KLSsgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgs IGV4cGFuZGVkKSA9PSAwKQotKwl4ZnJlZSAocmVhbF9wYXRoKTsKLSsgICAgICBlbHNlCi0rCVZF Q19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRo KTsKLSsgICAgfQotK30KLSsKLSsvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3Nh ZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nl dF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjKQotK3sKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSAoKTsKLSt9Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9w YXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19h dXRvX2xvYWRfc2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAot KwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sK LSsgIGlmICgqdmFsdWUgPT0gMCkKLSsgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0 by1sb2FkIGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgotKwkJCSAgICAgICJkaXJl Y3RvcnkuXG4iKSk7Ci0rICBlbHNlCi0rICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxp c3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvICIKLSsJCQkgICAgICAi YXV0by1sb2FkIGZpbGVzIGlzICVzLlxuIiksCi0rCQkgICAgICB2YWx1ZSk7Ci0rfQotKwotKy8q ICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZl X3BhdGggY29uZmlndXJhdGlvbgotKyAgIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAot K2FkZF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewot KyAgY2hhciAqczsKLSsKLSsgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKLSsgICAg ZXJyb3IgKF8oIlwKLStBZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhl IGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCi0rVXNlICdzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKLSsKLSsgIHMgPSB4c3RycHJp bnRmICgiJXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFy Z3MpOwotKyAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKyAgYXV0b19sb2FkX3NhZmVf cGF0aCA9IHM7Ci0rCi0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0rfQot KwotKy8qIFJldHVybiAxIGlmIEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFN RSBiZWxvbmdzIHRvIHRoZQotKyAgIHN1YmRpcmVjdG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndp c2UuICBnZGJfcmVhbHBhdGggbm9ybWFsaXphdGlvbiBpcyBuZXZlcgotKyAgIGRvbmUgaGVyZS4g ICovCi0rCi0rc3RhdGljIEFUVFJJQlVURV9QVVJFIGludAotK2ZpbGVuYW1lX2lzX2luX2RpciAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRpcikKLSt7Ci0rICBzaXplX3QgZGly X2xlbiA9IHN0cmxlbiAoZGlyKTsKLSsKLSsgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBB UkFUT1IgKGRpcltkaXJfbGVuIC0gMV0pKQotKyAgICBkaXJfbGVuLS07Ci0rCi0rICByZXR1cm4g KGZpbGVuYW1lX25jbXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKLSsJICAmJiAoSVNf RElSX1NFUEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xlbl0pCi0rCSAgICAgIHx8IGZpbGVuYW1lW2Rp cl9sZW5dID09ICdcMCcpKTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25n cyB0byBvbmUgb2YgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YKLSsgICBBVVRPX0xPQURfU0FGRV9Q QVRIX1ZFQy4gIFJldHVybiAwIG90aGVyd2lzZS4KLSsgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl Y191cGRhdGUgaXMgbmV2ZXIgY2FsbGVkLgotKyAgICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBk YXRlZCBieSBnZGJfcmVhbHBhdGggb2YgRklMRU5BTUUgLSBpdCBoYXMgdG8gYmUKLSsgICBmcmVl ZCBieSB0aGUgY2FsbGVyLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZmlsZW5hbWVfaXNfaW5fYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAotKwkJCQkJY2hhciAq KmZpbGVuYW1lX3JlYWxwKQotK3sKLSsgIGNoYXIgKmRpcjsKLSsgIGludCBpeDsKLSsKLSsgIGZv ciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVj LCBpeCwgZGlyKTsgKytpeCkKLSsgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZp bGVuYW1lX2lzX2luX2RpciAoZmlsZW5hbWUsIGRpcikpCi0rICAgICAgYnJlYWs7Ci0rICAKLSsg IGlmIChkaXIgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0g TlVMTCkKLSsJKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCi0r ICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMsIGl4LCBkaXIpOwotKwkgICArK2l4KQotKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGly ICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCi0rCSAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChk aXIgIT0gTlVMTCkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyog UmV0dXJuIDEgaWYgRklMRU5BTUUgaXMgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVz IG9mCi0rICAgQVVUT19MT0FEX1NBRkVfUEFUSC4gIE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5k IHJldHVybiAwLiAgRklMRU5BTUUgZG9lcwotKyAgIG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRl IHBhdGguCi0rCi0rICAgRXhpc3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVu Y3Rpb24gd2lsbCBzdGlsbCBnaXZlIGEgd2FybmluZwotKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3 b3VsZCBxdWlldGx5IHNraXAgbm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5zYWZlCi0rICAgZGlyZWN0 b3J5LiAgKi8KLSsKLStpbnQKLStmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpm aWxlbmFtZSkKLSt7Ci0rICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKLSsgIHN0cnVjdCBj bGVhbnVwICpiYWNrX3RvOwotKwotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJy ZW50X2NvbnRlbnRzLCAmZmlsZW5hbWVfcmVhbCk7Ci0rCi0rICBpZiAoZmlsZW5hbWVfaXNfaW5f YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCi0rICAg IHsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAg IH0KLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSsgIGlmIChmaWxl bmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9y ZWFsKSkKLSsgICAgewotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgICAgICByZXR1 cm4gMTsKLSsgICAgfQotKwotKyAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5n IGhhcyBiZWVuIGRlY2xpbmVkIGJ5IHlvdXIgIgotKwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0 aCcgc2V0IHRvIFwiJXNcIi4iKSwKLSsJICAgZmlsZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVf cGF0aCk7Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rICByZXR1cm4gMDsKLSt9Ci0r Ci0gLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVu Y2VzIG9mIGNvbW1hbmRzLiAgKi8KLSAKLSBzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCi1AQCAtOTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9p ZAotIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgRklMRSAqZmlsZSwKLSAJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gewotKyAg aW50IGlzX3NhZmU7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5m bzsKLSAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0gCi0rICBpc19zYWZlID0g ZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOwotKwotICAgLyogQWRkIHRoaXMgc2Ny aXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMi Ci0gICAgICBjYW4gcHJpbnQgaXQuICAqLwotICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgbWF5 YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9s YW5ndWFnZV9nZGIpOwotKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUs IGZpbGVuYW1lLCBmaWxlbmFtZSwKLSsJCSAgICAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rCi0r ICBpZiAoIWlzX3NhZmUpCi0rICAgIHJldHVybjsKLSAKLSAgIFRSWV9DQVRDSCAoZSwgUkVUVVJO X01BU0tfQUxMKQotICAgICB7Ci1AQCAtMTQwLDYgKzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2Ny aXB0Ci0gICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLSAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsK LSAKLSsgIC8qIE5vbi16ZXJvIGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCi0r ICBpbnQgbG9hZGVkOwotKwotICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3Vh Z2U7Ci0gfTsKLSAKLUBAIC0yMzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9k YXRhX2Zvcl9sb2FkaW5nIChzCi0gICByZXR1cm4gaW5mbzsKLSB9Ci0gCi0tLyogQWRkIHNjcmlw dCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCi0tICAgRlVM TF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlz Ci0rLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNF X0lORk8uICBMT0FERUQgMSBpZiB0aGUKLSsgICBzY3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRv KSBiZSBsb2FkZWQsIDAgb3RoZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhhcyBub3QKLSsgICBiZWVu IGZvdW5kKS4gIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAg VGhlIHJlc3VsdCBpcwotICAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUg aGFzaCB0YWJsZS4gICovCi0gCi0gaW50Ci0tbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0rbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCi0gCQkgIGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSAJCSAgY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCi0gewotQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXli ZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCi0gCX0KLSAgICAgICBlbHNlCi0g CSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0rICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9h ZGVkOwotICAgICAgICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0gICAgIH0KLSAKLUBA IC00MzIsNyArNjIyLDcgQEAgcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2Ny aQotIAotICAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlv dXQsIE5VTEwpOwotIAotLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBz Y3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKLSsgIHVpX291dF9maWVsZF9z dHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOwot ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOwot ICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSAKLUBAIC03MTgsNiArOTA4LDggQEAgdm9p ZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpOwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9hdXRv X2xvYWQgKHZvaWQpCi0gewotKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKLSsKLSAg IGF1dG9fbG9hZF9wc3BhY2VfZGF0YQotICAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0 YV93aXRoX2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLSAKLUBAIC03 NTcsNCArOTQ5LDMwIEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYK LSAJICAgXygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhh cyBiZWVuIGxvYWRlZC5cblwKLSBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIp LAotIAkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhdXRvX2xvYWRf c2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKLSsgIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSsgIGFkZF9zZXRzaG93X29wdGlvbmFs X2ZpbGVuYW1lX2NtZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJCSAgICAgJmF1 dG9fbG9hZF9zYWZlX3BhdGgsIF8oIlwKLStTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJv bSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAotK1Nob3cgdGhl IGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBm aWxlcy4iKSwgXygiXAotK1ZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRo ZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAotK2JlIGxvY2F0ZWQgaW4gb25l IG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwg YmVcblwKLStwcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNl IGVtcHR5IHN0cmluZyAob3IgZXZlblxuXAotK2VtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxs b3cgYW55IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCi0rVGhp cyBvcHRpb24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1 dG8tbG9hZCAuLi4gb2ZmJy5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0 aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkJICAgICBzZXRfYXV0b19sb2Fk X3NhZmVfcGF0aCwKLSsJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkJCSAg ICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2hv d19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1z YWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAotKwkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAot KwkJIF8oIkFkZCBlbnRyaWVzIHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2gg aXQgaXMgc2FmZSAiCi0rCQkgICAidG8gYXV0by1sb2FkIGZpbGVzLlxuXAotK1NlZSB0aGUgY29t bWFuZHMgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUt cGF0aCcgdG9cblwKLSthY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCi0r CQkgJmNtZGxpc3QpOwotKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxl dGVyKTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKLUBA IC0zOSw3ICszOSw4IEBAIGV4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUK LSBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0gICBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsK LSBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvLAotLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq ZnVsbF9wYXRoLAotKwkJCSAgICAgaW50IGxvYWRlZCwgY29uc3QgY2hhciAqbmFtZSwKLSsJCQkg ICAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSAJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRf bGFuZ3VhZ2UgKmxhbmd1YWdlKTsKLSBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3Jp cHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci1AQCAtNTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvCi0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOwotIGV4dGVybiBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSAK LStleHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1l KTsKLSsKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYw NzczNjAyMCArMDIwMAotQEAgLTQzLDYgKzQzLDkgQEAKLSAgICBtb3ZlZC4gKi8KLSAjdW5kZWYg REVCVUdESVJfUkVMT0NBVEFCTEUKLSAKLSsvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0 by1sb2FkZWQgZmlsZXMuICovCi0rI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAot KwotIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KLSAjdW5kZWYg REVGQVVMVF9CRkRfQVJDSAotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Z3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmln dXJlCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAw Ci1AQCAtOTU1LDYgKzk1NSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCi0gd2l0aF9nZGJf ZGF0YWRpcgotIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKLSB3aXRoX3JwbQotK3dpdGhfYXV0b19s b2FkX3NhZmVfcGF0aAotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlXzY0X2JpdF9iZmQKLSBlbmFi bGVfZ2RiY2xpCi1AQCAtMTY2Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGgg Zm9yIHNvdXJjZSBmaWxlcwotICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRh dGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCi0rICAtLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aD1QQVRICi0rICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKLSsgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRo Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQg ZmlsZXMgbG9jYXRpb25zCi0gICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5k IGZyYW1lIHVud2luZGluZyBzdXBwb3J0Ci0gICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2Ug dGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC04NDc3LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRh c19tZTogV0FSTklORzogJFJQTV9QS0dfRVJSTwotICAgZmkKLSBmaQotIAotK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1s b2FkIHNhZmUtcGF0aCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0 by1sb2FkIHNhZmUtcGF0aC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7 IHRoZW4KLSsgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgZmkKLStlbHNlCi0rICB3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCi0rZmkKLSsKLSsKLSsgIHRlc3QgIngk cHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgotKyAgdGVzdCAi eCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotKyAgYWNf ZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhgCi0rICBhY19k ZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCi0rCi0rY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgotKyNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVm aW5lX2RpciIKLStfQUNFT0YKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1Ci0rJGFzX2Vj aG8gIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQotKwotIAotIAotIHN1YmRpcnM9 IiRzdWJkaXJzIHRlc3RzdWl0ZSIKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTcz NjAxMCArMDIwMAotQEAgLTMzOSw2ICszMzksMTggQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRv ciBycG10c0luaXRJdGVyYQotICAgZmkKLSBmaQotICAKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBk ZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQotK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZl LXBhdGgsCi0rQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhd LCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKLStBU19IRUxQ X1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0 IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAotK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KLSsgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9 IiIKLSsgZmldLAotK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKLStBQ19E RUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoLAotKwkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZp bGVzLl0pCi0rQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCi0rCi0g QUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQotIAotICMgQ2hlY2sgd2hldGhlciB0byBzdXBw b3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVh ZC1kYi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCi1AQCAtODY4LDcgKzg2 OCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCi0gICAvKiBU aGlzIHNob3VsZCBhdCBtaW5pbXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgKi8KLSAgIGdk Yl9hc3NlcnQgKGNwICE9IE5VTEwpOwotICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9T Tyk7Ci0tICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotKwotKyAgaWYgKCFm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgICAgcmVzdWx0ID0gMDsKLSsgIGVsc2UK LSsgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSAKLSAgIGRvX2NsZWFu dXBzIChjbGVhbnVwKTsKLSAgIHJldHVybiByZXN1bHQ7Ci1AQCAtOTM0LDcgKzkzOCwxMSBAQCB0 cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKLSAgIG1lbWNweSAocGF0aCwg ZGlyLCBkaXJfbGVuKTsKLSAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7Ci0gICBzdHJjcHkgKHBhdGgg KyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKLS0gIHJlc3VsdCA9IHRyeV90aHJlYWRf ZGJfbG9hZCAocGF0aCk7Ci0rCi0rICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgp KQotKyAgICByZXN1bHQgPSAwOwotKyAgZWxzZQotKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2Ri X2xvYWQgKHBhdGgpOwotIAotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgcmV0dXJuIHJl c3VsdDsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2 OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwky MDEyLTA0LTE4IDAwOjQ5OjIxLjYxMjczNjAwNyArMDIwMAotQEAgLTEwMjYsNyArMTAyNiw4IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgIHsKLSAgICAgICBhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7Ci0gCi0t ICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCi0r ICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKLSsJ ICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKLSAJewotIAkgIGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMi0wNC0xOCAwMDo0OToyMS42MjA3MzU5ODcgKzAyMDAKLUBAIC0yMDgwMSw2ICsyMDgwMSw4 IEBAIGdkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXEKLSBsaWJ0aHJlYWQt ZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9u LgotIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20g Y3VycmVudCBkaXJlY3RvcnkgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcg b2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi0rc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0rICAgICAgICAgICAg aXMgL3Vzci9sb2NhbC4KLSBAZW5kIHNtYWxsZXhhbXBsZQotIAotIEBhbmNob3J7aW5mbyBhdXRv LWxvYWR9Ci1AQCAtMjA4NzIsMTIgKzIwODc0LDE5IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0g Y29udHJvbCBjb21tYW5kcwotIEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcg bGlicmFyeS4KLSBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotIEB0 YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0rQGl0ZW0gQHhyZWZ7 c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgotK0B0YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVz dGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBz YWZlLXBhdGh9LgotK0B0YWIgU2hvdyBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMg bG9hZGluZy4KLStAaXRlbSBAeHJlZnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCi0rQHRhYiBB ZGQgZGlyZWN0b3J5IHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgotIEBlbmQgbXVsdGl0 YWJsZQotIAotIEBtZW51Ci0gKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5Ojog QHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLSAqIGxpYnRocmVh ZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGJ9Ci0gKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAg QHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSsqIEF1dG8tbG9hZGlu ZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBz YWZlLXBhdGh9Ci0gQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCi0gQGVuZCBtZW51Ci0gCi1A QCAtMjA5NzgsNiArMjA5ODcsMTA0IEBAIGF1dG8tbG9hZGVkLgotIElmIEB2YXJ7cmVnZXhwfSBp cyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRo Ci0gbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0gCi0rQG5vZGUgQXV0by1sb2FkaW5nIHNh ZmUgcGF0aAotK0BzdWJzZWN0aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRp bmcKLStAY2luZGV4IGF1dG8tbG9hZGluZyBzYWZlLXBhdGgKLSsKLStBcyB0aGUgZmlsZXMgb2Yg aW5mZXJpb3IgY2FuIGNvbWUgZnJvbSB1bnRydXN0ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRl ZCBieQotK2FuIGFwcGxpY2F0aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMg bG9hZCBhbnkgZmlsZXMgYXV0b21hdGljYWxseS4KLStAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhl IEBzYW1we3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSBzZXR0aW5nIHRvIGxpc3QKLStkaXJlY3Rv cmllcyB0cnVzdGVkIGZvciBsb2FkaW5nIGZpbGVzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBi eSB1c2VyLgotKwotK0lmIHRoZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2Vl IGEgd2FybmluZyBhbmQgdGhlIGZpbGUgd2lsbCBub3QKLStnZXQgbG9hZGVkOgotKwotK0BzbWFs bGV4YW1wbGUKLSskIC4vZ2RiIC1xIC4vZ2RiCi0rUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUv dXNlci9nZGIvZ2RiLi4uZG9uZS4KLSt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGIt Z2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91 ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KLSt3YXJuaW5nOiBG aWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KLSsg ICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91 c3IvbG9jYWwiLgotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhlIGxpc3Qgb2YgdHJ1c3RlZCBk aXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0rCi0r QHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KLStAa2luZGV4 IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgg QHZhcntkaXJlY3Rvcmllc30KLStTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVp ciBzdWJkaXJlY3RvcmllcykgdHJ1c3RlZCBmb3IgYXV0b21hdGljCi0rbG9hZGluZyBhbmQgZXhl Y3V0aW9uIG9mIHNjcmlwdHMuICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVk IGZpbGUuCi0rVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9y IChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKLStzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5k b3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKLSt0byB0 aGUgQGVudntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0 by1sb2FkIHNhZmUtcGF0aH0KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotK0Bp dGVtIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3Jp ZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZgotK3Njcmlw dHMuCi0rCi0rQGFuY2hvcnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0KLStAa2luZGV4IGFkZC1h dXRvLWxvYWQtc2FmZS1wYXRoCi0rQGl0ZW0gYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKLStBZGQg YW4gZW50cnkgKG9yIGxpc3Qgb2YgZW50cmllcykgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1 c3RlZCBmb3IgYXV0b21hdGljCi0rbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBN dWx0aXBsZSBlbnRyaWVzIG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCi0raG9zdCBwbGF0Zm9ybSBk aXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KLStAZW5kIHRhYmxlCi0rCi0rU2V0dGluZyB0aGlz IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3Rl Y3Rpb24uCi0rVGhpcyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3Rl bSBkaXJlY3RvcmllcyB3cml0YWJsZSBieSB0aGUKLStzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBV c2VycyBjYW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCi0r dGhlaXIgaG9tZSBkaXJlY3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0p LiAgU2VlIGFsc28gZGVwcmVjYXRlZAotK2luaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rv cnkKLSsoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0 YXJ0dXB9KS4KLSsKLStUbyBmb3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQg ZGVjbGluZWQgdG8gbG9hZCBpbiB0aGUgcHJldmlvdXMKLStleGFtcGxlLCB5b3UgY291bGQgdXNl IG9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXM6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0BpdGVt IH4vLmdkYmluaXQ6IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgotK1NwZWNpZnkg dGhpcyB0cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVu dCBvZiB0aGUgbGlzdC4KLStZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRp cmVjdG9yaWVzIGRpc3BsYXllZCBieQotK2J5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0 aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgotKwotK0BpdGVt IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9n ZGIiIFtAZG90c3t9XX0KLStTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91 cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQotK0B2YWx1ZXtHREJOfSBzZXNzaW9uLgotKwot K0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19 Ci0rRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0g c2Vzc2lvbi4KLStUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRo aXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCi0rZnJvbSB0cnVzdGVkIHNvdXJjZXMu Ci0rCi0rQGl0ZW0gQGtiZHsuL2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0 aH0KLStEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBh bnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KLStUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ug d2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCi0rdHJ1c3Rl ZCBzb3VyY2VzLgotK0BlbmQgaXRlbWl6ZQotKwotK09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4g YWxzbyBleHBsaWNpdGx5IGZvcmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAotK2Fs c28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgotKwotK0BpdGVtaXplIEBi dWxsZXQKLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19 Ci0rWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2lu Z2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotKwotK0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBA c2FtcHtzZXQgYXV0by1sb2FkIG5vfQotK0Rpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZv ciB0aGUgdXNlcgotKyhAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBp dCBpcyBpbXByb2JhYmxlLCB5b3UgY291bGQgYWxzbwotK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGlu c3RlYWQgKEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCi0rQGVuZCBpdGVtaXpl Ci0rCi0rVGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBi eSB1c2VyLiAgSWYgbm8gZW50cnkgbWF0Y2hlcwotK0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxh c3QgcmVzb3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bwotK3RoZWly IGNhbm9uaWNhbCBmb3JtICh0eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQg Y29tcGFyZSB0aGUKLStlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25p Y2FsaXplcyBtb3N0IG9mIHRoZSBmaWxlbmFtZXMgb24gaXRzCi0rb3duIGJlZm9yZSBzdGFydGlu ZyB0aGUgY29tcGFyaXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCi0r cmVjb21tZW5kZWQgdG8gYmUgZW50ZXJlZC4KLSsKLSBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncwot IEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcwotIAotQEAgLTI0OTU1LDEw ICsyNTA2MiwxMCBAQCBFeGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUKLSAoZ2RiKSBpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cwotLUxvYWRlZCAgU2NyaXB0Ci0tWWVzICAgICBweS1zZWN0 aW9uLXNjcmlwdC5weQotLSAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0 LnB5Ci0tTWlzc2luZyBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5Ci0rTG9hZGVkIFNjcmlwdAot K1llcyAgICBweS1zZWN0aW9uLXNjcmlwdC5weQotKyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHkt c2VjdGlvbi1zY3JpcHQucHkKLStObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQotIEBl bmQgc21hbGxleGFtcGxlCi0gQGVuZCB0YWJsZQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6 NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5 LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCi1AQCAtNzIs MTQgKzcyLDE5IEBAIHN0YXRpYyB2b2lkCi0gZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0gCQkJCSAgICBjb25z dCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0rICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotIAotKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUg aGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgotICAgICAg Y2FuIHByaW50IGl0LiAgKi8KLSAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2Vf ZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLS0gIG1heWJlX2FkZF9z Y3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2Vf cHl0aG9uKTsKLSsgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxl bmFtZSwgZmlsZW5hbWUsCi0rCQkgICAgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotIAotLSAg c291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1l KTsKLSsgIGlmIChpc19zYWZlKQotKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwotIH0KLSAKLSAvKiBMb2FkIHNjcmlwdHMgc3Bl Y2lmaWVkIGluIE9CSkZJTEUuCi1AQCAtMTQ3LDYgKzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3Nj cmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJewotIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0 cmVhbSk7Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsKLSsJICBpZiAo IWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCi0rCSAgICBvcGVuZWQgPSAwOwot IAl9Ci0gICAgICAgZWxzZQotIAl7Ci1AQCAtMTY3LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRv LWxvYWQgcHl0aG9uIFtSRUdFWFBdJyB0bwotIAotIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2Vy ZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCi0gCi0tICAgICAgaW5faGFzaF90YWJsZSA9IG1h eWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCi0rICAgICAgaW5f aGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUs IGZ1bGxfcGF0aCwKLSAJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLSAgICAgICAv KiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZp bGUtc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTgg MDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6 MjEuNjIxNzM1OTg1ICswMjAwCi1AQCAtMzcsNiArMzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90 ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93 bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5XQotIAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNk aXIvJHN1YmRpcgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgg JHtyZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0gZ2RiX2xv YWQgJHtiaW5maWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9u LXNjcmlwdC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIx LjYyMTczNTk4NSArMDIwMAotQEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVz dHNdIH0geyBjb250aW51ZSB9Ci0gc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25s b2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KLSAKLSBnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBh dXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQg c2FmZS1wYXRoIgotIGdkYl9sb2FkICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVk IHRoZSBzY3JpcHQuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaCBiL2dk Yi1hdXRvbG9hZC0xMm9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5 MmJkYmMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDM1MiArMCwwIEBACi1bcGF0Y2gjNCA2LzhdIHNldCBkZWJ1ZyBhdXRvLWxvYWQK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg5Lmh0 bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTUuaHRt bAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NDoyOAkxLjE0MTE0Ci0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMAkxLjE0MTE1Ci0jIyAtMSw1 ICsxLDI3IEBACi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotIAotKwlOZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBO RVdTOiBOZXcgY29tbWFuZHMgInNldCBkZWJ1ZyBhdXRvLWxvYWQiIGFuZCAic2hvdyBkZWJ1ZyBh dXRvLWxvYWQiLgotKwkqIGF1dG8tbG9hZC5jIChkZWJ1Z19hdXRvX2xvYWQsIHNob3dfZGVidWdf YXV0b19sb2FkOiBOZXcuCi0rCShhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpCi0rCShm aWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk6IENhbGwgZnByaW50Zl91bmZp bHRlcmVkCi0rCWlmIERFQlVHX0FVVE9fTE9BRC4KLSsJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUp OiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQgYW5kIC4uLi4KLSsJQ2FsbCBmcHJpbnRmX3VuZmls dGVyZWQgaWYgREVCVUdfQVVUT19MT0FELgotKwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZp bGUpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUKLSsJY2FsbGVyIGJ5IGV4cGxh bmF0b3J5IHN0cmluZy4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IFJlZ2lzdGVyICJzZXQg ZGVidWcgYXV0by1sb2FkIi4KLSsJKiBhdXRvLWxvYWQuaCAoZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVnX2ZtdAotKwlhbmQgLi4uLgotKwkqIGxpbnV4LXRocmVh ZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9kaXIpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgY2FsbGVy Ci0rCWJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBM aWtld2lzZS4KLSsJKiBweXRob24vcHktYXV0by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3Jp cHRfZm9yX29iamZpbGUpCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTGlrZXdpc2UuCi0r Ci0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotKwotIAlOZXcgb3B0aW9uICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi0gCSogTkVXUzog TmV3IGNvbW1hbmRzICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSAJYW5kICJzaG93IGF1dG8t bG9hZCBzYWZlLXBhdGgiLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0x OCAwMDo0OTozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9O RVdTCTIwMTItMDQtMTggMDA6NTA6MTUuMDE4NjAwMjgyICswMjAwCi1AQCAtNzIsNiArNzIsMTAg QEAgc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0gICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVz IGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0gICBUaGUgZGVsaW1p dGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3Jt LgotIAotK3NldCBkZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCi0rc2hvdyBkZWJ1ZyBhdXRvLWxvYWQK LSsgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5mbyBmb3IgYXV0by1sb2FkaW5nIHRo ZSBmaWxlcyBhYm92ZS4KLSsKLSAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5p dC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1 dGUgaXQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTQz LDYgKzQzLDIwIEBACi0gc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCQkJICAgY29uc3QgY2hh ciAqZmlsZW5hbWUpOwotIAotKy8qIFZhbHVlIG9mIHRoZSAnc2V0IGRlYnVnIGF1dG8tbG9hZCcg Y29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rc3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQg PSAwOwotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgZGVidWdfYXV0b19sb2FkIGNvbmZp Z3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z19hdXRv X2xvYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkgICAgICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50 Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgIgotKwkJCSAg ICAib2YgJ3NldCBhdXRvLWxvYWQgLi4uJyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9 Ci0rCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2Fk aW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQotICAgIHNjcmlwdHM6Ci0gICAgc2V0IGF1dG8tbG9h ZCBnZGItc2NyaXB0cyBvbnxvZmYKLUBAIC0xMTIsNiArMTI2LDExIEBAIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgIHVuc2lnbmVkIGxlbjsKLSAgIGludCBpeDsKLSAK LSsgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKLSsJCQlfKCJhdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mIFwiJXNcIi5c biIpLAotKwkJCWF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKwotICAgZnJlZV9jaGFyX3B0cl92ZWMg KGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSAKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVj ID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLUBAIC0x MjYsMTQgKzE0NSwzNCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0g ICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0gCi0gICAg ICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1l ZC4gICovCi0tICAgICAgeGZyZWUgKGRpcik7Ci0gICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRy LCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSAKLSsgICAgICBpZiAo ZGVidWdfYXV0b19sb2FkKQotKwl7Ci0rCSAgaWYgKHN0cmNtcCAoZXhwYW5kZWQsIGRpcikgPT0g MCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1s b2FkOiBVc2luZyBkaXJlY3RvcnkgXCIlc1wiLlxuIiksCi0rCQkJCWV4cGFuZGVkKTsKLSsJICBl bHNlCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCV8oImF1dG8t bG9hZDogUmVzb2x2ZWQgZGlyZWN0b3J5IFwiJXNcIiAiCi0rCQkJCSAgImFzIFwiJXNcIi5cbiIp LAotKwkJCQlkaXIsIGV4cGFuZGVkKTsKLSsJfQotKyAgICAgIHhmcmVlIChkaXIpOwotKwotICAg ICAgIC8qIElmIGdkYl9yZWFscGF0aCByZXR1cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVu ZCBpdC4gICovCi0gICAgICAgaWYgKHN0cmNtcCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkK LSAJeGZyZWUgKHJlYWxfcGF0aCk7Ci0gICAgICAgZWxzZQotLQlWRUNfc2FmZV9wdXNoIChjaGFy X3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCXsKLSsJICBWRUNf c2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7 Ci0rCi0rCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBBbmQgY2Fub25pY2FsaXplZCBhcyBcIiVz XCIuXG4iKSwKLSsJCQkJcmVhbF9wYXRoKTsKLSsJfQotICAgICB9Ci0gfQotIAotQEAgLTIxNywx NiArMjU2LDMwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAg IGlmIChkaXIgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0g TlVMTCkKLS0JKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCXsK LSsJICAqZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsJICBpZiAo ZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0g MCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1s b2FkOiBSZXNvbHZlZCAiCi0rCQkJCSAgImZpbGUgXCIlc1wiIGFzIFwiJXNcIi5cbiIpLAotKwkJ CQlmaWxlbmFtZSwgKmZpbGVuYW1lX3JlYWxwKTsKLSsJfQotIAotLSAgICAgIGZvciAoaXggPSAw OyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGly KTsKLS0JICAgKytpeCkKLS0JaWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxw LCBkaXIpKQotLQkgIGJyZWFrOwotKyAgICAgIGlmIChzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwg ZmlsZW5hbWUpICE9IDApCi0rCWZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLSsJICAgICArK2l4KQotKwkgIGlmIChm aWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKLSsJICAgIGJyZWFrOwot ICAgICB9Ci0gCi0gICBpZiAoZGlyICE9IE5VTEwpCi0tICAgIHJldHVybiAxOwotKyAgICB7Ci0r ICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLCBfKCJhdXRvLWxvYWQ6IEZpbGUgXCIlc1wiIG1hdGNoZXMgIgotKwkJCQkJICAiZGlyZWN0 b3J5IFwiJXNcIi5cbiIpLAotKwkJCSAgICBmaWxlbmFtZSwgZGlyKTsKLSsgICAgICByZXR1cm4g MTsKLSsgICAgfQotIAotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTI0MCwxMSArMjkzLDIwIEBAIGZp bGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgICBkaXJlY3RvcnkuICAq LwotIAotIGludAotLWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1l KQotK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBj aGFyICpkZWJ1Z19mbXQsIC4uLikKLSB7Ci0gICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsK LSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotIAotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkK LSsgICAgewotKyAgICAgIHZhX2xpc3QgZGVidWdfYXJnczsKLSsKLSsgICAgICB2YV9zdGFydCAo ZGVidWdfYXJncywgZGVidWdfZm10KTsKLSsgICAgICB2ZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLCBkZWJ1Z19mbXQsIGRlYnVnX2FyZ3MpOwotKyAgICAgIHZhX2VuZCAoZGVidWdfYXJn cyk7Ci0rICAgIH0KLSsKLSAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9j b250ZW50cywgJmZpbGVuYW1lX3JlYWwpOwotIAotICAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9f bG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotQEAgLTI4MSw3 ICszNDMsMTAgQEAgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAg c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBz dHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChm aWxlbmFtZSwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCAiCi0rCQkJCQkJInNlcXVlbmNl cyBvZiBjb21tYW5kcyBzY3JpcHQgIgotKwkJCQkJCSJcIiVzXCIgZm9yIG9iamZpbGUgXCIlc1wi LlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQg dGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGIt c2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtOTc1LDQgKzEwNDAsMTMgQEAg U2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdAotIGFjY2VzcyB0aGUgY3Vy cmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKLSAJCSAmY21kbGlzdCk7Ci0gICBzZXRfY21kX2Nv bXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotKwotKyAgYWRkX3NldHNob3dfYm9v bGVhbl9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwKLSsJCQkgICAmZGVidWdf YXV0b19sb2FkLCBfKCJcCi0rU2V0IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4i KSwgXygiXAotK1Nob3cgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJc Ci0rV2hlbiBub24temVybywgZGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgb2YgJ3NldCBhdXRv LWxvYWQgLi4uJ1xuXAotK2lzIGRpc3BsYXllZC4iKSwKLSsJCQkgICAgTlVMTCwgc2hvd19kZWJ1 Z19hdXRvX2xvYWQsCi0rCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKLSB9 Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTgg MDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0 by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKLUBAIC01NSw2ICs1 NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4g c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9p ZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21k bGlzdF9nZXQgKHZvaWQpOwotIAotLWV4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAo Y29uc3QgY2hhciAqZmlsZW5hbWUpOwotK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJCSAgIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwg Li4uKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQt ZGIuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTg2OSw3ICs4Njks OSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCi0gICBnZGJfYXNz ZXJ0IChjcCAhPSBOVUxMKTsKLSAgIHN0cmNweSAoY3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwot IAotLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1k YiAiCi0rCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSAkcGRpci5cbiIpLAotKwkJCSAg ICAgICBwYXRoKSkKLSAgICAgcmVzdWx0ID0gMDsKLSAgIGVsc2UKLSAgICAgcmVzdWx0ID0gdHJ5 X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLUBAIC05MzksNyArOTQxLDEwIEBAIHRyeV90aHJlYWRf ZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAg IHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYg KCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJ CSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSBleHBsaWNpdCAiCi0rCQkJCSAgICAgICAiZGly ZWN0b3J5LlxuIiksCi0rCQkJICAgICAgIHBhdGgpKQotICAgICByZXN1bHQgPSAwOwotICAgZWxz ZQotICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NTA6MDQu ODAxNjI2MjM1ICswMjAwCi1AQCAtMTAyNyw3ICsxMDI3LDEwIEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCi0gICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJf cmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotIAotICAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0 ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0Ci0tCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSAobG9jYWxfZ2RiaW5pdCkpCi0rCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxf Z2RiaW5pdCwKLSsJCQkJICAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgLmdkYmluaXQgIgotKwkJ CQkgICAgICAgImZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICAgbG9jYWxfZ2RiaW5pdCkpCi0g CXsKLSAJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOwotIAotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6 NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NTA6MDQuODA5NjI2MjE1ICswMjAwCi1AQCAtMjA4ODcs NiArMjA4ODcsNyBAQCBUaGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSAq IGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZv IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0gKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAg ICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSAqIEF1 dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1 dG8tbG9hZCBzYWZlLXBhdGh9Ci0rKiBBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlOjogICAgICAg ICAgQHNhbXB7c2V0L3Nob3cgZGVidWcgYXV0by1sb2FkfQotIEB4cmVme1B5dGhvbiBBdXRvLWxv YWRpbmd9LgotIEBlbmQgbWVudQotIAotQEAgLTIxMDg1LDYgKzIxMDg2LDQ1IEBAIGVudHJpZXMg YWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW4KLSBvd24gYmVmb3JlIHN0YXJ0aW5nIHRo ZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKLSByZWNv bW1lbmRlZCB0byBiZSBlbnRlcmVkLgotIAotK0Bub2RlIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1v ZGUKLStAc3Vic2VjdGlvbiBEaXNwbGF5aW5nIGZpbGVzIHRyaWVkIGZvciBhdXRvLWxvYWQKLStA Y2luZGV4IGF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLSsKLStGb3IgYmV0dGVyIHZpc2liaWxp dHkgb2YgYWxsIHRoZSBmaWxlIGxvY2F0aW9ucyB3aGVyZSB5b3UgY2FuIHBsYWNlIHNjcmlwdHMg dG8KLStiZSBhdXRvLWxvYWRlZCB3aXRoIGluZmVyaW9yIC0tLSBvciB0byBwcm90ZWN0IHlvdXJz ZWxmIGFnYWluc3QgYWNjaWRlbnRhbAotK2V4ZWN1dGlvbiBvZiB1bnRydXN0ZWQgc2NyaXB0cyAt LS0gQHZhbHVle0dEQk59IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3IgcHJpbnRpbmcKLSthbGwgdGhl IGZpbGVzIGF0dGVtcHRlZCB0byBiZSBsb2FkZWQuICBCb3RoIGV4aXN0aW5nIGFuZCBub24tZXhp c3RpbmcgZmlsZXMgbWF5Ci0rYmUgcHJpbnRlZC4KLSsKLStGb3IgZXhhbXBsZSB0aGUgbGlzdCBv ZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0r KEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkgYXBwbGllcyBhbHNvIHRvIGNhbm9uaWNh bGl6ZWQgZmlsZW5hbWVzIHdoaWNoCi0rbWF5IG5vdCBiZSB0b28gb2J2aW91cyB3aGlsZSBzZXR0 aW5nIGl0IHVwLgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2Fk IHVlcwotKyhnZGIpIGZpbGUgfi9zcmMvdC90cnVlCi0rYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSsgICAg ICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3RydWUiLgotK2F1dG8tbG9hZDogVXBkYXRpbmcgZGly ZWN0b3JpZXMgb2YgIi91c3I6L29wdCIuCi0rYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi91 c3IiLgotK2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvb3B0Ii4KLSt3YXJuaW5nOiBGaWxl ICIvdG1wL3RydWUtZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkCi0rICAg ICAgICAgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyOi9vcHQiLgot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgZGVidWcg YXV0by1sb2FkfQotK0BraW5kZXggc2V0IGRlYnVnIGF1dG8tbG9hZAotK0BpdGVtIHNldCBkZWJ1 ZyBhdXRvLWxvYWQgW29ufG9mZl0KLStTZXQgd2hldGhlciB0byBwcmludCB0aGUgZmlsZW5hbWVz IGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZC4KLSsKLStAYW5jaG9ye3Nob3cgZGVidWcgYXV0 by1sb2FkfQotK0BraW5kZXggc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGRlYnVn IGF1dG8tbG9hZAotK1Nob3cgd2hldGhlciBwcmludGluZyBvZiB0aGUgZmlsZW5hbWVzIGF0dGVt cHRlZCB0byBiZSBhdXRvLWxvYWRlZCBpcyB0dXJuZWQKLStvbiBvciBvZmYuCi0rQGVuZCB0YWJs ZQotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2Fybmlu Z3MgYW5kIE1lc3NhZ2VzCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9u L3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJ MjAxMi0wNC0xOCAwMDo1MDowNC44MTA2MjYyMTIgKzAyMDAKLUBAIC03NSw3ICs3NSwxMCBAQCBn ZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Ci0gICBpbnQgaXNfc2FmZTsK LSAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotIAotLSAgaXNf c2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwKLSsJCQkJICAgIF8oImF1dG8tbG9hZDog TG9hZGluZyBQeXRob24gc2NyaXB0IFwiJXNcIiAiCi0rCQkJCSAgICAgICJieSBleHRlbnNpb24g Zm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFt ZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJp bmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1A QCAtMTUzLDcgKzE1NiwxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmls ZSAqCi0gCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAg KHhmcmVlLCBmdWxsX3BhdGgpOwotIAotLQkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAo ZnVsbF9wYXRoKSkKLSsJICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwK LSsJCQkJICAgICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0ICIKLSsJCQkJ CSAiXCIlc1wiIGZyb20gc2VjdGlvbiBcIiVzXCIgb2YgIgotKwkJCQkJICJvYmpmaWxlIFwiJXNc Ii5cbiIpLAotKwkJCQkgICAgICAgZnVsbF9wYXRoLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwK LSsJCQkJICAgICAgIG9iamZpbGUtPm5hbWUpKQotIAkgICAgb3BlbmVkID0gMDsKLSAJfQotICAg ICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTNvZjI4LnBhdGNoIGIvZ2RiLWF1 dG9sb2FkLTEzb2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZlYTE1 My4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTNvZjI4LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w NC9tc2cwMDEzMC5odG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo1NjoyMQkxLjEyOTcKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzow Mzo1NwkxLjEyOTgKLSMjIC0xLDMgKzEsNyBAQAotKzIwMTItMDQtMTggIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1s b2FkaW5nIHZlcmJvc2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KLSsKLSAyMDEyLTA0 LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCU5l dyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS45NDQKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1Ci1AQCAtMjExOTIsNyArMjExOTIsNyBAQAotIG1h eSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KLSAKLSBAc21hbGxleGFt cGxlCi0tKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKLSsoZ2RiKSBzZXQgZGVidWcgYXV0 by1sb2FkIG9uCi0gKGdkYikgZmlsZSB+L3NyYy90L3RydWUKLSBhdXRvLWxvYWQ6IExvYWRpbmcg Y2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgot ICAgICAgICAgICAgZm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTE0b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMjgucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhY2ZkMGUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTE0b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxNzguaHRtbAotCi0jIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4Ci0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0jIyAtMSwzICsxLDggQEAK LSsyMDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBp dGVtaXplIEBidWxsZXQKLSsJYnkgQHRhYmxlIEBhc2lzLiAgRml4IGZvcm1hdHRpbmcgb2Ygb25l IGl0ZW0uCi0rCi0gMjAxMi0wNC0xOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2Rl KTogRml4IHNtYWxsZXhhbXBsZSB0eXBvLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTIvMDQvMTggMDc6MDM6NTgJMS45NDUKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEy LzA0LzIyIDE1OjQ5OjIxCTEuOTQ2Ci1AQCAtMjExMzYsOCArMjExMzYsOCBAQAotIFRvIGZvcmNl IEB2YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRo ZSBwcmV2aW91cwotIGV4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcg d2F5czoKLSAKLS1AaXRlbWl6ZSBAYnVsbGV0Ci0tQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8t bG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RiCi0rQHRhYmxlIEBhc2lzCi0rQGl0ZW0gQGZpbGV7fi8u Z2RiaW5pdH06IEBzYW1we2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYn0KLSBTcGVj aWZ5IHRoaXMgdHJ1c3RlZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkgYXMgYWRkaXRpb25hbCBjb21w b25lbnQgb2YgdGhlIGxpc3QuCi0gWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGlu ZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKLSBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZl LXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLUBAIC0y MTE1NSwyMCArMjExNTUsMjAgQEAKLSBEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59 IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KLSBUaGlzIGFzc3VtZXMg YWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0g Y29tZSBmcm9tCi0gdHJ1c3RlZCBzb3VyY2VzLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUK LSAKLSBPbiB0aGUgb3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQgYXV0 b21hdGljIGZpbGVzIGxvYWRpbmcgd2hpY2gKLSBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2Fy bmluZyBtZXNzYWdlczoKLSAKLS1AaXRlbWl6ZSBAYnVsbGV0Ci0rQHRhYmxlIEBhc2lzCi0gQGl0 ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotIFlvdSBjYW4g dXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7 R0RCTn0gc2Vzc2lvbi4KLSAKLS1AaXRlbSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1 dG8tbG9hZCBub30KLStAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9h ZCBub30KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKLSAoQHB4 cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJsZSwg eW91IGNvdWxkIGFsc28KLSB1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7U3lz dGVtLXdpZGUgY29uZmlndXJhdGlvbn0pLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAK LSBUaGlzIHNldHRpbmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVz ZXIuICBJZiBubyBlbnRyeSBtYXRjaGVzCi0gQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCBy ZXNvcnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCgpkaWZmIC0tZ2l0 IGEvZ2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNW9mMjgucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNTY4NDYuLjAwMDAwMDAKLS0tIGEvZ2Ri LWF1dG9sb2FkLTE1b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODMuaHRtbAotCi0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCi0jIyAtMSwz ICsxLDggQEAKLSsyMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBS ZW1vdmUgdHJhaWxpbmcgW0Bkb3Rze31dLgotKwlUaHJlZSB0aW1lcy4KLSsKLSAyMDEyLTA0LTIy ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCSogZ2Ri LnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBpdGVtaXplIEBidWxs ZXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuOTQ2 Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0Nwot QEAgLTIxMTQyLDExICsyMTE0MiwxMSBAQAotIFlvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkg ZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNhbXB7c2hvdyBhdXRvLWxv YWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSku Ci0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3Vzcjov YmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQotIFNwZWNpZnkgdGhpcyBkaXJl Y3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZh bHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCJ9Ci0gRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmds ZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ug ZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCi0gZnJvbSB0 cnVzdGVkIHNvdXJjZXMuCi1AQCAtMjExNjEsNyArMjExNjEsNyBAQAotIGFsc28gc3VwcHJlc3Nl cyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgotIAotIEB0YWJsZSBAYXNpcwotLUBpdGVtIEBr YmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLStAaXRlbSBAa2Jke2dk YiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KLSBZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0gY29t bWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0g QGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99CgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTE2b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNm9mMjgucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYTg4ZTYuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTE2b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODQuaHRtbAot Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCi0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjY6MDAJMS4xMzAxCi0jIyAt Myw2ICszLDkgQEAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJl bW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCi0gCVRocmVlIHRpbWVzLgotIAotKwkqIGdkYi50ZXhp bmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogQWRkIHRyYWlsaW5nIEBkb3Rze30uCi0rCVRo cmVlIHRpbWVzLgotKwotIDIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0 aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1bGxldAotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEyLzA0LzIzIDE3OjI2OjAxCTEuOTQ4Ci1AQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACi0gWW91 IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQg YnkKLSBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91 c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KLStAaXRlbSBAa2Jke2dk YiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBAZG90 c3t9fQotIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0 IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQGti ZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgifQotK0BpdGVtIEBrYmR7Z2RiIC1p ZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBAZG90c3t9fQotIERpc2FibGUgYXV0by1sb2Fk aW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gVGhpcyBhc3N1 bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNz aW9uIHdpbGwgY29tZQotIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgotQEAgLTIxMTYxLDcgKzIxMTYx LDcgQEAKLSBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKLSAKLSBA dGFibGUgQGFzaXMKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KLStA aXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBAZG90c3t9fQotIFlvdSBjYW4g dXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7 R0RCTn0gc2Vzc2lvbi4KLSAKLSBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1 dG8tbG9hZCBub30KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoIGIvZ2Ri LWF1dG9sb2FkLTE3b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0 Zjc1Yi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx Mi0wNS9tc2cwMDAxMC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzAyIDE3 OjEzOjM5CTEuMTQxOTQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzAyIDIwOjAwOjMx CTEuMTQxOTUKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTItMDUtMDIgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IC0td2l0aG91dC1hdXRvLWxvYWQt c2FmZS1wYXRoIGZvciBNUy1XaW5kb3dzIGhvc3QgcGxhdGZvcm0uCi0rCSogYXV0by1sb2FkLmMg KGZpbGVuYW1lX2lzX2luX2Rpcik6IFJldHVybiAxIGZvciBESVJfTEVOIDAuCi0rCi0gMjAxMi0w NS0wMiAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KLSAKLSAJKiBnZGJfY3Vyc2VzLmg6 IFVuZGVmaW5lIEtFWV9FVkVOVCBiZWZvcmUgaW5jbHVkaW5nIGN1cnNlcwotLS0tIHNyYy9nZGIv YXV0by1sb2FkLmMJMjAxMi8wNC8xNyAxNTo1NjoyMQkxLjQKLSsrKyBzcmMvZ2RiL2F1dG8tbG9h ZC5jCTIwMTIvMDUvMDIgMjA6MDA6MzYJMS41Ci1AQCAtMjMxLDYgKzIzMSwxMiBAQAotICAgd2hp bGUgKGRpcl9sZW4gJiYgSVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4gLSAxXSkpCi0gICAg IGRpcl9sZW4tLTsKLSAKLSsgIC8qIEVuc3VyZSBhdXRvX2xvYWRfc2FmZV9wYXRoICIvIiBtYXRj aGVzIGFueSBGSUxFTkFNRS4gIE9uIE1TLVdpbmRvd3MKLSsgICAgIHBsYXRmb3JtIEZJTEVOQU1F IGV2ZW4gYWZ0ZXIgZ2RiX3JlYWxwYXRoIGRvZXMgbm90IGhhdmUgdG8gc3RhcnQgd2l0aAotKyAg ICAgSVNfRElSX1NFUEFSQVRPUiBjaGFyYWN0ZXIsIHN1Y2ggYXMgdGhlICdDOlx4LmV4ZScgZmls ZW5hbWUuICAqLwotKyAgaWYgKGRpcl9sZW4gPT0gMCkKLSsgICAgcmV0dXJuIDE7Ci0rCi0gICBy ZXR1cm4gKGZpbGVuYW1lX25jbXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKLSAJICAm JiAoSVNfRElSX1NFUEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xlbl0pCi0gCSAgICAgIHx8IGZpbGVu YW1lW2Rpcl9sZW5dID09ICdcMCcpKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMThvZjI4 LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNjkwYzJlNC4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMThvZjI4LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwMzguaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNS8wNSAwNTozNjoyMwkxLjE0MjExCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NS8wNiAxNTozMDo1OQkxLjE0MjEyCi0jIyAtMSwzICsxLDE0IEBACi0rMjAxMi0wNS0wNiAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGF1dG8tbG9h ZC5jIChzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IFJlc2V0IEFVVE9fTE9BRF9TQUZFX1BBVEgK LSsJYmFjayB0byBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggaWYgaXQgaXMgYmVpbmcgc2V0 IHRvICIiLgotKwkoc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoKTogQ2hlY2sgYW55LWRpcmVjdG9y eSBieSBjb21wYXJpc29uIHdpdGggIi8iLgotKwkoYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBD aGFuZ2UgdGhlIGVycm9yIG1lc3NhZ2UuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBDaGFu Z2UgdGhlICJzYWZlLXBhdGgiIGhlbHAgdGV4dC4KLSsJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUK LSsJKiBjb25maWd1cmUuYWMgKC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoKTogU2V0Ci0r CVdJVEhfQVVUT19MT0FEX1NBRkVfUEFUSCB0byAvLgotKwotIDIwMTItMDUtMDUgIFNlcmdpbyBE dXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0gCi0gCSogc3RhcC1wcm9iZS5o OiBEbyBub3QgaW5jbHVkZSB1bmVjZXNzYXJ5IGBwcm9iZS5oJy4KLS0tLSBzcmMvZ2RiL2F1dG8t bG9hZC5jCTIwMTIvMDUvMDIgMjA6MDA6MzYJMS41Ci0rKysgc3JjL2dkYi9hdXRvLWxvYWQuYwky MDEyLzA1LzA2IDE1OjMxOjAyCTEuNgotQEAgLTE4MSw2ICsxODEsMTIgQEAKLSBzdGF0aWMgdm9p ZAotIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotIHsKLSsgIGlmIChhdXRvX2xvYWRfc2FmZV9wYXRo WzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7 Ci0rICAgICAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FE X1NBRkVfUEFUSCk7Ci0rICAgIH0KLSsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSAoKTsKLSB9Ci0gCi1AQCAtMTkwLDcgKzE5Niw3IEBACi0gc2hvd19hdXRvX2xvYWRfc2FmZV9w YXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotIAkJCSAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIGlmICgqdmFsdWUg PT0gMCkKLSsgIGlmIChzdHJjbXAgKHZhbHVlLCAiLyIpID09IDApCi0gICAgIGZwcmludGZfZmls dGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0byBsb2FkIGZyb20gYW55 ICIKLSAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotICAgZWxzZQotQEAgLTIwOSw4ICsyMTUs OSBAQAotIAotICAgaWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQotICAgICBlcnJvciAo XygiXAotLUFkZGluZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1s b2FkIHNhZmUtcGF0aCBzZWN1cml0eS4gIFwKLS1Vc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyBpbnN0ZWFkIGlmIHlvdSBtZWFuIHRoYXQuIikpOwotK0RpcmVjdG9yeSBhcmd1bWVudCByZXF1 aXJlZC5cblwKLStVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8nIGZvciBkaXNhYmxpbmcg dGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuXAotKyIpKTsKLSAKLSAgIHMgPSB4c3Ry cHJpbnRmICgiJXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1Is IGFyZ3MpOwotICAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotQEAgLTEwMjksOCArMTAz NiwxMCBAQAotIFNob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBz YWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAotIFZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1 dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAot IGJlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRp b24uICBXYXJuaW5nIHdpbGwgYmVcblwKLS1wcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVz ZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmluZyAob3IgZXZlblxuXAotLWVtcHR5IGRpcmVj dG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4n IG9wdGlvbnMuXG5cCi0rcHJpbnRlZCBhbmQgZmlsZSB3aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lz ZS5cblwKLStTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGFuIGVtcHR5IGxpc3QgcmVzZXRzIGl0 IHRvIGl0cyBkZWZhdWx0IHZhbHVlLlxuXAotK1NldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gJy8n ICh3aXRob3V0IHRoZSBxdW90ZXMpIGFsbG93cyBhbnkgZmlsZVxuXAotK2ZvciB0aGUgJ3NldCBh dXRvLWxvYWQgLi4uJyBvcHRpb25zLlxuXAotIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHRo ZSBraW5kcyBvZiBmaWxlcyBoYXZpbmcgJ3NldCBhdXRvLWxvYWQgLi4uIG9mZicuXG5cCi0gVGhp cyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlv cnMuIiksCi0gCQkJCSAgICAgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0tLS0gc3JjL2dkYi9j b25maWd1cmUJMjAxMi8wNC8yNyAyMDo0Nzo1MgkxLjM2MAotKysrIHNyYy9nZGIvY29uZmlndXJl CTIwMTIvMDUvMDYgMTU6MzE6MDIJMS4zNjEKLUBAIC00OTY0LDcgKzQ5NjQsNyBAQAotICMgQ2hl Y2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCi0gaWYgdGVz dCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0 aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KLS0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIK LSsgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gIGZpCi0gZWxzZQotICAgd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4IgotLS0tIHNyYy9nZGIvY29uZmlndXJlLmFjCTIw MTIvMDQvMjcgMjA6NDc6NTMJMS4xNzEKLSsrKyBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLzA1 LzA2IDE1OjMxOjAzCTEuMTcyCi1AQCAtMTQxLDcgKzE0MSw3IEBACi0gQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKLSBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0 aW9uc10pLAotIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRo ZW4KLS0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgICB3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGg9Ii8iCi0gIGZpXSwKLSBbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4 Il0pCi0gQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgsIHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aCwKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wMyAw NzowNzoyNAkxLjEzMDgKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wNiAxNToz MTowNAkxLjEzMDkKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTItMDUtMDYgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1s b2FkaW5nIHNhZmUgcGF0aCk6IE1ha2UgJ2RpcmVjdG9yaWVzJwotKwlmb3IgJ3NldCBhdXRvLWxv YWQgc2FmZS1wYXRoJyBvcHRpb25hbC4gIE1lbnRpb24gaWYgaXQgaXMgb21pdHRlZC4KLSsJQ2hh bmdlIGRpc2FibGluZyBzZWN1cml0eSBwcm90ZWN0aW9uIGNvbmRpdGlvbiB0byAiLyIsIHR3aWNl LgotKwotIDIwMTItMDUtMDMgIFNpdmEgQ2hhbmRyYSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2ds ZS5jb20+Ci0gCi0gCSogZ2RiLnRleGluZm8gKFN5bWJvbCBUYWJsZXMgSW4gUHl0aG9uKTogQWRk IGRvY3VtZW50YXRpb24gYWJvdXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1 LzAzIDA3OjA3OjI0CTEuOTU0Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8w NiAxNTozMTowNAkxLjk1NQotQEAgLTIxMjE5LDkgKzIxMjE5LDEyIEBACi0gQHRhYmxlIEBjb2Rl Ci0gQGFuY2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KLSBAa2luZGV4IHNldCBhdXRvLWxv YWQgc2FmZS1wYXRoCi0tQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rv cmllc30KLStAaXRlbSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAcntbfUB2YXJ7ZGlyZWN0b3Jp ZXN9QHJ7XX0KLSBTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJl Y3RvcmllcykgdHJ1c3RlZCBmb3IgYXV0b21hdGljCi0gbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9m IHNjcmlwdHMuICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCi0r SWYgeW91IG9taXQgQHZhcntkaXJlY3Rvcmllc30sIEBzYW1we2F1dG8tbG9hZCBzYWZlLXBhdGh9 IHdpbGwgYmUgcmVzZXQgdG8KLStpdHMgZGVmYXVsdCB2YWx1ZSBhcyBzcGVjaWZpZWQgZHVyaW5n IEB2YWx1ZXtHREJOfSBjb21waWxhdGlvbi4KLSsKLSBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1 c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAotIHN5c3Rl bXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0 b3JpZXMsIHNpbWlsYXJseQotIHRvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxl LgotQEAgLTIxMjQwLDcgKzIxMjQzLDcgQEAKLSBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBh cmF0b3IgaW4gdXNlLgotIEBlbmQgdGFibGUKLSAKLS1TZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8g YW4gZW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KLStTZXR0 aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90 ZWN0aW9uLgotIFRoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8gYmUgc2V0IHRvIHRoZSBzeXN0 ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi0gc3lzdGVtIHN1cGVydXNlciBvbmx5LiAg VXNlcnMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZGlyZWN0b3JpZXMgaW4gaW5pdCBmaWxlcyBpbgot IHRoZWlyIGhvbWUgZGlyZWN0b3JpZXMgKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9 KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQKLUBAIC0yMTI2MCw3ICsyMTI2Myw3IEBACi0gU3BlY2lm eSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBz aW5nbGUKLSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIgQGRvdHN7fX0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvIiBAZG90c3t9fQotIERpc2FibGUgYXV0by1sb2FkaW5n IHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gVGhpcyBhc3N1bWVz IGFsbCB0aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9u IHdpbGwgY29tZQotIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0xOW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTlvZjI4LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBmN2IxMjkzLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0x OW9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDYwLmh0bWwKLQotIyMjIHNyYy9nZGIv ZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuMTMxMAotIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEyLzA1LzA5IDE5OjI5OjI1CTEuMTMxMQotIyMgLTMsNiArMyw5IEBACi0g CSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFdyYXAgdG9vIGxvbmcgbGluZXMgaW4gQHNt YWxsZXhhbXBsZS4KLSAJVHdpY2UuCi0gCi0rCSogZ2RiLnRleGluZm8gKFNlcGFyYXRlIERlYnVn IEZpbGVzLCBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZQotKwlkaXJlY3Rvcnkgc2Vw YXJhdG9yIGJ5IHBhdGggc2VwYXJhdG9yLgotKwotIDIwMTItMDUtMDYgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1s b2FkaW5nIHNhZmUgcGF0aCk6IE1ha2UgJ2RpcmVjdG9yaWVzJwotLS0tIHNyYy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS45NTYKLSsrKyBzcmMvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDEyLzA1LzA5IDE5OjI5OjI1CTEuOTU3Ci1AQCAtMTYyODUsOCArMTYyODUsOCBA QAotIEBraW5kZXggc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0gQGl0ZW0gc2V0IGRlYnVnLWZp bGUtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3JpZXN9Ci0gU2V0IHRoZSBkaXJlY3RvcmllcyB3aGlj aCBAdmFsdWV7R0RCTn0gc2VhcmNoZXMgZm9yIHNlcGFyYXRlIGRlYnVnZ2luZwotLWluZm9ybWF0 aW9uIGZpbGVzIHRvIEB2YXJ7ZGlyZWN0b3J5fS4gIE11bHRpcGxlIGRpcmVjdG9yeSBjb21wb25l bnRzIGNhbiBiZSBzZXQKLS1jb25jYXRlbmF0aW5nIHRoZW0gYnkgYSBkaXJlY3Rvcnkgc2VwYXJh dG9yLgotK2luZm9ybWF0aW9uIGZpbGVzIHRvIEB2YXJ7ZGlyZWN0b3J5fS4gIE11bHRpcGxlIHBh dGggY29tcG9uZW50cyBjYW4gYmUgc2V0Ci0rY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEgcGF0aCBz ZXBhcmF0b3IuCi0gCi0gQGtpbmRleCBzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0gQGl0ZW0g c2hvdyBkZWJ1Zy1maWxlLWRpcmVjdG9yeQotQEAgLTIxMjI3LDcgKzIxMjI3LDcgQEAKLSBJZiB5 b3Ugb21pdCBAdmFye2RpcmVjdG9yaWVzfSwgQHNhbXB7YXV0by1sb2FkIHNhZmUtcGF0aH0gd2ls bCBiZSByZXNldCB0bwotIGl0cyBkZWZhdWx0IHZhbHVlIGFzIHNwZWNpZmllZCBkdXJpbmcgQHZh bHVle0dEQk59IGNvbXBpbGF0aW9uLgotIAotLVRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMg ZGlyZWN0b3J5IHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBVbml4Ci0rVGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgdXNlcyBwYXRoIHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBV bml4Ci0gc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0byBzZXBh cmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5Ci0gdG8gdGhlIEBlbnZ7UEFUSH0gZW52aXJvbm1l bnQgdmFyaWFibGUuCi0gCi1AQCAtMjEyNDIsNyArMjEyNDIsNyBAQAotIEBpdGVtIGFkZC1hdXRv LWxvYWQtc2FmZS1wYXRoCi0gQWRkIGFuIGVudHJ5IChvciBsaXN0IG9mIGVudHJpZXMpIHRoZSBs aXN0IG9mIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYwotIGxvYWRpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGlwbGUgZW50cmllcyBtYXkgYmUgZGVsaW1pdGVkIGJ5 IHRoZQotLWhvc3QgcGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0raG9zdCBw bGF0Zm9ybSBwYXRoIHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotIFNldHRpbmcg dGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rp b24uCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIwb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9h ZC0yMG9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZTk0NGEuLjAw MDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTIwb2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDM1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNn MDAwNTkuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6MzE6 MDQJMS4xMzA5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDkgMTg6MTU6NTgJ MS4xMzEwCi0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGlu Zyk6IFdyYXAgdG9vIGxvbmcgbGluZXMgaW4gQHNtYWxsZXhhbXBsZS4KLSsJVHdpY2UuCi0rCi0g MjAxMi0wNS0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot IAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0 b3JpZXMnCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wNiAxNTozMTowNAkx Ljk1NQotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS45 NTYKLUBAIC0yMTAwNCw3ICsyMTAwNCw4IEBACi0gKGdkYikgc2hvdyBhdXRvLWxvYWQKLSBnZGIt c2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNj cmlwdHMgaXMgb24uCi0gbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNw ZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KLS1sb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5n IG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgotK2xvY2Fs LWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBk aXJlY3RvcnkKLSsgICAgICAgICAgICAgICAgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6ICBBdXRv LWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi0gc2FmZS1wYXRoOiAgTGlzdCBvZiBk aXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0gICAg ICAgICAgICAgaXMgL3Vzci9sb2NhbC4KLUBAIC0yMTAyMiw3ICsyMTAyMyw4IEBACi0gTG9hZGVk ICBTY3JpcHQKLSBZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0gbGlidGhyZWFk LWRiOiAgTm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLgotLWxvY2FsLWdkYmluaXQ6ICBMb2Nh bCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVk LgotK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8u Z2RiaW5pdCIgaGFzIGJlZW4KLSsgICAgICAgICAgICAgICAgbG9hZGVkLgotIHB5dGhvbi1zY3Jp cHRzOgotIExvYWRlZCAgU2NyaXB0Ci0gWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5 CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIxb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0y MW9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MzJlNjcuLjAwMDAw MDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTIxb2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3 ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAw NzkuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMCAyMDoxNzo0NgkxLjE0 MjM1Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODowNjoyNgkxLjE0MjM2Ci0j IyAtMSwzICsxLDEwIEBACi0rMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotKwotKwlNYWtlIGF1dG8tbG9hZCBoYW5kbGUgbXVsdGlwbGUgY29t cG9uZW50cyBvZiBERUJVR19GSUxFX0RJUkVDVE9SWS4KLSsJKiBhdXRvLWxvYWQuYyAoYXV0b19s b2FkX29iamZpbGVfc2NyaXB0KTogUmVtb3ZlIGNoZWNrIGZvciBOVUxMCi0rCURFQlVHX0ZJTEVf RElSRUNUT1JZLiAgSGFuZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YKLSsJREVCVUdfRklMRV9E SVJFQ1RPUlkuCi0rCi0gMjAxMi0wNS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29t PgotIAotIAkqIGR3YXJmMnJlYWQuYyAocmVjdXJzaXZlbHlfd3JpdGVfcHN5bWJvbHMpOiBOZXcg ZnVuY3Rpb24uCi0tLS0gc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzA2IDE1OjMxOjAyCTEu NgotKysrIHNyYy9nZGIvYXV0by1sb2FkLmMJMjAxMi8wNS8xMSAxODowNjoyOAkxLjcKLUBAIC01 ODcsMTcgKzU4NywyOSBAQAotICAgaW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7Ci0gICBk ZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsKLSAKLS0gIGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9kaXJl Y3RvcnkpCi0rICBpZiAoIWlucHV0KQotICAgICB7Ci0tICAgICAgLyogQWxzbyB0cnkgdGhlIHNh bWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotLSAgICAg IGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBzdHJsZW4g KGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOwotLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBk ZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNv IHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUs IGZpbGVuYW1lKTsKLS0KLS0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwot LSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLSsgICAgICBjaGFyICpkZWJ1 Z2RpcjsKLSsgICAgICBWRUMgKGNoYXJfcHRyKSAqZGVidWdkaXJfdmVjOwotKyAgICAgIGludCBp eDsKLSsKLSsgICAgICBkZWJ1Z2Rpcl92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGRl YnVnX2ZpbGVfZGlyZWN0b3J5KTsKLSsgICAgICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92 ZWMgKGRlYnVnZGlyX3ZlYyk7Ci0rCi0rICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChj aGFyX3B0ciwgZGVidWdkaXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQotKwl7Ci0rCSAgLyog QWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3Rv cnkuICAqLwotKwkgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGVidWdkaXIpICsgc3Ry bGVuIChmaWxlbmFtZSkgKyAxKTsKLSsJICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIpOwot KwotKwkgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhl cmUuICAqLwotKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rCSAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUs ICJyIik7Ci0rCSAgaWYgKGlucHV0ICE9IE5VTEwpCi0rCSAgICBicmVhazsKLSsJfQotICAgICB9 Ci0gCi0gICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGlyKQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0yMm9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjJvZjI4LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA3NjliNzI0Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0y Mm9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzODggKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cwMDA4MC5odG1sCi0KLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA1LzExIDE4OjA2OjI2CTEuMTQyMzYKLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA1LzExIDE4OjEzOjIyCTEuMTQyMzcKLSMjIC0xLDUgKzEsMjkgQEAKLSAyMDEy LTA1LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0r CVByb3ZpZGUgJGRkaXIgc3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aC4KLSsJKiBORVdTICgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCwgLS13aXRob3V0LWF1dG8t bG9hZC1zYWZlLXBhdGgpOiBOZXcKLSsJZW50cmllcy4KLSsJKiBhdXRvLWxvYWQuYzogSW5jbHVk ZSBvYnNlcnZlci5oLgotKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlKTogQ2FsbCBz dWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IGZvcgotKwllYWNoIGNvbXBvbmVudC4gIE5ldyB2YXJp YWJsZSBkZGlyX3N1YnN0LgotKwkoYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQpOiBOZXcg ZnVuY3Rpb24uCi0rCShzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IFJlbmFtZSBERUZBVUxUX0FV VE9fTE9BRF9TQUZFX1BBVEggdG8KLSsJQVVUT19MT0FEX1NBRkVfUEFUSC4gIE5ldyBjb21tZW50 LgotKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogUmVuYW1lIERFRkFVTFRfQVVUT19MT0FEX1NB RkVfUEFUSCB0bwotKwlBVVRPX0xPQURfU0FGRV9QQVRILiAgSW5zdGFsbCBhdXRvX2xvYWRfZ2Ri X2RhdGFkaXJfY2hhbmdlZC4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0rCSogY29uZmln dXJlOiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3VyZS5hYyAoLS1hdXRvLWxvYWQtc2FmZS1wYXRo KTogUmVuYW1lCi0rCURFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0byBBVVRPX0xPQURfU0FG RV9QQVRILiAgRGVmYXVsdCB0bwotKwlHREJfREFUQURJUi9hdXRvLWxvYWQuCi0rCSogZGVmcy5o IChzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50KTogTmV3IGRlY2xhcmF0aW9uLgotKwkqIHRvcC5j OiBJbmNsdWRlIG9ic2VydmVyLmguCi0rCShzZXRfZ2RiX2RhdGFkaXIpOiBOZXcgZnVuY3Rpb24u Ci0rCShpbml0X21haW4pOiBJbnN0YWxsIGl0IGZvciAic2V0IGRhdGEtZGlyZWN0b3J5Ii4KLSsJ KiB1dGlscy5jIChzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50KTogTmV3IGZ1bmN0aW9uLgotKwot KzIwMTItMDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSsKLSAJTWFrZSBhdXRvLWxvYWQgaGFuZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YgREVCVUdf RklMRV9ESVJFQ1RPUlkuCi0gCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCk6IFJlbW92ZSBjaGVjayBmb3IgTlVMTAotIAlERUJVR19GSUxFX0RJUkVDVE9SWS4gIEhhbmRs ZSBtdWx0aXBsZSBjb21wb25lbnRzIG9mCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv TkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwky MDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL05FV1MJMjAxMi0wNS0xNCAxNDoxODowMS45MTUwNDEyNTggKzAyMDAKLUBAIC0zMDcs NiArMzA3LDE3IEBAIHNob3cgdHJhY2Utc3RvcC1ub3RlcwotICAgaW5zdGFuY2UgYXMgYW4gZXhw bGFuYXRpb24sIGlmIHlvdSBhcmUgc3RvcHBpbmcgYSB0cmFjZSBydW4gdGhhdCB3YXMKLSAgIHN0 YXJ0ZWQgYnkgc29tZW9uZSBlbHNlLgotIAotKyogTmV3IGNvbmZpZ3VyZSBvcHRpb25zCi0rCi0r LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZv ciB0aGUgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXR0aW5nCi0rICBhYm92ZS4gIEl0IGRl ZmF1bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcgR0RCJ3MKLSsg IGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3RvcnkpLgotKwot Ky0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0rICBTZXQgJ3NldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoJyB0byAnLycsIGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGlzCi0rICBzZWN1cml0eSBm ZWF0dXJlLgotKwotICogTmV3IHJlbW90ZSBwYWNrZXRzCi0gCi0gUVRFbmFibGUKLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNS0xNCAxNDoxNzo0OS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwky MDEyLTA1LTE0IDE0OjE4OjAxLjkxNTA0MTI1OCArMDIwMAotQEAgLTM1LDYgKzM1LDcgQEAKLSAj aW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAjaW5jbHVkZSAicmVhZGxpbmUvdGlsZGUuaCIKLSAjaW5j bHVkZSAiY29tcGxldGVyLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gCi0gLyogVGhlIHN1 ZmZpeCBvZiBwZXItb2JqZmlsZSBzY3JpcHRzIHRvIGF1dG8tbG9hZCBhcyBub24tUHl0aG9uIGNv bW1hbmQgZmlsZXMuCi0gICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywg bG9vayBmb3IgbGliZm9vLWdkYi5nZGIuICAqLwotQEAgLTE0MSwxMCArMTQyLDE2IEBAIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgIGZvciAoaXggPSAwOyBpeCA8IGxl bjsgaXgrKykKLSAgICAgewotICAgICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIs IGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCk7Ci0tICAgICAgY2hhciAqZXhwYW5kZWQgPSB0 aWxkZV9leHBhbmQgKGRpcik7Ci0tICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRo IChleHBhbmRlZCk7Ci0rICAgICAgY2hhciAqZGRpcl9zdWJzdCwgKmV4cGFuZGVkLCAqcmVhbF9w YXRoOwotIAotLSAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0 aWxkZV9leHBhbmQtZWQuICAqLwotKyAgICAgIGRkaXJfc3Vic3QgPSB4c3RyZHVwIChkaXIpOwot KyAgICAgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZGlyX3N1YnN0LCAiJGRkaXIiLCBn ZGJfZGF0YWRpcik7Ci0rICAgICAgZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRkaXJfc3Vic3Qp OwotKyAgICAgIHhmcmVlIChkZGlyX3N1YnN0KTsKLSsgICAgICByZWFsX3BhdGggPSBnZGJfcmVh bHBhdGggKGV4cGFuZGVkKTsKLSsKLSsgICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkg aXMgYXQgbGVhc3QgYSB2YWxpZCBwYXRoICh0aGVyZWZvcmUKLSsJICRkZGlyLWV4cGFuZGVkIGFu ZCB0aWxkZS1leHBhbmRlZCkuICAqLwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci0gCi0gICAgICAgaWYgKGRlYnVn X2F1dG9fbG9hZCkKLUBAIC0xNzYsMTUgKzE4MywyNCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl Y191cGRhdGUgKHZvaWQpCi0gICAgIH0KLSB9Ci0gCi0rLyogVmFyaWFibGUgZ2RiX2RhdGFkaXIg aGFzIGJlZW4gc2V0LiAgVXBkYXRlIGNvbnRlbnQgZGVwZW5kaW5nIG9uICRkZGlyLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2F1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2VkICh2b2lkKQotK3sK LSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSt9Ci0rCi0gLyogInNldCIg Y29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJpYWJs ZS4gICovCi0gCi0gc3RhdGljIHZvaWQKLSBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSB7Ci0rICAv KiBTZXR0aW5nIHRoZSB2YXJpYWJsZSB0byAiIiByZXNldHMgaXQgdG8gdGhlIGNvbXBpbGUgdGlt ZSBkZWZhdWx0cy4gICovCi0gICBpZiAoYXV0b19sb2FkX3NhZmVfcGF0aFswXSA9PSAnXDAnKQot ICAgICB7Ci0gICAgICAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotLSAgICAgIGF1dG9f bG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwot KyAgICAgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChBVVRPX0xPQURfU0FGRV9QQVRI KTsKLSAgICAgfQotIAotICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotQEAg LTEwNDAsNyArMTA1Niw3IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25z IGYKLSBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotIAkgICBhdXRvX2xv YWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0gCi0tICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0 cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKLSsgIGF1dG9fbG9hZF9zYWZlX3Bh dGggPSB4c3RyZHVwIChBVVRPX0xPQURfU0FGRV9QQVRIKTsKLSAgIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjX3VwZGF0ZSAoKTsKLSAgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAo InNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0gCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZlX3Bh dGgsIF8oIlwKLUBAIC0xMDU4LDYgKzEwNzQsNyBAQCBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5 IGltcGxpY2F0aW9ucyBmCi0gCQkJCSAgICAgc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoLAotIAkJ CQkgICAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCi0gCQkJCSAgICAgYXV0b19sb2Fk X3Nob3dfY21kbGlzdF9nZXQgKCkpOwotKyAgb2JzZXJ2ZXJfYXR0YWNoX2dkYl9kYXRhZGlyX2No YW5nZWQgKGF1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2VkKTsKLSAKLSAgIGNtZCA9IGFkZF9j bWQgKCJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0gCQkgYWRkX2F1 dG9fbG9hZF9zYWZlX3BhdGgsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln LmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcu aW4JMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9jb25maWcuaW4JMjAxMi0wNS0xNCAxNDoxODowMS45MTUwNDEyNTggKzAyMDAK LUBAIC03LDYgKzcsOSBAQAotIC8qIERlZmluZSBpZiBidWlsZGluZyB1bml2ZXJzYWwgKGludGVy bmFsIGhlbHBlciBtYWNybykgKi8KLSAjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECi0g Ci0rLyogRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotKyN1 bmRlZiBBVVRPX0xPQURfU0FGRV9QQVRICi0rCi0gLyogRGlyZWN0b3J5IG9mIHByb2dyYW1zLiAq LwotICN1bmRlZiBCSU5ESVIKLSAKLUBAIC00Myw5ICs0Niw2IEBACi0gICAgbW92ZWQuICovCi0g I3VuZGVmIERFQlVHRElSX1JFTE9DQVRBQkxFCi0gCi0tLyogRGlyZWN0b3JpZXMgc2FmZSB0byBo b2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotLSN1bmRlZiBERUZBVUxUX0FVVE9fTE9BRF9TQUZF X1BBVEgKLS0KLSAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCBhcmNoaXRlY3R1cmUuICovCi0g I3VuZGVmIERFRkFVTFRfQkZEX0FSQ0gKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxODA0MTI1 MiArMDIwMAotQEAgLTE2NjgsNyArMTY2OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13 aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5nIGRlYnVn aW5mb3MgKHllcy9ubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJy cG0uc28pCi0gICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICi0tICAgICAgICAgICAg ICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMK LSsgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRv LWxvYWRlZCBmaWxlcywgdXNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3Ig LS13aXRoLWdkYi1kYXRhZGlyIHBhdGggWyRkZGlyL2F1dG8tbG9hZF0KLSAgIC0td2l0aG91dC1h dXRvLWxvYWQtc2FmZS1wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVz dHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCi0gICAtLXdpdGgtbGlidW53aW5kICAg ICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0Ci1AQCAtODQ4OCwyMCAr ODQ4OSwyMSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvCi0gIyBD aGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdhcyBnaXZlbi4KLSBpZiB0 ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3 aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotLSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0i LyIKLS0gZmkKLSsgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKLSsgICAgIGZpCi0g ZWxzZQotLSAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4IgotKyAgd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnCi0gZmkKLSAKLStlc2NhcGVfZGlyPWBl Y2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvWyRdZGRpclw+L1xcXFxcXFxc XFxcXCYvZydgCi0gCi0gICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19k ZWZhdWx0X3ByZWZpeCIKLSAgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19w cmVmaXg9JyR7cHJlZml4fScKLS0gIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoYAotKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGly YAotICAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAotIAotIGNhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKLS0jZGVmaW5lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFU SCAiJGFjX2RlZmluZV9kaXIiCi0rI2RlZmluZSBBVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVm aW5lX2RpciIKLSBfQUNFT0YKLSAKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9j b25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjkx OTA0MTI1MCArMDIwMAotQEAgLTM0MSwxMyArMzQxLDE2IEBAIGZpCi0gIAotIEFDX01TR19DSEVD S0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aF0pCi0gQUNfQVJHX1dJVEgoYXV0 by1sb2FkLXNhZmUtcGF0aCwKLS1BU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNd KQotLUFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBu b3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCi0tW2lmIHRlc3QgIiR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotLSAgIHdpdGhfYXV0b19sb2Fk X3NhZmVfcGF0aD0iLyIKLS0gZmldLAotLVt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVm aXgiXSkKLS1BQ19ERUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoLAotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aD1QQVRIXSwKLSsgIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQg ZmlsZXMsIHVzZSAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1 dG8tbG9hZEA6PkBdKQotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUt cGF0aF0sCi0rICAgICAgICAgICAgICAgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxl cyBsb2NhdGlvbnNdKSwKLSsgICAgW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgi ID0gIm5vIjsgdGhlbgotKyAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotKyAgICAg ZmldLAotK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCddKQotK2Vz Y2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bWyRdXWRk aXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotK0FDX0RFRklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFU SCwgZXNjYXBlX2RpciwKLSAJICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxv YWRlZCBmaWxlcy5dKQotIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhd KQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RlZnMuaAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZGVmcy5oCTIwMTItMDUtMTQgMTQ6MTc6 NDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZGVmcy5oCTIw MTItMDUtMTQgMTQ6MTg6MDEuOTE5MDQxMjUwICswMjAwCi1AQCAtNDQyLDYgKzQ0Miw5IEBAIGV4 dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9icHN0YXRfY2xlYXIKLSAKLSBleHRlcm4gaW50IHBy b2R1Y2VyX2lzX2djY19nZV80IChjb25zdCBjaGFyICpwcm9kdWNlcik7Ci0gCi0rZXh0ZXJuIHZv aWQgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoY2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIg KmZyb20sCi0rCQkJCSAgICAgICBjb25zdCBjaGFyICp0byk7Ci0rCi0gI2lmZGVmIEhBVkVfV0FJ VFBJRAotIGV4dGVybiBwaWRfdCB3YWl0X3RvX2RpZV93aXRoX3RpbWVvdXQgKHBpZF90IHBpZCwg aW50ICpzdGF0dXMsIGludCB0aW1lb3V0KTsKLSAjZW5kaWYKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi90b3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvdG9wLmMJMjAxMi0wNS0xNCAxNDoxNzo0OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90b3AuYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxOTA0MTI1MCAr MDIwMAotQEAgLTQ3LDYgKzQ3LDcgQEAKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1 ZGUgInB5dGhvbi9weXRob24uaCIKLSAjaW5jbHVkZSAiaW50ZXJwcy5oIgotKyNpbmNsdWRlICJv YnNlcnZlci5oIgotIAotIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMuICAqLwotICNpbmNsdWRl ICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTE1NjEsNiArMTU2MiwxNSBAQCBzaG93X2V4ZWNf ZG9uZV9kaXNwbGF5X3AgKHN0cnVjdCB1aV9maWxlCi0gCQkJICAgICJhc3luY2hyb25vdXMgZXhl Y3V0aW9uIGNvbW1hbmRzIGlzICVzLlxuIiksCi0gCQkgICAgdmFsdWUpOwotIH0KLSsKLSsvKiAi c2V0IiBjb21tYW5kIGZvciB0aGUgZ2RiX2RhdGFkaXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfZ2RiX2RhdGFkaXIgKGNoYXIgKmFyZ3MsIGludCBm cm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgb2JzZXJ2ZXJfbm90 aWZ5X2dkYl9kYXRhZGlyX2NoYW5nZWQgKCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gaW5pdF9t YWluICh2b2lkKQotIHsKLUBAIC0xNjY4LDcgKzE2NzgsNyBAQCBVc2UgXCJvblwiIHRvIGVuYWJs ZSB0aGUgbm90aWZpY2F0aW9uLCBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiU2hv dyBHREIncyBkYXRhIGRpcmVjdG9yeS4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBf KCJcCi0gV2hlbiBzZXQsIEdEQiB1c2VzIHRoZSBzcGVjaWZpZWQgcGF0aCB0byBzZWFyY2ggZm9y IGRhdGEgZmlsZXMuIiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfZ2RiX2RhdGFkaXIsIE5VTEwsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnNldGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnNob3dsaXN0KTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRp bHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMu YwkyMDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3V0aWxzLmMJMjAxMi0wNS0xNCAxNDoxODowMS45MjAwNDEyNDggKzAyMDAKLUBA IC0zOTI1LDYgKzM5MjUsNDggQEAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFy ICpkaQotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogU3Vic3RpdHV0ZSBhbGwgb2NjdXJl bmNlcyBvZiBzdHJpbmcgRlJPTSBieSBzdHJpbmcgVE8gaW4gKlNUUklOR1AuICAqU1RSSU5HUAot KyAgIG11c3QgY29tZSBmcm9tIHhyZWFsbG9jLWNvbXBhdGlibGUgYWxsb2NhdG9yIGFuZCBpdCBt YXkgYmUgdXBkYXRlZC4gIEZST00KLSsgICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElS X1NFUEFSQVRPUiAob3IgYmUgbG9jYXRlZCBhdCB0aGUgc3RhcnQgb3IKLSsgICBlbmQgb2YgKlNU UklOR1AuICAqLwotKwotK3ZvaWQKLStzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoq c3RyaW5ncCwgY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pCi0rewotKyAgY2hhciAq c3RyaW5nID0gKnN0cmluZ3AsICpzOwotKyAgY29uc3Qgc2l6ZV90IGZyb21fbGVuID0gc3RybGVu IChmcm9tKTsKLSsgIGNvbnN0IHNpemVfdCB0b19sZW4gPSBzdHJsZW4gKHRvKTsKLSsKLSsgIGZv ciAocyA9IHN0cmluZzs7KQotKyAgICB7Ci0rICAgICAgcyA9IHN0cnN0ciAocywgZnJvbSk7Ci0r ICAgICAgaWYgKHMgPT0gTlVMTCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgaWYgKChzID09IHN0cmlu ZyB8fCBJU19ESVJfU0VQQVJBVE9SIChzWy0xXSkpCi0rICAgICAgICAgICYmIChzW2Zyb21fbGVu XSA9PSAnXDAnIHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKSkpCi0rCXsKLSsJICBj aGFyICpzdHJpbmdfbmV3OwotKwotKwkgIHN0cmluZ19uZXcgPSB4cmVhbGxvYyAoc3RyaW5nLCAo c3RybGVuIChzdHJpbmcpICsgdG9fbGVuICsgMSkpOwotKwotKwkgIC8qIFJlbG9jYXRlIHRoZSBj dXJyZW50IFMgcG9pbnRlci4gICovCi0rCSAgcyA9IHMgLSBzdHJpbmcgKyBzdHJpbmdfbmV3Owot KwkgIHN0cmluZyA9IHN0cmluZ19uZXc7Ci0rCi0rCSAgLyogUmVwbGFjZSBmcm9tIGJ5IHRvLiAg Ki8KLSsJICBtZW1tb3ZlICgmc1t0b19sZW5dLCAmc1tmcm9tX2xlbl0sIHN0cmxlbiAoJnNbZnJv bV9sZW5dKSArIDEpOwotKwkgIG1lbWNweSAocywgdG8sIHRvX2xlbik7Ci0rCi0rCSAgcyArPSB0 b19sZW47Ci0rCX0KLSsgICAgICBlbHNlCi0rCXMrKzsKLSsgICAgfQotKwotKyAgKnN0cmluZ3Ag PSBzdHJpbmc7Ci0rfQotKwotICNpZmRlZiBIQVZFX1dBSVRQSUQKLSAKLSAjaWZkZWYgU0lHQUxS TQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDUtMTQgMTQ6MTc6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6MTg6MDEuOTI1MDQxMjM4ICswMjAw Ci1AQCAtMjA4MDMsNyArMjA4MDMsNyBAQCBsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9m IC5nZGJpbml0Ci0gICAgICAgICAgICAgICAgIGlzIG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0 by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2Yg ZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAg ICAgICAgICAgIGlzIC91c3IvbG9jYWwuCi0rICAgICAgICAgICAgaXMgJGRkaXIvYXV0by1sb2Fk LgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0y MTAwNiw5ICsyMTAwNiw5IEBAIGdldCBsb2FkZWQ6Ci0gJCAuL2dkYiAtcSAuL2dkYgotIFJlYWRp bmcgc3ltYm9scyBmcm9tIC9ob21lL3VzZXIvZ2RiL2dkYi4uLmRvbmUuCi0gd2FybmluZzogRmls ZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAg ICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vz ci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0 aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIv Z2RiL2dkYi1nZGIucHkiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVk IGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAg ICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRp ci9hdXRvLWxvYWQiLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3Rl ZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1A QCAtMjEwNDAsNyArMjEwNDAsMTggQEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMu ICBNdWx0aQotIGhvc3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3IgaW4gdXNlLgotIEBlbmQgdGFi bGUKLSAKLS1TZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBz ZWN1cml0eSBwcm90ZWN0aW9uLgotK1RoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRk aXIvYXV0by1sb2FkfS4gIFRoZSBkZWZhdWx0IEBjb2Rle3NldAotK2F1dG8tbG9hZCBzYWZlLXBh dGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJh dGlvbgotK29wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KLSsKLStB bnkgdXNlZCBzdHJpbmcgQGZpbGV7JGRkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0 YS1kaXJlY3Rvcnl9IHdoaWNoIGlzCi0rZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1 cCAoQHB4cmVme0RhdGEgRmlsZXN9KS4gIEBmaWxleyRkZGlyfSBtdXN0IGJlCi0rYmUgcGxhY2Vk IGFzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCAtLS0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBi eSBAZmlsZXsvfSBvcgotK0BmaWxle1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcg b24gdGhlIGhvc3QgcGxhdGZvcm0uCi0rCi0rU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxl ey99IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbiwKLStjb3JyZXNwb25kaW5nIEB2 YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcwotK0BvcHRpb257LS13aXRob3V0LWF1 dG8tbG9hZC1zYWZlLXBhdGh9LgotIFRoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8gYmUgc2V0 IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi0gc3lzdGVtIHN1cGVy dXNlciBvbmx5LiAgVXNlcnMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZGlyZWN0b3JpZXMgaW4gaW5p dCBmaWxlcyBpbgotIHRoZWlyIGhvbWUgZGlyZWN0b3JpZXMgKEBweHJlZntIb21lIERpcmVjdG9y eSBJbml0IEZpbGV9KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMi0wNS0xNCAxNDoxNzo0Ny4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2Mvb2JzZXJ2ZXIu dGV4aQkyMDEyLTA1LTE0IDE0OjE4OjAxLjkyNjA0MTIzNiArMDIwMAotQEAgLTIzMSw2ICsyMzEs MTAgQEAgdGhlIGN1cnJlbnQgdG9wLWxldmVsIHByb21wdC4KLSBAYyBjb2xsZWN0b3IgcGFzcy4g IEN1cnJlbnRseSBvbmx5IEBjb2Rle3R5cGVfbWFya191c2VkfSBtYXJrZXIgaXMgc3VwcG9ydGVk LgotIEBjIEBlbmQgZGVmdHlwZWZ1bgotIAotK0BkZWZ0eXBlZnVuIHZvaWQgZ2RiX2RhdGFkaXJf Y2hhbmdlZCAodm9pZCkKLStWYXJpYWJsZSBnZGJfZGF0YWRpciBoYXMgYmVlbiBzZXQuICBUaGUg dmFsdWUgbWF5IG5vdCBuZWNlc3NhcmlseSBjaGFuZ2UuCi0rQGVuZCBkZWZ0eXBlZnVuCi0rCi0g QGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAoaW50IEB2YXJ7c29tZWFyZ30pCi0g VGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0ZXN0aW5nLiAgRG8gbm90IHVzZS4g IAotIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAuCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTIzb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yM29mMjgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiODExZjYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9s b2FkLTIzb2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyNCArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDgxLmh0bWwKLQotIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMTEgMTg6MTM6MjIJMS4xNDIzNwotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTIvMDUvMTEgMTg6MjA6MjUJMS4xNDIzOAotIyMgLTEsNSArMSwyMyBAQAot IDIwMTItMDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSAKLSsJSW1wbGVtZW50IG11bHRpLWNvbXBvbmVudCAtLXdpdGgtYXV0by1sb2FkLWRpci4KLSsJ KiBORVdTIChzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5LCAtLXdpdGgtYXV0by1sb2Fk LWRpcik6IE5ldwotKwllbnRyaWVzLgotKwkoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBV cGRhdGUgdGhlIGRlZmF1bHQgdmFsdWUgZGVzY3JpcHRpb24uCi0rCSogYXV0by1sb2FkLmMgKGF1 dG9fbG9hZF9kaXIsIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9fbG9hZF9kaXIpOgotKwlO ZXcuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBBZGQgREVCVUdfQVVUT19MT0FEIG91 dHB1dC4gIFJlbW92ZQotKwlHREJfREFUQURJUiBOVUxMIGNoZWNrLiAgUmVwbGFjZSBHREJfREFU QURJUi9hdXRvLWxvYWQgYnkKLSsJQVVUT19MT0FEX0RJUi4gIFN1cHBvcnQgJGRkaXIgYW5kIG11 bHRpcGxlIGNvbXBvbmVudHMgaW4gaXQuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBJbml0 aWFsaXplIGFsc28gYXV0b19sb2FkX2Rpci4gIEluc3RhbGwgbmV3Ci0rCSJzZXQgYXV0by1sb2Fk IHNjcmlwdHMtZGlyZWN0b3J5Ii4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0rCSogY29u ZmlndXJlOiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLWF1dG8tbG9hZC1k aXIpOiBOZXcgY29uZmlndXJlIG9wdGlvbi4KLSsJKC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IENo YW5nZSB0aGUgZGVmYXVsdCB0byAtLXdpdGgtYXV0by1sb2FkLWRpci4KLSsKLSsyMDEyLTA1LTEx ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCVByb3Zp ZGUgJGRkaXIgc3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLSAJ KiBORVdTICgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCwgLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlLXBhdGgpOiBOZXcKLSAJZW50cmllcy4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdT CTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvTkVXUwkyMDEyLTA1LTE0IDE0OjE4OjI5LjcxMjk4NTg3MSArMDIwMAotQEAgLTY3 LDYgKzY3LDEyIEBAIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgotIHNob3cgYXV0 by1sb2FkIGxpYnRocmVhZC1kYgotICAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Ig c3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KLSAKLStzZXQgYXV0by1s b2FkIHNjcmlwdHMtZGlyZWN0b3J5IDxkaXIxPls6PGRpcjI+Li4uXQotKyAgU2V0IGEgbGlzdCBv ZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsg IEF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFuZCBHREIgc2NyaXB0cyBhcmUg bG9jYXRlZCBpbiBvbmUKLSsgIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRp b24uCi0rICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRv IHRoZSBob3N0IHBsYXRmb3JtLgotKwotIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6 PGRpcjI+Li4uXQotIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotICAgU2V0IGEgbGlzdCBvZiBk aXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgotQEAg LTMwOSwxMCArMzE1LDE0IEBAIHNob3cgdHJhY2Utc3RvcC1ub3RlcwotIAotICogTmV3IGNvbmZp Z3VyZSBvcHRpb25zCi0gCi0rLS13aXRoLWF1dG8tbG9hZC1kaXIKLSsgIENvbmZpZ3VyZSBkZWZh dWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCi0rICBz ZXR0aW5nIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJl cHJlc2VudGluZwotKyAgR0RCJ3MgZGF0YSBkaXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEgc2hvdyBk YXRhLWRpcmVjdG9yeSkuCi0rCi0gLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKLSAgIENvbmZp Z3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXR0 aW5nCi0tICBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAkZGRpciBy ZXByZXNlbnRpbmcgR0RCJ3MKLS0gIGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhIHNob3cg ZGF0YS1kaXJlY3RvcnkpLgotKyAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byB0aGUgLS13aXRoLWF1 dG8tbG9hZC1kaXIgc2V0dGluZy4KLSAKLSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAot ICAgU2V0ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVseSBkaXNh YmxpbmcgdGhpcwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwky MDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQgMTQ6MTg6MjkuNzEzOTg1ODY5ICswMjAwCi1A QCAtMTA4LDYgKzEwOCwzNSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3Qg dWlfCi0gCQkgICAgdmFsdWUpOwotIH0KLSAKLSsvKiBEaXJlY3RvcnkgbGlzdCBmcm9tIHdoaWNo IHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4gIEl0IGlzIG5vdCBjaGVja2VkCi0rICAgZm9y IGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4gIEl0IGlz IGluaXRpYWxpemVkIGJ5Ci0rICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KLStzdGF0aWMg Y2hhciAqYXV0b19sb2FkX2RpcjsKLSsKLSsvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19s b2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nl dF9hdXRvX2xvYWRfZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKQotK3sKLSsgIC8qIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIiIHJlc2V0 cyBpdCB0byB0aGUgY29tcGlsZSB0aW1lIGRlZmF1bHRzLiAgKi8KLSsgIGlmIChhdXRvX2xvYWRf ZGlyWzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYXV0b19sb2FkX2Rpcik7Ci0r ICAgICAgYXV0b19sb2FkX2RpciA9IHhzdHJkdXAgKEFVVE9fTE9BRF9ESVIpOwotKyAgICB9Ci0r fQotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25maWd1cmF0 aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2RpciAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCSAgICBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJl ZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgIgotKwkJ CSAgICAiYXV0by1sb2FkZWQgc2NyaXB0cyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9 Ci0rCi0gLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAg SXQgaXMgbm90IGNoZWNrZWQgZm9yCi0gICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0 cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSAgICBfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQuICAqLwotQEAgLTYwMiw2ICs2MzEsOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9z Y3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIi KTsKLSAgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRl ZCBmaWxlIFwiJXNcIiAlcy5cbiIpLAotKwkJCWRlYnVnZmlsZSwgaW5wdXQgPyBfKCJleGlzdHMi KSA6IF8oImRvZXMgbm90IGV4aXN0IikpOwotIAotICAgaWYgKCFpbnB1dCkKLSAgICAgewotQEAg LTYxMiw2ICs2NDQsMTIgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmls ZQotICAgICAgIGRlYnVnZGlyX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoZGVidWdf ZmlsZV9kaXJlY3RvcnkpOwotICAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAo ZGVidWdkaXJfdmVjKTsKLSAKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwlmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJICAgIF8oImF1dG8tbG9hZDogU2VhcmNoaW5n ICdzZXQgZGVidWctZmlsZS1kaXJlY3RvcnknICIKLSsJCQkgICAgICAicGF0aCBcIiVzXCIuXG4i KSwKLSsJCQkgICAgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotKwotICAgICAgIGZvciAoaXggPSAw OyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGlyKTsgKytp eCkKLSAJewotIAkgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRl YnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLUBAIC02MjMsMjQgKzY2MSw1MyBAQCBhdXRvX2xvYWRf b2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gCSAgbWFrZV9jbGVhbnVwICh4ZnJl ZSwgZGVidWdmaWxlKTsKLSAJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rCSAg aWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywgXygiYXV0by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCi0rCQkJCQkgICAgICAiXCIlc1wiICVz LlxuIiksCi0rCQkJCWRlYnVnZmlsZSwKLSsJCQkJaW5wdXQgPyBfKCJleGlzdHMiKSA6IF8oImRv ZXMgbm90IGV4aXN0IikpOwotIAkgIGlmIChpbnB1dCAhPSBOVUxMKQotIAkgICAgYnJlYWs7Ci0g CX0KLSAgICAgfQotIAotLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLSsgIGlmICghaW5w dXQpCi0gICAgIHsKLSsgICAgICBWRUMgKGNoYXJfcHRyKSAqdmVjOwotKyAgICAgIGludCBpeDsK LSsgICAgICBjaGFyICpkaXI7Ci0rCi0gICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBp biBhIHN1YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCi0gCSBkaXJlY3RvcnkuICAqLwotLSAgICAg IGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChmaWxl bmFtZSkKLS0JCQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOwotLSAgICAgIHN0cmNw eSAoZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7Ci0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIv YXV0by1sb2FkIik7Ci0tICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0 IG5lZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1l KTsKLSAKLS0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGlu cHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLSsgICAgICB2ZWMgPSBkaXJuYW1lc190b19j aGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9kaXIpOwotKyAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2No YXJfcHRyX3ZlYyAodmVjKTsKLSsKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwlmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogU2VhcmNoaW5nICdzZXQg YXV0by1sb2FkICIKLSsJCQkJCSAgInNjcmlwdHMtZGlyZWN0b3J5JyBwYXRoIFwiJXNcIi5cbiIp LAotKwkJCSAgICBhdXRvX2xvYWRfZGlyKTsKLSsKLSsgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0 ZXJhdGUgKGNoYXJfcHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQotKwl7Ci0rCSAgZGVidWdmaWxl ID0geHN0cmR1cCAoZGlyKTsKLSsJICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGVidWdm aWxlLCAiJGRkaXIiLCBnZGJfZGF0YWRpcik7Ci0rCSAgZGVidWdmaWxlID0geHJlYWxsb2MgKGRl YnVnZmlsZSwgKHN0cmxlbiAoZGVidWdmaWxlKQotKwkJCQkJICAgICsgc3RybGVuIChmaWxlbmFt ZSkgKyAxKSk7Ci0rCi0rCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5l ZWQgYSAiLyIgaGVyZS4gICovCi0rCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSsK LSsJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotKwkgIGlucHV0ID0gZm9wZW4g KGRlYnVnZmlsZSwgInIiKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwkgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlICIK LSsJCQkJCSAgICAgICJcIiVzXCIgJXMuXG4iKSwKLSsJCQkJZGVidWdmaWxlLAotKwkJCQlpbnB1 dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0rCSAgaWYgKGlucHV0ICE9 IE5VTEwpCi0rCSAgICBicmVhazsKLSsJfQotICAgICB9Ci0gCi0gICBpZiAoaW5wdXQpCi1AQCAt MTA1Niw2ICsxMTIzLDE5IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25z IGYKLSBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotIAkgICBhdXRvX2xv YWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0gCi0rICBhdXRvX2xvYWRfZGlyID0geHN0cmR1cCAo QVVUT19MT0FEX0RJUik7Ci0rICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJz Y3JpcHRzLWRpcmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJCSAgICAgJmF1dG9fbG9hZF9k aXIsIF8oIlwKLStTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2Fk IGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLStTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9y aWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi0rQXV0 b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMgYW5kIEdEQiBzY3JpcHRzIGFyZSBsb2Nh dGVkIGluIG9uZSBvZiB0aGVcblwKLStkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24u ICBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2ZcblwKLStzY3JpcHRzIGhh dmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy4gIERpcmVjdG9yaWVzIGxpc3RlZCBoZXJlIG5l ZWQgdG8gYmVcblwKLStwcmVzZW50IGFsc28gaW4gdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCcgb3B0aW9uLiIpLAotKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9fbG9h ZF9kaXIsCi0rCQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkJICAg ICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICBhdXRvX2xvYWRfc2FmZV9w YXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7Ci0gICBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlY191cGRhdGUgKCk7Ci0gICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQg KCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6MjkuNzEzOTg1 ODY5ICswMjAwCi1AQCAtNyw2ICs3LDkgQEAKLSAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVy c2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCi0gI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNB TF9CVUlMRAotIAotKy8qIERpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRl ZCBzY3JpcHRzLiAqLwotKyN1bmRlZiBBVVRPX0xPQURfRElSCi0rCi0gLyogRGlyZWN0b3JpZXMg c2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotICN1bmRlZiBBVVRPX0xPQURfU0FG RV9QQVRICi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0w NS0xNCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoyMToxMy4wNjg4NDkxMDMgKzAyMDAKLUBAIC05NTUs NiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0g d2l0aF9yZWxvY2F0ZWRfc291cmNlcwotIHdpdGhfcnBtCi0rd2l0aF9hdXRvX2xvYWRfZGlyCi0g d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0 X2JmZAotQEAgLTE2NjcsOSArMTY2OCwxMyBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBz b3VyY2UgZmlsZXMKLSAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFz ZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQotKyAgLS13aXRoLWF1dG8tbG9hZC1kaXI9UEFUSAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2Fk IGF1dG8tbG9hZGVkIHNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgJyRk ZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxvYWRdCi0gICAtLXdpdGgtYXV0 by1sb2FkLXNhZmUtcGF0aD1QQVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rv cmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRv LWxvYWRdCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdkYi1k YXRhZGlyIHBhdGgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0by1sb2Fk LWRpcl0KLSAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCi0g ICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBz dXBwb3J0Ci1AQCAtODQ4Myw2ICs4NDg4LDMxIEBAICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6 ICRSUE1fUEtHX0VSUk8KLSAgIGZpCi0gZmkKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3Rvcnki ID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3Rv cnkuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1kaXIg d2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfZGlyK3NldH0iID0gc2V0OyB0 aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX2RpcjsKLStlbHNlCi0rICB3aXRoX2F1 dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCcKLStmaQotKwotK2VzY2FwZV9kaXI9YGVjaG8g JHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AK LSsKLSsgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJl Zml4IgotKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtw cmVmaXh9JwotKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGlyYAotKyAgYWNf ZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAotKwotK2NhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKLSsjZGVmaW5lIEFVVE9fTE9BRF9ESVIgIiRhY19kZWZpbmVfZGlyIgotK19B Q0VPRgotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkd2l0aF9hdXRvX2xvYWRfZGlyIiA+JjUKLSskYXNfZWNobyAiJHdpdGhfYXV0b19sb2Fk X2RpciIgPiY2OyB9Ci0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKLSAkYXNfZWNo b19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2OyB9 Ci0gCi1AQCAtODQ5Miw3ICs4NTIyLDcgQEAgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGgrc2V0fQotICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotICAgICAgZmkK LSBlbHNlCi0tICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCcKLSsg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciIKLSBmaQotIAot IGVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1k ZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9j b25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjIxOjAxLjU5 Nzg3MTcxNiArMDIwMAotQEAgLTMzOSwxNiArMzM5LDI2IEBAIGV4dGVybiBycG1kYk1hdGNoSXRl cmF0b3IgcnBtdHNJbml0SXRlcmEKLSAgIGZpCi0gZmkKLSAgCi0rQUNfTVNHX0NIRUNLSU5HKFtm b3IgZGVmYXVsdCBhdXRvLWxvYWQgZGlyZWN0b3J5XSkKLStBQ19BUkdfV0lUSChhdXRvLWxvYWQt ZGlyLAotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwKLSsgIFtk aXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywgdXNlICck ZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pLCwKLSsg IFt3aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQotK2VzY2FwZV9kaXI9YGVj aG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxcXFwm L2cnYAotK0FDX0RFRklORV9ESVIoQVVUT19MT0FEX0RJUiwgZXNjYXBlX2RpciwKLSsJICAgICAg W0RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLl0pCi0r QUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX2Rpcl0pCi0rCi0gQUNfTVNHX0NIRUNLSU5H KFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKLSBBQ19BUkdfV0lUSChhdXRvLWxv YWQtc2FmZS1wYXRoLAotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aD1QQVRIXSwKLS0gIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMs IHVzZSAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1dG8tbG9h ZEA6PkBdKQotKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywg dXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpALS13aXRoLWF1dG8tbG9h ZC1kaXJAOj5AXSkKLSBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBh dGhdLAotICAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMg bG9jYXRpb25zXSksCi0gICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9 ICJubyI7IHRoZW4KLSAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKLSAgICAgIGZp XSwKLS1bd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnXSkKLStbd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIl0pCi0gZXNjYXBlX2Rp cj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRpclw+L1xc XFxcXFxcXFxcXCYvZydgCi0gQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2Nh cGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZp bGVzLl0pCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi0wNS0xNCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyMDoxMy42NTM5NjYyMTIg KzAyMDAKLUBAIC0yMDgwNCw2ICsyMDgwNCw4IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRp bmcgb2YgLmdkYmluaXQKLSBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24g c2NyaXB0cyBpcyBvbi4KLSBzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hp Y2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKLSAgICAgICAgICAgICBpcyAkZGRpci9h dXRvLWxvYWQuCi0rc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCi0rICAgICAgICAgICAgICAgICAgICBp cyAkZGRpci9hdXRvLWxvYWQuCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBAYW5jaG9ye2luZm8g YXV0by1sb2FkfQotQEAgLTIwODY0LDYgKzIwODY2LDEwIEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RC Tn0gY29udHJvbCBjb21tYW5kcwotIEB0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQ eXRob24gc2NyaXB0cy4KLSBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 c30uCi0gQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStA aXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLStAdGFiIENvbnRy b2wgZm9yIEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgotK0BpdGVt IEB4cmVme3Nob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLStAdGFiIFNob3cgQHZh bHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uCi0gQGl0ZW0gQHhyZWZ7c2V0 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KLSBAdGFiIENvbnRyb2wgZm9yIGluaXQgZmlsZSBp biB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbG9j YWwtZ2RiaW5pdH0uCi1AQCAtMjEwNDAsMTUgKzIxMDQ2LDEzIEBAIGxvYWRpbmcgYW5kIGV4ZWN1 dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGkKLSBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGlu IHVzZS4KLSBAZW5kIHRhYmxlCi0gCi0tVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXsk ZGRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rVGhpcyB2YXJpYWJsZSBk ZWZhdWx0cyB0byB3aGF0IEBjb2Rley0td2l0aC1hdXRvLWxvYWQtZGlyfSBoYXMgYmVlbiBjb25m aWd1cmVkCi0rdG8gKEBweHJlZnt3aXRoLWF1dG8tbG9hZC1kaXJ9KS4gIEBmaWxleyRkZGlyfSBz dWJzdGl0dWF0aW9uIGFwcGxpZXMgdGhlIHNhbWUKLSthcyBmb3IgQHhyZWZ7c2V0IGF1dG8tbG9h ZCBzY3JpcHRzLWRpcmVjdG9yeX0uCi0rVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0gYXV0by1sb2Fk IHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfSBj b25maWd1cmF0aW9uCi0gb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGh9 LgotIAotLUFueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkg QHZhcntkYXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKLS1kZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJO fSBzdGFydHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLS1i ZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVs aW1pdGVkIGJ5IEBmaWxley99IG9yCi0tQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRl cGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KLS0KLSBTZXR0aW5nIHRoaXMgdmFyaWFibGUg dG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLAotIGNvcnJlc3Bv bmRpbmcgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzCi0gQG9wdGlvbnstLXdp dGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCi1AQCAtMjUxMzUsNyArMjUxMzksNyBAQCByZWdp c3RlcmluZyBvYmpmaWxlLXNwZWNpZmljIHByZXR0eS1wcmluCi0gQGNpbmRleCBAZmlsZXtAdmFy e29iamZpbGV9LWdkYi5weX0KLSAKLSBXaGVuIGEgbmV3IG9iamVjdCBmaWxlIGlzIHJlYWQsIEB2 YWx1ZXtHREJOfSBsb29rcyBmb3IKLS1hIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntvYmpmaWxlfS1n ZGIucHl9LAotK2EgZmlsZSBuYW1lZCBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gKHdlIGNh bGwgaXQgQHZhcntzY3JpcHQtbmFtZX0gYmVsb3cpLAotIHdoZXJlIEB2YXJ7b2JqZmlsZX0gaXMg dGhlIG9iamVjdCBmaWxlJ3MgcmVhbCBuYW1lLCBmb3JtZWQgYnkgZW5zdXJpbmcKLSB0aGF0IHRo ZSBmaWxlIG5hbWUgaXMgYWJzb2x1dGUsIGZvbGxvd2luZyBhbGwgc3ltbGlua3MsIGFuZCByZXNv bHZpbmcKLSBAY29kZXsufSBhbmQgQGNvZGV7Li59IGNvbXBvbmVudHMuICBJZiB0aGlzIGZpbGUg ZXhpc3RzIGFuZCBpcwotQEAgLTI1MTQzLDE0ICsyNTE0Nyw0MiBAQCByZWFkYWJsZSwgQHZhbHVl e0dEQk59IHdpbGwgZXZhbHVhdGUgaXQKLSAKLSBJZiB0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3Qs IGFuZCBpZiB0aGUgcGFyYW1ldGVyCi0gQGNvZGV7ZGVidWctZmlsZS1kaXJlY3Rvcnl9IGlzIHNl dCAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZpbGVzfSksCi0tdGhlbiBAdmFsdWV7R0RCTn0gd2ls bCBsb29rIGZvciBAdmFye3JlYWwtbmFtZX0gaW4gYWxsIG9mIHRoZQotK3RoZW4gQHZhbHVle0dE Qk59IHdpbGwgbG9vayBmb3IgQHZhcntzY3JpcHQtbmFtZX0gaW4gYWxsIG9mIHRoZQotIGRpcmVj dG9yaWVzIG1lbnRpb25lZCBpbiB0aGUgdmFsdWUgb2YgQGNvZGV7ZGVidWctZmlsZS1kaXJlY3Rv cnl9LgotIAotIEZpbmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFs dWV7R0RCTn0gd2lsbCBsb29rIGZvcgotLWEgZmlsZSBuYW1lZCBAZmlsZXtAdmFye2RhdGEtZGly ZWN0b3J5fS9weXRob24vYXV0by1sb2FkL0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCi0tQHZhcntk YXRhLWRpcmVjdG9yeX0gaXMgQHZhbHVle0dEQk59J3MgZGF0YSBkaXJlY3RvcnkgKGF2YWlsYWJs ZSB2aWEKLS1AY29kZXtzaG93IGRhdGEtZGlyZWN0b3J5fSwgQHB4cmVme0RhdGEgRmlsZXN9KSwg YW5kIEB2YXJ7cmVhbC1uYW1lfQotLWlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgYXMg ZGVzY3JpYmVkIGFib3ZlLgotK0B2YXJ7c2NyaXB0LW5hbWV9IGZpbGUgaW4gYWxsIG9mIHRoZSBk aXJlY3RvcmllcyBzcGVjaWZpZWQgYnk6Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzY3Jp cHRzLWRpcmVjdG9yeQotK0BpdGVtIHNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkgQHJ7 W31AdmFye2RpcmVjdG9yaWVzfUBye119Ci0rQ29udHJvbCBAdmFsdWV7R0RCTn0gYXV0by1sb2Fk ZWQgc2NyaXB0cyBsb2NhdGlvbi4gIE11bHRpcGxlIGRpcmVjdG9yeSBlbnRyaWVzCi0rbWF5IGJl IGRlbGltaXRlZCBieSB0aGUgaG9zdCBwbGF0Zm9ybSBwYXRoIHNlcGFyYXRvciBpbiB1c2UKLSso QHNhbXB7On0gb24gVW5peCwgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKS4KLSsK LStFYWNoIGVudHJ5IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvIGJ5IHRoZSBzZWN1cml0 eSBzZXR0aW5nCi0rQGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7c2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGh9KS4KLSsKLStAYW5jaG9ye3dpdGgtYXV0by1sb2FkLWRpcn0KLStU aGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVm YXVsdCBAY29kZXtzZXQKLSthdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBv dmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24KLStvcHRpb24gQG9wdGlvbnst LXdpdGgtYXV0by1sb2FkLWRpcn0uCi0rCi0rQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3 aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcwotK2RldGVy bWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmls ZXskZGRpcn0gbXVzdCBiZQotK2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0t IGVpdGhlciBhbG9uZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKLStAZmlsZXtcfSBkaXJl Y3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgotKwotK1Ro ZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgcGF0aCBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdO VSBhbmQgVW5peAotK3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykg dG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQotK3RvIHRoZSBAZW52e1BBVEh9IGVu dmlyb25tZW50IHZhcmlhYmxlLgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1k aXJlY3Rvcnl9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeQotK0Bp dGVtIHNob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Ci0rU2hvdyBAdmFsdWV7R0RCTn0g YXV0by1sb2FkZWQgc2NyaXB0cyBsb2NhdGlvbi4KLStAZW5kIHRhYmxlCi0gCi0gQHZhbHVle0dE Qk59IGRvZXMgbm90IHRyYWNrIHdoaWNoIGZpbGVzIGl0IGhhcyBhbHJlYWR5IGF1dG8tbG9hZGVk IHRoaXMgd2F5LgotIEB2YWx1ZXtHREJOfSB3aWxsIGxvYWQgdGhlIGFzc29jaWF0ZWQgc2NyaXB0 IGV2ZXJ5IHRpbWUgdGhlIGNvcnJlc3BvbmRpbmcKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQt MjRvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMzVkNjAxZS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMjRvZjI4 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cwMDA4Mi5odG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9D aGFuZ2VMb2cJMjAxMi8wNS8xMSAxODoyMDoyNgkxLjEzMTMKLSMjIyBzcmMvZ2RiL2RvYy9DaGFu Z2VMb2cJMjAxMi8wNS8xMSAxODoyMzoxMQkxLjEzMTQKLSMjIC0xLDUgKzEsMTIgQEAKLSAyMDEy LTA1LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0r CSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZywgSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERp cmVjdG9yeSkKLSsJKGxpYnRocmVhZF9kYi5zby4xIGZpbGUsIG9iamZpbGUtZ2RiLmdkYiBmaWxl LCBvYmpmaWxlLWdkYi5weSBmaWxlKQotKwkoZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6 IEFkZCByZWZlcmVuY2UKLSsJdG8gJ0F1dG8tbG9hZGluZyBzYWZlIHBhdGgnLgotKwotKzIwMTIt MDUtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJ SW1wbGVtZW50IG11bHRpLWNvbXBvbmVudCAtLXdpdGgtYXV0by1sb2FkLWRpci4KLSAJKiBnZGIu dGV4aW5mbyAoQXV0by1sb2FkaW5nKTogTmV3IHJlZmVyZW5jZXMKLSAJZm9yICdzZXQgYXV0by1s b2FkIHNjcmlwdHMtZGlyZWN0b3J5JwotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDUvMTEgMTg6MjA6MjYJMS45NTkKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1 LzExIDE4OjIzOjExCTEuOTYwCi1AQCAtMjA5NzMsNiArMjA5NzMsMTAgQEAKLSByZXN1bHRzIG9y IGludHJvZHVjZSBzZWN1cml0eSByaXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1 bnRydXN0ZWQKLSBzb3VyY2VzKS4KLSAKLStOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGVzZSBhc3Nv Y2lhdGVkIGZpbGVzIChpbmNsdWRpbmcgdGhlIGxvY2FsIEBmaWxley5nZGJpbml0fQotK2ZpbGUp IHJlcXVpcmVzIGFjY29yZGluZ2x5IGNvbmZpZ3VyZWQgQGNvZGV7YXV0by1sb2FkIHNhZmUtcGF0 aH0KLSsoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4KLSsKLSBGb3IgdGhlc2UgcmVh c29ucywgQHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxldCB5 b3UKLSBjb250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBzaG91 bGQgYmUgYXV0by1sb2FkZWQuCi0gCi1AQCAtMjExMTIsNiArMjExMTYsOSBAQAotIGZyb20gaW5p dCBmaWxlIChpZiBhbnkpIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAotIHNlZSBA cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9Lgot IAotK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRoaXMgbG9jYWwgQGZpbGV7LmdkYmluaXR9IGZpbGUg YWxzbyByZXF1aXJlcyBhY2NvcmRpbmdseQotK2NvbmZpZ3VyZWQgQGNvZGV7YXV0by1sb2FkIHNh ZmUtcGF0aH0gKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkuCi0rCi0gQHRhYmxlIEBj b2RlCi0gQGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0gQGtpbmRleCBzZXQg YXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLUBAIC0yMTE0OCw2ICsyMTE1NSw5IEBACi0gYXV0by1s b2FkIGxpYnRocmVhZC1kYn0gaXMgZW5hYmxlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gc3VjaCB0 aHJlYWQgZGVidWdnaW5nCi0gbGlicmFyeS4KLSAKLStOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlz IGRlYnVnZ2luZyBsaWJyYXJ5IGFsc28gcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAot K0Bjb2Rle2F1dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0 aH0pLgotKwotIEB0YWJsZSBAY29kZQotIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGJ9Ci0gQGtpbmRleCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotQEAgLTIxMTc1LDYgKzIx MTg1LDkgQEAKLSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIChAcHhyZWZ7U2VxdWVuY2Vz fSksIGFzIGxvbmcgYXMgQHNhbXB7c2V0Ci0gYXV0by1sb2FkIGdkYi1zY3JpcHRzfSBpcyBzZXQg dG8gQHNhbXB7b259LgotIAotK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRoaXMgc2NyaXB0IGZpbGUg YWxzbyByZXF1aXJlcyBhY2NvcmRpbmdseSBjb25maWd1cmVkCi0rQGNvZGV7YXV0by1sb2FkIHNh ZmUtcGF0aH0gKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkuCi0rCi0gRm9yIG1vcmUg YmFja2dyb3VuZCByZWZlciB0byB0aGUgc2ltaWxhciBQeXRob24gc2NyaXB0cyBhdXRvLWxvYWRp bmcKLSBkZXNjcmlwdGlvbiAoQHB4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9KS4KLSAKLUBAIC0y NTQ2NSw3ICsyNTQ3OCwxMCBAQAotIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBpbiB0aGUgdmFsdWUg b2YgQGNvZGV7ZGVidWctZmlsZS1kaXJlY3Rvcnl9LgotIAotIEZpbmFsbHksIGlmIHRoaXMgZmls ZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvcgotLUB2YXJ7 c2NyaXB0LW5hbWV9IGZpbGUgaW4gYWxsIG9mIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnk6 Ci0rQHZhcntzY3JpcHQtbmFtZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIGFzIHNw ZWNpZmllZCBiZWxvdy4KLSsKLStOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlzIHNjcmlwdCBmaWxl IGFsc28gcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAotK0Bjb2Rle2F1dG8tbG9hZCBz YWZlLXBhdGh9IChAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pLgotIAotIEB0YWJsZSBA Y29kZQotIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0KLUBAIC0yNTU0 Miw2ICsyNTU1OCw5IEBACi0gCi0gVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGRpcmVjdG9y aWVzIGlmIGRlc2lyZWQuCi0gCi0rTm90ZSB0aGF0IGxvYWRpbmcgb2YgdGhpcyBzY3JpcHQgZmls ZSBhbHNvIHJlcXVpcmVzIGFjY29yZGluZ2x5IGNvbmZpZ3VyZWQKLStAY29kZXthdXRvLWxvYWQg c2FmZS1wYXRofSAoQHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4KLSsKLSBJZiB0aGUg bWFjcm8gaXMgcHV0IGluIGEgaGVhZGVyLCBhbnkgYXBwbGljYXRpb24gb3IgbGlicmFyeQotIHVz aW5nIHRoaXMgaGVhZGVyIHdpbGwgZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzcGVjaWZpZWQgc2Ny aXB0LgotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2ggYi9nZGItYXV0 b2xvYWQtMjVvZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzU5Mzlj Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw2NCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1 L21zZzAwMDkxLmh0bWwKLQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzExIDIy OjI0OjIyCTEuMTMxNQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzEyIDE0OjIw OjMwCTEuMTMxNgotIyMgLTEsMyArMSw5IEBACi0rMjAxMi0wNS0xMiAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpA Z251Lm9yZz4KLSsKLSsJKiBnZGIudGV4aW5mbyAoU2VwYXJhdGUgRGVidWcgRmlsZXMpOiBVc2Ug cGx1cmFsIGZvcm0gZm9yIGdsb2JhbAotKwlkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZGlyZWN0b3J5 LgotKwotIDIwMTItMDUtMTEgIFN0YW4gU2hlYnMgIDxzdGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0g CSAgICBLd29rIENoZXVuZyBZZXVuZyAgPGtjeUBjb2Rlc291cmNlcnkuY29tPgotIAotLS0tIHNy Yy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMTEgMjI6MjQ6MjIJMS45NjEKLSsrKyBzcmMv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzEyIDE0OjIwOjMxCTEuOTYyCi1AQCAtMTYyODcs NyArMTYyODcsNyBAQAotIEBjaW5kZXggZGVidWdnaW5nIGluZm9ybWF0aW9uIGluIHNlcGFyYXRl IGZpbGVzCi0gQGNpbmRleCBAZmlsZXsuZGVidWd9IHN1YmRpcmVjdG9yaWVzCi0gQGNpbmRleCBk ZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZGlyZWN0b3J5LCBnbG9iYWwKLS1AY2luZGV4IGdsb2JhbCBk ZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZGlyZWN0b3J5Ci0rQGNpbmRleCBnbG9iYWwgZGVidWdnaW5n IGluZm9ybWF0aW9uIGRpcmVjdG9yaWVzCi0gQGNpbmRleCBidWlsZCBJRCwgYW5kIHNlcGFyYXRl IGRlYnVnZ2luZyBmaWxlcwotIEBjaW5kZXggQGZpbGV7LmJ1aWxkLWlkfSBkaXJlY3RvcnkKLSAK LUBAIC0xNjMzMiwxNCArMTYzMzIsMTQgQEAKLSBAaXRlbQotIEZvciB0aGUgYGBkZWJ1ZyBsaW5r JycgbWV0aG9kLCBAdmFsdWV7R0RCTn0gbG9va3MgdXAgdGhlIG5hbWVkIGZpbGUgaW4KLSB0aGUg ZGlyZWN0b3J5IG9mIHRoZSBleGVjdXRhYmxlIGZpbGUsIHRoZW4gaW4gYSBzdWJkaXJlY3Rvcnkg b2YgdGhhdAotLWRpcmVjdG9yeSBuYW1lZCBAZmlsZXsuZGVidWd9LCBhbmQgZmluYWxseSB1bmRl ciB0aGUgZ2xvYmFsIGRlYnVnCi0tZGlyZWN0b3J5LCBpbiBhIHN1YmRpcmVjdG9yeSB3aG9zZSBu YW1lIGlzIGlkZW50aWNhbCB0byB0aGUgbGVhZGluZwotK2RpcmVjdG9yeSBuYW1lZCBAZmlsZXsu ZGVidWd9LCBhbmQgZmluYWxseSB1bmRlciBlYWNoIG9uZSBvZiB0aGUgZ2xvYmFsIGRlYnVnCi0r ZGlyZWN0b3JpZXMsIGluIGEgc3ViZGlyZWN0b3J5IHdob3NlIG5hbWUgaXMgaWRlbnRpY2FsIHRv IHRoZSBsZWFkaW5nCi0gZGlyZWN0b3JpZXMgb2YgdGhlIGV4ZWN1dGFibGUncyBhYnNvbHV0ZSBm aWxlIG5hbWUuCi0gCi0gQGl0ZW0KLSBGb3IgdGhlIGBgYnVpbGQgSUQnJyBtZXRob2QsIEB2YWx1 ZXtHREJOfSBsb29rcyBpbiB0aGUKLS1AZmlsZXsuYnVpbGQtaWR9IHN1YmRpcmVjdG9yeSBvZiB0 aGUgZ2xvYmFsIGRlYnVnIGRpcmVjdG9yeSBmb3IgYSBmaWxlCi0tbmFtZWQgQGZpbGV7QHZhcntu bn0vQHZhcntubm5ubm5ubn0uZGVidWd9LCB3aGVyZSBAdmFye25ufSBhcmUgdGhlCi0rQGZpbGV7 LmJ1aWxkLWlkfSBzdWJkaXJlY3Rvcnkgb2YgZWFjaCBvbmUgb2YgdGhlIGdsb2JhbCBkZWJ1ZyBk aXJlY3RvcmllcyBmb3IKLSthIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntubn0vQHZhcntubm5ubm5u bn0uZGVidWd9LCB3aGVyZSBAdmFye25ufSBhcmUgdGhlCi0gZmlyc3QgMiBoZXggY2hhcmFjdGVy cyBvZiB0aGUgYnVpbGQgSUQgYml0IHN0cmluZywgYW5kIEB2YXJ7bm5ubm5ubm59Ci0gYXJlIHRo ZSByZXN0IG9mIHRoZSBiaXQgc3RyaW5nLiAgKFJlYWwgYnVpbGQgSUQgc3RyaW5ncyBhcmUgMzIg b3IgbW9yZQotIGhleCBjaGFyYWN0ZXJzLCBub3QgMTAuKQotQEAgLTE2MzQ4LDcgKzE2MzQ4LDcg QEAKLSBTbywgZm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGFzayBAdmFsdWV7R0RCTn0gdG8gZGVi dWcKLSBAZmlsZXsvdXNyL2Jpbi9sc30sIHdoaWNoIGhhcyBhIGRlYnVnIGxpbmsgdGhhdCBzcGVj aWZpZXMgdGhlCi0gZmlsZSBAZmlsZXtscy5kZWJ1Z30sIGFuZCBhIGJ1aWxkIElEIHdob3NlIHZh bHVlIGluIGhleCBpcwotLUBjb2Rle2FiY2RlZjEyMzR9LiAgSWYgdGhlIGdsb2JhbCBkZWJ1ZyBk aXJlY3RvcnkgaXMKLStAY29kZXthYmNkZWYxMjM0fS4gIElmIHRoZSBsaXN0IG9mIHRoZSBnbG9i YWwgZGVidWcgZGlyZWN0b3JpZXMgaW5jbHVkZXMKLSBAZmlsZXsvdXNyL2xpYi9kZWJ1Z30sIHRo ZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IgdGhlIGZvbGxvd2luZwotIGRlYnVnIGluZm9y bWF0aW9uIGZpbGVzLCBpbiB0aGUgaW5kaWNhdGVkIG9yZGVyOgotIAotQEAgLTE2MzYzLDggKzE2 MzYzLDggQEAKLSBAZmlsZXsvdXNyL2xpYi9kZWJ1Zy91c3IvYmluL2xzLmRlYnVnfS4KLSBAZW5k IGl0ZW1pemUKLSAKLS1Zb3UgY2FuIHNldCB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBpbmZvIGRpcmVj dG9yeSdzIG5hbWUsIGFuZCB2aWV3IHRoZQotLW5hbWUgQHZhbHVle0dEQk59IGlzIGN1cnJlbnRs eSB1c2luZy4KLStZb3UgY2FuIHNldCB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBpbmZvIGRpcmVjdG9y aWVzLCBhbmQgdmlldyB0aGUKLStsaXN0IEB2YWx1ZXtHREJOfSBpcyBjdXJyZW50bHkgdXNpbmcu Ci0gCi0gQHRhYmxlIEBjb2RlCi0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI2b2YyOC5w YXRjaCBiL2dkYi1hdXRvbG9hZC0yNm9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGQ4OGM0M2QuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTI2b2YyOC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwNDQ5Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gQ29zbWV0 aWMgZml4ICdzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGZvciAiOiIgIFtSZTogW3BhdGNoIDEv Ml0gUHJvdmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1w YXRoXQotCi1PbiBGcmksIDExIE1heSAyMDEyIDIxOjMzOjUzICswMjAwLCBKYW4gS3JhdG9jaHZp bCB3cm90ZToKLT4gT24gRnJpLCAxMSBNYXkgMjAxMiAyMToxNDo0NyArMDIwMCwgUGVkcm8gQWx2 ZXMgd3JvdGU6Ci0+ID4gTG9va3MgbGlrZSB0aGVyZSBpcyBzb21lIHNwZWNpYWwgY2FzaW5nIHNv bWV3aGVyZToKLT4gCi0+IFRydWUsIEkgZm9yZ290IGFuZCBJIGFncmVlLiAgQnV0IGl0IGlzIG9u bHkgdGhpcyAiY29zbWV0aWMiIG1lc3NhZ2UsIGl0IGhhcyBubwotPiBmdW5jdGlvbmFsaXR5IGVm ZmVjdC4gIEkgY2FuIGZpeCB0aGlzICJhbnkgZGlyZWN0b3J5IiBtZXNzYWdlIGNvbmRpdGlvbmFs LgotCi1SZWdhcmRzLAotSmFuCi0KLQotZ2RiLwotMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBhdXRvLWxvYWQuYyAoc2hvd19hdXRv X2xvYWRfc2FmZV9wYXRoKTogQWNjZXB0IGFueSBjb21iaW5hdGlvbiBvZgotCURJUk5BTUVfU0VQ QVJBVE9SIGFuZCBJU19ESVJfU0VQQVJBVE9SIGZvciB3aWxkLW1hdGNoLgotCi1kaWZmIC0tZ2l0 IGEvZ2RiL2F1dG8tbG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCi1pbmRleCA1ZWUxMTdmLi40NjJl ZTA2IDEwMDY0NAotLS0tIGEvZ2RiL2F1dG8tbG9hZC5jCi0rKysgYi9nZGIvYXV0by1sb2FkLmMK LUBAIC0yNDEsNyArMjQxLDE1IEBAIHN0YXRpYyB2b2lkCi0gc2hvd19hdXRvX2xvYWRfc2FmZV9w YXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotIAkJCSAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIGlmIChzdHJjbXAg KHZhbHVlLCAiLyIpID09IDApCi0rICBjb25zdCBjaGFyICpjczsKLSsKLSsgIC8qIENoZWNrIGlm IHVzZXIgaGFzIGVudGVyZWQgZWl0aGVyICIvIiBvciBmb3IgZXhhbXBsZSAiOiIuCi0rICAgICBC dXQgd2hpbGUgbW9yZSBjb21wbGljYXRlIGNvbnRlbnQgbGlrZSAiOi9mb28iIHdvdWxkIHN0aWxs IGFsc28KLSsgICAgIHBlcm1pdCBhbnkgbG9jYXRpb24gZG8gbm90IGhpZGUgdGhvc2UuICAqLwot KwotKyAgZm9yIChjcyA9IHZhbHVlOyAqY3MgJiYgKCpjcyA9PSBESVJOQU1FX1NFUEFSQVRPUiB8 fCBJU19ESVJfU0VQQVJBVE9SICgqY3MpKTsKLSsgICAgICAgY3MrKyk7Ci0rICBpZiAoKmNzID09 IDApCi0gICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUg c2FmZSB0byBsb2FkIGZyb20gYW55ICIKLSAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotICAg ZWxzZQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaCBiL2dkYi1hdXRv bG9hZC0yN29mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyOGQ5NTgu LjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDIyNSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx Mi0wNS9tc2cwMDQ3Ni5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMS8yXSBhdXRvLWxvYWQ6IFJlbmFt ZSAkZGRpciB0byAkZGF0YWRpcgotCi1IaSwKLQotd2hlbiBEb3VnIHN1Z2dlc3RlZCAkZGRpciBm b3IgZGF0YS1kaXJlY3RvcnksIHNpbWlsYXIgdG8gJGNkaXIsICRwZGlyIGFuZAotJHNkaXIgYWxy ZWFkeSBpbiB1c2UsIGl0IG1hZGUgc2Vuc2UuCi0KLUJ1dCBjdXJyZW50bHkgSSBuZWVkIHRvIGlu dHJvZHVjZSBhbHNvIGEgdmFyaWFibGUgZm9yIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGFuZAotaGF2 aW5nIGJvdGggJGRkaXIgYW5kICRkZWJ1Z2RpciB2YWxpZCBpbiB0aGUgc2FtZSBzdHJpbmcgc2Vl bXMgdG8gYmUgY29uZnVzaW5nLgotCi1UaGVyZWZvcmUgcHJvcG9zaW5nIHRvIGhhdmUgJGRhdGFk aXIgYW5kICRkZWJ1Z2RpciBpbnN0ZWFkIGluIHRoZSBuZXh0IHBhdGNoLAotdGhpcyBwYXRjaCBp cyBqdXN0IGEgbWFjaGFuaWNhbCByZW5hbWUgJGRkaXIgLT4gJGRhdGFkaXIuCi0KLUkgZG8gbm90 IHRoaW5rIGl0IG5lZWRzIGJhY2t3YXJkIGNvbXBhdGliaWx1dHkgYXMgJGRkaXIgaGFzIG5vdCB5 ZXQgYmVlbiBpbgotYW55IEdEQiByZWxlYXNlLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8K LTIwMTItMDUtMTIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCVJlbmFtZSAkZGRpciB0byAkZGF0YWRpci4KLQkqIE5FV1MgKC0td2l0aC1hdXRvLWxvYWQt ZGlyKTogUmVuYW1lICRkZGlyIHRvICRkYXRhZGlyLgotCSogYXV0by1sb2FkLmMgKGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSkKLQkoYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQs IGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IExpa2V3aXNlLgotCSogY29uZmlndXJlOiBSZWdl bmVyYXRlLgotCSogY29uZmlndXJlLmFjICgtLXdpdGgtYXV0by1sb2FkLWRpciwgLS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGgpOgotCUxpa2V3aXNlLiAgUmVtb3ZlIHRoZSAndXNlICRkZGlyJyBo ZWxwIHN0cmluZy4KLQotZ2RiL2RvYy8KLTIwMTItMDUtMTIgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVJlbmFtZSAkZGRpciB0byAkZGF0YWRpci4KLQkq IGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcsIEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpCi0JKG9i amZpbGUtZ2RiLnB5IGZpbGUpOiBSZW5hbWUgJGRkaXIgdG8gJGRhdGFkaXIuCi0KLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MjQ6MTUuMTEyNDkwMjg2ICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTE0IDE0OjI0OjIwLjIy NDQ4MDIxMCArMDIwMAotQEAgLTMxNyw4ICszMTcsOCBAQCBzaG93IHRyYWNlLXN0b3Atbm90ZXMK LSAKLSAtLXdpdGgtYXV0by1sb2FkLWRpcgotICAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9y IHRoZSAnc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeScKLS0gIHNldHRpbmcgYWJvdmUu ICBJdCBkZWZhdWx0cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50aW5nCi0t ICBHREIncyBkYXRhIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSBzaG93IGRhdGEtZGlyZWN0b3J5 KS4KLSsgIHNldHRpbmcgYWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRhdGFkaXIvYXV0by1sb2Fk JywgJGRhdGFkaXIKLSsgIHJlcHJlc2VudGluZyBHREIncyBkYXRhIGRpcmVjdG9yeSAoYXZhaWxh YmxlIHZpYSBzaG93IGRhdGEtZGlyZWN0b3J5KS4KLSAKLSAtLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aAotICAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBz YWZlLXBhdGgnIHNldHRpbmcKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxv YWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1s b2FkLmMJMjAxMi0wNS0xNCAxNDoyNDoxNS4xMTI0OTAyODYgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0OjI0OjIwLjIyNDQ4MDIxMCAr MDIwMAotQEAgLTE3NCwxMyArMTc0LDEzIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSAodm9pZCkKLSAgICAgICBjaGFyICpkZGlyX3N1YnN0LCAqZXhwYW5kZWQsICpyZWFsX3BhdGg7 Ci0gCi0gICAgICAgZGRpcl9zdWJzdCA9IHhzdHJkdXAgKGRpcik7Ci0tICAgICAgc3Vic3RpdHV0 ZV9wYXRoX2NvbXBvbmVudCAoJmRkaXJfc3Vic3QsICIkZGRpciIsIGdkYl9kYXRhZGlyKTsKLSsg ICAgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJzdCwgIiRkYXRhZGlyIiwg Z2RiX2RhdGFkaXIpOwotICAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkZGlyX3N1YnN0 KTsKLSAgICAgICB4ZnJlZSAoZGRpcl9zdWJzdCk7Ci0gICAgICAgcmVhbF9wYXRoID0gZ2RiX3Jl YWxwYXRoIChleHBhbmRlZCk7Ci0gCi0gICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5 IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVmb3JlCi0tCSAkZGRpci1leHBhbmRlZCBh bmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KLSsJICRkYXRhZGlyLWV4cGFuZGVkIGFuZCB0aWxkZS1l eHBhbmRlZCkuICAqLwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci0gCi0gICAgICAgaWYgKGRlYnVnX2F1dG9fbG9h ZCkKLUBAIC0yMTIsNyArMjEyLDcgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2 b2lkKQotICAgICB9Ci0gfQotIAotLS8qIFZhcmlhYmxlIGdkYl9kYXRhZGlyIGhhcyBiZWVuIHNl dC4gIFVwZGF0ZSBjb250ZW50IGRlcGVuZGluZyBvbiAkZGRpci4gICovCi0rLyogVmFyaWFibGUg Z2RiX2RhdGFkaXIgaGFzIGJlZW4gc2V0LiAgVXBkYXRlIGNvbnRlbnQgZGVwZW5kaW5nIG9uICRk YXRhZGlyLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIGF1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFu Z2VkICh2b2lkKQotQEAgLTY5OSw3ICs2OTksNyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KHN0cnVjdCBvYmpmaWxlCi0gICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0 ciwgdmVjLCBpeCwgZGlyKTsgKytpeCkKLSAJewotIAkgIGRlYnVnZmlsZSA9IHhzdHJkdXAgKGRp cik7Ci0tCSAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRlYnVnZmlsZSwgIiRkZGlyIiwg Z2RiX2RhdGFkaXIpOwotKwkgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZWJ1Z2ZpbGUs ICIkZGF0YWRpciIsIGdkYl9kYXRhZGlyKTsKLSAJICBkZWJ1Z2ZpbGUgPSB4cmVhbGxvYyAoZGVi dWdmaWxlLCAoc3RybGVuIChkZWJ1Z2ZpbGUpCi0gCQkJCQkgICAgKyBzdHJsZW4gKGZpbGVuYW1l KSArIDEpKTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEy LTA1LTE0IDE0OjI0OjE1LjExMjQ5MDI4NiArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjI0OjM4LjU2NDQ0NDA2MSArMDIwMAotQEAgLTE2 NjksMTEgKzE2NjksMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcnBtICAgICAg ICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25v LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0t d2l0aC1hdXRvLWxvYWQtZGlyPVBBVEgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVj dG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgdXNlICckZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeSBbJGRkaXIv YXV0by1sb2FkXQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3 aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIFskZGF0YWRpci9hdXRvLWxvYWRdCi0gICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1Q QVRICi0tICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQg YXV0by1sb2FkZWQgZmlsZXMsIHVzZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgJGRkaXIg Zm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBk aXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFstLXdpdGgtYXV0by1sb2FkLWRpcl0KLSAgIC0td2l0aG91dC1hdXRvLWxv YWQtc2FmZS1wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3Qg YXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCi1AQCAtODQ5NSwxMCArODQ5NCwxMCBAQCAkYXNf ZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvCi0gaWYgdGVzdCAiJHt3aXRoX2F1 dG9fbG9hZF9kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xv YWRfZGlyOwotIGVsc2UKLS0gIHdpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJwot KyAgd2l0aF9hdXRvX2xvYWRfZGlyPSckZGF0YWRpci9hdXRvLWxvYWQnCi0gZmkKLSAKLS1lc2Nh cGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvWyRdZGRpclw+L1xcXFxc XFxcXFxcXCYvZydgCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2Vk ICdzL1skXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotIAotICAgdGVzdCAieCRwcmVmaXgi ID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0gICB0ZXN0ICJ4JGV4ZWNf cHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCi1AQCAtODUyNSw3ICs4 NTI0LDcgQEAgZWxzZQotICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xv YWRfZGlyIgotIGZpCi0gCi0tZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoIHwgc2VkICdzL1skXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotK2VzY2FwZV9kaXI9YGVj aG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1kYXRhZGlyXD4vXFxcXFxc XFxcXFxcJi9nJ2AKLSAKLSAgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFj X2RlZmF1bHRfcHJlZml4IgotICAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVj X3ByZWZpeD0nJHtwcmVmaXh9JwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZp Z3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29u ZmlndXJlLmFjCTIwMTItMDUtMTQgMTQ6MjQ6MTUuMTEyNDkwMjg2ICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMTQgMTQ6MjQ6MjAuMjI4NDgw MjAyICswMjAwCi1AQCAtMzQyLDkgKzM0Miw5IEBAIGZpCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3Ig ZGVmYXVsdCBhdXRvLWxvYWQgZGlyZWN0b3J5XSkKLSBBQ19BUkdfV0lUSChhdXRvLWxvYWQtZGly LAotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwKLS0gIFtkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywgdXNlICckZGRp cicgZm9yIC1kYXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pLCwKLS0gIFt3 aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQotLWVzY2FwZV9kaXI9YGVjaG8g JHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cn YAotKyAgW2RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRz IEA8OkAkZGF0YWRpci9hdXRvLWxvYWRAOj5AXSksLAotKyAgW3dpdGhfYXV0b19sb2FkX2Rpcj0n JGRhdGFkaXIvYXV0by1sb2FkJ10pCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRf ZGlyIHwgc2VkICdzL1tbJF1dZGF0YWRpclw+L1xcXFxcXFxcXFxcXCYvZydgCi0gQUNfREVGSU5F X0RJUihBVVRPX0xPQURfRElSLCBlc2NhcGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgZnJv bSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuXSkKLSBBQ19NU0dfUkVTVUxUKFsk d2l0aF9hdXRvX2xvYWRfZGlyXSkKLUBAIC0zNTIsMTQgKzM1MiwxNCBAQCBBQ19NU0dfUkVTVUxU KFskd2l0aF9hdXRvX2xvYWRfZGlyXSkKLSBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1 dG8tbG9hZCBzYWZlLXBhdGhdKQotIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCi0g QVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLAotLSAgW2Rp cmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICRkZGlyIGZvciAt LXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpALS13aXRoLWF1dG8tbG9hZC1kaXJAOj5AXSkKLSsg IFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMgQDw6QC0td2l0aC1h dXRvLWxvYWQtZGlyQDo+QF0pCi0gQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQt c2FmZS1wYXRoXSwKLSAgICAgICAgICAgICAgICBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVk IGZpbGVzIGxvY2F0aW9uc10pLAotICAgICBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aCIgPSAibm8iOyB0aGVuCi0gICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0g ICAgICBmaV0sCi0gW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2Rp ciJdKQotLWVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAn cy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bWyRdXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwm L2cnYAotIEFDX0RFRklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFUSCwgZXNjYXBlX2RpciwKLSAJ ICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy5dKQotIEFD X01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6MjQ6MTUu MTEzNDkwMjg0ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDUtMTQgMTQ6MjQ6MjAuMjM0NDgwMTkwICswMjAwCi1AQCAtMjA4MDcsOSArMjA4 MDcsOSBAQCBsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0Ci0gICAgICAg ICAgICAgICAgIGlzIG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhv biBzY3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3 aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlzICRkZGly L2F1dG8tbG9hZC4KLSsgICAgICAgICAgICBpcyAkZGF0YWRpci9hdXRvLWxvYWQuCi0gc2NyaXB0 cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRv LWxvYWRlZCBzY3JpcHRzCi0tICAgICAgICAgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQu Ci0rICAgICAgICAgICAgICAgICAgICBpcyAkZGF0YWRpci9hdXRvLWxvYWQuCi0gQGVuZCBzbWFs bGV4YW1wbGUKLSAKLSBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQotQEAgLTIxMDI1LDkgKzIxMDI1 LDkgQEAgZ2V0IGxvYWRlZDoKLSAkIC4vZ2RiIC1xIC4vZ2RiCi0gUmVhZGluZyBzeW1ib2xzIGZy b20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KLSB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2Vy L2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCi0tICAgICAgICAgZGVjbGlu ZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQi LgotKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0 byAiJGRhdGFkaXIvYXV0by1sb2FkIi4KLSB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9n ZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KLS0gICAgICAgICBkZWNsaW5lZCBieSB5 b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9hZCIuCi0rICAg ICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGF0 YWRpci9hdXRvLWxvYWQiLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1 c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6 Ci1AQCAtMjEwNjAsNyArMjEwNjAsNyBAQCBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGlu IHVzZS4KLSBAZW5kIHRhYmxlCi0gCi0gVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byB3aGF0IEBj b2Rley0td2l0aC1hdXRvLWxvYWQtZGlyfSBoYXMgYmVlbiBjb25maWd1cmVkCi0tdG8gKEBweHJl Znt3aXRoLWF1dG8tbG9hZC1kaXJ9KS4gIEBmaWxleyRkZGlyfSBzdWJzdGl0dWF0aW9uIGFwcGxp ZXMgdGhlIHNhbWUKLSt0byAoQHB4cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRh dGFkaXJ9IHN1YnN0aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZQotIGFzIGZvciBAeHJlZntzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLSBUaGUgZGVmYXVsdCBAY29kZXtzZXQKLSBh dXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVl e0dEQk59IGNvbmZpZ3VyYXRpb24KLUBAIC0yNTE4MSwxNCArMjUxODEsMTQgQEAgRWFjaCBlbnRy eSBoZXJlIG5lZWRzIHRvIGJlIGNvdmVyZWQgYWxzbwotIEBjb2Rle3NldCBhdXRvLWxvYWQgc2Fm ZS1wYXRofSAoQHB4cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSkuCi0gCi0gQGFuY2hvcnt3 aXRoLWF1dG8tbG9hZC1kaXJ9Ci0tVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXskZGRp ci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rVGhpcyB2YXJpYWJsZSBkZWZh dWx0cyB0byBAZmlsZXskZGF0YWRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0 Ci0gYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2 YWx1ZXtHREJOfSBjb25maWd1cmF0aW9uCi0gb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9h ZC1kaXJ9LgotIAotLUFueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFj ZWQgYnkgQHZhcntkYXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKLS1kZXRlcm1pbmVkIGF0IEB2YWx1 ZXtHREJOfSBzdGFydHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3Qg YmUKLS1iZSBwbGFjZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUg b3IgZGVsaW1pdGVkIGJ5IEBmaWxley99IG9yCi0tQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRv cnMsIGRlcGVuZGluZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KLStBbnkgdXNlZCBzdHJpbmcgQGZp bGV7JGRhdGFkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdo aWNoCi0raXMgZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEg RmlsZXN9KS4gIEBmaWxleyRkYXRhZGlyfQotK211c3QgYmUgcGxhY2VkIGFzIGEgZGlyZWN0b3J5 IGNvbXBvbmVudCAtLS0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieQotK0BmaWxley99IG9y IEBmaWxle1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxh dGZvcm0uCi0gCi0gVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBwYXRoIHNlcGFyYXRvciAo QHNhbXB7On0gb24gR05VIGFuZCBVbml4Ci0gc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93 cyBhbmQgTVMtRE9TKSB0byBzZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTI4b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yOG9mMjgucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2Nzk3YWYuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTI4b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5MyArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNS9tc2cwMDQ3Ny5o dG1sCi1TdWJqZWN0OiBbcGF0Y2grZG9jIDIvMl0gYXV0by1sb2FkOiBGaXggZGVmYXVsdCAvdXNy L2xpYi9kZWJ1Zy8gbG9hZGluZwotCi1IaSwKLQotd2l0aCByZWNlbnQgc2VjdXJpdHkgZml4IHRv IHVzZSBvbmx5ICRkYXRhZGlyL2F1dG8tbG9hZC8gZGlyZWN0b3J5IGluc3RlYWQgb2YKLWFueXRo aW5nIHVuZGVyICRwcmVmaXgvICh3aGljaCBjb250YWlucyBpbnNlY3VyZSAkcHJlZml4L3RtcC8g ZXRjLikgaXQKLWludHJvZHVjZWQgYSByZWdyZXNzaW9uIHRoYXQgR0RCJ3MgZGVmYXVsdCAtLXdp dGgtc2VwYXJhdGUtZGVidWctZGlyIHdvdWxkIG5vCi1sb25nZXIgYmUgc2VjdXJlOyB3aGljaCBJ TU8gY2FuIGJlIGFzc3VtZWQgYXMgc2VjdXJlLiAgVGhpcyBpcyBiZWNhdXNlCi1JIGZvcmdvdCB0 byBtb3ZlIGludG8gJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknIChhbmQgJ3NhZmUt cGF0aCcpIGFsc28KLWRlYnVnLWZpbGUtZGlyZXRvcnk7IGJlc2lkZXMgJGRhdGFkaXIvYXV0by1s b2FkIHdoaWNoIEkgaGF2ZSBtb3ZlZCB0aGVyZS4KLQotVG8gYWxzbyBzb2x2ZSB0aGUgcHJvYmxl bSB3aXRoIHJlbG9jYXRhYmlsaXR5IGFuZCBtYWtlIGl0IGNvbmZpZ3VyYWJsZSBJIGp1c3QKLWlu dHJvZHVjZSBiZXNpZGVzICRkYXRhZGlyIG5vdyBhbHNvICRkZWJ1Z2RpciBhbmQgYWRkIGl0IGlu dG8KLWRlZmF1bHQgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknLiAgSXQgYWxzbyBJ TU8gbWFrZXMgaXQgbW9yZSBjbGVhcgotd2hhdCBldmVyeXRoaW5nIGlzIGJlaW5nIGF1dG8tbG9h ZGVkIGluOgotCi0oZ2RiKSBzaG93IGF1dG8tbG9hZCAKLWdkYi1zY3JpcHRzOiAgQXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KLWxpYnRo cmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIg aXMgb24uCi1sb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBm cm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgotcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRp bmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi1zYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9y aWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMgaXMgJGRlYnVnZGly OiRkYXRhZGlyL2F1dG8tbG9hZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eCi1zY3JpcHRzLWRpcmVjdG9yeTogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJv bSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMgaXMgJGRlYnVnZGlyOiRkYXRhZGly L2F1dG8tbG9hZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVk b3JhMTctbGludXgtZ251LgotCi1JIGZpbmQgaXQgbW9yZSBqdXN0IGEgYnVnZml4IG9mIGEgcmVn cmVzc2lvbiBieSBteXNlbGYuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMi0wNS0x MiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBORVdT ICgtLXdpdGgtYXV0by1sb2FkLWRpcik6IFByZXBlbmQgJGRlYnVnZGlyIHRvIHRoZSBkZWZhdWx0 IHBhdGguCi0JRGVzY3JpYmUgaXQuCi0JKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX2V4cGFuZF9k aXJfdmFycyk6IE5ldyBmdW5jdGlvbi4KLQkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRl KTogVXNlIGl0LCByZW1vdmUgdGhlCi0Jc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBjYWxsIHRo YW5rcyB0byBpdC4KLQkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogUmVtb3ZlIHRoZSBkZWJ1 Z19maWxlX2RpcmVjdG9yeSBwcm9jZXNzaW5nLgotCVVzZSBhdXRvX2xvYWRfZXhwYW5kX2Rpcl92 YXJzLCByZW1vdmUgdGhlIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQKLQljYWxsIHRoYW5rcyB0 byBpdC4KLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZ3VyZS5hYyAoLS13aXRo LWF1dG8tbG9hZC1kaXIpOiBQcmVwZW5kICRkZWJ1Z2RpciB0byB0aGUgZGVmYXVsdAotCXBhdGgu ICBFc2NhcGUgJCBhbHNvIGZvciAkZGVidWdkaXIuCi0JKC0td2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoKTogRXNjYXBlICQgYWxzbyBmb3IgJGRlYnVnZGlyLgotCSogdXRpbHMuYyAoc3Vic3RpdHV0 ZV9wYXRoX2NvbXBvbmVudCk6IEFjY2VwdCBhbHNvIERJUk5BTUVfU0VQQVJBVE9SLgotCi1nZGIv ZG9jLwotMjAxMi0wNS0xMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCi0JKiBnZGIudGV4aW5mbyAoU2VwYXJhdGUgRGVidWcgRmlsZXMpOiBOZXcgYW5jaG9y IGRlYnVnLWZpbGUtZGlyZWN0b3J5LgotCU1lbnRpb24gYWxzbyAtLXdpdGgtc2VwYXJhdGUtZGVi dWctZGlyLgotCShBdXRvLWxvYWRpbmcpOiBQcmVwZW5kICRkZWJ1Z2RpciBpbiB0aGUgc2FtcGxl IG91dHB1dC4KLQkoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IExpa2V3aXNlLiAgTWVudGlvbiBh bHNvICRkZWJ1Z2RpciBmb3IgdGhlCi0JYXV0by1sb2FkIHNhZmUtcGF0aCB2YXJpYWJsZS4KLQko b2JqZmlsZS1nZGIucHkgZmlsZSk6IFJlbW92ZSB0aGUgZXh0cmEgZGVidWctZmlsZS1kaXJlY3Rv cnkgcGFyYWdyYXBoLgotCU1lbnRpb24gYWxzbyAkZGVidWdkaXIgZm9yICdzZXQgYXV0by1sb2Fk IHNjcmlwdHMtZGlyZWN0b3J5Jy4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05F V1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAx Mi0wNS0xNCAxNDoyNDoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MjQ6NDkuNTEwNDIyNDg1ICswMjAwCi1AQCAtMzE3LDgg KzMxNywxMCBAQCBzaG93IHRyYWNlLXN0b3Atbm90ZXMKLSAKLSAtLXdpdGgtYXV0by1sb2FkLWRp cgotICAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzY3Jp cHRzLWRpcmVjdG9yeScKLS0gIHNldHRpbmcgYWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRhdGFk aXIvYXV0by1sb2FkJywgJGRhdGFkaXIKLS0gIHJlcHJlc2VudGluZyBHREIncyBkYXRhIGRpcmVj dG9yeSAoYXZhaWxhYmxlIHZpYSBzaG93IGRhdGEtZGlyZWN0b3J5KS4KLSsgIHNldHRpbmcgYWJv dmUuICBJdCBkZWZhdWx0cyB0byAnJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCcsCi0rICAk ZGVidWdkaXIgcmVwcmVzZW50aW5nIGdsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3RvcmllcyAo YXZhaWxhYmxlCi0rICB2aWEgJ3Nob3cgZGVidWctZmlsZS1kaXJlY3RvcnknKSBhbmQgJGRhdGFk aXIgcmVwcmVzZW50aW5nIEdEQidzIGRhdGEKLSsgIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSAn c2hvdyBkYXRhLWRpcmVjdG9yeScpLgotIAotIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0g ICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCcgc2V0dGluZwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwky MDEyLTA1LTE0IDE0OjI0OjIwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMTQgMTQ6MjQ6NDkuNTExNDIyNDgzICswMjAwCi1A QCAtMTQ3LDYgKzE0NywzMCBAQCBzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKLSAg ICBjb3VudGVycGFydC4gICovCi0gc3RhdGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYzsKLSAKLSsvKiBFeHBhbmQgJGRhdGFkaXIgYW5kICRkZWJ1Z2RpciBpbiBTVFJJ TkcgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZgotKyAgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25l bnQuICBSZXR1cm4gdmVjdG9yIGZyb20gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLAotKyAgIHRo aXMgdmVjdG9yIG11c3QgYmUgZnJlZWQgYnkgZnJlZV9jaGFyX3B0cl92ZWMgYnkgdGhlIGNhbGxl ci4gICovCi0rCi0rc3RhdGljIFZFQyAoY2hhcl9wdHIpICoKLSthdXRvX2xvYWRfZXhwYW5kX2Rp cl92YXJzIChjb25zdCBjaGFyICpzdHJpbmcpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKmRpcl92 ZWM7Ci0rICBjaGFyICpzOwotKwotKyAgcyA9IHhzdHJkdXAgKHN0cmluZyk7Ci0rICBzdWJzdGl0 dXRlX3BhdGhfY29tcG9uZW50ICgmcywgIiRkYXRhZGlyIiwgZ2RiX2RhdGFkaXIpOwotKyAgc3Vi c3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJnMsICIkZGVidWdkaXIiLCBkZWJ1Z19maWxlX2RpcmVj dG9yeSk7Ci0rCi0rICBpZiAoZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAocywgc3RyaW5nKSAh PSAwKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJXygiYXV0by1s b2FkOiBFeHBhbmRlZCAkLXZhcmlhYmxlcyB0byBcIiVzXCIuXG4iKSwgcyk7Ci0rCi0rICBkaXJf dmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChzKTsKLSsgIHhmcmVlKHMpOwotKwotKyAg cmV0dXJuIGRpcl92ZWM7Ci0rfQotKwotIC8qIFVwZGF0ZSBhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YyBmcm9tIGN1cnJlbnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICovCi0gCi0gc3RhdGljIHZvaWQK LUBAIC0xNjMsNyArMTg3LDcgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lk KQotIAotICAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSAK LS0gIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChh dXRvX2xvYWRfc2FmZV9wYXRoKTsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gYXV0b19s b2FkX2V4cGFuZF9kaXJfdmFycyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0gICBsZW4gPSBWRUNf bGVuZ3RoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOwotIAotICAgLyogQXBw bHkgdGlsZGVfZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FGRV9Q QVRIX1ZFQwotQEAgLTE3MSwxNiArMTk1LDEwIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3Vw ZGF0ZSAodm9pZCkKLSAgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKLSAgICAgewotICAg ICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjLCBpeCk7Ci0tICAgICAgY2hhciAqZGRpcl9zdWJzdCwgKmV4cGFuZGVkLCAqcmVhbF9wYXRo OwotLQotLSAgICAgIGRkaXJfc3Vic3QgPSB4c3RyZHVwIChkaXIpOwotLSAgICAgIHN1YnN0aXR1 dGVfcGF0aF9jb21wb25lbnQgKCZkZGlyX3N1YnN0LCAiJGRhdGFkaXIiLCBnZGJfZGF0YWRpcik7 Ci0tICAgICAgZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRkaXJfc3Vic3QpOwotLSAgICAgIHhm cmVlIChkZGlyX3N1YnN0KTsKLS0gICAgICByZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFu ZGVkKTsKLSsgICAgICBjaGFyICpleHBhbmRlZCA9IHRpbGRlX2V4cGFuZCAoZGlyKTsKLSsgICAg ICBjaGFyICpyZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKLSAKLS0gICAgICAv KiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgYSB2YWxpZCBwYXRoICh0aGVy ZWZvcmUKLS0JICRkYXRhZGlyLWV4cGFuZGVkIGFuZCB0aWxkZS1leHBhbmRlZCkuICAqLwotKyAg ICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQt ZWQuICAqLwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci0gCi0gICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLUBA IC02NDUsNDIgKzY2Myw2IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZp bGUKLSAKLSAgIGlmICghaW5wdXQpCi0gICAgIHsKLS0gICAgICBjaGFyICpkZWJ1Z2RpcjsKLS0g ICAgICBWRUMgKGNoYXJfcHRyKSAqZGVidWdkaXJfdmVjOwotLSAgICAgIGludCBpeDsKLS0KLS0g ICAgICBkZWJ1Z2Rpcl92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGRlYnVnX2ZpbGVf ZGlyZWN0b3J5KTsKLS0gICAgICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKGRlYnVn ZGlyX3ZlYyk7Ci0tCi0tICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLS0JZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotLQkJCSAgICBfKCJhdXRvLWxvYWQ6IFNlYXJjaGluZyAnc2V0 IGRlYnVnLWZpbGUtZGlyZWN0b3J5JyAiCi0tCQkJICAgICAgInBhdGggXCIlc1wiLlxuIiksCi0t CQkJICAgIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKLS0KLS0gICAgICBmb3IgKGl4ID0gMDsgVkVD X2l0ZXJhdGUgKGNoYXJfcHRyLCBkZWJ1Z2Rpcl92ZWMsIGl4LCBkZWJ1Z2Rpcik7ICsraXgpCi0t CXsKLS0JICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBp bmZvIGRpcmVjdG9yeS4gICovCi0tCSAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChkZWJ1 Z2RpcikgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpOwotLQkgIHN0cmNweSAoZGVidWdmaWxlLCBk ZWJ1Z2Rpcik7Ci0tCi0tCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5l ZWQgYSAiLyIgaGVyZS4gICovCi0tCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLS0K LS0JICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotLQkgIGlucHV0ID0gZm9wZW4g KGRlYnVnZmlsZSwgInIiKTsKLS0JICBpZiAoZGVidWdfYXV0b19sb2FkKQotLQkgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlICIK LS0JCQkJCSAgICAgICJcIiVzXCIgJXMuXG4iKSwKLS0JCQkJZGVidWdmaWxlLAotLQkJCQlpbnB1 dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0tCSAgaWYgKGlucHV0ICE9 IE5VTEwpCi0tCSAgICBicmVhazsKLS0JfQotLSAgICB9Ci0tCi0tICBpZiAoIWlucHV0KQotLSAg ICB7Ci0gICAgICAgVkVDIChjaGFyX3B0cikgKnZlYzsKLSAgICAgICBpbnQgaXg7Ci0gICAgICAg Y2hhciAqZGlyOwotQEAgLTY4OCw3ICs2NzAsNyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KHN0cnVjdCBvYmpmaWxlCi0gICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1 YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCi0gCSBkaXJlY3RvcnkuICAqLwotIAotLSAgICAgIHZl YyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX2Rpcik7Ci0rICAgICAgdmVj ID0gYXV0b19sb2FkX2V4cGFuZF9kaXJfdmFycyAoYXV0b19sb2FkX2Rpcik7Ci0gICAgICAgbWFr ZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjICh2ZWMpOwotIAotICAgICAgIGlmIChkZWJ1Z19h dXRvX2xvYWQpCi1AQCAtNjk4LDEwICs2ODAsOCBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KHN0cnVjdCBvYmpmaWxlCi0gCi0gICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFy X3B0ciwgdmVjLCBpeCwgZGlyKTsgKytpeCkKLSAJewotLQkgIGRlYnVnZmlsZSA9IHhzdHJkdXAg KGRpcik7Ci0tCSAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRlYnVnZmlsZSwgIiRkYXRh ZGlyIiwgZ2RiX2RhdGFkaXIpOwotLQkgIGRlYnVnZmlsZSA9IHhyZWFsbG9jIChkZWJ1Z2ZpbGUs IChzdHJsZW4gKGRlYnVnZmlsZSkKLS0JCQkJCSAgICArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSkp OwotKwkgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGlyKSArIHN0cmxlbiAoZmlsZW5h bWUpICsgMSk7Ci0rCSAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRpcik7Ci0gCi0gCSAgLyogRklMRU5B TUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0gCSAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjI0OjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjI0OjU1Ljg1NjQwOTk3 NyArMDIwMAotQEAgLTE2NzAsNyArMTY3MCw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1hdXRv LWxvYWQtZGlyPVBBVEgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGZy b20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICBbJGRhdGFkaXIvYXV0by1sb2FkXQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg WyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWRdCi0gICAtLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aD1QQVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdp dGgtYXV0by1sb2FkLWRpcl0KLUBAIC04NDk0LDEwICs4NDk0LDEwIEBAICRhc19lY2hvX24gImNo ZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG8KLSBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX2Rp citzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9kaXI7Ci0g ZWxzZQotLSAgd2l0aF9hdXRvX2xvYWRfZGlyPSckZGF0YWRpci9hdXRvLWxvYWQnCi0rICB3aXRo X2F1dG9fbG9hZF9kaXI9JyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQnCi0gZmkKLSAKLS1l c2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvWyRdZGF0YWRpclw+ L1xcXFxcXFxcXFxcXCYvZydgCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGly IHwgc2VkICdzL1skXVwoZGF0YWRpclx8ZGVidWdkaXJcKVw+L1xcXFxcXFxcXFxcXCYvZydgCi0g Ci0gICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZp eCIKLSAgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJl Zml4fScKLUBAIC04NTI0LDcgKzg1MjQsNyBAQCBlbHNlCi0gICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9IiR3aXRoX2F1dG9fbG9hZF9kaXIiCi0gZmkKLSAKLS1lc2NhcGVfZGlyPWBlY2hvICR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvWyRdZGF0YWRpclw+L1xcXFxcXFxcXFxc XCYvZydgCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2Vk ICdzL1skXVwoZGF0YWRpclx8ZGVidWdkaXJcKVw+L1xcXFxcXFxcXFxcXCYvZydgCi0gCi0gICB0 ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSAg IHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0 IDE0OjI0OjIwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjI0OjQ5LjUxNTQyMjQ3NyArMDIwMAotQEAgLTM0Miw5 ICszNDIsOSBAQCBmaQotIEFDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIGRp cmVjdG9yeV0pCi0gQUNfQVJHX1dJVEgoYXV0by1sb2FkLWRpciwKLSBBU19IRUxQX1NUUklORyhb LS13aXRoLWF1dG8tbG9hZC1kaXI9UEFUSF0sCi0tICBbZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0 byBsb2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMgQDw6QCRkYXRhZGlyL2F1dG8tbG9hZEA6PkBdKSws Ci0tICBbd2l0aF9hdXRvX2xvYWRfZGlyPSckZGF0YWRpci9hdXRvLWxvYWQnXSkKLS1lc2NhcGVf ZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvW1skXV1kYXRhZGlyXD4vXFxc XFxcXFxcXFxcJi9nJ2AKLSsgIFtkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1s b2FkZWQgc2NyaXB0cyBAPDpAJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZEA6PkBdKSwsCi0r ICBbd2l0aF9hdXRvX2xvYWRfZGlyPSckZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkJ10pCi0r ZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dXChkYXRh ZGlyXHxkZWJ1Z2RpclwpXD4vXFxcXFxcXFxcXFxcJi9nJ2AKLSBBQ19ERUZJTkVfRElSKEFVVE9f TE9BRF9ESVIsIGVzY2FwZV9kaXIsCi0gCSAgICAgIFtEaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRv IGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy5dKQotIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9f bG9hZF9kaXJdKQotQEAgLTM1OSw3ICszNTksNyBAQCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0 LWF1dG8tbG9hZC1zYWZlCi0gICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gICAg ICBmaV0sCi0gW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciJd KQotLWVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9b WyRdXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bWyRdXVwoZGF0YWRpclx8ZGVidWdkaXJcKVw+ L1xcXFxcXFxcXFxcXCYvZydgCi0gQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBl c2NhcGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVk IGZpbGVzLl0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0w NS0xNCAxNDoyNDoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyNDo0OS41MjA0MjI0NjcgKzAyMDAKLUBA IC0xNjAyOCw4ICsxNjAyOCwxMSBAQCBkZWJ1ZyBpbmZvcm1hdGlvbiBmaWxlcywgaW4gdGhlIGlu ZGljYXRlCi0gQGZpbGV7L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9scy5kZWJ1Z30uCi0gQGVuZCBp dGVtaXplCi0gCi0tWW91IGNhbiBzZXQgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3Rv cmllcywgYW5kIHZpZXcgdGhlCi0tbGlzdCBAdmFsdWV7R0RCTn0gaXMgY3VycmVudGx5IHVzaW5n LgotK0BhbmNob3J7ZGVidWctZmlsZS1kaXJlY3Rvcnl9Ci0rR2xvYmFsIGRlYnVnZ2luZyBpbmZv IGRpcmVjdG9yaWVzIGRlZmF1bHQgdG8gd2hhdCBpcyBzZXQgYnkgQHZhbHVle0dEQk59Ci0rY29u ZmlndXJlIG9wdGlvbiBAb3B0aW9uey0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXJ9LiAgRHVyaW5n IEB2YWx1ZXtHREJOfSBydW4KLSt5b3UgY2FuIGFsc28gc2V0IHRoZSBnbG9iYWwgZGVidWdnaW5n IGluZm8gZGlyZWN0b3JpZXMsIGFuZCB2aWV3IHRoZSBsaXN0Ci0rQHZhbHVle0dEQk59IGlzIGN1 cnJlbnRseSB1c2luZy4KLSAKLSBAdGFibGUgQGNvZGUKLSAKLUBAIC0yMDgwNyw5ICsyMDgxMCw5 IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQKLSAgICAgICAgICAg ICAgICAgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdHMgaXMgb24uCi0gc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0tICAgICAgICAgICAgaXMgJGRhdGFkaXIv YXV0by1sb2FkLgotKyAgICAgICAgICAgIGlzICRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQu Ci0gc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8g bG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCi0tICAgICAgICAgICAgICAgICAgICBpcyAkZGF0YWRp ci9hdXRvLWxvYWQuCi0rICAgICAgICAgICAgICAgICAgICBpcyAkZGVidWdkaXI6JGRhdGFkaXIv YXV0by1sb2FkLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9h ZH0KLUBAIC0yMTAyNSw5ICsyMTAyOCwxMSBAQCBnZXQgbG9hZGVkOgotICQgLi9nZGIgLXEgLi9n ZGIKLSBSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgotIHdh cm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFz IGJlZW4KLS0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBz ZXQgdG8gIiRkYXRhZGlyL2F1dG8tbG9hZCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBg YXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0Ci0rICAgICAgICAgdG8gIiRkZWJ1Z2RpcjokZGF0YWRp ci9hdXRvLWxvYWQiLgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHki IGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8t bG9hZCBzYWZlLXBhdGgnIHNldCB0byAiJGRhdGFkaXIvYXV0by1sb2FkIi4KLSsgICAgICAgICBk ZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQKLSsgICAgICAgICB0byAi JGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCIuCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBU aGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxv d2luZyBjb21tYW5kczoKLUBAIC0yMTA2MCwxMSArMjEwNjUsMTAgQEAgaG9zdCBwbGF0Zm9ybSBw YXRoIHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotIFRoaXMgdmFyaWFibGUgZGVm YXVsdHMgdG8gd2hhdCBAY29kZXstLXdpdGgtYXV0by1sb2FkLWRpcn0gaGFzIGJlZW4gY29uZmln dXJlZAotLXRvIChAcHhyZWZ7d2l0aC1hdXRvLWxvYWQtZGlyfSkuICBAZmlsZXskZGF0YWRpcn0g c3Vic3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBzYW1lCi0tYXMgZm9yIEB4cmVme3NldCBhdXRvLWxv YWQgc2NyaXB0cy1kaXJlY3Rvcnl9LgotLVRoZSBkZWZhdWx0IEBjb2Rle3NldAotLWF1dG8tbG9h ZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0g Y29uZmlndXJhdGlvbgotLW9wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRo fS4KLSt0byAoQHB4cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRlYnVnZGlyfSBh bmQgQGZpbGV7JGRhdGFkaXJ9Ci0rc3Vic3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBzYW1lIGFzIGZv ciBAeHJlZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLStUaGUgZGVmYXVsdCBA Y29kZXtzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVu IGJ5Ci0rQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEBvcHRpb257LS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGh9LgotIAotIFNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAZmlsZXsv fSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24sCi0gY29ycmVzcG9uZGluZyBAdmFs dWV7R0RCTn0gY29uZmlndXJhdGlvbiBvcHRpb24gaXMKLUBAIC0yNTE1OCwxMiArMjUxNjIsNyBA QCB0aGF0IHRoZSBmaWxlIG5hbWUgaXMgYWJzb2x1dGUsIGZvbGxvd2luCi0gQGNvZGV7Ln0gYW5k IEBjb2Rley4ufSBjb21wb25lbnRzLiAgSWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgaXMKLSByZWFk YWJsZSwgQHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQgYXMgYSBQeXRob24gc2NyaXB0Lgot IAotLUlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIGlmIHRoZSBwYXJhbWV0ZXIKLS1A Y29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJhdGUgRGVidWcg RmlsZXN9KSwKLS10aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yIEB2YXJ7c2NyaXB0LW5h bWV9IGluIGFsbCBvZiB0aGUKLS1kaXJlY3RvcmllcyBtZW50aW9uZWQgaW4gdGhlIHZhbHVlIG9m IEBjb2Rle2RlYnVnLWZpbGUtZGlyZWN0b3J5fS4KLS0KLS1GaW5hbGx5LCBpZiB0aGlzIGZpbGUg ZG9lcyBub3QgZXhpc3QsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IKLStJZiB0aGlz IGZpbGUgZG9lcyBub3QgZXhpc3QsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IKLSBA dmFye3NjcmlwdC1uYW1lfSBmaWxlIGluIGFsbCBvZiB0aGUgZGlyZWN0b3JpZXMgYXMgc3BlY2lm aWVkIGJlbG93LgotIAotIE5vdGUgdGhhdCBsb2FkaW5nIG9mIHRoaXMgc2NyaXB0IGZpbGUgYWxz byByZXF1aXJlcyBhY2NvcmRpbmdseSBjb25maWd1cmVkCi1AQCAtMjUxODEsMTIgKzI1MTgwLDE0 IEBAIEVhY2ggZW50cnkgaGVyZSBuZWVkcyB0byBiZSBjb3ZlcmVkIGFsc28KLSBAY29kZXtzZXQg YXV0by1sb2FkIHNhZmUtcGF0aH0gKEBweHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0pLgot IAotIEBhbmNob3J7d2l0aC1hdXRvLWxvYWQtZGlyfQotLVRoaXMgdmFyaWFibGUgZGVmYXVsdHMg dG8gQGZpbGV7JGRhdGFkaXIvYXV0by1sb2FkfS4gIFRoZSBkZWZhdWx0IEBjb2Rle3NldAotLWF1 dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7 R0RCTn0gY29uZmlndXJhdGlvbgotLW9wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtZGly fS4KLS0KLS1BbnkgdXNlZCBzdHJpbmcgQGZpbGV7JGRhdGFkaXJ9IHdpbGwgZ2V0IHJlcGxhY2Vk IGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdoaWNoCi0taXMgZGV0ZXJtaW5lZCBhdCBAdmFsdWV7 R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEgRmlsZXN9KS4gIEBmaWxleyRkYXRhZGlyfQotK1Ro aXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9h ZH0uICBUaGUgZGVmYXVsdAotK0Bjb2Rle3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBj YW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59Ci0rY29uZmlndXJhdGlvbiBvcHRp b24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLWRpcn0uCi0rCi0rQW55IHVzZWQgc3RyaW5nIEBm aWxleyRkZWJ1Z2Rpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkZWJ1Zy1maWxlLWRpcmVj dG9yeX0KLSt2YWx1ZSAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZpbGVzfSkgYW5kIGFueSB1c2Vk IHN0cmluZyBAZmlsZXskZGF0YWRpcn0gd2lsbAotK2dldCByZXBsYWNlZCBieSBAdmFye2RhdGEt ZGlyZWN0b3J5fSB3aGljaCBpcyBkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwCi0r KEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGVidWdkaXJ9IGFuZCBAZmlsZXskZGF0YWRp cn0KLSBtdXN0IGJlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBh bG9uZSBvciBkZWxpbWl0ZWQgYnkKLSBAZmlsZXsvfSBvciBAZmlsZXtcfSBkaXJlY3Rvcnkgc2Vw YXJhdG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgotIAotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMi0wNS0xNCAxNDoyNDoxMS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCTIwMTItMDUtMTQgMTQ6MjQ6 NDkuNTIxNDIyNDY1ICswMjAwCi1AQCAtMzkyNyw4ICszOTI3LDggQEAgZGlybmFtZXNfdG9fY2hh cl9wdHJfdmVjIChjb25zdCBjaGFyICpkaQotIAotIC8qIFN1YnN0aXR1dGUgYWxsIG9jY3VyZW5j ZXMgb2Ygc3RyaW5nIEZST00gYnkgc3RyaW5nIFRPIGluICpTVFJJTkdQLiAgKlNUUklOR1AKLSAg ICBtdXN0IGNvbWUgZnJvbSB4cmVhbGxvYy1jb21wYXRpYmxlIGFsbG9jYXRvciBhbmQgaXQgbWF5 IGJlIHVwZGF0ZWQuICBGUk9NCi0tICAgbmVlZHMgdG8gYmUgZGVsaW1pdGVkIGJ5IElTX0RJUl9T RVBBUkFUT1IgKG9yIGJlIGxvY2F0ZWQgYXQgdGhlIHN0YXJ0IG9yCi0tICAgZW5kIG9mICpTVFJJ TkdQLiAgKi8KLSsgICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiBv ciBESVJOQU1FX1NFUEFSQVRPUiAob3IgYmUKLSsgICBsb2NhdGVkIGF0IHRoZSBzdGFydCBvciBl bmQgb2YgKlNUUklOR1AuICAqLwotIAotIHZvaWQKLSBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50 IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pCi1AQCAt Mzk0Myw4ICszOTQzLDEwIEBAIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJp bmcKLSAgICAgICBpZiAocyA9PSBOVUxMKQotIAlicmVhazsKLSAKLS0gICAgICBpZiAoKHMgPT0g c3RyaW5nIHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbLTFdKSkKLS0gICAgICAgICAgJiYgKHNbZnJv bV9sZW5dID09ICdcMCcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pKSkKLSsgICAg ICBpZiAoKHMgPT0gc3RyaW5nIHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbLTFdKQotKwkgICB8fCBz Wy0xXSA9PSBESVJOQU1FX1NFUEFSQVRPUikKLSsgICAgICAgICAgJiYgKHNbZnJvbV9sZW5dID09 ICdcMCcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pCi0rCSAgICAgIHx8IHNbZnJv bV9sZW5dID09IERJUk5BTUVfU0VQQVJBVE9SKSkKLSAJewotIAkgIGNoYXIgKnN0cmluZ19uZXc7 Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoIGIv Z2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCmluZGV4IDdjYzJhMzguLjc0NjA0 YmEgMTAwNjQ0Ci0tLSBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAorKysg Yi9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKQEAgLTEsMjAgKzEsMjAgQEAK LUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvY29uZmlnL2kzODYvbGlu dXg2NC5taAkyMDExLTA4LTI0IDE0OjA3OjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxMS0xMi0xOSAwMTo0MDo0 OS40OTI2MjU4MzcgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvbmZp Zy9pMzg2L2xpbnV4NjQubWgJMjAxMi0wMy0xMyAxNjowMDozNC4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTItMDYt MDIgMTk6NTY6MDMuMTk2MTcyNTAzICswMjAwCiBAQCAtNCw3ICs0LDcgQEAgTkFUREVQRklMRVM9 IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAogIAlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEu byBcCiAgCXByb2Mtc2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIGxpbnV4LWZvcmsubyBcCi0g CWxpbnV4LXByb2Nmcy5vCisgCWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCiAtTkFUX0ZJ TEU9IGNvbmZpZy9ubS1saW51eC5oCiArTkFUX0ZJTEU9IG5tLWxpbnV4NjQuaAogIE5BVF9DREVQ UyA9ICQoc3JjZGlyKS9wcm9jLXNlcnZpY2UubGlzdAogIAogICMgVGhlIGR5bmFtaWNhbGx5IGxv YWRlZCBsaWJ0aHJlYWRfZGIgbmVlZHMgYWNjZXNzIHRvIHN5bWJvbHMgaW4gdGhlCi1JbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYvbGludXgubWgKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9jb25maWcvaTM4Ni9saW51eC5taAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0w OC0yNCAxNDowNzoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9jb25maWcvaTM4Ni9saW51eC5taAkyMDExLTEyLTE5IDAxOjQwOjMyLjQ1MzY4OTAwNiArMDEw MAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJ MjAxMi0wMy0xMyAxNjowMDozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9jb25maWcvaTM4Ni9saW51eC5taAkyMDEyLTA2LTAyIDE5OjU1OjQyLjQxODE3ODQx MiArMDIwMAogQEAgLTEsNiArMSw2IEBACiAgIyBIb3N0OiBJbnRlbCAzODYgcnVubmluZyBHTlUv TGludXguCiAgCkBAIC0yMywxMCArMjMsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2NvbmZpZy9pMzg2L2xpbnV4Lm1oCiAgTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3Jr LWNoaWxkLm8gXAogIAlpMzg2LW5hdC5vIGkzODYtbGludXgtbmF0Lm8gXAogIAlwcm9jLXNlcnZp Y2UubyBsaW51eC10aHJlYWQtZGIubyBcCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv Y29uZmlnL2kzODYvbm0tbGludXguaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2Nv bmZpZy9pMzg2L25tLWxpbnV4LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9j b25maWcvaTM4Ni9ubS1saW51eC5oCTIwMTEtMTItMTkgMDE6NDA6MzIuNDU0Njg5MDAyICswMTAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDEy LTA2LTAyIDE5OjU1OjQyLjQzMzE3ODQwOCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5h dGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggaTM4Ni4KICsKQEAgLTU2LDEwICs1NiwxMCBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAogKyNk ZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAx CiArCiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAkyMDExLTEyLTE5IDAxOjQwOjMyLjQ1 NTY4ODk5OCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvbmZpZy9pMzg2L25t LWxpbnV4NjQuaAkyMDEyLTA2LTAyIDE5OjU1OjQyLjQzNDE3ODQwNyArMDIwMAogQEAgLTAsMCAr MSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggYW1kNjQuCiArCkBAIC04 OSwxMSArODksMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2 L25tLWxpbnV4NjQuaAogKyNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2lu dCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvdGFyZ2V0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9y aWcvZ2RiL3RhcmdldC5oCTIwMTEtMTItMDYgMjE6MDM6MTMuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGFyZ2V0LmgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTY2 ODg5OTUgKzAxMDAKLUBAIC0xMzkxLDggKzEzOTEsMTAgQEAgZXh0ZXJuIGNoYXIgKnRhcmdldF90 aHJlYWRfbmFtZSAoc3RydWN0CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90YXJn ZXQuaAkyMDEyLTA2LTAxIDE4OjM3OjU5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3RhcmdldC5oCTIwMTItMDYtMDIgMTk6NTU6NDIuNDM2MTc4NDA3ICswMjAw CitAQCAtMTQ3MCw4ICsxNDcwLDEwIEBAIGV4dGVybiBjaGFyICp0YXJnZXRfdGhyZWFkX25hbWUg KHN0cnVjdAogICAgIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQuICBDTlQgaXMgdGhlIG51bWJlciBv ZiBzdWNoIHdhdGNocG9pbnRzIHVzZWQgc28gZmFyCiAgICAgKGluY2x1ZGluZyB0aGlzIG9uZT8p LiAgT1RIRVJUWVBFIGlzIHdobyBrbm93cyB3aGF0Li4uICAqLwogIApAQCAtMTA0LDEwICsxMDQs MTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3RhcmdldC5oCiAgCiAgLyogUmV0 dXJucyB0aGUgbnVtYmVyIG9mIGRlYnVnIHJlZ2lzdGVycyBuZWVkZWQgdG8gd2F0Y2ggdGhlIGdp dmVuCiAgICAgbWVtb3J5IHJlZ2lvbiwgb3IgemVybyBpZiBub3Qgc3VwcG9ydGVkLiAgKi8KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2lu dC1ody1iZWZvcmUtcnVuLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVm b3JlLXJ1bi5leHAJMjAxMS0xMi0xOSAwMTo0MDozMi40NjQ2ODg5NjUgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZv cmUtcnVuLmV4cAkyMDEyLTA2LTAyIDE5OjU1OjQyLjQ0MjE3ODQwNiArMDIwMAogQEAgLTAsMCAr MSw0MCBAQAogKyMgQ29weXJpZ2h0IDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0 b3JzLWxpYnN0ZGN4eC5wYXRjaCBiL2dkYi1iejU2Mjc2My1wcmV0dHktcHJpbnQtMmQtdmVjdG9y cy1saWJzdGRjeHgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MjlhNjIu LjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLWxpYnN0 ZGN4eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTIwMTAtMDYtMDEgIENo cmlzIE1vbGxlciAgPGNtb2xsZXJAcmVkaGF0LmNvbT4KLQotCSogcHl0aG9uL2xpYnN0ZGN4eC92 Ni9wcmludGVycy5weSAoU3RkVmVjdG9yUHJpbnRlcik6IEFkZAotCWRldGVjdGlvbiBmb3IgbWF0 cmljZXMgYXMgbmVzdGVkIHZlY3RvcnMuCi0KLUluZGV4OiBsaWJzdGRjKystdjMvcHl0aG9uL2xp YnN0ZGN4eC92Ni9wcmludGVycy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC4vbGlic3RkYysrLXYzLXB5 dGhvbi1yMTU1OTc4L2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQkocmV2aXNpb24gMTU5OTM3KQot KysrIC4vbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4L2xpYnN0ZGN4eC92Ni9wcmludGVycy5w eQkod29ya2luZyBjb3B5KQotQEAgLTE5LDYgKzE5LDkgQEAKLSBpbXBvcnQgaXRlcnRvb2xzCi0g aW1wb3J0IHJlCi0gCi0rdmVjdG9yX3NpZyA9ICdzdGQ6OnZlY3RvcicKLSt2ZWN0b3JfcmVnZXgg PSByZS5jb21waWxlKCdeJyArIHZlY3Rvcl9zaWcgKyAnPC4qPiQnKQotKwotIGNsYXNzIFN0ZFBv aW50ZXJQcmludGVyOgotICAgICAiUHJpbnQgYSBzbWFydCBwb2ludGVyIG9mIHNvbWUga2luZCIK LSAKLUBAIC0xODYsNyArMTg5LDEzIEBACi0gICAgICAgICAgICAgICAgICUgKHNlbGYudHlwZW5h bWUsIGludCAoZmluaXNoIC0gc3RhcnQpLCBpbnQgKGVuZCAtIHN0YXJ0KSkpCi0gCi0gICAgIGRl ZiBkaXNwbGF5X2hpbnQoc2VsZik6Ci0tICAgICAgICByZXR1cm4gJ2FycmF5JwotKyAgICAgICAg aXR5cGUwICA9IHNlbGYudmFsLnR5cGUudGVtcGxhdGVfYXJndW1lbnQoMCkKLSsgICAgICAgIGl0 YWcgPSBpdHlwZTAudGFnCi0rICAgICAgICBpZiBpdGFnIGFuZCByZS5tYXRjaCh2ZWN0b3JfcmVn ZXgsIGl0YWcpOgotKyAgICAgICAgICAgIHJjID0gJ21hdHJpeCcKLSsgICAgICAgIGVsc2U6Ci0r ICAgICAgICAgICAgcmMgPSAnYXJyYXknCi0rICAgICAgICByZXR1cm4gcmMgCi0gCi0gY2xhc3Mg U3RkVmVjdG9ySXRlcmF0b3JQcmludGVyOgotICAgICAiUHJpbnQgc3RkOjp2ZWN0b3I6Oml0ZXJh dG9yIgotQEAgLTY5Miw3ICs3MDEsNyBAQAotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5j b21waWxlKCdec3RkOjpzZXQ8Lio+JCcpXSA9IGxhbWJkYSB2YWw6IFN0ZFNldFByaW50ZXIoInN0 ZDo6c2V0IiwgdmFsKQotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlKCdec3Rk OjpzdGFjazwuKj4kJyldID0gbGFtYmRhIHZhbDogU3RkU3RhY2tPclF1ZXVlUHJpbnRlcigic3Rk OjpzdGFjayIsIHZhbCkKLSAgICAgcHJldHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSgnXnN0 ZDo6dW5pcXVlX3B0cjwuKj4kJyldID0gVW5pcXVlUG9pbnRlclByaW50ZXIKLS0gICAgcHJldHR5 X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSgnXnN0ZDo6dmVjdG9yPC4qPiQnKV0gPSBsYW1iZGEg dmFsOiBTdGRWZWN0b3JQcmludGVyKCJzdGQ6OnZlY3RvciIsIHZhbCkKLSsgICAgcHJldHR5X3By aW50ZXJzX2RpY3RbdmVjdG9yX3JlZ2V4XSA9IGxhbWJkYSB2YWw6IFN0ZFZlY3RvclByaW50ZXIo dmVjdG9yX3NpZywgdmFsKQotICAgICAjIHZlY3Rvcjxib29sPgotIAotICAgICAjIFByaW50ZXIg cmVnaXN0cmF0aW9ucyBmb3IgY2xhc3NlcyBjb21waWxlZCB3aXRoIC1EX0dMSUJDWFhfREVCVUcu CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLnBhdGNo IGIvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwZTNkMjE2Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU2Mjc2My1w cmV0dHktcHJpbnQtMmQtdmVjdG9ycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5OCArMCww IEBACi0yMDEwLTA1LTMxICBDaHJpcyBNb2xsZXIgIDxjbW9sbGVyQHJlZGhhdC5jb20+Ci0KLQkq IHB5dGhvbi9weS1wcmV0dHlwcmludC5jIChwcmludF9jaGlsZHJlbik6IEFkZCBmb3JtYXR0aW5n IGZvcgotCW1hdHJpY2VzLiAoYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyKTogRGV0ZWN0IGFuZCBk ZWFsIHdpdGggbWF0cml4Ci0JaGludHMuIAotCi0KLTIwMTAtMDUtMzEgIENocmlzIE1vbGxlciAg PGNtb2xsZXJAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnB5dGhvbi9NYWtlZmlsZS5pbiAoRVhFQ1VU QUJMRVMpOiAgQWRkZWQgcHIxMDY1OS4KLQkqIGdkYi5weXRob24vcHIxMDY1OS5jYzogIE5ldyBm aWxlLgotCSogZ2RiLnB5dGhvbi9wcjEwNjU5LmV4cC4gIE5ldyBmaWxlLgotCSogZ2RiLnB5dGhv bi9wcjEwNjU5LnB5OiBOZXcgZmlsZS4KLQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTgvZ2Ri L3ZhbHByaW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjE4Lm9yaWcvZ2Ri L3ZhbHByaW50LmgJMjAxMS0wMi0xNCAxMjozNTo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMjE4L2dkYi92YWxwcmludC5oCTIwMTEtMDItMTggMTA6NDQ6MzIuMDAwMDAw MDAwICswMTAwCi1AQCAtOTAsNiArOTAsOSBAQCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucwot IAotICAgLyogSWYgbm9uemVybywgcHJpbnQgdGhlIHZhbHVlIGluICJzdW1tYXJ5IiBmb3JtLiAg Ki8KLSAgIGludCBzdW1tYXJ5OwotKwotKyAgLyogQWZmZWN0cyBwcmV0dHkgcHJpbnRpbmcgb2Yg bWF0cmljZXMuICAqLwotKyAgaW50IHByZXR0eXByaW50X21hdHJpeDsKLSB9OwotIAotIC8qIFRo ZSBnbG9iYWwgcHJpbnQgb3B0aW9ucyBzZXQgYnkgdGhlIHVzZXIuICBJbiBnZW5lcmFsIHRoaXMg c2hvdWxkCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvcHl0aG9uL3B5LXByZXR0eXBy aW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjE4Lm9yaWcvZ2RiL3B5dGhv bi9weS1wcmV0dHlwcmludC5jCTIwMTEtMDItMTQgMTI6MTA6NTMuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMS0w Mi0xOCAxMDo0NTowMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01MDEsNyArNTAxLDcgQEAgcHJpbnRf Y2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAotIAotICAgLyogVXNlIHRoZSBwcmV0 dHlwcmludF9hcnJheXMgb3B0aW9uIGlmIHdlIGFyZSBwcmludGluZyBhbiBhcnJheSwKLSAgICAg IGFuZCB0aGUgcHJldHR5IG9wdGlvbiBvdGhlcndpc2UuICAqLwotLSAgaWYgKGlzX2FycmF5KQot KyAgaWYgKGlzX2FycmF5IHx8IG9wdGlvbnMtPnByZXR0eXByaW50X21hdHJpeCkKLSAgICAgcHJl dHR5ID0gb3B0aW9ucy0+cHJldHR5cHJpbnRfYXJyYXlzOwotICAgZWxzZQotICAgICB7Ci1AQCAt NTIxLDYgKzUyMSw5IEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QK LSAgICAgICBnb3RvIGRvbmU7Ci0gICAgIH0KLSAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGZy YW1lKTsKLSsgIAotKyAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X21hdHJpeCAmJiByZWN1cnNl ID09IDApCi0rICAgIGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOwotIAotICAgZG9uZV9m bGFnID0gMDsKLSAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLT5wcmludF9tYXg7ICsraSkKLUBA IC01NTUsMTIgKzU1OCwyMyBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIsIGNv bnN0Ci0gCSAzLiBPdGhlci4gIEFsd2F5cyBwcmludCBhICIsIi4gICovCi0gICAgICAgaWYgKGkg PT0gMCkKLSAJewotLSAgICAgICAgIGlmIChpc19weV9ub25lKQotLSAgICAgICAgICAgZnB1dHNf ZmlsdGVyZWQgKCJ7Iiwgc3RyZWFtKTsKLS0gICAgICAgICBlbHNlCi0tICAgICAgICAgICBmcHV0 c19maWx0ZXJlZCAoIiA9IHsiLCBzdHJlYW0pOwotKwkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmlu dF9tYXRyaXggJiYgcmVjdXJzZSA9PSAwKQotKwkgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgy ICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7Ci0rCSAgaWYgKGlzX3B5X25vbmUpCi0rCSAgICB7Ci0r CSAgICAgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9tYXRyaXggJiYgc3RyY21wIChoaW50LCAi YXJyYXkiKSkKLSsJCXsKLSsJCSAgZnB1dHNfZmlsdGVyZWQgKCJ7XG4iLCBzdHJlYW0pOwotKwkJ ICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDQgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsKLSsJCX0K LSsJICAgICAgZWxzZQotKwkJZnB1dHNfZmlsdGVyZWQgKCJ7Iiwgc3RyZWFtKTsKLSsJICAgIH0K LSsJICBlbHNlCi0rCSAgICBmcHV0c19maWx0ZXJlZCAoIiA9IHsiLCBzdHJlYW0pOwotICAgICAg ICB9Ci0tCi0rICAgICAgZWxzZSBpZiAob3B0aW9ucy0+cHJldHR5cHJpbnRfbWF0cml4KQotKwlw cmludF9zcGFjZXNfZmlsdGVyZWQgKDQgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsKLSAgICAgICBl bHNlIGlmICghIGlzX21hcCB8fCBpICUgMiA9PSAwKQotIAlmcHV0c19maWx0ZXJlZCAocHJldHR5 ID8gIiwiIDogIiwgIiwgc3RyZWFtKTsKLSAKLUBAIC01ODksNiArNjAzLDEwIEBAIHByaW50X2No aWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKLSAKLSAgICAgICBpZiAoaXNfbWFwICYm IGkgJSAyID09IDApCi0gCWZwdXRzX2ZpbHRlcmVkICgiWyIsIHN0cmVhbSk7Ci0rICAgICAgZWxz ZSBpZiAob3B0aW9ucy0+cHJldHR5cHJpbnRfbWF0cml4KQotKwl7Ci0rCSAgLyogRm9yY2UgYSBk by1ub3RoaW5nLiAgKi8KLSsJfQotICAgICAgIGVsc2UgaWYgKGlzX2FycmF5KQotIAl7Ci0gCSAg LyogV2UgcHJpbnQgdGhlIGluZGV4LCBub3Qgd2hhdGV2ZXIgdGhlIGNoaWxkIG1ldGhvZAotQEAg LTY2Nyw3ICs2ODUsMTIgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25z dAotIAkgIGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOwotIAkgIHByaW50X3NwYWNlc19m aWx0ZXJlZCAoMiAqIHJlY3Vyc2UsIHN0cmVhbSk7Ci0gCX0KLS0gICAgICBmcHV0c19maWx0ZXJl ZCAoIn0iLCBzdHJlYW0pOwotKyAgICAgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9tYXRyaXgp Ci0rICAgICAgewotKwlwcmludF9zcGFjZXNfZmlsdGVyZWQgKDQgKiByZWN1cnNlLCBzdHJlYW0p OwotKwlmcHV0c19maWx0ZXJlZCAoIn1cbiIsIHN0cmVhbSk7Ci0rICAgICAgfQotKyAgICAgIGVs c2UgZnB1dHNfZmlsdGVyZWQgKCJ9Iiwgc3RyZWFtKTsKLSAgICAgfQotIAotICBkb25lOgotQEAg LTY4OSw2ICs3MTIsNyBAQCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0 Ci0gICBjaGFyICpoaW50ID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAg IGludCByZXN1bHQgPSAwOwotKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnNf Y29weTsKLSAgIGVudW0gc3RyaW5nX3JlcHJfcmVzdWx0IHByaW50X3Jlc3VsdDsKLSAKLSAgIC8q IE5vIHByZXR0eS1wcmludGVyIHN1cHBvcnQgZm9yIHVuYXZhaWxhYmxlIHZhbHVlcy4gICovCi1A QCAtNzI2LDkgKzc1MCwyMSBAQCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBl ICp0Ci0gCi0gICAvKiBJZiB3ZSBhcmUgcHJpbnRpbmcgYSBtYXAsIHdlIHdhbnQgc29tZSBzcGVj aWFsIGZvcm1hdHRpbmcuICAqLwotICAgaGludCA9IGdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKHBy aW50ZXIpOwotKyAgCi0rICBpZiAocmVjdXJzZSA9PSAwKQotKyAgICB7Ci0rICAgICAgb3B0aW9u c19jb3B5ID0gYWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zKSk7Ci0r ICAgICAgbWVtY3B5IChvcHRpb25zX2NvcHksIG9wdGlvbnMsIHNpemVvZiAoc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMpKTsKLSsgICAgICBvcHRpb25zX2NvcHktPnByZXR0eXByaW50X21hdHJp eCA9IGhpbnQgJiYgIXN0cmNtcCAoaGludCwgIm1hdHJpeCIpOwotKyAgICB9Ci0rICBlbHNlIG9w dGlvbnNfY29weSA9IChzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKW9wdGlvbnM7Ci0rCi0g ICBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmhpbnQpOwotIAotICAgLyog UHJpbnQgdGhlIHNlY3Rpb24gKi8KLSsgIGlmIChvcHRpb25zX2NvcHktPnByZXR0eXByaW50X21h dHJpeCkKLSsgICAgcHJpbnRfcmVzdWx0ID0gc3RyaW5nX3JlcHJfbm9uZTsKLStlbHNlIC8qIFJl ZCBIYXQgMkQgbWF0cml4IHBhdGNoICovCi0gICBwcmludF9yZXN1bHQgPSBwcmludF9zdHJpbmdf cmVwciAocHJpbnRlciwgaGludCwgc3RyZWFtLCByZWN1cnNlLAotIAkJCQkgICAgb3B0aW9ucywg bGFuZ3VhZ2UsIGdkYmFyY2gpOwotICAgaWYgKHByaW50X3Jlc3VsdCAhPSBzdHJpbmdfcmVwcl9l cnJvcikKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9wcjEwNjU5LmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHIxMDY1OS5jYwkyMDExLTAyLTE4IDEwOjQ0OjMyLjAwMDAwMDAwMCArMDEw MAotQEAgLTAsMCArMSw0MyBAQAotKyNpbmNsdWRlIDxsaXN0PgotKyNpbmNsdWRlIDx2ZWN0b3I+ ICAvLyAvdXNyL2luY2x1ZGUvYysrLzQuNC4xL2JpdHMvdmVjdG9yLnRjYwotKyNpbmNsdWRlIDxp b3N0cmVhbT4KLSsKLSt1c2luZyBuYW1lc3BhY2Ugc3RkOwotKwotK2ludCB1c2Vfd2luZG93cyA9 IDk5OTk7Ci0rCi0raW50Ci0rbWFpbigpewotKyAgdmVjdG9yPGludD4gdGVzdDEoMiwwKTsKLSsg IHRlc3QxWzBdPTg7Ci0rICB0ZXN0MVsxXT05OwotKyAgCi0rICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ ID4gdGVzdDIoMywgdmVjdG9yPGludD4oMiwwKSk7Ci0rICB0ZXN0MlswXVswXT0wOwotKyAgdGVz dDJbMF1bMV09MTsKLSsgIHRlc3QyWzFdWzBdPTI7Ci0rICB0ZXN0MlsxXVsxXT0zOwotKyAgdGVz dDJbMl1bMF09NDsKLSsgIHRlc3QyWzJdWzFdPTU7Ci0rCi0rI2RlZmluZSBOUl9ST1dTICAgIDIK LSsjZGVmaW5lIE5SX0NPTFMgICAgMwotKyNkZWZpbmUgTlJfUExBTkVTICA0Ci0rICB2ZWN0b3I8 aW50PiByb3dzKE5SX1JPV1MsIDApOwotKyAgdmVjdG9yPCB2ZWN0b3I8aW50PiA+IGNvbHVtbnMo TlJfQ09MUywgcm93cyk7Ci0rICB2ZWN0b3I8IHZlY3RvciA8IHZlY3RvcjxpbnQ+ID4gPiB0ZXN0 MyhOUl9QTEFORVMsIGNvbHVtbnMpOwotKwotKyAgY291dCA8PCAicm93cy5zaXplKCkgPSAiIDw8 IHJvd3Muc2l6ZSgpCi0rICAgICAgIDw8ICIsIGNvbHVtbnMuc2l6ZSgpID0gIiA8PCBjb2x1bW5z LnNpemUoKQotKyAgICAgICA8PCAiLCB0ZXN0My5zaXplKCkgPSAiIDw8IHRlc3QzLnNpemUoKSA8 PCAiXG4iOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzLnNpemUoKTsgaSsrKSB7Ci0r ICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sdW1ucy5zaXplKCk7IGorKykgewotKyAgICAgIGZv ciAoaW50IGsgPSAwOyBrIDwgdGVzdDMuc2l6ZSgpOyBrKyspIHsKLSsJdGVzdDNba11bal1baV0g PSBrICogMTAwICsgaiAqIDEwICsgaTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsgIAotKyAg cmV0dXJuIDA7ICAvLyBicmVhawotK30KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAx MTAyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkuZXhwCTIwMTEtMDItMTggMTA6 NDQ6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDgyIEBACi0rI0NvcHlyaWdodCAyMDEw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLStzZXQgbmwgICAgICAgICAgICAgIlxbXHJcblxdKyIKLSsKLStzZXQgdGVz dGZpbGUgcHIxMDY1OQotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0raWYgW3ByZXBhcmVf Zm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGMrK31d IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyNpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7 IGNvbnRpbnVlIH0KLSsKLStnZGJfdGVzdCAicHl0aG9uIGV4ZWNmaWxlKFwiJHNyY2Rpci8kc3Vi ZGlyL3ByMTA2NTkucHlcIikiICIiCi0rZ2RiX3Rlc3QgInB5dGhvbiBnZGIucHJldHR5X3ByaW50 ZXJzID0gXFtsb29rdXBfZnVuY3Rpb25cXSIgIiIKLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4g ewotKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuCi0rfQotKwotK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhayJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImJyZWFrIgotKwotK2dkYl90ZXN0ICJwIHRlc3QxIiAidmVjdG9yIG9m IGxlbmd0aCAyLCBjYXBhY2l0eSAyID0uKiIKLSsKLStnZGJfdGVzdCAicCB0ZXN0MiIgIj0gJG5s ICB7JG5sICAgIHsuKiIKLSsKLSsjIENvbXBsZXRlIHJlc3VsdCBpczoKLSsjCi0rIyAoZ2RiKSBw IHRlc3QyCi0rIyAkMiA9Ci0rIyAgIHsKLSsjICAgICB7MCAgICAgIDEgICAgfQotKyMgICAgIHsy ICAgICAgMyAgICB9Ci0rIyAgICAgezQgICAgICA1ICAgIH0KLSsjICB9Ci0rCi0rCi0rZ2RiX3Rl c3QgInAgdGVzdDMiICI9ICRubCAgeyRubCAgICB7JG5sICAgICAgey4qIgotKwotKyMgQ29tcGxl dGUgcmVzdWx0IGlzOgotKyMKLSsjIChnZGIpIHAgdGVzdDMKLSsjICQzID0KLSsjICAgewotKyMg ICAgIHsKLSsjICAgICAgIHswICAgICAgICAxICAgICAgICB9Ci0rIyAgICAgICB7MTAgICAgICAg IDExICAgICAgICB9Ci0rIyAgICAgICB7MjAgICAgICAgIDIxICAgICAgICB9Ci0rIyAgICAgfQot KyMgICAgIHsKLSsjICAgICAgIHsxMDAgICAgICAgIDEwMSAgICAgICAgfQotKyMgICAgICAgezEx MCAgICAgICAgMTExICAgICAgICB9Ci0rIyAgICAgICB7MTIwICAgICAgICAxMjEgICAgICAgIH0K LSsjICAgICB9Ci0rIyAgICAgewotKyMgICAgICAgezIwMCAgICAgICAgMjAxICAgICAgICB9Ci0r IyAgICAgICB7MjEwICAgICAgICAyMTEgICAgICAgIH0KLSsjICAgICAgIHsyMjAgICAgICAgIDIy MSAgICAgICAgfQotKyMgICAgIH0KLSsjICAgICB7Ci0rIyAgICAgICB7MzAwICAgICAgICAzMDEg ICAgICAgIH0KLSsjICAgICAgIHszMTAgICAgICAgIDMxMSAgICAgICAgfQotKyMgICAgICAgezMy MCAgICAgICAgMzIxICAgICAgICB9Ci0rIyAgICAgfQotKyMgIH0KLSsjIAotKwotKwotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkucHkK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w cjEwNjU5LnB5CTIwMTEtMDItMTggMTA6NDQ6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsx LDEwOSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQg Z2RiCi0raW1wb3J0IGl0ZXJ0b29scwotK2ltcG9ydCByZQotKwotK3ZlY3Rvcl9zaWcgPSAnc3Rk Ojp2ZWN0b3InCi0rdmVjdG9yX3JlZ2V4ID0gcmUuY29tcGlsZSgnXicgKyB2ZWN0b3Jfc2lnICsg JzwuKj4kJykKLSsKLStjbGFzcyBGYWtlVmVjdG9yUHJpbnRlcjoKLSsgICAgIlByaW50IGEgc3Rk Ojp2ZWN0b3IiCi0rCi0rICAgIGNsYXNzIF9pdGVyYXRvcjoKLSsgICAgICAgIGRlZiBfX2luaXRf XyAoc2VsZiwgc3RhcnQsIGZpbmlzaCk6Ci0rICAgICAgICAgICAgc2VsZi5pdGVtID0gc3RhcnQK LSsgICAgICAgICAgICBzZWxmLmZpbmlzaCA9IGZpbmlzaAotKyAgICAgICAgICAgIHNlbGYuY291 bnQgPSAwCi0rCi0rICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0rICAgICAgICAgICAgcmV0 dXJuIHNlbGYKLSsKLSsgICAgICAgIGRlZiBuZXh0KHNlbGYpOgotKyAgICAgICAgICAgIGlmIHNl bGYuaXRlbSA9PSBzZWxmLmZpbmlzaDoKLSsgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJh dGlvbgotKyAgICAgICAgICAgIGNvdW50ID0gc2VsZi5jb3VudAotKyAgICAgICAgICAgIHNlbGYu Y291bnQgPSBzZWxmLmNvdW50ICsgMQotKyAgICAgICAgICAgIGVsdCA9IHNlbGYuaXRlbS5kZXJl ZmVyZW5jZSgpCi0rICAgICAgICAgICAgc2VsZi5pdGVtID0gc2VsZi5pdGVtICsgMQotKyAgICAg ICAgICAgIHJldHVybiAoJ1slZF0nICUgY291bnQsIGVsdCkKLSsKLSsgICAgZGVmIF9faW5pdF9f KHNlbGYsIHR5cGVuYW1lLCB2YWwpOgotKyAgICAgICAgc2VsZi50eXBlbmFtZSA9IHR5cGVuYW1l Ci0rICAgICAgICBzZWxmLnZhbCA9IHZhbAotKwotKyAgICBkZWYgY2hpbGRyZW4oc2VsZik6Ci0r ICAgICAgICByZXR1cm4gc2VsZi5faXRlcmF0b3Ioc2VsZi52YWxbJ19NX2ltcGwnXVsnX01fc3Rh cnQnXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZhbFsnX01faW1wbCdd WydfTV9maW5pc2gnXSkKLSsKLSsgICAgZGVmIHRvX3N0cmluZyhzZWxmKToKLSsgICAgICAgIHN0 YXJ0ID0gc2VsZi52YWxbJ19NX2ltcGwnXVsnX01fc3RhcnQnXQotKyAgICAgICAgZmluaXNoID0g c2VsZi52YWxbJ19NX2ltcGwnXVsnX01fZmluaXNoJ10KLSsgICAgICAgIGVuZCA9IHNlbGYudmFs WydfTV9pbXBsJ11bJ19NX2VuZF9vZl9zdG9yYWdlJ10KLSsgICAgICAgIHJldHVybiAoJ3N0ZDo6 dmVjdG9yIG9mIGxlbmd0aCAlZCwgY2FwYWNpdHkgJWQnCi0rICAgICAgICAgICAgICAgICUgKGlu dCAoZmluaXNoIC0gc3RhcnQpLCBpbnQgKGVuZCAtIHN0YXJ0KSkpCi0rCi0rICAgIGRlZiBkaXNw bGF5X2hpbnQoc2VsZik6Ci0rICAgICAgICBpdHlwZTAgID0gc2VsZi52YWwudHlwZS50ZW1wbGF0 ZV9hcmd1bWVudCgwKQotKyAgICAgICAgaXRhZyA9IGl0eXBlMC50YWcKLSsgICAgICAgIGlmIGl0 YWcgYW5kIHJlLm1hdGNoKHZlY3Rvcl9yZWdleCwgaXRhZyk6Ci0rICAgICAgICAgICAgcmMgPSAn bWF0cml4JwotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICByYyA9ICdhcnJheScKLSsgICAg ICAgIHJldHVybiByYwotKwotK2RlZiByZWdpc3Rlcl9saWJzdGRjeHhfcHJpbnRlcnMgKG9iaik6 Ci0rICAgICJSZWdpc3RlciBsaWJzdGRjKysgcHJldHR5LXByaW50ZXJzIHdpdGggb2JqZmlsZSBP YmouIgotKwotKyAgICBpZiBvYmogPT0gTm9uZToKLSsgICAgICAgIG9iaiA9IGdkYgotKwotKyAg ICBvYmoucHJldHR5X3ByaW50ZXJzLmFwcGVuZCAobG9va3VwX2Z1bmN0aW9uKQotKwotK2RlZiBs b29rdXBfZnVuY3Rpb24gKHZhbCk6Ci0rICAgICJMb29rLXVwIGFuZCByZXR1cm4gYSBwcmV0dHkt cHJpbnRlciB0aGF0IGNhbiBwcmludCB2YWwuIgotKwotKyAgICAjIEdldCB0aGUgdHlwZS4KLSsg ICAgdHlwZSA9IHZhbC50eXBlOwotKwotKyAgICAjIElmIGl0IHBvaW50cyB0byBhIHJlZmVyZW5j ZSwgZ2V0IHRoZSByZWZlcmVuY2UuCi0rICAgIGlmIHR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RF X1JFRjoKLSsgICAgICAgIHR5cGUgPSB0eXBlLnRhcmdldCAoKQotKwotKyAgICAjIEdldCB0aGUg dW5xdWFsaWZpZWQgdHlwZSwgc3RyaXBwZWQgb2YgdHlwZWRlZnMuCi0rICAgIHR5cGUgPSB0eXBl LnVucXVhbGlmaWVkICgpLnN0cmlwX3R5cGVkZWZzICgpCi0rCi0rICAgICMgR2V0IHRoZSB0eXBl IG5hbWUuICAgIAotKyAgICB0eXBlbmFtZSA9IHR5cGUudGFnCi0rICAgIGlmIHR5cGVuYW1lID09 IE5vbmU6Ci0rICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICAjIEl0ZXJhdGUgb3ZlciBsb2Nh bCBkaWN0aW9uYXJ5IG9mIHR5cGVzIHRvIGRldGVybWluZQotKyAgICAjIGlmIGEgcHJpbnRlciBp cyByZWdpc3RlcmVkIGZvciB0aGF0IHR5cGUuICBSZXR1cm4gYW4KLSsgICAgIyBpbnN0YW50aWF0 aW9uIG9mIHRoZSBwcmludGVyIGlmIGZvdW5kLgotKyAgICBmb3IgZnVuY3Rpb24gaW4gZmFrZV9w cmV0dHlfcHJpbnRlcnNfZGljdDoKLSsgICAgICAgIGlmIGZ1bmN0aW9uLnNlYXJjaCAodHlwZW5h bWUpOgotKyAgICAgICAgICAgIHJldHVybiBmYWtlX3ByZXR0eV9wcmludGVyc19kaWN0W2Z1bmN0 aW9uXSAodmFsKQotKyAgICAgICAgCi0rICAgICMgQ2Fubm90IGZpbmQgYSBwcmV0dHkgcHJpbnRl ci4gIFJldHVybiBOb25lLgotKyAgICByZXR1cm4gTm9uZQotKwotK2RlZiBidWlsZF9saWJmYWtl Y3h4X2RpY3Rpb25hcnkgKCk6Ci0rICAgIGZha2VfcHJldHR5X3ByaW50ZXJzX2RpY3RbdmVjdG9y X3JlZ2V4XSA9IGxhbWJkYSB2YWw6IEZha2VWZWN0b3JQcmludGVyKHZlY3Rvcl9zaWcsIHZhbCkK LSsKLStmYWtlX3ByZXR0eV9wcmludGVyc19kaWN0ID0ge30KLSsKLStidWlsZF9saWJmYWtlY3h4 X2RpY3Rpb25hcnkgKCkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi92YWxwcmludC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxOC5vcmlnL2dkYi92YWxwcmludC5j CTIwMTEtMDItMTggMTA6NDQ6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEx MDIxOC9nZGIvdmFscHJpbnQuYwkyMDExLTAyLTE4IDEwOjQ0OjMyLjAwMDAwMDAwMCArMDEwMAot QEAgLTg1LDcgKzg1LDggQEAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgdXNlcl9wcmludF9v cAotICAgMSwJCQkJLyogc3RhdGljX2ZpZWxkX3ByaW50ICovCi0gICAxLAkJCQkvKiBwYXNjYWxf c3RhdGljX2ZpZWxkX3ByaW50ICovCi0gICAwLAkJCQkvKiByYXcgKi8KLS0gIDAJCQkJLyogc3Vt bWFyeSAqLwotKyAgMCwJCQkJLyogc3VtbWFyeSAqLwotKyAgMAkJCQkvKiBwcmV0dHlwcmludF9t YXRyaXggKi8KLSB9OwotIAotIC8qIEluaXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9mIHRo ZSB1c2VyIHByaW50IG9wdGlvbnMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejU5MjAzMS1zaWdp bmZvLWxvc3QtNG9mNS5wYXRjaCBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRj aAppbmRleCAzODEwZmVjLi5kZmExMjJhIDEwMDY0NAotLS0gYS9nZGItYno1OTIwMzEtc2lnaW5m by1sb3N0LTRvZjUucGF0Y2gKKysrIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBh dGNoCkBAIC03OCwxMSArNzgsMTEgQEAgZ2RiL3Rlc3RzdWl0ZS8KIAkqIGdkYi50aHJlYWRzL3Np Z3N0ZXAtdGhyZWFkcy5leHA6IE5ldyBmaWxlLgogCSogZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJl YWRzLmM6IE5ldyBmaWxlLgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgt bmF0LmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0x Mi0xOSAwMToyNTo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9saW51eC1uYXQuYwkyMDExLTEyLTE5IDAyOjE3OjA1LjQxMjYwNzczNSArMDEwMAotQEAgLTI4 NDMsNiArMjg0Myw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwK Ky0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDYtMDIg MjE6MzQ6NTEuOTk5NTE3NTEwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGlu dXgtbmF0LmMJMjAxMi0wNi0wMiAyMTozNTo1OS45MzA0OTE1NzcgKzAyMDAKK0BAIC0yODU2LDYg KzI4NTYsOCBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCiAgICAg IHsKICAgICAgICBpbnQgc3RhdHVzOwogIApAQCAtOTEsNyArOTEsNyBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKICAgICAgICBzdGF0dXMgPSB3YWl0X2x3cCAo bHApOwogICAgICAgIGlmIChzdGF0dXMgPT0gMCkKICAJcmV0dXJuIDA7Ci1AQCAtMjg2OCwxMTAg KzI4NzAsNjEgQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAorQEAg LTI4ODEsMTEwICsyODgzLDYxIEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZv ICpscCwKICAKICAgICAgICBpZiAoV1NUT1BTSUcgKHN0YXR1cykgIT0gU0lHU1RPUCkKICAJewpA QCAtMjI4LDcgKzIyOCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1u YXQuYwogKwogKwkgICAgICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKICsJICAgICAgbGludXhfb3Bz LT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSks Ci0rCQkJCSAgICAxLCBUQVJHRVRfU0lHTkFMXzApOworKwkJCQkgICAgMSwgR0RCX1NJR05BTF8w KTsKICsJICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKICsJCWZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKICsJCQkJICAgICJTV0M6ICVzICVzLCAwLCAwIChkaXNjYXJkIFNJR1NUT1Ap XG4iLApAQCAtMjQ4LDcgKzI0OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9s aW51eC1uYXQuYwogIAkgIGxwLT5zaWduYWxsZWQgPSAwOwogIAl9CiAgICAgIH0KLUBAIC0zNjI3 LDU0ICszNTgwLDYgQEAgcmV0cnk6CitAQCAtMzYxNiw1NCArMzU2OSw2IEBAIHJldHJ5OgogIAls cCA9IE5VTEw7CiAgICAgIH0KICAKQEAgLTI2OSw3ICsyNjksNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKIC0gICAgICBpZiAobGludXhfbmF0X3ByZXBhcmVf dG9fcmVzdW1lICE9IE5VTEwpCiAtCWxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSAobHApOwog LSAgICAgIGxpbnV4X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHBpZF90b19wdGlkIChHRVRf TFdQIChscC0+cHRpZCkpLAotLQkJCSAgICBscC0+c3RlcCwgVEFSR0VUX1NJR05BTF8wKTsKKy0J CQkgICAgbHAtPnN0ZXAsIEdEQl9TSUdOQUxfMCk7CiAtICAgICAgaWYgKGRlYnVnX2xpbnV4X25h dCkKIC0JZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogLQkJCSAgICAiTExXOiAlcyAl cywgMCwgMCAoZXhwZWN0IFNJR1NUT1ApXG4iLApAQCAtMzAzLDEwICszMDMsMTAgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgICBpZiAoIXRhcmdldF9jYW5f YXN5bmNfcCAoKSkKICAgICAgewogICAgICAgIC8qIENhdXNlcyBTSUdJTlQgdG8gYmUgcGFzc2Vk IG9uIHRvIHRoZSBhdHRhY2hlZCBwcm9jZXNzLiAgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmMKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJl YWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvc2lnaW5mby10aHJlYWRzLmMJMjAxMS0xMi0xOSAwMjoxNjozNS4yMzY3MjAyNzIgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2ln aW5mby10aHJlYWRzLmMJMjAxMi0wNi0wMiAyMTozNTo0MC4yNjg0OTkwNjAgKzAyMDAKIEBAIC0w LDAgKzEsNDQ3IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKQEAgLTc1NSwxMCArNzU1LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmMKICsKICsgIHJl dHVybiBFWElUX1NVQ0NFU1M7CiArfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv c2lnaW5mby10aHJlYWRzLmV4cAkyMDExLTEyLTE5IDAyOjE2OjM1LjIzNzcyMDI2OCArMDEwMAor KysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZv LXRocmVhZHMuZXhwCTIwMTItMDYtMDIgMjE6MzU6NDAuMjk2NDk5MDUwICswMjAwCiBAQCAtMCww ICsxLDk0IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKQEAgLTg1NCwxMCArODU0LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cAogK30KICsKICtnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCBicmVhay1hdC1leGl0ICIuKmJyZWFrLWF0LWV4aXQuKiIK LUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2ln c3RlcC10aHJlYWRzLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmMJMjAxMS0xMi0x OSAwMjoxNjozNS4yMzc3MjAyNjggKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmMJMjAxMi0wNi0wMiAyMTozNTo0 MC4yOTc0OTkwNTAgKzAyMDAKIEBAIC0wLDAgKzEsNTQgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtOTEzLDEwICs5MTMsMTAgQEAg SW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdz dGVwLXRocmVhZHMuYwogKyAgc3RhcnQgKE5VTEwpOwkvKiBtYWluLXN0YXJ0ICovCiArICByZXR1 cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVh ZHMuZXhwCTIwMTEtMTItMTkgMDI6MTY6MzUuMjM3NzIwMjY4ICswMTAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAJ MjAxMi0wNi0wMiAyMTozNTo0MC4yOTc0OTkwNTAgKzAyMDAKIEBAIC0wLDAgKzEsNzQgQEAKICsj IENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAt LWdpdCBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaCBiL2dkYi1iejU5MjAz MS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaAppbmRleCA4ZjRlNDQwLi5iOWZlMThmIDEwMDY0NAot LS0gYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2gKKysrIGIvZ2RiLWJ6NTky MDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNoCkBAIC0yNiwxOSArMjYsMTkgQEAgZ2RiLwogCShs aW51eF9uYXRfc2V0X3NpZ2luZm9fZml4dXApOiBVc2UgUFRSQUNFX0dFVFNJR0lORk8uCiAJKiBs aW51eC1uYXQuaCAoc3RydWN0IGx3cF9pbmZvKSA8c2lnaW5mbz46IFJlbW92ZS4KIAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTEx MjE4Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMTItMTkgMDI6MTc6MDUuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMJMjAxMS0xMi0xOSAw MjoxNzo0My4xODg0NjY4NTQgKzAxMDAKLUBAIC0xODgzLDcgKzE4ODMsNiBAQCByZXN1bWVfbHdw IChzdHJ1Y3QgbHdwX2luZm8gKmxwLCBpbnQgc3RlCi0gCQkJCXN0ZXAsIFRBUkdFVF9TSUdOQUxf MCk7CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2 LTAyIDIxOjM2OjIxLjA2NzQ4MzQ2NiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L2xpbnV4LW5hdC5jCTIwMTItMDYtMDIgMjE6Mzc6NTUuMzQ1NDQ3NDAyICswMjAwCitAQCAtMTky OSw3ICsxOTI5LDYgQEAgcmVzdW1lX2x3cCAoc3RydWN0IGx3cF9pbmZvICpscCwgaW50IHN0ZQor IAkJCQlzdGVwLCBHREJfU0lHTkFMXzApOwogIAkgIGxwLT5zdG9wcGVkID0gMDsKICAJICBscC0+ c3RlcCA9IHN0ZXA7CiAtCSAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNp Z2luZm8pKTsKICAJICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAJfQogICAgICAg IGVsc2UKLUBAIC0yMDI3LDcgKzIwMjYsNiBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzCitAQCAtMjA3MSw3ICsyMDcwLDYgQEAgbGludXhfbmF0X3Jlc3VtZSAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcwogICAgaWYgKGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSAh PSBOVUxMKQogICAgICBsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1bWUgKGxwKTsKICAgIGxpbnV4 X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKQEAgLTQ2LDcg KzQ2LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgICBs cC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAKICAgIGlmIChkZWJ1Z19saW51eF9uYXQp Ci1AQCAtMjYxMiwyMiArMjYxMCw2IEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQor QEAgLTI2MjUsMjIgKzI2MjMsNiBAQCB3YWl0X2x3cCAoc3RydWN0IGx3cF9pbmZvICpscCkKICAg IHJldHVybiBzdGF0dXM7CiAgfQogIApAQCAtNjksNyArNjksNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKICAvKiBTZW5kIGEgU0lHU1RPUCB0byBMUC4gICov CiAgCiAgc3RhdGljIGludAotQEAgLTI4NzIsOSArMjg1NCw2IEBAIHN0b3Bfd2FpdF9jYWxsYmFj ayAoc3RydWN0IGx3cF9pbmZvICpscCwKK0BAIC0yODg1LDkgKzI4NjcsNiBAQCBzdG9wX3dhaXRf Y2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCiAgCXsKICAJICAvKiBUaGUgdGhyZWFkIHdh cyBzdG9wcGVkIHdpdGggYSBzaWduYWwgb3RoZXIgdGhhbiBTSUdTVE9QLiAgKi8KICAKQEAgLTc5 LDcgKzc5LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAg CSAgc2F2ZV9zaWd0cmFwIChscCk7CiAgCiAgCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0z Mjc4LDEyICszMjU3LDcgQEAgbGludXhfbmF0X2ZpbHRlcl9ldmVudCAoaW50IGx3cGlkLCBpbnQg cworQEAgLTMyOTEsMTIgKzMyNzAsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdw aWQsIGludCBzCiAgICAgIH0KICAKICAgIGlmIChsaW51eF9uYXRfc3RhdHVzX2lzX2V2ZW50IChz dGF0dXMpKQpAQCAtOTMsMjAgKzkzLDIwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9saW51eC1uYXQuYwogIAogICAgLyogQ2hlY2sgaWYgdGhlIHRocmVhZCBoYXMgZXhpdGVkLiAg Ki8KICAgIGlmICgoV0lGRVhJVEVEIChzdGF0dXMpIHx8IFdJRlNJR05BTEVEIChzdGF0dXMpKQot QEAgLTM5NjEsNyArMzkzNSw2IEBAIHJlc3VtZV9zdG9wcGVkX3Jlc3VtZWRfbHdwcyAoc3RydWN0 IGx3cF8KK0BAIC0zOTUwLDcgKzM5MjQsNiBAQCByZXN1bWVfc3RvcHBlZF9yZXN1bWVkX2x3cHMg KHN0cnVjdCBsd3BfCiAgICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlk X3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCi0gCQkJICAgIGxwLT5zdGVwLCBUQVJHRVRf U0lHTkFMXzApOworIAkJCSAgICBscC0+c3RlcCwgR0RCX1NJR05BTF8wKTsKICAgICAgICBscC0+ c3RvcHBlZCA9IDA7CiAtICAgICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAt PnNpZ2luZm8pKTsKICAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAg fQogIAotQEAgLTYwMjksMTEgKzYwMDIsMTkgQEAgbGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jl c3VtZSAoc3RydWN0Ci0gc3RydWN0IHNpZ2luZm8gKgorQEAgLTUyMjcsMTEgKzUyMDAsMTkgQEAg bGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jlc3VtZSAoc3RydWN0Cisgc2lnaW5mb190ICoKICBs aW51eF9uYXRfZ2V0X3NpZ2luZm8gKHB0aWRfdCBwdGlkKQogIHsKIC0gIHN0cnVjdCBsd3BfaW5m byAqbHAgPSBmaW5kX2x3cF9waWQgKHB0aWQpOwotKyAgc3RhdGljIHN0cnVjdCBzaWdpbmZvIHNp Z2luZm87CisrICBzdGF0aWMgc2lnaW5mb190IHNpZ2luZm87CiArICBpbnQgcGlkOwogIAogLSAg Z2RiX2Fzc2VydCAobHAgIT0gTlVMTCk7CkBAIC0xMjQsMTcgKzEyNCwxNyBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKICB9CiAgCiAgLyogUHJvdmlkZSBhIHBy b3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLUluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL2xpbnV4LW5hdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5v cmlnL2dkYi9saW51eC1uYXQuaAkyMDExLTEyLTE4IDIzOjQwOjU5LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMTItMTkgMDI6MTc6 MjEuMzU1NTQ4Mjc2ICswMTAwCi1AQCAtNzcsMTAgKzc3LDYgQEAgc3RydWN0IGx3cF9pbmZvCist LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDEyLTA2LTAyIDIx OjM2OjIxLjA2NzQ4MzQ2NiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4 LW5hdC5oCTIwMTItMDYtMDIgMjE6MzY6MjcuMTQwNDgxMTQ0ICswMjAwCitAQCAtNzYsMTAgKzc2 LDYgQEAgc3RydWN0IGx3cF9pbmZvCiAgICAvKiBUaGUga2luZCBvZiBzdGVwcGluZyBvZiB0aGlz IExXUC4gICovCiAgICBlbnVtIHJlc3VtZV9zdGVwIHN0ZXA7CiAgCiAtICAvKiBOb24temVybyBz aV9zaWdubyBpZiB0aGlzIExXUCBzdG9wcGVkIHdpdGggYSB0cmFwLiAgc2lfYWRkciBtYXkKIC0g ICAgIGJlIHRoZSBhZGRyZXNzIG9mIGEgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICovCi0tICBzdHJ1 Y3Qgc2lnaW5mbyBzaWdpbmZvOworLSAgc2lnaW5mb190IHNpZ2luZm87CiAtCiAgICAvKiBTVE9Q UEVEX0JZX1dBVENIUE9JTlQgaXMgbm9uLXplcm8gaWYgdGhpcyBMV1Agc3RvcHBlZCB3aXRoIGEg ZGF0YQogICAgICAgd2F0Y2hwb2ludCB0cmFwLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItZGVqYWdu dS1nby5wYXRjaCBiL2dkYi1kZWphZ251LWdvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmRkYWMwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGVqYWdudS1nby5w YXRjaApAQCAtMCwwICsxLDQyIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAxMi0wNi9tc2cwMDA1MC5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIGRlamFnbnUgY29tcGF0 LiAtIG1pc3NpbmcgZmluZF9nb19saW5rZXIgIFtSZTogW3BhdGNoLCBkb2MgUkZBXSBHbyBsYW5n dWFnZSBzdXBwb3J0XQorCitPbiBXZWQsIDI1IEFwciAyMDEyIDA0OjE3OjM1ICswMjAwLCBEb3Vn IEV2YW5zIHdyb3RlOgorPiAraWYge1tpbmZvIHByb2NzIGZpbmRfZ29fbGlua2VyXSA9PSAiIn0g eworPiArICAgIHJlbmFtZSBnZGJfZmluZF9nbyBmaW5kX2dvCis+ICsgICAgcmVuYW1lIGdkYl9m aW5kX2dvX2xpbmtlciBmaW5kX2dvX2xpbmtlcgorPiArICAgICMgTm8gbmVlZCB0byBzZXQgdXNl X2dkYl9jb21waWxlLgorPiArfQorCitJcyB0aGVyZSBhIHJlYXNvbiBmb3IgaXQ/ICBXaXRoIHJl Y2VudCBGZWRvcmEgMTcgdXBkYXRlCisJaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD02MzU2NTEKKworZGVqYWdudSBoYXMgc3RhcnRlZCB0byBzdXBwb3J0ICdmaW5k X2dmb3J0cmFuJy4gIEJ1dCBpdCBzdGlsbCBkb2VzIG5vdCBzdXBwb3J0CisnZmluZF9nb19saW5r ZXInLiAgVGhpcyBoYXMgcmVzdWx0ZWQgaW4gcmVncmVzc2lvbiBmYWlsaW5nIHRvIGNvbXBpbGUg YW55CitnZGIuZ28vKi5leHAgZmlsZXMuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiL3Rlc3Rz dWl0ZS8KKzIwMTItMDYtMDIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKworCSogbGliL2Z1dHVyZS5leHA6IFNldCAkdXNlX2dkYl9jb21waWxlIGV2ZW4gaWYg b25seSBmaW5kX2dvX2xpbmtlciBpcworCW1pc3NpbmcuCisKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2xpYi9mdXR1cmUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZnV0dXJlLmV4cAoraW5k ZXggNDA0NTZjMC4uYmY0Nzk4OCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2Z1dHVy ZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2Z1dHVyZS5leHAKK0BAIC01MTQsNyArNTE0 LDcgQEAgaWYge1tpbmZvIHByb2NzIGZpbmRfZ2ZvcnRyYW5dID09ICIifSB7CisgaWYge1tpbmZv IHByb2NzIGZpbmRfZ29fbGlua2VyXSA9PSAiIn0geworICAgICByZW5hbWUgZ2RiX2ZpbmRfZ28g ZmluZF9nbworICAgICByZW5hbWUgZ2RiX2ZpbmRfZ29fbGlua2VyIGZpbmRfZ29fbGlua2VyCist ICAgICMgTm8gbmVlZCB0byBzZXQgdXNlX2dkYl9jb21waWxlLgorKyAgICBzZXQgdXNlX2dkYl9j b21waWxlIDEKKyB9CisgCisgaWYgeyR1c2VfZ2RiX2NvbXBpbGV9IHsKKwoKZGlmZiAtLWdpdCBh L2dkYi1kaWUtY3Utb2Zmc2V0LTFvZjIucGF0Y2ggYi9nZGItZGllLWN1LW9mZnNldC0xb2YyLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjBlOTFmLi4wMDAwMDAwCi0tLSBh L2dkYi1kaWUtY3Utb2Zmc2V0LTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCww IEBACi1bY29tbWl0XSBbcGF0Y2hdIEZpeCBDVSByZWxhdGl2ZSB2cy4gYWJzb2x1dGUgb2Zmc2V0 cyBbUmU6IFJGQzogcHJvYmxlbSB3aXRoIERXX09QX0dOVV9kZXJlZl90eXBlIGFuZCBkd2FyZidz IGdldF9iYXNlX3R5cGUgY2FsbGJhY2tdCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMi0wMy9tc2cwMDI4NC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEyLTAzL21zZzAwMTM0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDMvMDggMTk6MDg6MDkJMS4xMzk3OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMDgg MTk6Mzc6MDQJMS4xMzk4MAotIyMgLTEsNSArMSwxNSBAQAotIDIwMTItMDMtMDggIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJRml4IENVIHJlbGF0aXZl IHZzLiBhYnNvbHV0ZSBESUUgb2Zmc2V0cy4KLSsJKiBkd2FyZjJsb2MuaCAoZHdhcmYyX2ZldGNo X2RpZV9sb2NhdGlvbl9ibG9jayk6IFJlbmFtZSBwYXJhbWV0ZXIKLSsJb2Zmc2V0IHRvIG9mZnNl dF9pbl9jdS4KLSsJKiBkd2FyZjJyZWFkLmMgKHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUpOiBB ZGQgQ1Ugb2Zmc2V0IHRvCi0rCVRZUEVfT0ZGU0VULgotKwkoZHdhcmYyX2ZldGNoX2RpZV9sb2Nh dGlvbl9ibG9jayk6IFJlbmFtZSBwYXJhbWV0ZXIgb2Zmc2V0IHRvCi0rCW9mZnNldF9pbl9jdS4g IE5ldyB2YXJpYWJsZSBvZmZzZXQsIGFkZCBDVSBvZmZzZXQgdG8gT0ZGU0VUX0lOX0NVLgotKwot KzIwMTItMDMtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSsKLSAJKiBsaWJ1bndpbmQtZnJhbWUuYzogUmVuYW1lIHRvIC4uLgotIAkqIGlhNjQtbGlidW53 aW5kLXRkZXAuYzogLi4uIGhlcmUuCi0gCSogbGlidW53aW5kLWZyYW1lLmg6IFJlbmFtZSB0byAu Li4KLS0tLSBzcmMvZ2RiL2R3YXJmMmxvYy5oCTIwMTIvMDEvMDUgMjE6NTM6MTQJMS4yOQotKysr IHNyYy9nZGIvZHdhcmYybG9jLmgJMjAxMi8wMy8wOCAxOTozNzowNwkxLjMwCi1AQCAtNjEsNyAr NjEsNyBAQAotICAgIENPUkVfQUREUiBwYyk7Ci0gCi0gc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uIGR3YXJmMl9mZXRjaF9kaWVfbG9jYXRpb25fYmxvY2sKLS0gICh1bnNpZ25lZCBpbnQgb2Zm c2V0LCBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi0rICAodW5zaWduZWQgaW50 IG9mZnNldF9pbl9jdSwgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotICAgIENP UkVfQUREUiAoKmdldF9mcmFtZV9wYykgKHZvaWQgKmJhdG9uKSwKLSAgICB2b2lkICpiYXRvbik7 Ci0gCi0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi8wMy8wNiAyMzo0MTo1MAkxLjYxOQot KysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTIvMDMvMDggMTk6Mzc6MDcJMS42MjAKLUBAIC04 MDMxLDcgKzgwMzEsOCBAQAotIAk9IGxvb2t1cF9zaWduYXR1cmVkX3R5cGVfYXRfb2Zmc2V0IChk d2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUsCi0gCQkJCQkgICAgY3UtPnBlcl9jdS0+ZGVidWdf dHlwZXNfc2VjdGlvbiwKLSAJCQkJCSAgICBjdS0+cGVyX2N1LT5vZmZzZXQpOwotLSAgICAgIGlm ICh0eXBlX3NpZy0+dHlwZV9vZmZzZXQgIT0gZGllLT5vZmZzZXQpCi0rICAgICAgaWYgKHR5cGVf c2lnLT5wZXJfY3Uub2Zmc2V0ICsgdHlwZV9zaWctPnR5cGVfb2Zmc2V0Ci0rCSAgIT0gZGllLT5v ZmZzZXQpCi0gCXJldHVybjsKLSAgICAgfQotIAotQEAgLTE0MjAyLDExICsxNDIwMywxMiBAQAot ICAgIGR3YXJmMl9sb2NleHByX2JhdG9uLT5kYXRhIGhhcyBsaWZldGltZSBvZiBQRVJfQ1UtPk9C SkZJTEUuICAqLwotIAotIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbgotLWR3YXJmMl9mZXRj aF9kaWVfbG9jYXRpb25fYmxvY2sgKHVuc2lnbmVkIGludCBvZmZzZXQsCi0rZHdhcmYyX2ZldGNo X2RpZV9sb2NhdGlvbl9ibG9jayAodW5zaWduZWQgaW50IG9mZnNldF9pbl9jdSwKLSAJCQkJIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLSAJCQkJIENPUkVfQUREUiAoKmdldF9m cmFtZV9wYykgKHZvaWQgKmJhdG9uKSwKLSAJCQkJIHZvaWQgKmJhdG9uKQotIHsKLSsgIHVuc2ln bmVkIGludCBvZmZzZXQgPSBwZXJfY3UtPm9mZnNldCArIG9mZnNldF9pbl9jdTsKLSAgIHN0cnVj dCBkd2FyZjJfY3UgKmN1OwotICAgc3RydWN0IGRpZV9pbmZvICpkaWU7Ci0gICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyOwotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzAzLzA4 IDA3OjQyOjUwCTEuMzEyNwotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzAz LzA4IDE5OjM3OjA3CTEuMzEyOAotIyMgLTEsNSArMSwxMSBAQAotIDIwMTItMDMtMDggIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJRml4IENVIHJlbGF0 aXZlIHZzLiBhYnNvbHV0ZSBESUUgb2Zmc2V0cy4KLSsJKiBnZGIuZHdhcmYyL2R3Mi1vcC1jYWxs LlM6IE5ldyBjb21waWxhdGlvbiB1bml0IHByZWNlZGluZyB0aGUgZXhpc3RpbmcKLSsJb25lLgot KwotKzIwMTItMDMtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSsKLSAJRml4IGZhbHNlIEZBSUwgb24gZGlzdHJvcyB3aXRoIHJlbHJvIGxpbmthZ2UgYXMg ZGVmYXVsdC4KLSAJKiBnZGIucmV2ZXJzZS9zb2xpYi1wcmVjc2F2ZS5leHA6IFRyeSB0byBjb21w aWxlIHRoZSB0ZXN0IHVzaW5nCi0gCS1XbCwteixub3JlbHJvIGZpcnN0LgotLS0tIHNyYy9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLW9wLWNhbGwuUwkyMDEyLzAxLzA0IDA4OjE3OjUxCTEu NQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLW9wLWNhbGwuUwkyMDEyLzAz LzA4IDE5OjM3OjA4CTEuNgotQEAgLTIzLDYgKzIzLDIzIEBACi0gYXJyYXkzOgkuMmJ5dGUJMwot IAotIAkuc2VjdGlvbiAuZGVidWdfaW5mbwotKy5MY3UwX2JlZ2luOgotKwkvKiBDVSBoZWFkZXIg Ki8KLSsJLjRieXRlCS5MY3UwX2VuZCAtIC5MY3UwX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGls YXRpb24gVW5pdCAqLwotKy5MY3UwX3N0YXJ0OgotKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJz aW9uICovCi0rCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYg c2VjdGlvbiAqLwotKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLwotKwotKwkvKiBDVSBk aWUgKi8KLSsJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8K LSsJLmFzY2lpCSJmaWxlMC50eHRcMCIJCQkvKiBEV19BVF9uYW1lICovCi0rCS5hc2NpaQkiR05V IEMgMy4zLjNcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkuYnl0ZQkyCQkJCS8qIERXX0xB TkdfQyAoQykgKi8KLSsKLSsJLmJ5dGUJMAkJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8K LSsuTGN1MF9lbmQ6Ci0rCi0gLkxjdTFfYmVnaW46Ci0gCS8qIENVIGhlYWRlciAqLwotIAkuNGJ5 dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0 ICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWRpZS1jdS1vZmZzZXQtMm9mMi5wYXRjaCBiL2dkYi1kaWUt Y3Utb2Zmc2V0LTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NzA4 OGMuLjAwMDAwMDAKLS0tIGEvZ2RiLWRpZS1jdS1vZmZzZXQtMm9mMi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDI2ICswLDAgQEAKLVJGQzogcHJvYmxlbSB3aXRoIERXX09QX0dOVV9kZXJlZl90 eXBlIGFuZCBkd2FyZidzIGdldF9iYXNlX3R5cGUgY2FsbGJhY2sKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAzL21zZzAwMTY2Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAxMTguaHRtbAotCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wMy8wNiAyMjo0ODo0OQkxLjEzOTY4Ci0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMy8wNiAyMzo0MTo0NwkxLjEzOTY5Ci0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTAz LTA2ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KLSsKLSsJKiBkd2Fy ZjJyZWFkLmMgKGR3YXJmMl9nZXRfZGllX3R5cGUpOiBQYXNzIGFic29sdXRlIG9mZnNldAotKwlp biBjYWxsIHRvIGdldF9kaWVfdHlwZV9hdF9vZmZzZXQuCi0rCi0gMjAxMi0wMy0wNiAgU3RhbiBT aGVicyAgPHN0YW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBtaS9taS1jbWQtYnJlYWsuYzog RW5mb3JjZSBjb2Rpbmcgc3RhbmRhcmRzLCBmaXggY29tbWVudHMuCi0tLS0gc3JjL2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMi8wMy8wMiAwMTo1NToxNQkxLjYxOAotKysrIHNyYy9nZGIvZHdhcmYycmVh ZC5jCTIwMTIvMDMvMDYgMjM6NDE6NTAJMS42MTkKLUBAIC0xNDI2OSw3ICsxNDI2OSw3IEBACi0g CQkgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSB7Ci0gICBkdzJfc2V0 dXAgKHBlcl9jdS0+b2JqZmlsZSk7Ci0tICByZXR1cm4gZ2V0X2RpZV90eXBlX2F0X29mZnNldCAo ZGllX29mZnNldCwgcGVyX2N1KTsKLSsgIHJldHVybiBnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChw ZXJfY3UtPm9mZnNldCArIGRpZV9vZmZzZXQsIHBlcl9jdSk7Ci0gfQotIAotIC8qIEZvbGxvdyB0 aGUgc2lnbmF0dXJlIGF0dHJpYnV0ZSBBVFRSIGluIFNSQ19ESUUuCgpkaWZmIC0tZ2l0IGEvZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLXRlc3QucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVz dC5wYXRjaAppbmRleCA5OWNiNjJmLi5iZTVlNzZmIDEwMDY0NAotLS0gYS9nZGItZGxvcGVuLXN0 YXAtcHJvYmUtdGVzdC5wYXRjaAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdC5wYXRj aApAQCAtNCwxMCArNCwxMCBAQCBEYXRlOiAgIE1vbiBBdWcgOCAxMjowODo1MyAyMDExICswMjAw CiAKICAgICArdGVzdGNhc2UKIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1s aWIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwkyMDExLTA4LTEwIDE4OjMwOjU2LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwkyMDEyLTA2LTAyIDIwOjAzOjQyLjcxMTM5Mzc3NiAr MDIwMAogQEAgLTAsMCArMSw0MCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC00OSwxMCArNDksMTAgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1s aWIuYwogKyAgaSA9IHB0aHJlYWRfam9pbiAodCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7 CiArfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy9kbG9wZW4tbGlicHRocmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQu YwkyMDExLTA4LTEwIDE4OjMwOjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jCTIwMTIt MDYtMDIgMjA6MDM6NDIuNzEyMzkzNzc1ICswMjAwCiBAQCAtMCwwICsxLDQ2IEBACiArLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTEwMCwx MCArMTAwLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwogKwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGli cHRocmVhZC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cAkyMDEx LTA4LTEwIDE4OjMwOjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAJMjAxMi0wNi0w MiAyMDowMzo0Mi43MjQzOTM3NzEgKzAyMDAKIEBAIC0wLDAgKzEsNzQgQEAKICsjIENvcHlyaWdo dCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyMKQEAgLTE3OSwxMSArMTc5 LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5v dGlmeSIgIi4qIG5vdGlmeS1oZXJlIC4qIgogKwogK2dkYl90ZXN0ICJpbmZvIHNoYXJlZGxpYnJh cnkiIHsvbGlicHRocmVhZFwuc28uKn0gImxpYnB0aHJlYWQuc28gZm91bmQiCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0w OC0xMCAxODozMDo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wOC0xMCAxODozMDo1Ni4wMDAwMDAwMDAgKzAy MDAKLUBAIC0zNTYzLDMwICszNTYzLDQ5IEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZSB7IHRlc3Ru YW1lIGV4ZWN1dGEKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDE5OjExOjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDIwOjAz OjQyLjcyNzM5Mzc3MCArMDIwMAorQEAgLTM2OTMsMzAgKzM2OTMsNDkgQEAgcHJvYyBidWlsZF9l eGVjdXRhYmxlIHsgdGVzdG5hbWUgZXhlY3V0YQogICAgICAgICAgc2V0IHNvdXJjZXMgJHtleGVj dXRhYmxlfS5jCiAgICAgIH0KICAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDAKICB9 CiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5r LXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xp Yi9wcmVsaW5rLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMS0wMS0wMSAx NjozMzo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMS0wOC0xMCAxOToyNTo0MS4wMDAwMDAw MDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv cHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTAxLTA0IDA5OjI3OjU2LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0 LmV4cAkyMDEyLTA2LTAyIDIwOjAzOjQyLjczMzM5Mzc2OCArMDIwMAogQEAgLTk1LDggKzk1LDkg QEAgcHJvYyBmaWxlX2NvcHkge3NyYyBkZXN0fSB7CiAgIyBXcmFwIGZ1bmN0aW9uIGJ1aWxkX2V4 ZWN1dGFibGUgc28gdGhhdCB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgaXMgZnVsbHkKICAjIHNl bGYtc3VmZmljaWVudCAod2l0aG91dCBkZXBlbmRlbmNpZXMgb24gc3lzdGVtIGxpYnJhcmllcyku ICBQYXJhbWV0ZXIKQEAgLTMwNiwxMSArMzA2LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKICAgICAgcmV0dXJuICRw cmVsaW5rX2FyZ3MKICB9CiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWlu dGVycC5leHAJMjAxMS0wNy0wMSAyMToxMjoxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEx LTA4LTEwIDE4OjMyOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEwOCwxNCArMTA4LDIxIEBAIHBy b2Mgc3RyaXBfZGVidWcge2Rlc3R9IHsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDItMjQgMTU6MDk6MDgu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMi0wNi0wMiAyMDowNDo1Ni4xMzUzNjk2ODcgKzAy MDAKK0BAIC0xMDksMTQgKzEwOSwyMSBAQCBwcm9jIHN0cmlwX2RlYnVnIHtkZXN0fSB7CiAgICAg IH0KICB9CiAgCkBAIC0zMzQsNyArMzM0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgCWdkYl90ZXN0X25vX291 dHB1dCAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDEiCiAgICAgIH0gZWxzZWlmIHshIFtnZGJf YnJlYWtwb2ludCAkZnVuYyBhbGxvdy1wZW5kaW5nXX0gewogIAlyZXR1cm4KLUBAIC0xNDEsMjEg KzE0NywyMSBAQCBwcm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9CitAQCAt MTQyLDIxICsxNDksMjEgQEAgcHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2VtZW50 fQogIAkgICAgZXhwX2NvbnRpbnVlCiAgCX0KICAJLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBc XC4/KF9fR0lfKT8kZnVuYyBcXCguKlxcKSBhdCAuKjpcWzAtOVxdK1xyXG4uKiRnZGJfcHJvbXB0 ICQiIHsKQEAgLTM1MywxMyArMzUzLDEzIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogIAkJcGFzcyAkdGVzdAogIAkg ICAgfQogIAl9Ci0gCS1yZSAiU3RvcHBlZCBkdWUgdG8gc2hhcmVkIGxpYnJhcnkgZXZlbnRcclxu JGdkYl9wcm9tcHQgJCIgeworIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91cyApP3NoYXJl ZCBsaWJyYXJ5IGV2ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgewogLQkgICAgaWYgeyRmdW5jID09 ICJfZGxfZGVidWdfc3RhdGUifSB7CiArCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CiAg CQlpZiB7JGRlYnVnX3N0YXRlX2NvdW50ID09IDB9IHsKICAJCSAgICAjIEZpcnN0IHN0b3AgZG9l cyBub3QgeWV0IHJlbG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KICAJCSAgICAjIGRlc2NyaXB0 b3Igb24gcHBjNjQuCi1AQCAtMTc0LDcgKzE4MCw3IEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBjb21t YW5kIGRpc3BsYWNlbWVudH0KK0BAIC0xNzUsNyArMTgyLDcgQEAgcHJvYyByZWFjaF8xIHtmdW5j IGNvbW1hbmQgZGlzcGxhY2VtZW50fQogIAlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAogICAgICB9 CiAgCkBAIC0zNjgsNyArMzY4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgCWdkYl90ZXN0X25vX291dHB1dCAi c2V0IHN0b3Atb24tc29saWItZXZlbnRzIDAiCiAgICAgIH0KICB9Ci1AQCAtMzczLDcgKzM3OSw3 IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50IHtyZWwKK0BAIC0zNTcsNyAr MzY0LDcgQEAgcHJvYyB0ZXN0X2F0dGFjaCB7ZmlsZSBkaXNwbGFjZW1lbnQge3JlbAogIH0KICAK ICBwcm9jIHRlc3RfbGQge2ZpbGUgaWZtYWluIHRyeW5vc3ltIGRpc3BsYWNlbWVudH0gewpAQCAt Mzc3LDcgKzM3Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogIAogICAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBm aWxlJy1jb21tYW5kIGxvYWRlZCAkRklMRSB3aXRoIHN5bWJvbHMuCiAgCi1AQCAtNDAxLDkgKzQw Nyw5IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKK0BAIC0zODUs OSArMzkyLDkgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAogIAln ZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzICR7b2JqZGlyfS8ke3N1YmRpcn0vJGJpbmZpbGVf dGVzdCIgInNldCBhcmdzIE9CSkRJUi8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIKICAgICAgfQog IApAQCAtMzg5LDcgKzM4OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogIAogICAgICBpZiAkaWZtYWluIHsKICAJ cmVhY2ggIm1haW4iIGNvbnRpbnVlICJOT05FIgotQEAgLTQxNSw3ICs0MjEsNyBAQCBwcm9jIHRl c3RfbGQge2ZpbGUgaWZtYWluIHRyeW5vc3ltIGRpc3BsCitAQCAtMzk5LDcgKzQwNiw3IEBAIHBy b2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKICAKICAgICAgIyBUcnkgcmUt cnVuIGlmIHRoZSBuZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZlY3QuCiAgICAgIGdkYl90 ZXN0ICJraWxsIiAiIiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWRcPyBc KHkgb3IgblwpIH0gInkiCkBAIC0zOTgsMTIgKzM5OCwxMiBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKICAKICAgICAg aWYgJGlmbWFpbiB7CiAgCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxhY2VtZW50Ci1AQCAtNDQ4LDcg KzQ1NCw3IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAgICAg Z2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2Fk IgorQEAgLTQzMSw3ICs0MzgsNyBAQCBwcm9jIHRlc3RfbGQge2ZpbGUgaWZtYWluIHRyeW5vc3lt IGRpc3BsCisgCWdkYl90ZXN0ICJleGVjLWZpbGUgJGZpbGUiICJleGVjLWZpbGUgJGVzY2FwZWRm aWxlIiAibG9hZCIKICAKLSAgICAgaWYgJGlmbWFpbiB7Ci0tCXJlYWNoICJfZGxfZGVidWdfc3Rh dGUiIHJ1biAkZGlzcGxhY2VtZW50Ci0rCXJlYWNoICRzb2xpYl9icCBydW4gJGRpc3BsYWNlbWVu dAorIAlpZiAkaWZtYWluIHsKKy0JICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiIHJ1biAkZGlz cGxhY2VtZW50CisrCSAgICByZWFjaCAkc29saWJfYnAgcnVuICRkaXNwbGFjZW1lbnQKICAKLSAJ IyBVc2UgdHdvIHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMgdG8gYXZvaWQg dGltZW91dHMgZHVlCi0gCSMgdG8gc2xvdyBwcm9jZXNzaW5nIG9mIHdpbGRjYXJkIGNhcHR1cmlu ZyBsb25nIG91dHB1dAorIAkgICAgIyBVc2UgdHdvIHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxl IHN0YXRlbWVudHMgdG8gYXZvaWQgdGltZW91dHMgZHVlCisgCSAgICAjIHRvIHNsb3cgcHJvY2Vz c2luZyBvZiB3aWxkY2FyZCBjYXB0dXJpbmcgbG9uZyBvdXRwdXQKCmRpZmYgLS1naXQgYS9nZGIt ZGxvcGVuLXN0YXAtcHJvYmUucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUucGF0Y2gKaW5k ZXggNTRhM2MwMy4uOTRhNGI2MSAxMDA2NDQKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLnBh dGNoCisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS5wYXRjaApAQCAtMiwxMSArMiwxMSBAQCBG cm9tOiBHYXJ5IEJlbnNvbiA8Z2JlbnNvbkByZWRoYXQuY29tPgogVG86IEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgogTWVzc2FnZS1JRDogPDIwMTEwODEwMTMzNjA1 LkdCNzI5NEByZWRoYXQuY29tPgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvaW5m cnVuLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZydW4uYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wMS0wNCAw MDoyNjoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9pbmZy dW4uYwkyMDEyLTAxLTA0IDAwOjI2OjIxLjk2MDgzMzM5MSArMDEwMAotQEAgLTM1NCw2ICszNTQs MTMgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3RpbworLS0tIGdkYi03 LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wNi0wMiAyMTozODowNy4yMzY0 NDI4ODMgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZydW4uYwkyMDEyLTA2 LTAyIDIxOjM4OjEzLjQ1MDQ0MDUwNyArMDIwMAorQEAgLTM2MSw2ICszNjEsMTMgQEAgc3RhdGlj IHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3RpbwogIC8qIE5vbnplcm8gaWYgd2Ugd2Fu dCB0byBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB3ZSdyZSBub3RpZmllZAogICAgIG9m IHNoYXJlZCBsaWJyYXJ5IGV2ZW50cyBieSB0aGUgZHluYW1pYyBsaW5rZXIuICAqLwogIGludCBz dG9wX29uX3NvbGliX2V2ZW50czsKQEAgLTIwLDcgKzIwLDcgQEAgSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMDMvZ2RiL2luZnJ1bi5jCiAgc3RhdGljIHZvaWQKICBzaG93X3N0b3Bfb25fc29saWJf ZXZlbnRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogIAkJCSAgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLUBAIC03MzA0LDcgKzcz MTEsNyBAQCBTaG93IHN0b3BwaW5nIGZvciBzaGFyZWQgbGlicmFyeSBldmVudHMuCitAQCAtNzI2 Nyw3ICs3Mjc0LDcgQEAgU2hvdyBzdG9wcGluZyBmb3Igc2hhcmVkIGxpYnJhcnkgZXZlbnRzLgog IElmIG5vbnplcm8sIGdkYiB3aWxsIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHRoZSBk eW5hbWljIGxpbmtlclxuXAogIG5vdGlmaWVzIGdkYiBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMu ICBUaGUgbW9zdCBjb21tb24gZXZlbnQgb2YgaW50ZXJlc3RcblwKICB0byB0aGUgdXNlciB3b3Vs ZCBiZSBsb2FkaW5nL3VubG9hZGluZyBvZiBhIG5ldyBsaWJyYXJ5LiIpLApAQCAtMjksMjAgKzI5 LDIwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9pbmZydW4uYwogIAkJCSAgICBz aG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAogIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsK ICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zb2xpYi1zdnI0LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTAxLTA0IDAwOjI2OjE1 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2cjQu YwkyMDEyLTAxLTA0IDAwOjI5OjU2LjMwMzAxNDU2MiArMDEwMAotQEAgLTQ4LDYgKzQ4LDggQEAK Ky0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA2LTAy IDIxOjM4OjA3LjIzNjQ0Mjg4MyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Nv bGliLXN2cjQuYwkyMDEyLTA2LTAyIDIxOjQ0OjIzLjk3MzI5ODczNyArMDIwMAorQEAgLTQ3LDYg KzQ3LDggQEAKICAjaW5jbHVkZSAiYXV4di5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAg Ci0rI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKKysjaW5jbHVkZSAicHJvYmUuaCIKICsKICBzdGF0 aWMgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKnN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAo dm9pZCk7CiAgc3RhdGljIGludCBzdnI0X2hhdmVfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7CiAg c3RhdGljIHZvaWQgc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpOwotQEAgLTkz LDYgKzk1LDMyIEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc29saWJfYnJlYWtfbmEKK0BA IC05Miw2ICs5NCwzMiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNvbGliX2JyZWFrX25h CiAgICBOVUxMCiAgfTsKICAKQEAgLTc1LDIwICs3NSwyMCBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEwMy9nZGIvc29saWItc3ZyNC5jCiAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBia3B0 X25hbWVzW10gPQogIHsKICAgICJfc3RhcnQiLAotQEAgLTMxNCw2ICszNDIsMTIgQEAgc3RydWN0 IHN2cjRfaW5mbworQEAgLTMxMyw2ICszNDEsMTIgQEAgc3RydWN0IHN2cjRfaW5mbwogICAgQ09S RV9BRERSIGludGVycF90ZXh0X3NlY3RfaGlnaDsKICAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3Nl Y3RfbG93OwogICAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9oaWdoOwogKwogKyAgLyogU3lz dGVtVGFwIHByb2Jlcy4gICovCi0rICBWRUMgKHN0YXBfcHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJP QkVTXTsKKysgIFZFQyAocHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsKICsKICsgIC8qIE5v bnplcm8gaWYgd2UgYXJlIHVzaW5nIHRoZSBTeXN0ZW1UYXAgaW50ZXJmYWNlLiAgKi8KICsgIGlu dCB1c2luZ19wcm9iZXM7CiAgfTsKICAKICAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4g ICovCi1AQCAtMzIzLDggKzM1NywxNSBAQCBzdGF0aWMgdm9pZAorQEAgLTMyMiw4ICszNTYsMTUg QEAgc3RhdGljIHZvaWQKICBzdnI0X3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0cnVjdCBwcm9ncmFt X3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKICB7CiAgICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZv OwpAQCAtOTksMTIgKzk5LDEyIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xp Yi1zdnI0LmMKICsgICAgcmV0dXJuOwogKwogKyAgZm9yIChpID0gMDsgaSA8IE5VTV9QUk9CRVM7 IGkrKykKLSsgICAgVkVDX2ZyZWUgKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldKTsKKysg ICAgVkVDX2ZyZWUgKHByb2JlX3AsIGluZm8tPnByb2Jlc1tpXSk7CiArCiAgICB4ZnJlZSAoaW5m byk7CiAgfQogIAotQEAgLTE0NDUsNiArMTQ4NiwxMjYgQEAgZXhlY19lbnRyeV9wb2ludCAoc3Ry dWN0IGJmZCAqYWJmZCwgc3RydQorQEAgLTE0NDksNiArMTQ5MCwxMjYgQEAgZXhlY19lbnRyeV9w b2ludCAoc3RydWN0IGJmZCAqYWJmZCwgc3RydQogIAkJCQkJICAgICB0YXJnKTsKICB9CiAgCkBA IC0xMjcsMTEgKzEyNywxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWIt c3ZyNC5jCiArCXsKICsJICBpZiAoIXByb2JlX2luZm9baV0ubWFuZGF0b3J5KQogKwkgICAgewot KwkgICAgICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmU7CisrCSAgICAgIHN0cnVjdCBwcm9iZSAq cHJvYmU7CiArCSAgICAgIGludCBpeDsKICsKICsJICAgICAgZm9yIChpeCA9IDA7Ci0rCQkgICBW RUNfaXRlcmF0ZSAoc3RhcF9wcm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0sIGl4LCBwcm9iZSk7Cisr CQkgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldLCBpeCwgcHJvYmUpOwog KwkJICAgKytpeCkKICsJCXsKICsJCSAgaWYgKGxvYy0+cHNwYWNlID09IGN1cnJlbnRfcHJvZ3Jh bV9zcGFjZQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMv Z2RiL3NvbGliLXN2cjQuYwogKwkgIGluZm8tPnByb2Jlc1tpXSA9IGZpbmRfcHJvYmVzX2luX29i amZpbGUgKG9zLT5vYmpmaWxlLCAicnRsZCIsCiArCQkJCQkJICAgIHByb2JlX2luZm9baV0ubmFt ZSk7CiArCi0rCSAgaWYgKCFWRUNfbGVuZ3RoKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2ld KSkKKysJICBpZiAoIVZFQ19sZW5ndGgocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldKSkKICsJICAg IHsKICsJICAgICAgaW50IGo7CiArCiArCSAgICAgIGZvciAoaiA9IGkgLSAxOyBqID49IDA7IGot LSkKICsJCXsKLSsJCSAgVkVDX2ZyZWUgKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2pdKTsK KysJCSAgVkVDX2ZyZWUgKHByb2JlX3AsIGluZm8tPnByb2Jlc1tqXSk7CiArCQkgIGluZm8tPnBy b2Jlc1tqXSA9IE5VTEw7CiArCQl9CiArCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWItc3ZyNC5jCiArCiArCSAgZm9yIChpID0gMDsgaSA8 IE5VTV9QUk9CRVM7IGkrKykKICsJICAgIHsKLSsJICAgICAgc3RydWN0IHN0YXBfcHJvYmUgKnBy b2JlOworKwkgICAgICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwogKwkgICAgICBpbnQgaXg7CiArCiAr CSAgICAgIGZvciAoaXggPSAwOwotKwkJICAgVkVDX2l0ZXJhdGUgKHN0YXBfcHJvYmVfcCwgaW5m by0+cHJvYmVzW2ldLCBpeCwgcHJvYmUpOworKwkJICAgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIGlu Zm8tPnByb2Jlc1tpXSwgaXgsIHByb2JlKTsKICsJCSAgICsraXgpCiArCQljcmVhdGVfc29saWJf ZXZlbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwgcHJvYmUtPmFkZHJlc3MpOwogKwkgICAgfQpAQCAt MjMxLDcgKzIzMSw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0 LmMKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGdkYl9iZmRfbG9va3VwX3N5bWJvbC4gICovCiAg CiAgc3RhdGljIGludAotQEAgLTE0OTMsMTAgKzE2NTQsMTggQEAgZW5hYmxlX2JyZWFrIChzdHJ1 Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE0OTcsMTAgKzE2NTgsMTggQEAgZW5hYmxlX2Jy ZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgogICAgYXNlY3Rpb24gKmludGVycF9zZWN0 OwogICAgZ2RiX2J5dGUgKmludGVycF9uYW1lOwogICAgQ09SRV9BRERSIHN5bV9hZGRyOwpAQCAt MjQyLDcgKzI0Miw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0 LmMKICAKICsgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCiArICAgIHsKLSsgICAg ICBWRUNfZnJlZSAoc3RhcF9wcm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0pOworKyAgICAgIFZFQ19m cmVlIChwcm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0pOwogKyAgICAgIGluZm8tPnByb2Jlc1tpXSA9 IE5VTEw7CiArICAgIH0KICsgIGluZm8tPnVzaW5nX3Byb2JlcyA9IDA7CkBAIC0yNTAsNyArMjUw LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2cjQuYwogICAgLyog SWYgd2UgYWxyZWFkeSBoYXZlIGEgc2hhcmVkIGxpYnJhcnkgbGlzdCBpbiB0aGUgdGFyZ2V0LCBh bmQKICAgICAgIHJfZGVidWcgY29udGFpbnMgcl9icmssIHNldCB0aGUgYnJlYWtwb2ludCB0aGVy ZSAtIHRoaXMgc2hvdWxkCiAgICAgICBtZWFuIHJfYnJrIGhhcyBhbHJlYWR5IGJlZW4gcmVsb2Nh dGVkLiAgQXNzdW1lIHRoZSBkeW5hbWljIGxpbmtlcgotQEAgLTE1MjgsNyArMTY5Nyw3IEBAIGVu YWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KK0BAIC0xNTMyLDcgKzE3MDEs NyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCiAgCSBUaGF0IGtu b3dsZWRnZSBpcyBlbmNvZGVkIGluIHRoZSBhZGRyZXNzLCBpZiBpdCdzIFRodW1iIHRoZSBsb3cg Yml0CiAgCSBpcyAxLiAgSG93ZXZlciwgd2UndmUgc3RyaXBwZWQgdGhhdCBpbmZvIGFib3ZlIGFu ZCBpdCdzIG5vdCBjbGVhcgogIAkgd2hhdCBhbGwgdGhlIGNvbnNlcXVlbmNlcyBhcmUgb2YgcGFz c2luZyBhIG5vbi1hZGRyX2JpdHNfcmVtb3ZlJ2QKQEAgLTI1OSw3ICsyNTksNyBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWItc3ZyNC5jCiAgCSBmaW5kX3BjX3NlY3Rpb24g dmVyaWZpZXMgd2Uga25vdyBhYm91dCB0aGUgYWRkcmVzcyBhbmQgaGF2ZSBzb21lCiAgCSBob3Bl IG9mIGNvbXB1dGluZyB0aGUgcmlnaHQga2luZCBvZiBicmVha3BvaW50IHRvIHVzZSAodmlhCiAg CSBzeW1ib2wgaW5mbykuICBJdCBkb2VzIG1lYW4gdGhhdCBHREIgbmVlZHMgdG8gYmUgcG9pbnRl ZCBhdCBhCi1AQCAtMTU2Niw3ICsxNzM1LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9p bmZvICppbmZvLCBpbgorQEAgLTE1NzAsNyArMTczOSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0 IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50 ZXJwX3NlY3QpOwogIAkgICAgfQogIApAQCAtMjY4LDcgKzI2OCw3IEBAIEluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKICAJICByZXR1cm4gMTsKICAJfQogICAgICB9 Ci1AQCAtMTcyMSw3ICsxODkwLDggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvLCBpbgorQEAgLTE3MjUsNyArMTg5NCw4IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbywgaW4KICAKICAgICAgICBpZiAoc3ltX2FkZHIgIT0gMCkKICAJewpAQCAtMjc4 LDcgKzI3OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMK ICAJICB4ZnJlZSAoaW50ZXJwX25hbWUpOwogIAkgIHJldHVybiAxOwogIAl9Ci1AQCAtMTc0Nyw3 ICsxOTE3LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAg LTE3NTEsNyArMTkyMSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywg aW4KICAJICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRh cmdldF9nZGJhcmNoLAogIAkJCQkJCQkgc3ltX2FkZHIsCiAgCQkJCQkJCSAmY3VycmVudF90YXJn ZXQpOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9z b2xpYi1zdnI0LmMKICAJICByZXR1cm4gMTsKICAJfQogICAgICB9Ci1AQCAtMTc2Myw3ICsxOTMz LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE3Njcs NyArMTkzNyw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJ ICAgICAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyICh0YXJn ZXRfZ2RiYXJjaCwKICAJCQkJCQkJICAgICBzeW1fYWRkciwKICAJCQkJCQkJICAgICAmY3VycmVu dF90YXJnZXQpOwpAQCAtMjk2LDE3ICsyOTYsMTcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MDMvZ2RiL3NvbGliLXN2cjQuYwogIAkgICAgICByZXR1cm4gMTsKICAJICAgIH0KICAJfQotQEAg LTI1MzksNCArMjcwOSw1IEBAIF9pbml0aWFsaXplX3N2cjRfc29saWIgKHZvaWQpCitAQCAtMjU0 Myw0ICsyNzEzLDUgQEAgX2luaXRpYWxpemVfc3ZyNF9zb2xpYiAodm9pZCkKICAgIHN2cjRfc29f b3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCA9IGVsZl9sb29rdXBfbGliX3N5bWJvbDsKICAg IHN2cjRfc29fb3BzLnNhbWUgPSBzdnI0X3NhbWU7CiAgICBzdnI0X3NvX29wcy5rZWVwX2RhdGFf aW5fY29yZSA9IHN2cjRfa2VlcF9kYXRhX2luX2NvcmU7CiArICBzdnI0X3NvX29wcy51cGRhdGVf YnJlYWtwb2ludHMgPSBzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50czsKICB9Ci1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWIuYworSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3NvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTAz Lm9yaWcvZ2RiL3NvbGliLmMJMjAxMi0wMS0wNCAwMDoyNjoxNS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi5jCTIwMTItMDEtMDQgMDA6Mjk6MDcuNzUx MjAwMDM4ICswMTAwCi1AQCAtMTIxNCw2ICsxMjE0LDE4IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMg KGNoYXIgKmlnbm9yZWQsIGludAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvc29s aWIuYwkyMDEyLTA2LTAyIDIxOjM4OjA3LjIzNjQ0Mjg4MyArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL3NvbGliLmMJMjAxMi0wNi0wMiAyMTozODoxMy40NTU0NDA1MDcgKzAyMDAK K0BAIC0xMjE2LDYgKzEyMTYsMTggQEAgbm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdub3Jl ZCwgaW50CiAgICBvYmpmaWxlX3B1cmdlX3NvbGlicyAoKTsKICB9CiAgCkBAIC0zMjUsMjMgKzMy NSwyMyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWIuYwogIC8qIFJlbG9h ZCBzaGFyZWQgbGlicmFyaWVzLCBidXQgYXZvaWQgcmVsb2FkaW5nIHRoZSBzYW1lIHN5bWJvbCBm aWxlCiAgICAgd2UgYWxyZWFkeSBoYXZlIGxvYWRlZC4gICovCiAgCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEwMy9nZGIvc29saWIuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Nv bGliLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL3NvbGli LmgJMjAxMS0wOC0zMCAwNDo0ODowNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTAzL2dkYi9zb2xpYi5oCTIwMTItMDEtMDQgMDA6Mjc6NDAuNDE1NTMzNjg2ICswMTAwCi1A QCAtOTEsNCArOTEsOCBAQCBleHRlcm4gQ09SRV9BRERSIGJmZF9sb29rdXBfc3ltYm9sX2Zyb21f Ci0gCQkJCQkJCQkgIHZvaWQgKiksCi0gCQkJCQkJdm9pZCAqZGF0YSk7CistLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi9zb2xpYi5oCTIwMTItMDYtMDIgMjE6Mzg6MDcuMjM2NDQyODgz ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc29saWIuaAkyMDEyLTA2LTAyIDIx OjM4OjEzLjQ2NDQ0MDUwMyArMDIwMAorQEAgLTkxLDQgKzkxLDggQEAgZXh0ZXJuIENPUkVfQURE UiBnZGJfYmZkX2xvb2t1cF9zeW1ib2xfZgorIAkJCQkJCQkJICAgICAgdm9pZCAqKSwKKyAJCQkJ CQkgICAgdm9pZCAqZGF0YSk7CiAgCiArLyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29s aWIgZXZlbnQgYnJlYWtwb2ludHMgYXMgYXBwcm9wcmlhdGUuICAqLwogKwogK2V4dGVybiB2b2lk IHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyAodm9pZCk7CiArCiAgI2VuZGlmIC8qIFNPTElCX0gg Ki8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpc3QuaAorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL3NvbGlzdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEwMy5vcmlnL2dkYi9zb2xpc3QuaAkyMDExLTA4LTA5IDE0OjUxOjQ3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGlzdC5oCTIwMTItMDEtMDQgMDA6 MjY6MjEuOTYyODMzMzgzICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9z b2xpc3QuaAkyMDEyLTA2LTAyIDIxOjM4OjA3LjIzNjQ0Mjg4MyArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3NvbGlzdC5oCTIwMTItMDYtMDIgMjE6Mzg6MTMuNDY1NDQwNTAzICsw MjAwCiBAQCAtMTQ5LDYgKzE0OSwxMyBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcwogICAgICAgICBj b3JlIGZpbGUgKGluIHBhcnRpY3VsYXIsIGZvciByZWFkb25seSBzZWN0aW9ucykuICAqLwogICAg ICBpbnQgKCprZWVwX2RhdGFfaW5fY29yZSkgKENPUkVfQUREUiB2YWRkciwKCmRpZmYgLS1naXQg YS9nZGItZXhpdC13YXJuaW5nLnBhdGNoIGIvZ2RiLWV4aXQtd2FybmluZy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzY2MxNS4uMDAwMDAwMAotLS0gYS9nZGItZXhpdC13 YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDIvbXNnMDA2NjQuaHRtbAotU3ViamVjdDog UkZBOiBmaXggUFIgYnJlYWtwb2ludHMvMTM3NzYKLQotSSdkIGFwcHJlY2lhdGUgY29tbWVudHMg b24gdGhpcyBwYXRjaC4KLUkgaGF2ZSBubyBpZGVhIHdoZXRoZXIgaXQgaXMgdGhlIGJlc3Qgd2F5 IHRvIGZpeCB0aGUgcHJvYmxlbS4KLQotQnVnIDEzNzc2IGNvbmNlcm5zICduZXh0J2luZyBvdmVy IGFuIGV4aXQuICBGb3IgdGhlIHRyaXZpYWw6Ci0KLSAgICAjaW5jbHVkZSA8c3RkbGliLmg+IAot ICAgIGludAotICAgIG1haW4gKHZvaWQpCi0gICAgewotICAgICAgZXhpdCAoMCk7Ci0gICAgfQot Ci1XZSBnZXQgdGhpcyBiZWhhdmlvcjoKLQotICAgIChnZGIpIHN0YXJ0Ci0gICAgVGVtcG9yYXJ5 IGJyZWFrcG9pbnQgMSwgbWFpbiAoKSBhdCBleGl0MC5jOjUKLSAgICA1ICAgICAgZXhpdCAoMCk7 Ci0gICAgKGdkYikgbmV4dAotICAgIFtJbmZlcmlvciAxIChwcm9jZXNzIDI0MjgpIGV4aXRlZCBu b3JtYWxseV0KLSAgICB3YXJuaW5nOiBFcnJvciByZW1vdmluZyBicmVha3BvaW50IDAKLSAgICB3 YXJuaW5nOiBFcnJvciByZW1vdmluZyBicmVha3BvaW50IDAKLSAgICB3YXJuaW5nOiBFcnJvciBy ZW1vdmluZyBicmVha3BvaW50IDAKLQotVGhlIGJ1ZyBpcyB0aGF0IGV4aXRfaW5mZXJpb3IgZW5k cyB1cCBjYWxsaW5nIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQsCi13aGljaCB0cmllcyB0byBk ZWxldGUgdGhlIGxvbmdqbXAgYnJlYWtwb2ludHMgLS0gYnV0IGFzIHRoZSBpbmZlcmlvciBpcwot ZGVhZCwgdGhpcyBmYWlscy4KLQotVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0gYnkgbW92 aW5nIHRoZSBicmVha3BvaW50X2luaXRfaW5mZXJpb3IKLWNhbGwgZWFybGllciBpbiBnZW5lcmlj X21vdXJuX2luZmVyaW9yLiAgVGhpcyBjYXVzZXMgdGhlIGJyZWFrcG9pbnRzIHRvCi1iZSBtYXJr ZWQgYXMgdW5pbnNlcnRlZCBiZWZvcmUgdGhleSBhcmUgZGVsZXRlZC4KLQotV2hpbGUgZG9pbmcg dGhpcyBJIG5vdGljZWQgdGhhdCBhZnRlciB0aGUgaW5mZXJpb3IgZXhpdHMsIHdlIGFyZSBsZWZ0 Ci13aXRoIGEgc3RlcC1yZXN1bWUgYnJlYWtwb2ludDoKLQotKGdkYikgbWFpbnQgaW5mbyBiCi1O dW0gICAgIFR5cGUgICAgICAgICAgIERpc3AgRW5iIEFkZHJlc3MgICAgICAgICAgICBXaGF0Ci1b Li4uXQotMCAgICAgICBzdGVwIHJlc3VtZSAgICBkc3RwIHkgICAweDAwMDAwMDAwMDA0MDA0ZDIg IGluZiAxIHRocmVhZCAxCi0Jc3RvcCBvbmx5IGluIHRocmVhZCAxCi0KLVRoZSBicmVha3BvaW50 LmMgcGF0Y2ggY2F1c2VzIHRoaXMgdG8gYmUgcmVtb3ZlZCBhcyB3ZWxsLgotCi1CdWlsdCBhbmQg cmVndGVzdGVkIG9uIHg4Ni02NCBGZWRvcmEgMTYuCi0KLVRvbQotCi0yMDEyLTAyLTI4ICBUb20g VHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0KLQlQUiBicmVha3BvaW50cy8xMzc3NjoKLQkq IHRhcmdldC5jIChnZW5lcmljX21vdXJuX2luZmVyaW9yKTogQ2FsbCBicmVha3BvaW50X2luaXRf aW5mZXJpb3IKLQllYXJsaWVyLgotCSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2luaXRfaW5m ZXJpb3IpOiBEZWxldGUgc3RlcC1yZXN1bWUKLQlicmVha3BvaW50cy4KLQotZGlmZiAtLWdpdCBh L2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1pbmRleCBkYjA1Yjk3Li4wNDhj YzYzIDEwMDY0NAotLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwotKysrIGIvZ2RiL2JyZWFrcG9pbnQu YwotQEAgLTMzNDEsNiArMzM0MSwxMCBAQCBicmVha3BvaW50X2luaXRfaW5mZXJpb3IgKGVudW0g aW5mX2NvbnRleHQgY29udGV4dCkKLSAJICAgKGdkYikgdGFyIHJlbSA6OTk5OSAgICAgIyByZW1v dGUgV2luZG93cyBnZGJzZXJ2ZXIuCi0gCSovCi0gCi0rICAgICAgY2FzZSBicF9zdGVwX3Jlc3Vt ZToKLSsKLSsJLyogQWxzbyByZW1vdmUgc3RlcC1yZXN1bWUgYnJlYWtwb2ludHMuICAqLwotKwot IAlkZWxldGVfYnJlYWtwb2ludCAoYik7Ci0gCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL2dkYi90 YXJnZXQuYyBiL2dkYi90YXJnZXQuYwotaW5kZXggMWY0MDhmNi4uNjVhNmMyMyAxMDA2NDQKLS0t LSBhL2dkYi90YXJnZXQuYwotKysrIGIvZ2RiL3RhcmdldC5jCi1AQCAtMzU4MywxMyArMzU4Mywx NCBAQCBnZW5lcmljX21vdXJuX2luZmVyaW9yICh2b2lkKQotICAgcHRpZCA9IGluZmVyaW9yX3B0 aWQ7Ci0gICBpbmZlcmlvcl9wdGlkID0gbnVsbF9wdGlkOwotIAotKyAgYnJlYWtwb2ludF9pbml0 X2luZmVyaW9yIChpbmZfZXhpdGVkKTsKLSsKLSAgIGlmICghcHRpZF9lcXVhbCAocHRpZCwgbnVs bF9wdGlkKSkKLSAgICAgewotICAgICAgIGludCBwaWQgPSBwdGlkX2dldF9waWQgKHB0aWQpOwot ICAgICAgIGV4aXRfaW5mZXJpb3IgKHBpZCk7Ci0gICAgIH0KLSAKLS0gIGJyZWFrcG9pbnRfaW5p dF9pbmZlcmlvciAoaW5mX2V4aXRlZCk7Ci0gICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKLSAKLSAg IHJlb3Blbl9leGVjX2ZpbGUgKCk7Ci0KCmRpZmYgLS1naXQgYS9nZGItZXhwYW5kLWN4eC1hY2Nl bC5wYXRjaCBiL2dkYi1leHBhbmQtY3h4LWFjY2VsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAyNzM3YmZkLi4wMDAwMDAwCi0tLSBhL2dkYi1leHBhbmQtY3h4LWFjY2VsLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD03ODc0ODcKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEyLTAyL21zZzAwMTEyLmh0bWwKLVN1YmplY3Q6IFJGQzogZXh0ZW5kIHN5 bXRhYnNfZnJvbV9maWxlbmFtZSBza2lwcGluZyBmb3IgQysrCi0KLUknZCBhcHByZWNpYXRlIGNv bW1lbnRzIG9uIHRoaXMuICBCYXJyaW5nIGNvbW1lbnRzIEkgd2lsbCBjaGVjayBpdCBpbgotYWZ0 ZXIgYSBjb3VwbGUgZGF5cy4KLQotQSB3aGlsZSBhZ28gRG91ZyBjb21taXR0ZWQgYSBwYXRjaCB0 byBjaGFuZ2UgbGluZXNwZWMgdG8gc2tpcAotc3ltdGFic19mcm9tX2ZpbGVuYW1lIHdoZW4gcG9z c2libGUuICBUaGlzIHdhcyBhbiBpbXBvcnRhbnQgcGVyZm9ybWFuY2UKLWltcHJvdmVtZW50Lgot Ci1XZSBnb3QgYSBidWcgcmVwb3J0IGluIFJlZCBIYXQgYnVnemlsbGEgYXNraW5nIHRoYXQgdGhp cyBiZSBleHRlbmRlZCB0bwotQysrIHF1YWxpZmllZCBuYW1lczoKLQotICAgIGh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NDg3Ci0KLVRoaXMgcGF0Y2ggaW1w bGVtZW50cyB0aGlzIGlkZWEuCi0KLUJ1aWx0IGFuZCByZWd0ZXN0ZWQgb24geDg2LTY0IEZlZG9y YSAxNS4KLQotVG9tCi0KLTIwMTItMDItMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNv bT4KLQotCSogbGluZXNwZWMuYyAoZGVjb2RlX2xpbmVfaW50ZXJuYWwpOiBTa2lwIHN5bXRhYnNf ZnJvbV9maWxlbmFtZQotCXdoZW4gd2UgaGF2ZSBhIEMrKyBxdWFsaWZpZWQgbmFtZS4KLQotZGlm ZiAtLWdpdCBhL2dkYi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKLWluZGV4IGRhODhkMTcu LjNmNTNiOGUgMTAwNjQ0Ci0tLS0gYS9nZGIvbGluZXNwZWMuYwotKysrIGIvZ2RiL2xpbmVzcGVj LmMKLUBAIC05MTIsOSArOTEyLDExIEBAIGRlY29kZV9saW5lX2ludGVybmFsIChzdHJ1Y3QgbGlu ZXNwZWNfc3RhdGUgKnNlbGYsIGNoYXIgKiphcmdwdHIpCi0gICAvKiBGaXJzdCB0aGluZ3MgZmly c3Q6IGlmIEFSR1BUUiBzdGFydHMgd2l0aCBhIGZpbGVuYW1lLCBnZXQgaXRzCi0gICAgICBzeW10 YWIgYW5kIHN0cmlwIHRoZSBmaWxlbmFtZSBmcm9tIEFSR1BUUi4KLSAgICAgIEF2b2lkIGNhbGxp bmcgc3ltdGFiX2Zyb21fZmlsZW5hbWUgaWYgd2Uga25vdyBjYW4sCi0tICAgICBpdCBjYW4gYmUg ZXhwZW5zaXZlLiAgKi8KLSsgICAgIGl0IGNhbiBiZSBleHBlbnNpdmUuICBXZSBrbm93IHdlIGNh biBhdm9pZCB0aGUgY2FsbCBpZiB3ZSBzZWUgYQotKyAgICAgc2luZ2xlIHdvcmQgKGUuZy4sICJi cmVhayBOQU1FIikgb3IgaWYgd2Ugc2VlIGEgcXVhbGlmaWVkIEMrKwotKyAgICAgbmFtZSAoImJy ZWFrIFFVQUw6Ok5BTUUiKS4gICovCi0gCi0tICBpZiAoKnAgIT0gJ1wwJykKLSsgIGlmICgqcCAh PSAnXDAnICYmIHBbMV0gIT0gJzonKQotICAgICB7Ci0gICAgICAgVFJZX0NBVENIIChmaWxlX2V4 Y2VwdGlvbiwgUkVUVVJOX01BU0tfRVJST1IpCi0gCXsKLQoKZGlmZiAtLWdpdCBhL2dkYi1mb3J0 cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2ggYi9nZGItZm9ydHJhbi1jb21tb24tcmVkdWNlLnBhdGNo CmluZGV4IGZlMTE5OWYuLjIzOGIzNTUgMTAwNjQ0Ci0tLSBhL2dkYi1mb3J0cmFuLWNvbW1vbi1y ZWR1Y2UucGF0Y2gKKysrIGIvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaApAQCAtMSw4 ICsxLDggQEAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9mLWxhbmcuYworSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDExMDExNy5vcmlnL2dkYi9mLWxhbmcuYwkyMDExLTAxLTA3IDIwOjM2OjE2LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtbGFuZy5jCTIwMTEtMDEt MTcgMTU6NTY6MDcuMDAwMDAwMDAwICswMTAwCi1AQCAtNTcsMjAgKzU3LDYgQEAgdHlwZWRlZiBz dHJ1Y3Qgc2F2ZWRfYmZfc3ltbnVtIFNBVkVEX0JGLAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIu b3JpZy9nZGIvZi1sYW5nLmMJMjAxMi0wMy0wMiAyMDoyOTowMC4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9mLWxhbmcuYwkyMDEyLTA2LTAyIDE5OjEzOjMxLjUy MDA1MDY1NCArMDIwMAorQEAgLTU5LDIwICs1OSw2IEBAIHR5cGVkZWYgc3RydWN0IHNhdmVkX2Jm X3N5bW51bSBTQVZFRF9CRiwKICAvKiBMb2NhbCBmdW5jdGlvbnMgKi8KICAKICBleHRlcm4gdm9p ZCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKTsKQEAgLTIzLDcgKzIzLDcgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtbGFuZy5jCiAgCiAgc3RhdGljIHZvaWQgZl9wcmlu dGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0p OwogIHN0YXRpYyB2b2lkIGZfZW1pdF9jaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsCi1A QCAtNDYxLDE4NSArNDQ3LDcgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCkKK0BAIC0z ODUsMTg1ICszNzEsNyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQogICAgYWRkX2xh bmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKICB9CiAgCkBAIC0yMDksNyArMjA5LDcgQEAgSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtbGFuZy5jCiAgCiAgLyogVGhpcyByb3V0aW5l IGZpbmRzIHRoZSBmaXJzdCBlbmNvdW50cmVkIENPTU1PTiBibG9jayBuYW1lZCAibmFtZSIgCiAg ICAgdGhhdCBiZWxvbmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8KLUBAIC02NjIsMTkzICs0 NzAsMyBAQCBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKm5hbWUsIGNoCitAQCAtNTg2 LDE5MyArMzk0LDMgQEAgZmluZF9jb21tb25fZm9yX2Z1bmN0aW9uIChjb25zdCBjaGFyICpuYQog ICAgICB9CiAgICByZXR1cm4gKE5VTEwpOwogIH0KQEAgLTQwMywxOCArNDAzLDE5IEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9mLWxhbmcuYwogLSAgc2F2ZWRfZnVuY3Rpb25fbGlz dCA9IE5VTEw7CiAtfQogLSNlbmRpZgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2Yt bGFuZy5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTEtMDEtMTcg MTU6NDc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZi1s YW5nLmgJMjAxMS0wMS0xNyAxNTo1NDoxNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NiwxNCArNzYs OSBAQCB0eXBlZGVmIHN0cnVjdCBzYXZlZF9mNzdfY29tbW9uIFNBVkVEX0Y3CistLS0gZ2RiLTcu NC41MC4yMDEyMDYwMi5vcmlnL2dkYi9mLWxhbmcuaAkyMDEyLTA2LTAyIDE5OjExOjU0LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtbGFuZy5oCTIwMTItMDYt MDIgMTk6MTM6NTUuMzQ1MzE3OTcwICswMjAwCitAQCAtNzYsMTUgKzc2LDEwIEBAIHR5cGVkZWYg c3RydWN0IHNhdmVkX2Y3N19jb21tb24gU0FWRURfRjcKICB0eXBlZGVmIHN0cnVjdCBjb21tb25f ZW50cnkgQ09NTU9OX0VOVFJZLCAqQ09NTU9OX0VOVFJZX1BUUjsKICAKICBleHRlcm4gU0FWRURf Rjc3X0NPTU1PTl9QVFIgaGVhZF9jb21tb25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01N T04gICovCiAtZXh0ZXJuIFNBVkVEX0Y3N19DT01NT05fUFRSIHRhaWxfY29tbW9uX2xpc3Q7CS8q IFB0ciB0byBsYXN0IHNhdmVkIENPTU1PTiAgKi8KIC1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9Q VFIgY3VycmVudF9jb21tb247CS8qIFB0ciB0byBjdXJyZW50IENPTU1PTiAqLwogIAotIGV4dGVy biBTQVZFRF9GNzdfQ09NTU9OX1BUUiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwg Y2hhciAqKTsKKyBleHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgZmluZF9jb21tb25fZm9yX2Z1 bmN0aW9uIChjb25zdCBjaGFyICosCisgCQkJCQkJICAgICAgY29uc3QgY2hhciAqKTsKICAKIC0j ZGVmaW5lIFVOSU5JVElBTElaRURfU0VDTlVNIC0xCiAtI2RlZmluZSBDT01NT05fTkVFRFNfUEFU Q0hJTkcoYmxrKSAoKGJsayktPnNlY251bSA9PSBVTklOSVRJQUxJWkVEX1NFQ05VTSkKQEAgLTQy MiwxMCArNDIzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9mLWxhbmcuaAog ICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfT1JJR0lOQUwgIiNCTE5LX0NPTSIJLyogWExGIGFz c2lnbmVkICAqLwogICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfTUY3NyAgICAgIl9fQkxOS19f IgkvKiBNRjc3IGFzc2lnbmVkICAqLwogICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfTE9DQUwg ICAgIl9fQkxBTksiCS8qIExvY2FsIEdEQiAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcv Z2RiL2YtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtdmFscHJp bnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvZi12YWxw cmludC5jCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvZi12YWxwcmludC5jCTIwMTEtMDEtMTcgMTU6NTQ6MzYuMDAwMDAwMDAw ICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAx Mi0wNi0wMiAxOToxMTo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9mLXZhbHByaW50LmMJMjAxMi0wNi0wMiAxOToxNDoxMS42MjUzMTM0MzIgKzAyMDAKIEBA IC0zNSwxMCArMzUsNiBAQAogICNpbmNsdWRlICJjb21tYW5kLmgiCiAgI2luY2x1ZGUgImJsb2Nr LmgiCkBAIC00MzYsOCArNDM3LDggQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2Yt dmFscHJpbnQuYwogLQogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZvaWQp OwogIHN0YXRpYyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLSBzdGF0 aWMgdm9pZCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKik7Ci1AQCAtNjA0LDY3ICs2 MDAsNiBAQCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgCisgc3RhdGlj IHZvaWQgbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjb25zdCBjaGFyICopOworQEAgLTUzNSw2 NyArNTMxLDYgQEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50CiAgCQkg ICAgIGNvbW5hbWUsIGZ1bm5hbWUpOwogIH0KICAKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1j b21tb24ucGF0Y2ggYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKaW5kZXggNjZkNDZiOS4uNzc4 YzhjZiAxMDA2NDQKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCisrKyBiL2dkYi1mb3J0 cmFuLWNvbW1vbi5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2Fy ZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2R3 YXJmMnJlYWQuYwkyMDExLTA3LTIyIDIwOjEyOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3LTIyIDIwOjE3OjIyLjAwMDAw MDAwMCArMDIwMAotQEAgLTc5NjksMTIgKzc5NjksMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cgorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZHdh cmYycmVhZC5jCTIwMTItMDYtMDIgMjE6MzI6NDEuNzQ2NTY3Mjk5ICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDYtMDIgMjE6MzI6NTQuMzA0NTYy NTAwICswMjAwCitAQCAtOTczNiwxMiArOTczNiwxNCBAQCByZWFkX3NldF90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RyCiAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHNldF90eXBl LCBjdSk7CiAgfQogIApAQCAtMTksNyArMTksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZHdhcmYycmVhZC5jCiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0 IHN5bWJvbCAqc3ltOwogICAgQ09SRV9BRERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwotQEAgLTc5 OTksMjAgKzgwMDEsNjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAorQEAgLTk3NjYsMjAgKzk3NjgsNjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVf aW5mbyAqZGllLAogICAgICB9CiAgICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQogICAgICB7CkBA IC04Nyw3ICs4Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFk LmMKICAgICAgfQogIH0KICAKLUBAIC0xMTY5NSw2ICsxMTc0NCwxMyBAQCBuZXdfc3ltYm9sX2Z1 bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCitAQCAtMTM2NjEsNiArMTM3MTAsMTMgQEAgbmV3 X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogIAkgICAgewogIAkgICAgICB2 YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKICAJICAgICAgYXR0cjIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAJICAgICAgaWYgKFNZ TUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDCiAgCQkgICYmIFNZTUJPTF9WQUxVRV9BRERS RVNTIChzeW0pID09IDAKICAJCSAgJiYgIWR3YXJmMl9wZXJfb2JqZmlsZS0+aGFzX3NlY3Rpb25f YXRfemVybykKLUBAIC0xMTg2Nyw2ICsxMTkyMywxMSBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzCitAQCAtMTM4MjUsNiArMTM4ODEsMTEgQEAgbmV3X3N5bWJvbF9m dWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExP Q19UWVBFREVGOwogIAkgIGxpc3RfdG9fYWRkID0gJmdsb2JhbF9zeW1ib2xzOwogIAkgIGJyZWFr OwpAQCAtMTEzLDExICsxMTMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3 YXJmMnJlYWQuYwogIAlkZWZhdWx0OgogIAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUuICBI b3BlZnVsbHkgd2UgYXJlbid0IHByb2Nlc3NpbmcKICAJICAgICB0cmFzaCBkYXRhLCBidXQgc2lu Y2Ugd2UgbXVzdCBzcGVjaWZpY2FsbHkgaWdub3JlIHRoaW5ncwotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2YtbGFuZy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1s YW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2YtbGFu Zy5jCTIwMTEtMDctMjIgMjA6MTc6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvZi1sYW5nLmMJMjAxMS0wNy0yMiAyMDoxNzoyMi4wMDAwMDAwMDAgKzAyMDAK LUBAIC0zNzEsMjcgKzM3MSwzIEBAIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZvaWQpCistLS0g Z2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9mLWxhbmcuYwkyMDEyLTA2LTAyIDIxOjMyOjQx Ljc0NjU2NzI5OSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtbGFuZy5jCTIw MTItMDYtMDIgMjE6MzI6NTQuMzA1NTYyNDk5ICswMjAwCitAQCAtMzcwLDI3ICszNzAsMyBAQCBf aW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQogIAogICAgYWRkX2xhbmd1YWdlICgmZl9sYW5n dWFnZV9kZWZuKTsKICB9CkBAIC0xMjgsNyArMTI4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2YtbGFuZy5jCiAtICAgdGhhdCBiZWxvbmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1l LiAgKi8KIC0KIC1TQVZFRF9GNzdfQ09NTU9OX1BUUgotLWZpbmRfY29tbW9uX2Zvcl9mdW5jdGlv biAoY2hhciAqbmFtZSwgY2hhciAqZnVuY25hbWUpCistZmluZF9jb21tb25fZm9yX2Z1bmN0aW9u IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIC17CiAtCiAtICBTQVZF RF9GNzdfQ09NTU9OX1BUUiB0bXA7CkBAIC0xNDUsMTEgKzE0NSwxMSBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmMKIC0gICAgfQogLSAgcmV0dXJuIChOVUxMKTsKIC19 Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9mLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAx MTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wNy0yMiAyMDoxNzoxNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAkyMDExLTA3LTIyIDIwOjE3 OjIyLjAwMDAwMDAwMCArMDIwMAotQEAgLTUyLDM2ICs1Miw4IEBAIGVudW0gZjkwX3JhbmdlX3R5 cGUKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTItMDYtMDIg MjE6MzI6NDEuNzQ2NTY3Mjk5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1s YW5nLmgJMjAxMi0wNi0wMiAyMTozMjo1NC4zMjI1NjI0OTMgKzAyMDAKK0BAIC01MiwzNyArNTIs OCBAQCBlbnVtIGY5MF9yYW5nZV90eXBlCiAgICAgIE5PTkVfQk9VTkRfREVGQVVMVAkJLyogIihs b3c6aGlnaCkiICAqLwogICAgfTsKICAKQEAgLTE3OCw3ICsxNzgsOCBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmgKIC0KIC1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9Q VFIgaGVhZF9jb21tb25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCiAtCi0t ZXh0ZXJuIFNBVkVEX0Y3N19DT01NT05fUFRSIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hh ciAqLCBjaGFyICopOworLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BUUiBmaW5kX2NvbW1vbl9m b3JfZnVuY3Rpb24gKGNvbnN0IGNoYXIgKiwKKy0JCQkJCQkgICAgICBjb25zdCBjaGFyICopOwog LQogICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfT1JJR0lOQUwgIiNCTE5LX0NPTSIJLyogWExG IGFzc2lnbmVkICAqLwogICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfTUY3NyAgICAgIl9fQkxO S19fIgkvKiBNRjc3IGFzc2lnbmVkICAqLwpAQCAtMTg2LDEwICsxODcsMTAgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFy cmF5IGJvdW5kcyBjYW5ub3QgYmUgZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sg dG8gJ210IHByaW50IHN5bWJvbHMnIGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yMiAyMDoxNzoxNi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMJMjAx MS0wNy0yMiAyMDoxODoyNi4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAy Lm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTA2LTAyIDIxOjMyOjQxLjc0NjU2NzI5OSArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTA2LTAyIDIx OjMzOjUwLjUxNDU0MTI4NiArMDIwMAogQEAgLTM0LDEwICszNCwxMSBAQAogICNpbmNsdWRlICJn ZGJjb3JlLmgiCiAgI2luY2x1ZGUgImNvbW1hbmQuaCIKQEAgLTE5OSwxNiArMjAwLDE2IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMKICAKICBleHRlcm4gdm9p ZCBfaW5pdGlhbGl6ZV9mX3ZhbHByaW50ICh2b2lkKTsKICBzdGF0aWMgdm9pZCBpbmZvX2NvbW1v bl9jb21tYW5kIChjaGFyICosIGludCk7Ci0tc3RhdGljIHZvaWQgbGlzdF9hbGxfdmlzaWJsZV9j b21tb25zIChjaGFyICopOworLXN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAo Y29uc3QgY2hhciAqKTsKICBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0 X3RibCAoc3RydWN0IHR5cGUgKiwKICAJCQkJCSAgICAgIHN0cnVjdCB1aV9maWxlICopOwogIHN0 YXRpYyB2b2lkIGY3N19nZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlw ZSAqKTsKLUBAIC01MTUsMjIgKzUxNiw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkCi0gICByZXR1cm4gMDsKK0BAIC00MjAsMjIgKzQyMSw1NCBAQCBmX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCisgICBnZGJfZmx1c2ggKHN0cmVhbSk7 CiAgfQogIAogLXN0YXRpYyB2b2lkCi0tbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjaGFyICpm dW5uYW1lKQorLWxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY29uc3QgY2hhciAqZnVubmFtZSkK ICtzdGF0aWMgaW50CiAraW5mb19jb21tb25fY29tbWFuZF9mb3JfYmxvY2sgKHN0cnVjdCBibG9j ayAqYmxvY2ssIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICsJCQkgICAgICAgY29uc3QgY2hh ciAqY29tbmFtZSkKQEAgLTIxNiw3ICsyMTcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZi12YWxwcmludC5jCiAtICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0bXA7CiAtCiAtICB0 bXAgPSBoZWFkX2NvbW1vbl9saXN0OwotKyAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKKysg IHN0cnVjdCBibG9ja19pdGVyYXRvciBpdGVyOwogKyAgc3RydWN0IHN5bWJvbCAqc3ltOwogKyAg aW50IHZhbHVlc19wcmludGVkID0gMDsKICsgIGNvbnN0IGNoYXIgKm5hbWU7CkBAIC0yNzEsMjEg KzI3MiwyMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCiAg fQogIAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwcmludCBvdXQgdGhlIHZhbHVlcyBp biBhIGdpdmVuIENPTU1PTiAKLUBAIC01NDAsMTEgKzU3Myw5IEBAIGxpc3RfYWxsX3Zpc2libGVf Y29tbW9ucyAoY2hhciAqZnVubmFtZSkKK0BAIC00NDUsMTEgKzQ3OCw5IEBAIGxpc3RfYWxsX3Zp c2libGVfY29tbW9ucyAoY29uc3QgY2hhciAqZnUKICBzdGF0aWMgdm9pZAogIGluZm9fY29tbW9u X2NvbW1hbmQgKGNoYXIgKmNvbW5hbWUsIGludCBmcm9tX3R0eSkKICB7CiAtICBTQVZFRF9GNzdf Q09NTU9OX1BUUiB0aGVfY29tbW9uOwogLSAgQ09NTU9OX0VOVFJZX1BUUiBlbnRyeTsKICAgIHN0 cnVjdCBmcmFtZV9pbmZvICpmaTsKLS0gIGNoYXIgKmZ1bm5hbWUgPSAwOworLSAgY29uc3QgY2hh ciAqZnVubmFtZSA9IDA7CiAtICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwogKyAgc3RydWN0IGJsb2Nr ICpibG9jazsKICsgIGludCB2YWx1ZXNfcHJpbnRlZCA9IDA7CiAgCiAgICAvKiBXZSBoYXZlIGJl ZW4gdG9sZCB0byBkaXNwbGF5IHRoZSBjb250ZW50cyBvZiBGNzcgQ09NTU9OIAogICAgICAgYmxv Y2sgc3VwcG9zZWRseSB2aXNpYmxlIGluIHRoaXMgZnVuY3Rpb24uICBMZXQgdXMgCi1AQCAtNTU2 LDc0ICs1ODcsMzEgQEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IAor QEAgLTQ2MSw3NCArNDkyLDMxIEBAIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKmNvbW5hbWUs IGludAogICAgLyogVGhlIGZvbGxvd2luZyBpcyBnZW5lcmFsbHkgcmlwcGVkIG9mZiBmcm9tIHN0 YWNrLmMncyByb3V0aW5lIAogICAgICAgcHJpbnRfZnJhbWVfaW5mbygpLiAgKi8KICAKQEAgLTM3 NiwxMSArMzc3LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50 LmMKICB9CiAgCiAgdm9pZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YWNrLmMK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zdGFjay5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zdGFjay5jCTIwMTEtMDctMjIgMjA6MTI6MDUu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhY2suYwkyMDEx LTA3LTIyIDIwOjE3OjIyLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1MjQsNiArMTUyNCw4IEBAIGl0 ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbHMgKHN0cnVjdCBibG9jayAKKy0tLSBnZGItNy40LjUwLjIw MTIwNjAyLm9yaWcvZ2RiL3N0YWNrLmMJMjAxMi0wNi0wMiAyMTozMjo0MS43NDY1NjcyOTkgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zdGFjay5jCTIwMTItMDYtMDIgMjE6MzI6 NTQuMzM1NTYyNDg4ICswMjAwCitAQCAtMTgzOCw2ICsxODM4LDggQEAgaXRlcmF0ZV9vdmVyX2Js b2NrX2xvY2FscyAoc3RydWN0IGJsb2NrCiAgCWNhc2UgTE9DX0NPTVBVVEVEOgogIAkgIGlmIChT WU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkpCiAgCSAgICBicmVhazsKQEAgLTM4OSwxMSArMzkwLDEx IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFjay5jCiAgCSAgKCpjYikgKFNZ TUJPTF9QUklOVF9OQU1FIChzeW0pLCBzeW0sIGNiX2RhdGEpOwogIAkgIGJyZWFrOwogIAotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bXRhYi5oCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvc3ltdGFiLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTEtMDctMjIgMjA6MTI6MDUuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFiLmgJMjAxMS0wNy0yMiAyMDoxODo1OC4w MDAwMDAwMDAgKzAyMDAKLUBAIC0zOTYsNyArMzk2LDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5f ZW51bV90YWcKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTIt MDYtMDIgMjE6MzI6NDEuNzQ2NTY3Mjk5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvc3ltdGFiLmgJMjAxMi0wNi0wMiAyMTozMjo1NC4zNDI1NjI0ODYgKzAyMDAKK0BAIC0zODks NyArMzg5LDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKICAKICAgIC8qIExBQkVM X0RPTUFJTiBtYXkgYmUgdXNlZCBmb3IgbmFtZXMgb2YgbGFiZWxzIChmb3IgZ290b3MpLiAgKi8K ICAKQEAgLTQwNSwxMCArNDA2LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9z eW10YWIuaAogIH0gZG9tYWluX2VudW07CiAgCiAgLyogU2VhcmNoaW5nIGRvbWFpbnMsIHVzZWQg Zm9yIGBzZWFyY2hfc3ltYm9scycuICBFbGVtZW50IG51bWJlcnMgYXJlCi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29t bW9uLWJsb2NrLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMi0wNi0wMiAyMTozMjo1NC4zNDQ1NjI0ODQgKzAyMDAK IEBAIC0wLDAgKzEsMTAxIEBACiArIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKQEAgLTUxMSwxMCArNTEyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogK2dkYl90 ZXN0ICJwIGl4X3giICIgPSAxICoiICJwIGl4X3ggaW4iCiArZ2RiX3Rlc3QgInAgaXlfeSIgIiA9 IDIgKiIgInAgaXlfeSBpbiIKICtnZGJfdGVzdCAicCBpel96MiIgIiA9IDMgKiIgInAgaXpfejIg aW4iCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2NvbW1vbi1ibG9jay5mOTAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCTIwMTEtMDct MjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAJMjAxMi0wNi0wMiAyMTozMjo1 NC4zNDU1NjI0ODMgKzAyMDAKIEBAIC0wLDAgKzEsNjcgQEAKICshIENvcHlyaWdodCAyMDA4IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyEKCmRpZmYgLS1naXQgYS9nZGItb2JqZmls ZS1vcmRlci5wYXRjaCBiL2dkYi1vYmpmaWxlLW9yZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmFmZDQ2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItb2JqZmls ZS1vcmRlci5wYXRjaApAQCAtMCwwICsxLDIxNSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTItMDUvbXNnMDExMDUuaHRtbAorU3ViamVjdDogW1JGQS9jb21taXQg MS8zXSBSZXZlcnQgIlNlYXJjaCBnbG9iYWwgc3ltYm9scyBmcm9tIHRoZSBleHByZXNzaW9uJ3Mg YmxvY2sgb2JqZmlsZSBmaXJzdC4iCisKK1RoZSBzZWFyY2ggb3JkZXIgdXNlZCBpbiB0aGlzIHBh dGNoIGJyZWFrcyBnbG9iYWwgc3ltYm9sIGxvb2t1cHMKK2ZvciBjZXJ0YWluIHN5bWJvbHMgd2hl biBjb3B5LXJlbG9jYXRpb24gaXMgdXNlZC4gIEEgc2xpZ2h0bHkgZGlmZmVyZW50CitzZWFyY2gg b3JkZXIgd2lsbCBiZSBpbXBsZW1lbnRlZCBsYXRlci4KKworZ2RiL0NoYW5nZUxvZzoKKworICAg ICAgICBSZXZlcnQgdGhlIGZvbGxvd2luZyBwYXRjaDoKKyAgICAgICAgKiBmaW5kdmFyLmMgKGRl ZmF1bHRfcmVhZF92YXJfdmFsdWUpOiBGb3IgTE9DX1VOUkVTT0xWRUQgc3ltYm9scywKKyAgICAg ICAgdHJ5IGxvY2F0aW5nIHRoZSBzeW1ib2wgaW4gdGhlIHN5bWJvbCdzIG93biBvYmpmaWxlIGZp cnN0LCBiZWZvcmUKKyAgICAgICAgZXh0ZW5kaW5nIHRoZSBzZWFyY2ggdG8gYWxsIG9iamZpbGVz LgorICAgICAgICAqIHN5bXRhYi5jIChsb29rdXBfc3ltYm9sX2F1eF9vYmpmaWxlKTogTmV3IGZ1 bmN0aW9uLCBleHRyYWN0ZWQKKyAgICAgICAgb3V0IG9mIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRh YnMuCisgICAgICAgIChsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzKTogQWRkIG5ldyBwYXJhbWV0 ZXIgImV4Y2x1ZGVfb2JqZmlsZSIuCisgICAgICAgIFJlcGxhY2UgZXh0cmFjdGVkLW91dCBjb2Rl IGJ5IGNhbGwgdG8gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZS4KKyAgICAgICAgRG8gbm90IHNl YXJjaCBFWENMVURFX09CSkZJTEUuCisgICAgICAgIChsb29rdXBfc3RhdGljX3N5bWJvbF9hdXgp OiBVcGRhdGUgY2FsbCB0byBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzLgorICAgICAgICAobG9v a3VwX3N5bWJvbF9nbG9iYWwpOiBTZWFyY2ggZm9yIG1hdGNoZXMgaW4gdGhlIGJsb2NrJ3Mgb2Jq ZmlsZQorICAgICAgICBmaXJzdCwgYmVmb3JlIHNlYXJjaGluZyBhbGwgb3RoZXIgb2JqZmlsZXMu CisKK1dpbGwgY29tbWl0IGlmIHBhdGNoZXMgIzIgJiAjMyBhcmUgT0suCisKKy0tLQorIGdkYi9m aW5kdmFyLmMgfCAgIDEwICstLS0tLQorIGdkYi9zeW10YWIuYyAgfCAgMTA4ICsrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMg Y2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9nZGIvZmluZHZhci5jIGIvZ2RiL2ZpbmR2YXIuYworaW5kZXggZWQ3OTAzYy4uOTAwOWU2ZiAx MDA2NDQKKy0tLSBhL2dkYi9maW5kdmFyLmMKKysrKyBiL2dkYi9maW5kdmFyLmMKK0BAIC01NjIs MTUgKzU2Miw3IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAlzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07 CisgCXN0cnVjdCBvYmpfc2VjdGlvbiAqb2JqX3NlY3Rpb247CisgCistCS8qIEZpcnN0LCB0cnkg bG9jYXRpbmcgdGhlIGFzc29jaWF0ZWQgbWluaW1hbCBzeW1ib2wgd2l0aGluCistCSAgIHRoZSBz YW1lIG9iamZpbGUuICBUaGlzIHByZXZlbnRzIHVzIGZyb20gc2VsZWN0aW5nIGFub3RoZXIKKy0J ICAgc3ltYm9sIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgbG9jYXRlZCBpbiBhIGRpZmZlcmVudCBv YmpmaWxlLiAgKi8KKy0JbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoU1lNQk9MX0xJTktB R0VfTkFNRSAodmFyKSwgTlVMTCwKKy0JCQkJICAgICAgU1lNQk9MX1NZTVRBQiAodmFyKS0+b2Jq ZmlsZSk7CistCS8qIElmIHRoZSBsb29rdXAgZmFpbGVkLCB0cnkgZXhwYW5kaW5nIHRoZSBzZWFy Y2ggdG8gYWxsCistCSAgIG9iamZpbGVzLiAgKi8KKy0JaWYgKG1zeW0gPT0gTlVMTCkKKy0JICBt c3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FICh2YXIpLCBO VUxMLCBOVUxMKTsKKysJbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoU1lNQk9MX0xJTktB R0VfTkFNRSAodmFyKSwgTlVMTCwgTlVMTCk7CisgCWlmIChtc3ltID09IE5VTEwpCisgCSAgZXJy b3IgKF8oIk5vIGdsb2JhbCBzeW1ib2wgXCIlc1wiLiIpLCBTWU1CT0xfTElOS0FHRV9OQU1FICh2 YXIpKTsKKyAJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIu YyBiL2dkYi9zeW10YWIuYworaW5kZXggODVkZGQxZC4uMzlkOGM2ZiAxMDA2NDQKKy0tLSBhL2dk Yi9zeW10YWIuYworKysrIGIvZ2RiL3N5bXRhYi5jCitAQCAtOTUsOCArOTUsNyBAQCBzdHJ1Y3Qg c3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKyBzdGF0 aWMKKyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tf aW5kZXgsCisgCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkgIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbiwKKy0JCQkJCSAgc3RydWN0IG9iamZpbGUgKmV4Y2x1ZGVfb2JqZmlsZSk7Cisr CQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7CisgCisgc3RhdGljCisgc3RydWN0IHN5 bWJvbCAqbG9va3VwX3N5bWJvbF9hdXhfcXVpY2sgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor QEAgLTEzNjAsNyArMTM1OSw3IEBAIGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCAoY29uc3QgY2hh ciAqbmFtZSwgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQorICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGU7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisgCistICBzeW0gPSBsb29rdXBfc3ltYm9s X2F1eF9zeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGRvbWFpbiwgTlVMTCk7CisrICBzeW0g PSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGRvbWFpbik7 CisgICBpZiAoc3ltICE9IE5VTEwpCisgICAgIHJldHVybiBzeW07CisgCitAQCAtMTQ5OSw2MSAr MTQ5OCw0MCBAQCBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVj dCBvYmpmaWxlICptYWluX29iamZpbGUsCisgICByZXR1cm4gTlVMTDsKKyB9CisgCistLyogQ2hl Y2sgdG8gc2VlIGlmIHRoZSBzeW1ib2wgaXMgZGVmaW5lZCBpbiBvbmUgb2YgdGhlIE9CSkZJTEUn cworLSAgIHN5bXRhYnMuICBCTE9DS19JTkRFWCBzaG91bGQgYmUgZWl0aGVyIEdMT0JBTF9CTE9D SyBvciBTVEFUSUNfQkxPQ0ssCisrLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBzeW1ib2wgaXMgZGVm aW5lZCBpbiBvbmUgb2YgdGhlIHN5bXRhYnMuCisrICAgQkxPQ0tfSU5ERVggc2hvdWxkIGJlIGVp dGhlciBHTE9CQUxfQkxPQ0sgb3IgU1RBVElDX0JMT0NLLAorICAgIGRlcGVuZGluZyBvbiB3aGV0 aGVyIG9yIG5vdCB3ZSB3YW50IHRvIHNlYXJjaCBnbG9iYWwgc3ltYm9scyBvcgorICAgIHN0YXRp YyBzeW1ib2xzLiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCistbG9va3VwX3N5bWJv bF9hdXhfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBibG9ja19pbmRleCwK Ky0JCQkgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBkb21haW5fZW51bSBkb21haW4pCistewor LSAgc3RydWN0IHN5bWJvbCAqc3ltID0gTlVMTDsKKy0gIHN0cnVjdCBibG9ja3ZlY3RvciAqYnY7 CistICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrOworLSAgc3RydWN0IHN5bXRhYiAqczsKKy0K Ky0gIGlmIChvYmpmaWxlLT5zZikKKy0gICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5kX3N5 bXRhYnNfbWF0Y2hpbmcgKG9iamZpbGUsIGJsb2NrX2luZGV4LAorLQkJCQkJCSAgbmFtZSwgZG9t YWluKTsKKy0KKy0gIEFMTF9PQkpGSUxFX1NZTVRBQlMgKG9iamZpbGUsIHMpCistICAgIGlmIChz LT5wcmltYXJ5KQorLSAgICAgIHsKKy0JYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CistCWJsb2NrID0g QkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBibG9ja19pbmRleCk7CistCXN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOworLQlpZiAoc3ltKQorLQkgIHsKKy0JICAg IGJsb2NrX2ZvdW5kID0gYmxvY2s7CistCSAgICByZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24g KHN5bSwgb2JqZmlsZSk7CistCSAgfQorLSAgICAgIH0KKy0KKy0gIHJldHVybiBOVUxMOworLX0K Ky0KKy0vKiBTYW1lIGFzIGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUsIGV4Y2VwdCB0aGF0IGl0 IHNlYXJjaGVzIGFsbAorLSAgIG9iamZpbGVzIGV4Y2VwdCBmb3IgRVhDTFVERV9PQkpGSUxFLiAg UmV0dXJuIHRoZSBmaXJzdCBtYXRjaCBmb3VuZC4KKy0KKy0gICBJZiBFWENMVURFX09CSkZJTEUg aXMgTlVMTCwgdGhlbiBhbGwgb2JqZmlsZXMgYXJlIHNlYXJjaGVkLiAgKi8KKy0KKy1zdGF0aWMg c3RydWN0IHN5bWJvbCAqCisgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2lu ZGV4LCBjb25zdCBjaGFyICpuYW1lLAorLQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwK Ky0JCQkgICBzdHJ1Y3Qgb2JqZmlsZSAqZXhjbHVkZV9vYmpmaWxlKQorKwkJCSAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbikKKyB7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZTsKKysgIHN0cnVjdCBibG9ja3ZlY3RvciAqYnY7CisrICBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrOworKyAgc3RydWN0IHN5bXRhYiAqczsKKyAKKyAgIEFMTF9PQkpG SUxFUyAob2JqZmlsZSkKKyAgIHsKKy0gICAgaWYgKG9iamZpbGUgIT0gZXhjbHVkZV9vYmpmaWxl KQorLSAgICAgIHsKKy0Jc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSAob2JqZmlsZSwg YmxvY2tfaW5kZXgsIG5hbWUsIGRvbWFpbik7CistCWlmIChzeW0pCistCSAgcmV0dXJuIHN5bTsK Ky0gICAgICB9CisrICAgIGlmIChvYmpmaWxlLT5zZikKKysgICAgICBvYmpmaWxlLT5zZi0+cWYt PnByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZyAob2JqZmlsZSwKKysJCQkJCQkgICAgYmxvY2tf aW5kZXgsCisrCQkJCQkJICAgIG5hbWUsIGRvbWFpbik7CisrCisrICAgIEFMTF9PQkpGSUxFX1NZ TVRBQlMgKG9iamZpbGUsIHMpCisrICAgICAgaWYgKHMtPnByaW1hcnkpCisrCXsKKysJICBidiA9 IEJMT0NLVkVDVE9SIChzKTsKKysJICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgYmxv Y2tfaW5kZXgpOworKwkgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBk b21haW4pOworKwkgIGlmIChzeW0pCisrCSAgICB7CisrCSAgICAgIGJsb2NrX2ZvdW5kID0gYmxv Y2s7CisrCSAgICAgIHJldHVybiBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCBvYmpmaWxlKTsK KysJICAgIH0KKysJfQorICAgfQorIAorICAgcmV0dXJuIE5VTEw7CitAQCAtMTY3OSw0NiArMTY1 NywyNCBAQCBsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKKyAJCSAgICAg IGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKKyB7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBO VUxMOworLSAgc3RydWN0IG9iamZpbGUgKmJsb2NrX29iamZpbGUgPSBOVUxMOworICAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUgPSBOVUxMOworIAorICAgLyogQ2FsbCBsaWJyYXJ5LXNwZWNpZmlj IGxvb2t1cCBwcm9jZWR1cmUuICAqLworLSAgYmxvY2tfb2JqZmlsZSA9IGxvb2t1cF9vYmpmaWxl X2Zyb21fYmxvY2sgKGJsb2NrKTsKKy0gIGlmIChibG9ja19vYmpmaWxlICE9IE5VTEwpCistICAg IHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKGJsb2NrX29iamZpbGUsIG5hbWUsIGRvbWFpbik7 CisrICBvYmpmaWxlID0gbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoYmxvY2spOworKyAgaWYg KG9iamZpbGUgIT0gTlVMTCkKKysgICAgc3ltID0gc29saWJfZ2xvYmFsX2xvb2t1cCAob2JqZmls ZSwgbmFtZSwgZG9tYWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsK KyAKKy0gIC8qIElmIEJMT0NLX09CSkZJTEUgaXMgbm90IE5VTEwsIHRoZW4gc2VhcmNoIHRoaXMg b2JqZmlsZSBmaXJzdC4KKy0gICAgIEluIGNhc2UgdGhlIGdsb2JhbCBzeW1ib2wgaXMgZGVmaW5l ZCBpbiBtdWx0aXBsZSBvYmpmaWxlcywKKy0gICAgIHdlIGhhdmUgYSBiZXR0ZXIgY2hhbmNlIG9m IGZpbmRpbmcgdGhlIG1vc3QgcmVsZXZhbnQgc3ltYm9sLiAgKi8KKy0KKy0gIGlmIChibG9ja19v YmpmaWxlICE9IE5VTEwpCistICAgIHsKKy0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9v YmpmaWxlIChibG9ja19vYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCistCQkJCSAgICAgICBuYW1lLCBk b21haW4pOworLSAgICAgIGlmIChzeW0gPT0gTlVMTCkKKy0Jc3ltID0gbG9va3VwX3N5bWJvbF9h dXhfcXVpY2sgKGJsb2NrX29iamZpbGUsIEdMT0JBTF9CTE9DSywKKy0JCQkJICAgICAgIG5hbWUs IGRvbWFpbik7CistICAgICAgaWYgKHN5bSAhPSBOVUxMKQorLQlyZXR1cm4gc3ltOworLSAgICB9 CistCistICAvKiBTeW1ib2wgbm90IGZvdW5kIGluIHRoZSBCTE9DS19PQkpGSUxFLCBzbyB0cnkg YWxsIHRoZSBvdGhlcgorLSAgICAgb2JqZmlsZXMsIHN0YXJ0aW5nIHdpdGggc3ltdGFicyBmaXJz dCwgYW5kIHRoZW4gcGFydGlhbCBzeW10YWJzLiAgKi8KKy0KKy0gIHN5bSA9IGxvb2t1cF9zeW1i b2xfYXV4X3N5bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFtZSwgZG9tYWluLCBibG9ja19vYmpmaWxl KTsKKysgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFt ZSwgZG9tYWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKyAKKyAg IEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgIHsKKy0gICAgaWYgKG9iamZpbGUgIT0gYmxvY2tf b2JqZmlsZSkKKy0gICAgICB7CistCXN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChvYmpm aWxlLCBHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbik7CistCWlmIChzeW0pCistCSAgcmV0dXJu IHN5bTsKKy0gICAgICB9CisrICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChvYmpm aWxlLCBHTE9CQUxfQkxPQ0ssIG5hbWUsIGRvbWFpbik7CisrICAgIGlmIChzeW0pCisrICAgICAg cmV0dXJuIHN5bTsKKyAgIH0KKyAKKyAgIHJldHVybiBOVUxMOworLS0gCisxLjcuMQorCgpkaWZm IC0tZ2l0IGEvZ2RiLXBwYy13YXRjaHBvaW50LnBhdGNoIGIvZ2RiLXBwYy13YXRjaHBvaW50LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTU2ODgzLi4wMDAwMDAwCi0tLSBh L2dkYi1wcGMtd2F0Y2hwb2ludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK LWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODI3NjAwCi1SZTog W1BBVENIXSBkaXNhYmxlIHB0cmFjZSBCb29rRSBpbnRlcmZhY2UgZm9yIFBvd2VyUEMgc2VydmVy IHByb2Nlc3NvcnMKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1 L21zZzAxMTA3Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUv bXNnMDAyMjEuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8zMSAxODo0NDo0 NwkxLjE0MzA2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8zMSAyMjowNzoyOQkxLjE0 MzA3Ci0jIyAtMSwzICsxLDkgQEAKLSsyMDEyLTA1LTMxICBFZGp1bmlvciBNYWNoYWRvICA8ZW1h Y2hhZG9AbGludXgudm5ldC5pYm0uY29tPgotKwotKwkqIHBwYy1saW51eC1uYXQuYyAoaGF2ZV9w dHJhY2VfYm9va2VfaW50ZXJmYWNlKTogRGlzYWJsZSBwdHJhY2UKLSsJQm9va0UgaW50ZXJmYWNl IGZvciBQb3dlclBDIHNlcnZlciBwcm9jZXNzb3JzIGlmIG5vdCBhdmFpbGFibGUKLSsJaW4gdGhl IExpbnV4IEtlcm5lbC4KLSsKLSAyMDEyLTA1LTMxICBLZWl0aCBTZWl0eiAgPGtlaXRoc0ByZWRo YXQuY29tPgotIAotIAkqIGxpbmVzcGVjLmMgKGRlY29kZV9vYmpjKTogQWRkIGNsZWFudXAgdG8g ZnJlZQotLS0tIHNyYy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTIvMDUvMzAgMTM6Mzc6MTcJMS4x MTIKLSsrKyBzcmMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDEyLzA1LzMxIDIyOjA3OjMxCTEuMTEz Ci1AQCAtMTQyMSwxNyArMTQyMSwyMCBAQAotICAgICAgIC8qIENoZWNrIGZvciBrZXJuZWwgc3Vw cG9ydCBmb3IgQk9PS0UgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSAgICAgICBpZiAocHRyYWNlIChQ UENfUFRSQUNFX0dFVEhXREJHSU5GTywgdGlkLCAwLCAmYm9va2VfZGVidWdfaW5mbykgPj0gMCkK LSAJewotLQkgIGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSA9IDE7Ci0tCSAgbWF4X3Nsb3Rz X251bWJlciA9IGJvb2tlX2RlYnVnX2luZm8ubnVtX2luc3RydWN0aW9uX2JwcwotLQkgICAgKyBi b29rZV9kZWJ1Z19pbmZvLm51bV9kYXRhX2JwcwotLQkgICAgKyBib29rZV9kZWJ1Z19pbmZvLm51 bV9jb25kaXRpb25fcmVnczsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIC8qIE9sZCBzY2hv b2wgaW50ZXJmYWNlIGFuZCBubyBCT09LRSBkZWJ1ZyByZWdpc3RlcnMgc3VwcG9ydC4gICovCi0t CSAgaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlID0gMDsKLS0JICBtZW1zZXQgKCZib29rZV9k ZWJ1Z19pbmZvLCAwLCBzaXplb2YgKHN0cnVjdCBwcGNfZGVidWdfaW5mbykpOwotKwkgIC8qIENo ZWNrIHdoZXRoZXIgcHRyYWNlIEJPT0tFIGludGVyZmFjZSBpcyBmdW5jdGlvbmFsIGFuZAotKwkg ICAgIHByb3ZpZGVzIGFueSBzdXBwb3J0ZWQgZmVhdHVyZS4gICovCi0rCSAgaWYgKGJvb2tlX2Rl YnVnX2luZm8uZmVhdHVyZXMgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgaGF2ZV9wdHJhY2VfYm9v a2VfaW50ZXJmYWNlID0gMTsKLSsJICAgICAgbWF4X3Nsb3RzX251bWJlciA9IGJvb2tlX2RlYnVn X2luZm8ubnVtX2luc3RydWN0aW9uX2JwcwotKwkgICAgICAgICsgYm9va2VfZGVidWdfaW5mby5u dW1fZGF0YV9icHMKLSsJICAgICAgICArIGJvb2tlX2RlYnVnX2luZm8ubnVtX2NvbmRpdGlvbl9y ZWdzOwotKwkgICAgICByZXR1cm4gaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlOwotKwkgICAg fQotIAl9Ci0rICAgICAgLyogT2xkIHNjaG9vbCBpbnRlcmZhY2UgYW5kIG5vIEJPT0tFIGRlYnVn IHJlZ2lzdGVycyBzdXBwb3J0LiAgKi8KLSsgICAgICBoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZh Y2UgPSAwOwotKyAgICAgIG1lbXNldCAoJmJvb2tlX2RlYnVnX2luZm8sIDAsIHNpemVvZiAoc3Ry dWN0IHBwY19kZWJ1Z19pbmZvKSk7Ci0gICAgIH0KLSAKLSAgIHJldHVybiBoYXZlX3B0cmFjZV9i b29rZV9pbnRlcmZhY2U7CgpkaWZmIC0tZ2l0IGEvZ2RiLXByb2xvZ3VlLW5vdC1za2lwcGVkLnBh dGNoIGIvZ2RiLXByb2xvZ3VlLW5vdC1za2lwcGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkYTVjZTEzLi4wMDAwMDAwCi0tLSBhL2dkYi1wcm9sb2d1ZS1ub3Qtc2tpcHBl ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wMi9tc2cwMDY3My5odG1sCi1TdWJqZWN0OiBbcGF0 Y2hdIEZpeCByZWdyZXNzaW9uIGJ5IG1lIGZvciBnY2MtNC4wLi4uZ2NjLTQuNCBpMzg2IC1PMiAt ZyBwYXJhbWV0ZXJzIChQUiAxMzc3NykKLQotSGksCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9i dWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzcKLQotZm9yIENlbnRPUy01IGkzODYgbHM6Ci0K LSQgZ2RiIGxzCi0oZ2RiKSBzdGFydAotVGVtcG9yYXJ5IGJyZWFrcG9pbnQgMSwgbWFpbiAoYXJn Yz1DYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ODFiN2M3Y2QKLQotaW5zdGVhZCBv ZiBHREIgYmVmb3JlIG15IFBSIDEyNTczIGZpeC9jaGFuZ2U6Ci0KLVRlbXBvcmFyeSBicmVha3Bv aW50IDEsIG1haW4gKGFyZ2M9MSwgLi4uCi0KLUkgYXNrZWQgYmVmb3JlIG9uICNnY2Mgc2luY2Ug d2hpY2ggdmVyc2lvbnMgR0NDIHByb2R1Y2VkIERXX0FUX2xvY2F0aW9uIHdoaWNoCi1pcyBmb3Ig YW55IFBDIGVpdGhlciBvcHRpbWl6ZWQtb3V0IG9yIGl0IGhhcyB2YWxpZCB2YWx1ZS4gIEkgd2Fz IHRvbGQgc2luY2UKLWdjYy00LjAuICBCdXQgdGhhdCBpcyBub3QgdHJ1ZS4KLQotSSBoYXZlIGJp c2VjdGVkIGdjYyBhbmQgSSBmb3VuZCA0LjQuMCB3YXMgc3RpbGwgYnJva2VuLCA0LjUuMCB3YXMg Y29ycmVjdCwKLXRoYW5rcyB0bzoKLWNvbW1pdCAyNWU4ODBiMTkxN2JkNmJiZjA3ZTg2YjU1NzRj Njk4ZjNlOTQ3MmQ5Ci1BdXRob3I6IHJ0aCA8cnRoQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgy ZWU3MmIwNTRhND4KLURhdGU6ICAgU2F0IE1heSAzMCAwMDozMzo0NiAyMDA5ICswMDAwCi1naXQt c3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AxNDc5OTUgMTM4YmM3 NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci11bndpbmQgaW5mbyBmb3IgZXBpbG9ndWVz Ci0KLUN1cmlvdXNseSA0LjQueCBicmFuY2ggZ290IGxhdGVyIGFsc28gZml4ZWQgaW4gdGhpcyBj YXNlIGJ5OgotY29tbWl0IDYxZGI4YmQyMzJkYWVlZDM3NTFiNDM1NzBmYWIxNjE0NjE0NWUwOTYK LUF1dGhvcjogamFrdWIgPGpha3ViQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRh ND4KLURhdGU6ICAgVHVlIEp1biAyIDA3OjE4OjE2IDIwMDkgKzAwMDAKLWdpdC1zdm4taWQ6IHN2 bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy00XzQtYnJhbmNoQDE0ODA3 MCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLShidXQgdGhhdCBtaXNzZWQg NC40LjApCi0KLUFzIDQuNS4wIHdhcyBmaXJzdCBGU0YgR0NDIHdpdGggVlRBIEkgd2FzIHRydXN0 aW5nIG1vcmUgdGhlIHZhbGlkaXR5IG9ubHkKLWFmdGVyIFZUQSBhbmQgdGhlc2UgaGV1cmlzdGlj IHJlc3VsdHMgc2VlbXMgdG8gY29uZmlybSB0aGF0LgotCi1JIGZpbmQgdGhlIGNoYW5nZSBiZWxv dyBkZWZpbml0ZWx5IHNhZmUuCi0KLVNvbWVvbmUgbWF5IG9iamVjdCB0aGUgb3JpZ2luYWwgUFIg MTI1NzMgKGRvIG5vdCB0cnkgdG8gc2tpcCBwcm9sb2d1ZSBmb3IgLU8yCi0tZyBjb2RlIGFzIGl0 IG1heSBjYXVzZSBtb3JlIGNvbmZ1c2lvbiB0aGFuIGFueXRoaW5nIGVsc2UpIGFzIHdoaWxlIGl0 IGZpeGVkCi1zb21lIEdEQiBjcmFzaGVzIHRoZXJlIGlzIG5vIHN1Y2ggcHVycG9zZSBhbnltb3Jl IHdpdGggVG9tJ3MKLWFtYmlndW91cy1saW5lc3BlYyBwYXRjaC4gIFN0aWxsIEkgYmVsaWV2ZSBQ UiAxMjU3MyB3YXMgcmlnaHQgdG8gZG8uCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2 XzY0LW0zMixpNjg2fS1mZWRvcmExNy1saW51eC1nbnUuCi0KLUkgd2lsbCBjaGVjayBpdCBpbi4K LQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEyLTAyLTI4ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQUiBzeW10YWIvMTM3NzcKLQkqIGR3YXJm MnJlYWQuYyAocHJvY2Vzc19mdWxsX2NvbXBfdW5pdCk6IFNldCBMT0NBVElPTlNfVkFMSUQgb25s eSBmb3IKLQlHQ0MgPj00LjUuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEyLTAyLTI4ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQUiBzeW10YWIvMTM3NzcK LQkqIGdkYi5kd2FyZjIvZHcyLXNraXAtcHJvbG9ndWUuUyAoRFdfQVRfcHJvZHVjZXIpOiBTZXQg aXQgdG8gNC41LjAuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJy ZWFkLmMKLUBAIC00ODQxLDcgKzQ4NDEsOSBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCi0gCi0gICAgICAgLyogR0NDLTQuMCBoYXMg c3RhcnRlZCB0byBzdXBwb3J0IC1mdmFyLXRyYWNraW5nLiAgR0NDLTMueCBzdGlsbCBjYW4KLSAJ IHByb2R1Y2UgRFdfQVRfbG9jYXRpb24gd2l0aCBsb2NhdGlvbiBsaXN0cyBidXQgaXQgY2FuIGJl IHBvc3NpYmx5Ci0tCSBpbnZhbGlkIHdpdGhvdXQgLWZ2YXItdHJhY2tpbmcuCi0rCSBpbnZhbGlk IHdpdGhvdXQgLWZ2YXItdHJhY2tpbmcuICBTdGlsbCB1cCB0byBHQ0MtNC40LnggaW5jbC4gNC40 LjAKLSsJIHRoZXJlIHdlcmUgYnVncyBpbiBwcm9sb2d1ZSBkZWJ1ZyBpbmZvLCBmaXhlZCBsYXRl ciBpbiBHQ0MtNC41Ci0rCSBieSAidW53aW5kIGluZm8gZm9yIGVwaWxvZ3VlcyIgcGF0Y2ggKHdo aWNoIGlzIG5vdCBkaXJlY3RseSByZWxhdGVkKS4KLSAKLSAJIEZvciAtZ2R3YXJmLTQgdHlwZSB1 bml0cyBMT0NBVElPTlNfVkFMSUQgaW5kaWNhdGlvbiBpcyBmb3J0dW5hdGVseSBub3QKLSAJIG5l ZWRlZCwgaXQgd291bGQgYmUgd3JvbmcgZHVlIHRvIG1pc3NpbmcgRFdfQVRfcHJvZHVjZXIgdGhl cmUuCi1AQCAtNDg0OSw3ICs0ODUxLDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIAkgU3RpbGwgb25lIGNhbiBjb25mdXNlIEdE QiBieSB1c2luZyBub24tc3RhbmRhcmQgR0NDIGNvbXBpbGF0aW9uCi0gCSBvcHRpb25zIC0gdGhp cyB3YWl0cyBvbiBHQ0MgUFIgb3RoZXIvMzI5OTggKC1mcmVjb3JkLWdjYy1zd2l0Y2hlcykuCi0g CSAqLyAKLS0gICAgICBpZiAoY3UtPmhhc19sb2NsaXN0ICYmIGdjY180X21pbm9yID49IDApCi0r ICAgICAgaWYgKGN1LT5oYXNfbG9jbGlzdCAmJiBnY2NfNF9taW5vciA+PSA1KQotIAlzeW10YWIt PmxvY2F0aW9uc192YWxpZCA9IDE7Ci0gCi0gICAgICAgaWYgKGdjY180X21pbm9yID49IDUpCi0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXNraXAtcHJvbG9ndWUuUwotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1za2lwLXByb2xvZ3VlLlMKLUBAIC0zMCw3ICsz MCw3IEBACi0gCS40Ynl0ZQlmdW5jX3N0YXJ0CQkJLyogRFdfQVRfbG93X3BjICovCi0gCS40Ynl0 ZQlmdW5jX2VuZAkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSAJLmFzY2lpCSJtYWluLmNcMCIJCQkv KiBEV19BVF9uYW1lICovCi0tCS5hc2NpaQkiR05VIEMgNC4wLjBcMCIJCQkvKiBEV19BVF9wcm9k dWNlciBtdXN0IGJlID49IDQuMCAgKi8KLSsJLmFzY2lpCSJHTlUgQyA0LjUuMFwwIgkJCS8qIERX X0FUX3Byb2R1Y2VyIG11c3QgYmUgPj0gNC41ICAqLwotIAkuYnl0ZQkyCQkJCS8qIERXX0FUX2xh bmd1YWdlIChEV19MQU5HX0MpICovCi0gCi0gCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RB R19zdWJwcm9ncmFtICovCi0KCmRpZmYgLS1naXQgYS9nZGItcmhlbDUtY29tcGF0LnBhdGNoIGIv Z2RiLXJoZWw1LWNvbXBhdC5wYXRjaAppbmRleCA5MjFiMWExLi4yYjk0N2QzIDEwMDY0NAotLS0g YS9nZGItcmhlbDUtY29tcGF0LnBhdGNoCisrKyBiL2dkYi1yaGVsNS1jb21wYXQucGF0Y2gKQEAg LTEsOSArMSw5IEBACi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvbGludXgtbmF0LmMK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMy0yOCAx ODo0NjoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9saW51 eC1uYXQuYwkyMDExLTAzLTI4IDE4OjQ3OjU2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE3NzQsOCAr MTc3NCwyMiBAQCBnZXRfcGVuZGluZ19zdGF0dXMgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCi0gCQkJ ICAgIHRhcmdldF9zaWduYWxfdG9fc3RyaW5nIChzaWdubykpOworLS0tIGdkYi03LjQuNTAuMjAx MjA2MDIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMi0wNi0wMiAyMDo1NDozMC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2LTAy IDIwOjU2OjAzLjk2NjQ5MzM1MiArMDIwMAorQEAgLTE4MTYsOCArMTgxNiwyMiBAQCBnZXRfcGVu ZGluZ19zdGF0dXMgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCisgCQkJICAgIGdkYl9zaWduYWxfdG9f c3RyaW5nIChzaWdubykpOwogICAgICB9CiAgCiAtICBpZiAoKnN0YXR1cyA9PSAwICYmIEdFVF9Q SUQgKGxwLT5wdGlkKSA9PSBwaWRfd2FzX3N0b3BwZWQpCgpkaWZmIC0tZ2l0IGEvZ2RiLXN1YnJh bmdlLW5vLXR5cGUucGF0Y2ggYi9nZGItc3VicmFuZ2Utbm8tdHlwZS5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3N2EwYS4uMDAwMDAwMAotLS0gYS9nZGItc3VicmFuZ2Ut bm8tdHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi1jb21taXQgN2Q4 YmRmYmRmZDBlMzhmYjMxNGQ3MDc4NWIwNTE2MTgxYjhkNGU3NwotQXV0aG9yOiBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLURhdGU6ICAgTW9uIE1hciAyNiAyMDo0 OTo1MSAyMDEyICswMjAwCi0KLSAgICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19i dWcuY2dpP2lkPTgwNjkyMAotICAgIGdkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuZXhw Ci0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC05 MDE0LDYgKzkwMTQsNDQgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAvKiBQcmVzZXJ2ZSBCQVNFX1RZUEUncyBvcmln aW5hbCB0eXBlLCBqdXN0IHNldCBpdHMgTEVOR1RILiAgKi8KLSAgIGNoZWNrX3R5cGVkZWYgKGJh c2VfdHlwZSk7Ci0gCi0rICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxs b3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwotKyAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEg YmFzZSB0eXBlLgotKyAgICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBlIG11c3QgYmUgc2V0 IHRvIHRoZSB0eXBlIG9mCi0rICAgICB0aGUgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIG9yIGNv dW50LCBpbiB0aGF0IG9yZGVyLCBpZiBhbnkgb2YgdGhlc2UKLSsgICAgIHRocmVlIGF0dHJpYnV0 ZXMgcmVmZXJlbmNlcyBhbiBvYmplY3QgdGhhdCBoYXMgYSB0eXBlLgotKyAgICAgSWYgbm8gYmFz ZSB0eXBlIGlzIGZvdW5kLCB0aGUgRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBzYXkgdGhhdAotKyAg ICAgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHNpemUgZXF1YWwgdG8gdGhlIHNpemUgb2YgYW4g YWRkcmVzcyBzaG91bGQKLSsgICAgIGJlIHVzZWQuCi0rICAgICBGb3IgdGhlIGZvbGxvd2luZyBD IGNvZGU6IGBleHRlcm4gY2hhciBnZGJfaW50IFtdOycKLSsgICAgIEdDQyBwcm9kdWNlcyBhbiBl bXB0eSByYW5nZSBESUUuCi0rICAgICBGSVhNRTogbXVsbGVyLzIwMTAtMDUtMjg6IFBvc3NpYmxl IHJlZmVyZW5jZXMgdG8gb2JqZWN0IGZvciBsb3cgYm91bmQsCi0rICAgICBoaWdoIGJvdW5kIG9y IGNvdW50IGFyZSBub3QgeWV0IGhhbmRsZWQgYnkgdGhpcyBjb2RlLiAgKi8KLSsgIGlmIChUWVBF X0NPREUgKGJhc2VfdHlwZSkgPT0gVFlQRV9DT0RFX1ZPSUQpCi0rICAgIHsKLSsgICAgICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotKyAgICAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0rICAgICAgaW50IGFkZHJf c2l6ZSA9IGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gpIC84OwotKyAgICAgIHN0cnVjdCB0eXBl ICppbnRfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotKwotKyAg ICAgIC8qIFRlc3QgImludCIsICJsb25nIGludCIsIGFuZCAibG9uZyBsb25nIGludCIgb2JqZmls ZSB0eXBlcywKLSsJIGFuZCBzZWxlY3QgdGhlIGZpcnN0IG9uZSBoYXZpbmcgYSBzaXplIGFib3Zl IG9yIGVxdWFsIHRvIHRoZQotKwkgYXJjaGl0ZWN0dXJlIGFkZHJlc3Mgc2l6ZS4gICovCi0rICAg ICAgaWYgKGludF90eXBlICYmIFRZUEVfTEVOR1RIIChpbnRfdHlwZSkgPj0gYWRkcl9zaXplKQot KwliYXNlX3R5cGUgPSBpbnRfdHlwZTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBpbnRfdHlwZSA9 IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5fbG9uZzsKLSsJICBpZiAoaW50X3R5cGUg JiYgVFlQRV9MRU5HVEggKGludF90eXBlKSA+PSBhZGRyX3NpemUpCi0rCSAgICBiYXNlX3R5cGUg PSBpbnRfdHlwZTsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGludF90eXBlID0gb2JqZmls ZV90eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9sb25nX2xvbmc7Ci0rCSAgICAgIGlmIChpbnRfdHlw ZSAmJiBUWVBFX0xFTkdUSCAoaW50X3R5cGUpID49IGFkZHJfc2l6ZSkKLSsJCWJhc2VfdHlwZSA9 IGludF90eXBlOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSAgIC8qIFRoZSBkaWVfdHlwZSBj YWxsIGFib3ZlIG1heSBoYXZlIGFscmVhZHkgc2V0IHRoZSB0eXBlIGZvciB0aGlzIERJRS4gICov Ci0gICByYW5nZV90eXBlID0gZ2V0X2RpZV90eXBlIChkaWUsIGN1KTsKLSAgIGlmIChyYW5nZV90 eXBlKQotQEAgLTkxNDEsNDQgKzkxNzksNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBUWVBFX0hJR0hfQk9V TkQgKHJhbmdlX3R5cGUpID0gaGlnaDsKLSAgICAgfQotIAotLSAgLyogRHdhcmYtMiBzcGVjaWZp Y2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKLS0gICAg IHdpdGhvdXQgc3BlY2lmeWluZyBhIGJhc2UgdHlwZS4KLS0gICAgIEluIHRoYXQgY2FzZSwgdGhl IGJhc2UgdHlwZSBtdXN0IGJlIHNldCB0byB0aGUgdHlwZSBvZgotLSAgICAgdGhlIGxvd2VyIGJv dW5kLCB1cHBlciBib3VuZCBvciBjb3VudCwgaW4gdGhhdCBvcmRlciwgaWYgYW55IG9mIHRoZXNl Ci0tICAgICB0aHJlZSBhdHRyaWJ1dGVzIHJlZmVyZW5jZXMgYW4gb2JqZWN0IHRoYXQgaGFzIGEg dHlwZS4KLS0gICAgIElmIG5vIGJhc2UgdHlwZSBpcyBmb3VuZCwgdGhlIER3YXJmLTIgc3BlY2lm aWNhdGlvbnMgc2F5IHRoYXQKLS0gICAgIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiBzaXplIGVx dWFsIHRvIHRoZSBzaXplIG9mIGFuIGFkZHJlc3Mgc2hvdWxkCi0tICAgICBiZSB1c2VkLgotLSAg ICAgRm9yIHRoZSBmb2xsb3dpbmcgQyBjb2RlOiBgZXh0ZXJuIGNoYXIgZ2RiX2ludCBbXTsnCi0t ICAgICBHQ0MgcHJvZHVjZXMgYW4gZW1wdHkgcmFuZ2UgRElFLgotLSAgICAgRklYTUU6IG11bGxl ci8yMDEwLTA1LTI4OiBQb3NzaWJsZSByZWZlcmVuY2VzIHRvIG9iamVjdCBmb3IgbG93IGJvdW5k LAotLSAgICAgaGlnaCBib3VuZCBvciBjb3VudCBhcmUgbm90IHlldCBoYW5kbGVkIGJ5IHRoaXMg Y29kZS4gICovCi0tICBpZiAoVFlQRV9DT0RFIChiYXNlX3R5cGUpID09IFRZUEVfQ09ERV9WT0lE KQotLSAgICB7Ci0tICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsK LS0gICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOwotLSAgICAgIGludCBhZGRyX3NpemUgPSBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSAv ODsKLS0gICAgICBzdHJ1Y3QgdHlwZSAqaW50X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUp LT5idWlsdGluX2ludDsKLS0KLS0gICAgICAvKiBUZXN0ICJpbnQiLCAibG9uZyBpbnQiLCBhbmQg ImxvbmcgbG9uZyBpbnQiIG9iamZpbGUgdHlwZXMsCi0tCSBhbmQgc2VsZWN0IHRoZSBmaXJzdCBv bmUgaGF2aW5nIGEgc2l6ZSBhYm92ZSBvciBlcXVhbCB0byB0aGUKLS0JIGFyY2hpdGVjdHVyZSBh ZGRyZXNzIHNpemUuICAqLwotLSAgICAgIGlmIChpbnRfdHlwZSAmJiBUWVBFX0xFTkdUSCAoaW50 X3R5cGUpID49IGFkZHJfc2l6ZSkKLS0JYmFzZV90eXBlID0gaW50X3R5cGU7Ci0tICAgICAgZWxz ZQotLQl7Ci0tCSAgaW50X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2xv bmc7Ci0tCSAgaWYgKGludF90eXBlICYmIFRZUEVfTEVOR1RIIChpbnRfdHlwZSkgPj0gYWRkcl9z aXplKQotLQkgICAgYmFzZV90eXBlID0gaW50X3R5cGU7Ci0tCSAgZWxzZQotLQkgICAgewotLQkg ICAgICBpbnRfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5fbG9uZ19sb25n OwotLQkgICAgICBpZiAoaW50X3R5cGUgJiYgVFlQRV9MRU5HVEggKGludF90eXBlKSA+PSBhZGRy X3NpemUpCi0tCQliYXNlX3R5cGUgPSBpbnRfdHlwZTsKLS0JICAgIH0KLS0JfQotLSAgICB9Ci0t Ci0gICAvKiBEV19BVF9iaXRfc3RyaWRlIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBj b3VudCBpbiBieXRlcy4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0 ZV9zdHJpZGUsIGN1KTsKLSAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikg JiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCi1AQCAtMCwwICsx LDEyMSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIERl YnVnIGluZm9ybWF0aW9uICovCi0rCi0rCS5zZWN0aW9uCS5kYXRhCi0rdmFyZGF0YToKLSsJLnJl cHQJCTEyOQotKwkuYXNjaWkJCSJ4IgotKwkuZW5kcgotKwkuYXNjaWkJCSJVTlNFRU5cMCIKLSsK LSsJLnNlY3Rpb24JLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLjRieXRlCQkuTGN1MV9l bmQgLSAuTGN1MV9zdGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3Ux X3N0YXJ0OgotKwkuMmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwotKwkuNGJ5 dGUJCS5MZGVidWdfYWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCi0r CS5ieXRlCQk0CQkJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLyogQ1UgZGll ICovCi0rCS51bGViMTI4CTEJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJ LmFzY2lpCQkiR05VIEMgMy4zLjNcMCIJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCQky CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpIC0gICovCi0rCi0rLkxhcnJheV90eXBlOgotKwkudWxl YjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hh cl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8q IEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aG91dCBEV19BVF90eXBlICovCi0rCS5i eXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLmJ5dGUJCTEyOAkJCS8qIERXX0FU X3VwcGVyX2JvdW5kICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRp ZSAqLwotKwotKy5MY2hhcl90eXBlOgotKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdf YmFzZV90eXBlICovCi0rCS5hc2NpaQkJImNoYXJcMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5 dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBEV19BVF9lbmNv ZGluZyAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgRFdf Rk9STV9zdHJpbmcgKi8KLSsJLmFzY2lpCQkibm90eXBlX3N0cmluZ1wwIgkvKiBEV19BVF9uYW1l ICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8K LSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRlCQkzCQkJ LyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCi0r MjoKLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsuTGN1MV9l bmQ6Ci0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51 bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFH X2NvbXBpbGVfdW5pdCAqLwotKwkuYnl0ZQkJMHgxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51 bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBE V19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8K LSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxl YjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogVEFHOiBEV19U QUdfYXJyYXlfdHlwZSAqLwotKwkuYnl0ZQkJMHgxCQkJLyogRFdfY2hpbGRyZW5feWVzICovCi0r CS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBE V19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldiBjb2Rl ICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCQkw eDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICov Ci0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4YgkJ CS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGEx ICovCi0rCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkw eGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBB YmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0r CS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19B VF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JN X3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIx MjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJOAkJ CS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2Vf dHlwZSB3aXRob3V0IERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVu ICovCi0rCS51bGViMTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkudWxlYjEy OAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91 cHBlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuZXhwCi1A QCAtMCwwICsxLDM5IEBACi0rIyBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rbG9hZF9saWIgZHdh cmYuZXhwCi0rCi0rIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lk PTgwNjkyMAotKyMgcmVhZF9zdWJyYW5nZV90eXBlIDxUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0g VFlQRV9DT0RFX1ZPSUQ+IHJlaW5pdGlhbGl6YXRpb24KLSsjIG9mIEJBU0VfVFlQRSB3YXMgZG9u ZSB0b28gbGF0ZSwgaXQgYWZmZWN0cyBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0Ci0rIyBz cGVjaWZpZWQgRFdfQVRfdHlwZSwgcHJlc2VudCBvbmx5IGluIFhMRiBwcm9kdWNlZCBjb2RlLgot KwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQg RFdBUkYtMiBhbmQgdXNlIGdhcy4KLStpZiB7IVtkd2FyZjJfc3VwcG9ydF19IHsKLSsgICAgcmV0 dXJuIDAgIAotK30KLSsKLStzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5cGUKLStzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotK2lmIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBv YmplY3Qge31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFy dCAkZXhlY3V0YWJsZQotKwotK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3RyaW5nIiB7dHlwZSA9 IGNoYXIgXFsxMjlcXX0KLStnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAiID0gJ3gnIDxyZXBl YXRzIDEyOSB0aW1lcz4iCgpkaWZmIC0tZ2l0IGEvZ2RiLXVudXNlZC1yZXZlcnQucGF0Y2ggYi9n ZGItdW51c2VkLXJldmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFi ZTNjZi4uMDAwMDAwMAotLS0gYS9nZGItdW51c2VkLXJldmVydC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDQ0ICswLDAgQEAKLVtSRkEvY29tbWl0IDUvNV0gQWRkIC1XdW51c2VkLWZ1bmN0aW9u IHRvIGNvbXBpbGUgZmxhZ3MuCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMC0wMS9tc2cwMDM3MS5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEwLTAxL21zZzAwMTYzLmh0bWwKLQotUkVWRVJURUQKLQotLS0tIHNyYy9nZGIvY29uZmlndXJl LmFjCTIwMTAvMDEvMTUgMDA6MzQ6MzcJMS4xMTIKLSsrKyBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwky MDEwLzAxLzE5IDA5OjUyOjMxCTEuMTEzCi1AQCAtMTU0NCw4ICsxNTQ0LDcgQEAKLSAjIGdkYi9k b2MvZ2RiaW50LnRleGluZm8uCi0gYnVpbGRfd2FybmluZ3M9Ii1XYWxsIC1XZGVjbGFyYXRpb24t YWZ0ZXItc3RhdGVtZW50IC1XcG9pbnRlci1hcml0aCBcCi0gLVdmb3JtYXQtbm9ubGl0ZXJhbCAt V25vLXBvaW50ZXItc2lnbiBcCi0tLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQt ZnVuY3Rpb24gXAotLS1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIgotKy1Xbm8tdW51 c2VkIC1XdW51c2VkLXZhbHVlIC1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIgotIAot ICMgRW5hYmxlIC1Xbm8tZm9ybWF0IGJ5IGRlZmF1bHQgd2hlbiB1c2luZyBnY2Mgb24gbWluZ3cg c2luY2UgbWFueQotICMgR0NDIHZlcnNpb25zIGNvbXBsYWluIGFib3V0ICVJNjQuCi0tLS0gc3Jj L2dkYi9jb25maWd1cmUJMjAxMC8wMS8xNSAwMDozNDozNwkxLjI5NwotKysrIHNyYy9nZGIvY29u ZmlndXJlCTIwMTAvMDEvMTkgMDk6NTI6MzIJMS4yOTgKLUBAIC0xMzQzNSw4ICsxMzQzNSw3IEBA Ci0gIyBnZGIvZG9jL2dkYmludC50ZXhpbmZvLgotIGJ1aWxkX3dhcm5pbmdzPSItV2FsbCAtV2Rl Y2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3BvaW50ZXItYXJpdGggXAotIC1XZm9ybWF0LW5v bmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gXAotLS1Xbm8tdW51c2VkIC1XdW51c2VkLXZhbHVl IC1XdW51c2VkLWZ1bmN0aW9uIFwKLS0tV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0cyIK LSstV25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2Ny aXB0cyIKLSAKLSAjIEVuYWJsZSAtV25vLWZvcm1hdCBieSBkZWZhdWx0IHdoZW4gdXNpbmcgZ2Nj IG9uIG1pbmd3IHNpbmNlIG1hbnkKLSAjIEdDQyB2ZXJzaW9ucyBjb21wbGFpbiBhYm91dCAlSTY0 LgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDEvMTkgMDk6NTA6NDgJMS4xMTI3MQotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDEvMTkgMDk6NTI6MzMJMS4xMTI3MgotIyMgLTEsMTEg KzEsNSBAQAotIDIwMTAtMDEtMTkgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUu Y29tPgotIAotLQlBZGQgLVd1bnVzZWQtZnVuY3Rpb24gdG8gY29tcGlsZSBmbGFncy4KLS0JKiBj b25maWd1cmUuYWM6IEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBidWlsZF93YXJuaW5ncy4KLS0J KiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0tCi0tMjAxMC0wMS0xOSAgSm9lbCBCcm9iZWNrZXIg IDxicm9iZWNrZXJAYWRhY29yZS5jb20+Ci0tCi0gCSJkZWxldGUiIGFkYS1sZXguYzppbnB1dCBm dW5jdGlvbiwgbm90IHVzZWQuCi0gCSogYWRhLWxleC5sOiAjZGVmaW5lIFlZX05PX0lOUFVULgot IAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS5wYXRjaCBiL2dkYi11cHN0cmVhbS5wYXRjaApp bmRleCBlNjZkMjQ1Li4xNTk0YWNkIDEwMDY0NAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysr IGIvZ2RiLXVwc3RyZWFtLnBhdGNoCkBAIC0xLDI5OSArMSwyMzkgQEAKLUZZSTogZml4IHBvc3Np YmxlIGNyYXNoIGluIGZpbmRfY2hhcnNldF9uYW1lcwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTItMDIvbXNnMDAwNzMuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wMi9tc2cwMDAzNy5odG1sCi1odHRwczovL2J1Z3ppbGxhLnJlZGhh dC5jb20vc2hvd19idWcuY2dpP2lkPTc4NjA5MQotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMi8wNyAwNDo0ODoxNAkxLjEzODEwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8w NyAxNTo0MjozMwkxLjEzODExCi0jIyAtMSwzICsxLDcgQEAKLSsyMDEyLTAyLTA3ICBUb20gVHJv bWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRf bmFtZXMpOiBDaGVjayAnaW4nIGFnYWluc3QgTlVMTC4KLSsKLSAyMDEyLTAyLTA2ICBEb3VnIEV2 YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0gCi0gCSogZ2RidHlwZXMuaCAoc3RydWN0IG1haW5fdHlw ZSk6IENoYW5nZSB0eXBlIG9mIG5hbWUsdGFnX25hbWUsCi0tLS0gc3JjL2dkYi9jaGFyc2V0LmMJ MjAxMi8wMS8yNCAyMTozNjozNwkxLjQ3Ci0rKysgc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMi8w NyAxNTo0MjozOQkxLjQ4Ci1AQCAtODM5LDcgKzgzOSw3IEBACi0gCSBwYXJzZSB0aGUgZ2xpYmMg YW5kIGxpYmljb252IGZvcm1hdHM7IGZlZWwgZnJlZSB0byBhZGQgb3RoZXJzCi0gCSBhcyBuZWVk ZWQuICAqLwotIAotLSAgICAgIHdoaWxlICghZmVvZiAoaW4pKQotKyAgICAgIHdoaWxlIChpbiAh PSBOVUxMICYmICFmZW9mIChpbikpCi0gCXsKLSAJICAvKiBUaGUgc2l6ZSBvZiBidWYgaXMgY2hv c2VuIGFyYml0cmFyaWx5LiAgKi8KLSAJICBjaGFyIGJ1ZlsxMDI0XTsKLQotCi0KLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAyL21zZzAwMTUxLmh0bWwKLVN1Ympl Y3Q6IFtwYXRjaF0gcHBjLWxpbnV4LW5hdC5jOiBGaXggZ2NjLTQuNyBhbGlhc2luZyB3YXJuaW5n cworaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDYvbXNnMDAwNjUu aHRtbAorU3ViamVjdDogW2NvbW1pdCAxLzJdIHRlc3RzdWl0ZTogY29kZV9lbGltLmV4cDogdW5p cXVlIG5hbWVzCiAKIEhpLAogCi1wcGMtbGludXgtbmF0LmM6IEluIGZ1bmN0aW9uICdmZXRjaF9y ZWdpc3Rlcic6Ci1wcGMtbGludXgtbmF0LmM6NTk4Ojk6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHR5 cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMgWy1XZXJy b3I9c3RyaWN0LWFsaWFzaW5nXQotcHBjLWxpbnV4LW5hdC5jOiBJbiBmdW5jdGlvbiAnc3RvcmVf cmVnaXN0ZXInOgotcHBjLWxpbnV4LW5hdC5jOjEwNzg6ODogZXJyb3I6IGRlcmVmZXJlbmNpbmcg dHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcyBbLVdl cnJvcj1zdHJpY3QtYWxpYXNpbmddCit0aGlzIGlzIGp1c3QgcmVtb3ZhbCBvZiBub24tdW5pcXVl IHRlc3QgbmFtZXMgYW5kIG9uZSBzbWFsbCBzaW1wbGlmaWNhdGlvbi4KIAotZ2NjLTQuNy4wLTAu MTAuZmMxNy5wcGM2NAorQ2hlY2tlZCBpbi4KIAotUHJvYmFibHkgY2xlYXIsIEkgbG9va2VkIGF0 IG1ha2luZyBpdCB1c2luZyB1bmlvbiBpbnN0ZWFkIG9mIG1lbWNweSBidXQgdGhhdAotd291bGQg YmUgdG9vIHVnbHkuCiAKLU5vIHJlZ3Jlc3Npb25zIG9uIHBwYzY0LWZlZG9yYXJhd2hpZGUtbGlu dXgtZ251IG9ubHkgZm9yIGdkYi5iYXNlLyouZXhwLgorVGhhbmtzLAorSmFuCiAKLUkgd2lsbCBj aGVjayBpdCBpbi4KIAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNi9t c2cwMDAxMS5odG1sCisKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMi8wNS8y OCAyMDozNzoyOQkxLjMyMDkKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMi8w Ni8wMyAxNzowNjowNAkxLjMyMTAKKyMjIC0xLDMgKzEsMTYgQEAKKysyMDEyLTA2LTAzICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLmJhc2Uv Y29kZV9lbGltLmV4cCAoYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCk6Cisr CVNpbXBsaWZ5IGl0IHRvIC4uLgorKwkoc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9KTogLi4uIGhl cmUuCisrCSh0ZXN0IGVsaW1pbmF0ZWQgdmFyIG15X2dsb2JhbF9zeW1ib2wpCisrCSh0ZXN0IGVs aW1pbmF0ZWQgdmFyIG15X3N0YXRpY19zeW1ib2wpCisrCSh0ZXN0IGVsaW1pbmF0ZWQgdmFyIG15 X2dsb2JhbF9mdW5jLCBnZXQgYWRkcmVzcyBvZiBtYWluKTogV3JhcCB0aGVtIHRvCisrCSdzaW5n bGUgcHN5bXRhYnMnIGFuZCAnc2luZ2xlIHN5bXRhYnMnCisrCShnZXQgYWRkcmVzcyBvZiBteV9n bG9iYWxfc3ltYm9sLCBnZXQgYWRkcmVzcyBvZiBteV9zdGF0aWNfc3ltYm9sKQorKwkoZ2V0IGFk ZHJlc3Mgb2YgbXlfZ2xvYmFsX2Z1bmMsIGdldCBhZGRyZXNzIG9mIG1haW4pOiBXcmFwIHRoZW0g dG8KKysJJ29yZGVyMScgYW5kICdvcmRlcjInLgorKworIDIwMTItMDUtMjggIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIuc2VydmVyL3NvbGli LWxpc3QtbGliLmM6IE5ldyBmaWxlLgorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Nv ZGVfZWxpbS5leHAJMjAxMi8wMS8xNiAxNjoyMTo0NAkxLjQKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9jb2RlX2VsaW0uZXhwCTIwMTIvMDYvMDMgMTc6MDY6MDQJMS41CitAQCAtOTUs MTYgKzk1LDE2IEBACisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKyAKKy1nZGJfdGVzdCAiYWRkLXN5 bWJvbC1maWxlICR7YmluZmlsZTF9IDB4MTAwMDAwIiBcCisrZ2RiX3Rlc3QgInN5bWJvbC1maWxl ICR7YmluZmlsZTF9IiBcCisgCSJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxc LlxcLlxcLmRvbmVcXC4ofFxyXG5Vc2luZyBob3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5IC4qbGli dGhyZWFkX2RiLnNvLipcXC4pIiBcCistCSJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4 MTAwMDAwIiBcCistCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTF9 XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4MTAwMDAwXFtcclxuXF0rXFwoeSBvciBu XFwpICIgXAorLQkieSIKKysJInN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSIKKyAKKy10ZXN0X2Vs aW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9zeW1ib2wKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X3N0 YXRpY19zeW1ib2wKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9mdW5jCistbm90X251 bGxfdmFyX2FkZHJlc3MgbWFpbgorK3dpdGhfdGVzdF9wcmVmaXggInNpbmdsZSBwc3ltdGFicyIg eworKyAgICB0ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9zeW1ib2wKKysgICAgdGVzdF9l bGltaW5hdGVkX3ZhciBteV9zdGF0aWNfc3ltYm9sCisrICAgIHRlc3RfZWxpbWluYXRlZF92YXIg bXlfZ2xvYmFsX2Z1bmMKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbWFpbgorK30KKyAKKyAj IFNhbWUgdGhpbmcgZm9yIHN5bXRhYnMKKyAKK0BAIC0xMTUsMTAgKzExNSwxMiBAQAorIGdkYl9z dGFydAorIHNldCBHREJGTEFHUyAkc2F2ZWRfZ2RiZmxhZ3MKKyAKKy10ZXN0X2VsaW1pbmF0ZWRf dmFyIG15X2dsb2JhbF9zeW1ib2wKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X3N0YXRpY19zeW1i b2wKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9mdW5jCistbm90X251bGxfdmFyX2Fk ZHJlc3MgbWFpbgorK3dpdGhfdGVzdF9wcmVmaXggInNpbmdsZSBzeW10YWJzIiB7CisrICAgIHRl c3RfZWxpbWluYXRlZF92YXIgbXlfZ2xvYmFsX3N5bWJvbAorKyAgICB0ZXN0X2VsaW1pbmF0ZWRf dmFyIG15X3N0YXRpY19zeW1ib2wKKysgICAgdGVzdF9lbGltaW5hdGVkX3ZhciBteV9nbG9iYWxf ZnVuYworKyAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCisrfQorIAorICMgYmluZmlsZTIg Y29udGFpbnMgdGhlIHN5bWJvbHMgdGhhdCBoYXZlIGJlZW4gZWxpbWluYXRlZCBpbiBiaW5maWxl MS4gQ2hlY2sKKyAjIHRoZSBlbGltaW5hdGVkIHN5bWJvbHMgZG9lcyBub3QgaGlkZSB0aGVzZSB2 YWxpZCBvbmVzLgorQEAgLTEzOCwxMCArMTQwLDEyIEBACisgCSJhZGQgc3ltYm9sIHRhYmxlIGZy b20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4 MjAwMDAwXFtcclxuXF0rXFwoeSBvciBuXFwpICIgXAorIAkieSIKKyAKKy1ub3RfbnVsbF92YXJf YWRkcmVzcyBteV9nbG9iYWxfc3ltYm9sCistbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGlj X3N5bWJvbAorLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9mdW5jCistbm90X251bGxf dmFyX2FkZHJlc3MgbWFpbgorK3dpdGhfdGVzdF9wcmVmaXggIm9yZGVyMSIgeworKyAgICBub3Rf bnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfc3ltYm9sCisrICAgIG5vdF9udWxsX3Zhcl9hZGRy ZXNzIG15X3N0YXRpY19zeW1ib2wKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFs X2Z1bmMKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbWFpbgorK30KKyAKKyAjIFNhbWUgdGhp bmcsIGJ1dCBsb2FkaW5nIGJpbmZpbGUyIGJlZm9yZSBiaW5maWxlMS4KKyAKK0BAIC0xNjAsOSAr MTY0LDkgQEAKKyAJImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1c IiBhdFxbIFx0XHJcblxdK1wudGV4dF9hZGRyID0gMHgxMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5c XCkgIiBcCisgCSJ5IgorIAorLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9zeW1ib2wK Ky1ub3RfbnVsbF92YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCistbm90X251bGxfdmFyX2Fk ZHJlc3MgbXlfZ2xvYmFsX2Z1bmMKKy1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCistCistCisr d2l0aF90ZXN0X3ByZWZpeCAib3JkZXIyIiB7CisrICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15 X2dsb2JhbF9zeW1ib2wKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5bWJv bAorKyAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYworKyAgICBub3RfbnVs bF92YXJfYWRkcmVzcyBtYWluCisrfQogCi1UaGFua3MsCi1KYW4KIAogCi1nZGIvCi0yMDEyLTAy LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CitodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNi9tc2cwMDA2Ni5odG1sCitTdWJq ZWN0OiBbY29tbWl0IDIvMl0gdGVzdHN1aXRlOiBjb2RlX2VsaW0uZXhwOiBGaXggZmFsc2UgRkFJ TAogCi0JKiBwcGMtbGludXgtbmF0LmMgKGZldGNoX3JlZ2lzdGVyLCBzdG9yZV9yZWdpc3Rlcik6 IEZpeCBHQ0MgYWxpYXNpbmcKLQljb21waWxhdGlvbiB3YXJuaW5nLgorSGksCiAKLS0tLSBhL2dk Yi9wcGMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLUBAIC01OTMsOSAr NTkzLDEwIEBAIGZldGNoX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQg dGlkLCBpbnQgcmVnbm8pCi0gICAgICAgIGJ5dGVzX3RyYW5zZmVycmVkIDwgcmVnaXN0ZXJfc2l6 ZSAoZ2RiYXJjaCwgcmVnbm8pOwotICAgICAgICBieXRlc190cmFuc2ZlcnJlZCArPSBzaXplb2Yg KGxvbmcpKQotICAgICB7Ci0rICAgICAgbG9uZyBsOwotKwotICAgICAgIGVycm5vID0gMDsKLS0g ICAgICAqKGxvbmcgKikgJmJ1ZltieXRlc190cmFuc2ZlcnJlZF0KLS0gICAgICAgID0gcHRyYWNl IChQVFJBQ0VfUEVFS1VTRVIsIHRpZCwgKFBUUkFDRV9UWVBFX0FSRzMpIHJlZ2FkZHIsIDApOwot KyAgICAgIGwgPSBwdHJhY2UgKFBUUkFDRV9QRUVLVVNFUiwgdGlkLCAoUFRSQUNFX1RZUEVfQVJH MykgcmVnYWRkciwgMCk7Ci0gICAgICAgcmVnYWRkciArPSBzaXplb2YgKGxvbmcpOwotICAgICAg IGlmIChlcnJubyAhPSAwKQotIAl7Ci1AQCAtNjA0LDYgKzYwNSw3IEBAIGZldGNoX3JlZ2lzdGVy IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgdGlkLCBpbnQgcmVnbm8pCi0gCQkgICBn ZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZ25vKSwgcmVnbm8pOwotIAkgIHBlcnJv cl93aXRoX25hbWUgKG1lc3NhZ2UpOwotIAl9Ci0rICAgICAgbWVtY3B5ICgmYnVmW2J5dGVzX3Ry YW5zZmVycmVkXSwgJmwsIHNpemVvZiAobCkpOwotICAgICB9Ci0gCi0gICAvKiBOb3cgc3VwcGx5 IHRoZSByZWdpc3Rlci4gIEtlZXAgaW4gbWluZCB0aGF0IHRoZSByZWdjYWNoZSdzIGlkZWEKLUBA IC0xMDczLDkgKzEwNzUsMTEgQEAgc3RvcmVfcmVnaXN0ZXIgKGNvbnN0IHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCB0aWQsIGludCByZWdubykKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBi eXRlc190b190cmFuc2ZlcjsgaSArPSBzaXplb2YgKGxvbmcpKQotICAgICB7Ci0rICAgICAgbG9u ZyBsOwotKwotKyAgICAgIG1lbWNweSAoJmwsICZidWZbaV0sIHNpemVvZiAobCkpOwotICAgICAg IGVycm5vID0gMDsKLS0gICAgICBwdHJhY2UgKFBUUkFDRV9QT0tFVVNFUiwgdGlkLCAoUFRSQUNF X1RZUEVfQVJHMykgcmVnYWRkciwKLS0JICAgICAgKihsb25nICopICZidWZbaV0pOwotKyAgICAg IHB0cmFjZSAoUFRSQUNFX1BPS0VVU0VSLCB0aWQsIChQVFJBQ0VfVFlQRV9BUkczKSByZWdhZGRy LCBsKTsKLSAgICAgICByZWdhZGRyICs9IHNpemVvZiAobG9uZyk7Ci0gCi0gICAgICAgaWYgKGVy cm5vID09IEVJTyAKK3dpdGggRmVkb3JhIDE4IHg4Nl82NCAoUmF3aGlkZSkgdGhlcmUgaXMgYSBm YWxzZSBGQUlsIHNpbmNlOgorMjE2NzkzMWNmNzBmOTEyMDZlZmI4YjAxZTg0OGE1NWQ4MmEzNDdj ZSBpcyB0aGUgZmlyc3QgYmFkIGNvbW1pdAorQXV0aG9yOiBUb20gVHJvbWV5IDx0cm9tZXlAcmVk aGF0LmNvbT4KK0RhdGU6ICAgRnJpIE1heSAxOCAxNTozMTozOSAyMDEyICswMDAwCitodHRwOi8v c291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzOTA3CiAKKyBwcmludCAm bXlfZ2xvYmFsX3N5bWJvbAorLSQxID0gKGludCAqKSAweDgwNGEwMDQKKy0oZ2RiKSBQQVNTOiBn ZGIuYmFzZS9jb2RlX2VsaW0uZXhwOiBnZXQgYWRkcmVzcyBvZiBteV9nbG9iYWxfc3ltYm9sCisr JDEgPSAoaW50ICopIDB4ODA0YTAwNCA8Y29tcGxldGVkLjU3MzI+CisrKGdkYikgRkFJTDogZ2Ri LmJhc2UvY29kZV9lbGltLmV4cDogZ2V0IGFkZHJlc3Mgb2YgbXlfZ2xvYmFsX3N5bWJvbAogCitO b3RoaW5nIHJlYWxseSBjaGFuZ2VkLCBqdXN0IEdEQiBub3cgcHJpbnRzIDxjb21wbGV0ZWQuNTcz Mj4gYW5kIHRoZSB0ZXN0Y2FzZQorZXhwZWN0cyBlaXRoZXIgbm9uZSBvciA8bXlfZ2xvYmFsX3N5 bWJvbD4gc3VmZml4LgogCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx Mi0wMi9tc2cwMDQwOS5odG1sCi1TdWJqZWN0OiBGWUk6IHJlbW92ZSBleHRyYW5lb3VzIGJsb2Nr IGZyb20gZHcyX21hcF9zeW10YWJzX21hdGNoaW5nX2ZpbGVuYW1lCi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAyL21zZzAwMTE3Lmh0bWwKLWNvbW1pdCA2MWQ4MTYxYjMz YjFlN2RiYzgwYmE2ZjdhOTI1MDBhMTU5NGRhNTVjCitUaGlzIGlzIGJlY2F1c2UgdGhlIHR3byBz eW1ib2wgZmlsZXMgKHRoZWlyIHNlY3Rpb25zIC5kYXRhLy5ic3MpIGhhdmUKK292ZXJsYXBwZWQg c28gR0RCIGNob29zZXMgcmFuZG9tbHkgd2hpY2ggc3ltYm9sIHRvIGRpc3BsYXkuICBBbmQgc2lu Y2UKK0ZlZG9yYSAxOCBHQ0MgcHV0cyB0aGVyZSB0aGF0ICJjb21wbGV0ZWQuNTczMiIgc3ltYm9s LgogCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8yMCAwOTo0MjozNAkxLjEzODQ1Ci0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8yMCAxOToyNDozNAkxLjEzODQ2Ci0jIyAtMSwz ICsxLDggQEAKLSsyMDEyLTAyLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0r Ci0rCSogZHdhcmYycmVhZC5jIChkdzJfbWFwX3N5bXRhYnNfbWF0Y2hpbmdfZmlsZW5hbWUpOiBS ZW1vdmUKLSsJZXh0cmFuZW91cyBibG9jay4KLSsKLSAyMDEyLTAyLTIwICBUcmlzdGFuIEdpbmdv bGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgotIAotIAkqIGRhcndpbi1uYXQuaCAoZW51bSBkYXJ3 aW5fbXNnX3N0YXRlKTogQWRkIGNvbW1lbnRzLgotLS0tIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIw MTIvMDIvMDcgMDQ6NDg6MTkJMS42MTIKLSsrKyBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLzAy LzIwIDE5OjI0OjM5CTEuNjEzCi1AQCAtMjQzNywxMyArMjQzNyw2IEBACi0gCQlyZXR1cm4gMTsK LSAJICAgIH0KLSAKLS0JICAgIHsKLS0JICAgICAgaWYgKGR3Ml9tYXBfZXhwYW5kX2FwcGx5IChv YmpmaWxlLCBwZXJfY3UsCi0tCQkJCQluYW1lLCBmdWxsX3BhdGgsIHJlYWxfcGF0aCwKLS0JCQkJ CWNhbGxiYWNrLCBkYXRhKSkKLS0JCXJldHVybiAxOwotLQkgICAgfQotLQotIAkgIC8qIEJlZm9y ZSB3ZSBpbnZva2UgcmVhbHBhdGgsIHdoaWNoIGNhbiBnZXQgZXhwZW5zaXZlIHdoZW4gbWFueQot IAkgICAgIGZpbGVzIGFyZSBpbnZvbHZlZCwgZG8gYSBxdWljayBjb21wYXJpc29uIG9mIHRoZSBi YXNlbmFtZXMuICAqLwotIAkgIGlmICghIGJhc2VuYW1lc19tYXlfZGlmZmVyCitUaGlzIG1heSBi ZSBiZWNhdXNlIGFkZC1zeW1ib2wtZmlsZSBGSUxFIEFERFIgcmVsb2NhdGVzIHRvIEFERFIgb24g dGhlIC50ZXh0CitzZWN0aW9uIGFuZCBsZWF2ZXMgb3RoZXIgc2VjdGlvbnMgYXQgdGhlaXIgb3Jp Z2luYWwgcGxhY2UsIHdoaWNoIGlzIElNTyBhIGJpdAordW5leHBlY3RlZDsgaXQgaXMgYSBGQVEg cGVvcGxlIGV4cGVjdCBtb3JlIEFERFIgdG8gYmUgcmVsb2NhdGlvbiBkaXNwbGFjZW1lbnQKKyhh bmQgbm90IHJlbGF0aXZlIHRvIC50ZXh0IGFuZCBub3QgbGltaXRlZCB0byAudGV4dCkuICBCdXQg dGhpcyBpcyByZWFsbHkKK291dHNpZGUgb2YgdGhlIHNjb3BlIG9mIHRoaXMgdGVzdGNhc2UgZmFs c2UgRkFJTC4KIAorQ2hlY2tlZCBpbi4KIAogCi1GWUk6IGZpeCBzb21lIHBlcmZvcm1hbmNlIGJ1 Z3Mgd2l0aCAuZ2RiX2luZGV4Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMi0wMi9tc2cwMDQxMy5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDEyLTAyL21zZzAwMTE5Lmh0bWwKK1RoYW5rcywKK0phbgogCi0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMi8yMCAxOTo0NDowMAkxLjEzODQ3Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMi8yMCAyMDo1NjoxMgkxLjEzODQ4Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMi0wMi0yMCAg VG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwotKwlQUiBnZGIvMTM0OTg6Ci0rCSog ZHdhcmYycmVhZC5jIChkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcpOiBPbmx5IHZpc2l0IGEK LSsJcGFydGljdWxhciBzZXQgb2YgZmlsZSBuYW1lcyBvbmNlLgotKwkoZHcyX21hcF9zeW1ib2xf ZmlsZW5hbWVzKTogTGlrZXdpc2UuCi0rCi0gMjAxMi0wMi0yMCAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlDb2RlIGNsZWFudXAuCi0tLS0gc3JjL2dk Yi9kd2FyZjJyZWFkLmMJMjAxMi8wMi8yMCAxOToyNDozOQkxLjYxMwotKysrIHNyYy9nZGIvZHdh cmYycmVhZC5jCTIwMTIvMDIvMjAgMjA6NTY6MTIJMS42MTQKLUBAIC0yNzAwLDMyICsyNzAwLDYz IEBACi0gICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGU7Ci0gCi0gICBp ZiAoZmlsZV9tYXRjaGVyICE9IE5VTEwpCi0tICAgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLS0JCSAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5f dHlwZV91bml0cyk7ICsraSkKLS0gICAgICB7Ci0tCWludCBqOwotLQlzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpwZXJfY3UgPSBkdzJfZ2V0X2N1IChpKTsKLS0Jc3RydWN0IHF1aWNrX2ZpbGVf bmFtZXMgKmZpbGVfZGF0YTsKLSsgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw OwotKyAgICAgIGh0YWJfdCB2aXNpdGVkX2ZvdW5kLCB2aXNpdGVkX25vdF9mb3VuZDsKLSAKLS0J cGVyX2N1LT52LnF1aWNrLT5tYXJrID0gMDsKLSsgICAgICB2aXNpdGVkX2ZvdW5kID0gaHRhYl9j cmVhdGVfYWxsb2MgKDEwLAotKwkJCQkJIGh0YWJfaGFzaF9wb2ludGVyLCBodGFiX2VxX3BvaW50 ZXIsCi0rCQkJCQkgTlVMTCwgeGNhbGxvYywgeGZyZWUpOwotKyAgICAgIGNsZWFudXAgPSBtYWtl X2NsZWFudXBfaHRhYl9kZWxldGUgKHZpc2l0ZWRfZm91bmQpOwotKyAgICAgIHZpc2l0ZWRfbm90 X2ZvdW5kID0gaHRhYl9jcmVhdGVfYWxsb2MgKDEwLAotKwkJCQkJICAgICBodGFiX2hhc2hfcG9p bnRlciwgaHRhYl9lcV9wb2ludGVyLAotKwkJCQkJICAgICBOVUxMLCB4Y2FsbG9jLCB4ZnJlZSk7 Ci0rICAgICAgbWFrZV9jbGVhbnVwX2h0YWJfZGVsZXRlICh2aXNpdGVkX25vdF9mb3VuZCk7Ci0g Ci0tCS8qIFdlIG9ubHkgbmVlZCB0byBsb29rIGF0IHN5bXRhYnMgbm90IGFscmVhZHkgZXhwYW5k ZWQuICAqLwotLQlpZiAocGVyX2N1LT52LnF1aWNrLT5zeW10YWIpCi0tCSAgY29udGludWU7Ci0r ICAgICAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cwot KwkJICAgICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfdW5pdHMpOyArK2kpCi0rCXsK LSsJICBpbnQgajsKLSsJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UgPSBkdzJf Z2V0X2N1IChpKTsKLSsJICBzdHJ1Y3QgcXVpY2tfZmlsZV9uYW1lcyAqZmlsZV9kYXRhOwotKwkg IHZvaWQgKipzbG90OwotIAotLQlmaWxlX2RhdGEgPSBkdzJfZ2V0X2ZpbGVfbmFtZXMgKG9iamZp bGUsIHBlcl9jdSk7Ci0tCWlmIChmaWxlX2RhdGEgPT0gTlVMTCkKLS0JICBjb250aW51ZTsKLSsJ ICBwZXJfY3UtPnYucXVpY2stPm1hcmsgPSAwOwotIAotLQlmb3IgKGogPSAwOyBqIDwgZmlsZV9k YXRhLT5udW1fZmlsZV9uYW1lczsgKytqKQotLQkgIHsKLS0JICAgIGlmIChmaWxlX21hdGNoZXIg KGZpbGVfZGF0YS0+ZmlsZV9uYW1lc1tqXSwgZGF0YSkpCi0tCSAgICAgIHsKLS0JCXBlcl9jdS0+ di5xdWljay0+bWFyayA9IDE7Ci0tCQlicmVhazsKLS0JICAgICAgfQotLQkgIH0KLS0gICAgICB9 Ci0rCSAgLyogV2Ugb25seSBuZWVkIHRvIGxvb2sgYXQgc3ltdGFicyBub3QgYWxyZWFkeSBleHBh bmRlZC4gICovCi0rCSAgaWYgKHBlcl9jdS0+di5xdWljay0+c3ltdGFiKQotKwkgICAgY29udGlu dWU7Ci0rCi0rCSAgZmlsZV9kYXRhID0gZHcyX2dldF9maWxlX25hbWVzIChvYmpmaWxlLCBwZXJf Y3UpOwotKwkgIGlmIChmaWxlX2RhdGEgPT0gTlVMTCkKLSsJICAgIGNvbnRpbnVlOwotKwotKwkg IGlmIChodGFiX2ZpbmQgKHZpc2l0ZWRfbm90X2ZvdW5kLCBmaWxlX2RhdGEpICE9IE5VTEwpCi0r CSAgICBjb250aW51ZTsKLSsJICBlbHNlIGlmIChodGFiX2ZpbmQgKHZpc2l0ZWRfZm91bmQsIGZp bGVfZGF0YSkgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgcGVyX2N1LT52LnF1aWNrLT5tYXJr ID0gMTsKLSsJICAgICAgY29udGludWU7Ci0rCSAgICB9Ci0rCi0rCSAgZm9yIChqID0gMDsgaiA8 IGZpbGVfZGF0YS0+bnVtX2ZpbGVfbmFtZXM7ICsraikKLSsJICAgIHsKLSsJICAgICAgaWYgKGZp bGVfbWF0Y2hlciAoZmlsZV9kYXRhLT5maWxlX25hbWVzW2pdLCBkYXRhKSkKLSsJCXsKLSsJCSAg cGVyX2N1LT52LnF1aWNrLT5tYXJrID0gMTsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICB9Ci0r Ci0rCSAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChwZXJfY3UtPnYucXVpY2stPm1hcmsKLSsJCQkJ ID8gdmlzaXRlZF9mb3VuZAotKwkJCQkgOiB2aXNpdGVkX25vdF9mb3VuZCwKLSsJCQkJIGZpbGVf ZGF0YSwgSU5TRVJUKTsKLSsJICAqc2xvdCA9IGZpbGVfZGF0YTsKLSsJfQotKwotKyAgICAgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKLSsgICAgfQotIAotICAgZm9yIChpdGVyID0gMDsgaXRlciA8 IGluZGV4LT5zeW1ib2xfdGFibGVfc2xvdHM7ICsraXRlcikKLSAgICAgewotQEAgLTI3ODcsMTUg KzI4MTgsMzUgQEAKLSAJCQkgIHZvaWQgKmRhdGEsIGludCBuZWVkX2Z1bGxuYW1lKQotIHsKLSAg IGludCBpOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rICBodGFiX3QgdmlzaXRlZCA9 IGh0YWJfY3JlYXRlX2FsbG9jICgxMCwgaHRhYl9oYXNoX3BvaW50ZXIsIGh0YWJfZXFfcG9pbnRl ciwKLSsJCQkJICAgICAgTlVMTCwgeGNhbGxvYywgeGZyZWUpOwotIAotKyAgY2xlYW51cCA9IG1h a2VfY2xlYW51cF9odGFiX2RlbGV0ZSAodmlzaXRlZCk7Ci0gICBkdzJfc2V0dXAgKG9iamZpbGUp OwotIAotKyAgLyogV2UgY2FuIGlnbm9yZSBmaWxlIG5hbWVzIGNvbWluZyBmcm9tIGFscmVhZHkt ZXhwYW5kZWQgQ1VzLiAgKi8KLSsgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxl LT5uX2NvbXBfdW5pdHMKLSsJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfdW5pdHMp OyArK2kpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3Ug PSBkdzJfZ2V0X2N1IChpKTsKLSsKLSsgICAgICBpZiAocGVyX2N1LT52LnF1aWNrLT5zeW10YWIp Ci0rCXsKLSsJICB2b2lkICoqc2xvdCA9IGh0YWJfZmluZF9zbG90ICh2aXNpdGVkLCBwZXJfY3Ut PnYucXVpY2stPmZpbGVfbmFtZXMsCi0rCQkJCQlJTlNFUlQpOwotKwotKwkgICpzbG90ID0gcGVy X2N1LT52LnF1aWNrLT5maWxlX25hbWVzOwotKwl9Ci0rICAgIH0KLSsKLSAgIGZvciAoaSA9IDA7 IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLSAJCSAgICsgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX3R5cGVfdW5pdHMpOyArK2kpCi0gICAgIHsKLSAgICAgICBpbnQgajsKLSAg ICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UgPSBkdzJfZ2V0X2N1IChpKTsK LSAgICAgICBzdHJ1Y3QgcXVpY2tfZmlsZV9uYW1lcyAqZmlsZV9kYXRhOwotKyAgICAgIHZvaWQg KipzbG90OwotIAotICAgICAgIC8qIFdlIG9ubHkgbmVlZCB0byBsb29rIGF0IHN5bXRhYnMgbm90 IGFscmVhZHkgZXhwYW5kZWQuICAqLwotICAgICAgIGlmIChwZXJfY3UtPnYucXVpY2stPnN5bXRh YikKLUBAIC0yODA1LDYgKzI4NTYsMTQgQEAKLSAgICAgICBpZiAoZmlsZV9kYXRhID09IE5VTEwp Ci0gCWNvbnRpbnVlOwotIAotKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodmlzaXRlZCwg ZmlsZV9kYXRhLCBJTlNFUlQpOwotKyAgICAgIGlmICgqc2xvdCkKLSsJewotKwkgIC8qIEFscmVh ZHkgdmlzaXRlZC4gICovCi0rCSAgY29udGludWU7Ci0rCX0KLSsgICAgICAqc2xvdCA9IGZpbGVf ZGF0YTsKLSsKLSAgICAgICBmb3IgKGogPSAwOyBqIDwgZmlsZV9kYXRhLT5udW1fZmlsZV9uYW1l czsgKytqKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqdGhpc19yZWFsX25hbWU7Ci1AQCAtMjgxNiw2 ICsyODc1LDggQEAKLSAJICAoKmZ1bikgKGZpbGVfZGF0YS0+ZmlsZV9uYW1lc1tqXSwgdGhpc19y ZWFsX25hbWUsIGRhdGEpOwotIAl9Ci0gICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVw KTsKLSB9Ci0gCi0gc3RhdGljIGludAorCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDEyLTA2L21zZzAwMDEyLmh0bWwKKworIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwkyMDEyLzA2LzAzIDE3OjA2OjA0CTEuMzIxMAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5n ZUxvZwkyMDEyLzA2LzAzIDE3OjEwOjI4CTEuMzIxMQorIyMgLTExLDYgKzExLDE2IEBACisgCShn ZXQgYWRkcmVzcyBvZiBteV9nbG9iYWxfZnVuYywgZ2V0IGFkZHJlc3Mgb2YgbWFpbik6IFdyYXAg dGhlbSB0bworIAknb3JkZXIxJyBhbmQgJ29yZGVyMicuCisgCisrCSogZ2RiLmJhc2UvY29kZV9l bGltLmV4cAorKwkoYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCkKKysJKGFk ZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDApOiBXcmFwIHRoZW0gdG8gJ29yZGVy MScgYW5kCisrCSdvcmRlcjInLgorKwkob3JkZXIxOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0Zmls ZTF9IDB4MTAwMDAwKQorKwkob3JkZXIxOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4 MjAwMDAwKQorKwkob3JkZXIyOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAw KQorKwkob3JkZXIyOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwKTogQWRk IC1zIC5kYXRhIGFuZCAtcworKwkuYnNzIGFzIGFwcHJvcHJpYXRlLgorKworIDIwMTItMDUtMjgg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIu c2VydmVyL3NvbGliLWxpc3QtbGliLmM6IE5ldyBmaWxlLgorLS0tIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2NvZGVfZWxpbS5leHAJMjAxMi8wNi8wMyAxNzowNjowNAkxLjUKKysrKyBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb2RlX2VsaW0uZXhwCTIwMTIvMDYvMDMgMTc6MTA6MjgJ MS42CitAQCAtMTI4LDE5ICsxMjgsMTkgQEAKKyBnZGJfZXhpdAorIGdkYl9zdGFydAorIAorLWdk Yl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlMX0gMHgxMDAwMDAiIFwKKy0JIlJlYWRp bmcgc3ltYm9scyBmcm9tIC4qJHt0ZXN0ZmlsZTF9XFwuXFwuXFwuZG9uZVxcLiIgXAorLQkiYWRk LXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCIgXAorLQkiYWRkIHN5bWJvbCB0YWJs ZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUxfVwiIGF0XFsgXHRcclxuXF0rXC50ZXh0X2FkZHIg PSAweDEwMDAwMFxbXHJcblxdK1xcKHkgb3IgblxcKSAiIFwKKy0JInkiCistCistZ2RiX3Rlc3Qg ImFkZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUyfSAweDIwMDAwMCIgXAorLQkiUmVhZGluZyBzeW1i b2xzIGZyb20gLioke3Rlc3RmaWxlMn1cXC5cXC5cXC5kb25lXFwuIiBcCistCSJhZGQtc3ltYm9s LWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAwIiBcCistCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20g ZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4MjAw MDAwXFtcclxuXF0rXFwoeSBvciBuXFwpICIgXAorLQkieSIKKy0KKyB3aXRoX3Rlc3RfcHJlZml4 ICJvcmRlcjEiIHsKKysgICAgZ2RiX3Rlc3QgImFkZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUxfSAw eDEwMDAwMCAtcyAuYnNzIDB4MTIwMDAwIiBcCisrCSAgICAiUmVhZGluZyBzeW1ib2xzIGZyb20g Lioke3Rlc3RmaWxlMX1cXC5cXC5cXC5kb25lXFwuIiBcCisrCSAgICAiYWRkLXN5bWJvbC1maWxl ICR7dGVzdGZpbGUxfSAweDEwMDAwMCIgXAorKwkgICAgImFkZCBzeW1ib2wgdGFibGUgZnJvbSBm aWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdC4qXFwoeSBvciBuXFwpICIgXAorKwkgICAgInkiCisr CisrICAgIGdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlMn0gMHgyMDAwMDAgLXMg LmRhdGEgMHgyMTAwMDAgLXMgLmJzcyAweDIyMDAwMCIgXAorKwkgICAgIlJlYWRpbmcgc3ltYm9s cyBmcm9tIC4qJHt0ZXN0ZmlsZTJ9XFwuXFwuXFwuZG9uZVxcLiIgXAorKwkgICAgImFkZC1zeW1i b2wtZmlsZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDAiIFwKKysJICAgICJhZGQgc3ltYm9sIHRhYmxl IGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXQuKlxcKHkgb3IgblxcKSAiIFwKKysJICAg ICJ5IgorKworICAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfc3ltYm9sCisgICAg IG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X3N0YXRpY19zeW1ib2wKKyAgICAgbm90X251bGxfdmFy X2FkZHJlc3MgbXlfZ2xvYmFsX2Z1bmMKK0BAIC0xNTIsMTkgKzE1MiwxOSBAQAorIGdkYl9leGl0 CisgZ2RiX3N0YXJ0CisgCistZ2RiX3Rlc3QgImFkZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUyfSAw eDIwMDAwMCIgXAorLQkiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxlMn1cXC5cXC5c XC5kb25lXFwuIiBcCistCSJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAwIiBc CistCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXRcWyBc dFxyXG5cXStcLnRleHRfYWRkciA9IDB4MjAwMDAwXFtcclxuXF0rXFwoeSBvciBuXFwpICIgXAor LQkieSIKKy0KKy1nZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTF9IDB4MTAwMDAw IiBcCistCSJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxcLlxcLlxcLmRvbmVc XC4iIFwKKy0JImFkZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDAiIFwKKy0JImFk ZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdFxbIFx0XHJcblxd K1wudGV4dF9hZGRyID0gMHgxMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCistCSJ5Igor LQorIHdpdGhfdGVzdF9wcmVmaXggIm9yZGVyMiIgeworKyAgICBnZGJfdGVzdCAiYWRkLXN5bWJv bC1maWxlICR7YmluZmlsZTJ9IDB4MjAwMDAwIC1zIC5kYXRhIDB4MjEwMDAwIC1zIC5ic3MgMHgy MjAwMDAiIFwKKysJICAgICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUyfVxcLlxc LlxcLmRvbmVcXC4iIFwKKysJICAgICJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAw MDAwIiBcCisrCSAgICAiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUy fVwiIGF0LipcXCh5IG9yIG5cXCkgIiBcCisrCSAgICAieSIKKysKKysgICAgZ2RiX3Rlc3QgImFk ZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUxfSAweDEwMDAwMCAtcyAuYnNzIDB4MTIwMDAwIiBcCisr CSAgICAiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxlMX1cXC5cXC5cXC5kb25lXFwu IiBcCisrCSAgICAiYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCIgXAorKwkg ICAgImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdC4qXFwo eSBvciBuXFwpICIgXAorKwkgICAgInkiCisrCisgICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15 X2dsb2JhbF9zeW1ib2wKKyAgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5bWJv bAorICAgICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYwoKZGlmZiAtLWdpdCBh L2dkYi14ODYtb25zdGFjay0xb2YyLnBhdGNoIGIvZ2RiLXg4Ni1vbnN0YWNrLTFvZjIucGF0Y2gK aW5kZXggYTdmNjExZC4uN2Q3NTU2YyAxMDA2NDQKLS0tIGEvZ2RiLXg4Ni1vbnN0YWNrLTFvZjIu cGF0Y2gKKysrIGIvZ2RiLXg4Ni1vbnN0YWNrLTFvZjIucGF0Y2gKQEAgLTQyLDggKzQyLDEwIEBA IGdkYi90ZXN0c3VpdGUvCiAJKiBnZGIuYmFzZS9jYWxsLXNpZ25hbC1yZXN1bWUuZXhwIChtYWlu dGVuYW5jZSBwcmludCBkdW1teS1mcmFtZXMpCiAJKG1haW50ZW5hbmNlIGluZm8gYnJlYWtwb2lu dHMpOiBOZXcgdGVzdHMuCiAKLS0tLSBhL2dkYi9kdW1teS1mcmFtZS5jCi0rKysgYi9nZGIvZHVt bXktZnJhbWUuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R1bW15LWZyYW1lLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2R1bW15LWZyYW1l LmMJMjAxMi0wMS0wNCAwOToxNzowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9kdW1teS1mcmFtZS5jCTIwMTItMDYtMDIgMjA6NDI6NDAuOTA3NzIwMzI3ICsw MjAwCiBAQCAtMjksNiArMjksNyBAQAogICNpbmNsdWRlICJnZGJjbWQuaCIKICAjaW5jbHVkZSAi Z2RiX3N0cmluZy5oIgpAQCAtNTIsNyArNTQsNyBAQCBnZGIvdGVzdHN1aXRlLwogIAogIC8qIER1 bW15IGZyYW1lLiAgVGhpcyBzYXZlcyB0aGUgcHJvY2Vzc29yIHN0YXRlIGp1c3QgcHJpb3IgdG8g c2V0dGluZwogICAgIHVwIHRoZSBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLiAgT2xkZXIgdGFyZ2V0 cyBzYXZlIHRoZSByZWdpc3RlcnMKLUBAIC0xMDgsMTkgKzEwOSwzNiBAQCByZW1vdmVfZHVtbXlf ZnJhbWUgKHN0cnVjdCBkdW1teV9mcmFtZSAqKmR1bW15X3B0cikKK0BAIC0xMDgsMTkgKzEwOSwz NiBAQCByZW1vdmVfZHVtbXlfZnJhbWUgKHN0cnVjdCBkdW1teV9mcmFtZSAqCiAgICB4ZnJlZSAo ZHVtbXkpOwogIH0KICAKQEAgLTkyLDExICs5NCwxMyBAQCBnZGIvdGVzdHN1aXRlLwogICAgKmR1 bW15X3B0ciA9IGR1bW15LT5uZXh0OwogICAgeGZyZWUgKGR1bW15KTsKICAKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvY2FsbC1zaWduYWwtcmVzdW1lLmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9jYWxsLXNpZ25hbC1yZXN1bWUuZXhwCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NhbGwtc2lnbmFsLXJlc3VtZS5leHAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9jYWxsLXNpZ25hbC1yZXN1bWUuZXhwCTIwMTItMDEtMjMgMTg6MTE6NTAuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Nh bGwtc2lnbmFsLXJlc3VtZS5leHAJMjAxMi0wNi0wMiAyMDo0MzoxMC41MjM3MDkwNTIgKzAyMDAK IEBAIC0xMDEsNiArMTAxLDE4IEBAIGdkYl90ZXN0ICJmcmFtZSAkZnJhbWVfbnVtYmVyIiAiLioi CiAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY29uZmlybSBvZmYiCi0gZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJyZXR1cm4iCisgZ2RiX3Rlc3QgInJldHVybiIgIiIKICAKICsjIFZlcmlmeSB0aGVyZSBh cmUgbm8gcmVtYWlucyBvZiB0aGUgZHVtbXkgZnJhbWUuCiArZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJt YWludGVuYW5jZSBwcmludCBkdW1teS1mcmFtZXMiCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9n ZGIuc3BlYwppbmRleCA3ZWQ1MGM4Li41NTk4NjljIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysg Yi9nZGIuc3BlYwpAQCAtMjQsMTMgKzI0LDEzIEBACiAgJWdsb2JhbCBfcm9vdF9iaW5kaXIgJXtf YmluZGlyfQogfQogCi1TdW1tYXJ5OiBBIEdOVSBzb3VyY2UtbGV2ZWwgZGVidWdnZXIgZm9yIEMs IEMrKywgRm9ydHJhbiBhbmQgb3RoZXIgbGFuZ3VhZ2VzCitTdW1tYXJ5OiBBIEdOVSBzb3VyY2Ut bGV2ZWwgZGVidWdnZXIgZm9yIEMsIEMrKywgRm9ydHJhbiwgR28gYW5kIG90aGVyIGxhbmd1YWdl cwogTmFtZTogJXs/c2NsX3ByZWZpeH1nZGIKIAogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBv ZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJl cmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFu dWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIw MDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEy IChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi0lZ2xvYmFsIHNuYXAgMjAxMjAxMjAKKyVn bG9iYWwgc25hcCAyMDEyMDYwMgogVmVyc2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBUaGUgcmVs ZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQg YXQgMS4KQEAgLTEzMywxMCArMTMzLDEwIEBAIFBhdGNoMTA1OiBnZGItNi4zLXBwYzY0c3lzY2Fs bC0yMDA0MDYyMi5wYXRjaAogUGF0Y2gxMTE6IGdkYi02LjMtcHBjNjRkaXNwbGF5c3ltYm9sLTIw MDQxMTI0LnBhdGNoCiAKICMgRml4IHVwc3RyZWFtIGBzZXQgc2NoZWR1bGVyLWxvY2tpbmcgc3Rl cCcgdnMuIHVwc3RyZWFtIFBQQyBhdG9taWMgc2Vxcy4KLSM9bWF5YmVwdXNoK3dvcms6IEl0IGlz IGEgYml0IGRpZmZpY3VsdCBwYXRjaCwgYSBwYXJ0IGlzIHBwYyBzcGVjaWZpYy4KKyM9cHVzaCt3 b3JrOiBJdCBpcyBhIGJpdCBkaWZmaWN1bHQgcGF0Y2gsIGEgcGFydCBpcyBwcGMgc3BlY2lmaWMu CiBQYXRjaDExMjogZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRz Mi5wYXRjaAogIyBNYWtlIHVwc3RyZWFtIGBzZXQgc2NoZWR1bGVyLWxvY2tpbmcgc3RlcCcgYXMg ZGVmYXVsdC4KLSM9bWF5YmVwdXNoK3dvcms6IEhvdyBtdWNoIGlzIHNjaGVkdWxlci1sb2NraW5n IHJlbGV2YW50IGFmdGVyIG5vbi1zdG9wPworIz1wdXNoK3dvcms6IEhvdyBtdWNoIGlzIHNjaGVk dWxlci1sb2NraW5nIHJlbGV2YW50IGFmdGVyIG5vbi1zdG9wPwogUGF0Y2gyNjA6IGdkYi02LjYt c2NoZWR1bGVyX2xvY2tpbmctc3RlcC1pcy1kZWZhdWx0LnBhdGNoCiAKICMgQWRkIGEgd3JhcHBl ciBzY3JpcHQgdG8gR0RCIHRoYXQgaW1wbGVtZW50cyBwc3RhY2sgdXNpbmcgdGhlCkBAIC0xNDcs MTMgKzE0NywxMyBAQCBQYXRjaDExODogZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKICMg VlNZU0NBTEwgYW5kIFBJRQogIz1mZWRvcmF0ZXN0CiBQYXRjaDEyMjogZ2RiLTYuMy10ZXN0LXBp ZS0yMDA1MDEwNy5wYXRjaAotIz1tYXliZXB1c2g6IE1heSBnZXQgb2Jzb2xldGVkIGJ5IFRvbSdz IHVucmVsb2NhdGVkIG9iamZpbGVzIHBhdGNoLgorIz1wdXNoOiBNYXkgZ2V0IG9ic29sZXRlZCBi eSBUb20ncyB1bnJlbG9jYXRlZCBvYmpmaWxlcyBwYXRjaC4KIFBhdGNoMzg5OiBnZGItYXJjaGVy LXBpZS1hZGRvbnMucGF0Y2gKICM9cHVzaCt3b3JrOiBCcmVha3BvaW50cyBkaXNhYmxpbmcgbWF0 Y2hpbmcgc2hvdWxkIG5vdCBiZSBiYXNlZCBvbiBhZGRyZXNzLgogUGF0Y2gzOTQ6IGdkYi1hcmNo ZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCiAKICMgR2V0IHNlbGZ0ZXN0IHdvcmtp bmcgd2l0aCBzZXAtZGVidWctaW5mbwotIz1tYXliZXB1c2gKKyM9ZmVkb3JhdGVzdAogUGF0Y2gx MjU6IGdkYi02LjMtdGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNoCiAKICMgVGVzdCBzdXBwb3J0IG9m IG11bHRpcGxlIGRlc3RydWN0b3JzIGp1c3QgbGlrZSBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMKQEAg LTIzNSw3ICsyMzUsNyBAQCBQYXRjaDIwODogZ2RiLTYuNS1CRUEtdGVzdHN1aXRlLnBhdGNoCiBQ YXRjaDIxMzogZ2RiLTYuNS1yZWFkbGluZS1sb25nLWxpbmUtY3Jhc2gtdGVzdC5wYXRjaAogCiAj IEZpeCBib2d1cyAweDAgdW53aW5kIG9mIHRoZSB0aHJlYWQncyB0b3Btb3N0IGZ1bmN0aW9uIGNs b25lKDMpIChCWiAyMTY3MTEpLgotIz1wdXNoCisjPWZlZG9yYQogUGF0Y2gyMTQ6IGdkYi02LjUt YnoyMTY3MTEtY2xvbmUtaXMtb3V0ZXJtb3N0LnBhdGNoCiAKICMgVGVzdCBzaWRlZWZmZWN0cyBv ZiBza2lwcGluZyBwcGMgLnNvIGxpYnMgdHJhbXBvbGluZXMgKEJaIDIxODM3OSkuCkBAIC0yNDMs NyArMjQzLDcgQEAgUGF0Y2gyMTQ6IGdkYi02LjUtYnoyMTY3MTEtY2xvbmUtaXMtb3V0ZXJtb3N0 LnBhdGNoCiBQYXRjaDIxNjogZ2RiLTYuNS1iejIxODM3OS1wcGMtc29saWItdHJhbXBvbGluZS10 ZXN0LnBhdGNoCiAKICMgRml4IGxvY2t1cCBvbiB0cmFtcG9saW5lIHZzLiBpdHMgZnVuY3Rpb24g bG9va3VwOyB1bnJlcHJvZHVjaWJsZSAoQlogMjE4Mzc5KS4KLSM9cHVzaAorIz1mZWRvcmEKIFBh dGNoMjE3OiBnZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4 LnBhdGNoCiAKICMgRmluZCBzeW1ib2xzIHByb3Blcmx5IGF0IHRoZWlyIG9yaWdpbmFsIChpbmNs dWRlZCkgZmlsZSAoQlogMTA5OTIxKS4KQEAgLTI3OSw3ICsyNzksNyBAQCBQYXRjaDI0NTogZ2Ri LTYuNi1iejIyOTUxNy1nY29yZS13aXRob3V0LXRlcm1pbmFsLnBhdGNoCiBQYXRjaDI0NzogZ2Ri LTYuNi1iejIzNTE5Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNoCiAKICMgQXZvaWQgdG9vIGxvbmcg dGltZW91dHMgb24gZmFpbGluZyBjYXNlcyBvZiAiYW5ub3RhMS5leHAgYW5ub3RhMy5leHAiLgot Iz1wdXNoCisjPWZlZG9yYXRlc3QKIFBhdGNoMjU0OiBnZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0 cy5wYXRjaAogCiAjIFN1cHBvcnQgZm9yIHN0ZXBwaW5nIG92ZXIgUFBDIGF0b21pYyBpbnN0cnVj dGlvbiBzZXF1ZW5jZXMgKEJaIDIzNzU3MikuCkBAIC0zMjEsNyArMzIxLDcgQEAgUGF0Y2gyODI6 IGdkYi02LjctY2hhcnNpZ24tdGVzdC5wYXRjaAogUGF0Y2gyODQ6IGdkYi02LjctcHBjLWNsb2Ji ZXJlZC1yZWdpc3RlcnMtTzItdGVzdC5wYXRjaAogCiAjIFRlc3RzdWl0ZSBmaXhlcyBmb3IgbW9y ZSBzdGFibGUvY29tcGFyYWJsZSByZXN1bHRzLgotIz1wdXNoCisjPWZlZG9yYXRlc3QKIFBhdGNo Mjg3OiBnZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAogCiAjIFRlc3QgaWE2 NCBtZW1vcnkgbGVha3Mgb2YgdGhlIGNvZGUgdXNpbmcgbGlidW53aW5kLgpAQCAtNDI4LDcgKzQy OCw3IEBAIFBhdGNoMzkzOiBnZGItcmhlbDUtZ2NjNDQucGF0Y2gKIFBhdGNoMzk3OiBnZGItZm9s bG93LWNoaWxkLXN0YWxlLXBhcmVudC5wYXRjaAogCiAjIFdvcmthcm91bmQgY2NhY2hlIG1ha2lu ZyBsaW5lbm8gbm9uLXplcm8gZm9yIGNvbW1hbmQtbGluZSBkZWZpbml0aW9ucy4KLSM9ZHJvcDog Y2NhY2hlIGlzIHJhcmVseSB1c2VkIGFuZCBpdCBpcyBldmVuIGZpeGVkIG5vdy4KKyM9ZmVkb3Jh dGVzdDogY2NhY2hlIGlzIHJhcmVseSB1c2VkIGFuZCBpdCBpcyBldmVuIGZpeGVkIG5vdy4KIFBh dGNoNDAzOiBnZGItY2NhY2hlLXdvcmthcm91bmQucGF0Y2gKIAogIyBJbXBsZW1lbnQgYGluZm8g Y29tbW9uJyBmb3IgRm9ydHJhbi4KQEAgLTQ0NSwxMCArNDQ1LDYgQEAgUGF0Y2g0MDc6IGdkYi1s aW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKICM9ZmVkb3JhdGVzdCtwcGMKIFBhdGNoNDA4OiBnZGIt cHBjLXBvd2VyNy10ZXN0LnBhdGNoCiAKLSMgUmV2ZXJ0OiBBZGQgLVd1bnVzZWQtZnVuY3Rpb24g dG8gY29tcGlsZSBmbGFncy4KLSM9ZHJvcAotUGF0Y2g0MTI6IGdkYi11bnVzZWQtcmV2ZXJ0LnBh dGNoCi0KICMgRml4IGkzODYreDg2XzY0IHJ3YXRjaCthd2F0Y2ggYmVmb3JlIHJ1biwgcmVncmVz c2lvbiBhZ2FpbnN0IDYuOCAoQlogNTQxODY2KS4KICMgRml4IGkzODYgcndhdGNoK2F3YXRjaCBi ZWZvcmUgcnVuIChCWiA2ODg3ODgsIG9uIHRvcCBvZiBCWiA1NDE4NjYpLgogIz1wdXNoK3dvcms6 IEl0IHNob3VsZCBiZSBmaXhlZCBwcm9wZXJseSBpbnN0ZWFkLgpAQCAtNDY2LDE4ICs0NjIsMTIg QEAgUGF0Y2g0NzA6IGdkYi1hcmNoZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBhdGNoCiAj PWZlZG9yYXRlc3QKIFBhdGNoNDc1OiBnZGItYno2MDE4ODctZHdhcmY0LXJoLXRlc3QucGF0Y2gK IAotIyBQcmludCAyRCBDKysgdmVjdG9ycyBhcyBtYXRyaWNlcyAoQlogNTYyNzYzLCBzb3VyY2V3 YXJlMTA2NTksIENocmlzIE1vbGxlcikuCi0jPXB1c2grd29yazogVGhlcmUgYXJlIHNvbWUgb3V0 c3RhbmRpbmcgaXNzdWVzLCBjaGVjayB0aGUgbWFpbHMuCi1QYXRjaDQ4NjogZ2RiLWJ6NTYyNzYz LXByZXR0eS1wcmludC0yZC12ZWN0b3JzLnBhdGNoCi0jPXB1c2grd29yazogVGhlcmUgYXJlIHNv bWUgb3V0c3RhbmRpbmcgaXNzdWVzLCBjaGVjayB0aGUgbWFpbHMuCi1QYXRjaDQ4NzogZ2RiLWJ6 NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLWxpYnN0ZGN4eC5wYXRjaAotCiAjIFtkZWxh eWVkLXN5bWZpbGVdIFRlc3QgYSBiYWNrdHJhY2UgcmVncmVzc2lvbiBvbiBDRklzIHdpdGhvdXQg RElFIChCWiA2MTQ2MDQpLgogIz1mZWRvcmF0ZXN0CiBQYXRjaDQ5MDogZ2RiLXRlc3QtYnQtY2Zp LXdpdGhvdXQtZGllLnBhdGNoCiAKICMgUHJvdmlkZSAvdXNyL2Jpbi9nZGItYWRkLWluZGV4IGZv ciBycG0tYnVpbGQgKFRvbSBUcm9tZXkpLgotIz1kcm9wOiBSZS1jaGVjayBhZ2FpbnN0IHRoZSB1 cHN0cmVhbSB2ZXJzaW9uLgorIz1mZWRvcmE6IFJlLWNoZWNrIGFnYWluc3QgdGhlIHVwc3RyZWFt IHZlcnNpb24uCiBQYXRjaDQ5MTogZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCiAKICMg T3V0IG9mIG1lbW9yeSBpcyBqdXN0IGFuIGVycm9yLCBub3QgZmF0YWwgKHVuaW5pdGlhbGl6ZWQg VkxTIHZhcnMsIEJaIDU2ODI0OCkuCkBAIC01MzQsNyArNTI0LDcgQEAgUGF0Y2g2MTk6IGdkYi1k bG9wZW4tc3RhcC1wcm9iZS10ZXN0LnBhdGNoCiBQYXRjaDYyNzogZ2RiLWdsaWJjLXZkc28td29y a2Fyb3VuZC5wYXRjaAogCiAjIEhhY2sgZm9yIHByb3BlciBQSUUgcnVuIG9mIHRoZSB0ZXN0c3Vp dGUuCi0jPXB1c2grd29yaworIz1mZWRvcmF0ZXN0CiBQYXRjaDYzNDogZ2RiLXJ1bnRlc3QtcGll LW92ZXJyaWRlLnBhdGNoCiAKICMgV29yayBhcm91bmQgcmVhZGxpbmUtNi4yIGluY29tcGF0aWJp bGl0eSBub3QgYXNraW5nIGZvciAtLW1vcmUtLSAoQlogNzAxMTMxKS4KQEAgLTU0NSwyOSArNTM1 LDEwIEBAIFBhdGNoNjQyOiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRjaAogIz1wdXNo CiBQYXRjaDY0MzogZ2RiLXB5dGhvbi1yZHluYW1pYy5wYXRjaAogCi0jIEltcHJvdmUgcGVyZm9y bWFuY2UgZm9yIEMrKyBzeW1ib2xzIGV4cGFuc2lvbiAoVG9tIFRyb21leSwgQlogNzg3NDg3KS4K LSM9cHVzaAotUGF0Y2g2NDQ6IGdkYi1leHBhbmQtY3h4LWFjY2VsLnBhdGNoCi0KLSMgRml4IHNr aXBwaW5nIG9mIHByb2xvZ3VlcyBvbiBSSEVMLTUgZ2NjLTQuMSAtTzIgLWcgY29kZSAoQlogNzk3 ODg5KS4KLSM9cHVzaAotUGF0Y2g2NDU6IGdkYi1wcm9sb2d1ZS1ub3Qtc2tpcHBlZC5wYXRjaAot Ci0jIEZpeCBicmVha3BvaW50IHdhcm5pbmcgZHVyaW5nICduZXh0JyBvdmVyIGV4aXQoKSAoVG9t IFRyb21leSwgQlogNzk3ODkyKS4KLSM9cHVzaAotUGF0Y2g2NDY6IGdkYi1leGl0LXdhcm5pbmcu cGF0Y2gKLQotIyBbdmxhXSBGaXggY3Jhc2ggZm9yIGR5bmFtaWMuZXhwIHdpdGggZ2NjLWdmb3J0 cmFuLTQuMS4yLTUxLmVsNS54ODZfNjQuCi0jPXB1c2grd29yawotUGF0Y2g2NDg6IGdkYi1hcmNo ZXItdmxhLXJoZWw1Z2NjLnBhdGNoCi0KICMgUHJpbnQgcmVhc29ucyBmb3IgZmFpbGVkIGF0dGFj aC9zcGF3biBpbmNsLiBTRUxpbnV4IGRlbnlfcHRyYWNlIChCWiA3ODY4NzgpLgogIz1wdXNoCi1Q YXRjaDY0OTogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtMW9mNS5wYXRjaAotUGF0Y2g2NTA6IGdk Yi1hdHRhY2gtZmFpbC1yZWFzb25zLTJvZjUucGF0Y2gKLVBhdGNoNjUxOiBnZGItYXR0YWNoLWZh aWwtcmVhc29ucy0zb2Y1LnBhdGNoCi1QYXRjaDY1MjogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMt NG9mNS5wYXRjaAogUGF0Y2g2NTM6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gK KyM9ZmVkb3JhCiBQYXRjaDY1NzogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNWNvbmZpZ3Vy ZS5wYXRjaAogCiAjIEZpeCBpbmZlcmlvciBjYWxscywgcGFydGljdWxhcmx5IHVuY2F1Z2h0IHRo cm93biBleGNlcHRpb25zIChCWiA3OTk1MzEpLgpAQCAtNTc1LDU1ICs1NDYsMjAgQEAgUGF0Y2g2 NTc6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKIFBhdGNoNjU0 OiBnZGIteDg2LW9uc3RhY2stMW9mMi5wYXRjaAogUGF0Y2g2NTg6IGdkYi14ODYtb25zdGFjay0y b2YyLnBhdGNoCiAKLSMgRml4IERXQVJGIERJRXMgQ1UgdnMuIHNlY3Rpb24gcmVsYXRpdmUgb2Zm c2V0cyAoSm9lbCBCcm9iZWNrZXIsIG1lKS4KLSM9cHVzaAotUGF0Y2g2NTU6IGdkYi1kaWUtY3Ut b2Zmc2V0LTFvZjIucGF0Y2gKLVBhdGNoNjU2OiBnZGItZGllLWN1LW9mZnNldC0yb2YyLnBhdGNo Ci0KLSMgW3ZsYV0gRml4IHJlZ3Jlc3Npb24gb24gbm8gdHlwZSBmb3Igc3VicmFuZ2UgZnJvbSBJ Qk0gWExGIEZvcnRyYW4gKEJaIDgwNjkyMCkuCi0jPXB1c2gKLVBhdGNoNjYwOiBnZGItc3VicmFu Z2Utbm8tdHlwZS5wYXRjaAotCiAjIFdvcmthcm91bmQgY3Jhc2hlcyBmcm9tIHN0YWxlIGZyYW1l X2luZm8gcG9pbnRlciAoQlogODA0MjU2KS4KICM9cHVzaCt3b3JrCiBQYXRjaDY2MTogZ2RiLXN0 YWxlLWZyYW1lX2luZm8ucGF0Y2gKIAotIyBTZWN1cml0eSBmaXggZm9yIGxvYWRpbmcgdW50cnVz dGVkIGluZmVyaW9ycywgc2VlICJzZXQgYXV0by1sb2FkIiAoQlogNzU2MTE3KS4KLSM9cHVzaAot UGF0Y2g2NjI6IGdkYi1hdXRvbG9hZC0wMW9mMjgucGF0Y2gKLVBhdGNoNjYzOiBnZGItYXV0b2xv YWQtMDJvZjI4LnBhdGNoCi1QYXRjaDY2NDogZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaAotUGF0 Y2g2NjU6IGdkYi1hdXRvbG9hZC0wNG9mMjgucGF0Y2gKLVBhdGNoNjY2OiBnZGItYXV0b2xvYWQt MDVvZjI4LnBhdGNoCi1QYXRjaDY2NzogZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaAotUGF0Y2g2 Njg6IGdkYi1hdXRvbG9hZC0wN29mMjgucGF0Y2gKLVBhdGNoNjY5OiBnZGItYXV0b2xvYWQtMDhv ZjI4LnBhdGNoCi1QYXRjaDY3MDogZ2RiLWF1dG9sb2FkLTA5b2YyOC5wYXRjaAotUGF0Y2g2NzE6 IGdkYi1hdXRvbG9hZC0xMG9mMjgucGF0Y2gKLVBhdGNoNjcyOiBnZGItYXV0b2xvYWQtMTFvZjI4 LnBhdGNoCi1QYXRjaDY3MzogZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaAotUGF0Y2g2NzQ6IGdk Yi1hdXRvbG9hZC0xM29mMjgucGF0Y2gKLVBhdGNoNjc1OiBnZGItYXV0b2xvYWQtMTRvZjI4LnBh dGNoCi1QYXRjaDY3NjogZ2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaAotUGF0Y2g2Nzc6IGdkYi1h dXRvbG9hZC0xNm9mMjgucGF0Y2gKLVBhdGNoNjc4OiBnZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNo Ci1QYXRjaDY3OTogZ2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRjaAotUGF0Y2g2ODA6IGdkYi1hdXRv bG9hZC0xOW9mMjgucGF0Y2gKLVBhdGNoNjgxOiBnZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCi1Q YXRjaDY4MjogZ2RiLWF1dG9sb2FkLTIxb2YyOC5wYXRjaAotUGF0Y2g2ODM6IGdkYi1hdXRvbG9h ZC0yMm9mMjgucGF0Y2gKLVBhdGNoNjg0OiBnZGItYXV0b2xvYWQtMjNvZjI4LnBhdGNoCi1QYXRj aDY4NTogZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRjaAotUGF0Y2g2ODY6IGdkYi1hdXRvbG9hZC0y NW9mMjgucGF0Y2gKLVBhdGNoNjg3OiBnZGItYXV0b2xvYWQtMjZvZjI4LnBhdGNoCi1QYXRjaDY4 ODogZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaAotUGF0Y2g2ODk6IGdkYi1hdXRvbG9hZC0yOG9m MjgucGF0Y2gKLQogIyBXb3JrYXJvdW5kIFBSIGxpYmMvMTQxNjYgZm9yIGluZmVyaW9yIGNhbGxz IG9mIHN0cnN0ci4KKyM9cHVzaCt3b3JrOiBCdXQgcHVzaCBpdCB0byBnbGliYy4KIFBhdGNoNjkw OiBnZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKIAotIyBbcHBjXSBGaXggaGFyZHdh cmUgd2F0Y2hwb2ludHMgb24gUG93ZXJQQyAoQlogODI3NjAwLCBFZGp1bmlvciBNYWNoYWRvKS4K LVBhdGNoNjkxOiBnZGItcHBjLXdhdGNocG9pbnQucGF0Y2gKKyMgRml4IGRlamFnbnUtMS41LTQu ZmMxNyBjb21wYXRpYmlsaXR5IGZvciBHbyAoZm9yIEJaIDYzNTY1MSkuCisjPWZlZG9yYXRlc3QK K1BhdGNoNjkyOiBnZGItZGVqYWdudS1nby5wYXRjaAorCisjIFJldmVydCByZWNlbnQgYnJlYWth Z2Ugb2YgVU5JWCBvYmpmaWxlcyBvcmRlciBmb3Igc3ltYm9scyBsb29rdXAuCitQYXRjaDY5Mzog Z2RiLW9iamZpbGUtb3JkZXIucGF0Y2gKIAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0g PiA2CiAjIFJMX1NUQVRFX0ZFRE9SQV9HREIgd291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTY4 Miw2ICs2MTgsOSBAQCBFeGNsdXNpdmVBcmNoOiBub2FyY2ggaTM4NiB4ODZfNjQgcHBjIHBwYzY0 IGlhNjQgczM5MCBzMzkweAogQnVpbGRSZXF1aXJlczogc2hhcnV0aWxzIGRlamFnbnUKICMgZ2Nj LW9iamMrKyBpcyBub3QgY292ZXJlZCBieSB0aGUgR0RCIHRlc3RzdWl0ZS4KIEJ1aWxkUmVxdWly ZXM6IGdjYyBnY2MtYysrIGdjYy1nZm9ydHJhbiBnY2MtamF2YSBnY2Mtb2JqYworJWlmIDAleyE/ cmhlbDoxfSB8fCAwJXs/c2NsOjF9IHx8IDAlez9yaGVsfSA+IDYKK0J1aWxkUmVxdWlyZXM6IGdj Yy1nbworJWVuZGlmCiAjIGFyY2hlci1zZXJnaW9kai1zdGFwLXBhdGNoLXNwbGl0CiBCdWlsZFJl cXVpcmVzOiBzeXN0ZW10YXAtc2R0LWRldmVsCiAjIENvcGllZCBmcm9tIHByZWxpbmstMC40LjIt My5mYzEzLgpAQCAtNzA3LDYgKzY0Niw5IEBAIEJ1aWxkUmVxdWlyZXM6IGxpYmdjYyV7Yml0c19s b2NhbH0gbGliZ2NjJXtiaXRzX290aGVyfQogIyBsaWJzdGRjKystZGV2ZWwgb2YgbWF0Y2hpbmcg Yml0cyBpcyByZXF1aXJlZCBvbmx5IGZvciBnKysgLXN0YXRpYy4KIEJ1aWxkUmVxdWlyZXM6IGxp YnN0ZGMrKyV7Yml0c19sb2NhbH0gbGlic3RkYysrJXtiaXRzX290aGVyfQogQnVpbGRSZXF1aXJl czogbGliZ2NqJXtiaXRzX2xvY2FsfSBsaWJnY2ole2JpdHNfb3RoZXJ9CislaWYgMCV7IT9yaGVs OjF9IHx8IDAlez9zY2w6MX0gfHwgMCV7P3JoZWx9ID4gNgorQnVpbGRSZXF1aXJlczogbGliZ28t ZGV2ZWwle2JpdHNfbG9jYWx9IGxpYmdvLWRldmVsJXtiaXRzX290aGVyfQorJWVuZGlmCiAlaWYg MCV7IT9lbDU6MX0KIEJ1aWxkUmVxdWlyZXM6IGdsaWJjLXN0YXRpYyV7Yml0c19sb2NhbH0KICVl bmRpZgpAQCAtODc1LDEyICs4MTcsMTAgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAu YyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMzk0IC1wMQogJXBhdGNoNDA3IC1w MQogJXBhdGNoNDA4IC1wMQotJXBhdGNoNDEyIC1wMQogJXBhdGNoNDE3IC1wMQogJXBhdGNoNDU5 IC1wMQogJXBhdGNoNDcwIC1wMQogJXBhdGNoNDc1IC1wMQotJXBhdGNoNDg2IC1wMQogJXBhdGNo NDE1IC1wMQogJXBhdGNoNTE5IC1wMQogJXBhdGNoNDkwIC1wMQpAQCAtODk5LDYwICs4MzksMTkg QEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1l eHAuYwogJXBhdGNoNjI3IC1wMQogJXBhdGNoNjM0IC1wMQogJXBhdGNoNjQzIC1wMQotJXBhdGNo NjQ0IC1wMQotJXBhdGNoNjQ1IC1wMQotJXBhdGNoNjQ2IC1wMQotJXBhdGNoNjQ4IC1wMQotJXBh dGNoNjQ5IC1wMQotJXBhdGNoNjUwIC1wMQotJXBhdGNoNjUxIC1wMQotJXBhdGNoNjUyIC1wMQog JXBhdGNoNjUzIC1wMQogJXBhdGNoNjU3IC1wMQogJXBhdGNoNjU0IC1wMQogJXBhdGNoNjU4IC1w MQotJXBhdGNoNjU1IC1wMQotJXBhdGNoNjU2IC1wMQotJXBhdGNoNjYwIC1wMQogJXBhdGNoNjYx IC1wMQotJXBhdGNoNjYyIC1wMQotJXBhdGNoNjYzIC1wMQotJXBhdGNoNjY0IC1wMQotJXBhdGNo NjY1IC1wMQotJXBhdGNoNjY2IC1wMQotJXBhdGNoNjY3IC1wMQotJXBhdGNoNjY4IC1wMQotJXBh dGNoNjY5IC1wMQotJXBhdGNoNjcwIC1wMQotJXBhdGNoNjcxIC1wMQotJXBhdGNoNjcyIC1wMQot JXBhdGNoNjczIC1wMQotJXBhdGNoNjc0IC1wMQotJXBhdGNoNjc1IC1wMQotJXBhdGNoNjc2IC1w MQotJXBhdGNoNjc3IC1wMQotJXBhdGNoNjc4IC1wMQotJXBhdGNoNjc5IC1wMQotJXBhdGNoNjgw IC1wMQotJXBhdGNoNjgxIC1wMQotJXBhdGNoNjgyIC1wMQotJXBhdGNoNjgzIC1wMQotJXBhdGNo Njg0IC1wMQotJXBhdGNoNjg1IC1wMQotJXBhdGNoNjg2IC1wMQotJXBhdGNoNjg3IC1wMQotJXBh dGNoNjg4IC1wMQotJXBhdGNoNjg5IC1wMQogJXBhdGNoNjkwIC1wMQotJXBhdGNoNjkxIC1wMQor JXBhdGNoNjkyIC1wMQorJXBhdGNoNjkzIC1wMQogCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9l bDU6MX0gfHwgMCV7P3NjbDoxfQogJXBhdGNoMzkzIC1wMSAtUgogJWVuZGlmCi0laWYgMCV7P3Jo ZWw6MX0gJiYgMCV7P3JoZWx9IDw9IDYKLSVwYXRjaDQ4NyAtcDEKLSVlbmRpZgogJXBhdGNoNjQy IC1wMQogJWlmIDAlez9yaGVsOjF9ICYmIDAlez9yaGVsfSA8PSA2CiAlcGF0Y2g2NDIgLXAxIC1S CkBAIC0xMDQ5LDcgKzk0OCw3IEBAICQoOiBSSEVMLTUgbGlicnBtIGhhcyBpbmNvbXBhdGlibGUg QVBJLiApCQkJXAogJWlmIDAlez9lbDY6MX0KIAktLXdpdGgtcnBtPWxpYnJwbS5zby4xCQkJCQlc CiAlZWxzZQotCS0td2l0aC1ycG09bGlicnBtLnNvLjIJCQkJCVwKKwktLXdpdGgtcnBtPWxpYnJw bS5zby4zCQkJCQlcCiAlZW5kaWYKICVlbmRpZgogJWlmYXJjaCBpYTY0CkBAIC0xNDM3LDYgKzEz MzYsMTQgQEAgZmkKICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1fSIgPT0g Im5vYXJjaCIKIAogJWNoYW5nZWxvZworKiBTdW4gSnVuICAzIDIwMTIgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwNjAyLTEuZmMxOAorLSBS ZWJhc2UgdG8gRlNGIEdEQiA3LjQuNTAuMjAxMjA2MDIuCistIFt0ZXN0c3VpdGVdIEJ1aWxkUmVx dWlyZSBnY2MtZ28uCistIERyb3AgcHJpbnRpbmcgMkQgQysrIHZlY3RvcnMgYXMgbWF0cmljZXMg d2hpY2ggbm8gbG9uZ2VyIHdvcmtlZCAoQlogNTYyNzYzKS4KKy0gRml4IGRlamFnbnUtMS41LTQu ZmMxNyBjb21wYXRpYmlsaXR5IGZvciBHbyAoZm9yIEJaIDYzNTY1MSkuCistIFVzZSBsaWJycG0u c28uMyBmb3IgcnBtLTQuMTAuMCBpbiBGZWRvcmEgMTguCistIFJldmVydCByZWNlbnQgYnJlYWth Z2Ugb2YgVU5JWCBvYmpmaWxlcyBvcmRlciBmb3Igc3ltYm9scyBsb29rdXAuCisKICogU2F0IEp1 biAgMiAyMDEyIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcu NC41MC4yMDEyMDEyMC00OC5mYzE3CiAtIFtwcGNdIEZpeCBoYXJkd2FyZSB3YXRjaHBvaW50cyBv biBQb3dlclBDIChCWiA4Mjc2MDAsIEVkanVuaW9yIE1hY2hhZG8pLgogCgpkaWZmIC0tZ2l0IGEv c291cmNlcyBiL3NvdXJjZXMKaW5kZXggNTgzZDc1My4uZmEyMDNkMSAxMDA2NDQKLS0tIGEvc291 cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAogMDRlNWM0YjFiOWU2MzM0MjJjYzQ4 OTkwZmU2MTk1OGQgIGxpYnN0ZGMrKy12My1weXRob24tcjE1NTk3OC50YXIuYnoyCi05ZGU4NGEy MmU0Yjk2YzA4ZDhkMzFhNzJkNzc1MWM2MCAgZ2RiLTcuNC41MC4yMDEyMDEyMC50YXIuYnoyCisy YTNhODhjYzJlOTJhYWFmNTBmNzU4NDMzMTA5NGFkMyAgZ2RiLTcuNC41MC4yMDEyMDYwMi50YXIu YnoyCg==