From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.2.90.20110411 (which is a 7.3 pre-release). Date: Thu, 23 Jul 2026 18:29:56 GMT Message-ID: <178483139634.1.4815512114232332668.rpms-gdb-09dd7775ebcb@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 09dd7775ebcb29c9c757b3fe0ca9ec2a789058aa ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMDlkZDc3NzVlYmNiMjljOWM3NTdiM2ZlMGNhOWVjMmE3ODkwNThhYQog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wNC0xMVQyMjo0ODoxMyswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArODI1Ly0yNDAzIGluIDEyIGZpbGUocykKICAgICAgICAgICAgVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy8wOWRkNzc3NWVi Y2IyOWM5Yzc1N2IzZmUwY2E5ZWMyYTc4OTA1OGFhP2JyYW5jaD1maXgtZHVwLXBhdGNoCgogICAg ICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFzZSB0byBGU0YgR0RCIDcuMi45MC4yMDExMDQx MSAod2hpY2ggaXMgYSA3LjMgcHJlLXJlbGVhc2UpLgpJbmNsdWRlIHRoZSBwcm9wZXIgZml4IGZv ciBhbm9ueW1vdXMgc3RydWN0IHR5cGVkZWZzIChUb20gVHJvbWV5LCBCWiA2NzIyMzApLgoKLS0t CmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBiMWRhMzA3Li5iMDAy YmYzIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTEsMiArMSwy IEBACiAvbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLS9nZGItNy4yLjUwLjIw MTEwMzI4LnRhci5iejIKKy9nZGItNy4yLjkwLjIwMTEwNDExLnRhci5iejIKCmRpZmYgLS1naXQg YS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaCBiL2dkYi02LjMtcmVhZG5ldmVyLTIw MDUwOTA3LnBhdGNoCmluZGV4IGQ3M2NkODYuLjE2NzE1NDYgMTAwNjQ0Ci0tLSBhL2dkYi02LjMt cmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoCisrKyBiL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3 LnBhdGNoCkBAIC0xMSwxMCArMTEsMTAgQEAKIAogICAgICAgICAqIGdkYi50ZXhpbmZvIChGaWxl IE9wdGlvbnMpOiBEb2N1bWVudCAtLXJlYWRuZXZlci4KIAotSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAxMTcvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2Ri L2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3Jp Zy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDEtMTcg MTU6NTA6NDEuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNC0xMSAxOTox NTo1MS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xMDA3LDYgKzEwMDcsMTIgQEAgUmVhZCBlYWNoIHN5 bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQogIHRoZSBkZWZhdWx0LCB3aGljaCBpcyB0byBy ZWFkIGl0IGluY3JlbWVudGFsbHkgYXMgaXQgaXMgbmVlZGVkLgogIFRoaXMgbWFrZXMgc3RhcnR1 cCBzbG93ZXIsIGJ1dCBtYWtlcyBmdXR1cmUgb3BlcmF0aW9ucyBmYXN0ZXIuCkBAIC0yOCwxMSAr MjgsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2RvYy9nZGIudGV4aW5mbwog IEBlbmQgdGFibGUKICAKICBAbm9kZSBNb2RlIE9wdGlvbnMKLUluZGV4OiBnZGItNy4yLjUwLjIw MTEwMTE3L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9tYWluLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL21haW4uYwkyMDEx LTAxLTE3IDE1OjUwOjIxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcv Z2RiL21haW4uYwkyMDExLTAxLTE3IDE1OjUwOjQxLjAwMDAwMDAwMCArMDEwMAotQEAgLTM5NSw2 ICszOTUsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorLS0tIGdkYi03LjIuOTAuMjAx MTA0MTEub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDQtMTEgMTk6MTE6NTYuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvbWFpbi5jCTIwMTEtMDQtMTEgMTk6MTU6NTEu MDAwMDAwMDAwICswMjAwCitAQCAtMzk4LDYgKzM5OCw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCiAgICAgICAgeyJ4ZGIiLCBub19hcmd1bWVudCwgJnhkYl9jb21tYW5kcywgMX0sCiAg ICAgICAgeyJkYngiLCBub19hcmd1bWVudCwgJmRieF9jb21tYW5kcywgMX0sCiAgICAgICAgeyJy ZWFkbm93Iiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCkBAIC00MCw3 ICs0MCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9tYWluLmMKICAgICAgICB7 InIiLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKICAgICAgICB7InF1 aWV0Iiwgbm9fYXJndW1lbnQsICZxdWlldCwgMX0sCiAgICAgICAgeyJxIiwgbm9fYXJndW1lbnQs ICZxdWlldCwgMX0sCi1AQCAtMTA2MSw2ICsxMDYyLDcgQEAgT3B0aW9uczpcblxuXAorQEAgLTEw NjQsNiArMTA2NSw3IEBAIE9wdGlvbnM6XG5cblwKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwK ICAgIC0tcXVpZXQgICAgICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3Rh cnR1cC5cblwKICAgIC0tcmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBv biBmaXJzdCBhY2Nlc3MuXG5cCkBAIC00OCwxMCArNDgsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAxMTcvZ2RiL21haW4uYwogICIpLCBzdHJlYW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAo XygiXAogICAgLS1zZT1GSUxFICAgICAgICAgIFVzZSBGSUxFIGFzIHN5bWJvbCBmaWxlIGFuZCBl eGVjdXRhYmxlIGZpbGUuXG5cCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvc3ltZmls ZS5jCitJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvc3ltZmlsZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMS0wMS0xMSAy Mjo1MzoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zeW1m aWxlLmMJMjAxMS0wMS0xNyAxNTo1MDo1My4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjkw LjIwMTEwNDExLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDExLTAzLTIzIDE5OjIzOjU1LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3N5bWZpbGUuYwkyMDExLTA0LTEx IDE5OjE1OjUxLjAwMDAwMDAwMCArMDIwMAogQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHZvaWQg Y2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAogIAogIC8qIEdsb2JhbCB2YXJpYWJsZXMgb3du ZWQgYnkgdGhpcyBmaWxlLiAgKi8KQEAgLTYwLDE5ICs2MCwxOSBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvc3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFyaWFibGVzIGFuZCBm dW5jdGlvbnMgcmVmZXJlbmNlZC4gICovCiAgCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvZHdhcmYycmVh ZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9kd2FyZjJy ZWFkLmMJMjAxMS0wMS0xNyAxNTo0NzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUw LjIwMTEwMTE3L2dkYi9kd2FyZjJyZWFkLmMJMjAxMS0wMS0xNyAxNTo1MDo0MS4wMDAwMDAwMDAg KzAxMDAKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2luY2x1ZGUgInZlYy5oIgorLS0tIGdkYi03LjIu OTAuMjAxMTA0MTEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDQtMTEgMTk6MTE6NTUuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvZHdhcmYycmVhZC5jCTIw MTEtMDQtMTEgMTk6MTY6MDEuMDAwMDAwMDAwICswMjAwCitAQCAtNTgsNiArNTgsNyBAQAogICNp bmNsdWRlICJjLWxhbmcuaCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKKyAjaW5jbHVkZSA8Y3R5 cGUuaD4KICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1 ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xMzUwLDggKzEzNTEsOSBAQCBkd2FyZjJfaGFzX2luZm8g KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTM1MSw4ICsxMzUyLDkgQEAgZHdhcmYyX2hh c19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQogICAgICAgIGJmZF9tYXBfb3Zlcl9zZWN0 aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucywgTlVMTCk7CiAgICAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlID0gb2JqZmlsZTsKICAgICAgfQpAQCAtODQs MTAgKzg0LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9kd2FyZjJyZWFkLmMK ICB9CiAgCiAgLyogV2hlbiBsb2FkaW5nIHNlY3Rpb25zLCB3ZSBjYW4gZWl0aGVyIGxvb2sgZm9y ICIuPG5hbWU+Iiwgb3IgZm9yCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdG9wLmgK K0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90b3AuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvdG9wLmgJMjAxMS0wMS0wMSAxNjozMzoxOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90b3AuaAkyMDExLTAxLTE3 IDE1OjUwOjQxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9n ZGIvdG9wLmgJMjAxMS0wMS0wMSAxNjozMzoxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjkwLjIwMTEwNDExL2dkYi90b3AuaAkyMDExLTA0LTExIDE5OjE1OjUxLjAwMDAwMDAwMCArMDIw MAogQEAgLTYxLDYgKzYxLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAK ICAvKiBGcm9tIHJhbmRvbSBwbGFjZXMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IDhjZTVm MDIuLmU3NDQ3NGEgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysr IGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEw NDExL2dkYi9jb3JlbG93LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMzI4Lm9y aWcvZ2RiL2NvcmVsb3cuYwkyMDExLTAyLTI2IDAzOjA3OjA3LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2NvcmVsb3cuYwkyMDExLTAzLTI4IDE4OjQxOjIwLjAw MDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvY29yZWxvdy5j CTIwMTEtMDItMjYgMDM6MDc6MDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi45MC4yMDEx MDQxMS9nZGIvY29yZWxvdy5jCTIwMTEtMDQtMTEgMTk6MTY6MTUuMDAwMDAwMDAwICswMjAwCiBA QCAtNDcsNiArNDcsOSBAQAogICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICAjaW5jbHVkZSAicHJv Z3NwYWNlLmgiCkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgv Z2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3Qs ICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2RvYy9nZGIu dGV4aW5mbworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2RvYy9nZGIudGV4aW5mbwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTEtMDMtMjggMTg6NDA6MTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4y MDExMDMyOC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDMtMjggMTg6NDE6MjAuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTUzNDYsNiArMTUzNDYsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0g Z2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNC0xMSAx OToxNTo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMS0wNC0xMSAxOToxNjoxNS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNTM1 Niw2ICsxNTM1NiwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAgCkBA IC0xMjIsMTAgKzEyMiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZG9jL2dk Yi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2lu ZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rp b24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAz MjgvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3NvbGli LXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvc29s aWItc3ZyNC5jCTIwMTEtMDMtMjggMTg6NDA6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Mi41MC4yMDExMDMyOC9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDMtMjggMTg6NDE6MjAuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJ MjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjkwLjIwMTEw NDExL2dkYi9zb2xpYi1zdnI0LmMJMjAxMS0wNC0xMSAxOToxNjoxNS4wMDAwMDAwMDAgKzAyMDAK IEBAIC0xMTc5LDkgKzExNzksNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKICAJCSAgICAg c2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOwogIAkgIGVsc2UKQEAgLTE3OSwxNCArMTc5LDE0IEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9zb2xpYi1zdnI0LmMKICAJICAgIH0KICAJ ICB4ZnJlZSAoYnVmZmVyKTsKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZy ZWFkLmMKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi9lbGZyZWFkLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMzI4Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTI4 IDE4OjQwOjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2Vs ZnJlYWQuYwkyMDExLTAzLTI4IDE4OjQ1OjM5LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ1LDYgKzQ1 LDEwIEBACistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMS0w NC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dk Yi9lbGZyZWFkLmMJMjAxMS0wNC0xMSAxOToxNzo0MC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00OSw2 ICs0OSwxMCBAQAorICNpbmNsdWRlICJpbmZjYWxsLmgiCisgI2luY2x1ZGUgImdkYnRocmVhZC5o IgogICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0gI2lu Y2x1ZGUgImFyY2gtdXRpbHMuaCIKICsjaW5jbHVkZSAibGliYmZkLmgiCiArI2luY2x1ZGUgImdk YmNvcmUuaCIKICsjaW5jbHVkZSAiZ2RiY21kLmgiCkBAIC0xOTQsMTMgKzE5NCwxMCBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgCiAgZXh0ZXJuIHZvaWQgX2lu aXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi1AQCAtMTA3MiwxNiArMTA3Niw2NSBAQCBlbGZf Z251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1Ci0gICB1cGRhdGVfYnJlYWtwb2lu dF9sb2NhdGlvbnMgKGIsIHNhbHMpOworQEAgLTEwNzcsMTYgKzEwODEsNjUgQEAgZWxmX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydQorICAgdXBkYXRlX2JyZWFrcG9pbnRfbG9j YXRpb25zIChiLCBzYWxzLCBzYWxzX2VuZCk7CiAgfQogIAotKy8qIExvY2F0ZSBOVF9HTlVfQlVJ TERfSUQgYW5kIHJldHVybiBpdHMgbWF0Y2hpbmcgZGVidWcgZmlsZW5hbWUuCi0rICAgRklYTUU6 IE5PVEUgZGVjb2Rpbmcgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCB0aGUgQkZEIGNvcmUgbm90ZXMg ZGVjb2RpbmcuICAqLwotKwogKyNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9OT05FIDAKICsjZGVm aW5lIEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5BTUVTIDEKICsjZGVmaW5lIEJVSUxEX0lEX1ZFUkJP U0VfQklOQVJZX1BBUlNFIDIKQEAgLTIyMCw2ICsyMTcsOSBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgICB9OwogIAogLS8qIExvY2F0ZSBOVF9HTlVfQlVJTERf SUQgZnJvbSBBQkZEIGFuZCByZXR1cm4gaXRzIGNvbnRlbnQuICAqLworKy8qIExvY2F0ZSBOVF9H TlVfQlVJTERfSUQgYW5kIHJldHVybiBpdHMgbWF0Y2hpbmcgZGVidWcgZmlsZW5hbWUuCisrICAg RklYTUU6IE5PVEUgZGVjb2Rpbmcgc2hvdWxkIGJlIHVuaWZpZWQgd2l0aCB0aGUgQkZEIGNvcmUg bm90ZXMgZGVjb2RpbmcuICAqLworKwogK3N0cnVjdCBidWlsZF9pZCAqCiArYnVpbGRfaWRfYnVm X2dldCAoYmZkICp0ZW1wbCwgZ2RiX2J5dGUgKmJ1ZiwgYmZkX3NpemVfdHlwZSBzaXplKQogK3sK QEAgLTI2Miw3ICsyNjIsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVh ZC5jCiAgewogICAgc3RydWN0IGJ1aWxkX2lkICpyZXR2YWw7CiAgCi1AQCAtMTA5Nyw2ICsxMTUw LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCitAQCAtMTEwMiw2ICsxMTU1LDM0 OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICByZXR1cm4gcmV0dmFsOwogIH0K ICAKQEAgLTYxMSw3ICs2MTEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxm cmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJTEVOQU1FIGhhcyBOVF9HTlVfQlVJTERfSUQgbWF0Y2hp bmcgdGhlIENIRUNLIHZhbHVlLiAgKi8KICAKICBzdGF0aWMgaW50Ci1AQCAtMTExMSw3ICsxNTA2 LDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgcworQEAgLTExMTYs NyArMTUxMSw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKICAg IGlmIChhYmZkID09IE5VTEwpCiAgICAgIHJldHVybiAwOwogIApAQCAtNjIwLDcgKzYyMCw3IEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICAKICAgIGlmIChmb3Vu ZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBoYXMgbm8gYnVpbGQtaWQs IGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7Ci1AQCAtMTEyOSwxNCArMTUyNCwxNiBAQCBidWls ZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTEzNCwxNCArMTUyOSwx NiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICByZXR1cm4g cmV0dmFsOwogIH0KICAKQEAgLTY0MSw3ICs2NDEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyOC9nZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg c28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAgICAgICBjYXVzZSAi Ly5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTExNjcsNyArMTU2NCwxMCBAQCBidWls ZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtMTE3Miw3ICsxNTY5LDEw IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKICAJKnMrKyA9ICcv JzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIs ICh1bnNpZ25lZCkgKmRhdGErKyk7CkBAIC02NTMsNyArNjUzLDcgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAzMjgvZ2RiL2VsZnJlYWQuYwogIAogICAgICAgIC8qIGxyZWFscGF0aCgpIGlzIGV4 cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBub24tZXhpc3RlbnQgZmlsZXMuICAqLwogICAg ICAgIGlmIChhY2Nlc3MgKGxpbmssIEZfT0spID09IDApCi1AQCAtMTE4MCwyNiArMTU4MCwyMDEg QEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAorQEAgLTExODUsMjYg KzE1ODUsMjAxIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKICAJ fQogIAogICAgICAgIGlmIChyZXR2YWwgIT0gTlVMTCkKQEAgLTg1OSw3ICs4NTksNyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgICAgICAgeGZyZWUgKGJ1aWxk X2lkKTsKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmls ZS4gICovCiAgICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTAotQEAgLTEyMTAsNyArMTc4 NSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKK0BAIC0xMjE1 LDcgKzE3OTAsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCiAg CSAgeGZyZWUgKGJ1aWxkX2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBpZiAoYnVpbGRfaWRf bmFtZSAhPSBOVUxMKQpAQCAtODY4LDcgKzg2OCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEw MzI4L2dkYi9lbGZyZWFkLmMKICAgICAgfQogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAgLTE0MDgs OSArMTk4MywxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitA QCAtMTQxMyw5ICsxOTg4LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWwKICAgICAgIGAubm90ZS5nbnUuYnVpbGQtaWQnLiAgKi8KICAgIGVsc2UgaWYgKCFvYmpm aWxlX2hhc19wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpKQogICAgICB7CkBAIC04ODEsNyArODgx LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2VsZnJlYWQuYwogIAogICAgICAg IGlmIChkZWJ1Z2ZpbGUgPT0gTlVMTCkKICAJZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1AQCAtMTQyMiw2ICsxOTk4LDEyIEBAIGVs Zl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0xNDI3LDYgKzIwMDMs MTIgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAogIAkgIHN5bWJv bF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmlsZSk7CiAgCSAg eGZyZWUgKGRlYnVnZmlsZSk7CiAgCX0KQEAgLTg5NCw3ICs4OTQsNyBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTg3Myw0ICsy NDU1LDE2IEBAIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCitAQCAtMTkwNiw0ICsyNDg4LDE2 IEBAIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAgCiAgICBlbGZfb2JqZmlsZV9nbnVfaWZ1 bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAgIGdudV9pZnVuY19m bnNfcCA9ICZlbGZfZ251X2lmdW5jX2ZuczsKQEAgLTkxMSwxMCArOTExLDEwIEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICsKICsgIG9ic2VydmVyX2F0dGFjaF9l eGVjdXRhYmxlX2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCk7CiAgfQot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjIu OTAuMjAxMTA0MTEvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAx MTAzMjgub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMDMtMjggMTg6NDA6MTQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvc3ltZmlsZS5oCTIwMTEtMDMtMjggMTg6 NDE6MjAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9z eW1maWxlLmgJMjAxMS0wNC0xMSAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4y LjkwLjIwMTEwNDExL2dkYi9zeW1maWxlLmgJMjAxMS0wNC0xMSAxOToxNjoxNS4wMDAwMDAwMDAg KzAyMDAKIEBAIC02MTEsNiArNjExLDEzIEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0 YSAoc3RydWN0IHMKICAKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKmluY3JlbWVudF9yZWFkaW5n X3N5bXRhYiAodm9pZCk7CkBAIC05MjksMTAgKzkyOSwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDExMDMyOC9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKICBleHRl cm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7Ci1JbmRleDogZ2RiLTcu Mi41MC4yMDExMDMyOC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuMi45 MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi41MC4yMDExMDMyOC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMy0y OCAxODo0MDoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMy0yOCAxODo0MToyMC4wMDAwMDAwMDAgKzAyMDAK Ky0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAky MDExLTA0LTExIDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0 MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA0LTExIDE5OjE2OjE1LjAwMDAwMDAw MCArMDIwMAogQEAgLTEzODEsNiArMTM4MSwxNiBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsg fSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9CkBA IC05NTAsMTAgKzk1MCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJldHVybiAwOwogIH0KICAKLUluZGV4OiBnZGItNy4yLjUw LjIwMTEwMzI4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcu Mi45MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDExLTAzLTA3IDE3OjAzOjA0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIu NTAuMjAxMTAzMjgvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wMy0yOCAx ODo0MToyMC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wMy0wNyAxNzowMzowNC4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCTIwMTEtMDQtMTEgMTk6MTY6MTUuMDAwMDAwMDAwICswMjAwCiBAQCAtMjIxLDYg KzIyMSwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIH0K ICAgICAgCX0KQEAgLTk3MSwxMCArOTcxLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4 L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgCiAgICAgIGRldGVjdF9hc3luYwog IAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL29iamZpbGVzLmgKK0luZGV4OiBnZGIt Ny4yLjkwLjIwMTEwNDExL2dkYi9vYmpmaWxlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDExMDMyOC5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTEtMDMtMDcgMTc6MTc6MjkuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvb2JqZmlsZXMuaAkyMDExLTAz LTI4IDE4OjQxOjIwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuOTAuMjAxMTA0MTEub3Jp Zy9nZGIvb2JqZmlsZXMuaAkyMDExLTAzLTA3IDE3OjE3OjI5LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL29iamZpbGVzLmgJMjAxMS0wNC0xMSAxOToxNjoxNS4w MDAwMDAwMDAgKzAyMDAKIEBAIC00NDEsNiArNDQxLDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAgCiAg I2RlZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwgNCkKCmRpZmYgLS1naXQgYS9nZGItYXJj aGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9u cy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IDUwZDk0YTMuLmEwM2Q1MGMgMTAwNjQ0Ci0tLSBh L2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisrKyBiL2dkYi1hcmNo ZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDkgKzEsOSBAQAotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjIuOTAu MjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAx MTAzMjgub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDMtMjggMTg6NDA6MTQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvYnJlYWtwb2ludC5jCTIwMTEtMDMt MjggMTg6NDU6NTcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTA3MDcsNiArMTA3MDcsNTAgQEAgdXBk YXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYQotICAgdXBkYXRlX2dsb2JhbF9s b2NhdGlvbl9saXN0ICgxKTsKKy0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL2JyZWFr cG9pbnQuYwkyMDExLTA0LTExIDE5OjExOjU1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIu OTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuYwkyMDExLTA0LTExIDE5OjE4OjEwLjAwMDAwMDAw MCArMDIwMAorQEAgLTExMjMzLDYgKzExMjMzLDUwIEBAIHJlX3NldF9icmVha3BvaW50IChzdHJ1 Y3QgYnJlYWtwb2ludCAqYikKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CiAgfQogIAogK3Zv aWQKQEAgLTUzLDExICs1MywxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvYnJl YWtwb2ludC5jCiAgLyogUmVzZXQgYSBicmVha3BvaW50IGdpdmVuIGl0J3Mgc3RydWN0IGJyZWFr cG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3ZSByZXR1cm4gZW5kcyB1cCBiZWluZyB0aGUg cmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3JzLgogICAgIFVudXNlZCBpbiB0aGlzIGNhc2Uu ICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjgvZ2RiL2JyZWFrcG9pbnQuaAorSW5kZXg6 IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL2JyZWFrcG9pbnQuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAzMjgub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDMtMjggMTg6NDA6 MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvYnJlYWtwb2lu dC5oCTIwMTEtMDMtMjggMTg6NDY6MDcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTIxOSw0ICsxMjE5 LDcgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQorLS0tIGdkYi03 LjIuOTAuMjAxMTA0MTEub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDQtMTEgMTk6MTE6NTUu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvYnJlYWtwb2ludC5o CTIwMTEtMDQtMTEgMTk6MTc6NTMuMDAwMDAwMDAwICswMjAwCitAQCAtMTI0NSw0ICsxMjQ1LDcg QEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQogIAogIGV4dGVybiB2 b2lkIG1vZGlmeV9zZW1hcGhvcmUgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jYXRpb24sIGludCBz ZXQpOwogIApAQCAtNjUsMTAgKzY1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dk Yi9icmVha3BvaW50LmgKICsJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSk7CiAr CiAgI2VuZGlmIC8qICFkZWZpbmVkIChCUkVBS1BPSU5UX0gpICovCi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDMyOC9nZGIvb2JqZmlsZXMuYworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2Ri L29iamZpbGVzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMzI4Lm9yaWcvZ2Ri L29iamZpbGVzLmMJMjAxMS0wMy0yOCAxODo0MDoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMzI4L2dkYi9vYmpmaWxlcy5jCTIwMTEtMDMtMjggMTg6NDU6NTcuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi9vYmpmaWxlcy5jCTIw MTEtMDQtMTEgMTk6MTE6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQx MS9nZGIvb2JqZmlsZXMuYwkyMDExLTA0LTExIDE5OjE3OjUzLjAwMDAwMDAwMCArMDIwMAogQEAg LTg1MSw2ICs4NTEsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpm aQogICAgICBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChv YmpmaWxlLAogIAkJCQkJCSAgICBuZXdfb2Zmc2V0cywgZGVsdGEpOwoKZGlmZiAtLWdpdCBhL2dk Yi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IGEyZGQxZjguLjk4ODYyZjIg MTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAt MiwyNCArMiwyNSBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hl cgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQK IAogR0lUIHNuYXBzaG90OgotY29tbWl0IDE2ZjM1YTJjNTU1NTY5NzBlZDExMTQxOTIwMjMwNTc4 MmEwZjc5ZWMKK2NvbW1pdCA0MmZiYzg5ZmQzYTc5N2RhOTg4MGVjYmM0NjdjMzJmMjgyYWNmMzFm CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5r cmF0b2NodmlsLXZsYQogYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKLWFyY2hlci1q YW5rcmF0b2NodmlsLWlmdW5jCiBhcmNoZXItdHJvbWV5LXB5dGhvbgotYXJjaGVyLXNlcmdpb2Rq LXN0YXAKK2FyY2hlci1zZXJnaW9kai1zdGFwLWZlZG9yYTE1amsKIAogCiBkaWZmIC0tZ2l0IGEv YmZkL2VsZi1iZmQuaCBiL2JmZC9lbGYtYmZkLmgKLWluZGV4IDIxZWMzOGYuLjUwYzEyNzIgMTAw NjQ0CitpbmRleCAyMWVjMzhmLi5kNTA4MjNhIDEwMDY0NAogLS0tIGEvYmZkL2VsZi1iZmQuaAog KysrIGIvYmZkL2VsZi1iZmQuaAotQEAgLTE0NzYsNiArMTQ3NiwxMyBAQCBlbnVtCitAQCAtMTQ3 Niw2ICsxNDc2LDE1IEBAIGVudW0KICAgIFRhZ19jb21wYXRpYmlsaXR5ID0gMzIKICB9OwogIAor Ky8qIFRoZSBmb2xsb3dpbmcgc3RydWN0IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBldmVyeSBT eXN0ZW1UYXAgc2VjdGlvbgorKyAgIGZvdW5kIGluIHRoZSBvYmplY3QgZmlsZS4gICovCiArc3Ry dWN0IHNkdF9ub3RlCiArewogKyAgc3RydWN0IHNkdF9ub3RlICpuZXh0OwpAQCAtMzAsMTAgKzMx LDEzIEBAIGluZGV4IDIxZWMzOGYuLjUwYzEyNzIgMTAwNjQ0CiAgLyogU29tZSBwcml2YXRlIGRh dGEgaXMgc3Rhc2hlZCBhd2F5IGZvciBmdXR1cmUgdXNlIHVzaW5nIHRoZSB0ZGF0YSBwb2ludGVy CiAgICAgaW4gdGhlIGJmZCBzdHJ1Y3R1cmUuICAqLwogIAotQEAgLTE2MzMsNiArMTY0MCw4IEBA IHN0cnVjdCBlbGZfb2JqX3RkYXRhCitAQCAtMTYzMyw2ICsxNjQyLDExIEBAIHN0cnVjdCBlbGZf b2JqX3RkYXRhCiAgICBiZmRfc2l6ZV90eXBlIGJ1aWxkX2lkX3NpemU7CiAgICBiZmRfYnl0ZSAq YnVpbGRfaWQ7CiAgCisrICAvKiBMaW5rZWQtbGlzdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFi b3V0IGV2ZXJ5IFN5c3RlbXRhcCBzZWN0aW9uCisrICAgICBmb3VuZCBpbiB0aGUgb2JqZWN0IGZp bGUuICBFYWNoIHNlY3Rpb24gY29ycmVzcG9uZHMgdG8gb25lIGVudHJ5CisrICAgICBpbiB0aGUg bGlzdC4gICovCiArICBzdHJ1Y3Qgc2R0X25vdGUgKnNkdF9ub3RlX2hlYWQ7CiArCiAgICAvKiBU cnVlIGlmIHRoZSBiZmQgY29udGFpbnMgc3ltYm9scyB0aGF0IGhhdmUgdGhlIFNUVF9HTlVfSUZV TkMKQEAgLTk1LDEwICs5OSwxMCBAQCBpbmRleCBmNjlhYmYyLi4zYzAzOGViIDEwMDY0NAogIAl9 CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRl eCA0ODliMWU5Li5jMzMyYjFiIDEwMDY0NAoraW5kZXggNmFiZDg3YS4uOTNkOGRhZSAxMDA2NDQK IC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtNzE2LDgg KzcxNiw4IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBh ZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCitAQCAtNzIxLDggKzcyMSw4IEBAIFNGSUxFUyA9 IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQuYyBhZGEt dGFza3MuYyBcCiAgCXNlbnRpbmVsLWZyYW1lLmMgXAogIAlzZXJpYWwuYyBzZXItYmFzZS5jIHNl ci11bml4LmMgXAogIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwKQEAgLTEwOSwx NyArMTEzLDE2IEBAIGluZGV4IDQ4OWIxZTkuLmMzMzJiMWIgMTAwNjQ0CiAgCXRhcmdldC5jIHRh cmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAogIAl0aHJlYWQuYyB0b3AuYyB0 cmFjZXBvaW50LmMgXAogIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgwMSw3ICs4MDEsOCBAQCBhbm5v dGF0ZS5oIHNpbS1yZWduby5oIGRpY3Rpb25hcnkuaCBkZnAuaCBtYWluLmggZnJhbWUtdW53aW5k LmgJXAotIHJlbW90ZS1maWxlaW8uaCBpMzg2LWxpbnV4LXRkZXAuaCB2YXgtdGRlcC5oIG9iamMt bGFuZy5oIFwKLSBzZW50aW5lbC1mcmFtZS5oIGJjYWNoZS5oIHN5bWZpbGUuaCB3aW5kb3dzLXRk ZXAuaCBsaW51eC10ZGVwLmggXAotIGdkYl91c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIG1p Y3JvYmxhemUtdGRlcC5oIFwKLS1wc3ltdGFiLmggcHN5bXByaXYuaCBwcm9nc3BhY2UuaCBiZmlu LXRkZXAuaCBpYTY0LWhwdXgtdGRlcC5oCi0rcHN5bXRhYi5oIHBzeW1wcml2LmggcHJvZ3NwYWNl LmggYmZpbi10ZGVwLmggaWE2NC1ocHV4LXRkZXAuaCBcCi0rcHl0aG9uL3B5dGhvbi5oIHB5dGhv bi9weXRob24taW50ZXJuYWwuaAorQEAgLTgxNCw3ICs4MTQsNyBAQCBvc2RhdGEuaCBwcm9jZnMu aCBweXRob24vcHktZXZlbnQuaCBweXRob24vcHktZXZlbnRzLmggcHl0aG9uL3B5LXN0b3BldmVu dC5oIFwKKyBweXRob24vcHl0aG9uLWludGVybmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nh ci10aHJlYWQuaCByZWNvcmQuaCBcCisgc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmgg c29saWItc3B1Lmggd2luZG93cy1uYXQuaCB4Y29mZnJlYWQuaCBcCisgZ251bGliL2V4dHJhL2Fy Zy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11 c2UuaCBcCistZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oCisrZ251bGliL3N0ZGRl Zi5pbi5oIGlubGluZS1mcmFtZS5oIHN0YXAtcHJvYmUuaAogIAogICMgSGVhZGVyIGZpbGVzIHRo YXQgYWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgog IAotQEAgLTg4Niw3ICs4ODcsNyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdf T0JTKSAkKFlZT0JKKSBcCitAQCAtODk5LDcgKzg5OSw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJ TEVTKSAkKENPTkZJR19PQlMpICQoWVlPQkopIFwKICAJcHJvbG9ndWUtdmFsdWUubyBtZW1vcnkt bWFwLm8gbWVtcmFuZ2UubyB4bWwtc3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8gXAogIAl0YXJnZXQt ZGVzY3JpcHRpb25zLm8gdGFyZ2V0LW1lbW9yeS5vIHhtbC10ZGVzYy5vIHhtbC1idWlsdGluLm8g XAogIAlpbmZlcmlvci5vIG9zZGF0YS5vIGdkYl91c2xlZXAubyByZWNvcmQubyBnY29yZS5vIFwK QEAgLTEyOCw3ICsxMzEsNyBAQCBpbmRleCA0ODliMWU5Li5jMzMyYjFiIDEwMDY0NAogIAogIFRT T0JTID0gaW5mbG93Lm8KICAKLUBAIC0xMzA3LDYgKzEzMDgsMTIgQEAgc3RhbXAtaDogJChzcmNk aXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCitAQCAtMTMyMCw2ICsxMzIwLDEyIEBAIHN0YW1w LWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENPTkZJR19MSU5LUz0g XAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTE0Miw3ICsxNDUsNyBAQCBpbmRl eCA0ODliMWU5Li5jMzMyYjFiIDEwMDY0NAogIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVj aGVjawogIAogZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKLWluZGV4IDIyODg0OTcu LjZkZjk4NjggMTAwNjQ0CitpbmRleCA4NjkyZTJmLi5jMjJiZjBkIDEwMDY0NAogLS0tIGEvZ2Ri L05FV1MKICsrKyBiL2dkYi9ORVdTCiBAQCAtMzYsNiArMzYsMTAgQEAKQEAgLTE1NywxMCArMTYw LDEwIEBAIGluZGV4IDIyODg0OTcuLjZkZjk4NjggMTAwNjQ0CiAgCiAgICAqKiBUaGUgZnVuY3Rp b24gZ2RiLldyaXRlIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIGtleXdvcmQgJ3N0cmVhbScuCiBk aWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5kZXggNTcyOGFj OC4uNzQ0ZDJmYSAxMDA2NDQKK2luZGV4IDBhMGIwOWYuLjQ1NDZlOTMgMTAwNjQ0CiAtLS0gYS9n ZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMTM5MSw2ICsxMTM5MSw3 IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwYywgaW50ICpvcGxlbnAsCitAQCAtMTE0MjIsNiArMTE0MjIsNyBAQCBhZGFfb3BlcmF0b3Jf bGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5w LAogIAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCkBAIC0xNjgsNyArMTcxLDcgQEAgaW5kZXggNTcyOGFjOC4uNzQ0ZDJm YSAxMDA2NDQKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci1AQCAtMTE0MDUsMTIg KzExNDA2LDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50IHBvcywKK0BAIC0xMTQzNiwxMiArMTE0MzcsMTUgQEAgYWRhX29wZXJhdG9yX2NoZWNrIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAlicmVhazsKICAKICAgICAgICBkZWZh dWx0OgpAQCAtNDY4LDEwMiArNDcxLDggQEAgaW5kZXggMDdkNWJjNy4uZmFkODliMSAxMDA2NDQK ICtleHRlcm4gc3RydWN0IG9iamZpbGUgKmJsb2NrX29iamZpbGUgKGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2spOwogKwogICNlbmRpZiAvKiBCTE9DS19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2Js b2NrZnJhbWUuYyBiL2dkYi9ibG9ja2ZyYW1lLmMKLWluZGV4IDViYzU5MzAuLjNiNTQ2YTcgMTAw NjQ0Ci0tLS0gYS9nZGIvYmxvY2tmcmFtZS5jCi0rKysgYi9nZGIvYmxvY2tmcmFtZS5jCi1AQCAt MTYzLDYgKzE2Myw3IEBAIHN0YXRpYyBDT1JFX0FERFIgY2FjaGVfcGNfZnVuY3Rpb25fbG93ID0g MDsKLSBzdGF0aWMgQ09SRV9BRERSIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwotIHN0YXRp YyBjaGFyICpjYWNoZV9wY19mdW5jdGlvbl9uYW1lID0gMDsKLSBzdGF0aWMgc3RydWN0IG9ial9z ZWN0aW9uICpjYWNoZV9wY19mdW5jdGlvbl9zZWN0aW9uID0gTlVMTDsKLStzdGF0aWMgaW50IGNh Y2hlX3BjX2Z1bmN0aW9uX2lzX2dudV9pZnVuYyA9IDA7Ci0gCi0gLyogQ2xlYXIgY2FjaGUsIGUu Zy4gd2hlbiBzeW1ib2wgdGFibGUgaXMgZGlzY2FyZGVkLiAgKi8KLSAKLUBAIC0xNzMsNiArMTc0 LDcgQEAgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpCi0gICBjYWNoZV9wY19mdW5jdGlv bl9oaWdoID0gMDsKLSAgIGNhY2hlX3BjX2Z1bmN0aW9uX25hbWUgPSAoY2hhciAqKSAwOwotICAg Y2FjaGVfcGNfZnVuY3Rpb25fc2VjdGlvbiA9IE5VTEw7Ci0rICBjYWNoZV9wY19mdW5jdGlvbl9p c19nbnVfaWZ1bmMgPSAwOwotIH0KLSAKLSAvKiBGaW5kcyB0aGUgImZ1bmN0aW9uIiAodGV4dCBz eW1ib2wpIHRoYXQgaXMgc21hbGxlciB0aGFuIFBDIGJ1dAotQEAgLTE4MCwxNyArMTgyLDE5IEBA IGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKQotICAgICpOQU1FIGFuZC9vciAqQUREUkVT UyBjb25kaXRpb25hbGx5IGlmIHRoYXQgcG9pbnRlciBpcyBub24tbnVsbC4KLSAgICBJZiBFTkRB RERSIGlzIG5vbi1udWxsLCB0aGVuIHNldCAqRU5EQUREUiB0byBiZSB0aGUgZW5kIG9mIHRoZQot ICAgIGZ1bmN0aW9uIChleGNsdXNpdmUpLCBidXQgcGFzc2luZyBFTkRBRERSIGFzIG5vbi1udWxs IG1lYW5zIHRoYXQKLS0gICB0aGUgZnVuY3Rpb24gbWlnaHQgY2F1c2Ugc3ltYm9scyB0byBiZSBy ZWFkLiAgVGhpcyBmdW5jdGlvbiBlaXRoZXIKLS0gICBzdWNjZWVkcyBvciBmYWlscyAobm90IGhh bGZ3YXkgc3VjY2VlZHMpLiAgSWYgaXQgc3VjY2VlZHMsIGl0IHNldHMKLS0gICAqTkFNRSwgKkFE RFJFU1MsIGFuZCAqRU5EQUREUiB0byByZWFsIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIDEuCi0t ICAgSWYgaXQgZmFpbHMsIGl0IHNldHMgKk5BTUUsICpBRERSRVNTLCBhbmQgKkVOREFERFIgdG8g emVybyBhbmQKLS0gICByZXR1cm5zIDAuICAqLwotKyAgIHRoZSBmdW5jdGlvbiBtaWdodCBjYXVz ZSBzeW1ib2xzIHRvIGJlIHJlYWQuICBJZiBJU19HTlVfSUZVTkNfUCBpcyBwcm92aWRlZAotKyAg ICpJU19HTlVfSUZVTkNfUCBpcyBzZXQgdG8gMSBvbiByZXR1cm4gaWYgdGhlIGZ1bmN0aW9uIGlz IFNUVF9HTlVfSUZVTkMuCi0rICAgVGhpcyBmdW5jdGlvbiBlaXRoZXIgc3VjY2VlZHMgb3IgZmFp bHMgKG5vdCBoYWxmd2F5IHN1Y2NlZWRzKS4gIElmIGl0Ci0rICAgc3VjY2VlZHMsIGl0IHNldHMg Kk5BTUUsICpBRERSRVNTLCBhbmQgKkVOREFERFIgdG8gcmVhbCBpbmZvcm1hdGlvbiBhbmQKLSsg ICByZXR1cm5zIDEuICBJZiBpdCBmYWlscywgaXQgc2V0cyAqTkFNRSwgKkFERFJFU1MsICpFTkRB RERSIGFuZAotKyAgICpJU19HTlVfSUZVTkNfUCB0byB6ZXJvIGFuZCByZXR1cm5zIDAuICAqLwot IAotIC8qIEJhY2t3YXJkIGNvbXBhdGliaWxpdHksIG5vIHNlY3Rpb24gYXJndW1lbnQuICAqLwot IAotIGludAotLWZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoq bmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAotLQkJCSAgQ09SRV9BRERSICplbmRhZGRyKQotK2Zp bmRfcGNfcGFydGlhbF9mdW5jdGlvbl9nbnVfaWZ1bmMgKENPUkVfQUREUiBwYywgY2hhciAqKm5h bWUsCi0rCQkJCSAgICBDT1JFX0FERFIgKmFkZHJlc3MsIENPUkVfQUREUiAqZW5kYWRkciwKLSsJ CQkJICAgIGludCAqaXNfZ251X2lmdW5jX3ApCi0gewotICAgc3RydWN0IG9ial9zZWN0aW9uICpz ZWN0aW9uOwotICAgc3RydWN0IHN5bWJvbCAqZjsKLUBAIC0yNDAsNiArMjQ0LDcgQEAgZmluZF9w Y19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIg KmFkZHJlc3MsCi0gCSAgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9IEJMT0NLX0VORCAoU1lNQk9M X0JMT0NLX1ZBTFVFIChmKSk7Ci0gCSAgY2FjaGVfcGNfZnVuY3Rpb25fbmFtZSA9IFNZTUJPTF9M SU5LQUdFX05BTUUgKGYpOwotIAkgIGNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rpb24gPSBzZWN0aW9u OwotKwkgIGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2dudV9pZnVuYyA9IFRZUEVfR05VX0lGVU5DIChT WU1CT0xfVFlQRSAoZikpOwotIAkgIGdvdG8gcmV0dXJuX2NhY2hlZF92YWx1ZTsKLSAJfQotICAg ICB9Ci1AQCAtMjYyLDEyICsyNjcsMTUgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JF X0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCi0gCSphZGRyZXNzID0g MDsKLSAgICAgICBpZiAoZW5kYWRkciAhPSBOVUxMKQotIAkqZW5kYWRkciA9IDA7Ci0rICAgICAg aWYgKGlzX2dudV9pZnVuY19wICE9IE5VTEwpCi0rCSppc19nbnVfaWZ1bmNfcCA9IDA7Ci0gICAg ICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLSAgIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IFNZTUJP TF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKLSAgIGNhY2hlX3BjX2Z1bmN0aW9uX25hbWUgPSBT WU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLSAgIGNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rp b24gPSBzZWN0aW9uOwotKyAgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID0gTVNZTUJP TF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0gCi0gICAvKiBJZiB0aGUg bWluaW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0IGZvciB0aGUgY2FjaGUuCi0gICAgICBP dGhlcndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5leHQgbWluaW1hbCBzeW1ib2wgaW4gdGhl IHNhbWUKLUBAIC0zMzAsOSArMzM4LDIyIEBAIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09S RV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRyZXNzLAotIAkqZW5kYWRkciA9 IGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2g7Ci0gICAgIH0KLSAKLSsgIGlmIChpc19nbnVfaWZ1bmNf cCkKLSsgICAgKmlzX2dudV9pZnVuY19wID0gY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5j OwotKwotICAgcmV0dXJuIDE7Ci0gfQotIAotKy8qIFNlZSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rp b25fZ251X2lmdW5jLCBvbmx5IHRoZSBJU19HTlVfSUZVTkNfUCBwYXJhbWV0ZXIKLSsgICBpcyBv bWl0dGVkIGhlcmUgZm9yIGJhY2t3YXJkIEFQSSBjb21wYXRpYmlsaXR5LiAgKi8KLSsKLStpbnQK LStmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENP UkVfQUREUiAqYWRkcmVzcywKLSsJCQkgIENPUkVfQUREUiAqZW5kYWRkcikKLSt7Ci0rICByZXR1 cm4gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9pZnVuYyAocGMsIG5hbWUsIGFkZHJlc3Ms IGVuZGFkZHIsIE5VTEwpOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBm cmFtZSBleGVjdXRpbmcgaW5zaWRlIG9mIEJMT0NLLCBvciBOVUxMCi0gICAgaWYgdGhlcmUgaXMg bm8gc3VjaCBmcmFtZS4gIElmIEJMT0NLIGlzIE5VTEwsIGp1c3QgcmV0dXJuIE5VTEwuICAqLwot IAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1pbmRl eCBkYmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAoraW5kZXggMmEyNWM4ZC4uZThjNzcxYyAxMDA2NDQK IC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMKIEBAIC02Myw2 ICs2Myw4IEBACkBAIC01ODUsNDEgKzQ5NCw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAw NjQ0CiAgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIGdkYnRrIHNvdXJjZXMgYW5kIHRodXMg Y2FuIG5vdCBiZSBtYWRlCiAgICAgc3RhdGljLiAgKi8KICBzdHJ1Y3QgYnJlYWtwb2ludCAqc2V0 X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLUBAIC0xMTU5LDYgKzEx NjQsMjUgQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpi KQotIAkgICAgICAmJiAhaXNfZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlkKSkpOwotIH0KLSAKLSsv KiBTZXQgd2F0Y2hwb2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3RvcCwgZXZlbiBpbmNsdWRp bmcgaXRzIHBvc3NpYmxlCi0rICAgYXNzb2NpYXRlZCBicF93YXRjaHBvaW50X3Njb3BlIGJyZWFr cG9pbnQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9zdG9w IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSt7Ci0rICBnZGJfYXNzZXJ0IChpc193YXRjaHBvaW50 IChiKSk7Ci0rCi0rICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50ICE9IGIpCi0rICAgIHsKLSsg ICAgICBnZGJfYXNzZXJ0IChiLT5yZWxhdGVkX2JyZWFrcG9pbnQtPnR5cGUgPT0gYnBfd2F0Y2hw b2ludF9zY29wZSk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoYi0+cmVsYXRlZF9icmVha3BvaW50LT5y ZWxhdGVkX2JyZWFrcG9pbnQgPT0gYik7Ci0rICAgICAgYi0+cmVsYXRlZF9icmVha3BvaW50LT5k aXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLSsgICAgICBiLT5yZWxhdGVkX2Jy ZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsg ICAgICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBiOwotKyAgICB9Ci0rICBiLT5kaXNwb3NpdGlv biA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLSt9Ci0rCi0gLyogQXNzdW1pbmcgdGhhdCBCIGlz IGEgd2F0Y2hwb2ludDoKLSAgICAtIFJlcGFyc2Ugd2F0Y2hwb2ludCBleHByZXNzaW9uLCBpZiBS RVBBUlNFIGlzIG5vbi16ZXJvCi0gICAgLSBFdmFsdWF0ZSBleHByZXNzaW9uIGFuZCBzdG9yZSB0 aGUgcmVzdWx0IGluIEItPnZhbAotQEAgLTEyMTgsMTIgKzEyNDIsMTcgQEAgdXBkYXRlX3dhdGNo cG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKLSAgIHN0cnVjdCBmcmFt ZV9pZCBzYXZlZF9mcmFtZV9pZDsKLSAgIGludCBmcmFtZV9zYXZlZDsKLSAKLSsgIGdkYl9hc3Nl cnQgKGlzX3dhdGNocG9pbnQgKGIpKTsKLSsKLSAgIC8qIElmIHRoaXMgaXMgYSBsb2NhbCB3YXRj aHBvaW50LCB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgaWYgdGhlCi0gICAgICB3YXRjaHBvaW50IGZy YW1lIGlzIGluIHNjb3BlIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUgdGhyZWFkCi0gICAg ICB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICovCitAQCAtMTI0OSw2 ICsxMjU0LDkgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQg cmVwYXJzZSkKICAgIGlmICghd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKGIpKQogICAgICBy ZXR1cm47CiAgCkBAIC02MjksMjIgKzUwNCw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAw NjQ0CiAgICBpZiAoYi0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wKQogICAg ICByZXR1cm47CiAgIAotQEAgLTE0NTMsMTMgKzE0ODIsNyBAQCB1cGRhdGVfd2F0Y2hwb2ludCAo c3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQotIFdhdGNocG9pbnQgJWQgZGVsZXRl ZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9ja1xuXAotIGluIHdoaWNoIGl0 cyBleHByZXNzaW9uIGlzIHZhbGlkLlxuIiksCi0gCQkgICAgICAgYi0+bnVtYmVyKTsKLS0gICAg ICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50KQotLQl7Ci0tCSAgYi0+cmVsYXRlZF9icmVha3Bv aW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLS0JICBiLT5yZWxhdGVk X2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IE5VTEw7Ci0tCSAgYi0+cmVsYXRlZF9i cmVha3BvaW50PSBOVUxMOwotLQl9Ci0tICAgICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9h dF9uZXh0X3N0b3A7Ci0rICAgICAgd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9zdG9wIChiKTsKLSAg ICAgfQotIAotICAgLyogUmVzdG9yZSB0aGUgc2VsZWN0ZWQgZnJhbWUuICAqLwotQEAgLTE1MDEs NiArMTUyNCw0MCBAQCBzaG91bGRfYmVfaW5zZXJ0ZWQgKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwp CitAQCAtMTUyMCw2ICsxNTI4LDQwIEBAIHNob3VsZF9iZV9pbnNlcnRlZCAoc3RydWN0IGJwX2xv Y2F0aW9uICpibCkKICAgIHJldHVybiAxOwogIH0KICAKQEAgLTY4NSw3ICs1NDUsNyBAQCBpbmRl eCBkYmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAogIC8qIEluc2VydCBhIGxvdy1sZXZlbCAiYnJlYWtw b2ludCIgb2Ygc29tZSB0eXBlLiAgQkwgaXMgdGhlIGJyZWFrcG9pbnQKICAgICBsb2NhdGlvbi4g IEFueSBlcnJvciBtZXNzYWdlcyBhcmUgcHJpbnRlZCB0byBUTVBfRVJST1JfU1RSRUFNOyBhbmQK ICAgICBESVNBQkxFRF9CUkVBS1MsIGFuZCBIV19CUkVBS1BPSU5UX0VSUk9SIGFyZSB1c2VkIHRv IHJlcG9ydCBwcm9ibGVtcy4KLUBAIC0xNTk2LDYgKzE2NTMsOCBAQCBpbnNlcnRfYnBfbG9jYXRp b24gKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsCitAQCAtMTYxNiw2ICsxNjU4LDggQEAgaW5zZXJ0 X2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAogIAkgIGVsc2UKICAJICAgIHZh bCA9IHRhcmdldF9pbnNlcnRfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gsCiAgCQkJCQkgICAgJmJs LT50YXJnZXRfaW5mbyk7CkBAIC02OTQsNyArNTU0LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRk ZCAxMDA2NDQKICAJfQogICAgICAgIGVsc2UKICAJewotQEAgLTE4NTAsNiArMTkwOSw3IEBAIGlu c2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xODcwLDYgKzE5MTQsNyBAQCBp bnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCiAgICBpbnQgdmFsID0gMDsKICAgIGlu dCBkaXNhYmxlZF9icmVha3MgPSAwOwogICAgaW50IGh3X2JyZWFrcG9pbnRfZXJyb3IgPSAwOwpA QCAtNzAyLDcgKzU2Miw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAwNjQ0CiAgCiAgICBz dHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1lbV9maWxlb3BlbiAoKTsKICAgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAodG1w X2Vycm9yX3N0cmVhbSk7Ci1AQCAtMTg3Nyw5ICsxOTM3LDEzIEBAIGluc2VydF9icmVha3BvaW50 X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xODk3LDkgKzE5NDIsMTMgQEAgaW5zZXJ0X2JyZWFrcG9p bnRfbG9jYXRpb25zICh2b2lkKQogICAgICAgIC8qIEZvciB0YXJnZXRzIHRoYXQgc3VwcG9ydCBn bG9iYWwgYnJlYWtwb2ludHMsIHRoZXJlJ3Mgbm8gbmVlZAogIAkgdG8gc2VsZWN0IGFuIGluZmVy aW9yIHRvIGluc2VydCBicmVha3BvaW50IHRvLiAgSW4gZmFjdCwgZXZlbgogIAkgaWYgd2UgYXJl bid0IGF0dGFjaGVkIHRvIGFueSBwcm9jZXNzIHlldCwgd2Ugc2hvdWxkIHN0aWxsCkBAIC03MTgs NyArNTc4LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQKICAJY29udGludWU7CiAg CiAgICAgICAgdmFsID0gaW5zZXJ0X2JwX2xvY2F0aW9uIChibCwgdG1wX2Vycm9yX3N0cmVhbSwg JmRpc2FibGVkX2JyZWFrcywKLUBAIC0xOTAzLDEzICsxOTY3LDE5IEBAIGluc2VydF9icmVha3Bv aW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xOTIzLDEzICsxOTcyLDE5IEBAIGluc2VydF9icmVh a3BvaW50X2xvY2F0aW9ucyAodm9pZCkKICAKICAgICAgICBpZiAoYnB0LT5kaXNwb3NpdGlvbiA9 PSBkaXNwX2RlbF9hdF9uZXh0X3N0b3ApCiAgCWNvbnRpbnVlOwpAQCAtNzQ0LDcgKzYwNCw3IEBA IGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAwNjQ0CiAgICAgICAgaWYgKHNvbWVfZmFpbGVkKQog IAl7CiAgCSAgZm9yIChsb2MgPSBicHQtPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCi1AQCAt MjA5MSwxNSArMjE2MSwyNCBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEKK0BAIC0y MTExLDE1ICsyMTY2LDI0IEBAIHN0cnVjdCBicmVha3BvaW50X29iamZpbGVfZGF0YQogICAgLyog TWluaW1hbCBzeW1ib2wocykgZm9yICJsb25nam1wIiwgInNpZ2xvbmdqbXAiLCBldGMuIChpZiBh bnkpLiAgKi8KICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9uZ2ptcF9tc3ltW05VTV9MT05H Sk1QX05BTUVTXTsKICAKQEAgLTc2OSw3ICs2MjksNyBAQCBpbmRleCBkYmQ5NTg4Li5kNTUxZGRk IDEwMDY0NAogIC8qIE1pbmltYWwgc3ltYm9sIG5vdCBmb3VuZCBzZW50aW5lbC4gICovCiAgc3Rh dGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCBtc3ltX25vdF9mb3VuZDsKICAKLUBAIC0yMjA3LDYg KzIyODYsMjkgQEAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCitAQCAt MjIyNyw2ICsyMjkxLDI5IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lk KQogIAogICAgICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0 YSAob2JqZmlsZSk7CiAgCkBAIC03OTksNyArNjU5LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRk ZCAxMDA2NDQKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX0xPTkdKTVBfTkFNRVM7IGkrKykK ICAJewogIAkgIHN0cnVjdCBicmVha3BvaW50ICpiOwotQEAgLTIzMTUsNiArMjQxNywzMSBAQCBj cmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQorQEAgLTIzMzUsNiArMjQy MiwzMSBAQCBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQogIAogICAg ICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0YSAob2JqZmls ZSk7CiAgCkBAIC04MzEsNyArNjkxLDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQK ICAgICAgICBpZiAobXN5bV9ub3RfZm91bmRfcCAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25f bXN5bSkpCiAgCWNvbnRpbnVlOwogIAotQEAgLTI1MzMsNiArMjY2MCw4IEBAIHJlbW92ZV9icmVh a3BvaW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsIGluc2VydGlvbl9zdGF0ZV90IGlzKQor QEAgLTI1NTMsNiArMjY2NSw4IEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2Nh dGlvbiAqYmwsIGluc2VydGlvbl9zdGF0ZV90IGlzKQogIAkgICAgdmFsID0gdGFyZ2V0X3JlbW92 ZV9od19icmVha3BvaW50IChibC0+Z2RiYXJjaCwgJmJsLT50YXJnZXRfaW5mbyk7CiAgCSAgZWxz ZQogIAkgICAgdmFsID0gdGFyZ2V0X3JlbW92ZV9icmVha3BvaW50IChibC0+Z2RiYXJjaCwgJmJs LT50YXJnZXRfaW5mbyk7CkBAIC04NDAsMjMxICs3MDAsNyBAQCBpbmRleCBkYmQ5NTg4Li5kNTUx ZGRkIDEwMDY0NAogIAl9CiAgICAgICAgZWxzZQogIAl7Ci1AQCAtMzQ4OSw2ICszNjE4LDggQEAg cHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQotICAgICBjYXNlIGJwX3RyYWNlcG9pbnQ6Ci0g ICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgotICAgICBjYXNlIGJwX2ppdF9ldmVudDoKLSsg ICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6Ci0rICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jl c29sdmVyX3JldHVybjoKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXN1bHQgPSBQUklOVF9VTktO T1dOOwotICAgICAgIGJyZWFrOwotQEAgLTM3MTQsNiArMzg0NSw4IEBAIHdhdGNocG9pbnRfY2hl Y2sgKHZvaWQgKnApCi0gICBnZGJfYXNzZXJ0IChicy0+YnJlYWtwb2ludF9hdCAhPSBOVUxMKTsK LSAgIGIgPSBicy0+YnJlYWtwb2ludF9hdDsKLSAKLSsgIGdkYl9hc3NlcnQgKGlzX3dhdGNocG9p bnQgKGIpKTsKLSsKLSAgIC8qIElmIHRoaXMgaXMgYSBsb2NhbCB3YXRjaHBvaW50LCB3ZSBvbmx5 IHdhbnQgdG8gY2hlY2sgaWYgdGhlCi0gICAgICB3YXRjaHBvaW50IGZyYW1lIGlzIGluIHNjb3Bl IGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUgdGhyZWFkCi0gICAgICB0aGF0IHdhcyB1c2Vk IHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICovCi1AQCAtMzgyMywxMyArMzk1Niw3IEBAIHdh dGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCi0gCQkgICAiIGRlbGV0ZWQgYmVjYXVzZSB0aGUgcHJv Z3JhbSBoYXMgbGVmdCB0aGUgYmxvY2sgaW5cblwKLSB3aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2 YWxpZC5cbiIpOyAgICAgCi0gCi0tICAgICAgaWYgKGItPnJlbGF0ZWRfYnJlYWtwb2ludCkKLS0J ewotLQkgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9u ZXh0X3N0b3A7Ci0tCSAgYi0+cmVsYXRlZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQg PSBOVUxMOwotLQkgIGItPnJlbGF0ZWRfYnJlYWtwb2ludCA9IE5VTEw7Ci0tCX0KLS0gICAgICBi LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKLSsgICAgICB3YXRjaHBvaW50 X2RlbF9hdF9uZXh0X3N0b3AgKGIpOwotIAotICAgICAgIHJldHVybiBXUF9ERUxFVEVEOwotICAg ICB9Ci1AQCAtNDAzNCw5ICs0MTYxLDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJwc3Rh dCBicykKLSAJICAgIGNhc2UgMDoKLSAJICAgICAgLyogRXJyb3IgZnJvbSBjYXRjaF9lcnJvcnMu ICAqLwotIAkgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIldhdGNocG9pbnQgJWQgZGVsZXRlZC5c biIpLCBiLT5udW1iZXIpOwotLQkgICAgICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50KQotLQkJ Yi0+cmVsYXRlZF9icmVha3BvaW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3Rv cDsKLS0JICAgICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7Ci0rCSAg ICAgIHdhdGNocG9pbnRfZGVsX2F0X25leHRfc3RvcCAoYik7Ci0gCSAgICAgIC8qIFdlJ3ZlIGFs cmVhZHkgcHJpbnRlZCB3aGF0IG5lZWRzIHRvIGJlIHByaW50ZWQuICAqLwotIAkgICAgICBicy0+ cHJpbnRfaXQgPSBwcmludF9pdF9kb25lOwotIAkgICAgICBicmVhazsKLUBAIC00MjQ3LDcgKzQz NzIsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2Us Ci0gCSAgICAgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3aWxsIGhhbmRsZSB0 aGUKLSAJICAgICBvdXQtb2Ytc2NvcGUgZXZlbnQuICBXZSdsbCBnZXQgdG8gdGhlIHdhdGNocG9p bnQgbmV4dAotIAkgICAgIGl0ZXJhdGlvbi4gICovCi0tCSAgaWYgKGItPnR5cGUgPT0gYnBfd2F0 Y2hwb2ludF9zY29wZSkKLSsJICBpZiAoYi0+dHlwZSA9PSBicF93YXRjaHBvaW50X3Njb3BlICYm IGItPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKQotIAkgICAgYi0+cmVsYXRlZF9icmVha3BvaW50 LT53YXRjaHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7Ci0gCX0KLSAgICAg fQotQEAgLTQzNjksNyArNDQ5NCw3IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQpCi0gLyogRGVj aWRlIHdoYXQgaW5mcnVuIG5lZWRzIHRvIGRvIHdpdGggdGhpcyBicHN0YXQuICAqLwotIAotIHN0 cnVjdCBicHN0YXRfd2hhdAotLWJwc3RhdF93aGF0IChicHN0YXQgYnMpCi0rYnBzdGF0X3doYXQg KGJwc3RhdCBic19oZWFkKQotIHsKLSAgIHN0cnVjdCBicHN0YXRfd2hhdCByZXR2YWw7Ci0gICAv KiBXZSBuZWVkIHRvIGRlZmVyIGNhbGxpbmcgYHNvbGliX2FkZCcsIGFzIGFkZGluZyBuZXcgc3lt Ym9scwotQEAgLTQzNzcsMTIgKzQ1MDIsMTMgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKLSAg ICAgIGFuZCBoZW5jZSBtYXkgY2xlYXIgdW5wcm9jZXNzZWQgZW50cmllcyBpbiB0aGUgQlMgY2hh aW4uICAqLwotICAgaW50IHNobGliX2V2ZW50ID0gMDsKLSAgIGludCBqaXRfZXZlbnQgPSAwOwot KyAgYnBzdGF0IGJzOwotIAotICAgcmV0dmFsLm1haW5fYWN0aW9uID0gQlBTVEFUX1dIQVRfS0VF UF9DSEVDS0lORzsKLSAgIHJldHZhbC5jYWxsX2R1bW15ID0gU1RPUF9OT05FOwotICAgcmV0dmFs LmlzX2xvbmdqbXAgPSAwOwotIAotLSAgZm9yICg7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQp Ci0rICBmb3IgKGJzID0gYnNfaGVhZDsgYnMgIT0gTlVMTDsgYnMgPSBicy0+bmV4dCkKLSAgICAg ewotICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlvbi4gIEFmdGVyIHByb2Nlc3Npbmcg ZWFjaCBCUywgd2UgY2hlY2sKLSAJIGlmIGl0cyBhY3Rpb24gb3ZlcnJpZGVzIGFsbCB3ZSd2ZSBz ZWVtIHNvIGZhci4gICovCi1AQCAtNDUxMiw2ICs0NjM4LDE2IEBAIGJwc3RhdF93aGF0IChicHN0 YXQgYnMpCi0gCSAgICAgb3V0IGFscmVhZHkuICAqLwotIAkgIGludGVybmFsX2Vycm9yIChfX0ZJ TEVfXywgX19MSU5FX18sCi0gCQkJICBfKCJicHN0YXRfd2hhdDogdHJhY2Vwb2ludCBlbmNvdW50 ZXJlZCIpKTsKLSsJICBicmVhazsKLSsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6Ci0rCSAg LyogU3RlcCBvdmVyIGl0IChhbmQgaW5zZXJ0IGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4p LiAgKi8KLSsJICB0aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NJTkdMRTsKLSsJICBicmVhazsK LSsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgotKwkgIC8qIFRoZSBicmVha3Bv aW50IHdpbGwgYmUgcmVtb3ZlZCwgZXhlY3V0aW9uIHdpbGwgcmVzdGFydCBmcm9tIHRoZQotKwkg ICAgIFBDIG9mIHRoZSBmb3JtZXIgYnJlYWtwb2ludC4gICovCi0rCSAgdGhpc19hY3Rpb24gPSBC UFNUQVRfV0hBVF9LRUVQX0NIRUNLSU5HOwotKwkgIGJyZWFrOwotIAlkZWZhdWx0OgotIAkgIGlu dGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJICBfKCJicHN0YXRfd2hhdDog dW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOwotQEAgLTQ1MjAsNiArNDY1Niw5 IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCi0gICAgICAgcmV0dmFsLm1haW5fYWN0aW9uID0g bWF4IChyZXR2YWwubWFpbl9hY3Rpb24sIHRoaXNfYWN0aW9uKTsKLSAgICAgfQotIAotKyAgLyog VGhlc2Ugb3BlcmF0aW9ucyBtYXkgYWZmZWN0IHRoZSBicy0+YnJlYWtwb2ludF9hdCBzdGF0ZSBz byB0aGV5IGFyZQotKyAgICAgZGVsYXllZCBhZnRlciBNQUlOX0FDVElPTiBpcyBkZWNpZGVkIGFi b3ZlLiAgKi8KLSsKLSAgIGlmIChzaGxpYl9ldmVudCkKLSAgICAgewotICAgICAgIGlmIChkZWJ1 Z19pbmZydW4pCi1AQCAtNDU0OSw2ICs0Njg4LDIzIEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMp Ci0gICAgICAgaGFuZGxlX2ppdF9ldmVudCAoKTsKLSAgICAgfQotIAotKyAgZm9yIChicyA9IGJz X2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYiA9IGJzLT5icmVha3BvaW50X2F0OwotKwotKyAgICAgIGlmIChiID09IE5V TEwpCi0rCWNvbnRpbnVlOwotKyAgICAgIHN3aXRjaCAoYi0+dHlwZSkKLSsJewotKwljYXNlIGJw X2dudV9pZnVuY19yZXNvbHZlcjoKLSsJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoYik7Ci0r CSAgYnJlYWs7Ci0rCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSsJICBnbnVf aWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgKGIpOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIH0K LSsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotQEAgLTQ3MDYsNiArNDg2Miw4IEBAIGJwdHlw ZV9zdHJpbmcgKGVudW0gYnB0eXBlIHR5cGUpCi0gICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJm YXN0IHRyYWNlcG9pbnQifSwKLSAgICAge2JwX3N0YXRpY190cmFjZXBvaW50LCAic3RhdGljIHRy YWNlcG9pbnQifSwKLSAgICAge2JwX2ppdF9ldmVudCwgImppdCBldmVudHMifSwKLSsgICAge2Jw X2dudV9pZnVuY19yZXNvbHZlciwgIlNUVF9HTlVfSUZVTkMgcmVzb2x2ZXIifSwKLSsgICAge2Jw X2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJTVFRfR05VX0lGVU5DIHJlc29sdmVyIHJldHVy biJ9LAotICAgfTsKLSAKLSAgIGlmICgoKGludCkgdHlwZSA+PSAoc2l6ZW9mIChicHR5cGVzKSAv IHNpemVvZiAoYnB0eXBlc1swXSkpKQotQEAgLTQ4NDAsNiArNDk5OCw4IEBAIHByaW50X29uZV9i cmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAgICAgICBjYXNlIGJw X2Zhc3RfdHJhY2Vwb2ludDoKLSAgICAgICBjYXNlIGJwX3N0YXRpY190cmFjZXBvaW50OgotICAg ICAgIGNhc2UgYnBfaml0X2V2ZW50OgotKyAgICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVy OgotKyAgICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSAJaWYgKG9wdHMu YWRkcmVzc3ByaW50KQotIAkgIHsKLSAJICAgIGFubm90YXRlX2ZpZWxkICg0KTsKLUBAIC01MTE1 LDcgKzUyNzUsOCBAQCB1c2VyX3NldHRhYmxlX2JyZWFrcG9pbnQgKGNvbnN0IHN0cnVjdCBicmVh a3BvaW50ICpiKQotIAkgIHx8IGItPnR5cGUgPT0gYnBfY2F0Y2hwb2ludAotIAkgIHx8IGItPnR5 cGUgPT0gYnBfaGFyZHdhcmVfYnJlYWtwb2ludAotIAkgIHx8IGlzX3RyYWNlcG9pbnQgKGIpCi0t CSAgfHwgaXNfd2F0Y2hwb2ludCAoYikpOwotKwkgIHx8IGlzX3dhdGNocG9pbnQgKGIpCi0rCSAg fHwgYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIpOwotIH0KLSAKLSAvKiBSZXR1cm4g dHJ1ZSBpZiB0aGlzIGJyZWFrcG9pbnQgd2FzIHNldCBieSB0aGUgdXNlciwgZmFsc2UgaWYgaXQg aXMKLUBAIC01NjExLDYgKzU3NzIsOCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmJwdCkKLSAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKLSAgICAgY2FzZSBi cF9zdGRfdGVybWluYXRlX21hc3RlcjoKLSAgICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVyOgot KyAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKLSsgICAgY2FzZSBicF9nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuOgotICAgICAgIGxvYy0+bG9jX3R5cGUgPSBicF9sb2Nfc29mdHdhcmVf YnJlYWtwb2ludDsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBicF9oYXJkd2FyZV9icmVha3Bv aW50OgotQEAgLTU3MDAsNiArNTg2Myw3IEBAIHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xv Y2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgIGItPm9wcyA9IE5VTEw7Ci0gICBi LT5jb25kaXRpb25fbm90X3BhcnNlZCA9IDA7Ci0gICBiLT5weV9icF9vYmplY3QgPSBOVUxMOwot KyAgYi0+cmVsYXRlZF9icmVha3BvaW50ID0gYjsKLSAKLSAgIC8qIEFkZCB0aGlzIGJyZWFrcG9p bnQgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCBhIGxpc3Qgb2YKLSAgICAgIGJyZWFr cG9pbnRzIHdpbGwgY29tZSBvdXQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBudW1iZXJzLiAgKi8K LUBAIC01NzE2LDkgKzU4ODAsMTIgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRp b24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcmV0dXJuIGI7Ci0gfQotIAotLS8qIElu aXRpYWxpemUgbG9jLT5mdW5jdGlvbl9uYW1lLiAgKi8KLSsvKiBJbml0aWFsaXplIGxvYy0+ZnVu Y3Rpb25fbmFtZS4gIEVYUExJQ0lUX0xPQyBzYXlzIG5vIGluZGlyZWN0IGZ1bmN0aW9uCi0rICAg cmVzb2x1dGlvbnMgc2hvdWxkIGJlIG1hZGUgYXMgdGhlIHVzZXIgc3BlY2lmaWVkIHRoZSBsb2Nh dGlvbiBleHBsaWNpdGx5Ci0rICAgZW5vdWdoLiAgKi8KLSsKLSBzdGF0aWMgdm9pZAotLXNldF9i cmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKLStz ZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2Ms IGludCBleHBsaWNpdF9sb2MpCi0gewotICAgZ2RiX2Fzc2VydCAobG9jLT5vd25lciAhPSBOVUxM KTsKLSAKLUBAIC01NzI2LDggKzU4OTMsMzMgQEAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVu Y3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQotICAgICAgIHx8IGxvYy0+b3duZXItPnR5 cGUgPT0gYnBfaGFyZHdhcmVfYnJlYWtwb2ludAotICAgICAgIHx8IGlzX3RyYWNlcG9pbnQgKGxv Yy0+b3duZXIpKQotICAgICB7Ci0tICAgICAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChsb2Mt PmFkZHJlc3MsICYobG9jLT5mdW5jdGlvbl9uYW1lKSwgCi0tCQkJCU5VTEwsIE5VTEwpOwotKyAg ICAgIGludCBpc19nbnVfaWZ1bmM7Ci0rCi0rICAgICAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9u X2dudV9pZnVuYyAobG9jLT5hZGRyZXNzLCAmbG9jLT5mdW5jdGlvbl9uYW1lLAotKwkJCQkJICBO VUxMLCBOVUxMLCAmaXNfZ251X2lmdW5jKTsKLSsKLSsgICAgICBpZiAoaXNfZ251X2lmdW5jICYm ICFleHBsaWNpdF9sb2MpCi0rCXsKLSsJICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGxvYy0+b3du ZXI7Ci0rCi0rCSAgZ2RiX2Fzc2VydCAobG9jLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3Nw YWNlKTsKLSsJICBpZiAoZ251X2lmdW5jX3Jlc29sdmVfbmFtZSAobG9jLT5mdW5jdGlvbl9uYW1l LAotKwkJCQkgICAgICAmbG9jLT5yZXF1ZXN0ZWRfYWRkcmVzcykpCi0rCSAgICB7Ci0rCSAgICAg IC8qIFJlY2FsY3VsYXRlIEFERFJFU1MgYmFzZWQgb24gbmV3IFJFUVVFU1RFRF9BRERSRVNTLiAg Ki8KLSsJICAgICAgbG9jLT5hZGRyZXNzID0gYWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAobG9j LT5nZGJhcmNoLAotKwkJCQkJCQlsb2MtPnJlcXVlc3RlZF9hZGRyZXNzLAotKwkJCQkJCQliLT50 eXBlKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmIChiLT50eXBlID09IGJwX2JyZWFrcG9pbnQgJiYg Yi0+bG9jID09IGxvYwotKwkgICAgICAgICAgICYmIGxvYy0+bmV4dCA9PSBOVUxMICYmIGItPnJl bGF0ZWRfYnJlYWtwb2ludCA9PSBiKQotKwkgICAgewotKwkgICAgICAvKiBDcmVhdGUgb25seSB0 aGUgd2hvbGUgbmV3IGJyZWFrcG9pbnQgb2YgdGhpcyB0eXBlIGJ1dCBkbyBub3QKLSsJCSBtZXNz IG1vcmUgY29tcGxpY2F0ZWQgYnJlYWtwb2ludHMgd2l0aCBtdWx0aXBsZSBsb2NhdGlvbnMuICAq LwotKwkgICAgICBiLT50eXBlID0gYnBfZ251X2lmdW5jX3Jlc29sdmVyOwotKwkgICAgfQotKwl9 Ci0rCi0gICAgICAgaWYgKGxvYy0+ZnVuY3Rpb25fbmFtZSkKLSAJbG9jLT5mdW5jdGlvbl9uYW1l ID0geHN0cmR1cCAobG9jLT5mdW5jdGlvbl9uYW1lKTsKLSAgICAgfQotQEAgLTU3OTAsNiArNTk4 Miw3IEBAIHNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAt NTkwMiw2ICs2MDE2LDcgQEAgc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwKICAgIGItPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBzYWwucGM7CiAgICBiLT5sb2Mt PmFkZHJlc3MgPSBhZGp1c3RlZF9hZGRyZXNzOwogICAgYi0+bG9jLT5wc3BhY2UgPSBzYWwucHNw YWNlOwpAQCAtMTA3MiwyNSArNzA4LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQK ICAKICAgIC8qIFN0b3JlIHRoZSBwcm9ncmFtIHNwYWNlIHRoYXQgd2FzIHVzZWQgdG8gc2V0IHRo ZSBicmVha3BvaW50LCBmb3IKICAgICAgIGJyZWFrcG9pbnQgcmVzZXR0aW5nLiAgKi8KLUBAIC01 ODAyLDcgKzU5OTUsOCBAQCBzZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAotICAgYi0+bG9jLT5zZWN0aW9uID0gc2FsLnNlY3Rpb247Ci0gICBiLT5saW5lX251bWJl ciA9IHNhbC5saW5lOwotIAotLSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGIt PmxvYyk7Ci0rICBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoYi0+bG9jLAotKwkJ CQkgICAgc2FsLmV4cGxpY2l0X3BjIHx8IHNhbC5leHBsaWNpdF9saW5lKTsKLSAKLSAgIGJyZWFr cG9pbnRzX2NoYW5nZWQgKCk7Ci0gCi1AQCAtNjkxOSwxMyArNzExMywxNCBAQCBjbG9uZV9tb21l bnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCi0gCi0gICBjb3B5ID0g c2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKG9yaWctPmdkYmFyY2gsIG9yaWct PnR5cGUpOwotICAgY29weS0+bG9jID0gYWxsb2NhdGVfYnBfbG9jYXRpb24gKGNvcHkpOwotLSAg c2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGNvcHktPmxvYyk7Ci0rICBzZXRfYnJl YWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoY29weS0+bG9jLCAxKTsKLSAKLSAgIGNvcHktPmxv Yy0+Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2RiYXJjaDsKLSAgIGNvcHktPmxvYy0+cmVxdWVzdGVk X2FkZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzOworQEAgLTcwNTcsNiArNzE3 Miw3IEBAIGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqb3Jp ZykKICAgIGNvcHktPmxvYy0+YWRkcmVzcyA9IG9yaWctPmxvYy0+YWRkcmVzczsKICAgIGNvcHkt PmxvYy0+c2VjdGlvbiA9IG9yaWctPmxvYy0+c2VjdGlvbjsKICAgIGNvcHktPmxvYy0+cHNwYWNl ID0gb3JpZy0+bG9jLT5wc3BhY2U7CkBAIC0xMDk4LDMyICs3MTYsNyBAQCBpbmRleCBkYmQ5NTg4 Li5kNTUxZGRkIDEwMDY0NAogIAogICAgaWYgKG9yaWctPnNvdXJjZV9maWxlID09IE5VTEwpCiAg ICAgIGNvcHktPnNvdXJjZV9maWxlID0gTlVMTDsKLUBAIC03MDE5LDYgKzcyMTQsNyBAQCBtZW50 aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSAJZG9fY2xlYW51cHMgKHVpX291dF9jaGFpbik7 Ci0gCWJyZWFrOwotICAgICAgIGNhc2UgYnBfYnJlYWtwb2ludDoKLSsgICAgICBjYXNlIGJwX2du dV9pZnVuY19yZXNvbHZlcjoKLSAJaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKLSAJ ICB7Ci0gCSAgICBzYXlfd2hlcmUgPSAwOwotQEAgLTcwMjksNiArNzIyNSw4IEBAIG1lbnRpb24g KHN0cnVjdCBicmVha3BvaW50ICpiKQotIAllbHNlCi0gCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJC cmVha3BvaW50IikpOwotIAlwcmludGZfZmlsdGVyZWQgKF8oIiAlZCIpLCBiLT5udW1iZXIpOwot KwlpZiAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIpCi0rCSAgcHJpbnRmX2ZpbHRl cmVkIChfKCIgYXQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHJlc29sdmVyIikpOwotIAlzYXlfd2hl cmUgPSAxOwotIAlicmVhazsKLSAgICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQ6Ci1A QCAtNzA4OCw2ICs3Mjg2LDcgQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCi0gICAg ICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKLSAgICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVf bWFzdGVyOgotICAgICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKLSsgICAgICBjYXNlIGJw X2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0gCWJyZWFrOwotICAgICAgIH0KLSAKLUBAIC03 MTQ1LDEwICs3MzQ0LDEyIEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqYiwKK0BAIC03MjgwLDYgKzczOTYsNyBAQCBhZGRfbG9jYXRpb25fdG9fYnJlYWtw b2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICBsb2MtPmFkZHJlc3MgPSBhZGp1c3RfYnJl YWtwb2ludF9hZGRyZXNzIChsb2MtPmdkYmFyY2gsCiAgCQkJCQkgICAgbG9jLT5yZXF1ZXN0ZWRf YWRkcmVzcywgYi0+dHlwZSk7CiAgICBsb2MtPnBzcGFjZSA9IHNhbC0+cHNwYWNlOwpAQCAtMTEz MSwxMyArNzI0LDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQKICAgIGdkYl9hc3Nl cnQgKGxvYy0+cHNwYWNlICE9IE5VTEwpOwogICAgbG9jLT5zZWN0aW9uID0gc2FsLT5zZWN0aW9u OwogIAotLSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGxvYyk7Ci0rICBzZXRf YnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAobG9jLAotKwkJCQkgICAgc2FsLT5leHBsaWNp dF9wYyB8fCBzYWwtPmV4cGxpY2l0X2xpbmUpOwotICAgcmV0dXJuIGxvYzsKLSB9Ci0gDAotQEAg LTc0OTMsNiArNzY5NCwxNiBAQCBjcmVhdGVfYnJlYWtwb2ludHNfc2FsIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKK0BAIC03NjI5LDYgKzc3NDYsMTYgQEAgY3JlYXRlX2JyZWFrcG9pbnRzX3Nh bCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgewogICAgaW50IGk7CiAgCkBAIC0xMTU0LDcg Kzc0MSw3IEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAwNjQ0CiAgICBmb3IgKGkgPSAwOyBp IDwgc2Fscy5uZWx0czsgKytpKQogICAgICB7CiAgICAgICAgc3RydWN0IHN5bXRhYnNfYW5kX2xp bmVzIGV4cGFuZGVkID0gCi1AQCAtODAxOCw3ICs4MjI5LDcgQEAgY3JlYXRlX2JyZWFrcG9pbnQg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTgxNTQsNyArODI4MSw3IEBAIGNyZWF0ZV9i cmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgICAgIG1lbnRpb24gKGIp OwogICAgICB9CiAgICAKQEAgLTExNjMsNyArNzUwLDcgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRk ZCAxMDA2NDQKICAgICAgewogICAgICAgIHdhcm5pbmcgKF8oIk11bHRpcGxlIGJyZWFrcG9pbnRz IHdlcmUgc2V0LlxuVXNlIHRoZSAiCiAgCQkgIlwiZGVsZXRlXCIgY29tbWFuZCB0byBkZWxldGUg dW53YW50ZWQgYnJlYWtwb2ludHMuIikpOwotQEAgLTg1ODYsNiArODc5Nyw3IEBAIHdhdGNoX2Nv bW1hbmRfMSAoY2hhciAqYXJnLCBpbnQgYWNjZXNzZmxhZywgaW50IGZyb21fdHR5LAorQEAgLTkw MjYsNiArOTE1Myw3IEBAIHdhdGNoX2NvbW1hbmRfMSAoY2hhciAqYXJnLCBpbnQgYWNjZXNzZmxh ZywgaW50IGZyb21fdHR5LAogICAgYiA9IHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0 aW9uIChOVUxMLCBicF90eXBlKTsKICAgIHNldF9icmVha3BvaW50X251bWJlciAoaW50ZXJuYWws IGIpOwogICAgYi0+dGhyZWFkID0gdGhyZWFkOwpAQCAtMTE3MSw3ICs3NTgsNyBAQCBpbmRleCBk YmQ5NTg4Li5kNTUxZGRkIDEwMDY0NAogICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RvbnR0b3Vj aDsKICAgIGItPmV4cCA9IGV4cDsKICAgIGItPmV4cF92YWxpZF9ibG9jayA9IGV4cF92YWxpZF9i bG9jazsKLUBAIC05NzQ3LDYgKzk5NTksOSBAQCB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3Qg KGludCBzaG91bGRfaW5zZXJ0KQorQEAgLTEwMTg4LDYgKzEwMzE2LDkgQEAgdXBkYXRlX2dsb2Jh bF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAgICAgICBpbnQga2VlcF9pbl90 YXJnZXQgPSAwOwogICAgICAgIGludCByZW1vdmVkID0gMDsKICAKQEAgLTExODEsMTQ1ICs3Njgs OTMgQEAgaW5kZXggZGJkOTU4OC4uZDU1MWRkZCAxMDA2NDQKICAgICAgICAvKiBTa2lwIExPQ1Ag ZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUgbmVlZGVkLgogIAkgU3RvcCBl aXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERfTE9DLiAgKi8KICAgICAgICB3 aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQKLUBAIC0xMDA2Mywx MiArMTAyNzgsMjAgQEAgZGVsZXRlX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpicHQp Ci0gCi0gICAvKiBBdCBsZWFzdCBhdm9pZCB0aGlzIHN0YWxlIHJlZmVyZW5jZSB1bnRpbCB0aGUg cmVmZXJlbmNlIGNvdW50aW5nCi0gICAgICBvZiBicmVha3BvaW50cyBnZXRzIHJlc29sdmVkLiAg Ki8KLS0gIGlmIChicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBOVUxMKQotKyAgaWYgKGJwdC0+ cmVsYXRlZF9icmVha3BvaW50ICE9IGJwdCkKLSAgICAgewotLSAgICAgIGdkYl9hc3NlcnQgKGJw dC0+cmVsYXRlZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQgPT0gYnB0KTsKLS0gICAg ICBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0 X3N0b3A7Ci0tICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2lu dCA9IE5VTEw7Ci0tICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBOVUxMOwotKyAgICAg IHN0cnVjdCBicmVha3BvaW50ICpyZWxhdGVkOwotKwotKyAgICAgIGlmIChicHQtPnR5cGUgPT0g YnBfd2F0Y2hwb2ludF9zY29wZSkKLSsJd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9zdG9wIChicHQt PnJlbGF0ZWRfYnJlYWtwb2ludCk7Ci0rICAgICAgZWxzZSBpZiAoYnB0LT5yZWxhdGVkX2JyZWFr cG9pbnQtPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSkKLSsJd2F0Y2hwb2ludF9kZWxfYXRf bmV4dF9zdG9wIChicHQpOwotKwotKyAgICAgIC8qIFVubGluayBicHQgZnJvbSB0aGUgYnB0LT5y ZWxhdGVkX2JyZWFrcG9pbnQgcmluZy4gICovCi0rICAgICAgZm9yIChyZWxhdGVkID0gYnB0OyBy ZWxhdGVkLT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYnB0OwotKwkgICByZWxhdGVkID0gcmVsYXRl ZC0+cmVsYXRlZF9icmVha3BvaW50KTsKLSsgICAgICByZWxhdGVkLT5yZWxhdGVkX2JyZWFrcG9p bnQgPSBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsgICAgICBicHQtPnJlbGF0ZWRfYnJlYWtw b2ludCA9IGJwdDsKLSAgICAgfQotIAotICAgb2JzZXJ2ZXJfbm90aWZ5X2JyZWFrcG9pbnRfZGVs ZXRlZCAoYnB0LT5udW1iZXIpOwotQEAgLTEwMzgxLDcgKzEwNjA0LDcgQEAgdXBkYXRlX3N0YXRp Y190cmFjZXBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgc3RydWN0IHN5bXRhYl9hbmRfbGlu ZSBzYWwpCi0gICByZXR1cm4gc2FsOwotIH0KK0BAIC0xMDk1MiwxMiArMTEwODMsMTQgQEAgdXBk YXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAgICBPbiBy ZXR1cm4sIEZPVU5EIHdpbGwgYmUgMSBpZiBhbnkgU2FMIHdhcyBmb3VuZCwgemVybyBvdGhlcndp c2UuICAqLwogIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0 aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCi0gCQkJICAgICBzdHJ1Y3Qgc3ltdGFic19hbmRf bGluZXMgc2FscykKKyBzdGF0aWMgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCistYWRkcl9zdHJp bmdfdG9fc2FscyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGNoYXIgKmFkZHJfc3RyaW5nLCBpbnQg KmZvdW5kKQorK2FkZHJfc3RyaW5nX3RvX3NhbHMgKHN0cnVjdCBicmVha3BvaW50ICpiLCBjaGFy ICphZGRyX3N0cmluZywgaW50ICpmb3VuZCwKKysJCSAgICAgaW50ICpwcmVfZXhwYW5kZWQpCiAg ewotQEAgLTEwNTAxLDYgKzEwNzI0LDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpi aW50KQorICAgY2hhciAqczsKKyAgIGludCBtYXJrZXJfc3BlYywgbm90X2ZvdW5kOworICAgc3Ry dWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHMgPSB7MH07CiAgICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBlOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2Ns ZWFudXAsIE5VTEwpOwotICAgaW50IG1hcmtlcl9zcGVjID0gMDsKLSsgIGludCBwcmVfZXhwYW5k ZWQgPSAwOworKyAgaW50IG15X3ByZV9leHBhbmRlZCA9IDA7CiAgCi0gICBzd2l0Y2ggKGItPnR5 cGUpCi0gICAgIHsKLUBAIC0xMDUxMyw2ICsxMDczNyw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29u ZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF90cmFjZXBvaW50OgotICAgICBjYXNlIGJwX2Zh c3RfdHJhY2Vwb2ludDoKLSAgICAgY2FzZSBicF9zdGF0aWNfdHJhY2Vwb2ludDoKLSsgICAgY2Fz ZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6Ci0gICAgICAgLyogRG8gbm90IGF0dGVtcHQgdG8gcmUt c2V0IGJyZWFrcG9pbnRzIGRpc2FibGVkIGR1cmluZyBzdGFydHVwLiAgKi8KLSAgICAgICBpZiAo Yi0+ZW5hYmxlX3N0YXRlID09IGJwX3N0YXJ0dXBfZGlzYWJsZWQpCi0gCXJldHVybiAwOwotQEAg LTEwNTQ3LDggKzEwNzcyLDI1IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkK LSAJCWVycm9yIChfKCJtYXJrZXIgJXMgbm90IGZvdW5kIiksIGItPnN0YXRpY190cmFjZV9tYXJr ZXJfaWQpOwotIAkgICAgfQotIAkgIGVsc2UKLS0JICAgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgm cywgMSwgKHN0cnVjdCBzeW10YWIgKikgTlVMTCwgMCwKLS0JCQkJICBOVUxMLCBub3RfZm91bmRf cHRyKTsKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdCBjYW5vbmljYWw7 Ci0rCi0rCSAgICAgIGluaXRfbGluZXNwZWNfcmVzdWx0ICgmY2Fub25pY2FsKTsKLSsJICAgICAg c2FscyA9IGRlY29kZV9saW5lXzEgKCZzLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAwLAot KwkJCQkgICAgJmNhbm9uaWNhbCwgbm90X2ZvdW5kX3B0cik7CisgICBzID0gYWRkcl9zdHJpbmc7 CisgICBtYXJrZXJfc3BlYyA9IGItPnR5cGUgPT0gYnBfc3RhdGljX3RyYWNlcG9pbnQgJiYgaXNf bWFya2VyX3NwZWMgKHMpOworQEAgLTEwOTc2LDggKzExMTA5LDI3IEBAIGFkZHJfc3RyaW5nX3Rv X3NhbHMgKHN0cnVjdCBicmVha3BvaW50ICpiLCBjaGFyICphZGRyX3N0cmluZywgaW50ICpmb3Vu ZCkKKyAJICAgIGVycm9yIChfKCJtYXJrZXIgJXMgbm90IGZvdW5kIiksIGItPnN0YXRpY190cmFj ZV9tYXJrZXJfaWQpOworIAl9CisgICAgICAgZWxzZQorLQlzYWxzID0gZGVjb2RlX2xpbmVfMSAo JnMsIDEsIChzdHJ1Y3Qgc3ltdGFiICopIE5VTEwsIDAsCistCQkJICAgICAgTlVMTCwgJm5vdF9m b3VuZCk7CisrCXsKKysJICBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0IGNhbm9uaWNhbDsKICsKLSsJ ICAgICAgLyogV2UgZG9uJ3QgbmVlZCB0aGUgY29udGVudHMuICAqLwotKwkgICAgICBpZiAoY2Fu b25pY2FsLmNhbm9uaWNhbCkKLSsJCXsKLSsJCSAgaW50IGk7CisrCSAgaW5pdF9saW5lc3BlY19y ZXN1bHQgKCZjYW5vbmljYWwpOworKwkgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmcywgMSwgKHN0 cnVjdCBzeW10YWIgKikgTlVMTCwgMCwKKysJCQkJJmNhbm9uaWNhbCwgJm5vdF9mb3VuZCk7CiAr Ci0rCQkgIGZvciAoaSA9IDA7IGkgPCBzYWxzLm5lbHRzOyArK2kpCi0rCQkgICAgeGZyZWUgKGNh bm9uaWNhbC5jYW5vbmljYWxbaV0pOwotKwkJICB4ZnJlZSAoY2Fub25pY2FsLmNhbm9uaWNhbCk7 Ci0rCQl9CisrCSAgLyogV2UgZG9uJ3QgbmVlZCB0aGUgY29udGVudHMuICAqLworKwkgIGlmIChj YW5vbmljYWwuY2Fub25pY2FsKQorKwkgICAgeworKwkgICAgICBpbnQgaTsKICsKLSsJICAgICAg cHJlX2V4cGFuZGVkID0gY2Fub25pY2FsLnByZV9leHBhbmRlZDsKKysJICAgICAgZm9yIChpID0g MDsgaSA8IHNhbHMubmVsdHM7ICsraSkKKysJCXhmcmVlIChjYW5vbmljYWwuY2Fub25pY2FsW2ld KTsKKysJICAgICAgeGZyZWUgKGNhbm9uaWNhbC5jYW5vbmljYWwpOwogKwkgICAgfQotIAl9Ci0g ICAgICAgaWYgKGUucmVhc29uIDwgMCkKLSAJewotQEAgLTEwNTgxLDcgKzEwODIzLDcgQEAgYnJl YWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQotIAotICAgICAgIGlmICghbm90X2ZvdW5k KQotIAl7Ci0tCSAgZ2RiX2Fzc2VydCAoc2Fscy5uZWx0cyA9PSAxKTsKLSsJICBnZGJfYXNzZXJ0 IChwcmVfZXhwYW5kZWQgfHwgc2Fscy5uZWx0cyA9PSAxKTsKKysKKysJICBteV9wcmVfZXhwYW5k ZWQgPSBjYW5vbmljYWwucHJlX2V4cGFuZGVkOworKwkgIGlmIChwcmVfZXhwYW5kZWQpCisrCSAg ICAqcHJlX2V4cGFuZGVkID0gbXlfcHJlX2V4cGFuZGVkOworKwl9CisgICAgIH0KKyAgIGlmIChl LnJlYXNvbiA8IDApCisgICAgIHsKK0BAIC0xMTAxMCw3ICsxMTE2Miw3IEBAIGFkZHJfc3RyaW5n X3RvX3NhbHMgKHN0cnVjdCBicmVha3BvaW50ICpiLCBjaGFyICphZGRyX3N0cmluZywgaW50ICpm b3VuZCkKICAKLSAJICByZXNvbHZlX3NhbF9wYyAoJnNhbHMuc2Fsc1swXSk7Ci0gCSAgaWYgKGIt PmNvbmRpdGlvbl9ub3RfcGFyc2VkICYmIHMgJiYgc1swXSkKLUBAIC0xMDYwMiw3ICsxMDg0NCwx MCBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCi0gCSAgaWYgKGItPnR5cGUg PT0gYnBfc3RhdGljX3RyYWNlcG9pbnQgJiYgIW1hcmtlcl9zcGVjKQotIAkgICAgc2Fscy5zYWxz WzBdID0gdXBkYXRlX3N0YXRpY190cmFjZXBvaW50IChiLCBzYWxzLnNhbHNbMF0pOworICAgaWYg KCFub3RfZm91bmQpCisgICAgIHsKKy0gICAgICBnZGJfYXNzZXJ0IChzYWxzLm5lbHRzID09IDEp OworKyAgICAgIGdkYl9hc3NlcnQgKG15X3ByZV9leHBhbmRlZCB8fCBzYWxzLm5lbHRzID09IDEp OworIAorICAgICAgIHJlc29sdmVfc2FsX3BjICgmc2Fscy5zYWxzWzBdKTsKKyAgICAgICBpZiAo Yi0+Y29uZGl0aW9uX25vdF9wYXJzZWQgJiYgcyAmJiBzWzBdKQorQEAgLTExMDQ5LDIyICsxMTIw MSwyNyBAQCByZV9zZXRfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgICBzdHJ1 Y3Qgc3ltdGFic19hbmRfbGluZXMgZXhwYW5kZWQgPSB7MH07CisgICBzdHJ1Y3Qgc3ltdGFic19h bmRfbGluZXMgZXhwYW5kZWRfZW5kID0gezB9OworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBz ID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKyAgaW50IHByZV9leHBhbmRl ZCA9IDA7CiAgCi0tCSAgZXhwYW5kZWQgPSBleHBhbmRfbGluZV9zYWxfbWF5YmUgKHNhbHMuc2Fs c1swXSk7Ci0rCSAgaWYgKHByZV9leHBhbmRlZCkKLSsJICAgIGV4cGFuZGVkID0gc2FsczsKLSsJ ICBlbHNlCi0rCSAgICBleHBhbmRlZCA9IGV4cGFuZF9saW5lX3NhbF9tYXliZSAoc2Fscy5zYWxz WzBdKTsKLSAJfQorICAgaW5wdXRfcmFkaXggPSBiLT5pbnB1dF9yYWRpeDsKKyAgIHNhdmVfY3Vy cmVudF9zcGFjZV9hbmRfdGhyZWFkICgpOworICAgc3dpdGNoX3RvX3Byb2dyYW1fc3BhY2VfYW5k X3RocmVhZCAoYi0+cHNwYWNlKTsKKyAgIHNldF9sYW5ndWFnZSAoYi0+bGFuZ3VhZ2UpOwogIAor LSAgc2FscyA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3RyaW5nLCAmZm91bmQp OworKyAgc2FscyA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3RyaW5nLCAmZm91 bmQsICZwcmVfZXhwYW5kZWQpOworICAgaWYgKGZvdW5kKQorICAgICB7CiAgICAgICAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgc2Fscy5zYWxzKTsKLUBAIC0xMDY4Myw2ICsxMDkyOCw3IEBAIGJyZWFr cG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9leGNlcHRpb246Ci0g ICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9qaXRfZXZlbnQ6Ci0r ICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSAgICAgICBicmVhazsKKy0g ICAgICBleHBhbmRlZCA9IGV4cGFuZF9saW5lX3NhbF9tYXliZSAoc2Fscy5zYWxzWzBdKTsKKysg ICAgICBpZiAocHJlX2V4cGFuZGVkKQorKwlleHBhbmRlZCA9IHNhbHM7CisrICAgICAgZWxzZQor KwlleHBhbmRlZCA9IGV4cGFuZF9saW5lX3NhbF9tYXliZSAoc2Fscy5zYWxzWzBdKTsKICAgICAg fQogIAotQEAgLTEwODQ5LDExICsxMTA5NSwyNSBAQCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChj aGFyICphcmdzLCB2b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAotIAkgIEFM TF9CUkVBS1BPSU5UU19TQUZFIChiLCB0bXApCi0gCSAgICBpZiAoYi0+bnVtYmVyID09IG51bSkK LSAJICAgICAgewotLQkJc3RydWN0IGJyZWFrcG9pbnQgKnJlbGF0ZWRfYnJlYWtwb2ludCA9IGIt PnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsJCXN0cnVjdCBicmVha3BvaW50ICpyZWxhdGVkX2JyZWFr cG9pbnQ7Ci0rCi0gCQltYXRjaCA9IDE7Ci0tCQlmdW5jdGlvbiAoYiwgZGF0YSk7Ci0tCQlpZiAo cmVsYXRlZF9icmVha3BvaW50KQotLQkJICBmdW5jdGlvbiAocmVsYXRlZF9icmVha3BvaW50LCBk YXRhKTsKLSsJCXJlbGF0ZWRfYnJlYWtwb2ludCA9IGI7Ci0rCQlkbwotKwkJICB7Ci0rCQkgICAg c3RydWN0IGJyZWFrcG9pbnQgKm5leHRfcmVsYXRlZF9iOwotKwotKwkJICAgIC8qIEZVTkNUSU9O IGNhbiBiZSBhbHNvIGRlbGV0ZV9icmVha3BvaW50LiAgKi8KLSsJCSAgICBuZXh0X3JlbGF0ZWRf YiA9IHJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50OwotKwkJICAgIGZ1bmN0 aW9uIChyZWxhdGVkX2JyZWFrcG9pbnQsIGRhdGEpOwotKwotKwkJICAgIC8qIEZvciBkZWxldGVf YnJlYWtwb2ludCBvZiB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgcmluZyB3ZQotKwkJICAgICAgIHdl cmUgdHJhdmVyc2luZyB3ZSB3b3VsZCBuZXZlciBnZXQgYmFjayB0byBCLiAgKi8KLSsJCSAgICBp ZiAobmV4dF9yZWxhdGVkX2IgPT0gcmVsYXRlZF9icmVha3BvaW50KQotKwkJICAgICAgYnJlYWs7 Ci0rCQkgICAgcmVsYXRlZF9icmVha3BvaW50ID0gbmV4dF9yZWxhdGVkX2I7Ci0rCQkgIH0KLSsJ CXdoaWxlIChyZWxhdGVkX2JyZWFrcG9pbnQgIT0gYik7Ci0gCQlicmVhazsKLSAJICAgICAgfQot IAkgIGlmIChtYXRjaCA9PSAwKQotQEAgLTExOTg0LDYgKzEyMjQ0LDI0IEBAIGFsbF90cmFjZXBv aW50cyAodm9pZCkKKyAgIGlmIChiLT5hZGRyX3N0cmluZ19yYW5nZV9lbmQpCisgICAgIHsKKy0g ICAgICBzYWxzX2VuZCA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3RyaW5nX3Jh bmdlX2VuZCwgJmZvdW5kKTsKKysgICAgICBzYWxzX2VuZCA9IGFkZHJfc3RyaW5nX3RvX3NhbHMg KGIsIGItPmFkZHJfc3RyaW5nX3JhbmdlX2VuZCwgJmZvdW5kLAorKwkJCQkgICAgICBOVUxMKTsK KyAgICAgICBpZiAoZm91bmQpCisgCXsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBzYWxzX2Vu ZC5zYWxzKTsKK0BAIC0xMjUwMSw2ICsxMjY1OCwyNCBAQCBhbGxfdHJhY2Vwb2ludHMgKHZvaWQp CiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTEzNDQsNyArODc5LDcgQEAgaW5kZXggZGJk OTU4OC4uZDU1MWRkZCAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZv ciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrCiAgICAgY29tbWFuZHMuICBJ dCBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4KLUBAIC0xMjYw Myw0ICsxMjg4MSw3IEBAIGluZmVyaW9yIGluIGFsbC1zdG9wIG1vZGUsIGdkYiBiZWhhdmVzIGFz IGlmIGFsd2F5cy1pbnNlcnRlZCBtb2RlIGlzIG9mZi4iKSwKK0BAIC0xMzEzNiw0ICsxMzMxMSw3 IEBAIHJhbmdlIChpbmNsdWRpbmcgU1RBUlQtTE9DQVRJT04gYW5kIEVORC1MT0NBVElPTikuIikp OwogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVy X2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwpA QCAtMTM1MywzMCArODg4LDEwIEBAIGluZGV4IGRiZDk1ODguLmQ1NTFkZGQgMTAwNjQ0CiArI2Vu ZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmggYi9nZGIvYnJlYWtwb2ludC5o Ci1pbmRleCBkNWFmOTI4Li5jOGEzMTYxIDEwMDY0NAoraW5kZXggN2E5YzJkNC4uOGE5MTAxOSAx MDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmgKICsrKyBiL2dkYi9icmVha3BvaW50LmgKLUBA IC0xNDksNiArMTQ5LDE5IEBAIGVudW0gYnB0eXBlCi0gCi0gICAgIC8qIEV2ZW50IGZvciBKSVQg Y29tcGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KLSAgICAgYnBfaml0X2V2 ZW50LAotKwotKyAgICAvKiBCcmVha3BvaW50IGlzIHBsYWNlZCBhdCB0aGUgU1RUX0dOVV9JRlVO QyByZXNvbHZlci4gIFdoZW4gaGl0IEdEQgotKyAgICAgICBpbnNlcnRzIG5ldyBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXJfcmV0dXJuIGF0IHRoZSBjYWxsZXIuCi0rICAgICAgIGJwX2dudV9pZnVuY19y ZXNvbHZlciBpcyBzdGlsbCBiZWluZyBrZXB0IGhlcmUgYXMgYSBkaWZmZXJlbnQgdGhyZWFkCi0r ICAgICAgIG1heSBzdGlsbCBoaXQgaXQgYmVmb3JlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1 cm4gaXMgaGl0IGJ5IHRoZQotKyAgICAgICBvcmlnaW5hbCB0aHJlYWQuICAqLwotKyAgICBicF9n bnVfaWZ1bmNfcmVzb2x2ZXIsCi0rCi0rICAgIC8qIE9uIGl0cyBoaXQgR0RCIG5vdyBrbm93IHRo ZSByZXNvbHZlZCBhZGRyZXNzIG9mIHRoZSB0YXJnZXQKLSsgICAgICAgU1RUX0dOVV9JRlVOQyBm dW5jdGlvbi4gIEFzc29jaWF0ZWQgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGNhbiBiZQotKyAgICAg ICBkZWxldGVkIG5vdyBhbmQgdGhlIGJyZWFrcG9pbnQgbW92ZWQgdG8gdGhlIHRhcmdldCBmdW5j dGlvbiBlbnRyeQotKyAgICAgICBwb2ludC4gICovCi0rICAgIGJwX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm4sCi0gICB9OwotIAotIC8qIFN0YXRlcyBvZiBlbmFibGVtZW50IG9mIGJyZWFrcG9p bnQuICAqLwotQEAgLTM0NSw2ICszNTgsMTEgQEAgc3RydWN0IGJwX2xvY2F0aW9uCitAQCAtMzYz LDYgKzM2MywxMSBAQCBzdHJ1Y3QgYnBfbG9jYXRpb24KICAgICAgIHByb2Nlc3NvcidzIGFyY2hp dGVjdHVhbCBjb25zdHJhaW50cy4gICovCiAgICBDT1JFX0FERFIgcmVxdWVzdGVkX2FkZHJlc3M7 CiAgCkBAIC0xMzg4LDE3ICs5MDMsNyBAQCBpbmRleCBkNWFmOTI4Li5jOGEzMTYxIDEwMDY0NAog ICAgY2hhciAqZnVuY3Rpb25fbmFtZTsKICAKICAgIC8qIERldGFpbHMgb2YgdGhlIHBsYWNlZCBi cmVha3BvaW50LCB3aGVuIGluc2VydGVkLiAgKi8KLUBAIC04OTAsNiArOTA4LDkgQEAgZXh0ZXJu IGludCBicmVha3BvaW50X3RocmVhZF9tYXRjaCAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKLSAK LSBleHRlcm4gdm9pZCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICosIGludCwgaW50KTsKLSAK LStleHRlcm4gdm9pZCB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3Bv aW50ICpiLAotKwkJCQkJIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzKTsKLSsKLSBleHRl cm4gdm9pZCBicmVha3BvaW50X3JlX3NldCAodm9pZCk7Ci0gCi0gZXh0ZXJuIHZvaWQgYnJlYWtw b2ludF9yZV9zZXRfdGhyZWFkIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKLUBAIC0xMTkxLDQgKzEy MTIsMTEgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYnJlYWtwb2lu dHMgKGludCAoKikgKHN0cnVjdCBicmVha3BvaW50ICoKK0BAIC0xMjM3LDQgKzEyNDIsMTEgQEAg ZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGludCAo KikgKHN0cnVjdCBicmVha3BvaW50ICoKICAKICBleHRlcm4gaW50IHVzZXJfYnJlYWtwb2ludF9w IChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKICAKQEAgLTE0MzIsNiArOTM3LDU5IEBAIGluZGV4IDJl MjNkZDcuLmFlZmM4MDcgMTAwNjQ0CiAgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIl0iKTsK ICAKICAJY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgc3RyZWFtLAorZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xpLXV0aWxzLmMgYi9nZGIvY2xpL2Ns aS11dGlscy5jCitpbmRleCA2MmEyZjEyLi5kZDI4MjRmIDEwMDY0NAorLS0tIGEvZ2RiL2NsaS9j bGktdXRpbHMuYworKysrIGIvZ2RiL2NsaS9jbGktdXRpbHMuYworQEAgLTI0NSwzICsyNDUsMzIg QEAgcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnN0YXJ0LCBjaGFyICpz KQorIAorICAgcmV0dXJuIHM7CisgfQorKworKy8qIFNlZSBkb2N1bWVudGF0aW9uIGluIGNsaS11 dGlscy5oLiAgKi8KKysKKytjaGFyICoKKytleHRyYWN0X2FyZyAoY2hhciAqKmFyZykKKyt7Cisr ICBjaGFyICpyZXN1bHQsICpjb3B5OworKworKyAgaWYgKCEqYXJnKQorKyAgICByZXR1cm4gTlVM TDsKKysKKysgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBhcmd1bWVudC4gICovCisrICAqYXJn ID0gc2tpcF9zcGFjZXMgKCphcmcpOworKyAgaWYgKCEgKiphcmcpCisrICAgIHJldHVybiBOVUxM OworKyAgcmVzdWx0ID0gKmFyZzsKKysKKysgIC8qIEZpbmQgdGhlIGVuZCBvZiB0aGUgYXJndW1l bnQuICAqLworKyAgKmFyZyA9IHNraXBfdG9fc3BhY2UgKCphcmcgKyAxKTsKKysKKysgIGlmIChy ZXN1bHQgPT0gKmFyZykKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBjb3B5ID0geG1hbGxvYyAo KmFyZyAtIHJlc3VsdCArIDEpOworKyAgbWVtY3B5IChjb3B5LCByZXN1bHQsICphcmcgLSByZXN1 bHQpOworKyAgY29weVsqYXJnIC0gcmVzdWx0XSA9ICdcMCc7CisrCisrICByZXR1cm4gY29weTsK Kyt9CitkaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktdXRpbHMuaCBiL2dkYi9jbGkvY2xpLXV0aWxz LmgKK2luZGV4IDhhNmU1YjMuLmVkMWE2M2UgMTAwNjQ0CistLS0gYS9nZGIvY2xpL2NsaS11dGls cy5oCisrKysgYi9nZGIvY2xpL2NsaS11dGlscy5oCitAQCAtMTAzLDQgKzEwMywxMSBAQCBleHRl cm4gY2hhciAqc2tpcF90b19zcGFjZSAoY2hhciAqaW5wKTsKKyAgICBTVEFSVC4gICovCisgCisg ZXh0ZXJuIGNoYXIgKnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlIChjb25zdCBjaGFyICpzdGFy dCwgY2hhciAqcyk7CisrCisrLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCBhbiBhcmd1 bWVudCBmcm9tICpBUkcuICBBbiBhcmd1bWVudCBpcworKyAgIGRlbGltaXRlZCBieSB3aGl0ZXNw YWNlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgTlVMTCBpZiBubworKyAgIGFyZ3VtZW50 IHdhcyBmb3VuZCwgb3IgYW4geG1hbGxvYydkIHN0cmluZy4gICovCisrCisrZXh0ZXJuIGNoYXIg KmV4dHJhY3RfYXJnIChjaGFyICoqYXJnKTsKKysKKyAjZW5kaWYgLyogQ0xJX1VUSUxTX0ggKi8K IGRpZmYgLS1naXQgYS9nZGIvY29mZnJlYWQuYyBiL2dkYi9jb2ZmcmVhZC5jCiBpbmRleCBiMTFk ZDczLi4wODY4YTc5IDEwMDY0NAogLS0tIGEvZ2RiL2NvZmZyZWFkLmMKQEAgLTE0OTYsNyArMTA1 NCw3IEBAIGluZGV4IDUxZGRkOWQuLmE1OWFlMTAgMTAwNjQ0CiAgfTsKICAKIGRpZmYgLS1naXQg YS9nZGIvZGVmcy5oIGIvZ2RiL2RlZnMuaAotaW5kZXggOTQwOWRkZS4uZjBmYTRjNyAxMDA2NDQK K2luZGV4IDk1MzFjNWEuLmI5OTQ2NDUgMTAwNjQ0CiAtLS0gYS9nZGIvZGVmcy5oCiArKysgYi9n ZGIvZGVmcy5oCiBAQCAtMzk4LDYgKzM5OCw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFr ZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZvICh2b2lkKTsKQEAgLTE1MDksNyArMTA2Nyw3IEBA IGluZGV4IDk0MDlkZGUuLmYwZmE0YzcgMTAwNjQ0CiAgZXh0ZXJuIGNoYXIgKnhmdWxscGF0aCAo Y29uc3QgY2hhciAqKTsKICAKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2Ri L2RvYy9nZGIudGV4aW5mbwotaW5kZXggZTAyMzA1OC4uYmY1NGU5YSAxMDA2NDQKK2luZGV4IGM3 MWQ2NjQuLmI2NmU0MjYgMTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9n ZGIvZG9jL2dkYi50ZXhpbmZvCiBAQCAtMTE3Nyw2ICsxMTc3LDE2IEBAIGZvciByZW1vdGUgZGVi dWdnaW5nLgpAQCAtMTU0Nyw3ICsxMTA1LDcgQEAgaW5kZXggZTAyMzA1OC4uYmY1NGU5YSAxMDA2 NDQKICtAY2luZGV4IFN5c3RlbVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQKICtAY2luZGV4IHNkdC1w cm9iZQogK1RoZSBAc2N7Z251fS9MaW51eCB0b29sIEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMg YSB3YXkgZm9yCi0rYXBwbGljYXRpb25zIHRvIGVtYmVkIHN0YXRpYyBwcm9iZXMsIHVzaW5nIEBm aWxle3NkdC5ofS4gIEB2YWx1ZXtHREJOfQorK2FwcGxpY2F0aW9ucyB0byBlbWJlZCBzdGF0aWMg cHJvYmVzLCB1c2luZyBAZmlsZXtzeXMvc2R0Lmh9LiAgQHZhbHVle0dEQk59CiArY2FuIGxpc3Qg dGhlIGF2YWlsYWJsZSBwcm9iZXMsIGFuZCB5b3UgY2FuIHB1dCBicmVha3BvaW50cyBhdCB0aGUK ICtwcm9iZSBwb2ludHMgKEBweHJlZntTcGVjaWZ5IExvY2F0aW9ufSkuCiArCkBAIC0xNjI5LDcg KzExODcsMjQgQEAgaW5kZXggZTAyMzA1OC4uYmY1NGU5YSAxMDA2NDQKICBAaXRlbSAkX3NkYXRh CiAgQHZpbmRleCAkX3NkYXRhQHJ7LCBpbnNwZWN0LCBjb252ZW5pZW5jZSB2YXJpYWJsZX0KICBU aGUgdmFyaWFibGUgQGNvZGV7JF9zZGF0YX0gY29udGFpbnMgZXh0cmEgY29sbGVjdGVkIHN0YXRp YyB0cmFjZXBvaW50Ci1AQCAtMjA2OTIsOCArMjA3NzQsNiBAQCBjb250YWluaW5nIEBjb2Rle2Vu ZH0uICBGb3IgZXhhbXBsZToKK0BAIC0xMDIxOSw2ICsxMDMwMSwxNiBAQCBDb2xsZWN0IGFsbCBm dW5jdGlvbiBhcmd1bWVudHMuCisgQGl0ZW0gJGxvY2FscworIENvbGxlY3QgYWxsIGxvY2FsIHZh cmlhYmxlcy4KKyAKKytAaXRlbSAkX3Byb2JlX2FyZ2MKKytDb2xsZWN0cyB0aGUgbnVtYmVyIG9m IGFyZ3VtZW50cyBmcm9tIHRoZSBAY29kZXtTeXN0ZW1UYXB9IHByb2JlIGF0Cisrd2hpY2ggdGhl IHRyYWNlcG9pbnQgaXMgbG9jYXRlZC4KKytAeHJlZntTdGF0aWMgUHJvYmUgUG9pbnRzLCxTdGF0 aWMgUHJvYmUgUG9pbnRzfQorKworK0BpdGVtICRfcHJvYmVfYXJnQHZhcntOfQorK1doZXJlIEB2 YXJ7Tn0gdmFyaWVzIGZyb20gMCB0byA5LiAgQ29sbGVjdHMgdGhlIEB2YXJ7Tn10aCBhcmd1bWVu dAorK2Zyb20gdGhlIEBjb2Rle1N5c3RlbVRhcH0gcHJvYmUgYXQgd2hpY2ggdGhlIHRyYWNlcG9p bnQgaXMgbG9jYXRlZC4KKytAeHJlZntTdGF0aWMgUHJvYmUgUG9pbnRzLCxTdGF0aWMgUHJvYmUg UG9pbnRzfQorKworIEBpdGVtICRfc2RhdGEKKyBAdmluZGV4ICRfc2RhdGFAcnssIGNvbGxlY3R9 CisgQ29sbGVjdCBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lmaWMgZGF0YS4gIE9ubHkg YXZhaWxhYmxlIGZvcgorQEAgLTIwNzEwLDggKzIwODAyLDYgQEAgY29udGFpbmluZyBAY29kZXtl bmR9LiAgRm9yIGV4YW1wbGU6CiAgCiAgQHNtYWxsZXhhbXBsZQogIChAdmFsdWV7R0RCUH0pIHB5 dGhvbgpAQCAtMTYzOCw3ICsxMjEzLDcgQEAgaW5kZXggZTAyMzA1OC4uYmY1NGU5YSAxMDA2NDQK ICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0yMDcwNiw2ICsyMDc4NiwxNCBAQCBpbiBhIFB5 dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBjb2Rle21haW50IHNl dAorQEAgLTIwNzI0LDYgKzIwODE0LDE0IEBAIGluIGEgUHl0aG9uIHNjcmlwdC4gIFRoaXMgY2Fu IGJlIGNvbnRyb2xsZWQgdXNpbmcgQGNvZGV7bWFpbnQgc2V0CiAgcHl0aG9uIHByaW50LXN0YWNr fTogaWYgQGNvZGV7b259LCB0aGUgZGVmYXVsdCwgdGhlbiBQeXRob24gc3RhY2sKICBwcmludGlu ZyBpcyBlbmFibGVkOyBpZiBAY29kZXtvZmZ9LCB0aGVuIFB5dGhvbiBzdGFjayBwcmludGluZyBp cwogIGRpc2FibGVkLgpAQCAtMTY1Myw3ICsxMjI4LDcgQEAgaW5kZXggZTAyMzA1OC4uYmY1NGU5 YSAxMDA2NDQKICBAZW5kIHRhYmxlCiAgCiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBleGVjdXRl IGEgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSBAdmFsdWV7R0RCTn0KLUBAIC0yMDcyNyw2ICsyMDgx NSwxNCBAQCBhbmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgorQEAgLTIwNzQ1LDYgKzIwODQz LDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCiAgQGNpbmRleCBweXRob24gYXBp CiAgQGNpbmRleCBwcm9ncmFtbWluZyBpbiBweXRob24KICAKQEAgLTIyMzAsNyArMTgwNSw3IEBA IGluZGV4IDk2YTQ5MGUuLmIwZWJiMDYgMTAwNjQ0CiAgLyogQ29tcGlsZSBhIERXQVJGIGxvY2F0 aW9uIGV4cHJlc3Npb24gdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4KICAgICAKIGRpZmYgLS1naXQg YS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggMGNjNWNhMC4uYjdm ZWIwOSAxMDA2NDQKK2luZGV4IGNhNmM5OGIuLmQxNzY2MjQgMTAwNjQ0CiAtLS0gYS9nZGIvZHdh cmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCiBAQCAtMTIxMSw2ICsxMjExLDkgQEAg c3RhdGljIHZvaWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwK QEAgLTIyNjMsNyArMTgzOCw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0CiAgc3Rh dGljIHZvaWQgZHdhcmYyX3JlbGVhc2VfcXVldWUgKHZvaWQgKmR1bW15KTsKICAKICBzdGF0aWMg dm9pZCBxdWV1ZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwK LUBAIC03MzE1LDYgKzczMjQsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTczNDIsNiArNzM1MSwy OSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiAgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwog IH0KICAKQEAgLTIyOTMsNyArMTg2OCw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0 CiAgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJ RSBhbmQgcHV0IGl0IGluCiAgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlz IG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKICAgICBhcnJheXMuICAqLwotQEAgLTczMjgs NyArNzM2MCw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTczNTUsNyArNzM4Nyw3IEBAIHJlYWRfYXJyYXlfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5 cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlOwogICAgc3RydWN0IHR5 cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAt MjMwMiw3ICsxODc3LDcgQEAgaW5kZXggMGNjNWNhMC4uYjdmZWIwOSAxMDA2NDQKICAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwogICAgY2hhciAqbmFtZTsKICAKLUBAIC03MzgxLDE3ICs3NDEz LDE5IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTc0MDgsMTcgKzc0NDAsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0eXBlID0gZWxlbWVu dF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9j b2xfbWFqb3IpCkBAIC0yMzMzLDcgKzE5MDgsNyBAQCBpbmRleCAwY2M1Y2EwLi5iN2ZlYjA5IDEw MDY0NAogIAogICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVz IChsaWtlIHRoZXkgb2NjdXIgb24KICAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2Nj IGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBAIC03ODg0LDI5ICs3OTE4LDEx NCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorQEAgLTc5MTEsMjkgKzc5NDUsMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwogICAgc3Ry dWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsKICAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC0yNDYyLDcgKzIwMzcsNyBAQCBpbmRleCAwY2M1 Y2EwLi5iN2ZlYjA5IDEwMDY0NAogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJf dHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9IGNyZWF0ZV9zdHJp bmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBAIC04MTkxLDggKzgz MTAsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC04MjE4LDggKzgzMzcsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0 eXBlICpiYXNlX3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKICAgIHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHI7CkBAIC0yNDcyLDcgKzIwNDcsNyBAQCBpbmRleCAwY2M1Y2EwLi5iN2Zl YjA5IDEwMDY0NAogICAgY2hhciAqbmFtZTsKICAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKICAK LUBAIC04MjA1LDUzICs4MzIzLDEyNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04MjMyLDUzICs4MzUwLDEyNiBA QCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICAgIGlmIChyYW5nZV90eXBlKQogICAgICByZXR1cm4gcmFuZ2VfdHlwZTsKICAK QEAgLTI2MzQsNyArMjIwOSw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0CiAgICAg IH0KICAKICAgIC8qIER3YXJmLTIgc3BlY2lmaWNhdGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8g Y3JlYXRlIHN1YnJhbmdlIHR5cGVzCi1AQCAtODI5MiwyNCArODQ4Myw0MSBAQCByZWFkX3N1YnJh bmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC04MzE5LDI0ICs4NTEwLDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAKQEAgLTI2OTIsNyAr MjI2Nyw3IEBAIGluZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdh cmYyX25hbWUgKGRpZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtMTA4MzUsMTAgKzExMDQzLDEy IEBAIHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBz eW1ib2wgKnN5bSwKK0BAIC0xMDg4MSwxMCArMTEwODksMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlv biAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogICAgICAgKGku ZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkgbG9jYXRpb24gaXMKICAg ICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBldGMuKS4gIFRoZW4gYWdh aW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEknbSBhc3N1bWluZyB0aGF0 IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtMjcwNyw3ICsyMjgyLDcgQEAgaW5kZXgg MGNjNWNhMC4uYjdmZWIwOSAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEg RFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYgd2UgbmVlZAotQEAgLTEwODc2 LDYgKzExMDg2LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTEwOTIyLDYgKzExMTMy LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJc3ltID0gT0JTVEFD S19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBzeW1ib2wpOwogICAg ICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTI3MTYsNyArMjI5MSw3IEBAIGlu ZGV4IDBjYzVjYTAuLmI3ZmViMDkgMTAwNjQ0CiAgCiAgICAgICAgLyogQ2FjaGUgdGhpcyBzeW1i b2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KICAg ICAgICBTWU1CT0xfU0VUX0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7Ci1AQCAtMTE2NDgs NiArMTE4NjAsOSBAQCByZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMTY5NCw2ICsxMTkwNiw5IEBAIHJlYWRfdHlwZV9kaWVf MSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGJy ZWFrOwogICAgICB9CiAgCkBAIC0yNzI2LDcgKzIzMDEsNyBAQCBpbmRleCAwY2M1Y2EwLi5iN2Zl YjA5IDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtMTQ0NjgsNjEgKzE0 NjgzLDk5IEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCitA QCAtMTQ1NDgsNjEgKzE0NzYzLDk5IEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3 YXJmMl9jdSAqY3UsCiAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsK ICB9CiAgCkBAIC0yODY5LDcgKzI0NDQsNyBAQCBpbmRleCAwY2M1Y2EwLi5iN2ZlYjA5IDEwMDY0 NAogICAgICB9CiAgfQogIAotQEAgLTE0ODY4LDYgKzE1MTIxLDI1IEBAIG9mZnNldF9hbmRfdHlw ZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTE0 OTUxLDYgKzE1MjA0LDI1IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9s aHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBv ZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtMjg5Miw1NzMgKzI0NjcsNjQgQEAgaW5kZXggMGNj NWNhMC4uYjdmZWIwOSAxMDA2NDQKICsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVE ICh0eXBlKSk7CiArfQogKwotIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRv IFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAotICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZv ciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCi0gCi1AQCAtMTQ4OTMsNiArMTUxNjUsOCBAQCBz ZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpm aWxlOwotICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOwotIAotKyAgZmV0Y2hfZGllX3R5cGVfYXR0 cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRo YXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKLSAgICAgIGluaXRpYWxpemVkIChp ZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCi0gICAgICB3 ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFyZWEg aXMKLWRpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwotaW5kZXggZGFj YzZmMC4uZjc5Njg1MSAxMDA2NDQKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZy ZWFkLmMKLUBAIC0zOCw2ICszOCwxMyBAQAotICNpbmNsdWRlICJkZW1hbmdsZS5oIgotICNpbmNs dWRlICJwc3ltcHJpdi5oIgotICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKLSsjaW5jbHVkZSAiZ2Ri dHlwZXMuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiaW5mY2FsbC5oIgotKyNp bmNsdWRlICJnZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAi c3RhcC1wcm9iZS5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gCi0gZXh0ZXJuIHZvaWQg X2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7Ci0gCi1AQCAtNTYsOCArNjMsMzAgQEAgc3RydWN0 IGVsZmluZm8KLSAgICAgYXNlY3Rpb24gKm1kZWJ1Z3NlY3Q7CS8qIFNlY3Rpb24gcG9pbnRlciBm b3IgLm1kZWJ1ZyBzZWN0aW9uICovCi0gICB9OwotIAotKy8qIFBlci1vYmpmaWxlIGRhdGEgZm9y IFN5c3RlbXRhcCBwcm9iZSBpbmZvLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZp bGVfZGF0YSAqc3RhcF9wcm9iZV9rZXkgPSBOVUxMOwotKwotKy8qIFBlci1vYmpmaWxlIGRhdGEg YWJvdXQgU3lzdGVtdGFwIHByb2Jlcy4gICovCi0rCi0rc3RydWN0IHN0YXBfcHJvYmVfcGVyX29i amZpbGUKLSsgIHsKLSsgICAgLyogVGhlIG51bWJlciBvZiBwcm9iZXMgaW4gdGhpcyBvYmpmaWxl LiAgKi8KLSsgICAgaW50IHN0YXBfbnVtX3Byb2JlczsKLSsKLSsgICAgLyogVGhlIHByb2JlcyB0 aGVtc2VsdmVzLiAgKi8KLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKLSsgIH07Ci0r Ci0gc3RhdGljIHZvaWQgZnJlZV9lbGZpbmZvICh2b2lkICopOwotIAotKy8qIE1pbmltYWwgc3lt Ym9scyBsb2NhdGVkIGF0IHRoZSBHT1QgZW50cmllcyBmb3IgLnBsdCAtIHRoYXQgaXMgdGhlIHJl YWwKLSsgICBwb2ludGVyIHdoZXJlIHRoZSBnaXZlbiBlbnRyeSB3aWxsIGp1bXAgdG8uICBJdCBn ZXRzIHVwZGF0ZWQgYnkgdGhlIHJlYWwKLSsgICBmdW5jdGlvbiBhZGRyZXNzIGR1cmluZyBsYXp5 IGxkLnNvIHJlc29sdmluZyBpbiB0aGUgaW5mZXJpb3IuICBUaGVzZQotKyAgIG1pbmltYWwgc3lt Ym9scyBhcmUgaW5kZXhlZCBmb3IgPHRhYj4tY29tcGxldGlvbi4gICovCi0rCi0rI2RlZmluZSBT WU1CT0xfR09UX1BMVF9TVUZGSVggIkBnb3QucGx0IgotKwotIC8qIExvY2F0ZSB0aGUgc2VnbWVu dHMgaW4gQUJGRC4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0YSAq Ci1AQCAtMTg1LDcgKzIxNCw4IEBAIHJlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAq bmFtZSwgaW50IG5hbWVfbGVuLCBpbnQgY29weV9uYW1lLAotIHsKLSAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gCi0tICBpZiAobXNfdHlw ZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQpCi0rICBpZiAobXNfdHlw ZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQKLSsgICAgICB8fCBtc190 eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSAgICAgYWRkcmVzcyA9IGdkYmFyY2hfc21hc2hf dGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKLSAKLSAgIHJldHVybiBwcmltX3JlY29y ZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9uYW1lLCBhZGRyZXNz LAotQEAgLTM5NCw3ICs0MjQsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgaW50IHR5cGUsCi0gCSAgICB7Ci0gCSAgICAgIGlmIChzeW0tPmZsYWdzICYgKEJT Rl9HTE9CQUwgfCBCU0ZfV0VBSykpCi0gCQl7Ci0tCQkgIG1zX3R5cGUgPSBtc3RfdGV4dDsKLSsJ CSAgaWYgKHN5bS0+ZmxhZ3MgJiBCU0ZfR05VX0lORElSRUNUX0ZVTkNUSU9OKQotKwkJICAgIG1z X3R5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0rCQkgIGVsc2UKLSsJCSAgICBtc190eXBlID0g bXN0X3RleHQ7Ci0gCQl9Ci0gCSAgICAgIGVsc2UgaWYgKChzeW0tPm5hbWVbMF0gPT0gJy4nICYm IHN5bS0+bmFtZVsxXSA9PSAnTCcpCi0gCQkgICAgICAgfHwgKChzeW0tPmZsYWdzICYgQlNGX0xP Q0FMKQotQEAgLTU3OCw2ICs2MTEsNDY3IEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGludCB0eXBlLAotICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIH0KLSAK LSsvKiBCdWlsZCBtaW5pbWFsIHN5bWJvbHMgbmFtZWQgYGZ1bmN0aW9uQGdvdC5wbHQnIChzZWUg U1lNQk9MX0dPVF9QTFRfU1VGRklYKQotKyAgIGZvciBsYXRlciBsb29rIHVwcyBvZiB3aGljaCBm dW5jdGlvbiB0byBjYWxsIHdoZW4gdXNlciByZXF1ZXN0cwotKyAgIGEgU1RUX0dOVV9JRlVOQyBm dW5jdGlvbi4gIEFzIHRoZSBTVFRfR05VX0lGVU5DIHR5cGUgaXMgZm91bmQgYXQgdGhlIHRhcmdl dAotKyAgIGxpYnJhcnkgZGVmaW5pbmcgYGZ1bmN0aW9uJyB3ZSBjYW5ub3QgeWV0IGtub3cgd2hp bGUgcmVhZGluZyBPQkpGSUxFIHdoaWNoCi0rICAgb2YgdGhlIFNZTUJPTF9HT1RfUExUX1NVRkZJ WCBlbnRyaWVzIHdpbGwgYmUgbmVlZGVkIGFuZCBsYXRlcgotKyAgIERZTl9TWU1CT0xfVEFCTEUg aXMgbm8gbG9uZ2VyIGVhc2lseSBhdmFpbGFibGUgZm9yIE9CSkZJTEUuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rZWxmX3JlbF9wbHRfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzeW1i b2wgKipkeW5fc3ltYm9sX3RhYmxlKQotK3sKLSsgIGJmZCAqb2JmZCA9IG9iamZpbGUtPm9iZmQ7 Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5k X2RhdGEgKG9iZmQpOwotKyAgYXNlY3Rpb24gKnBsdCwgKnJlbHBsdCwgKmdvdF9wbHQ7Ci0rICB1 bnNpZ25lZCB1OwotKyAgaW50IHBsdF9lbGZfaWR4OwotKyAgYmZkX3NpemVfdHlwZSByZWxvY19j b3VudCwgcmVsb2M7Ci0rICBjaGFyICpzdHJpbmdfYnVmZmVyID0gTlVMTDsKLSsgIHNpemVfdCBz dHJpbmdfYnVmZmVyX3NpemUgPSAwOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7Ci0rICBzdHJ1Y3QgdHlw ZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwot KyAgc2l6ZV90IHB0cl9zaXplID0gVFlQRV9MRU5HVEggKHB0cl90eXBlKTsKLSsKLSsgIGlmIChv YmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rKQotKyAgICByZXR1cm47Ci0r Ci0rICBwbHQgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JmZCwgIi5wbHQiKTsKLSsgIGlm IChwbHQgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKyAgcGx0X2VsZl9pZHggPSBlbGZfc2VjdGlv bl9kYXRhIChwbHQpLT50aGlzX2lkeDsKLSsKLSsgIGdvdF9wbHQgPSBiZmRfZ2V0X3NlY3Rpb25f YnlfbmFtZSAob2JmZCwgIi5nb3QucGx0Iik7Ci0rICBpZiAoZ290X3BsdCA9PSBOVUxMKQotKyAg ICByZXR1cm47Ci0rCi0rICAvKiBUaGlzIHNlYXJjaCBhbGdvcml0aG0gaXMgZnJvbSBfYmZkX2Vs Zl9jYW5vbmljYWxpemVfZHluYW1pY19yZWxvYy4gICovCi0rICBmb3IgKHJlbHBsdCA9IG9iZmQt PnNlY3Rpb25zOyByZWxwbHQgIT0gTlVMTDsgcmVscGx0ID0gcmVscGx0LT5uZXh0KQotKyAgICBp ZiAoZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfaW5mbyA9PSBwbHRfZWxm X2lkeAotKwkmJiAoZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfdHlwZSA9 PSBTSFRfUkVMCi0rCSAgICB8fCBlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5z aF90eXBlID09IFNIVF9SRUxBKSkKLSsgICAgICBicmVhazsKLSsgIGlmIChyZWxwbHQgPT0gTlVM TCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKCEgYmVkLT5zLT5zbHVycF9yZWxvY190YWJsZSAo b2JmZCwgcmVscGx0LCBkeW5fc3ltYm9sX3RhYmxlLCBUUlVFKSkKLSsgICAgcmV0dXJuOwotKwot KyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmc3RyaW5n X2J1ZmZlcik7Ci0rCi0rICByZWxvY19jb3VudCA9IHJlbHBsdC0+c2l6ZSAvIGVsZl9zZWN0aW9u X2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX2VudHNpemU7Ci0rICBmb3IgKHJlbG9jID0gMDsg cmVsb2MgPCByZWxvY19jb3VudDsgcmVsb2MrKykKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIg Km5hbWUsICpuYW1lX2dvdF9wbHQ7Ci0rICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3lt OwotKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOwotKyAgICAgIGNvbnN0IHNpemVfdCBnb3Rfc3Vm Zml4X2xlbiA9IHN0cmxlbiAoU1lNQk9MX0dPVF9QTFRfU1VGRklYKTsKLSsgICAgICBzaXplX3Qg bmFtZV9sZW47Ci0rCi0rICAgICAgbmFtZSA9IGJmZF9hc3ltYm9sX25hbWUgKCpyZWxwbHQtPnJl bG9jYXRpb25bcmVsb2NdLnN5bV9wdHJfcHRyKTsKLSsgICAgICBuYW1lX2xlbiA9IHN0cmxlbiAo bmFtZSk7Ci0rICAgICAgYWRkcmVzcyA9IHJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10uYWRkcmVz czsKLSsKLSsgICAgICAvKiBEb2VzIHRoZSBwb2ludGVyIHJlc2lkZSBpbiB0aGUgLmdvdC5wbHQg c2VjdGlvbj8gICovCi0rICAgICAgaWYgKCEoYmZkX2dldF9zZWN0aW9uX3ZtYSAob2JmZCwgZ290 X3BsdCkgPD0gYWRkcmVzcwotKyAgICAgICAgICAgICYmIGFkZHJlc3MgPCBiZmRfZ2V0X3NlY3Rp b25fdm1hIChvYmZkLCBnb3RfcGx0KQotKwkJCSArIGJmZF9nZXRfc2VjdGlvbl9zaXplIChnb3Rf cGx0KSkpCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIC8qIFdlIGNhbm5vdCBjaGVjayBpZiBOQU1F IGlzIGEgcmVmZXJlbmNlIHRvIG1zdF90ZXh0X2dudV9pZnVuYyBhcyBpbgotKwkgT0JKRklMRSB0 aGUgc3ltYm9sIGlzIHVuZGVmaW5lZCBhbmQgdGhlIG9iamZpbGUgaGF2aW5nIE5BTUUgZGVmaW5l ZAotKwkgbWF5IG5vdCB5ZXQgaGF2ZSBiZWVuIGxvYWRlZC4gICovCi0rCi0rICAgICAgaWYgKHN0 cmluZ19idWZmZXJfc2l6ZSA8IG5hbWVfbGVuICsgZ290X3N1ZmZpeF9sZW4pCi0rCXsKLSsJICBz dHJpbmdfYnVmZmVyX3NpemUgPSAyICogKG5hbWVfbGVuICsgZ290X3N1ZmZpeF9sZW4pOwotKwkg IHN0cmluZ19idWZmZXIgPSB4cmVhbGxvYyAoc3RyaW5nX2J1ZmZlciwgc3RyaW5nX2J1ZmZlcl9z aXplKTsKLSsJfQotKyAgICAgIG1lbWNweSAoc3RyaW5nX2J1ZmZlciwgbmFtZSwgbmFtZV9sZW4p OwotKyAgICAgIG1lbWNweSAoJnN0cmluZ19idWZmZXJbbmFtZV9sZW5dLCBTWU1CT0xfR09UX1BM VF9TVUZGSVgsCi0rCSAgICAgIGdvdF9zdWZmaXhfbGVuKTsKLSsKLSsgICAgICBtc3ltID0gcmVj b3JkX21pbmltYWxfc3ltYm9sIChzdHJpbmdfYnVmZmVyLCBuYW1lX2xlbiArIGdvdF9zdWZmaXhf bGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGFkZHJlc3MsIG1z dF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCi0rCQkJCSAgICBvYmpmaWxlKTsKLSsgICAgICBpZiAo bXN5bSkKLSsJTVNZTUJPTF9TSVpFIChtc3ltKSA9IHB0cl9zaXplOwotKyAgICB9Ci0rCi0rICBk b19jbGVhbnVwcyAoYmFja190byk7Ci0rfQotKwotKy8qIFRoZSBkYXRhIHBvaW50ZXIgaXMgaHRh Yl90IGZvciBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZC4gICovCi0rCi0rc3RhdGlj IGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9k YXRhOwotKwotKy8qIE1hcCBmdW5jdGlvbiBuYW1lcyB0byBDT1JFX0FERFIgaW4gZWxmX29iamZp bGVfZ251X2lmdW5jX2NhY2hlX2RhdGEuICAqLwotKwotK3N0cnVjdCBlbGZfZ251X2lmdW5jX2Nh Y2hlCi0rewotKyAgLyogVGhpcyBpcyBhbHdheXMgYSBmdW5jdGlvbiBlbnRyeSBhZGRyZXNzLCBu b3QgYSBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8KLSsgIENPUkVfQUREUiBhZGRyOwotKwotKyAg Y2hhciBuYW1lWzFdOwotK307Ci0rCi0rLyogaHRhYl9oYXNoIGZvciBlbGZfb2JqZmlsZV9nbnVf aWZ1bmNfY2FjaGVfZGF0YS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK2VsZl9nbnVfaWZ1 bmNfY2FjaGVfaGFzaCAoY29uc3Qgdm9pZCAqYV92b2lkcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qg ZWxmX2dudV9pZnVuY19jYWNoZSAqYSA9IGFfdm9pZHA7Ci0rCi0rICByZXR1cm4gaHRhYl9oYXNo X3N0cmluZyAoYS0+bmFtZSk7Ci0rfQotKwotKy8qIGh0YWJfZXEgZm9yIGVsZl9vYmpmaWxlX2du dV9pZnVuY19jYWNoZV9kYXRhLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZWxmX2dudV9pZnVuY19j YWNoZV9lcSAoY29uc3Qgdm9pZCAqYV92b2lkcCwgY29uc3Qgdm9pZCAqYl92b2lkcCkKLSt7Ci0r ICBjb25zdCBzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZSAqYSA9IGFfdm9pZHA7Ci0rICBjb25z dCBzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZSAqYiA9IGJfdm9pZHA7Ci0rCi0rICByZXR1cm4g c3RyY21wIChhLT5uYW1lLCBiLT5uYW1lKSA9PSAwOwotK30KLSsKLSsvKiBSZWNvcmQgdGhlIHRh cmdldCBmdW5jdGlvbiBhZGRyZXNzIG9mIGEgU1RUX0dOVV9JRlVOQyBmdW5jdGlvbiBOQU1FIGlz IHRoZQotKyAgIGZ1bmN0aW9uIGVudHJ5IGFkZHJlc3MgQUREUi4gIFJldHVybiAxIGlmIE5BTUUg YW5kIEFERFIgYXJlIGNvbnNpZGVyZWQgYXMKLSsgICB2YWxpZCBhbmQgdGhlcmVmb3JlIHRoZXkg d2VyZSBzdWNjZXNzZnVsbHkgcmVjb3JkZWQsIHJldHVybiAwIG90aGVyd2lzZS4KLSsKLSsgICBG dW5jdGlvbiBkb2VzIG5vdCBleHBlY3QgYSBkdXBsaWNhdGUgZW50cnkuICBVc2UKLSsgICBlbGZf Z251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUgZmlyc3QgdG8gY2hlY2sgaWYgdGhlIGVudHJ5IGZv ciBOQU1FIGFscmVhZHkKLSsgICBleGlzdHMuICAqLwotKwotK3N0YXRpYyBpbnQKLStlbGZfZ251 X2lmdW5jX3JlY29yZF9jYWNoZSAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHIpCi0r ewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwotKyAgYXNlY3Rpb24gKnNlY3Q7Ci0r ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIGh0YWJfdCBodGFiOwotKyAgc3RydWN0IGVs Zl9nbnVfaWZ1bmNfY2FjaGUgZW50cnlfbG9jYWwsICplbnRyeV9wOwotKyAgdm9pZCAqKnNsb3Q7 Ci0rCi0rICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChhZGRyKTsKLSsgIGlm IChtc3ltID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKyAgaWYgKFNZTUJPTF9WQUxVRV9BRERS RVNTIChtc3ltKSAhPSBhZGRyKQotKyAgICByZXR1cm4gMDsKLSsgIC8qIG1pbmltYWwgc3ltYm9s cyBoYXZlIGFsd2F5cyBTWU1CT0xfT0JKX1NFQ1RJT04gbm9uLU5VTEwuICAqLwotKyAgc2VjdCA9 IFNZTUJPTF9PQkpfU0VDVElPTiAobXN5bSktPnRoZV9iZmRfc2VjdGlvbjsKLSsgIG9iamZpbGUg PSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT5vYmpmaWxlOwotKwotKyAgLyogSWYgLnBsdCBq dW1wcyBiYWNrIHRvIC5wbHQgdGhlIHN5bWJvbCBpcyBzdGlsbCBkZWZlcnJlZCBmb3IgbGF0ZXIK LSsgICAgIHJlc29sdXRpb24gYW5kIGl0IGhhcyBubyB1c2UgZm9yIEdEQi4gIEJlc2lkZXMgIi50 ZXh0IiB0aGlzIHN5bWJvbCBjYW4KLSsgICAgIHJlc2lkZSBhbHNvIGluICIub3BkIiBmb3IgcHBj NjQgZnVuY3Rpb24gZGVzY3JpcHRvci4gICovCi0rICBpZiAoc3RyY21wIChiZmRfZ2V0X3NlY3Rp b25fbmFtZSAob2JqZmlsZS0+b2JmZCwgc2VjdCksICIucGx0IikgPT0gMCkKLSsgICAgcmV0dXJu IDA7Ci0rCi0rICBodGFiID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBlbGZfb2JqZmlsZV9nbnVf aWZ1bmNfY2FjaGVfZGF0YSk7Ci0rICBpZiAoaHRhYiA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAg aHRhYiA9IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCBlbGZfZ251X2lmdW5jX2NhY2hlX2hhc2gs Ci0rCQkJCSAgIGVsZl9nbnVfaWZ1bmNfY2FjaGVfZXEsCi0rCQkJCSAgIE5VTEwsICZvYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJCSAgIGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwKLSsJ CQkJICAgZHVtbXlfb2JzdGFja19kZWFsbG9jYXRlKTsKLSsgICAgICBzZXRfb2JqZmlsZV9kYXRh IChvYmpmaWxlLCBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSwgaHRhYik7Ci0rICAg IH0KLSsKLSsgIGVudHJ5X2xvY2FsLmFkZHIgPSBhZGRyOwotKyAgb2JzdGFja19ncm93ICgmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCAmZW50cnlfbG9jYWwsCi0rCQlvZmZzZXRvZiAoc3RydWN0 IGVsZl9nbnVfaWZ1bmNfY2FjaGUsIG5hbWUpKTsKLSsgIG9ic3RhY2tfZ3Jvd19zdHIwICgmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBuYW1lKTsKLSsgIGVudHJ5X3AgPSBvYnN0YWNrX2Zpbmlz aCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rCi0rICBzbG90ID0gaHRhYl9maW5kX3Ns b3QgKGh0YWIsIGVudHJ5X3AsIElOU0VSVCk7Ci0rICBpZiAoKnNsb3QgIT0gTlVMTCkKLSsgICAg ewotKyAgICAgIHN0cnVjdCBlbGZfZ251X2lmdW5jX2NhY2hlICplbnRyeV9mb3VuZF9wID0gKnNs b3Q7Ci0rICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBvYmpmaWxlLT5nZGJhcmNoOwot KwotKyAgICAgIGlmIChlbnRyeV9mb3VuZF9wLT5hZGRyICE9IGFkZHIpCi0rCXsKLSsJICAvKiBU aGlzIGNhc2UgaW5kaWNhdGVzIGJ1Z2d5IGluZmVyaW9yIHByb2dyYW0sIHRoZSByZXNvbHZlZCBh ZGRyZXNzCi0rCSAgICAgc2hvdWxkIG5ldmVyIGNoYW5nZS4gICovCi0rCi0rCSAgICB3YXJuaW5n IChfKCJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gXCIlc1wiIGhhcyBjaGFuZ2VkIGl0cyByZXNvbHZl ZCAiCi0rCQkgICAgICAgImZ1bmN0aW9uX2FkZHJlc3MgZnJvbSAlcyB0byAlcyIpLAotKwkJICAg ICBuYW1lLCBwYWRkcmVzcyAoZ2RiYXJjaCwgZW50cnlfZm91bmRfcC0+YWRkciksCi0rCQkgICAg IHBhZGRyZXNzIChnZGJhcmNoLCBhZGRyKSk7Ci0rCX0KLSsKLSsgICAgICAvKiBOZXcgRU5UUllf UCBpcyBoZXJlIGxlYWtlZC9kdXBsaWNhdGUgaW4gdGhlIE9CSkZJTEUgb2JzdGFjay4gICovCi0r ICAgIH0KLSsgICpzbG90ID0gZW50cnlfcDsKLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBU cnkgdG8gZmluZCB0aGUgdGFyZ2V0IHJlc29sdmVkIGZ1bmN0aW9uIGVudHJ5IGFkZHJlc3Mgb2Yg YSBTVFRfR05VX0lGVU5DCi0rICAgZnVuY3Rpb24gTkFNRS4gIElmIHRoZSBhZGRyZXNzIGlzIGZv dW5kIGl0IGlzIHN0b3JlZCB0byAqQUREUl9QIChpZiBBRERSX1AKLSsgICBpcyBub3QgTlVMTCkg YW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIDEuICBJdCByZXR1cm5zIDAgb3RoZXJ3aXNlLgotKwot KyAgIE9ubHkgdGhlIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhIGhhc2ggdGFibGUg aXMgc2VhcmNoZWQgYnkgdGhpcwotKyAgIGZ1bmN0aW9uLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0r ZWxmX2dudV9pZnVuY19yZXNvbHZlX2J5X2NhY2hlIChjb25zdCBjaGFyICpuYW1lLCBDT1JFX0FE RFIgKmFkZHJfcCkKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsKLSsgIEFMTF9Q U1BBQ0VfT0JKRklMRVMgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwgb2JqZmlsZSkKLSsgICAgewot KyAgICAgIGh0YWJfdCBodGFiOwotKyAgICAgIHN0cnVjdCBlbGZfZ251X2lmdW5jX2NhY2hlICpl bnRyeV9wOwotKyAgICAgIHZvaWQgKipzbG90OwotKwotKyAgICAgIGh0YWIgPSBvYmpmaWxlX2Rh dGEgKG9iamZpbGUsIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhKTsKLSsgICAgICBp ZiAoaHRhYiA9PSBOVUxMKQotKwljb250aW51ZTsKLSsKLSsgICAgICBlbnRyeV9wID0gYWxsb2Nh IChzaXplb2YgKCplbnRyeV9wKSArIHN0cmxlbiAobmFtZSkpOwotKyAgICAgIHN0cmNweSAoZW50 cnlfcC0+bmFtZSwgbmFtZSk7Ci0rCi0rICAgICAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChodGFi LCBlbnRyeV9wLCBOT19JTlNFUlQpOwotKyAgICAgIGlmIChzbG90ID09IE5VTEwpCi0rCWNvbnRp bnVlOwotKyAgICAgIGVudHJ5X3AgPSAqc2xvdDsKLSsgICAgICBnZGJfYXNzZXJ0IChlbnRyeV9w ICE9IE5VTEwpOwotKwotKyAgICAgIGlmIChhZGRyX3ApCi0rCSphZGRyX3AgPSBlbnRyeV9wLT5h ZGRyOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0r LyogVHJ5IHRvIGZpbmQgdGhlIHRhcmdldCByZXNvbHZlZCBmdW5jdGlvbiBlbnRyeSBhZGRyZXNz IG9mIGEgU1RUX0dOVV9JRlVOQwotKyAgIGZ1bmN0aW9uIE5BTUUuICBJZiB0aGUgYWRkcmVzcyBp cyBmb3VuZCBpdCBpcyBzdG9yZWQgdG8gKkFERFJfUCAoaWYgQUREUl9QCi0rICAgaXMgbm90IE5V TEwpIGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyAxLiAgSXQgcmV0dXJucyAwIG90aGVyd2lzZS4K LSsKLSsgICBPbmx5IHRoZSBTWU1CT0xfR09UX1BMVF9TVUZGSVggbG9jYXRpb25zIGFyZSBzZWFy Y2hlZCBieSB0aGlzIGZ1bmN0aW9uLgotKyAgIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9ieV9jYWNo ZSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNhbGxlZCBmb3IgTkFNRSB0bwotKyAgIHByZXZlbnQg Y2FjaGUgZW50cmllcyBkdXBsaWNhdGVzLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZWxmX2dudV9p ZnVuY19yZXNvbHZlX2J5X2dvdCAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSICphZGRyX3Ap Ci0rewotKyAgY2hhciAqbmFtZV9nb3RfcGx0OwotKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7 Ci0rICBjb25zdCBzaXplX3QgZ290X3N1ZmZpeF9sZW4gPSBzdHJsZW4gKFNZTUJPTF9HT1RfUExU X1NVRkZJWCk7Ci0rCi0rICBuYW1lX2dvdF9wbHQgPSBhbGxvY2EgKHN0cmxlbiAobmFtZSkgKyBn b3Rfc3VmZml4X2xlbiArIDEpOwotKyAgc3ByaW50ZiAobmFtZV9nb3RfcGx0LCAiJXMiIFNZTUJP TF9HT1RfUExUX1NVRkZJWCwgbmFtZSk7Ci0rCi0rICBBTExfUFNQQUNFX09CSkZJTEVTIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCi0rICAgIHsKLSsgICAgICBiZmQgKm9iZmQgPSBv YmpmaWxlLT5vYmZkOwotKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+ Z2RiYXJjaDsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdk YmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgICAgIHNpemVfdCBwdHJfc2l6ZSA9IFRZUEVf TEVOR1RIIChwdHJfdHlwZSk7Ci0rICAgICAgQ09SRV9BRERSIHBvaW50ZXJfYWRkcmVzcywgYWRk cjsKLSsgICAgICBhc2VjdGlvbiAqcGx0OwotKyAgICAgIGdkYl9ieXRlICpidWYgPSBhbGxvY2Eg KHB0cl9zaXplKTsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07Ci0rCi0rICAg ICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAobmFtZV9nb3RfcGx0LCBOVUxMLCBvYmpm aWxlKTsKLSsgICAgICBpZiAobXN5bSA9PSBOVUxMKQotKwljb250aW51ZTsKLSsgICAgICBpZiAo TVNZTUJPTF9UWVBFIChtc3ltKSAhPSBtc3Rfc2xvdF9nb3RfcGx0KQotKwljb250aW51ZTsKLSsg ICAgICBwb2ludGVyX2FkZHJlc3MgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSk7Ci0rCi0r ICAgICAgcGx0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iZmQsICIucGx0Iik7Ci0rICAg ICAgaWYgKHBsdCA9PSBOVUxMKQotKwljb250aW51ZTsKLSsKLSsgICAgICBpZiAoTVNZTUJPTF9T SVpFIChtc3ltKSAhPSBwdHJfc2l6ZSkKLSsJY29udGludWU7Ci0rICAgICAgaWYgKHRhcmdldF9y ZWFkX21lbW9yeSAocG9pbnRlcl9hZGRyZXNzLCBidWYsIHB0cl9zaXplKSAhPSAwKQotKwljb250 aW51ZTsKLSsgICAgICBhZGRyID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChidWYsIHB0cl90eXBl KTsKLSsgICAgICBhZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwgYWRkciwKLSsJCQkJCQkgJmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsgICAgICBpZiAoYWRk cl9wKQotKwkqYWRkcl9wID0gYWRkcjsKLSsgICAgICBpZiAoZWxmX2dudV9pZnVuY19yZWNvcmRf Y2FjaGUgKG5hbWUsIGFkZHIpKQotKwlyZXR1cm4gMTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDA7 Ci0rfQotKwotKy8qIFRyeSB0byBmaW5kIHRoZSB0YXJnZXQgcmVzb2x2ZWQgZnVuY3Rpb24gZW50 cnkgYWRkcmVzcyBvZiBhIFNUVF9HTlVfSUZVTkMKLSsgICBmdW5jdGlvbiBOQU1FLiAgSWYgdGhl IGFkZHJlc3MgaXMgZm91bmQgaXQgaXMgc3RvcmVkIHRvICpBRERSX1AgKGlmIEFERFJfUAotKyAg IGlzIG5vdCBOVUxMKSBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMS4gIEl0IHJldHVybnMgMCBv dGhlcndpc2UuCi0rCi0rICAgQm90aCB0aGUgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2Rh dGEgaGFzaCB0YWJsZSBhbmQKLSsgICBTWU1CT0xfR09UX1BMVF9TVUZGSVggbG9jYXRpb25zIGFy ZSBzZWFyY2hlZCBieSB0aGlzIGZ1bmN0aW9uLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZWxmX2du dV9pZnVuY19yZXNvbHZlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiAqYWRkcl9w KQotK3sKLSsgIGlmIChlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUgKG5hbWUsIGFkZHJf cCkpCi0rICAgIHJldHVybiAxOwotKyAgCi0rICBpZiAoZWxmX2dudV9pZnVuY19yZXNvbHZlX2J5 X2dvdCAobmFtZSwgYWRkcl9wKSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9 Ci0rCi0rLyogQ2FsbCBTVFRfR05VX0lGVU5DIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgYWRkcmVz c3Mgb2YgYSByZWFsIGZ1bmN0aW9uIHRvCi0rICAgY2FsbC4gIFBDIGlzIHRoZVNUVF9HTlVfSUZV TkMgcmVzb2x2aW5nIGZ1bmN0aW9uIGVudHJ5LiAgVGhlIHZhbHVlIHJldHVybmVkCi0rICAgaXMg dGhlIGVudHJ5IHBvaW50IG9mIHRoZSByZXNvbHZlZCBTVFRfR05VX0lGVU5DIHRhcmdldCBmdW5j dGlvbiB0byBjYWxsLgotKyAgICovCi0rCi0rc3RhdGljIENPUkVfQUREUgotK2VsZl9nbnVfaWZ1 bmNfcmVzb2x2ZV9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQot K3sKLSsgIGNoYXIgKm5hbWVfYXRfcGM7Ci0rICBDT1JFX0FERFIgc3RhcnRfYXRfcGMsIGFkZHJl c3M7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKLSsgIHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sICphZGRy ZXNzX3ZhbDsKLSsKLSsgIC8qIFRyeSBmaXJzdCBhbnkgbm9uLWludHJ1c2l2ZSBtZXRob2RzIHdp dGhvdXQgYW4gaW5mZXJpb3IgY2FsbC4gICovCi0rCi0rICBpZiAoZmluZF9wY19wYXJ0aWFsX2Z1 bmN0aW9uIChwYywgJm5hbWVfYXRfcGMsICZzdGFydF9hdF9wYywgTlVMTCkKLSsgICAgICAmJiBz dGFydF9hdF9wYyA9PSBwYykKLSsgICAgewotKyAgICAgIGlmIChlbGZfZ251X2lmdW5jX3Jlc29s dmVfbmFtZSAobmFtZV9hdF9wYywgJmFkZHJlc3MpKQotKwlyZXR1cm4gYWRkcmVzczsKLSsgICAg fQotKyAgZWxzZQotKyAgICBuYW1lX2F0X3BjID0gTlVMTDsKLSsKLSsgIGZ1bmN0aW9uID0gYWxs b2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBlKTsKLSsgIHNldF92YWx1ZV9hZGRyZXNzIChmdW5j dGlvbiwgcGMpOwotKwotKyAgLyogU1RUX0dOVV9JRlVOQyByZXNvbHZlciBmdW5jdGlvbnMgaGF2 ZSBubyBwYXJhbWV0ZXJzLiAgRlVOQ1RJT04gaXMgdGhlCi0rICAgICBmdW5jdGlvbiBlbnRyeSBh ZGRyZXNzLiAgQUREUkVTUyBtYXkgYmUgYSBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8KLSsKLSsg IGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7 Ci0rICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVzc192YWwpOwotKyAgYWRkcmVz cyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHJlc3Ms Ci0rCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsgIGlmIChuYW1lX2F0X3BjKQotKyAgICBl bGZfZ251X2lmdW5jX3JlY29yZF9jYWNoZSAobmFtZV9hdF9wYywgYWRkcmVzcyk7Ci0rCi0rICBy ZXR1cm4gYWRkcmVzczsKLSt9Ci0rCi0rLyogSGFuZGxlIGluZmVyaW9yIGhpdCBvZiBicF9nbnVf aWZ1bmNfcmVzb2x2ZXIsIHNlZSBpdHMgZGVmaW5pdGlvbi4gICovCi0rCi0rc3RhdGljIHZvaWQK LStlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKQotK3sK LSsgIHN0cnVjdCBicmVha3BvaW50ICpiX3JldHVybjsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpw cmV2X2ZyYW1lID0gZ2V0X3ByZXZfZnJhbWUgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKLSsgIHN0 cnVjdCBmcmFtZV9pZCBwcmV2X2ZyYW1lX2lkID0gZ2V0X3N0YWNrX2ZyYW1lX2lkIChwcmV2X2Zy YW1lKTsKLSsgIENPUkVfQUREUiBwcmV2X3BjID0gZ2V0X2ZyYW1lX3BjIChwcmV2X2ZyYW1lKTsK LSsgIGludCB0aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKTsKLSsK LSsgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29sdmVyKTsKLSsKLSsg IGZvciAoYl9yZXR1cm4gPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7IGJfcmV0dXJuICE9IGI7Ci0r ICAgICAgIGJfcmV0dXJuID0gYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCkKLSsgICAgewot KyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm4pOwotKyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT5sb2MgIT0gTlVMTCAmJiBi X3JldHVybi0+bG9jLT5uZXh0ID09IE5VTEwpOwotKyAgICAgIGdkYl9hc3NlcnQgKGZyYW1lX2lk X3AgKGJfcmV0dXJuLT5mcmFtZV9pZCkpOwotKwotKyAgICAgIGlmIChiX3JldHVybi0+dGhyZWFk ID09IHRocmVhZF9pZAotKwkgICYmIGJfcmV0dXJuLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzID09 IHByZXZfcGMKLSsJICAmJiBmcmFtZV9pZF9lcSAoYl9yZXR1cm4tPmZyYW1lX2lkLCBwcmV2X2Zy YW1lX2lkKSkKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChiX3JldHVybiA9PSBiKQotKyAg ICB7Ci0rICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0rCi0rICAgICAgLyogTm8g bmVlZCB0byBjYWxsIGZpbmRfcGNfbGluZSBmb3Igc3ltYm9scyByZXNvbHZpbmcgYXMgdGhpcyBp cyBvbmx5Ci0rCSBhIGhlbHBlciBicmVha3BvaW50ZXIgbmV2ZXIgc2hvd24gdG8gdGhlIHVzZXIu ICAqLwotKwotKyAgICAgIGluaXRfc2FsICgmc2FsKTsKLSsgICAgICBzYWwucHNwYWNlID0gY3Vy cmVudF9pbmZlcmlvciAoKS0+cHNwYWNlOwotKyAgICAgIHNhbC5wYyA9IHByZXZfcGM7Ci0rICAg ICAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNhbC5wYyk7Ci0rICAgICAgc2FsLmV4 cGxpY2l0X3BjID0gMTsKLSsgICAgICBiX3JldHVybiA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2lu dCAoZ2V0X2ZyYW1lX2FyY2ggKHByZXZfZnJhbWUpLCBzYWwsCi0rCQkJCQkgICBwcmV2X2ZyYW1l X2lkLAotKwkJCQkJICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybik7Ci0rCi0rICAgICAg LyogQWRkIG5ldyBiX3JldHVybiB0byB0aGUgcmluZyBsaXN0IGItPnJlbGF0ZWRfYnJlYWtwb2lu dC4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCA9 PSBiX3JldHVybik7Ci0rICAgICAgYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGItPnJl bGF0ZWRfYnJlYWtwb2ludDsKLSsgICAgICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBiX3JldHVy bjsKLSsgICAgfQotK30KLSsKLSsvKiBIYW5kbGUgaW5mZXJpb3IgaGl0IG9mIGJwX2dudV9pZnVu Y19yZXNvbHZlcl9yZXR1cm4sIHNlZSBpdHMgZGVmaW5pdGlvbi4gICovCi0rCi0rc3RhdGljIHZv aWQKLStlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1Y3QgYnJlYWtwb2lu dCAqYikKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChn ZXRfY3VycmVudF9mcmFtZSAoKSk7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3R5cGUgPSBi dWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKLSsgIHN0cnVjdCB0eXBl ICp2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnVuY19mdW5jX3R5cGUpOwotKyAgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGluZmVyaW9yX3B0 aWQpOwotKyAgc3RydWN0IHZhbHVlICp2YWx1ZTsKLSsgIENPUkVfQUREUiByZXNvbHZlZF9hZGRy ZXNzLCByZXNvbHZlZF9wYzsKLSsgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOwotKyAgc3Ry dWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHM7Ci0rCi0rICBnZGJfYXNzZXJ0IChiLT50eXBlID09 IGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4pOwotKwotKyAgdmFsdWUgPSBhbGxvY2F0ZV92 YWx1ZSAodmFsdWVfdHlwZSk7Ci0rICBnZGJhcmNoX3JldHVybl92YWx1ZSAoZ2RiYXJjaCwgZnVu Y19mdW5jX3R5cGUsIHZhbHVlX3R5cGUsIHJlZ2NhY2hlLAotKwkJCXZhbHVlX2NvbnRlbnRzX3Jh dyAodmFsdWUpLCBOVUxMKTsKLSsgIHJlc29sdmVkX2FkZHJlc3MgPSB2YWx1ZV9hc19hZGRyZXNz ICh2YWx1ZSk7Ci0rICByZXNvbHZlZF9wYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkJICAgIHJlc29sdmVkX2FkZHJlc3MsCi0rCQkJCQkJICAg ICZjdXJyZW50X3RhcmdldCk7Ci0rCi0rICB3aGlsZSAoYi0+cmVsYXRlZF9icmVha3BvaW50ICE9 IGIpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYl9uZXh0ID0gYi0+cmVsYXRl ZF9icmVha3BvaW50OworIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZ UEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAorICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBj b252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCisgCitAQCAtMTQ5NzYsNiArMTUyNDgsOCBAQCBzZXRf ZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxl OworICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOworIAorKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMg KGRpZSwgdHlwZSwgY3UpOwogKwotKyAgICAgIHN3aXRjaCAoYi0+dHlwZSkKLSsJewotKwljYXNl IGJwX2dudV9pZnVuY19yZXNvbHZlcjoKLSsJICBicmVhazsKLSsJY2FzZSBicF9nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuOgotKwkgIGRlbGV0ZV9icmVha3BvaW50IChiKTsKLSsJICBicmVhazsK LSsJZGVmYXVsdDoKLSsJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotKwkJ CSAgXygiaGFuZGxlX2luZmVyaW9yX2V2ZW50OiBJbnZhbGlkICIKLSsJCQkgICAgImdudS1pbmRp cmVjdC1mdW5jdGlvbiBicmVha3BvaW50IHR5cGUgJWQiKSwKLSsJCQkgIChpbnQpIGItPnR5cGUp OwotKwl9Ci0rICAgICAgYiA9IGJfbmV4dDsKLSsgICAgfQotKyAgZ2RiX2Fzc2VydCAoYi0+dHlw ZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIpOworICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBz dXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKKyAgICAgIGluaXRpYWxp emVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCisg ICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmlj IGFyZWEgaXMKK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYworaW5k ZXggYjljZmExMy4uZmVkNjNmNSAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFkLmMKKysrKyBiL2dk Yi9lbGZyZWFkLmMKK0BAIC00Myw2ICs0MywxMiBAQAorICNpbmNsdWRlICJpbmZjYWxsLmgiCisg I2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJyZWdjYWNoZS5oIgorKyNpbmNsdWRl ICJzdGFwLXByb2JlLmgiCisrI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAidmFs dWUuaCIKKysjaW5jbHVkZSAiaW5mY2FsbC5oIgorKyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKysj aW5jbHVkZSAicmVnY2FjaGUuaCIKKyAKKyBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFk ICh2b2lkKTsKKyAKK0BAIC02MSw2ICs2NywyMSBAQCBzdHJ1Y3QgZWxmaW5mbworICAgICBhc2Vj dGlvbiAqbWRlYnVnc2VjdDsJLyogU2VjdGlvbiBwb2ludGVyIGZvciAubWRlYnVnIHNlY3Rpb24g Ki8KKyAgIH07CisgCisrLyogUGVyLW9iamZpbGUgZGF0YSBmb3IgU3lzdGVtVGFwIHByb2JlIGlu Zm8uICAqLwogKwotKyAgZ2RiX2Fzc2VydCAoY3VycmVudF9wcm9ncmFtX3NwYWNlID09IGItPnBz cGFjZSk7Ci0rICBlbGZfZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoYi0+YWRkcl9zdHJpbmcsIHJl c29sdmVkX3BjKTsKKytzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqc3RhcF9wcm9i ZV9rZXkgPSBOVUxMOwogKwotKyAgc2FsID0gZmluZF9wY19saW5lIChyZXNvbHZlZF9wYywgMCk7 Ci0rICBzYWxzLm5lbHRzID0gMTsKLSsgIHNhbHMuc2FscyA9ICZzYWw7CisrLyogUGVyLW9iamZp bGUgZGF0YSBhYm91dCBTeXN0ZW1UYXAgcHJvYmVzLiAgKi8KICsKLSsgIGItPnR5cGUgPSBicF9i cmVha3BvaW50OwotKyAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChiLCBzYWxzKTsKLSt9 Cisrc3RydWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUKKysgIHsKKysgICAgLyogVGhlIG51bWJl ciBvZiBwcm9iZXMgaW4gdGhpcyBvYmpmaWxlLiAgKi8KKysgICAgaW50IHN0YXBfbnVtX3Byb2Jl czsKICsKLSBzdHJ1Y3QgYnVpbGRfaWQKLSAgIHsKLSAgICAgc2l6ZV90IHNpemU7Ci1AQCAtODE5 LDYgKzEzMTMsOCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg aW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgp KSk7Ci0gCi0gICAgICAgZWxmX3N5bXRhYl9yZWFkIChvYmpmaWxlLCBTVF9EWU5BTUlDLCBkeW5z eW1jb3VudCwgZHluX3N5bWJvbF90YWJsZSwgMCk7CisrICAgIC8qIFRoZSBwcm9iZXMgdGhlbXNl bHZlcy4gICovCisrICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7CisrICB9OwogKwotKyAg ICAgIGVsZl9yZWxfcGx0X3JlYWQgKG9iamZpbGUsIGR5bl9zeW1ib2xfdGFibGUpOwotICAgICB9 Cisgc3RhdGljIHZvaWQgZnJlZV9lbGZpbmZvICh2b2lkICopOwogIAotICAgLyogQWRkIHN5bnRo ZXRpYyBzeW1ib2xzIC0gZm9yIGluc3RhbmNlLCBuYW1lcyBmb3IgYW55IFBMVCBlbnRyaWVzLiAg Ki8KLUBAIC0xMDcxLDcgKzE1NjcsMjM4IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QpCisgLyogTWlu aW1hbCBzeW1ib2xzIGxvY2F0ZWQgYXQgdGhlIEdPVCBlbnRyaWVzIGZvciAucGx0IC0gdGhhdCBp cyB0aGUgcmVhbAorQEAgLTE1NTEsNyArMTU3MiwyNjYgQEAgZWxmc3RhYl9vZmZzZXRfc2VjdGlv bnMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkK ICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogIAkgICAgICAgXygiZWxmL3N0 YWIgc2VjdGlvbiBpbmZvcm1hdGlvbiBtaXNzaW5nIGZvciAlcyIpLCBmaWxlbmFtZSk7CiAgfQog KwogKy8qIEhlbHBlciBmdW5jdGlvbiB0aGF0IHBhcnNlcyB0aGUgaW5mb3JtYXRpb24gY29udGFp bmVkIGluIGEKLSsgICBTeXN0ZW10YXAncyBwcm9iZS4gIEJhc2ljYWxseSwgdGhlIGluZm9ybWF0 aW9uIGNvbnNpc3RzIGluOgorKyAgIFN5c3RlbVRhcCdzIHByb2JlLiAgQmFzaWNhbGx5LCB0aGUg aW5mb3JtYXRpb24gY29uc2lzdHMgaW46CiArCiArICAgLSBQcm9iZSdzIFBDIGFkZHJlc3M7CiAr ICAgLSBMaW5rLXRpbWUgc2VjdGlvbiBhZGRyZXNzIG9mIGAuc3RhcHNkdC5iYXNlJyBzZWN0aW9u OwpAQCAtMzUyNyw4ICsyNTkzLDE0IEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4NTEgMTAwNjQ0CiAr ICAgIHJldC0+YXJncyA9IE5VTEw7CiArfQogKworKy8qIFRoZSBuYW1lIG9mIHRoZSBTeXN0ZW1U YXAgc2VjdGlvbiB3aGVyZSB3ZSB3aWxsIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQKKysgICB0aGUg cHJvYmVzLiAgKi8KKysKICsjZGVmaW5lIFNUQVBfQkFTRV9TRUNUSU9OX05BTUUgIi5zdGFwc2R0 LmJhc2UiCiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHRyaWVzIHRvIGZpbmQgdGhlIGJh c2UgYWRkcmVzcyBvZiB0aGUgU3lzdGVtVGFwCisrICAgYmFzZSBzZWN0aW9uIG5hbWVkIFNUQVBf QkFTRV9TRUNUSU9OX05BTUUuICAqLworKwogK3N0YXRpYyB2b2lkCiArZ2V0X2Jhc2VfYWRkcmVz c18xIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0LCB2b2lkICpvYmopCiArewpAQCAtMzU0MCw2 ICsyNjEyLDEwIEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4NTEgMTAwNjQ0CiArICAgICpiYXNlID0g c2VjdC0+dm1hOwogK30KICsKKysvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggaXRlcmF0ZXMgb3Zl ciBldmVyeSBzZWN0aW9uIGluIHRoZSBCRkQgZmlsZSwKKysgICB0cnlpbmcgdG8gZmluZCB0aGUg YmFzZSBhZGRyZXNzIG9mIHRoZSBTeXN0ZW1UYXAgYmFzZSBzZWN0aW9uLgorKyAgIFJldHVybnMg dGhlIHNlY3Rpb24gYWRkcmVzcyBpZiBmb3VuZCwgb3IgLTEgb3RoZXJ3aXNlLiAgKi8KKysKICtz dGF0aWMgYmZkX3ZtYQogK2dldF9iYXNlX2FkZHJlc3MgKGJmZCAqb2JmZCkKICt7CkBAIC0zNTUw LDYgKzI2MjYsOCBAQCBpbmRleCBkYWNjNmYwLi5mNzk2ODUxIDEwMDY0NAogKyAgcmV0dXJuIGJh c2U7CiArfQogKworKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzeW1fZ2V0X3Byb2JlcycsIGFzIGRv Y3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8KKysKICtzdGF0aWMgY29uc3Qgc3RydWN0IHN0YXBf cHJvYmUgKgogK2VsZl9nZXRfcHJvYmVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50ICpu dW1fcHJvYmVzKQogK3sKQEAgLTM2MTIsNiArMjY5MCw5IEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4 NTEgMTAwNjQ0CiArICByZXR1cm4gcmV0OwogK30KICsKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBg c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCcsIGFzIGRvY3VtZW50ZWQgaW4KKysgICBzeW1m aWxlLmguICAqLworKwogK3N0YXRpYyBpbnQKICtlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICsJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmUpCkBAIC0zNjI1LDYgKzI3MDYsOSBAQCBpbmRleCBkYWNjNmYwLi5mNzk2ODUx IDEwMDY0NAogKyAgcmV0dXJuIHN0YXBfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7 CiArfQogKworKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1l bnQnLCBhcyBkb2N1bWVudGVkIGluCisrICAgc3ltZmlsZS5oLiAgKi8KKysKICtzdGF0aWMgc3Ry dWN0IHZhbHVlICoKICtlbGZfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogKwkJCSAgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLApAQCAt MzYzNCw2ICsyNzE4LDggQEAgaW5kZXggZGFjYzZmMC4uZjc5Njg1MSAxMDA2NDQKICsgIHJldHVy biBzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLCBwcm9iZSwgZnJhbWUsIG4p OwogK30KICsKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX2NvbXBpbGVfdG9fYXgnLCBhcyBk b2N1bWVudGVkIGluIHN5bWZpbGUuaC4gICovCisrCiArc3RhdGljIHZvaWQKICtlbGZfY29tcGls ZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkgICBjb25zdCBzdHJ1Y3Qgc3Rh cF9wcm9iZSAqcHJvYmUsCkBAIC0zNjQ0LDYgKzI3MzAsOCBAQCBpbmRleCBkYWNjNmYwLi5mNzk2 ODUxIDEwMDY0NAogKyAgc3RhcF9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBwcm9iZSwgZXhwciwg dmFsdWUsIG4pOwogK30KICsKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX3JlbG9jYXRlX3By b2JlJywgYXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLworKwogK3N0YXRpYyB2b2lkCiAr ZWxmX3N5bWZpbGVfcmVsb2NhdGVfcHJvYmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJ CSAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKQEAgLTM2NjYsNiArMjc1 NCw5IEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4NTEgMTAwNjQ0CiArICAgIH0KICt9CiArCisrLyog SGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gZnJlZSB0aGUgc3BhY2UgYWxsb2NhdGVkIGZvciBzdG9y aW5nIFN5c3RlbVRhcAorKyAgIHByb2JlIGluZm9ybWF0aW9uLiAgKi8KKysKICtzdGF0aWMgdm9p ZAogK3N0YXBfcHJvYmVfa2V5X2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpk KQogK3sKQEAgLTM2NzksNiArMjc3MCw5IEBAIGluZGV4IGRhY2M2ZjAuLmY3OTY4NTEgMTAwNjQ0 CiArfQogKwogIAwKKysKKysvKiBJbXBsZW1lbnRhdGlvbiBgc3ltX3Byb2JlX2ZucycsIGFzIGRv Y3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8KKysKICtzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9w cm9iZV9mbnMgZWxmX3Byb2JlX2ZucyA9CiArewogKyAgZWxmX2dldF9wcm9iZXMsCQkvKiBzeW1f Z2V0X3Byb2JlcyAqLwpAQCAtMzY5MSw3ICsyNzg1LDcgQEAgaW5kZXggZGFjYzZmMC4uZjc5Njg1 MSAxMDA2NDQKICAvKiBSZWdpc3RlciB0aGF0IHdlIGFyZSBhYmxlIHRvIGhhbmRsZSBFTEYgb2Jq ZWN0IGZpbGUgZm9ybWF0cy4gICovCiAgCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVs Zl9zeW1fZm5zID0KLUBAIC0xMDg2LDYgKzE4MTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5 bV9mbnMgZWxmX3N5bV9mbnMgPQorQEAgLTE1NjYsNiArMTg0Niw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8q IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBk ZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICov CkBAIC0zNjk5LDcgKzI3OTMsNyBAQCBpbmRleCBkYWNjNmYwLi5mNzk2ODUxIDEwMDY0NAogICAg JnBzeW1fZnVuY3Rpb25zCiAgfTsKICAKLUBAIC0xMTA0LDYgKzE4MzIsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfbGF6eV9wc3ltcyA9CitAQCAtMTU4NCw2ICsx ODY1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2xhenlfcHN5 bXMgPQogICAgZWxmX3N5bWZpbGVfc2VnbWVudHMsCQkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlv biBmcm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRl LAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtMzcwNyw3ICsyODAxLDcgQEAg aW5kZXggZGFjYzZmMC4uZjc5Njg1MSAxMDA2NDQKICAgICZwc3ltX2Z1bmN0aW9ucwogIH07CiAg Ci1AQCAtMTEyMSwxMSArMTg1MCwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxm X3N5bV9mbnNfZ2RiX2luZGV4ID0KK0BAIC0xNjAxLDYgKzE4ODMsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfZ2RiX2luZGV4ID0KICAgIGVsZl9zeW1maWxlX3Nl Z21lbnRzLAkJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAg TlVMTCwKICAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBz ZWN0aW9uLiAgKi8KQEAgLTM3MTUsMjggKzI4MDksMTcgQEAgaW5kZXggZGFjYzZmMC4uZjc5Njg1 MSAxMDA2NDQKICAgICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucwogIH07CiAgCi0rLyogU1RU X0dOVV9JRlVOQyByZXNvbHZlciB2ZWN0b3IgdG8gYmUgaW5zdGFsbGVkIHRvIGdudV9pZnVuY19m bnNfcC4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbnVf aWZ1bmNfZm5zID0KLSt7Ci0rICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYWRkciwKLSsgIGVsZl9n bnVfaWZ1bmNfcmVzb2x2ZV9uYW1lLAotKyAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9zdG9wLAot KyAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcAotK307Ci0rCitAQCAtMTYxNyw2 ICsxOTAwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbnVfaWZ1 bmNfZm5zID0KICB2b2lkCiAgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKICB7CiArICBzdGFw X3Byb2JlX2tleQogKyAgICA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YV93aXRoX2NsZWFudXAgKE5V TEwsIHN0YXBfcHJvYmVfa2V5X2ZyZWUpOwogICAgYWRkX3N5bXRhYl9mbnMgKCZlbGZfc3ltX2Zu cyk7Ci0rCi0rICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29i amZpbGVfZGF0YSAoKTsKLSsgIGdudV9pZnVuY19mbnNfcCA9ICZlbGZfZ251X2lmdW5jX2ZuczsK LSB9CisgCisgICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29i amZpbGVfZGF0YSAoKTsKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5k ZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKK2luZGV4IGJiYzdiOGEuLjdjMGE4ZjkgMTAwNjQ0 CiAtLS0gYS9nZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDQsNiArNDQsNyBAQApA QCAtMzk4OSwxNiArMzA3Miw3IEBAIGluZGV4IDA5YjQxYTAuLjdjMGE4ZjkgMTAwNjQ0CiAgCiAg ICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29kZTsKLUBAIC0xODMy LDYgKzIwMjQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBl Y3RfdHlwZSwKLSAJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5n ZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0gCQkJCSBub3RfbHZhbCk7Ci0gCSAgICB9Ci0rCSAgZWxz ZSBpZiAoVFlQRV9HTlVfSUZVTkMgKGZ0eXBlKSkKLSsJICAgIHJldHVybiBhbGxvY2F0ZV92YWx1 ZSAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKSk7Ci0gCSAgZWxz ZSBpZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKQotIAkgICAgcmV0dXJuIGFsbG9jYXRlX3Zh bHVlIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpOwotIAkgIGVsc2UKLUBAIC0xODYwLDYgKzIw NTQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKK0BAIC0xODYyLDYgKzIwNTQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5 cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KICAgICAgICBhcmcxID0gZXZhbHVhdGVf c3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAtNDAwNyw3ICszMDgxLDcg QEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKICAgICAgICB0eXBlID0gY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwogICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUp OwogIAotQEAgLTE4ODAsMjMgKzIwNzYsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChz dHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTg4MiwyMyArMjA3NiwxMyBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAgICAgY29k ZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAgCX0gCkBAIC00MDMzLDcgKzMxMDcsNyBA QCBpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAogIAogIAljYXNlIFRZUEVfQ09ERV9QVFI6 CiAgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1AQCAtMjMzNSw0OSArMjUyMSw2IEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzMzcsNDkg KzI1MjEsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7CiAgCkBAIC00MDgzLDcgKzMxNTcsNyBA QCBpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAogICAgICBjYXNlIEJJTk9QX0xPR0lDQUxf QU5EOgogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3Ms IG5vc2lkZSk7CiAgICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi1AQCAtMjYwOSwxNSAr Mjc1MiwyMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKK0BAIC0yNjExLDE1ICsyNzUyLDIzIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAgIGlmIChleHBlY3RfdHlwZSAmJiBUWVBF X0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQogIAlleHBlY3RfdHlwZSA9IFRZ UEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7CiAgICAgICAgYXJn MSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAt NDEwOSw3ICszMTgzLDcgQEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKICAgICAgICBl bHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCiAgCXsKICAJICB0eXBl ID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotQEAgLTI2MjYsMTIgKzI3Nzcs MTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs CitAQCAtMjYyOCwxMiArMjc3NywxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAvKiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4g YXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAgICkKQEAgLTQxMzMsNyArMzIwNyw3IEBAIGluZGV4 IDA5YjQxYTAuLjdjMGE4ZjkgMTAwNjQ0CiAgCSAgZWxzZQogIAkgICAgZXJyb3IgKF8oIkF0dGVt cHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIpKTsKICAJfQotQEAg LTI2NDEsOSArMjc5OCwxNCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKK0BAIC0yNjQzLDkgKzI3OTgsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSBkby4gICJsb25nIGxvbmciIHZh cmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAogIAkgQlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291 bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwogICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9JTlQpCkBAIC00MTUxLDcgKzMyMjUsNyBAQCBpbmRleCAwOWI0MWEwLi43 YzBhOGY5IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1BfQUREUjoKICAgICAgICAvKiBDKys6IGNo ZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCi1AQCAtMjk4OSw3ICsz MTUxLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9u ICpleHAsCitAQCAtMjk5MSw3ICszMTUxLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNp b24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwog ICAgaW50IHBjOwpAQCAtNDE2MCw3ICszMjM0LDcgQEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAx MDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAot QEAgLTMwMDAsMTMgKzMxNjIsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0 cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMzAwMiwxMyArMzE2MiwxOCBAQCBldmFsdWF0ZV9z dWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewogICAg ICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1i b2w7CkBAIC00MTgwLDcgKzMyNTQsNyBAQCBpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAog IAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMzA1OCw5ICszMjI1LDEzIEBA IGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg KnBvcykKK0BAIC0zMDYwLDkgKzMyMjUsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2Yg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQogIAogICAgICBjYXNlIE9QX1ZBUl9W QUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTQxOTcsNyArMzI3MSw3IEBAIGluZGV4IDA5 YjQxYTAuLjdjMGE4ZjkgMTAwNjQ0CiAgCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdmFsID0gZXZh bHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNU Uyk7Ci1AQCAtMzA5MSwxOCArMzI2MiwyNSBAQCBwYXJzZV9hbmRfZXZhbF90eXBlIChjaGFyICpw LCBpbnQgbGVuZ3RoKQorQEAgLTMwOTMsMTggKzMyNjIsMjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlw ZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBpbnQKICBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1 Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBAIC00NjQwLDcgKzM3MTQsNyBAQCBpbmRleCBmZmI3 ZjUzLi5hMmU3ZTk0IDEwMDY0NAogIAogIGIgaW50ZXJuYWxfZXJyb3IKIGRpZmYgLS1naXQgYS9n ZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1pbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEw MDY0NAoraW5kZXggM2I0NTkzMS4uZWRhMjUwNiAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0eXBlcy5j CiArKysgYi9nZGIvZ2RidHlwZXMuYwogQEAgLTM5LDYgKzM5LDkgQEAKQEAgLTQ5NzMsMTYgKzQw NDcsNyBAQCBpbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEwMDY0NAogICAgICB9CiAgCiAgICB0eXBl ID0gbWFrZV9xdWFsaWZpZWRfdHlwZSAodHlwZSwgaW5zdGFuY2VfZmxhZ3MsIE5VTEwpOwotQEAg LTE5MDIsNiArMjA0Miw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxl bmd0aCwgaW50IGZsYWdzLAotICAgICBUWVBFX1NUVUJfU1VQUE9SVEVEICh0eXBlKSA9IDE7Ci0g ICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UpCi0gICAgIFRZUEVfRklYRURf SU5TVEFOQ0UgKHR5cGUpID0gMTsKLSsgIGlmIChmbGFncyAmIFRZUEVfRkxBR19HTlVfSUZVTkMp Ci0rICAgIFRZUEVfR05VX0lGVU5DICh0eXBlKSA9IDE7Ci0gCi0gICBpZiAobmFtZSkKLSAgICAg VFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwKLUBA IC0zMjY0LDMzICszNDA2LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMs IGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTMyNjYsMzMgKzM0MDYsNDIgQEAgdHlwZV9wYWly X2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCiAgfQogIAog IC8qIEFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlIHVzZWQgYnkgY29weV90eXBlX3JlY3Vyc2l2ZSB0 byB3YWxrCkBAIC01MDQwLDcgKzQxMDUsNyBAQCBpbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEwMDY0 NAogICAgICByZXR1cm4gdHlwZTsKICAKICAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3QgYmUgcG9p bnRpbmcgdG8gYW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOwotQEAgLTMzMDUsOSArMzQ1Niwx MCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0z MzA3LDkgKzM0NTYsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlw ZSkpOwogIAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxl IGltbWVkaWF0ZWx5LCBpbiBjYXNlCkBAIC01MDU0LDcgKzQxMTksNyBAQCBpbmRleCA5MWZhZmEy Li5lZGEyNTA2IDEwMDY0NAogICAgc3RvcmVkLT5vbGQgPSB0eXBlOwogICAgc3RvcmVkLT5uZXcg PSBuZXdfdHlwZTsKICAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMzMTgsNiArMzQ3MCwyMSBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0zMzIwLDYg KzM0NzAsMjEgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgICBUWVBFX09CSkZJTEVfT1dORUQgKG5ld190eXBlKSA9IDA7CiAgICBUWVBFX09XTkVSIChu ZXdfdHlwZSkuZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKHR5cGUpOwogIApAQCAtNTA3Niw3ICs0 MTQxLDcgQEAgaW5kZXggOTFmYWZhMi4uZWRhMjUwNiAxMDA2NDQKICAgIGlmIChUWVBFX05BTUUg KHR5cGUpKQogICAgICBUWVBFX05BTUUgKG5ld190eXBlKSA9IHhzdHJkdXAgKFRZUEVfTkFNRSAo dHlwZSkpOwogICAgaWYgKFRZUEVfVEFHX05BTUUgKHR5cGUpKQotQEAgLTMzMjYsMTIgKzM0OTMs NDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAt MzMyOCwxMiArMzQ5Myw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKICAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9IFRZUEVfSU5TVEFO Q0VfRkxBR1MgKHR5cGUpOwogICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9IFRZUEVfTEVOR1RI ICh0eXBlKTsKICAKQEAgLTUxMjUsNyArNDE5MCw3IEBAIGluZGV4IDkxZmFmYTIuLmVkYTI1MDYg MTAwNjQ0CiAgICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxMT0MgKG5maWVsZHMs IHN0cnVjdCBmaWVsZCk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKICAJ ewotQEAgLTMzNDAsOCArMzU0Myw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorQEAgLTMzNDIsOCArMzU0Myw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5 cGUsIGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVM RF9UWVBFICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBA IC01MTM2LDcgKzQyMDEsNyBAQCBpbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEwMDY0NAogIAkgIGlm IChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdf dHlwZSwgaSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7 Ci1AQCAtMzM2OCwyNCArMzU3MSwxODQgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCitAQCAtMzM3MCwyNCArMzU3MSwxODQgQEAgY29weV90eXBlX3JlY3Vy c2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCX0KICAgICAgfQogIApAQCAtNTMyOCw3 ICs0MzkzLDcgQEAgaW5kZXggOTFmYWZhMi4uZWRhMjUwNiAxMDA2NDQKICAgIC8qIE1heWJlIGNv cHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KICAKICAgICAgIE5PVEUgZHJvdy8yMDA1LTEyLTA5 OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMgbGlrZQotQEAgLTM0MDIsNiAr Mzc2NSwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK K0BAIC0zNDA0LDYgKzM3NjUsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQogIApAQCAtNTM0Niw3ICs0NDEx LDcgQEAgaW5kZXggOTFmYWZhMi4uZWRhMjUwNiAxMDA2NDQKICAvKiBNYWtlIGEgY29weSBvZiB0 aGUgZ2l2ZW4gVFlQRSwgZXhjZXB0IHRoYXQgdGhlIHBvaW50ZXIgJiByZWZlcmVuY2UKICAgICB0 eXBlcyBhcmUgbm90IHByZXNlcnZlZC4KICAgICAKLUBAIC0zNDI0LDYgKzM3OTgsMjAxIEBAIGNv cHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtMzQyNiw2ICszNzk4LDIwMSBA QCBjb3B5X3R5cGUgKGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQogICAgcmV0dXJuIG5ld190eXBl OwogIH0KICAKQEAgLTU1NDgsMzUgKzQ2MTMsNyBAQCBpbmRleCA5MWZhZmEyLi5lZGEyNTA2IDEw MDY0NAogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhcmNoaXRlY3R1cmUt c3BlY2lmaWMgdHlwZXMuICAqLwogIAotQEAgLTM3NzIsNiArNDM0MSw4IEBAIGdkYnR5cGVzX3Bv c3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgID0gbG9va3VwX3BvaW50ZXJf dHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwotICAgYnVpbHRpbl90eXBlLT5idWls dGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9u X3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7Ci0rICBidWlsdGluX3R5cGUtPmJ1 aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlw ZS0+YnVpbHRpbl9mdW5jX3B0cik7Ci0gCi0gICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIEdE QiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCi0gICBidWlsdGluX3R5cGUtPmludGVybmFsX2ZuCi1A QCAtMzg4NSw2ICs0NDU2LDE4IEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCi0gCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOwotICAg VFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sKQotICAg ICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7Ci0rICBvYmpmaWxlX3R5cGUtPm5vZGVidWdf dGV4dF9nbnVfaWZ1bmNfc3ltYm9sCi0rICAgID0gaW5pdF90eXBlIChUWVBFX0NPREVfRlVOQywg MSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKLSsJCSAiPHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9u IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsCi0rCQkgb2JqZmlsZSk7Ci0rICBUWVBFX1RBUkdF VF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKQotKyAg ICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSsgIG9iamZpbGVfdHlwZS0+ bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbAotKyAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX1BUUiwg Z2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJjaCkgLyA4LCAwLAotKwkJICI8dGV4dCBmcm9tIGp1bXAg c2xvdCBpbiAuZ290LnBsdCwgbm8gZGVidWcgaW5mbz4iLAotKwkJIG9iamZpbGUpOwotKyAgVFlQ RV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sKQotKyAg ICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSAgIG9iamZpbGVfdHlwZS0+ bm9kZWJ1Z19kYXRhX3N5bWJvbAotICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKLSAJ CSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUBAIC0zOTM5 LDYgKzQ1MjIsMTMgQEAgdm9pZAorQEAgLTM5NTUsNiArNDUyMiwxMyBAQCB2b2lkCiAgX2luaXRp YWxpemVfZ2RidHlwZXMgKHZvaWQpCiAgewogICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0 YV9yZWdpc3Rlcl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7CkBAIC01NTkxLDE4ICs0 NjI4LDEwIEBAIGluZGV4IDkxZmFmYTIuLmVkYTI1MDYgMTAwNjQ0CiAgCiAgICBhZGRfc2V0c2hv d196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsCiBk aWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggNWY4OWZl Yy4uNGI0NzIwYSAxMDA2NDQKK2luZGV4IDM5Y2ExYjQuLjRiNDcyMGEgMTAwNjQ0CiAtLS0gYS9n ZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0xNzAsNiArMTcwLDcgQEAg ZW51bSB0eXBlX2ZsYWdfdmFsdWUKLSAgIFRZUEVfRkxBR19WRUNUT1IgPSAoMSA8PCAxNSksCi0g ICBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNiksCi0gICBUWVBFX0ZMQUdfU1RV Ql9TVVBQT1JURUQgPSAoMSA8PCAxNyksCi0rICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwg MTgpLAotIAotICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLwotICAgVFlQRV9GTEFH X01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAotQEAgLTIxNCw2ICsyMTUsMTEgQEAgZW51bSB0eXBl X2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0yMTUsNiArMjE1LDExIEBAIGVudW0gdHlwZV9pbnN0 YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX1RBUkdFVF9TVFVCKHQpCShUWVBFX01B SU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCiAgCkBAIC01NjE0LDIwICs0NjQzLDcgQEAg aW5kZXggNWY4OWZlYy4uNGI0NzIwYSAxMDA2NDQKICAvKiBTdGF0aWMgdHlwZS4gIElmIHRoaXMg aXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhZCAKICAgICBhIHN0YXRpYyBtb2RpZmll ci4KICAgICBOb3RlOiBUaGlzIG1heSBiZSB1bm5lY2Vzc2FyeSwgc2luY2Ugc3RhdGljIGRhdGEg bWVtYmVycwotQEAgLTI3MSw2ICsyNzcsMTIgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFs dWUKLSAKLSAjZGVmaW5lIFRZUEVfTk9UVEVYVCh0KQkoVFlQRV9JTlNUQU5DRV9GTEFHUyAodCkg JiBUWVBFX0lOU1RBTkNFX0ZMQUdfTk9UVEVYVCkKLSAKLSsvKiBVc2VkIG9ubHkgZm9yIFRZUEVf Q09ERV9GVU5DIHdoZXJlIGl0IHNwZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlvbgotKyAgIGFkZHJl c3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9UQVJHRVRfVFlQRSBk ZXRlcm1pbmVzIHRoZQotKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5cGUgdG8gYmUgcHJl c2VudGVkIHRvIHVzZXIuICAqLwotKwotKyNkZWZpbmUgVFlQRV9HTlVfSUZVTkModCkJKFRZUEVf TUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCi0rCi0gLyogVHlwZSBvd25lci4gIElmIFRZ UEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlwZSBpcyBvd25lZCBieQotICAgIHRoZSBv YmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUuICBPdGhlcndlaXNlLCB0aGUgdHlwZSBp cwotICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsgVFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4g dGhpcyBjYXNlLiAgKi8KLUBAIC0yODUsNiArMjk3LDUwIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9m bGFnX3ZhbHVlCitAQCAtMjkyLDYgKzI5Nyw1MCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192 YWx1ZQogIAogICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAoVFlQRV9NQUlOX1RZUEUg KHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQogIApAQCAtNTY3OCwxMyArNDY5NCw3IEBAIGluZGV4 IDVmODlmZWMuLjRiNDcyMGEgMTAwNjQ0CiAgLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMg c2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCiAgICAgY29uc3QgbW9kaWZpZXIuICAq LwogIAotQEAgLTM4NywxMSArNDQzLDIxIEBAIHN0cnVjdCBtYWluX3R5cGUKLSAgIHVuc2lnbmVk IGludCBmbGFnX3ZhcmFyZ3MgOiAxOwotICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsK LSAgIHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKLSsgIHVuc2lnbmVkIGlu dCBmbGFnX2dudV9pZnVuYyA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19maXhlZF9pbnN0YW5j ZSA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxlX293bmVkIDogMTsKK0BAIC00MDAs NiArNDQ5LDE1IEBAIHN0cnVjdCBtYWluX3R5cGUKICAgIC8qIFRydWUgaWYgdGhpcyB0eXBlIHdh cyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0aGVyIHRoYW4KICAgICAgICJzdHJ1Y3QiLiAgKi8K ICAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xhcmVkX2NsYXNzIDogMTsKQEAgLTU3MDAsNyArNDcx MCw3IEBAIGluZGV4IDVmODlmZWMuLjRiNDcyMGEgMTAwNjQ0CiAgCiAgICAvKiBBIGRpc2NyaW1p bmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxkIG9mIHRoZSB0eXBlX3NwZWNpZmljIHVuaW9uCiAg ICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlzIHR5cGUsIGlmIGFueS4gICovCi1AQCAtNDY1LDYg KzUzMSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNDczLDYgKzUzMSwyMCBAQCBzdHJ1Y3Qg bWFpbl90eXBlCiAgCiAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CiAgCkBAIC01NzIxLDcg KzQ3MzEsNyBAQCBpbmRleCA1Zjg5ZmVjLi40YjQ3MjBhIDEwMDY0NAogICAgLyogRm9yIHN0cnVj dHVyZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZC4KICAgICAg IEZvciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBlcywgdGhlcmUgaXMgb25lICJmaWVsZCIsCiAg ICAgICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0IG9yIGFycmF5Lgot QEAgLTUzOSwxMyArNjE5LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01NDcsMTMgKzYxOSwz NCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMKICAgICAg ewpAQCAtNTc2MSw3ICs0NzcxLDcgQEAgaW5kZXggNWY4OWZlYy4uNGI0NzIwYSAxMDA2NDQKICAK ICAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5k IGhpZ2ggYXJlCiAgICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJh bmdlIHZhbHVlIGlzCi1AQCAtOTE4LDkgKzEwMTksOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05MjYsOSArMTAxOSw5IEBAIGV4dGVy biB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUg VFlQRV9QT0lOVEVSX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnBvaW50ZXJfdHlwZQogICNk ZWZpbmUgVFlQRV9SRUZFUkVOQ0VfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cmVmZXJlbmNl X3R5cGUKICAjZGVmaW5lIFRZUEVfQ0hBSU4odGhpc3R5cGUpICh0aGlzdHlwZSktPmNoYWluCkBA IC01Nzc0LDcgKzQ3ODQsNyBAQCBpbmRleCA1Zjg5ZmVjLi40YjQ3MjBhIDEwMDY0NAogICAgIGNh bGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4g ICovCiAgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCiAg LyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlv dSB3YW50IHRoZSByZWFsCi1AQCAtOTI4LDExICsxMDI5LDE2IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkzNiwxMSArMTAyOSwxNiBA QCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAj ZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2Rl CiAgI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBl KS0+bmZpZWxkcwogICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBF KHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwpAQCAtNTc5Myw3ICs0ODAzLDcgQEAgaW5kZXgg NWY4OWZlYy4uNGI0NzIwYSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5F RChyYW5nZV90eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5k ZWZpbmVkCiAgI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwK LUBAIC05NDksNyArMTA1NSwxNCBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBl IChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05NTcsNyArMTA1NSwxNCBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAgICAoVFlQRV9ISUdIX0JPVU5E KFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQogIAogICNkZWZpbmUgVFlQRV9BUlJBWV9M T1dFUl9CT1VORF9WQUxVRShhcnJheXR5cGUpIFwKQEAgLTU4MDksMjcgKzQ4MTksNyBAQCBpbmRl eCA1Zjg5ZmVjLi40YjQ3MjBhIDEwMDY0NAogIAogIC8qIEMrKyAqLwogIAotQEAgLTExNzgsNiAr MTI5MSwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCi0gICAgICAoKikgKCkgY2FuIHNlcnZlciBh cyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCi0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRp bl9mdW5jX3B0cjsKLSAKLSsgIC8qIGBmdW5jdGlvbiByZXR1cm5pbmcgcG9pbnRlciB0byBmdW5j dGlvbiAocmV0dXJuaW5nIHZvaWQpJyB0eXBlLgotKyAgICAgVGhlIGZpbmFsIHZvaWQgcmV0dXJu IHR5cGUgaXMgbm90IHNpZ25pZmljYW50IGZvciBpdC4gICovCi0rICBzdHJ1Y3QgdHlwZSAqYnVp bHRpbl9mdW5jX2Z1bmM7Ci0rCi0gCi0gICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLwot IAotQEAgLTEyMTgsNiArMTMzNSw4IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUKLSAKLSAgIC8qIFR5 cGVzIHVzZWQgZm9yIHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCi0gICBz dHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSsgIHN0cnVjdCB0eXBlICpub2RlYnVn X3RleHRfZ251X2lmdW5jX3N5bWJvbDsKLSsgIHN0cnVjdCB0eXBlICpub2RlYnVnX2dvdF9wbHRf c3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfZGF0YV9zeW1ib2w7Ci0gICBzdHJ1Y3Qg dHlwZSAqbm9kZWJ1Z191bmtub3duX3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Rs c19zeW1ib2w7Ci1AQCAtMTM2NSw2ICsxNDg0LDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3Jl YXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCitAQCAtMTM3OSw2 ICsxNDg0LDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVj dCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKICBl eHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAq LCBpbnQsIGludCk7CiAgCkBAIC01ODQ4LDcgKzQ4MzgsNyBAQCBpbmRleCA1Zjg5ZmVjLi40YjQ3 MjBhIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1 Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJu IHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGlu dCwgaW50KTsKLUBAIC0xNDEwLDYgKzE1NDEsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5j ZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOworQEAgLTE0MjQsNiArMTU0MSwx MCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHR5cGUgKik7CiAgCiAgZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTU4NTksNyArNDg0OSw3IEBAIGluZGV4IDVmODlm ZWMuLjRiNDcyMGEgMTAwNjQ0CiAgLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwogIAogICNkZWZp bmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBAIC0xNDgyLDEwICsxNjE3LDEz IEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKK0BA IC0xNDk2LDEwICsxNjE3LDEzIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUg KGNoYXIgKiwgaW50KTsKICAKICBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFz aCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogIApAQCAtNjQ3MSw4NyArNTQ2MSw4IEBAIGlu ZGV4IDgxOWM2YjguLmJlZjhhMzUgMTAwNjQ0CiAgLyogVXNlIHRoaXMgZnVuY3Rpb24gdG8gc2V0 IGkzODZfZHJfbG93IGRlYnVnX3JlZ2lzdGVyX2xlbmd0aCBmaWVsZAogICAgIHJhdGhlciB0aGFu IHNldHRpbmcgaXQgZGlyZWN0bHkgdG8gY2hlY2sgdGhhdCB0aGUgbGVuZ3RoIGlzIG9ubHkKICAg ICBzZXQgb25jZS4gIEl0IGFsc28gZW5hYmxlcyB0aGUgJ21haW50IHNldC9zaG93IHNob3ctZGVi dWctcmVncycgCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZmNhbGwuYyBiL2dkYi9pbmZjYWxsLmMKLWlu ZGV4IGQ0MjI0OGUuLmNhMjM3MDQgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mY2FsbC5jCi0rKysgYi9n ZGIvaW5mY2FsbC5jCi1AQCAtMjI4LDYgKzIyOCwyMSBAQCB2YWx1ZV9hcmdfY29lcmNlIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICphcmcsCi0gICByZXR1cm4gdmFsdWVf Y2FzdCAodHlwZSwgYXJnKTsKLSB9Ci0gCi0rLyogUmV0dXJuIHRoZSByZXR1cm4gdHlwZSBvZiBh IGZ1bmN0aW9uIHdpdGggaXRzIGZpcnN0IGluc3RydWN0aW9uIGV4YWN0bHkgYXQKLSsgICB0aGUg UEMgYWRkcmVzcy4gIFJldHVybiBOVUxMIG90aGVyd2lzZS4gICovCi0rCi0rc3RhdGljIHN0cnVj dCB0eXBlICoKLStmaW5kX2Z1bmN0aW9uX3JldHVybl90eXBlIChDT1JFX0FERFIgcGMpCi0rewot KyAgc3RydWN0IHN5bWJvbCAqc3ltID0gZmluZF9wY19mdW5jdGlvbiAocGMpOwotKwotKyAgaWYg KHN5bSAhPSBOVUxMICYmIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHN5bSkpID09 IHBjCi0rICAgICAgJiYgU1lNQk9MX1RZUEUgKHN5bSkgIT0gTlVMTCkKLSsgICAgcmV0dXJuIFRZ UEVfVEFSR0VUX1RZUEUgKFNZTUJPTF9UWVBFIChzeW0pKTsKLSsKLSsgIHJldHVybiBOVUxMOwot K30KLSsKLSAvKiBEZXRlcm1pbmUgYSBmdW5jdGlvbidzIGFkZHJlc3MgYW5kIGl0cyByZXR1cm4g dHlwZSBmcm9tIGl0cyB2YWx1ZS4KLSAgICBDYWxscyBlcnJvcigpIGlmIHRoZSBmdW5jdGlvbiBp cyBub3QgdmFsaWQgZm9yIGNhbGxpbmcuICAqLwotIAotQEAgLTIzNiw3ICsyNTEsNiBAQCBmaW5k X2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIHN0cnVjdCB0eXBlICoqcmV0 dmFsX3R5cGUpCi0gewotICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoZnVuY3Rpb24pKTsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5 cGVfYXJjaCAoZnR5cGUpOwotLSAgZW51bSB0eXBlX2NvZGUgY29kZSA9IFRZUEVfQ09ERSAoZnR5 cGUpOwotICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxMOwotICAgQ09SRV9BRERSIGZ1 bmFkZHI7Ci0gCi1AQCAtMjQ0LDI0ICsyNTgsMzQgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1 Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBlKQotICAgICAgcGFy dCBvZiBpdC4gICovCi0gCi0gICAvKiBEZXRlcm1pbmUgYWRkcmVzcyB0byBjYWxsLiAgKi8KLS0g IGlmIChjb2RlID09IFRZUEVfQ09ERV9GVU5DIHx8IGNvZGUgPT0gVFlQRV9DT0RFX01FVEhPRCkK LS0gICAgewotLSAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNzIChmdW5jdGlvbik7Ci0tICAg ICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKLS0gICAgfQotLSAgZWxz ZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQotKyAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09 IFRZUEVfQ09ERV9GVU5DCi0rICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RF X01FVEhPRCkKLSsgICAgZnVuYWRkciA9IHZhbHVlX2FkZHJlc3MgKGZ1bmN0aW9uKTsKLSsgIGVs c2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIpCi0gICAgIHsKLSAgICAg ICBmdW5hZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoZnVuY3Rpb24pOwotICAgICAgIGZ0eXBlID0g Y2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKTsKLSAgICAgICBpZiAoVFlQ RV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKLSAJICB8fCBUWVBFX0NPREUgKGZ0eXBl KSA9PSBUWVBFX0NPREVfTUVUSE9EKQotKwlmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21f ZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLSsJCQkJCQkgICAgICAmY3VycmVudF90 YXJnZXQpOwotKyAgICB9Ci0rICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZV TkMKLSsgICAgICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQotKyAg ICB7Ci0rICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKLSsKLSsg ICAgICBpZiAoVFlQRV9HTlVfSUZVTkMgKGZ0eXBlKSkKLSAJewotLQkgIGZ1bmFkZHIgPSBnZGJh cmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAotLQkJCQkJ CQkmY3VycmVudF90YXJnZXQpOwotLQkgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChm dHlwZSk7Ci0rCSAgZnVuYWRkciA9IGdudV9pZnVuY19yZXNvbHZlX2FkZHIgKGdkYmFyY2gsIGZ1 bmFkZHIpOwotKwotKwkgIC8qIFNraXAgcXVlcnlpbmcgdGhlIGZ1bmN0aW9uIHN5bWJvbCBpZiBu byBSRVRWQUxfVFlQRSBoYXMgYmVlbgotKwkgICAgIGFza2VkIGZvci4gICovCi0rCSAgaWYgKHJl dHZhbF90eXBlKQotKwkgICAgdmFsdWVfdHlwZSA9IGZpbmRfZnVuY3Rpb25fcmV0dXJuX3R5cGUg KGZ1bmFkZHIpOwotIAl9Ci0gICAgIH0KLS0gIGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX0lO VCkKLSsgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9JTlQpCi0gICAg IHsKLSAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugb2YgZnVuY3Rpb25zIGxhY2tpbmcgZGVidWdn aW5nIGluZm8uCi0gICAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBjaGFyYWN0ZXJzIHNpbmNlIHRo ZWlyIGFkZHJlc3NlcyBhcmUgY2hhci4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIv Z2RiL2luZnJ1bi5jCi1pbmRleCA3Y2VlN2M4Li43NTFjOWVmIDEwMDY0NAoraW5kZXggN2NlZTdj OC4uYjk0YzExYSAxMDA2NDQKIC0tLSBhL2dkYi9pbmZydW4uYwogKysrIGIvZ2RiL2luZnJ1bi5j CiBAQCAtNTQsNiArNTQsOCBAQApAQCAtNjYwNyw3ICs1NTE4LDcgQEAgaW5kZXggN2NlZTdjOC4u NzUxYzllZiAxMDA2NDQKICAJa2VlcF9nb2luZyAoZWNzKTsKICAJcmV0dXJuOwogIAotQEAgLTUy NjMsMTUgKzUyNjgsNjQgQEAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3Ry dWN0IHRocmVhZF9pbmZvICp0cCwKK0BAIC01MjYzLDE1ICs1MjY4LDY1IEBAIGluc2VydF9leGNl cHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsCiAgICAgIH0K ICB9CiAgCkBAIC02NjMyLDggKzU1NDMsOSBAQCBpbmRleCA3Y2VlN2M4Li43NTFjOWVmIDEwMDY0 NAogKwogKyAgaWYgKGRlYnVnX2luZnJ1bikKICsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAotKwkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQgJWx4XG4iLAotKwkJCSh1 bnNpZ25lZCBsb25nKSBoYW5kbGVyKTsKKysJCQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0 ICVzXG4iLAorKwkJCXBhZGRyZXNzIChnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKSwKKysJCQkJ ICBoYW5kbGVyKSk7CiArCiArICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAo Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKICsJCQkJICAgICAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlv bl9yZXN1bWUpOwpAQCAtNjY3Myw3ICs1NTg1LDcgQEAgaW5kZXggN2NlZTdjOC4uNzUxYzllZiAx MDA2NDQKICAKICAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfRVJST1IpCiAgICAgIHsKLUBA IC02MjUzLDcgKzYzMDcsOCBAQCBzdGF0aWMgc3RydWN0IGx2YWxfZnVuY3Mgc2lnaW5mb192YWx1 ZV9mdW5jcyA9CitAQCAtNjI1Myw3ICs2MzA4LDggQEAgc3RhdGljIHN0cnVjdCBsdmFsX2Z1bmNz IHNpZ2luZm9fdmFsdWVfZnVuY3MgPQogICAgIGlmIHRoZXJlJ3Mgbm8gb2JqZWN0IGF2YWlsYWJs ZS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC02NjgzLDEwICs1NTk1LDEyIEBA IGluZGV4IDdjZWU3YzguLjc1MWM5ZWYgMTAwNjQ0CiAgewogICAgaWYgKHRhcmdldF9oYXNfc3Rh Y2sKICAgICAgICAmJiAhcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKQotQEAg LTY4MjYsNiArNjg4MSwxMyBAQCBzaG93X3NjaGVkdWxlX211bHRpcGxlIChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgaW50IGZyb21fdHR5LAorQEAgLTY4MjYsNiArNjg4MiwxNSBAQCBzaG93X3NjaGVk dWxlX211bHRpcGxlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogIAkJCSAg ICAib2YgYWxsIHByb2Nlc3NlcyBpcyAlcy5cbiIpLCB2YWx1ZSk7CiAgfQogIAorKy8qIEltcGxl bWVudGF0aW9uIG9mIGBzaWdpbmZvJyB2YXJpYWJsZS4gICovCisrCiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyBzaWdpbmZvX2Z1bmNzID0KICt7CiArICBzaWdpbmZvX21h a2VfdmFsdWUsCkBAIC02Njk3LDcgKzU2MTEsNyBAQCBpbmRleCA3Y2VlN2M4Li43NTFjOWVmIDEw MDY0NAogIHZvaWQKICBfaW5pdGlhbGl6ZV9pbmZydW4gKHZvaWQpCiAgewotQEAgLTcwOTgsNyAr NzE2MCw3IEBAIFRlbGxzIGdkYiB3aGV0aGVyIHRvIGRldGFjaCB0aGUgY2hpbGQgb2YgYSBmb3Jr LiIpLAorQEAgLTcwOTgsNyArNzE2Myw3IEBAIFRlbGxzIGdkYiB3aGV0aGVyIHRvIGRldGFjaCB0 aGUgY2hpbGQgb2YgYSBmb3JrLiIpLAogICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFs dWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24ndCBpbml0aWFsaXpl ZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCiAgICAgICBpc24n dCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwpAQCAt NjcwNyw3ICs1NjIxLDcgQEAgaW5kZXggN2NlZTdjOC4uNzUxYzllZiAxMDA2NDQKICAgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgib2JzZXJ2ZXIiLCBub19jbGFzcywKICAJCQkgICAmb2JzZXJ2 ZXJfbW9kZV8xLCBfKCJcCiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbmVzcGVjLmMgYi9nZGIvbGluZXNw ZWMuYwotaW5kZXggNzBkZjNjYS4uYWY1M2Y5NyAxMDA2NDQKK2luZGV4IDcwZGYzY2EuLjUzMzgx NjEgMTAwNjQ0CiAtLS0gYS9nZGIvbGluZXNwZWMuYwogKysrIGIvZ2RiL2xpbmVzcGVjLmMKIEBA IC00Myw2ICs0Myw3IEBACkBAIC02NzMxLDcgKzU2NDUsNyBAQCBpbmRleCA3MGRmM2NhLi5hZjUz Zjk3IDEwMDY0NAogICAgICByZXR1cm4gZGVjb2RlX2luZGlyZWN0IChhcmdwdHIpOwogIAogKyAg aWYgKHN0cm5jbXAgKCphcmdwdHIsICJwcm9iZToiLCA2KSA9PSAwKQotKyAgICByZXR1cm4gcGFy c2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBjYW5vbmljYWwsIG5vdF9mb3VuZF9wdHIpOworKyAgICBy ZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBjYW5vbmljYWwpOwogKwogICAgaXNfcXVv dGVkID0gKHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAoKSwKICAJ CSAgICAgICAqKmFyZ3B0cikgIT0gTlVMTCk7CkBAIC03MDExLDExMCArNTkyNSw2IEBAIGluZGV4 IGE0MDE4NDYuLjI2ZGNhOGMgMTAwNjQ0CiAgICAgICAgc3RydWN0IHZhcm9iaiAqdmFyID0gdmFy b2JqX2dldF9oYW5kbGUgKG5hbWUpOwogIAogICAgICAgIHZhcm9ial91cGRhdGVfb25lICh2YXIs IHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pbnN5 bXMuYyBiL2dkYi9taW5zeW1zLmMKLWluZGV4IDQ1NTFiMDcuLmIwNTRlM2YgMTAwNjQ0Ci0tLS0g YS9nZGIvbWluc3ltcy5jCi0rKysgYi9nZGIvbWluc3ltcy5jCi1AQCAtMzM0LDggKzMzNCw5IEBA IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZikKLSAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCi0gCSAg ICB7Ci0gCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLCBu YW1lKSA9PSAwICYmCi0tCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0IHx8 Ci0tCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQotKwkJICAo TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwkJICAgfHwgTVNZTUJPTF9UWVBF IChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKLSsJCSAgIHx8IE1TWU1CT0xfVFlQRSAo bXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCi0gCQl7Ci0gCQkgIHN3aXRjaCAoTVNZTUJPTF9U WVBFIChtc3ltYm9sKSkKLSAJCSAgICB7Ci1AQCAtNjk3LDYgKzY5OCw2OSBAQCBsb29rdXBfbWlu aW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKLSAgIHJldHVybiBsb29rdXBfbWluaW1h bF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwotIH0KLSAKLSsvKiBSZXR1cm4gbm9u LXplcm8gaWZmIFBDIGlzIGluIGFuIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24gcmVzb2x2ZXIuICAq LwotKwotK2ludAotK2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCi0rewotKyAgc3Ry dWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3Bj IChwYyk7Ci0rCi0rICByZXR1cm4gbXN5bWJvbCAmJiBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09 IG1zdF90ZXh0X2dudV9pZnVuYzsKLSt9Ci0rCi0rLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2 ZV9hZGRyIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCi0rCi0rc3RhdGljIENPUkVf QUREUgotK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIENPUkVfQUREUiBwYykKLSt7Ci0rICBlcnJvciAoXygiR0RCIGNhbm5vdCByZXNvbHZlIFNU VF9HTlVfSUZVTkMgc3ltYm9sIGF0IGFkZHJlc3MgJXMgd2l0aG91dCAiCi0rCSAgICJ0aGUgRUxG IHN1cHBvcnQgY29tcGlsZWQgaW4uIiksCi0rCSBwYWRkcmVzcyAoZ2RiYXJjaCwgcGMpKTsKLSt9 Ci0rCi0rLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9uYW1lIGZvciBpdHMgcmVhbCBpbXBs ZW1lbnRhdGlvbi4gICovCi0rCi0rc3RhdGljIGludAotK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVf bmFtZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKLSsJCQkgICAgIENPUkVfQUREUiAqZnVu Y3Rpb25fYWRkcmVzc19wKQotK3sKLSsgIGVycm9yIChfKCJHREIgY2Fubm90IHJlc29sdmUgU1RU X0dOVV9JRlVOQyBzeW1ib2wgXCIlc1wiIHdpdGhvdXQgIgotKwkgICAidGhlIEVMRiBzdXBwb3J0 IGNvbXBpbGVkIGluLiIpLAotKwkgZnVuY3Rpb25fbmFtZSk7Ci0rfQotKwotKy8qIFNlZSBlbGZf Z251X2lmdW5jX3Jlc29sdmVyX3N0b3AgZm9yIGl0cyByZWFsIGltcGxlbWVudGF0aW9uLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBi cmVha3BvaW50ICpiKQotK3sKLSsgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18s Ci0rCQkgIF8oImVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCBjYW5ub3QgYmUgcmVhY2hlZC4i KSk7Ci0rfQotKwotKy8qIFNlZSBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIGZv ciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzdHViX2du dV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCi0rewot KyAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgXygiZWxmX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCBjYW5ub3QgYmUgcmVhY2hlZC4iKSk7Ci0rfQotKwot Ky8qIFNlZSBlbGZfZ251X2lmdW5jX2ZucyBmb3IgaXRzIHJlYWwgaW1wbGVtZW50YXRpb24uICAq LwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ251X2lmdW5jX2ZucyBzdHViX2dudV9pZnVuY19m bnMgPQotK3sKLSsgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVfYWRkciwKLSsgIHN0dWJfZ251X2lm dW5jX3Jlc29sdmVfbmFtZSwKLSsgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AsCi0rICBz dHViX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCwKLSt9OwotKwotKy8qIEEgcGxhY2Vo b2xkZXIgZm9yICZlbGZfZ251X2lmdW5jX2Zucy4gICovCi0rCi0rY29uc3Qgc3RydWN0IGdudV9p ZnVuY19mbnMgKmdudV9pZnVuY19mbnNfcCA9ICZzdHViX2dudV9pZnVuY19mbnM7Ci0rCi0gLyog RmluZCB0aGUgbWluaW1hbCBzeW1ib2wgbmFtZWQgTkFNRSwgYW5kIHJldHVybiBib3RoIHRoZSBt aW5zeW0KLSAgICBzdHJ1Y3QgYW5kIGl0cyBvYmpmaWxlLiAgVGhpcyBvbmx5IGNoZWNrcyB0aGUg bGlua2FnZSBuYW1lLiAgU2V0cwotICAgICpPQkpGSUxFX1AgYW5kIHJldHVybnMgdGhlIG1pbmlt YWwgc3ltYm9sLCBpZiBpdCBpcyBmb3VuZC4gIElmIGl0Ci1AQCAtNzY2LDYgKzgzMCw3IEBAIHBy aW1fcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRk cmVzcywKLSAgIHN3aXRjaCAobXNfdHlwZSkKLSAgICAgewotICAgICBjYXNlIG1zdF90ZXh0Ogot KyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSAgICAgY2FzZSBtc3RfZmlsZV90ZXh0Ogot ICAgICBjYXNlIG1zdF9zb2xpYl90cmFtcG9saW5lOgotICAgICAgIHNlY3Rpb24gPSBTRUNUX09G Rl9URVhUIChvYmpmaWxlKTsKLUBAIC0xMjMxLDcgKzEyOTYsOCBAQCBmaW5kX3NvbGliX3RyYW1w b2xpbmVfdGFyZ2V0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIENPUkVfQUREUiBwYykKLSAg ICAgewotICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkKLSAgICAgICB7Ci0t CWlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0Ci0rCWlmICgoTVNZTUJPTF9U WVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwkgICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9s KSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gCSAgICAmJiBzdHJjbXAgKFNZTUJPTF9MSU5LQUdF X05BTUUgKG1zeW1ib2wpLAotIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1ib2wp KSA9PSAwKQotIAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7CiBkaWZm IC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwogaW5kZXggNzRkNzk1ZC4u N2UwNTMxNyAxMDA2NDQKIC0tLSBhL2dkYi9taXBzcmVhZC5jCkBAIC03MTI4LDE0ICs1OTM4LDE0 IEBAIGluZGV4IDc0ZDc5NWQuLjdlMDUzMTcgMTAwNjQ0CiAgfTsKICAKIGRpZmYgLS1naXQgYS9n ZGIvb2JqZmlsZXMuYyBiL2dkYi9vYmpmaWxlcy5jCi1pbmRleCBmMzI1OWRkLi4xMzA5Y2RiIDEw MDY0NAoraW5kZXggZjMyNTlkZC4uNGNiM2JlZCAxMDA2NDQKIC0tLSBhL2dkYi9vYmpmaWxlcy5j CiArKysgYi9nZGIvb2JqZmlsZXMuYwogQEAgLTg0Niw2ICs4NDYsMTEgQEAgb2JqZmlsZV9yZWxv Y2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQlvYmpfc2VjdGlvbl9hZGRyIChz KSk7CiAgICAgIH0KICAKLSsgIC8qIFJlbG9jYXRpbmcgU3lzdGVtdGFwIHByb2Jlcy4gICovCisr ICAvKiBSZWxvY2F0aW5nIFN5c3RlbVRhcCBwcm9iZXMuICAqLwogKyAgaWYgKG9iamZpbGUtPnNm ICYmIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQogKyAgICBvYmpmaWxlLT5zZi0+c3ltX3By b2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAogKwkJCQkJCSAgICBuZXdfb2Zm c2V0cywgZGVsdGEpOwpAQCAtNzIyNCw1NyArNjAzNCwxMCBAQCBpbmRleCBkMmVmYTViLi5kOThi M2E0IDEwMDY0NAogIH0KICAMCiBkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2Uu YwotaW5kZXggMDJhN2Q4OS4uODFmM2YwYyAxMDA2NDQKK2luZGV4IDQ4MTU4NTQuLjgxZjNmMGMg MTAwNjQ0CiAtLS0gYS9nZGIvcGFyc2UuYwogKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC00ODcsOSAr NDg3LDIyIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1i b2wpCi0gICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs IGFkZHIsICZjdXJyZW50X3RhcmdldCk7Ci0gICBpZiAocGMgIT0gYWRkcikKLSAgICAgewotKyAg ICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqaWZ1bmNfbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5 bWJvbF9ieV9wYyAocGMpOwotKwotICAgICAgIC8qIEluIHRoaXMgY2FzZSwgYXNzdW1lIHdlIGhh dmUgYSBjb2RlIHN5bWJvbCBpbnN0ZWFkIG9mCi0gCSBhIGRhdGEgc3ltYm9sLiAgKi8KLS0gICAg ICB0eXBlID0gbXN0X3RleHQ7Ci0rCi0rICAgICAgaWYgKGlmdW5jX21zeW0gIT0gTlVMTCAmJiBN U1lNQk9MX1RZUEUgKGlmdW5jX21zeW0pID09IG1zdF90ZXh0X2dudV9pZnVuYwotKwkgICYmIFNZ TUJPTF9WQUxVRV9BRERSRVNTIChpZnVuY19tc3ltKSA9PSBwYykKLSsJewotKwkgIC8qIEEgZnVu Y3Rpb24gZGVzY3JpcHRvciBoYXMgYmVlbiByZXNvbHZlZCBidXQgUEMgaXMgc3RpbGwgaW4gdGhl Ci0rCSAgICAgU1RUX0dOVV9JRlVOQyByZXNvbHZlciBib2R5IChzdWNoIGFzIGJlY2F1c2UgaW5m ZXJpb3IgZG9lcyBub3QKLSsJICAgICBydW4gdG8gYmUgYWJsZSB0byBjYWxsIGl0KS4gICovCi0r Ci0rCSAgdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVuYzsKLSsJfQotKyAgICAgIGVsc2UKLSsJdHlw ZSA9IG1zdF90ZXh0OwotICAgICAgIHNlY3Rpb24gPSBOVUxMOwotICAgICAgIGFkZHIgPSBwYzsK LSAgICAgfQotQEAgLTUyMSw2ICs1MzQsMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBt aW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKLSAgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZp bGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOwotICAgICAgIGJyZWFrOwot IAotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5 cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKLSsJCQkJCSAgICAgICAtPm5vZGVidWdfdGV4dF9n bnVfaWZ1bmNfc3ltYm9sKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBtc3RfZGF0YToK LSAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgotICAgICBjYXNlIG1zdF9ic3M6Ci1AQCAtNTI4LDYg KzU0NiwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3lt Ym9sKQotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+ bm9kZWJ1Z19kYXRhX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2UgbXN0X3Ns b3RfZ290X3BsdDoKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2Jq ZmlsZSktPm5vZGVidWdfZ290X3BsdF9zeW1ib2wpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBk ZWZhdWx0OgotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxl KS0+bm9kZWJ1Z191bmtub3duX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQ4MCw2ICsx NTAyLDcgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKK0BA IC0xNTAyLDYgKzE1MDIsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAq eSwgLi4uKQogIAogIGludAogIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNzI4Miw3ICs2MDQ1LDcgQEAgaW5kZXggMDJhN2Q4OS4u ODFmM2YwYyAxMDA2NDQKICAJCQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCiAgCQkJCQkgICAgICB2b2lkICpkYXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBA IC0xNTIxLDcgKzE1NDQsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTQzLDcgKzE1NDQsNyBAQCBvcGVyYXRvcl9jaGVj a19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJICAgIHN0cnVj dCB0eXBlICp0eXBlID0gZWx0c1twb3MgKyAyICsgYXJnXS50eXBlOwogIAkgICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGUpOwogIApAQCAtNzI5MSw3ICs2MDU0 LDcgQEAgaW5kZXggMDJhN2Q4OS4uODFmM2YwYyAxMDA2NDQKICAJICAgICAgcmV0dXJuIDE7CiAg CSAgfQogICAgICAgIH0KLUBAIC0xNTM5LDcgKzE1NjIsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTYxLDcgKzE1NjIs OCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 IHBvcywKICAKICAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlz IHBsYWNlZC4KICAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAg Ki8KQEAgLTczMDEsNyArNjA2NCw3IEBAIGluZGV4IDAyYTdkODkuLjgxZjNmMGMgMTAwNjQ0CiAg CSAgcmV0dXJuIDE7CiAgCiAgCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBj b2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMTU1MiwyNCArMTU3NiwyNyBAQCBv cGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywK K0BAIC0xNTc0LDI0ICsxNTc2LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3Ig VFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAg LTczMzcsNyArNjEwMCw3IEBAIGluZGV4IDAyYTdkODkuLjgxZjNmMGMgMTAwNjQ0CiAgCSAgICAg aW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEp LAogIAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE1ODQsNyArMTYxMSw5IEBAIGV4cF9pdGVy YXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE2MDYsNyArMTYxMSw5IEBAIGV4cF9p dGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9IGVuZHBvcyAt IG9wbGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVy YXRvcl9jaGVjayAoZXhwLCBwb3MsCkBAIC03MzQ4LDcgKzYxMTEsNyBAQCBpbmRleCAwMmE3ZDg5 Li44MWYzZjBjIDEwMDY0NAogIAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRwb3MgPSBwb3M7Ci1A QCAtMTYxNSw4ICsxNjQ0LDI5IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorQEAgLTE2MzcsOCArMTY0NCwyOSBAQCBl eHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKICB7CiAgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpm aWxlX2JhY2tsaW5rID09IE5VTEwpOwogIApAQCAtNzQxMiwxMCArNjE3NSwxMCBAQCBpbmRleCAz Zjc0M2QxLi4zYjk0MmM0IDEwMDY0NAogKwogICNlbmRpZiAvKiBQQVJTRVJfREVGU19IICovCiBk aWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLWlu ZGV4IDA0OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CitpbmRleCBmMGM3ZjYxLi41NGNhY2JiIDEwMDY0 NAogLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQuYwogKysrIGIvZ2RiL3BwYy1saW51eC1uYXQuYwot QEAgLTE2MzcsMTIgKzE2MzcsMTggQEAgYm9va2VfcmVtb3ZlX3BvaW50IChzdHJ1Y3QgcHBjX2h3 X2JyZWFrcG9pbnQgKmIsIGludCB0aWQpCitAQCAtMTYzNyw2ICsxNjM3LDE0IEBAIGJvb2tlX3Jl bW92ZV9wb2ludCAoc3RydWN0IHBwY19od19icmVha3BvaW50ICpiLCBpbnQgdGlkKQogICAgaHdf YnJlYWtzW2ldLmh3X2JyZWFrID0gTlVMTDsKICB9CiAgCkBAIC03NDI3LDcgKzYxOTAsMTAgQEAg aW5kZXggMDQ5Y2RlOC4uZjNkMzVlYyAxMDA2NDQKICsgIGJvb2tlX2luc2VydF9wb2ludCAocHAs IHRpZCk7CiArfQogKworIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBuZWVkZWQg Zm9yIGEgcmFuZ2VkIGJyZWFrcG9pbnQuICAqLworIAogIHN0YXRpYyBpbnQKK0BAIC0xNjU0LDgg KzE2NjIsNiBAQCBzdGF0aWMgaW50CiAgcHBjX2xpbnV4X2luc2VydF9od19icmVha3BvaW50IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkJICBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJw X3RndCkKICB7CkBAIC03NDM2LDkgKzYyMDIsOSBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVjIDEw MDY0NAogICAgc3RydWN0IHBwY19od19icmVha3BvaW50IHA7CiAgCiAgICBpZiAoIWhhdmVfcHRy YWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBAIC0xNjU2LDE4ICsxNjYyLDIzIEBAIHBwY19saW51 eF9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICBwLmFk ZHIyID0gMDsKLSAgIHAuY29uZGl0aW9uX3ZhbHVlID0gMDsKK0BAIC0xNjgxLDE4ICsxNjg3LDIz IEBAIHBwY19saW51eF9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCisgICAgICAgcC5hZGRyMiA9IDA7CisgICAgIH0KICAKIC0gIEFMTF9MV1BTIChscCwgcHRp ZCkKIC0gICAgYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7CkBAIC03NDY0 LDkgKzYyMzAsOSBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVjIDEwMDY0NAogICAgc3RydWN0IHBw Y19od19icmVha3BvaW50IHA7CiAgCiAgICBpZiAoIWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFj ZSAoKSkKLUBAIC0xNjgxLDggKzE2OTIsNyBAQCBwcGNfbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9p bnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcC5hZGRyMiA9IDA7Ci0gICBwLmNvbmRp dGlvbl92YWx1ZSA9IDA7CitAQCAtMTcxOCw4ICsxNzI5LDcgQEAgcHBjX2xpbnV4X3JlbW92ZV9o d19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgICBwLmFkZHIyID0g MDsKKyAgICAgfQogIAogLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQogLSAgICBib29rZV9yZW1vdmVf cG9pbnQgKCZwLCBUSURHRVQgKHB0aWQpKTsKQEAgLTc0NzQsNyArNjI0MCw3IEBAIGluZGV4IDA0 OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CiAgCiAgICByZXR1cm4gMDsKICB9Ci1AQCAtMTg5Niw2ICsx OTA2LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVf QUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMTkzMyw2ICsxOTQzLDE1IEBAIHBwY19s aW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVfQUREUiBhZGRyLCBpbnQg bGVuLCBpbnQgcncsCiAgCSAgJiYgY2hlY2tfY29uZGl0aW9uIChhZGRyLCBjb25kLCAmZGF0YV92 YWx1ZSkpOwogIH0KICAKQEAgLTc0OTAsNyArNjI1Niw3IEBAIGluZGV4IDA0OWNkZTguLmYzZDM1 ZWMgMTAwNjQ0CiAgLyogU2V0IHVwIFAgd2l0aCB0aGUgcGFyYW1ldGVycyBuZWNlc3NhcnkgdG8g cmVxdWVzdCBhIHdhdGNocG9pbnQgY292ZXJpbmcKICAgICBMRU4gYnl0ZXMgc3RhcnRpbmcgYXQg QUREUiBhbmQgaWYgcG9zc2libGUgd2l0aCBjb25kaXRpb24gZXhwcmVzc2lvbiBDT05ECiAgICAg ZXZhbHVhdGVkIGJ5IGhhcmR3YXJlLiAgSU5TRVJUIHRlbGxzIGlmIHdlIGFyZSBjcmVhdGluZyBh IHJlcXVlc3QgZm9yCi1AQCAtMTk0OSw4ICsxOTY4LDYgQEAgc3RhdGljIGludAorQEAgLTE5ODYs OCArMjAwNSw2IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lv biAqY29uZCkKICB7CkBAIC03NDk5LDcgKzYyNjUsNyBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVj IDEwMDY0NAogICAgaW50IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2lu dGVyZmFjZSAoKSkKLUBAIC0xOTU5LDggKzE5NzYsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMTk5Niw4ICsyMDEz LDcgQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHJ3LAogIAogICAgICAgIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3QgKCZwLCBhZGRy LCBsZW4sIHJ3LCBjb25kLCAxKTsKICAKQEAgLTc1MDksNyArNjI3NSw3IEBAIGluZGV4IDA0OWNk ZTguLmYzZDM1ZWMgMTAwNjQ0CiAgCiAgICAgICAgcmV0ID0gMDsKICAgICAgfQotQEAgLTIwMDMs MTIgKzIwMTksOCBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMjA0MCwxMiArMjA1Niw4IEBAIHBwY19saW51eF9pbnNl cnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKICAKICAgICAg ICBzYXZlZF9kYWJyX3ZhbHVlID0gZGFicl92YWx1ZTsKICAKQEAgLTc1MjMsNyArNjI4OSw3IEBA IGluZGV4IDA0OWNkZTguLmYzZDM1ZWMgMTAwNjQ0CiAgICAgIH0KICAKICAgIHJldHVybiByZXQ7 Ci1AQCAtMjAxOCw4ICsyMDMwLDYgQEAgc3RhdGljIGludAorQEAgLTIwNTUsOCArMjA2Nyw2IEBA IHN0YXRpYyBpbnQKICBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLCBpbnQgcncsCiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7 CkBAIC03NTMyLDcgKzYyOTgsNyBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVjIDEwMDY0NAogICAg aW50IHJldCA9IC0xOwogIAogICAgaWYgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkK LUBAIC0yMDI4LDIwICsyMDM4LDE2IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKK0BAIC0yMDY1LDIwICsyMDc1LDE2IEBAIHBw Y19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBy dywKICAKICAgICAgICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0ICgmcCwgYWRkciwgbGVuLCBy dywgY29uZCwgMCk7CiAgCkBAIC04NzY1LDIwICs3NTMxLDYgQEAgaW5kZXggY2UwZWIzNS4uMTQ1 NzJmNCAxMDA2NDQKICBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29m ZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IHJlY3Vyc2UsCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xp Yi1zdnI0LmMKLWluZGV4IDQzMmRhOTkuLjc4YzZiMWMgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWIt c3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAtMTI3Niw3ICsxMjc2LDggQEAgc3Zy NF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcGMpCi0gCSAgICYmIHBjIDwgaW5m by0+aW50ZXJwX3RleHRfc2VjdF9oaWdoKQotIAkgIHx8IChwYyA+PSBpbmZvLT5pbnRlcnBfcGx0 X3NlY3RfbG93Ci0gCSAgICAgICYmIHBjIDwgaW5mby0+aW50ZXJwX3BsdF9zZWN0X2hpZ2gpCi0t CSAgfHwgaW5fcGx0X3NlY3Rpb24gKHBjLCBOVUxMKSk7Ci0rCSAgfHwgaW5fcGx0X3NlY3Rpb24g KHBjLCBOVUxMKQotKwkgIHx8IGluX2dudV9pZnVuY19zdHViIChwYykpOwotIH0KLSAKLSAvKiBH aXZlbiBhbiBleGVjdXRhYmxlJ3MgQUJGRCBhbmQgdGFyZ2V0LCBjb21wdXRlIHRoZSBlbnRyeS1w b2ludAogZGlmZiAtLWdpdCBhL2dkYi9zb21yZWFkLmMgYi9nZGIvc29tcmVhZC5jCiBpbmRleCA3 MDgzMWEwLi5iYWY2OGVhIDEwMDY0NAogLS0tIGEvZ2RiL3NvbXJlYWQuYwpAQCAtODgxOSwxMSAr NzU3MSwxMSBAQCBpbmRleCAwODg4YjY5Li5jM2VmZDViIDEwMDY0NAogIAkgICAgICBlbHNlCiBk aWZmIC0tZ2l0IGEvZ2RiL3N0YXAtcHJvYmUuYyBiL2dkYi9zdGFwLXByb2JlLmMKIG5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMjUxYmQzCitpbmRleCAwMDAwMDAwLi44MzZk OTA0CiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvc3RhcC1wcm9iZS5jCi1AQCAtMCwwICsxLDIw MzEgQEAKLSsvKiBTeXN0ZW10YXAgcHJvYmUgc3VwcG9ydCBmb3IgR0RCLgorQEAgLTAsMCArMSwy MDQxIEBACisrLyogU3lzdGVtVGFwIHByb2JlIHN1cHBvcnQgZm9yIEdEQi4KICsKICsgICBDb3B5 cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04ODYy LDYgKzc2MTQsMjIgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKwogKyNpbmNsdWRlIDxjdHlw ZS5oPgogKworKy8qIFRoaXMgZGVmaW5lIGlzIHVzZWQgdG8gaW5mb3JtIHdoZXRoZXIgd2UgYXJl IGNvbXBpbGluZyBhbiBhZ2VudAorKyAgIGV4cHJlc3Npb24gb3Igbm90LiAgKi8KKysKKysjZGVm aW5lIFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUChldmFsX2luZm8pIFwKKysgIChldmFsX2lu Zm8tPmFleHByICE9IE5VTEwpCisrCisrLyogVGhlIHZhcmlvdXMgcG9zc2liaWxpdGllcyBvZiBi aXRuZXNzIGRlZmluZWQgZm9yIGEgcHJvYmUncyBhcmd1bWVudC4KKysKKysgICBUaGUgcmVsYXRp b25zaGlwIGlzOgorKworKyAgIC0gU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ6ICBUaGUgdXNl ciBoYXNuJ3Qgc3BlY2lmaWVkIHRoZSBiaXRuZXNzLgorKyAgIC0gU1RBUF9BUkdfQklUTkVTU18z MkJJVF9VTlNJR05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgNEAnLgorKyAgIC0g U1RBUF9BUkdfQklUTkVTU18zMkJJVF9TSUdORUQ6ICBhcmd1bWVudCBzdHJpbmcgc3RhcnRzIHdp dGggYC00QCcuCisrICAgLSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1VOU0lHTkVEOiAgYXJndW1l bnQgc3RyaW5nIHN0YXJ0cyB3aXRoIGA4QCcuCisrICAgLSBTVEFQX0FSR19CSVRORVNTXzY0QklU X1NJR05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgLThAJy4gICovCisrCiArZW51 bSBzdGFwX2FyZ19iaXRuZXNzCiArewogKyAgU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQsCkBA IC04ODcxLDYgKzc2MzksOCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICBTVEFQX0FSR19C SVRORVNTXzY0QklUX1NJR05FRCwKICt9OwogKworKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJl IHJlcHJlc2VudHMgYSBzaW5nbGUgYXJndW1lbnQgZm9yIHRoZSBwcm9iZS4gICovCisrCiArc3Ry dWN0IHN0YXBfcHJvYmVfYXJnCiArewogKyAgLyogVGhlIGJpdG5lc3Mgb2YgdGhpcyBhcmd1bWVu dC4gICovCkBAIC04ODgwLDggKzc2NTAsMTMgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKyAg Y2hhciAqYXJnX3N0cjsKICt9OwogKworKy8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVu dHMgdGhhdCBhIHByb2JlIGNhbiBoYXZlLAorKyAgIGFzIGRlZmluZWQgaW4gPHN5cy9zZHQuaD4u ICAqLworKwogKyNkZWZpbmUgU1RBUF9NQVhfQVJHUyAxMAogKworKy8qIFN0cnVjdHVyZSB0aGF0 IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGFsbCBhcmd1bWVudHMgb2YgYSBwcm9iZS4gICovCisr CiArc3RydWN0IHN0YXBfYXJnc19pbmZvCiArewogKyAgLyogVGhlIG51bWJlciBvZiB2YWxpZCBw YXJzZWQgYXJndW1lbnRzLiAgKi8KQEAgLTg4OTQsNyArNzY2OSw3IEBAIGluZGV4IDAwMDAwMDAu LmUyNTFiZDMKICsgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqYXJnOwogK307CiArCi0rLyogU3Ry dWN0IHRoYXQgY29udGFpbnMgYWxsIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZXZhbHVh dGUKKysvKiBTdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1h dGlvbiB0byBldmFsdWF0ZQogKyAgIGFuIGV4cHJlc3Npb24uICAqLwogKwogK3N0cnVjdCBzdGFw X2V2YWx1YXRpb25faW5mbwpAQCAtODkxOCw5ICs3NjkzLDYgQEAgaW5kZXggMDAwMDAwMC4uZTI1 MWJkMwogKyAgLyogVGhlIGJpdG5lc3Mgc3BlY2lmaWVkIGZvciB0aGlzIGFyZ3VtZW50LiAgKi8K ICsgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBiaXRuZXNzOwogKwotKyAgLyogRmxhZyB0byBpbmRp Y2F0ZSBpZiB3ZSBhcmUgY29tcGlsaW5nIGFuIGFnZW50IGV4cHJlc3Npb24uICAqLwotKyAgaW50 IGNvbXBpbGluZ19wOwotKwogKyAgLyogSWYgdGhlIGFib3ZlIGZsYWcgaXMgdHJ1ZSAob25lKSwg dGhpcyBmaWVsZCB3aWxsIGNvbnRhaW4gdGhlCiArICAgICBwb2ludGVyIHRvIHRoZSBhZ2VudCBl eHByZXNzaW9uLiAgKi8KICsgIHN0cnVjdCBhZ2VudF9leHByICphZXhwcjsKQEAgLTg5MzYsMjUg Kzc3MDgsMTggQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9h cmdzX2luZm8gZHVtbXlfc3RhcF9hcmdzX2luZm8gPQogKyAgeyAwLCBOVUxMLCBOVUxMIH07CiAr Ci0rLyogRXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgcHJvYmUncyBhcmd1bWVudCBleHByZXNzaW9u cy4gIExIUyByZXByZXNlbnRzCi0rICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwg YW5kIFBSRUMgaXMgdGhlIHByZWNlZGVuY2Ugb2YgdGhlCi0rICAgbGFzdCBvcGVyYXRvciBpZGVu dGlmaWVkIGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4gICovCi0rCiArc3RhdGljIHN0cnVj dCB2YWx1ZSAqc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yCiArICAoc3RydWN0IHN0YXBf ZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8sCiArICAgc3RydWN0IHZhbHVlICpsaHMsIGludCBw cmVjKTsKICsKLSsvKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0 aGUgbmVjZXNzYXJ5IHR5cGUgb2YgZXZhbHVhdGlvbgotKyAgIGRlcGVuZGluZyBvbiB3aGF0IGlz IHRoZSBuZXh0ICJ0aGluZyIgaW4gdGhlIGJ1ZmZlci4gIFZhbGlkIHZhbHVlcyBhcmU6Ci0rCi0r ICAgLSBVbmFyeSBvcGVyYXRvcnM7Ci0rICAgLSBJbnRlZ2VyIGNvbnN0YW50czsKLSsgICAtIFJl Z2lzdGVyIGRpc3BsYWNlbWVudCwgaW5kaXJlY3Rpb24sIGFuZCBkaXJlY3QgYWNjZXNzOwotKyAg IC0gUGFyZW50aGVzaXplZCBvcGVyYW5kLiAgKi8KLSsKICtzdGF0aWMgc3RydWN0IHZhbHVlICpz dGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkKICsgIChzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2lu Zm8gKmV2YWxfaW5mbyk7CiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGRlY2lkZXMgdG8g c2tpcCB3aGl0ZXNwYWNlcyBvciBub3QgaW4gYSBwcm9iZSdzCisrICAgYXJndW1lbnQgc3RyaW5n LiAgQmFzaWNhbGx5LCBpZiB3ZSBhcmUgaW5zaWRlIGEgcGFyZW50aGVzaXMgZXhwcmVzc2lvbgor KyAgIChpLmUuLCBpbnNpZGUgYSBzdWJleHByZXNzaW9uKSwgd2UgY2FuIHNraXAgd2hpdGVzcGFj ZXM7IG90aGVyd2lzZSB3ZQorKyAgIGNhbm5vdC4gICovCisrCiArc3RhdGljIHZvaWQKICtzdGFw X3NraXBfd2hpdGVzcGFjZV9jb25kIChjaGFyICoqcywgaW50IGluc2lkZV9wYXJlbikKICt7CkBA IC04OTYyLDYgKzc3MjcsMTAgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKyAgICAqcyA9IHNr aXBfc3BhY2VzICgqcyk7CiArfQogKworKy8qIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwYXJzZXMg YSBzaW5nbGUgYXJndW1lbnQgaW4gYSBwcm9iZSdzIGFyZ3VtZW50CisrICAgc3RyaW5nLCBiYXNl ZCBvbiB2YXJpb3VzIHJ1bGVzICh3aGljaCBjYW4gYmUgbGVhcm5lZCBmcm9tIHRoZSBgZ2FzJwor KyAgIG1hbnVhbCkuICBJdCByZXR1cm5zIDEgb24gc3VjY2Vzcywgb3IgMCBvdGhlcndpc2UuICAq LworKwogK3N0YXRpYyBpbnQKICtzdGFwX3BhcnNlX2FyZyAoY29uc3QgY2hhciAqKnApCiArewpA QCAtOTE1MywyOCArNzkyMiw0OCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICByZXR1cm4g MTsKICt9CiArCisrLyogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBm cmVlaW5nIHRoZSBzcGFjZSBhbGxvY2F0ZWQgdG8KKysgICBob2xkIGluZm9ybWF0aW9uIGFib3V0 IGEgcHJvYmUncyBhcmd1bWVudHMuICAqLworKwogK3N0YXRpYyB2b2lkCiArc3RhcF9mcmVlX2Fy Z3NfaW5mbyAodm9pZCAqYXJnc19pbmZvX3B0cikKICt7CiArICBzdHJ1Y3Qgc3RhcF9hcmdzX2lu Zm8gKmEgPSAoc3RydWN0IHN0YXBfYXJnc19pbmZvICopIGFyZ3NfaW5mb19wdHI7CiArICBpbnQg aTsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBTVEFQX01BWF9BUkdTOyBpKyspCisrICBmb3IgKGkg PSAwOyBpIDwgYS0+bl9hcmdzOyBpKyspCiArICAgIHsKLSsgICAgICB4ZnJlZSAoYS0+YXJnLT5h cmdfc3RyKTsKKysgICAgICB4ZnJlZSAoYS0+YXJnW2ldLmFyZ19zdHIpOwogKyAgICB9CiArCiAr ICB4ZnJlZSAoYS0+YXJnKTsKICsgIHhmcmVlIChhKTsKICt9CiArCi0rdm9pZAorKy8qIEZ1bmN0 aW9uIHdoaWNoIHBhcnNlcyBhbiBhcmd1bWVudCBzdHJpbmcgZnJvbSBQUk9CRSwgY29ycmVjdGx5 IHNwbGl0dGluZworKyAgIHRoZSBhcmd1bWVudHMgYW5kIHN0b3JpbmcgdGhlaXIgaW5mb3JtYXRp b24gaW4gcHJvcGVybHkgd2F5cy4gIFRoaXMgZnVuY3Rpb24KKysgICBvbmx5IHNlcGFyYXRlcyB0 aGUgYXJndW1lbnRzLCBidXQgZG9lcyBub3QgZXZhbHVhdGUgdGhlbS4KKysKKysgICBDb25zaWRl ciB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHN0cmluZzoKKysKKysgICBgNEAlZWF4IDRAJDEwJwor KworKyAgIFdlIGhhdmUgdHdvIGFyZ3VtZW50cywgYCVlYXgnIGFuZCBgJDEwJywgYm90aCB3aXRo IDMyLWJpdCB1bnNpZ25lZCBiaXRuZXNzLgorKyAgIFRoaXMgZnVuY3Rpb24gYmFzaWNhbGx5IGhh bmRsZXMgdGhlbSwgcHJvcGVybHkgZmlsbGluZyBzb21lIHN0cnVjdHVyZXMgd2l0aAorKyAgIHRo aXMgaW5mb3JtYXRpb24uICAqLworKworK3N0YXRpYyB2b2lkCiArc3RhcF9wYXJzZV9wcm9iZV9h cmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKICt7CiArICBzdHJ1Y3Qgc3RhcF9h cmdzX2luZm8gKmFyZ3NfaW5mbzsKICsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogKyAgY29u c3QgY2hhciAqY3VyID0gcHJvYmUtPmFyZ3M7CiArICBpbnQgY3VycmVudF9hcmcgPSAtMTsKKysg IC8qIFRoaXMgaXMgYSBzdGF0ZS1tYWNoaW5lIHBhcnNlciwgd2hpY2ggbWVhbnMgd2Ugd2lsbCBh bHdheXMgYmUKKysgICAgIGluIGEga25vd24gc3RhdGUgd2hlbiBwYXJzaW5nIGFuIGFyZ3VtZW50 LiAgVGhlIHN0YXRlIGNvdWxkIGJlCisrICAgICBlaXRoZXIgYE5FV19BUkcnIGlmIHdlIGFyZSBw YXJzaW5nIGEgbmV3IGFyZ3VtZW50LCBgQklUTkVTUycgaWYKKysgICAgIHdlIGFyZSBwYXJzaW5n IHRoZSBiaXRuZXNzLWRlZmluaXRpb24gcGFydCAoaS5lLiwgYDRAJyksIG9yCisrICAgICBgUEFS U0VfQVJHJyBpZiB3ZSBhcmUgYWN0dWFsbHkgcGFyc2luZyB0aGUgYXJndW1lbnQgcGFydC4gICov CiArICBlbnVtCiArICAgIHsKICsgICAgICBORVdfQVJHLApAQCAtOTMxMiw2ICs4MTAxLDggQEAg aW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKyAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7CiAr fQogKworKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCiAraW50CiAr c3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSkKICt7CkBAIC05NjExLDggKzg0MDIsNyBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiAr ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5mby0+Z2RiYXJjaDsKICsgIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJhbWU7CiArICBlbnVtIHN0YXBfYXJn X2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKLSsjZGVmaW5lIFJFR19OQU1F X01BWF9TSVpFIDIwCi0rICBjaGFyIHJlZ25hbWVbUkVHX05BTUVfTUFYX1NJWkUgKyAxXTsKKysg IGNoYXIgKnJlZ25hbWU7CiArICBpbnQgbGVuLCByZWdudW0sIGluZGlyZWN0X3AgPSAwOwogKyAg c3RydWN0IHZhbHVlICpyZXQgPSBOVUxMOwogKyAgCkBAIC05NjIwLDcgKzg0MTAsNyBAQCBpbmRl eCAwMDAwMDAwLi5lMjUxYmQzCiArICAgICBidWZmZXIgd2FzIGVtcHR5LiAgKi8KICsgIGdkYl9h c3NlcnQgKHMgJiYgKnMpOwogKwotKyAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrICBp ZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQogKyAgICAvKiBJZiB3 ZSBhcmUgY29tcGlsaW5nLCB3ZSBjYW5ub3QgcmV0dXJuIE5VTEwgYmVjYXVzZSB0aGF0IHdvdWxk CiArICAgICAgIGxlYWQgdG8gZXJyb3JzIGluIGZ1dHVyZSBldmFsdWF0aW9ucy4gIFRoYXQncyB3 aHkgd2UganVzdCBtYWtlCiArICAgICAgIHRoaXMgZHVtbXkgdmFsdWUsIHJlcHJlc2VudGluZyB0 aGF0IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcwpAQCAtOTY3MCwxMCArODQ2MCw3IEBAIGluZGV4 IDAwMDAwMDAuLmUyNTFiZDMKICsgIGlmIChpbmRpcmVjdF9wICYmICpzID09ICcpJykKICsgICAg KytzOwogKwotKyAgaWYgKGxlbiA+PSBSRUdfTkFNRV9NQVhfU0laRSkKLSsgICAgZXJyb3IgKF8o IlRoZSByZWdpc3RlciBuYW1lIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3VwcG9ydGVkIHNpemUgIgot KwkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7Ci0r CisrICByZWduYW1lID0gYWxsb2NhIChsZW4gKyAxKTsKICsgIHN0cm5jcHkgKHJlZ25hbWUsIHN0 YXJ0LCBsZW4pOwogKyAgcmVnbmFtZVtsZW5dID0gJ1wwJzsKICsKQEAgLTk2ODQsNyArODQ3MSw3 IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsgICAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0 ZXIgbmFtZSBgJXMnIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKICsJICAgcmVnbmFtZSwgZXZhbF9p bmZvLT5zYXZlZF9leHByKTsKICsKLSsgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKyAg aWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsgICAgYXhfcmVn IChldmFsX2luZm8tPmFleHByLCByZWdudW0pOwogKyAgZWxzZQogKyAgICByZXQgPSB2YWx1ZV9v Zl9yZWdpc3RlciAocmVnbnVtLCBmcmFtZSk7CkBAIC05NzAzLDcgKzg0OTAsNyBAQCBpbmRleCAw MDAwMDAwLi5lMjUxYmQzCiArICAgICAgc3dpdGNoIChiaXRuZXNzKQogKwl7CiArCWNhc2UgU1RB UF9BUkdfQklUTkVTU19VTkRFRklORUQ6Ci0rCSAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3Ap CisrCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJICAg IHsKICsJICAgICAgaWYgKGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gpID09IDMyKQogKwkJYW9w ID0gYW9wX3JlZjMyOwpAQCAtOTcyMiw3ICs4NTA5LDcgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJk MwogKwkgIGJyZWFrOwogKwogKwljYXNlIFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfU0lHTkVEOgot KwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgIGlmIChTVEFQX0NPTVBJTElOR19B R0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCSAgICBhb3AgPSBhb3BfcmVmMzI7CiArCSAgZWxz ZQogKwkgICAgdCA9IGxvb2t1cF9wb2ludGVyX3R5cGUKQEAgLTk3MzAsNyArODUxNyw3IEBAIGlu ZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsJICBicmVhazsKICsKICsJY2FzZSBTVEFQX0FSR19CSVRO RVNTXzMyQklUX1VOU0lHTkVEOgotKwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkg IGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCSAgICBhb3Ag PSBhb3BfcmVmMzI7CiArCSAgZWxzZQogKwkgICAgdCA9IGxvb2t1cF9wb2ludGVyX3R5cGUKQEAg LTk3MzgsNyArODUyNSw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsJICBicmVhazsKICsK ICsJY2FzZSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRDoKLSsJICBpZiAoZXZhbF9pbmZv LT5jb21waWxpbmdfcCkKKysJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFs X2luZm8pKQogKwkgICAgYW9wID0gYW9wX3JlZjY0OwogKwkgIGVsc2UKICsJICAgIHQgPSBsb29r dXBfcG9pbnRlcl90eXBlCkBAIC05NzQ2LDcgKzg1MzMsNyBAQCBpbmRleCAwMDAwMDAwLi5lMjUx YmQzCiArCSAgYnJlYWs7CiArCiArCWNhc2UgU1RBUF9BUkdfQklUTkVTU182NEJJVF9VTlNJR05F RDoKLSsJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICBpZiAoU1RBUF9DT01QSUxJ TkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQogKwkgICAgYW9wID0gYW9wX3JlZjY0OwogKwkg IGVsc2UKICsJICAgIHQgPSBsb29rdXBfcG9pbnRlcl90eXBlCkBAIC05NzYxLDcgKzg1NDgsNyBA QCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCiArICAgICAgaWYgKGRpc3BsYWNlbWVudCkKICsJ ewotKwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgIGlmIChTVEFQX0NPTVBJTElO R19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCSAgICB7CiArCSAgICAgIGF4X2NvbnN0X2wg KGV2YWxfaW5mby0+YWV4cHIsIHZhbHVlX2FzX2xvbmcgKGRpc3BsYWNlbWVudCkpOwogKwkgICAg ICBheF9zaW1wbGUgKGV2YWxfaW5mby0+YWV4cHIsIGFvcF9hZGQpOwpAQCAtOTc3MCw3ICs4NTU3 LDcgQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKwkgICAgcmV0ID0gdmFsdWVfcHRyYWRkIChy ZXQsIHZhbHVlX2FzX2xvbmcgKGRpc3BsYWNlbWVudCkpOwogKwl9CiArCi0rICAgICAgaWYgKGV2 YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrICAgICAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VY UFJfUCAoZXZhbF9pbmZvKSkKICsJewogKwkgIGlmICh0cmFjZV9rbHVkZ2UpCiArCSAgICB7CkBA IC05ODA5LDcgKzg1OTYsNyBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICBlbnVtIHN0YXBf YXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKICsgIHN0cnVjdCB2YWx1 ZSAqcmVzID0gTlVMTDsKICsKLSsgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKyAgaWYg KFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsgICAgLyogSWYgd2Ug YXJlIGNvbXBpbGluZywgd2UgY2Fubm90IHJldHVybiBOVUxMIGJlY2F1c2UgdGhhdCB3b3VsZAog KyAgICAgICBsZWFkIHRvIGVycm9ycyBpbiBmdXR1cmUgZXZhbHVhdGlvbnMuICBUaGF0J3Mgd2h5 IHdlIGp1c3QgbWFrZQogKyAgICAgICB0aGlzIGR1bW15IHZhbHVlLCByZXByZXNlbnRpbmcgdGhh dCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMKQEAgLTk4NTQsNyArODY0MSw3IEBAIGluZGV4IDAw MDAwMDAuLmUyNTFiZDMKICsKICsJICAgICAgaWYgKGMgPT0gJy0nKQogKwkJewotKwkJICBpZiAo ZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VY UFJfUCAoZXZhbF9pbmZvKSkKICsJCSAgICB7CiArCQkgICAgICAvKiBXZSBoYXZlIHRvIGFkZCBg LTEnIHRvIHRoZSBzdGFjaywgYW5kIG11bHRpcGx5CiArCQkJIHRoZSB0d28gdmFsdWVzLiAgKi8K QEAgLTk4NjYsNyArODY1Myw3IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsJCX0KICsJICAg ICAgZWxzZQogKwkJewotKwkJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJCSAgaWYg KFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJCSAgICBheF9zaW1w bGUgKGV2YWxfaW5mby0+YWV4cHIsIGFvcF9iaXRfbm90KTsKICsJCSAgZWxzZQogKwkJICAgIHJl cyA9IHZhbHVlX2NvbXBsZW1lbnQgKHRtcF9yZXMpOwpAQCAtOTkxMSwyNiArODY5OCwyNSBAQCBp bmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCSAgICAgIG51bWJlciA9IHN0cnRvbCAoZXZhbF9pbmZv LT5leHBfYnVmLAogKwkJCSAgICAgICAmZXZhbF9pbmZvLT5leHBfYnVmLCAwKTsKICsKLSsJICAg ICAgaWYgKCFldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgICAgICBpZiAoIVNUQVBfQ09NUElM SU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKICsJCXJlcwogKwkJICA9IHZhbHVlX2Zyb21f bG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQsCiArCQkJCQludW1i ZXIpOwotKwotKwkgICAgICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICAgICAgZWxz ZQogKwkJYXhfY29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsKICsKICsJICAgICAg ZXZhbF9pbmZvLT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1Zik7CiAr CiArCSAgICAgIGlmIChjID09ICctJykKICsJCXsKLSsJCSAgaWYgKGV2YWxfaW5mby0+Y29tcGls aW5nX3ApCisrCQkgIGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykp CiArCQkgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfbG9nX25vdCk7CiArCQkg IGVsc2UKICsJCSAgICByZXMgPSB2YWx1ZV9uZWcgKHJlcyk7CiArCQl9CiArCSAgICAgIGVsc2UK ICsJCXsKLSsJCSAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCQkgIGlmIChTVEFQX0NP TVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCiArCQkgICAgYXhfc2ltcGxlIChldmFs X2luZm8tPmFleHByLCBhb3BfYml0X25vdCk7CiArCQkgIGVsc2UKICsJCSAgICByZXMgPSB2YWx1 ZV9jb21wbGVtZW50IChyZXMpOwpAQCAtOTk3Myw3ICs4NzU5LDcgQEAgaW5kZXggMDAwMDAwMC4u ZTI1MWJkMwogKwogKwludW1iZXIgPSBzdHJ0b2wgKGV2YWxfaW5mby0+ZXhwX2J1ZiwgJmV2YWxf aW5mby0+ZXhwX2J1ZiwgMCk7CiArCi0rCWlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwlp ZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQogKwkgIGF4X2NvbnN0 X2wgKGV2YWxfaW5mby0+YWV4cHIsIG51bWJlcik7CiArCWVsc2UKICsJICByZXMgPSB2YWx1ZV9m cm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50LApAQCAtMTAw MDEsNiArODc4NywxNCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICByZXR1cm4gcmVzOwog K30KICsKKysvKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGUg bmVjZXNzYXJ5IHR5cGUgb2YgZXZhbHVhdGlvbgorKyAgIGRlcGVuZGluZyBvbiB3aGF0IGlzIHRo ZSBuZXh0ICJ0aGluZyIgaW4gdGhlIGJ1ZmZlci4gIFZhbGlkIHZhbHVlcyBhcmU6CisrCisrICAg LSBVbmFyeSBvcGVyYXRvcnM7CisrICAgLSBJbnRlZ2VyIGNvbnN0YW50czsKKysgICAtIFJlZ2lz dGVyIGRpc3BsYWNlbWVudCwgaW5kaXJlY3Rpb24sIGFuZCBkaXJlY3QgYWNjZXNzOworKyAgIC0g UGFyZW50aGVzaXplZCBvcGVyYW5kLiAgKi8KKysKICtzdGF0aWMgc3RydWN0IHZhbHVlICoKICtz dGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAq ZXZhbF9pbmZvKQogK3sKQEAgLTEwMDM5LDEyICs4ODMzLDE2IEBAIGluZGV4IDAwMDAwMDAuLmUy NTFiZDMKICsgIHJldHVybiByZXQ7CiArfQogKworKy8qIEV2YWx1YXRpb24gZnVuY3Rpb24gZm9y IHByb2JlJ3MgYXJndW1lbnQgZXhwcmVzc2lvbnMuICBMSFMgcmVwcmVzZW50cworKyAgIHRoZSBs ZWZ0IHNpZGUgb2YgdGhlIGV4cHJlc3Npb24sIGFuZCBQUkVDIGlzIHRoZSBwcmVjZWRlbmNlIG9m IHRoZQorKyAgIGxhc3Qgb3BlcmF0b3IgaWRlbnRpZmllZCBiZWZvcmUgY2FsbGluZyB0aGUgZnVu Y3Rpb24uICAqLworKwogK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgogK3N0YXBfZXZhbHVhdGVfcHJv YmVfYXJndW1lbnRfMiAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8sCiAr CQkJCXN0cnVjdCB2YWx1ZSAqbGhzLCBpbnQgcHJlYykKICt7CiArICBzdHJ1Y3QgdmFsdWUgKnJo cyA9IE5VTEw7Ci0rICBpbnQgY29tcGlsaW5nX3AgPSBldmFsX2luZm8tPmNvbXBpbGluZ19wOwor KyAgaW50IGNvbXBpbGluZ19wID0gU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2lu Zm8pOwogKwogKyAgLyogVGhpcyBpcyBhbiBvcGVyYXRvci1wcmVjZWRlbmNlIHBhcnNlciBhbmQg ZXZhbHVhdG9yLgogKwpAQCAtMTAxMzcsNyArODkzNSw2IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFi ZDMKICsvKiBUaGlzIGZ1bmN0aW9uIGZpbGxzIHRoZSBuZWNlc3NhcnkgYXJndW1lbnRzIGZvciB0 aGUgZXZhbHVhdGlvbiBmdW5jdGlvbgogKyAgIHRvIHdvcmsuICAqLwogKwotKyNkZWZpbmUgVEVT VCAwCiArc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiArc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVu dF8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICsJCQkJY29uc3Qgc3RydWN0IHN0YXBfcHJv YmUgKnByb2JlLApAQCAtMTAxNDcsMTMgKzg5NDQsNiBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQz CiArICBzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gZXZhbF9pbmZvOwogKyAgY2hhciAqcyA9 IChjaGFyICopIHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmFyZ19zdHI7CiArICBzdHJ1Y3Qg dmFsdWUgKnJlcywgKnZzWzRdOwotKyNpZiBURVNUIC8qVEVTVElORyovCi0rICBjb25zdCBjaGFy ICphcmdzWzRdID0geyAiJDIiLAotKyAgICAgICIkMiArICQzICogJDQgKyAkNSIsCi0rICAgICAg Ii0oJDIgKyAkMykiLAotKyAgICAgICIofigkMikgKiAkMykgLyAoJDEgKyAkMSkiIH07Ci0rICBp bnQgaTsKLSsjZW5kaWYKICsKICsgIC8qIEZpbGxpbmcgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZv ciBldmFsdWF0aW9uIGZ1bmN0aW9uLiAgKi8KICsgIGV2YWxfaW5mby5zYXZlZF9leHByID0gczsK QEAgLTEwMTYyLDIzICs4OTUyLDExIEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICsgIGV2YWxf aW5mby5mcmFtZSA9IGZyYW1lOwogKyAgZXZhbF9pbmZvLmJpdG5lc3MgPSBwcm9iZS0+cGFyc2Vk X2FyZ3MtPmFyZ1tuXS5iaXRuZXNzOwogKyAgLyogV2UgYXJlIG5vdCBjb21waWxpbmcgdG8gYW4g YWdlbnQgZXhwcmVzc2lvbi4gICovCi0rICBldmFsX2luZm8uY29tcGlsaW5nX3AgPSAwOwogKyAg ZXZhbF9pbmZvLmFleHByID0gTlVMTDsKICsgIGV2YWxfaW5mby5hdmFsdWUgPSBOVUxMOwogKwog KyAgcmVzID0gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yICgmZXZhbF9pbmZvLAogKwkJ CQkJLypsaHM9Ki9OVUxMLCAvKnByZWM9Ki8wKTsKLSsjaWYgVEVTVCAvKiBURVNUSU5HICovCi0r ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQotKyAgICB7Ci0rICAgICAgZXZhbF9pbmZvLnNhdmVk X2V4cHIgPSAoY29uc3QgY2hhciAqKSBhcmdzW2ldOwotKyAgICAgIGV2YWxfaW5mby5leHBfYnVm ID0gKGNoYXIgKikgYXJnc1tpXTsKLSsgICAgICB2c1tpXSA9IHN0YXBfZXZhbHVhdGVfcHJvYmVf YXJndW1lbnRfMiAoJmV2YWxfaW5mbywKLSsJCQkJCSAgICAgIC8qbGhzPSovTlVMTCwgLypwcmVj PSovMCk7Ci0rCi0rICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rkb3V0LCAiJWxkXG4i LCB2YWx1ZV9hc19sb25nICh2c1tpXSkpOwotKyAgICB9Ci0rI2VuZGlmCiArCiArICBpZiAoIXJl cykKICsgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBldmFsdWF0ZSBleHByZXNzaW9uIGAlcycuIiks CkBAIC0xMDE4Nyw2ICs4OTY1LDggQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJkMwogKyAgcmV0dXJu IHJlczsKICt9CiArCisrLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5oLiAgKi8KKysK ICtzdHJ1Y3QgdmFsdWUgKgogK3N0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAogKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSwKQEAgLTEwMjAzLDYgKzg5ODMsOSBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICByZXR1 cm4gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8xIChvYmpmaWxlLCBwcm9iZSwgZnJhbWUs IG4pOwogK30KICsKKysvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29tcGlsZXMgdGhlIHByb2Jl J3MgYXJndW1lbnQgTiBpbnRvIGFuCisrICAgYWdlbnQgZXhwcmVzc2lvbiwgc3VpdGFibGUgZm9y IHVzaW5nIHdpdGggdHJhY2Vwb2ludHMuICAqLworKwogK3N0YXRpYyB2b2lkCiArc3RhcF9jb21w aWxlX3RvX2F4XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJICAgICAgY29uc3Qgc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlLApAQCAtMTAyMjEsNyArOTAwNCw2IEBAIGluZGV4IDAwMDAw MDAuLmUyNTFiZDMKICsgIGV2YWxfaW5mby5mcmFtZSA9IE5VTEw7CiArICBldmFsX2luZm8uYml0 bmVzcyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmJpdG5lc3M7CiArICAvKiBXZSBhcmUg Y29tcGlsaW5nIHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICAqLwotKyAgZXZhbF9pbmZvLmNvbXBp bGluZ19wID0gMTsKICsgIGV2YWxfaW5mby5hZXhwciA9IGV4cHI7CiArICBldmFsX2luZm8uYXZh bHVlID0gdmFsdWU7CiArCkBAIC0xMDI2NCw2ICs5MDQ2LDggQEAgaW5kZXggMDAwMDAwMC4uZTI1 MWJkMwogKwkJCQkgIC8qbGhzPSovTlVMTCwgLypwcmVjPSovMCk7CiArfQogKworKy8qIFNlZSBk ZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCiArdm9pZAogK3N0YXBfY29tcGlsZV90 b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkgICAgY29uc3Qgc3RydWN0IHN0YXBf cHJvYmUgKnByb2JlLApAQCAtMTAyODEsOCArOTA2NSw2IEBAIGluZGV4IDAwMDAwMDAuLmUyNTFi ZDMKICsgIHN0YXBfY29tcGlsZV90b19heF8xIChvYmpmaWxlLCBwcm9iZSwgZXhwciwgdmFsdWUs IG4pOwogK30KICsKLSsvKiBTZWUgZG9jdW1lbnRhdGlvbiBpbiBzdGFwLXByb2JlLmguICAqLwot KwogK3N0cnVjdCB2YWx1ZSAqCiArc3RhcF9zYWZlX2V2YWx1YXRlX2F0X3BjIChzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsIGludCBuKQogK3sKQEAgLTEwMzA3LDQ3ICs5MDg5LDIzIEBAIGluZGV4 IDAwMDAwMDAuLmUyNTFiZDMKICsJCQkJCQkJCSAgbik7CiArfQogKwotK3ZvaWQKLStzdGFwX2Zy ZWVfcGFyc2VkX2FyZ3MgKHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqcGFyc2VkX2FyZ3MpCi0rewot KyAgaWYgKCFwYXJzZWRfYXJncwotKyAgICAgIHx8IHBhcnNlZF9hcmdzID09ICZkdW1teV9zdGFw X2FyZ3NfaW5mbwotKyAgICAgIHx8IHBhcnNlZF9hcmdzLT5uX2FyZ3MgPT0gMCkKLSsgICAgcmV0 dXJuOwotKwotKyAgeGZyZWUgKHBhcnNlZF9hcmdzLT5hcmcpOwotKyAgeGZyZWUgKHBhcnNlZF9h cmdzKTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZXh0cmFjdCBhbiBhcmd1bWVu dCBmcm9tICpBUkcuICBBbiBhcmd1bWVudCBpcwotKyAgIGRlbGltaXRlZCBieSB3aGl0ZXNwYWNl LiAgVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgTlVMTCBpZiBubwotKyAgIGFyZ3VtZW50IHdh cyBmb3VuZCwgb3IgYW4geG1hbGxvYydkIHN0cmluZy4gICovCi0rCi0rc3RhdGljIGNoYXIgKgot K2V4dHJhY3RfYXJnIChjaGFyICoqYXJnKQotK3sKLSsgIGNoYXIgKnJlc3VsdCwgKmNvcHk7Ci0r Ci0rICBpZiAoISphcmcpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyogRmluZCB0aGUgc3Rh cnQgb2YgdGhlIGFyZ3VtZW50LiAgKi8KLSsgICphcmcgPSBza2lwX3NwYWNlcyAoKmFyZyk7Ci0r ICBpZiAoISAqKmFyZykKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICByZXN1bHQgPSAqYXJnOworKy8q IFRoaXMgZnVuY3Rpb24gZnJlZXMgdGhlIHNwYWNlIGFsbG9jYXRlZCB0byBob2xkIGluZm9ybWF0 aW9uIGFib3V0CisrICAgdGhlIHByb2JlJ3MgcGFyc2VkIGFyZ3VtZW50cy4gICovCiArCi0rICAv KiBGaW5kIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50LiAgKi8KLSsgICphcmcgPSBza2lwX3RvX3Nw YWNlICgqYXJnICsgMSk7Cisrdm9pZAorK3N0YXBfZnJlZV9wYXJzZWRfYXJncyAoc3RydWN0IHN0 YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncykKKyt7CisrICBpbnQgaTsKICsKLSsgIGlmIChyZXN1 bHQgPT0gKmFyZykKLSsgICAgcmV0dXJuIE5VTEw7CisrICBpZiAoIXBhcnNlZF9hcmdzCisrICAg ICAgfHwgcGFyc2VkX2FyZ3MgPT0gJmR1bW15X3N0YXBfYXJnc19pbmZvCisrICAgICAgfHwgcGFy c2VkX2FyZ3MtPm5fYXJncyA9PSAwKQorKyAgICByZXR1cm47CiArCi0rICBjb3B5ID0geG1hbGxv YyAoKmFyZyAtIHJlc3VsdCArIDEpOwotKyAgbWVtY3B5IChjb3B5LCByZXN1bHQsICphcmcgLSBy ZXN1bHQpOwotKyAgY29weVsqYXJnIC0gcmVzdWx0XSA9ICdcMCc7CisrICBmb3IgKGkgPSAwOyBp IDwgcGFyc2VkX2FyZ3MtPm5fYXJnczsgaSsrKQorKyAgICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFy Zyk7CiArCi0rICByZXR1cm4gY29weTsKKysgIHhmcmVlIChwYXJzZWRfYXJncyk7CiArfQogKwog Ky8qIEEgdXRpbGl0eSBzdHJ1Y3R1cmUuICBBIFZFQyBvZiB0aGVzZSBpcyBidWlsdCB3aGVuIGhh bmRsaW5nICJpbmZvCkBAIC0xMDU1MCw2ICs5MzA4LDggQEAgaW5kZXggMDAwMDAwMC4uZTI1MWJk MwogKwogKwwKICsKKysvKiBTZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2JlLmguICAqLworKwog K2NvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICoKICtmaW5kX3Byb2JlX2luX29iamZpbGUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAogKwkJICAgICAgIGNvbnN0IGNoYXIgKnByb3ZpZGVyLApAQCAt MTA1NzYsOSArOTMzNiwxMCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArICByZXR1cm4gTlVM TDsKICt9CiArCisrLyogU2VlIGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5oLiAgKi8KKysKICtz dHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKLStwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRy LCBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0ICpjYW5vbmljYWwsCi0rCQkgIGludCAqbm90X2ZvdW5k X3B0cikKKytwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRyLCBzdHJ1Y3QgbGluZXNwZWNf cmVzdWx0ICpjYW5vbmljYWwpCiArewogKyAgY2hhciAqZnVsbF9hcmcgPSBleHRyYWN0X2FyZyAo YXJncHRyKTsKICsgIGNoYXIgKmFyZyA9IHhzdHJkdXAgKGZ1bGxfYXJnKTsKQEAgLTEwNjgzLDgg Kzk0NDQsNiBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCiArICBpZiAocmVzdWx0Lm5lbHRz ID09IDApCiArICAgIHsKLSsgICAgICBpZiAobm90X2ZvdW5kX3B0cikKLSsJKm5vdF9mb3VuZF9w dHIgPSAxOwogKyAgICAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCiArCQkgICBfKCJO byBwcm9iZSBtYXRjaGluZyBvYmpmaWxlPWAlcycsIHByb3ZpZGVyPWAlcycsIG5hbWU9YCVzJyIp LAogKwkJICAgb2JqZmlsZV9uYW1lID8gb2JqZmlsZV9uYW1lIDogXygiPGFueT4iKSwKQEAgLTEw NzA1LDYgKzk0NjQsOCBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiArCiArDAogKworKy8qIFNl ZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCiArY29uc3Qgc3RydWN0IHN0YXBf cHJvYmUgKgogK2ZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywgc3RydWN0IG9iamZpbGUg KipvYmpmaWxlX291dCkKICt7CkBAIC0xMDc0OSw3ICs5NTEwLDcgQEAgaW5kZXggMDAwMDAwMC4u ZTI1MWJkMwogKyAgaW50IG5fcHJvYmVzOwogKwogKyAgLyogU0VMPT0xMCBtZWFucyAiX3Byb2Jl X2FyZ2MiLiAgKi8KLSsgIGdkYl9hc3NlcnQgKHNlbCA+PSAwICYmIHNlbCA8PSAxMCk7CisrICBn ZGJfYXNzZXJ0IChzZWwgPj0gMCAmJiBzZWwgPD0gU1RBUF9NQVhfQVJHUyk7CiArCiArICBwY19w cm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAmb2JqZmlsZSk7CiArICBpZiAocGNfcHJvYmUg PT0gTlVMTCkKQEAgLTEwNzYxLDcgKzk1MjIsNiBAQCBpbmRleCAwMDAwMDAwLi5lMjUxYmQzCiAr ICBpZiAoc2VsID09IDEwKQogKyAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGlu X3R5cGUgKGFyY2gpLT5idWlsdGluX2ludCwgbl9wcm9iZXMpOwogKwotKyAgZ2RiX2Fzc2VydCAo c2VsID49IDApOwogKyAgaWYgKHNlbCA+PSBuX3Byb2JlcykKICsgICAgZXJyb3IgKF8oIkludmFs aWQgcHJvYmUgYXJndW1lbnQgJWQgLS0gcHJvYmUgaGFzICVkIGFyZ3VtZW50cyBhdmFpbGFibGUi KSwKICsJICAgc2VsLCBuX3Byb2Jlcyk7CkBAIC0xMDgxMyw2ICs5NTczLDggQEAgaW5kZXggMDAw MDAwMC4uZTI1MWJkMwogKwogKwwKICsKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgJF9wcm9iZV9h cmcqJyBzZXQgb2YgdmFyaWFibGVzLiAgKi8KKysKICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVy bmFsdmFyX2Z1bmNzIHByb2JlX2Z1bmNzID0KICt7CiArICBjb21wdXRlX3Byb2JlX2FyZywKQEAg LTEwODU2LDExICs5NjE4LDExIEBAIGluZGV4IDAwMDAwMDAuLmUyNTFiZDMKICt9CiBkaWZmIC0t Z2l0IGEvZ2RiL3N0YXAtcHJvYmUuaCBiL2dkYi9zdGFwLXByb2JlLmgKIG5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNzAwYjE5CitpbmRleCAwMDAwMDAwLi4zOTFkOTZmCiAt LS0gL2Rldi9udWxsCiArKysgYi9nZGIvc3RhcC1wcm9iZS5oCi1AQCAtMCwwICsxLDExMyBAQAot Ky8qIFN5c3RlbXRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCitAQCAtMCwwICsxLDEwOSBAQAor Ky8qIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCiArCiArICAgQ29weXJpZ2h0IChD KSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTA4ODYsNiArOTY0 OCw4IEBAIGluZGV4IDAwMDAwMDAuLmQ3MDBiMTkKICtzdHJ1Y3QgYXhzX3ZhbHVlOwogK3N0cnVj dCBsaW5lc3BlY19yZXN1bHQ7CiArCisrLyogTWFpbiBzdHJ1Y3R1cmUgd2hpY2ggaG9sZHMgaW5m b3JtYXRpb24gYWJvdXQgYSBTeXN0ZW1UYXAgcHJvYmUuICAqLworKwogK3N0cnVjdCBzdGFwX3By b2JlCiArewogKyAgLyogVGhlIHByb3ZpZGVyIG9mIHRoaXMgcHJvYmUuICAqLwpAQCAtMTA5MTcs OCArOTY4MSw3IEBAIGluZGV4IDAwMDAwMDAuLmQ3MDBiMTkKICsgICBlcnJvci4gICovCiArCiAr ZXh0ZXJuIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoq YXJncHRyLAotKwkJCQkJCSAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdCAqY2Fub24sCi0rCQkJCQkJ ICBpbnQgKm5vdF9mb3VuZF9wdHIpOworKwkJCQkJCSAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdCAq Y2Fub24pOwogKwogKy8qIFNlYXJjaCBPQkpGSUxFIGZvciBhIHByb2JlIHdpdGggdGhlIGdpdmVu IFBST1ZJREVSIGFuZCBOQU1FLiAgSWYgYQogKyAgIHByb2JlIGlzIGZvdW5kLCByZXR1cm4gaXQu ICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLwpAQCAtMTA5MzQsMTEgKzk2 OTcsNiBAQCBpbmRleCAwMDAwMDAwLi5kNzAwYjE5CiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdGFw X3Byb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIgcGMsCiArCQkJCQkJICBzdHJ1Y3Qg b2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKICsKLSsvKiBHaXZlbiBQUk9CRSwgdGhpcyBmdW5jdGlv biB3aWxsIHBhcnNlIGl0cyBhcmd1bWVudHMgYW5kIGZpbGwgdGhlCi0rICAgYHN0cnVjdCBzdGFw X2FyZ3NfaW5mbycgd2l0aCBwcm9wZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlbS4gICovCi0rCi0r ZXh0ZXJuIHZvaWQgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2Jl ICpwcm9iZSk7Ci0rCiArLyogR2l2ZW4gUFJPQkUsIHJldHVybnMgdGhlIG51bWJlciBvZiBhcmd1 bWVudHMgcHJlc2VudCBpbiB0aGF0IHByb2JlJ3MKICsgICBhcmd1bWVudCBzdHJpbmcuICAqLwog KwpAQCAtMTEwNTMsMjIgKzk4MTEsOCBAQCBpbmRleCBhMDE1MWVhLi43NTJjNDZhIDEwMDY0NAog ICAgLyogVGhlICJxdWljayIgKGFrYSBwYXJ0aWFsKSBzeW1ib2wgZnVuY3Rpb25zIGZvciB0aGlz IHN5bWJvbAogICAgICAgcmVhZGVyLiAgKi8KICAgIGNvbnN0IHN0cnVjdCBxdWlja19zeW1ib2xf ZnVuY3Rpb25zICpxZjsKLWRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2Mu YwotaW5kZXggNzRlNDk0MS4uNjZjMmYwNSAxMDA2NDQKLS0tLSBhL2dkYi9zeW1taXNjLmMKLSsr KyBiL2dkYi9zeW1taXNjLmMKLUBAIC0yNjUsNiArMjY1LDkgQEAgZHVtcF9tc3ltYm9scyAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCB1aV9maWxlICpvdXRmaWxlKQotIAljYXNlIG1z dF90ZXh0OgotIAkgIG1zX3R5cGUgPSAnVCc7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgbXN0X3RleHRf Z251X2lmdW5jOgotKwkgIG1zX3R5cGUgPSAnaSc7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgbXN0X3Nv bGliX3RyYW1wb2xpbmU6Ci0gCSAgbXNfdHlwZSA9ICdTJzsKLSAJICBicmVhazsKIGRpZmYgLS1n aXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDMwNjFmM2MuLjBiY2JiZjcg MTAwNjQ0CitpbmRleCA4YWE2OTJkLi4wYmNiYmY3IDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5j CiArKysgYi9nZGIvc3ltdGFiLmMKIEBAIC03NzAsNiArNzcwLDcgQEAgaW5pdF9zYWwgKHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKQEAgLTExMDc5LDc4ICs5ODIzLDExIEBAIGluZGV4IDMw NjFmM2MuLjBiY2JiZjcgMTAwNjQ0CiAgfQogIAwKICAKLUBAIC0zMDA2LDcgKzMwMDcsNyBAQCBz ZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVz LCBjaGFyICpmaWxlc1tdLAotICAgc3RhdGljIGNvbnN0IGVudW0gbWluaW1hbF9zeW1ib2xfdHlw ZSB0eXBlczNbXQotICAgICA9IHttc3RfZmlsZV9kYXRhLCBtc3Rfc29saWJfdHJhbXBvbGluZSwg bXN0X2FicywgbXN0X3Vua25vd259OwotICAgc3RhdGljIGNvbnN0IGVudW0gbWluaW1hbF9zeW1i b2xfdHlwZSB0eXBlczRbXQotLSAgICA9IHttc3RfZmlsZV9ic3MsIG1zdF90ZXh0LCBtc3RfYWJz LCBtc3RfdW5rbm93bn07Ci0rICAgID0ge21zdF9maWxlX2JzcywgbXN0X3RleHRfZ251X2lmdW5j LCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3Vy dHlwZTsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMjsKLSAgIGVudW0gbWlu aW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKIGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9n ZGIvc3ltdGFiLmgKLWluZGV4IGU5NDZjNjUuLjYyMzlmN2YgMTAwNjQ0CitpbmRleCBhYmU1ZTg2 Li42MjM5ZjdmIDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5oCiArKysgYi9nZGIvc3ltdGFiLmgK LUBAIC0yOTAsNiArMjkwLDkgQEAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlCi0gewotICAgbXN0 X3Vua25vd24gPSAwLAkJLyogVW5rbm93biB0eXBlLCB0aGUgZGVmYXVsdCAqLwotICAgbXN0X3Rl eHQsCQkJLyogR2VuZXJhbGx5IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zICovCi0rICBtc3RfdGV4 dF9nbnVfaWZ1bmMsCQkvKiBFeGVjdXRhYmxlIGNvZGUgcmV0dXJuaW5nIGFkZHJlc3MKLSsJCQkJ ICAgb2YgZXhlY3V0YWJsZSBjb2RlICovCi0rICBtc3Rfc2xvdF9nb3RfcGx0LAkJLyogR09UIGVu dHJpZXMgZm9yIC5wbHQgc2VjdGlvbnMgKi8KLSAgIG1zdF9kYXRhLAkJCS8qIEdlbmVyYWxseSBp bml0aWFsaXplZCBkYXRhICovCi0gICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmluaXRpYWxp emVkIGRhdGEgKi8KLSAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChub25yZWxv Y2F0YWJsZSkgKi8KLUBAIC05NTMsNiArOTU2LDExIEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpm aW5kX3BjX2Z1bmN0aW9uIChDT1JFX0FERFIpOwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpm aW5kX3BjX3NlY3RfZnVuY3Rpb24gKENPUkVfQUREUiwgc3RydWN0IG9ial9zZWN0aW9uICopOwot IAotK2V4dGVybiBpbnQgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9pZnVuYyAoQ09SRV9B RERSIHBjLCBjaGFyICoqbmFtZSwKLSsJCQkJCSAgICAgICBDT1JFX0FERFIgKmFkZHJlc3MsCi0r CQkJCQkgICAgICAgQ09SRV9BRERSICplbmRhZGRyLAotKwkJCQkJICAgICAgIGludCAqaXNfZ251 X2lmdW5jX3ApOwotKwotIC8qIGxvb2t1cCBmdW5jdGlvbiBmcm9tIGFkZHJlc3MsIHJldHVybiBu YW1lLCBzdGFydCBhZGRyIGFuZCBlbmQgYWRkci4gICovCi0gCi0gZXh0ZXJuIGludCBmaW5kX3Bj X3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiwgY2hhciAqKiwgQ09SRV9BRERSICosCi1AQCAt MTAzNCw2ICsxMDQyLDM1IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvb2t1cF9t aW5pbWFsX3N5bWJvbF9ieV9wY19uYW1lCi0gCi0gZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIpOwotIAotK2V4dGVybiBp bnQgaW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBwYyk7Ci0rCi0rLyogRnVuY3Rpb25zIGZv ciByZXNvbHZpbmcgU1RUX0dOVV9JRlVOQyBzeW1ib2xzIHdoaWNoIGFyZSBpbXBsZW1lbnRlZCBv bmx5Ci0rICAgZm9yIEVMRiBzeW1ib2wgZmlsZXMuICAqLwotKwotK3N0cnVjdCBnbnVfaWZ1bmNf Zm5zCi0rewotKyAgLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9hZGRyIGZvciBpdHMgcmVh bCBpbXBsZW1lbnRhdGlvbi4gICovCi0rICBDT1JFX0FERFIgKCpnbnVfaWZ1bmNfcmVzb2x2ZV9h ZGRyKSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYyk7Ci0rCi0rICAvKiBT ZWUgZWxmX2dudV9pZnVuY19yZXNvbHZlX25hbWUgZm9yIGl0cyByZWFsIGltcGxlbWVudGF0aW9u LiAgKi8KLSsgIGludCAoKmdudV9pZnVuY19yZXNvbHZlX25hbWUpIChjb25zdCBjaGFyICpmdW5j dGlvbl9uYW1lLAotKwkJCQkgQ09SRV9BRERSICpmdW5jdGlvbl9hZGRyZXNzX3ApOwotKwotKyAg LyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCBmb3IgaXRzIHJlYWwgaW1wbGVtZW50 YXRpb24uICAqLwotKyAgdm9pZCAoKmdudV9pZnVuY19yZXNvbHZlcl9zdG9wKSAoc3RydWN0IGJy ZWFrcG9pbnQgKmIpOwotKwotKyAgLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJu X3N0b3AgZm9yIGl0cyByZWFsIGltcGxlbWVudGF0aW9uLiAgKi8KLSsgIHZvaWQgKCpnbnVfaWZ1 bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3ApIChzdHJ1Y3QgYnJlYWtwb2ludCAqYik7Ci0rfTsKLSsK LSsjZGVmaW5lIGdudV9pZnVuY19yZXNvbHZlX2FkZHIgZ251X2lmdW5jX2Zuc19wLT5nbnVfaWZ1 bmNfcmVzb2x2ZV9hZGRyCi0rI2RlZmluZSBnbnVfaWZ1bmNfcmVzb2x2ZV9uYW1lIGdudV9pZnVu Y19mbnNfcC0+Z251X2lmdW5jX3Jlc29sdmVfbmFtZQotKyNkZWZpbmUgZ251X2lmdW5jX3Jlc29s dmVyX3N0b3AgZ251X2lmdW5jX2Zuc19wLT5nbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcAotKyNkZWZp bmUgZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIFwKLSsgIGdudV9pZnVuY19mbnNfcC0+ Z251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wCi0rCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCBn bnVfaWZ1bmNfZm5zICpnbnVfaWZ1bmNfZm5zX3A7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBtaW5pbWFs X3N5bWJvbCAqCi0gICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9hbmRfb2JqZmlsZSAoY29uc3Qg Y2hhciAqLAotIAkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKiopOwotQEAgLTEwNzIsNiArMTEw OSwxMCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lCitAQCAtMTEwOSw2ICsxMTA5LDEwIEBAIHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUKICAgIENPUkVfQUREUiBlbmQ7CiAgICBpbnQgZXhwbGljaXRf cGM7CiAgICBpbnQgZXhwbGljaXRfbGluZTsKQEAgLTEyMzgzLDI2NCArMTEwNjAsNiBAQCBpbmRl eCBkNThjNTE5Li5hYmIxYjA1IDEwMDY0NAogICAgICB9CiAgCiAgI3Rlc3Qgc2hvdyBkaXJlY3Rv cmllcwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYzY3MTBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwotQEAgLTAsMCArMSwzMyBAQAotKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2V4dGVy biB2b2xhdGlsZSBpbnQgZ251X2lmdW5jX2luaXRpYWxpemVkOwotK2V4dGVybiBpbnQgaW5pdF9z dHViIChpbnQgYXJnKTsKLStleHRlcm4gaW50IGZpbmFsIChpbnQgYXJnKTsKLSsKLSt0eXBlZGVm IGludCAoKmZpbmFsX3QpIChpbnQgYXJnKTsKLSsKLSthc20gKCIudHlwZSBnbnVfaWZ1bmMsIEBn bnVfaW5kaXJlY3RfZnVuY3Rpb24iKTsKLSsKLStmaW5hbF90Ci0rZ251X2lmdW5jICh2b2lkKQot K3sKLSsgIGlmICghIGdudV9pZnVuY19pbml0aWFsaXplZCkKLSsgICAgcmV0dXJuIGluaXRfc3R1 YjsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIGZpbmFsOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUt aWZ1bmMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBlZTc0MWYKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKLUBA IC0wLDAgKzEsNjEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0raW50Ci0raW5pdF9zdHViIChp bnQgYXJnKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStpbnQKLStmaW5hbCAoaW50IGFyZykK LSt7Ci0rICByZXR1cm4gYXJnICsgMTsKLSt9Ci0rCi0rLyogTWFrZSBkaWZmZXJlbnRpYXRpb24g b2YgaG93IHRoZSBnbnVfaWZ1bmMgY2FsbCByZXNvbHZlcyBiZWZvcmUgYW5kIGFmdGVyCi0rICAg Y2FsbGluZyBnbnVfaWZ1bmNfcHJlLiAgVGhpcyBlbnN1cmVzIHRoZSByZXNvbHZlZCBmdW5jdGlv biBhZGRyZXNzIGlzIG5vdAotKyAgIGJlaW5nIGNhY2hlZCBhbnl3aGVyZSBmb3IgdGhlIGRlYnVn Z2luZyBwdXJwb3Nlcy4gICovCi0rCi0rdm9sYXRpbGUgaW50IGdudV9pZnVuY19pbml0aWFsaXpl ZDsKLSsKLStzdGF0aWMgdm9pZAotK2dudV9pZnVuY19wcmUgKHZvaWQpCi0rewotKyAgYXNzZXJ0 ICghZ251X2lmdW5jX2luaXRpYWxpemVkKTsKLSsKLSsgIGdudV9pZnVuY19pbml0aWFsaXplZCA9 IDE7Ci0rfQotKwotK2V4dGVybiBpbnQgZ251X2lmdW5jIChpbnQgYXJnKTsKLSsKLStpbnQKLStt YWluICh2b2lkKQotK3sKLSsgIGludCBpOwotKwotKyAgZ251X2lmdW5jX3ByZSAoKTsKLSsgIAot KyAgaSA9IGdudV9pZnVuYyAoMSk7CS8qIGJyZWFrLWF0LWNhbGwgKi8KLSsgIGFzc2VydCAoaSA9 PSAyKTsKLSsKLSsgIGdudV9pZnVuYyAoMik7CS8qIGJyZWFrLWF0LW5leHRjYWxsICovCi0rCi0r ICByZXR1cm4gMDsJLyogYnJlYWstYXQtZXhpdCAqLwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2du dS1pZnVuYy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40ZmNjM2Jm Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5l eHAKLUBAIC0wLDAgKzEsMTQ2IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKwotK2lmIHtbc2tpcF9zaGxpYl90ZXN0c119IHsKLSsgICAgcmV0dXJuIDAKLSt9 Ci0rCi0rc2V0IHRlc3RmaWxlICJnbnUtaWZ1bmMiCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0Zmls ZX0KLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke2V4ZWN1dGFibGV9Ci0rc2V0IHN0YXRpY2V4ZWN1dGFibGUgJHtleGVjdXRhYmxl fS1zdGF0aWMKLStzZXQgc3RhdGljYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7c3RhdGlj ZXhlY3V0YWJsZX0KLSsKLStzZXQgbGliZmlsZSAiJHt0ZXN0ZmlsZX0tbGliIgotK3NldCBsaWJz cmMgJHtsaWJmaWxlfS5jCi0rc2V0IGxpYl9zbyAke29iamRpcn0vJHtzdWJkaXJ9LyR7bGliZmls ZX0uc28KLSsjICRsaWJfbyBtdXN0IG5vdCBoYXZlIHtkZWJ1Z30sIGl0IHdvdWxkIG92ZXJyaWRl IHRoZSBTVFRfR05VX0lGVU5DIEVMRiBtYXJrZXJzLgotK3NldCBsaWJfbyAke29iamRpcn0vJHtz dWJkaXJ9LyR7bGliZmlsZX0ubwotKwotKyMgV2UgbmVlZCBEV0FSRiBmb3IgdGhlICJmaW5hbCIg ZnVuY3Rpb24gYXMgd2UgInN0ZXAiIGludG8gdGhlIGZ1bmN0aW9uIGFuZCBHREIKLSsjIHdvdWxk IHN0ZXAtb3ZlciB0aGUgImZpbmFsIiBmdW5jdGlvbiBpZiB0aGVyZSB3b3VsZCBiZSBubyBsaW5l IG51bWJlciBkZWJ1ZwotKyMgaW5mb3JtYXRpb24gKERXQVJGKSBhdmFpbGFibGUuCi0rIwotKyMg V2UgbXVzdCBub3QgaGF2ZSBEV0FSRiBmb3IgdGhlICJnbnVfaWZ1bmMiIGZ1bmN0aW9uIGFzIERX QVJGIGhhcyBubyB3YXkgdG8KLSsjIGV4cHJlc3MgdGhlIFNUVF9HTlVfSUZVTkMgdHlwZSBhbmQg aXQgd291bGQgYmUgY29uc2lkZXJlZCBhcyBhIHJlZ3VsYXIKLSsjIGZ1bmN0aW9uIGR1ZSB0byBE V0FSRiBieSBHREIuICBJbiBFTEYgZ251LWlmdW5jIGlzIGV4cHJlc3NlZCBieSB0aGUKLSsjIFNU VF9HTlVfSUZVTkMgdHlwZS4KLSsjCi0rIyBCb3RoIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGluIHRo ZSBzYW1lIHNoYXJlZCBsaWJyYXJ5IGZpbGUgYnV0Ci0rIyBnZGJfY29tcGlsZV9zaGxpYiBoYXMg bm8gd2F5IHRvIHNwZWNpZnkgc291cmNlLXNwZWNpZmljIGNvbXBpbGF0aW9uIG9wdGlvbnMuCi0r IwotKyMgVGhlcmVmb3JlICRsaWJmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIFNUVF9HTlVfSUZVTkMg ZnVuY3Rpb24gd2l0aCBubyBEV0FSRgotKyMgcmVmZXJlbmNpbmcgYWxsIHRoZSBvdGhlciBwYXJ0 cyBmcm9tIHRoZSBtYWluIGV4ZWN1dGFibGUgd2l0aCBEV0FSRi4KLSsKLStzZXQgbGliX29wdHMg e30KLStzZXQgZXhlY19vcHRzIFtsaXN0IGRlYnVnIHNobGliPSRsaWJfc29dCi0rCi0raWYgW2dl dF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lm IHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAkbGliX3Nv ICRsaWJfb3B0c10gIT0gIiIKLSsgICAgIHx8IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJk aXJ9LyRzcmNmaWxlICRiaW5maWxlIGV4ZWN1dGFibGUgJGV4ZWNfb3B0c10gIT0gIiJ9IHsKLSsg ICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGR5bmFtaWMgZXhlY3V0YWJsZSAkYmluZmls ZS4iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0r Ci0rY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotK2dkYl9sb2FkX3NobGlicyAke2xpYl9zb30K LSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFp biIKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKyMgVGhlICJpZiIgY29uZGl0aW9uIGlzIGFydGlm aWNhbCB0byB0ZXN0IHJlZ3Jlc3Npb24gb2YgYSBmb3JtZXIgcGF0Y2guCi0rZ2RiX2JyZWFrcG9p bnQgIltnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJdIGlmIGkgJiYgZ251 X2lmdW5jIChpKSAhPSA0MiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiYnJlYWstYXQtY2FsbCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWF0 LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKLSsKLSsjIFRlc3QgR0RCIHdpbGwgYXV0b21hdGlj YWxseSBpbmRpcmVjdCB0aGUgY2FsbC4KLSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMgKDMpIiAi ID0gNCIKLSsKLSsjIFRlc3QgR0RCIHdpbGwgc2tpcCB0aGUgZ251X2lmdW5jIHJlc29sdmVyIG9u IGZpcnN0IGNhbGwuCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiICJcclxuZmluYWwgLioiCi0rCi0rIyBU ZXN0IEdEQiB3aWxsIG5vdCBicmVhayBiZWZvcmUgdGhlIGZpbmFsIGNob3NlbiBpbXBsZW1lbnRh dGlvbi4KLSsKLSsjIEFsc28gdGVzdCBhIGZvcm1lciBwYXRjaCByZWdyZXNzaW9uOgotKyMgQ29u dGludWluZy4KLSsjIEVycm9yIGluIHRlc3RpbmcgYnJlYWtwb2ludCBjb25kaXRpb246Ci0rIyBB dHRlbXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuCi0r IyAKLSsjIEJyZWFrcG9pbnQgMiwgbWFpbiAoKSBhdCAuL2dkYi5iYXNlL2dudS1pZnVuYy5jOjMz Ci0rCi0rZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy5cclxuXHJcbkJyZWFrcG9pbnQg LiogKGF0fGluKSAuKmJyZWFrLWF0LW5leHRjYWxsLioiIFwKLSsJICJjb250aW51ZSB0byBicmVh ay1hdC1uZXh0Y2FsbCIKLSsKLStnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5jIgotKwotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJuZXh0Y2FsbCBnbnVfaWZ1bmMiCi0rCi0rZ2RiX3Rlc3Qg ImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGluICspP2ZpbmFsIFxcKC4qIiAibmV4dGNhbGwg Z251X2lmdW5jIHNraXBwZWQiCi0rCi0rCi0rIyBDaGVjayBhbnkgY29tbWFuZHMgbm90IGRvaW5n IGFuIGluZmVyaW9yIGNhbGwgYWNjZXNzIHRoZSBhZGRyZXNzIG9mIHRoZQotKyMgU1RUX0dOVV9J RlVOQyByZXNvbHZlciwgbm90IHRoZSB0YXJnZXQgZnVuY3Rpb24uCi0rCi0raWYge1tpc3Rhcmdl dCBwb3dlcnBjNjQtKl0gJiYgW2lzX2xwNjRfdGFyZ2V0XX0gewotKyAgICAjIFdpdGggb25seSBt aW5pbWFsIHN5bWJvbHMgR0RCIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiBkZXNjcmlwdG9ycy4gIFdp dGgKLSsgICAgIyBmdWxsIGRlYnVnIGluZm8gdGhlIGZ1bmN0aW9uIGNvZGUgd291bGQgYmUgZGlz cGxheWVkLgotKyAgICBzZXQgZnVuY19wcmVmaXgge1wufQotK30gZWxzZSB7Ci0rICAgIHNldCBm dW5jX3ByZWZpeCB7fQotK30KLSsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7PHRleHQg Z251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhcWzAtOWEt ZlxdKyA8JHtmdW5jX3ByZWZpeH1nbnVfaWZ1bmM+IiAicCBnbnVfaWZ1bmMgZXhlY3V0aW5nIgot K2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIg ImluZm8gc3ltIGdudV9pZnVuYyBleGVjdXRpbmciCi0rCi0rc2V0IHRlc3QgImluZm8gYWRkciBn bnVfaWZ1bmMiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIlN5 bWJvbCBcImdudV9pZnVuY1wiIGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAuKiRnZGJfcHJvbXB0 ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhw ZWN0X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxn bnVfaWZ1bmMtYWRkcmVzcz4iCi0rCi0rCi0rIyBUZXN0IHN0YXRpY2FsbHkgbGlua2VkIGlmdW5j IHJlc29sdmluZyBkdXJpbmcgaW5mZXJpb3Igc3RhcnQuCi0rIyBodHRwczovL2J1Z3ppbGxhLnJl ZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYyNDk2NwotKwotK2lmICFbdGFyZ2V0X2luZm8gZXhp c3RzIGdkYl9zdHViXSB7Ci0rCi0rICAgICMgQ29tcGlsZSAkc3RhdGljYmluZmlsZSBzZXBhcmF0 ZWx5IGFzIGl0IG1heSBleGl0IG9uIGVycm9yIChsZC8xMjU5NSkuCi0rCi0rICAgIGlmIHsgW2dk Yl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJGxpYnNyYyAkbGliX28gb2JqZWN0IHt9XSAh PSAiIgotKwkgfHwgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyRzcmNmaWxlICRs aWJfbyIgJHN0YXRpY2JpbmZpbGUgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsJdW50 ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIHN0YXRpYyBleGVjdXRhYmxlICRzdGF0aWNiaW5maWxl LiIKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSsKLSsgICAgY2xlYW5fcmVzdGFydCAkc3RhdGljZXhl Y3V0YWJsZQotKwotKyAgICBnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5jIgotKyAgICBnZGJfYnJl YWtwb2ludCAibWFpbiIKLSsgICAgZ2RiX3J1bl9jbWQKLSsgICAgZ2RiX3Rlc3QgIiIgIkJyZWFr cG9pbnQgXFswLTlcXSosIG1haW4gLioiICJzdGF0aWMgZ251X2lmdW5jIgotK30KIGRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKIG5l dyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5lZWI3Yjg1CkBAIC0xMzEzMiw4OSAr MTE1NTEsNiBAQCBpbmRleCAwMDAwMDAwLi41ZGE3Mzc4CiArZ2RiX3Rlc3QgInAgdGVtcDEiICIg PSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKICtnZGJfdGVz dCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRl bXAyIgogK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNl Y29uZDogcHJpbnQgdGVtcDMiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWRlbGV0ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRl bGV0ZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjBjOTkyOQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0 ZS5jCi1AQCAtMCwwICsxLDMzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCwgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCi0rCi0rdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotKyAgdm9sYXRpbGUgaW50IHgg PSAwOwotKwotKyAgeCsrOwkvKiBicmVhay1oZXJlICovCi0rICB4Kys7Ci0rfQotKwotK2ludAot K21haW4gKHZvaWQpCi0rewotKyAgZnVuYyAoKTsKLSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2FhZGY0ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5leHAKLUBAIC0wLDAgKzEsMzgg QEAKLSsjIENvcHlyaWdodCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgIndh dGNocG9pbnQtZGVsZXRlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgeyBbcHJlcGFyZV9mb3Jf dGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7Ci0rICAg IHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBJdCBp cyBtb3JlIGNvbXBhdGlibGUgdGhpcyB3YXkuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2Fu LXVzZS1ody13YXRjaHBvaW50cyAwIgotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0rIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJlbnQgZnJhbWUgdG8gY3JlYXRl IHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29wZS4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgotKwotK2dkYl90ZXN0ICJ3YXRjaCB4IiB7V2F0 Y2hwb2ludCBbMC05XSs6IHh9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkZWxldGUgJGJwbnVt fQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVydGhyb3cuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKIGluZGV4IDg5YzAyZDYuLmE5 NzBiYjkgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4 cApAQCAtMTYwNDMsNyArMTQzNzksNyBAQCBpbmRleCA4OTFkYTM3Li4yMzZjNWNhIDEwMDY0NAog ICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCiAgfSAgIAogZGlmZiAtLWdpdCBhL2dkYi90aHJl YWQuYyBiL2dkYi90aHJlYWQuYwotaW5kZXggNmFkMTgwNy4uOTFmZTA1NiAxMDA2NDQKK2luZGV4 IDZhZDE4MDcuLmFlZjlkY2UgMTAwNjQ0CiAtLS0gYS9nZGIvdGhyZWFkLmMKICsrKyBiL2dkYi90 aHJlYWQuYwogQEAgLTE0MzgsNyArMTQzOCw4IEBAIHVwZGF0ZV90aHJlYWRfbGlzdCAodm9pZCkK QEAgLTE2MDU2LDEwICsxNDM5MiwxMiBAQCBpbmRleCA2YWQxODA3Li45MWZlMDU2IDEwMDY0NAog IHsKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9wdGlkIChpbmZlcmlv cl9wdGlkKTsKICAKLUBAIC0xNDQ5LDYgKzE0NTAsMTMgQEAgdGhyZWFkX2lkX21ha2VfdmFsdWUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKK0BAIC0x NDQ5LDYgKzE0NTAsMTUgQEAgdGhyZWFkX2lkX21ha2VfdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKICAvKiBDb21tYW5kcyB3aXRoIGEgcHJl Zml4IG9mIGB0aHJlYWQnLiAgKi8KICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqdGhyZWFkX2Nt ZF9saXN0ID0gTlVMTDsKICAKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBgdGhyZWFkJyB2YXJpYWJs ZS4gICovCisrCiArc3RhdGljIHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyB0aHJlYWRfZnVuY3Mg PQogK3sKICsgIHRocmVhZF9pZF9tYWtlX3ZhbHVlLApAQCAtMTYwNzAsNyArMTQ0MDgsNyBAQCBp bmRleCA2YWQxODA3Li45MWZlMDU2IDEwMDY0NAogIHZvaWQKICBfaW5pdGlhbGl6ZV90aHJlYWQg KHZvaWQpCiAgewotQEAgLTE0OTQsNSArMTUwMiw1IEBAIFNob3cgcHJpbnRpbmcgb2YgdGhyZWFk IGV2ZW50cyAoc3VjaCBhcyB0aHJlYWQgc3RhcnQgYW5kIGV4aXQpLiIpLCBOVUxMLAorQEAgLTE0 OTQsNSArMTUwNCw1IEBAIFNob3cgcHJpbnRpbmcgb2YgdGhyZWFkIGV2ZW50cyAoc3VjaCBhcyB0 aHJlYWQgc3RhcnQgYW5kIGV4aXQpLiIpLCBOVUxMLAogICAgICAgICAgIHNob3dfcHJpbnRfdGhy ZWFkX2V2ZW50cywKICAgICAgICAgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50bGlzdCk7CiAg CkBAIC0xNjA5Miw3ICsxNDQzMCw3IEBAIGluZGV4IGEyNTU1MGYuLjg3ZjBiNDEgMTAwNjQ0CiAg ICAvKiBXaXRoIG11bHRpcGxlIHRocmVhZHMgcnVubmluZyB3aGlsZSB0aGUgb25lIHdlJ3JlIGV4 YW1pbmluZyBpcwogICAgICAgc3RvcHBlZCwgdGhlIGRjYWNoZSBjYW4gZ2V0IHN0YWxlIHdpdGhv dXQgdXMgYmVpbmcgYWJsZSB0byBkZXRlY3QKIGRpZmYgLS1naXQgYS9nZGIvdHJhY2Vwb2ludC5j IGIvZ2RiL3RyYWNlcG9pbnQuYwotaW5kZXggM2FlMzVkMC4uZDNjZDU5MyAxMDA2NDQKK2luZGV4 IDNhZTM1ZDAuLjFjYjM5ZWEgMTAwNjQ0CiAtLS0gYS9nZGIvdHJhY2Vwb2ludC5jCiArKysgYi9n ZGIvdHJhY2Vwb2ludC5jCiBAQCAtMTYwMCw2ICsxNjAwLDggQEAgc3RhcnRfdHJhY2luZyAodm9p ZCkKQEAgLTE2MTUzLDEwICsxNDQ5MSwxMiBAQCBpbmRleCAzYWUzNWQwLi5kM2NkNTkzIDEwMDY0 NAogIHsKICAgIExPTkdFU1Qgc2l6ZTsKICAgIGdkYl9ieXRlICpidWY7Ci1AQCAtNDY3Niw2ICs0 NzAzLDEzIEBAIHRyYWNlZnJhbWVfYXZhaWxhYmxlX21lbW9yeSAoVkVDKG1lbV9yYW5nZV9zKSAq KnJlc3VsdCwKK0BAIC00Njc2LDYgKzQ3MDMsMTUgQEAgdHJhY2VmcmFtZV9hdmFpbGFibGVfbWVt b3J5IChWRUMobWVtX3JhbmdlX3MpICoqcmVzdWx0LAogICAgcmV0dXJuIDA7CiAgfQogIAorKy8q IEltcGxlbWVudGF0aW9uIG9mIGBzZGF0YScgdmFyaWFibGUuICAqLworKwogK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3Mgc2RhdGFfZnVuY3MgPQogK3sKICsgIHNkYXRhX21h a2VfdmFsdWUsCkBAIC0xNjE2Nyw3ICsxNDUwNyw3IEBAIGluZGV4IDNhZTM1ZDAuLmQzY2Q1OTMg MTAwNjQ0CiAgLyogbW9kdWxlIGluaXRpYWxpemF0aW9uICovCiAgdm9pZAogIF9pbml0aWFsaXpl X3RyYWNlcG9pbnQgKHZvaWQpCi1AQCAtNDY4Niw3ICs0NzIwLDcgQEAgX2luaXRpYWxpemVfdHJh Y2Vwb2ludCAodm9pZCkKK0BAIC00Njg2LDcgKzQ3MjIsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBv aW50ICh2b2lkKQogICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVu IHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0 aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCiAgICAgICBpc24ndCBhbm90aGVyIGNv bnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwpAQCAtMTYyMzQsNyArMTQ1 NzQsNyBAQCBpbmRleCAwM2U2MzMyLi5jZTZkMWUwIDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiBk aWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5kZXggZTY4OGQxOS4uZjFm YzUwNyAxMDA2NDQKK2luZGV4IDUxZDMyYjcuLjVmZWU4MDkgMTAwNjQ0CiAtLS0gYS9nZGIvdXRp bHMuYwogKysrIGIvZ2RiL3V0aWxzLmMKIEBAIC0yMjQzLDYgKzIyNDMsMzYgQEAgc2V0X2JhdGNo X2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKQEAgLTE2MzAy LDcgKzE0NjQyLDcgQEAgaW5kZXggNjhmNjQ5Zi4uYWFhNDQ4NyAxMDA2NDQKICB9CiAgCiBkaWZm IC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCi1pbmRleCBiOWY1NTA4Li4xYjdl ZDc2IDEwMDY0NAoraW5kZXggOTkxMTViNy4uZGMyNzY0NCAxMDA2NDQKIC0tLSBhL2dkYi92YWxv cHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtNDcsNiArNDcsNyBAQApAQCAtMTY0NDcsNyAr MTQ3ODcsNyBAQCBpbmRleCBiOWY1NTA4Li4xYjdlZDc2IDEwMDY0NAogIH0KICAKICAvKiBHaXZl biBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlzIGEg cG9pbnRlcgotQEAgLTM2ODgsNiArMzc3Miw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUg KmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMzY5NSw2ICszNzc5LDggQEAg dmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0 aCkKICAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91bmQs IAogIAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsKQEAgLTE2NTMwLDcgKzE0ODcwLDcgQEAg aW5kZXggMjg2ZWY5ZS4uMWZlNThiMSAxMDA2NDQKICAKICAvKiBSZWFkIExFTiBieXRlcyBvZiB0 YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUKIGRpZmYgLS1naXQg YS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0 NAoraW5kZXggMmFjYjFkZi4uNjc0NGI3NiAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5jCiArKysg Yi9nZGIvdmFsdWUuYwogQEAgLTQzLDYgKzQzLDcgQEAKQEAgLTE2NjE4LDcgKzE0OTU4LDcgQEAg aW5kZXggMmFjYjFkZi4uY2Y4ZGRhMCAxMDA2NDQKICAKICAgICAgICAvKiBUaGUgaW50ZXJuYWwg ZnVuY3Rpb24gdXNlZCB3aXRoIElOVEVSTkFMVkFSX0ZVTkNUSU9OLiAgKi8KICAgICAgICBzdHJ1 Y3QKLUBAIC0xNjI5LDE4ICsxNjcxLDM3IEBAIGNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hh ciAqbmFtZSkKK0BAIC0xNjI5LDE4ICsxNjcxLDM5IEBAIGNyZWF0ZV9pbnRlcm5hbHZhciAoY29u c3QgY2hhciAqbmFtZSkKICAvKiBDcmVhdGUgYW4gaW50ZXJuYWwgdmFyaWFibGUgd2l0aCBuYW1l IE5BTUUgYW5kIHJlZ2lzdGVyIEZVTiBhcyB0aGUKICAgICBmdW5jdGlvbiB0aGF0IHZhbHVlX29m X2ludGVybmFsdmFyIHVzZXMgdG8gY3JlYXRlIGEgdmFsdWUgd2hlbmV2ZXIKICAgICB0aGlzIHZh cmlhYmxlIGlzIHJlZmVyZW5jZWQuICBOQU1FIHNob3VsZCBub3Qgbm9ybWFsbHkgaW5jbHVkZSBh CkBAIC0xNjY0Miw2ICsxNDk4Miw4IEBAIGluZGV4IDJhY2IxZGYuLmNmOGRkYTAgMTAwNjQ0CiAg ICByZXR1cm4gdmFyOwogIH0KICAKKysvKiBTZWUgZG9jdW1lbnRhdGlvbiBpbiB2YWx1ZS5oLiAg Ki8KKysKICtpbnQKICtjb21waWxlX2ludGVybmFsdmFyX3RvX2F4IChzdHJ1Y3QgaW50ZXJuYWx2 YXIgKnZhciwKICsJCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKQEAgLTE2NjU5LDcgKzE1 MDAxLDcgQEAgaW5kZXggMmFjYjFkZi4uY2Y4ZGRhMCAxMDA2NDQKICAvKiBMb29rIHVwIGFuIGlu dGVybmFsIHZhcmlhYmxlIHdpdGggbmFtZSBOQU1FLiAgTkFNRSBzaG91bGQgbm90CiAgICAgbm9y bWFsbHkgaW5jbHVkZSBhIGRvbGxhciBzaWduLgogIAotQEAgLTE3MTMsNyArMTc3NCw4IEBAIHZh bHVlX29mX2ludGVybmFsdmFyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVy bmFsdmFyICp2YXIpCitAQCAtMTcxMyw3ICsxNzc2LDggQEAgdmFsdWVfb2ZfaW50ZXJuYWx2YXIg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKICAgICAg ICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVFOgpAQCAtMTY2Njks NyArMTUwMTEsNyBAQCBpbmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0NAogICAgICAgIGJyZWFr OwogIAogICAgICBkZWZhdWx0OgotQEAgLTE5MDksNiArMTk3MSwxMSBAQCBjbGVhcl9pbnRlcm5h bHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIpCitAQCAtMTkwOSw2ICsxOTczLDExIEBAIGNs ZWFyX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKICAgICAgICB4ZnJlZSAo dmFyLT51LnN0cmluZyk7CiAgICAgICAgYnJlYWs7CiAgCkBAIC0xNjY4MSw3ICsxNTAyMyw3IEBA IGluZGV4IDJhY2IxZGYuLmNmOGRkYTAgMTAwNjQ0CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYnJl YWs7CiAgICAgIH0KLUBAIC0xOTYzLDYgKzIwMzAsMzggQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlv biAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtMTk2Myw2ICsyMDMyLDM4IEBAIGNhbGxf aW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgcmV0dXJuICgq aWZuLT5oYW5kbGVyKSAoZ2RiYXJjaCwgbGFuZ3VhZ2UsIGlmbi0+Y29va2llLCBhcmdjLCBhcmd2 KTsKICB9CiAgCkBAIC0xNjcyMCw3ICsxNTA2Miw3IEBAIGluZGV4IDJhY2IxZGYuLmNmOGRkYTAg MTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0t IGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1F IiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2Yg dGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMjAxMCwxMSArMjEwOSwx MCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorQEAgLTIwMTAsMTEgKzIxMTEsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVl IChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBo dGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBl KSA9PSBvYmpmaWxlKQpAQCAtMTY3MzQsNyArMTUwNzYsNyBAQCBpbmRleCAyYWNiMWRmLi5jZjhk ZGEwIDEwMDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBAIC0yMDI5LDcgKzIx MjcsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFy LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMDI5LDcgKzIxMjksNyBAQCBwcmVzZXJ2 ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2 YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkg PT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtMTY3NDMsNyArMTUwODUsNyBA QCBpbmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBj YXNlIElOVEVSTkFMVkFSX1ZBTFVFOgotQEAgLTIwODAsMTQgKzIxNzgsMjIgQEAgc2hvd19jb252 ZW5pZW5jZSAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCitAQCAtMjA4MCwxNCArMjE4MCwy MiBAQCBzaG93X2NvbnZlbmllbmNlIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKICAgIGdl dF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKICAgIGZvciAodmFyID0gaW50ZXJuYWx2YXJz OyB2YXI7IHZhciA9IHZhci0+bmV4dCkKICAgICAgewpAQCAtMTY3NjksNyArMTUxMTEsNyBAQCBp bmRleCAyYWNiMWRmLi5jZjhkZGEwIDEwMDY0NAogICAgICB9CiAgICBpZiAoIXZhcnNlZW4pCiAg ICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBkZWJ1Z2dlciBjb252ZW5pZW5jZSB2YXJpYWJs ZXMgbm93IGRlZmluZWQuXG4iCi1AQCAtMzA0Nyw3ICszMTUzLDI0IEBAIHZhbHVlX2Zyb21faGlz dG9yeV9yZWYgKGNoYXIgKmgsIGNoYXIgKiplbmRwKQorQEAgLTMwNDcsNyArMzE1NSwyNCBAQCB2 YWx1ZV9mcm9tX2hpc3RvcnlfcmVmIChjaGFyICpoLCBjaGFyICoqZW5kcCkKICBzdHJ1Y3QgdmFs dWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTE2Nzk1LDcgKzE1 MTM3LDcgQEAgaW5kZXggMmFjYjFkZi4uY2Y4ZGRhMCAxMDA2NDQKICAKICAgIGlmIChUWVBFX0NP REUgKHZhbHVlX3R5cGVfYXJnX3RtcCkgPT0gVFlQRV9DT0RFX1JFRikKICAgICAgYXJnID0gdmFs dWVfYXRfbGF6eSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdWVfdHlwZV9hcmdfdG1wKSwKLUBAIC0z MTQ1LDQgKzMyNjgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CitA QCAtMzE0NSw0ICszMjcwLDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikp OwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlvbl9jb21t YW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNvbnZl bmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAs ICZjbWRsaXN0KTsKQEAgLTE2ODc4LDcgKzE1MjIwLDcgQEAgaW5kZXggMDg4OWNlZi4uNGI1MWE0 YSAxMDA2NDQKICBleHRlcm4gc3RydWN0IGludGVybmFsdmFyICpsb29rdXBfaW50ZXJuYWx2YXIg KGNvbnN0IGNoYXIgKm5hbWUpOwogIAogZGlmZiAtLWdpdCBhL2dkYi93aW5kb3dzLXRkZXAuYyBi L2dkYi93aW5kb3dzLXRkZXAuYwotaW5kZXggMzFkZGQxNC4uYjM2ZTRjYSAxMDA2NDQKK2luZGV4 IDMxZGRkMTQuLmIzMTkyNTAgMTAwNjQ0CiAtLS0gYS9nZGIvd2luZG93cy10ZGVwLmMKICsrKyBi L2dkYi93aW5kb3dzLXRkZXAuYwogQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgc3RydWN0IGx2 YWxfZnVuY3MgdGxiX3ZhbHVlX2Z1bmNzID0KQEAgLTE2ODkwLDEwICsxNTIzMiwxMiBAQCBpbmRl eCAzMWRkZDE0Li5iMzZlNGNhIDEwMDY0NAogIHsKICAgIGlmICh0YXJnZXRfaGFzX3N0YWNrICYm ICFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpKQogICAgICB7Ci1AQCAtNDI1 LDYgKzQyNSwxMyBAQCBpbml0X3czMl9jb21tYW5kX2xpc3QgKHZvaWQpCitAQCAtNDI1LDYgKzQy NSwxNSBAQCBpbml0X3czMl9jb21tYW5kX2xpc3QgKHZvaWQpCiAgICAgIH0KICB9CiAgCisrLyog SW1wbGVtZW50YXRpb24gb2YgYHRsYicgdmFyaWFibGUuICAqLworKwogK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgdGxiX2Z1bmNzID0KICt7CiArICB0bGJfbWFrZV92YWx1 ZSwKQEAgLTE2OTA0LDcgKzE1MjQ4LDcgQEAgaW5kZXggMzFkZGQxNC4uYjM2ZTRjYSAxMDA2NDQK ICB2b2lkCiAgX2luaXRpYWxpemVfd2luZG93c190ZGVwICh2b2lkKQogIHsKLUBAIC00NTEsNSAr NDU4LDUgQEAgZXZlbiBpZiB0aGVpciBtZWFuaW5nIGlzIHVua25vd24uIiksCitAQCAtNDUxLDUg KzQ2MCw1IEBAIGV2ZW4gaWYgdGhlaXIgbWVhbmluZyBpcyB1bmtub3duLiIpLAogICAgICAgdmFs dWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNo CiAgICAgICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0 ZSBzdXJlIHRoZXJlCiAgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9m IHRoZSBzYW1lIG5hbWUuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMt Zml4LWNvbmQucGF0Y2ggYi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLWZpeC1jb25kLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGJmNWMwLi4wMDAwMDAwCi0tLSBhL2dkYi1i ejUzOTU5MC1nbnUtaWZ1bmMtZml4LWNvbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCAr MCwwIEBACi0tLS0gLi9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDQtMjYgMDI6MzU6NTMuMDAwMDAw MDAwICswMjAwCi0rKysgLi9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDQtMjYgMDI6MzM6MjYuMDAw MDAwMDAwICswMjAwCi1AQCAtODQ5OSw2ICs4NDk5LDExIEBAIHVwZGF0ZV9icmVha3BvaW50X2xv Y2F0aW9ucyAoc3RydWN0IGJyZWEKLSAJewotIAkgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0g Ci0rCSAgLyogVGVtcG9yYXJ5IHdvcmthcm91bmQgYmVmb3JlIHRoZSBub24taW50cnVzaXZlIGlm dW5jIHBhdGNoIGdldHMgaW4uCi0rCSAgICAgZXhwIHBhcnNpbmcgY2FuIG5vdyBjYWxsIGluZmVy aW9yIGZ1bmN0aW9uIGludmFsaWRhdGluZwotKwkgICAgIEVYSVNUSU5HX0xPQ0FUSU9OUy4gICov Ci0rCSAgZXhpc3RpbmdfbG9jYXRpb25zID0gTlVMTDsKLSsKLSAJICBzID0gYi0+Y29uZF9zdHJp bmc7Ci0gCSAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKLSAJICAgIHsKCmRpZmYg LS1naXQgYS9nZGItZHdhcmYzLWFjY2Vzc2liaWxpdHkucGF0Y2ggYi9nZGItZHdhcmYzLWFjY2Vz c2liaWxpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NGRjMzQuLjAw MDAwMDAKLS0tIGEvZ2RiLWR3YXJmMy1hY2Nlc3NpYmlsaXR5LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsODYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTEtMDEvbXNnMDA1MDcuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggRFdBUkYtMysgRFdfQVRf YWNjZXNzaWJpbGl0eSBkZWZhdWx0IGFzc3VtcHRpb24KLQotSGksCi0KLUdEQiByZWdyZXNzZXMg b24gZGVmYXVsdCBjb21waWxlciBvcHRpb24gLWdkd2FyZi0zIG9uIGdjYy00LjYrIGFzIHRoaXMg Z2NjCi1zdGFydGVkIHRvIG9taXQgRFdfQVRfYWNjZXNzaWJpbGl0eSBmb3IgdGhlIGRlZmF1bHQg dmFsdWUgY2FzZS4gIE5vcm1hbAotdXBzdHJlYW0gZ2NjIHN0aWxsIGhhcyAtZ2R3YXJmLTIgZGVm YXVsdCAoRmVkb3JhIHVzZXMgLWdkd2FyZi0zIGRlZmF1bHQpLgotCi1ObyByZWdyZXNzaW9ucyBv biB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTUtbGludXgtZ251LgotKFRoZXJlIGFy ZSBvdGhlciByZWdyZXNzaW9ucyB0byBiZSBmaXhlZCBkdWUgdG8gZ2NjNDUtPmdjYzQ2LikKLQot SSB3aWxsIGNoZWNrIGl0IGluIGluIHNvbWUgdGltZS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi0t RkFJTDogZ2RiLmNwL2Nhc3RzLmV4cDogZHluYW1pY19jYXN0IHNpbXBsZSBkb3duY2FzdAotLUZB SUw6IGdkYi5jcC9jYXN0cy5leHA6IGR5bmFtaWNfY2FzdCBzaW1wbGUgZG93bmNhc3QgdG8gaW50 ZXJtZWRpYXRlIGNsYXNzCi0tRkFJTDogZ2RiLmNwL2Nhc3RzLmV4cDogZHluYW1pY19jYXN0IHVu aXF1ZSBkb3duY2FzdAotLUZBSUw6IGdkYi5jcC9jYXN0cy5leHA6IGR5bmFtaWNfY2FzdCB0byBz aWJsaW5nCi0tRkFJTDogZ2RiLmNwL2NsYXNzZXMuZXhwOiBwdHlwZSBjbGFzcyBkZWZhdWx0X3By aXZhdGVfY2xhc3MgLy8gd3JvbmcgYWNjZXNzIHNwZWNpZmllciBmb3IgZmllbGQ6IHB1YmxpYwot LUZBSUw6IGdkYi5jcC9jbGFzc2VzLmV4cDogcHR5cGUgY2xhc3MgZXhwbGljaXRfcHJpdmF0ZV9j bGFzcyAvLyB3cm9uZyBhY2Nlc3Mgc3BlY2lmaWVyIGZvciBmaWVsZDogcHVibGljCi0tRkFJTDog Z2RiLmNwL2NsYXNzZXMuZXhwOiBwdHlwZSBjbGFzcyBtaXhlZF9wcm90ZWN0aW9uX2NsYXNzIC8v IHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIuY3Av dmlydGZ1bmMuZXhwOiBwdHlwZSBBIC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxk OiBwdWJsaWMKLS1GQUlMOiBnZGIuY3AvdmlydGZ1bmMuZXhwOiBwdHlwZSBCIC8vIHdyb25nIGFj Y2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIuY3AvdmlydGZ1bmMu ZXhwOiBwdHlwZSBhIC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMK LS1GQUlMOiBnZGIuY3AvdmlydGZ1bmMuZXhwOiBwdHlwZSBiIC8vIHdyb25nIGFjY2VzcyBzcGVj aWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIuY3AvdmlydGZ1bmMuZXhwOiBwdHlw ZSBwQWEgLy8gd3JvbmcgYWNjZXNzIHNwZWNpZmllciBmb3IgZmllbGQ6IHB1YmxpYwotLUZBSUw6 IGdkYi5jcC92aXJ0ZnVuYy5leHA6IHB0eXBlIHBBZSAvLyB3cm9uZyBhY2Nlc3Mgc3BlY2lmaWVy IGZvciBmaWVsZDogcHVibGljCi0tRkFJTDogZ2RiLmNwL3ZpcnRmdW5jLmV4cDogcHR5cGUgcEJl IC8vIHdyb25nIGFjY2VzcyBzcGVjaWZpZXIgZm9yIGZpZWxkOiBwdWJsaWMKLS1GQUlMOiBnZGIu bWkvZ2RiNzkyLmV4cDogbGlzdCBjaGlsZHJlbiBvZiBjbGFzcyBBCi0tRkFJTDogZ2RiLm1pL2dk Yjc5Mi5leHA6IGxpc3QgY2hpbGRyZW4gb2YgQS5wdWJsaWMKLS1GQUlMOiBnZGIubWkvZ2RiNzky LmV4cDogbGlzdCBjaGlsZHJlbiBvZiBBLnByaXZhdGUKLS1GQUlMOiBnZGIubWkvZ2RiNzkyLmV4 cDogbGlzdCBjaGlsZHJlbiBvZiBBLnByb3RlY3RlZAotLUZBSUw6IGdkYi5taS9nZGI3OTIuZXhw OiBsaXN0IGNoaWxkcmVuIG9mIEEucHJvdGVjdGVkLmIKLS1GQUlMOiBnZGIubWkvZ2RiNzkyLmV4 cDogbGlzdCBjaGlsZHJlbiBvZiBBLnByb3RlY3RlZC5iLnB1YmxpYwotLUZBSUw6IGdkYi5taS9n ZGI3OTIuZXhwOiBsaXN0IGNoaWxkcmVuIG9mIEEucHJvdGVjdGVkLmIucHJpdmF0ZQotLUZBSUw6 IGdkYi5taS9nZGI3OTIuZXhwOiBsaXN0IGNoaWxkcmVuIG9mIGNsYXNzIEMKLS1GQUlMOiBnZGIu cHl0aG9uL3B5LXZhbHVlLmV4cDogcHl0aG9uIHByaW50IGJvb2woZ2RiLnBhcnNlX2FuZF9ldmFs KCdiYXNlJykuZHluYW1pY19jYXN0KGdkYi5sb29rdXBfdHlwZSgnRGVyaXZlZCcpLnBvaW50ZXIo KSkpCi0KLQotZ2RiLwotMjAxMS0wMS0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JRml4IERXQVJGLTMrIERXX0FUX2FjY2Vzc2liaWxpdHkgZGVmYXVs dCBhc3N1bXB0aW9uLgotCSogZHdhcmYycmVhZC5jIChkd2FyZjJfYWRkX2ZpZWxkKTogRml4IG5l d19maWVsZC0+YWNjZXNzaWJpbGl0eSBmb3IKLQljdS0+aGVhZGVyLnZlcnNpb24gPj0gMy4KLQot LS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTYxODYs MTMgKzYxODYsMjUgQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwg c3RydWN0IGRpZV9pbmZvICpkaWUsCi0gICAgIH0KLSAgIGZpcC0+bmZpZWxkcysrOwotIAotLSAg LyogSGFuZGxlIGFjY2Vzc2liaWxpdHkgYW5kIHZpcnR1YWxpdHkgb2YgZmllbGQuCi0tICAgICBU aGUgZGVmYXVsdCBhY2Nlc3NpYmlsaXR5IGZvciBtZW1iZXJzIGlzIHB1YmxpYywgdGhlIGRlZmF1 bHQKLS0gICAgIGFjY2Vzc2liaWxpdHkgZm9yIGluaGVyaXRhbmNlIGlzIHByaXZhdGUuICAqLwot LSAgaWYgKGRpZS0+dGFnICE9IERXX1RBR19pbmhlcml0YW5jZSkKLS0gICAgbmV3X2ZpZWxkLT5h Y2Nlc3NpYmlsaXR5ID0gRFdfQUNDRVNTX3B1YmxpYzsKLSsgIGlmIChjdS0+aGVhZGVyLnZlcnNp b24gPCAzKQotKyAgICB7Ci0rICAgICAgLyogVGhlIGRlZmF1bHQgRFdBUkYgMiBhY2Nlc3NpYmls aXR5IGZvciBtZW1iZXJzIGlzIHB1YmxpYywgdGhlIGRlZmF1bHQKLSsJIGFjY2Vzc2liaWxpdHkg Zm9yIGluaGVyaXRhbmNlIGlzIHByaXZhdGUuICAqLwotKwotKyAgICAgIGlmIChkaWUtPnRhZyAh PSBEV19UQUdfaW5oZXJpdGFuY2UpCi0rCW5ld19maWVsZC0+YWNjZXNzaWJpbGl0eSA9IERXX0FD Q0VTU19wdWJsaWM7Ci0rICAgICAgZWxzZQotKwluZXdfZmllbGQtPmFjY2Vzc2liaWxpdHkgPSBE V19BQ0NFU1NfcHJpdmF0ZTsKLSsgICAgfQotICAgZWxzZQotLSAgICBuZXdfZmllbGQtPmFjY2Vz c2liaWxpdHkgPSBEV19BQ0NFU1NfcHJpdmF0ZTsKLSsgICAgewotKyAgICAgIC8qIERXQVJGIDMg c3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFjY2Vzc2liaWxpdHkgZXhwbGljaXRseS4gICovCi0rCi0r ICAgICAgaWYgKGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX2NsYXNzX3R5cGUpCi0rCW5ld19m aWVsZC0+YWNjZXNzaWJpbGl0eSA9IERXX0FDQ0VTU19wcml2YXRlOwotKyAgICAgIGVsc2UKLSsJ bmV3X2ZpZWxkLT5hY2Nlc3NpYmlsaXR5ID0gRFdfQUNDRVNTX3B1YmxpYzsKLSsgICAgfQotICAg bmV3X2ZpZWxkLT52aXJ0dWFsaXR5ID0gRFdfVklSVFVBTElUWV9ub25lOwotIAotICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FjY2Vzc2liaWxpdHksIGN1KTsKLQoKZGlmZiAtLWdp dCBhL2dkYi1mYWxzZS1nY2Mtd2FybmluZy5wYXRjaCBiL2dkYi1mYWxzZS1nY2Mtd2FybmluZy5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJhZDA4Yy4uMDAwMDAwMAotLS0g YS9nZGItZmFsc2UtZ2NjLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww IEBACi0tLS0gZ2RiLTcuMS45MC4yMDEwMDgwNi9nZGIvaW5mY2FsbC5jLm9yaWcJMjAxMC0wOC0x MCAwMDozNDoxMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwODA2L2dkYi9p bmZjYWxsLmMJMjAxMC0wOC0xMCAwMDozNjowMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yODQsNyAr Mjg0LDcgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aQotICAgc3Ry dWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsK LSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOwotICAg c3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxMOwotLSAgQ09SRV9BRERSIGZ1bmFkZHI7Ci0r ICBDT1JFX0FERFIgZnVuYWRkciA9IDA7CS8qIEdDQyBmYWxzZSAtZnByb2ZpbGUtdXNlIHdhcm5p bmcuICAqLwotIAotICAgLyogSWYgaXQncyBhIG1lbWJlciBmdW5jdGlvbiwganVzdCBsb29rIGF0 IHRoZSBmdW5jdGlvbgotICAgICAgcGFydCBvZiBpdC4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWdj YzQ2LXR5cGVkZWYucGF0Y2ggYi9nZGItZ2NjNDYtdHlwZWRlZi5wYXRjaAppbmRleCA4YzQzZDIz Li4yOTg4ZGY5IDEwMDY0NAotLS0gYS9nZGItZ2NjNDYtdHlwZWRlZi5wYXRjaAorKysgYi9nZGIt Z2NjNDYtdHlwZWRlZi5wYXRjaApAQCAtMSwxNyArMSwyMTggQEAKLWludGVybmFsLWVycm9yOiBj b3VsZCBub3QgZmluZCBwYXJ0aWFsIERJRQotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3No b3dfYnVnLmNnaT9pZD02NzIyMzAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDExLTA0L21zZzAwMTU0Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gV29ya2Fyb3VuZCBidWdn eSBHQ0MgUFIgNDc1MTAgcHJvZHVjZWQgY29kZQorCitIaSwKKworR0NDIFBSIGRlYnVnLzQ3NTEw IGlzIGFscmVhZHkgZml4ZWQgYW5kIEdEQiBoYXMgdGhlIHByb3BlciBzdXBwb3J0IGZvciBpdDoK KwlSRkM6IHVwZGF0ZSBmb3IgR0NDIFBSIDQ3NTEwCisJaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTEtMDMvbXNnMDA5MTYuaHRtbAorCitTdGlsbCBGU0YgR0RCIEhFQUQg d2lsbCBjcmFzaCBvbiBhIGJpbmFyeSBwcm9kdWNlZCBieSBvbGRlci9idWdneSBHQ0M6CisJUmVh ZGluZyBzeW1ib2xzIGZyb20gLi4uL2djYzQ2Lm8uLi5kd2FyZjJyZWFkLmM6OTMyOTogaW50ZXJu YWwtZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHBhcnRpYWwgRElFIDB4OWEgaW4gY2FjaGUgW2Zyb20g bW9kdWxlIC4uLi9nY2M0Ni5vXQorCitXaGljaCBtYXkgbm90IGdpdmUgbXVjaCBjbHVlIHRvIHRo ZSB1c2VyLgorCitUaGUgcHJvcG9zZWQgcGF0Y2ggY291bGQgbWFrZSBmYWxzZSB3YXJuaW5ncyBp ZiBhbnkgY29kZSBvdXQgdGhlcmUgaGFzCitEV19UQUdfdHlwZWRlZiB3aXRoIGNoaWxkcmVuLCBp dCBkb2VzIG5vdCBjaGVjayBmb3Igc3BlY2lmaWMgR0NDIHZlcnNpb25zLgorU3RpbGwgc3VjaCBE V0FSRiBpcyBpbnZhbGlkLCBhbHRob3VnaCBpbiBzdWNoIGNhc2UgY29tcGxhaW50KCkgd291bGQg YmUgbW9yZQorYXBwcm9wcmlhdGUgdGhhbiB3YXJuaW5nKCkuICBEb2VzIGl0IG1ha2Ugc2Vuc2Ug dG8gZGlmZmVyZW50aWF0ZSBpdD8KKworTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQt bTMyLGk2ODZ9LWZlZG9yYTE1LWxpbnV4LWdudS4KKworCitUaGFua3MsCitKYW4KKworCitnZGIv CisyMDExLTA0LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisKKwkqIGR3YXJmMnJlYWQuYyAoc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSk6IE5ldyBmaWVs ZAorCXR5cGVkZWZfY2hpbGRyZW5fd2FybmluZ19wcmludGVkLgorCShsb2FkX3BhcnRpYWxfZGll cyk6IFJlYWQgaW4gYW55IGNoaWxkcmVuIG9mIERXX1RBR190eXBlZGVmIHdpdGgKKwlhIHdhcm5p bmcgaW4gc3VjaCBjYXNlLgorCitnZGIvdGVzdHN1aXRlLworMjAxMS0wNC0xMSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBnZGIuZHdhcmYyL2R3Mi10 eXBlZGVmLWNoaWxkcmVuLlM6IE5ldyBmaWxlLgorCSogZ2RiLmR3YXJmMi9kdzItdHlwZWRlZi1j aGlsZHJlbi5leHA6IE5ldyBmaWxlLgogCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBi L2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDZhOThkNTcuLmYzM2EzMjcgMTAwNjQ0CiAtLS0gYS9n ZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtODc5Niw4ICs4Nzk2 LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2Ri X2J5dGUgKmluZm9fcHRyLAorQEAgLTIwOSw2ICsyMDksOSBAQCBzdHJ1Y3QgZHdhcmYyX3Blcl9v YmpmaWxlCisgICAgICBvciB3ZSBhcmUgZmFraW5nIGl0IGZvciBPQkpGX1JFQUROT1cncyBzYWtl LiAgKi8KKyAgIHVuc2lnbmVkIGNoYXIgdXNpbmdfaW5kZXg7CisgCisrICAvKiBQcmludCB0aGUg R0NDIFBSIGRlYnVnLzQ3NTEwIHdhcm5pbmcgb25seSBvbmNlIHBlciBvYmpmaWxlLiAgKi8KKysg IHVuc2lnbmVkIHR5cGVkZWZfY2hpbGRyZW5fd2FybmluZ19wcmludGVkIDogMTsKKysKKyAgIC8q IFRoZSBtYXBwZWQgaW5kZXgsIG9yIE5VTEwgaWYgLmdkYl9pbmRleCBpcyBtaXNzaW5nIG9yIG5v dCBiZWluZyB1c2VkLiAgKi8KKyAgIHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4X3RhYmxlOwor IAorQEAgLTg5NTEsNyArODk1NCw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdk Yl9ieXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKICAgICAgICBpZiAocGFyZW50X2Rp ZSA9PSBOVUxMCiAgCSAgJiYgcGFydF9kaWUtPmhhc19zcGVjaWZpY2F0aW9uID09IDAKICAJICAm JiBwYXJ0X2RpZS0+aXNfZGVjbGFyYXRpb24gPT0gMAogLQkgICYmIChwYXJ0X2RpZS0+dGFnID09 IERXX1RBR190eXBlZGVmCi0tCSAgICAgIHx8IHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX2Jhc2Vf dHlwZQotKwkgICYmIChwYXJ0X2RpZS0+dGFnID09IERXX1RBR19iYXNlX3R5cGUKKysJICAmJiAo KHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX3R5cGVkZWYgJiYgIXBhcnRfZGllLT5oYXNfY2hpbGRy ZW4pCisgCSAgICAgIHx8IHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZQogIAkgICAg ICB8fCBwYXJ0X2RpZS0+dGFnID09IERXX1RBR19zdWJyYW5nZV90eXBlKSkKICAJewotIAkgIGlm IChidWlsZGluZ19wc3ltdGFiICYmIHBhcnRfZGllLT5uYW1lICE9IE5VTEwpCitAQCAtODk2NCw2 ICs4OTY3LDIwIEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICpidWZm ZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKKyAJICBjb250aW51ZTsKKyAJfQorIAorKyAgICAgIC8q IFRoZSBleGNlcHRpb24gZm9yIERXX1RBR190eXBlZGVmIHdpdGggaGFzX2NoaWxkcmVuIGFib3Zl IGlzCisrCSBhIHdvcmthcm91bmQgb2YgR0NDIFBSIGRlYnVnLzQ3NTEwLiAgR0RCIGNyYXNoZWQg b24gYnJva2VuIEdDQyBvdXRwdXQKKysJIGFzIGl0IHNraXBwZWQgY2hpbGRyZW4gb2YgRFdfVEFH X3R5cGVkZWYgYnkgdGhlIHNob3J0Y3V0IGFib3ZlIGFuZAorKwkgdGhlbiBpdCBjb3VsZCBub3Qg ZmluZCB0aGUgY2hpbGQgRElFcyByZWZlcmVuY2VkIGxhdGVyLiAgKi8KKysKKysgICAgICBpZiAo IWR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZWRlZl9jaGlsZHJlbl93YXJuaW5nX3ByaW50ZWQKKysJ ICAmJiBwYXJ0X2RpZS0+dGFnID09IERXX1RBR190eXBlZGVmICYmIHBhcnRfZGllLT5oYXNfY2hp bGRyZW4pCisrCXsKKysJICB3YXJuaW5nIChfKCJEV19UQUdfdHlwZWRlZiBoYXMgY2hpbGRlbiAt IEdDQyBQUiBkZWJ1Zy80NzUxMCBidWcgIgorKwkJICAgICAiLSBESUUgYXQgMHgleCBbaW4gbW9k dWxlICVzXSIpLAorKwkJICAgcGFydF9kaWUtPm9mZnNldCwgY3UtPm9iamZpbGUtPm5hbWUpOwor KwkgIGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZWRlZl9jaGlsZHJlbl93YXJuaW5nX3ByaW50ZWQg PSAxOworKwl9CisrCisgICAgICAgLyogSWYgd2UncmUgYXQgdGhlIHNlY29uZCBsZXZlbCwgYW5k IHdlJ3JlIGFuIGVudW1lcmF0b3IsIGFuZAorIAkgb3VyIHBhcmVudCBoYXMgbm8gc3BlY2lmaWNh dGlvbiAobWVhbmluZyBwb3NzaWJseSBsaXZlcyBpbiBhCisgCSBuYW1lc3BhY2UgZWxzZXdoZXJl KSwgdGhlbiB3ZSBjYW4gYWRkIHRoZSBwYXJ0aWFsIHN5bWJvbCBub3cKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItdHlwZWRlZi1jaGlsZHJlbi5TCitA QCAtMCwwICsxLDkyIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisr CisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysJLnNlY3Rpb24gLmRlYnVnX2luZm8KKysu TGN1MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1 MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFydDoK KysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJLkxhYmJyZXYxX2Jl Z2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkvKiBQ b2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4IDEJCQkJLyogQWJi cmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyog RFdfQVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVj ZXIgKi8KKysJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgKi8KKysKKysuTHR5cGVf aW50OgorKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCisrCS5h c2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTQJCQkvKiBEV19BVF9i eXRlX3NpemUgKi8KKysJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKworKwkudWxl YjEyOAkweDMJCQkvKiAoRElFICgweDM4KSBEV19UQUdfdHlwZWRlZikgKi8KKysJLmFzY2lpCQki bmV3XDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkubG9uZwkJLkx0eXBlX2ludCAtIC5MY3UxX2Jl Z2luCS8qIERXX0FUX3R5cGUgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFH X2Jhc2VfdHlwZSAqLworKwkuYXNjaWkJCSJpbnRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5i eXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk1CQkJLyogRFdfQVRfZW5j b2RpbmcgKi8KKysKKysJLnVsZWIxMjgJMAkJCS8qIEVuZCBvZiBEV19UQUdfdHlwZWRlZiAqLwor KwkudWxlYjEyOAkwCQkJLyogRW5kIG9mIERXX1RBR19jb21waWxlX3VuaXQgKi8KKysuTGN1MV9l bmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysu TGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxl YjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhh c19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGVi MTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19B VF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwku dWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNv ZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJ CTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweGIJ CQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRh MSAqLworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkweDMJCQkv KiAoYWJicmV2IGNvZGUpICovCisrCS51bGViMTI4CTB4MTYJCQkvKiAoVEFHOiBEV19UQUdfdHlw ZWRlZikgKi8KKysJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAqLworKwkudWxlYjEy OAkweDMJCQkvKiAoRFdfQVRfbmFtZSkgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogKERXX0ZPUk1f c3RyaW5nKSAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogKERXX0FUX3R5cGUpICovCisrCS51bGVi MTI4CTB4MTMJCQkvKiAoRFdfRk9STV9yZWY0KSAqLworKwkuYnl0ZQkJMHgwCisrCS5ieXRlCQkw eDAKKysKKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItdHlwZWRlZi1jaGlsZHJlbi5leHAKK0BAIC0wLDAgKzEsMzcgQEAKKysjIENvcHly aWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKytsb2FkX2xpYiBkd2FyZi5leHAKKysKKysjIE5vdGU6IEluc3Bp cmVkIGZyb20gZHcyLWJhc2ljLmV4cC4KKysKKysjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g b24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCisraWYgeyFbZHdh cmYyX3N1cHBvcnRdfSB7CisrICAgIHJldHVybiAwCisrfQorKworK3NldCB0ZXN0ZmlsZSAiZHcy LXR5cGVkZWYtY2hpbGRyZW4iCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUworK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ueAorKworK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgb2JqZWN0 IHtub2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfZXhpdAor K2dkYl9zdGFydAorKworK2dkYl90ZXN0ICJmaWxlICRiaW5maWxlIiBcCisrCSAid2FybmluZzog RFdfVEFHX3R5cGVkZWYgaGFzIGNoaWxkZW4gLSBHQ0MgUFIgZGVidWcvNDc1MTAgYnVnIC0gRElF IGF0IC4qIiBcCisrCSAid2FybmluZyBtZXNzYWdlIgorCgpkaWZmIC0tZ2l0IGEvZ2RiLXRlc3Qt cHAtaGludC1lcnJvci5wYXRjaCBiL2dkYi10ZXN0LXBwLWhpbnQtZXJyb3IucGF0Y2gKaW5kZXgg ZjcyN2VjYS4uOGZlY2U4NSAxMDA2NDQKLS0tIGEvZ2RiLXRlc3QtcHAtaGludC1lcnJvci5wYXRj aAorKysgYi9nZGItdGVzdC1wcC1oaW50LWVycm9yLnBhdGNoCkBAIC0yNywxMCArMjcsMTAgQEAg Z2RiL3Rlc3RzdWl0ZS8KIAkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQucHkgKGNsYXNzIHBw X2hpbnRfZXJyb3IpOiBOZXcuCiAJKHJlZ2lzdGVyX3ByZXR0eV9wcmludGVycyk6IFJlZ2lzdGVy IGl0LgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktcHJldHR5cHJpbnQuYworSW5kZXg6IGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50 LmMJMjAxMS0wMS0wMSAxNjozMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTEtMDEt MTcgMTY6MDg6MTYuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTEtMDMtMzEgMjE6 NTk6MjYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDExLTA0LTExIDE5OjQyOjEwLjAwMDAw MDAwMCArMDIwMAogQEAgLTQ0LDYgKzQ0LDEwIEBAIHN0cnVjdCBsYXp5c3RyaW5nIHsKICAgIGNv bnN0IGNoYXIgKmxhenlfc3RyOwogIH07CkBAIC00MywxNyArNDMsMTcgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmMK ICBzdHJ1Y3QgUyA6IHB1YmxpYyBzIHsKICAgIGludCB6czsKIEBAIC0yMTUsNiArMjE5LDcgQEAg bWFpbiAoKQotICAgbm9zdHJpbmdfdHlwZSBuc3R5cGU7CisgICBub3N0cmluZ190eXBlIG5zdHlw ZSwgbnN0eXBlMjsKICAgIHN0cnVjdCBucyBucywgbnMyOwogICAgc3RydWN0IGxhenlzdHJpbmcg ZXN0cmluZywgZXN0cmluZzI7CiArICBzdHJ1Y3QgaGludF9lcnJvciBoaW50X2Vycm9yOwogIAog ICAgbnN0eXBlLmVsZW1lbnRzID0gbmFycmF5OwogICAgbnN0eXBlLmxlbiA9IDA7Ci1JbmRleDog Z2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJp bnQuZXhwCitJbmRleDogZ2RiLTcuMi45MC4yMDExMDQxMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktcHJldHR5cHJpbnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDEx Ny5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAJMjAxMS0w MS0wMSAxNjozMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAJMjAxMS0wMS0xNyAxNjow ODozMy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjkwLjIwMTEwNDExLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTAzLTA3IDE3OjAzOjAz LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAkyMDExLTA0LTExIDE5OjQxOjU2LjAwMDAwMDAw MCArMDIwMAogQEAgLTk3LDYgKzk3LDggQEAgcHJvYyBydW5fbGFuZ190ZXN0cyB7bGFuZ30gewog ICAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBwcF9sc19lbmNvZGluZyA9ICdVVEYtOCci CiAgICAgIGdkYl90ZXN0ICJwcmludCBlc3RyaW5nMiIgIlwiZW1iZWRkZWQgXCIsIDxpbmNvbXBs ZXRlIHNlcXVlbmNlIFxcXFwzMDI+IgpAQCAtNjMsMTEgKzYzLDExIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAK ICAgICAgZ2RiX3Rlc3QgInByaW50IGMiICIgPSBjb250YWluZXIgXCJjb250YWluZXJcIiB3aXRo IDIgZWxlbWVudHMgPSB7JG5sICouMC4gPSAyMywkbmwgKi4xLiA9IDcyJG5sfSIKICAKICAgICAg Z2RiX3Rlc3QgInByaW50IG5zdHlwZSIgIiA9IHskbmwgKi4wLiA9IDcsJG5sICouMS4gPSA0MiRu bH0iCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktcHJldHR5cHJpbnQucHkKK0luZGV4OiBnZGItNy4yLjkwLjIwMTEwNDExL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5weQogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMTAxMTcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQu cHkJMjAxMS0wMS0wMSAxNjozMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5weQkyMDExLTAx LTE3IDE2OjA4OjE2LjAwMDAwMDAwMCArMDEwMAotQEAgLTE1Niw2ICsxNTYsMTggQEAgY2xhc3Mg cHBfbHM6CistLS0gZ2RiLTcuMi45MC4yMDExMDQxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1wcmV0dHlwcmludC5weQkyMDExLTAzLTMxIDIxOjU5OjI2LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjIuOTAuMjAxMTA0MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXBy ZXR0eXByaW50LnB5CTIwMTEtMDQtMTEgMTk6NDE6NTYuMDAwMDAwMDAwICswMjAwCitAQCAtMTYx LDYgKzE2MSwxOCBAQCBjbGFzcyBwcF9sczoKICAgICAgZGVmIGRpc3BsYXlfaGludCAoc2VsZik6 CiAgICAgICAgICByZXR1cm4gJ3N0cmluZycKICAKQEAgLTg2LDcgKzg2LDcgQEAgSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50 LnB5CiAgY2xhc3MgcHBfb3V0ZXI6CiAgICAgICJQcmludCBzdHJ1Y3Qgb3V0ZXIiCiAgCi1AQCAt MjQxLDYgKzI1Myw5IEBAIGRlZiByZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcnMgKCk6CitAQCAtMjQ2 LDYgKzI1OCw5IEBAIGRlZiByZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcnMgKCk6CiAgICAgIHByZXR0 eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdec3RydWN0IG91dGVyc3RydWN0JCcpXSAgPSBw cF9vdXRlcgogICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlICgnXm91dGVyc3Ry dWN0JCcpXSAgPSBwcF9vdXRlcgogIAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMK aW5kZXggMGY0YTYyYy4uZWJmNjk5YiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNw ZWMKQEAgLTIzLDExICsyMywxMSBAQCBOYW1lOiBnZGIlez9fd2l0aF9kZWJ1ZzotZGVidWd9CiAj IFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmluLgogIyBOT1RFOiB0aGUg RlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZpY2lhbCByZWxlYXNlcywg bGlrZSA2LjMKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUsIFguWS5aLmRhdGUgZm9yIGRhaWx5 IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAoZGFpbHkgc25hcHNob3QgZnJvbSBt YWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2YgdGhlIHJlbGVhc2UgYnJhbmNoKS4K LVZlcnNpb246IDcuMi41MC4yMDExMDMyOAorVmVyc2lvbjogNy4yLjkwLjIwMTEwNDExCiAKICMg VGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0 YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3Rh eSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVs ZWFzZTogMzMlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KK1JlbGVhc2U6IDM0 JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBh bmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNl cHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdy b3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTQ2OCwxMCArNDY4LDYgQEAgUGF0Y2g0MTI6 IGdkYi11bnVzZWQtcmV2ZXJ0LnBhdGNoCiAjPXB1c2grd29yazogSXQgc2hvdWxkIGJlIGZpeGVk IHByb3Blcmx5IGluc3RlYWQuCiBQYXRjaDQxNzogZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUt cnVuLnBhdGNoCiAKLSMgRml4IGNyYXNoIHdoZW4gdXNpbmcgR05VIElGVU5DIGNhbGwgZnJvbSBi cmVha3BvaW50IGNvbmRpdGlvbi4KLSM9ZHJvcDogQWZ0ZXIgYXJjaGVyLWphbmtyYXRvY2h2aWwt aWZ1bmMgZ2V0cyBpbiB0aGlzIG9uZSBnZXRzIG9ic29sZXRlZC4KLVBhdGNoNDU0OiBnZGItYno1 Mzk1OTAtZ251LWlmdW5jLWZpeC1jb25kLnBhdGNoCi0KICMgV29ya2Fyb3VuZCBub24tc3RvcCBt b3JpYnVuZCBsb2NhdGlvbnMgZXhwbG9pdGVkIGJ5IGtlcm5lbCB1dHJhY2UgKEJaIDU5MDYyMyku CiAjPXB1c2grd29yazogQ3VycmVudGx5IGl0IGlzIHN0aWxsIG5vdCBmdWxseSBzYWZlLgogUGF0 Y2g0NTk6IGdkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaApAQCAtNTAyLDEwICs0 OTgsNiBAQCBQYXRjaDQ5MTogZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCiAjPWRyb3Ar d29yazogSW5mZXJpb3Igb2JqZWN0cyBzaG91bGQgYmUgcmVhZCBpbiBwYXJ0cywgdGhlbiB0aGlz IHBhdGNoIGdldHMgb2Jzb2xldGVkLgogUGF0Y2g0OTY6IGdkYi1iejU2ODI0OC1vb20taXMtZXJy b3IucGF0Y2gKIAotIyBXb3JrYXJvdW5kIGZhbHNlIEdDQyB3YXJuaW5nKHMpLgotIz1wdXNoCi1Q YXRjaDQ5NzogZ2RiLWZhbHNlLWdjYy13YXJuaW5nLnBhdGNoCi0KICMgRml4IGdjb3JlIHdyaXRl ciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpLgogIz1wdXNoOiBUaGVyZSBp cyBkaWZmZXJlbnQgcGF0Y2ggb24gZ2RiLXBhdGNoZXMsIHdhaXRpbmcgbm93IGZvciByZXNvbHV0 aW9uIGluIGtlcm5lbC4KIFBhdGNoNTA0OiBnZGItYno2MjM3NDktZ2NvcmUtcmVscm8ucGF0Y2gK QEAgLTUzNiwxMCArNTI4LDYgQEAgUGF0Y2g1NDc6IGdkYi10ZXN0LWR3Mi1hcmFuZ2VzLnBhdGNo CiAjID1mZWRvcmF0ZXN0CiBQYXRjaDU0ODogZ2RiLXRlc3QtZXhwci1jdW11bGF0aXZlLWFyY2hl ci5wYXRjaAogCi0jIEZpeCBEV0FSRi0zKyBEV19BVF9hY2Nlc3NpYmlsaXR5IGRlZmF1bHQgYXNz dW1wdGlvbiBmb3IgRjE1IGdjYy00LjYuCi0jID1wdXNoCi1QYXRjaDU1NDogZ2RiLWR3YXJmMy1h Y2Nlc3NpYmlsaXR5LnBhdGNoCi0KICMgVGVtcG9yYXJ5IGZpeCBvZiBGMTUgZ2NjLTQuNiBjaGls ZCBESUVzIG9mIERXX1RBR190eXBlZGVmIChCWiA2NzIyMzApLgogIyA9cHVzaAogUGF0Y2g1NTU6 IGdkYi1nY2M0Ni10eXBlZGVmLnBhdGNoCkBAIC04MTQsNyArODAyLDYgQEAgcm0gLWYgZ2RiL2p2 LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNDA4 IC1wMQogJXBhdGNoNDEyIC1wMQogJXBhdGNoNDE3IC1wMQotJXBhdGNoNDU0IC1wMQogJXBhdGNo NDU5IC1wMQogJXBhdGNoNDcwIC1wMQogJXBhdGNoNDc1IC1wMQpAQCAtODI0LDcgKzgxMSw2IEBA IHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhw LmMKICVwYXRjaDQ5MCAtcDEKICVwYXRjaDQ5MSAtcDEKICVwYXRjaDQ5NiAtcDEKLSVwYXRjaDQ5 NyAtcDEKICVwYXRjaDUwNCAtcDEKICVwYXRjaDUxMCAtcDEKICVwYXRjaDUxMSAtcDEKQEAgLTgz MywxMyArODE5LDEzIEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMt ZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDU0MiAtcDEKICVwYXRjaDU0NyAtcDEKICVwYXRjaDU0 OCAtcDEKLSVwYXRjaDU1NCAtcDEKICVwYXRjaDU1NSAtcDEKICVwYXRjaDU1NiAtcDEKICVwYXRj aDU3MSAtcDEKICVwYXRjaDU3MiAtcDEKICVwYXRjaDU3MyAtcDEKICVwYXRjaDU3NCAtcDEKKyVw YXRjaDU3OSAtcDEKIAogJXBhdGNoMzkwIC1wMQogJXBhdGNoMzkzIC1wMQpAQCAtODU3LDggKzg0 Myw2IEBAIGZpCiAlcGF0Y2g0ODcgLXAxCiAlZW5kaWYgIyAwJXs/cmhlbDoxfQogCi0lcGF0Y2g1 NzkgLXAxCi0KIGZpbmQgLW5hbWUgIioub3JpZyIgfCB4YXJncyBybSAtZgogISBmaW5kIC1uYW1l ICIqLnJlaiIgIyBTaG91bGQgbm90IGhhcHBlbi4KIApAQCAtMTI3MCw2ICsxMjU0LDEwIEBAIGZp CiAle19pbmZvZGlyfS9nZGIuaW5mbyoKIAogJWNoYW5nZWxvZworKiBNb24gQXByIDExIDIwMTEg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLjkwLjIwMTEw NDExLTM0LmZjMTUKKy0gUmViYXNlIHRvIEZTRiBHREIgNy4yLjkwLjIwMTEwNDExICh3aGljaCBp cyBhIDcuMyBwcmUtcmVsZWFzZSkuCistIEluY2x1ZGUgdGhlIHByb3BlciBmaXggZm9yIGFub255 bW91cyBzdHJ1Y3QgdHlwZWRlZnMgKFRvbSBUcm9tZXksIEJaIDY3MjIzMCkuCisKICogV2VkIE1h ciAzMCAyMDExIEZhYmlvIE0uIERpIE5pdHRvIDxmZGluaXR0b0ByZWRoYXQuY29tPiAtIDcuMi41 MC4yMDExMDMyOC0zMy5mYzE1CiAtIENsZWFudXAgc3BlYyBmaWxlIHRvIGFkZCBzcGFyY3xzcGFy Y3Y5fHNwYXJjNjQuCiAtIEFkZCBzcGFyYyBzcGVjaWZpYyB3b3JrYXJvdW5kcyB0byB0b29sY2hh aW4gYmFkbmVzczoKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBlN2Y1YmE3 Li5mZjI3NTU3IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMiArMSwy IEBACiAwNGU1YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYxOTU4ZCAgbGlic3RkYysrLXYzLXB5dGhv bi1yMTU1OTc4LnRhci5iejIKLWI1OTBlMGMxMmE1MDYwMTFlZjJjMjdmNjc3YWE2OWY3ICBnZGIt Ny4yLjUwLjIwMTEwMzI4LnRhci5iejIKKzcwOTVmM2Y0MTJlMjdhNzNjMzlkZjRhYTczN2EzODZh ICBnZGItNy4yLjkwLjIwMTEwNDExLnRhci5iejIK